driver: rk nand: update ftl to support slc nand
authorZhaoyifeng <zyf@rock-chips.com>
Wed, 5 Apr 2017 12:07:50 +0000 (20:07 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Thu, 27 Apr 2017 08:38:02 +0000 (16:38 +0800)
    1. support arm v7.
    2. support 128MB and 256MB SLC NAND FLASH.

Change-Id: I3b2972ed27c138ed7a6c75e2fefa10ce06a5b668
Signed-off-by: Zhaoyifeng <zyf@rock-chips.com>
drivers/rk_nand/Kconfig
drivers/rk_nand/Makefile
drivers/rk_nand/rk_ftl_arm_v7.S [new file with mode: 0644]
drivers/rk_nand/rk_ftl_arm_v8.S
drivers/rk_nand/rk_nand_base.c

index bfc80070b4066509bced5fb8e0a6abb654145b46..49fc9d62174ea0986a025da0834a7149c12359b7 100644 (file)
@@ -2,6 +2,7 @@ if ARCH_ROCKCHIP
 config RK_NAND
        tristate "RK NAND Device Support"
        default n
+       depends on BLOCK_RKNAND != y
        help
          RK NAND Device Support.
 
index c7e4dbdcb3e899e38c240bd4e6d9c738c5d5912e..b0524f803ef3984f49c65cdada2006e1289e7fb2 100644 (file)
@@ -1,2 +1,3 @@
 obj-$(CONFIG_RK_NAND) += rk_ftl.o rk_nand_base.o rk_nand_blk.o
-rk_ftl-$(CONFIG_ARM64) += rk_ftl_arm_v8.o
\ No newline at end of file
+rk_ftl-$(CONFIG_ARM64) += rk_ftl_arm_v8.o
+rk_ftl-$(CONFIG_ARM) += rk_ftl_arm_v7.o
\ No newline at end of file
diff --git a/drivers/rk_nand/rk_ftl_arm_v7.S b/drivers/rk_nand/rk_ftl_arm_v7.S
new file mode 100644 (file)
index 0000000..0ecd928
--- /dev/null
@@ -0,0 +1,25991 @@
+/*
+ * Copyright (c) 2016, Fuzhou Rockchip Electronics Co., Ltd
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+       .arch armv7-a
+       .fpu softvfp
+       .eabi_attribute 20, 1
+       .eabi_attribute 21, 1
+       .eabi_attribute 23, 3
+       .eabi_attribute 24, 1
+       .eabi_attribute 25, 1
+       .eabi_attribute 26, 2
+       .eabi_attribute 30, 4
+       .eabi_attribute 18, 4
+       .file   "rk_ftl_arm_v7.S"
+       .text
+       .align  2
+       .type   rknand_sys_storage_release, %function
+rknand_sys_storage_release:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r0, [r1, #124]
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       cmp     r0, #0
+       beq     .L2
+       mov     r3, #0
+       str     r3, [r1, #124]
+       bl      kfree
+.L2:
+       mov     r0, #0
+       ldmfd   sp!, {r3, pc}
+       .fnend
+       .size   rknand_sys_storage_release, .-rknand_sys_storage_release
+       .align  2
+       .type   rknand_sys_storage_open, %function
+rknand_sys_storage_open:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L6
+       mov     r2, #4096
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       mov     r4, r1
+       ldr     r0, [r3, #48]
+       mov     r1, #208
+       bl      kmem_cache_alloc_trace
+       mov     r3, #0
+       str     r3, [r4, #124]
+       cmp     r0, #0
+       bne     .L4
+       ldr     r0, .L6+4
+       bl      printk
+       mvn     r0, #11
+       ldmfd   sp!, {r4, pc}
+.L4:
+       str     r0, [r4, #124]
+       mov     r0, r3
+       ldmfd   sp!, {r4, pc}
+.L7:
+       .align  2
+.L6:
+       .word   kmalloc_caches
+       .word   .LC1
+       .fnend
+       .size   rknand_sys_storage_open, .-rknand_sys_storage_open
+       .align  2
+       .global FlashMemCmp8
+       .type   FlashMemCmp8, %function
+FlashMemCmp8:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L18
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       ldrb    r3, [r3, #0]    @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L16
+       ldrb    r3, [r1, #1]    @ zero_extendqisi2
+       ldrb    ip, [r0, #1]    @ zero_extendqisi2
+       cmp     ip, r3
+       movne   r3, #0
+       bne     .L16
+       b       .L17
+.L13:
+       ldrb    r4, [r0, r3]    @ zero_extendqisi2
+       ldrb    ip, [r1, r3]    @ zero_extendqisi2
+       add     r3, r3, #1
+       cmp     r4, ip
+       beq     .L16
+       mov     r0, r3
+       ldmfd   sp!, {r4, pc}
+.L16:
+       cmp     r3, r2
+       bne     .L13
+       mov     r0, #0
+       ldmfd   sp!, {r4, pc}
+.L17:
+       mov     r0, #0
+       ldmfd   sp!, {r4, pc}
+.L19:
+       .align  2
+.L18:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashMemCmp8, .-FlashMemCmp8
+       .align  2
+       .global FlashRsvdBlkChk
+       .type   FlashRsvdBlkChk, %function
+FlashRsvdBlkChk:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L21
+       ldrb    r2, [r3, #1]    @ zero_extendqisi2
+       ldr     r3, [r3, #4]
+       mul     r3, r3, r2
+       cmp     r1, r3
+       movcs   r2, #0
+       movcc   r2, #1
+       cmp     r0, #0
+       movne   r2, #0
+       eor     r0, r2, #1
+       bx      lr
+.L22:
+       .align  2
+.L21:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashRsvdBlkChk, .-FlashRsvdBlkChk
+       .align  2
+       .global FlashGetRandomizer
+       .type   FlashGetRandomizer, %function
+FlashGetRandomizer:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       and     r3, r1, #127
+       ldr     r2, .L25
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       mov     r3, r3, asl #1
+       ldrh    r4, [r2, r3]
+       ldr     r3, .L25+4
+       ldrb    r3, [r3, #8]    @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L24
+       bl      FlashRsvdBlkChk
+       cmp     r0, #0
+       orrne   r4, r4, #-1073741824
+.L24:
+       mov     r0, r4
+       ldmfd   sp!, {r4, pc}
+.L26:
+       .align  2
+.L25:
+       .word   .LANCHOR1
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashGetRandomizer, .-FlashGetRandomizer
+       .align  2
+       .global FlashSetRandomizer
+       .type   FlashSetRandomizer, %function
+FlashSetRandomizer:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       mov     r6, r0
+       ldr     r3, .L33
+       mov     r5, r1
+       ldr     r2, [r3, #12]
+       mov     r7, r3
+       cmp     r2, #5
+       bls     .L28
+       and     r5, r1, #127
+       ldr     r3, .L33+4
+       mov     r5, r5, asl #1
+       ldrh    r4, [r3, r5]
+       ldrb    r3, [r7, #8]    @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L29
+       bl      FlashRsvdBlkChk
+       cmp     r0, #0
+       orrne   r4, r4, #-1073741824
+.L29:
+       add     r6, r7, r6, asl #3
+       b       .L32
+.L28:
+       cmp     r2, #4
+       ldmnefd sp!, {r3, r4, r5, r6, r7, pc}
+       and     r2, r1, #127
+       ldr     ip, .L33+4
+       ldrb    r3, [r3, #8]    @ zero_extendqisi2
+       mov     r2, r2, asl #1
+       cmp     r3, #0
+       ldrh    r4, [ip, r2]
+       mov     r4, r4, asl #8
+       beq     .L31
+       bl      FlashRsvdBlkChk
+       cmp     r0, #0
+       movne   r5, r5, asl #1
+       uxtbne  r5, r5
+       orrne   r5, r5, #1
+       orrne   r4, r4, r5
+.L31:
+       ldr     r3, .L33
+       add     r6, r3, r6, asl #3
+.L32:
+       ldr     r3, [r6, #16]
+       str     r4, [r3, #336]
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L34:
+       .align  2
+.L33:
+       .word   .LANCHOR0
+       .word   .LANCHOR1
+       .fnend
+       .size   FlashSetRandomizer, .-FlashSetRandomizer
+       .align  2
+       .global FlashReadCmd
+       .type   FlashReadCmd, %function
+FlashReadCmd:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     ip, .L36
+       mov     r2, r1, lsr #16
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       add     ip, ip, r0, asl #3
+       ldrb    r3, [ip, #20]   @ zero_extendqisi2
+       ldr     r4, [ip, #16]
+       mov     ip, #0
+       add     r3, r3, #8
+       add     r3, r4, r3, asl #8
+       str     ip, [r3, #8]
+       str     ip, [r3, #4]
+       str     ip, [r3, #4]
+       uxtb    ip, r1
+       str     ip, [r3, #4]
+       mov     ip, r1, lsr #8
+       str     ip, [r3, #4]
+       str     r2, [r3, #4]
+       mov     r2, #48
+       str     r2, [r3, #8]
+       ldmfd   sp!, {r4, lr}
+       b       FlashSetRandomizer
+.L37:
+       .align  2
+.L36:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashReadCmd, .-FlashReadCmd
+       .align  2
+       .global FlashReadDpDataOutCmd
+       .type   FlashReadDpDataOutCmd, %function
+FlashReadDpDataOutCmd:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r2, .L42
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       add     ip, r2, r0, asl #3
+       ldrb    r2, [r2, #64]   @ zero_extendqisi2
+       ldrb    r3, [ip, #20]   @ zero_extendqisi2
+       ldr     r4, [ip, #16]
+       cmp     r2, #1
+       add     r3, r3, #8
+       mov     r2, #0
+       add     r3, r4, r3, asl #8
+       bne     .L39
+       mov     ip, #6
+       str     ip, [r3, #8]
+       str     r2, [r3, #4]
+       str     r2, [r3, #4]
+       uxtb    r2, r1
+       str     r2, [r3, #4]
+       mov     r2, r1, lsr #8
+       str     r2, [r3, #4]
+       mov     r2, r1, lsr #16
+       b       .L41
+.L39:
+       str     r2, [r3, #8]
+       uxtb    ip, r1
+       str     r2, [r3, #4]
+       str     r2, [r3, #4]
+       str     ip, [r3, #4]
+       mov     ip, r1, lsr #8
+       str     ip, [r3, #4]
+       mov     ip, r1, lsr #16
+       str     ip, [r3, #4]
+       mov     ip, #5
+       str     ip, [r3, #8]
+       str     r2, [r3, #4]
+.L41:
+       str     r2, [r3, #4]
+       mov     r2, #224
+       str     r2, [r3, #8]
+       ldmfd   sp!, {r4, lr}
+       b       FlashSetRandomizer
+.L43:
+       .align  2
+.L42:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd
+       .align  2
+       .global flash_enter_slc_mode
+       .type   flash_enter_slc_mode, %function
+flash_enter_slc_mode:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L46
+       ldrb    r2, [r3, #80]   @ zero_extendqisi2
+       cmp     r2, #0
+       bxeq    lr
+       add     r0, r3, r0, asl #3
+       ldrb    r3, [r0, #20]   @ zero_extendqisi2
+       ldr     r2, [r0, #16]
+       add     r3, r3, #8
+       add     r3, r2, r3, asl #8
+       mov     r2, #218
+       str     r2, [r3, #8]
+       bx      lr
+.L47:
+       .align  2
+.L46:
+       .word   .LANCHOR0
+       .fnend
+       .size   flash_enter_slc_mode, .-flash_enter_slc_mode
+       .align  2
+       .global flash_exit_slc_mode
+       .type   flash_exit_slc_mode, %function
+flash_exit_slc_mode:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L50
+       ldrb    r2, [r3, #80]   @ zero_extendqisi2
+       cmp     r2, #0
+       bxeq    lr
+       add     r0, r3, r0, asl #3
+       ldrb    r3, [r0, #20]   @ zero_extendqisi2
+       ldr     r2, [r0, #16]
+       add     r3, r3, #8
+       add     r3, r2, r3, asl #8
+       mov     r2, #223
+       str     r2, [r3, #8]
+       bx      lr
+.L51:
+       .align  2
+.L50:
+       .word   .LANCHOR0
+       .fnend
+       .size   flash_exit_slc_mode, .-flash_exit_slc_mode
+       .align  2
+       .global FlashProgFirstCmd
+       .type   FlashProgFirstCmd, %function
+FlashProgFirstCmd:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     ip, .L53
+       mov     r2, r1, lsr #16
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       add     ip, ip, r0, asl #3
+       ldrb    r3, [ip, #20]   @ zero_extendqisi2
+       ldr     r4, [ip, #16]
+       mov     ip, #128
+       add     r3, r3, #8
+       add     r3, r4, r3, asl #8
+       str     ip, [r3, #8]
+       mov     ip, #0
+       str     ip, [r3, #4]
+       str     ip, [r3, #4]
+       uxtb    ip, r1
+       str     ip, [r3, #4]
+       mov     ip, r1, lsr #8
+       str     ip, [r3, #4]
+       str     r2, [r3, #4]
+       ldmfd   sp!, {r4, lr}
+       b       FlashSetRandomizer
+.L54:
+       .align  2
+.L53:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashProgFirstCmd, .-FlashProgFirstCmd
+       .align  2
+       .global FlashEraseCmd
+       .type   FlashEraseCmd, %function
+FlashEraseCmd:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L57
+       cmp     r2, #0
+       add     r0, r3, r0, asl #3
+       ldr     ip, [r0, #16]
+       ldrb    r0, [r0, #20]   @ zero_extendqisi2
+       add     r0, r0, #8
+       add     r0, ip, r0, asl #8
+       beq     .L56
+       ldr     r3, [r3, #4]
+       mov     r2, #96
+       str     r2, [r0, #8]
+       uxtb    r2, r1
+       str     r2, [r0, #4]
+       mov     r2, r1, lsr #8
+       str     r2, [r0, #4]
+       mov     r2, r1, lsr #16
+       add     r1, r1, r3
+       str     r2, [r0, #4]
+.L56:
+       mov     r3, #96
+       str     r3, [r0, #8]
+       uxtb    r3, r1
+       str     r3, [r0, #4]
+       mov     r3, r1, lsr #8
+       mov     r1, r1, lsr #16
+       str     r3, [r0, #4]
+       mov     r3, #208
+       str     r1, [r0, #4]
+       str     r3, [r0, #8]
+       bx      lr
+.L58:
+       .align  2
+.L57:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashEraseCmd, .-FlashEraseCmd
+       .align  2
+       .global FlashProgDpSecondCmd
+       .type   FlashProgDpSecondCmd, %function
+FlashProgDpSecondCmd:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     ip, .L60
+       mov     r2, r1, lsr #16
+       stmfd   sp!, {r4, r5, lr}
+       .save {r4, r5, lr}
+       add     r4, ip, r0, asl #3
+       ldrb    ip, [ip, #59]   @ zero_extendqisi2
+       ldrb    r3, [r4, #20]   @ zero_extendqisi2
+       ldr     r5, [r4, #16]
+       add     r3, r3, #8
+       add     r3, r5, r3, asl #8
+       str     ip, [r3, #8]
+       mov     ip, #0
+       str     ip, [r3, #4]
+       str     ip, [r3, #4]
+       uxtb    ip, r1
+       str     ip, [r3, #4]
+       mov     ip, r1, lsr #8
+       str     ip, [r3, #4]
+       str     r2, [r3, #4]
+       ldmfd   sp!, {r4, r5, lr}
+       b       FlashSetRandomizer
+.L61:
+       .align  2
+.L60:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashProgDpSecondCmd, .-FlashProgDpSecondCmd
+       .align  2
+       .global FlashProgSecondCmd
+       .type   FlashProgSecondCmd, %function
+FlashProgSecondCmd:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L63
+       add     r3, r3, r0, asl #3
+       ldr     r2, [r3, #16]
+       ldrb    r3, [r3, #20]   @ zero_extendqisi2
+       add     r3, r3, #8
+       add     r3, r2, r3, asl #8
+       mov     r2, #16
+       str     r2, [r3, #8]
+       bx      lr
+.L64:
+       .align  2
+.L63:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashProgSecondCmd, .-FlashProgSecondCmd
+       .align  2
+       .global FlashProgDpFirstCmd
+       .type   FlashProgDpFirstCmd, %function
+FlashProgDpFirstCmd:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L66
+       add     r0, r3, r0, asl #3
+       ldrb    r3, [r3, #58]   @ zero_extendqisi2
+       ldrb    r2, [r0, #20]   @ zero_extendqisi2
+       ldr     r1, [r0, #16]
+       add     r2, r2, #8
+       add     r2, r1, r2, asl #8
+       str     r3, [r2, #8]
+       bx      lr
+.L67:
+       .align  2
+.L66:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashProgDpFirstCmd, .-FlashProgDpFirstCmd
+       .align  2
+       .global JSHash
+       .type   JSHash, %function
+JSHash:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       mov     r3, r0
+       mov     r2, #0
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       ldr     r0, .L71
+       b       .L69
+.L70:
+       mov     ip, r0, asl #5
+       ldrb    r4, [r3, r2]    @ zero_extendqisi2
+       add     ip, ip, r0, lsr #2
+       add     r2, r2, #1
+       add     ip, ip, r4
+       eor     r0, r0, ip
+.L69:
+       cmp     r2, r1
+       bne     .L70
+       ldmfd   sp!, {r4, pc}
+.L72:
+       .align  2
+.L71:
+       .word   1204201446
+       .fnend
+       .size   JSHash, .-JSHash
+       .align  2
+       .global FlashLoadIdbInfo
+       .type   FlashLoadIdbInfo, %function
+FlashLoadIdbInfo:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       mov     r0, #0
+       bx      lr
+       .fnend
+       .size   FlashLoadIdbInfo, .-FlashLoadIdbInfo
+       .align  2
+       .global FlashPrintInfo
+       .type   FlashPrintInfo, %function
+FlashPrintInfo:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       bx      lr
+       .fnend
+       .size   FlashPrintInfo, .-FlashPrintInfo
+       .align  2
+       .global FlashReadIdbData
+       .type   FlashReadIdbData, %function
+FlashReadIdbData:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       mov     r2, #2048
+       ldr     r1, .L76
+       bl      memcpy
+       mov     r0, #0
+       ldmfd   sp!, {r3, pc}
+.L77:
+       .align  2
+.L76:
+       .word   .LANCHOR0+84
+       .fnend
+       .size   FlashReadIdbData, .-FlashReadIdbData
+       .align  2
+       .global FlashLoadPhyInfoInRam
+       .type   FlashLoadPhyInfoInRam, %function
+FlashLoadPhyInfoInRam:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r4, #0
+       ldr     r6, .L90
+.L82:
+       add     r5, r6, r4, asl #5
+       ldr     r1, .L90+4
+       add     r0, r5, #1
+       ldrb    r2, [r6, r4, asl #5]    @ zero_extendqisi2
+       bl      FlashMemCmp8
+       subs    r1, r0, #0
+       bne     .L79
+       cmp     r5, #0
+       ldrneb  r2, [r5, #22]   @ zero_extendqisi2
+       ldrne   r3, .L90+8
+       bne     .L84
+       b       .L89
+.L79:
+       add     r4, r4, #1
+       cmp     r4, #72
+       bne     .L82
+       mvn     r0, #0
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L84:
+       ldrb    r0, [r3, r1, asl #5]    @ zero_extendqisi2
+       cmp     r0, r2
+       beq     .L83
+       add     r1, r1, #1
+       cmp     r1, #4
+       bne     .L84
+.L83:
+       ldr     r3, .L90+8
+       mov     r2, #32
+       ldr     r0, .L90+12
+       add     r1, r3, r1, asl #5
+       bl      memcpy
+       ldr     r0, .L90+16
+       mov     r1, r5
+       mov     r2, #32
+       bl      memcpy
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L89:
+       mvn     r0, #0
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L91:
+       .align  2
+.L90:
+       .word   .LANCHOR1+256
+       .word   .LANCHOR0+2132
+       .word   .LANCHOR1+2560
+       .word   .LANCHOR0+48
+       .word   .LANCHOR1+2688
+       .fnend
+       .size   FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam
+       .align  2
+       .global FlashSuspend
+       .type   FlashSuspend, %function
+FlashSuspend:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L93
+       mov     r0, #0
+       ldr     r2, [r3, #2164]
+       ldr     r1, [r2, #0]
+       str     r1, [r3, #2168]
+       ldr     r1, [r2, #4]
+       str     r1, [r3, #2172]
+       ldr     r1, [r2, #8]
+       str     r1, [r3, #2176]
+       ldr     r1, [r2, #12]
+       str     r1, [r3, #2180]
+       ldr     r1, [r2, #304]
+       str     r1, [r3, #2184]
+       ldr     r1, [r2, #308]
+       str     r1, [r3, #2188]
+       ldr     r1, [r2, #336]
+       ldr     r2, [r2, #344]
+       str     r1, [r3, #2192]
+       str     r2, [r3, #2196]
+       bx      lr
+.L94:
+       .align  2
+.L93:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashSuspend, .-FlashSuspend
+       .global __aeabi_uidiv
+       .align  2
+       .global LogAddr2PhyAddr
+       .type   LogAddr2PhyAddr, %function
+LogAddr2PhyAddr:
+       .fnstart
+       @ args = 4, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     fp, r3
+       ldr     r3, .L100
+       mov     r5, r1
+       mov     r6, r2
+       movw    r1, #2214
+       movw    r2, #2212
+       ldr     r8, [r0, #4]
+       ldrh    r2, [r3, r2]
+       mov     r4, r0
+       ldrh    sl, [r3, r1]
+       bic     r8, r8, #-2147483648
+       ldrh    r7, [r3, #4]
+       ubfx    r9, r8, #10, #16
+       ldrb    r3, [r3, #0]    @ zero_extendqisi2
+       mov     r8, r8, asl #22
+       mul     sl, sl, r2
+       cmp     r3, #1
+       moveq   r7, r7, asl #1
+       mov     r0, r9
+       mov     r8, r8, lsr #22
+       uxtheq  r7, r7
+       uxth    sl, sl
+       mov     r1, sl
+       bl      __aeabi_uidiv
+       cmp     r5, #1
+       ldr     r3, .L100
+       uxth    r0, r0
+       mls     sl, sl, r0, r9
+       uxth    sl, sl
+       bne     .L97
+       ldrb    r2, [r3, #80]   @ zero_extendqisi2
+       cmp     r2, #0
+       addeq   r8, r3, r8, asl #1
+       movweq  r2, #2228
+       ldreqh  r8, [r8, r2]
+.L97:
+       add     r3, r3, r0, asl #2
+       ldr     r3, [r3, #2740]
+       mla     r7, r7, sl, r3
+       ldrb    r3, [sp, #40]   @ zero_extendqisi2
+       cmp     r3, #1
+       add     r8, r7, r8
+       str     r8, [r6, #0]
+       str     r0, [fp, #0]
+       bls     .L99
+       ldr     r0, [r4, #4]
+       ldr     r3, [r4, #40]
+       add     r0, r0, #1024
+       rsb     r3, r3, r0
+       rsbs    r0, r3, #0
+       adc     r0, r0, r3
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L99:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L101:
+       .align  2
+.L100:
+       .word   .LANCHOR0
+       .fnend
+       .size   LogAddr2PhyAddr, .-LogAddr2PhyAddr
+       .align  2
+       .global FlashScheduleEnSet
+       .type   FlashScheduleEnSet, %function
+FlashScheduleEnSet:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L103
+       ldr     r2, [r3, #2772]
+       str     r0, [r3, #2772]
+       mov     r0, r2
+       bx      lr
+.L104:
+       .align  2
+.L103:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashScheduleEnSet, .-FlashScheduleEnSet
+       .align  2
+       .global FlashGetPageSize
+       .type   FlashGetPageSize, %function
+FlashGetPageSize:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L106
+       ldr     r3, [r3, #2776]
+       ldrb    r0, [r3, #9]    @ zero_extendqisi2
+       bx      lr
+.L107:
+       .align  2
+.L106:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashGetPageSize, .-FlashGetPageSize
+       .align  2
+       .global NandcReadDontCaseBusyEn
+       .type   NandcReadDontCaseBusyEn, %function
+NandcReadDontCaseBusyEn:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       bx      lr
+       .fnend
+       .size   NandcReadDontCaseBusyEn, .-NandcReadDontCaseBusyEn
+       .align  2
+       .global NandcGetChipIf
+       .type   NandcGetChipIf, %function
+NandcGetChipIf:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L110
+       add     r3, r3, r0, asl #3
+       ldrb    r0, [r3, #20]   @ zero_extendqisi2
+       ldr     r2, [r3, #16]
+       add     r0, r0, #8
+       add     r0, r2, r0, asl #8
+       bx      lr
+.L111:
+       .align  2
+.L110:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcGetChipIf, .-NandcGetChipIf
+       .align  2
+       .global NandcSetDdrPara
+       .type   NandcSetDdrPara, %function
+NandcSetDdrPara:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L113
+       mov     r2, r0, asl #8
+       orr     r2, r2, r0, asl #16
+       orr     r2, r2, #1
+       ldr     r3, [r3, #2164]
+       str     r2, [r3, #304]
+       bx      lr
+.L114:
+       .align  2
+.L113:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcSetDdrPara, .-NandcSetDdrPara
+       .align  2
+       .global NandcSetDdrDiv
+       .type   NandcSetDdrDiv, %function
+NandcSetDdrDiv:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L116
+       orr     r0, r0, #16640
+       ldr     r3, [r3, #2164]
+       str     r0, [r3, #344]
+       bx      lr
+.L117:
+       .align  2
+.L116:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcSetDdrDiv, .-NandcSetDdrDiv
+       .align  2
+       .global NandcSetDdrMode
+       .type   NandcSetDdrMode, %function
+NandcSetDdrMode:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L120
+       cmp     r0, #0
+       ldr     r2, [r3, #2164]
+       ldr     r3, [r2, #0]
+       bfc     r3, #13, #1
+       orrne   r3, r3, #253952
+       str     r3, [r2, #0]
+       bx      lr
+.L121:
+       .align  2
+.L120:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcSetDdrMode, .-NandcSetDdrMode
+       .align  2
+       .global NandcSetMode
+       .type   NandcSetMode, %function
+NandcSetMode:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L126
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       ldr     r3, [r3, #2164]
+       ldr     r4, [r3, #0]
+       ands    r3, r0, #6
+       bfieq   r4, r3, #13, #1
+       beq     .L125
+       orr     r4, r4, #24576
+       tst     r0, #4
+       bfc     r4, #15, #1
+       mov     r0, #0
+       orr     r4, r4, #196608
+       orrne   r4, r4, #32768
+       bl      rknand_get_clk_rate
+       ldr     r3, .L126
+       movw    r2, #8322
+       ldr     r3, [r3, #2164]
+       str     r2, [r3, #344]
+       ldr     r2, .L126+4
+       str     r2, [r3, #304]
+       mov     r2, #38
+       str     r2, [r3, #308]
+       mov     r2, #39
+       str     r2, [r3, #308]
+.L125:
+       ldr     r3, .L126
+       mov     r0, #0
+       ldr     r3, [r3, #2164]
+       str     r4, [r3, #0]
+       ldmfd   sp!, {r4, pc}
+.L127:
+       .align  2
+.L126:
+       .word   .LANCHOR0
+       .word   1052675
+       .fnend
+       .size   NandcSetMode, .-NandcSetMode
+       .align  2
+       .global NandcFlashCsDebug
+       .type   NandcFlashCsDebug, %function
+NandcFlashCsDebug:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L129
+       ldr     r3, [r3, #16]
+       ldr     r2, [r3, #0]
+       bfi     r2, r0, #0, #8
+       str     r2, [r3, #0]
+       bx      lr
+.L130:
+       .align  2
+.L129:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcFlashCsDebug, .-NandcFlashCsDebug
+       .align  2
+       .global NandcFlashCs
+       .type   NandcFlashCs, %function
+NandcFlashCs:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L132
+       add     r3, r3, r0, asl #3
+       mov     r0, #1
+       ldr     r2, [r3, #16]
+       ldrb    r1, [r3, #20]   @ zero_extendqisi2
+       ldr     r3, [r2, #0]
+       mov     r1, r0, asl r1
+       bfi     r3, r1, #0, #8
+       str     r3, [r2, #0]
+       bx      lr
+.L133:
+       .align  2
+.L132:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcFlashCs, .-NandcFlashCs
+       .align  2
+       .global NandcFlashDeCs
+       .type   NandcFlashDeCs, %function
+NandcFlashDeCs:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L135
+       add     r3, r3, r0, asl #3
+       ldr     r2, [r3, #16]
+       ldr     r3, [r2, #0]
+       bfc     r3, #0, #8
+       bfc     r3, #17, #1
+       str     r3, [r2, #0]
+       bx      lr
+.L136:
+       .align  2
+.L135:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcFlashDeCs, .-NandcFlashDeCs
+       .align  2
+       .global NandcDelayns
+       .type   NandcDelayns, %function
+NandcDelayns:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       .pad #8
+       sub     sp, sp, #8
+       mov     r0, r0, lsr #4
+       str     r0, [sp, #4]
+.L138:
+       ldr     r0, [sp, #4]
+       cmp     r0, #0
+       sub     r3, r0, #1
+       str     r3, [sp, #4]
+       bne     .L138
+       add     sp, sp, #8
+       bx      lr
+       .fnend
+       .size   NandcDelayns, .-NandcDelayns
+       .align  2
+       .global FlashReadStatusEN
+       .type   FlashReadStatusEN, %function
+FlashReadStatusEN:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       ldr     r3, .L149
+       add     r0, r3, r0, asl #3
+       ldr     ip, [r3, #2776]
+       ldrb    r5, [r0, #20]   @ zero_extendqisi2
+       ldr     r4, [r0, #16]
+       ldrb    ip, [ip, #8]    @ zero_extendqisi2
+       add     r5, r5, #8
+       cmp     ip, #2
+       add     r0, r4, r5, asl #8
+       movne   r3, #112
+       strne   r3, [r0, #8]
+       bne     .L145
+       cmp     r2, #0
+       ldreqb  r2, [r3, #61]   @ zero_extendqisi2
+       ldrneb  r2, [r3, #62]   @ zero_extendqisi2
+       str     r2, [r0, #8]
+       ldrb    r3, [r3, #63]   @ zero_extendqisi2
+       cmp     r3, #0
+       movne   r3, #0
+       ldrne   r2, .L149
+       bne     .L144
+       b       .L145
+.L146:
+       mov     ip, r3, asl #3
+       add     r3, r3, #1
+       mov     ip, r1, lsr ip
+       uxtb    ip, ip
+       str     ip, [r0, #4]
+.L144:
+       ldrb    ip, [r2, #63]   @ zero_extendqisi2
+       cmp     r3, ip
+       bcc     .L146
+.L145:
+       mov     r0, #80
+       bl      NandcDelayns
+       ldr     r0, [r4, r5, asl #8]
+       uxtb    r0, r0
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L150:
+       .align  2
+.L149:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashReadStatusEN, .-FlashReadStatusEN
+       .align  2
+       .global FlashWaitReadyEN
+       .type   FlashWaitReadyEN, %function
+FlashWaitReadyEN:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r6, r0
+       mov     r5, r1
+       mov     r4, r2
+.L155:
+       mov     r0, r6
+       mov     r1, r5
+       mov     r2, r4
+       bl      FlashReadStatusEN
+       cmp     r0, #255
+       beq     .L155
+       tst     r0, #64
+       beq     .L155
+       ldmfd   sp!, {r4, r5, r6, pc}
+       .fnend
+       .size   FlashWaitReadyEN, .-FlashWaitReadyEN
+       .align  2
+       .global FlashWaitCmdDone
+       .type   FlashWaitCmdDone, %function
+FlashWaitCmdDone:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L159
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       add     r4, r3, r0, asl #4
+       ldrb    r5, [r3, r0, asl #4]    @ zero_extendqisi2
+       mov     r6, r0
+       ldr     r3, [r4, #8]
+       cmp     r3, #0
+       beq     .L157
+       mov     r0, r5
+       bl      NandcFlashCs
+       ldr     r3, .L159+4
+       ldr     r1, [r4, #4]
+       mov     r0, r5
+       add     r6, r3, r6, asl #2
+       ldr     r2, [r6, #2740]
+       adds    r2, r2, #0
+       movne   r2, #1
+       bl      FlashWaitReadyEN
+       mov     r6, r0
+       mov     r0, r5
+       bl      NandcFlashDeCs
+       ldr     r3, [r4, #8]
+       ands    r6, r6, #1
+       mvnne   r6, #0
+       str     r6, [r3, #0]
+       ldr     r2, [r4, #12]
+       mov     r3, #0
+       str     r3, [r4, #8]
+       cmp     r2, r3
+       strne   r6, [r2, #0]
+       strne   r3, [r4, #12]
+.L157:
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L160:
+       .align  2
+.L159:
+       .word   .LANCHOR0+2780
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashWaitCmdDone, .-FlashWaitCmdDone
+       .align  2
+       .global HynixSetRRPara
+       .type   HynixSetRRPara, %function
+HynixSetRRPara:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, lr}
+       mov     sl, r3
+       ldr     r3, .L166
+       mov     r6, r2
+       mov     r4, r0
+       mov     r5, r1
+       mov     r7, #0
+       ldr     r2, [r3, #2776]
+       ldrb    r2, [r2, #19]   @ zero_extendqisi2
+       cmp     r2, #6
+       addeq   r9, r3, #2928
+       addne   r2, r3, #2928
+       add     r3, r3, r0, asl #3
+       addne   r9, sl, r0, asl #3
+       addeq   r9, r9, r0, asl #6
+       ldrb    r8, [r3, #20]   @ zero_extendqisi2
+       addne   r9, r2, r9, asl #3
+       ldr     r2, [r3, #16]
+       addeq   r9, r9, sl, asl #2
+       add     r8, r8, #8
+       add     r8, r2, r8, asl #8
+       bl      NandcFlashCs
+       mov     r3, #54
+       str     r3, [r8, #8]
+       b       .L164
+.L165:
+       ldrb    r3, [r6, r7]    @ zero_extendqisi2
+       mov     r0, #200
+       str     r3, [r8, #4]
+       bl      NandcDelayns
+       ldrb    r3, [r9, r7]    @ zero_extendqisi2
+       add     r7, r7, #1
+       str     r3, [r8, #0]
+.L164:
+       uxtb    r3, r7
+       cmp     r3, r5
+       bcc     .L165
+       mov     r3, #22
+       mov     r0, r4
+       str     r3, [r8, #8]
+       bl      NandcFlashDeCs
+       ldr     r3, .L166
+       add     r4, r3, r4
+       strb    sl, [r4, #3760]
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+.L167:
+       .align  2
+.L166:
+       .word   .LANCHOR0
+       .fnend
+       .size   HynixSetRRPara, .-HynixSetRRPara
+       .align  2
+       .global FlashSetReadRetryDefault
+       .type   FlashSetReadRetryDefault, %function
+FlashSetReadRetryDefault:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       ldr     r6, .L173
+       ldr     r3, [r6, #2776]
+       ldrb    r3, [r3, #19]   @ zero_extendqisi2
+       sub     r3, r3, #1
+       uxtb    r3, r3
+       cmp     r3, #5
+       ldmhifd sp!, {r4, r5, r6, pc}
+       ldr     r5, .L173+4
+       mov     r4, #0
+.L171:
+       ldrb    r3, [r5, r4, asl #3]    @ zero_extendqisi2
+       uxtb    r0, r4
+       cmp     r3, #173
+       bne     .L170
+       ldrb    r1, [r6, #2909] @ zero_extendqisi2
+       mov     r3, #0
+       ldr     r2, .L173+8
+       bl      HynixSetRRPara
+.L170:
+       add     r4, r4, #1
+       cmp     r4, #4
+       bne     .L171
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L174:
+       .align  2
+.L173:
+       .word   .LANCHOR0
+       .word   .LANCHOR0+2132
+       .word   .LANCHOR0+2912
+       .fnend
+       .size   FlashSetReadRetryDefault, .-FlashSetReadRetryDefault
+       .align  2
+       .global SamsungSetRRPara
+       .type   SamsungSetRRPara, %function
+SamsungSetRRPara:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
+       .save {r3, r4, r5, r6, r7, r8, sl, lr}
+       mov     r4, r0
+       ldr     r3, .L178
+       mov     r5, #0
+       ldr     sl, .L178+4
+       mov     r8, #161
+       add     r1, r3, r1, asl #2
+       add     r6, r1, #3
+       mov     r7, r3
+       b       .L176
+.L177:
+       str     r8, [r4, #8]
+       mov     r3, #0
+       str     r3, [r4, #0]
+       mov     r0, #300
+       ldrsb   r3, [r5, r7]
+       add     r5, r5, #1
+       str     r3, [r4, #0]
+       ldrsb   r3, [r6, #1]!
+       str     r3, [r4, #0]
+       bl      NandcDelayns
+.L176:
+       ldrb    r3, [sl, #3764] @ zero_extendqisi2
+       cmp     r5, r3
+       bcc     .L177
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, pc}
+.L179:
+       .align  2
+.L178:
+       .word   .LANCHOR1+2720
+       .word   .LANCHOR0
+       .fnend
+       .size   SamsungSetRRPara, .-SamsungSetRRPara
+       .align  2
+       .global ToshibaSetRRPara
+       .type   ToshibaSetRRPara, %function
+ToshibaSetRRPara:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
+       .save {r3, r4, r5, r6, r7, r8, sl, lr}
+       add     r6, r1, #1
+       ldr     r3, .L187
+       mov     r4, r0
+       add     r6, r6, r6, asl #2
+       mov     r5, #0
+       add     r2, r3, #45
+       sub     sl, r3, #2784
+       add     r7, r3, r6
+       ldr     r8, .L187+4
+       add     r6, r2, r6
+       add     sl, sl, r1
+       b       .L181
+.L185:
+       mov     r3, #85
+       str     r3, [r4, #8]
+       ldr     r3, .L187
+       mov     r0, #200
+       ldrsb   r3, [r5, r3]
+       str     r3, [r4, #4]
+       bl      NandcDelayns
+       ldrb    r3, [r8, #3765] @ zero_extendqisi2
+       cmp     r3, #34
+       ldreqsb r3, [r7, #0]
+       beq     .L186
+       cmp     r3, #35
+       addne   r3, sl, #2912
+       addne   r3, r3, #12
+       ldreqsb r3, [r6, #0]
+       ldrnesb r3, [r3, #0]
+.L186:
+       add     r5, r5, #1
+       add     r7, r7, #1
+       add     r6, r6, #1
+       str     r3, [r4, #0]
+.L181:
+       ldrb    r3, [r8, #3764] @ zero_extendqisi2
+       cmp     r5, r3
+       bcc     .L185
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, pc}
+.L188:
+       .align  2
+.L187:
+       .word   .LANCHOR1+2784
+       .word   .LANCHOR0
+       .fnend
+       .size   ToshibaSetRRPara, .-ToshibaSetRRPara
+       .align  2
+       .global FlashReadStatus
+       .type   FlashReadStatus, %function
+FlashReadStatus:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r2, #112
+       ldr     r3, .L190
+       add     r3, r3, r0, asl #3
+       mov     r0, #80
+       ldrb    r5, [r3, #20]   @ zero_extendqisi2
+       ldr     r4, [r3, #16]
+       add     r5, r5, #8
+       add     r3, r4, r5, asl #8
+       str     r2, [r3, #8]
+       bl      NandcDelayns
+       ldr     r0, [r4, r5, asl #8]
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L191:
+       .align  2
+.L190:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashReadStatus, .-FlashReadStatus
+       .align  2
+       .global NandcWaitFlashReady
+       .type   NandcWaitFlashReady, %function
+NandcWaitFlashReady:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L197
+       stmfd   sp!, {r0, r1, r2, r4, r5, lr}
+       .save {r0, r1, r2, r4, r5, lr}
+       add     r3, r3, r0, asl #3
+       ldr     r4, .L197+4
+       ldr     r5, [r3, #16]
+.L194:
+       mov     r0, #100
+       bl      NandcDelayns
+       ldr     r3, [r5, #0]
+       str     r3, [sp, #4]
+       ldr     r3, [sp, #4]
+       tst     r3, #512
+       bne     .L195
+       subs    r4, r4, #1
+       bne     .L194
+       mvn     r0, #0
+       b       .L193
+.L195:
+       mov     r0, #0
+.L193:
+       ldmfd   sp!, {r1, r2, r3, r4, r5, pc}
+.L198:
+       .align  2
+.L197:
+       .word   .LANCHOR0
+       .word   100000
+       .fnend
+       .size   NandcWaitFlashReady, .-NandcWaitFlashReady
+       .align  2
+       .global FlashEraseSLc2KBlocks
+       .type   FlashEraseSLc2KBlocks, %function
+FlashEraseSLc2KBlocks:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, sl, lr}
+       .save {r4, r5, r6, r7, r8, sl, lr}
+       mov     r6, #0
+       .pad #20
+       sub     sp, sp, #20
+       mov     r8, r1
+       mov     r4, r0
+       mov     r7, r6
+       ldr     r5, .L207
+       b       .L200
+.L206:
+       add     r3, r6, r8
+       add     r2, sp, #8
+       mov     r0, r4
+       mov     r1, #0
+       uxtb    r3, r3
+       str     r3, [sp, #0]
+       add     r3, sp, #12
+       bl      LogAddr2PhyAddr
+       ldr     r3, [sp, #12]
+       ldrb    r2, [r5, #3766] @ zero_extendqisi2
+       cmp     r3, r2
+       mvncs   r3, #0
+       strcs   r3, [r4, #0]
+       bcs     .L202
+       add     r2, r5, r3
+       add     r3, r5, r3, asl #4
+       ldrb    sl, [r2, #3768] @ zero_extendqisi2
+       strb    sl, [r3, #2780]
+       mov     r0, sl
+       bl      NandcWaitFlashReady
+       mov     r0, sl
+       bl      NandcFlashCs
+       mov     r2, #0
+       ldr     r1, [sp, #8]
+       mov     r0, sl
+       bl      FlashEraseCmd
+       mov     r0, sl
+       bl      NandcWaitFlashReady
+       ldr     r1, [sp, #8]
+       mov     r0, sl
+       bl      FlashReadStatus
+       ldr     r3, [sp, #8]
+       mov     r2, #0
+       ands    r0, r0, #1
+       mvnne   r0, #0
+       str     r0, [r4, #0]
+       ldr     r1, [r5, #4]
+       mov     r0, sl
+       add     r1, r1, r3
+       bl      FlashEraseCmd
+       mov     r0, sl
+       bl      NandcWaitFlashReady
+       mov     r0, sl
+       ldr     r1, [sp, #8]
+       bl      FlashReadStatus
+       tst     r0, #1
+       mvnne   r3, #0
+       strne   r3, [r4, #0]
+       ldr     r3, [r4, #0]
+       cmn     r3, #1
+       bne     .L205
+       ldr     r0, .L207+4
+       ldr     r1, [sp, #8]
+       bl      printk
+.L205:
+       mov     r0, sl
+       bl      NandcFlashDeCs
+.L202:
+       sub     r6, r6, #1
+       add     r7, r7, #1
+       add     r4, r4, #36
+       uxtb    r6, r6
+.L200:
+       cmp     r7, r8
+       bne     .L206
+       mov     r0, #0
+       add     sp, sp, #20
+       ldmfd   sp!, {r4, r5, r6, r7, r8, sl, pc}
+.L208:
+       .align  2
+.L207:
+       .word   .LANCHOR0
+       .word   .LC2
+       .fnend
+       .size   FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks
+       .align  2
+       .global SandiskSetRRPara
+       .type   SandiskSetRRPara, %function
+SandiskSetRRPara:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r3, #239
+       mov     r4, r0
+       str     r3, [r0, #8]
+       mov     r3, #17
+       str     r3, [r0, #4]
+       mov     r0, #200
+       mov     r5, r1
+       bl      NandcDelayns
+       ldr     r1, .L215
+       add     r3, r5, r5, asl #2
+       mvn     r6, #4
+       add     r0, r1, r3
+       add     r1, r1, #45
+       add     r1, r1, r3
+       mov     r2, #0
+       ldr     ip, .L215+4
+       mul     r5, r6, r5
+       b       .L210
+.L213:
+       ldrb    r6, [ip, #3765] @ zero_extendqisi2
+       add     r2, r2, #1
+       cmp     r6, #67
+       addeq   r6, r0, r5
+       addne   r6, r1, r5
+       add     r6, r6, r3
+       add     r0, r0, #1
+       add     r1, r1, #1
+       ldrsb   r6, [r6, #5]
+       str     r6, [r4, #0]
+.L210:
+       ldrb    r6, [ip, #3764] @ zero_extendqisi2
+       cmp     r2, r6
+       bcc     .L213
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, lr}
+       b       NandcWaitFlashReady
+.L216:
+       .align  2
+.L215:
+       .word   .LANCHOR1+2784
+       .word   .LANCHOR0
+       .fnend
+       .size   SandiskSetRRPara, .-SandiskSetRRPara
+       .align  2
+       .global SandiskProgTestBadBlock
+       .type   SandiskProgTestBadBlock, %function
+SandiskProgTestBadBlock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L218
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       add     r3, r3, r0, asl #3
+       ldrb    r6, [r3, #20]   @ zero_extendqisi2
+       ldr     r5, [r3, #16]
+       mov     r3, #162
+       add     r6, r6, #8
+       add     r4, r5, r6, asl #8
+       str     r3, [r4, #8]
+       mov     r3, #128
+       str     r3, [r4, #8]
+       mov     r3, #0
+       str     r3, [r4, #4]
+       str     r3, [r4, #4]
+       uxtb    r3, r1
+       str     r3, [r4, #4]
+       mov     r3, r1, lsr #8
+       mov     r1, r1, lsr #16
+       str     r3, [r4, #4]
+       str     r1, [r4, #4]
+       mov     r3, #16
+       str     r3, [r4, #8]
+       bl      NandcWaitFlashReady
+       mov     r3, #112
+       mov     r0, #80
+       str     r3, [r4, #8]
+       bl      NandcDelayns
+       ldr     r0, [r5, r6, asl #8]
+       and     r0, r0, #1
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L219:
+       .align  2
+.L218:
+       .word   .LANCHOR0
+       .fnend
+       .size   SandiskProgTestBadBlock, .-SandiskProgTestBadBlock
+       .align  2
+       .global FlashReadSpare
+       .type   FlashReadSpare, %function
+FlashReadSpare:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L221
+       mov     ip, #0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r6, r2
+       ldrb    r2, [r3, #2697] @ zero_extendqisi2
+       ldr     r3, .L221+4
+       add     r3, r3, r0, asl #3
+       mov     r2, r2, asl #9
+       ldrb    r5, [r3, #20]   @ zero_extendqisi2
+       ldr     r4, [r3, #16]
+       add     r5, r5, #8
+       add     r3, r4, r5, asl #8
+       str     ip, [r3, #8]
+       str     r2, [r3, #4]
+       mov     r2, r2, lsr #8
+       str     r2, [r3, #4]
+       uxtb    r2, r1
+       str     r2, [r3, #4]
+       mov     r2, r1, lsr #8
+       mov     r1, r1, lsr #16
+       str     r2, [r3, #4]
+       str     r1, [r3, #4]
+       mov     r2, #48
+       str     r2, [r3, #8]
+       bl      NandcWaitFlashReady
+       ldr     r3, [r4, r5, asl #8]
+       strb    r3, [r6, #0]
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L222:
+       .align  2
+.L221:
+       .word   .LANCHOR1
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashReadSpare, .-FlashReadSpare
+       .align  2
+       .global FlashEraseBlock
+       .type   FlashEraseBlock, %function
+FlashEraseBlock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r4, r0
+       mov     r5, r1
+       mov     r6, r2
+       bl      NandcWaitFlashReady
+       mov     r0, r4
+       bl      NandcFlashCs
+       mov     r2, r6
+       mov     r1, r5
+       mov     r0, r4
+       bl      FlashEraseCmd
+       mov     r0, r4
+       bl      NandcWaitFlashReady
+       mov     r1, r5
+       mov     r0, r4
+       bl      FlashReadStatus
+       mov     r5, r0
+       mov     r0, r4
+       bl      NandcFlashDeCs
+       and     r0, r5, #1
+       ldmfd   sp!, {r4, r5, r6, pc}
+       .fnend
+       .size   FlashEraseBlock, .-FlashEraseBlock
+       .align  2
+       .global FlashReset
+       .type   FlashReset, %function
+FlashReset:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r4, r0
+       ldr     r3, .L225
+       add     r3, r3, r0, asl #3
+       ldrb    r5, [r3, #20]   @ zero_extendqisi2
+       ldr     r2, [r3, #16]
+       add     r5, r5, #8
+       add     r5, r2, r5, asl #8
+       bl      NandcFlashCs
+       mov     r3, #255
+       mov     r0, r4
+       str     r3, [r5, #8]
+       bl      NandcWaitFlashReady
+       mov     r0, r4
+       ldmfd   sp!, {r3, r4, r5, lr}
+       b       NandcFlashDeCs
+.L226:
+       .align  2
+.L225:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashReset, .-FlashReset
+       .align  2
+       .type   FlashReadIDRaw, %function
+FlashReadIDRaw:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr}
+       .save {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr}
+       mov     r5, r1
+       mov     r4, r0
+       bl      FlashReset
+       ldr     r3, .L229
+       mov     r0, r4
+       add     r3, r3, r4, asl #3
+       ldrb    r7, [r3, #20]   @ zero_extendqisi2
+       ldr     r6, [r3, #16]
+       bl      NandcFlashCs
+       add     r7, r7, #8
+       mov     r3, #144
+       mov     r0, #200
+       add     r8, r6, r7, asl #8
+       str     r3, [r8, #8]
+       mov     r3, #0
+       str     r3, [r8, #4]
+       bl      NandcDelayns
+       ldr     r3, [r6, r7, asl #8]
+       mov     r0, r4
+       strb    r3, [r5, #0]
+       ldr     r3, [r6, r7, asl #8]
+       strb    r3, [r5, #1]
+       ldr     r3, [r6, r7, asl #8]
+       strb    r3, [r5, #2]
+       ldr     r3, [r6, r7, asl #8]
+       strb    r3, [r5, #3]
+       ldr     r3, [r6, r7, asl #8]
+       strb    r3, [r5, #4]
+       ldr     r3, [r6, r7, asl #8]
+       strb    r3, [r5, #5]
+       ldr     r3, [r6, r7, asl #8]
+       strb    r3, [r5, #6]
+       ldr     r3, [r6, r7, asl #8]
+       strb    r3, [r5, #7]
+       bl      NandcFlashDeCs
+       ldrb    r2, [r5, #0]    @ zero_extendqisi2
+       sub     r3, r2, #1
+       uxtb    r3, r3
+       cmp     r3, #253
+       bhi     .L227
+       ldrb    r1, [r5, #2]    @ zero_extendqisi2
+       ldrb    r3, [r5, #1]    @ zero_extendqisi2
+       ldr     r0, .L229+4
+       str     r1, [sp, #0]
+       ldrb    r1, [r5, #3]    @ zero_extendqisi2
+       str     r1, [sp, #4]
+       ldrb    r1, [r5, #4]    @ zero_extendqisi2
+       str     r1, [sp, #8]
+       ldrb    r1, [r5, #5]    @ zero_extendqisi2
+       str     r1, [sp, #12]
+       add     r1, r4, #1
+       bl      printk
+.L227:
+       ldmfd   sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, pc}
+.L230:
+       .align  2
+.L229:
+       .word   .LANCHOR0
+       .word   .LC3
+       .fnend
+       .size   FlashReadIDRaw, .-FlashReadIDRaw
+       .align  2
+       .global FlashSetInterfaceMode
+       .type   FlashSetInterfaceMode, %function
+FlashSetInterfaceMode:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r4, #0
+       ldr     r9, .L245
+       mov     r7, #239
+       ldr     sl, .L245+4
+       mov     r1, r4
+       sub     r8, r9, #16
+       mov     r6, #128
+       mov     r5, #1
+.L241:
+       mov     r2, r9
+       ldrb    lr, [r4, sl]    @ zero_extendqisi2
+       ldr     r3, [r2, r4]!
+       cmp     lr, #152
+       cmpne   lr, #69
+       ldrb    r2, [r2, #4]    @ zero_extendqisi2
+       add     r2, r2, #8
+       add     ip, r3, r2, asl #8
+       beq     .L232
+       cmp     lr, #173
+       cmpne   lr, #44
+       bne     .L233
+.L232:
+       cmp     r0, #1
+       ldrb    fp, [r8, #3776] @ zero_extendqisi2
+       bne     .L234
+       tst     fp, #1
+       beq     .L233
+       cmp     lr, #173
+       str     r7, [ip, #8]
+       streq   r0, [ip, #4]
+       beq     .L244
+       cmp     lr, #44
+       streq   r0, [ip, #4]
+       strne   r6, [ip, #4]
+       moveq   ip, #5
+       strne   r0, [r3, r2, asl #8]
+       bne     .L239
+       b       .L243
+.L234:
+       tst     fp, #4
+       beq     .L233
+       cmp     lr, #173
+       str     r7, [ip, #8]
+       streq   r5, [ip, #4]
+       moveq   ip, #32
+       beq     .L243
+       cmp     lr, #44
+       strne   r6, [ip, #4]
+       bne     .L244
+       str     r5, [ip, #4]
+       mov     ip, #35
+.L243:
+       str     ip, [r3, r2, asl #8]
+       b       .L239
+.L244:
+       str     r1, [r3, r2, asl #8]
+.L239:
+       str     r1, [r3, r2, asl #8]
+       str     r1, [r3, r2, asl #8]
+       str     r1, [r3, r2, asl #8]
+.L233:
+       add     r4, r4, #8
+       cmp     r4, #32
+       bne     .L241
+       mov     r0, #0
+       bl      NandcWaitFlashReady
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L246:
+       .align  2
+.L245:
+       .word   .LANCHOR0+16
+       .word   .LANCHOR0+2132
+       .fnend
+       .size   FlashSetInterfaceMode, .-FlashSetInterfaceMode
+       .align  2
+       .global FlashDeInit
+       .type   FlashDeInit, %function
+FlashDeInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       mov     r0, #0
+       ldr     r4, .L249
+       bl      NandcWaitFlashReady
+       bl      FlashSetReadRetryDefault
+       ldrb    r3, [r4, #3777] @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L248
+       ldrb    r3, [r4, #3776] @ zero_extendqisi2
+       tst     r3, #1
+       beq     .L248
+       mov     r0, #1
+       bl      FlashSetInterfaceMode
+       mov     r0, #1
+       bl      NandcSetMode
+       mov     r3, #0
+       strb    r3, [r4, #3777]
+.L248:
+       ldr     r3, [r4, #16]
+       mov     r0, #0
+       str     r0, [r3, #336]
+       ldmfd   sp!, {r4, pc}
+.L250:
+       .align  2
+.L249:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashDeInit, .-FlashDeInit
+       .align  2
+       .global FlashReadDpCmd
+       .type   FlashReadDpCmd, %function
+FlashReadDpCmd:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L255
+       stmfd   sp!, {r4, r5, r6, r7, r8, lr}
+       .save {r4, r5, r6, r7, r8, lr}
+       mov     r7, r2
+       add     r2, r3, r0, asl #3
+       mov     r5, r1
+       mov     r4, r0
+       ldrb    r6, [r2, #20]   @ zero_extendqisi2
+       ldr     r1, [r2, #16]
+       ldrb    r2, [r3, #64]   @ zero_extendqisi2
+       add     r6, r6, #8
+       cmp     r2, #1
+       ldrb    r2, [r3, #56]   @ zero_extendqisi2
+       add     r6, r1, r6, asl #8
+       str     r2, [r6, #8]
+       bne     .L252
+       mov     r8, #0
+       uxtb    r2, r5
+       str     r8, [r6, #4]
+       str     r8, [r6, #4]
+       str     r2, [r6, #4]
+       mov     r2, r5, lsr #8
+       str     r2, [r6, #4]
+       mov     r2, r5, lsr #16
+       str     r2, [r6, #4]
+       ldrb    r3, [r3, #57]   @ zero_extendqisi2
+       str     r3, [r6, #8]
+       bl      NandcWaitFlashReady
+       str     r8, [r6, #8]
+       str     r8, [r6, #4]
+       str     r8, [r6, #4]
+       b       .L254
+.L252:
+       uxtb    r2, r5
+       str     r2, [r6, #4]
+       mov     r2, r5, lsr #8
+       str     r2, [r6, #4]
+       mov     r2, r5, lsr #16
+       str     r2, [r6, #4]
+       ldrb    r3, [r3, #57]   @ zero_extendqisi2
+       str     r3, [r6, #8]
+.L254:
+       uxtb    r3, r7
+       mov     r0, r4
+       str     r3, [r6, #4]
+       mov     r1, r5
+       mov     r3, r7, lsr #8
+       mov     r7, r7, lsr #16
+       str     r3, [r6, #4]
+       mov     r3, #48
+       str     r7, [r6, #4]
+       str     r3, [r6, #8]
+       ldmfd   sp!, {r4, r5, r6, r7, r8, lr}
+       b       FlashSetRandomizer
+.L256:
+       .align  2
+.L255:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashReadDpCmd, .-FlashReadDpCmd
+       .align  2
+       .global HynixGetReadRetryDefault
+       .type   HynixGetReadRetryDefault, %function
+HynixGetReadRetryDefault:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 64
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L316
+       mvn     r2, #83
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r4, r0
+       cmp     r4, #2
+       strb    r0, [r3, #2908]
+       strb    r2, [r3, #2912]
+       mvn     r0, #82
+       mvn     r1, #81
+       mvn     r2, #80
+       .pad #68
+       sub     sp, sp, #68
+       strb    r0, [r3, #2913]
+       strb    r1, [r3, #2914]
+       strb    r2, [r3, #2915]
+       bne     .L258
+       mvn     r2, #88
+       strb    r2, [r3, #2912]
+       ldr     r3, .L316+4
+       mvn     r2, #8
+       strb    r2, [r3, #2949]
+       b       .L297
+.L258:
+       cmp     r4, #3
+       bne     .L260
+       mvn     r2, #79
+       strb    r2, [r3, #2912]
+       mvn     r2, #78
+       strb    r2, [r3, #2913]
+       mvn     r2, #77
+       strb    r2, [r3, #2914]
+       mvn     r2, #76
+       strb    r2, [r3, #2915]
+       mvn     r2, #75
+       strb    r2, [r3, #2916]
+       mvn     r2, #74
+       strb    r2, [r3, #2917]
+       mvn     r2, #73
+       strb    r2, [r3, #2918]
+       mvn     r2, #72
+       b       .L312
+.L260:
+       cmp     r4, #4
+       bne     .L261
+       mvn     ip, #51
+       strb    r0, [r3, #2917]
+       strb    ip, [r3, #2912]
+       mvn     ip, #64
+       strb    r1, [r3, #2918]
+       strb    ip, [r3, #2913]
+       mvn     ip, #85
+       strb    ip, [r3, #2914]
+       mvn     ip, #84
+       strb    ip, [r3, #2915]
+       mvn     ip, #50
+       strb    ip, [r3, #2916]
+.L312:
+       mov     r6, #8
+       strb    r2, [r3, #2919]
+       mov     r5, r6
+       b       .L259
+.L261:
+       cmp     r4, #5
+       bne     .L262
+       mov     r2, #56
+       mov     r6, #8
+       strb    r2, [r3, #2912]
+       mov     r2, #57
+       strb    r2, [r3, #2913]
+       mov     r2, #58
+       strb    r2, [r3, #2914]
+       mov     r2, #59
+       strb    r2, [r3, #2915]
+       b       .L311
+.L262:
+       cmp     r4, #6
+       bne     .L297
+       mov     r2, #14
+       mov     r6, #12
+       strb    r2, [r3, #2912]
+       mov     r2, #15
+       strb    r2, [r3, #2913]
+       mov     r2, #16
+       strb    r2, [r3, #2914]
+       mov     r2, #17
+       strb    r2, [r3, #2915]
+       b       .L311
+.L297:
+       mov     r6, #7
+.L311:
+       mov     r5, #4
+.L259:
+       sub     r3, r4, #1
+       cmp     r3, #1
+       bhi     .L310
+       b       .L315
+.L269:
+       add     r1, r2, r8
+       add     r4, r2, #2928
+       ldr     fp, .L316+8
+       mov     r7, #0
+       ldrb    r1, [r1, #3768] @ zero_extendqisi2
+       mov     r5, #55
+       add     r2, r2, r1, asl #3
+       add     r4, r4, r1, asl #6
+       ldrb    sl, [r2, #20]   @ zero_extendqisi2
+       ldr     r1, [r2, #16]
+       add     sl, sl, #8
+       add     sl, r1, sl, asl #8
+.L265:
+       add     r2, fp, r7
+       str     r5, [sl, #8]
+       mov     r0, #80
+       ldrb    r2, [r2, #4]    @ zero_extendqisi2
+       str     r2, [sl, #4]
+       str     r3, [sp, #8]
+       bl      NandcDelayns
+       ldr     r2, [sl, #0]
+       strb    r2, [r4, r7]
+       add     r7, r7, #1
+       ldr     r3, [sp, #8]
+       uxtb    r2, r7
+       cmp     r2, r6
+       bcc     .L265
+       mov     r2, #0
+       b       .L266
+.L267:
+       ldrb    r7, [r0, r1, asl #2]    @ zero_extendqisi2
+       ldrb    r5, [r4, r2]    @ zero_extendqisi2
+       add     r5, r7, r5
+       strb    r5, [ip, r1, asl #3]
+       add     r1, r1, #1
+       cmp     r1, #7
+       bne     .L267
+       add     r2, r2, #1
+       cmp     r2, #4
+       beq     .L268
+.L266:
+       mov     r1, #1
+       add     ip, r4, r2
+       add     r0, r2, r9
+       b       .L267
+.L268:
+       add     r8, r8, #1
+       mov     r2, #0
+       strb    r2, [r4, #16]
+       strb    r2, [r4, #24]
+       uxtb    r8, r8
+       strb    r2, [r4, #32]
+       strb    r2, [r4, #40]
+       strb    r2, [r4, #48]
+       strb    r2, [r4, #41]
+       strb    r2, [r4, #49]
+       b       .L263
+.L315:
+       ldr     r9, .L316+12
+       mov     r3, r6
+       mov     r8, #0
+       mov     r6, r5
+.L263:
+       ldr     r2, .L316
+       ldrb    r1, [r2, #3766] @ zero_extendqisi2
+       cmp     r1, r8
+       bhi     .L269
+       mov     r5, r6
+       mov     r6, r3
+       b       .L270
+.L310:
+       sub     r3, r4, #3
+       cmp     r3, #3
+       bhi     .L270
+       mul     r3, r6, r5
+       ldr     r8, .L316
+       str     r6, [sp, #44]
+       mov     r2, r3, asr #2
+       mov     r3, r3, asl #4
+       str     r3, [sp, #52]
+       mov     r3, #0
+       str     r2, [sp, #24]
+       mov     r7, r3
+       str     r3, [sp, #12]
+       b       .L271
+.L296:
+       ldr     ip, [sp, #12]
+       ldr     r1, .L316+16
+       add     r3, r8, ip
+       ldrb    r6, [r3, #3768] @ zero_extendqisi2
+       add     r3, r8, r6, asl #3
+       mov     r0, r6
+       add     r1, r1, r6, asl #6
+       str     r1, [sp, #48]
+       ldrb    fp, [r3, #20]   @ zero_extendqisi2
+       ldr     r9, [r3, #16]
+       mov     r3, #255
+       add     fp, fp, #8
+       add     sl, r9, fp, asl #8
+       str     r3, [sl, #8]
+       str     r3, [sp, #8]
+       bl      NandcWaitFlashReady
+       cmp     r4, #4
+       mov     r2, #54
+       str     r2, [sl, #8]
+       ldr     r3, [sp, #8]
+       streq   r3, [sl, #4]
+       moveq   r3, #64
+       streq   r3, [r9, fp, asl #8]
+       moveq   r3, #204
+       beq     .L313
+.L272:
+       sub     r3, r4, #5
+       cmp     r3, #1
+       ldrls   r2, .L316+8
+       ldrlsb  r3, [r2, #4]    @ zero_extendqisi2
+       strls   r3, [sl, #4]
+       movls   r3, #82
+       bls     .L314
+.L274:
+       mov     r3, #174
+       str     r3, [sl, #4]
+       mov     r3, #176
+       str     r7, [r9, fp, asl #8]
+.L313:
+       str     r3, [sl, #4]
+       mov     r3, #77
+.L314:
+       cmp     r4, #6
+       str     r3, [r9, fp, asl #8]
+       mov     r0, r6
+       mov     r3, #22
+       str     r3, [sl, #8]
+       mov     r3, #23
+       str     r3, [sl, #8]
+       mov     r3, #4
+       str     r3, [sl, #8]
+       mov     r3, #25
+       str     r3, [sl, #8]
+       moveq   r3, #31
+       str     r7, [sl, #8]
+       str     r7, [sl, #4]
+       str     r7, [sl, #4]
+       streq   r3, [sl, #4]
+       mov     r3, #2
+       strne   r7, [sl, #4]
+       str     r3, [sl, #4]
+       mov     r3, #48
+       str     r7, [sl, #4]
+       str     r3, [sl, #8]
+       bl      NandcWaitFlashReady
+       sub     r3, r4, #5
+       cmp     r3, #1
+       str     r3, [sp, #28]
+       mov     r3, #0
+       movls   r2, #16
+       movhi   r2, #2
+.L278:
+       add     r3, r3, #1
+       ldr     r1, [sl, #0]
+       uxtb    r3, r3
+       cmp     r3, r2
+       bcc     .L278
+       ldr     ip, [r8, #3780]
+       mov     r3, #0
+       str     ip, [sp, #32]
+.L279:
+       ldr     r2, [sl, #0]
+       ldr     lr, [sp, #32]
+       strb    r2, [lr, r3]
+       add     r3, r3, #1
+       ldr     r2, [sp, #52]
+       cmp     r3, r2
+       blt     .L279
+       ldr     r3, [sp, #24]
+       mov     ip, r3, asl #2
+       mov     lr, r3, asl #3
+       ldr     r3, .L316
+       str     ip, [sp, #40]
+       ldr     r1, [r3, #3780]
+       mov     r3, #8
+       add     r1, r1, ip
+.L281:
+       mov     r2, #0
+       mov     r0, r2
+.L280:
+       ldr     ip, [r1, r2]
+       add     r0, r0, #1
+       mvn     ip, ip
+       str     ip, [r1, r2]
+       ldr     ip, [sp, #24]
+       add     r2, r2, #4
+       cmp     r0, ip
+       blt     .L280
+       subs    r3, r3, #1
+       add     r1, r1, lr
+       bne     .L281
+       str     r3, [sp, #20]
+       str     r5, [sp, #60]
+       b       .L282
+.L286:
+       mov     lr, #1
+       mov     r0, #0
+       mov     ip, lr, asl r2
+       mov     lr, r0
+       mov     r5, #16
+       str     r3, [sp, #0]
+       str     r5, [sp, #16]
+.L284:
+       ldr     r3, [sp, #56]
+       ldr     r3, [r3, r0]
+       and     r5, ip, r3
+       ldr     r3, [sp, #16]
+       cmp     r5, ip
+       ldr     r5, [sp, #40]
+       addeq   lr, lr, #1
+       subs    r3, r3, #1
+       add     r0, r0, r5
+       str     r3, [sp, #16]
+       bne     .L284
+       cmp     lr, #8
+       add     r2, r2, #1
+       orrhi   r1, r1, ip
+       cmp     r2, #32
+       ldr     r3, [sp, #0]
+       bne     .L286
+       ldr     ip, [sp, #20]
+       ldr     r2, [sp, #24]
+       add     ip, ip, #1
+       ldr     r5, [sp, #36]
+       cmp     ip, r2
+       str     ip, [sp, #20]
+       str     r1, [r5, r3]
+       add     r3, r3, #4
+       bge     .L287
+.L282:
+       ldr     r5, [r8, #3780]
+       mov     r1, #0
+       mov     r2, r1
+       add     ip, r5, r3
+       str     ip, [sp, #56]
+       str     r5, [sp, #36]
+       b       .L286
+.L287:
+       cmp     r4, #6
+       ldr     r5, [sp, #60]
+       ldr     r1, [sp, #48]
+       mov     r2, #0
+       moveq   lr, #4
+       movne   lr, #8
+       cmp     r5, #0
+       str     lr, [sp, #20]
+       subne   r3, r5, #1
+       moveq   r0, #1
+       streq   r0, [sp, #16]
+       uxtbne  r3, r3
+       ldr     r0, [sp, #32]
+       addne   r3, r3, #1
+       strne   r3, [sp, #16]
+       b       .L291
+.L292:
+       ldrb    lr, [ip], #1    @ zero_extendqisi2
+       strb    lr, [r1, r3]
+       add     r3, r3, #1
+       uxtb    lr, r3
+       cmp     lr, r5
+       bcc     .L292
+       ldr     r3, [sp, #16]
+       add     r2, r2, #1
+       ldr     ip, [sp, #20]
+       add     r0, r0, r3
+       ldr     r3, [sp, #44]
+       add     r1, r1, ip
+       cmp     r2, r3
+       bge     .L293
+.L291:
+       mov     ip, r0
+       mov     r3, #0
+       b       .L292
+.L293:
+       mov     r3, #255
+       mov     r0, r6
+       str     r3, [sl, #8]
+       bl      NandcWaitFlashReady
+       ldr     ip, [sp, #28]
+       cmp     ip, #1
+       movhi   r3, #56
+       strhi   r3, [sl, #8]
+       bhi     .L295
+       ldr     lr, .L316+8
+       mov     r3, #54
+       str     r3, [sl, #8]
+       mvn     r1, #0
+       ldr     r0, [sp, #12]
+       ldrb    r3, [lr, #4]    @ zero_extendqisi2
+       str     r3, [sl, #4]
+       mov     r3, #22
+       str     r7, [r9, fp, asl #8]
+       str     r3, [sl, #8]
+       bl      FlashReadCmd
+.L295:
+       mov     r0, r6
+       bl      NandcWaitFlashReady
+       ldr     r2, [sp, #12]
+       add     r3, r2, #1
+       uxtb    r3, r3
+       str     r3, [sp, #12]
+.L271:
+       ldrb    r3, [r8, #3766] @ zero_extendqisi2
+       ldr     ip, [sp, #12]
+       cmp     r3, ip
+       bhi     .L296
+       ldr     r6, [sp, #44]
+.L270:
+       ldr     r3, .L316
+       strb    r5, [r3, #2909]
+       strb    r6, [r3, #2910]
+       add     sp, sp, #68
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L317:
+       .align  2
+.L316:
+       .word   .LANCHOR0
+       .word   .LANCHOR1
+       .word   .LANCHOR0+2908
+       .word   .LANCHOR1+2932
+       .word   .LANCHOR0+2928
+       .fnend
+       .size   HynixGetReadRetryDefault, .-HynixGetReadRetryDefault
+       .align  2
+       .global FlashGetReadRetryDefault
+       .type   FlashGetReadRetryDefault, %function
+FlashGetReadRetryDefault:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       subs    r3, r0, #0
+       ldmeqfd sp!, {r3, pc}
+       sub     r2, r3, #1
+       cmp     r2, #5
+       bhi     .L320
+       ldmfd   sp!, {r3, lr}
+       b       HynixGetReadRetryDefault
+.L320:
+       cmp     r3, #49
+       bne     .L321
+       ldr     r0, .L327
+       mov     r2, #64
+       ldr     r1, .L327+4
+       strb    r3, [r0, #2908]
+       mov     r3, #4
+       strb    r3, [r0, #2909]
+       mov     r3, #15
+       strb    r3, [r0, #2910]
+       add     r0, r0, #2912
+       b       .L325
+.L321:
+       cmp     r3, #33
+       cmpne   r3, #65
+       beq     .L322
+       cmp     r3, #66
+       bne     .L323
+.L322:
+       ldr     r0, .L327
+       strb    r3, [r0, #2908]
+       mov     r3, #4
+       b       .L326
+.L323:
+       cmp     r3, #34
+       cmpne   r3, #67
+       bne     .L324
+       ldr     r0, .L327
+       strb    r3, [r0, #2908]
+       mov     r3, #5
+.L326:
+       strb    r3, [r0, #2909]
+       mov     r2, #45
+       mov     r3, #7
+       ldr     r1, .L327+8
+       strb    r3, [r0, #2910]
+       add     r0, r0, #2912
+       b       .L325
+.L324:
+       cmp     r3, #35
+       cmpne   r3, #68
+       ldmnefd sp!, {r3, pc}
+       ldr     r0, .L327
+       mov     r2, #95
+       ldr     r1, .L327+12
+       strb    r3, [r0, #2908]
+       mov     r3, #5
+       strb    r3, [r0, #2909]
+       mov     r3, #17
+       strb    r3, [r0, #2910]
+       add     r0, r0, #2912
+.L325:
+       bl      memcpy
+       ldmfd   sp!, {r3, pc}
+.L328:
+       .align  2
+.L327:
+       .word   .LANCHOR0
+       .word   .LANCHOR1+2720
+       .word   .LANCHOR1+2784
+       .word   .LANCHOR1+2829
+       .fnend
+       .size   FlashGetReadRetryDefault, .-FlashGetReadRetryDefault
+       .align  2
+       .global NandcRandmzSel
+       .type   NandcRandmzSel, %function
+NandcRandmzSel:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L330
+       add     r3, r3, r0, asl #3
+       ldr     r3, [r3, #16]
+       str     r1, [r3, #336]
+       bx      lr
+.L331:
+       .align  2
+.L330:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcRandmzSel, .-NandcRandmzSel
+       .global __aeabi_idiv
+       .align  2
+       .global NandcTimeCfg
+       .type   NandcTimeCfg, %function
+NandcTimeCfg:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       mov     r4, r0
+       mov     r0, #0
+       bl      rknand_get_clk_rate
+       ldr     r1, .L342
+       bl      __aeabi_idiv
+       ldr     r3, .L342+4
+       ldr     r3, [r3, #2164]
+       cmp     r0, #250
+       movwgt  r2, #8354
+       bgt     .L340
+       cmp     r0, #220
+       bgt     .L341
+.L335:
+       cmp     r0, #185
+       movwgt  r2, #4226
+       bgt     .L340
+       cmp     r0, #160
+       movwgt  r2, #4194
+       bgt     .L340
+       cmp     r4, #35
+       movwls  r2, #4193
+       bls     .L340
+       cmp     r4, #99
+       movwls  r2, #4225
+       bls     .L340
+.L341:
+       movw    r2, #8322
+.L340:
+       str     r2, [r3, #4]
+       ldmfd   sp!, {r4, pc}
+.L343:
+       .align  2
+.L342:
+       .word   1000000
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcTimeCfg, .-NandcTimeCfg
+       .align  2
+       .global NandcInit
+       .type   NandcInit, %function
+NandcInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r5, #0
+       ldr     r4, .L345
+       mov     r3, #1
+       str     r0, [r4, #2164]
+       str     r0, [r4, #16]
+       str     r3, [r4, #28]
+       mov     r3, #2
+       str     r0, [r4, #24]
+       str     r3, [r4, #36]
+       mov     r3, #3
+       str     r0, [r4, #32]
+       str     r0, [r4, #40]
+       str     r5, [r4, #20]
+       str     r3, [r4, #44]
+       ldr     r3, [r0, #0]
+       and     r3, r3, #253952
+       ubfx    r2, r3, #13, #1
+       str     r2, [r4, #3784]
+       ldr     r2, [r0, #352]
+       and     r3, r3, #245760
+       orr     r3, r3, #256
+       ubfx    r2, r2, #16, #4
+       str     r2, [r4, #12]
+       ldr     r2, [r0, #352]
+       str     r2, [r4, #3788]
+       str     r3, [r0, #0]
+       mov     r0, #40
+       ldr     r3, [r4, #2164]
+       str     r5, [r3, #336]
+       bl      NandcTimeCfg
+       ldr     r3, [r4, #2164]
+       movw    r2, #8322
+       mov     r0, #36864
+       str     r2, [r3, #344]
+       ldr     r2, .L345+4
+       str     r2, [r3, #304]
+       bl      ftl_malloc
+       str     r5, [r4, #3820]
+       str     r5, [r4, #3828]
+       str     r0, [r4, #3792]
+       str     r0, [r4, #3796]
+       add     r0, r0, #32768
+       str     r0, [r4, #3800]
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L346:
+       .align  2
+.L345:
+       .word   .LANCHOR0
+       .word   1579009
+       .fnend
+       .size   NandcInit, .-NandcInit
+       .align  2
+       .global FlashTimingCfg
+       .type   FlashTimingCfg, %function
+FlashTimingCfg:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       sub     r3, r0, #4160
+       movw    r2, #4225
+       sub     r3, r3, #33
+       cmp     r0, r2
+       cmpne   r3, #1
+       bls     .L348
+       movw    r3, #4226
+       movw    r2, #8322
+       cmp     r0, r3
+       cmpne   r0, r2
+       bne     .L349
+.L348:
+       ldr     r3, .L350
+       ldr     r3, [r3, #2164]
+       str     r0, [r3, #4]
+.L349:
+       ldr     r3, .L350+4
+       ldrb    r0, [r3, #2709] @ zero_extendqisi2
+       b       NandcTimeCfg
+.L351:
+       .align  2
+.L350:
+       .word   .LANCHOR0
+       .word   .LANCHOR1
+       .fnend
+       .size   FlashTimingCfg, .-FlashTimingCfg
+       .align  2
+       .global NandcGetTimeCfg
+       .type   NandcGetTimeCfg, %function
+NandcGetTimeCfg:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     ip, .L353
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       ldr     r4, [ip, #2164]
+       ldr     r4, [r4, #4]
+       str     r4, [r0, #0]
+       ldr     r0, [ip, #2164]
+       ldr     r0, [r0, #0]
+       str     r0, [r1, #0]
+       ldr     r1, [ip, #2164]
+       ldr     r1, [r1, #304]
+       str     r1, [r2, #0]
+       ldr     r2, [ip, #2164]
+       ldr     r0, [r2, #308]
+       ldr     r1, [r2, #344]
+       uxtb    r2, r0
+       orr     r2, r2, r1, asl #16
+       str     r2, [r3, #0]
+       ldmfd   sp!, {r4, pc}
+.L354:
+       .align  2
+.L353:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcGetTimeCfg, .-NandcGetTimeCfg
+       .align  2
+       .global NandcBchSel
+       .type   NandcBchSel, %function
+NandcBchSel:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L360
+       mov     r1, #1
+       ldr     r2, [r3, #2164]
+       str     r0, [r3, #3832]
+       mov     r3, #0
+       str     r1, [r2, #8]
+       mov     r1, #16
+       cmp     r0, r1
+       bfi     r3, r1, #8, #8
+       bfc     r3, #18, #1
+       beq     .L359
+.L356:
+       cmp     r0, #24
+       orreq   r3, r3, #16
+       beq     .L357
+       cmp     r0, #40
+       orr     r3, r3, #262144
+       orr     r3, r3, #16
+       bne     .L357
+.L359:
+       bfc     r3, #4, #1
+.L357:
+       orr     r3, r3, #1
+       str     r3, [r2, #12]
+       bx      lr
+.L361:
+       .align  2
+.L360:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcBchSel, .-NandcBchSel
+       .align  2
+       .global FlashBchSel
+       .type   FlashBchSel, %function
+FlashBchSel:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L363
+       strb    r0, [r3, #3836]
+       b       NandcBchSel
+.L364:
+       .align  2
+.L363:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashBchSel, .-FlashBchSel
+       .align  2
+       .global FlashResume
+       .type   FlashResume, %function
+FlashResume:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r4, #0
+       ldr     r3, .L370
+       ldr     r5, .L370+4
+       ldr     r2, [r3, #2164]
+       ldr     r1, [r3, #2168]
+       str     r1, [r2, #0]
+       ldr     r1, [r3, #2172]
+       ldr     r2, [r3, #2164]
+       str     r1, [r2, #4]
+       ldr     r1, [r3, #2176]
+       str     r1, [r2, #8]
+       ldr     r1, [r3, #2180]
+       str     r1, [r2, #12]
+       ldr     r1, [r3, #2184]
+       str     r1, [r2, #304]
+       ldr     r1, [r3, #2188]
+       str     r1, [r2, #308]
+       ldr     r1, [r3, #2192]
+       ldr     r3, [r3, #2196]
+       str     r1, [r2, #336]
+       str     r3, [r2, #344]
+.L367:
+       ldrb    r3, [r5, r4, asl #3]    @ zero_extendqisi2
+       sub     r3, r3, #1
+       uxtb    r3, r3
+       cmp     r3, #253
+       bhi     .L366
+       uxtb    r0, r4
+       bl      FlashReset
+.L366:
+       add     r4, r4, #1
+       cmp     r4, #4
+       bne     .L367
+       ldr     r4, .L370
+       ldrb    r3, [r4, #3777] @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L368
+       mov     r0, #1
+       bl      NandcSetMode
+       ldrb    r0, [r4, #3776] @ zero_extendqisi2
+       bl      FlashSetInterfaceMode
+       ldrb    r0, [r4, #3776] @ zero_extendqisi2
+       bl      NandcSetMode
+       ldrb    r0, [r4, #2185] @ zero_extendqisi2
+       bl      NandcSetDdrPara
+.L368:
+       ldr     r3, .L370
+       ldr     r3, [r3, #2776]
+       ldrb    r0, [r3, #20]   @ zero_extendqisi2
+       bl      FlashBchSel
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L371:
+       .align  2
+.L370:
+       .word   .LANCHOR0
+       .word   .LANCHOR0+2132
+       .fnend
+       .size   FlashResume, .-FlashResume
+       .align  2
+       .global NandCIrqEnable
+       .type   NandCIrqEnable, %function
+NandCIrqEnable:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, [r0, #368]
+       mov     r2, #1
+       mov     r2, r2, asl r1
+       orr     r3, r2, r3
+       str     r3, [r0, #368]
+       ldr     r3, [r0, #364]
+       orr     r2, r2, r3
+       str     r2, [r0, #364]
+       bx      lr
+       .fnend
+       .size   NandCIrqEnable, .-NandCIrqEnable
+       .align  2
+       .global NandCIrqDisable
+       .type   NandCIrqDisable, %function
+NandCIrqDisable:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, [r0, #368]
+       mov     r2, #1
+       mov     r2, r2, asl r1
+       orr     r3, r2, r3
+       str     r3, [r0, #368]
+       ldr     r3, [r0, #364]
+       bic     r2, r3, r2
+       str     r2, [r0, #364]
+       bx      lr
+       .fnend
+       .size   NandCIrqDisable, .-NandCIrqDisable
+       .align  2
+       .global rk_nandc_get_irq_status
+       .type   rk_nandc_get_irq_status, %function
+rk_nandc_get_irq_status:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r0, [r0, #372]
+       bx      lr
+       .fnend
+       .size   rk_nandc_get_irq_status, .-rk_nandc_get_irq_status
+       .align  2
+       .global rk_nandc_flash_ready
+       .type   rk_nandc_flash_ready, %function
+rk_nandc_flash_ready:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       mov     r1, #1
+       b       NandCIrqDisable
+       .fnend
+       .size   rk_nandc_flash_ready, .-rk_nandc_flash_ready
+       .align  2
+       .global NandcIqrWaitFlashReady
+       .type   NandcIqrWaitFlashReady, %function
+NandcIqrWaitFlashReady:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       mov     r4, r0
+       bl      rk_nandc_rb_irq_flag_init
+       mov     r0, r4
+       mov     r1, #1
+       bl      NandCIrqEnable
+       ldr     r3, [r4, #0]
+       mov     r0, r4
+       ubfx    r3, r3, #8, #8
+       and     r3, r3, #2
+       uxtb    r3, r3
+       cmp     r3, #0
+       bne     .L377
+       ldmfd   sp!, {r4, lr}
+       b       wait_for_nand_flash_ready
+.L377:
+       mov     r1, #1
+       ldmfd   sp!, {r4, lr}
+       b       NandCIrqDisable
+       .fnend
+       .size   NandcIqrWaitFlashReady, .-NandcIqrWaitFlashReady
+       .align  2
+       .global FlashEraseBlocks
+       .type   FlashEraseBlocks, %function
+FlashEraseBlocks:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 16
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #28
+       sub     sp, sp, #28
+       ldr     r5, .L393
+       mov     r6, r0
+       str     r1, [sp, #12]
+       mov     r7, r2
+       ldrb    r4, [r5, #0]    @ zero_extendqisi2
+       cmp     r4, #0
+       moveq   r9, r5
+       beq     .L379
+       mov     r1, r2
+       bl      FlashEraseSLc2KBlocks
+       b       .L380
+.L387:
+       mov     r8, #36
+       rsb     r3, r4, r7
+       mul     r8, r8, r4
+       uxtb    r3, r3
+       mov     r1, #0
+       str     r3, [sp, #0]
+       add     r2, sp, #16
+       add     r3, sp, #20
+       add     fp, r6, r8
+       mov     r0, fp
+       bl      LogAddr2PhyAddr
+       ldrb    r3, [r5, #3766] @ zero_extendqisi2
+       mov     sl, r0
+       ldr     r0, [sp, #20]
+       cmp     r0, r3
+       mvncs   r3, #0
+       strcs   r3, [r6, r8]
+       bcs     .L382
+       ldrb    r3, [r5, #3837] @ zero_extendqisi2
+       cmp     r3, #0
+       add     r3, r9, r0, asl #4
+       ldr     r3, [r3, #2788]
+       moveq   sl, #0
+       cmp     r3, #0
+       beq     .L384
+       uxtb    r0, r0
+       bl      FlashWaitCmdDone
+.L384:
+       ldr     r2, [sp, #20]
+       mov     r1, #0
+       cmp     sl, #0
+       add     r3, r5, r2, asl #4
+       movne   r0, #36
+       str     r1, [r3, #2792]
+       ldr     r1, [sp, #16]
+       str     fp, [r3, #2788]
+       str     r1, [r3, #2784]
+       addne   r1, r4, #1
+       mlane   r1, r0, r1, r6
+       strne   r1, [r3, #2792]
+       add     r3, r9, r2
+       add     r2, r9, r2, asl #4
+       ldrb    r8, [r3, #3768] @ zero_extendqisi2
+       strb    r8, [r2, #2780]
+       mov     r0, r8
+       bl      NandcFlashCs
+       ldr     r3, [sp, #12]
+       cmp     r3, #1
+       bne     .L386
+       ldrb    r3, [r5, #80]   @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L386
+       mov     r0, r8
+       bl      flash_enter_slc_mode
+.L386:
+       ldr     r3, [sp, #20]
+       mov     r0, r8
+       ldr     r1, [sp, #16]
+       add     r4, r4, sl
+       add     r3, r5, r3, asl #2
+       ldr     r2, [r3, #2740]
+       adds    r2, r2, #0
+       movne   r2, #1
+       bl      FlashWaitReadyEN
+       mov     r0, r8
+       ldr     r1, [sp, #16]
+       mov     r2, sl
+       bl      FlashEraseCmd
+       mov     r0, r8
+       bl      NandcFlashDeCs
+.L382:
+       add     r4, r4, #1
+.L379:
+       cmp     r4, r7
+       bcc     .L387
+       ldr     r5, .L393
+       mov     r4, #0
+       ldr     r6, .L393+4
+       ldr     r0, [r5, #2164]
+       bl      NandcIqrWaitFlashReady
+       b       .L388
+.L390:
+       uxtb    r0, r4
+       bl      FlashWaitCmdDone
+       ldr     r3, [sp, #12]
+       cmp     r3, #1
+       bne     .L389
+       ldrb    r3, [r5, #80]   @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L389
+       ldrb    r0, [r6, r4, asl #4]    @ zero_extendqisi2
+       bl      flash_exit_slc_mode
+.L389:
+       add     r4, r4, #1
+.L388:
+       ldrb    r3, [r5, #3766] @ zero_extendqisi2
+       cmp     r4, r3
+       bcc     .L390
+       mov     r0, #0
+.L380:
+       add     sp, sp, #28
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L394:
+       .align  2
+.L393:
+       .word   .LANCHOR0
+       .word   .LANCHOR0+2780
+       .fnend
+       .size   FlashEraseBlocks, .-FlashEraseBlocks
+       .align  2
+       .global rk_nandc_flash_xfer_completed
+       .type   rk_nandc_flash_xfer_completed, %function
+rk_nandc_flash_xfer_completed:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       mov     r1, #0
+       b       NandCIrqDisable
+       .fnend
+       .size   rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed
+       .align  2
+       .global NandcSendDumpDataStart
+       .type   NandcSendDumpDataStart, %function
+NandcSendDumpDataStart:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r2, [r0, #16]
+       .pad #8
+       sub     sp, sp, #8
+       ldr     r3, .L397
+       str     r2, [sp, #4]
+       ldr     r2, [sp, #4]
+       bfc     r2, #2, #1
+       str     r2, [sp, #4]
+       ldr     r2, [sp, #4]
+       str     r2, [r0, #16]
+       str     r3, [r0, #8]
+       orr     r3, r3, #4
+       str     r3, [r0, #8]
+       add     sp, sp, #8
+       bx      lr
+.L398:
+       .align  2
+.L397:
+       .word   538969130
+       .fnend
+       .size   NandcSendDumpDataStart, .-NandcSendDumpDataStart
+       .align  2
+       .global NandcSendDumpDataDone
+       .type   NandcSendDumpDataDone, %function
+NandcSendDumpDataDone:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       .pad #8
+       sub     sp, sp, #8
+.L400:
+       ldr     r3, [r0, #8]
+       str     r3, [sp, #4]
+       ldr     r3, [sp, #4]
+       tst     r3, #1048576
+       beq     .L400
+       add     sp, sp, #8
+       bx      lr
+       .fnend
+       .size   NandcSendDumpDataDone, .-NandcSendDumpDataDone
+       .align  2
+       .global NandcXferStart
+       .type   NandcXferStart, %function
+NandcXferStart:
+       .fnstart
+       @ args = 8, pretend = 0, frame = 16
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r8, r2
+       ldr     r2, .L415
+       mov     ip, #16
+       mov     r6, r1
+       mov     r4, #0
+       add     r0, r2, r0, asl #3
+       .pad #20
+       sub     sp, sp, #20
+       ldr     r5, [r0, #16]
+       ldrb    r0, [r0, #20]   @ zero_extendqisi2
+       ldr     r9, [sp, #56]
+       ldr     r7, [r5, #12]
+       ldr     r1, [sp, #60]
+       bfi     r7, ip, #8, #8
+       bfi     r7, r4, #3, #1
+       bfi     r4, r6, #1, #1
+       orr     r4, r4, #8
+       bfi     r7, r0, #5, #3
+       mov     r0, #1
+       bfi     r4, r0, #5, #2
+       orr     r4, r4, #536870912
+       mov     r3, r3, lsr r0
+       orr     r4, r4, #1024
+       bfi     r4, r3, #4, #1
+       ldr     r3, [r2, #12]
+       cmp     r3, #3
+       bls     .L403
+       ldr     r3, [r5, #16]
+       cmp     r9, #0
+       cmpeq   r1, #0
+       str     r3, [sp, #12]
+       ldr     r3, [sp, #12]
+       bfc     r3, #2, #1
+       str     r3, [sp, #12]
+       beq     .L404
+       cmp     r6, #0
+       beq     .L405
+       ldr     r3, [r2, #3832]
+       mov     ip, r1
+       cmp     r3, #24
+       movhi   r3, #128
+       movls   r3, #64
+       str     r3, [sp, #0]
+       mov     r3, r8, lsr r0
+       str     r3, [sp, #4]
+       mov     r3, #0
+       mov     r0, r3
+       b       .L407
+.L410:
+       cmp     r1, #0
+       mov     lr, r3, lsr #2
+       add     r0, r0, #1
+       ldrneh  fp, [ip, #2]
+       mvneq   fp, #0
+       ldrneh  sl, [ip], #4
+       ldreq   sl, [r2, #3800]
+       orrne   sl, sl, fp, asl #16
+       ldrne   fp, [r2, #3800]
+       streq   fp, [sl, lr, asl #2]
+       strne   sl, [fp, lr, asl #2]
+       ldr     lr, [sp, #0]
+       add     r3, r3, lr
+.L407:
+       ldr     sl, [sp, #4]
+       cmp     r0, sl
+       bcc     .L410
+.L405:
+       mov     r0, r5
+       add     r8, r8, #1
+       bl      rk_nandc_xfer_irq_flag_init
+       mov     r0, r5
+       mov     r1, #0
+       mov     r8, r8, asr #1
+       bl      NandCIrqEnable
+       bfi     r4, r8, #22, #6
+       ldr     r8, .L415
+       cmp     r9, #0
+       ubfx    sl, r4, #22, #5
+       mov     r2, r6
+       movne   r0, r9
+       ldreq   r0, [r8, #3796]
+       mov     r1, sl, asl #10
+       ldr     r3, [r8, #3800]
+       str     r3, [r8, #3808]
+       str     r0, [r8, #3804]
+       bl      rknand_dma_map_single
+       mov     r2, r6
+       mov     r1, sl, asl #7
+       str     r0, [r8, #3812]
+       ldr     r0, [r8, #3808]
+       bl      rknand_dma_map_single
+       mov     r3, #1
+       str     r3, [r8, #3820]
+       mov     r2, #16
+       ldr     r3, [r8, #3812]
+       tst     r9, #3
+       str     r0, [r8, #3816]
+       str     r3, [r5, #20]
+       ldr     r3, [r8, #3816]
+       str     r3, [r5, #24]
+       mov     r3, #0
+       str     r3, [sp, #12]
+       ldr     r3, [sp, #12]
+       bfi     r3, r2, #9, #5
+       str     r3, [sp, #12]
+       ldr     r3, [sp, #12]
+       moveq   r2, #2
+       orr     r3, r3, #448
+       str     r3, [sp, #12]
+       ldreq   r3, [sp, #12]
+       bfieq   r3, r2, #3, #3
+       streq   r3, [sp, #12]
+       rsbs    r6, r6, #1
+       ldr     r3, [sp, #12]
+       movcc   r6, #0
+       orr     r3, r3, #4
+       str     r3, [sp, #12]
+       ldr     r3, [sp, #12]
+       bfi     r3, r6, #1, #1
+       str     r3, [sp, #12]
+       ldr     r3, [sp, #12]
+       orr     r3, r3, #1
+       str     r3, [sp, #12]
+.L404:
+       ldr     r3, [sp, #12]
+       str     r3, [r5, #16]
+.L403:
+       str     r7, [r5, #12]
+       str     r4, [r5, #8]
+       orr     r4, r4, #4
+       str     r4, [r5, #8]
+       add     sp, sp, #20
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L416:
+       .align  2
+.L415:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcXferStart, .-NandcXferStart
+       .align  2
+       .global NandcCopy1KB
+       .type   NandcCopy1KB, %function
+NandcCopy1KB:
+       .fnstart
+       @ args = 4, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       cmp     r1, #1
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r5, r2
+       add     r2, r0, #4096
+       mov     r4, r0
+       ldr     r6, [sp, #16]
+       add     r2, r2, r5, asl #9
+       bne     .L418
+       cmp     r3, #0
+       beq     .L419
+       mov     r0, r2
+       mov     r1, r3
+       mov     r2, #1024
+       bl      memcpy
+.L419:
+       cmp     r6, #0
+       ldmeqfd sp!, {r4, r5, r6, pc}
+       ldrb    r3, [r6, #2]    @ zero_extendqisi2
+       mov     r5, r5, lsr #1
+       ldrb    r2, [r6, #1]    @ zero_extendqisi2
+       mov     r3, r3, asl #16
+       orr     r3, r3, r2, asl #8
+       ldrb    r2, [r6, #0]    @ zero_extendqisi2
+       orr     r3, r3, r2
+       ldrb    r2, [r6, #3]    @ zero_extendqisi2
+       orr     r3, r3, r2, asl #24
+       mov     r2, #48
+       mul     r5, r2, r5
+       mov     r5, r5, asr #2
+       add     r5, r5, #128
+       str     r3, [r4, r5, asl #2]
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L418:
+       cmp     r3, #0
+       beq     .L421
+       mov     r1, r2
+       mov     r0, r3
+       mov     r2, #1024
+       bl      memcpy
+.L421:
+       cmp     r6, #0
+       ldmeqfd sp!, {r4, r5, r6, pc}
+       mov     r5, r5, lsr #1
+       mov     r3, #48
+       mul     r5, r3, r5
+       mov     r5, r5, asr #2
+       add     r5, r5, #128
+       ldr     r3, [r4, r5, asl #2]
+       mov     r2, r3, lsr #8
+       strb    r3, [r6, #0]
+       strb    r2, [r6, #1]
+       mov     r2, r3, lsr #16
+       mov     r3, r3, lsr #24
+       strb    r2, [r6, #2]
+       strb    r3, [r6, #3]
+       ldmfd   sp!, {r4, r5, r6, pc}
+       .fnend
+       .size   NandcCopy1KB, .-NandcCopy1KB
+       .align  2
+       .global Ftl_log2
+       .type   Ftl_log2, %function
+Ftl_log2:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       mov     r2, #1
+       mov     r3, #0
+       b       .L423
+.L424:
+       add     r3, r3, #1
+       mov     r2, r2, asl #1
+       uxth    r3, r3
+.L423:
+       cmp     r2, r0
+       bls     .L424
+       sub     r3, r3, #1
+       uxth    r0, r3
+       bx      lr
+       .fnend
+       .size   Ftl_log2, .-Ftl_log2
+       .align  2
+       .global FtlPrintInfo
+       .type   FtlPrintInfo, %function
+FtlPrintInfo:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       bx      lr
+       .fnend
+       .size   FtlPrintInfo, .-FtlPrintInfo
+       .align  2
+       .global FtlSysBlkNumInit
+       .type   FtlSysBlkNumInit, %function
+FtlSysBlkNumInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L429
+       movw    r2, #3844
+       cmp     r0, #23
+       movw    r1, #3854
+       ldrh    r2, [r3, r2]
+       movls   r0, #24
+       ldrh    r1, [r3, r1]
+       str     r0, [r3, #3840]
+       mul     r2, r2, r0
+       rsb     r0, r0, r1
+       movw    r1, #3852
+       strh    r0, [r3, r1]    @ movhi
+       mov     r0, #0
+       ldr     r1, [r3, #3860]
+       str     r2, [r3, #3848]
+       rsb     r2, r2, r1
+       str     r2, [r3, #3856]
+       bx      lr
+.L430:
+       .align  2
+.L429:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlSysBlkNumInit, .-FtlSysBlkNumInit
+       .align  2
+       .global FtlConstantsInit
+       .type   FtlConstantsInit, %function
+FtlConstantsInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       movw    r2, #3864
+       ldr     r3, .L444
+       mov     r4, r0
+       ldrh    lr, [r0, #8]
+       ldrh    r1, [r0, #10]
+       ldrh    r0, [r0, #12]
+       strh    lr, [r3, r2]    @ movhi
+       add     r2, r2, #2
+       ldrh    r6, [r4, #14]
+       strh    r1, [r3, r2]    @ movhi
+       add     r2, r2, #2
+       strh    r0, [r3, r2]    @ movhi
+       movw    r2, #3854
+       strh    r6, [r3, r2]    @ movhi
+       mov     r3, #0
+       ldr     r2, .L444+4
+.L432:
+       strb    r3, [r3, r2]
+       add     r3, r3, #1
+       cmp     r3, #32
+       bne     .L432
+       ldrh    r2, [r4, #14]
+       ldrh    r3, [r4, #20]
+       cmp     r3, r2, lsr #8
+       bcs     .L433
+       ldr     r2, .L444+4
+       sub     ip, r1, #1
+       uxtb    r7, r0
+       mov     r3, #0
+       rsb     sl, r0, r2
+       str     sl, [sp, #0]
+       mla     ip, r0, ip, r2
+       mov     r8, r7, asl #1
+       uxtb    r8, r8
+       str     ip, [sp, #4]
+       b       .L434
+.L435:
+       strb    ip, [r9, r2]
+       add     fp, ip, r7
+       add     ip, ip, r8
+       add     r5, r5, #1
+       strb    fp, [sl, r2]
+       uxtb    ip, ip
+.L437:
+       cmp     r5, r1
+       add     r2, r2, r0
+       bcc     .L435
+       add     r3, r3, #1
+.L434:
+       cmp     r3, r0
+       bcs     .L436
+       ldr     fp, [sp, #0]
+       mov     r2, #0
+       uxtb    ip, r3
+       mov     r5, r2
+       add     r9, fp, r3
+       ldr     fp, [sp, #4]
+       add     sl, fp, r3
+       b       .L437
+.L436:
+       ldr     r3, .L444
+       movw    r2, #3866
+       mov     r1, r1, asl #1
+       mov     r6, r6, lsr #1
+       strh    r1, [r3, r2]    @ movhi
+       movw    r2, #3854
+       strh    r6, [r3, r2]    @ movhi
+.L433:
+       ldr     r3, .L444
+       movw    r2, #3902
+       cmp     lr, #1
+       mov     r1, #5
+       mov     ip, #0
+       ldr     r8, .L444
+       strh    r1, [r3, r2]    @ movhi
+       mov     r1, #3904
+       streqh  lr, [r3, r2]    @ movhi
+       movw    r2, #3906
+       strh    ip, [r3, r1]    @ movhi
+       mov     r1, #4352
+       strh    r1, [r3, r2]    @ movhi
+       ldrb    r3, [r3, #0]    @ zero_extendqisi2
+       cmp     r3, #0
+       ldrne   r3, .L444
+       movne   r1, #384
+       strneh  r1, [r3, r2]    @ movhi
+       movw    r3, #3866
+       ldrh    r5, [r8, r3]
+       movw    r3, #3844
+       mul     r5, r5, r0
+       uxth    r5, r5
+       strh    r5, [r8, r3]    @ movhi
+       add     r3, r3, #10
+       ldrh    r6, [r8, r3]
+       add     r3, r3, #54
+       mul     r0, r0, r6
+       uxth    r0, r0
+       strh    r0, [r8, r3]    @ movhi
+       bl      Ftl_log2
+       ldrh    r9, [r4, #16]
+       movw    r3, #3910
+       ldrh    fp, [r4, #18]
+       ldrh    sl, [r4, #20]
+       mul     r2, r9, r5
+       strh    r0, [r8, r3]    @ movhi
+       add     r3, r3, #2
+       mov     r0, sl
+       strh    r9, [r8, r3]    @ movhi
+       add     r3, r3, #2
+       strh    fp, [r8, r3]    @ movhi
+       add     r3, r3, #2
+       strh    r2, [r8, r3]    @ movhi
+       add     r3, r3, #2
+       strh    sl, [r8, r3]    @ movhi
+       bl      Ftl_log2
+       mov     r3, #3920
+       movw    r2, #3922
+       cmp     r6, #1024
+       mul     r1, fp, sl
+       strh    r0, [r8, r3]    @ movhi
+       mov     r3, sl, asl #9
+       mov     r7, r0
+       uxth    r3, r3
+       strh    r3, [r8, r2]    @ movhi
+       add     r2, r2, #2
+       mov     r3, r3, lsr #8
+       strh    r3, [r8, r2]    @ movhi
+       movw    r3, #3926
+       ldrh    r2, [r4, #26]
+       mov     r4, r8
+       strh    r2, [r8, r3]    @ movhi
+       uxtbhi  r2, r6
+       mul     r3, r6, r5
+       str     r3, [r8, #3860]
+       movhi   r3, #3904
+       strhih  r2, [r8, r3]    @ movhi
+       mov     r3, #3904
+       ldrh    r3, [r8, r3]
+       rsb     r3, r3, r6
+       mov     r6, r6, asl #6
+       mul     r3, r3, r5
+       mul     r3, sl, r3
+       mul     r9, r9, r3
+       movw    r3, #3906
+       mov     r9, r9, asr #11
+       str     r9, [r8, #3928]
+       ldrh    r8, [r8, r3]
+       mov     r0, r8, asl #3
+       mov     r8, r8, asr r7
+       bl      __aeabi_idiv
+       add     r7, r7, #9
+       movw    r3, #3932
+       mov     r6, r6, asr r7
+       add     r8, r8, #2
+       uxth    r6, r6
+       uxth    r0, r0
+       strh    r0, [r4, r3]    @ movhi
+       cmp     r0, #4
+       ldr     r4, .L444
+       ldrls   r2, .L444
+       movls   r1, #4
+       strlsh  r1, [r2, r3]    @ movhi
+       movw    r3, #3934
+       strh    r8, [r4, r3]    @ movhi
+       mov     r3, #3936
+       strh    r6, [r4, r3]    @ movhi
+       mov     r1, r5
+       mul     r3, r5, r6
+       add     r6, r6, #8
+       str     r3, [r4, #3940]
+       movw    r3, #3932
+       ldrh    r0, [r4, r3]
+       bl      __aeabi_uidiv
+       cmp     r5, #1
+       uxtah   r6, r6, r0
+       str     r6, [r4, #3840]
+       addeq   r6, r6, #4
+       streq   r6, [r4, #3840]
+       ldr     r0, [r4, #3840]
+       uxth    r0, r0
+       bl      FtlSysBlkNumInit
+       ldr     r3, [r4, #3840]
+       ldr     r2, [r4, #3856]
+       mov     r0, #2048
+       str     r3, [r4, #3944]
+       movw    r3, #3912
+       ldrh    r3, [r4, r3]
+       mov     r2, r2, asl #2
+       mul     r2, r3, r2
+       mov     r3, #3920
+       ldrh    r3, [r4, r3]
+       add     r3, r3, #9
+       mov     r2, r2, lsr r3
+       movw    r3, #3948
+       add     r2, r2, #2
+       strh    r2, [r4, r3]    @ movhi
+       movw    r3, #3918
+       ldrh    r1, [r4, r3]
+       bl      __aeabi_idiv
+       movw    r3, #3950
+       strh    r0, [r4, r3]    @ movhi
+       mov     r0, #0
+       str     r0, [r4, #3952]
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L445:
+       .align  2
+.L444:
+       .word   .LANCHOR0
+       .word   .LANCHOR0+3870
+       .fnend
+       .size   FtlConstantsInit, .-FtlConstantsInit
+       .align  2
+       .global IsBlkInVendorPart
+       .type   IsBlkInVendorPart, %function
+IsBlkInVendorPart:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L453
+       movw    r2, #3956
+       ldrh    r2, [r3, r2]
+       cmp     r2, #0
+       beq     .L451
+       movw    r2, #3932
+       ldrh    r1, [r3, r2]
+       ldr     r2, [r3, #3960]
+       mov     r3, #0
+       b       .L448
+.L450:
+       ldrh    ip, [r2], #2
+       cmp     ip, r0
+       beq     .L452
+       add     r3, r3, #1
+       uxth    r3, r3
+.L448:
+       cmp     r3, r1
+       bne     .L450
+       mov     r0, #0
+       bx      lr
+.L452:
+       mov     r0, #1
+       bx      lr
+.L451:
+       mov     r0, r2
+       bx      lr
+.L454:
+       .align  2
+.L453:
+       .word   .LANCHOR0
+       .fnend
+       .size   IsBlkInVendorPart, .-IsBlkInVendorPart
+       .align  2
+       .global FtlCacheMetchLpa
+       .type   FtlCacheMetchLpa, %function
+FtlCacheMetchLpa:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r2, .L463
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       ldr     r3, [r2, #3964]
+       cmp     r3, #0
+       beq     .L460
+       ldr     ip, [r2, #3968]
+       mov     r2, #0
+.L459:
+       ldr     r4, [ip, #16]
+       cmp     r4, r0
+       bcc     .L457
+       cmp     r4, r1
+       bls     .L461
+.L457:
+       add     r2, r2, #1
+       add     ip, ip, #36
+       cmp     r2, r3
+       bne     .L459
+       mov     r0, #0
+       ldmfd   sp!, {r4, pc}
+.L461:
+       mov     r0, #1
+       ldmfd   sp!, {r4, pc}
+.L460:
+       mov     r0, r3
+       ldmfd   sp!, {r4, pc}
+.L464:
+       .align  2
+.L463:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlCacheMetchLpa, .-FtlCacheMetchLpa
+       .align  2
+       .global FtlGetCap
+       .type   FtlGetCap, %function
+FtlGetCap:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L466
+       ldr     r0, [r3, #3952]
+       bx      lr
+.L467:
+       .align  2
+.L466:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlGetCap, .-FtlGetCap
+       .align  2
+       .global FtlGetCapacity
+       .type   FtlGetCapacity, %function
+FtlGetCapacity:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L469
+       ldr     r0, [r3, #3952]
+       bx      lr
+.L470:
+       .align  2
+.L469:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlGetCapacity, .-FtlGetCapacity
+       .align  2
+       .global FtlGetLpn
+       .type   FtlGetLpn, %function
+FtlGetLpn:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L472
+       ldr     r0, [r3, #3972]
+       bx      lr
+.L473:
+       .align  2
+.L472:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlGetLpn, .-FtlGetLpn
+       .align  2
+       .global FtlGetCurEraseBlock
+       .type   FtlGetCurEraseBlock, %function
+FtlGetCurEraseBlock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L475
+       movw    r2, #3844
+       ldrh    r2, [r3, r2]
+       ldr     r0, [r3, #3976]
+       mul     r0, r0, r2
+       bx      lr
+.L476:
+       .align  2
+.L475:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlGetCurEraseBlock, .-FtlGetCurEraseBlock
+       .align  2
+       .global FtlGetAllBlockNum
+       .type   FtlGetAllBlockNum, %function
+FtlGetAllBlockNum:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L478
+       movw    r1, #3844
+       movw    r2, #3854
+       ldrh    r2, [r3, r2]
+       ldrh    r0, [r3, r1]
+       mul     r0, r0, r2
+       bx      lr
+.L479:
+       .align  2
+.L478:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlGetAllBlockNum, .-FtlGetAllBlockNum
+       .align  2
+       .global FtlBbmMapBadBlock
+       .type   FtlBbmMapBadBlock, %function
+FtlBbmMapBadBlock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r4, r5, r6, lr}
+       .save {r0, r1, r4, r5, r6, lr}
+       movw    r3, #3908
+       ldr     r4, .L481
+       mov     r5, r0
+       ldrh    r6, [r4, r3]
+       mov     r1, r6
+       bl      __aeabi_uidiv
+       uxth    r2, r0
+       mls     r3, r6, r2, r5
+       add     r1, r4, r2, asl #2
+       mov     r6, #1
+       ldr     r0, [r1, #4008]
+       uxth    r3, r3
+       and     r1, r3, #31
+       mov     ip, r3, lsr #5
+       ldr     lr, [r0, ip, asl #2]
+       orr     r1, lr, r6, asl r1
+       str     r1, [r0, ip, asl #2]
+       str     r1, [sp, #0]
+       mov     r1, r5
+       ldr     r0, .L481+4
+       bl      printk
+       movw    r3, #3986
+       ldrh    r2, [r4, r3]
+       mov     r0, #0
+       add     r2, r2, r6
+       strh    r2, [r4, r3]    @ movhi
+       ldmfd   sp!, {r2, r3, r4, r5, r6, pc}
+.L482:
+       .align  2
+.L481:
+       .word   .LANCHOR0
+       .word   .LC4
+       .fnend
+       .size   FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
+       .global __aeabi_uidivmod
+       .align  2
+       .global FtlBbmIsBadBlock
+       .type   FtlBbmIsBadBlock, %function
+FtlBbmIsBadBlock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       movw    r3, #3908
+       ldr     r5, .L484
+       mov     r7, r0
+       ldrh    r6, [r5, r3]
+       mov     r1, r6
+       bl      __aeabi_uidivmod
+       mov     r0, r7
+       uxth    r4, r1
+       mov     r1, r6
+       bl      __aeabi_uidiv
+       mov     r2, r4, lsr #5
+       and     r4, r4, #31
+       uxth    r0, r0
+       add     r5, r5, r0, asl #2
+       ldr     r3, [r5, #4008]
+       ldr     r0, [r3, r2, asl #2]
+       mov     r0, r0, lsr r4
+       and     r0, r0, #1
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L485:
+       .align  2
+.L484:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
+       .align  2
+       .global FtlBbtInfoPrint
+       .type   FtlBbtInfoPrint, %function
+FtlBbtInfoPrint:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       bx      lr
+       .fnend
+       .size   FtlBbtInfoPrint, .-FtlBbtInfoPrint
+       .align  2
+       .global FtlBbtCalcTotleCnt
+       .type   FtlBbtCalcTotleCnt, %function
+FtlBbtCalcTotleCnt:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, lr}
+       .save {r4, r5, r6, r7, r8, lr}
+       mov     r4, #0
+       mov     r5, r4
+       ldr     r6, .L491
+       movw    r8, #3908
+       movw    r7, #3866
+       b       .L488
+.L490:
+       mov     r0, r5
+       add     r5, r5, #1
+       bl      FtlBbmIsBadBlock
+       uxth    r5, r5
+       cmp     r0, #0
+       addne   r4, r4, #1
+       uxthne  r4, r4
+.L488:
+       ldrh    r3, [r6, r8]
+       ldrh    r2, [r6, r7]
+       mul     r3, r2, r3
+       cmp     r5, r3
+       blt     .L490
+       mov     r0, r4
+       ldmfd   sp!, {r4, r5, r6, r7, r8, pc}
+.L492:
+       .align  2
+.L491:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
+       .align  2
+       .global V2P_block
+       .type   V2P_block, %function
+V2P_block:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       movw    r3, #3868
+       ldr     r5, .L494
+       mov     r7, r1
+       mov     r6, r0
+       ldrh    r4, [r5, r3]
+       mov     r1, r4
+       bl      __aeabi_uidiv
+       movw    r3, #3908
+       ldrh    r5, [r5, r3]
+       mov     r1, r4
+       mul     r7, r4, r7
+       mla     r5, r5, r0, r7
+       mov     r0, r6
+       bl      __aeabi_uidivmod
+       add     r1, r5, r1
+       uxth    r0, r1
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L495:
+       .align  2
+.L494:
+       .word   .LANCHOR0
+       .fnend
+       .size   V2P_block, .-V2P_block
+       .align  2
+       .global P2V_plane
+       .type   P2V_plane, %function
+P2V_plane:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L497
+       movw    r2, #3868
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r6, r0
+       ldrh    r4, [r3, r2]
+       add     r2, r2, #40
+       ldrh    r1, [r3, r2]
+       bl      __aeabi_uidiv
+       mov     r1, r4
+       mul     r5, r0, r4
+       mov     r0, r6
+       bl      __aeabi_uidivmod
+       add     r1, r5, r1
+       uxth    r0, r1
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L498:
+       .align  2
+.L497:
+       .word   .LANCHOR0
+       .fnend
+       .size   P2V_plane, .-P2V_plane
+       .align  2
+       .global P2V_block_in_plane
+       .type   P2V_block_in_plane, %function
+P2V_block_in_plane:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       movw    r3, #3908
+       ldr     r4, .L500
+       ldrh    r1, [r4, r3]
+       bl      __aeabi_uidivmod
+       movw    r3, #3868
+       uxth    r0, r1
+       ldrh    r1, [r4, r3]
+       bl      __aeabi_uidiv
+       uxth    r0, r0
+       ldmfd   sp!, {r4, pc}
+.L501:
+       .align  2
+.L500:
+       .word   .LANCHOR0
+       .fnend
+       .size   P2V_block_in_plane, .-P2V_block_in_plane
+       .align  2
+       .global ftl_cmp_data_ver
+       .type   ftl_cmp_data_ver, %function
+ftl_cmp_data_ver:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       cmp     r0, r1
+       bls     .L503
+       rsb     r0, r1, r0
+       cmp     r0, #-2147483648
+       movhi   r0, #0
+       movls   r0, #1
+       bx      lr
+.L503:
+       rsb     r0, r0, r1
+       cmp     r0, #-2147483648
+       movls   r0, #0
+       movhi   r0, #1
+       bx      lr
+       .fnend
+       .size   ftl_cmp_data_ver, .-ftl_cmp_data_ver
+       .align  2
+       .global FtlFreeSysBlkQueueEmpty
+       .type   FtlFreeSysBlkQueueEmpty, %function
+FtlFreeSysBlkQueueEmpty:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r2, .L506
+       movw    r3, #4046
+       ldrh    r0, [r2, r3]
+       rsbs    r0, r0, #1
+       movcc   r0, #0
+       bx      lr
+.L507:
+       .align  2
+.L506:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
+       .align  2
+       .global FtlFreeSysBlkQueueFull
+       .type   FtlFreeSysBlkQueueFull, %function
+FtlFreeSysBlkQueueFull:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r2, .L509
+       movw    r3, #4046
+       ldrh    r0, [r2, r3]
+       sub     r2, r0, #1024
+       rsbs    r0, r2, #0
+       adc     r0, r0, r2
+       bx      lr
+.L510:
+       .align  2
+.L509:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
+       .align  2
+       .global FtlFreeSysBlkQueueIn
+       .type   FtlFreeSysBlkQueueIn, %function
+FtlFreeSysBlkQueueIn:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r2, .L514
+       movw    r3, #4046
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r5, r0
+       ldrh    r3, [r2, r3]
+       cmp     r3, #1024
+       ldmeqfd sp!, {r4, r5, r6, pc}
+       cmp     r1, #0
+       beq     .L513
+       bl      P2V_block_in_plane
+       ldr     r4, .L514+4
+       mov     r1, #1
+       mov     r3, r5, asl #10
+       mov     r2, r1
+       mov     r6, r0
+       ldr     r0, [r4, #-2088]
+       mov     r6, r6, asl #1
+       str     r3, [r0, #4]
+       bl      FlashEraseBlocks
+       ldr     r3, [r4, #-2084]
+       ldrh    r2, [r3, r6]
+       add     r2, r2, #1
+       strh    r2, [r3, r6]    @ movhi
+       ldr     r3, [r4, #-2080]
+       add     r3, r3, #1
+       str     r3, [r4, #-2080]
+.L513:
+       ldr     r3, .L514
+       movw    r2, #4046
+       movw    r0, #4040
+       ldrh    r1, [r3, r2]
+       add     r1, r1, #1
+       strh    r1, [r3, r2]    @ movhi
+       movw    r2, #4044
+       ldrh    r1, [r3, r2]
+       add     ip, r1, #4
+       add     r1, r1, #1
+       bic     r1, r1, #64512
+       add     ip, r3, ip, asl #1
+       strh    r5, [ip, r0]    @ movhi
+       strh    r1, [r3, r2]    @ movhi
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L515:
+       .align  2
+.L514:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
+       .align  2
+       .global FtlFreeSysBLkSort
+       .type   FtlFreeSysBLkSort, %function
+FtlFreeSysBLkSort:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, lr}
+       mov     r4, #0
+       ldr     r5, .L526
+       movw    r8, #4046
+       movw    r7, #4042
+       ldr     r6, .L526+4
+       b       .L517
+.L518:
+       ldrh    r3, [r5, r7]
+       add     r3, r4, r3
+       add     r3, r5, r3, asl #1
+       add     r3, r3, #4048
+       ldrh    r0, [r3, #0]
+       bl      P2V_block_in_plane
+       ldr     r2, [r6, #-2084]
+       ldr     r3, [r6, #-2076]
+       mov     r0, r0, asl #1
+       ldrh    r2, [r2, r0]
+       str     r2, [r3, r4, asl #2]
+       add     r4, r4, #1
+       uxth    r4, r4
+.L517:
+       ldrh    r3, [r5, r8]
+       cmp     r3, r4
+       bhi     .L518
+       mov     r3, #0
+       ldr     ip, .L526
+       movw    r8, #4046
+       ldr     r4, .L526+4
+       movw    r7, #4042
+       b       .L519
+.L524:
+       add     r6, r3, #1
+       ldr     r1, [r4, #-2076]
+       mov     r2, r3
+       uxth    r6, r6
+       mov     r0, r6
+       b       .L520
+.L522:
+       ldr     r9, [r1, r2, asl #2]
+       ldr     sl, [r1, r0, asl #2]
+       cmp     r9, sl
+       movhi   r2, r0
+       add     r0, r0, #1
+       uxth    r0, r0
+.L520:
+       cmp     r0, r5
+       bcc     .L522
+       cmp     r3, r2
+       beq     .L523
+       ldr     r5, [r1, r3, asl #2]
+       ldr     r0, [r1, r2, asl #2]
+       str     r5, [r1, r2, asl #2]
+       ldr     r1, [r4, #-2076]
+       str     r0, [r1, r3, asl #2]
+       ldrh    r1, [ip, r7]
+       add     r2, r1, r2
+       add     r3, r1, r3
+       add     r2, ip, r2, asl #1
+       add     r3, ip, r3, asl #1
+       add     r2, r2, #4048
+       add     r3, r3, #4048
+       ldrh    r0, [r2, #0]
+       ldrh    r1, [r3, #0]
+       strh    r1, [r2, #0]    @ movhi
+       strh    r0, [r3, #0]    @ movhi
+.L523:
+       mov     r3, r6
+.L519:
+       ldrh    r5, [ip, r8]
+       sub     r2, r5, #1
+       cmp     r3, r2
+       blt     .L524
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+.L527:
+       .align  2
+.L526:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
+       .align  2
+       .global IsInFreeQueue
+       .type   IsInFreeQueue, %function
+IsInFreeQueue:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r2, .L534
+       movw    r3, #4046
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       ldrh    r1, [r2, r3]
+       cmp     r1, #1024
+       beq     .L532
+       movw    r3, #4042
+       ldrh    ip, [r2, r3]
+       mov     r3, #0
+       b       .L530
+.L531:
+       add     r4, r3, ip
+       mov     r4, r4, asl #22
+       add     r4, r2, r4, lsr #21
+       add     r4, r4, #4048
+       ldrh    r4, [r4, #0]
+       cmp     r4, r0
+       beq     .L533
+       add     r3, r3, #1
+.L530:
+       cmp     r3, r1
+       bcc     .L531
+.L532:
+       mov     r0, #0
+       ldmfd   sp!, {r4, pc}
+.L533:
+       mov     r0, #1
+       ldmfd   sp!, {r4, pc}
+.L535:
+       .align  2
+.L534:
+       .word   .LANCHOR0
+       .fnend
+       .size   IsInFreeQueue, .-IsInFreeQueue
+       .align  2
+       .global FtlFreeSysBlkQueueOut
+       .type   FtlFreeSysBlkQueueOut, %function
+FtlFreeSysBlkQueueOut:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L539
+       stmfd   sp!, {r4, r5, lr}
+       .save {r4, r5, lr}
+       movw    r4, #4046
+       ldrh    r2, [r3, r4]
+       cmp     r2, #0
+       beq     .L538
+       movw    r1, #4042
+       movw    r0, #4040
+       ldrh    ip, [r3, r1]
+       sub     r2, r2, #1
+       add     r5, ip, #4
+       add     ip, ip, #1
+       bic     ip, ip, #64512
+       add     r5, r3, r5, asl #1
+       ldrh    r0, [r5, r0]
+       strh    r2, [r3, r4]    @ movhi
+       strh    ip, [r3, r1]    @ movhi
+       ldmfd   sp!, {r4, r5, pc}
+.L538:
+       mov     r0, r2
+       ldmfd   sp!, {r4, r5, pc}
+.L540:
+       .align  2
+.L539:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
+       .align  2
+       .global insert_data_list
+       .type   insert_data_list, %function
+insert_data_list:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       movw    r3, #65535
+       cmp     r0, r3
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       beq     .L542
+       ldr     r1, .L556
+       mov     ip, #6
+       mul     ip, ip, r0
+       mvn     r6, #0
+       ldr     r4, [r1, #-2072]
+       mov     r8, r1
+       add     r2, r4, ip
+       strh    r6, [r2, #2]    @ movhi
+       strh    r6, [r4, ip]    @ movhi
+       ldr     r3, [r1, #-2068]
+       cmp     r3, #0
+       beq     .L555
+.L543:
+       ldr     r7, [r1, #-2064]
+       mov     sl, r0, asl #1
+       ldrh    r1, [r2, #4]
+       ldr     r9, .L556+4
+       ldrh    r5, [r7, sl]
+       cmp     r1, #0
+       ldr     fp, [r8, #-2084]
+       mulne   r6, r1, r5
+       ldr     r5, [r8, #-2072]
+       add     sl, fp, sl
+       str     sl, [sp, #4]
+       rsb     r1, r5, r3
+       mov     r1, r1, asr #1
+       mul     r1, r9, r1
+       uxth    r1, r1
+.L550:
+       mov     r9, r1, asl #1
+       ldrh    r8, [r3, #4]
+       ldrh    sl, [r7, r9]
+       cmp     r8, #0
+       mvneq   r8, #0
+       mulne   r8, r8, sl
+       cmp     r8, r6
+       bne     .L546
+       ldrh    sl, [fp, r9]
+       ldr     r9, [sp, #4]
+       ldrh    r8, [r9, #0]
+       cmp     sl, r8
+       bcc     .L548
+       b       .L547
+.L546:
+       bhi     .L547
+.L548:
+       ldrh    r8, [r3, #0]
+       movw    sl, #65535
+       cmp     r8, sl
+       streqh  r1, [r2, #2]    @ movhi
+       streqh  r0, [r3, #0]    @ movhi
+       ldreq   r3, .L556
+       streq   r2, [r3, #-2060]
+       beq     .L542
+.L549:
+       mov     r1, #6
+       mla     r3, r1, r8, r5
+       mov     r1, r8
+       b       .L550
+.L547:
+       strh    r1, [r4, ip]    @ movhi
+       ldrh    r1, [r3, #2]
+       strh    r1, [r2, #2]    @ movhi
+       ldr     r1, .L556
+       ldr     ip, [r1, #-2068]
+       cmp     r3, ip
+       bne     .L551
+       strh    r0, [r3, #2]    @ movhi
+.L555:
+       str     r2, [r1, #-2068]
+       b       .L542
+.L551:
+       ldrh    r2, [r3, #2]
+       mov     ip, #6
+       ldr     r1, [r1, #-2072]
+       mul     r2, ip, r2
+       strh    r0, [r1, r2]    @ movhi
+       strh    r0, [r3, #2]    @ movhi
+.L542:
+       mov     r0, #0
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L557:
+       .align  2
+.L556:
+       .word   .LANCHOR2
+       .word   -1431655765
+       .fnend
+       .size   insert_data_list, .-insert_data_list
+       .align  2
+       .global INSERT_DATA_LIST
+       .type   INSERT_DATA_LIST, %function
+INSERT_DATA_LIST:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       bl      insert_data_list
+       ldr     r2, .L559
+       ldr     r3, .L559+4
+       ldrh    r1, [r2, r3]
+       add     r1, r1, #1
+       strh    r1, [r2, r3]    @ movhi
+       ldmfd   sp!, {r3, pc}
+.L560:
+       .align  2
+.L559:
+       .word   .LANCHOR2
+       .word   -2056
+       .fnend
+       .size   INSERT_DATA_LIST, .-INSERT_DATA_LIST
+       .align  2
+       .global insert_free_list
+       .type   insert_free_list, %function
+insert_free_list:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, lr}
+       movw    r6, #65535
+       cmp     r0, r6
+       beq     .L562
+       ldr     r1, .L569
+       mov     r5, #6
+       mul     ip, r5, r0
+       mvn     r3, #0
+       ldr     r4, [r1, #-2072]
+       add     r2, r4, ip
+       strh    r3, [r2, #2]    @ movhi
+       strh    r3, [r4, ip]    @ movhi
+       ldr     r3, [r1, #-2052]
+       cmp     r3, #0
+       beq     .L568
+.L563:
+       ldr     sl, [r1, #-2072]
+       mov     r8, r0, asl #1
+       ldr     r7, [r1, #-2084]
+       rsb     r1, sl, r3
+       ldr     r9, .L569+4
+       mov     r1, r1, asr #1
+       ldrh    r8, [r7, r8]
+       mul     r1, r9, r1
+       mov     r9, r5
+       uxth    r1, r1
+.L566:
+       mov     r5, r1, asl #1
+       ldrh    r5, [r7, r5]
+       cmp     r5, r8
+       bcs     .L564
+       ldrh    r5, [r3, #0]
+       cmp     r5, r6
+       streqh  r1, [r2, #2]    @ movhi
+       streqh  r0, [r3, #0]    @ movhi
+       beq     .L562
+.L565:
+       mla     r3, r9, r5, sl
+       mov     r1, r5
+       b       .L566
+.L564:
+       ldrh    r5, [r3, #2]
+       strh    r5, [r2, #2]    @ movhi
+       strh    r1, [r4, ip]    @ movhi
+       ldr     r1, .L569
+       ldr     ip, [r1, #-2052]
+       cmp     r3, ip
+       bne     .L567
+       strh    r0, [r3, #2]    @ movhi
+.L568:
+       str     r2, [r1, #-2052]
+       b       .L562
+.L567:
+       ldrh    r2, [r3, #2]
+       mov     ip, #6
+       ldr     r1, [r1, #-2072]
+       mul     r2, ip, r2
+       strh    r0, [r1, r2]    @ movhi
+       strh    r0, [r3, #2]    @ movhi
+.L562:
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+.L570:
+       .align  2
+.L569:
+       .word   .LANCHOR2
+       .word   -1431655765
+       .fnend
+       .size   insert_free_list, .-insert_free_list
+       .align  2
+       .global INSERT_FREE_LIST
+       .type   INSERT_FREE_LIST, %function
+INSERT_FREE_LIST:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       bl      insert_free_list
+       ldr     r2, .L572
+       ldr     r3, .L572+4
+       ldrh    r1, [r2, r3]
+       add     r1, r1, #1
+       strh    r1, [r2, r3]    @ movhi
+       ldmfd   sp!, {r3, pc}
+.L573:
+       .align  2
+.L572:
+       .word   .LANCHOR2
+       .word   -2048
+       .fnend
+       .size   INSERT_FREE_LIST, .-INSERT_FREE_LIST
+       .align  2
+       .global List_remove_node
+       .type   List_remove_node, %function
+List_remove_node:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     ip, .L579
+       mov     r2, #6
+       mul     r1, r2, r1
+       ldr     r3, [ip, #-2072]
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       add     r4, r3, r1
+       ldr     r5, [r0, #0]
+       movw    r6, #65535
+       cmp     r4, r5
+       ldrh    r5, [r3, r1]
+       bne     .L575
+       cmp     r5, r6
+       mlane   r2, r2, r5, r3
+       moveq   r2, #0
+       streq   r2, [r0, #0]
+       strne   r2, [r0, #0]
+       mvnne   r0, #0
+       strneh  r0, [r2, #2]    @ movhi
+       b       .L577
+.L575:
+       cmp     r5, r6
+       ldrh    r0, [r4, #2]
+       mlane   r5, r2, r5, r3
+       muleq   r2, r2, r0
+       mvneq   r0, #0
+       strneh  r0, [r5, #2]    @ movhi
+       ldrneh  r6, [r4, #2]
+       ldrneh  r5, [r3, r1]
+       ldrne   r0, [ip, #-2072]
+       mulne   r2, r2, r6
+       streqh  r0, [r3, r2]    @ movhi
+       strneh  r5, [r0, r2]    @ movhi
+.L577:
+       mvn     r2, #0
+       mov     r0, #0
+       strh    r2, [r3, r1]    @ movhi
+       strh    r2, [r4, #2]    @ movhi
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L580:
+       .align  2
+.L579:
+       .word   .LANCHOR2
+       .fnend
+       .size   List_remove_node, .-List_remove_node
+       .align  2
+       .global List_pop_index_node
+       .type   List_pop_index_node, %function
+List_pop_index_node:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       ldr     r3, [r0, #0]
+       cmp     r3, #0
+       beq     .L586
+       ldr     r2, .L587
+       movw    lr, #65535
+       mov     ip, #6
+       ldr     r4, [r2, #-2072]
+       b       .L583
+.L585:
+       mla     r3, ip, r2, r4
+       sub     r1, r1, #1
+       uxth    r1, r1
+.L583:
+       cmp     r1, #0
+       beq     .L584
+       ldrh    r2, [r3, #0]
+       cmp     r2, lr
+       bne     .L585
+.L584:
+       rsb     r4, r4, r3
+       ldr     r3, .L587+4
+       mov     r4, r4, asr #1
+       mul     r4, r3, r4
+       uxth    r4, r4
+       mov     r1, r4
+       bl      List_remove_node
+       mov     r0, r4
+       ldmfd   sp!, {r4, pc}
+.L586:
+       movw    r0, #65535
+       ldmfd   sp!, {r4, pc}
+.L588:
+       .align  2
+.L587:
+       .word   .LANCHOR2
+       .word   -1431655765
+       .fnend
+       .size   List_pop_index_node, .-List_pop_index_node
+       .align  2
+       .global List_pop_head_node
+       .type   List_pop_head_node, %function
+List_pop_head_node:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       mov     r1, #0
+       b       List_pop_index_node
+       .fnend
+       .size   List_pop_head_node, .-List_pop_head_node
+       .align  2
+       .global List_get_gc_head_node
+       .type   List_get_gc_head_node, %function
+List_get_gc_head_node:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r2, .L596
+       ldr     r3, [r2, #-2068]
+       cmp     r3, #0
+       beq     .L595
+       ldr     r2, [r2, #-2072]
+       movw    r1, #65535
+       mov     ip, #6
+       b       .L592
+.L594:
+       mla     r3, ip, r3, r2
+       sub     r0, r0, #1
+       uxth    r0, r0
+.L592:
+       cmp     r0, #0
+       beq     .L593
+       ldrh    r3, [r3, #0]
+       cmp     r3, r1
+       bne     .L594
+       mov     r0, r1
+       bx      lr
+.L593:
+       rsb     r3, r2, r3
+       ldr     r0, .L596+4
+       mov     r3, r3, asr #1
+       mul     r0, r0, r3
+       uxth    r0, r0
+       bx      lr
+.L595:
+       movw    r0, #65535
+       bx      lr
+.L597:
+       .align  2
+.L596:
+       .word   .LANCHOR2
+       .word   -1431655765
+       .fnend
+       .size   List_get_gc_head_node, .-List_get_gc_head_node
+       .align  2
+       .global List_update_data_list
+       .type   List_update_data_list, %function
+List_update_data_list:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r5, r0
+       ldr     r4, .L604
+       ldr     r3, .L604+4
+       ldrh    r3, [r4, r3]
+       cmp     r3, r0
+       beq     .L599
+       ldr     r3, .L604+8
+       ldrh    r3, [r4, r3]
+       cmp     r3, r0
+       beq     .L599
+       ldr     r3, .L604+12
+       ldrh    r3, [r4, r3]
+       cmp     r3, r0
+       beq     .L599
+       ldr     r3, [r4, #-2072]
+       mov     ip, #6
+       ldr     r2, [r4, #-2068]
+       mla     r1, ip, r0, r3
+       cmp     r1, r2
+       beq     .L599
+       ldrh    r6, [r1, #4]
+       mov     r2, r5, asl #1
+       ldrh    r1, [r1, #2]
+       ldr     r0, [r4, #-2064]
+       mla     r1, ip, r1, r3
+       ldr     ip, .L604+16
+       ldrh    r2, [r0, r2]
+       muls    r2, r6, r2
+       mvneq   r2, #0
+       rsb     r3, r3, r1
+       mov     r3, r3, asr #1
+       ldrh    r1, [r1, #4]
+       mul     r3, ip, r3
+       uxth    r3, r3
+       mov     r3, r3, asl #1
+       ldrh    r3, [r0, r3]
+       muls    r3, r1, r3
+       mvneq   r3, #0
+       cmp     r2, r3
+       bcs     .L599
+       ldr     r0, .L604+20
+       mov     r1, r5
+       bl      List_remove_node
+       ldr     r3, .L604+24
+       mov     r0, r5
+       ldrh    r2, [r4, r3]
+       sub     r2, r2, #1
+       strh    r2, [r4, r3]    @ movhi
+       bl      INSERT_DATA_LIST
+.L599:
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L605:
+       .align  2
+.L604:
+       .word   .LANCHOR2
+       .word   -2044
+       .word   -1996
+       .word   -1948
+       .word   -1431655765
+       .word   .LANCHOR2-2068
+       .word   -2056
+       .fnend
+       .size   List_update_data_list, .-List_update_data_list
+       .align  2
+       .global ftl_map_blk_alloc_new_blk
+       .type   ftl_map_blk_alloc_new_blk, %function
+ftl_map_blk_alloc_new_blk:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       mov     r4, r0
+       ldrh    r2, [r0, #10]
+       mov     r5, #0
+       ldr     r3, [r0, #12]
+       b       .L607
+.L610:
+       mov     r7, r3
+       add     r3, r3, #2
+       ldrh    r6, [r7, #0]
+       cmp     r6, #0
+       bne     .L608
+       bl      FtlFreeSysBlkQueueOut
+       cmp     r0, #0
+       strh    r0, [r7, #0]    @ movhi
+       beq     .L609
+       ldr     r3, [r4, #28]
+       strh    r6, [r4, #2]    @ movhi
+       add     r3, r3, #1
+       str     r3, [r4, #28]
+       ldrh    r3, [r4, #8]
+       strh    r5, [r4, #0]    @ movhi
+       add     r3, r3, #1
+       strh    r3, [r4, #8]    @ movhi
+       b       .L609
+.L608:
+       add     r5, r5, #1
+       uxth    r5, r5
+.L607:
+       cmp     r5, r2
+       bne     .L610
+.L609:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+       .fnend
+       .size   ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
+       .align  2
+       .global select_l2p_ram_region
+       .type   select_l2p_ram_region, %function
+select_l2p_ram_region:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r2, .L623
+       movw    r3, #3950
+       stmfd   sp!, {r4, r5, r6, r7, lr}
+       .save {r4, r5, r6, r7, lr}
+       movw    r1, #65535
+       ldrh    r3, [r2, r3]
+       ldr     r2, .L623+4
+       ldr     ip, [r2, #-1900]
+       mov     r2, #0
+       mov     r0, r2
+       b       .L612
+.L614:
+       add     r2, r2, #12
+       add     r4, ip, r2
+       ldrh    r4, [r4, #-12]
+       cmp     r4, r1
+       ldmeqfd sp!, {r4, r5, r6, r7, pc}
+       add     r0, r0, #1
+       uxth    r0, r0
+.L612:
+       cmp     r0, r3
+       bne     .L614
+       mov     r1, #0
+       mov     r0, r3
+       mov     r5, #-2147483648
+       mov     r2, r1
+       b       .L615
+.L617:
+       add     r4, ip, r1
+       ldr     r4, [r4, #4]
+       cmp     r4, #0
+       blt     .L616
+       cmp     r4, r5
+       movcc   r5, r4
+       movcc   r0, r2
+.L616:
+       add     r2, r2, #1
+       add     r1, r1, #12
+       uxth    r2, r2
+.L615:
+       cmp     r2, r3
+       bne     .L617
+       cmp     r0, r3
+       ldmccfd sp!, {r4, r5, r6, r7, pc}
+       ldr     r2, .L623+8
+       mov     r0, r3
+       ldr     r1, .L623+4
+       mvn     r4, #0
+       ldrh    r6, [r1, r2]
+       mov     r2, #0
+       mov     r1, r2
+       b       .L618
+.L620:
+       add     r5, ip, r2
+       ldr     r5, [r5, #4]
+       cmp     r5, r4
+       bcs     .L619
+       ldrh    r7, [ip, r2]
+       cmp     r7, r6
+       movne   r4, r5
+       movne   r0, r1
+.L619:
+       add     r1, r1, #1
+       add     r2, r2, #12
+       uxth    r1, r1
+.L618:
+       cmp     r1, r3
+       bne     .L620
+       ldmfd   sp!, {r4, r5, r6, r7, pc}
+.L624:
+       .align  2
+.L623:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   -1896
+       .fnend
+       .size   select_l2p_ram_region, .-select_l2p_ram_region
+       .align  2
+       .global FtlUpdateVaildLpn
+       .type   FtlUpdateVaildLpn, %function
+FtlUpdateVaildLpn:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L631
+       ldr     r2, .L631+4
+       stmfd   sp!, {r4, r5, lr}
+       .save {r4, r5, lr}
+       ldrh    r1, [r2, r3]
+       cmp     r1, #4
+       add     ip, r1, #1
+       mov     r1, r3
+       strh    ip, [r2, r3]    @ movhi
+       bhi     .L626
+       cmp     r0, #0
+       ldmeqfd sp!, {r4, r5, pc}
+.L626:
+       ldr     r0, .L631+8
+       mov     r3, #0
+       strh    r3, [r2, r1]    @ movhi
+       movw    r1, #3852
+       str     r3, [r2, #-1892]
+       movw    ip, #65535
+       ldrh    r4, [r0, r1]
+       ldr     r1, [r2, #-2064]
+       ldr     r2, .L631+4
+       b       .L628
+.L630:
+       ldrh    r0, [r1], #2
+       add     r3, r3, #1
+       cmp     r0, ip
+       uxth    r3, r3
+       ldrne   r5, [r2, #-1892]
+       addne   r0, r0, r5
+       strne   r0, [r2, #-1892]
+.L628:
+       cmp     r3, r4
+       bne     .L630
+       ldmfd   sp!, {r4, r5, pc}
+.L632:
+       .align  2
+.L631:
+       .word   -1894
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
+       .align  2
+       .global ftl_set_blk_mode
+       .type   ftl_set_blk_mode, %function
+ftl_set_blk_mode:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L637
+       mov     r2, r0, lsr #5
+       cmp     r1, #0
+       and     r0, r0, #31
+       uxth    r2, r2
+       mov     ip, #1
+       ldr     r3, [r3, #-1888]
+       ldr     r1, [r3, r2, asl #2]
+       orrne   r0, r1, ip, asl r0
+       biceq   r0, r1, ip, asl r0
+       str     r0, [r3, r2, asl #2]
+       bx      lr
+.L638:
+       .align  2
+.L637:
+       .word   .LANCHOR2
+       .fnend
+       .size   ftl_set_blk_mode, .-ftl_set_blk_mode
+       .align  2
+       .global ftl_get_blk_mode
+       .type   ftl_get_blk_mode, %function
+ftl_get_blk_mode:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L640
+       mov     r2, r0, lsr #5
+       and     r0, r0, #31
+       ldr     r3, [r3, #-1888]
+       ldr     r3, [r3, r2, asl #2]
+       mov     r0, r3, lsr r0
+       and     r0, r0, #1
+       bx      lr
+.L641:
+       .align  2
+.L640:
+       .word   .LANCHOR2
+       .fnend
+       .size   ftl_get_blk_mode, .-ftl_get_blk_mode
+       .align  2
+       .global ftl_sb_update_avl_pages
+       .type   ftl_sb_update_avl_pages, %function
+ftl_sb_update_avl_pages:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     ip, .L649
+       mov     r3, #0
+       strh    r3, [r0, #4]    @ movhi
+       movw    r3, #3844
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       ldrh    r3, [ip, r3]
+       movw    ip, #65535
+       b       .L643
+.L645:
+       add     r4, r0, r2, asl #1
+       add     r2, r2, #1
+       ldrh    r4, [r4, #16]
+       uxth    r2, r2
+       cmp     r4, ip
+       ldrneh  r4, [r0, #4]
+       addne   r4, r4, #1
+       strneh  r4, [r0, #4]    @ movhi
+.L643:
+       cmp     r2, r3
+       bcc     .L645
+       ldr     ip, .L649
+       movw    r2, #3912
+       movw    r4, #65535
+       mvn     r1, r1
+       ldrh    r5, [ip, r2]
+       mov     ip, r0
+       mov     r2, #0
+       b       .L646
+.L648:
+       ldrh    r6, [ip, #16]
+       add     r2, r2, #1
+       add     ip, ip, #2
+       cmp     r6, r4
+       uxth    r2, r2
+       ldrneh  r6, [r0, #4]
+       addne   r6, r5, r6
+       addne   r6, r6, r1
+       strneh  r6, [r0, #4]    @ movhi
+.L646:
+       cmp     r2, r3
+       bne     .L648
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L650:
+       .align  2
+.L649:
+       .word   .LANCHOR0
+       .fnend
+       .size   ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
+       .align  2
+       .global make_superblock
+       .type   make_superblock, %function
+make_superblock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, lr}
+       mov     r4, r0
+       mov     r5, #0
+       ldr     r6, .L656
+       strh    r5, [r0, #4]    @ movhi
+       movw    r8, #3844
+       strb    r5, [r4, #7]
+       mvn     r7, #0
+       b       .L652
+.L654:
+       add     r3, r6, r5
+       ldrh    r1, [r4, #0]
+       add     sl, r5, #8
+       add     r5, r5, #1
+       ldrb    r0, [r3, #3870] @ zero_extendqisi2
+       bl      V2P_block
+       mov     sl, sl, asl #1
+       uxth    r5, r5
+       strh    r7, [r4, sl]    @ movhi
+       mov     r9, r0
+       bl      FtlBbmIsBadBlock
+       cmp     r0, #0
+       streqh  r9, [r4, sl]    @ movhi
+       ldreqb  r3, [r4, #7]    @ zero_extendqisi2
+       addeq   r3, r3, #1
+       streqb  r3, [r4, #7]
+.L652:
+       ldrh    r3, [r6, r8]
+       cmp     r3, r5
+       bhi     .L654
+       ldr     r1, .L656
+       movw    r2, #3912
+       ldrb    r3, [r4, #7]    @ zero_extendqisi2
+       ldrh    r2, [r1, r2]
+       mul     r3, r2, r3
+       strh    r3, [r4, #4]    @ movhi
+       mov     r3, #0
+       strb    r3, [r4, #9]
+       ldr     r3, .L656+4
+       ldr     r2, [r3, #-1884]
+       cmp     r2, #0
+       beq     .L655
+       ldrh    r1, [r4, #0]
+       ldr     r2, [r3, #-2084]
+       mov     r3, r1, asl #1
+       ldrh    r3, [r2, r3]
+       cmp     r3, #59
+       movls   r3, #1
+       strlsb  r3, [r4, #9]
+.L655:
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+.L657:
+       .align  2
+.L656:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   make_superblock, .-make_superblock
+       .align  2
+       .global update_multiplier_value
+       .type   update_multiplier_value, %function
+update_multiplier_value:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
+       .save {r3, r4, r5, r6, r7, r8, sl, lr}
+       mov     r4, #0
+       mov     r7, r0
+       mov     r5, r4
+       ldr     r6, .L663
+       movw    sl, #3844
+       movw    r8, #3912
+       b       .L659
+.L661:
+       add     r3, r6, r5
+       mov     r1, r7
+       add     r5, r5, #1
+       ldrb    r0, [r3, #3870] @ zero_extendqisi2
+       bl      V2P_block
+       uxth    r5, r5
+       bl      FtlBbmIsBadBlock
+       cmp     r0, #0
+       ldreqh  r3, [r6, r8]
+       addeq   r4, r4, r3
+       uxtheq  r4, r4
+.L659:
+       ldrh    r3, [r6, sl]
+       cmp     r3, r5
+       bhi     .L661
+       cmp     r4, #0
+       beq     .L662
+       mov     r1, r4
+       mov     r0, #32768
+       bl      __aeabi_idiv
+       uxth    r4, r0
+.L662:
+       ldr     r3, .L663+4
+       mov     r2, #6
+       mov     r0, #0
+       ldr     r3, [r3, #-2072]
+       mla     r7, r2, r7, r3
+       strh    r4, [r7, #4]    @ movhi
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, pc}
+.L664:
+       .align  2
+.L663:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   update_multiplier_value, .-update_multiplier_value
+       .align  2
+       .global GetFreeBlockMinEraseCount
+       .type   GetFreeBlockMinEraseCount, %function
+GetFreeBlockMinEraseCount:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L668
+       ldr     r0, [r3, #-2052]
+       cmp     r0, #0
+       bxeq    lr
+       ldr     r2, [r3, #-2072]
+       rsb     r0, r2, r0
+       ldr     r2, .L668+4
+       mov     r0, r0, asr #1
+       mul     r0, r2, r0
+       ldr     r2, [r3, #-2084]
+       uxth    r0, r0
+       mov     r3, r0, asl #1
+       ldrh    r0, [r2, r3]
+       bx      lr
+.L669:
+       .align  2
+.L668:
+       .word   .LANCHOR2
+       .word   -1431655765
+       .fnend
+       .size   GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
+       .align  2
+       .global GetFreeBlockMaxEraseCount
+       .type   GetFreeBlockMaxEraseCount, %function
+GetFreeBlockMaxEraseCount:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r2, .L677
+       stmfd   sp!, {r4, r5, lr}
+       .save {r4, r5, lr}
+       ldr     r3, [r2, #-2052]
+       cmp     r3, #0
+       beq     .L676
+       ldr     r1, .L677+4
+       mov     ip, #7
+       mov     r5, #6
+       movw    r4, #65535
+       ldrh    r1, [r2, r1]
+       mul     r1, ip, r1
+       mov     r1, r1, asr #3
+       cmp     r0, r1
+       uxthgt  r0, r1
+       ldr     r1, [r2, #-2072]
+       ldr     r2, .L677+8
+       rsb     r3, r1, r3
+       mov     r3, r3, asr #1
+       mul     r3, r2, r3
+       mov     r2, #0
+       uxth    r3, r3
+       b       .L673
+.L675:
+       mul     ip, r5, r3
+       ldrh    ip, [r1, ip]
+       cmp     ip, r4
+       beq     .L674
+       add     r2, r2, #1
+       mov     r3, ip
+       uxth    r2, r2
+.L673:
+       cmp     r2, r0
+       bne     .L675
+.L674:
+       ldr     r2, .L677
+       mov     r3, r3, asl #1
+       ldr     r2, [r2, #-2084]
+       ldrh    r0, [r2, r3]
+       ldmfd   sp!, {r4, r5, pc}
+.L676:
+       mov     r0, r3
+       ldmfd   sp!, {r4, r5, pc}
+.L678:
+       .align  2
+.L677:
+       .word   .LANCHOR2
+       .word   -2048
+       .word   -1431655765
+       .fnend
+       .size   GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
+       .align  2
+       .global FtlPrintInfo2buf
+       .type   FtlPrintInfo2buf, %function
+FtlPrintInfo2buf:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 16
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, lr}
+       mov     r8, r0
+       ldr     r6, .L689
+       add     r5, r8, #12
+       .pad #32
+       sub     sp, sp, #32
+       ldr     r1, .L689+4
+       bl      strcpy
+       mov     r0, r5
+       ldr     r1, .L689+8
+       ldr     r2, [r6, #2200]
+       bl      sprintf
+       ldr     r1, .L689+12
+       ldr     r2, [r6, #3928]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+16
+       ldr     r3, [r3, #2960]
+       cmp     r3, #1
+       add     r5, r5, r0
+       bne     .L685
+.L680:
+       add     r0, sp, #16
+       add     r1, sp, #20
+       add     r2, sp, #24
+       add     r3, sp, #28
+       bl      NandcGetTimeCfg
+       ldr     r3, [sp, #24]
+       ldr     r2, [sp, #16]
+       mov     r0, r5
+       ldr     r1, .L689+20
+       str     r3, [sp, #0]
+       ldr     r3, [sp, #28]
+       ldr     r4, .L689+24
+       ldr     r7, .L689+28
+       str     r3, [sp, #4]
+       ldr     r3, [sp, #20]
+       bl      sprintf
+       ldr     r1, .L689+32
+       add     r5, r5, r0
+       mov     r0, r5
+       add     r5, r5, #10
+       bl      strcpy
+       ldr     r2, [r6, #3972]
+       mov     r0, r5
+       ldr     r1, .L689+36
+       bl      sprintf
+       ldr     r1, .L689+40
+       ldr     r2, [r4, #-1892]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+44
+       ldr     r2, [r4, #-1880]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+48
+       ldr     r2, [r4, #-1876]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+52
+       ldr     r2, [r4, #-1872]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+56
+       ldr     r2, [r4, #-1868]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+60
+       ldr     r2, [r4, #-1864]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+64
+       ldr     r2, [r4, #-1860]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r2, [r4, #-1856]
+       ldr     r1, .L689+68
+       mov     r2, r2, lsr #11
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r2, [r4, #-1852]
+       ldr     r1, .L689+72
+       mov     r2, r2, lsr #11
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+76
+       ldr     r2, [r4, #-1848]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+80
+       ldr     r2, [r4, #-1844]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       add     r5, r5, r0
+       bl      FtlBbtCalcTotleCnt
+       movw    r2, #3986
+       ldr     r1, .L689+84
+       ldrh    r2, [r6, r2]
+       mov     r3, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+88
+       ldrh    r2, [r4, r7]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+92
+       ldr     r2, [r4, #-1840]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+96
+       ldr     r2, [r4, #-1836]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+100
+       ldr     r2, [r4, #-1832]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+104
+       ldr     r2, [r4, #-2080]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+108
+       ldr     r2, [r4, #-1828]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+112
+       ldr     r2, [r4, #-1824]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+116
+       ldr     r1, .L689+120
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+124
+       ldr     r1, .L689+128
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r2, [r6, #3952]
+       ldr     r1, .L689+132
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r2, [r6, #3944]
+       ldr     r1, .L689+136
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r2, [r6, #3840]
+       ldr     r1, .L689+140
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       movw    r3, #4046
+       ldrh    r2, [r6, r3]
+       ldr     r1, .L689+144
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       movw    r3, #3852
+       ldrh    r2, [r6, r3]
+       ldr     r1, .L689+148
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+152
+       ldr     r1, .L689+156
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r2, [r6, #3856]
+       ldr     r1, .L689+160
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+164
+       ldr     r1, .L689+168
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       movw    r3, #3980
+       ldrh    r2, [r6, r3]
+       ldr     r1, .L689+172
+       ldr     r6, .L689+176
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+180
+       ldr     r1, .L689+184
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+188
+       ldrb    r2, [r4, #-2038]        @ zero_extendqisi2
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldrh    r2, [r4, r6]
+       ldr     r1, .L689+192
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+196
+       ldrb    r2, [r4, #-2036]        @ zero_extendqisi2
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+200
+       ldr     r1, .L689+204
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldrh    r3, [r4, r6]
+       ldr     r2, [r4, #-2064]
+       add     r6, r6, #48
+       ldr     r1, .L689+208
+       mov     r3, r3, asl #1
+       ldrh    r2, [r2, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+212
+       ldr     r1, .L689+216
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+220
+       ldrb    r2, [r4, #-1990]        @ zero_extendqisi2
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldrh    r2, [r4, r6]
+       ldr     r1, .L689+224
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+228
+       ldrb    r2, [r4, #-1988]        @ zero_extendqisi2
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+232
+       ldr     r1, .L689+236
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldrh    r3, [r4, r6]
+       ldr     r2, [r4, #-2064]
+       add     r6, r6, #240
+       ldr     r1, .L689+240
+       mov     r3, r3, asl #1
+       ldrh    r2, [r2, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+244
+       ldr     r1, .L689+248
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+252
+       ldrb    r2, [r4, #-1942]        @ zero_extendqisi2
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+256
+       ldr     r1, .L689+260
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+264
+       ldrb    r2, [r4, #-1940]        @ zero_extendqisi2
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+268
+       ldr     r1, .L689+272
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+276
+       ldr     r1, .L689+280
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+284
+       ldrb    r2, [r4, #-1750]        @ zero_extendqisi2
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+288
+       ldrh    r2, [r4, r6]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+292
+       ldrb    r2, [r4, #-1748]        @ zero_extendqisi2
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+296
+       ldr     r1, .L689+300
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, [r4, #-1620]
+       ldr     r3, [r4, #-1884]
+       ldr     r2, [r4, #-1708]
+       str     r1, [sp, #0]
+       ldr     r1, [r4, #-1628]
+       orr     r2, r3, r2, asl #8
+       str     r1, [sp, #4]
+       ldr     r1, .L689+304
+       ldr     r3, [r4, #-1624]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+308
+       ldr     r2, [r4, #-1632]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+312
+       ldr     r2, [r4, #-1608]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+316
+       ldr     r1, .L689+320
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+324
+       ldr     r1, .L689+328
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r1, .L689+332
+       ldr     r2, [r4, #-1188]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       ldr     r3, .L689+336
+       ldr     r1, .L689+340
+       ldrh    r2, [r4, r3]
+       add     r5, r5, r0
+       mov     r0, r5
+       bl      sprintf
+       add     r5, r5, r0
+       bl      GetFreeBlockMinEraseCount
+       ldr     r1, .L689+344
+       mov     r2, r0
+       mov     r0, r5
+       bl      sprintf
+       add     r5, r5, r0
+       ldrh    r0, [r4, r7]
+       bl      GetFreeBlockMaxEraseCount
+       ldr     r1, .L689+348
+       mov     r2, r0
+       mov     r0, r5
+       bl      sprintf
+       ldrh    r3, [r4, r6]
+       movw    r2, #65535
+       cmp     r3, r2
+       add     r5, r5, r0
+       beq     .L682
+       ldr     r2, [r4, #-2064]
+       mov     r3, r3, asl #1
+       mov     r0, r5
+       ldr     r1, .L689+352
+       ldrh    r2, [r2, r3]
+       bl      sprintf
+       add     r5, r5, r0
+.L682:
+       mov     r0, #0
+       ldr     r4, .L689+24
+       bl      List_get_gc_head_node
+       mov     r6, #0
+       movw    sl, #65535
+       mov     r9, #6
+       uxth    r3, r0
+.L684:
+       cmp     r3, sl
+       beq     .L683
+       ldr     r1, [r4, #-2064]
+       mov     r2, r3, asl #1
+       mul     r7, r9, r3
+       mov     r0, r5
+       ldrh    r1, [r1, r2]
+       str     r1, [sp, #0]
+       ldr     r1, [r4, #-2072]
+       add     r1, r1, r7
+       ldrh    r1, [r1, #4]
+       str     r1, [sp, #4]
+       ldr     r1, [r4, #-2084]
+       ldrh    r2, [r1, r2]
+       ldr     r1, .L689+356
+       str     r2, [sp, #8]
+       mov     r2, r6
+       bl      sprintf
+       add     r6, r6, #1
+       ldr     r3, [r4, #-2072]
+       cmp     r6, #16
+       ldrh    r3, [r3, r7]
+       add     r5, r5, r0
+       bne     .L684
+.L683:
+       ldr     r6, .L689+24
+       mov     r4, #0
+       movw    sl, #65535
+       mov     r9, #6
+       ldr     r2, [r6, #-2052]
+       ldr     r3, [r6, #-2072]
+       rsb     r3, r3, r2
+       ldr     r2, .L689+360
+       mov     r3, r3, asr #1
+       mul     r3, r2, r3
+       uxth    r3, r3
+.L686:
+       cmp     r3, sl
+       beq     .L685
+       mul     r7, r9, r3
+       ldr     r2, [r6, #-2072]
+       mov     r0, r5
+       add     r2, r2, r7
+       ldrh    r2, [r2, #4]
+       str     r2, [sp, #0]
+       mov     r2, r3, asl #1
+       ldr     r1, [r6, #-2084]
+       ldrh    r2, [r1, r2]
+       ldr     r1, .L689+364
+       str     r2, [sp, #4]
+       mov     r2, r4
+       bl      sprintf
+       add     r4, r4, #1
+       ldr     r3, [r6, #-2072]
+       cmp     r4, #4
+       ldrh    r3, [r3, r7]
+       add     r5, r5, r0
+       bne     .L686
+.L685:
+       rsb     r0, r8, r5
+       add     sp, sp, #32
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+.L690:
+       .align  2
+.L689:
+       .word   .LANCHOR0
+       .word   .LC5
+       .word   .LC6
+       .word   .LC7
+       .word   .LANCHOR1
+       .word   .LC8
+       .word   .LANCHOR2
+       .word   -2048
+       .word   .LC9
+       .word   .LC10
+       .word   .LC11
+       .word   .LC12
+       .word   .LC13
+       .word   .LC14
+       .word   .LC15
+       .word   .LC16
+       .word   .LC17
+       .word   .LC18
+       .word   .LC19
+       .word   .LC20
+       .word   .LC21
+       .word   .LC22
+       .word   .LC23
+       .word   .LC24
+       .word   .LC25
+       .word   .LC26
+       .word   .LC27
+       .word   .LC28
+       .word   .LC29
+       .word   -1790
+       .word   .LC30
+       .word   -1792
+       .word   .LC31
+       .word   .LC32
+       .word   .LC33
+       .word   .LC34
+       .word   .LC35
+       .word   .LC36
+       .word   -1772
+       .word   .LC37
+       .word   .LC38
+       .word   -1768
+       .word   .LC39
+       .word   .LC40
+       .word   -2044
+       .word   -2042
+       .word   .LC41
+       .word   .LC42
+       .word   .LC43
+       .word   .LC44
+       .word   -2040
+       .word   .LC45
+       .word   .LC46
+       .word   -1994
+       .word   .LC47
+       .word   .LC48
+       .word   .LC49
+       .word   .LC50
+       .word   -1992
+       .word   .LC51
+       .word   .LC52
+       .word   -1946
+       .word   .LC53
+       .word   .LC54
+       .word   -1948
+       .word   .LC55
+       .word   .LC56
+       .word   -1944
+       .word   .LC57
+       .word   -1754
+       .word   .LC58
+       .word   .LC59
+       .word   .LC60
+       .word   .LC61
+       .word   -1752
+       .word   .LC62
+       .word   .LC63
+       .word   .LC64
+       .word   .LC65
+       .word   -1192
+       .word   .LC66
+       .word   -1190
+       .word   .LC67
+       .word   .LC68
+       .word   -1184
+       .word   .LC69
+       .word   .LC70
+       .word   .LC71
+       .word   .LC72
+       .word   .LC73
+       .word   -1431655765
+       .word   .LC74
+       .fnend
+       .size   FtlPrintInfo2buf, .-FtlPrintInfo2buf
+       .align  2
+       .global rknand_proc_ftlread
+       .type   rknand_proc_ftlread, %function
+rknand_proc_ftlread:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r4, r0
+       ldr     r1, .L692
+       ldr     r2, .L692+4
+       bl      sprintf
+       add     r5, r4, r0
+       mov     r0, r5
+       bl      FtlPrintInfo2buf
+       add     r0, r5, r0
+       rsb     r0, r4, r0
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L693:
+       .align  2
+.L692:
+       .word   .LC75
+       .word   .LC76
+       .fnend
+       .size   rknand_proc_ftlread, .-rknand_proc_ftlread
+       .align  2
+       .global GetSwlReplaceBlock
+       .type   GetSwlReplaceBlock, %function
+GetSwlReplaceBlock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L721
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #20
+       sub     sp, sp, #20
+       ldr     r1, [r3, #-1832]
+       ldr     r2, [r3, #-1824]
+       cmp     r1, r2
+       bcs     .L695
+       ldr     r0, .L721+4
+       movw    r1, #3852
+       mov     r2, #0
+       str     r2, [r3, #-1840]
+       ldrh    r1, [r0, r1]
+       ldr     r0, [r3, #-2084]
+       b       .L696
+.L697:
+       ldrh    lr, [r0], #2
+       add     r2, r2, #1
+       ldr     ip, [r3, #-1840]
+       add     ip, lr, ip
+       str     ip, [r3, #-1840]
+.L696:
+       cmp     r2, r1
+       ldr     r4, .L721
+       bcc     .L697
+       ldr     r5, [r4, #-1840]
+       mov     r0, r5
+       bl      __aeabi_uidiv
+       ldr     r2, .L721+4
+       movw    r3, #3902
+       ldrh    r1, [r2, r3]
+       str     r0, [r4, #-1832]
+       ldr     r0, [r4, #-1836]
+       rsb     r0, r0, r5
+       bl      __aeabi_uidiv
+       str     r0, [r4, #-1840]
+       b       .L698
+.L695:
+       ldr     r2, [r3, #-1828]
+       cmp     r1, r2
+       bls     .L698
+       add     r2, r2, #1
+       ldr     r4, .L721+4
+       str     r2, [r3, #-1828]
+       movw    ip, #3852
+       mov     r2, #0
+       b       .L699
+.L700:
+       ldr     r0, [r3, #-2084]
+       mov     r1, r2, asl #1
+       add     r2, r2, #1
+       ldrh    r5, [r0, r1]
+       add     r5, r5, #1
+       strh    r5, [r0, r1]    @ movhi
+.L699:
+       ldrh    r1, [r4, ip]
+       cmp     r2, r1
+       bcc     .L700
+.L698:
+       ldr     r3, .L721
+       ldr     r6, [r3, #-1824]
+       ldr     r5, [r3, #-1832]
+       add     r2, r6, #256
+       cmp     r2, r5
+       mov     r2, r3
+       bls     .L701
+       ldr     r1, [r3, #-1828]
+       add     r0, r6, #768
+       cmp     r0, r1
+       bls     .L701
+       ldr     r3, [r3, #-1884]
+       cmp     r3, #0
+       beq     .L719
+       cmp     r6, #30
+       bhi     .L719
+.L701:
+       ldr     r3, .L721+8
+       ldrh    r0, [r2, r3]
+       add     r0, r0, r0, asl #1
+       ubfx    r0, r0, #2, #16
+       bl      GetFreeBlockMaxEraseCount
+       add     r3, r6, #64
+       cmp     r0, r3
+       mov     r8, r0
+       bcs     .L703
+       cmp     r6, #30
+       bhi     .L719
+.L703:
+       ldr     r2, .L721
+       ldr     r3, [r2, #-2068]
+       cmp     r3, #0
+       beq     .L719
+       movw    r7, #65535
+       ldr     r1, [r2, #-2072]
+       mov     r4, r7
+       ldr     r2, [r2, #-2084]
+       mov     sl, r7
+       ldr     ip, .L721+12
+       mov     fp, #6
+       b       .L704
+.L707:
+       ldrh    r9, [r3, #4]
+       cmp     r9, #0
+       beq     .L705
+       rsb     r3, r1, r3
+       mov     r3, r3, asr #1
+       mul     r3, ip, r3
+       uxth    r3, r3
+       mov     r9, r3, asl #1
+       ldrh    r9, [r2, r9]
+       cmp     r9, r6
+       bls     .L716
+       cmp     r9, r7
+       movcc   r7, r9
+       movcc   r4, r3
+.L705:
+       mla     r3, fp, r0, r1
+.L704:
+       ldrh    r0, [r3, #0]
+       cmp     r0, sl
+       bne     .L707
+       b       .L706
+.L716:
+       mov     r4, r3
+.L706:
+       movw    r3, #65535
+       cmp     r4, r3
+       beq     .L702
+       mov     sl, r4, asl #1
+       ldr     fp, .L721
+       ldrh    r9, [r2, sl]
+       cmp     r9, r6
+       bls     .L708
+       bl      GetFreeBlockMinEraseCount
+       cmp     r0, r6
+       strhi   r7, [fp, #-1824]
+.L708:
+       cmp     r9, #29
+       ldr     r2, [fp, #-1884]
+       movhi   r3, #0
+       movls   r3, #1
+       cmp     r2, #0
+       moveq   r3, #0
+       cmp     r3, #0
+       beq     .L709
+       add     r3, r9, #10
+       cmp     r3, r5
+       bls     .L710
+       ldr     r2, .L721+4
+       movw    r3, #3902
+       ldrh    r3, [r2, r3]
+       cmp     r3, r9
+       bls     .L709
+.L710:
+       ldr     r6, .L721
+       ldr     r3, .L721+16
+       ldrh    r3, [r6, r3]
+       cmp     r3, #64
+       bls     .L709
+       ldr     r3, [r6, #-2084]
+       mov     r1, r4
+       ldr     r0, .L721+20
+       ldrh    r2, [r3, sl]
+       bl      printk
+       b       .L720
+.L709:
+       cmp     r9, r5
+       bcs     .L719
+       add     r3, r9, #128
+       cmp     r8, r3
+       ble     .L719
+       add     r3, r9, #256
+       ldr     r6, .L721
+       cmp     r3, r5
+       bcc     .L711
+       ldr     r3, [r6, #-1828]
+       add     r9, r9, #768
+       cmp     r9, r3
+       bcs     .L719
+.L711:
+       ldr     r3, [r6, #-2064]
+       mov     r1, r4
+       ldr     r0, .L721+24
+       mov     r2, r5
+       ldrh    r3, [r3, sl]
+       str     r3, [sp, #0]
+       ldr     r3, [r6, #-2084]
+       ldrh    r3, [r3, sl]
+       stmib   sp, {r3, r8}
+       ldr     r3, [r6, #-1828]
+       bl      printk
+.L720:
+       mov     r3, #1
+       str     r3, [r6, #-1180]
+       b       .L702
+.L719:
+       movw    r4, #65535
+.L702:
+       mov     r0, r4
+       add     sp, sp, #20
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L722:
+       .align  2
+.L721:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .word   -2048
+       .word   -1431655765
+       .word   -2056
+       .word   .LC77
+       .word   .LC78
+       .fnend
+       .size   GetSwlReplaceBlock, .-GetSwlReplaceBlock
+       .align  2
+       .global free_data_superblock
+       .type   free_data_superblock, %function
+free_data_superblock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       movw    r2, #65535
+       cmp     r0, r2
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       beq     .L724
+       ldr     r2, .L725
+       mov     r3, r0, asl #1
+       mov     r1, #0
+       ldr     r2, [r2, #-2064]
+       strh    r1, [r2, r3]    @ movhi
+       bl      INSERT_FREE_LIST
+.L724:
+       mov     r0, #0
+       ldmfd   sp!, {r3, pc}
+.L726:
+       .align  2
+.L725:
+       .word   .LANCHOR2
+       .fnend
+       .size   free_data_superblock, .-free_data_superblock
+       .align  2
+       .global FtlGcBufInit
+       .type   FtlGcBufInit, %function
+FtlGcBufInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r2, .L735
+       mov     r3, #0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       movw    sl, #3844
+       str     r3, [r2, #-1176]
+       mov     r8, #12
+       ldr     r0, .L735+4
+       mov     r7, #1
+       movw    r6, #3922
+       movw    fp, #3924
+       b       .L728
+.L729:
+       mul     r1, r8, r3
+       ldr     r4, [r2, #-1172]
+       add     ip, r4, r1
+       str     r7, [ip, #8]
+       ldrh    ip, [r0, r6]
+       mul     ip, ip, r3
+       add     r5, ip, #3
+       cmp     ip, #0
+       movlt   ip, r5
+       ldr     r5, [r2, #-1168]
+       bic     ip, ip, #3
+       add     ip, r5, ip
+       str     ip, [r4, r1]
+       ldrh    ip, [r0, fp]
+       ldr     r9, [r2, #-1172]
+       mul     ip, ip, r3
+       add     r4, r9, r1
+       add     r5, ip, #3
+       cmp     ip, #0
+       movlt   ip, r5
+       ldr     r5, [r2, #-1164]
+       bic     ip, ip, #3
+       add     ip, r5, ip
+       str     ip, [r4, #4]
+       ldr     ip, [r2, #-1160]
+       mov     r5, #36
+       ldr     r1, [r9, r1]
+       mla     ip, r5, r3, ip
+       add     r3, r3, #1
+       uxth    r3, r3
+       str     r1, [ip, #8]
+       ldr     r1, [r4, #4]
+       str     r1, [ip, #12]
+.L728:
+       ldrh    r1, [r0, sl]
+       cmp     r3, r1
+       bcc     .L729
+       b       .L734
+.L731:
+       mul     r2, r8, r1
+       ldr     r4, [r3, #-1172]
+       add     r0, r4, r2
+       str     r7, [r0, #8]
+       ldrh    r0, [ip, r6]
+       mul     r0, r0, r1
+       add     sl, r0, #3
+       cmp     r0, #0
+       movlt   r0, sl
+       ldr     sl, [r3, #-1168]
+       bic     r0, r0, #3
+       add     r0, sl, r0
+       str     r0, [r4, r2]
+       ldr     r0, [r3, #-1172]
+       add     r0, r0, r2
+       ldrh    r2, [ip, r5]
+       mul     r2, r2, r1
+       add     r1, r1, #1
+       uxth    r1, r1
+       add     r4, r2, #3
+       cmp     r2, #0
+       movlt   r2, r4
+       ldr     r4, [r3, #-1164]
+       bic     r2, r2, #3
+       add     r2, r4, r2
+       str     r2, [r0, #4]
+       b       .L733
+.L734:
+       ldr     r3, .L735
+       mov     r8, #12
+       ldr     ip, .L735+4
+       mov     r7, #0
+       movw    r6, #3922
+       movw    r5, #3924
+.L733:
+       ldr     r2, [r3, #-1156]
+       cmp     r1, r2
+       bcc     .L731
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L736:
+       .align  2
+.L735:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlGcBufInit, .-FtlGcBufInit
+       .align  2
+       .global FtlGcBufFree
+       .type   FtlGcBufFree, %function
+FtlGcBufFree:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L744
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r5, #36
+       ldr     r6, [r3, #-1156]
+       mov     fp, #12
+       ldr     ip, [r3, #-1172]
+       mov     r3, #0
+       mov     r4, r3
+       b       .L738
+.L741:
+       mul     sl, fp, r2
+       add     r8, ip, sl
+       ldr     r9, [ip, sl]
+       ldr     sl, [r7, #8]
+       cmp     r9, sl
+       streq   r4, [r8, #8]
+       beq     .L740
+.L739:
+       add     r2, r2, #1
+       uxth    r2, r2
+.L743:
+       cmp     r2, r6
+       bcc     .L741
+.L740:
+       add     r3, r3, #1
+       uxth    r3, r3
+.L738:
+       cmp     r3, r1
+       ldmcsfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+       mla     r7, r5, r3, r0
+       mov     r2, #0
+       b       .L743
+.L745:
+       .align  2
+.L744:
+       .word   .LANCHOR2
+       .fnend
+       .size   FtlGcBufFree, .-FtlGcBufFree
+       .align  2
+       .global FtlGcBufAlloc
+       .type   FtlGcBufAlloc, %function
+FtlGcBufAlloc:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L753
+       stmfd   sp!, {r4, r5, r6, r7, r8, sl, lr}
+       .save {r4, r5, r6, r7, r8, sl, lr}
+       mov     r6, #12
+       ldr     r8, [r3, #-1156]
+       mov     r5, #1
+       ldr     r7, [r3, #-1172]
+       mov     r4, #36
+       mov     r3, #0
+       b       .L747
+.L750:
+       mla     ip, r6, r2, r7
+       ldr     sl, [ip, #8]
+       cmp     sl, #0
+       bne     .L748
+       mla     r2, r4, r3, r0
+       ldr     sl, [ip, #0]
+       str     r5, [ip, #8]
+       str     sl, [r2, #8]
+       ldr     ip, [ip, #4]
+       str     ip, [r2, #12]
+       b       .L749
+.L748:
+       add     r2, r2, #1
+       uxth    r2, r2
+       b       .L751
+.L752:
+       mov     r2, #0
+.L751:
+       cmp     r2, r8
+       bcc     .L750
+.L749:
+       add     r3, r3, #1
+       uxth    r3, r3
+.L747:
+       cmp     r3, r1
+       bcc     .L752
+       ldmfd   sp!, {r4, r5, r6, r7, r8, sl, pc}
+.L754:
+       .align  2
+.L753:
+       .word   .LANCHOR2
+       .fnend
+       .size   FtlGcBufAlloc, .-FtlGcBufAlloc
+       .align  2
+       .global IsBlkInGcList
+       .type   IsBlkInGcList, %function
+IsBlkInGcList:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L760
+       ldr     r2, .L760+4
+       ldrh    r1, [r3, r2]
+       ldr     r2, [r3, #-1148]
+       mov     r3, #0
+       b       .L756
+.L758:
+       ldrh    ip, [r2], #2
+       cmp     ip, r0
+       beq     .L759
+       add     r3, r3, #1
+       uxth    r3, r3
+.L756:
+       cmp     r3, r1
+       bne     .L758
+       mov     r0, #0
+       bx      lr
+.L759:
+       mov     r0, #1
+       bx      lr
+.L761:
+       .align  2
+.L760:
+       .word   .LANCHOR2
+       .word   -1152
+       .fnend
+       .size   IsBlkInGcList, .-IsBlkInGcList
+       .align  2
+       .global FtlGcUpdatePage
+       .type   FtlGcUpdatePage, %function
+FtlGcUpdatePage:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       mov     r4, r0
+       ubfx    r0, r0, #10, #16
+       mov     r5, r1
+       mov     r6, r2
+       bl      P2V_block_in_plane
+       ldr     r3, .L766
+       ldr     r2, .L766+4
+       ldrh    ip, [r3, r2]
+       ldr     r2, [r3, #-1148]
+       mov     r3, #0
+       mov     r1, r2
+       b       .L763
+.L765:
+       ldrh    r7, [r1], #2
+       cmp     r7, r0
+       beq     .L764
+       add     r3, r3, #1
+       uxth    r3, r3
+.L763:
+       cmp     r3, ip
+       bne     .L765
+       mov     r3, r3, asl #1
+       strh    r0, [r2, r3]    @ movhi
+       ldr     r2, .L766
+       ldr     r3, .L766+4
+       ldrh    r1, [r2, r3]
+       add     r1, r1, #1
+       strh    r1, [r2, r3]    @ movhi
+.L764:
+       ldr     r3, .L766
+       mov     r0, #12
+       ldr     r2, .L766+8
+       ldrh    r1, [r3, r2]
+       mul     r1, r0, r1
+       ldr     r0, [r3, #-1144]
+       add     ip, r0, r1
+       stmib   ip, {r5, r6}
+       str     r4, [r0, r1]
+       ldrh    r1, [r3, r2]
+       add     r1, r1, #1
+       strh    r1, [r3, r2]    @ movhi
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L767:
+       .align  2
+.L766:
+       .word   .LANCHOR2
+       .word   -1152
+       .word   -1140
+       .fnend
+       .size   FtlGcUpdatePage, .-FtlGcUpdatePage
+       .align  2
+       .global FtlGcRefreshBlock
+       .type   FtlGcRefreshBlock, %function
+FtlGcRefreshBlock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       mov     r4, r0
+       mov     r1, r4
+       ldr     r0, .L772
+       bl      printk
+       ldr     r3, .L772+4
+       ldr     r2, .L772+8
+       movw    r1, #65535
+       ldrh    r0, [r3, r2]
+       cmp     r0, r1
+       beq     .L771
+.L769:
+       ldr     r2, .L772+12
+       ldrh    r0, [r3, r2]
+       cmp     r0, r1
+       bne     .L770
+.L771:
+       strh    r4, [r3, r2]    @ movhi
+.L770:
+       mov     r0, #0
+       ldmfd   sp!, {r4, pc}
+.L773:
+       .align  2
+.L772:
+       .word   .LC79
+       .word   .LANCHOR2
+       .word   -1138
+       .word   -1136
+       .fnend
+       .size   FtlGcRefreshBlock, .-FtlGcRefreshBlock
+       .align  2
+       .global FtlGcMarkBadPhyBlk
+       .type   FtlGcMarkBadPhyBlk, %function
+FtlGcMarkBadPhyBlk:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       mov     r4, r0
+       bl      P2V_block_in_plane
+       ldr     r5, .L779
+       mov     r2, r4
+       ldr     r7, .L779+4
+       ldrh    r1, [r5, r7]
+       mov     r6, r0
+       ldr     r0, .L779+8
+       bl      printk
+       mov     r0, r6
+       bl      FtlGcRefreshBlock
+       ldr     r3, [r5, #-1884]
+       cmp     r3, #0
+       beq     .L775
+       ldr     r3, [r5, #-2084]
+       mov     r6, r6, asl #1
+       ldrh    r2, [r3, r6]
+       cmp     r2, #29
+       subhi   r2, r2, #30
+       strhih  r2, [r3, r6]    @ movhi
+.L775:
+       ldrh    r1, [r5, r7]
+       mov     r3, #0
+       ldr     r2, .L779+12
+       b       .L776
+.L778:
+       ldrh    r0, [r2, #2]!
+       cmp     r0, r4
+       beq     .L777
+       add     r3, r3, #1
+       uxth    r3, r3
+.L776:
+       cmp     r3, r1
+       bne     .L778
+       cmp     r3, #15
+       bhi     .L777
+       ldr     r2, .L779
+       ldr     r1, .L779+16
+       add     r0, r2, r3, asl #1
+       add     r3, r3, #1
+       strh    r4, [r0, r1]    @ movhi
+       sub     r1, r1, #2
+       strh    r3, [r2, r1]    @ movhi
+.L777:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L780:
+       .align  2
+.L779:
+       .word   .LANCHOR2
+       .word   -1134
+       .word   .LC80
+       .word   .LANCHOR2-1134
+       .word   -1132
+       .fnend
+       .size   FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
+       .align  2
+       .global FtlGcReFreshBadBlk
+       .type   FtlGcReFreshBadBlk, %function
+FtlGcReFreshBadBlk:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       ldr     r2, .L784
+       ldr     r3, .L784+4
+       ldrh    r2, [r3, r2]
+       cmp     r2, #0
+       beq     .L782
+       ldr     r1, .L784+8
+       ldrh    r0, [r3, r1]
+       movw    r1, #65535
+       cmp     r0, r1
+       bne     .L782
+       ldr     r4, .L784+12
+       ldr     r5, .L784+4
+       ldrh    r1, [r3, r4]
+       cmp     r1, r2
+       movcs   r2, #0
+       strcsh  r2, [r3, r4]    @ movhi
+       ldrh    r2, [r5, r4]
+       ldr     r3, .L784+16
+       add     r2, r5, r2, asl #1
+       ldrh    r0, [r2, r3]
+       bl      P2V_block_in_plane
+       bl      FtlGcRefreshBlock
+       ldrh    r3, [r5, r4]
+       add     r3, r3, #1
+       strh    r3, [r5, r4]    @ movhi
+.L782:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L785:
+       .align  2
+.L784:
+       .word   -1134
+       .word   .LANCHOR2
+       .word   -1138
+       .word   -1098
+       .word   -1132
+       .fnend
+       .size   FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
+       .align  2
+       .global ftl_memset
+       .type   ftl_memset, %function
+ftl_memset:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       cmp     r2, #0
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       mov     r4, r0
+       beq     .L787
+       bl      memset
+.L787:
+       mov     r0, r4
+       ldmfd   sp!, {r4, pc}
+       .fnend
+       .size   ftl_memset, .-ftl_memset
+       .align  2
+       .global FtlGcPageVarInit
+       .type   FtlGcPageVarInit, %function
+FtlGcPageVarInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r3, #0
+       ldr     r4, .L789
+       movw    r5, #3916
+       ldr     r2, .L789+4
+       mov     r1, #255
+       ldr     r6, .L789+8
+       ldr     r0, [r4, #-1148]
+       strh    r3, [r4, r2]    @ movhi
+       add     r2, r2, #12
+       strh    r3, [r4, r2]    @ movhi
+       ldrh    r2, [r6, r5]
+       mov     r2, r2, asl #1
+       bl      ftl_memset
+       ldrh    r3, [r6, r5]
+       mov     r2, #12
+       ldr     r0, [r4, #-1144]
+       mov     r1, #255
+       mul     r2, r2, r3
+       bl      ftl_memset
+       ldmfd   sp!, {r4, r5, r6, lr}
+       b       FtlGcBufInit
+.L790:
+       .align  2
+.L789:
+       .word   .LANCHOR2
+       .word   -1152
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlGcPageVarInit, .-FtlGcPageVarInit
+       .align  2
+       .global SupperBlkListInit
+       .type   SupperBlkListInit, %function
+SupperBlkListInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       movw    r3, #3854
+       ldr     r7, .L800
+       mov     r2, #6
+       ldr     r4, .L800+4
+       mov     r1, #0
+       mov     r6, #0
+       ldrh    r3, [r7, r3]
+       mov     sl, r6
+       ldr     r0, [r4, #-2072]
+       mul     r2, r2, r3
+       bl      ftl_memset
+       ldr     r3, .L800+8
+       str     r6, [r4, #-2052]
+       str     r6, [r4, #-2068]
+       strh    r6, [r4, r3]    @ movhi
+       add     r3, r3, #8
+       str     r6, [r4, #-2060]
+       strh    r6, [r4, r3]    @ movhi
+       mov     r4, r6
+       b       .L792
+.L794:
+       add     r3, r7, r8
+       mov     r1, r4
+       add     r8, r8, #1
+       ldrb    r0, [r3, #3870] @ zero_extendqisi2
+       bl      V2P_block
+       uxth    r8, r8
+       bl      FtlBbmIsBadBlock
+       cmp     r0, #0
+       ldreqh  r3, [r7, r9]
+       addeq   r5, r5, r3
+       uxtheq  r5, r5
+       b       .L798
+.L799:
+       mov     r5, #0
+       movw    fp, #3844
+       mov     r8, r5
+       movw    r9, #3912
+.L798:
+       ldrh    r3, [r7, fp]
+       cmp     r3, r8
+       bhi     .L794
+       cmp     r5, #0
+       beq     .L795
+       mov     r1, r5
+       mov     r0, #32768
+       bl      __aeabi_idiv
+       uxth    r5, r0
+.L795:
+       ldr     r3, .L800+4
+       mov     r1, #6
+       ldr     r2, [r3, #-2072]
+       mla     r2, r1, r4, r2
+       strh    r5, [r2, #4]    @ movhi
+       ldr     r2, .L800+12
+       ldrh    r2, [r3, r2]
+       cmp     r2, r4
+       beq     .L796
+       ldr     r2, .L800+16
+       ldrh    r2, [r3, r2]
+       cmp     r2, r4
+       beq     .L796
+       ldr     r2, .L800+20
+       ldrh    r2, [r3, r2]
+       cmp     r2, r4
+       beq     .L796
+       ldr     r2, [r3, #-2064]
+       mov     r3, r4, asl #1
+       ldrh    r3, [r2, r3]
+       cmp     r3, #0
+       bne     .L797
+       add     r6, r6, #1
+       mov     r0, r4
+       uxth    r6, r6
+       bl      INSERT_FREE_LIST
+       b       .L796
+.L797:
+       add     sl, sl, #1
+       mov     r0, r4
+       uxth    sl, sl
+       bl      INSERT_DATA_LIST
+.L796:
+       add     r4, r4, #1
+       uxth    r4, r4
+.L792:
+       movw    r2, #3852
+       ldrh    r3, [r7, r2]
+       cmp     r3, r4
+       bhi     .L799
+       ldr     r3, .L800+4
+       mov     r0, #0
+       ldr     r2, .L800+8
+       strh    sl, [r3, r2]    @ movhi
+       add     r2, r2, #8
+       strh    r6, [r3, r2]    @ movhi
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L801:
+       .align  2
+.L800:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   -2056
+       .word   -2044
+       .word   -1996
+       .word   -1948
+       .fnend
+       .size   SupperBlkListInit, .-SupperBlkListInit
+       .align  2
+       .global FtlL2PDataInit
+       .type   FtlL2PDataInit, %function
+FtlL2PDataInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
+       .save {r3, r4, r5, r6, r7, r8, sl, lr}
+       mov     r1, #0
+       ldr     r4, .L805
+       movw    r6, #3922
+       ldr     r5, .L805+4
+       movw    r7, #3950
+       mov     r8, #12
+       ldr     r2, [r4, #3940]
+       ldr     r0, [r5, #-1096]
+       mov     r2, r2, asl #1
+       bl      ftl_memset
+       ldrh    r3, [r4, r6]
+       ldrh    r2, [r4, r7]
+       mov     r1, #255
+       ldr     r0, [r5, #-1092]
+       mul     r2, r2, r3
+       bl      ftl_memset
+       mov     r2, #0
+       mov     ip, r2
+       mvn     r0, #0
+       b       .L803
+.L804:
+       mul     r3, r8, r2
+       ldr     r1, [r5, #-1900]
+       add     sl, r1, r3
+       str     ip, [sl, #4]
+       strh    r0, [r1, r3]    @ movhi
+       ldr     r1, [r5, #-1900]
+       ldr     sl, [r5, #-1092]
+       add     r3, r1, r3
+       ldrh    r1, [r4, r6]
+       mul     r1, r2, r1
+       add     r2, r2, #1
+       uxth    r2, r2
+       bic     r1, r1, #3
+       add     r1, sl, r1
+       str     r1, [r3, #8]
+.L803:
+       ldrh    r3, [r4, r7]
+       ldr     r1, .L805
+       cmp     r3, r2
+       ldr     r3, .L805+4
+       bhi     .L804
+       ldr     r0, .L805+8
+       mvn     r2, #0
+       strh    r2, [r3, r0]    @ movhi
+       ldr     r0, .L805+12
+       strh    r2, [r3, r0]    @ movhi
+       ldr     r0, [r1, #3940]
+       ldr     r2, .L805+16
+       strh    r0, [r3, r2]    @ movhi
+       sub     r2, r2, #6
+       ldr     r0, .L805+20
+       strh    r0, [r3, r2]    @ movhi
+       add     r2, r2, #36
+       ldrh    r0, [r3, r2]
+       sub     r2, r2, #32
+       strh    r0, [r3, r2]    @ movhi
+       movw    r2, #3948
+       ldrh    r1, [r1, r2]
+       ldr     r2, .L805+24
+       strh    r1, [r3, r2]    @ movhi
+       ldr     r2, [r3, #-1044]
+       str     r2, [r3, #-1076]
+       ldr     r2, [r3, #-1040]
+       str     r2, [r3, #-1072]
+       ldr     r2, [r3, #-1096]
+       str     r2, [r3, #-1068]
+       ldr     r2, [r3, #-1036]
+       str     r2, [r3, #-1064]
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, pc}
+.L806:
+       .align  2
+.L805:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   -1086
+       .word   -1088
+       .word   -1078
+       .word   -3902
+       .word   -1082
+       .fnend
+       .size   FtlL2PDataInit, .-FtlL2PDataInit
+       .align  2
+       .global ftl_free_no_use_map_blk
+       .type   ftl_free_no_use_map_blk, %function
+ftl_free_no_use_map_blk:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r4, r0
+       ldrh    r2, [r0, #10]
+       mov     r1, #0
+       ldr     r5, [r0, #20]
+       ldr     r6, [r0, #12]
+       ldr     r7, [r0, #24]
+       mov     r2, r2, asl #1
+       mov     r0, r5
+       bl      ftl_memset
+       mov     r3, #0
+       b       .L808
+.L812:
+       ldr     r0, [r7, r3, asl #2]
+       mov     r2, #0
+       ubfx    r0, r0, #10, #16
+       b       .L809
+.L811:
+       mov     r1, r2, asl #1
+       add     r2, r2, #1
+       ldrh    ip, [r6, r1]
+       uxth    r2, r2
+       cmp     ip, r0
+       ldreqh  ip, [r5, r1]
+       addeq   ip, ip, #1
+       streqh  ip, [r5, r1]    @ movhi
+.L809:
+       ldrh    r1, [r4, #10]
+       cmp     r1, r2
+       bhi     .L811
+       add     r3, r3, #1
+       uxth    r3, r3
+.L808:
+       ldrh    r2, [r4, #6]
+       cmp     r2, r3
+       bhi     .L812
+       mov     sl, #0
+       ldrh    fp, [r5, #0]
+       mov     r7, sl
+       ldr     r3, .L818
+       movw    r2, #3914
+       b       .L813
+.L817:
+       ldrh    r1, [r4, #0]
+       cmp     r1, r7
+       bne     .L814
+       ldrh    r0, [r4, #2]
+       ldrh    r1, [r3, r2]
+       cmp     r0, r1
+       movcc   r0, r7, asl #1
+       strcch  r1, [r5, r0]    @ movhi
+.L814:
+       mov     r9, r7, asl #1
+       ldrh    r8, [r5, r9]
+       cmp     fp, r8
+       movhi   sl, r7
+       movhi   fp, r8
+       cmp     r8, #0
+       bne     .L816
+       ldrh    r0, [r6, r9]
+       cmp     r0, #0
+       beq     .L816
+       mov     r1, #1
+       stmia   sp, {r2, r3}
+       bl      FtlFreeSysBlkQueueIn
+       strh    r8, [r6, r9]    @ movhi
+       ldmia   sp, {r2, r3}
+       ldrh    r1, [r4, #8]
+       sub     r1, r1, #1
+       strh    r1, [r4, #8]    @ movhi
+.L816:
+       add     r7, r7, #1
+       uxth    r7, r7
+.L813:
+       ldrh    r1, [r4, #10]
+       cmp     r1, r7
+       bhi     .L817
+       mov     r0, sl
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L819:
+       .align  2
+.L818:
+       .word   .LANCHOR0
+       .fnend
+       .size   ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
+       .align  2
+       .global FtlFreeSysBlkQueueInit
+       .type   FtlFreeSysBlkQueueInit, %function
+FtlFreeSysBlkQueueInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L821
+       movw    r2, #4042
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       mov     r4, #0
+       strh    r4, [r3, r2]    @ movhi
+       add     r2, r2, #2
+       mov     r1, r4
+       strh    r4, [r3, r2]    @ movhi
+       add     r2, r2, #2
+       strh    r4, [r3, r2]    @ movhi
+       movw    r2, #4040
+       strh    r0, [r3, r2]    @ movhi
+       add     r0, r3, #4048
+       mov     r2, #2048
+       bl      ftl_memset
+       mov     r0, r4
+       ldmfd   sp!, {r4, pc}
+.L822:
+       .align  2
+.L821:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
+       .align  2
+       .global FtlBbtMemInit
+       .type   FtlBbtMemInit, %function
+FtlBbtMemInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L824
+       movw    r2, #3980
+       mvn     r1, #0
+       ldr     r0, .L824+4
+       strh    r1, [r3, r2]    @ movhi
+       add     r2, r2, #6
+       mov     r1, #0
+       strh    r1, [r3, r2]    @ movhi
+       mov     r1, #255
+       mov     r2, #16
+       b       ftl_memset
+.L825:
+       .align  2
+.L824:
+       .word   .LANCHOR0
+       .word   .LANCHOR0+3992
+       .fnend
+       .size   FtlBbtMemInit, .-FtlBbtMemInit
+       .align  2
+       .global FtlBbt2Bitmap
+       .type   FtlBbt2Bitmap, %function
+FtlBbt2Bitmap:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L830
+       ldr     r2, .L830+4
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r5, r0
+       ldrh    r2, [r2, r3]
+       mov     r0, r1
+       mov     r4, r1
+       mov     r1, #0
+       mov     r2, r2, asl #2
+       bl      ftl_memset
+       mov     r3, #0
+       movw    ip, #65535
+       mov     r0, #1
+.L828:
+       ldrh    r2, [r5, r3]
+       cmp     r2, ip
+       ldmeqfd sp!, {r4, r5, r6, pc}
+       mov     r1, r2, lsr #5
+       add     r3, r3, #2
+       cmp     r3, #1024
+       and     r2, r2, #31
+       ldr     r6, [r4, r1, asl #2]
+       orr     r2, r6, r0, asl r2
+       str     r2, [r4, r1, asl #2]
+       bne     .L828
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L831:
+       .align  2
+.L830:
+       .word   -1032
+       .word   .LANCHOR2
+       .fnend
+       .size   FtlBbt2Bitmap, .-FtlBbt2Bitmap
+       .align  2
+       .global FtlVariablesInit
+       .type   FtlVariablesInit, %function
+FtlVariablesInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       mvn     r3, #0
+       ldr     r5, .L833
+       mov     r4, #0
+       ldr     r2, .L833+4
+       mov     r1, r4
+       ldr     r6, .L833+8
+       movw    r7, #3854
+       str     r3, [r5, #-1012]
+       strh    r3, [r5, r2]    @ movhi
+       movw    r3, #3956
+       strh    r4, [r6, r3]    @ movhi
+       movw    r3, #3932
+       ldrh    r2, [r6, r3]
+       ldr     r0, [r6, #3960]
+       str     r4, [r5, #-1028]
+       mov     r2, r2, asl #1
+       str     r4, [r5, #-1020]
+       str     r4, [r5, #-1016]
+       str     r4, [r5, #-1884]
+       bl      ftl_memset
+       ldrh    r2, [r6, r7]
+       mov     r1, r4
+       ldr     r0, [r5, #-2084]
+       mov     r2, r2, asl #1
+       bl      ftl_memset
+       ldrh    r2, [r6, r7]
+       mov     r1, r4
+       ldr     r0, [r5, #-1008]
+       mov     r2, r2, asl #1
+       bl      ftl_memset
+       mov     r1, r4
+       mov     r2, #48
+       ldr     r0, .L833+12
+       bl      ftl_memset
+       mov     r1, r4
+       mov     r2, #512
+       ldr     r0, .L833+16
+       bl      ftl_memset
+       bl      FtlGcBufInit
+       bl      FtlL2PDataInit
+       mov     r0, r4
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L834:
+       .align  2
+.L833:
+       .word   .LANCHOR2
+       .word   -1024
+       .word   .LANCHOR0
+       .word   .LANCHOR2-1820
+       .word   .LANCHOR2-1704
+       .fnend
+       .size   FtlVariablesInit, .-FtlVariablesInit
+       .align  2
+       .global FtlMemInit
+       .type   FtlMemInit, %function
+FtlMemInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, lr}
+       movw    r3, #65535
+       ldr     r4, .L866
+       mov     r6, #0
+       ldr     r2, .L866+4
+       mov     r0, #1024
+       ldr     r5, .L866+8
+       mov     r7, #12
+       str     r3, [r4, #-996]
+       mvn     r3, #0
+       strh    r3, [r4, r2]    @ movhi
+       add     r2, r2, #2
+       str     r6, [r4, #-1004]
+       movw    sl, #3844
+       strh    r3, [r4, r2]    @ movhi
+       mov     r2, #32
+       ldr     r3, .L866+12
+       mov     r8, #36
+       str     r6, [r4, #-1708]
+       str     r6, [r4, #-1848]
+       strh    r2, [r4, r3]    @ movhi
+       add     r3, r3, #2
+       mov     r2, #128
+       str     r6, [r4, #-1844]
+       strh    r2, [r4, r3]    @ movhi
+       add     r3, r3, #6
+       str     r6, [r4, #-1860]
+       strh    r6, [r4, r3]    @ movhi
+       add     r3, r3, #50
+       str     r6, [r4, #-1872]
+       strh    r6, [r4, r3]    @ movhi
+       add     r3, r3, #36
+       str     r6, [r4, #-1876]
+       strh    r6, [r4, r3]    @ movhi
+       movw    r3, #3918
+       ldrh    r1, [r5, r3]
+       str     r6, [r4, #-1868]
+       str     r6, [r4, #-1864]
+       str     r6, [r4, #-1880]
+       str     r6, [r4, #-1840]
+       str     r6, [r4, #-1836]
+       str     r6, [r4, #-2080]
+       str     r6, [r4, #-1828]
+       str     r6, [r4, #-1824]
+       str     r6, [r4, #-1000]
+       str     r6, [r4, #-1180]
+       str     r6, [r4, #-992]
+       str     r6, [r4, #-1188]
+       str     r6, [r5, #3976]
+       bl      __aeabi_idiv
+       movw    r3, #3844
+       ldrh    r3, [r5, r3]
+       str     r6, [r5, #3964]
+       movw    r6, #3916
+       mov     r3, r3, asl #2
+       cmp     r0, r3
+       str     r0, [r4, #-988]
+       ldrh    r0, [r5, r6]
+       strhi   r3, [r4, #-988]
+       ldr     r4, .L866
+       mov     r0, r0, asl #1
+       bl      ftl_malloc
+       str     r0, [r4, #-1148]
+       ldrh    r0, [r5, r6]
+       mul     r0, r7, r0
+       bl      ftl_malloc
+       ldrh    r6, [r5, sl]
+       mul     r6, r8, r6
+       mov     r9, r6, asl #3
+       str     r0, [r4, #-1144]
+       mov     r0, r9
+       bl      ftl_malloc
+       str     r0, [r4, #-984]
+       mov     r0, r6
+       bl      ftl_malloc
+       str     r0, [r4, #-980]
+       mov     r0, r9
+       bl      ftl_malloc
+       str     r0, [r4, #-976]
+       mov     r0, r6
+       bl      ftl_malloc
+       str     r0, [r4, #-2088]
+       mov     r0, r6
+       bl      ftl_malloc
+       str     r0, [r4, #-1160]
+       ldr     r0, [r4, #-988]
+       mul     r0, r8, r0
+       bl      ftl_malloc
+       movw    r8, #3922
+       ldrh    r3, [r5, sl]
+       ldrh    r6, [r5, r8]
+       mov     r3, r3, asl #1
+       add     r3, r3, #1
+       str     r3, [r4, #-1156]
+       str     r0, [r5, #3968]
+       mov     r0, r6
+       bl      ftl_malloc
+       str     r0, [r4, #-2076]
+       mov     r0, r6
+       bl      ftl_malloc
+       str     r0, [r4, #-972]
+       mov     r0, r6
+       bl      ftl_malloc
+       str     r0, [r4, #-968]
+       ldr     r0, [r4, #-1156]
+       mul     r0, r0, r6
+       bl      ftl_malloc
+       str     r0, [r4, #-1168]
+       ldr     r0, [r4, #-988]
+       mul     r0, r0, r6
+       bl      ftl_malloc
+       str     r0, [r4, #-964]
+       mov     r0, r6
+       bl      ftl_malloc
+       str     r0, [r4, #-960]
+       mov     r0, r6
+       bl      ftl_malloc
+       movw    r6, #3924
+       str     r0, [r4, #-956]
+       ldr     r0, [r4, #-1156]
+       mul     r0, r7, r0
+       bl      ftl_malloc
+       ldrh    r3, [r5, r6]
+       ldrh    sl, [r5, sl]
+       mul     sl, sl, r3
+       str     r0, [r4, #-1172]
+       mov     r0, sl
+       bl      ftl_malloc
+       str     r0, [r4, #-952]
+       mov     r0, sl, asl #3
+       bl      ftl_malloc
+       ldrh    r3, [r5, r6]
+       ldr     sl, .L866+16
+       str     r0, [r4, #-948]
+       ldr     r0, [r4, #-1156]
+       mul     r0, r0, r3
+       bl      ftl_malloc
+       ldrh    r3, [r5, r6]
+       movw    r6, #3854
+       str     r0, [r4, #-1164]
+       ldr     r0, [r4, #-988]
+       mul     r0, r0, r3
+       bl      ftl_malloc
+       str     r0, [r4, #-944]
+       ldrh    r0, [r5, r6]
+       mov     r0, r0, asl #1
+       uxth    r0, r0
+       strh    r0, [r4, sl]    @ movhi
+       bl      ftl_malloc
+       str     r0, [r4, #-1008]
+       ldrh    r0, [r4, sl]
+       add     r0, r0, #544
+       add     r0, r0, #3
+       mov     r0, r0, lsr #9
+       strh    r0, [r4, sl]    @ movhi
+       mov     r0, r0, asl #9
+       bl      ftl_malloc
+       ldrh    sl, [r5, r6]
+       mov     sl, sl, asl #1
+       str     r0, [r4, #-936]
+       add     r0, r0, #32
+       str     r0, [r4, #-2084]
+       mov     r0, sl
+       bl      ftl_malloc
+       str     r0, [r4, #-932]
+       mov     r0, sl
+       bl      ftl_malloc
+       ldr     sl, [r5, #3940]
+       mov     sl, sl, asl #1
+       str     r0, [r4, #-2064]
+       mov     r0, sl
+       bl      ftl_malloc
+       str     r0, [r4, #-1044]
+       mov     r0, sl
+       bl      ftl_malloc
+       movw    sl, #3932
+       str     r0, [r4, #-1096]
+       ldrh    r0, [r5, r6]
+       mov     r0, r0, lsr #3
+       add     r0, r0, #4
+       bl      ftl_malloc
+       str     r0, [r4, #-1888]
+       ldrh    r0, [r5, sl]
+       mov     r0, r0, asl #1
+       bl      ftl_malloc
+       str     r0, [r5, #3960]
+       ldrh    r0, [r5, sl]
+       mov     r0, r0, asl #1
+       bl      ftl_malloc
+       str     r0, [r4, #-928]
+       ldrh    r0, [r5, sl]
+       add     sl, sl, #2
+       mov     r0, r0, asl #2
+       bl      ftl_malloc
+       str     r0, [r4, #-924]
+       ldrh    r0, [r5, sl]
+       mov     r0, r0, asl #2
+       bl      ftl_malloc
+       ldrh    r2, [r5, sl]
+       mov     r1, #0
+       add     sl, sl, #16
+       mov     r2, r2, asl #2
+       str     r0, [r4, #-920]
+       bl      ftl_memset
+       movw    r3, #3948
+       ldrh    r0, [r5, r3]
+       mov     r0, r0, asl #2
+       bl      ftl_malloc
+       str     r0, [r4, #-1036]
+       ldr     r0, [r5, #3940]
+       mov     r0, r0, asl #2
+       bl      ftl_malloc
+       str     r0, [r4, #-1040]
+       ldrh    r0, [r5, sl]
+       mul     r0, r7, r0
+       bl      ftl_malloc
+       ldrh    r3, [r5, sl]
+       movw    r7, #3866
+       str     r0, [r4, #-1900]
+       ldrh    r0, [r5, r8]
+       mul     r0, r0, r3
+       bl      ftl_malloc
+       ldrh    r3, [r5, r6]
+       ldr     r6, .L866+20
+       str     r0, [r4, #-1092]
+       mov     r0, #6
+       mul     r0, r0, r3
+       bl      ftl_malloc
+       movw    r3, #3908
+       ldrh    r3, [r5, r3]
+       ldrh    r2, [r5, r7]
+       add     r3, r3, #31
+       mov     r3, r3, lsr #5
+       strh    r3, [r4, r6]    @ movhi
+       mul     r3, r2, r3
+       str     r0, [r4, #-2072]
+       mov     r0, r3, asl #2
+       bl      ftl_malloc
+       ldrh    r1, [r4, r6]
+       mov     r3, #1
+       ldr     ip, .L866+8
+       mov     r1, r1, asl #2
+       mov     r2, r1
+       str     r0, [r5, #4008]
+       ldrh    r5, [r5, r7]
+       ldr     r0, .L866+24
+       b       .L837
+.L838:
+       ldr     r4, [ip, #4008]
+       add     r3, r3, #1
+       add     r4, r4, r2
+       add     r2, r2, r1
+       str     r4, [r0, #4]!
+.L837:
+       cmp     r3, r5
+       bcc     .L838
+       ldr     r0, .L866+28
+       mov     r2, #0
+       mov     r1, r2
+       add     r0, r0, r3, asl #2
+       b       .L839
+.L840:
+       add     ip, r0, r2
+       add     r3, r3, #1
+       add     r2, r2, #4
+       str     r1, [ip, #28]
+.L839:
+       cmp     r3, #7
+       bls     .L840
+       ldr     r3, .L866
+       ldr     r2, [r3, #-1044]
+       cmp     r2, #0
+       beq     .L865
+.L841:
+       ldr     r2, [r3, #-1096]
+       cmp     r2, #0
+       beq     .L865
+.L843:
+       ldr     r2, [r3, #-1036]
+       cmp     r2, #0
+       beq     .L865
+.L844:
+       ldr     r2, [r3, #-1040]
+       cmp     r2, #0
+       beq     .L865
+.L845:
+       ldr     r2, [r3, #-1900]
+       cmp     r2, #0
+       beq     .L865
+.L846:
+       ldr     r2, [r3, #-1092]
+       cmp     r2, #0
+       beq     .L865
+.L847:
+       ldr     r2, [r3, #-2072]
+       cmp     r2, #0
+       beq     .L865
+.L848:
+       ldr     r2, .L866+8
+       ldr     r2, [r2, #4008]
+       cmp     r2, #0
+       beq     .L865
+.L849:
+       ldr     r3, [r3, #-2064]
+       cmp     r3, #0
+       beq     .L865
+.L850:
+       ldr     r3, .L866
+       ldr     r2, [r3, #-1148]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r2, [r3, #-1144]
+       cmp     r2, #0
+       beq     .L865
+.L852:
+       ldr     r2, [r3, #-984]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r2, [r3, #-976]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r2, [r3, #-2088]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r2, [r3, #-1160]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r2, [r3, #-980]
+       cmp     r2, #0
+       beq     .L865
+.L854:
+       ldr     r2, [r3, #-2076]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r2, [r3, #-972]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r3, [r3, #-968]
+       cmp     r3, #0
+       beq     .L865
+       ldr     r3, .L866
+       ldr     r2, [r3, #-1168]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r2, [r3, #-960]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r2, [r3, #-956]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r2, [r3, #-1172]
+       cmp     r2, #0
+       beq     .L865
+.L856:
+       ldr     r2, [r3, #-952]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r2, [r3, #-948]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r2, [r3, #-1164]
+       cmp     r2, #0
+       beq     .L865
+.L858:
+       ldr     r2, [r3, #-2084]
+       cmp     r2, #0
+       beq     .L865
+       ldr     r3, [r3, #-1008]
+       cmp     r3, #0
+       beq     .L865
+.L860:
+       ldr     r3, .L866+8
+       ldr     r3, [r3, #3960]
+       cmp     r3, #0
+       beq     .L865
+.L861:
+       ldr     r3, .L866
+       ldr     r2, [r3, #-928]
+       cmp     r2, #0
+       beq     .L865
+.L862:
+       ldr     r2, [r3, #-924]
+       cmp     r2, #0
+       beq     .L865
+.L863:
+       ldr     r3, [r3, #-920]
+       cmp     r3, #0
+       bne     .L864
+.L865:
+       ldr     r0, .L866+32
+       ldr     r1, .L866+36
+       bl      printk
+       mvn     r0, #0
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+.L864:
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+.L867:
+       .align  2
+.L866:
+       .word   .LANCHOR2
+       .word   -1138
+       .word   .LANCHOR0
+       .word   -1192
+       .word   -940
+       .word   -1032
+       .word   .LANCHOR0+4008
+       .word   .LANCHOR0+3980
+       .word   .LC81
+       .word   .LANCHOR3
+       .fnend
+       .size   FtlMemInit, .-FtlMemInit
+       .align  2
+       .global ReadFlashInfo
+       .type   ReadFlashInfo, %function
+ReadFlashInfo:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r1, #0
+       mov     r2, #11
+       mov     r4, r0
+       bl      ftl_memset
+       ldr     r3, .L871
+       ldr     r1, [r3, #2776]
+       ldr     r0, [r3, #4]
+       ldrb    r2, [r1, #9]    @ zero_extendqisi2
+       mul     r2, r0, r2
+       mov     r0, #0
+       uxth    r2, r2
+       strb    r2, [r4, #4]
+       mov     ip, r2, lsr #8
+       strb    ip, [r4, #5]
+       ldrb    ip, [r3, #3836] @ zero_extendqisi2
+       strb    ip, [r4, #7]
+       ldrb    ip, [r1, #13]   @ zero_extendqisi2
+       mul     r2, r2, ip
+       ldrh    ip, [r1, #14]
+       ldrb    r1, [r1, #8]    @ zero_extendqisi2
+       mul     r2, ip, r2
+       mul     r2, r1, r2
+       ubfx    r1, r2, #8, #8
+       strb    r1, [r4, #1]
+       ubfx    r1, r2, #16, #8
+       strb    r1, [r4, #2]
+       strb    r2, [r4, #0]
+       mov     r2, r2, lsr #24
+       strb    r2, [r4, #3]
+       ldr     r2, [r3, #2776]
+       ldrb    ip, [r3, #3766] @ zero_extendqisi2
+       mov     r3, r0
+       ldrb    r1, [r2, #9]    @ zero_extendqisi2
+       strb    r1, [r4, #6]
+       mov     r1, #32
+       strb    r1, [r4, #8]
+       ldrb    r2, [r2, #7]    @ zero_extendqisi2
+       ldr     r1, .L871+4
+       strb    r0, [r4, #10]
+       strb    r2, [r4, #9]
+       mov     r2, #1
+       b       .L869
+.L870:
+       ldrb    r5, [r3, r1]    @ zero_extendqisi2
+       add     r3, r3, #1
+       ldrb    r0, [r4, #10]   @ zero_extendqisi2
+       orr     r0, r0, r2, asl r5
+       strb    r0, [r4, #10]
+.L869:
+       uxtb    r0, r3
+       cmp     r0, ip
+       bcc     .L870
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L872:
+       .align  2
+.L871:
+       .word   .LANCHOR0
+       .word   .LANCHOR0+3768
+       .fnend
+       .size   ReadFlashInfo, .-ReadFlashInfo
+       .align  2
+       .global FlashDieInfoInit
+       .type   FlashDieInfoInit, %function
+FlashDieInfoInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r1, .L885
+       mov     r2, #0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
+       .save {r3, r4, r5, r6, r7, r8, sl, lr}
+       ldr     r3, .L885+4
+       strb    r2, [r1, #-916]
+       ldr     r1, .L885+8
+       strb    r2, [r3, #3766]
+       movw    r2, #2698
+       ldrh    r2, [r1, r2]
+       cmp     r2, #256
+       str     r2, [r3, #4]
+       movhi   r2, #512
+       bhi     .L884
+       cmp     r2, #128
+       bls     .L875
+       mov     r2, #256
+.L884:
+       str     r2, [r3, #4]
+.L875:
+       mov     r1, #0
+       mov     r2, #8
+       ldr     r0, .L885+12
+       mov     r6, #0
+       bl      ftl_memset
+       mov     r1, #0
+       mov     r2, #32
+       ldr     r0, .L885+16
+       bl      ftl_memset
+       ldr     r0, .L885+20
+       mov     r1, #0
+       mov     r2, #128
+       bl      ftl_memset
+       ldr     r7, .L885+24
+       ldr     r5, .L885+4
+       mov     r8, r7
+.L877:
+       ldr     r4, [r5, #2776]
+       mov     r1, r8
+       add     r0, r4, #1
+       ldrb    r2, [r4, #0]    @ zero_extendqisi2
+       bl      FlashMemCmp8
+       cmp     r0, #0
+       bne     .L876
+       ldrb    r3, [r5, #3766] @ zero_extendqisi2
+       add     r2, r5, r3, asl #2
+       str     r0, [r2, #2740]
+       add     r2, r5, r3
+       add     r3, r3, #1
+       strb    r3, [r5, #3766]
+       strb    r6, [r2, #3768]
+.L876:
+       add     r6, r6, #1
+       add     r8, r8, #8
+       cmp     r6, #4
+       bne     .L877
+       ldr     r5, .L885+4
+       ldr     r3, .L885
+       ldrb    r2, [r5, #3766] @ zero_extendqisi2
+       strb    r2, [r3, #-916]
+       ldrb    r3, [r4, #8]    @ zero_extendqisi2
+       cmp     r3, #2
+       bne     .L878
+       add     sl, r4, #1
+       mov     r6, #0
+       mov     r8, r5
+.L881:
+       mov     r0, sl
+       mov     r1, r7
+       ldrb    r2, [r4, #0]    @ zero_extendqisi2
+       bl      FlashMemCmp8
+       cmp     r0, #0
+       bne     .L879
+       ldrb    r1, [r4, #13]   @ zero_extendqisi2
+       ldr     r0, [r5, #4]
+       ldrb    r3, [r5, #3766] @ zero_extendqisi2
+       mul     r0, r0, r1
+       ldrh    r1, [r4, #14]
+       add     r2, r5, r3, asl #2
+       and     r1, r1, #65280
+       mul     r1, r1, r0
+       str     r1, [r2, #2740]
+       ldrb    r0, [r4, #23]   @ zero_extendqisi2
+       cmp     r0, #0
+       movne   r1, r1, asl #1
+       strne   r1, [r2, #2740]
+       add     r2, r8, r3
+       add     r3, r3, #1
+       strb    r3, [r8, #3766]
+       strb    r6, [r2, #3768]
+.L879:
+       add     r6, r6, #1
+       add     r7, r7, #8
+       cmp     r6, #4
+       bne     .L881
+.L878:
+       ldr     r3, .L885+4
+       ldrb    r1, [r4, #13]   @ zero_extendqisi2
+       ldr     r2, .L885
+       ldrb    r3, [r3, #3766] @ zero_extendqisi2
+       mul     r1, r1, r3
+       ldrh    r3, [r4, #14]
+       mul     r1, r3, r1
+       ldr     r3, .L885+28
+       strh    r1, [r2, r3]    @ movhi
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, pc}
+.L886:
+       .align  2
+.L885:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .word   .LANCHOR1
+       .word   .LANCHOR0+3768
+       .word   .LANCHOR0+2740
+       .word   .LANCHOR0+2780
+       .word   .LANCHOR0+2132
+       .word   -914
+       .fnend
+       .size   FlashDieInfoInit, .-FlashDieInfoInit
+       .align  2
+       .global BuildFlashLsbPageTable
+       .type   BuildFlashLsbPageTable, %function
+BuildFlashLsbPageTable:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       cmp     r0, #0
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       mov     r4, r1
+       bne     .L888
+       ldr     r3, .L927
+.L889:
+       strh    r0, [r3, #2]!   @ movhi
+       add     r0, r0, #1
+       uxth    r0, r0
+       cmp     r0, #256
+       bne     .L889
+       b       .L890
+.L888:
+       cmp     r0, #1
+       bne     .L891
+       ldr     r0, .L927+4
+       mov     r2, #0
+       mov     r3, r2
+.L894:
+       uxth    r1, r3
+       cmp     r1, #3
+       bls     .L892
+       tst     r3, #1
+       moveq   r1, #2
+       movne   r1, #3
+       rsb     r1, r1, r2
+       uxth    r1, r1
+.L892:
+       add     r3, r3, #1
+       strh    r1, [r2, r0]    @ movhi
+       cmp     r3, #256
+       add     r2, r2, #2
+       bne     .L894
+       b       .L890
+.L891:
+       cmp     r0, #2
+       bne     .L895
+       mov     r3, #0
+       ldr     r0, .L927
+       movw    r2, #65535
+       mov     r1, r3
+       b       .L926
+.L898:
+       cmp     r3, #1
+       movls   r1, r3
+       movhi   r1, r2
+.L926:
+       add     r3, r3, #1
+       add     r2, r2, #2
+       strh    r1, [r0, #2]!   @ movhi
+       uxth    r3, r3
+       uxth    r2, r2
+       cmp     r3, #256
+       bne     .L898
+       b       .L890
+.L895:
+       cmp     r0, #3
+       bne     .L899
+       ldr     r0, .L927+4
+       mov     r2, #0
+       mov     r3, r2
+.L902:
+       uxth    r1, r3
+       cmp     r1, #5
+       bls     .L900
+       tst     r3, #1
+       moveq   r1, #4
+       movne   r1, #5
+       rsb     r1, r1, r2
+       uxth    r1, r1
+.L900:
+       add     r3, r3, #1
+       strh    r1, [r2, r0]    @ movhi
+       cmp     r3, #256
+       add     r2, r2, #2
+       bne     .L902
+       b       .L890
+.L899:
+       cmp     r0, #4
+       mov     r2, #0
+       bne     .L903
+       ldr     r3, .L927+8
+       movw    r1, #2228
+       strh    r2, [r3, r1]    @ movhi
+       movw    r2, #2230
+       mov     r1, #1
+       strh    r1, [r3, r2]    @ movhi
+       mov     r1, #2
+       add     r2, r2, r1
+       strh    r1, [r3, r2]    @ movhi
+       add     r2, r2, #2
+       mov     r1, #3
+       strh    r1, [r3, r2]    @ movhi
+       add     r2, r2, #2
+       mov     r1, #5
+       strh    r0, [r3, r2]    @ movhi
+       add     r2, r2, #2
+       ldr     r0, .L927+12
+       strh    r1, [r3, r2]    @ movhi
+       mov     r2, #2240
+       mov     r1, #7
+       strh    r1, [r3, r2]    @ movhi
+       add     r2, r2, #2
+       mov     r1, #8
+       strh    r1, [r3, r2]    @ movhi
+       mov     r2, #16
+       mov     r3, r1
+.L905:
+       tst     r3, #1
+       add     r3, r3, #1
+       moveq   r1, #6
+       movne   r1, #7
+       cmp     r3, #256
+       rsb     r1, r1, r2
+       add     r2, r2, #2
+       strh    r1, [r0, #2]!   @ movhi
+       uxth    r2, r2
+       bne     .L905
+       b       .L890
+.L903:
+       cmp     r0, #5
+       bne     .L906
+       ldr     r1, .L927
+       mov     r3, r2
+.L907:
+       strh    r3, [r1, #2]!   @ movhi
+       add     r3, r3, #1
+       uxth    r3, r3
+       cmp     r3, #16
+       bne     .L907
+       ldr     r2, .L927+16
+.L908:
+       strh    r3, [r2, #2]!   @ movhi
+       add     r3, r3, #2
+       uxth    r3, r3
+       cmp     r3, #496
+       bne     .L908
+       b       .L890
+.L906:
+       cmp     r0, #6
+       bne     .L890
+       ldr     r0, .L927
+       mov     r3, r2
+.L911:
+       uxth    r1, r3
+       cmp     r1, #5
+       bls     .L909
+       tst     r3, #1
+       moveq   r1, #10
+       movne   r1, #12
+       rsb     r1, r1, r2
+       uxth    r1, r1
+.L909:
+       add     r3, r3, #1
+       add     r2, r2, #3
+       cmp     r3, #256
+       strh    r1, [r0, #2]!   @ movhi
+       uxth    r2, r2
+       bne     .L911
+.L890:
+       mov     r2, #1024
+       ldr     r0, .L927+20
+       mov     r1, #255
+       uxth    r4, r4
+       bl      ftl_memset
+       ldr     r2, .L927
+       mov     r3, #0
+       ldr     r0, .L927+24
+       b       .L912
+.L913:
+       ldrh    r1, [r2, #2]!
+       add     r3, r3, #1
+       uxth    r3, r3
+       add     ip, r0, r1, asl #1
+       sub     ip, ip, #912
+       strh    r1, [ip, #0]    @ movhi
+.L912:
+       cmp     r3, r4
+       bcc     .L913
+       ldmfd   sp!, {r4, pc}
+.L928:
+       .align  2
+.L927:
+       .word   .LANCHOR0+2226
+       .word   .LANCHOR0+2228
+       .word   .LANCHOR0
+       .word   .LANCHOR0+2242
+       .word   .LANCHOR0+2258
+       .word   .LANCHOR2-912
+       .word   .LANCHOR2
+       .fnend
+       .size   BuildFlashLsbPageTable, .-BuildFlashLsbPageTable
+       .align  2
+       .global ftl_memcpy
+       .type   ftl_memcpy, %function
+ftl_memcpy:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       b       memcpy
+       .fnend
+       .size   ftl_memcpy, .-ftl_memcpy
+       .align  2
+       .global ftl_memcmp
+       .type   ftl_memcmp, %function
+ftl_memcmp:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       b       memcmp
+       .fnend
+       .size   ftl_memcmp, .-ftl_memcmp
+       .align  2
+       .global FlashSramLoadStore
+       .type   FlashSramLoadStore, %function
+FlashSramLoadStore:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       cmp     r2, #0
+       ldr     r4, .L934
+       mov     ip, r0
+       mov     r2, r3
+       ldr     r4, [r4, #112]
+       add     r4, r4, #4096
+       add     r1, r4, r1
+       movne   r0, r1
+       movne   r1, ip
+       ldmfd   sp!, {r4, lr}
+       b       memcpy
+.L935:
+       .align  2
+.L934:
+       .word   .LANCHOR2
+       .fnend
+       .size   FlashSramLoadStore, .-FlashSramLoadStore
+       .align  2
+       .global FlashCs123Init
+       .type   FlashCs123Init, %function
+FlashCs123Init:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       bx      lr
+       .fnend
+       .size   FlashCs123Init, .-FlashCs123Init
+       .align  2
+       .global rk_nand_de_init
+       .type   rk_nand_de_init, %function
+rk_nand_de_init:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       b       FlashDeInit
+       .fnend
+       .size   rk_nand_de_init, .-rk_nand_de_init
+       .align  2
+       .global rk_nand_suspend
+       .type   rk_nand_suspend, %function
+rk_nand_suspend:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       b       FlashSuspend
+       .fnend
+       .size   rk_nand_suspend, .-rk_nand_suspend
+       .align  2
+       .global rk_nand_resume
+       .type   rk_nand_resume, %function
+rk_nand_resume:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       b       FlashResume
+       .fnend
+       .size   rk_nand_resume, .-rk_nand_resume
+       .align  2
+       .global rk_ftl_get_capacity
+       .type   rk_ftl_get_capacity, %function
+rk_ftl_get_capacity:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L941
+       ldr     r0, [r3, #3952]
+       bx      lr
+.L942:
+       .align  2
+.L941:
+       .word   .LANCHOR0
+       .fnend
+       .size   rk_ftl_get_capacity, .-rk_ftl_get_capacity
+       .align  2
+       .global rknand_print_hex
+       .type   rknand_print_hex, %function
+rknand_print_hex:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
+       .save {r3, r4, r5, r6, r7, r8, sl, lr}
+       mov     r8, #0
+       mov     r6, r0
+       mov     r4, r1
+       mov     r5, r2
+       mov     sl, r3
+       mov     r7, r8
+       b       .L944
+.L950:
+       cmp     r8, #0
+       bne     .L945
+       ldr     r0, .L952
+       mov     r1, r6
+       mov     r2, r7
+       bl      printk
+.L945:
+       cmp     r5, #4
+       ldreq   r0, .L952+4
+       ldreq   r1, [r4, r7, asl #2]
+       beq     .L951
+       cmp     r5, #2
+       moveq   r3, r7, asl #1
+       ldreq   r0, .L952+4
+       ldreqsh r1, [r4, r3]
+       ldrne   r0, .L952+4
+       ldrneb  r1, [r4, r7]    @ zero_extendqisi2
+.L951:
+       add     r8, r8, #1
+       bl      printk
+       cmp     r8, #15
+       bls     .L949
+       ldr     r0, .L952+8
+       mov     r8, #0
+       ldr     r1, .L952+12
+       bl      printk
+.L949:
+       add     r7, r7, #1
+.L944:
+       cmp     r7, sl
+       bne     .L950
+       ldr     r0, .L952+8
+       ldr     r1, .L952+12
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
+       b       printk
+.L953:
+       .align  2
+.L952:
+       .word   .LC82
+       .word   .LC83
+       .word   .LC75
+       .word   .LC84
+       .fnend
+       .size   rknand_print_hex, .-rknand_print_hex
+       .align  2
+       .global NandcXferComp
+       .type   NandcXferComp, %function
+NandcXferComp:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r4, r5, r6, lr}
+       .save {r0, r1, r4, r5, r6, lr}
+       ldr     r6, .L977
+       add     r0, r6, r0, asl #3
+       ldr     r3, [r6, #12]
+       ldr     r4, [r0, #16]
+       cmp     r3, #3
+       bls     .L971
+       ldr     r3, [r4, #16]
+       tst     r3, #4
+       beq     .L971
+       mov     r0, r4
+       bl      wait_for_nandc_xfer_completed
+       ldr     r5, [r4, #16]
+       ldr     r3, [r4, #8]
+       ands    r5, r5, #2
+       str     r3, [sp, #0]
+       movne   r5, #0
+       bne     .L975
+       b       .L976
+.L961:
+       ldr     r3, [r6, #12]
+       cmp     r3, #5
+       bls     .L958
+       ldr     r3, [r4, #0]
+       str     r3, [sp, #4]
+       ldr     r3, [sp, #4]
+       tst     r3, #8192
+       beq     .L958
+       ldr     r3, [sp, #4]
+       tst     r3, #131072
+       bne     .L959
+.L958:
+       add     r5, r5, #1
+       bic     r3, r5, #-16777216
+       cmp     r3, #0
+       bne     .L975
+       ldr     r2, [r4, #28]
+       mov     r1, r5
+       ldr     r3, [sp, #0]
+       ubfx    r2, r2, #16, #5
+       ldr     r0, .L977+4
+       ubfx    r3, r3, #22, #6
+       bl      printk
+       ldr     r0, .L977+8
+       mov     r1, r4
+       mov     r2, #4
+       mov     r3, #512
+       bl      rknand_print_hex
+.L975:
+       ldr     r2, [r4, #28]
+       ldr     r3, [sp, #0]
+       ubfx    r2, r2, #16, #5
+       ubfx    r3, r3, #22, #6
+       cmp     r2, r3
+       blt     .L961
+.L959:
+       ldr     r4, .L977
+       ldr     r3, [r4, #3820]
+       cmp     r3, #0
+       beq     .L962
+       ldr     r1, [sp, #0]
+       mov     r2, #0
+       ldr     r0, [r4, #3812]
+       ubfx    r1, r1, #22, #5
+       mov     r1, r1, asl #10
+       bl      rknand_dma_unmap_single
+       ldr     r1, [sp, #0]
+       ldr     r0, [r4, #3816]
+       mov     r2, #0
+       ubfx    r1, r1, #22, #5
+       mov     r1, r1, asl #7
+       bl      rknand_dma_unmap_single
+       b       .L962
+.L965:
+       ldr     r3, [r4, #8]
+       add     r5, r5, #1
+       str     r3, [sp, #0]
+       bic     r3, r5, #-16777216
+       cmp     r3, #0
+       bne     .L976
+       ldr     r2, [sp, #0]
+       mov     r1, r5
+       ldr     r3, [r4, #28]
+       ldr     r0, .L977+12
+       ubfx    r3, r3, #16, #5
+       bl      printk
+       ldr     r0, .L977+8
+       mov     r1, r4
+       mov     r2, #4
+       mov     r3, #512
+       bl      rknand_print_hex
+.L976:
+       ldr     r3, [sp, #0]
+       tst     r3, #1048576
+       beq     .L965
+       ldr     r6, .L977
+       ldr     r3, [r6, #3828]
+       cmp     r3, #0
+       beq     .L966
+       mov     r0, r4
+       bl      NandcSendDumpDataStart
+.L966:
+       ldr     r3, [r6, #3820]
+       ldr     r5, .L977
+       cmp     r3, #0
+       beq     .L967
+       ldr     r1, [sp, #0]
+       mov     r2, #1
+       ldr     r0, [r5, #3812]
+       ubfx    r1, r1, #22, #5
+       mov     r1, r1, asl #10
+       bl      rknand_dma_unmap_single
+       ldr     r1, [sp, #0]
+       ldr     r0, [r5, #3816]
+       mov     r2, #1
+       ubfx    r1, r1, #22, #5
+       mov     r1, r1, asl #7
+       bl      rknand_dma_unmap_single
+.L967:
+       ldr     r3, .L977
+       ldr     r3, [r3, #3828]
+       cmp     r3, #0
+       beq     .L962
+       mov     r0, r4
+       bl      NandcSendDumpDataDone
+.L962:
+       ldr     r3, .L977
+       mov     r2, #0
+       str     r2, [r3, #3820]
+       b       .L954
+.L971:
+       ldr     r3, [r4, #8]
+       str     r3, [sp, #0]
+       ldr     r3, [sp, #0]
+       tst     r3, #1048576
+       beq     .L971
+.L954:
+       ldmfd   sp!, {r2, r3, r4, r5, r6, pc}
+.L978:
+       .align  2
+.L977:
+       .word   .LANCHOR0
+       .word   .LC85
+       .word   .LC86
+       .word   .LC87
+       .fnend
+       .size   NandcXferComp, .-NandcXferComp
+       .align  2
+       .global NandcXferData
+       .type   NandcXferData, %function
+NandcXferData:
+       .fnstart
+       @ args = 4, pretend = 0, frame = 80
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r4, r3
+       mov     r9, r3
+       ldr     r3, .L1017
+       .pad #92
+       sub     sp, sp, #92
+       tst     r4, #63
+       add     r3, r3, r0, asl #3
+       mov     r7, r0
+       mov     fp, r1
+       mov     sl, r2
+       ldr     r5, [sp, #128]
+       ldr     r6, [r3, #16]
+       bne     .L980
+       cmp     r5, #0
+       bne     .L981
+       add     r0, sp, #24
+       mov     r1, #255
+       mov     r2, #64
+       add     r5, sp, #24
+       bl      ftl_memset
+.L981:
+       mov     r0, r7
+       mov     r1, fp
+       mov     r2, sl
+       mov     r3, #0
+       stmia   sp, {r4, r5}
+       bl      NandcXferStart
+       mov     r0, r7
+       bl      NandcXferComp
+       cmp     fp, #0
+       movne   r4, #0
+       bne     .L982
+       ldr     r1, .L1017
+       mov     r0, sl, lsr #1
+       mov     r3, fp
+       mov     r2, fp
+       ldr     ip, [r1, #3832]
+       mov     r4, r1
+       cmp     ip, #24
+       movhi   ip, #128
+       movls   ip, #64
+       b       .L984
+.L985:
+       ldr     r1, [r4, #3800]
+       mov     r3, r3, lsr #2
+       add     r2, r2, #1
+       ldr     r3, [r1, r3, asl #2]
+       mov     r1, r3, lsr #8
+       strb    r3, [r5, #0]
+       strb    r1, [r5, #1]
+       mov     r1, r3, lsr #16
+       mov     r3, r3, lsr #24
+       strb    r1, [r5, #2]
+       strb    r3, [r5, #3]
+       add     r5, r5, #4
+       mov     r3, r7
+.L984:
+       cmp     r2, r0
+       add     r7, r3, ip
+       ldr     r1, .L1017
+       bcc     .L985
+       mov     r3, #0
+       ldr     r0, [r1, #3832]
+       mov     sl, sl, lsr #2
+       ldr     r1, [r1, #12]
+       mov     r4, r3
+       b       .L986
+.L992:
+       add     r2, r3, #8
+       ldr     r2, [r6, r2, asl #2]
+       str     r2, [sp, #20]
+       ldr     r2, [sp, #20]
+       tst     r2, #4
+       bne     .L1007
+       ldr     r2, [sp, #20]
+       ands    r2, r2, #32768
+       bne     .L1007
+       cmp     r1, #5
+       bls     .L988
+       ldr     r7, [sp, #20]
+       ldr     ip, [sp, #20]
+       ldr     r5, [sp, #20]
+       ubfx    r7, r7, #3, #5
+       ldr     r2, [sp, #20]
+       ubfx    ip, ip, #27, #1
+       ubfx    r5, r5, #16, #5
+       ubfx    r2, r2, #29, #1
+       orr     ip, r7, ip, asl #5
+       orr     r2, r5, r2, asl #5
+       cmp     ip, r2
+       ldr     ip, [sp, #20]
+       ldrhi   r2, [sp, #20]
+       ubfxhi  ip, ip, #3, #5
+       ldrls   r2, [sp, #20]
+       ubfxls  ip, ip, #16, #5
+       ubfxhi  r2, r2, #27, #1
+       ubfxls  r2, r2, #29, #1
+       b       .L1015
+.L988:
+       cmp     r1, #3
+       bls     .L990
+       ldr     r7, [sp, #20]
+       ldr     ip, [sp, #20]
+       ldr     r5, [sp, #20]
+       ubfx    r7, r7, #3, #5
+       ldr     r2, [sp, #20]
+       ubfx    ip, ip, #28, #1
+       ubfx    r5, r5, #16, #5
+       ubfx    r2, r2, #30, #1
+       orr     ip, r7, ip, asl #5
+       orr     r2, r5, r2, asl #5
+       cmp     ip, r2
+       ldr     ip, [sp, #20]
+       ldrhi   r2, [sp, #20]
+       ubfxhi  ip, ip, #3, #5
+       ldrls   r2, [sp, #20]
+       ubfxls  ip, ip, #16, #5
+       ubfxhi  r2, r2, #28, #1
+       ubfxls  r2, r2, #30, #1
+.L1015:
+       orr     r2, ip, r2, asl #5
+.L990:
+       cmp     r4, r2
+       movcc   r4, r2
+       b       .L987
+.L1007:
+       mvn     r4, #0
+.L987:
+       add     r3, r3, #1
+.L986:
+       cmp     r3, sl
+       bcs     .L982
+       cmp     r0, #0
+       bne     .L992
+.L982:
+       mov     r3, #0
+       str     r3, [r6, #16]
+       b       .L993
+.L980:
+       cmp     r1, #1
+       mov     r8, #0
+       bne     .L1013
+       b       .L994
+.L997:
+       cmp     r5, #0
+       and     r4, r8, #3
+       mov     r0, r6
+       mov     r1, #1
+       movne   r3, #2
+       moveq   r3, #0
+       mla     r3, r8, r3, r5
+       mov     r2, r4
+       add     r8, r8, #2
+       str     r3, [sp, #0]
+       mov     r3, r9
+       bl      NandcCopy1KB
+       mov     r3, #0
+       mov     r0, r7
+       str     r3, [sp, #0]
+       str     r3, [sp, #4]
+       mov     r1, #1
+       mov     r2, #2
+       mov     r3, r4
+       bl      NandcXferStart
+       mov     r0, r7
+       bl      NandcXferComp
+       add     r9, r9, #1024
+.L994:
+       cmp     r8, sl
+       bcc     .L997
+       mov     r4, #0
+       b       .L993
+.L1013:
+       mov     r1, r8
+       mov     r2, #2
+       mov     r3, r8
+       str     r8, [sp, #0]
+       str     r8, [sp, #4]
+       mov     r4, r8
+       bl      NandcXferStart
+       str     fp, [sp, #12]
+       mov     ip, r8
+       mov     fp, r6
+       mov     r6, r5
+       b       .L1016
+.L1002:
+       mov     r0, r7
+       bl      NandcXferComp
+       ldr     r3, [fp, #32]
+       add     ip, r5, #2
+       cmp     ip, sl
+       str     r3, [sp, #20]
+       bcs     .L999
+       mov     r3, #0
+       mov     r0, r7
+       str     r3, [sp, #0]
+       mov     r1, r3
+       str     r3, [sp, #4]
+       mov     r2, #2
+       and     r3, ip, #3
+       str     ip, [sp, #8]
+       bl      NandcXferStart
+       ldr     ip, [sp, #8]
+.L999:
+       ldr     r3, [sp, #20]
+       tst     r3, #4
+       mvnne   r4, #0
+       bne     .L1000
+       ldr     r2, [sp, #20]
+       ldr     r3, [sp, #20]
+       ubfx    r2, r2, #3, #5
+       ubfx    r3, r3, #27, #1
+       orr     r3, r2, r3, asl #5
+       cmp     r4, r3
+       movcc   r4, r3
+.L1000:
+       cmp     r6, #0
+       and     r2, r8, #3
+       mov     r0, fp
+       mov     r1, #0
+       movne   r3, #2
+       moveq   r3, #0
+       mla     r5, r5, r3, r6
+       mov     r3, r9
+       str     ip, [sp, #8]
+       add     r8, r8, #2
+       add     r9, r9, #1024
+       str     r5, [sp, #0]
+       bl      NandcCopy1KB
+       ldr     ip, [sp, #8]
+.L1016:
+       cmp     ip, sl
+       mov     r5, ip
+       bcc     .L1002
+       mov     r6, fp
+       ldr     fp, [sp, #12]
+.L993:
+       ldr     r3, .L1017
+       rsbs    fp, fp, #1
+       movcc   fp, #0
+       ldr     r3, [r3, #12]
+       cmp     r3, #5
+       movls   fp, #0
+       cmp     fp, #0
+       beq     .L1003
+       ldr     r3, [r6, #0]
+       and     r2, r3, #139264
+       cmp     r2, #139264
+       orreq   r3, r3, #131072
+       streq   r3, [r6, #0]
+       mvneq   r4, #0
+.L1003:
+       mov     r0, r4
+       add     sp, sp, #92
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1018:
+       .align  2
+.L1017:
+       .word   .LANCHOR0
+       .fnend
+       .size   NandcXferData, .-NandcXferData
+       .align  2
+       .global FlashProgPage
+       .type   FlashProgPage, %function
+FlashProgPage:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r4, r5, r6, r7, r8, lr}
+       .save {r0, r1, r4, r5, r6, r7, r8, lr}
+       mov     r8, r3
+       ldr     r3, .L1022
+       subs    r4, r0, #0
+       mov     r5, r1
+       mov     r6, r2
+       ldrb    r7, [r3, #2697] @ zero_extendqisi2
+       bne     .L1020
+       ldr     r3, .L1022+4
+       ldrb    r2, [r3, #1]    @ zero_extendqisi2
+       ldr     r1, [r3, #4]
+       mul     r2, r1, r2
+       cmp     r5, r2
+       bcs     .L1020
+       ldrb    r3, [r3, #0]    @ zero_extendqisi2
+       cmp     r3, #0
+       subeq   r7, r7, #2
+       movne   r7, #4
+.L1020:
+       mov     r0, r4
+       bl      NandcWaitFlashReady
+       mov     r0, r4
+       bl      NandcFlashCs
+       mov     r0, r4
+       mov     r1, r5
+       bl      FlashProgFirstCmd
+       uxtb    r2, r7
+       mov     r3, r6
+       mov     r0, r4
+       mov     r1, #1
+       str     r8, [sp, #0]
+       bl      NandcXferData
+       mov     r1, r5
+       mov     r0, r4
+       bl      FlashProgSecondCmd
+       mov     r0, r4
+       bl      NandcWaitFlashReady
+       mov     r1, r5
+       mov     r0, r4
+       bl      FlashReadStatus
+       mov     r5, r0
+       mov     r0, r4
+       bl      NandcFlashDeCs
+       and     r0, r5, #1
+       ldmfd   sp!, {r2, r3, r4, r5, r6, r7, r8, pc}
+.L1023:
+       .align  2
+.L1022:
+       .word   .LANCHOR1
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashProgPage, .-FlashProgPage
+       .align  2
+       .global FlashPageProgMsbFFData
+       .type   FlashPageProgMsbFFData, %function
+FlashPageProgMsbFFData:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 24
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r8, r2
+       ldr     r2, .L1035
+       .pad #28
+       sub     sp, sp, #28
+       mov     r6, r0
+       str     r1, [sp, #12]
+       ldrb    r1, [r2, #80]   @ zero_extendqisi2
+       ldr     r3, [r2, #2776]
+       cmp     r1, #0
+       ldrb    r3, [r3, #19]   @ zero_extendqisi2
+       beq     .L1025
+       ldr     r1, [r2, #3788]
+       ldr     r2, .L1035+4
+       cmp     r1, r2
+       beq     .L1024
+.L1025:
+       sub     r2, r3, #5
+       uxtb    r2, r2
+       cmp     r3, #68
+       cmpne   r2, #1
+       bls     .L1028
+       cmp     r3, #35
+       cmpne   r3, #17
+       beq     .L1028
+       cmp     r3, #18
+       cmpne   r3, #19
+       beq     .L1028
+       b       .L1024
+.L1033:
+       add     r3, sl, r8, asl #1
+       sub     r3, r3, #912
+       ldrh    r2, [r3, #0]
+       movw    r3, #65535
+       cmp     r2, r3
+       bne     .L1024
+       mov     r1, #255
+       ldr     r0, [sl, #116]
+       mov     r2, #32768
+       bl      ftl_memset
+       ldr     r1, [sp, #20]
+       cmp     r1, #1
+       bhi     .L1029
+       ldr     r3, .L1035+8
+       ldr     r2, [r3, #2964]
+       cmp     r2, #0
+       beq     .L1030
+       ldr     r1, [sp, #16]
+       mov     r0, r6
+       mov     fp, #0
+       ldrb    r4, [r1, #20]   @ zero_extendqisi2
+       ldr     r5, [r1, #16]
+       add     r4, r4, #8
+       str     r2, [sp, #8]
+       str     r3, [sp, #4]
+       bl      NandcFlashCs
+       add     r7, r5, r4, asl #8
+       mov     r1, #239
+       mov     r0, r6
+       str     r1, [r7, #8]
+       mov     r1, #146
+       str     r1, [r7, #4]
+       str     fp, [r5, r4, asl #8]
+       str     fp, [r5, r4, asl #8]
+       str     fp, [r5, r4, asl #8]
+       str     fp, [r5, r4, asl #8]
+       bl      NandcFlashDeCs
+       ldr     r2, [sp, #8]
+       cmp     r2, #1
+       bne     .L1031
+       mov     r0, r6
+       bl      NandcFlashCs
+       mov     r2, #238
+       mov     r0, #2000
+       str     r2, [r7, #8]
+       mov     r2, #146
+       str     r2, [r7, #4]
+       bl      NandcDelayns
+       ldr     r2, [r5, r4, asl #8]
+       mov     r0, r6
+       str     r2, [sp, #8]
+       bl      NandcFlashDeCs
+       ldr     r2, [sp, #8]
+       ldr     r3, [sp, #4]
+       tst     r2, #255
+       moveq   r2, #2
+       streq   r2, [r3, #2964]
+.L1032:
+       strne   fp, [r3, #2964]
+       bne     .L1024
+.L1031:
+       ldr     r3, [sp, #12]
+       mov     r0, r6
+       ldr     r2, [sl, #116]
+       add     r1, r8, r3
+       mov     r3, #0
+       bl      FlashProgPage
+       mov     r0, r6
+       bl      NandcFlashCs
+       mov     r3, #239
+       mov     r0, r6
+       str     r3, [r7, #8]
+       mov     r3, #146
+       str     r3, [r7, #4]
+       mov     r3, #1
+       str     r3, [r5, r4, asl #8]
+       mov     r3, #0
+       str     r3, [r5, r4, asl #8]
+       str     r3, [r5, r4, asl #8]
+       str     r3, [r5, r4, asl #8]
+       bl      NandcFlashDeCs
+       b       .L1030
+.L1029:
+       ldr     r2, [sp, #12]
+       mov     r0, r6
+       mov     r3, #0
+       add     r1, r8, r2
+       ldr     r2, [sl, #116]
+       bl      FlashProgPage
+.L1030:
+       add     r8, r8, #1
+       uxth    r8, r8
+       b       .L1034
+.L1028:
+       ldr     sl, .L1035+12
+       sub     r3, r3, #17
+       ldr     r9, .L1035
+       uxtb    r3, r3
+       str     r3, [sp, #20]
+       add     r3, r9, r6, asl #3
+       str     r3, [sp, #16]
+.L1034:
+       ldr     r3, [r9, #2776]
+       ldrh    r3, [r3, #10]
+       cmp     r3, r8
+       bhi     .L1033
+.L1024:
+       add     sp, sp, #28
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1036:
+       .align  2
+.L1035:
+       .word   .LANCHOR0
+       .word   1446522928
+       .word   .LANCHOR1
+       .word   .LANCHOR2
+       .fnend
+       .size   FlashPageProgMsbFFData, .-FlashPageProgMsbFFData
+       .align  2
+       .global FlashReadRawPage
+       .type   FlashReadRawPage, %function
+FlashReadRawPage:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r4, r5, r6, r7, r8, lr}
+       .save {r0, r1, r4, r5, r6, r7, r8, lr}
+       mov     r8, r3
+       ldr     r3, .L1040
+       subs    r4, r0, #0
+       mov     r6, r1
+       mov     r5, r2
+       ldrb    r7, [r3, #2697] @ zero_extendqisi2
+       bne     .L1038
+       ldr     r3, .L1040+4
+       ldrb    r2, [r3, #1]    @ zero_extendqisi2
+       ldr     r3, [r3, #4]
+       mul     r3, r3, r2
+       cmp     r1, r3
+       movcc   r7, #4
+.L1038:
+       mov     r0, r4
+       bl      NandcWaitFlashReady
+       mov     r0, r4
+       bl      NandcFlashCs
+       mov     r1, r6
+       mov     r0, r4
+       bl      FlashReadCmd
+       mov     r0, r4
+       bl      NandcWaitFlashReady
+       mov     r3, r5
+       mov     r1, #0
+       mov     r2, r7
+       mov     r0, r4
+       str     r8, [sp, #0]
+       bl      NandcXferData
+       mov     r5, r0
+       mov     r0, r4
+       bl      NandcFlashDeCs
+       mov     r0, r5
+       ldmfd   sp!, {r2, r3, r4, r5, r6, r7, r8, pc}
+.L1041:
+       .align  2
+.L1040:
+       .word   .LANCHOR1
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashReadRawPage, .-FlashReadRawPage
+       .align  2
+       .global HynixReadRetrial
+       .type   HynixReadRetrial, %function
+HynixReadRetrial:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r7, r3
+       ldr     fp, .L1053
+       mov     r6, r0
+       str     r1, [sp, #4]
+       mov     sl, r2
+       add     r3, fp, r0
+       mov     r8, #0
+       ldrb    r9, [fp, #2910] @ zero_extendqisi2
+       mvn     r4, #0
+       ldrb    r5, [r3, #2920] @ zero_extendqisi2
+       bl      NandcWaitFlashReady
+       mov     ip, fp
+       b       .L1043
+.L1048:
+       add     r5, r5, #1
+       ldrb    r1, [fp, #2909] @ zero_extendqisi2
+       mov     r0, r6
+       ldr     r2, .L1053+4
+       uxtb    r5, r5
+       str     ip, [sp, #0]
+       cmp     r5, r9
+       movcs   r5, #0
+       mov     r3, r5
+       bl      HynixSetRRPara
+       mov     r0, r6
+       ldr     r1, [sp, #4]
+       mov     r2, sl
+       mov     r3, r7
+       bl      FlashReadRawPage
+       ldr     ip, [sp, #0]
+       cmn     r0, #1
+       beq     .L1045
+       ldrb    r3, [ip, #3836] @ zero_extendqisi2
+       cmn     r4, #1
+       moveq   r4, r0
+       add     r3, r3, r3, asl #1
+       cmp     r0, r3, lsr #2
+       bcc     .L1052
+       mov     r7, #0
+       mov     sl, r7
+.L1045:
+       add     r8, r8, #1
+.L1043:
+       cmp     r8, r9
+       bcc     .L1048
+       b       .L1047
+.L1052:
+       mov     r4, r0
+.L1047:
+       ldr     r3, .L1053
+       adds    r0, r4, #1
+       add     r6, r3, r6
+       movne   r0, #1
+       ldrb    r3, [r3, #3836] @ zero_extendqisi2
+       strb    r5, [r6, #2920]
+       add     r3, r3, r3, asl #1
+       cmp     r4, r3, lsr #2
+       movcc   r0, #0
+       andcs   r0, r0, #1
+       cmp     r0, #0
+       moveq   r0, r4
+       movne   r0, #256
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1054:
+       .align  2
+.L1053:
+       .word   .LANCHOR0
+       .word   .LANCHOR0+2912
+       .fnend
+       .size   HynixReadRetrial, .-HynixReadRetrial
+       .align  2
+       .global MicronReadRetrial
+       .type   MicronReadRetrial, %function
+MicronReadRetrial:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 16
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #20
+       sub     sp, sp, #20
+       mov     fp, r2
+       mov     r9, r3
+       str     r1, [sp, #12]
+       mov     sl, #0
+       str     r0, [sp, #8]
+       bl      NandcWaitFlashReady
+       ldr     r1, [sp, #8]
+       mvn     r5, #0
+       ldr     r3, .L1067
+       ldr     ip, .L1067+4
+       add     r2, r3, r1, asl #3
+       ldrb    r7, [r2, #20]   @ zero_extendqisi2
+       ldr     r6, [r2, #16]
+       add     r7, r7, #8
+       mov     r8, r6
+       add     r4, r6, r7, asl #8
+       b       .L1066
+.L1060:
+       mov     r2, #239
+       mov     r3, #137
+       str     r2, [r4, #8]
+       mov     r0, #200
+       str     r3, [r4, #4]
+       mov     r6, #0
+       str     ip, [sp, #4]
+       add     sl, sl, #1
+       bl      NandcDelayns
+       str     sl, [r4, #0]
+       ldr     r0, [sp, #8]
+       mov     r2, fp
+       str     r6, [r4, #0]
+       mov     r3, r9
+       str     r6, [r4, #0]
+       ldr     r1, [sp, #12]
+       str     r6, [r4, #0]
+       bl      FlashReadRawPage
+       ldr     ip, [sp, #4]
+       cmn     r0, #1
+       beq     .L1066
+       ldr     r1, .L1067
+       cmn     r5, #1
+       moveq   r5, r0
+       ldrb    r3, [r1, #3836] @ zero_extendqisi2
+       add     r3, r3, r3, asl #1
+       cmp     r0, r3, lsr #2
+       bcc     .L1063
+       mov     r9, r6
+       mov     fp, r6
+.L1066:
+       ldrb    r3, [ip, #120]  @ zero_extendqisi2
+       cmp     sl, r3
+       bcc     .L1060
+       mov     r6, r8
+       b       .L1059
+.L1063:
+       mov     r6, r8
+       mov     r5, r0
+.L1059:
+       mov     r3, #239
+       mov     r0, #200
+       str     r3, [r4, #8]
+       mov     r3, #137
+       str     r3, [r4, #4]
+       bl      NandcDelayns
+       mov     r3, #0
+       str     r3, [r6, r7, asl #8]
+       adds    r0, r5, #1
+       str     r3, [r6, r7, asl #8]
+       str     r3, [r6, r7, asl #8]
+       movne   r0, #1
+       str     r3, [r6, r7, asl #8]
+       ldr     r3, .L1067
+       ldrb    r3, [r3, #3836] @ zero_extendqisi2
+       add     r3, r3, r3, asl #1
+       cmp     r5, r3, lsr #2
+       movcc   r0, #0
+       andcs   r0, r0, #1
+       cmp     r0, #0
+       moveq   r0, r5
+       movne   r0, #256
+       add     sp, sp, #20
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1068:
+       .align  2
+.L1067:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   MicronReadRetrial, .-MicronReadRetrial
+       .align  2
+       .global SamsungReadRetrial
+       .type   SamsungReadRetrial, %function
+SamsungReadRetrial:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r8, r0
+       mov     r7, r2
+       mov     r6, r3
+       mov     r9, r1
+       bl      NandcWaitFlashReady
+       ldr     ip, .L1078
+       mov     r5, #1
+       mvn     r4, #0
+       ldr     fp, .L1078+4
+       add     r3, ip, r8, asl #3
+       ldrb    sl, [r3, #20]   @ zero_extendqisi2
+       ldr     r2, [r3, #16]
+       add     sl, sl, #8
+       add     sl, r2, sl, asl #8
+       b       .L1070
+.L1074:
+       mov     r0, sl
+       uxtb    r1, r5
+       str     ip, [sp, #4]
+       bl      SamsungSetRRPara
+       mov     r0, r8
+       mov     r1, r9
+       mov     r2, r7
+       mov     r3, r6
+       bl      FlashReadRawPage
+       ldr     ip, [sp, #4]
+       cmn     r0, #1
+       beq     .L1071
+       ldrb    r3, [ip, #3836] @ zero_extendqisi2
+       cmn     r4, #1
+       moveq   r4, r0
+       add     r3, r3, r3, asl #1
+       cmp     r0, r3, lsr #2
+       bcc     .L1077
+       mov     r6, #0
+       mov     r7, r6
+.L1071:
+       add     r5, r5, #1
+.L1070:
+       ldrb    r3, [fp, #120]  @ zero_extendqisi2
+       add     r3, r3, #1
+       cmp     r5, r3
+       bcc     .L1074
+       b       .L1073
+.L1077:
+       mov     r4, r0
+.L1073:
+       mov     r0, sl
+       mov     r1, #0
+       bl      SamsungSetRRPara
+       ldr     r3, .L1078
+       adds    r0, r4, #1
+       ldrb    r3, [r3, #3836] @ zero_extendqisi2
+       movne   r0, #1
+       add     r3, r3, r3, asl #1
+       cmp     r4, r3, lsr #2
+       movcc   r0, #0
+       andcs   r0, r0, #1
+       cmp     r0, #0
+       moveq   r0, r4
+       movne   r0, #256
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1079:
+       .align  2
+.L1078:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   SamsungReadRetrial, .-SamsungReadRetrial
+       .align  2
+       .global ToshibaReadRetrial
+       .type   ToshibaReadRetrial, %function
+ToshibaReadRetrial:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r8, r0
+       str     r1, [sp, #4]
+       mov     r9, r2
+       mov     r7, r3
+       bl      NandcWaitFlashReady
+       ldr     r3, .L1101
+       add     r2, r3, r8, asl #3
+       ldr     r1, [r2, #16]
+       ldrb    r4, [r2, #20]   @ zero_extendqisi2
+       ldrb    r2, [r3, #3765] @ zero_extendqisi2
+       add     r4, r4, #8
+       sub     r2, r2, #67
+       add     r4, r1, r4, asl #8
+       uxtb    r2, r2
+       cmp     r2, #1
+       movls   sl, #0
+       bls     .L1081
+       ldrb    sl, [r3, #3777] @ zero_extendqisi2
+       cmp     sl, #0
+       beq     .L1082
+       mov     r0, #0
+       mov     sl, #1
+       bl      NandcSetDdrMode
+.L1082:
+       mov     r3, #92
+       str     r3, [r4, #8]
+       mov     r3, #197
+       str     r3, [r4, #8]
+.L1081:
+       mov     r6, #1
+       mvn     r5, #0
+       ldr     fp, .L1101
+       b       .L1083
+.L1092:
+       ldrb    r3, [fp, #3765] @ zero_extendqisi2
+       mov     r0, r4
+       uxtb    r1, r6
+       sub     r3, r3, #67
+       uxtb    r3, r3
+       cmp     r3, #1
+       bhi     .L1084
+       bl      SandiskSetRRPara
+       b       .L1085
+.L1084:
+       bl      ToshibaSetRRPara
+.L1085:
+       ldr     r2, .L1101
+       ldrb    r3, [r2, #3765] @ zero_extendqisi2
+       cmp     r3, #34
+       bne     .L1086
+       ldr     r2, .L1101+4
+       ldrb    r3, [r2, #120]  @ zero_extendqisi2
+       sub     r3, r3, #3
+       cmp     r6, r3
+       moveq   r3, #179
+       streq   r3, [r4, #8]
+.L1086:
+       cmp     sl, #0
+       mov     r3, #38
+       str     r3, [r4, #8]
+       mov     r3, #93
+       str     r3, [r4, #8]
+       beq     .L1087
+       mov     r0, #4
+       bl      NandcSetDdrMode
+       ldr     r1, [sp, #4]
+       mov     r2, r9
+       mov     r3, r7
+       mov     r0, r8
+       bl      FlashReadRawPage
+       mov     r3, r0
+       mov     r0, #0
+       str     r3, [sp, #0]
+       bl      NandcSetDdrMode
+       ldr     r3, [sp, #0]
+       b       .L1088
+.L1087:
+       mov     r3, r7
+       mov     r0, r8
+       ldr     r1, [sp, #4]
+       mov     r2, r9
+       bl      FlashReadRawPage
+       mov     r3, r0
+.L1088:
+       cmn     r3, #1
+       beq     .L1089
+       ldrb    r2, [fp, #3836] @ zero_extendqisi2
+       cmn     r5, #1
+       moveq   r5, r3
+       add     r2, r2, r2, asl #1
+       cmp     r3, r2, lsr #2
+       bcc     .L1100
+       mov     r7, #0
+       mov     r9, r7
+.L1089:
+       add     r6, r6, #1
+.L1083:
+       ldr     r2, .L1101+4
+       ldrb    r3, [r2, #120]  @ zero_extendqisi2
+       add     r3, r3, #1
+       cmp     r6, r3
+       bcc     .L1092
+       b       .L1091
+.L1100:
+       mov     r5, r3
+.L1091:
+       ldr     r6, .L1101
+       mov     r0, r4
+       mov     r1, #0
+       ldrb    r3, [r6, #3765] @ zero_extendqisi2
+       sub     r3, r3, #67
+       uxtb    r3, r3
+       cmp     r3, #1
+       bhi     .L1093
+       bl      SandiskSetRRPara
+       b       .L1094
+.L1093:
+       bl      ToshibaSetRRPara
+.L1094:
+       mov     r3, #255
+       str     r3, [r4, #8]
+       ldrb    r3, [r6, #3836] @ zero_extendqisi2
+       adds    r2, r5, #1
+       mov     r0, r8
+       movne   r2, #1
+       add     r3, r3, r3, asl #1
+       cmp     r5, r3, lsr #2
+       movcc   r3, #0
+       andcs   r3, r2, #1
+       cmp     r3, #0
+       movne   r5, #256
+       bl      NandcWaitFlashReady
+       cmp     sl, #0
+       beq     .L1096
+       mov     r0, #4
+       bl      NandcSetDdrMode
+.L1096:
+       mov     r0, r5
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1102:
+       .align  2
+.L1101:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   ToshibaReadRetrial, .-ToshibaReadRetrial
+       .align  2
+       .global FlashSavePhyInfo
+       .type   FlashSavePhyInfo, %function
+FlashSavePhyInfo:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
+       .save {r3, r4, r5, r6, r7, r8, sl, lr}
+       mov     r6, #0
+       ldr     r5, .L1110
+       ldr     r7, .L1110+4
+       ldr     r8, .L1110+8
+       ldr     r3, [r5, #3780]
+       ldrb    r0, [r7, #128]  @ zero_extendqisi2
+       str     r3, [r7, #124]
+       bl      FlashBchSel
+       mov     r1, #0
+       mov     r2, #2048
+       ldr     r0, [r5, #3780]
+       bl      ftl_memset
+       ldr     r3, [r7, #124]
+       ldr     r1, .L1110+12
+       mov     r2, #32
+       str     r8, [r3, #0]
+       ldr     r4, [r7, #124]
+       ldrb    r3, [r5, #3766] @ zero_extendqisi2
+       add     r0, r4, #16
+       strh    r3, [r4, #12]   @ movhi
+       ldrb    r3, [r5, #1]    @ zero_extendqisi2
+       strh    r3, [r4, #14]   @ movhi
+       ldrb    r3, [r5, #3777] @ zero_extendqisi2
+       str     r3, [r4, #1076]
+       bl      memcpy
+       add     r0, r4, #80
+       ldr     r1, .L1110+16
+       mov     r2, #8
+       bl      memcpy
+       add     r0, r4, #96
+       ldr     r1, .L1110+20
+       mov     r2, #32
+       bl      memcpy
+       ldr     r0, [r7, #124]
+       ldr     r1, .L1110+24
+       mov     r2, #32
+       add     r0, r0, #160
+       bl      memcpy
+       ldr     r4, [r7, #124]
+       add     r1, r5, #48
+       mov     r2, #32
+       add     r0, r4, #192
+       bl      memcpy
+       mov     r2, #852
+       add     r0, r4, #224
+       ldr     r1, .L1110+28
+       bl      memcpy
+       add     r0, r4, #12
+       movw    r1, #2036
+       bl      JSHash
+       movw    r3, #1592
+       str     r3, [r4, #4]
+       ldr     r3, [r7, #116]
+       str     r3, [r7, #124]
+       str     r0, [r4, #8]
+       mov     r0, #0
+       bl      flash_enter_slc_mode
+       mov     r4, r6
+.L1106:
+       ldr     r1, [r5, #4]
+       mov     r0, #0
+       mov     r2, r0
+       mul     r1, r1, r4
+       bl      FlashEraseBlock
+       ldr     r1, [r5, #4]
+       mov     r0, #0
+       ldr     r2, [r5, #3780]
+       mov     r3, r0
+       mul     r1, r1, r4
+       bl      FlashProgPage
+       ldr     r1, [r5, #4]
+       mov     r0, #0
+       ldr     r2, [r5, #3780]
+       mov     r3, r0
+       mul     r1, r1, r4
+       add     r1, r1, #1
+       bl      FlashProgPage
+       ldr     r1, [r5, #4]
+       mov     r0, #0
+       ldr     r2, [r7, #116]
+       mov     r3, r0
+       mul     r1, r1, r4
+       bl      FlashReadRawPage
+       cmn     r0, #1
+       beq     .L1104
+       ldr     sl, [r7, #124]
+       ldr     r3, [sl, #0]
+       cmp     r3, r8
+       bne     .L1104
+       add     r0, sl, #12
+       movw    r1, #2036
+       bl      JSHash
+       ldr     r3, [sl, #8]
+       cmp     r3, r0
+       bne     .L1104
+       add     r3, r4, #1
+       str     r3, [r7, #132]
+       ldr     r3, [r5, #4]
+       add     r6, r6, #1
+       cmp     r6, #1
+       mul     r3, r3, r4
+       str     r3, [r7, #136]
+       bhi     .L1105
+.L1104:
+       add     r4, r4, #1
+       cmp     r4, #4
+       bne     .L1106
+.L1105:
+       mov     r0, #0
+       bl      flash_exit_slc_mode
+       cmp     r6, #0
+       mvneq   r0, #0
+       movne   r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, pc}
+.L1111:
+       .align  2
+.L1110:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   1312902724
+       .word   .LANCHOR0+2132
+       .word   .LANCHOR0+3768
+       .word   .LANCHOR0+2740
+       .word   .LANCHOR1+2688
+       .word   .LANCHOR0+2908
+       .fnend
+       .size   FlashSavePhyInfo, .-FlashSavePhyInfo
+       .align  2
+       .global FlashReadIdbDataRaw
+       .type   FlashReadIdbDataRaw, %function
+FlashReadIdbDataRaw:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r2, #4
+       mov     sl, r0
+       ldr     r1, .L1123
+       add     r0, sp, #4
+       bl      memcpy
+       ldr     r3, .L1123+4
+       ldr     r2, [r3, #3788]
+       ldrb    fp, [r3, #3836] @ zero_extendqisi2
+       ldr     r3, .L1123+8
+       cmp     r2, r3
+       bne     .L1113
+       mov     r0, #0
+       bl      flash_enter_slc_mode
+.L1113:
+       ldr     r7, .L1123+4
+       mov     r0, sl
+       mov     r1, #0
+       mov     r2, #2048
+       bl      ftl_memset
+       mvn     r8, #0
+       mov     r4, #2
+       mov     r6, r7
+       ldr     r9, .L1123+12
+       b       .L1114
+.L1121:
+       mov     r5, #0
+.L1116:
+       add     r3, sp, #4
+       ldrb    r0, [r3, r5]    @ zero_extendqisi2
+       bl      FlashBchSel
+       ldr     r1, [r7, #4]
+       mov     r0, #0
+       ldr     r2, [r7, #3780]
+       mov     r3, r0
+       mul     r1, r1, r4
+       bl      FlashReadRawPage
+       cmn     r0, #1
+       bne     .L1115
+       add     r5, r5, #1
+       cmp     r5, #4
+       bne     .L1116
+       b       .L1117
+.L1115:
+       ldr     r3, [r6, #3780]
+       ldr     r3, [r3, #0]
+       cmp     r3, r9
+       bne     .L1117
+       add     r3, sp, #8
+       ldr     r0, .L1123+16
+       add     r5, r3, r5
+       ldrb    r1, [r5, #-4]   @ zero_extendqisi2
+       bl      printk
+       mov     r2, #2048
+       mov     r0, sl
+       ldr     r1, [r6, #3780]
+       bl      memcpy
+       ldr     r3, [r6, #3780]
+       ldr     r3, [r3, #512]
+       strb    r3, [r6, #1]
+       ldr     r3, .L1123+20
+       ldr     r2, [r3, #132]
+       cmp     r2, r4
+       bls     .L1120
+       str     r4, [r3, #132]
+       mov     r8, #0
+       bl      FlashSavePhyInfo
+.L1117:
+       add     r4, r4, #1
+.L1114:
+       ldrb    r3, [r7, #1]    @ zero_extendqisi2
+       cmp     r4, r3
+       bcc     .L1121
+       b       .L1118
+.L1120:
+       mov     r8, #0
+.L1118:
+       mov     r0, fp
+       bl      FlashBchSel
+       ldr     r3, .L1123+4
+       ldr     r2, [r3, #3788]
+       ldr     r3, .L1123+8
+       cmp     r2, r3
+       bne     .L1119
+       mov     r0, #0
+       bl      flash_exit_slc_mode
+.L1119:
+       mov     r0, r8
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1124:
+       .align  2
+.L1123:
+       .word   .LANCHOR3+11
+       .word   .LANCHOR0
+       .word   1446522928
+       .word   -52655045
+       .word   .LC88
+       .word   .LANCHOR2
+       .fnend
+       .size   FlashReadIdbDataRaw, .-FlashReadIdbDataRaw
+       .align  2
+       .global FlashLoadPhyInfo
+       .type   FlashLoadPhyInfo, %function
+FlashLoadPhyInfo:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r2, #4
+       ldr     r1, .L1135
+       add     r0, sp, #4
+       bl      memcpy
+       ldr     r7, .L1135+4
+       ldr     r2, .L1135+8
+       movw    r3, #2698
+       ldr     r5, .L1135+12
+       mov     r4, #0
+       mov     r0, r4
+       mov     r8, #4
+       ldrh    fp, [r2, r3]
+       mvn     sl, #0
+       ldr     r3, [r7, #3780]
+       str     r4, [r5, #136]
+       str     r3, [r5, #124]
+       bl      flash_enter_slc_mode
+       b       .L1126
+.L1128:
+       add     r3, sp, #4
+       ldrb    r0, [r3, r6]    @ zero_extendqisi2
+       bl      FlashBchSel
+       mov     r0, #0
+       mov     r1, r4
+       ldr     r2, [r7, #3780]
+       mov     r3, r0
+       bl      FlashReadRawPage
+       cmn     r0, #1
+       bne     .L1127
+       mov     r0, #0
+       mov     r1, r9
+       ldr     r2, [r7, #3780]
+       mov     r3, r0
+       bl      FlashReadRawPage
+       cmn     r0, #1
+       bne     .L1127
+       add     r6, r6, #1
+       cmp     r6, #4
+       beq     .L1129
+       b       .L1128
+.L1127:
+       ldr     r6, [r5, #124]
+       ldr     r3, .L1135+16
+       ldr     r2, [r6, #0]
+       cmp     r2, r3
+       bne     .L1129
+       cmp     sl, #0
+       bne     .L1130
+       ldr     r2, .L1135+8
+       movw    r3, #2698
+       mov     r0, r4
+       ldrh    r1, [r2, r3]
+       bl      __aeabi_uidiv
+       ldr     r3, .L1135+12
+       add     r0, r0, #1
+       str     r0, [r3, #132]
+       b       .L1131
+.L1130:
+       add     r0, r6, #12
+       movw    r1, #2036
+       bl      JSHash
+       ldr     r3, [r6, #8]
+       cmp     r3, r0
+       bne     .L1129
+       ldr     sl, .L1135+8
+       add     r1, r6, #160
+       mov     r2, #32
+       add     r0, sl, #2688
+       bl      memcpy
+       add     r1, r6, #192
+       mov     r2, #32
+       ldr     r0, .L1135+20
+       bl      memcpy
+       add     r1, r6, #224
+       mov     r2, #852
+       ldr     r0, .L1135+24
+       bl      memcpy
+       ldr     r3, [r6, #1076]
+       mov     r0, r4
+       str     r4, [r5, #136]
+       strb    r3, [r7, #3777]
+       movw    r3, #2698
+       ldrh    r1, [sl, r3]
+       mov     sl, #0
+       bl      __aeabi_uidiv
+       add     r0, r0, #1
+       str     r0, [r5, #132]
+       cmp     r0, #1
+       moveq   r3, #2
+       streq   r3, [r5, #132]
+       ldrh    r3, [r6, #14]
+       strb    r3, [r5, #140]
+.L1129:
+       subs    r8, r8, #1
+       add     r4, r4, fp
+       beq     .L1133
+.L1126:
+       add     r9, r4, #1
+       mov     r6, #0
+       b       .L1128
+.L1133:
+       mov     r0, r8
+       bl      flash_exit_slc_mode
+.L1131:
+       mov     r0, sl
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1136:
+       .align  2
+.L1135:
+       .word   .LANCHOR3+11
+       .word   .LANCHOR0
+       .word   .LANCHOR1
+       .word   .LANCHOR2
+       .word   1312902724
+       .word   .LANCHOR0+48
+       .word   .LANCHOR0+2908
+       .fnend
+       .size   FlashLoadPhyInfo, .-FlashLoadPhyInfo
+       .align  2
+       .global FlashDdrTunningRead
+       .type   FlashDdrTunningRead, %function
+FlashDdrTunningRead:
+       .fnstart
+       @ args = 4, pretend = 0, frame = 16
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     sl, r3
+       ldr     r4, .L1158
+       .pad #20
+       sub     sp, sp, #20
+       mov     fp, r0
+       mov     r9, r2
+       str     r1, [sp, #0]
+       ldr     r3, [r4, #2164]
+       ldr     r7, [r4, #12]
+       ldr     r3, [r3, #304]
+       cmp     r7, #7
+       movhi   r7, #12
+       movls   r7, #6
+       str     r3, [sp, #12]
+       ldr     r3, [sp, #56]
+       cmp     r3, #0
+       moveq   r8, #1024
+       beq     .L1139
+       mov     r0, #1
+       bl      FlashSetInterfaceMode
+       mov     r0, #1
+       bl      NandcSetMode
+       mov     r0, fp
+       bl      FlashReset
+       ldr     r1, [sp, #0]
+       mov     r2, r9
+       mov     r3, sl
+       mov     r0, fp
+       bl      FlashReadRawPage
+       mov     r8, r0
+       ldrb    r0, [r4, #3776] @ zero_extendqisi2
+       bl      FlashSetInterfaceMode
+       ldrb    r0, [r4, #3776] @ zero_extendqisi2
+       bl      NandcSetMode
+       cmn     r8, #1
+       beq     .L1140
+       ldr     r0, .L1158+4
+       mov     r2, r8
+       ldr     r1, [sp, #0]
+       bl      printk
+       cmp     r8, #9
+       bhi     .L1141
+       add     r4, r4, fp, asl #3
+       ldr     r3, [r4, #16]
+       ldr     r2, [r3, #3840]
+       ldr     r2, [r3, #0]
+       orr     r2, r2, #131072
+       str     r2, [r3, #0]
+.L1141:
+       ldr     r3, .L1158+8
+       ldr     r2, [r3, #144]
+       add     r2, r2, #1
+       str     r2, [r3, #144]
+       cmp     r2, #2048
+       movcs   sl, #0
+       strcs   sl, [r3, #144]
+       movcs   r9, sl
+       bcc     .L1140
+.L1139:
+       mov     r4, #0
+       str     fp, [sp, #4]
+       mov     r5, r4
+       mvn     r6, #0
+       mov     fp, r4
+       str     r4, [sp, #8]
+.L1146:
+       uxtb    r0, r7
+       bl      NandcSetDdrPara
+       mov     r3, sl
+       ldr     r0, [sp, #4]
+       mov     r2, r9
+       ldr     r1, [sp, #0]
+       bl      FlashReadRawPage
+       add     r3, r8, #1
+       cmp     r0, r3
+       bhi     .L1142
+       cmp     r0, #2
+       bhi     .L1152
+       add     r5, r5, #1
+       cmp     r5, #9
+       bls     .L1152
+       mov     ip, fp
+       rsb     r4, r5, r7
+       ldr     fp, [sp, #4]
+       mov     r8, r0
+       mov     r6, #0
+       b       .L1144
+.L1142:
+       cmp     fp, r5
+       bcs     .L1153
+       cmp     r5, #7
+       rsb     r3, r5, r4
+       str     r3, [sp, #8]
+       bhi     .L1157
+       mov     fp, r5
+       b       .L1153
+.L1152:
+       mov     r6, #0
+       mov     r4, r7
+       mov     r8, r0
+       mov     sl, r6
+       mov     r9, r6
+       b       .L1143
+.L1153:
+       mov     r5, #0
+.L1143:
+       add     r7, r7, #2
+       cmp     r7, #69
+       bls     .L1146
+       mov     ip, fp
+       ldr     fp, [sp, #4]
+.L1144:
+       cmp     ip, r5
+       bcc     .L1147
+       b       .L1145
+.L1157:
+       ldr     fp, [sp, #4]
+.L1145:
+       ldr     r4, [sp, #8]
+.L1147:
+       cmp     r4, #0
+       beq     .L1148
+       ldr     r0, .L1158+12
+       mov     r1, r4
+       bl      printk
+       uxtb    r0, r4
+       bl      NandcSetDdrPara
+.L1148:
+       cmn     r6, #1
+       bne     .L1140
+       ldr     r0, .L1158+16
+       mov     r1, fp
+       ldr     r2, [sp, #0]
+       bl      printk
+       ldr     r3, [sp, #56]
+       cmp     r3, #0
+       moveq   r8, r6
+       beq     .L1140
+       ldr     r3, [sp, #12]
+       ubfx    r0, r3, #8, #8
+       bl      NandcSetDdrPara
+.L1140:
+       mov     r0, r8
+       add     sp, sp, #20
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1159:
+       .align  2
+.L1158:
+       .word   .LANCHOR0
+       .word   .LC89
+       .word   .LANCHOR2
+       .word   .LC90
+       .word   .LC91
+       .fnend
+       .size   FlashDdrTunningRead, .-FlashDdrTunningRead
+       .align  2
+       .global FlashDdrParaScan
+       .type   FlashDdrParaScan, %function
+FlashDdrParaScan:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r4, r5, r6, r7, r8, lr}
+       .save {r0, r1, r4, r5, r6, r7, r8, lr}
+       mov     r7, r0
+       ldr     r5, .L1164
+       mov     r4, #0
+       mov     r6, r1
+       ldrb    r0, [r5, #3776] @ zero_extendqisi2
+       bl      FlashSetInterfaceMode
+       ldrb    r0, [r5, #3776] @ zero_extendqisi2
+       bl      NandcSetMode
+       mov     r1, r6
+       mov     r2, r4
+       mov     r3, r4
+       mov     r0, r7
+       str     r4, [sp, #0]
+       bl      FlashDdrTunningRead
+       mov     r1, r6
+       mov     r2, r4
+       mov     r3, r4
+       mov     r8, r0
+       mov     r0, r7
+       bl      FlashReadRawPage
+       cmn     r0, #1
+       beq     .L1161
+       cmn     r8, #1
+       bne     .L1162
+.L1161:
+       ldrb    r3, [r5, #3776] @ zero_extendqisi2
+       tst     r3, #1
+       beq     .L1162
+       mov     r0, #1
+       bl      FlashSetInterfaceMode
+       mov     r0, #1
+       bl      NandcSetMode
+       ldr     r3, .L1164
+       mov     r2, #0
+       strb    r2, [r3, #3777]
+       b       .L1163
+.L1162:
+       mov     r3, #1
+       strb    r3, [r5, #3777]
+.L1163:
+       mov     r0, #0
+       ldmfd   sp!, {r2, r3, r4, r5, r6, r7, r8, pc}
+.L1165:
+       .align  2
+.L1164:
+       .word   .LANCHOR0
+       .fnend
+       .size   FlashDdrParaScan, .-FlashDdrParaScan
+       .align  2
+       .global FlashInit
+       .type   FlashInit, %function
+FlashInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       mov     r7, r0
+       mov     r0, #32768
+       ldr     r6, .L1208
+       bl      ftl_malloc
+       ldr     r5, .L1208+4
+       mov     r4, #0
+       str     r0, [r6, #3780]
+       mov     r0, #32768
+       bl      ftl_malloc
+       str     r0, [r5, #116]
+       mov     r0, #4096
+       bl      ftl_malloc
+       str     r0, [r5, #148]
+       mov     r0, #32768
+       bl      ftl_malloc
+       str     r0, [r5, #152]
+       mov     r0, #4096
+       bl      ftl_malloc
+       mov     r3, #50
+       str     r4, [r5, #132]
+       strb    r3, [r5, #140]
+       strb    r3, [r6, #1]
+       mov     r3, #128
+       str     r4, [r5, #144]
+       str     r3, [r6, #4]
+       mov     r3, #60
+       strb    r4, [r6, #3777]
+       strb    r3, [r5, #128]
+       strb    r4, [r6, #0]
+       str     r0, [r5, #156]
+       mov     r0, r7
+       bl      NandcInit
+       ldr     r5, .L1208+8
+.L1169:
+       uxtb    r0, r4
+       mov     r1, r5
+       bl      FlashReadIDRaw
+       cmp     r4, #0
+       bne     .L1167
+       ldrb    r3, [r6, #2132] @ zero_extendqisi2
+       sub     r3, r3, #1
+       uxtb    r3, r3
+       cmp     r3, #253
+       bhi     .L1201
+       ldrb    r3, [r6, #2133] @ zero_extendqisi2
+       cmp     r3, #255
+       beq     .L1202
+.L1167:
+       add     r4, r4, #1
+       add     r5, r5, #8
+       cmp     r4, #4
+       bne     .L1169
+       ldr     r4, .L1208
+       ldrb    r3, [r4, #2132] @ zero_extendqisi2
+       cmp     r3, #173
+       beq     .L1170
+       ldr     r0, [r4, #3784]
+       bl      NandcSetDdrMode
+.L1170:
+       mov     r1, #0
+       ldr     r0, .L1208+12
+       mov     r2, #852
+       bl      ftl_memset
+       ldr     r3, .L1208+16
+       str     r3, [r4, #2776]
+       mov     r3, #0
+       strb    r3, [r4, #8]
+       ldrb    r3, [r4, #2133] @ zero_extendqisi2
+       sub     r1, r3, #218
+       rsbs    ip, r1, #0
+       adc     ip, ip, r1
+       cmp     r3, #218
+       cmpne   r3, #241
+       beq     .L1171
+       cmp     r3, #220
+       bne     .L1172
+       ldr     r2, .L1208
+       ldrb    r2, [r2, #2135] @ zero_extendqisi2
+       cmp     r2, #149
+       bne     .L1172
+.L1171:
+       ldr     r2, .L1208
+       mov     r1, #1
+       mov     r0, #16
+       strb    r1, [r2, #0]
+       ldr     r1, .L1208+4
+       strb    r0, [r2, #1]
+       strb    r0, [r1, #128]
+       ldrb    r0, [r2, #2132] @ zero_extendqisi2
+       ldr     r2, .L1208+20
+       cmp     r0, #152
+       strb    r0, [r2, #2969]
+       moveq   r0, #24
+       streqb  r0, [r1, #128]
+       cmp     ip, #0
+       movwne  r3, #2982
+       movne   r1, #2048
+       strneh  r1, [r2, r3]    @ movhi
+       mvnne   r3, #37
+       bne     .L1205
+.L1174:
+       cmp     r3, #220
+       bne     .L1175
+       movw    r3, #2982
+       mov     r1, #4096
+       strh    r1, [r2, r3]    @ movhi
+       mvn     r3, #35
+.L1205:
+       strb    r3, [r2, #2970]
+.L1175:
+       ldr     r1, .L1208+24
+       mov     r2, #32
+       ldr     r0, .L1208+28
+       bl      memcpy
+       ldr     r0, .L1208+16
+       mov     r2, #32
+       add     r1, r0, #280
+       bl      memcpy
+.L1172:
+       ldr     r4, .L1208
+       ldrb    r3, [r4, #0]    @ zero_extendqisi2
+       cmp     r3, #0
+       bne     .L1176
+       bl      FlashLoadPhyInfoInRam
+       cmp     r0, #0
+       bne     .L1177
+       ldr     r3, [r4, #2776]
+       ldrh    r0, [r3, #16]
+       ubfx    r0, r0, #8, #3
+       strb    r0, [r4, #3776]
+       tst     r0, #1
+       bne     .L1177
+       mov     r3, #1
+       strb    r3, [r4, #3777]
+       bl      FlashSetInterfaceMode
+       ldrb    r0, [r4, #3776] @ zero_extendqisi2
+       bl      NandcSetMode
+.L1177:
+       ldr     r4, .L1208
+       ldr     r3, [r4, #2776]
+       ldrb    r3, [r3, #26]   @ zero_extendqisi2
+       strb    r3, [r4, #80]
+       bl      FlashLoadPhyInfo
+       cmp     r0, #0
+       beq     .L1176
+       ldr     r3, [r4, #3784]
+       cmp     r3, #0
+       beq     .L1179
+       mov     r0, #1
+       bl      FlashSetInterfaceMode
+       mov     r0, #1
+       b       .L1206
+.L1179:
+       ldrb    r0, [r4, #3776] @ zero_extendqisi2
+       bl      FlashSetInterfaceMode
+       ldrb    r0, [r4, #3776] @ zero_extendqisi2
+.L1206:
+       bl      NandcSetMode
+       bl      FlashLoadPhyInfo
+       cmp     r0, #0
+       beq     .L1176
+       ldr     r4, .L1208
+       mov     r0, #1
+       bl      FlashSetInterfaceMode
+       mov     r0, #1
+       bl      NandcSetMode
+       ldr     r0, .L1208+32
+       ldr     r3, [r4, #2776]
+       ldrh    r1, [r3, #14]
+       bl      printk
+       bl      FlashLoadPhyInfoInRam
+       cmn     r0, #1
+       ldmeqfd sp!, {r3, r4, r5, r6, r7, pc}
+       bl      FlashDieInfoInit
+       ldr     r3, [r4, #2776]
+       ldrb    r0, [r3, #19]   @ zero_extendqisi2
+       bl      FlashGetReadRetryDefault
+       ldr     r1, .L1208+36
+       ldr     r0, .L1208+4
+       ldr     r3, [r4, #2776]
+       ldrh    r1, [r0, r1]
+       ldrb    r2, [r3, #9]    @ zero_extendqisi2
+       add     r1, r1, #4080
+       add     r1, r1, #15
+       cmp     r2, r1, lsr #12
+       blt     .L1182
+       ldrh    r1, [r3, #14]
+       add     r1, r1, #255
+       cmp     r2, r1, lsr #8
+       bge     .L1183
+.L1182:
+       ldrh    r2, [r3, #14]
+       bic     r2, r2, #255
+       strh    r2, [r3, #14]   @ movhi
+.L1183:
+       ldr     r3, .L1208
+       ldrb    r3, [r3, #3776] @ zero_extendqisi2
+       tst     r3, #6
+       beq     .L1184
+       bl      FlashSavePhyInfo
+       ldr     r3, .L1208+4
+       mov     r0, #0
+       ldr     r1, [r3, #136]
+       bl      FlashDdrParaScan
+.L1184:
+       bl      FlashSavePhyInfo
+.L1176:
+       ldr     r1, .L1208
+       ldr     r3, [r1, #2776]
+       ldrb    r2, [r3, #26]   @ zero_extendqisi2
+       strb    r2, [r1, #80]
+       ldrh    r2, [r3, #16]
+       ubfx    r0, r2, #7, #1
+       strb    r0, [r1, #8]
+       ldr     r0, .L1208+4
+       tst     r2, #64
+       ubfx    ip, r2, #3, #1
+       strb    ip, [r0, #160]
+       ubfx    ip, r2, #4, #1
+       strb    ip, [r1, #3837]
+       ubfx    ip, r2, #8, #3
+       strb    ip, [r1, #3776]
+       mov     ip, #0
+       str     ip, [r0, #164]
+       beq     .L1185
+       ldrb    ip, [r1, #2909] @ zero_extendqisi2
+       ldrb    r2, [r3, #19]   @ zero_extendqisi2
+       strb    ip, [r1, #3764]
+       ldrb    ip, [r1, #2910] @ zero_extendqisi2
+       strb    r2, [r1, #3765]
+       strb    ip, [r0, #120]
+       sub     ip, r2, #1
+       uxtb    ip, ip
+       cmp     ip, #5
+       bhi     .L1186
+       sub     r2, r2, #5
+       ldr     ip, .L1208+40
+       uxtb    r2, r2
+       cmp     r2, #1
+       str     ip, [r0, #164]
+       movls   r2, #1
+       strls   r2, [r1, #3828]
+       b       .L1185
+.L1186:
+       sub     r1, r2, #17
+       uxtb    r1, r1
+       cmp     r1, #2
+       bhi     .L1187
+       ldr     r1, .L1208+44
+       cmp     r2, #19
+       moveq   r2, #15
+       str     r1, [r0, #164]
+       mov     r1, #7
+       strb    r1, [r0, #120]
+       streqb  r2, [r0, #120]
+       b       .L1185
+.L1187:
+       cmp     r2, #33
+       cmpne   r2, #65
+       beq     .L1188
+       cmp     r2, #66
+       bne     .L1189
+.L1188:
+       ldr     r2, .L1208+4
+       mov     r0, #4
+       ldr     r1, .L1208+48
+       str     r1, [r2, #164]
+       ldr     r1, .L1208
+       strb    r0, [r1, #3764]
+       mov     r1, #7
+       strb    r1, [r2, #120]
+       b       .L1185
+.L1189:
+       cmp     r2, #67
+       cmpne   r2, #34
+       beq     .L1190
+       cmp     r2, #35
+       beq     .L1190
+       cmp     r2, #68
+       bne     .L1191
+.L1190:
+       ldr     r1, .L1208+4
+       cmp     r2, #35
+       cmpne   r2, #68
+       ldr     r0, .L1208+48
+       sub     r2, r2, #67
+       uxtb    r2, r2
+       str     r0, [r1, #164]
+       mov     r0, #7
+       strb    r0, [r1, #120]
+       moveq   r0, #17
+       streqb  r0, [r1, #120]
+       cmp     r2, #1
+       ldr     r2, .L1208
+       movls   r1, #4
+       movhi   r1, #5
+       strb    r1, [r2, #3764]
+       b       .L1185
+.L1191:
+       cmp     r2, #49
+       ldreq   r2, .L1208+52
+       streq   r2, [r0, #164]
+.L1185:
+       ldrb    r1, [r3, #12]   @ zero_extendqisi2
+       ldrh    r0, [r3, #10]
+       ldrb    r4, [r3, #18]   @ zero_extendqisi2
+       bl      __aeabi_idiv
+       mov     r1, r0
+       mov     r0, r4
+       bl      BuildFlashLsbPageTable
+       bl      FlashDieInfoInit
+       ldr     r3, .L1208
+       ldrb    r2, [r3, #2132] @ zero_extendqisi2
+       cmp     r2, #44
+       bne     .L1194
+       ldrb    r2, [r3, #3777] @ zero_extendqisi2
+       cmp     r2, #0
+       beq     .L1194
+       mov     r2, #0
+       mov     r0, #1
+       strb    r2, [r3, #3777]
+       bl      FlashSetInterfaceMode
+       mov     r0, #1
+       bl      NandcSetMode
+.L1194:
+       mov     r0, #0
+       bl      flash_enter_slc_mode
+       ldr     r2, .L1208
+       ldrb    r3, [r2, #3776] @ zero_extendqisi2
+       tst     r3, #6
+       beq     .L1195
+       ldrb    r2, [r2, #3777] @ zero_extendqisi2
+       cmp     r2, #0
+       bne     .L1196
+       tst     r3, #1
+       bne     .L1195
+.L1196:
+       ldr     r3, .L1208+4
+       mov     r0, #0
+       ldr     r1, [r3, #136]
+       bl      FlashDdrParaScan
+.L1195:
+       ldr     r4, .L1208
+       mov     r0, #0
+       bl      flash_exit_slc_mode
+       ldr     r3, [r4, #2776]
+       ldrb    r0, [r3, #20]   @ zero_extendqisi2
+       bl      FlashBchSel
+       add     r0, r4, #84
+       bl      FlashReadIdbDataRaw
+       mov     r3, r4
+       cmp     r0, #0
+       movne   r3, #16
+       strneb  r3, [r4, #1]
+       bne     .L1199
+       ldr     r2, .L1208+4
+       ldrb    r1, [r3, #1]    @ zero_extendqisi2
+       ldrb    r2, [r2, #140]  @ zero_extendqisi2
+       cmp     r1, r2
+       strhib  r2, [r3, #1]
+       ldrb    r3, [r3, #1]    @ zero_extendqisi2
+       cmp     r3, #15
+       ldrls   r3, .L1208
+       movls   r2, #16
+       strlsb  r2, [r3, #1]
+.L1199:
+       ldr     r4, .L1208
+       movw    r6, #2214
+       ldr     r0, .L1208+56
+       bl      FlashTimingCfg
+       mov     r3, #2208
+       ldr     r5, [r4, #2776]
+       ldrb    r2, [r5, #12]   @ zero_extendqisi2
+       ldrh    r7, [r5, #14]
+       strh    r2, [r4, r3]    @ movhi
+       ldrb    r3, [r5, #7]    @ zero_extendqisi2
+       ldrb    r2, [r4, #3766] @ zero_extendqisi2
+       str     r3, [r4, #2204]
+       ldr     r3, [r4, #2132]
+       str     r3, [r4, #2200]
+       movw    r3, #2210
+       strh    r2, [r4, r3]    @ movhi
+       add     r3, r3, #2
+       ldrb    r2, [r5, #13]   @ zero_extendqisi2
+       strh    r7, [r4, r6]    @ movhi
+       strh    r2, [r4, r3]    @ movhi
+       add     r3, r3, #4
+       ldrh    r2, [r5, #10]
+       strh    r2, [r4, r3]    @ movhi
+       ldrb    r1, [r5, #12]   @ zero_extendqisi2
+       ldrh    r0, [r5, #10]
+       bl      __aeabi_idiv
+       movw    r3, #2218
+       mov     lr, #512
+       movw    r2, #2222
+       strh    r0, [r4, r3]    @ movhi
+       movw    r0, #2220
+       ldrb    ip, [r5, #9]    @ zero_extendqisi2
+       strh    ip, [r4, r0]    @ movhi
+       ldrb    r3, [r5, #9]    @ zero_extendqisi2
+       ldrh    r1, [r5, #10]
+       mul     r1, r1, r3
+       mov     r3, #2224
+       strh    lr, [r4, r3]    @ movhi
+       add     r3, r3, #2
+       ldrb    lr, [r4, #1]    @ zero_extendqisi2
+       strh    lr, [r4, r3]    @ movhi
+       uxth    r1, r1
+       ldrb    lr, [r4, #0]    @ zero_extendqisi2
+       strh    r1, [r4, r2]    @ movhi
+       cmp     lr, #1
+       bne     .L1200
+       mov     lr, #16
+       mov     r7, r7, lsr #1
+       mov     ip, ip, asl #1
+       mov     r1, r1, asl #1
+       strb    lr, [r4, #1]
+       strh    r1, [r4, r2]    @ movhi
+       mov     r2, #8
+       strh    r7, [r4, r6]    @ movhi
+       strh    ip, [r4, r0]    @ movhi
+       strh    r2, [r4, r3]    @ movhi
+.L1200:
+       ldrb    r0, [r5, #20]   @ zero_extendqisi2
+       bl      FlashBchSel
+       bl      FlashSuspend
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1201:
+       mvn     r0, #1
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1202:
+       mvn     r0, #1
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1209:
+       .align  2
+.L1208:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   .LANCHOR0+2132
+       .word   .LANCHOR0+2908
+       .word   .LANCHOR1+2688
+       .word   .LANCHOR1
+       .word   .LANCHOR1+2592
+       .word   .LANCHOR0+48
+       .word   .LC92
+       .word   -914
+       .word   HynixReadRetrial
+       .word   MicronReadRetrial
+       .word   ToshibaReadRetrial
+       .word   SamsungReadRetrial
+       .word   150000
+       .fnend
+       .size   FlashInit, .-FlashInit
+       .align  2
+       .global FlashReadPage
+       .type   FlashReadPage, %function
+FlashReadPage:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr}
+       .save {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr}
+       mov     r6, r0
+       mov     r5, r1
+       mov     r8, r2
+       mov     sl, r3
+       bl      FlashReadRawPage
+       cmn     r0, #1
+       mov     r4, r0
+       bne     .L1211
+       ldr     r7, .L1216
+       ldrb    r9, [r7, #8]    @ zero_extendqisi2
+       cmp     r9, #0
+       beq     .L1212
+       mov     r3, #0
+       mov     r0, r6
+       strb    r3, [r7, #8]
+       mov     r1, r5
+       mov     r2, r8
+       mov     r3, sl
+       bl      FlashReadRawPage
+       strb    r9, [r7, #8]
+       cmn     r0, #1
+       movne   r4, r0
+       bne     .L1211
+.L1212:
+       ldr     r7, .L1216
+       ldrb    r3, [r7, #3777] @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L1211
+       ldr     r3, [r7, #2164]
+       mov     r0, r6
+       mov     r1, r5
+       mov     r2, r8
+       ldr     r9, [r3, #304]
+       mov     r3, #1
+       str     r3, [sp, #0]
+       mov     r3, sl
+       bl      FlashDdrTunningRead
+       cmn     r0, #1
+       mov     r4, r0
+       beq     .L1213
+       ldrb    r3, [r7, #3836] @ zero_extendqisi2
+       cmp     r0, r3, lsr #1
+       bls     .L1211
+.L1213:
+       ubfx    r0, r9, #8, #8
+       bl      NandcSetDdrPara
+.L1211:
+       ldr     r3, .L1216+4
+       ldr     ip, [r3, #164]
+       adds    r3, ip, #0
+       movne   r3, #1
+       cmn     r4, #1
+       movne   r3, #0
+       cmp     r3, #0
+       beq     .L1214
+       mov     r1, r5
+       mov     r2, r8
+       mov     r3, sl
+       mov     r0, r6
+       blx     ip
+       mov     r2, r6
+       mov     r3, r5
+       mov     r4, r0
+       ldr     r0, .L1216+8
+       mov     r1, r4
+       bl      printk
+.L1214:
+       mov     r0, r4
+       ldmfd   sp!, {r2, r3, r4, r5, r6, r7, r8, r9, sl, pc}
+.L1217:
+       .align  2
+.L1216:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   .LC93
+       .fnend
+       .size   FlashReadPage, .-FlashReadPage
+       .align  2
+       .global FlashReadSlc2KPages
+       .type   FlashReadSlc2KPages, %function
+FlashReadSlc2KPages:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 16
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L1231
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r8, r1
+       .pad #28
+       sub     sp, sp, #28
+       mov     fp, r2
+       ldrb    sl, [r3, #2697] @ zero_extendqisi2
+       mov     r4, r0
+       mov     r7, #0
+       ldr     r6, .L1231+4
+       b       .L1219
+.L1228:
+       rsb     r3, r7, r8
+       add     r2, sp, #20
+       mov     r0, r4
+       mov     r1, fp
+       uxtb    r3, r3
+       str     r3, [sp, #0]
+       add     r3, sp, #16
+       bl      LogAddr2PhyAddr
+       ldr     r3, [sp, #16]
+       ldrb    r2, [r6, #3766] @ zero_extendqisi2
+       cmp     r3, r2
+       mvncs   r3, #0
+       strcs   r3, [r4, #0]
+       bcs     .L1221
+       add     r3, r6, r3
+       ldrb    r5, [r3, #3768] @ zero_extendqisi2
+       mov     r0, r5
+       bl      NandcWaitFlashReady
+       mov     r0, r5
+       bl      NandcFlashCs
+       ldr     r1, [sp, #20]
+       mov     r0, r5
+       bl      FlashReadCmd
+       mov     r0, r5
+       bl      NandcWaitFlashReady
+       ldr     r3, [r4, #12]
+       mov     r2, sl
+       mov     r1, #0
+       mov     r0, r5
+       str     r3, [sp, #0]
+       ldr     r3, [r4, #8]
+       bl      NandcXferData
+       ldr     r3, [sp, #20]
+       ldr     r1, [r6, #4]
+       add     r1, r1, r3
+       mov     r9, r0
+       mov     r0, r5
+       bl      FlashReadCmd
+       ldr     r3, [r4, #8]
+       ldr     r2, [r4, #12]
+       mov     r1, #0
+       cmp     r3, #0
+       mov     r0, r5
+       addne   r3, r3, #2048
+       cmp     r2, #0
+       addne   r2, r2, #8
+       str     r2, [sp, #0]
+       mov     r2, sl
+       bl      NandcXferData
+       mov     r3, r0
+       mov     r0, r5
+       str     r3, [sp, #12]
+       bl      NandcFlashDeCs
+       ldr     r3, [sp, #12]
+       cmp     r3, r9
+       movcs   r9, r3
+       ldrb    r3, [r6, #3836] @ zero_extendqisi2
+       adds    r2, r9, #1
+       add     r3, r3, r3, asl #1
+       movne   r2, #1
+       cmp     r9, r3, lsr #2
+       movls   r3, #0
+       andhi   r3, r2, #1
+       cmp     r3, #0
+       movne   r9, #256
+       cmp     r9, #256
+       cmnne   r9, #1
+       str     r9, [r4, #0]
+       movne   r3, #0
+       strne   r3, [r4, #0]
+       ldr     r3, [r4, #12]
+       cmp     r3, #0
+       beq     .L1226
+       ldr     r2, [r3, #8]
+       cmn     r2, #1
+       bne     .L1226
+       ldr     r3, [r3, #0]
+       cmn     r3, #1
+       strne   r2, [r4, #0]
+.L1226:
+       ldr     r3, [r4, #0]
+       cmn     r3, #1
+       bne     .L1221
+       ldr     r1, [r4, #4]
+       ldr     r0, .L1231+8
+       ldrb    r2, [r6, #3836] @ zero_extendqisi2
+       bl      printk
+       ldr     r1, [r4, #8]
+       cmp     r1, #0
+       beq     .L1227
+       ldr     r0, .L1231+12
+       mov     r2, #4
+       mov     r3, #8
+       bl      rknand_print_hex
+.L1227:
+       ldr     r1, [r4, #12]
+       cmp     r1, #0
+       beq     .L1221
+       mov     r2, #4
+       ldr     r0, .L1231+16
+       mov     r3, r2
+       bl      rknand_print_hex
+.L1221:
+       add     r7, r7, #1
+       add     r4, r4, #36
+.L1219:
+       cmp     r7, r8
+       bne     .L1228
+       mov     r0, #0
+       add     sp, sp, #28
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1232:
+       .align  2
+.L1231:
+       .word   .LANCHOR1
+       .word   .LANCHOR0
+       .word   .LC94
+       .word   .LC95
+       .word   .LC96
+       .fnend
+       .size   FlashReadSlc2KPages, .-FlashReadSlc2KPages
+       .align  2
+       .global FlashReadPages
+       .type   FlashReadPages, %function
+FlashReadPages:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 40
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L1269
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #52
+       sub     sp, sp, #52
+       ldrb    r3, [r3, #2697] @ zero_extendqisi2
+       mov     r9, r0
+       str     r1, [sp, #28]
+       str     r2, [sp, #32]
+       str     r3, [sp, #20]
+       ldr     r3, .L1269+4
+       ldrb    r8, [r3, #0]    @ zero_extendqisi2
+       ldrb    ip, [r3, #8]    @ zero_extendqisi2
+       cmp     r8, #0
+       str     ip, [sp, #36]
+       moveq   sl, r8
+       beq     .L1234
+       bl      FlashReadSlc2KPages
+       b       .L1235
+.L1258:
+       mov     r3, #36
+       ldr     ip, [sp, #28]
+       mul     r3, r3, sl
+       add     r2, sp, #44
+       ldr     r1, [sp, #32]
+       ldr     r5, .L1269+4
+       add     r6, r9, r3
+       str     r3, [sp, #16]
+       rsb     r3, sl, ip
+       ldr     fp, [r6, #4]
+       mov     r0, r6
+       uxtb    r3, r3
+       str     r3, [sp, #0]
+       add     r3, sp, #40
+       bl      LogAddr2PhyAddr
+       ldr     r3, [sp, #40]
+       ldrb    r2, [r5, #3766] @ zero_extendqisi2
+       cmp     r3, r2
+       ldrcs   ip, [sp, #16]
+       mvncs   r3, #0
+       mov     r7, r0
+       strcs   r3, [r9, ip]
+       bcs     .L1237
+       add     r3, r5, r3
+       ldrb    r4, [r3, #3768] @ zero_extendqisi2
+       ldr     r3, .L1269+8
+       mov     r0, r4
+       ldrb    r3, [r3, #160]  @ zero_extendqisi2
+       cmp     r3, #0
+       moveq   r7, #0
+       bl      NandcWaitFlashReady
+       ldr     r3, [r5, #2776]
+       ldrb    r3, [r3, #19]   @ zero_extendqisi2
+       sub     r3, r3, #1
+       uxtb    r3, r3
+       cmp     r3, #5
+       bhi     .L1239
+       add     r2, r5, r4
+       ldrb    r3, [r2, #2920] @ zero_extendqisi2
+       ldrb    r2, [r2, #3760] @ zero_extendqisi2
+       cmp     r2, r3
+       beq     .L1239
+       mov     r0, r4
+       ldrb    r1, [r5, #2909] @ zero_extendqisi2
+       add     r2, r5, #2912
+       bl      HynixSetRRPara
+.L1239:
+       mov     r0, r4
+       mov     fp, fp, lsr #31
+       bl      NandcFlashCs
+       ldr     ip, [sp, #32]
+       cmp     ip, #1
+       orreq   fp, fp, #1
+       str     fp, [sp, #24]
+       cmp     fp, #0
+       beq     .L1245
+       ldr     r3, .L1269+4
+       ldrb    r3, [r3, #80]   @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L1245
+       mov     r0, r4
+       bl      flash_enter_slc_mode
+.L1245:
+       ldr     fp, .L1269+4
+.L1268:
+       ldr     r1, [sp, #44]
+       cmn     r1, #1
+       cmpeq   r4, #255
+       moveq   r3, #0
+       movne   r3, #1
+       moveq   r7, r3
+       beq     .L1241
+       cmp     r7, #0
+       beq     .L1242
+       ldr     r2, [fp, #4]
+       mov     r0, r4
+       add     r2, r1, r2
+       bl      FlashReadDpCmd
+       b       .L1243
+.L1242:
+       mov     r0, r4
+       bl      FlashReadCmd
+.L1243:
+       mov     r0, r4
+       bl      NandcWaitFlashReady
+       cmp     r7, #0
+       beq     .L1241
+       mov     r0, r4
+       ldr     r1, [sp, #44]
+       bl      FlashReadDpDataOutCmd
+.L1241:
+       ldr     r3, [r6, #12]
+       mov     r0, r4
+       ldr     r2, [sp, #20]
+       mov     r1, #0
+       str     r3, [sp, #0]
+       ldr     r3, [r6, #8]
+       bl      NandcXferData
+       ldrb    r2, [fp, #8]    @ zero_extendqisi2
+       adds    r2, r2, #0
+       movne   r2, #1
+       cmn     r0, #1
+       movne   r2, #0
+       cmp     r2, #0
+       movne   r2, #0
+       movne   r7, #0
+       strneb  r2, [fp, #8]
+       bne     .L1268
+.L1244:
+       cmp     r7, #0
+       mov     r5, r0
+       beq     .L1246
+       ldr     r3, .L1269+4
+       mov     r0, r4
+       ldr     r1, [r3, #4]
+       ldr     r3, [sp, #44]
+       str     r2, [sp, #12]
+       add     r1, r1, r3
+       bl      FlashReadDpDataOutCmd
+       add     r3, sl, #1
+       mov     r1, #36
+       ldr     r2, [sp, #12]
+       mla     r3, r1, r3, r9
+       mov     r0, r4
+       ldr     r1, [r3, #12]
+       str     r1, [sp, #0]
+       mov     r1, r2
+       ldr     r3, [r3, #8]
+       ldr     r2, [sp, #20]
+       bl      NandcXferData
+       cmn     r0, #1
+       mov     r8, r0
+       moveq   r7, #0
+.L1246:
+       mov     r0, r4
+       ldr     fp, .L1269+4
+       bl      NandcFlashDeCs
+       ldr     ip, [sp, #36]
+       cmn     r5, #1
+       strb    ip, [fp, #8]
+       bne     .L1250
+       ldrb    r3, [fp, #3777] @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L1248
+       ldr     r3, [fp, #2164]
+       mov     r0, r4
+       ldr     r1, [sp, #44]
+       ldr     r7, [r3, #304]
+       mov     r3, #1
+       str     r3, [sp, #0]
+       ldr     r2, [r6, #8]
+       ldr     r3, [r6, #12]
+       bl      FlashDdrTunningRead
+       cmn     r0, #1
+       mov     r5, r0
+       beq     .L1249
+       ldrb    r3, [fp, #3836] @ zero_extendqisi2
+       cmp     r0, r3, lsr #1
+       bls     .L1264
+.L1249:
+       ubfx    r0, r7, #8, #8
+       bl      NandcSetDdrPara
+       cmn     r5, #1
+       bne     .L1264
+.L1248:
+       ldr     r3, .L1269+8
+       mov     r0, r4
+       ldr     r1, [sp, #44]
+       ldr     r2, [r6, #8]
+       ldr     r7, [r3, #164]
+       ldr     r3, [r6, #12]
+       cmp     r7, #0
+       beq     .L1251
+       blx     r7
+       cmn     r0, #1
+       mov     r5, r0
+       bne     .L1265
+       ldr     r2, .L1269+4
+       ldr     r3, [r2, #2776]
+       ldrb    r3, [r3, #19]   @ zero_extendqisi2
+       sub     r3, r3, #1
+       uxtb    r3, r3
+       cmp     r3, #5
+       bhi     .L1253
+       ldrb    r1, [r2, #2909] @ zero_extendqisi2
+       mov     r0, r4
+       add     r2, r2, #2912
+       mov     r3, #0
+       bl      HynixSetRRPara
+.L1253:
+       ldr     r1, [sp, #44]
+       mov     r0, r4
+       ldr     r2, [r6, #8]
+       ldr     r3, [r6, #12]
+       bl      FlashReadRawPage
+       ldr     r3, .L1269+4
+       ldr     r1, [r6, #4]
+       ldrb    r2, [r3, #3836] @ zero_extendqisi2
+       mov     r5, r0
+       ldr     r0, .L1269+12
+       mov     r3, r5
+       bl      printk
+       b       .L1265
+.L1251:
+       bl      FlashReadRawPage
+       mov     r5, r0
+       b       .L1252
+.L1264:
+       mov     r7, #0
+.L1250:
+       ldr     r3, .L1269+4
+       ldrb    r3, [r3, #3836] @ zero_extendqisi2
+       add     r3, r3, r3, asl #1
+       cmp     r5, r3, lsr #2
+       bls     .L1252
+       ldr     r3, .L1269+8
+       ldr     r3, [r3, #164]
+       cmp     r3, #0
+       moveq   r5, #256
+       b       .L1252
+.L1265:
+       mov     r7, #0
+.L1252:
+       ldr     ip, [sp, #16]
+       cmp     r5, #256
+       cmnne   r5, #1
+       movne   r2, #0
+       str     r5, [r9, ip]
+       strne   r2, [r9, ip]
+       ldr     ip, [sp, #16]
+       ldr     r3, [r9, ip]
+       cmn     r3, #1
+       bne     .L1255
+       ldr     r2, .L1269+4
+       ldr     r1, [r6, #4]
+       ldr     r0, .L1269+16
+       ldrb    r2, [r2, #3836] @ zero_extendqisi2
+       bl      printk
+       ldr     r1, [r6, #12]
+       cmp     r1, #0
+       beq     .L1255
+       mov     r2, #4
+       ldr     r0, .L1269+20
+       mov     r3, r2
+       bl      rknand_print_hex
+.L1255:
+       cmp     r7, #0
+       beq     .L1256
+       ldr     r3, .L1269+4
+       ldrb    r3, [r3, #3836] @ zero_extendqisi2
+       add     r3, r3, r3, asl #1
+       cmp     r8, r3, lsr #2
+       bls     .L1257
+       ldr     r3, .L1269+8
+       ldr     r3, [r3, #164]
+       cmp     r3, #0
+       moveq   r8, #256
+.L1257:
+       add     r3, sl, #1
+       mov     r2, #36
+       cmp     r8, #256
+       cmnne   r8, #1
+       mul     r3, r2, r3
+       movne   r2, #0
+       str     r8, [r9, r3]
+       strne   r2, [r9, r3]
+.L1256:
+       ldr     ip, [sp, #24]
+       add     sl, sl, r7
+       cmp     ip, #0
+       beq     .L1237
+       ldr     r3, .L1269+4
+       ldrb    r3, [r3, #80]   @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L1237
+       mov     r0, r4
+       bl      flash_exit_slc_mode
+.L1237:
+       add     sl, sl, #1
+.L1234:
+       ldr     ip, [sp, #28]
+       cmp     sl, ip
+       bcc     .L1258
+       mov     r0, #0
+.L1235:
+       add     sp, sp, #52
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1270:
+       .align  2
+.L1269:
+       .word   .LANCHOR1
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   .LC97
+       .word   .LC94
+       .word   .LC96
+       .fnend
+       .size   FlashReadPages, .-FlashReadPages
+       .align  2
+       .global FtlGcScanTempBlk
+       .type   FtlGcScanTempBlk, %function
+FtlGcScanTempBlk:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 16
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r2, .L1297
+       movw    r3, #3000
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #20
+       sub     sp, sp, #20
+       ldrh    r4, [r2, r3]
+       movw    r3, #65535
+       mov     r5, r0
+       str     r1, [sp, #12]
+       cmp     r4, r3
+       beq     .L1290
+       cmp     r4, #0
+       bne     .L1272
+       b       .L1273
+.L1290:
+       mov     r4, #0
+.L1272:
+       ldr     r2, .L1297+4
+       movw    r3, #3912
+       ldr     fp, [sp, #12]
+       ldrh    r3, [r2, r3]
+       cmp     fp, r3
+       bne     .L1274
+.L1273:
+       bl      FtlGcPageVarInit
+.L1274:
+       mvn     r8, #0
+       mov     r7, #0
+       movw    sl, #65535
+.L1285:
+       ldrh    r3, [r5, #0]
+       mov     r0, #0
+       strb    r0, [r5, #8]
+       cmp     r3, sl
+       beq     .L1291
+.L1276:
+.L1294:
+       ldr     r3, .L1297+4
+       movw    r2, #3844
+       ldrh    r9, [r3, r2]
+       ldr     r2, .L1297+8
+       ldr     lr, [r2, #-984]
+       ldr     ip, [r2, #-1164]
+       movw    r2, #3924
+       ldrh    r2, [r3, r2]
+       mov     r3, #0
+       mov     r6, r3
+       str     r2, [sp, #8]
+       mov     r2, r5
+       b       .L1277
+.L1279:
+       ldrh    r0, [r2, #16]
+       cmp     r0, sl
+       beq     .L1278
+       mov     fp, #36
+       orr     r0, r4, r0, asl #10
+       mla     r1, fp, r6, lr
+       ldr     fp, [sp, #8]
+       str     r0, [r1, #4]
+       mov     r0, #0
+       str     r0, [r1, #8]
+       mul     r0, fp, r6
+       add     r6, r6, #1
+       uxth    r6, r6
+       add     fp, r0, #3
+       cmp     r0, #0
+       movlt   r0, fp
+       bic     r0, r0, #3
+       add     r0, ip, r0
+       str     r0, [r1, #12]
+.L1278:
+       add     r3, r3, #1
+       add     r2, r2, #2
+       uxth    r3, r3
+.L1277:
+       cmp     r3, r9
+       bne     .L1279
+       ldr     r9, .L1297+8
+       mov     r1, r6
+       mov     r2, #0
+       ldr     r0, [r9, #-984]
+       bl      FlashReadPages
+       mov     r3, #36
+       mul     r3, r3, r6
+       mov     r6, #0
+       str     r3, [sp, #8]
+       b       .L1280
+.L1286:
+       ldr     fp, .L1297+8
+       ldr     r1, [fp, #-984]
+       add     r3, r1, r6
+       ldr     r9, [r3, #4]
+       stmia   sp, {r1, r3}
+       ubfx    r0, r9, #10, #16
+       bl      P2V_plane
+       ldr     r1, [sp, #0]
+       ldr     r3, [sp, #4]
+       ldr     r1, [r1, r6]
+       cmp     r1, #0
+       mov     r2, r0
+       bne     .L1281
+       ldr     r3, [r3, #12]
+       add     r6, r6, #36
+       ldrh    r1, [r3, #0]
+       cmp     r1, sl
+       moveq   r3, #1
+       streq   r3, [fp, #-1016]
+       beq     .L1275
+.L1282:
+       ldr     r0, [r3, #12]
+       mov     r1, r9
+       ldr     r2, [r3, #8]
+       bl      FtlGcUpdatePage
+       b       .L1280
+.L1281:
+       ldr     r3, [fp, #-1884]
+       cmp     r3, #0
+       beq     .L1283
+       ldrh    r3, [r5, #0]
+       ldr     r2, [fp, #-2084]
+       mov     r3, r3, asl #1
+       ldrh    r3, [r2, r3]
+       cmp     r3, #119
+       movls   r8, r9
+       bls     .L1284
+.L1283:
+       cmn     r1, #1
+       moveq   r8, r9
+.L1284:
+       ldr     r2, .L1297+8
+       mov     r0, #0  @ movhi
+       ldrh    r3, [r5, #0]
+       mov     r4, #0
+       ldr     r2, [r2, #-2064]
+       mov     r3, r3, asl #1
+       strh    r0, [r2, r3]    @ movhi
+       ldrh    r0, [r5, #0]
+       bl      INSERT_FREE_LIST
+       mvn     r3, #0
+       strh    r3, [r5, #0]    @ movhi
+       bl      FtlGcPageVarInit
+       b       .L1285
+.L1280:
+       ldr     r3, [sp, #8]
+       cmp     r6, r3
+       bne     .L1286
+       ldr     fp, [sp, #12]
+       add     r7, r7, #1
+       add     r4, r4, #1
+       cmp     r7, fp
+       uxth    r4, r4
+       bcc     .L1287
+       ldr     r2, .L1297
+       movw    r3, #3000
+       ldrh    r1, [r2, r3]
+       cmp     r1, sl
+       beq     .L1287
+       add     r1, r1, r7
+       strh    r1, [r2, r3]    @ movhi
+       ldr     r2, .L1297+4
+       add     r3, r3, #912
+       ldrh    r3, [r2, r3]
+       cmp     r3, r4
+       bhi     .L1288
+.L1287:
+       ldr     r2, .L1297+4
+       movw    r3, #3912
+       ldrh    r3, [r2, r3]
+       cmp     r3, r4
+       bhi     .L1294
+.L1291:
+       mov     r2, #0
+.L1275:
+       ldr     r1, .L1297
+       movw    r3, #3000
+       mvn     r0, #0
+       strh    r4, [r5, #2]    @ movhi
+       strb    r2, [r5, #6]
+       strh    r0, [r1, r3]    @ movhi
+       mov     r0, r5
+       mov     r1, r4
+       bl      ftl_sb_update_avl_pages
+.L1288:
+       mov     r0, r8
+       add     sp, sp, #20
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1298:
+       .align  2
+.L1297:
+       .word   .LANCHOR1
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   FtlGcScanTempBlk, .-FtlGcScanTempBlk
+       .align  2
+       .global FtlScanSysBlk
+       .type   FtlScanSysBlk, %function
+FtlScanSysBlk:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 24
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r6, #0
+       ldr     r5, .L1357
+       .pad #28
+       sub     sp, sp, #28
+       ldr     r4, .L1357+4
+       mov     r1, r6
+       ldr     r3, .L1357+8
+       movw    r7, #3932
+       ldr     r2, [r5, #3940]
+       ldr     r0, [r4, #-1040]
+       mov     sl, r4
+       strh    r6, [r4, r3]    @ movhi
+       movw    r3, #3956
+       strh    r6, [r5, r3]    @ movhi
+       mov     r2, r2, asl #2
+       bl      ftl_memset
+       ldr     r2, [r5, #3940]
+       mov     r1, r6
+       ldr     r0, [r4, #-1044]
+       mov     r2, r2, asl #1
+       bl      ftl_memset
+       ldrh    r2, [r5, r7]
+       mov     r1, r6
+       ldr     r0, [r4, #-924]
+       mov     r2, r2, asl #2
+       bl      ftl_memset
+       ldrh    r2, [r5, r7]
+       mov     r1, r6
+       ldr     r0, [r5, #3960]
+       mov     r2, r2, asl #1
+       bl      ftl_memset
+       ldr     r0, .L1357+12
+       mov     r1, #255
+       mov     r2, #12
+       bl      ftl_memset
+       movw    r3, #3852
+       ldrh    r3, [r5, r3]
+       str     r3, [sp, #8]
+       b       .L1300
+.L1302:
+       add     r3, r6, r5
+       ldr     r1, [sp, #8]
+       ldrb    r0, [r3, #3870] @ zero_extendqisi2
+       bl      V2P_block
+       str     r0, [sp, #0]
+       bl      FtlBbmIsBadBlock
+       ldr     r3, [sp, #0]
+       cmp     r0, #0
+       bne     .L1301
+       ldr     r2, [r4, #-984]
+       mov     r3, r3, asl #10
+       mla     r2, r9, r7, r2
+       str     r3, [r2, #4]
+       ldrh    r3, [r6, r8]
+       str     r0, [r2, #8]
+       mul     r3, r3, r7
+       add     r7, r7, #1
+       uxth    r7, r7
+       add     r1, r3, #3
+       cmp     r3, #0
+       movlt   r3, r1
+       ldr     r1, [r4, #-1164]
+       bic     r3, r3, #3
+       add     r3, r1, r3
+       str     r3, [r2, #12]
+.L1301:
+       add     r5, r5, #1
+       uxth    r5, r5
+       b       .L1338
+.L1351:
+       mov     r7, #0
+       movw    fp, #3844
+       mov     r5, r7
+       mov     r9, #36
+       movw    r8, #3924
+.L1338:
+       ldrh    r3, [r6, fp]
+       cmp     r3, r5
+       bhi     .L1302
+       ldr     r0, [r4, #-984]
+       mov     r1, r7
+       mov     r2, #1
+       mov     r8, #0
+       bl      FlashReadPages
+       mov     fp, r7
+       str     r8, [sp, #12]
+       b       .L1303
+.L1337:
+       ldr     r2, [r4, #-984]
+       add     r0, r2, r8
+       ldr     r7, [r2, r8]
+       ldr     r3, [r0, #4]
+       cmn     r7, #1
+       ldr     r5, [r0, #12]
+       ubfx    r6, r3, #10, #16
+       bne     .L1304
+       mov     r1, #1
+       add     r3, r3, #1
+       mov     r2, r1
+       str     r3, [r0, #4]
+       bl      FlashReadPages
+       ldrh    r3, [r5, #0]
+       movw    r0, #65535
+       cmp     r3, r0
+       ldreq   r3, [r4, #-984]
+       streq   r7, [r3, r8]
+.L1304:
+       ldr     r3, [r4, #-984]
+       ldr     r3, [r3, r8]
+       cmn     r3, #1
+       beq     .L1305
+       ldr     r2, [r4, #-1848]
+       ldr     r3, [r5, #4]
+       cmn     r2, #1
+       beq     .L1306
+       cmp     r2, r3
+       bhi     .L1307
+.L1306:
+       cmn     r3, #1
+       addne   r3, r3, #1
+       strne   r3, [sl, #-1848]
+.L1307:
+       ldrh    r3, [r5, #0]
+       movw    r2, #61604
+       cmp     r3, r2
+       beq     .L1310
+       bhi     .L1313
+       movw    r2, #61574
+       cmp     r3, r2
+       bne     .L1308
+       b       .L1355
+.L1313:
+       movw    r2, #61634
+       cmp     r3, r2
+       beq     .L1311
+       movw    r1, #65535
+       cmp     r3, r1
+       bne     .L1308
+       b       .L1356
+.L1311:
+       ldr     r3, .L1357
+       ldr     r1, [r4, #-1040]
+       ldr     r2, [r3, #3940]
+       ldr     r3, .L1357+8
+       uxth    r0, r2
+       ldrh    r3, [r4, r3]
+       sub     r7, r0, #1
+       rsb     r0, r3, r0
+       uxth    r7, r7
+       sub     r0, r0, #1
+       sxth    r0, r0
+       str     r0, [sp, #4]
+       b       .L1314
+.L1322:
+       mov     ip, r9, asl #2
+       ldr     r0, [r1, r9, asl #2]
+       str     ip, [sp, #16]
+       ldr     ip, [r5, #4]
+       cmp     ip, r0
+       bls     .L1315
+       ldr     r1, [r1, #0]
+       cmp     r1, #0
+       bne     .L1316
+       cmp     r3, r2
+       bne     .L1317
+.L1316:
+       ldr     r3, [r4, #-1044]
+       mov     r1, #1
+       ldrh    r0, [r3, #0]
+       bl      FtlFreeSysBlkQueueIn
+       b       .L1318
+.L1317:
+       ldr     r2, .L1357+8
+       add     r3, r3, #1
+       strh    r3, [r4, r2]    @ movhi
+.L1318:
+       sxth    ip, r7
+       mov     r2, #0
+       str     ip, [sp, #4]
+       b       .L1319
+.L1320:
+       ldr     r0, [r4, #-1040]
+       add     r1, r3, #1
+       add     r2, r2, #1
+       ldr     ip, [r0, r1, asl #2]
+       mov     r1, r1, asl #1
+       uxth    r2, r2
+       str     ip, [r0, r3, asl #2]
+       mov     r3, r3, asl #1
+       ldr     r0, [r4, #-1044]
+       ldrh    r1, [r0, r1]
+       strh    r1, [r0, r3]    @ movhi
+.L1319:
+       ldr     r0, [sp, #4]
+       sxth    r3, r2
+       cmp     r3, r0
+       bne     .L1320
+       ldr     r3, [sl, #-1040]
+       mov     r9, r9, asl #1
+       ldr     r2, [r5, #4]
+       ldr     ip, [sp, #16]
+       str     r2, [r3, ip]
+       ldr     r3, [sl, #-1044]
+       strh    r6, [r3, r9]    @ movhi
+       b       .L1321
+.L1315:
+       sub     r7, r7, #1
+       uxth    r7, r7
+.L1314:
+       ldr     r0, [sp, #4]
+       sxth    r9, r7
+       cmp     r9, r0
+       bgt     .L1322
+.L1321:
+       sxth    r7, r7
+       cmp     r7, #0
+       blt     .L1305
+.L1323:
+       ldr     r3, .L1357+8
+       ldr     r1, .L1357
+       ldrh    r2, [r4, r3]
+       ldr     r1, [r1, #3940]
+       rsb     r1, r2, r1
+       sub     r1, r1, #1
+       sxth    r1, r1
+       cmp     r7, r1
+       bgt     .L1308
+       add     r2, r2, #1
+       strh    r2, [r4, r3]    @ movhi
+       ldr     r3, [r4, #-1040]
+       ldr     r2, [r5, #4]
+       str     r2, [r3, r7, asl #2]
+       mov     r7, r7, asl #1
+       ldr     r3, [r4, #-1044]
+       b       .L1353
+.L1355:
+       ldr     r3, .L1357
+       movw    r2, #3932
+       movw    r0, #3956
+       ldrh    r2, [r3, r2]
+       ldrh    r3, [r3, r0]
+       sub     r1, r2, #1
+       uxth    r7, r1
+       rsb     r1, r3, r1
+       str     r1, [sp, #4]
+       ldr     r1, [r4, #-924]
+       b       .L1324
+.L1332:
+       mov     ip, r9, asl #2
+       ldr     r0, [r1, r9, asl #2]
+       str     ip, [sp, #16]
+       ldr     ip, [r5, #4]
+       cmp     ip, r0
+       bls     .L1325
+       ldr     r1, [r1, #0]
+       cmp     r1, #0
+       ldr     r1, .L1357
+       bne     .L1326
+       cmp     r3, r2
+       bne     .L1327
+.L1326:
+       ldr     r3, [r1, #3960]
+       mov     r1, #1
+       ldrh    r0, [r3, #0]
+       bl      FtlFreeSysBlkQueueIn
+       b       .L1328
+.L1327:
+       movw    r2, #3956
+       add     r3, r3, #1
+       strh    r3, [r1, r2]    @ movhi
+.L1328:
+       sxth    r0, r7
+       mov     r2, #0
+       str     r0, [sp, #20]
+       ldr     ip, .L1357
+       str     r5, [sp, #4]
+       b       .L1329
+.L1330:
+       ldr     r0, [r4, #-924]
+       add     r1, r3, #1
+       add     r2, r2, #1
+       ldr     r5, [r0, r1, asl #2]
+       mov     r1, r1, asl #1
+       uxth    r2, r2
+       str     r5, [r0, r3, asl #2]
+       mov     r3, r3, asl #1
+       ldr     r0, [ip, #3960]
+       ldrh    r1, [r0, r1]
+       strh    r1, [r0, r3]    @ movhi
+.L1329:
+       ldr     r0, [sp, #20]
+       sxth    r3, r2
+       cmp     r3, r0
+       bne     .L1330
+       ldr     r5, [sp, #4]
+       mov     r9, r9, asl #1
+       ldr     r3, [sl, #-924]
+       ldr     ip, [sp, #16]
+       ldr     r2, [r5, #4]
+       str     r2, [r3, ip]
+       ldr     r3, .L1357
+       ldr     r3, [r3, #3960]
+       strh    r6, [r3, r9]    @ movhi
+       b       .L1331
+.L1325:
+       sub     r7, r7, #1
+       uxth    r7, r7
+.L1324:
+       ldr     r0, [sp, #4]
+       sxth    r9, r7
+       cmp     r9, r0
+       bgt     .L1332
+.L1331:
+       sxth    r7, r7
+       cmp     r7, #0
+       blt     .L1305
+.L1333:
+       ldr     r3, .L1357
+       movw    r0, #3932
+       movw    r2, #3956
+       ldrh    r0, [r3, r0]
+       ldrh    r1, [r3, r2]
+       sub     r0, r0, #1
+       rsb     r0, r1, r0
+       sxth    r0, r0
+       cmp     r7, r0
+       bgt     .L1308
+       add     r1, r1, #1
+       strh    r1, [r3, r2]    @ movhi
+       ldr     r1, [r5, #4]
+       ldr     r2, [r4, #-924]
+       str     r1, [r2, r7, asl #2]
+       mov     r7, r7, asl #1
+       ldr     r3, [r3, #3960]
+.L1353:
+       strh    r6, [r3, r7]    @ movhi
+       b       .L1308
+.L1310:
+       ldr     r3, .L1357+16
+       movw    r1, #65535
+       ldrh    r2, [r4, r3]
+       cmp     r2, r1
+       streqh  r6, [r4, r3]    @ movhi
+       beq     .L1354
+       ldr     r3, .L1357+20
+       movw    r2, #65535
+       ldrh    r0, [r4, r3]
+       cmp     r0, r2
+       beq     .L1335
+       mov     r1, #1
+       bl      FtlFreeSysBlkQueueIn
+.L1335:
+       ldr     r3, [r5, #4]
+       ldr     r2, [sl, #-1760]
+       cmp     r2, r3
+       ldr     r3, .L1357+20
+       strcsh  r6, [r4, r3]    @ movhi
+       bcs     .L1308
+       ldr     r2, .L1357+16
+       ldrh    r1, [r4, r2]
+       strh    r6, [r4, r2]    @ movhi
+       strh    r1, [r4, r3]    @ movhi
+.L1354:
+       ldr     r3, [r5, #4]
+       str     r3, [r4, #-1760]
+       b       .L1308
+.L1356:
+       mov     r0, r6
+       mov     r1, #0
+       b       .L1352
+.L1305:
+       mov     r0, r6
+       mov     r1, #1
+.L1352:
+       bl      FtlFreeSysBlkQueueIn
+.L1308:
+       ldr     r5, [sp, #12]
+       add     r8, r8, #36
+       add     r3, r5, #1
+       uxth    r3, r3
+       str     r3, [sp, #12]
+.L1303:
+       ldr     ip, [sp, #12]
+       cmp     ip, fp
+       bne     .L1337
+       ldr     r5, [sp, #8]
+       add     r3, r5, #1
+       uxth    r3, r3
+       str     r3, [sp, #8]
+.L1300:
+       ldr     r6, .L1357
+       movw    r3, #3854
+       ldr     ip, [sp, #8]
+       ldrh    r3, [r6, r3]
+       cmp     r3, ip
+       bhi     .L1351
+       ldr     r1, .L1357+4
+       ldr     r2, [r1, #-1044]
+       ldrh    r3, [r2, #0]
+       cmp     r3, #0
+       bne     .L1339
+       ldr     r0, .L1357+8
+       ldrh    r1, [r1, r0]
+       cmp     r1, #0
+       ldrne   r0, [r6, #3940]
+       bne     .L1340
+       b       .L1339
+.L1344:
+       mov     r1, r1, asl #1
+       ldrh    r1, [r2, r1]
+       cmp     r1, #0
+       beq     .L1341
+       ldr     r7, .L1357
+       sxth    r6, r3
+       ldr     r1, .L1357+4
+       mov     r5, #0
+       b       .L1342
+.L1343:
+       ldr     ip, [r1, #-1044]
+       mov     r0, r2, asl #1
+       rsb     r4, r6, r2
+       add     r3, r3, #1
+       ldrh    sl, [ip, r0]
+       mov     r8, r4, asl #1
+       uxth    r3, r3
+       strh    sl, [ip, r8]    @ movhi
+       ldr     ip, [r1, #-1040]
+       ldr     r2, [ip, r2, asl #2]
+       str     r2, [ip, r4, asl #2]
+       ldr     r2, [r1, #-1044]
+       strh    r5, [r2, r0]    @ movhi
+.L1342:
+       ldr     r0, [r7, #3940]
+       sxth    r2, r3
+       cmp     r2, r0
+       bcc     .L1343
+       b       .L1339
+.L1341:
+       add     r3, r3, #1
+       uxth    r3, r3
+.L1340:
+       sxth    r1, r3
+       cmp     r1, r0
+       bcc     .L1344
+.L1339:
+       ldr     r2, .L1357
+       ldr     r1, [r2, #3960]
+       ldrh    r3, [r1, #0]
+       cmp     r3, #0
+       bne     .L1345
+       movw    r0, #3956
+       ldrh    r0, [r2, r0]
+       cmp     r0, #0
+       movwne  r0, #3932
+       ldrneh  r2, [r2, r0]
+       bne     .L1346
+       b       .L1345
+.L1350:
+       mov     ip, r0, asl #1
+       ldrh    ip, [r1, ip]
+       cmp     ip, #0
+       beq     .L1347
+       ldr     r1, .L1357
+       movw    r8, #3932
+       ldr     r7, .L1357+4
+       mov     r6, #0
+       b       .L1348
+.L1349:
+       ldr     r4, [r1, #3960]
+       mov     ip, r2, asl #1
+       rsb     r5, r0, r2
+       add     r3, r3, #1
+       ldrh    r9, [r4, ip]
+       mov     sl, r5, asl #1
+       uxth    r3, r3
+       strh    r9, [r4, sl]    @ movhi
+       ldr     r4, [r7, #-924]
+       ldr     r2, [r4, r2, asl #2]
+       str     r2, [r4, r5, asl #2]
+       ldr     r2, [r1, #3960]
+       strh    r6, [r2, ip]    @ movhi
+.L1348:
+       ldrh    ip, [r1, r8]
+       sxth    r2, r3
+       cmp     r2, ip
+       blt     .L1349
+       b       .L1345
+.L1347:
+       add     r3, r3, #1
+       uxth    r3, r3
+.L1346:
+       sxth    r0, r3
+       cmp     r0, r2
+       blt     .L1350
+.L1345:
+       mov     r0, #0
+       add     sp, sp, #28
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1358:
+       .align  2
+.L1357:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   -1048
+       .word   .LANCHOR2-1768
+       .word   -1768
+       .word   -1764
+       .fnend
+       .size   FtlScanSysBlk, .-FtlScanSysBlk
+       .align  2
+       .global FtlVendorPartRead
+       .type   FtlVendorPartRead, %function
+FtlVendorPartRead:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 48
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L1369
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r8, r2
+       mov     r2, #3920
+       mov     r5, r1
+       ldrh    r9, [r3, r2]
+       movw    r2, #3906
+       ldrh    r2, [r3, r2]
+       add     r1, r1, r0
+       .pad #52
+       sub     sp, sp, #52
+       mov     r6, r0
+       cmp     r1, r2
+       mvnhi   r7, #0
+       bhi     .L1360
+       mov     r9, r0, lsr r9
+       mov     r7, #0
+       ldr     sl, .L1369+4
+       mov     r9, r9, asl #2
+       b       .L1361
+.L1366:
+       ldr     r3, [sl, #-920]
+       mov     r0, r6
+       ldr     r1, .L1369
+       ldr     fp, [r3, r9]
+       movw    r3, #3918
+       ldrh    r4, [r1, r3]
+       mov     r1, r4
+       bl      __aeabi_uidivmod
+       uxth    r3, r1
+       rsb     r4, r3, r4
+       uxth    r4, r4
+       cmp     r4, r5
+       uxthhi  r4, r5
+       cmp     fp, #0
+       beq     .L1363
+       ldr     r1, .L1369+4
+       add     r0, sp, #12
+       str     fp, [sp, #16]
+       ldr     r2, [r1, #-968]
+       mov     r1, #1
+       str     r3, [sp, #4]
+       str     r2, [sp, #20]
+       mov     r2, #0
+       str     r2, [sp, #24]
+       mov     r2, r1
+       bl      FlashReadPages
+       ldr     r2, [sp, #12]
+       ldr     r3, [sp, #4]
+       mov     r0, r8
+       cmn     r2, #1
+       ldr     r1, [sl, #-968]
+       moveq   r7, r2
+       add     r1, r1, r3, asl #9
+       mov     r2, r4, asl #9
+       bl      memcpy
+       b       .L1365
+.L1363:
+       mov     r0, r8
+       mov     r1, fp
+       mov     r2, r4, asl #9
+       bl      ftl_memset
+.L1365:
+       rsb     r5, r4, r5
+       add     r6, r6, r4
+       add     r8, r8, r4, asl #9
+       add     r9, r9, #4
+.L1361:
+       cmp     r5, #0
+       bne     .L1366
+.L1360:
+       mov     r0, r7
+       add     sp, sp, #52
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1370:
+       .align  2
+.L1369:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   FtlVendorPartRead, .-FtlVendorPartRead
+       .align  2
+       .global Ftl_load_ext_data
+       .type   Ftl_load_ext_data, %function
+Ftl_load_ext_data:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r0, #0
+       ldr     r5, .L1375
+       mov     r1, #1
+       ldr     r2, .L1375+4
+       bl      FtlVendorPartRead
+       ldr     r4, .L1375+8
+       ldr     r3, [r5, #-1704]
+       cmp     r3, r4
+       beq     .L1372
+       ldr     r0, .L1375+4
+       mov     r1, #0
+       mov     r2, #512
+       bl      ftl_memset
+       str     r4, [r5, #-1704]
+.L1372:
+       ldr     r2, [r5, #-1704]
+       ldr     r3, .L1375
+       cmp     r2, r4
+       bne     .L1373
+       ldr     r2, [r3, #-1616]
+       str     r2, [r3, #-1856]
+       ldr     r2, [r3, #-1612]
+       str     r2, [r3, #-1852]
+       ldr     r2, [r3, #-1696]
+       str     r2, [r3, #-1860]
+       ldr     r2, [r3, #-1692]
+       str     r2, [r3, #-1872]
+       ldr     r2, [r3, #-1688]
+       str     r2, [r3, #-1880]
+       ldr     r2, [r3, #-1684]
+       str     r2, [r3, #-1864]
+       ldr     r2, [r3, #-1676]
+       str     r2, [r3, #-1836]
+       ldr     r2, [r3, #-1672]
+       str     r2, [r3, #-2080]
+       ldr     r2, [r3, #-1668]
+       str     r2, [r3, #-1876]
+       ldr     r2, [r3, #-1664]
+       str     r2, [r3, #-1868]
+       ldr     r2, [r3, #-1660]
+       str     r2, [r3, #-1828]
+       ldr     r2, [r3, #-1656]
+       str     r2, [r3, #-1824]
+       ldr     r2, [r3, #-1644]
+       str     r2, [r3, #-1708]
+.L1373:
+       ldr     r4, .L1375
+       mov     r3, #0
+       ldr     r2, [r4, #-1636]
+       str     r3, [r4, #-1004]
+       ldr     r3, .L1375+12
+       cmp     r2, r3
+       bne     .L1374
+       mov     r3, #1
+       ldr     r0, .L1375+16
+       str     r3, [r4, #-1884]
+       ldr     r1, .L1375+20
+       bl      printk
+.L1374:
+       ldr     r3, .L1375+24
+       movw    r2, #3902
+       ldr     r0, [r4, #-1840]
+       ldrh    r1, [r3, r2]
+       ldr     r2, [r4, #-1836]
+       mla     r0, r0, r1, r2
+       movw    r2, #3852
+       ldrh    r1, [r3, r2]
+       bl      __aeabi_uidiv
+       str     r0, [r4, #-1832]
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L1376:
+       .align  2
+.L1375:
+       .word   .LANCHOR2
+       .word   .LANCHOR2-1704
+       .word   1179929683
+       .word   305432421
+       .word   .LC75
+       .word   .LC98
+       .word   .LANCHOR0
+       .fnend
+       .size   Ftl_load_ext_data, .-Ftl_load_ext_data
+       .align  2
+       .global FtlLoadEctTbl
+       .type   FtlLoadEctTbl, %function
+FtlLoadEctTbl:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r0, #64
+       ldr     r4, .L1379
+       ldr     r5, .L1379+4
+       ldr     r2, [r4, #-936]
+       ldrh    r1, [r4, r5]
+       bl      FtlVendorPartRead
+       ldr     r3, [r4, #-936]
+       ldr     r2, [r3, #0]
+       ldr     r3, .L1379+8
+       cmp     r2, r3
+       beq     .L1378
+       ldr     r1, .L1379+12
+       ldr     r0, .L1379+16
+       bl      printk
+       ldrh    r2, [r4, r5]
+       ldr     r0, [r4, #-936]
+       mov     r1, #0
+       mov     r2, r2, asl #9
+       bl      ftl_memset
+.L1378:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L1380:
+       .align  2
+.L1379:
+       .word   .LANCHOR2
+       .word   -940
+       .word   1112818501
+       .word   .LC99
+       .word   .LC75
+       .fnend
+       .size   FtlLoadEctTbl, .-FtlLoadEctTbl
+       .align  2
+       .global load_l2p_region
+       .type   load_l2p_region, %function
+load_l2p_region:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       mov     r6, r0
+       ldr     r4, .L1384
+       mov     r5, #12
+       ldr     r3, [r4, #-1036]
+       ldr     r7, [r3, r0, asl #2]
+       cmp     r7, #0
+       bne     .L1382
+       mul     r5, r5, r1
+       ldr     r3, [r4, #-1900]
+       ldr     r2, .L1384+4
+       mov     r1, #255
+       add     r3, r3, r5
+       ldr     r0, [r3, #8]
+       movw    r3, #3922
+       ldrh    r2, [r2, r3]
+       bl      ftl_memset
+       ldr     r3, [r4, #-1900]
+       strh    r6, [r3, r5]    @ movhi
+       ldr     r3, [r4, #-1900]
+       add     r5, r3, r5
+       str     r7, [r5, #4]
+       b       .L1383
+.L1382:
+       mul     r5, r5, r1
+       ldr     r3, [r4, #-1900]
+       mov     r1, #1
+       add     r0, r4, #168
+       mov     r2, r1
+       str     r7, [r4, #172]
+       add     r3, r3, r5
+       ldr     r3, [r3, #8]
+       str     r3, [r4, #176]
+       ldr     r3, [r4, #-952]
+       str     r3, [r4, #180]
+       bl      FlashReadPages
+       ldr     r3, [r4, #-1900]
+       mov     r1, #0
+       add     r2, r3, r5
+       str     r1, [r2, #4]
+       strh    r6, [r3, r5]    @ movhi
+.L1383:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1385:
+       .align  2
+.L1384:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .fnend
+       .size   load_l2p_region, .-load_l2p_region
+       .align  2
+       .global FtlGetLastWrittenPage
+       .type   FtlGetLastWrittenPage, %function
+FtlGetLastWrittenPage:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 104
+       @ frame_needed = 0, uses_anonymous_args = 0
+       cmp     r1, #1
+       ldr     r3, .L1397
+       stmfd   sp!, {r4, r5, r6, r7, r8, sl, lr}
+       .save {r4, r5, r6, r7, r8, sl, lr}
+       movweq  r2, #3914
+       movwne  r2, #3912
+       .pad #108
+       sub     sp, sp, #108
+       ldrh    r4, [r3, r2]
+       add     r7, sp, #4
+       mov     r5, r1
+       add     r3, sp, #40
+       sub     r4, r4, #1
+       str     r3, [sp, #16]
+       mov     sl, r0, asl #10
+       mov     r1, #1
+       uxth    r4, r4
+       mov     r0, r7
+       mov     r2, r5
+       mov     r8, #0
+       sxth    r3, r4
+       str     r8, [sp, #12]
+       orr     r3, r3, sl
+       str     r3, [sp, #8]
+       bl      FlashReadPages
+       ldr     r3, [sp, #40]
+       cmn     r3, #1
+       bne     .L1390
+       b       .L1395
+.L1393:
+       add     r6, r6, r3
+       mov     r0, r7
+       mov     r1, #1
+       mov     r2, r5
+       add     r6, r6, r6, lsr #31
+       ubfx    r6, r6, #1, #16
+       sxth    r3, r6
+       orr     r3, r3, sl
+       str     r3, [sp, #8]
+       bl      FlashReadPages
+       ldr     r3, [sp, #40]
+       cmn     r3, #1
+       bne     .L1391
+       ldr     r3, [sp, #44]
+       cmn     r3, #1
+       bne     .L1391
+       ldr     r3, [sp, #4]
+       cmn     r3, #1
+       subne   r4, r6, #1
+       uxthne  r4, r4
+       bne     .L1395
+.L1391:
+       add     r6, r6, #1
+       uxth    r8, r6
+.L1395:
+       sxth    r6, r8
+       sxth    r3, r4
+       cmp     r6, r3
+       ble     .L1393
+.L1390:
+       sxth    r0, r4
+       add     sp, sp, #108
+       ldmfd   sp!, {r4, r5, r6, r7, r8, sl, pc}
+.L1398:
+       .align  2
+.L1397:
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
+       .align  2
+       .global FtlLoadSysInfo
+       .type   FtlLoadSysInfo, %function
+FtlLoadSysInfo:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       mov     r5, #0
+       ldr     r4, .L1413
+       mov     r1, r5
+       ldr     r2, .L1413+4
+       ldr     r7, .L1413+8
+       ldr     r3, [r4, #-952]
+       str     r5, [r4, #176]
+       ldr     r0, [r4, #-2064]
+       str     r3, [r4, #180]
+       movw    r3, #3852
+       ldrh    r2, [r2, r3]
+       mov     r2, r2, asl #1
+       bl      ftl_memset
+       ldrh    r0, [r4, r7]
+       movw    r3, #65535
+       cmp     r0, r3
+       beq     .L1411
+       mov     r1, #1
+       bl      FtlGetLastWrittenPage
+       ldr     r3, .L1413+12
+       add     r2, r0, #1
+       mov     r6, r0
+       strh    r2, [r4, r3]    @ movhi
+       b       .L1401
+.L1403:
+       ldrh    r2, [r4, r7]
+       mov     r1, #1
+       ldr     r0, .L1413+16
+       sub     r5, r5, #1
+       orr     r3, r3, r2, asl #10
+       str     r3, [r4, #172]
+       ldr     r3, [r4, #-2076]
+       mov     r2, r1
+       uxth    r5, r5
+       str     r3, [r4, #176]
+       bl      FlashReadPages
+       ldr     r3, [r4, #168]
+       cmn     r3, #1
+       bne     .L1402
+.L1401:
+       add     r3, r5, r6
+       sxth    r3, r3
+       cmp     r3, #0
+       bge     .L1403
+.L1402:
+       ldr     r4, .L1413
+       mov     r2, #48
+       ldr     r5, .L1413+4
+       movw    r6, #3852
+       ldr     r0, .L1413+20
+       ldr     r7, [r4, #176]
+       mov     r1, r7
+       bl      memcpy
+       ldrh    r2, [r5, r6]
+       add     r1, r7, #48
+       ldr     r0, [r4, #-2064]
+       mov     r2, r2, asl #1
+       bl      memcpy
+       ldrh    r1, [r5, r6]
+       ldr     r3, [r4, #176]
+       ldr     r0, [r4, #-1888]
+       mov     r2, r1, lsr #3
+       add     r1, r1, #24
+       add     r2, r2, #4
+       mov     r1, r1, lsr #1
+       add     r1, r3, r1, asl #2
+       bl      memcpy
+       ldr     r2, [r4, #-1820]
+       ldr     r3, .L1413+24
+       cmp     r2, r3
+       bne     .L1411
+       ldr     r3, .L1413+28
+       ldr     r2, .L1413+32
+       ldrb    r1, [r4, #-1810]        @ zero_extendqisi2
+       ldrh    r3, [r4, r3]
+       strh    r3, [r4, r2]    @ movhi
+       movw    r2, #3866
+       ldrh    r2, [r5, r2]
+       cmp     r1, r2
+       bne     .L1411
+       movw    r2, #3912
+       movw    r1, #3918
+       ldrh    r2, [r5, r2]
+       ldrh    r1, [r5, r1]
+       ldr     r0, [r5, #3856]
+       mul     r2, r3, r2
+       str     r3, [r4, #204]
+       str     r2, [r5, #3972]
+       mul     r2, r1, r2
+       str     r2, [r5, #3952]
+       movw    r2, #3986
+       ldrh    r2, [r5, r2]
+       rsb     r0, r2, r0
+       rsb     r0, r3, r0
+       movw    r3, #3844
+       ldrh    r1, [r5, r3]
+       movw    r5, #65535
+       bl      __aeabi_uidiv
+       ldr     r3, .L1413+36
+       ldr     r1, .L1413+40
+       strh    r0, [r4, r3]    @ movhi
+       sub     r3, r3, #34
+       ldrh    r2, [r4, r3]
+       sub     r3, r3, #238
+       strh    r2, [r4, r3]    @ movhi
+       add     r3, r3, #240
+       ldrh    r3, [r4, r3]
+       mov     r0, r3, lsr #6
+       and     r3, r3, #63
+       strb    r3, [r4, #-2038]
+       ldrb    r3, [r4, #-1809]        @ zero_extendqisi2
+       strh    r0, [r4, r1]    @ movhi
+       mvn     r1, #0
+       ldr     r0, .L1413+44
+       strb    r3, [r4, #-2036]
+       ldr     r3, .L1413+48
+       strh    r1, [r4, r3]    @ movhi
+       mov     r3, #0
+       ldr     r1, .L1413+52
+       strh    r3, [r4, r0]    @ movhi
+       strb    r3, [r4, #-1750]
+       ldrh    r0, [r4, r1]
+       sub     r1, r1, #194
+       strb    r3, [r4, #-1748]
+       str     r3, [r4, #-1860]
+       strh    r0, [r4, r1]    @ movhi
+       add     r1, r1, #196
+       ldr     r0, .L1413+56
+       ldrh    r1, [r4, r1]
+       mov     ip, r1, lsr #6
+       and     r1, r1, #63
+       strb    r1, [r4, #-1990]
+       ldrb    r1, [r4, #-1808]        @ zero_extendqisi2
+       strh    ip, [r4, r0]    @ movhi
+       strb    r1, [r4, #-1988]
+       ldr     r1, .L1413+60
+       ldrh    r0, [r4, r1]
+       sub     r1, r1, #150
+       strh    r0, [r4, r1]    @ movhi
+       add     r1, r1, #152
+       ldr     r0, .L1413+64
+       ldrh    r1, [r4, r1]
+       mov     ip, r1, lsr #6
+       and     r1, r1, #63
+       strb    r1, [r4, #-1942]
+       ldrb    r1, [r4, #-1807]        @ zero_extendqisi2
+       strh    ip, [r4, r0]    @ movhi
+       strb    r1, [r4, #-1940]
+       str     r3, [r4, #-1872]
+       ldr     r1, [r4, #-1788]
+       str     r3, [r4, #-1880]
+       str     r3, [r4, #-1864]
+       str     r3, [r4, #-1836]
+       str     r3, [r4, #-1828]
+       str     r3, [r4, #-1868]
+       ldr     r3, [r4, #-1780]
+       str     r1, [r4, #-1840]
+       ldr     r1, [r4, #-1848]
+       cmp     r3, r1
+       strhi   r3, [r4, #-1848]
+       ldr     r4, .L1413
+       ldr     r3, [r4, #-1784]
+       ldr     r1, [r4, #-1844]
+       cmp     r3, r1
+       strhi   r3, [r4, #-1844]
+       cmp     r2, r5
+       beq     .L1406
+       ldr     r0, .L1413+68
+       bl      make_superblock
+.L1406:
+       ldr     r3, .L1413+72
+       ldrh    r3, [r4, r3]
+       cmp     r3, r5
+       beq     .L1407
+       ldr     r0, .L1413+76
+       bl      make_superblock
+.L1407:
+       ldr     r5, .L1413
+       movw    r4, #65535
+       ldr     r3, .L1413+80
+       ldrh    r3, [r5, r3]
+       cmp     r3, r4
+       beq     .L1408
+       ldr     r0, .L1413+84
+       bl      make_superblock
+.L1408:
+       ldr     r3, .L1413+48
+       ldrh    r3, [r5, r3]
+       cmp     r3, r4
+       beq     .L1412
+       ldr     r0, .L1413+88
+       bl      make_superblock
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1411:
+       mvn     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1412:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1414:
+       .align  2
+.L1413:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .word   -1768
+       .word   -1766
+       .word   .LANCHOR2+168
+       .word   .LANCHOR2-1820
+       .word   1179929683
+       .word   -1812
+       .word   -1762
+       .word   -1772
+       .word   -2042
+       .word   -1754
+       .word   -1756
+       .word   -1802
+       .word   -1994
+       .word   -1798
+       .word   -1946
+       .word   .LANCHOR2-2044
+       .word   -1996
+       .word   .LANCHOR2-1996
+       .word   -1948
+       .word   .LANCHOR2-1948
+       .word   .LANCHOR2-1756
+       .fnend
+       .size   FtlLoadSysInfo, .-FtlLoadSysInfo
+       .align  2
+       .global FtlLoadBbt
+       .type   FtlLoadBbt, %function
+FtlLoadBbt:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, lr}
+       .save {r4, r5, r6, r7, r8, lr}
+       mov     r3, #0
+       ldr     r6, .L1430
+       ldr     r8, .L1430+4
+       ldr     r4, [r6, #-952]
+       mov     r7, r6
+       str     r3, [r6, #176]
+       str     r4, [r6, #180]
+       bl      FtlBbtMemInit
+       movw    r3, #3908
+       ldrh    r5, [r8, r3]
+       sub     r5, r5, #1
+       uxth    r5, r5
+       b       .L1416
+.L1420:
+       mov     r1, #1
+       mov     r3, r5, asl #10
+       ldr     r0, .L1430+8
+       mov     r2, r1
+       str     r3, [r6, #172]
+       bl      FlashReadPages
+       ldr     r3, [r6, #168]
+       cmn     r3, #1
+       bne     .L1417
+       ldr     r3, [r6, #172]
+       mov     r1, #1
+       ldr     r0, .L1430+8
+       mov     r2, r1
+       add     r3, r3, #1
+       str     r3, [r6, #172]
+       bl      FlashReadPages
+.L1417:
+       ldr     r3, [r7, #168]
+       cmn     r3, #1
+       beq     .L1418
+       ldrh    r2, [r4, #0]
+       movw    r3, #61649
+       cmp     r2, r3
+       bne     .L1418
+       ldr     r3, .L1430+4
+       movw    r2, #3980
+       strh    r5, [r3, r2]    @ movhi
+       ldr     r2, [r4, #4]
+       str     r2, [r3, #3988]
+       mov     r2, #3984
+       ldrh    r1, [r4, #8]
+       strh    r1, [r3, r2]    @ movhi
+       b       .L1419
+.L1418:
+       sub     r5, r5, #1
+       uxth    r5, r5
+.L1416:
+       movw    r3, #3908
+       ldrh    r3, [r8, r3]
+       sub     r3, r3, #48
+       cmp     r5, r3
+       bgt     .L1420
+.L1419:
+       ldr     r5, .L1430+4
+       movw    r8, #3980
+       movw    r3, #65535
+       ldrh    r2, [r5, r8]
+       cmp     r2, r3
+       beq     .L1429
+       mov     r6, #3984
+       ldrh    r2, [r5, r6]
+       cmp     r2, r3
+       beq     .L1422
+       ldr     r7, .L1430
+       mov     r1, #1
+       mov     r2, r2, asl #10
+       add     r0, r7, #168
+       str     r2, [r7, #172]
+       mov     r2, r1
+       bl      FlashReadPages
+       ldr     r3, [r7, #168]
+       cmn     r3, #1
+       beq     .L1422
+       ldrh    r2, [r4, #0]
+       movw    r3, #61649
+       cmp     r2, r3
+       bne     .L1422
+       ldr     r3, [r4, #4]
+       ldr     r2, [r5, #3988]
+       cmp     r3, r2
+       strhi   r3, [r5, #3988]
+       ldrhih  r2, [r5, r6]
+       ldrhih  r3, [r4, #8]
+       strhih  r2, [r5, r8]    @ movhi
+       strhih  r3, [r5, r6]    @ movhi
+.L1422:
+       ldr     r8, .L1430+4
+       movw    r3, #3980
+       mov     r1, #1
+       mov     r6, #0
+       ldr     r5, .L1430
+       ldrh    r0, [r8, r3]
+       bl      FtlGetLastWrittenPage
+       movw    r3, #3982
+       add     r2, r0, #1
+       mov     r7, r0
+       strh    r2, [r8, r3]    @ movhi
+       b       .L1423
+.L1425:
+       movw    r2, #3980
+       mov     r1, #1
+       ldrh    r2, [r8, r2]
+       sub     r6, r6, #1
+       ldr     r0, .L1430+8
+       uxth    r6, r6
+       orr     r3, r3, r2, asl #10
+       str     r3, [r5, #172]
+       ldr     r3, [r5, #-2076]
+       mov     r2, r1
+       str     r3, [r5, #176]
+       bl      FlashReadPages
+       ldr     r3, [r5, #168]
+       cmn     r3, #1
+       bne     .L1424
+.L1423:
+       add     r3, r6, r7
+       sxth    r3, r3
+       cmp     r3, #0
+       bge     .L1425
+.L1424:
+       ldr     r3, .L1430+4
+       movw    r2, #3986
+       ldrh    r1, [r4, #10]
+       ldrh    r0, [r4, #12]
+       strh    r1, [r3, r2]    @ movhi
+       movw    r2, #65535
+       cmp     r0, r2
+       beq     .L1426
+       ldr     r2, [r3, #3840]
+       cmp     r0, r2
+       beq     .L1426
+       movw    r1, #3854
+       ldrh    r3, [r3, r1]
+       mov     r3, r3, lsr #2
+       cmp     r2, r3
+       bcs     .L1426
+       cmp     r0, r3
+       bcs     .L1426
+       bl      FtlSysBlkNumInit
+.L1426:
+       ldr     r6, .L1430+12
+       mov     r4, #0
+       ldr     r8, .L1430+4
+       movw    r7, #3866
+       ldr     r5, .L1430
+       b       .L1427
+.L1428:
+       ldr     r3, .L1430+16
+       ldr     r1, [r5, #176]
+       ldr     r0, [r6, #4]!
+       ldrh    r2, [r5, r3]
+       mov     r2, r2, asl #2
+       mla     r1, r4, r2, r1
+       bl      memcpy
+       add     r4, r4, #1
+.L1427:
+       ldrh    r3, [r8, r7]
+       cmp     r4, r3
+       bcc     .L1428
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, r7, r8, pc}
+.L1429:
+       mvn     r0, #0
+       ldmfd   sp!, {r4, r5, r6, r7, r8, pc}
+.L1431:
+       .align  2
+.L1430:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .word   .LANCHOR2+168
+       .word   .LANCHOR0+4004
+       .word   -1032
+       .fnend
+       .size   FtlLoadBbt, .-FtlLoadBbt
+       .align  2
+       .global FtlLoadFactoryBbt
+       .type   FtlLoadFactoryBbt, %function
+FtlLoadFactoryBbt:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r5, #0
+       ldr     r3, .L1439
+       movw    fp, #3866
+       ldr     r7, .L1439+4
+       ldr     r6, .L1439+8
+       ldr     r2, [r3, #-2076]
+       ldr     r8, [r3, #-952]
+       str     r2, [r3, #176]
+       str     r8, [r3, #180]
+       b       .L1433
+.L1438:
+       movw    r9, #3908
+       mvn     r3, #0
+       ldrh    r4, [r6, r9]
+       strh    r3, [r7], #2    @ movhi
+       add     r4, r4, r3
+       ldr     sl, .L1439
+       uxth    r4, r4
+       b       .L1434
+.L1437:
+       mla     r3, r3, r5, r4
+       mov     r1, #1
+       ldr     r0, .L1439+12
+       mov     r2, r1
+       mov     r3, r3, asl #10
+       str     r3, [sl, #172]
+       bl      FlashReadPages
+       ldr     r3, [sl, #168]
+       cmn     r3, #1
+       beq     .L1435
+       ldrh    r2, [r8, #0]
+       movw    r3, #61664
+       cmp     r2, r3
+       streqh  r4, [r7, #-2]   @ movhi
+       beq     .L1436
+.L1435:
+       sub     r4, r4, #1
+       uxth    r4, r4
+.L1434:
+       ldrh    r3, [r6, r9]
+       sub     r2, r3, #16
+       cmp     r4, r2
+       bgt     .L1437
+.L1436:
+       add     r5, r5, #1
+.L1433:
+       ldrh    r3, [r6, fp]
+       cmp     r5, r3
+       bcc     .L1438
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1440:
+       .align  2
+.L1439:
+       .word   .LANCHOR2
+       .word   .LANCHOR0+3992
+       .word   .LANCHOR0
+       .word   .LANCHOR2+168
+       .fnend
+       .size   FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
+       .align  2
+       .global FlashProgSlc2KPages
+       .type   FlashProgSlc2KPages, %function
+FlashProgSlc2KPages:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 56
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #68
+       sub     sp, sp, #68
+       mov     sl, r1
+       mov     r9, r2
+       str     r3, [sp, #12]
+       mov     r4, r0
+       ldr     r3, .L1460
+       mov     r6, r0
+       mov     r8, #0
+       ldr     r7, .L1460+4
+       ldrb    fp, [r3, #2697] @ zero_extendqisi2
+       b       .L1442
+.L1449:
+       rsb     r3, r8, sl
+       add     r2, sp, #20
+       mov     r0, r6
+       mov     r1, r9
+       uxtb    r3, r3
+       str     r3, [sp, #0]
+       add     r3, sp, #24
+       bl      LogAddr2PhyAddr
+       ldr     r3, [sp, #24]
+       ldrb    r2, [r7, #3766] @ zero_extendqisi2
+       cmp     r3, r2
+       mvncs   r3, #0
+       strcs   r3, [r6, #0]
+       bcs     .L1444
+       add     r3, r7, r3
+       ldrb    r5, [r3, #3768] @ zero_extendqisi2
+       mov     r0, r5
+       bl      NandcWaitFlashReady
+       mov     r0, r5
+       bl      NandcFlashCs
+       mov     r0, r5
+       ldr     r1, [sp, #20]
+       bl      FlashProgFirstCmd
+       ldr     r3, [r6, #12]
+       mov     r2, fp
+       mov     r1, #1
+       mov     r0, r5
+       str     r3, [sp, #0]
+       ldr     r3, [r6, #8]
+       bl      NandcXferData
+       ldr     r1, [sp, #20]
+       mov     r0, r5
+       bl      FlashProgSecondCmd
+       mov     r0, r5
+       bl      NandcWaitFlashReady
+       ldr     r1, [sp, #20]
+       mov     r0, r5
+       bl      FlashReadStatus
+       ldr     r3, [sp, #20]
+       ands    r0, r0, #1
+       mvnne   r0, #0
+       str     r0, [r6, #0]
+       ldr     r1, [r7, #4]
+       mov     r0, r5
+       add     r1, r1, r3
+       bl      FlashProgFirstCmd
+       ldr     r3, [r6, #8]
+       ldr     r2, [r6, #12]
+       mov     r1, #1
+       cmp     r3, #0
+       mov     r0, r5
+       addne   r3, r3, #2048
+       cmp     r2, #0
+       addne   r2, r2, #8
+       str     r2, [sp, #0]
+       mov     r2, fp
+       bl      NandcXferData
+       ldr     r3, [sp, #20]
+       ldr     r1, [r7, #4]
+       mov     r0, r5
+       add     r1, r1, r3
+       bl      FlashProgSecondCmd
+       mov     r0, r5
+       bl      NandcWaitFlashReady
+       mov     r0, r5
+       ldr     r1, [sp, #20]
+       bl      FlashReadStatus
+       tst     r0, #1
+       mov     r0, r5
+       mvnne   r3, #0
+       strne   r3, [r6, #0]
+       bl      NandcFlashDeCs
+.L1444:
+       add     r8, r8, #1
+       add     r6, r6, #36
+.L1442:
+       cmp     r8, sl
+       bne     .L1449
+       ldr     r3, [sp, #12]
+       cmp     r3, #0
+       movne   r6, #0
+       ldrne   r5, .L1460+8
+       bne     .L1450
+       b       .L1451
+.L1456:
+       ldr     r3, [r4, #0]
+       cmn     r3, #1
+       bne     .L1452
+       ldr     r1, [r4, #4]
+       ldr     r0, .L1460+12
+       bl      printk
+       b       .L1453
+.L1452:
+       rsb     r3, r6, sl
+       mov     r1, r9
+       add     r2, sp, #20
+       mov     r0, r4
+       uxtb    r3, r3
+       str     r3, [sp, #0]
+       add     r3, sp, #24
+       bl      LogAddr2PhyAddr
+       ldr     r2, [r5, #152]
+       mov     r3, #0
+       mov     lr, r4
+       add     ip, sp, #28
+       str     r3, [r2, #0]
+       ldr     r2, [r5, #156]
+       str     r3, [r2, #0]
+       ldmia   lr!, {r0, r1, r2, r3}
+       stmia   ip!, {r0, r1, r2, r3}
+       ldmia   lr!, {r0, r1, r2, r3}
+       stmia   ip!, {r0, r1, r2, r3}
+       add     r0, sp, #28
+       ldr     r3, [lr, #0]
+       mov     r1, #1
+       mov     r2, r9
+       str     r3, [ip, #0]
+       ldr     r3, [r5, #152]
+       str     r3, [sp, #36]
+       ldr     r3, [r5, #156]
+       str     r3, [sp, #40]
+       bl      FlashReadPages
+       ldr     r7, [sp, #28]
+       cmn     r7, #1
+       bne     .L1454
+       ldr     r0, .L1460+16
+       ldr     r1, [r4, #4]
+       bl      printk
+       str     r7, [r4, #0]
+.L1454:
+       ldr     r3, [r4, #12]
+       cmp     r3, #0
+       beq     .L1455
+       ldr     r2, [r3, #0]
+       ldr     r3, [r5, #156]
+       ldr     r3, [r3, #0]
+       cmp     r2, r3
+       beq     .L1455
+       ldr     r0, .L1460+20
+       ldr     r1, [r4, #4]
+       bl      printk
+       mvn     r3, #0
+       str     r3, [r4, #0]
+.L1455:
+       ldr     r3, [r4, #8]
+       cmp     r3, #0
+       beq     .L1453
+       ldr     r2, [r3, #0]
+       ldr     r3, [r5, #152]
+       ldr     r3, [r3, #0]
+       cmp     r2, r3
+       beq     .L1453
+       ldr     r0, .L1460+24
+       ldr     r1, [r4, #4]
+       bl      printk
+       mvn     r3, #0
+       str     r3, [r4, #0]
+.L1453:
+       add     r6, r6, #1
+       add     r4, r4, #36
+.L1450:
+       cmp     r6, sl
+       bne     .L1456
+.L1451:
+       mov     r0, #0
+       add     sp, sp, #68
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1461:
+       .align  2
+.L1460:
+       .word   .LANCHOR1
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   .LC100
+       .word   .LC101
+       .word   .LC102
+       .word   .LC103
+       .fnend
+       .size   FlashProgSlc2KPages, .-FlashProgSlc2KPages
+       .align  2
+       .global FlashProgPages
+       .type   FlashProgPages, %function
+FlashProgPages:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 64
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #76
+       sub     sp, sp, #76
+       ldr     r5, .L1489
+       mov     r9, r0
+       str     r1, [sp, #8]
+       mov     sl, r2
+       str     r3, [sp, #16]
+       ldr     ip, [r5, #2776]
+       ldrb    r6, [r5, #0]    @ zero_extendqisi2
+       ldrb    ip, [ip, #19]   @ zero_extendqisi2
+       cmp     r6, #0
+       moveq   fp, r5
+       str     ip, [sp, #20]
+       ldr     ip, .L1489+4
+       ldrb    ip, [ip, #2697] @ zero_extendqisi2
+       str     ip, [sp, #12]
+       beq     .L1463
+       bl      FlashProgSlc2KPages
+       b       .L1464
+.L1476:
+       mov     r4, #36
+       ldr     r2, [sp, #8]
+       mul     r4, r4, r6
+       rsb     r3, r6, r2
+       mov     r1, sl
+       add     r2, sp, #28
+       uxtb    r3, r3
+       str     r3, [sp, #0]
+       add     r7, r9, r4
+       add     r3, sp, #32
+       mov     r0, r7
+       bl      LogAddr2PhyAddr
+       ldrb    r3, [r5, #3766] @ zero_extendqisi2
+       ldr     r2, [sp, #32]
+       cmp     r2, r3
+       mvncs   r3, #0
+       strcs   r3, [r9, r4]
+       mov     r8, r0
+       bcs     .L1466
+       ldrb    r1, [r5, #3837] @ zero_extendqisi2
+       add     r2, fp, r2, asl #4
+       cmp     r1, #0
+       ldr     r2, [r2, #2788]
+       moveq   r8, #0
+       cmp     r2, #0
+       beq     .L1468
+       cmp     r3, #1
+       bne     .L1469
+       ldr     r0, [r5, #2164]
+       bl      NandcIqrWaitFlashReady
+.L1469:
+       ldrb    r0, [sp, #32]   @ zero_extendqisi2
+       bl      FlashWaitCmdDone
+.L1468:
+       ldr     r2, [sp, #32]
+       mov     r1, #0
+       cmp     r8, #0
+       add     r3, r5, r2, asl #4
+       movne   r0, #36
+       str     r1, [r3, #2792]
+       ldr     r1, [sp, #28]
+       str     r7, [r3, #2788]
+       str     r1, [r3, #2784]
+       addne   r1, r6, #1
+       mlane   r1, r0, r1, r9
+       strne   r1, [r3, #2792]
+       add     r3, fp, r2
+       add     r2, fp, r2, asl #4
+       ldrb    r4, [r3, #3768] @ zero_extendqisi2
+       ldrb    r3, [fp, #3766] @ zero_extendqisi2
+       cmp     r3, #1
+       strb    r4, [r2, #2780]
+       mov     r0, r4
+       bne     .L1471
+       bl      NandcWaitFlashReady
+       b       .L1472
+.L1471:
+       bl      NandcFlashCs
+       ldr     r3, [sp, #32]
+       mov     r0, r4
+       ldr     r1, [sp, #28]
+       add     r3, r5, r3, asl #2
+       ldr     r2, [r3, #2740]
+       adds    r2, r2, #0
+       movne   r2, #1
+       bl      FlashWaitReadyEN
+       mov     r0, r4
+       bl      NandcFlashDeCs
+.L1472:
+       ldr     r2, [sp, #20]
+       sub     r3, r2, #1
+       cmp     r3, #5
+       bhi     .L1473
+       add     r3, r5, r4
+       ldrb    r3, [r3, #3760] @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L1473
+       mov     r0, r4
+       ldrb    r1, [r5, #2909] @ zero_extendqisi2
+       ldr     r2, .L1489+8
+       mov     r3, #0
+       bl      HynixSetRRPara
+.L1473:
+       mov     r0, r4
+       bl      NandcFlashCs
+       cmp     sl, #1
+       bne     .L1474
+       ldrb    r3, [r5, #80]   @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L1474
+       mov     r0, r4
+       bl      flash_enter_slc_mode
+.L1474:
+       mov     r0, r4
+       ldr     r1, [sp, #28]
+       bl      FlashProgFirstCmd
+       ldr     r3, [r7, #12]
+       mov     r0, r4
+       mov     r1, #1
+       ldr     r2, [sp, #12]
+       str     r3, [sp, #0]
+       ldr     r3, [r7, #8]
+       bl      NandcXferData
+       cmp     r8, #0
+       beq     .L1475
+       mov     r0, r4
+       ldr     r1, [sp, #28]
+       bl      FlashProgDpFirstCmd
+       ldr     r3, [sp, #32]
+       ldr     r1, [sp, #28]
+       mov     r0, r4
+       add     r3, r5, r3, asl #2
+       ldr     r2, [r3, #2740]
+       adds    r2, r2, #0
+       movne   r2, #1
+       bl      FlashWaitReadyEN
+       ldr     r3, [sp, #28]
+       ldr     r1, [r5, #4]
+       mov     r0, r4
+       add     r1, r1, r3
+       bl      FlashProgDpSecondCmd
+       add     r3, r6, #1
+       mov     r2, #36
+       mov     r0, r4
+       mla     r3, r2, r3, r9
+       mov     r1, #1
+       ldr     r2, [r3, #12]
+       str     r2, [sp, #0]
+       ldr     r2, [sp, #12]
+       ldr     r3, [r3, #8]
+       bl      NandcXferData
+.L1475:
+       mov     r0, r4
+       ldr     r1, [sp, #28]
+       bl      FlashProgSecondCmd
+       mov     r0, r4
+       bl      NandcFlashDeCs
+       add     r6, r6, r8
+.L1466:
+       add     r6, r6, #1
+.L1463:
+       ldr     r3, [sp, #8]
+       cmp     r6, r3
+       bcc     .L1476
+       ldr     r5, .L1489
+       mov     r4, #0
+       ldr     r6, .L1489+12
+       ldr     r0, [r5, #2164]
+       bl      NandcIqrWaitFlashReady
+       b       .L1477
+.L1479:
+       uxtb    r0, r4
+       bl      FlashWaitCmdDone
+       cmp     sl, #1
+       bne     .L1478
+       ldrb    r3, [r5, #80]   @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L1478
+       ldrb    r0, [r6, r4, asl #4]    @ zero_extendqisi2
+       bl      flash_exit_slc_mode
+.L1478:
+       add     r4, r4, #1
+.L1477:
+       ldrb    r3, [r5, #3766] @ zero_extendqisi2
+       cmp     r4, r3
+       bcc     .L1479
+       ldr     r2, [sp, #16]
+       cmp     r2, #0
+       ldreq   r0, [sp, #16]
+       beq     .L1464
+       mov     r5, #0
+       ldr     r4, .L1489+16
+       ldr     r6, [sp, #8]
+       b       .L1480
+.L1485:
+       ldr     r3, [r9, #0]
+       cmn     r3, #1
+       bne     .L1481
+       ldr     r1, [r9, #4]
+       ldr     r0, .L1489+20
+       bl      printk
+       b       .L1482
+.L1481:
+       rsb     r3, r5, r6
+       mov     r1, sl
+       add     r2, sp, #28
+       mov     r0, r9
+       uxtb    r3, r3
+       str     r3, [sp, #0]
+       add     r3, sp, #32
+       bl      LogAddr2PhyAddr
+       ldr     r2, [r4, #152]
+       mov     r3, #0
+       mov     lr, r9
+       add     ip, sp, #36
+       str     r3, [r2, #0]
+       ldr     r2, [r4, #156]
+       str     r3, [r2, #0]
+       ldmia   lr!, {r0, r1, r2, r3}
+       stmia   ip!, {r0, r1, r2, r3}
+       ldmia   lr!, {r0, r1, r2, r3}
+       stmia   ip!, {r0, r1, r2, r3}
+       add     r0, sp, #36
+       ldr     r3, [lr, #0]
+       mov     r1, #1
+       mov     r2, sl
+       str     r3, [ip, #0]
+       ldr     r3, [r4, #152]
+       str     r3, [sp, #44]
+       ldr     r3, [r4, #156]
+       str     r3, [sp, #48]
+       bl      FlashReadPages
+       ldr     r7, [sp, #36]
+       cmn     r7, #1
+       bne     .L1483
+       ldr     r0, .L1489+24
+       ldr     r1, [r9, #4]
+       bl      printk
+       str     r7, [r9, #0]
+.L1483:
+       ldr     r3, [r9, #12]
+       cmp     r3, #0
+       beq     .L1484
+       ldr     r2, [r3, #0]
+       ldr     r3, [r4, #156]
+       ldr     r3, [r3, #0]
+       cmp     r2, r3
+       beq     .L1484
+       ldr     r0, .L1489+28
+       ldr     r1, [r9, #4]
+       bl      printk
+       mvn     r3, #0
+       str     r3, [r9, #0]
+.L1484:
+       ldr     r3, [r9, #8]
+       cmp     r3, #0
+       beq     .L1482
+       ldr     r2, [r3, #0]
+       ldr     r3, [r4, #152]
+       ldr     r3, [r3, #0]
+       cmp     r2, r3
+       beq     .L1482
+       ldr     r0, .L1489+32
+       ldr     r1, [r9, #4]
+       bl      printk
+       mvn     r3, #0
+       str     r3, [r9, #0]
+.L1482:
+       add     r5, r5, #1
+       add     r9, r9, #36
+.L1480:
+       cmp     r5, r6
+       bne     .L1485
+       mov     r0, #0
+.L1464:
+       add     sp, sp, #76
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1490:
+       .align  2
+.L1489:
+       .word   .LANCHOR0
+       .word   .LANCHOR1
+       .word   .LANCHOR0+2912
+       .word   .LANCHOR0+2780
+       .word   .LANCHOR2
+       .word   .LC100
+       .word   .LC101
+       .word   .LC102
+       .word   .LC103
+       .fnend
+       .size   FlashProgPages, .-FlashProgPages
+       .align  2
+       .global FtlVpcTblFlush
+       .type   FtlVpcTblFlush, %function
+FtlVpcTblFlush:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
+       .save {r3, r4, r5, r6, r7, r8, sl, lr}
+       mov     r8, #0
+       ldr     r4, .L1500
+       mov     r1, #255
+       ldr     r6, .L1500+4
+       movw    sl, #3852
+       ldr     r7, .L1500+8
+       ldr     r3, [r4, #-2076]
+       ldr     r5, [r4, #-952]
+       str     r3, [r4, #176]
+       ldrh    r3, [r4, r6]
+       str     r5, [r4, #180]
+       str     r8, [r5, #12]
+       strh    r3, [r5, #2]    @ movhi
+       ldr     r3, .L1500+12
+       strh    r3, [r5, #0]    @ movhi
+       ldr     r3, [r4, #-1760]
+       str     r8, [r5, #8]
+       str     r3, [r5, #4]
+       ldr     r3, .L1500+16
+       str     r3, [r4, #-1820]
+       ldr     r3, .L1500+20
+       str     r3, [r4, #-1816]
+       ldr     r3, .L1500+24
+       ldrh    r2, [r4, r3]
+       sub     r3, r3, #50
+       strh    r2, [r4, r3]    @ movhi
+       movw    r3, #3866
+       ldrh    r3, [r7, r3]
+       strb    r3, [r4, #-1810]
+       ldr     r3, .L1500+28
+       ldrh    r2, [r4, r3]
+       add     r3, r3, #238
+       strh    r2, [r4, r3]    @ movhi
+       sub     r3, r3, #236
+       ldrh    r2, [r4, r3]
+       ldrb    r3, [r4, #-2038]        @ zero_extendqisi2
+       orr     r2, r3, r2, asl #6
+       ldr     r3, .L1500+32
+       strh    r2, [r4, r3]    @ movhi
+       ldrb    r3, [r4, #-2036]        @ zero_extendqisi2
+       strb    r3, [r4, #-1809]
+       ldr     r3, .L1500+36
+       ldrh    r2, [r4, r3]
+       add     r3, r3, #194
+       strh    r2, [r4, r3]    @ movhi
+       sub     r3, r3, #192
+       ldrh    r2, [r4, r3]
+       ldrb    r3, [r4, #-1990]        @ zero_extendqisi2
+       orr     r2, r3, r2, asl #6
+       ldr     r3, .L1500+40
+       strh    r2, [r4, r3]    @ movhi
+       ldrb    r3, [r4, #-1988]        @ zero_extendqisi2
+       strb    r3, [r4, #-1808]
+       ldr     r3, .L1500+44
+       ldrh    r2, [r4, r3]
+       add     r3, r3, #150
+       strh    r2, [r4, r3]    @ movhi
+       sub     r3, r3, #148
+       ldr     r0, [r4, #176]
+       ldrh    r2, [r4, r3]
+       ldrb    r3, [r4, #-1942]        @ zero_extendqisi2
+       orr     r2, r3, r2, asl #6
+       ldr     r3, .L1500+48
+       strh    r2, [r4, r3]    @ movhi
+       ldrb    r3, [r4, #-1940]        @ zero_extendqisi2
+       strb    r3, [r4, #-1807]
+       ldr     r3, [r4, #-1840]
+       str     r3, [r4, #-1788]
+       ldr     r3, [r4, #-1848]
+       str     r3, [r4, #-1780]
+       ldr     r3, [r4, #-1844]
+       str     r3, [r4, #-1784]
+       movw    r3, #3922
+       ldrh    r2, [r7, r3]
+       bl      ftl_memset
+       ldr     r1, .L1500+52
+       mov     r2, #48
+       ldr     r0, [r4, #176]
+       bl      memcpy
+       ldrh    r2, [r7, sl]
+       ldr     r0, [r4, #176]
+       ldr     r1, [r4, #-2064]
+       mov     r2, r2, asl #1
+       add     r0, r0, #48
+       bl      memcpy
+       ldrh    r2, [r7, sl]
+       ldr     r3, [r4, #176]
+       add     r0, r2, #24
+       ldr     r1, [r4, #-1888]
+       mov     r2, r2, lsr #3
+       mov     r0, r0, lsr #1
+       add     r2, r2, #4
+       add     r0, r3, r0, asl #2
+       bl      memcpy
+       mov     r0, r8
+       bl      FtlUpdateVaildLpn
+       movw    r8, #65535
+.L1499:
+       ldr     r3, [r4, #-2076]
+       mov     r1, #1
+       ldr     r7, .L1500+56
+       ldrh    r2, [r4, r6]
+       str     r3, [r4, #176]
+       ldr     r3, [r4, #-952]
+       ldr     r0, .L1500+60
+       str     r3, [r4, #180]
+       ldrh    r3, [r4, r7]
+       orr     r3, r3, r2, asl #10
+       mov     r2, r1
+       str     r3, [r4, #172]
+       mov     r3, r1
+       bl      FlashProgPages
+       ldr     r1, .L1500+8
+       movw    r3, #3914
+       ldrh    r2, [r4, r7]
+       ldrh    r3, [r1, r3]
+       sub     r3, r3, #1
+       cmp     r2, r3
+       blt     .L1493
+       ldr     r3, .L1500+64
+       ldrh    r2, [r4, r6]
+       ldrh    r8, [r4, r3]
+       strh    r2, [r4, r3]    @ movhi
+       mov     r3, #0
+       strh    r3, [r4, r7]    @ movhi
+       bl      FtlFreeSysBlkQueueOut
+       ldr     r3, [r4, #-1848]
+       mov     r1, #1
+       add     r2, r3, #1
+       str     r2, [r4, #-1848]
+       str     r3, [r4, #-1760]
+       mov     r2, r0, asl #10
+       strh    r0, [r4, r6]    @ movhi
+       str     r2, [r4, #172]
+       mov     r2, r1
+       str     r3, [r5, #4]
+       mov     r3, r1
+       strh    r0, [r5, #2]    @ movhi
+       ldr     r0, .L1500+60
+       bl      FlashProgPages
+.L1493:
+       ldr     r2, .L1500+56
+       ldr     r1, [r4, #168]
+       ldrh    r3, [r4, r2]
+       cmn     r1, #1
+       add     r3, r3, #1
+       uxth    r3, r3
+       strh    r3, [r4, r2]    @ movhi
+       bne     .L1494
+       cmp     r3, #1
+       ldreq   r1, .L1500+8
+       movweq  r3, #3914
+       ldreqh  r3, [r1, r3]
+       subeq   r3, r3, #1
+       streqh  r3, [r4, r2]    @ movhi
+       b       .L1499
+.L1494:
+       cmp     r3, #1
+       beq     .L1499
+       movw    r3, #65535
+       cmp     r8, r3
+       beq     .L1496
+       mov     r0, r8
+       mov     r1, #1
+       bl      FtlFreeSysBlkQueueIn
+.L1496:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, pc}
+.L1501:
+       .align  2
+.L1500:
+       .word   .LANCHOR2
+       .word   -1768
+       .word   .LANCHOR0
+       .word   -3932
+       .word   1179929683
+       .word   1342177334
+       .word   -1762
+       .word   -2044
+       .word   -1804
+       .word   -1996
+       .word   -1800
+       .word   -1948
+       .word   -1796
+       .word   .LANCHOR2-1820
+       .word   -1766
+       .word   .LANCHOR2+168
+       .word   -1764
+       .fnend
+       .size   FtlVpcTblFlush, .-FtlVpcTblFlush
+       .align  2
+       .global FtlBbmTblFlush
+       .type   FtlBbmTblFlush, %function
+FtlBbmTblFlush:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r1, #0
+       ldr     r7, .L1511
+       mov     r6, #0
+       ldr     sl, .L1511+4
+       movw    r9, #3866
+       ldr     r8, .L1511+8
+       ldr     r3, [r7, #-952]
+       ldr     r0, [r7, #-2076]
+       str     r3, [r7, #180]
+       movw    r3, #3922
+       str     r0, [r7, #176]
+       ldrh    r2, [sl, r3]
+       bl      ftl_memset
+       b       .L1503
+.L1504:
+       ldr     r3, .L1511+12
+       ldr     r1, [r8, #4]!
+       ldrh    r2, [r7, r3]
+       ldr     r3, [r7, #176]
+       mul     r0, r2, r6
+       mov     r2, r2, asl #2
+       add     r6, r6, #1
+       add     r0, r3, r0, asl #2
+       bl      memcpy
+.L1503:
+       ldrh    r3, [sl, r9]
+       ldr     r4, .L1511+4
+       cmp     r6, r3
+       ldr     r5, .L1511
+       blt     .L1504
+       ldr     r6, [r5, #180]
+       mov     r1, #255
+       mov     r2, #16
+       mov     r7, #0
+       mov     fp, r7
+       mov     r0, r6
+       bl      ftl_memset
+       ldr     r3, .L1511+16
+       strh    r3, [r6, #0]    @ movhi
+       ldr     r3, [r4, #3988]
+       str     r3, [r6, #4]
+       movw    r3, #3980
+       ldrh    r3, [r4, r3]
+       strh    r3, [r6, #2]    @ movhi
+       mov     r3, #3984
+       ldrh    r3, [r4, r3]
+       strh    r3, [r6, #8]    @ movhi
+       movw    r3, #3986
+       ldrh    r3, [r4, r3]
+       strh    r3, [r6, #10]   @ movhi
+       ldr     r3, [r4, #3840]
+       strh    r3, [r6, #12]   @ movhi
+       b       .L1510
+.L1509:
+       mov     r7, #1
+.L1510:
+       ldr     r3, [r5, #-2076]
+       movw    r8, #3980
+       ldr     r4, .L1511+4
+       movw    sl, #3982
+       mov     r9, #3984
+       str     r3, [r5, #176]
+       ldr     r3, [r5, #-952]
+       ldrh    r1, [r4, r8]
+       ldrh    r2, [r4, sl]
+       str     r3, [r5, #180]
+       mov     r3, #0
+       ldrh    r0, [r6, #10]
+       str     r3, [r5, #168]
+       orr     r3, r2, r1, asl #10
+       str     r3, [r5, #172]
+       str     r0, [sp, #0]
+       ldrh    r3, [r4, r9]
+       ldr     r0, .L1511+20
+       bl      printk
+       mov     r1, #1
+       mov     r2, r1
+       mov     r3, r1
+       ldr     r0, .L1511+24
+       bl      FlashProgPages
+       movw    r3, #3914
+       ldrh    r3, [r4, r3]
+       ldrh    r2, [r4, sl]
+       sub     r3, r3, #1
+       cmp     r2, r3
+       blt     .L1506
+       ldr     r3, [r4, #3988]
+       mov     r1, #1
+       ldrh    r2, [r4, r8]
+       add     r3, r3, #1
+       ldr     r0, [r5, #-2088]
+       str     r3, [r4, #3988]
+       str     r3, [r6, #4]
+       ldrh    r3, [r4, r9]
+       strh    r2, [r6, #8]    @ movhi
+       strh    r2, [r4, r9]    @ movhi
+       mov     r2, r1
+       strh    r3, [r4, r8]    @ movhi
+       mov     r3, r3, asl #10
+       str     r3, [r5, #172]
+       str     r3, [r0, #4]
+       strh    fp, [r4, sl]    @ movhi
+       bl      FlashEraseBlocks
+       mov     r1, #1
+       ldr     r0, .L1511+24
+       mov     r2, r1
+       mov     r3, r1
+       bl      FlashProgPages
+.L1506:
+       ldr     r2, .L1511+4
+       movw    r3, #3982
+       ldrh    r1, [r2, r3]
+       add     r1, r1, #1
+       strh    r1, [r2, r3]    @ movhi
+       ldr     r3, [r5, #168]
+       cmn     r3, #1
+       bne     .L1507
+       ldr     r1, [r5, #172]
+       ldr     r0, .L1511+28
+       bl      printk
+       b       .L1510
+.L1507:
+       cmp     r7, #0
+       beq     .L1509
+       mov     r0, #0
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1512:
+       .align  2
+.L1511:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .word   .LANCHOR0+4004
+       .word   -1032
+       .word   -3887
+       .word   .LC104
+       .word   .LANCHOR2+168
+       .word   .LC105
+       .fnend
+       .size   FtlBbmTblFlush, .-FtlBbmTblFlush
+       .align  2
+       .global FtlGcFreeBadSuperBlk
+       .type   FtlGcFreeBadSuperBlk, %function
+FtlGcFreeBadSuperBlk:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, lr}
+       mov     r9, r0
+       ldr     r4, .L1523
+       ldr     r3, .L1523+4
+       ldrh    r3, [r4, r3]
+       cmp     r3, #0
+       movne   r6, #0
+       movne   sl, r4
+       bne     .L1514
+       b       .L1515
+.L1521:
+       add     r3, r3, r6
+       mov     r1, r9
+       mov     r5, #0
+       ldr     r7, .L1523+4
+       ldrb    r0, [r3, #3870] @ zero_extendqisi2
+       bl      V2P_block
+       mov     r8, r0
+       b       .L1516
+.L1520:
+       add     r3, r4, r5, asl #1
+       sub     r3, r3, #1120
+       sub     r3, r3, #12
+       ldrh    r3, [r3, #0]
+       cmp     r3, r8
+       bne     .L1517
+       mov     r1, r8
+       ldr     r0, .L1523+8
+       bl      printk
+       mov     r0, r8
+       bl      FtlBbmMapBadBlock
+       bl      FtlBbmTblFlush
+       ldrh    r1, [r4, r7]
+       mov     r3, r5
+       b       .L1518
+.L1519:
+       add     r0, r3, #1
+       add     r3, r4, r3, asl #1
+       sub     r3, r3, #1120
+       add     r2, r4, r0, asl #1
+       sub     r2, r2, #1120
+       sub     r2, r2, #12
+       ldrh    r2, [r2, #0]
+       strh    r2, [r3, #-12]  @ movhi
+       uxth    r3, r0
+.L1518:
+       cmp     r3, r1
+       bcc     .L1519
+       sub     r1, r1, #1
+       strh    r1, [sl, r7]    @ movhi
+.L1517:
+       add     r5, r5, #1
+       uxth    r5, r5
+.L1516:
+       ldrh    r3, [r4, r7]
+       cmp     r3, r5
+       bhi     .L1520
+       add     r6, r6, #1
+       uxth    r6, r6
+.L1514:
+       ldr     r3, .L1523+12
+       movw    r2, #3844
+       ldrh    r2, [r3, r2]
+       cmp     r2, r6
+       bhi     .L1521
+       bl      FtlGcReFreshBadBlk
+.L1515:
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+.L1524:
+       .align  2
+.L1523:
+       .word   .LANCHOR2
+       .word   -1134
+       .word   .LC106
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
+       .align  2
+       .global update_vpc_list
+       .type   update_vpc_list, %function
+update_vpc_list:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r2, r0, asl #1
+       ldr     r3, .L1533
+       mov     r4, r0
+       ldr     r1, [r3, #-2064]
+       ldrh    r2, [r1, r2]
+       cmp     r2, #0
+       bne     .L1526
+       ldr     r1, .L1533+4
+       ldrh    r0, [r3, r1]
+       cmp     r0, r4
+       mvneq   r2, #0
+       streqh  r2, [r3, r1]    @ movhi
+       beq     .L1528
+       ldr     r1, .L1533+8
+       ldrh    r1, [r3, r1]
+       cmp     r1, r4
+       beq     .L1529
+       ldr     r1, .L1533+12
+       ldrh    r1, [r3, r1]
+       cmp     r1, r4
+       beq     .L1529
+       ldr     r1, .L1533+16
+       ldrh    r3, [r3, r1]
+       cmp     r3, r4
+       beq     .L1529
+.L1528:
+       mov     r1, r4
+       ldr     r0, .L1533+20
+       bl      List_remove_node
+       ldr     r5, .L1533
+       ldr     r3, .L1533+24
+       mov     r0, r4
+       ldrh    r2, [r5, r3]
+       sub     r2, r2, #1
+       strh    r2, [r5, r3]    @ movhi
+       bl      free_data_superblock
+       mov     r0, r4
+       bl      FtlGcFreeBadSuperBlk
+       mov     r2, #1
+       b       .L1529
+.L1526:
+       bl      List_update_data_list
+       mov     r2, #0
+.L1529:
+       mov     r0, r2
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L1534:
+       .align  2
+.L1533:
+       .word   .LANCHOR2
+       .word   -1756
+       .word   -2044
+       .word   -1996
+       .word   -1948
+       .word   .LANCHOR2-2068
+       .word   -2056
+       .fnend
+       .size   update_vpc_list, .-update_vpc_list
+       .align  2
+       .global decrement_vpc_count
+       .type   decrement_vpc_count, %function
+decrement_vpc_count:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       movw    r3, #65535
+       cmp     r0, r3
+       mov     r5, r0
+       beq     .L1536
+       ldr     r2, .L1541
+       mov     r3, r0, asl #1
+       ldr     r2, [r2, #-2064]
+       ldrh    r4, [r2, r3]
+       cmp     r4, #0
+       subne   r4, r4, #1
+       strneh  r4, [r2, r3]    @ movhi
+       bne     .L1536
+       ldr     r0, .L1541+4
+       mov     r1, r5
+       mov     r2, r4
+       bl      printk
+       mov     r0, r4
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1536:
+       ldr     r7, .L1541
+       movw    r3, #65535
+       ldr     r6, .L1541+8
+       ldrh    r0, [r7, r6]
+       cmp     r0, r3
+       streqh  r5, [r7, r6]    @ movhi
+       moveq   r0, #0
+       ldmeqfd sp!, {r3, r4, r5, r6, r7, pc}
+       cmp     r0, r5
+       beq     .L1540
+       bl      update_vpc_list
+       strh    r5, [r7, r6]    @ movhi
+       adds    r0, r0, #0
+       movne   r0, #1
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1540:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1542:
+       .align  2
+.L1541:
+       .word   .LANCHOR2
+       .word   .LC107
+       .word   -1024
+       .fnend
+       .size   decrement_vpc_count, .-decrement_vpc_count
+       .align  2
+       .global get_new_active_ppa
+       .type   get_new_active_ppa, %function
+get_new_active_ppa:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       mov     r3, #0
+       strb    r3, [r0, #10]
+       mov     r4, r0
+       ldrb    r3, [r0, #6]    @ zero_extendqisi2
+       movw    r6, #65535
+       ldr     r5, .L1555
+       ldr     r7, .L1555+4
+       add     r3, r0, r3, asl #1
+       ldrh    r3, [r3, #16]
+       b       .L1544
+.L1545:
+       ldrb    r3, [r4, #6]    @ zero_extendqisi2
+       movw    r2, #3844
+       ldrh    r2, [r5, r2]
+       add     r3, r3, #1
+       uxtb    r3, r3
+       strb    r3, [r4, #6]
+       cmp     r2, r3
+       ldreqh  r3, [r4, #2]
+       addeq   r3, r3, #1
+       streqh  r3, [r4, #2]    @ movhi
+       moveq   r3, #0
+       streqb  r3, [r4, #6]
+       ldrb    r3, [r4, #6]    @ zero_extendqisi2
+       add     r3, r4, r3, asl #1
+       ldrh    r3, [r3, #16]
+.L1544:
+       cmp     r3, r6
+       beq     .L1545
+       ldrb    r2, [r4, #8]    @ zero_extendqisi2
+       cmp     r2, #1
+       bne     .L1547
+       ldrb    r2, [r5, #80]   @ zero_extendqisi2
+       cmp     r2, #0
+       bne     .L1547
+       ldrh    r2, [r4, #2]
+       add     r2, r7, r2, asl #1
+       sub     r2, r2, #912
+       ldrh    r2, [r2, #0]
+       cmp     r2, r6
+       bne     .L1547
+       ldrh    r3, [r4, #4]
+       ldrh    r0, [r4, #0]
+       sub     r3, r3, #1
+       strh    r3, [r4, #4]    @ movhi
+       bl      decrement_vpc_count
+       b       .L1545
+.L1547:
+       ldrh    r6, [r4, #2]
+       movw    r5, #65535
+       mov     r7, r5
+       orr     r6, r6, r3, asl #10
+       ldrh    r3, [r4, #4]
+       sub     r3, r3, #1
+       strh    r3, [r4, #4]    @ movhi
+.L1552:
+       ldr     r2, .L1555
+       movw    r3, #3844
+       ldrh    r2, [r2, r3]
+       ldrb    r3, [r4, #6]    @ zero_extendqisi2
+.L1549:
+       add     r3, r3, #1
+       uxtb    r3, r3
+       cmp     r3, r2
+       ldreqh  r3, [r4, #2]
+       addeq   r3, r3, #1
+       streqh  r3, [r4, #2]    @ movhi
+       moveq   r3, #0
+       add     r1, r4, r3, asl #1
+       ldrh    r1, [r1, #16]
+       cmp     r1, r5
+       beq     .L1549
+       strb    r3, [r4, #6]
+       ldrb    r3, [r4, #8]    @ zero_extendqisi2
+       cmp     r3, #1
+       bne     .L1550
+       ldr     r3, .L1555
+       ldrb    r2, [r3, #80]   @ zero_extendqisi2
+       cmp     r2, #0
+       ldrh    r2, [r4, #2]
+       bne     .L1553
+       ldr     r3, .L1555+4
+       add     r2, r3, r2, asl #1
+       sub     r2, r2, #912
+       ldrh    r3, [r2, #0]
+       cmp     r3, r7
+       bne     .L1550
+       ldrh    r3, [r4, #4]
+       cmp     r3, #0
+       beq     .L1550
+       sub     r3, r3, #1
+       ldrh    r0, [r4, #0]
+       strh    r3, [r4, #4]    @ movhi
+       bl      decrement_vpc_count
+       b       .L1552
+.L1553:
+       movw    r1, #3914
+       ldrh    r1, [r3, r1]
+       cmp     r2, r1
+       bcc     .L1550
+       ldr     r1, .L1555+4
+       ldrh    r2, [r4, #0]
+       ldrh    r0, [r4, #4]
+       ldr     r1, [r1, #-2064]
+       mov     r2, r2, asl #1
+       ldrh    ip, [r1, r2]
+       rsb     r0, r0, ip
+       strh    r0, [r1, r2]    @ movhi
+       mov     r2, #0
+       strh    r2, [r4, #4]    @ movhi
+       mov     r1, r2  @ movhi
+       movw    r2, #3912
+       ldrh    r3, [r3, r2]
+       strb    r1, [r4, #6]
+       strh    r3, [r4, #2]    @ movhi
+.L1550:
+       mov     r0, r6
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1556:
+       .align  2
+.L1555:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   get_new_active_ppa, .-get_new_active_ppa
+       .align  2
+       .type   FtlSlcSuperblockCheck.part.18, %function
+FtlSlcSuperblockCheck.part.18:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       mov     r4, r0
+       ldrb    r3, [r0, #6]    @ zero_extendqisi2
+       movw    r6, #65535
+       ldr     r5, .L1563
+       ldr     r7, .L1563+4
+       add     r3, r0, r3, asl #1
+       ldrh    r3, [r3, #16]
+       b       .L1558
+.L1559:
+       ldrb    r3, [r4, #6]    @ zero_extendqisi2
+       movw    r2, #3844
+       ldrh    r2, [r5, r2]
+       add     r3, r3, #1
+       uxtb    r3, r3
+       strb    r3, [r4, #6]
+       cmp     r2, r3
+       ldreqh  r3, [r4, #2]
+       addeq   r3, r3, #1
+       streqh  r3, [r4, #2]    @ movhi
+       moveq   r3, #0
+       streqb  r3, [r4, #6]
+       ldrb    r3, [r4, #6]    @ zero_extendqisi2
+       add     r3, r4, r3, asl #1
+       ldrh    r3, [r3, #16]
+.L1558:
+       cmp     r3, r6
+       beq     .L1559
+       ldrb    r2, [r4, #8]    @ zero_extendqisi2
+       cmp     r2, #1
+       bne     .L1561
+       ldrb    r3, [r5, #80]   @ zero_extendqisi2
+       cmp     r3, #0
+       bne     .L1561
+       ldrh    r3, [r4, #2]
+       add     r3, r7, r3, asl #1
+       sub     r3, r3, #912
+       ldrh    r3, [r3, #0]
+       cmp     r3, r6
+       bne     .L1561
+       ldrh    r3, [r4, #4]
+       ldrh    r0, [r4, #0]
+       sub     r3, r3, #1
+       strh    r3, [r4, #4]    @ movhi
+       bl      decrement_vpc_count
+       ldrh    r3, [r4, #4]
+       cmp     r3, #0
+       bne     .L1559
+       ldrh    r2, [r4, #2]
+       strb    r3, [r4, #6]
+       add     r2, r2, #1
+       strh    r2, [r4, #2]    @ movhi
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1561:
+       ldr     r3, .L1563
+       ldrb    r1, [r3, #80]   @ zero_extendqisi2
+       cmp     r1, #0
+       ldmeqfd sp!, {r3, r4, r5, r6, r7, pc}
+       cmp     r2, #1
+       ldmnefd sp!, {r3, r4, r5, r6, r7, pc}
+       movw    r2, #3914
+       ldrh    r1, [r4, #2]
+       ldrh    r2, [r3, r2]
+       cmp     r1, r2
+       ldmccfd sp!, {r3, r4, r5, r6, r7, pc}
+       ldr     r1, .L1563+4
+       ldrh    r2, [r4, #0]
+       ldrh    r0, [r4, #4]
+       ldr     r1, [r1, #-2064]
+       mov     r2, r2, asl #1
+       ldrh    ip, [r1, r2]
+       rsb     r0, r0, ip
+       strh    r0, [r1, r2]    @ movhi
+       mov     r2, #0
+       strh    r2, [r4, #4]    @ movhi
+       mov     r1, r2  @ movhi
+       movw    r2, #3912
+       ldrh    r3, [r3, r2]
+       strb    r1, [r4, #6]
+       strh    r3, [r4, #2]    @ movhi
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1564:
+       .align  2
+.L1563:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   FtlSlcSuperblockCheck.part.18, .-FtlSlcSuperblockCheck.part.18
+       .align  2
+       .global FtlSlcSuperblockCheck
+       .type   FtlSlcSuperblockCheck, %function
+FtlSlcSuperblockCheck:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldrh    r3, [r0, #4]
+       cmp     r3, #0
+       bxeq    lr
+       b       FtlSlcSuperblockCheck.part.18
+       .fnend
+       .size   FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
+       .align  2
+       .global allocate_data_superblock
+       .type   allocate_data_superblock, %function
+allocate_data_superblock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 16
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #20
+       sub     sp, sp, #20
+       ldr     r4, .L1601
+       mov     r5, r0
+       mov     r7, r4
+.L1597:
+       ldr     r3, .L1601+4
+       cmp     r5, r3
+       bne     .L1569
+       ldr     r3, .L1601+8
+       ldrh    r2, [r4, r3]
+       ldr     r3, [r4, #-1180]
+       mov     r1, r2, lsr #1
+       mul     ip, r3, r2
+       add     r0, r1, #1
+       add     r0, r0, ip, lsr #2
+       ldr     ip, [r4, #-1884]
+       cmp     ip, #0
+       uxth    r0, r0
+       beq     .L1591
+       ldr     ip, [r4, #-1824]
+       cmp     ip, #29
+       bhi     .L1591
+       cmp     ip, #2
+       bls     .L1596
+       tst     r2, #1
+       beq     .L1570
+       cmp     r3, #0
+       moveq   r1, r3
+       beq     .L1571
+       b       .L1570
+.L1569:
+       ldrb    r3, [r5, #8]    @ zero_extendqisi2
+       cmp     r3, #1
+       bne     .L1596
+       ldr     r3, .L1601+12
+       movw    r2, #3864
+       ldrh    r2, [r3, r2]
+       cmp     r2, #1
+       beq     .L1596
+       ldrb    r3, [r3, #80]   @ zero_extendqisi2
+       cmp     r3, #0
+       bne     .L1596
+       sub     r3, r3, #2048
+       ldr     r2, [r4, #-1884]
+       ldrh    r3, [r4, r3]
+       cmp     r2, #0
+       mov     r1, r3, lsr #3
+       beq     .L1570
+       ldr     r2, [r4, #-1824]
+       cmp     r2, #1
+       movls   r1, #7
+       mulls   r1, r1, r3
+       movls   r1, r1, lsr #3
+       b       .L1570
+.L1591:
+       mov     r1, r0
+.L1570:
+       cmp     r1, #0
+       subne   r1, r1, #1
+       uxthne  r1, r1
+       b       .L1571
+.L1596:
+       mov     r1, #0
+.L1571:
+       ldr     r0, .L1601+16
+       bl      List_pop_index_node
+       ldr     r3, .L1601+8
+       ldrh    r2, [r4, r3]
+       sub     r2, r2, #1
+       strh    r2, [r4, r3]    @ movhi
+       uxth    r6, r0
+       mov     r0, r5
+       strh    r6, [r5, #0]    @ movhi
+       bl      make_superblock
+       ldrb    r3, [r5, #7]    @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L1572
+       ldr     r2, .L1601+12
+       movw    r3, #3844
+       ldr     ip, [r4, #-2088]
+       mov     fp, #0
+       mov     sl, r5
+       mov     r1, r5
+       ldrh    r8, [r2, r3]
+       mov     r0, fp
+       mov     r3, ip
+       mov     r2, fp
+       stmia   sp, {r5, ip}
+       b       .L1573
+.L1572:
+       ldr     r2, [r4, #-2064]
+       mov     r3, r6, asl #1
+       mvn     r1, #0
+       strh    r1, [r2, r3]    @ movhi
+       b       .L1598
+.L1576:
+       str     r0, [r3, #8]
+       movw    r5, #65535
+       str     r0, [r3, #12]
+       ldrh    lr, [r1, #16]
+       cmp     lr, r5
+       beq     .L1575
+       ldr     r5, [sp, #4]
+       mov     ip, #36
+       mov     lr, lr, asl #10
+       mla     r9, ip, fp, r5
+       add     fp, fp, #1
+       uxth    fp, fp
+       str     lr, [r9, #4]
+.L1575:
+       add     r2, r2, #1
+       add     r3, r3, #36
+       add     r1, r1, #2
+       uxth    r2, r2
+.L1573:
+       cmp     r2, r8
+       bne     .L1576
+       ldr     r3, [r4, #-1884]
+       ldr     r5, [sp, #0]
+       cmp     r3, #0
+       beq     .L1577
+       ldr     r3, .L1601+20
+       cmp     r5, r3
+       bne     .L1577
+       ldr     r2, [r4, #-2084]
+       mov     r3, r6, asl #1
+       ldrh    r3, [r2, r3]
+       cmp     r3, #30
+       movhi   r3, #0
+       strhib  r3, [r4, #-2036]
+.L1577:
+       ldrb    r3, [r5, #8]    @ zero_extendqisi2
+       ldr     r2, [r4, #-2084]
+       cmp     r3, #0
+       mov     r3, r6, asl #1
+       ldrh    r1, [r2, r3]
+       bne     .L1578
+       cmp     r1, #0
+       ldrne   ip, .L1601+12
+       movwne  r0, #3902
+       moveq   r1, #2
+       ldrneh  r0, [ip, r0]
+       addne   r1, r1, r0
+       strh    r1, [r2, r3]    @ movhi
+       ldr     r3, [r4, #-1840]
+       mov     r0, r6
+       mov     r1, #0
+       add     r3, r3, #1
+       str     r3, [r4, #-1840]
+       b       .L1600
+.L1578:
+       add     r1, r1, #1
+       strh    r1, [r2, r3]    @ movhi
+       ldr     r3, [r4, #-1836]
+       mov     r0, r6
+       mov     r1, #1
+       add     r3, r3, #1
+       str     r3, [r4, #-1836]
+.L1600:
+       bl      ftl_set_blk_mode
+       ldr     r3, [r4, #-2084]
+       mov     r9, r6, asl #1
+       ldr     r2, [r4, #-1828]
+       ldr     r0, [r7, #-1840]
+       mov     r8, #0
+       ldrh    r3, [r3, r9]
+       cmp     r3, r2
+       movw    r2, #3902
+       strhi   r3, [r4, #-1828]
+       ldr     r3, .L1601+12
+       ldrh    r1, [r3, r2]
+       ldr     r2, [r7, #-1836]
+       mla     r0, r0, r1, r2
+       movw    r2, #3852
+       ldrh    r1, [r3, r2]
+       bl      __aeabi_uidiv
+       ldr     r3, [r7, #-936]
+       ldr     r2, [r3, #16]
+       add     r2, r2, #1
+       str     r2, [r3, #16]
+       ldr     r3, [r7, #-2088]
+       str     r0, [r7, #-1832]
+       b       .L1583
+.L1584:
+       add     r8, r8, #1
+       ldr     r2, [r3, #-32]
+       uxth    r8, r8
+       bic     r2, r2, #1020
+       bic     r2, r2, #3
+       str     r2, [r3, #-32]
+.L1583:
+       cmp     r8, fp
+       add     r3, r3, #36
+       bne     .L1584
+       mov     r2, r8
+       ldr     r0, [r4, #-2088]
+       ldrb    r1, [r5, #8]    @ zero_extendqisi2
+       mov     fp, #0
+       bl      FlashEraseBlocks
+       mov     r2, #36
+       mul     r2, r2, r8
+       mov     r3, r6
+       mov     ip, r9
+       mov     r8, fp
+       mov     r6, r5
+       mov     r9, r2
+       b       .L1585
+.L1587:
+       ldr     r1, [r4, #-2088]
+       add     r0, r1, fp
+       ldr     r5, [r1, fp]
+       cmn     r5, #1
+       bne     .L1586
+       ldr     r0, [r0, #4]
+       add     r8, r8, #1
+       str     r3, [sp, #12]
+       ubfx    r0, r0, #10, #16
+       str     ip, [sp, #8]
+       bl      FtlBbmMapBadBlock
+       strh    r5, [sl, #16]   @ movhi
+       ldrb    r1, [r6, #7]    @ zero_extendqisi2
+       sub     r1, r1, #1
+       strb    r1, [r6, #7]
+       ldr     ip, [sp, #8]
+       ldr     r3, [sp, #12]
+.L1586:
+       add     fp, fp, #36
+       add     sl, sl, #2
+.L1585:
+       cmp     fp, r9
+       bne     .L1587
+       cmp     r8, #0
+       mov     r5, r6
+       mov     r9, ip
+       mov     r6, r3
+       beq     .L1588
+       mov     r0, r3
+       bl      update_multiplier_value
+       bl      FtlBbmTblFlush
+.L1588:
+       ldrb    r3, [r5, #7]    @ zero_extendqisi2
+       cmp     r3, #0
+       bne     .L1589
+       ldr     r3, [r7, #-2064]
+       mvn     r2, #0
+       strh    r2, [r3, r9]    @ movhi
+.L1598:
+       mov     r0, r6
+       bl      INSERT_DATA_LIST
+       b       .L1597
+.L1589:
+       ldr     r1, .L1601+12
+       movw    r2, #3912
+       mov     r0, #0
+       strh    r0, [r5, #2]    @ movhi
+       strb    r0, [r5, #6]
+       ldrh    r2, [r1, r2]
+       strh    r6, [r5, #0]    @ movhi
+       mul     r2, r2, r3
+       ldr     r3, .L1601
+       ldr     r1, [r3, #-1848]
+       uxth    r2, r2
+       strh    r2, [r5, #4]    @ movhi
+       str     r1, [r5, #12]
+       add     r1, r1, #1
+       str     r1, [r3, #-1848]
+       ldrh    ip, [r5, #0]
+       ldr     r1, [r3, #-2064]
+       mov     r3, ip, asl #1
+       strh    r2, [r1, r3]    @ movhi
+       add     sp, sp, #20
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1602:
+       .align  2
+.L1601:
+       .word   .LANCHOR2
+       .word   .LANCHOR2-1948
+       .word   -2048
+       .word   .LANCHOR0
+       .word   .LANCHOR2-2052
+       .word   .LANCHOR2-2044
+       .fnend
+       .size   allocate_data_superblock, .-allocate_data_superblock
+       .align  2
+       .global FtlSuperblockPowerLostFix
+       .type   FtlSuperblockPowerLostFix, %function
+FtlSuperblockPowerLostFix:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 40
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L1610
+       stmfd   sp!, {r4, r5, r6, r7, r8, sl, lr}
+       .save {r4, r5, r6, r7, r8, sl, lr}
+       mov     r4, r0
+       ldr     r5, [r3, #-1164]
+       .pad #44
+       sub     sp, sp, #44
+       ldr     r3, .L1610+4
+       ldrb    r8, [r3, #80]   @ zero_extendqisi2
+       cmp     r8, #0
+       beq     .L1604
+       ldrb    r8, [r0, #8]    @ zero_extendqisi2
+       sub     r0, r8, #1
+       rsbs    r8, r0, #0
+       adc     r8, r8, r0
+.L1604:
+       mov     sl, #7
+       mvn     r7, #0
+       ldr     r6, .L1610
+       b       .L1605
+.L1608:
+       ldrh    r3, [r4, #4]
+       cmp     r3, #0
+       beq     .L1606
+       mov     r0, r4
+       bl      get_new_active_ppa
+       ldr     r3, [r6, #-2076]
+       str     r7, [sp, #20]
+       mov     r1, #1
+       str     r3, [sp, #12]
+       ldr     r3, [r6, #-952]
+       str     r3, [sp, #16]
+       str     r7, [r5, #8]
+       str     r7, [r5, #12]
+       ldrh    r3, [r4, #0]
+       str     r0, [sp, #8]
+       add     r0, sp, #4
+       strh    r3, [r5, #2]    @ movhi
+       mov     r3, #0
+       strh    r3, [r5, #0]    @ movhi
+       ldr     r2, [r6, #-1844]
+       ldr     r5, [r6, #-952]
+       cmn     r2, #2
+       str     r2, [r5, #4]
+       addne   r2, r2, #1
+       moveq   r2, #0
+       str     r2, [r6, #-1844]
+       mov     r2, r8
+       bl      FlashProgPages
+       ldrh    r0, [r4, #0]
+       bl      decrement_vpc_count
+.L1605:
+       subs    sl, sl, #1
+       bne     .L1608
+.L1606:
+       ldr     r2, .L1610
+       ldrh    r3, [r4, #0]
+       ldrh    r1, [r4, #4]
+       ldr     r2, [r2, #-2064]
+       mov     r3, r3, asl #1
+       ldrh    r0, [r2, r3]
+       rsb     r1, r1, r0
+       strh    r1, [r2, r3]    @ movhi
+       ldr     r2, .L1610+4
+       movw    r3, #3912
+       ldrh    r3, [r2, r3]
+       strh    r3, [r4, #2]    @ movhi
+       mov     r3, #0
+       strb    r3, [r4, #6]
+       strh    r3, [r4, #4]    @ movhi
+       add     sp, sp, #44
+       ldmfd   sp!, {r4, r5, r6, r7, r8, sl, pc}
+.L1611:
+       .align  2
+.L1610:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
+       .align  2
+       .global FtlLowFormatEraseBlock
+       .type   FtlLowFormatEraseBlock, %function
+FtlLowFormatEraseBlock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 16
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #20
+       sub     sp, sp, #20
+       ldr     r9, .L1638
+       mov     r6, #0
+       mov     r8, r0
+       mov     r7, r1
+       mov     r4, r6
+       mov     r5, r6
+       ldrb    r2, [r9, #80]   @ zero_extendqisi2
+       mov     fp, #36
+       str     r0, [r9, #3976]
+       ldr     sl, .L1638+4
+       str     r2, [sp, #8]
+       b       .L1613
+.L1617:
+       mul     r3, fp, r6
+       ldr     r2, [sl, #-2088]
+       mov     r0, #0
+       mov     r1, r8
+       str     r0, [r2, r3]
+       add     r3, r9, r6
+       ldrb    r0, [r3, #3870] @ zero_extendqisi2
+       bl      V2P_block
+       cmp     r7, #0
+       str     r0, [sp, #4]
+       beq     .L1614
+       bl      IsBlkInVendorPart
+       cmp     r0, #0
+       bne     .L1615
+.L1614:
+       ldr     r0, [sp, #4]
+       bl      FtlBbmIsBadBlock
+       cmp     r0, #0
+       addne   r5, r5, #1
+       uxthne  r5, r5
+       bne     .L1615
+       ldr     r3, [sl, #-2088]
+       ldr     r1, [sp, #4]
+       mla     r3, fp, r4, r3
+       mov     r2, r1, asl #10
+       str     r0, [r3, #8]
+       movw    r0, #3924
+       str     r2, [r3, #4]
+       ldrh    r2, [r9, r0]
+       mul     r2, r2, r4
+       add     r4, r4, #1
+       uxth    r4, r4
+       add     r1, r2, #3
+       cmp     r2, #0
+       movlt   r2, r1
+       ldr     r1, [sl, #-948]
+       bic     r2, r2, #3
+       add     r2, r1, r2
+       str     r2, [r3, #12]
+.L1615:
+       add     r6, r6, #1
+       uxth    r6, r6
+.L1613:
+       movw    r1, #3844
+       ldrh    r3, [r9, r1]
+       cmp     r3, r6
+       bhi     .L1617
+       cmp     r4, #0
+       beq     .L1619
+       ldr     r2, [sp, #8]
+       mov     r9, #0
+       ldr     r6, .L1638+4
+       mov     fp, r9
+       adds    sl, r2, #0
+       mov     r2, r4
+       movne   sl, #1
+       ldr     r0, [r6, #-2088]
+       mov     r1, sl
+       bl      FlashEraseBlocks
+.L1621:
+       ldr     r3, [r6, #-2088]
+       add     r2, r3, r9
+       ldr     r3, [r3, r9]
+       cmn     r3, #1
+       bne     .L1620
+       ldr     r0, [r2, #4]
+       add     r5, r5, #1
+       ubfx    r0, r0, #10, #16
+       uxth    r5, r5
+       bl      FtlBbmMapBadBlock
+.L1620:
+       add     fp, fp, #1
+       add     r9, r9, #36
+       uxth    fp, fp
+       cmp     fp, r4
+       bne     .L1621
+.L1622:
+       cmp     r7, #0
+       mov     r6, #0
+       ldrne   r2, .L1638
+       movwne  r3, #3914
+       movne   sl, #1
+       moveq   r0, #1
+       moveq   r1, #6
+       stmeqib sp, {r0, r1}
+       ldrneh  r3, [r2, r3]
+       strne   r3, [sp, #4]
+       movne   r3, r3, lsr #2
+       strne   r3, [sp, #8]
+.L1632:
+       mov     r9, #0
+       ldr     fp, .L1638+4
+       mov     r4, r9
+       b       .L1623
+.L1626:
+       mov     r0, #36
+       ldr     r2, [fp, #-2088]
+       mul     r3, r0, r9
+       mov     r1, #0
+       str     r1, [r2, r3]
+       mov     r1, r8
+       ldr     r2, .L1638
+       add     r3, r2, r9
+       ldrb    r0, [r3, #3870] @ zero_extendqisi2
+       bl      V2P_block
+       cmp     r7, #0
+       str     r0, [sp, #12]
+       beq     .L1624
+       bl      IsBlkInVendorPart
+       cmp     r0, #0
+       bne     .L1625
+.L1624:
+       ldr     r0, [sp, #12]
+       bl      FtlBbmIsBadBlock
+       cmp     r0, #0
+       bne     .L1625
+       ldr     r3, [fp, #-2088]
+       mov     r0, #36
+       ldr     r1, [sp, #12]
+       mla     r3, r0, r4, r3
+       add     r2, r6, r1, asl #10
+       ldr     r1, .L1638
+       add     r0, r0, #3888
+       str     r2, [r3, #4]
+       ldr     r2, [fp, #-960]
+       str     r2, [r3, #8]
+       ldrh    r2, [r1, r0]
+       mul     r2, r2, r4
+       add     r4, r4, #1
+       uxth    r4, r4
+       add     r1, r2, #3
+       cmp     r2, #0
+       movlt   r2, r1
+       ldr     r1, [fp, #-956]
+       bic     r2, r2, #3
+       add     r2, r1, r2
+       str     r2, [r3, #12]
+.L1625:
+       add     r9, r9, #1
+       uxth    r9, r9
+.L1623:
+       ldr     r0, .L1638
+       movw    r2, #3844
+       ldrh    r3, [r0, r2]
+       cmp     r3, r9
+       bhi     .L1626
+       cmp     r4, #0
+       beq     .L1619
+       ldr     r9, .L1638+4
+       mov     r3, #1
+       mov     r1, r4
+       mov     r2, sl
+       mov     fp, #0
+       ldr     r0, [r9, #-2088]
+       bl      FlashProgPages
+       mov     r3, #36
+       mul     r3, r3, r4
+       str     r3, [sp, #12]
+       b       .L1628
+.L1631:
+       ldr     r2, [r9, #-2088]
+       add     r3, r2, fp
+       ldr     r2, [r2, fp]
+       cmn     r2, #1
+       bne     .L1629
+       ldr     r0, [r3, #4]
+       add     r5, r5, #1
+       ubfx    r0, r0, #10, #16
+       uxth    r5, r5
+       bl      FtlBbmMapBadBlock
+       b       .L1630
+.L1629:
+       cmp     r7, #0
+       beq     .L1630
+       ldr     r0, [r3, #4]
+       mov     r1, #1
+       ubfx    r0, r0, #10, #16
+       bl      FtlFreeSysBlkQueueIn
+.L1630:
+       add     fp, fp, #36
+.L1628:
+       ldr     r2, [sp, #12]
+       cmp     fp, r2
+       bne     .L1631
+       ldr     r3, [sp, #8]
+       ldr     r0, [sp, #4]
+       add     r6, r6, r3
+       uxth    r6, r6
+       cmp     r6, r0
+       bcc     .L1632
+       cmp     r8, #63
+       bhi     .L1619
+       ldr     r3, .L1638+4
+       mov     r1, sl
+       mov     r2, r4
+       ldr     r0, [r3, #-2088]
+       bl      FlashEraseBlocks
+.L1619:
+       mov     r0, r5
+       add     sp, sp, #20
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1639:
+       .align  2
+.L1638:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
+       .align  2
+       .type   FlashTestBlk.part.20, %function
+FlashTestBlk.part.20:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 104
+       @ frame_needed = 0, uses_anonymous_args = 0
+.L1641:
+       stmfd   sp!, {r4, r5, lr}
+       .save {r4, r5, lr}
+       .pad #108
+       sub     sp, sp, #108
+       ldr     r4, .L1643
+       mov     r5, r0
+       mov     r1, #165
+       add     r0, sp, #40
+       mov     r2, #32
+       str     r0, [sp, #16]
+       ldr     r3, [r4, #116]
+       mov     r5, r5, asl #10
+       str     r3, [sp, #12]
+       bl      ftl_memset
+       ldr     r0, [r4, #116]
+       mov     r1, #90
+       mov     r2, #8
+       bl      ftl_memset
+       mov     r1, #1
+       mov     r2, r1
+       add     r0, sp, #4
+       str     r5, [sp, #8]
+       bl      FlashEraseBlocks
+       mov     r1, #1
+       add     r0, sp, #4
+       mov     r3, r1
+       mov     r2, r1
+       bl      FlashProgPages
+       ldr     r4, [sp, #4]
+       add     r0, sp, #4
+       mov     r1, #0
+       cmn     r4, #1
+       mov     r2, #1
+       movne   r4, #0
+       bl      FlashEraseBlocks
+       mov     r0, r4
+       add     sp, sp, #108
+       ldmfd   sp!, {r4, r5, pc}
+.L1644:
+       .align  2
+.L1643:
+       .word   .LANCHOR2
+       .fnend
+       .size   FlashTestBlk.part.20, .-FlashTestBlk.part.20
+       .align  2
+       .global FlashTestBlk
+       .type   FlashTestBlk, %function
+FlashTestBlk:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L1647
+       ldr     r3, [r3, #132]
+       cmp     r0, r3
+       bcc     .L1646
+       b       FlashTestBlk.part.20
+.L1646:
+       mov     r0, #0
+       bx      lr
+.L1648:
+       .align  2
+.L1647:
+       .word   .LANCHOR2
+       .fnend
+       .size   FlashTestBlk, .-FlashTestBlk
+       .align  2
+       .global FlashMakeFactorBbt
+       .type   FlashMakeFactorBbt, %function
+FlashMakeFactorBbt:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 72
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #76
+       sub     sp, sp, #76
+       ldr     r4, .L1677
+       movw    r1, #2214
+       ldr     r3, .L1677+4
+       mov     r5, #0
+       ldr     r0, .L1677+8
+       ldr     r2, [r4, #148]
+       ldrh    r9, [r3, r1]
+       mov     r1, #1
+       str     r2, [sp, #28]
+       movw    r2, #2212
+       ldrh    r2, [r3, r2]
+       mul     r9, r9, r2
+       ldr     r2, [r3, #2776]
+       ldrb    r2, [r2, #24]   @ zero_extendqisi2
+       uxth    r9, r9
+       str     r2, [sp, #12]
+       ldrh    r2, [r3, #4]
+       ldrb    r3, [r3, #0]    @ zero_extendqisi2
+       cmp     r3, #1
+       str     r2, [sp, #8]
+       moveq   r3, r2, asl #1
+       uxtheq  r3, r3
+       streq   r3, [sp, #8]
+       bl      printk
+       ldr     r0, [r4, #148]
+       mov     r1, #0
+       mov     r2, #4096
+       bl      ftl_memset
+       mov     r3, r9, lsr #4
+       str     r3, [sp, #20]
+       sub     r3, r9, #1
+       ldr     r4, .L1677+4
+       uxth    r3, r3
+       str     r3, [sp, #24]
+       b       .L1651
+.L1673:
+       ldr     r3, .L1677
+       add     r3, r3, r5, asl #1
+       ldrh    r6, [r3, #208]
+       cmp     r6, #0
+       bne     .L1652
+       movw    r3, #2220
+       ldr     r0, [r4, #3780]
+       ldrh    r2, [r4, r3]
+       mov     r1, r6
+       mov     r7, r6
+       mov     sl, r6
+       add     r8, r4, r5, asl #2
+       mov     r2, r2, asl #9
+       bl      ftl_memset
+       add     r3, r4, r5
+       ldrb    fp, [r3, #3768] @ zero_extendqisi2
+       b       .L1653
+.L1661:
+       ldr     r2, [sp, #12]
+       mvn     r3, #0
+       strb    r3, [sp, #34]
+       tst     r2, #1
+       strb    r3, [sp, #35]
+       beq     .L1654
+       ldr     r3, [r8, #2740]
+       add     r2, sp, #34
+       mov     r0, fp
+       add     r3, r6, r3
+       str     r3, [sp, #4]
+       mov     r1, r3
+       bl      FlashReadSpare
+       ldrb    r2, [r4, #0]    @ zero_extendqisi2
+       ldr     r3, [sp, #4]
+       cmp     r2, #1
+       bne     .L1654
+       ldr     r1, [r4, #4]
+       add     r2, sp, #35
+       mov     r0, fp
+       add     r1, r3, r1
+       bl      FlashReadSpare
+       ldrb    r3, [sp, #34]   @ zero_extendqisi2
+       ldrb    r2, [sp, #35]   @ zero_extendqisi2
+       and     r3, r2, r3
+       strb    r3, [sp, #34]
+.L1654:
+       ldr     r3, [sp, #12]
+       tst     r3, #2
+       beq     .L1655
+       ldr     r3, [r4, #2776]
+       mov     r0, fp
+       add     r2, sp, #35
+       ldrh    r1, [r3, #10]
+       ldr     r3, [r8, #2740]
+       sub     r1, r1, #1
+       add     r1, r1, r3
+       add     r1, r1, r6
+       bl      FlashReadSpare
+.L1655:
+       ldr     r3, [r4, #2776]
+       ldrb    r3, [r3, #7]    @ zero_extendqisi2
+       cmp     r3, #1
+       cmpne   r3, #8
+       ldrb    r3, [sp, #34]   @ zero_extendqisi2
+       bne     .L1656
+       cmp     r3, #0
+       beq     .L1675
+       ldrb    r0, [sp, #35]   @ zero_extendqisi2
+       rsbs    r0, r0, #1
+       movcc   r0, #0
+       b       .L1657
+.L1656:
+       cmp     r3, #255
+       bne     .L1675
+       ldrb    r0, [sp, #35]   @ zero_extendqisi2
+       subs    r0, r0, #255
+       movne   r0, #1
+       b       .L1657
+.L1675:
+       mov     r0, #1
+.L1657:
+       ldr     r2, [sp, #12]
+       tst     r2, #4
+       beq     .L1658
+       ldr     r1, [r8, #2740]
+       mov     r0, fp
+       add     r1, r6, r1
+       bl      SandiskProgTestBadBlock
+.L1658:
+       cmp     r0, #0
+       beq     .L1659
+       mov     r1, r5
+       mov     r2, r7
+       ldr     r0, .L1677+12
+       add     sl, sl, #1
+       bl      printk
+       ldr     r3, [sp, #16]
+       and     r0, r7, #31
+       mov     ip, #1
+       uxth    sl, sl
+       mov     r2, r3, lsr #5
+       ldr     r3, [r4, #3780]
+       ldr     r1, [r3, r2, asl #2]
+       orr     r1, r1, ip, asl r0
+       str     r1, [r3, r2, asl #2]
+       ldr     r2, [sp, #20]
+       ldrb    r3, [r4, #3766] @ zero_extendqisi2
+       mul     r3, r3, r2
+       cmp     sl, r3
+       bgt     .L1660
+.L1659:
+       ldr     r3, [sp, #8]
+       add     r7, r7, #1
+       add     r6, r6, r3
+.L1653:
+       uxth    r3, r7
+       str     r3, [sp, #16]
+       cmp     r3, r9
+       bcc     .L1661
+.L1660:
+       mov     r2, sl
+       ldr     r0, .L1677+16
+       mov     r1, r5
+       bl      printk
+       ldrb    r3, [r4, #3766] @ zero_extendqisi2
+       ldr     r2, [sp, #20]
+       mul     r3, r3, r2
+       cmp     sl, r3
+       blt     .L1662
+       movw    r3, #2220
+       ldr     r0, [r4, #3780]
+       ldrh    r2, [r4, r3]
+       mov     r1, #0
+       mov     r2, r2, asl #9
+       bl      ftl_memset
+.L1662:
+       cmp     r5, #0
+       bne     .L1663
+       ldr     r3, .L1677
+       mov     r8, r5
+       mov     r7, r5
+       mov     sl, #1
+       ldrh    fp, [r3, #132]
+       b       .L1664
+.L1666:
+       mov     r0, r6
+       bl      FlashTestBlk
+       cmp     r0, #0
+       beq     .L1665
+       mov     r1, r6
+       ldr     r0, .L1677+20
+       bl      printk
+       ldr     r3, [r4, #3780]
+       mov     r2, r6, lsr #5
+       add     r7, r7, #1
+       and     r6, r6, #31
+       ldr     r1, [r3, r2, asl #2]
+       uxth    r7, r7
+       orr     r6, r1, sl, asl r6
+       str     r6, [r3, r2, asl #2]
+.L1665:
+       add     r8, r8, #1
+       uxth    r8, r8
+.L1664:
+       add     r6, r8, fp
+       ldrb    r3, [r4, #1]    @ zero_extendqisi2
+       uxth    r6, r6
+       cmp     r3, r6
+       bhi     .L1666
+       ldr     r6, [sp, #24]
+       sub     sl, r9, #50
+       mov     r8, #1
+       b       .L1667
+.L1669:
+       mov     r0, r6
+       bl      FlashTestBlk
+       cmp     r0, #0
+       beq     .L1668
+       mov     r1, r6
+       ldr     r0, .L1677+20
+       bl      printk
+       ldr     r3, [r4, #3780]
+       mov     r2, r6, lsr #5
+       and     r0, r6, #31
+       ldr     r1, [r3, r2, asl #2]
+       orr     r1, r1, r8, asl r0
+       str     r1, [r3, r2, asl #2]
+.L1668:
+       sub     r6, r6, #1
+       uxth    r6, r6
+.L1667:
+       cmp     r6, sl
+       bgt     .L1669
+       ldr     r3, .L1677
+       ldrb    r2, [r4, #1]    @ zero_extendqisi2
+       ldr     r3, [r3, #132]
+       rsb     r3, r3, r2
+       cmp     r7, r3
+       bcc     .L1663
+       movw    r3, #2220
+       ldr     r0, [r4, #3780]
+       ldrh    r2, [r4, r3]
+       mov     r1, #0
+       mov     r2, r2, asl #9
+       bl      ftl_memset
+.L1663:
+       mul     r8, r9, r5
+       ldr     r7, .L1677
+       ldr     r6, [sp, #24]
+       ldr     fp, [sp, #28]
+       add     sl, r7, r5, asl #1
+.L1670:
+       ldr     r0, .L1677+24
+       mov     r1, r5
+       mov     r2, r6
+       bl      printk
+       ldr     r3, [r4, #3780]
+       b       .L1671
+.L1672:
+       sub     r6, r6, #1
+       uxth    r6, r6
+.L1671:
+       mov     r1, r6, lsr #5
+       and     r2, r6, #31
+       ldr     r1, [r3, r1, asl #2]
+       mov     r2, r1, lsr r2
+       ands    r2, r2, #1
+       bne     .L1672
+       ldr     r3, .L1677+28
+       mov     r1, #1
+       strh    r6, [sl, #208]  @ movhi
+       add     r0, sp, #36
+       strh    r6, [fp, #2]    @ movhi
+       strh    r3, [fp, #0]    @ movhi
+       ldr     r3, [r4, #3780]
+       strh    r2, [fp, #8]    @ movhi
+       mov     r2, r1
+       str     r3, [sp, #44]
+       ldr     r3, [r7, #148]
+       str     r3, [sp, #48]
+       add     r3, r6, r8
+       mov     r3, r3, asl #10
+       str     r3, [sp, #40]
+       bl      FlashEraseBlocks
+       mov     r1, #1
+       mov     r3, r1
+       add     r0, sp, #36
+       mov     r2, r1
+       bl      FlashProgPages
+       ldr     r3, [sp, #36]
+       cmp     r3, #0
+       subne   r6, r6, #1
+       uxthne  r6, r6
+       bne     .L1670
+.L1652:
+       add     r5, r5, #1
+       uxtb    r5, r5
+.L1651:
+       ldrb    r3, [r4, #3766] @ zero_extendqisi2
+       cmp     r3, r5
+       bhi     .L1673
+       add     sp, sp, #76
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1678:
+       .align  2
+.L1677:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .word   .LC108
+       .word   .LC109
+       .word   .LC110
+       .word   .LC111
+       .word   .LC112
+       .word   -3872
+       .fnend
+       .size   FlashMakeFactorBbt, .-FlashMakeFactorBbt
+       .align  2
+       .global ftl_map_blk_gc
+       .type   ftl_map_blk_gc, %function
+ftl_map_blk_gc:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, lr}
+       mov     r4, r0
+       ldr     r5, [r0, #12]
+       ldr     r8, [r0, #24]
+       bl      ftl_free_no_use_map_blk
+       ldrh    r3, [r4, #10]
+       ldrh    r2, [r4, #8]
+       sub     r3, r3, #1
+       cmp     r2, r3
+       blt     .L1680
+       uxth    r0, r0
+       mov     r0, r0, asl #1
+       ldrh    r7, [r5, r0]
+       cmp     r7, #0
+       beq     .L1680
+       ldr     r3, [r4, #32]
+       cmp     r3, #0
+       bne     .L1680
+       mov     r2, #1
+       ldr     r1, .L1687
+       str     r2, [r4, #32]
+       strh    r3, [r5, r0]    @ movhi
+       ldrh    r3, [r4, #8]
+       ldrh    r2, [r4, #2]
+       sub     r3, r3, #1
+       strh    r3, [r4, #8]    @ movhi
+       movw    r3, #3914
+       ldrh    r3, [r1, r3]
+       cmp     r2, r3
+       bcc     .L1681
+       mov     r0, r4
+       bl      ftl_map_blk_alloc_new_blk
+.L1681:
+       mov     r5, #0
+       ldr     r6, .L1687+4
+       mov     r9, r5
+       b       .L1682
+.L1685:
+       ldr     r3, [r8, r5, asl #2]
+       mov     sl, r5, asl #2
+       cmp     r7, r3, lsr #10
+       bne     .L1683
+       ldr     r3, [r6, #-972]
+       mov     r1, #1
+       ldr     r0, .L1687+8
+       mov     r2, r1
+       str     r3, [r6, #176]
+       ldr     r3, [r6, #-952]
+       str     r3, [r6, #180]
+       ldr     r3, [r8, r5, asl #2]
+       str     r3, [r6, #172]
+       bl      FlashReadPages
+       ldr     r3, [r6, #168]
+       cmn     r3, #1
+       streq   r9, [r8, sl]
+       beq     .L1683
+       mov     r0, r4
+       mov     r1, r5
+       ldr     r2, [r6, #176]
+       bl      FtlMapWritePage
+.L1683:
+       add     r5, r5, #1
+       uxth    r5, r5
+.L1682:
+       ldrh    r3, [r4, #6]
+       cmp     r3, r5
+       bhi     .L1685
+       mov     r0, r7
+       mov     r1, #1
+       bl      FtlFreeSysBlkQueueIn
+       mov     r3, #0
+       str     r3, [r4, #32]
+.L1680:
+       ldr     r1, .L1687
+       movw    r3, #3914
+       ldrh    r2, [r4, #2]
+       ldrh    r3, [r1, r3]
+       cmp     r2, r3
+       bcc     .L1686
+       mov     r0, r4
+       bl      ftl_map_blk_alloc_new_blk
+.L1686:
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+.L1688:
+       .align  2
+.L1687:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   .LANCHOR2+168
+       .fnend
+       .size   ftl_map_blk_gc, .-ftl_map_blk_gc
+       .align  2
+       .global Ftl_write_map_blk_to_last_page
+       .type   Ftl_write_map_blk_to_last_page, %function
+Ftl_write_map_blk_to_last_page:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       movw    r2, #65535
+       ldrh    r3, [r0, #0]
+       mov     r4, r0
+       ldr     r5, [r0, #12]
+       cmp     r3, r2
+       ldr     r7, [r0, #24]
+       bne     .L1690
+       ldrh    r3, [r0, #8]
+       add     r3, r3, #1
+       strh    r3, [r0, #8]    @ movhi
+       bl      FtlFreeSysBlkQueueOut
+       mov     r3, #0
+       strh    r0, [r5, #0]    @ movhi
+       strh    r3, [r4, #2]    @ movhi
+       strh    r3, [r4, #0]    @ movhi
+       ldr     r3, [r4, #28]
+       add     r3, r3, #1
+       str     r3, [r4, #28]
+       b       .L1691
+.L1690:
+       mov     r3, r3, asl #1
+       ldr     r2, [r0, #28]
+       mov     r1, #255
+       ldrh    r6, [r5, r3]
+       ldr     r5, .L1695
+       ldrh    r3, [r0, #2]
+       orr     r3, r3, r6, asl #10
+       str     r3, [r5, #172]
+       ldr     r3, [r5, #-2076]
+       str     r3, [r5, #176]
+       ldr     r3, [r5, #-952]
+       str     r3, [r5, #180]
+       str     r2, [r3, #4]
+       ldr     r2, .L1695+4
+       strh    r2, [r3, #8]    @ movhi
+       ldrh    r2, [r0, #4]
+       strh    r6, [r3, #2]    @ movhi
+       strh    r2, [r3, #0]    @ movhi
+       movw    r3, #3914
+       ldr     r2, .L1695+8
+       ldr     r0, [r5, #-2076]
+       ldrh    r2, [r2, r3]
+       mov     r2, r2, asl #3
+       bl      ftl_memset
+       mov     r2, #0
+       mov     r3, r2
+       b       .L1692
+.L1694:
+       ldr     r1, [r7, r3, asl #2]
+       cmp     r6, r1, lsr #10
+       bne     .L1693
+       add     r2, r2, #1
+       ldr     r1, [r5, #-2076]
+       uxth    r2, r2
+       str     r3, [r1, r2, asl #3]
+       ldr     r1, [r5, #-2076]
+       ldr     r0, [r7, r3, asl #2]
+       add     r1, r1, r2, asl #3
+       str     r0, [r1, #4]
+.L1693:
+       add     r3, r3, #1
+       uxth    r3, r3
+.L1692:
+       ldrh    r1, [r4, #6]
+       cmp     r1, r3
+       bhi     .L1694
+       mov     r1, #1
+       mov     r3, #0
+       ldr     r0, .L1695+12
+       mov     r2, r1
+       bl      FlashProgPages
+       ldrh    r3, [r4, #2]
+       mov     r0, r4
+       add     r3, r3, #1
+       strh    r3, [r4, #2]    @ movhi
+       bl      ftl_map_blk_gc
+.L1691:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1696:
+       .align  2
+.L1695:
+       .word   .LANCHOR2
+       .word   -1291
+       .word   .LANCHOR0
+       .word   .LANCHOR2+168
+       .fnend
+       .size   Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
+       .align  2
+       .global FtlMapWritePage
+       .type   FtlMapWritePage, %function
+FtlMapWritePage:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r4, r0
+       ldr     r5, .L1704
+       mov     r6, r1
+       ldr     r9, .L1704+4
+       mov     r8, r2
+       movw    fp, #3914
+.L1703:
+       ldr     r3, [r5, #-1864]
+       add     r3, r3, #1
+       str     r3, [r5, #-1864]
+       ldrh    r3, [r9, fp]
+       ldrh    r2, [r4, #2]
+       sub     r3, r3, #1
+       cmp     r2, r3
+       bge     .L1698
+       ldrh    r2, [r4, #0]
+       movw    r3, #65535
+       cmp     r2, r3
+       bne     .L1699
+.L1698:
+       mov     r0, r4
+       bl      Ftl_write_map_blk_to_last_page
+.L1699:
+       ldrh    r3, [r4, #0]
+       mov     r1, #0
+       ldr     r2, [r4, #12]
+       ldr     r0, [r5, #-952]
+       mov     r3, r3, asl #1
+       ldr     r7, .L1704
+       ldrh    sl, [r2, r3]
+       mov     r2, #16
+       ldrh    r3, [r4, #2]
+       str     r8, [r5, #176]
+       orr     r3, r3, sl, asl #10
+       str     r0, [r5, #180]
+       str     r3, [r5, #172]
+       bl      ftl_memset
+       ldr     r3, [r5, #180]
+       mov     r1, #1
+       ldr     r2, [r4, #28]
+       add     r0, r7, #168
+       strh    r6, [r3, #8]    @ movhi
+       str     r2, [r3, #4]
+       ldrh    r2, [r4, #4]
+       strh    sl, [r3, #2]    @ movhi
+       strh    r2, [r3, #0]    @ movhi
+       mov     r3, r1
+       mov     r2, r1
+       bl      FlashProgPages
+       ldrh    r3, [r4, #2]
+       add     r3, r3, #1
+       uxth    r3, r3
+       strh    r3, [r4, #2]    @ movhi
+       cmp     r3, #1
+       beq     .L1703
+       ldr     r3, [r5, #168]
+       cmn     r3, #1
+       beq     .L1703
+       ldr     r2, [r7, #172]
+       mov     r0, #0
+       ldr     r3, [r4, #24]
+       str     r2, [r3, r6, asl #2]
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1705:
+       .align  2
+.L1704:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlMapWritePage, .-FtlMapWritePage
+       .align  2
+       .global flush_l2p_region
+       .type   flush_l2p_region, %function
+flush_l2p_region:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r4, #12
+       ldr     r5, .L1707
+       mul     r4, r4, r0
+       sub     r0, r5, #1088
+       ldr     r2, [r5, #-1900]
+       add     r3, r2, r4
+       ldrh    r1, [r2, r4]
+       ldr     r2, [r3, #8]
+       bl      FtlMapWritePage
+       ldr     r3, [r5, #-1900]
+       mov     r0, #0
+       add     r4, r3, r4
+       ldr     r3, [r4, #4]
+       bic     r3, r3, #-2147483648
+       str     r3, [r4, #4]
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L1708:
+       .align  2
+.L1707:
+       .word   .LANCHOR2
+       .fnend
+       .size   flush_l2p_region, .-flush_l2p_region
+       .align  2
+       .global log2phys
+       .type   log2phys, %function
+log2phys:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, lr}
+       .save {r3, r4, r5, r6, r7, r8, sl, lr}
+       mov     r8, r2
+       ldr     r3, .L1718
+       mov     r2, #3920
+       mov     r4, r1
+       ldrh    r7, [r3, r2]
+       mvn     r2, #0
+       add     r7, r7, #7
+       mov     r6, r0, lsr r7
+       bic     r7, r0, r2, asl r7
+       movw    r2, #3950
+       ldrh    r2, [r3, r2]
+       uxth    r6, r6
+       ldr     r3, .L1718+4
+       uxth    r7, r7
+       ldr     sl, [r3, #-1900]
+       mov     r3, #0
+       mov     r5, r3
+       b       .L1710
+.L1716:
+       add     r3, r3, #12
+       add     r1, sl, r3
+       ldrh    r1, [r1, #-12]
+       cmp     r1, r6
+       bne     .L1711
+.L1712:
+       cmp     r8, #0
+       ldr     r3, .L1718+4
+       mov     r2, #12
+       bne     .L1713
+       ldr     r3, [r3, #-1900]
+       mla     r2, r2, r5, r3
+       ldr     r3, [r2, #8]
+       ldr     r3, [r3, r7, asl #2]
+       str     r3, [r4, #0]
+       b       .L1714
+.L1713:
+       mul     r2, r2, r5
+       ldr     r1, [r3, #-1900]
+       ldr     r0, [r4, #0]
+       add     r1, r1, r2
+       ldr     r1, [r1, #8]
+       str     r0, [r1, r7, asl #2]
+       ldr     r1, [r3, #-1900]
+       add     r2, r1, r2
+       ldr     r1, [r2, #4]
+       orr     r1, r1, #-2147483648
+       str     r1, [r2, #4]
+       ldr     r2, .L1718+8
+       strh    r6, [r3, r2]    @ movhi
+.L1714:
+       ldr     r3, .L1718+4
+       mov     r2, #12
+       mov     r0, #0
+       ldr     r3, [r3, #-1900]
+       mla     r5, r2, r5, r3
+       ldr     r3, [r5, #4]
+       cmn     r3, #1
+       addne   r3, r3, #1
+       strne   r3, [r5, #4]
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, sl, pc}
+.L1711:
+       add     r5, r5, #1
+       uxth    r5, r5
+.L1710:
+       cmp     r5, r2
+       bne     .L1716
+       bl      select_l2p_ram_region
+       mov     r3, #12
+       mul     r3, r3, r0
+       mov     r5, r0
+       add     r2, sl, r3
+       ldrh    r1, [sl, r3]
+       movw    r3, #65535
+       cmp     r1, r3
+       beq     .L1717
+       ldr     r3, [r2, #4]
+       cmp     r3, #0
+       bge     .L1717
+       bl      flush_l2p_region
+.L1717:
+       mov     r0, r6
+       mov     r1, r5
+       bl      load_l2p_region
+       b       .L1712
+.L1719:
+       .align  2
+.L1718:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   -1896
+       .fnend
+       .size   log2phys, .-log2phys
+       .align  2
+       .global FtlReUsePrevPpa
+       .type   FtlReUsePrevPpa, %function
+FtlReUsePrevPpa:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, lr}
+       mov     r7, r0
+       ubfx    r0, r1, #10, #16
+       str     r1, [sp, #4]
+       bl      P2V_block_in_plane
+       ldr     r3, .L1726
+       ldr     r1, [r3, #-2064]
+       mov     r5, r0, asl #1
+       ldrh    r2, [r1, r5]
+       cmp     r2, #0
+       addne   r2, r2, #1
+       strneh  r2, [r1, r5]    @ movhi
+       bne     .L1722
+       ldr     r4, [r3, #-2052]
+       cmp     r4, #0
+       beq     .L1722
+       ldr     r1, .L1726+4
+       mov     ip, #6
+       ldrh    lr, [r3, r1]
+       ldr     r3, [r3, #-2072]
+       ldr     r1, .L1726+8
+       rsb     r4, r3, r4
+       mov     r4, r4, asr #1
+       mul     r4, r1, r4
+       movw    r1, #65535
+       uxth    r4, r4
+       b       .L1723
+.L1725:
+       cmp     r4, r0
+       bne     .L1724
+       mov     r1, r4
+       ldr     r0, .L1726+12
+       bl      List_remove_node
+       ldr     r6, .L1726
+       ldr     r3, .L1726+4
+       mov     r0, r4
+       ldrh    r2, [r6, r3]
+       sub     r2, r2, #1
+       strh    r2, [r6, r3]    @ movhi
+       bl      INSERT_DATA_LIST
+       ldr     r3, [r6, #-2064]
+       ldrh    r2, [r3, r5]
+       add     r2, r2, #1
+       strh    r2, [r3, r5]    @ movhi
+       b       .L1722
+.L1724:
+       mul     r4, ip, r4
+       ldrh    r4, [r3, r4]
+       cmp     r4, r1
+       beq     .L1722
+       add     r2, r2, #1
+       uxth    r2, r2
+.L1723:
+       cmp     r2, lr
+       bne     .L1725
+.L1722:
+       mov     r0, r7
+       add     r1, sp, #4
+       mov     r2, #1
+       bl      log2phys
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, pc}
+.L1727:
+       .align  2
+.L1726:
+       .word   .LANCHOR2
+       .word   -2048
+       .word   -1431655765
+       .word   .LANCHOR2-2052
+       .fnend
+       .size   FtlReUsePrevPpa, .-FtlReUsePrevPpa
+       .align  2
+       .global FtlMapBlkWriteDumpData
+       .type   FtlMapBlkWriteDumpData, %function
+FtlMapBlkWriteDumpData:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       mov     r4, r0
+       ldr     r2, [r0, #36]
+       ldrh    r6, [r0, #6]
+       cmp     r2, #0
+       ldr     r3, [r0, #24]
+       ldmeqfd sp!, {r4, r5, r6, pc}
+       ldr     r5, .L1732
+       sub     r6, r6, #1
+       mov     r2, #0
+       str     r2, [r0, #36]
+       uxth    r6, r6
+       ldr     r0, [r5, #-972]
+       ldr     r2, [r5, #-952]
+       str     r0, [r5, #176]
+       str     r2, [r5, #180]
+       ldr     r3, [r3, r6, asl #2]
+       cmp     r3, #0
+       str     r3, [r5, #172]
+       beq     .L1730
+       mov     r1, #1
+       add     r0, r5, #168
+       mov     r2, r1
+       bl      FlashReadPages
+       b       .L1731
+.L1730:
+       ldr     r2, .L1732+4
+       movw    r3, #3922
+       mov     r1, #255
+       ldrh    r2, [r2, r3]
+       bl      ftl_memset
+.L1731:
+       mov     r0, r4
+       mov     r1, r6
+       ldr     r2, [r5, #176]
+       ldmfd   sp!, {r4, r5, r6, lr}
+       b       FtlMapWritePage
+.L1733:
+       .align  2
+.L1732:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData
+       .align  2
+       .global FtlVendorPartWrite
+       .type   FtlVendorPartWrite, %function
+FtlVendorPartWrite:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 56
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L1744
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r9, r2
+       mov     r2, #3920
+       mov     r4, r1
+       ldrh    r8, [r3, r2]
+       movw    r2, #3906
+       ldrh    r2, [r3, r2]
+       add     r1, r1, r0
+       .pad #60
+       sub     sp, sp, #60
+       mov     r6, r0
+       cmp     r1, r2
+       mvnhi   r7, #0
+       bhi     .L1735
+       mov     r8, r0, lsr r8
+       mov     r7, #0
+       ldr     sl, .L1744+4
+       mov     ip, r8, asl #2
+       str     ip, [sp, #8]
+       b       .L1736
+.L1741:
+       ldr     r1, .L1744
+       movw    r2, #3918
+       ldr     ip, [sp, #8]
+       mov     r0, r6
+       ldr     r3, [sl, #-920]
+       ldrh    fp, [r1, r2]
+       ldr     r3, [r3, ip]
+       mov     r1, fp
+       str     r3, [sp, #4]
+       bl      __aeabi_uidivmod
+       ldr     r3, [sp, #4]
+       ldr     r2, .L1744+4
+       uxth    r1, r1
+       str     r1, [sp, #12]
+       rsb     r5, r1, fp
+       uxth    r5, r5
+       cmp     r5, r4
+       uxthhi  r5, r4
+       cmp     r3, #0
+       beq     .L1738
+       cmp     r5, fp
+       beq     .L1738
+       str     r3, [sp, #24]
+       mov     r1, #1
+       ldr     r3, [r2, #-968]
+       add     r0, sp, #20
+       mov     r2, r1
+       str     r3, [sp, #28]
+       mov     r3, #0
+       str     r3, [sp, #32]
+       bl      FlashReadPages
+       b       .L1739
+.L1738:
+       ldr     ip, .L1744
+       movw    r3, #3922
+       ldr     r0, [r2, #-968]
+       mov     r1, #0
+       ldrh    r2, [ip, r3]
+       bl      ftl_memset
+.L1739:
+       ldr     r3, [sp, #12]
+       mov     fp, r5, asl #9
+       ldr     r0, [sl, #-968]
+       mov     r1, r9
+       mov     r2, fp
+       rsb     r4, r5, r4
+       add     r0, r0, r3, asl #9
+       add     r6, r6, r5
+       bl      memcpy
+       mov     r1, r8
+       ldr     r0, .L1744+8
+       add     r8, r8, #1
+       ldr     r2, [sl, #-968]
+       add     r9, r9, fp
+       bl      FtlMapWritePage
+       ldr     ip, [sp, #8]
+       add     ip, ip, #4
+       str     ip, [sp, #8]
+       cmn     r0, #1
+       moveq   r7, r0
+.L1736:
+       cmp     r4, #0
+       bne     .L1741
+.L1735:
+       mov     r0, r7
+       add     sp, sp, #60
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1745:
+       .align  2
+.L1744:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   .LANCHOR2+224
+       .fnend
+       .size   FtlVendorPartWrite, .-FtlVendorPartWrite
+       .align  2
+       .global Ftl_save_ext_data
+       .type   Ftl_save_ext_data, %function
+Ftl_save_ext_data:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L1748
+       ldr     r2, .L1748+4
+       ldr     r1, [r3, #-1704]
+       cmp     r1, r2
+       bxne    lr
+       ldr     r2, .L1748+8
+       mov     r0, #0
+       mov     r1, #1
+       str     r2, [r3, #-1700]
+       ldr     r2, [r3, #-1856]
+       str     r2, [r3, #-1616]
+       ldr     r2, [r3, #-1852]
+       str     r2, [r3, #-1612]
+       ldr     r2, [r3, #-1860]
+       str     r2, [r3, #-1696]
+       ldr     r2, [r3, #-1872]
+       str     r2, [r3, #-1692]
+       ldr     r2, [r3, #-1880]
+       str     r2, [r3, #-1688]
+       ldr     r2, [r3, #-1864]
+       str     r2, [r3, #-1684]
+       ldr     r2, [r3, #-1836]
+       str     r2, [r3, #-1676]
+       ldr     r2, [r3, #-2080]
+       str     r2, [r3, #-1672]
+       ldr     r2, [r3, #-1876]
+       str     r2, [r3, #-1668]
+       ldr     r2, [r3, #-1868]
+       str     r2, [r3, #-1664]
+       ldr     r2, [r3, #-1828]
+       str     r2, [r3, #-1660]
+       ldr     r2, [r3, #-1824]
+       str     r2, [r3, #-1656]
+       ldr     r2, [r3, #-1708]
+       str     r2, [r3, #-1644]
+       ldr     r2, [r3, #-1004]
+       str     r2, [r3, #-1640]
+       ldr     r2, .L1748+12
+       b       FtlVendorPartWrite
+.L1749:
+       .align  2
+.L1748:
+       .word   .LANCHOR2
+       .word   1179929683
+       .word   1342177334
+       .word   .LANCHOR2-1704
+       .fnend
+       .size   Ftl_save_ext_data, .-Ftl_save_ext_data
+       .align  2
+       .global FtlEctTblFlush
+       .type   FtlEctTblFlush, %function
+FtlEctTblFlush:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r1, .L1757
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       ldr     r3, [r1, #-1884]
+       cmp     r3, #0
+       moveq   r2, #32
+       beq     .L1751
+       ldr     r2, [r1, #-1824]
+       cmp     r2, #29
+       movls   r2, #4
+       movhi   r2, #32
+.L1751:
+       mov     r3, #264
+       ldrh    r1, [r1, r3]
+       cmp     r1, #31
+       addls   r1, r1, #1
+       ldrls   r2, .L1757
+       strlsh  r1, [r2, r3]    @ movhi
+       movls   r2, #1
+       cmp     r0, #0
+       ldr     r3, .L1757
+       bne     .L1753
+       ldr     r1, [r3, #-936]
+       ldr     r0, [r1, #20]
+       ldr     r1, [r1, #16]
+       add     r2, r2, r0
+       cmp     r1, r2
+       bcc     .L1754
+.L1753:
+       ldr     r2, [r3, #-936]
+       mov     r0, #64
+       ldr     r1, [r2, #16]
+       str     r1, [r2, #20]
+       ldr     r1, .L1757+4
+       str     r1, [r2, #0]
+       ldr     r1, .L1757+8
+       ldr     r2, [r3, #-936]
+       ldrh    r1, [r3, r1]
+       mov     r3, r1, asl #9
+       str     r3, [r2, #12]
+       ldr     r3, [r2, #8]
+       add     r3, r3, #1
+       str     r3, [r2, #8]
+       mov     r3, #0
+       str     r3, [r2, #4]
+       bl      FtlVendorPartWrite
+       bl      Ftl_save_ext_data
+.L1754:
+       mov     r0, #0
+       ldmfd   sp!, {r3, pc}
+.L1758:
+       .align  2
+.L1757:
+       .word   .LANCHOR2
+       .word   1112818501
+       .word   -940
+       .fnend
+       .size   FtlEctTblFlush, .-FtlEctTblFlush
+       .align  2
+       .type   FtlReadRefresh.part.15, %function
+FtlReadRefresh.part.15:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 40
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       .pad #40
+       sub     sp, sp, #40
+       ldr     r4, .L1764
+       mov     r5, #2048
+       ldr     r6, .L1764+4
+.L1762:
+       ldr     r0, [r4, #-1620]
+       ldr     r3, [r6, #3972]
+       cmp     r0, r3
+       bcs     .L1760
+       mov     r2, #0
+       mov     r1, sp
+       bl      log2phys
+       ldr     r2, [sp, #0]
+       ldr     r3, [r4, #-1620]
+       cmn     r2, #1
+       add     r3, r3, #1
+       str     r3, [r4, #-1620]
+       beq     .L1761
+       add     r0, sp, #40
+       str     r2, [sp, #8]
+       mov     r1, #1
+       mov     r2, #0
+       str     r2, [r0, #-36]!
+       str     r3, [sp, #20]
+       str     r2, [sp, #12]
+       str     r2, [sp, #16]
+       bl      FlashReadPages
+       ldr     r3, [sp, #4]
+       cmp     r3, #256
+       bne     .L1760
+       ldr     r0, [sp, #0]
+       ubfx    r0, r0, #10, #16
+       bl      P2V_block_in_plane
+       bl      FtlGcRefreshBlock
+       b       .L1760
+.L1761:
+       subs    r5, r5, #1
+       bne     .L1762
+.L1760:
+       mvn     r0, #0
+       add     sp, sp, #40
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L1765:
+       .align  2
+.L1764:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlReadRefresh.part.15, .-FtlReadRefresh.part.15
+       .align  2
+       .global FtlReadRefresh
+       .type   FtlReadRefresh, %function
+FtlReadRefresh:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L1775
+       ldr     r0, .L1775+4
+       ldr     r2, [r3, #-1624]
+       cmp     r2, #0
+       mov     r2, r3
+       beq     .L1767
+       ldr     r1, [r3, #-1620]
+       ldr     r2, [r0, #3972]
+       cmp     r1, r2
+       bcs     .L1768
+       b       FtlReadRefresh.part.15
+.L1768:
+       mov     r2, #0
+       str     r2, [r3, #-1624]
+       str     r2, [r3, #-1620]
+       ldr     r2, [r3, #-1880]
+       b       .L1774
+.L1767:
+       ldrb    r0, [r0, #80]   @ zero_extendqisi2
+       ldr     r1, [r3, #-1828]
+       cmp     r0, #0
+       ldr     r3, [r3, #-1884]
+       addeq   r1, r3, r1, lsr #10
+       moveq   r3, #33554432
+       moveq   r1, r3, asr r1
+       ldr     r3, [r2, #-1628]
+       ldr     r2, [r2, #-1880]
+       movne   r1, #1048576
+       add     r0, r2, #1048576
+       cmp     r3, r0
+       bhi     .L1771
+       add     r3, r1, r3
+       cmp     r3, r2
+       bcs     .L1769
+.L1771:
+       ldr     r3, .L1775
+       mov     r1, #1
+       str     r1, [r3, #-1624]
+       mov     r1, #0
+       str     r1, [r3, #-1620]
+.L1774:
+       str     r2, [r3, #-1628]
+.L1769:
+       mov     r0, #0
+       bx      lr
+.L1776:
+       .align  2
+.L1775:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlReadRefresh, .-FtlReadRefresh
+       .align  2
+       .global FtlMapTblRecovery
+       .type   FtlMapTblRecovery, %function
+FtlMapTblRecovery:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 24
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #28
+       sub     sp, sp, #28
+       ldr     r3, [r0, #16]
+       mov     r4, r0
+       ldrh    sl, [r0, #6]
+       mov     r1, #0
+       ldr     r8, [r0, #24]
+       mov     r9, #0
+       ldr     r5, .L1797
+       str     r3, [sp, #16]
+       mov     r2, sl, asl #2
+       ldrh    r3, [r0, #8]
+       ldr     r7, [r0, #12]
+       mov     r0, r8
+       str     r3, [sp, #8]
+       bl      ftl_memset
+       ldr     r3, [r5, #-2076]
+       ldr     r6, [r5, #-952]
+       str     r9, [r4, #32]
+       str     r3, [r5, #176]
+       mvn     r3, #0
+       str     r6, [r5, #180]
+       strh    r3, [r4, #0]    @ movhi
+       strh    r3, [r4, #2]    @ movhi
+       mov     r3, #1
+       str     r3, [r4, #36]
+       ldr     r3, [sp, #8]
+       str     r9, [r4, #28]
+       sub     r3, r3, #1
+       str     r3, [sp, #12]
+       b       .L1778
+.L1792:
+       ldr     r0, [sp, #12]
+       cmp     r3, r0
+       mov     r3, r3, asl #1
+       bne     .L1779
+       ldrh    r0, [r7, r3]
+       mov     r1, #1
+       add     fp, r7, r3
+       bl      FtlGetLastWrittenPage
+       ldr     r1, [sp, #12]
+       mov     r7, #0
+       ldr     r2, [sp, #16]
+       strh    r9, [r4, #0]    @ movhi
+       ldr     r5, .L1797
+       uxth    r0, r0
+       add     r3, r0, #1
+       strh    r3, [r4, #2]    @ movhi
+       ldr     r3, [r2, r1, asl #2]
+       sxth    r9, r0
+       str     r7, [r5, #176]
+       add     r9, r9, #1
+       str     r3, [r4, #28]
+       b       .L1780
+.L1782:
+       ldrh    r2, [fp, #0]
+       mov     r1, #1
+       ldr     r0, .L1797+4
+       orr     r3, r3, r2, asl #10
+       mov     r2, r1
+       str     r3, [r5, #172]
+       bl      FlashReadPages
+       ldr     r3, [r5, #168]
+       cmn     r3, #1
+       beq     .L1781
+       ldrh    r3, [r6, #8]
+       cmp     r3, sl
+       bcs     .L1781
+       ldrh    r2, [r4, #4]
+       ldrh    r1, [r6, #0]
+       cmp     r1, r2
+       ldreq   r2, [r5, #172]
+       streq   r2, [r8, r3, asl #2]
+.L1781:
+       add     r7, r7, #1
+       uxth    r7, r7
+.L1780:
+       sxth    r3, r7
+       cmp     r3, r9
+       blt     .L1782
+       b       .L1783
+.L1779:
+       ldr     r2, [r5, #-2076]
+       add     r0, r7, r3
+       ldr     fp, .L1797+8
+       str     r0, [sp, #20]
+       str     r2, [r5, #176]
+       ldrh    r1, [r7, r3]
+       movw    r3, #3914
+       ldrh    r2, [fp, r3]
+       ldr     r0, .L1797+4
+       sub     r2, r2, #1
+       str     r3, [sp, #0]
+       orr     r2, r2, r1, asl #10
+       mov     r1, #1
+       str     r2, [r5, #172]
+       mov     r2, r1
+       bl      FlashReadPages
+       ldr     r2, [r5, #168]
+       ldr     r3, [sp, #0]
+       cmn     r2, #1
+       beq     .L1784
+       ldrh    r1, [r6, #0]
+       ldrh    r2, [r4, #4]
+       cmp     r1, r2
+       bne     .L1784
+       ldrh    r1, [r6, #8]
+       movw    r2, #64245
+       cmp     r1, r2
+       bne     .L1784
+       b       .L1796
+.L1787:
+       ldr     r0, [r5, #-2076]
+       mov     ip, r1, asl #3
+       add     r2, r2, #1
+       ldr     r1, [r0, r1, asl #3]
+       uxth    r2, r2
+       uxth    r1, r1
+       cmp     r1, sl
+       addcc   r0, r0, ip
+       ldrcc   r0, [r0, #4]
+       strcc   r0, [r8, r1, asl #2]
+       b       .L1785
+.L1796:
+       mov     r2, #0
+.L1785:
+       ldrh    r0, [fp, r3]
+       sxth    r1, r2
+       sub     r0, r0, #1
+       cmp     r1, r0
+       blt     .L1787
+       b       .L1788
+.L1784:
+       ldr     r1, .L1797
+       mov     fp, #0
+       ldr     r3, .L1797+8
+       add     ip, r1, #168
+       str     fp, [r1, #176]
+       b       .L1789
+.L1791:
+       ldr     r0, [sp, #20]
+       ldrh    r1, [r0, #0]
+       mov     r0, ip
+       stmia   sp, {r3, ip}
+       orr     r2, r2, r1, asl #10
+       mov     r1, #1
+       str     r2, [r5, #172]
+       mov     r2, r1
+       bl      FlashReadPages
+       ldr     r2, [r5, #168]
+       ldmia   sp, {r3, ip}
+       cmn     r2, #1
+       beq     .L1790
+       ldrh    r2, [r6, #8]
+       cmp     r2, sl
+       bcs     .L1790
+       ldrh    r1, [r4, #4]
+       ldrh    r0, [r6, #0]
+       cmp     r0, r1
+       ldreq   r1, [r5, #172]
+       streq   r1, [r8, r2, asl #2]
+.L1790:
+       add     fp, fp, #1
+       uxth    fp, fp
+.L1789:
+       movw    r1, #3914
+       sxth    r2, fp
+       ldrh    r1, [r3, r1]
+       cmp     r2, r1
+       blt     .L1791
+.L1788:
+       add     r9, r9, #1
+       uxth    r9, r9
+.L1778:
+       ldr     r1, [sp, #8]
+       sxth    r3, r9
+       cmp     r3, r1
+       blt     .L1792
+.L1783:
+       mov     r0, r4
+       bl      ftl_free_no_use_map_blk
+       ldr     r1, .L1797+8
+       movw    r3, #3914
+       ldrh    r2, [r4, #2]
+       ldrh    r3, [r1, r3]
+       cmp     r2, r3
+       bne     .L1793
+       mov     r0, r4
+       bl      ftl_map_blk_alloc_new_blk
+.L1793:
+       ldrh    r2, [r4, #8]
+       ldrh    r3, [r4, #10]
+       cmp     r2, r3
+       bcc     .L1794
+       mov     r0, r4
+       bl      ftl_map_blk_gc
+.L1794:
+       mov     r0, #0
+       add     sp, sp, #28
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1798:
+       .align  2
+.L1797:
+       .word   .LANCHOR2
+       .word   .LANCHOR2+168
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlMapTblRecovery, .-FtlMapTblRecovery
+       .align  2
+       .global FtlLoadMapInfo
+       .type   FtlLoadMapInfo, %function
+FtlLoadMapInfo:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       bl      FtlL2PDataInit
+       ldr     r0, .L1800
+       bl      FtlMapTblRecovery
+       mov     r0, #0
+       ldmfd   sp!, {r3, pc}
+.L1801:
+       .align  2
+.L1800:
+       .word   .LANCHOR2-1088
+       .fnend
+       .size   FtlLoadMapInfo, .-FtlLoadMapInfo
+       .align  2
+       .global FtlLoadVonderInfo
+       .type   FtlLoadVonderInfo, %function
+FtlLoadVonderInfo:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       movw    r2, #3932
+       ldr     r3, .L1803
+       ldr     r0, .L1803+4
+       ldrh    r2, [r3, r2]
+       strh    r2, [r0, #234]  @ movhi
+       ldr     r2, .L1803+8
+       strh    r2, [r0, #228]  @ movhi
+       movw    r2, #3956
+       ldrh    r2, [r3, r2]
+       strh    r2, [r0, #232]  @ movhi
+       movw    r2, #3934
+       ldrh    r2, [r3, r2]
+       ldr     r3, [r3, #3960]
+       strh    r2, [r0, #230]  @ movhi
+       str     r3, [r0, #236]
+       ldr     r3, [r0, #-924]
+       str     r3, [r0, #240]
+       ldr     r3, [r0, #-928]
+       str     r3, [r0, #244]
+       ldr     r3, [r0, #-920]
+       str     r3, [r0, #248]
+       add     r0, r0, #224
+       bl      FtlMapTblRecovery
+       mov     r0, #0
+       ldmfd   sp!, {r3, pc}
+.L1804:
+       .align  2
+.L1803:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   -3962
+       .fnend
+       .size   FtlLoadVonderInfo, .-FtlLoadVonderInfo
+       .align  2
+       .global FtlRecoverySuperblock
+       .type   FtlRecoverySuperblock, %function
+FtlRecoverySuperblock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 64
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #68
+       sub     sp, sp, #68
+       ldrh    r3, [r0, #2]
+       mov     r4, r0
+       ldr     r2, .L1890
+       ldrb    fp, [r0, #6]    @ zero_extendqisi2
+       str     r3, [sp, #20]
+       movw    r3, #3912
+       ldrh    r3, [r2, r3]
+       ldr     ip, [sp, #20]
+       str     fp, [sp, #32]
+       cmp     r3, ip
+       mov     r3, #0
+       streqh  r3, [r0, #4]    @ movhi
+       moveq   r2, r3  @ movhi
+       ldrneh  r0, [r0, #16]
+       movwne  r2, #65535
+       bne     .L1808
+       b       .L1887
+.L1809:
+       add     r3, r3, #1
+       uxth    r3, r3
+       add     r1, r4, r3, asl #1
+       ldrh    r0, [r1, #16]
+.L1808:
+       cmp     r0, r2
+       beq     .L1809
+       ldrb    r1, [r4, #8]    @ zero_extendqisi2
+       cmp     r1, #1
+       bne     .L1810
+       bl      FtlGetLastWrittenPage
+       cmn     r0, #1
+       mov     r7, r0
+       beq     .L1811
+       ldr     r3, .L1890
+       ldrb    r2, [r3, #80]   @ zero_extendqisi2
+       cmp     r2, #0
+       bne     .L1880
+       add     r3, r3, r0, asl #1
+       movw    r2, #2228
+       ldrh    r5, [r3, r2]
+       b       .L1874
+.L1810:
+       mov     r1, #0
+       bl      FtlGetLastWrittenPage
+       cmn     r0, #1
+       mov     r7, r0
+       beq     .L1811
+.L1880:
+       mov     r5, r7
+.L1874:
+       ldr     r3, .L1890
+       movw    r2, #3844
+       mov     r6, #0
+       str     r4, [sp, #40]
+       movw    ip, #65535
+       ldrh    r9, [r3, r2]
+       ldr     r2, .L1890+4
+       ldr     sl, [r2, #-984]
+       ldr     r8, [r2, #-1164]
+       movw    r2, #3924
+       ldrh    lr, [r3, r2]
+       mov     r2, r4
+       mov     r3, r6
+       b       .L1813
+.L1811:
+       mov     r3, #0
+       strh    r3, [r4, #2]    @ movhi
+       mov     r2, r3  @ movhi
+.L1887:
+       strb    r2, [r4, #6]
+       b       .L1807
+.L1815:
+       ldrh    r0, [r2, #16]
+       cmp     r0, ip
+       beq     .L1814
+       mov     fp, #36
+       orr     r0, r5, r0, asl #10
+       mla     r1, fp, r6, sl
+       str     r0, [r1, #4]
+       mov     r0, #0
+       str     r0, [r1, #8]
+       mul     r0, lr, r6
+       add     r6, r6, #1
+       uxth    r6, r6
+       add     fp, r0, #3
+       cmp     r0, #0
+       movlt   r0, fp
+       bic     r0, r0, #3
+       add     r0, r8, r0
+       str     r0, [r1, #12]
+.L1814:
+       add     r3, r3, #1
+       add     r2, r2, #2
+       uxth    r3, r3
+.L1813:
+       cmp     r3, r9
+       bne     .L1815
+       ldrb    r3, [r4, #8]    @ zero_extendqisi2
+       cmp     r3, #1
+       movne   r3, #0
+       bne     .L1881
+       ldr     r3, .L1890
+       ldrb    r3, [r3, #80]   @ zero_extendqisi2
+       adds    r3, r3, #0
+       movne   r3, #1
+.L1881:
+       ldr     r8, .L1890+4
+       mov     r1, r6
+       str     r3, [sp, #28]
+       mov     sl, #0
+       ldr     r2, [sp, #28]
+       ldr     r0, [r8, #-984]
+       bl      FlashReadPages
+       ldr     fp, [r8, #-1844]
+       uxth    r2, r5
+       ldr     r9, [r8, #-984]
+       movw    ip, #65535
+       mov     r3, r8
+       str     fp, [sp, #16]
+       mov     r8, r2
+       str     ip, [sp, #12]
+       mov     fp, r7
+       b       .L1817
+.L1822:
+       ldr     r2, [r9, #0]
+       cmp     r2, #0
+       strne   r8, [sp, #12]
+       bne     .L1820
+       ldr     r2, [r9, #12]
+       ldr     r7, [r2, #4]
+       cmn     r7, #1
+       beq     .L1819
+       ldr     r1, [r3, #-1844]
+       mov     r0, r7
+       str     r2, [sp, #8]
+       str     r3, [sp, #4]
+       bl      ftl_cmp_data_ver
+       ldr     r3, [sp, #4]
+       ldr     r2, [sp, #8]
+       cmp     r0, #0
+       addne   r7, r7, #1
+       strne   r7, [r3, #-1844]
+.L1819:
+       ldr     r2, [r2, #0]
+       cmn     r2, #1
+       bne     .L1820
+       ldr     r3, .L1890+4
+       mov     r2, #36
+       uxth    r7, fp
+       ldr     r3, [r3, #-984]
+       mla     sl, r2, sl, r3
+       ldr     r0, [sl, #4]
+       b       .L1882
+.L1820:
+       add     sl, sl, #1
+       add     r9, r9, #36
+       uxth    sl, sl
+.L1817:
+       cmp     sl, r6
+       bne     .L1822
+       ldr     r3, .L1890+4
+       add     r7, fp, #1
+       uxth    r7, r7
+       ldr     r3, [r3, #-984]
+       ldr     r0, [r3, #4]
+.L1882:
+       ubfx    r0, r0, #10, #16
+       bl      P2V_plane
+       ldrb    r2, [r4, #8]    @ zero_extendqisi2
+       ldr     r3, .L1890
+       cmp     r2, #1
+       str     r0, [sp, #24]
+       bne     .L1823
+       ldrb    r1, [r3, #80]   @ zero_extendqisi2
+       cmp     r1, #0
+       addeq   r7, r3, r7, asl #1
+       movweq  r1, #2228
+       ldreqh  r7, [r7, r1]
+.L1823:
+       movw    r1, #3912
+       ldr     fp, [sp, #24]
+       ldrh    r3, [r3, r1]
+       ldr     ip, [sp, #32]
+       cmp     r3, r7
+       streqh  r7, [r4, #2]    @ movhi
+       moveq   r3, #0
+       streqb  r3, [r4, #6]
+       streqh  r3, [r4, #4]    @ movhi
+       ldr     r3, [sp, #20]
+       cmp     r7, r3
+       cmpeq   fp, ip
+       beq     .L1888
+.L1825:
+       ldr     r3, [sp, #16]
+       ldr     fp, [sp, #12]
+       sub     r6, r3, #1
+       movw    r3, #65535
+       cmp     fp, r3
+       bne     .L1826
+       cmp     r2, #0
+       bne     .L1827
+.L1826:
+       ldr     r2, .L1890+4
+       uxth    r3, r5
+       ldr     ip, [sp, #20]
+       mvn     fp, #0
+       mov     sl, r3
+       mov     r9, fp
+       ldr     r1, [r2, #-1012]
+       ldr     r8, .L1890+4
+       cmn     r1, #1
+       streq   r6, [r2, #-1012]
+       ldr     r2, [r2, #-1012]
+       str     r2, [sp, #12]
+       add     r2, ip, #7
+       cmp     r3, r2
+       subgt   r5, r3, #7
+       mov     r3, r7
+       ldrle   r5, [sp, #20]
+       mov     r7, r6
+       uxthgt  r5, r5
+       b       .L1830
+.L1832:
+       ldrh    r0, [r1, #16]
+       movw    lr, #65535
+       cmp     r0, lr
+       beq     .L1831
+       ldr     ip, [sp, #16]
+       mov     r3, #36
+       orr     r0, r5, r0, asl #10
+       mla     lr, r3, r6, ip
+       add     r6, r6, #1
+       uxth    r6, r6
+       str     r0, [lr, #4]
+.L1831:
+       add     r2, r2, #1
+       add     r1, r1, #2
+       uxth    r2, r2
+.L1843:
+       ldr     lr, [sp, #44]
+       cmp     r2, lr
+       bne     .L1832
+       ldr     r3, [sp, #36]
+       mov     r1, r6
+       ldr     r0, [r8, #-984]
+       ldr     r2, [sp, #28]
+       str     r3, [sp, #4]
+       bl      FlashReadPages
+       ldr     r2, .L1890
+       add     r0, r8, r5, asl #1
+       mov     r1, #0
+       str     r0, [sp, #16]
+       ldr     r3, [sp, #4]
+       ldrb    ip, [r2, #80]   @ zero_extendqisi2
+       ldr     r2, [r8, #-984]
+       str     ip, [sp, #36]
+       b       .L1833
+.L1841:
+       ldr     r0, [r2, #0]
+       cmp     r0, #0
+       bne     .L1834
+       ldr     r0, [r2, #12]
+       movw    ip, #65535
+       ldrh    lr, [r0, #0]
+       cmp     lr, ip
+       beq     .L1835
+       ldr     r0, [r0, #4]
+       cmn     r0, #1
+       beq     .L1835
+       cmn     fp, #1
+       ldr     r9, [r8, #-1012]
+       str     r0, [r8, #-1012]
+       bne     .L1835
+       ldr     lr, [sp, #16]
+       sub     r0, lr, #912
+       ldrh    r0, [r0, #0]
+       cmp     r0, ip
+       bne     .L1836
+       ldr     r0, [sp, #36]
+       cmp     r0, #0
+       beq     .L1835
+.L1836:
+       cmp     r9, r7
+       mvneq   fp, #0
+       movne   fp, r9
+       b       .L1835
+.L1834:
+       mov     r6, r7
+       mov     r7, r3
+       ldrb    r3, [r4, #8]    @ zero_extendqisi2
+       cmp     r3, #0
+       bne     .L1827
+       ldr     r3, .L1890+4
+       movw    r2, #65535
+       add     r5, r3, r5, asl #1
+       sub     r5, r5, #912
+       ldrh    r1, [r5, #0]
+       cmp     r1, r2
+       bne     .L1837
+       cmn     fp, #1
+       bne     .L1883
+.L1838:
+       ldr     fp, [sp, #12]
+       cmp     fp, r6
+       beq     .L1839
+.L1883:
+       str     fp, [r3, #-1012]
+       b       .L1827
+.L1839:
+       ldr     r2, [r3, #-1012]
+       b       .L1889
+.L1837:
+       cmp     r9, r6
+       beq     .L1840
+       cmn     r9, #1
+       strne   r9, [r3, #-1012]
+       b       .L1827
+.L1840:
+       ldr     r2, [r3, #-1012]
+       cmp     r2, r6
+       beq     .L1827
+.L1889:
+       sub     r2, r2, #1
+       b       .L1884
+.L1835:
+       add     r1, r1, #1
+       add     r2, r2, #36
+       uxth    r1, r1
+.L1833:
+       cmp     r1, r6
+       bne     .L1841
+       add     r5, r5, #1
+       uxth    r5, r5
+.L1830:
+       cmp     r5, sl
+       bhi     .L1842
+       ldr     r1, .L1890
+       movw    r2, #3844
+       ldr     lr, [r8, #-984]
+       mov     r6, #0
+       str     r3, [sp, #36]
+       ldrh    ip, [r1, r2]
+       mov     r1, r4
+       str     lr, [sp, #16]
+       mov     r2, r6
+       str     ip, [sp, #44]
+       b       .L1843
+.L1842:
+       mov     r6, r7
+       mov     r7, r3
+       ldr     r3, .L1890+4
+       mvn     r2, #0
+.L1884:
+       str     r2, [r3, #-1012]
+.L1827:
+       ldr     r5, .L1890+4
+       movw    r3, #266
+       mov     r2, #1
+       sub     r0, r5, #1088
+       strh    r2, [r5, r3]    @ movhi
+       bl      FtlMapBlkWriteDumpData
+       ldr     r9, [sp, #20]
+       str     r7, [sp, #36]
+.L1844:
+       ldr     r3, .L1890
+       movw    r2, #3844
+       mov     r7, #0
+       ldr     lr, [r5, #-984]
+       mov     fp, #36
+       ldrh    r8, [r3, r2]
+       mov     r2, r4
+       ldrb    ip, [r3, #80]   @ zero_extendqisi2
+       mov     r3, r7
+       b       .L1845
+.L1848:
+       ldrh    r0, [r2, #16]
+       movw    r1, #65535
+       cmp     r0, r1
+       beq     .L1846
+       mla     r1, fp, r7, lr
+       orr     r0, r9, r0, asl #10
+       str     r0, [r1, #4]
+       ldrb    sl, [r4, #8]    @ zero_extendqisi2
+       cmp     sl, #1
+       bne     .L1847
+       cmp     ip, #0
+       orrne   r0, r0, #-2147483648
+       strne   r0, [r1, #4]
+.L1847:
+       add     r7, r7, #1
+       uxth    r7, r7
+.L1846:
+       add     r3, r3, #1
+       add     r2, r2, #2
+       uxth    r3, r3
+.L1845:
+       cmp     r3, r8
+       bne     .L1848
+       mov     r1, r7
+       ldr     r0, [r5, #-984]
+       ldr     r2, [sp, #28]
+       bl      FlashReadPages
+       mov     r3, #36
+       mul     r3, r3, r7
+       mov     r7, #0
+       str     r3, [sp, #44]
+       b       .L1849
+.L1870:
+       ldr     sl, [r5, #-984]
+       add     sl, sl, r7
+       ldr     r8, [sl, #4]
+       ubfx    r0, r8, #10, #16
+       str     r8, [sp, #60]
+       bl      P2V_plane
+       ldr     r3, [sp, #20]
+       cmp     r9, r3
+       bcc     .L1850
+       ldr     fp, [sp, #32]
+       mov     ip, r3
+       cmp     r0, fp
+       movcs   r3, #0
+       movcc   r3, #1
+       cmp     r9, ip
+       movne   r3, #0
+       cmp     r3, #0
+       bne     .L1850
+       ldr     r3, [sp, #24]
+       ldr     ip, [sp, #36]
+       cmp     r0, r3
+       cmpeq   r9, ip
+       beq     .L1851
+       ldr     r3, [sl, #0]
+       cmn     r3, #1
+       beq     .L1852
+       ldr     r8, [sl, #12]
+       movw    lr, #61589
+       ldrh    r3, [r8, #0]
+       cmp     r3, lr
+       bne     .L1859
+.L1853:
+       ldr     r6, [r8, #4]
+       cmn     r6, #1
+       beq     .L1854
+       ldr     r1, [r5, #-1844]
+       mov     r0, r6
+       bl      ftl_cmp_data_ver
+       cmp     r0, #0
+       addne   r3, r6, #1
+       strne   r3, [r5, #-1844]
+.L1854:
+       ldr     sl, [r8, #8]
+       add     r1, sp, #56
+       ldr     r3, [r8, #12]
+       mov     r2, #0
+       mov     r0, sl
+       str     r3, [sp, #52]
+       bl      log2phys
+       ldr     r1, [r5, #-1012]
+       cmn     r1, #1
+       beq     .L1855
+       mov     r0, r6
+       bl      ftl_cmp_data_ver
+       cmp     r0, #0
+       beq     .L1855
+       ldr     r3, [sp, #52]
+       cmn     r3, #1
+       beq     .L1856
+       ldr     r0, [r5, #-984]
+       mov     r1, #1
+       mov     r2, #0
+       add     r0, r0, r7
+       ldr     fp, [r0, #12]
+       str     r3, [r0, #4]
+       str     fp, [sp, #12]
+       bl      FlashReadPages
+       ldr     r3, [r5, #-984]
+       ldr     ip, [fp, #4]
+       add     fp, r3, r7
+       ldr     r3, [r3, r7]
+       str     ip, [sp, #16]
+       cmn     r3, #1
+       bne     .L1857
+       b       .L1858
+.L1856:
+       ldr     r3, [sp, #60]
+       ldr     r2, [sp, #56]
+       cmp     r2, r3
+       bne     .L1859
+       mov     r0, sl
+       add     r1, sp, #52
+       mov     r2, #1
+       bl      log2phys
+.L1859:
+       ldrh    r0, [r4, #0]
+       b       .L1886
+.L1857:
+       ldr     r3, [sp, #12]
+       ldr     r8, [r3, #8]
+       cmp     r8, sl
+       bne     .L1858
+       ldr     r0, [r5, #-1012]
+       ldr     r1, [sp, #16]
+       bl      ftl_cmp_data_ver
+       cmp     r0, #0
+       beq     .L1858
+       ldr     r3, [sp, #56]
+       ldr     r2, [sp, #60]
+       cmp     r3, r2
+       beq     .L1863
+.L1860:
+       ldr     r2, [sp, #52]
+       cmp     r3, r2
+       beq     .L1858
+       cmn     r3, #1
+       streq   r3, [fp, #0]
+       beq     .L1862
+       ldr     ip, [fp, #12]
+       mov     r0, fp
+       str     r3, [fp, #4]
+       mov     r1, #1
+       mov     r2, #0
+       str     ip, [sp, #12]
+       bl      FlashReadPages
+.L1862:
+       ldr     r3, [r5, #-984]
+       ldr     r3, [r3, r7]
+       cmn     r3, #1
+       beq     .L1863
+       ldr     r3, [sp, #12]
+       ldr     r0, [r5, #-1012]
+       ldr     sl, [r3, #4]
+       mov     r1, sl
+       bl      ftl_cmp_data_ver
+       cmp     r0, #0
+       beq     .L1863
+       ldr     r0, [sp, #16]
+       mov     r1, sl
+       bl      ftl_cmp_data_ver
+       cmp     r0, #0
+       beq     .L1858
+.L1863:
+       mov     r0, r8
+       ldr     r1, [sp, #52]
+       bl      FtlReUsePrevPpa
+.L1858:
+       ldrh    r0, [r4, #0]
+       mvn     r3, #0
+       str     r3, [sp, #52]
+       bl      decrement_vpc_count
+       b       .L1865
+.L1855:
+       ldr     r3, [sp, #60]
+       ldr     r2, [sp, #56]
+       cmp     r2, r3
+       beq     .L1865
+       mov     r0, sl
+       add     r1, sp, #60
+       mov     r2, #1
+       bl      log2phys
+       ldr     fp, [sp, #56]
+       cmn     fp, #1
+       beq     .L1865
+       ldr     r3, [sp, #52]
+       cmp     fp, r3
+       beq     .L1865
+       ubfx    r0, fp, #10, #16
+       bl      P2V_block_in_plane
+       ldr     r3, .L1890+8
+       ldrh    r3, [r5, r3]
+       cmp     r3, r0
+       beq     .L1866
+       ldr     r3, .L1890+12
+       ldrh    r3, [r5, r3]
+       cmp     r3, r0
+       beq     .L1866
+       ldr     r3, .L1890+16
+       ldrh    r3, [r5, r3]
+       cmp     r3, r0
+       bne     .L1865
+.L1866:
+       ldr     ip, .L1890+4
+       mov     r1, #1
+       mov     r2, #0
+       ldr     r0, [ip, #-984]
+       str     fp, [r0, #4]
+       ldr     r8, [r0, #12]
+       bl      FlashReadPages
+       ldr     r0, .L1890+4
+       ldr     r1, [r8, #4]
+       ldr     r3, [r0, #-984]
+       ldr     r3, [r3, #0]
+       cmn     r3, #1
+       beq     .L1865
+       mov     r0, r6
+       bl      ftl_cmp_data_ver
+       cmp     r0, #0
+       bne     .L1865
+       mov     r0, sl
+       add     r1, sp, #56
+       mov     r2, #1
+       bl      log2phys
+.L1865:
+       ldr     r0, [sp, #52]
+       cmn     r0, #1
+       beq     .L1850
+       ubfx    r0, r0, #10, #16
+       bl      P2V_block_in_plane
+       ldr     r2, [r5, #-2064]
+       mov     r3, r0, asl #1
+       mov     r1, r0
+       ldrh    r3, [r2, r3]
+       cmp     r3, #0
+       beq     .L1867
+.L1886:
+       bl      decrement_vpc_count
+       b       .L1850
+.L1867:
+       ldr     r0, .L1890+20
+       bl      printk
+       b       .L1850
+.L1852:
+       ldr     r3, [r5, #268]
+       cmp     r3, #31
+       addls   r2, r5, r3, asl #2
+       addls   r3, r3, #1
+       strls   r3, [r5, #268]
+       strls   r8, [r2, #272]
+       ldrh    r0, [r4, #0]
+       bl      decrement_vpc_count
+       ldr     r3, [r5, #-1012]
+       cmn     r3, #1
+       beq     .L1885
+.L1869:
+       cmp     r3, r6
+       bls     .L1850
+.L1885:
+       str     r6, [r5, #-1012]
+.L1850:
+       add     r7, r7, #36
+.L1849:
+       ldr     r3, [sp, #44]
+       cmp     r7, r3
+       bne     .L1870
+       ldr     r3, .L1890
+       add     r9, r9, #1
+       movw    r2, #3912
+       uxth    r9, r9
+       ldrh    r2, [r3, r2]
+       cmp     r9, r2
+       bne     .L1844
+       mov     r2, #0
+       movw    r1, #3844
+       strh    r2, [r4, #4]    @ movhi
+       ldrh    r1, [r3, r1]
+       mov     r3, r2
+       strh    r9, [r4, #2]    @ movhi
+       movw    r2, #65535
+       ldr     r0, [sp, #40]
+       b       .L1871
+.L1873:
+       add     r0, r0, #2
+       ldrh    ip, [r0, #14]
+       cmp     ip, r2
+       strneb  r3, [r4, #6]
+       bne     .L1807
+.L1872:
+       add     r3, r3, #1
+       uxth    r3, r3
+.L1871:
+       cmp     r3, r1
+       bne     .L1873
+       b       .L1807
+.L1851:
+       ldr     r7, [sp, #36]
+       ldr     fp, [sp, #24]
+       strh    r7, [r4, #2]    @ movhi
+       strb    fp, [r4, #6]
+.L1888:
+       mov     r0, r4
+       mov     r1, r7
+       mov     r2, fp
+       bl      ftl_sb_update_avl_pages
+.L1807:
+       mov     r0, #0
+       add     sp, sp, #68
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L1891:
+       .align  2
+.L1890:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   -2044
+       .word   -1996
+       .word   -1948
+       .word   .LC113
+       .fnend
+       .size   FtlRecoverySuperblock, .-FtlRecoverySuperblock
+       .align  2
+       .global FtlWriteDumpData
+       .type   FtlWriteDumpData, %function
+FtlWriteDumpData:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 40
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, sl, lr}
+       .save {r4, r5, r6, r7, r8, sl, lr}
+       .pad #44
+       sub     sp, sp, #44
+       ldr     r4, .L1901
+       ldr     r3, .L1901+4
+       mov     r2, r4
+       ldrh    r3, [r4, r3]
+       cmp     r3, #0
+       beq     .L1893
+       ldrb    r1, [r4, #-2036]        @ zero_extendqisi2
+       cmp     r1, #0
+       bne     .L1893
+       ldr     r5, .L1901+8
+       movw    r0, #3912
+       ldrb    r1, [r4, #-2037]        @ zero_extendqisi2
+       ldrh    r0, [r5, r0]
+       mul     r1, r0, r1
+       cmp     r3, r1
+       beq     .L1893
+       ldrb    r8, [r4, #-2034]        @ zero_extendqisi2
+       movw    r3, #3844
+       ldr     r7, [r5, #3972]
+       cmp     r8, #0
+       ldrh    r6, [r5, r3]
+       bne     .L1892
+       sub     r7, r7, #1
+       mov     r1, sp
+       mov     r2, r8
+       mov     r0, r7
+       bl      log2phys
+       ldr     r3, [sp, #0]
+       ldr     r0, [r4, #-2076]
+       ldr     r4, [r4, #-952]
+       cmn     r3, #1
+       str     r3, [sp, #8]
+       str     r7, [sp, #20]
+       str     r0, [sp, #12]
+       str     r4, [sp, #16]
+       str     r8, [r4, #4]
+       beq     .L1895
+       add     r0, sp, #4
+       mov     r1, #1
+       mov     r2, r8
+       bl      FlashReadPages
+       b       .L1896
+.L1895:
+       movw    r3, #3922
+       mov     r1, #255
+       ldrh    r2, [r5, r3]
+       bl      ftl_memset
+.L1896:
+       ldr     r3, .L1901+12
+       mov     r6, r6, asl #2
+       ldr     r5, .L1901
+       ldr     sl, .L1901+4
+       strh    r3, [r4, #0]    @ movhi
+       ldr     r8, .L1901+16
+       b       .L1897
+.L1900:
+       ldrh    r3, [r5, sl]
+       cmp     r3, #0
+       beq     .L1898
+       ldr     r3, [sp, #8]
+       sub     r6, r6, #1
+       str     r7, [r4, #8]
+       ldr     r0, .L1901+20
+       str     r3, [r4, #12]
+       ldrh    r3, [r5, r8]
+       strh    r3, [r4, #2]    @ movhi
+       bl      get_new_active_ppa
+       ldr     r3, [r5, #-1844]
+       mov     r2, #0
+       mov     r1, #1
+       str     r0, [sp, #8]
+       add     r0, sp, #4
+       str     r3, [r4, #4]
+       add     r3, r3, #1
+       cmn     r3, #1
+       str     r3, [r5, #-1844]
+       moveq   r3, #0
+       streq   r3, [r5, #-1844]
+       mov     r3, r2
+       bl      FlashProgPages
+       ldrh    r0, [r5, r8]
+       bl      decrement_vpc_count
+.L1897:
+       cmp     r6, #0
+       bne     .L1900
+.L1898:
+       ldr     r3, .L1901
+       mov     r2, #1
+       strb    r2, [r3, #-2034]
+       b       .L1892
+.L1893:
+       mov     r3, #0
+       strb    r3, [r2, #-2034]
+.L1892:
+       add     sp, sp, #44
+       ldmfd   sp!, {r4, r5, r6, r7, r8, sl, pc}
+.L1902:
+       .align  2
+.L1901:
+       .word   .LANCHOR2
+       .word   -2040
+       .word   .LANCHOR0
+       .word   -3947
+       .word   -2044
+       .word   .LANCHOR2-2044
+       .fnend
+       .size   FtlWriteDumpData, .-FtlWriteDumpData
+       .align  2
+       .global l2p_flush
+       .type   l2p_flush, %function
+l2p_flush:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       bl      FtlWriteDumpData
+       mov     r4, #0
+       ldr     r7, .L1907
+       movw    r6, #3950
+       ldr     r5, .L1907+4
+       b       .L1904
+.L1906:
+       ldr     r3, [r5, #-1900]
+       mov     r2, #12
+       mla     r3, r2, r4, r3
+       ldr     r3, [r3, #4]
+       cmp     r3, #0
+       bge     .L1905
+       mov     r0, r4
+       bl      flush_l2p_region
+.L1905:
+       add     r4, r4, #1
+       uxth    r4, r4
+.L1904:
+       ldrh    r3, [r7, r6]
+       cmp     r3, r4
+       bhi     .L1906
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L1908:
+       .align  2
+.L1907:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   l2p_flush, .-l2p_flush
+       .align  2
+       .global FtlVpcCheckAndModify
+       .type   FtlVpcCheckAndModify, %function
+FtlVpcCheckAndModify:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r4, r5, r6, r7, r8, lr}
+       .save {r0, r1, r4, r5, r6, r7, r8, lr}
+       mov     r4, #0
+       ldr     r6, .L1916
+       ldr     r1, .L1916+4
+       ldr     r0, .L1916+8
+       bl      printk
+       movw    r3, #3854
+       ldrh    r2, [r6, r3]
+       mov     r1, #0
+       ldr     r5, .L1916+12
+       mov     r2, r2, asl #1
+       ldr     r0, [r5, #-932]
+       bl      ftl_memset
+       b       .L1910
+.L1912:
+       mov     r0, r4
+       add     r1, sp, #4
+       mov     r2, #0
+       bl      log2phys
+       ldr     r0, [sp, #4]
+       cmn     r0, #1
+       beq     .L1911
+       ubfx    r0, r0, #10, #16
+       bl      P2V_block_in_plane
+       ldr     r3, [r5, #-932]
+       mov     r0, r0, asl #1
+       ldrh    r2, [r3, r0]
+       add     r2, r2, #1
+       strh    r2, [r3, r0]    @ movhi
+.L1911:
+       add     r4, r4, #1
+.L1910:
+       ldr     r3, [r6, #3972]
+       cmp     r4, r3
+       bcc     .L1912
+       mov     r4, #0
+       ldr     r7, .L1916
+       movw    r8, #3852
+       ldr     r5, .L1916+12
+       b       .L1913
+.L1915:
+       ldr     r3, [r5, #-2064]
+       mov     r6, r4, asl #1
+       ldrh    r2, [r3, r6]
+       ldr     r3, [r5, #-932]
+       ldrh    r3, [r3, r6]
+       cmp     r2, r3
+       beq     .L1914
+       movw    r1, #65535
+       cmp     r2, r1
+       beq     .L1914
+       ldr     r0, .L1916+16
+       mov     r1, r4
+       bl      printk
+       ldr     r3, .L1916+20
+       ldrh    r3, [r5, r3]
+       cmp     r3, r4
+       beq     .L1914
+       ldr     r3, .L1916+24
+       ldrh    r3, [r5, r3]
+       cmp     r3, r4
+       beq     .L1914
+       ldr     r3, .L1916+28
+       ldrh    r3, [r5, r3]
+       cmp     r3, r4
+       beq     .L1914
+       ldr     r3, [r5, #-932]
+       mov     r0, r4
+       ldrh    r2, [r3, r6]
+       ldr     r3, [r5, #-2064]
+       strh    r2, [r3, r6]    @ movhi
+       bl      update_vpc_list
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+.L1914:
+       add     r4, r4, #1
+       uxth    r4, r4
+.L1913:
+       ldrh    r3, [r7, r8]
+       cmp     r3, r4
+       bhi     .L1915
+       ldmfd   sp!, {r2, r3, r4, r5, r6, r7, r8, pc}
+.L1917:
+       .align  2
+.L1916:
+       .word   .LANCHOR0
+       .word   .LANCHOR3+15
+       .word   .LC114
+       .word   .LANCHOR2
+       .word   .LC115
+       .word   -2044
+       .word   -1948
+       .word   -1996
+       .fnend
+       .size   FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
+       .align  2
+       .global allocate_new_data_superblock
+       .type   allocate_new_data_superblock, %function
+allocate_new_data_superblock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       movw    r3, #65535
+       ldrh    r5, [r0, #0]
+       mov     r4, r0
+       cmp     r5, r3
+       beq     .L1919
+       ldr     r3, .L1929
+       mov     r0, r5
+       ldr     r2, [r3, #-2064]
+       mov     r3, r5, asl #1
+       ldrh    r3, [r2, r3]
+       cmp     r3, #0
+       beq     .L1920
+       bl      INSERT_DATA_LIST
+       b       .L1919
+.L1920:
+       bl      INSERT_FREE_LIST
+.L1919:
+       mov     r3, #0
+       strb    r3, [r4, #8]
+       ldr     r3, .L1929+4
+       cmp     r4, r3
+       beq     .L1921
+       ldr     r2, .L1929+8
+       movw    r3, #3864
+       ldrh    r3, [r2, r3]
+       cmp     r3, #1
+       beq     .L1921
+       ldrb    r2, [r2, #80]   @ zero_extendqisi2
+       cmp     r2, #0
+       beq     .L1922
+.L1921:
+       mov     r3, #1
+       strb    r3, [r4, #8]
+       b       .L1923
+.L1922:
+       ldr     r2, .L1929+12
+       cmp     r4, r2
+       bne     .L1923
+       cmp     r3, #3
+       ldr     r3, .L1929
+       beq     .L1924
+       ldr     r2, [r3, #-1708]
+       cmp     r2, #1
+       bne     .L1925
+.L1924:
+       mov     r2, #1
+       strb    r2, [r3, #-2036]
+.L1925:
+       ldr     r3, [r3, #-1884]
+       ldr     r2, .L1929
+       cmp     r3, #0
+       beq     .L1923
+       ldr     r3, [r2, #-1824]
+       cmp     r3, #29
+       movls   r3, #1
+       strlsb  r3, [r2, #-2036]
+.L1923:
+       ldr     r3, .L1929+16
+       ldr     r6, .L1929
+       ldrh    r0, [r6, r3]
+       movw    r3, #65535
+       cmp     r0, r3
+       beq     .L1926
+       cmp     r5, r0
+       bne     .L1927
+       ldr     r2, [r6, #-2064]
+       mov     r3, r0, asl #1
+       ldrh    r3, [r2, r3]
+       cmp     r3, #0
+       beq     .L1928
+.L1927:
+       bl      update_vpc_list
+.L1928:
+       ldr     r3, .L1929+16
+       mvn     r2, #0
+       strh    r2, [r6, r3]    @ movhi
+.L1926:
+       mov     r0, r4
+       bl      allocate_data_superblock
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+       mov     r0, #0
+       bl      FtlEctTblFlush
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L1930:
+       .align  2
+.L1929:
+       .word   .LANCHOR2
+       .word   .LANCHOR2-1996
+       .word   .LANCHOR0
+       .word   .LANCHOR2-2044
+       .word   -1024
+       .fnend
+       .size   allocate_new_data_superblock, .-allocate_new_data_superblock
+       .align  2
+       .type   rk_ftl_garbage_collect.part.19, %function
+rk_ftl_garbage_collect.part.19:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 24
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L2027
+       movw    ip, #65535
+       ldr     r2, .L2027+4
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r7, r0
+       ldrh    r0, [r3, r2]
+       .pad #36
+       sub     sp, sp, #36
+       cmp     r0, ip
+       str     r1, [sp, #20]
+       beq     .L1932
+       ldr     r1, .L2027+8
+       ldrh    r4, [r3, r1]
+       cmp     r4, ip
+       streqh  r0, [r3, r1]    @ movhi
+       mvneq   r1, #0
+       streqh  r1, [r3, r2]    @ movhi
+.L1932:
+       ldr     r2, [r3, #-1188]
+       cmp     r7, #1
+       ldr     r5, .L2027
+       add     r2, r2, #1
+       add     r2, r2, r7, asl #7
+       str     r2, [r3, #-1188]
+       bne     .L2007
+       ldr     r3, [r5, #-1884]
+       cmp     r3, #0
+       beq     .L2007
+       ldr     r3, [r5, #-1824]
+       cmp     r3, #29
+       bhi     .L2007
+       mov     r6, #400
+       movw    r4, #65535
+       ldrh    r3, [r5, r6]
+       add     r2, r2, r3
+       str     r2, [r5, #-1188]
+       bl      FtlGcReFreshBadBlk
+       ldr     r3, .L2027+12
+       ldrh    r3, [r5, r3]
+       cmp     r3, r4
+       bne     .L1933
+       ldr     r2, .L2027+8
+       ldrh    r4, [r5, r2]
+       cmp     r4, r3
+       movne   r4, r3
+       bne     .L1933
+       ldr     r3, [r5, #-1188]
+       cmp     r3, #1024
+       bls     .L1933
+       mov     r3, #0
+       str     r3, [r5, #-1188]
+       strh    r3, [r5, r6]    @ movhi
+       ldr     r3, [r5, #-1824]
+       cmp     r3, #0
+       moveq   r3, #6
+       beq     .L2022
+       cmp     r3, #5
+       bhi     .L1935
+       mov     r3, #18
+.L2022:
+       strh    r3, [r5, r6]    @ movhi
+.L1935:
+       mov     r0, #32
+       movw    r8, #65535
+       bl      List_get_gc_head_node
+       uxth    r2, r0
+       cmp     r2, r8
+       beq     .L1936
+       ldr     r5, .L2027
+       ldr     r6, .L2027+16
+       ldrh    r0, [r5, r6]
+       cmp     r0, #0
+       moveq   r3, #1
+       streqh  r3, [r5, r6]    @ movhi
+       beq     .L1936
+       ldr     r3, .L2027+20
+       movw    ip, #3914
+       movw    lr, #3844
+       ldr     r9, [r5, #-2064]
+       mov     r2, r2, asl #1
+       ldrh    ip, [r3, ip]
+       ldrh    r3, [r3, lr]
+       ldrh    r1, [r9, r2]
+       mul     r3, r3, ip
+       add     r3, r3, #1
+       cmp     r1, r3
+       bgt     .L1936
+       add     fp, r0, #1
+       mov     sl, #0
+       str     sl, [r5, #-1180]
+       uxth    fp, fp
+       strh    fp, [r5, r6]    @ movhi
+       str     r2, [sp, #12]
+       bl      List_get_gc_head_node
+       ldr     r2, [sp, #12]
+       uxth    r4, r0
+       cmp     r4, r8
+       beq     .L1936
+       ldrh    r2, [r9, r2]
+       mov     r8, r4, asl #1
+       ldr     r0, .L2027+24
+       mov     r1, fp
+       ldrh    r3, [r9, r8]
+       str     r2, [sp, #0]
+       mov     r2, r4
+       bl      printk
+       ldrh    r3, [r5, r6]
+       cmp     r3, #40
+       bls     .L1938
+       ldr     r3, [r5, #-2064]
+       ldrh    r3, [r3, r8]
+       cmp     r3, #32
+       strhih  sl, [r5, r6]    @ movhi
+.L1938:
+       mov     r1, #6
+       b       .L2023
+.L1936:
+       bl      GetSwlReplaceBlock
+       movw    r3, #65535
+       cmp     r0, r3
+       mov     r4, r0
+       bne     .L1933
+       mov     r1, #0
+.L2023:
+       ldr     r2, .L2027
+       mov     r3, #400
+       strh    r1, [r2, r3]    @ movhi
+       b       .L1933
+.L2007:
+       movw    r4, #65535
+.L1933:
+       ldr     r3, .L2027+12
+       ldr     r6, .L2027
+       ldrh    r2, [r6, r3]
+       movw    r3, #65535
+       cmp     r2, r3
+       bne     .L1939
+       ldr     r3, .L2027+28
+       ldrh    r3, [r6, r3]
+       cmp     r3, r2
+       bne     .L1939
+       ldr     r2, .L2027+8
+       ldrh    sl, [r6, r2]
+       cmp     sl, r3
+       bne     .L1939
+       ldr     r8, .L2027+32
+       ldr     r2, [r6, #-1188]
+       ldrh    r3, [r6, r8]
+       cmp     r3, #23
+       movhi   r3, #1024
+       movls   r3, #5120
+       cmp     r2, r3
+       bls     .L1939
+       mov     r2, #400
+       mov     r3, #0
+       str     r3, [r6, #-1188]
+       strh    r3, [r6, r2]    @ movhi
+       bl      GetSwlReplaceBlock
+       cmp     r0, sl
+       mov     r4, r0
+       bne     .L1941
+       ldr     r3, .L2027+36
+       ldrh    r1, [r6, r8]
+       ldrh    r2, [r6, r3]
+       cmp     r1, r2
+       movcs   r2, #80
+       strcsh  r2, [r6, r3]    @ movhi
+       bcs     .L1951
+       mov     r0, #64
+       bl      List_get_gc_head_node
+       uxth    r3, r0
+       cmp     r3, r4
+       beq     .L1951
+       ldr     r2, [r6, #-1004]
+       cmp     r2, #0
+       bne     .L1944
+       ldr     r2, .L2027+20
+       movw    r1, #3864
+       ldrh    r1, [r2, r1]
+       cmp     r1, #3
+       beq     .L1944
+       ldr     r1, [r6, #-1708]
+       cmp     r1, #0
+       bne     .L1944
+       ldr     r1, [r6, #-1884]
+       cmp     r1, #0
+       bne     .L1944
+       ldrb    r0, [r2, #80]   @ zero_extendqisi2
+       cmp     r0, #0
+       beq     .L1945
+.L1944:
+       ldr     r1, .L2027
+       mov     r3, r3, asl #1
+       movw    ip, #3844
+       movw    lr, #3864
+       ldr     r2, [r1, #-2064]
+       ldrh    r0, [r2, r3]
+       movw    r2, #3914
+       ldr     r3, .L2027+20
+       ldrh    r2, [r3, r2]
+       ldrh    ip, [r3, ip]
+       ldrh    r3, [r3, lr]
+       mul     ip, ip, r2
+       cmp     r3, #3
+       moveq   r3, r2, lsr #1
+       movne   r3, #0
+       add     r3, ip, r3
+       cmp     r0, r3
+       bgt     .L1947
+       mov     r0, #0
+       bl      List_get_gc_head_node
+       ldr     r2, .L2027+20
+       ldr     r3, .L2027
+       ldr     r2, [r2, #3972]
+       ldr     r1, [r3, #-1892]
+       add     r2, r2, r2, asl #1
+       cmp     r1, r2, lsr #2
+       ldr     r2, .L2027+36
+       movhi   r1, #128
+       movls   r1, #160
+       strh    r1, [r3, r2]    @ movhi
+       uxth    r4, r0
+       b       .L1949
+.L1947:
+       ldr     r3, .L2027+36
+       mov     r2, #128
+       strh    r2, [r1, r3]    @ movhi
+       b       .L1951
+.L1945:
+       ldr     r2, [r6, #-2064]
+       mov     r3, r3, asl #1
+       ldr     r6, .L2027
+       ldr     r5, .L2027+36
+       ldrh    r3, [r2, r3]
+       cmp     r3, #7
+       movhi   r3, #64
+       strhih  r3, [r6, r5]    @ movhi
+       bhi     .L1951
+       bl      List_get_gc_head_node
+       mov     r3, #128
+       strh    r3, [r6, r5]    @ movhi
+       uxth    r4, r0
+.L1949:
+       movw    r3, #65535
+       cmp     r4, r3
+       beq     .L1951
+.L1941:
+       ldr     r1, .L2027
+       mov     r0, r4, asl #1
+       ldr     r3, .L2027+32
+       ldr     ip, [r1, #-2084]
+       ldrh    r2, [r1, r3]
+       ldr     r3, [r1, #-2064]
+       ldrh    r3, [r3, r0]
+       ldrh    r0, [ip, r0]
+       str     r0, [sp, #0]
+       ldr     r0, .L2027+40
+       ldrh    r1, [r1, r0]
+       ldr     r0, .L2027+44
+       str     r1, [sp, #4]
+       mov     r1, r4
+       bl      printk
+.L1951:
+       bl      FtlGcReFreshBadBlk
+.L1939:
+       movw    r1, #65535
+       rsb     ip, r1, r4
+       rsbs    r2, ip, #0
+       ldr     r5, .L2027
+       adc     r2, r2, ip
+       cmp     r7, #0
+       movne   r7, #0
+       andeq   r7, r2, #1
+       cmp     r7, #0
+       beq     .L1952
+       ldr     r3, .L2027+32
+       ldrh    r2, [r5, r3]
+       cmp     r2, #24
+       movhi   r6, #1
+       bhi     .L1953
+       ldr     r1, .L2027+20
+       movw    r3, #3912
+       cmp     r2, #16
+       ldrh    r6, [r1, r3]
+       movhi   r6, r6, lsr #5
+       bhi     .L1953
+       cmp     r2, #12
+       movhi   r6, r6, lsr #4
+       bhi     .L1953
+       cmp     r2, #8
+       movhi   r6, r6, lsr #2
+.L1953:
+       ldr     r1, .L2027+40
+       ldr     r3, .L2027
+       ldrh    r0, [r5, r1]
+       cmp     r0, r2
+       mov     r0, r1
+       bcs     .L1957
+       ldr     r2, .L2027+28
+       movw    ip, #65535
+       ldrh    r2, [r3, r2]
+       cmp     r2, ip
+       bne     .L1958
+       ldr     ip, .L2027+8
+       ldrh    ip, [r3, ip]
+       cmp     ip, r2
+       bne     .L1958
+       mov     r2, #400
+       ldrh    r0, [r3, r2]
+       cmp     r0, #0
+       bne     .L1959
+       ldr     r2, .L2027+20
+       ldr     ip, [r3, #-1892]
+       ldr     r2, [r2, #3972]
+       add     r2, r2, r2, asl #1
+       cmp     ip, r2, lsr #2
+       movcs   r2, #18
+       bcs     .L2025
+.L1959:
+       ldr     r3, .L2027
+       ldr     r2, .L2027+48
+       ldr     r1, .L2027+40
+       ldrh    r2, [r3, r2]
+       add     r2, r2, r2, asl #1
+       mov     r2, r2, asr #2
+.L2025:
+       strh    r2, [r3, r1]    @ movhi
+       mov     r2, #0
+       ldr     r3, .L2027
+       str     r2, [r3, #-1180]
+       b       .L1962
+.L1958:
+       ldr     r3, .L2027
+       ldr     r2, .L2027+48
+       ldrh    r2, [r3, r2]
+       add     r2, r2, r2, asl #1
+       mov     r2, r2, asr #2
+       strh    r2, [r3, r0]    @ movhi
+.L1957:
+       ldr     r3, .L2027
+       movw    r4, #65535
+       ldr     r8, [sp, #20]
+       ldr     r2, [r3, #-1884]
+       cmp     r8, #2
+       movhi   r3, #0
+       movls   r3, #1
+       cmp     r2, #0
+       moveq   r3, #0
+       cmp     r3, #0
+       addne   r6, r6, #1
+       uxthne  r6, r6
+       b       .L1963
+.L1952:
+       ldr     r3, .L2027+28
+       ldrh    r3, [r5, r3]
+       cmp     r3, r1
+       bne     .L1964
+       ldr     r1, .L2027+8
+       ldrh    r1, [r5, r1]
+       cmp     r1, r3
+       movne   r2, #0
+       andeq   r2, r2, #1
+       cmp     r2, #0
+       beq     .L1964
+       ldr     r2, .L2027+12
+       ldrh    r4, [r5, r2]
+       cmp     r4, r3
+       movne   r4, r3
+       bne     .L1964
+       ldr     r3, .L2027+32
+       mov     r6, #400
+       str     r7, [r5, #-1180]
+       ldrh    r7, [r5, r3]
+       add     r3, r3, #856
+       ldrh    r2, [r5, r3]
+       cmp     r2, r7
+       bcs     .L1965
+       ldrh    r2, [r5, r6]
+       cmp     r2, #0
+       bne     .L1966
+       ldr     r2, .L2027+20
+       ldr     r1, [r5, #-1892]
+       ldr     r2, [r2, #3972]
+       add     r2, r2, r2, asl #1
+       cmp     r1, r2, lsr #2
+       movcs   r2, #18
+       strcsh  r2, [r5, r3]    @ movhi
+       bcs     .L1968
+.L1966:
+       ldr     r3, .L2027
+       ldr     r2, .L2027+48
+       ldr     r1, .L2027+40
+       ldrh    r2, [r3, r2]
+       add     r2, r2, r2, asl #1
+       mov     r2, r2, asr #2
+       strh    r2, [r3, r1]    @ movhi
+.L1968:
+       bl      FtlReadRefresh
+       mov     r3, #400
+       ldr     r2, .L2027
+       b       .L2026
+.L1965:
+       ldrh    r0, [r5, r6]
+       cmp     r0, #0
+       bne     .L1964
+       ldr     r2, .L2027+48
+       ldrh    r4, [r5, r2]
+       add     r2, r4, r4, asl #1
+       mov     r2, r2, asr #2
+       strh    r2, [r5, r3]    @ movhi
+       bl      List_get_gc_head_node
+       ldr     r3, [r5, #-2064]
+       ldr     r1, .L2027+20
+       movw    r2, #3914
+       ldrh    r2, [r1, r2]
+       uxth    r0, r0
+       mov     r0, r0, asl #1
+       ldrh    r3, [r3, r0]
+       movw    r0, #3844
+       ldrh    r1, [r1, r0]
+       mul     r2, r1, r2
+       add     r2, r2, r2, lsr #31
+       cmp     r3, r2, asr #1
+       ble     .L1969
+       sub     r4, r4, #1
+       cmp     r7, r4
+       blt     .L1969
+       bl      FtlReadRefresh
+       ldrh    r0, [r5, r6]
+       b       .L1962
+.L1969:
+       cmp     r3, #0
+       movwne  r4, #65535
+       bne     .L1964
+       movw    r0, #65535
+       bl      decrement_vpc_count
+       ldr     r3, .L2027+32
+       ldr     r2, .L2027
+       ldrh    r0, [r2, r3]
+       add     r0, r0, #1
+       b       .L1962
+.L1964:
+       ldr     r3, .L2027
+       ldr     r6, [r3, #-1884]
+       cmp     r6, #0
+       movne   r6, #2
+       moveq   r6, #1
+.L1963:
+       ldr     r3, .L2027
+       movw    r0, #65535
+       ldr     r2, .L2027+12
+       ldrh    r1, [r3, r2]
+       cmp     r1, r0
+       bne     .L1970
+       cmp     r4, r1
+       strneh  r4, [r3, r2]    @ movhi
+       bne     .L1972
+       ldr     r1, .L2027+8
+       ldrh    r0, [r3, r1]
+       cmp     r0, r4
+       strneh  r0, [r3, r2]    @ movhi
+       mvnne   r2, #0
+       strneh  r2, [r3, r1]    @ movhi
+.L1972:
+       mov     r2, #0
+       strb    r2, [r3, #-1748]
+       ldr     r3, .L2027+20
+       ldr     r5, .L2027
+       ldr     r7, .L2027+12
+       ldrb    r3, [r3, #80]   @ zero_extendqisi2
+       cmp     r3, r2
+       beq     .L1973
+       ldrh    r0, [r5, r7]
+       bl      ftl_get_blk_mode
+       strb    r0, [r5, #-1748]
+.L1973:
+       ldr     r5, .L2027
+       ldrh    r0, [r5, r7]
+       bl      IsBlkInGcList
+       ldr     r7, .L2027+12
+       mov     r3, r5
+       cmp     r0, #0
+       ldrne   r2, .L2027+12
+       mvnne   r1, #0
+       strneh  r1, [r5, r2]    @ movhi
+       ldrh    r2, [r3, r7]
+       movw    r3, #65535
+       ldr     r5, .L2027
+       cmp     r2, r3
+       beq     .L1970
+       ldr     r0, .L2027+52
+       bl      make_superblock
+       ldr     r1, .L2027+56
+       movw    r2, #402
+       mov     r3, #0
+       strh    r3, [r5, r2]    @ movhi
+       strh    r3, [r5, r1]    @ movhi
+       strb    r3, [r5, #-1750]
+       ldrh    r3, [r5, r7]
+       ldr     r2, [r5, #-2064]
+       mov     r3, r3, asl #1
+       ldrh    r2, [r2, r3]
+       mov     r3, #404
+       strh    r2, [r5, r3]    @ movhi
+.L1970:
+       ldr     r3, .L2027
+       ldr     r0, .L2027+12
+       ldr     r2, .L2027+60
+       ldrh    r1, [r3, r0]
+       ldrh    r2, [r3, r2]
+       cmp     r2, r1
+       mov     r2, r3
+       beq     .L1975
+       ldr     ip, .L2027+64
+       ldrh    r3, [r3, ip]
+       cmp     r3, r1
+       strne   r4, [sp, #20]
+       bne     .L2021
+.L1976:
+.L1975:
+       mvn     r3, #0
+       strh    r3, [r2, r0]    @ movhi
+       mov     r3, #400
+.L2026:
+       ldrh    r0, [r2, r3]
+       b       .L1962
+.L2021:
+       ldr     r4, .L2027
+       movw    r0, #65535
+       ldr     r9, .L2027+12
+       ldrh    r3, [r4, r9]
+       cmp     r3, r0
+       bne     .L1978
+       mov     r3, #0
+       str     r3, [r4, #-1180]
+.L2020:
+       ldr     r8, .L2027+16
+       ldrh    r7, [r4, r8]
+       mov     r0, r7
+       bl      List_get_gc_head_node
+       movw    r1, #65535
+       uxth    r5, r0
+       strh    r5, [r4, r9]    @ movhi
+       cmp     r5, r1
+       ldreq   r3, .L2027
+       moveq   r2, #0
+       moveq   r0, #8
+       streqh  r2, [r3, r8]    @ movhi
+       beq     .L1962
+.L1980:
+       mov     r0, r5
+       add     r7, r7, #1
+       bl      IsBlkInGcList
+       cmp     r0, #0
+       strneh  r7, [r4, r8]    @ movhi
+       bne     .L2020
+       ldr     ip, .L2027+20
+       uxth    r7, r7
+       movw    r3, #3912
+       strh    r7, [r4, r8]    @ movhi
+       movw    r8, #3844
+       ldr     r1, [r4, #-2064]
+       ldrh    r3, [ip, r3]
+       mov     r2, r5, asl #1
+       ldrh    ip, [ip, r8]
+       ldrh    r0, [r1, r2]
+       mul     r3, ip, r3
+       add     ip, r3, r3, lsr #31
+       cmp     r0, ip, asr #1
+       bgt     .L1983
+       cmp     r7, #48
+       bls     .L1984
+       cmp     r0, #8
+       bls     .L1984
+       ldr     r0, .L2027+68
+       ldrh    r0, [r4, r0]
+       cmp     r0, #35
+       bhi     .L1984
+.L1983:
+       ldr     r0, .L2027+16
+       mov     ip, #0
+       strh    ip, [r4, r0]    @ movhi
+.L1984:
+       ldrh    r2, [r1, r2]
+       movw    r0, #65535
+       ldr     r8, [sp, #20]
+       ldr     sl, .L2027
+       cmp     r2, r3
+       cmpge   r8, r0
+       movne   r3, #0
+       moveq   r3, #1
+       bne     .L1985
+       ldr     r3, .L2027+12
+       mvn     r2, #0
+       strh    r2, [sl, r3]    @ movhi
+       add     r3, r3, #572
+       mov     r2, #0
+       strh    r2, [sl, r3]    @ movhi
+       mov     r3, #400
+       ldrh    r0, [sl, r3]
+       b       .L1962
+.L1985:
+       cmp     r2, #0
+       bne     .L1986
+       movw    r0, #65535
+       bl      decrement_vpc_count
+       ldr     r3, .L2027+16
+       ldrh    r2, [r4, r3]
+       add     r2, r2, #1
+       strh    r2, [r4, r3]    @ movhi
+       b       .L2020
+.L1986:
+       strb    r3, [sl, #-1748]
+       ldr     r3, .L2027+20
+       ldrb    r3, [r3, #80]   @ zero_extendqisi2
+       cmp     r3, #0
+       beq     .L1987
+       mov     r0, r5
+       bl      ftl_get_blk_mode
+       strb    r0, [sl, #-1748]
+.L1987:
+       ldr     r4, .L2027
+       ldr     r0, .L2027+52
+       bl      make_superblock
+       movw    r1, #402
+       mov     r3, #0
+       strh    r3, [r4, r1]    @ movhi
+       ldr     r1, .L2027+12
+       ldr     r0, [r4, #-2064]
+       ldrh    r1, [r4, r1]
+       mov     r1, r1, asl #1
+       ldrh    r0, [r0, r1]
+       mov     r1, #404
+       strb    r3, [r4, #-1750]
+       strh    r0, [r4, r1]    @ movhi
+       ldr     r1, .L2027+56
+       strh    r3, [r4, r1]    @ movhi
+.L1978:
+       bl      FtlReadRefresh
+       ldr     r3, .L2027
+       mov     r2, #1
+       movw    r1, #3912
+       str     r2, [r3, #-1000]
+       ldr     r2, .L2027+20
+       ldrh    r9, [r2, r1]
+       ldrb    r1, [r2, #80]   @ zero_extendqisi2
+       cmp     r1, #0
+       beq     .L1988
+       ldrb    r1, [r3, #-1748]        @ zero_extendqisi2
+       cmp     r1, #1
+       movweq  r1, #3914
+       ldreqh  r9, [r2, r1]
+.L1988:
+       ldr     r2, .L2027+56
+       mov     sl, #0
+       ldr     r4, .L2027
+       mov     fp, r9
+       ldrh    r3, [r3, r2]
+       add     r2, r3, r6
+       cmp     r2, r9
+       rsbgt   r6, r3, r9
+       uxthgt  r6, r6
+       b       .L1990
+.L1992:
+       ldrh    r1, [r2, #2]!
+       movw    r8, #65535
+       add     r3, r3, #1
+       cmp     r1, r8
+       uxth    r3, r3
+       orrne   r1, ip, r1, asl #10
+       mlane   r8, r0, r7, lr
+       addne   r7, r7, #1
+       uxthne  r7, r7
+       strne   r1, [r8, #4]
+.L1998:
+       cmp     r3, r5
+       bne     .L1992
+       ldr     r0, [r4, #-1160]
+       mov     r1, r7
+       ldrb    r2, [r4, #-1748]        @ zero_extendqisi2
+       mov     r5, #0
+       bl      FlashReadPages
+       mov     r9, r5
+       mov     r8, r6
+       b       .L1993
+.L1996:
+       ldr     r3, [r4, #-1160]
+       add     r2, r3, r5
+       ldr     r3, [r3, r5]
+       ldr     r6, [r2, #12]
+       cmn     r3, #1
+       beq     .L1994
+       ldrh    r3, [r6, #0]
+       movw    r0, #61589
+       cmp     r3, r0
+       bne     .L1994
+       add     r1, sp, #28
+       mov     r2, #0
+       ldr     r0, [r6, #8]
+       bl      log2phys
+       ldr     r1, [r4, #-1160]
+       ldr     r2, [sp, #28]
+       add     r1, r1, r5
+       bic     r2, r2, #-2147483648
+       ldr     r3, [r1, #4]
+       cmp     r2, r3
+       bne     .L1994
+       movw    r3, #402
+       ldr     r0, [r4, #-1176]
+       ldrh    r2, [r4, r3]
+       ldr     r1, [r1, #16]
+       add     r2, r2, #1
+       strh    r2, [r4, r3]    @ movhi
+       ldr     r2, [r4, #-980]
+       mov     r3, #36
+       mla     r2, r3, r0, r2
+       str     r1, [r2, #16]
+       str     r2, [sp, #12]
+       str     r3, [sp, #16]
+       bl      Ftl_get_new_temp_ppa
+       ldr     r2, [sp, #12]
+       ldr     r1, [r4, #-1176]
+       str     r0, [r2, #4]
+       ldr     r3, [sp, #16]
+       ldr     r2, [r4, #-980]
+       mla     r3, r3, r1, r2
+       ldr     r2, [r4, #-1160]
+       add     r2, r2, r5
+       ldr     r1, [r2, #8]
+       str     r1, [r3, #8]
+       mov     r1, #1
+       ldr     r2, [r2, #12]
+       str     r2, [r3, #12]
+       ldr     r3, [sp, #28]
+       str     r3, [r6, #12]
+       ldr     r3, .L2027+28
+       ldrh    r3, [r4, r3]
+       strh    r3, [r6, #2]    @ movhi
+       ldr     r3, [r4, #-1844]
+       ldr     r0, [r4, #-1160]
+       str     r3, [r6, #4]
+       add     r0, r0, r5
+       ldr     r3, [r4, #-1176]
+       add     r3, r3, #1
+       str     r3, [r4, #-1176]
+       bl      FtlGcBufAlloc
+       ldr     r3, .L2027+20
+       ldrb    r3, [r3, #80]   @ zero_extendqisi2
+       cmp     r3, #0
+       bne     .L1995
+       ldrb    r3, [r4, #-1941]        @ zero_extendqisi2
+       ldr     r2, [r4, #-1176]
+       cmp     r2, r3
+       beq     .L1995
+       ldr     r3, .L2027+72
+       ldrh    r3, [r4, r3]
+       cmp     r3, #0
+       bne     .L1994
+.L1995:
+       bl      Ftl_gc_temp_data_write_back
+       cmp     r0, #0
+       ldrne   r3, .L2027
+       movne   r2, #0
+       strne   r2, [r3, #-1000]
+       movne   r2, #400
+       bne     .L2026
+.L1994:
+       add     r9, r9, #1
+       add     r5, r5, #36
+       uxth    r9, r9
+.L1993:
+       cmp     r9, r7
+       bne     .L1996
+       add     sl, sl, #1
+       mov     r6, r8
+.L1990:
+       uxth    r3, sl
+       ldr     r2, .L2027+56
+       cmp     r3, r6
+       ldr     r3, .L2027
+       bcs     .L1997
+       ldr     r1, .L2027+20
+       movw    r3, #3844
+       ldrh    ip, [r4, r2]
+       mov     r7, #0
+       ldr     lr, [r4, #-1160]
+       mov     r0, #36
+       ldrh    r5, [r1, r3]
+       add     ip, ip, sl
+       ldr     r2, .L2027+76
+       mov     r3, r7
+       b       .L1998
+.L1997:
+       ldrh    r1, [r3, r2]
+       mov     r9, fp
+       add     r6, r6, r1
+       uxth    r6, r6
+       strh    r6, [r3, r2]    @ movhi
+       cmp     r6, fp
+       bcs     .L1999
+       movw    r2, #402
+       mov     r1, #404
+       ldrh    r2, [r3, r2]
+       ldrh    r3, [r3, r1]
+       cmp     r2, r3
+       bne     .L2000
+.L1999:
+       ldr     r5, .L2027
+       ldr     r3, [r5, #-1176]
+       cmp     r3, #0
+       beq     .L2001
+       bl      Ftl_gc_temp_data_write_back
+       cmp     r0, #0
+       movne   r3, #0
+       strne   r3, [r5, #-1000]
+       movne   r3, #400
+       ldrneh  r0, [r5, r3]
+       bne     .L1962
+.L2001:
+       movw    r2, #402
+       ldr     r3, .L2027
+       ldrh    ip, [r5, r2]
+       cmp     ip, #0
+       bne     .L2002
+       ldr     r2, .L2027+12
+       ldr     r0, [r3, #-2064]
+       ldrh    r1, [r3, r2]
+       mov     r1, r1, asl #1
+       ldrh    r4, [r0, r1]
+       cmp     r4, #0
+       beq     .L2002
+       strh    ip, [r0, r1]    @ movhi
+       ldrh    r0, [r3, r2]
+       bl      update_vpc_list
+       bl      FtlCacheWriteBack
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+.L2002:
+       ldr     r3, .L2027+12
+       mvn     r1, #0
+       ldr     r2, .L2027
+       strh    r1, [r2, r3]    @ movhi
+.L2000:
+       ldr     r3, .L2027
+       ldr     r2, .L2027+32
+       ldrh    r2, [r3, r2]
+       cmp     r2, #2
+       ldrls   r2, .L2027+20
+       movwls  r3, #3912
+       ldrlsh  r6, [r2, r3]
+       bls     .L2021
+.L2003:
+       mov     r1, #0
+       str     r1, [r3, #-1000]
+       mov     r1, #400
+       ldrh    r0, [r3, r1]
+       cmp     r0, #0
+       addeq   r0, r2, #1
+.L1962:
+       add     sp, sp, #36
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L2028:
+       .align  2
+.L2027:
+       .word   .LANCHOR2
+       .word   -1136
+       .word   -1138
+       .word   -1756
+       .word   -1184
+       .word   .LANCHOR0
+       .word   .LC116
+       .word   -1948
+       .word   -2048
+       .word   -1190
+       .word   -1192
+       .word   .LC117
+       .word   -1772
+       .word   .LANCHOR2-1756
+       .word   -1754
+       .word   -2044
+       .word   -1996
+       .word   -1152
+       .word   -1944
+       .word   .LANCHOR2-1742
+       .fnend
+       .size   rk_ftl_garbage_collect.part.19, .-rk_ftl_garbage_collect.part.19
+       .align  2
+       .global rk_ftl_garbage_collect
+       .type   rk_ftl_garbage_collect, %function
+rk_ftl_garbage_collect:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r4, r0
+       ldr     r3, .L2035
+       mov     r5, r1
+       ldr     r0, [r3, #-1000]
+       cmp     r0, #0
+       movne   r0, #0
+       ldmnefd sp!, {r3, r4, r5, pc}
+       ldr     r2, .L2035+4
+       ldrh    r2, [r3, r2]
+       cmp     r2, #47
+       ldmlsfd sp!, {r3, r4, r5, pc}
+       ldr     r1, .L2035+8
+       movw    r2, #3000
+       ldrh    r1, [r1, r2]
+       movw    r2, #65535
+       cmp     r1, r2
+       beq     .L2031
+       ldr     r1, .L2035+12
+       ldrh    r3, [r3, r1]
+       cmp     r3, r2
+       beq     .L2031
+       mov     r0, #1
+       bl      FtlGcFreeTempBlock
+       cmp     r0, #0
+       bne     .L2034
+.L2031:
+       mov     r0, r4
+       mov     r1, r5
+       ldmfd   sp!, {r3, r4, r5, lr}
+       b       rk_ftl_garbage_collect.part.19
+.L2034:
+       mov     r0, #1
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L2036:
+       .align  2
+.L2035:
+       .word   .LANCHOR2
+       .word   -2056
+       .word   .LANCHOR1
+       .word   -1948
+       .fnend
+       .size   rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
+       .align  2
+       .global FtlCacheWriteBack
+       .type   FtlCacheWriteBack, %function
+FtlCacheWriteBack:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L2059
+       stmfd   sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr}
+       .save {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr}
+       ldr     r4, [r3, #408]
+       ldr     r3, .L2059+4
+       ldr     r1, [r3, #3964]
+       cmp     r1, #0
+       beq     .L2038
+       ldrb    r8, [r3, #80]   @ zero_extendqisi2
+       cmp     r8, #0
+       beq     .L2039
+       ldrb    r8, [r4, #8]    @ zero_extendqisi2
+       sub     lr, r8, #1
+       rsbs    r8, lr, #0
+       adc     r8, r8, lr
+.L2039:
+       ldr     r0, [r3, #3968]
+       mov     r2, r8
+       ldrb    r3, [r4, #9]    @ zero_extendqisi2
+       mov     r5, #0
+       bl      FlashProgPages
+       mov     r7, r5
+       ldr     r6, .L2059+4
+       ldr     r9, .L2059
+       b       .L2040
+.L2045:
+       ldr     r2, [r6, #3968]
+       add     r3, r2, r5
+       ldr     r2, [r2, r5]
+       cmn     r2, #1
+       beq     .L2058
+       ldr     r2, [r3, #4]
+       cmp     r8, #0
+       ldr     r0, [r3, #16]
+       add     r1, sp, #4
+       str     r2, [sp, #4]
+       orrne   r2, r2, #-2147483648
+       strne   r2, [sp, #4]
+       mov     r2, #1
+       bl      log2phys
+       ldr     r3, [r6, #3968]
+       add     r3, r3, r5
+       ldr     r3, [r3, #12]
+       ldr     r0, [r3, #12]
+       cmn     r0, #1
+       beq     .L2043
+       ubfx    r0, r0, #10, #16
+       bl      P2V_block_in_plane
+       ldr     r2, [r9, #-2064]
+       mov     r3, r0, asl #1
+       mov     sl, r0
+       ldrh    r2, [r2, r3]
+       cmp     r2, #0
+       bne     .L2044
+       ldr     r0, .L2059+8
+       mov     r1, sl
+       bl      printk
+.L2044:
+       mov     r0, sl
+       bl      decrement_vpc_count
+.L2043:
+       add     r7, r7, #1
+       add     r5, r5, #36
+.L2040:
+       ldr     r3, [r6, #3964]
+       cmp     r7, r3
+       bcc     .L2045
+       b       .L2046
+.L2054:
+       ldr     r3, [r6, #3968]
+       mvn     r2, #0
+       movw    sl, #3912
+       str     r2, [r3, r5]
+       b       .L2047
+.L2050:
+       ldr     r0, [r3, #4]
+       ubfx    r0, r0, #10, #16
+       bl      P2V_block_in_plane
+       ldrh    r3, [r4, #0]
+       cmp     r3, r0
+       bne     .L2048
+       ldr     r2, [r7, #-2064]
+       mov     r3, r3, asl #1
+       ldrh    r1, [r4, #4]
+       ldrh    r0, [r2, r3]
+       rsb     r1, r1, r0
+       strh    r1, [r2, r3]    @ movhi
+       ldrh    r3, [r6, sl]
+       strh    r3, [r4, #2]    @ movhi
+       mov     r3, #0
+       strb    r3, [r4, #6]
+       strh    r3, [r4, #4]    @ movhi
+.L2048:
+       ldrh    r3, [r4, #4]
+       cmp     r3, #0
+       bne     .L2049
+       mov     r0, r4
+       bl      allocate_new_data_superblock
+.L2049:
+       ldr     r3, [r7, #-1608]
+       add     r3, r3, #1
+       str     r3, [r7, #-1608]
+       ldr     r3, [r6, #3968]
+       add     r3, r3, r5
+       ldr     r0, [r3, #4]
+       ubfx    r0, r0, #10, #16
+       bl      FtlGcMarkBadPhyBlk
+       mov     r0, r4
+       bl      get_new_active_ppa
+       mov     r1, #1
+       mov     r2, r8
+       mov     r3, r0
+       str     r0, [sp, #4]
+       ldr     r0, [r6, #3968]
+       add     r0, r0, r5
+       str     r3, [r0, #4]
+       ldrb    r3, [r4, #9]    @ zero_extendqisi2
+       bl      FlashProgPages
+.L2047:
+       ldr     r2, [r6, #3968]
+       add     r3, r2, r5
+       ldr     r2, [r2, r5]
+       cmn     r2, #1
+       beq     .L2050
+       ldr     r2, [r3, #4]
+       cmp     r8, #0
+       ldr     r0, [r3, #16]
+       add     r1, sp, #4
+       str     r2, [sp, #4]
+       orrne   r2, r2, #-2147483648
+       strne   r2, [sp, #4]
+       mov     r2, #1
+       bl      log2phys
+       ldr     r3, [r6, #3968]
+       add     r3, r3, r5
+       ldr     r3, [r3, #12]
+       ldr     r0, [r3, #12]
+       cmn     r0, #1
+       beq     .L2052
+       ubfx    r0, r0, #10, #16
+       bl      P2V_block_in_plane
+       ldr     r2, [r7, #-2064]
+       mov     r3, r0, asl #1
+       mov     sl, r0
+       ldrh    r2, [r2, r3]
+       cmp     r2, #0
+       bne     .L2053
+       ldr     r0, .L2059+8
+       mov     r1, sl
+       bl      printk
+.L2053:
+       mov     r0, sl
+       bl      decrement_vpc_count
+.L2052:
+       add     r9, r9, #1
+       add     r5, r5, #36
+       b       .L2041
+.L2058:
+       ldr     r6, .L2059+4
+       mov     r5, #0
+       ldr     r7, .L2059
+       mov     r9, r5
+.L2041:
+       ldr     r3, [r6, #3964]
+       cmp     r9, r3
+       bcc     .L2054
+       movw    r4, #16386
+       ldr     r6, .L2059
+       ldr     r5, .L2059+12
+       b       .L2055
+.L2056:
+       mov     r0, #1
+       mov     r1, r0
+       bl      rk_ftl_garbage_collect
+       subs    r4, r4, #1
+       beq     .L2046
+.L2055:
+       ldrh    r3, [r6, r5]
+       cmp     r3, #0
+       bne     .L2056
+.L2046:
+       ldr     r3, .L2059+4
+       mov     r2, #0
+       str     r2, [r3, #3964]
+.L2038:
+       mov     r0, #0
+       ldmfd   sp!, {r2, r3, r4, r5, r6, r7, r8, r9, sl, pc}
+.L2060:
+       .align  2
+.L2059:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .word   .LC118
+       .word   -1134
+       .fnend
+       .size   FtlCacheWriteBack, .-FtlCacheWriteBack
+       .align  2
+       .global rk_ftl_cache_write_back
+       .type   rk_ftl_cache_write_back, %function
+rk_ftl_cache_write_back:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       b       FtlCacheWriteBack
+       .fnend
+       .size   rk_ftl_cache_write_back, .-rk_ftl_cache_write_back
+       .align  2
+       .global FtlGcFreeTempBlock
+       .type   FtlGcFreeTempBlock, %function
+FtlGcFreeTempBlock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, sl, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, r8, sl, lr}
+       movw    r3, #3912
+       ldr     r2, .L2083
+       ldrh    r1, [r2, r3]
+       ldr     r2, .L2083+4
+       ldr     r3, .L2083+8
+       ldrh    r4, [r3, r2]
+       movw    r2, #65535
+       cmp     r4, r2
+       beq     .L2063
+       cmp     r0, #0
+       beq     .L2064
+       ldr     ip, .L2083+12
+       movw    r0, #3000
+       ldrh    lr, [ip, r0]
+       cmp     lr, r2
+       movne   r1, #2
+       bne     .L2064
+       mov     r2, #0
+       strh    r2, [ip, r0]    @ movhi
+       sub     r2, r2, #2048
+       ldrh    r3, [r3, r2]
+       cmp     r3, #17
+       movhi   r1, #2
+.L2064:
+       ldr     r0, .L2083+16
+       bl      FtlGcScanTempBlk
+       cmn     r0, #1
+       str     r0, [sp, #4]
+       beq     .L2065
+       ldr     r3, .L2083+8
+       mov     r4, r4, asl #1
+       ldr     r3, [r3, #-2084]
+       ldrh    r2, [r3, r4]
+       cmp     r2, #4
+       bls     .L2066
+       sub     r2, r2, #5
+       mov     r0, #1
+       strh    r2, [r3, r4]    @ movhi
+       bl      FtlEctTblFlush
+.L2066:
+       ldr     r3, .L2083+8
+       ldr     r2, [r3, #-1016]
+       cmp     r2, #0
+       bne     .L2067
+       ldr     r2, [r3, #-1608]
+       ldr     r0, [sp, #4]
+       add     r2, r2, #1
+       str     r2, [r3, #-1608]
+       ubfx    r0, r0, #10, #16
+       bl      FtlBbmMapBadBlock
+       bl      FtlBbmTblFlush
+.L2067:
+       ldr     r3, .L2083+8
+       mov     r2, #0
+       str     r2, [r3, #-1016]
+       b       .L2078
+.L2065:
+       ldr     r2, .L2083+12
+       movw    r3, #3000
+       ldrh    r2, [r2, r3]
+       movw    r3, #65535
+       cmp     r2, r3
+       bne     .L2078
+.L2063:
+       ldr     r6, .L2083+8
+       movw    r3, #65535
+       ldr     r5, .L2083+4
+       mov     r4, #0
+       str     r4, [r6, #-1016]
+       ldrh    r2, [r6, r5]
+       cmp     r2, r3
+       moveq   r0, r4
+       beq     .L2068
+       bl      FtlCacheWriteBack
+       ldr     ip, .L2083
+       movw    r0, #3912
+       ldrb    r1, [r6, #-1941]        @ zero_extendqisi2
+       ldrh    r3, [r6, r5]
+       ldrh    r0, [ip, r0]
+       ldr     r2, [r6, #-2064]
+       ldr     sl, .L2083+20
+       mov     r3, r3, asl #1
+       mul     r1, r0, r1
+       strh    r1, [r2, r3]    @ movhi
+       ldr     r3, [r6, #-1860]
+       ldrh    r2, [r6, sl]
+       add     r3, r2, r3
+       str     r3, [r6, #-1860]
+       b       .L2069
+.L2072:
+       mov     r7, #12
+       ldr     r8, [r6, #-1144]
+       mul     r7, r7, r4
+       add     r1, sp, #4
+       mov     r2, #0
+       add     r5, r8, r7
+       ldr     r0, [r5, #8]
+       bl      log2phys
+       ldr     r0, [sp, #4]
+       ldr     r3, [r8, r7]
+       cmp     r0, r3
+       bne     .L2070
+       ubfx    r0, r0, #10, #16
+       bl      P2V_block_in_plane
+       add     r1, r5, #4
+       mov     r2, #1
+       mov     r7, r0
+       ldr     r0, [r5, #8]
+       bl      log2phys
+       mov     r0, r7
+       b       .L2081
+.L2070:
+       ldr     r3, [r5, #4]
+       cmp     r0, r3
+       beq     .L2071
+       ldr     r3, .L2083+4
+       ldrh    r0, [r6, r3]
+.L2081:
+       bl      decrement_vpc_count
+.L2071:
+       add     r4, r4, #1
+       uxth    r4, r4
+.L2069:
+       ldrh    r3, [r6, sl]
+       ldr     r5, .L2083+8
+       cmp     r3, r4
+       bhi     .L2072
+       movw    r0, #65535
+       bl      decrement_vpc_count
+       ldr     r3, .L2083+4
+       ldr     r1, [r5, #-2064]
+       ldrh    r0, [r5, r3]
+       mov     r5, r3
+       mov     r2, r0, asl #1
+       ldrh    r2, [r1, r2]
+       cmp     r2, #0
+       beq     .L2073
+       bl      INSERT_DATA_LIST
+       b       .L2074
+.L2073:
+       bl      INSERT_FREE_LIST
+.L2074:
+       ldr     r4, .L2083+8
+       mvn     r3, #0
+       ldr     r2, .L2083+20
+       strh    r3, [r4, r5]    @ movhi
+       mov     r3, #0
+       strh    r3, [r4, r2]    @ movhi
+       ldr     r2, .L2083+24
+       strh    r3, [r4, r2]    @ movhi
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+       ldr     r3, [r4, #-1884]
+       mov     r1, r4
+       ldr     r2, .L2083+28
+       cmp     r3, #0
+       beq     .L2075
+       ldr     r3, [r4, #-1824]
+       cmp     r3, #29
+       bhi     .L2075
+       ldrh    r3, [r4, r2]
+       sub     r2, r2, #276
+       mvn     r1, #0
+       ldrh    r2, [r4, r2]
+       cmp     r2, r3
+       movcc   r3, r3, asl #1
+       ldrcc   r2, .L2083+32
+       strcch  r3, [r4, r2]    @ movhi
+       ldr     r3, .L2083+36
+       ldr     r2, .L2083+8
+       b       .L2082
+.L2075:
+       ldr     r0, .L2083+40
+       ldrh    r2, [r1, r2]
+       ldr     r3, .L2083+8
+       ldrh    r0, [r1, r0]
+       add     r2, r2, r2, asl #1
+       cmp     r0, r2, lsr #2
+       ble     .L2080
+       ldr     r2, .L2083+36
+       mvn     r1, #0
+       strh    r1, [r3, r2]    @ movhi
+       add     r2, r2, #564
+       mov     r1, #20
+.L2082:
+       strh    r1, [r3, r2]    @ movhi
+       b       .L2080
+.L2078:
+       mov     r0, #1
+       b       .L2068
+.L2080:
+       mov     r0, #0
+.L2068:
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, r8, sl, pc}
+.L2084:
+       .align  2
+.L2083:
+       .word   .LANCHOR0
+       .word   -1948
+       .word   .LANCHOR2
+       .word   .LANCHOR1
+       .word   .LANCHOR2-1948
+       .word   -1140
+       .word   -1152
+       .word   -1772
+       .word   -1192
+       .word   -1756
+       .word   -2048
+       .fnend
+       .size   FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
+       .align  2
+       .global Ftl_gc_temp_data_write_back
+       .type   Ftl_gc_temp_data_write_back, %function
+Ftl_gc_temp_data_write_back:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       ldr     r3, .L2094
+       ldrb    r3, [r3, #80]   @ zero_extendqisi2
+       cmp     r3, #0
+       ldr     r3, .L2094+4
+       beq     .L2086
+       ldr     r2, [r3, #-1176]
+       tst     r2, #1
+       beq     .L2086
+       ldr     r2, .L2094+8
+       ldrh    r2, [r3, r2]
+       cmp     r2, #0
+       bne     .L2091
+.L2086:
+       mov     r2, #0
+       ldr     r0, [r3, #-980]
+       ldr     r1, [r3, #-1176]
+       mov     r3, r2
+       bl      FlashProgPages
+       mov     r4, #0
+       ldr     r5, .L2094+4
+       mov     r6, #36
+       b       .L2088
+.L2090:
+       mul     r3, r6, r4
+       ldr     r1, [r5, #-980]
+       add     r2, r1, r3
+       ldr     r1, [r1, r3]
+       cmn     r1, #1
+       bne     .L2089
+       ldr     r2, .L2094+12
+       mov     lr, #0
+       ldr     ip, [r7, #-2064]
+       ldrh    r0, [r7, r2]
+       mov     r0, r0, asl #1
+       strh    lr, [ip, r0]    @ movhi
+       strh    r1, [r7, r2]    @ movhi
+       ldr     r2, [r7, #-1608]
+       add     r2, r2, #1
+       str     r2, [r7, #-1608]
+       ldr     r2, [r7, #-980]
+       add     r3, r2, r3
+       ldr     r0, [r3, #4]
+       ubfx    r0, r0, #10, #16
+       bl      FtlBbmMapBadBlock
+       bl      FtlBbmTblFlush
+       bl      FtlGcPageVarInit
+       b       .L2093
+.L2089:
+       ldr     r3, [r2, #12]
+       add     r4, r4, #1
+       ldr     r1, [r2, #4]
+       uxth    r4, r4
+       ldr     r0, [r3, #12]
+       ldr     r2, [r3, #8]
+       bl      FtlGcUpdatePage
+.L2088:
+       ldr     r1, [r5, #-1176]
+       ldr     r7, .L2094+4
+       cmp     r4, r1
+       bcc     .L2090
+       ldr     r0, [r7, #-980]
+       bl      FtlGcBufFree
+       ldr     r3, .L2094+8
+       mov     r0, #0
+       str     r0, [r7, #-1176]
+       ldrh    r3, [r7, r3]
+       cmp     r3, r0
+       ldmnefd sp!, {r3, r4, r5, r6, r7, pc}
+       mov     r0, #1
+       bl      FtlGcFreeTempBlock
+.L2093:
+       mov     r0, #1
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L2091:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, r6, r7, pc}
+.L2095:
+       .align  2
+.L2094:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   -1944
+       .word   -1948
+       .fnend
+       .size   Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
+       .align  2
+       .global FtlGcPageRecovery
+       .type   FtlGcPageRecovery, %function
+FtlGcPageRecovery:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       movw    r5, #3912
+       ldr     r6, .L2098
+       ldr     r0, .L2098+4
+       ldr     r4, .L2098+8
+       ldrh    r1, [r6, r5]
+       bl      FtlGcScanTempBlk
+       ldr     r3, .L2098+12
+       ldrh    r2, [r4, r3]
+       ldrh    r3, [r6, r5]
+       cmp     r2, r3
+       ldmccfd sp!, {r4, r5, r6, pc}
+       sub     r0, r4, #1088
+       bl      FtlMapBlkWriteDumpData
+       mov     r0, #0
+       bl      FtlGcFreeTempBlock
+       mov     r3, #0
+       str     r3, [r4, #-1016]
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L2099:
+       .align  2
+.L2098:
+       .word   .LANCHOR0
+       .word   .LANCHOR2-1948
+       .word   .LANCHOR2
+       .word   -1946
+       .fnend
+       .size   FtlGcPageRecovery, .-FtlGcPageRecovery
+       .align  2
+       .global FtlPowerLostRecovery
+       .type   FtlPowerLostRecovery, %function
+FtlPowerLostRecovery:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       movw    r2, #266
+       ldr     r3, .L2101
+       mov     r4, #0
+       ldr     r5, .L2101+4
+       strh    r4, [r3, r2]    @ movhi
+       str     r4, [r3, #268]
+       mov     r0, r5
+       bl      FtlRecoverySuperblock
+       mov     r0, r5
+       add     r5, r5, #48
+       bl      FtlSlcSuperblockCheck
+       mov     r0, r5
+       bl      FtlRecoverySuperblock
+       mov     r0, r5
+       bl      FtlSlcSuperblockCheck
+       bl      FtlGcPageRecovery
+       movw    r0, #65535
+       bl      decrement_vpc_count
+       mov     r0, r4
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L2102:
+       .align  2
+.L2101:
+       .word   .LANCHOR2
+       .word   .LANCHOR2-2044
+       .fnend
+       .size   FtlPowerLostRecovery, .-FtlPowerLostRecovery
+       .align  2
+       .global FtlSysBlkInit
+       .type   FtlSysBlkInit, %function
+FtlSysBlkInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       ldr     r5, .L2114
+       ldr     r4, .L2114+4
+       ldr     r0, [r5, #3848]
+       uxth    r0, r0
+       bl      FtlFreeSysBlkQueueInit
+       bl      FtlScanSysBlk
+       ldr     r3, .L2114+8
+       ldrh    r2, [r4, r3]
+       movw    r3, #65535
+       cmp     r2, r3
+       beq     .L2112
+       bl      FtlLoadSysInfo
+       subs    r6, r0, #0
+       bne     .L2112
+       bl      FtlLoadMapInfo
+       bl      FtlLoadVonderInfo
+       bl      Ftl_load_ext_data
+       bl      FtlLoadEctTbl
+       bl      FtlFreeSysBLkSort
+       bl      SupperBlkListInit
+       bl      FtlPowerLostRecovery
+       movw    r3, #3950
+       ldrh    r2, [r5, r3]
+       mov     r3, r6
+       ldr     r1, [r4, #-1900]
+       b       .L2105
+.L2107:
+       add     r0, r1, r6
+       add     r6, r6, #12
+       ldr     r0, [r0, #4]
+       cmp     r0, #0
+       blt     .L2106
+       add     r3, r3, #1
+.L2105:
+       cmp     r3, r2
+       blt     .L2107
+.L2106:
+       ldr     r4, .L2114+4
+       cmp     r3, r2
+       ldr     r1, .L2114+12
+       ldrh    r0, [r4, r1]
+       add     r0, r0, #1
+       strh    r0, [r4, r1]    @ movhi
+       blt     .L2108
+       movw    r3, #266
+       ldrh    r3, [r4, r3]
+       cmp     r3, #0
+       beq     .L2109
+.L2108:
+       ldr     r0, .L2114+16
+       bl      FtlSuperblockPowerLostFix
+       ldr     r0, .L2114+20
+       bl      FtlSuperblockPowerLostFix
+       ldr     r0, .L2114+24
+       bl      FtlMapBlkWriteDumpData
+       ldr     r0, .L2114+28
+       bl      FtlMapBlkWriteDumpData
+       ldr     r3, .L2114+32
+       ldrh    r2, [r4, r3]
+       add     r2, r2, #1
+       strh    r2, [r4, r3]    @ movhi
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+       bl      FtlVpcTblFlush
+.L2109:
+       mov     r0, #1
+       ldr     r4, .L2114+4
+       bl      FtlUpdateVaildLpn
+       ldr     r3, .L2114+36
+       ldrh    r0, [r4, r3]
+       movw    r3, #65535
+       cmp     r0, r3
+       beq     .L2110
+       ldr     r3, .L2114+40
+       ldrh    r3, [r4, r3]
+       cmp     r3, #0
+       bne     .L2110
+       ldr     r3, .L2114+44
+       ldrh    r3, [r4, r3]
+       cmp     r3, #0
+       bne     .L2110
+       bl      FtlGcRefreshBlock
+       ldr     r3, .L2114+48
+       ldrh    r0, [r4, r3]
+       bl      FtlGcRefreshBlock
+       ldr     r0, .L2114+16
+       bl      allocate_new_data_superblock
+       ldr     r0, .L2114+20
+       bl      allocate_new_data_superblock
+       add     r0, r4, #224
+       bl      FtlMapBlkWriteDumpData
+.L2110:
+       ldr     r3, .L2114+12
+       ldr     r2, .L2114+4
+       ldrh    r0, [r2, r3]
+       ands    r4, r0, #31
+       bne     .L2113
+       bl      FtlVpcCheckAndModify
+       mov     r0, r4
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L2112:
+       mvn     r0, #0
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L2113:
+       mov     r0, #0
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L2115:
+       .align  2
+.L2114:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   -1768
+       .word   -1792
+       .word   .LANCHOR2-2044
+       .word   .LANCHOR2-1996
+       .word   .LANCHOR2-1088
+       .word   .LANCHOR2+224
+       .word   -1790
+       .word   -2044
+       .word   -2040
+       .word   -1992
+       .word   -1996
+       .fnend
+       .size   FtlSysBlkInit, .-FtlSysBlkInit
+       .align  2
+       .global FtlInit
+       .type   FtlInit, %function
+FtlInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+.L2117:
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mvn     r3, #0
+       ldr     r4, .L2119
+       mov     r2, #0
+       ldr     r1, .L2119+4
+       mov     r5, r0
+       ldr     r0, .L2119+8
+       str     r3, [r4, #2960]
+       ldr     r3, .L2119+12
+       str     r2, [r3, #412]
+       bl      printk
+       mov     r0, r5
+       bl      FtlConstantsInit
+       bl      FtlMemInit
+       bl      FtlVariablesInit
+       ldr     r3, .L2119+16
+       ldr     r0, [r3, #3848]
+       uxth    r0, r0
+       bl      FtlFreeSysBlkQueueInit
+       bl      FtlLoadBbt
+       cmp     r0, #0
+       bne     .L2118
+       bl      FtlSysBlkInit
+       cmp     r0, #0
+       moveq   r3, #1
+       streq   r3, [r4, #2960]
+.L2118:
+       mov     r0, #0
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L2120:
+       .align  2
+.L2119:
+       .word   .LANCHOR1
+       .word   .LC76
+       .word   .LC75
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .fnend
+       .size   FtlInit, .-FtlInit
+       .align  2
+       .global rk_ftl_init
+       .type   rk_ftl_init, %function
+rk_ftl_init:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r0, #2048
+       bl      ftl_malloc
+       ldr     r4, .L2125
+       mov     r5, #0
+       add     r1, r4, #420
+       str     r5, [r4, #112]
+       str     r5, [r4, #420]
+       str     r0, [r4, #416]
+       add     r0, r4, #112
+       bl      rknand_get_reg_addr
+       ldr     r3, [r4, #112]
+       cmp     r3, r5
+       mvneq   r4, #0
+       beq     .L2122
+       bl      rk_nandc_irq_init
+       ldr     r0, [r4, #416]
+       mov     r1, r5
+       mov     r2, r5
+       mov     r3, #2048
+       bl      FlashSramLoadStore
+       bl      rknand_flash_cs_init
+       ldr     r0, [r4, #112]
+       bl      FlashInit
+       subs    r4, r0, #0
+       bne     .L2123
+       ldr     r0, .L2125+4
+       bl      FtlInit
+.L2123:
+       ldr     r0, .L2125+8
+       mov     r1, r4
+       bl      printk
+.L2122:
+       mov     r0, r4
+       ldmfd   sp!, {r3, r4, r5, pc}
+.L2126:
+       .align  2
+.L2125:
+       .word   .LANCHOR2
+       .word   .LANCHOR0+2200
+       .word   .LC119
+       .fnend
+       .size   rk_ftl_init, .-rk_ftl_init
+       .align  2
+       .global Ftl_get_new_temp_ppa
+       .type   Ftl_get_new_temp_ppa, %function
+Ftl_get_new_temp_ppa:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       ldr     r3, .L2130
+       ldr     r5, .L2130+4
+       ldrh    r2, [r5, r3]
+       movw    r3, #65535
+       cmp     r2, r3
+       beq     .L2128
+       ldr     r3, .L2130+8
+       ldrh    r3, [r5, r3]
+       cmp     r3, #0
+       bne     .L2129
+.L2128:
+       bl      FtlCacheWriteBack
+       mov     r0, #0
+       bl      FtlGcFreeTempBlock
+       ldr     r0, .L2130+12
+       mov     r4, #0
+       strb    r4, [r5, #-1940]
+       bl      allocate_data_superblock
+       ldr     r3, .L2130+16
+       strh    r4, [r5, r3]    @ movhi
+       add     r3, r3, #12
+       strh    r4, [r5, r3]    @ movhi
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+       mov     r0, r4
+       bl      FtlEctTblFlush
+.L2129:
+       ldr     r0, .L2130+12
+       ldmfd   sp!, {r3, r4, r5, lr}
+       b       get_new_active_ppa
+.L2131:
+       .align  2
+.L2130:
+       .word   -1948
+       .word   .LANCHOR2
+       .word   -1944
+       .word   .LANCHOR2-1948
+       .word   -1152
+       .fnend
+       .size   Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
+       .align  2
+       .global FtlDiscard
+       .type   FtlDiscard, %function
+FtlDiscard:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r4, r5, r6, r7, lr}
+       .save {r0, r1, r2, r4, r5, r6, r7, lr}
+       add     r2, r1, r0
+       ldr     r5, .L2141
+       mov     r7, r0
+       mov     r4, r1
+       ldr     r3, [r5, #3952]
+       cmp     r2, r3
+       mvnhi   r0, #0
+       bhi     .L2133
+       cmp     r1, #31
+       movls   r0, #0
+       bls     .L2133
+       bl      FtlCacheWriteBack
+       movw    r3, #3918
+       ldrh    r6, [r5, r3]
+       mov     r0, r7
+       mov     r1, r6
+       bl      __aeabi_uidiv
+       mls     r7, r0, r6, r7
+       mov     r5, r0
+       uxth    r7, r7
+       cmp     r7, #0
+       beq     .L2134
+       rsb     r6, r7, r6
+       add     r5, r0, #1
+       cmp     r6, r4
+       movcs   r6, r4
+       uxth    r6, r6
+       rsb     r4, r6, r4
+.L2134:
+       mvn     r3, #0
+       ldr     r7, .L2141
+       str     r3, [sp, #4]
+       movw    r6, #3918
+       b       .L2135
+.L2137:
+       mov     r0, r5
+       mov     r1, sp
+       mov     r2, #0
+       bl      log2phys
+       ldr     r3, [sp, #0]
+       cmn     r3, #1
+       beq     .L2136
+       ldr     r3, .L2141+4
+       add     r1, sp, #4
+       mov     r0, r5
+       ldr     r2, [r3, #424]
+       add     r2, r2, #1
+       str     r2, [r3, #424]
+       ldr     r2, [r3, #-1876]
+       add     r2, r2, #1
+       str     r2, [r3, #-1876]
+       mov     r2, #1
+       bl      log2phys
+       ldr     r0, [sp, #0]
+       ubfx    r0, r0, #10, #16
+       bl      P2V_block_in_plane
+       bl      decrement_vpc_count
+.L2136:
+       ldrh    r3, [r7, r6]
+       add     r5, r5, #1
+       rsb     r4, r3, r4
+.L2135:
+       ldrh    r3, [r7, r6]
+       cmp     r4, r3
+       bcs     .L2137
+       ldr     r3, .L2141+4
+       mov     r4, #0
+       ldr     r2, [r3, #424]
+       cmp     r2, #32
+       bls     .L2140
+       str     r4, [r3, #424]
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+.L2140:
+       mov     r0, r4
+.L2133:
+       ldmfd   sp!, {r1, r2, r3, r4, r5, r6, r7, pc}
+.L2142:
+       .align  2
+.L2141:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   FtlDiscard, .-FtlDiscard
+       .align  2
+       .global FtlSysFlush
+       .type   FtlSysFlush, %function
+FtlSysFlush:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       bl      FtlCacheWriteBack
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+       mov     r0, #1
+       bl      FtlEctTblFlush
+       mov     r0, #0
+       ldmfd   sp!, {r3, pc}
+       .fnend
+       .size   FtlSysFlush, .-FtlSysFlush
+       .align  2
+       .global FtlDeInit
+       .type   FtlDeInit, %function
+FtlDeInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       ldr     r3, .L2146
+       ldr     r3, [r3, #2960]
+       cmp     r3, #1
+       bne     .L2145
+       bl      FtlSysFlush
+.L2145:
+       mov     r0, #0
+       ldmfd   sp!, {r3, pc}
+.L2147:
+       .align  2
+.L2146:
+       .word   .LANCHOR1
+       .fnend
+       .size   FtlDeInit, .-FtlDeInit
+       .align  2
+       .global rk_ftl_de_init
+       .type   rk_ftl_de_init, %function
+rk_ftl_de_init:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       bl      rk_nand_de_init
+       bl      FtlDeInit
+       ldmfd   sp!, {r3, lr}
+       b       rk_nand_de_init
+       .fnend
+       .size   rk_ftl_de_init, .-rk_ftl_de_init
+       .align  2
+       .global FtlWrite
+       .type   FtlWrite, %function
+FtlWrite:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 96
+       @ frame_needed = 0, uses_anonymous_args = 0
+       cmp     r0, #16
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r4, r1
+       .pad #100
+       sub     sp, sp, #100
+       mov     r5, r2
+       mov     r8, r3
+       bne     .L2150
+       add     r0, r1, #256
+       mov     r1, r2
+       mov     r2, r3
+       bl      FtlVendorPartWrite
+       b       .L2151
+.L2150:
+       ldr     r9, .L2199
+       add     r7, r2, r1
+       ldr     r3, [r9, #3952]
+       cmp     r7, r3
+       mvnhi   r0, #0
+       bhi     .L2151
+       ldr     r6, .L2199+4
+       mov     r3, #2048
+       mov     r0, r1
+       str     r3, [r6, #428]
+       movw    r3, #3918
+       ldrh    sl, [r9, r3]
+       mov     r1, sl
+       bl      __aeabi_uidiv
+       mov     r1, sl
+       str     r0, [sp, #20]
+       sub     r0, r7, #1
+       bl      __aeabi_uidiv
+       ldr     r3, [sp, #20]
+       cmp     r5, #8
+       rsb     fp, r3, r0
+       ldr     r3, [r6, #-1872]
+       add     r7, fp, #1
+       str     r7, [sp, #16]
+       add     r3, r7, r3
+       str     r3, [r6, #-1872]
+       ldr     r3, [r6, #-1856]
+       str     r0, [sp, #44]
+       add     r3, r5, r3
+       str     r3, [r6, #-1856]
+       ldr     r3, .L2199+8
+       add     r7, r3, #48
+       movhi   r7, r3
+       ldr     r3, [r9, #3964]
+       cmp     r3, #0
+       beq     .L2185
+       ldr     r2, [r9, #3968]
+       sub     r3, r3, #1
+       mov     r7, #36
+       ldr     lr, [sp, #20]
+       mla     r7, r7, r3, r2
+       ldr     r3, [r7, #16]
+       cmp     lr, r3
+       strne   r5, [sp, #32]
+       bne     .L2154
+       ldr     r3, [r6, #-1868]
+       mov     r0, r4
+       mov     r1, sl
+       add     r3, r3, #1
+       str     r3, [r6, #-1868]
+       ldr     r3, [r6, #432]
+       add     r3, r3, #1
+       str     r3, [r6, #432]
+       bl      __aeabi_uidivmod
+       ldr     r0, [r7, #8]
+       rsb     r9, r1, sl
+       add     r0, r0, r1, asl #9
+       cmp     r9, r5
+       movcs   r9, r5
+       mov     r1, r8
+       mov     r3, r9, asl #9
+       str     r3, [sp, #4]
+       mov     r2, r3
+       bl      memcpy
+       cmp     fp, #0
+       ldr     r3, [sp, #4]
+       bne     .L2155
+       ldr     r2, [r6, #432]
+       cmp     r2, #2
+       movle   r0, fp
+       ble     .L2151
+.L2155:
+       add     r8, r8, r3
+       add     r4, r4, r9
+       ldr     r3, [sp, #20]
+       rsb     r7, r9, r5
+       str     fp, [sp, #16]
+       add     r3, r3, #1
+       str     r7, [sp, #32]
+       str     r3, [sp, #20]
+.L2154:
+       ldr     r3, .L2199+4
+       mov     r2, #0
+       ldr     r7, [r3, #408]
+       str     r2, [r3, #432]
+       b       .L2153
+.L2185:
+       str     r5, [sp, #32]
+.L2153:
+       ldr     r0, [sp, #20]
+       ldr     r1, [sp, #44]
+       bl      FtlCacheMetchLpa
+       cmp     r0, #0
+       beq     .L2156
+       bl      FtlCacheWriteBack
+.L2156:
+       cmp     r5, sl, asl #1
+       ldr     r5, .L2199
+       mov     fp, #0
+       ldr     r6, [sp, #20]
+       movcc   r3, #0
+       movcs   r3, #1
+       str     r3, [sp, #24]
+       ldr     r3, .L2199+4
+       mov     sl, r5
+       str     fp, [sp, #40]
+       mov     r9, r8
+       str     r7, [r3, #408]
+       b       .L2196
+.L2182:
+       ldrh    r1, [r7, #4]
+       cmp     r1, #0
+       bne     .L2158
+       ldr     r3, .L2199+8
+       ldr     r2, .L2199+4
+       cmp     r7, r3
+       ldr     r8, .L2199+12
+       bne     .L2159
+       ldr     r3, .L2199+16
+       ldrh    r3, [r2, r3]
+       cmp     r3, #0
+       bne     .L2160
+       ldr     r0, .L2199+20
+       str     r3, [sp, #4]
+       bl      allocate_new_data_superblock
+       ldr     r3, [sp, #4]
+       str     r3, [r8, #3004]
+.L2160:
+       ldr     r0, .L2199+8
+       bl      allocate_new_data_superblock
+       ldr     r2, [r8, #3004]
+       ldr     r3, .L2199+20
+       cmp     r2, #0
+       movne   r7, r3
+       b       .L2161
+.L2159:
+       str     r1, [r8, #3004]
+       ldr     r1, .L2199+24
+       ldrh    r2, [r2, r1]
+       cmp     r2, #0
+       movne   r7, r3
+       bne     .L2161
+       mov     r0, r7
+       bl      allocate_new_data_superblock
+.L2161:
+       ldrh    r3, [r7, #4]
+       cmp     r3, #0
+       bne     .L2162
+       mov     r0, r7
+       bl      allocate_new_data_superblock
+.L2162:
+       ldr     r3, .L2199+4
+       str     r7, [r3, #408]
+.L2158:
+       ldr     r2, .L2199+4
+       mov     r8, r7
+       ldrh    r3, [r7, #4]
+       ldr     r1, [r2, #-988]
+       ldr     r2, [r5, #3964]
+       rsb     r2, r2, r1
+       cmp     r3, r2
+       movcc   r2, r3
+       ldr     r3, [sp, #16]
+       cmp     r2, r3
+       movcc   r3, r2
+       str     r3, [sp, #36]
+       mov     r3, #0
+       str     r3, [sp, #28]
+       b       .L2163
+.L2179:
+       ldrh    r3, [r8, #4]
+       cmp     r3, #0
+       beq     .L2191
+       ldr     r7, [sp, #44]
+       rsb     r2, r7, r6
+       ldr     r7, [sp, #24]
+       rsbs    r3, r2, #0
+       adc     r3, r3, r2
+       tst     r3, r7
+       beq     .L2165
+       ldr     r7, [sp, #28]
+       cmp     r7, #0
+       beq     .L2165
+       movw    lr, #3918
+       ldr     r7, [sp, #32]
+       ldrh    r2, [r5, lr]
+       add     r1, r7, r4
+       mls     r1, r2, r6, r1
+       cmp     r1, r2
+       bne     .L2191
+.L2165:
+       add     r1, sp, #56
+       mov     r2, #0
+       mov     r0, r6
+       str     r3, [sp, #4]
+       bl      log2phys
+       mov     r0, r8
+       bl      get_new_active_ppa
+       ldr     lr, [r5, #3964]
+       ldr     r1, [r5, #3968]
+       movw    r2, #3924
+       mov     ip, #36
+       ldrh    r2, [r5, r2]
+       ldr     r7, .L2199+4
+       mla     r1, ip, lr, r1
+       mul     lr, lr, r2
+       ldr     r7, [r7, #-944]
+       bic     lr, lr, #3
+       str     r7, [sp, #52]
+       str     lr, [sp, #48]
+       add     r7, r7, lr
+       str     r6, [r1, #16]
+       str     r7, [r1, #12]
+       str     r0, [r1, #4]
+       movw    r0, #3922
+       ldrh    lr, [r5, r0]
+       ldr     r0, [r5, #3964]
+       mul     lr, r0, lr
+       ldr     r0, .L2199+4
+       bic     lr, lr, #3
+       str     lr, [sp, #12]
+       ldr     lr, [r0, #-964]
+       ldr     r0, [sp, #12]
+       add     lr, lr, r0
+       mov     r0, r7
+       str     lr, [r1, #8]
+       mov     r1, #0
+       str     ip, [sp, #8]
+       bl      ftl_memset
+       ldr     r1, [sp, #20]
+       ldr     ip, [sp, #8]
+       rsb     r3, r1, r6
+       rsbs    r1, r3, #0
+       adc     r1, r1, r3
+       ldr     r3, [sp, #4]
+       str     r1, [sp, #12]
+       orrs    r1, r1, r3
+       beq     .L2166
+       ldr     r2, [sp, #12]
+       cmp     r2, #0
+       beq     .L2167
+       movw    r3, #3918
+       mov     r0, r4
+       ldrh    fp, [r5, r3]
+       mov     r1, fp
+       bl      __aeabi_uidivmod
+       ldr     r3, [sp, #32]
+       rsb     fp, r1, fp
+       str     r1, [sp, #40]
+       cmp     fp, r3
+       movcs   fp, r3
+       b       .L2168
+.L2167:
+       cmp     r3, #0
+       beq     .L2168
+       ldr     r3, [sp, #32]
+       movw    lr, #3918
+       add     fp, r3, r4
+       ldrh    r3, [r5, lr]
+       mls     fp, r3, r6, fp
+       ldr     r3, [sp, #12]
+       str     r3, [sp, #40]
+       uxth    fp, fp
+.L2168:
+       movw    lr, #3918
+       ldrh    r3, [r5, lr]
+       cmp     fp, r3
+       bne     .L2169
+       ldr     r3, [sp, #12]
+       ldr     r0, [sl, #3964]
+       cmp     r3, #0
+       ldr     r2, [sl, #3968]
+       ldr     r3, [sp, #24]
+       muleq   r1, r6, fp
+       movne   r1, r9
+       rsbeq   r1, r4, r1
+       addeq   r1, r9, r1, asl #9
+       cmp     r3, #0
+       mov     r3, #36
+       mla     r3, r3, r0, r2
+       strne   r1, [r3, #8]
+       bne     .L2172
+       ldr     r0, [r3, #8]
+       movw    r3, #3922
+       ldrh    r2, [sl, r3]
+       b       .L2197
+.L2169:
+       ldr     r2, [sp, #56]
+       mov     r3, #36
+       cmn     r2, #1
+       beq     .L2173
+       ldr     r1, [r5, #3964]
+       add     r0, sp, #60
+       str     r2, [sp, #64]
+       ldr     r2, [r5, #3968]
+       str     r6, [sp, #76]
+       mla     r3, r3, r1, r2
+       mov     r1, #1
+       ldr     r2, [r3, #8]
+       ldr     r3, [r3, #12]
+       str     r2, [sp, #68]
+       mov     r2, #0
+       str     r3, [sp, #72]
+       bl      FlashReadPages
+       ldr     r3, [sp, #60]
+       cmn     r3, #1
+       ldr     r3, .L2199+4
+       ldreq   r2, [r3, #-1632]
+       addeq   r2, r2, #1
+       streq   r2, [r3, #-1632]
+       beq     .L2175
+       ldr     r2, [r7, #8]
+       cmp     r2, r6
+       beq     .L2175
+       ldr     r2, [r3, #-1632]
+       ldr     r0, .L2199+28
+       add     r2, r2, #1
+       str     r2, [r3, #-1632]
+       mov     r2, r6
+       ldr     r1, [r7, #8]
+       bl      printk
+       b       .L2175
+.L2173:
+       ldr     r1, [r5, #3964]
+       ldr     r2, [r5, #3968]
+       mla     r3, r3, r1, r2
+       mov     r1, #0
+       ldr     r0, [r3, #8]
+       movw    r3, #3922
+       ldrh    r2, [r5, r3]
+       bl      ftl_memset
+.L2175:
+       ldr     r3, [sp, #12]
+       ldr     r1, [r5, #3964]
+       cmp     r3, #0
+       ldr     r2, [r5, #3968]
+       mov     r3, #36
+       movweq  lr, #3918
+       mla     r3, r3, r1, r2
+       ldreqh  r1, [r5, lr]
+       movne   r1, r9
+       mov     r2, fp, asl #9
+       muleq   r1, r1, r6
+       ldrne   r0, [r3, #8]
+       ldrne   r3, [sp, #40]
+       rsbeq   r1, r4, r1
+       ldreq   r0, [r3, #8]
+       addne   r0, r0, r3, asl #9
+       addeq   r1, r9, r1, asl #9
+       b       .L2197
+.L2166:
+       ldr     r3, [sp, #24]
+       ldr     r2, [r5, #3964]
+       cmp     r3, #0
+       ldr     r3, [r5, #3968]
+       mla     ip, ip, r2, r3
+       beq     .L2177
+       movw    lr, #3918
+       ldrh    r3, [r5, lr]
+       mul     r3, r3, r6
+       rsb     r3, r4, r3
+       add     r3, r9, r3, asl #9
+       str     r3, [ip, #8]
+       b       .L2172
+.L2177:
+       movw    r0, #3918
+       movw    r3, #3922
+       ldrh    r1, [r5, r0]
+       ldrh    r2, [r5, r3]
+       ldr     r0, [ip, #8]
+       mul     r1, r1, r6
+       rsb     r1, r4, r1
+       add     r1, r9, r1, asl #9
+.L2197:
+       bl      memcpy
+.L2172:
+       ldr     r3, .L2199+32
+       ldr     r0, [sp, #52]
+       ldr     lr, [sp, #48]
+       strh    r3, [r0, lr]    @ movhi
+       ldr     r3, .L2199+4
+       str     r6, [r7, #8]
+       add     r6, r6, #1
+       ldr     r2, [r3, #-1844]
+       str     r2, [r7, #4]
+       add     r2, r2, #1
+       cmn     r2, #1
+       str     r2, [r3, #-1844]
+       moveq   r2, #0
+       streq   r2, [r3, #-1844]
+       ldr     r3, [sp, #56]
+       str     r3, [r7, #12]
+       ldrh    r3, [r8, #0]
+       strh    r3, [r7, #2]    @ movhi
+       ldr     r3, [r5, #3964]
+       add     r3, r3, #1
+       str     r3, [r5, #3964]
+       ldr     r3, [sp, #28]
+       add     r3, r3, #1
+       str     r3, [sp, #28]
+.L2163:
+       ldr     r7, [sp, #28]
+       ldr     r3, [sp, #36]
+       cmp     r7, r3
+       bne     .L2179
+       mov     r7, r8
+       b       .L2164
+.L2191:
+       ldr     r3, [sp, #28]
+       mov     r7, r8
+       str     r3, [sp, #36]
+.L2164:
+       ldr     r3, [sp, #16]
+       ldr     lr, [sp, #36]
+       ldr     r2, [r5, #3964]
+       rsb     r3, lr, r3
+       str     r3, [sp, #16]
+       ldr     r3, .L2199+4
+       ldr     r0, [sp, #24]
+       ldr     r3, [r3, #-988]
+       cmp     r2, r3
+       orrcs   r0, r0, #1
+       uxtb    r3, r0
+       cmp     r3, #0
+       bne     .L2180
+       ldrh    r2, [r7, #4]
+       cmp     r2, #0
+       bne     .L2194
+.L2180:
+       bl      FtlCacheWriteBack
+       ldr     lr, [sp, #16]
+       mov     r3, #0
+       str     r3, [sl, #3964]
+       cmp     lr, #3
+       ldr     r3, [sp, #24]
+       movls   r3, #0
+.L2194:
+       str     r3, [sp, #24]
+.L2196:
+       ldr     r3, [sp, #16]
+       cmp     r3, #0
+       bne     .L2182
+       mov     r0, r3
+       ldr     r7, [sp, #44]
+       ldr     r3, [sp, #20]
+       rsb     r1, r3, r7
+       bl      rk_ftl_garbage_collect
+       ldr     r0, [sp, #16]
+.L2151:
+       add     sp, sp, #100
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L2200:
+       .align  2
+.L2199:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   .LANCHOR2-2044
+       .word   .LANCHOR1
+       .word   -1992
+       .word   .LANCHOR2-1996
+       .word   -2040
+       .word   .LC120
+       .word   -3947
+       .fnend
+       .size   FtlWrite, .-FtlWrite
+       .align  2
+       .global StorageSysDataStore
+       .type   StorageSysDataStore, %function
+StorageSysDataStore:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r4, r1
+       mov     r5, r0
+       bl      rknand_device_lock
+       mov     r3, r4
+       add     r1, r5, #256
+       mov     r2, #1
+       mov     r0, #16
+       bl      FtlWrite
+       mov     r4, r0
+       bl      rknand_device_unlock
+       mov     r0, r4
+       ldmfd   sp!, {r3, r4, r5, pc}
+       .fnend
+       .size   StorageSysDataStore, .-StorageSysDataStore
+       .align  2
+       .global FtlRead
+       .type   FtlRead, %function
+FtlRead:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 64
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       cmp     r0, #16
+       .pad #68
+       sub     sp, sp, #68
+       mov     r4, r1
+       mov     r8, r3
+       str     r2, [sp, #28]
+       bne     .L2203
+       add     r0, r1, #256
+       mov     r1, r2
+       mov     r2, r3
+       bl      FtlVendorPartRead
+       str     r0, [sp, #16]
+       b       .L2204
+.L2203:
+       ldr     r3, [sp, #28]
+       add     r3, r3, r1
+       str     r3, [sp, #20]
+       ldr     r3, .L2233
+       ldr     r1, [sp, #20]
+       ldr     r2, [r3, #3952]
+       cmp     r1, r2
+       mvnhi   r3, #0
+       strhi   r3, [sp, #16]
+       bhi     .L2204
+       movw    r2, #3918
+       mov     r0, r4
+       ldrh    r5, [r3, r2]
+       mov     r1, r5
+       bl      __aeabi_uidiv
+       ldr     r3, [sp, #20]
+       mov     r1, r5
+       str     r0, [sp, #12]
+       sub     r0, r3, #1
+       bl      __aeabi_uidiv
+       ldr     r1, [sp, #12]
+       rsb     r3, r1, #1
+       ldr     r1, [sp, #28]
+       add     r3, r3, r0
+       str     r3, [sp, #8]
+       ldr     r3, .L2233+4
+       mov     fp, r0
+       ldr     r0, [sp, #12]
+       ldr     r2, [r3, #-1852]
+       add     r2, r1, r2
+       ldr     r1, [sp, #8]
+       str     r2, [r3, #-1852]
+       ldr     r2, [r3, #-1880]
+       add     r2, r1, r2
+       mov     r1, fp
+       str     r2, [r3, #-1880]
+       bl      FtlCacheMetchLpa
+       cmp     r0, #0
+       beq     .L2205
+       bl      FtlCacheWriteBack
+.L2205:
+       mov     r9, #0
+       ldr     r6, [sp, #12]
+       str     r9, [sp, #32]
+       mov     r5, r9
+       str     r9, [sp, #16]
+       ldr     r7, .L2233
+       b       .L2228
+.L2222:
+       mov     r2, #0
+       mov     r0, r6
+       add     r1, sp, #60
+       bl      log2phys
+       ldr     r2, [sp, #60]
+       cmn     r2, #1
+       bne     .L2229
+       b       .L2232
+.L2210:
+       mla     r0, r0, r6, sl
+       cmp     r0, r4
+       bcc     .L2209
+       ldr     r2, [sp, #20]
+       cmp     r0, r2
+       bcs     .L2209
+       rsb     r0, r4, r0
+       mov     r1, #0
+       mov     r2, #512
+       str     r3, [sp, #4]
+       add     r0, r8, r0, asl #9
+       bl      ftl_memset
+       ldr     r3, [sp, #4]
+.L2209:
+       add     sl, sl, #1
+       b       .L2207
+.L2232:
+       mov     sl, #0
+       movw    r3, #3918
+.L2207:
+       ldrh    r0, [r7, r3]
+       cmp     sl, r0
+       bcc     .L2210
+       b       .L2211
+.L2229:
+       ldr     r3, .L2233+4
+       mov     sl, #36
+       ldr     r1, [r3, #-984]
+       mla     sl, sl, r5, r1
+       ldr     r1, [sp, #12]
+       cmp     r6, r1
+       str     r2, [sl, #4]
+       movw    r2, #3918
+       bne     .L2212
+       ldr     r3, [r3, #-960]
+       mov     r0, r4
+       str     r3, [sl, #8]
+       ldrh    r3, [r7, r2]
+       mov     r1, r3
+       str     r3, [sp, #4]
+       bl      __aeabi_uidivmod
+       ldr     r3, [sp, #4]
+       str     r1, [sp, #36]
+       rsb     r2, r1, r3
+       ldr     r1, [sp, #28]
+       cmp     r2, r1
+       movcc   r1, r2
+       str     r1, [sp, #32]
+       cmp     r1, r3
+       streq   r8, [sl, #8]
+       b       .L2213
+.L2212:
+       cmp     r6, fp
+       ldrneh  r3, [r7, r2]
+       mulne   r3, r3, r6
+       bne     .L2230
+       ldr     r3, [r3, #-956]
+       ldrh    r2, [r7, r2]
+       ldr     r1, [sp, #20]
+       str     r3, [sl, #8]
+       mul     r3, r2, r6
+       rsb     r9, r3, r1
+       cmp     r9, r2
+       bne     .L2213
+.L2230:
+       rsb     r3, r4, r3
+       add     r3, r8, r3, asl #9
+       str     r3, [sl, #8]
+.L2213:
+       movw    r3, #3924
+       ldr     r2, .L2233+4
+       ldrh    r3, [r7, r3]
+       str     r6, [sl, #16]
+       ldr     r2, [r2, #-948]
+       mul     r3, r3, r5
+       add     r5, r5, #1
+       bic     r3, r3, #3
+       add     r3, r2, r3
+       str     r3, [sl, #12]
+.L2211:
+       ldr     r3, [sp, #8]
+       add     r6, r6, #1
+       subs    r3, r3, #1
+       str     r3, [sp, #8]
+       beq     .L2215
+       movw    r3, #3844
+       ldrh    r3, [r7, r3]
+       cmp     r5, r3, asl #3
+       bne     .L2228
+.L2215:
+       cmp     r5, #0
+       beq     .L2228
+       ldr     sl, .L2233+4
+       mov     r1, r5
+       mov     r2, #0
+       ldr     r0, [sl, #-984]
+       bl      FlashReadPages
+       ldr     r3, [sp, #36]
+       str     r6, [sp, #52]
+       mov     r6, r5
+       mov     r3, r3, asl #9
+       str     r3, [sp, #40]
+       ldr     r3, [sp, #32]
+       mov     r3, r3, asl #9
+       str     r3, [sp, #44]
+       mov     r3, r9, asl #9
+       str     r3, [sp, #48]
+       mov     r3, #0
+       str     r3, [sp, #24]
+.L2221:
+       ldr     r3, [sp, #24]
+       mov     r5, #36
+       ldr     r1, [sp, #12]
+       mul     r5, r5, r3
+       ldr     r3, [sl, #-984]
+       add     r3, r3, r5
+       ldr     r2, [r3, #16]
+       cmp     r2, r1
+       bne     .L2217
+       ldr     r1, [r3, #8]
+       ldr     r3, [sl, #-960]
+       cmp     r1, r3
+       bne     .L2218
+       ldr     r3, [sp, #40]
+       mov     r0, r8
+       ldr     r2, [sp, #44]
+       add     r1, r1, r3
+       b       .L2231
+.L2217:
+       cmp     r2, fp
+       bne     .L2218
+       ldr     r1, [r3, #8]
+       ldr     r3, [sl, #-956]
+       cmp     r1, r3
+       bne     .L2218
+       movw    r2, #3918
+       ldrh    r0, [r7, r2]
+       ldr     r2, [sp, #48]
+       mul     r0, r0, fp
+       rsb     r0, r4, r0
+       add     r0, r8, r0, asl #9
+.L2231:
+       bl      memcpy
+.L2218:
+       ldr     r3, [sl, #-984]
+       add     r0, r3, r5
+       ldr     r2, [r3, r5]
+       cmn     r2, #1
+       streq   r2, [sp, #16]
+       ldreq   r1, [sl, #-1632]
+       addeq   r1, r1, #1
+       streq   r1, [sl, #-1632]
+       ldr     r3, [r3, r5]
+       cmp     r3, #256
+       bne     .L2220
+       ldr     r0, [r0, #4]
+       ubfx    r0, r0, #10, #16
+       bl      P2V_block_in_plane
+       bl      FtlGcRefreshBlock
+.L2220:
+       ldr     r3, [sp, #24]
+       add     r3, r3, #1
+       str     r3, [sp, #24]
+       cmp     r3, r6
+       bne     .L2221
+       ldr     r6, [sp, #52]
+       mov     r5, #0
+.L2228:
+       ldr     r3, [sp, #8]
+       cmp     r3, #0
+       bne     .L2222
+       ldr     r3, .L2233+8
+       ldr     r2, .L2233+4
+       ldrh    r3, [r2, r3]
+       cmp     r3, #0
+       beq     .L2204
+       ldr     r0, [sp, #8]
+       mov     r1, #1
+       bl      rk_ftl_garbage_collect
+.L2204:
+       ldr     r0, [sp, #16]
+       add     sp, sp, #68
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L2234:
+       .align  2
+.L2233:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   -1134
+       .fnend
+       .size   FtlRead, .-FtlRead
+       .align  2
+       .global StorageSysDataLoad
+       .type   StorageSysDataLoad, %function
+StorageSysDataLoad:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, lr}
+       .save {r3, r4, r5, lr}
+       mov     r5, r0
+       mov     r4, r1
+       mov     r0, r1
+       mov     r1, #512
+       bl      __memzero
+       bl      rknand_device_lock
+       mov     r3, r4
+       add     r1, r5, #256
+       mov     r2, #1
+       mov     r0, #16
+       bl      FtlRead
+       mov     r4, r0
+       bl      rknand_device_unlock
+       mov     r0, r4
+       ldmfd   sp!, {r3, r4, r5, pc}
+       .fnend
+       .size   StorageSysDataLoad, .-StorageSysDataLoad
+       .align  2
+       .global FlashLoadFactorBbt
+       .type   FlashLoadFactorBbt, %function
+FlashLoadFactorBbt:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 48
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       movw    r2, #2214
+       ldr     r9, .L2245
+       movw    r3, #2212
+       ldr     r4, .L2245+4
+       .pad #52
+       sub     sp, sp, #52
+       mov     r1, #0
+       mvn     r7, #0
+       ldrh    r3, [r9, r3]
+       add     r0, r4, #208
+       ldrh    r8, [r9, r2]
+       mov     r2, #16
+       mov     r6, #0
+       mul     r8, r8, r3
+       bl      ftl_memset
+       ldr     r3, [r4, #148]
+       str     r6, [sp, #20]
+       mov     r4, r6
+       str     r3, [sp, #24]
+       uxth    r8, r8
+       add     r3, r8, r7
+       uxth    r3, r3
+       str     r3, [sp, #4]
+       b       .L2237
+.L2243:
+       ldr     r5, [sp, #4]
+       sub     r3, r8, #8
+       mul     fp, r8, r4
+       ldr     sl, .L2245+4
+       b       .L2238
+.L2241:
+       add     r2, fp, r5
+       mov     r1, #1
+       add     r0, sp, #12
+       str     r3, [sp, #0]
+       mov     r2, r2, asl #10
+       str     r2, [sp, #16]
+       mov     r2, r1
+       bl      FlashReadPages
+       ldr     r2, [sp, #12]
+       ldr     r3, [sp, #0]
+       cmn     r2, #1
+       beq     .L2239
+       ldr     r2, [sl, #148]
+       ldrh    r1, [r2, #0]
+       movw    r2, #61664
+       cmp     r1, r2
+       bne     .L2239
+       ldr     r0, .L2245+8
+       mov     r1, r4
+       mov     r2, r5
+       add     r6, r6, #1
+       bl      printk
+       ldr     r3, .L2245+4
+       uxth    r6, r6
+       add     r3, r3, r4, asl #1
+       strh    r5, [r3, #208]  @ movhi
+       b       .L2240
+.L2239:
+       sub     r5, r5, #1
+       uxth    r5, r5
+.L2238:
+       cmp     r5, r3
+       bgt     .L2241
+.L2240:
+       ldrb    r3, [r9, #3766] @ zero_extendqisi2
+       add     r4, r4, #1
+       cmp     r3, r6
+       uxtb    r4, r4
+       moveq   r7, #0
+.L2237:
+       ldrb    r3, [r9, #3766] @ zero_extendqisi2
+       cmp     r3, r4
+       bhi     .L2243
+       mov     r0, r7
+       add     sp, sp, #52
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L2246:
+       .align  2
+.L2245:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   .LC121
+       .fnend
+       .size   FlashLoadFactorBbt, .-FlashLoadFactorBbt
+       .align  2
+       .global FlashReadFacBbtData
+       .type   FlashReadFacBbtData, %function
+FlashReadFacBbtData:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 40
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L2257
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, lr}
+       mov     r6, r1
+       mov     r9, r2
+       movw    r1, #2214
+       movw    r2, #2212
+       ldrh    r8, [r3, r1]
+       ldrh    r2, [r3, r2]
+       .pad #40
+       sub     sp, sp, #40
+       ldr     r3, [r3, #3780]
+       mov     r4, r0
+       ldr     r7, .L2257+4
+       mul     r8, r8, r2
+       str     r3, [sp, #12]
+       ldr     r3, [r7, #148]
+       str     r3, [sp, #16]
+       uxth    r8, r8
+       sub     r5, r8, #1
+       mul     sl, r8, r6
+       uxth    r5, r5
+       sub     r8, r8, #16
+       b       .L2248
+.L2254:
+       mov     r1, #1
+       add     r3, r5, sl
+       add     r0, sp, #4
+       mov     r2, r1
+       mov     r3, r3, asl #10
+       str     r3, [sp, #8]
+       bl      FlashReadPages
+       ldr     r3, [sp, #4]
+       cmn     r3, #1
+       beq     .L2249
+       ldr     r3, [r7, #148]
+       ldrh    r2, [r3, #0]
+       movw    r3, #61664
+       cmp     r2, r3
+       bne     .L2249
+       cmp     r4, #0
+       moveq   r0, r4
+       beq     .L2250
+       cmp     r6, #0
+       beq     .L2256
+       b       .L2252
+.L2253:
+       ldr     r3, [r0, #3780]
+       ubfx    r2, r6, #5, #16
+       and     r5, r6, #31
+       add     r6, r6, #1
+       ldr     lr, [r3, r2, asl #2]
+       uxth    r6, r6
+       orr     lr, lr, r1, asl r5
+       str     lr, [r3, r2, asl #2]
+       b       .L2251
+.L2256:
+       ldr     ip, .L2257+4
+       mov     r1, #1
+       ldr     r0, .L2257
+.L2251:
+       ldr     r3, [ip, #132]
+       cmp     r6, r3
+       bcc     .L2253
+.L2252:
+       ldr     r3, .L2257
+       mov     r2, r9
+       mov     r0, r4
+       ldr     r1, [r3, #3780]
+       bl      memcpy
+       mov     r2, #4
+       ldr     r0, .L2257+8
+       mov     r1, r4
+       mov     r3, r2
+       bl      rknand_print_hex
+       mov     r0, #0
+       b       .L2250
+.L2249:
+       sub     r5, r5, #1
+       uxth    r5, r5
+.L2248:
+       cmp     r5, r8
+       bgt     .L2254
+       mvn     r0, #0
+.L2250:
+       add     sp, sp, #40
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+.L2258:
+       .align  2
+.L2257:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   .LC122
+       .fnend
+       .size   FlashReadFacBbtData, .-FlashReadFacBbtData
+       .align  2
+       .global FlashGetBadBlockList
+       .type   FlashGetBadBlockList, %function
+FlashGetBadBlockList:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L2266
+       stmfd   sp!, {r4, r5, r6, r7, r8, lr}
+       .save {r4, r5, r6, r7, r8, lr}
+       mov     r5, r0
+       ldr     r3, [r3, #2776]
+       ldr     r6, .L2266+4
+       ldrb    r2, [r3, #13]   @ zero_extendqisi2
+       ldrh    r4, [r3, #14]
+       ldr     r0, [r6, #116]
+       mul     r4, r4, r2
+       uxth    r4, r4
+       add     r2, r4, #7
+       mov     r2, r2, lsr #3
+       bl      FlashReadFacBbtData
+       cmn     r0, #1
+       beq     .L2265
+       mov     r2, #0
+       mov     r0, r4, lsr #4
+       mov     r3, r2
+       sub     r4, r4, #1
+       mov     r1, #1
+       b       .L2261
+.L2263:
+       ldr     ip, [r6, #116]
+       mov     r8, r2, lsr #5
+       and     r7, r2, #31
+       ldr     ip, [ip, r8, asl #2]
+       ands    ip, ip, r1, asl r7
+       movne   ip, r3, asl #1
+       addne   r3, r3, #1
+       uxthne  r3, r3
+       strneh  r2, [r5, ip]    @ movhi
+       cmp     r3, r0
+       bcs     .L2265
+       add     r2, r2, #1
+       uxth    r2, r2
+.L2261:
+       cmp     r2, r4
+       blt     .L2263
+       b       .L2260
+.L2265:
+       mov     r3, #0
+.L2260:
+       mov     r3, r3, asl #1
+       mvn     r2, #0
+       mov     r0, #0
+       strh    r2, [r5, r3]    @ movhi
+       ldmfd   sp!, {r4, r5, r6, r7, r8, pc}
+.L2267:
+       .align  2
+.L2266:
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .fnend
+       .size   FlashGetBadBlockList, .-FlashGetBadBlockList
+       .align  2
+       .global FtlMakeBbt
+       .type   FtlMakeBbt, %function
+FtlMakeBbt:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       bl      FtlBbtMemInit
+       mov     r5, #0
+       ldr     r7, .L2285
+       bl      FtlLoadFactoryBbt
+       ldr     r6, .L2285+4
+       add     sl, r7, #12
+       ldr     r4, .L2285+8
+       b       .L2269
+.L2275:
+       ldrh    r3, [sl], #2
+       movw    r2, #65535
+       ldr     r0, [r4, #-2076]
+       movw    fp, #3908
+       ldr     r9, [r4, #-952]
+       cmp     r3, r2
+       str     r0, [r4, #176]
+       str     r9, [r4, #180]
+       beq     .L2270
+       ldrh    r8, [r6, fp]
+       mov     r1, #1
+       mov     r2, r1
+       ldr     r0, .L2285+12
+       mla     r8, r8, r5, r3
+       mov     r3, r8, asl #10
+       str     r3, [r4, #172]
+       bl      FlashReadPages
+       ldrh    r2, [r6, fp]
+       ldr     r0, [r7, #28]
+       add     r2, r2, #7
+       ldr     r1, [r4, #176]
+       mov     r2, r2, lsr #3
+       bl      memcpy
+       b       .L2271
+.L2270:
+       mov     r1, r5
+       bl      FlashGetBadBlockList
+       ldr     r0, [r4, #176]
+       ldr     r1, [r7, #28]
+       bl      FtlBbt2Bitmap
+       ldrh    fp, [r6, fp]
+.L2273:
+       sub     fp, fp, #1
+       uxth    fp, fp
+.L2284:
+       movw    r8, #3908
+       ldrh    r0, [r6, r8]
+       mla     r0, r0, r5, fp
+       uxth    r0, r0
+       bl      FtlBbmIsBadBlock
+       cmp     r0, #1
+       beq     .L2273
+       mov     r1, #0
+       mov     r2, #16
+       strh    fp, [sl, #-2]   @ movhi
+       ldr     r0, [r4, #-952]
+       bl      ftl_memset
+       ldr     r3, .L2285+16
+       strh    r3, [r9, #0]    @ movhi
+       mov     r3, #0
+       str     r3, [r9, #4]
+       ldrh    r3, [sl, #-2]
+       ldrh    r8, [r6, r8]
+       strh    r3, [r9, #2]    @ movhi
+       ldrh    r3, [sl, #-2]
+       ldr     r1, [r7, #28]
+       ldr     r0, [r4, #176]
+       mla     r8, r8, r5, r3
+       mov     r3, r8, asl #10
+       str     r3, [r4, #172]
+       ldr     r3, .L2285+20
+       ldrh    r2, [r4, r3]
+       mov     r2, r2, asl #2
+       bl      memcpy
+       mov     r1, #1
+       mov     r2, r1
+       ldr     r0, .L2285+12
+       bl      FlashEraseBlocks
+       mov     r1, #1
+       mov     r3, r1
+       ldr     r0, .L2285+12
+       mov     r2, r1
+       bl      FlashProgPages
+       ldr     r3, [r4, #168]
+       cmn     r3, #1
+       bne     .L2271
+       uxth    r0, r8
+       bl      FtlBbmMapBadBlock
+       b       .L2284
+.L2271:
+       uxth    r0, r8
+       add     r5, r5, #1
+       bl      FtlBbmMapBadBlock
+       add     r7, r7, #4
+.L2269:
+       movw    r3, #3866
+       ldrh    r3, [r6, r3]
+       cmp     r5, r3
+       bcc     .L2275
+       mov     r4, #0
+       ldr     r7, .L2285+4
+       movw    r6, #3926
+       b       .L2276
+.L2277:
+       mov     r0, r4
+       add     r4, r4, #1
+       bl      FtlBbmMapBadBlock
+       uxth    r4, r4
+.L2276:
+       ldrh    r3, [r7, r6]
+       ldr     r5, .L2285+4
+       cmp     r3, r4
+       bhi     .L2277
+       movw    r7, #3992
+       movw    r6, #3980
+       ldrh    r4, [r5, r7]
+       sub     r4, r4, #1
+       uxth    r4, r4
+       b       .L2278
+.L2283:
+       mov     r0, r4
+       bl      FtlBbmIsBadBlock
+       cmp     r0, #1
+       beq     .L2279
+       mov     r0, r4
+       bl      FlashTestBlk
+       cmp     r0, #0
+       beq     .L2280
+       mov     r0, r4
+       bl      FtlBbmMapBadBlock
+       b       .L2279
+.L2280:
+       ldrh    r2, [r5, r6]
+       movw    r3, #65535
+       cmp     r2, r3
+       streqh  r4, [r5, r6]    @ movhi
+.L2281:
+       ldrne   r2, .L2285+4
+       movne   r3, #3984
+       strneh  r4, [r2, r3]    @ movhi
+       bne     .L2282
+.L2279:
+       sub     r4, r4, #1
+       uxth    r4, r4
+.L2278:
+       ldrh    r3, [r5, r7]
+       sub     r3, r3, #48
+       cmp     r4, r3
+       bgt     .L2283
+.L2282:
+       ldr     r4, .L2285+4
+       movw    r7, #3980
+       ldr     r3, .L2285+8
+       mov     r6, #3984
+       mov     r5, #0
+       movw    r8, #3982
+       str     r5, [r4, #3988]
+       mov     r1, #1
+       ldr     r0, [r3, #-2088]
+       mov     r2, #2
+       ldrh    r3, [r4, r7]
+       strh    r5, [r4, r8]    @ movhi
+       mov     r3, r3, asl #10
+       str     r3, [r0, #4]
+       ldrh    r3, [r4, r6]
+       mov     r3, r3, asl #10
+       str     r3, [r0, #40]
+       bl      FlashEraseBlocks
+       ldrh    r0, [r4, r7]
+       bl      FtlBbmMapBadBlock
+       ldrh    r0, [r4, r6]
+       bl      FtlBbmMapBadBlock
+       bl      FtlBbmTblFlush
+       ldr     r3, [r4, #3988]
+       ldrh    r2, [r4, r6]
+       add     r3, r3, #1
+       str     r3, [r4, #3988]
+       ldrh    r3, [r4, r7]
+       strh    r5, [r4, r8]    @ movhi
+       strh    r2, [r4, r7]    @ movhi
+       strh    r3, [r4, r6]    @ movhi
+       bl      FtlBbmTblFlush
+       mov     r0, r5
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L2286:
+       .align  2
+.L2285:
+       .word   .LANCHOR0+3980
+       .word   .LANCHOR0
+       .word   .LANCHOR2
+       .word   .LANCHOR2+168
+       .word   -3872
+       .word   -1032
+       .fnend
+       .size   FtlMakeBbt, .-FtlMakeBbt
+       .align  2
+       .global FtlLowFormat
+       .type   FtlLowFormat, %function
+FtlLowFormat:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r2, #0
+       ldr     r3, .L2307
+       str     r2, [r3, #-1848]
+       str     r2, [r3, #-1844]
+       ldr     r3, .L2307+4
+       ldr     r0, [r3, #3848]
+       uxth    r0, r0
+       bl      FtlFreeSysBlkQueueInit
+       bl      FtlLoadBbt
+       cmp     r0, #0
+       beq     .L2288
+       bl      FtlMakeBbt
+.L2288:
+       mov     r3, #0
+       ldr     ip, .L2307+4
+       movw    r0, #3918
+       ldr     r2, .L2307
+       ldr     r1, .L2307+8
+       b       .L2289
+.L2290:
+       ldr     lr, [r2, #-960]
+       mvn     r4, r3
+       orr     r4, r3, r4, asl #16
+       str     r4, [lr, r3, asl #2]
+       ldr     lr, [r2, #-956]
+       str     r1, [lr, r3, asl #2]
+       add     r3, r3, #1
+       uxth    r3, r3
+.L2289:
+       ldrh    lr, [ip, r0]
+       ldr     r8, .L2307+4
+       cmp     r3, lr, asl #7
+       blt     .L2290
+       movw    r3, #3852
+       mov     r5, #0
+       ldrh    r6, [r8, r3]
+       movw    r7, #3854
+       b       .L2291
+.L2292:
+       mov     r0, r6
+       mov     r1, #1
+       bl      FtlLowFormatEraseBlock
+       add     r6, r6, #1
+       uxth    r6, r6
+       add     r5, r5, r0
+       uxth    r5, r5
+.L2291:
+       ldrh    r3, [r8, r7]
+       ldr     r4, .L2307+4
+       cmp     r3, r6
+       bhi     .L2292
+       movw    r3, #3844
+       ldrh    r1, [r4, r3]
+       sub     r3, r5, #3
+       cmp     r3, r1, asl #1
+       bge     .L2293
+.L2297:
+       mov     r4, #0
+       ldr     r8, .L2307+4
+       mov     r6, r4
+       movw    r7, #3852
+       b       .L2294
+.L2293:
+       mov     r0, r5
+       movw    r6, #3854
+       bl      __aeabi_uidiv
+       ldr     r3, [r4, #3944]
+       add     r0, r0, r3
+       uxth    r0, r0
+       bl      FtlSysBlkNumInit
+       ldr     r0, [r4, #3848]
+       uxth    r0, r0
+       bl      FtlFreeSysBlkQueueInit
+       movw    r3, #3852
+       ldrh    r5, [r4, r3]
+       b       .L2295
+.L2296:
+       mov     r0, r5
+       mov     r1, #1
+       bl      FtlLowFormatEraseBlock
+       add     r5, r5, #1
+       uxth    r5, r5
+.L2295:
+       ldrh    r3, [r4, r6]
+       cmp     r3, r5
+       bhi     .L2296
+       b       .L2297
+.L2298:
+       mov     r0, r6
+       mov     r1, #0
+       bl      FtlLowFormatEraseBlock
+       add     r6, r6, #1
+       uxth    r6, r6
+       add     r4, r4, r0
+       uxth    r4, r4
+.L2294:
+       ldrh    r3, [r8, r7]
+       ldr     r5, .L2307+4
+       cmp     r3, r6
+       bhi     .L2298
+       movw    r3, #3854
+       ldr     fp, [r5, #3856]
+       ldrh    r3, [r5, r3]
+       ldr     r9, .L2307
+       mov     r0, fp
+       ldr     sl, .L2307+12
+       str     r3, [r5, #3976]
+       movw    r3, #3844
+       ldrh    r6, [r5, r3]
+       mov     r1, r6
+       bl      __aeabi_uidiv
+       ubfx    r8, r0, #5, #16
+       mov     r7, r0
+       add     r3, r8, #36
+       strh    r3, [r9, sl]    @ movhi
+       mov     r3, #24
+       str     r0, [r5, #3972]
+       mul     r3, r3, r6
+       cmp     r4, r3
+       ble     .L2299
+       rsb     r0, r4, fp
+       mov     r1, r6
+       bl      __aeabi_uidiv
+       str     r0, [r5, #3972]
+       mov     r0, r0, lsr #5
+       add     r0, r0, #24
+       strh    r0, [r9, sl]    @ movhi
+.L2299:
+       ldr     r5, .L2307
+       ldr     r3, [r5, #-1884]
+       cmp     r3, #1
+       bne     .L2300
+       mov     r0, r4
+       mov     r1, r6
+       bl      __aeabi_uidiv
+       ldr     sl, .L2307+12
+       ldrh    r9, [r5, sl]
+       uxtah   r0, r9, r0
+       add     r9, r9, r0, lsr #2
+       strh    r9, [r5, sl]    @ movhi
+.L2300:
+       ldr     r0, .L2307+4
+       mov     r3, #3904
+       ldrh    r3, [r0, r3]
+       cmp     r3, #0
+       beq     .L2301
+       ldr     r1, .L2307
+       ldr     r2, .L2307+12
+       ldrh    ip, [r1, r2]
+       add     ip, ip, r3, lsr #1
+       strh    ip, [r1, r2]    @ movhi
+       mul     ip, r6, r3
+       cmp     ip, r4
+       strgt   r7, [r0, #3972]
+       addgt   r3, r3, #32
+       addgt   r8, r8, r3
+       strgth  r8, [r1, r2]    @ movhi
+.L2301:
+       ldr     r4, .L2307
+       ldr     r5, .L2307+4
+       ldr     r3, .L2307+12
+       ldr     r7, .L2307+16
+       ldr     r2, [r5, #3972]
+       ldrh    r3, [r4, r3]
+       rsb     r3, r3, r2
+       mul     r6, r6, r3
+       movw    r3, #3912
+       ldrh    r3, [r5, r3]
+       str     r6, [r4, #204]
+       mul     r6, r3, r6
+       movw    r3, #3918
+       ldrh    r3, [r5, r3]
+       str     r6, [r5, #3972]
+       mul     r6, r3, r6
+       str     r6, [r5, #3952]
+       mvn     r6, #0
+       bl      FtlBbmTblFlush
+       movw    r3, #3854
+       ldrh    r2, [r5, r3]
+       mov     r1, #0
+       ldr     r0, [r4, #-2064]
+       mov     r2, r2, asl #1
+       bl      ftl_memset
+       ldr     r1, .L2307+20
+       mov     r3, #0
+       ldr     r2, .L2307+24
+       str     r3, [r4, #-1892]
+       strh    r3, [r4, r1]    @ movhi
+       sub     r1, r1, #288
+       strb    r3, [r4, #-1750]
+       strh    r3, [r4, r1]    @ movhi
+       mov     r1, #255
+       strb    r3, [r4, #-1748]
+       strb    r3, [r4, #-2038]
+       strh    r3, [r4, r7]    @ movhi
+       mov     r3, #1
+       strb    r3, [r4, #-2036]
+       movw    r3, #3852
+       strh    r6, [r4, r2]    @ movhi
+       ldrh    r2, [r5, r3]
+       ldr     r0, [r4, #-1888]
+       mov     r2, r2, lsr #3
+       bl      ftl_memset
+.L2302:
+       ldr     r0, .L2307+28
+       bl      make_superblock
+       ldrb    r3, [r4, #-2037]        @ zero_extendqisi2
+       ldr     r5, .L2307
+       cmp     r3, #0
+       ldr     r3, .L2307+16
+       bne     .L2303
+       ldrh    r3, [r4, r7]
+       ldr     r2, [r4, #-2064]
+       mov     r3, r3, asl #1
+       strh    r6, [r2, r3]    @ movhi
+       ldrh    r3, [r4, r7]
+       add     r3, r3, #1
+       strh    r3, [r4, r7]    @ movhi
+       b       .L2302
+.L2303:
+       ldr     r2, [r5, #-1848]
+       mvn     r7, #0
+       ldr     r1, [r5, #-2064]
+       ldr     r6, .L2307+32
+       str     r2, [r5, #-2032]
+       add     r2, r2, #1
+       str     r2, [r5, #-1848]
+       ldr     r2, .L2307+36
+       ldrh    r0, [r5, r2]
+       ldrh    r2, [r5, r3]
+       mov     r2, r2, asl #1
+       strh    r0, [r1, r2]    @ movhi
+       mov     r2, #0
+       ldr     r0, .L2307+40
+       ldrh    r3, [r5, r3]
+       strb    r2, [r5, #-1990]
+       add     r3, r3, #1
+       strh    r2, [r5, r0]    @ movhi
+       strh    r3, [r5, r6]    @ movhi
+       mov     r3, #1
+       strb    r3, [r5, #-1988]
+.L2304:
+       ldr     r0, .L2307+44
+       bl      make_superblock
+       ldrb    r3, [r5, #-1989]        @ zero_extendqisi2
+       ldr     r4, .L2307
+       cmp     r3, #0
+       bne     .L2305
+       ldrh    r3, [r5, r6]
+       ldr     r2, [r5, #-2064]
+       mov     r3, r3, asl #1
+       strh    r7, [r2, r3]    @ movhi
+       ldrh    r3, [r5, r6]
+       add     r3, r3, #1
+       strh    r3, [r5, r6]    @ movhi
+       b       .L2304
+.L2305:
+       ldr     r3, [r4, #-1848]
+       mvn     r5, #0
+       ldr     r2, [r4, #-2064]
+       str     r3, [r4, #-1984]
+       add     r3, r3, #1
+       str     r3, [r4, #-1848]
+       ldr     r3, .L2307+48
+       ldrh    r1, [r4, r3]
+       sub     r3, r3, #4
+       ldrh    r3, [r4, r3]
+       mov     r3, r3, asl #1
+       strh    r1, [r2, r3]    @ movhi
+       ldr     r3, .L2307+52
+       strh    r5, [r4, r3]    @ movhi
+       bl      FtlFreeSysBlkQueueOut
+       ldr     r3, .L2307+56
+       mov     r2, #0
+       strh    r0, [r4, r3]    @ movhi
+       add     r3, r3, #2
+       strh    r2, [r4, r3]    @ movhi
+       add     r3, r3, #2
+       ldr     r2, [r4, #204]
+       strh    r5, [r4, r3]    @ movhi
+       add     r3, r3, #2
+       strh    r2, [r4, r3]    @ movhi
+       ldr     r3, [r4, #-1848]
+       str     r3, [r4, #-1760]
+       add     r3, r3, #1
+       str     r3, [r4, #-1848]
+       bl      FtlVpcTblFlush
+       bl      FtlSysBlkInit
+       cmp     r0, #0
+       mov     r0, #0
+       ldreq   r3, .L2307+60
+       moveq   r2, #1
+       streq   r2, [r3, #2960]
+       ldmfd   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L2308:
+       .align  2
+.L2307:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .word   168778952
+       .word   -1772
+       .word   -2044
+       .word   -1754
+       .word   -1756
+       .word   .LANCHOR2-2044
+       .word   -1996
+       .word   -2040
+       .word   -1994
+       .word   .LANCHOR2-1996
+       .word   -1992
+       .word   -1948
+       .word   -1768
+       .word   .LANCHOR1
+       .fnend
+       .size   FtlLowFormat, .-FtlLowFormat
+       .align  2
+       .global FtlReInitForSDUpdata
+       .type   FtlReInitForSDUpdata, %function
+FtlReInitForSDUpdata:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 16
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r0, r1, r2, r3, r4, lr}
+       .save {r0, r1, r2, r3, r4, lr}
+       ldr     r4, .L2333
+       ldr     r0, [r4, #112]
+       bl      FlashInit
+       cmp     r0, #0
+       movne   r0, #0
+       bne     .L2310
+       bl      FlashLoadFactorBbt
+       cmp     r0, #0
+       beq     .L2311
+       bl      FlashMakeFactorBbt
+.L2311:
+       ldr     r0, [r4, #116]
+       bl      FlashReadIdbDataRaw
+       cmp     r0, #0
+       beq     .L2312
+       mov     r1, #0
+       mov     r2, #16
+       mov     r0, sp
+       bl      FlashReadFacBbtData
+       ldr     r1, [sp, #0]
+       mov     r3, #0
+       mov     r0, #1
+       mov     r2, r3
+.L2314:
+       ands    ip, r1, r0, asl r2
+       add     r2, r2, #1
+       addne   r3, r3, #1
+       cmp     r2, #16
+       bne     .L2314
+       cmp     r3, #6
+       ldrls   r3, .L2333+4
+       bls     .L2329
+       mov     r2, #0
+       mov     r0, #1
+.L2315:
+       ands    ip, r1, r0, asl r2
+       add     r2, r2, #1
+       addne   r3, r3, #1
+       cmp     r2, #24
+       bne     .L2315
+       cmp     r3, #17
+       ldr     r3, .L2333+4
+       movhi   r2, #36
+.L2329:
+       strb    r2, [r3, #1]
+       movw    r2, #2226
+       ldr     r3, .L2333+4
+       ldrb    r1, [r3, #1]    @ zero_extendqisi2
+       strh    r1, [r3, r2]    @ movhi
+.L2312:
+       ldr     r1, .L2333+8
+       mov     r4, #1
+       ldr     r0, .L2333+12
+       bl      printk
+       ldr     r0, .L2333+16
+       bl      FtlConstantsInit
+       bl      FtlVariablesInit
+       ldr     r3, .L2333+4
+       ldr     r0, [r3, #3848]
+       uxth    r0, r0
+       bl      FtlFreeSysBlkQueueInit
+       b       .L2319
+.L2321:
+       add     r4, r4, #1
+.L2319:
+       bl      FtlLoadBbt
+       cmp     r0, #0
+       bne     .L2331
+.L2320:
+       bl      FtlSysBlkInit
+       cmp     r0, #0
+       beq     .L2322
+.L2331:
+       bl      FtlLowFormat
+       cmp     r4, #3
+       bls     .L2321
+       b       .L2332
+.L2322:
+       ldr     r3, .L2333+20
+       mov     r2, #1
+       str     r2, [r3, #2960]
+       b       .L2310
+.L2332:
+       mvn     r0, #0
+.L2310:
+       add     sp, sp, #16
+       ldmfd   sp!, {r4, pc}
+.L2334:
+       .align  2
+.L2333:
+       .word   .LANCHOR2
+       .word   .LANCHOR0
+       .word   .LC76
+       .word   .LC75
+       .word   .LANCHOR0+2200
+       .word   .LANCHOR1
+       .fnend
+       .size   FtlReInitForSDUpdata, .-FtlReInitForSDUpdata
+       .align  2
+       .global flash_boot_enter_slc_mode
+       .type   flash_boot_enter_slc_mode, %function
+flash_boot_enter_slc_mode:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L2337
+       ldr     r2, [r3, #3788]
+       ldr     r3, .L2337+4
+       cmp     r2, r3
+       bxne    lr
+       b       flash_enter_slc_mode
+.L2338:
+       .align  2
+.L2337:
+       .word   .LANCHOR0
+       .word   1446522928
+       .fnend
+       .size   flash_boot_enter_slc_mode, .-flash_boot_enter_slc_mode
+       .align  2
+       .global flash_boot_exit_slc_mode
+       .type   flash_boot_exit_slc_mode, %function
+flash_boot_exit_slc_mode:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       @ link register save eliminated.
+       ldr     r3, .L2341
+       ldr     r2, [r3, #3788]
+       ldr     r3, .L2341+4
+       cmp     r2, r3
+       bxne    lr
+       b       flash_exit_slc_mode
+.L2342:
+       .align  2
+.L2341:
+       .word   .LANCHOR0
+       .word   1446522928
+       .fnend
+       .size   flash_boot_exit_slc_mode, .-flash_boot_exit_slc_mode
+       .align  2
+       .global IdBlockReadData
+       .type   IdBlockReadData, %function
+IdBlockReadData:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 24
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #28
+       sub     sp, sp, #28
+       ldr     r4, .L2348
+       mov     r6, r0
+       str     r2, [sp, #20]
+       mov     sl, r1
+       ldr     r0, .L2348+4
+       mov     r1, r6
+       ldr     r2, [r4, #2776]
+       ldr     r3, [r4, #4]
+       ldr     r8, .L2348+8
+       ldrb    r5, [r2, #9]    @ zero_extendqisi2
+       mov     r2, sl
+       mul     r5, r5, r3
+       bl      printk
+       ldr     r3, [r4, #2776]
+       mov     r0, r6
+       ldrb    r9, [r3, #9]    @ zero_extendqisi2
+       uxth    r5, r5
+       mov     r1, r5
+       mov     r5, #0
+       bl      __aeabi_uidivmod
+       mul     r2, r9, r1
+       rsb     ip, r1, r6
+       mov     r7, r1
+       str     ip, [sp, #12]
+       ubfx    r2, r2, #2, #2
+       b       .L2344
+.L2346:
+       add     r1, r5, r7
+       rsb     r3, r2, #4
+       ubfx    r1, r1, #2, #16
+       ldrb    r0, [r4, #80]   @ zero_extendqisi2
+       uxth    r3, r3
+       str     r3, [sp, #16]
+       add     r3, r4, r1, asl #1
+       cmp     r0, #0
+       add     r3, r3, #2224
+       add     r3, r3, #4
+       ldrh    r3, [r3, #0]
+       beq     .L2345
+       ldr     r0, [r4, #3788]
+       ldr     ip, .L2348+12
+       cmp     r0, ip
+       moveq   r3, r1
+.L2345:
+       ldr     ip, [sp, #12]
+       ldrb    r0, [r8, #128]  @ zero_extendqisi2
+       add     r2, r2, ip
+       ldrb    ip, [r4, #3836] @ zero_extendqisi2
+       ldr     fp, [r8, #116]
+       mla     r2, r9, r3, r2
+       ldr     r3, [r4, #2776]
+       ldrb    r1, [r3, #9]    @ zero_extendqisi2
+       str     ip, [sp, #0]
+       stmib   sp, {r1, r2}
+       bl      FlashBchSel
+       mov     r0, #0
+       bl      flash_boot_enter_slc_mode
+       ldr     r2, [sp, #8]
+       ldr     r1, [sp, #4]
+       mov     r0, r2
+       bl      __aeabi_uidiv
+       mov     r2, fp
+       mov     r1, r0
+       mov     r0, #0
+       mov     r3, r0
+       bl      FlashReadPage
+       mov     r0, #0
+       bl      flash_boot_exit_slc_mode
+       ldr     ip, [sp, #0]
+       mov     r0, ip
+       bl      FlashBchSel
+       ldr     ip, [sp, #20]
+       mov     r2, #2048
+       ldr     r1, [r8, #116]
+       add     r0, ip, r5, asl #9
+       bl      memcpy
+       ldr     ip, [sp, #16]
+       mov     r2, #0
+       add     r5, ip, r5
+       uxth    r5, r5
+.L2344:
+       cmp     r5, sl
+       bcc     .L2346
+       mov     r1, r6
+       mov     r2, sl
+       mov     r3, #0
+       ldr     r0, .L2348+16
+       bl      printk
+       mov     r0, #0
+       add     sp, sp, #28
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L2349:
+       .align  2
+.L2348:
+       .word   .LANCHOR0
+       .word   .LC123
+       .word   .LANCHOR2
+       .word   1446522928
+       .word   .LC124
+       .fnend
+       .size   IdBlockReadData, .-IdBlockReadData
+       .align  2
+       .global IDBlockWriteData
+       .type   IDBlockWriteData, %function
+IDBlockWriteData:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 88
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .pad #92
+       sub     sp, sp, #92
+       ldr     r4, .L2357
+       mov     r5, r0
+       str     r2, [sp, #20]
+       mov     r8, r1
+       ldr     r0, .L2357+4
+       mov     r1, r5
+       ldr     r2, [r4, #2776]
+       mov     r7, r5
+       ldr     r3, [r4, #4]
+       ldr     fp, .L2357+8
+       ldrb    r6, [r2, #9]    @ zero_extendqisi2
+       mov     r2, r8
+       mul     r6, r6, r3
+       bl      printk
+       mov     r0, #0
+       bl      flash_boot_enter_slc_mode
+       movw    r3, #2220
+       ldrh    r1, [r4, r3]
+       mov     r0, r5
+       bl      __aeabi_uidiv
+       uxth    r6, r6
+       mov     r1, r0
+       mov     r0, #0
+       mov     r2, r0
+       bl      FlashEraseBlock
+       mov     r0, #0
+       bl      flash_boot_exit_slc_mode
+       ldr     r3, [r4, #2776]
+       mov     r1, r6
+       mov     r0, r5
+       mov     r6, #0
+       ldrb    sl, [r3, #9]    @ zero_extendqisi2
+       bl      __aeabi_uidivmod
+       mov     r9, r1
+       rsb     r1, r1, r5
+       str     r1, [sp, #16]
+       b       .L2351
+.L2355:
+       add     r3, r6, r9
+       ubfx    r3, r3, #2, #16
+       cmp     r3, #0
+       beq     .L2352
+       add     r1, r3, #1
+       ldrb    r0, [r4, #80]   @ zero_extendqisi2
+       add     r2, r4, r1, asl #1
+       cmp     r0, #0
+       add     r2, r2, #2224
+       add     r2, r2, #4
+       ldrh    r2, [r2, #0]
+       beq     .L2353
+       ldr     r0, [r4, #3788]
+       cmp     r0, fp
+       uxtheq  r2, r1
+.L2353:
+       sub     r2, r2, #1
+       mov     r2, r2, asl #2
+       str     r2, [sp, #24]
+       mov     r2, #0
+       str     r2, [sp, #28]
+.L2352:
+       add     r2, r4, r3, asl #1
+       add     r2, r2, #2224
+       ldrh    r5, [r2, #4]
+       ldrb    r2, [r4, #80]   @ zero_extendqisi2
+       cmp     r2, #0
+       beq     .L2354
+       ldr     r2, [r4, #3788]
+       cmp     r2, fp
+       moveq   r5, r3
+.L2354:
+       ldr     r2, [sp, #16]
+       ldr     r1, [sp, #20]
+       ldrb    ip, [r4, #3836] @ zero_extendqisi2
+       mla     r3, sl, r5, r2
+       add     r2, r1, r6, asl #9
+       ldr     r1, .L2357+12
+       add     r6, r6, #4
+       uxth    r6, r6
+       ldrb    r0, [r1, #128]  @ zero_extendqisi2
+       str     ip, [sp, #4]
+       str     r2, [sp, #8]
+       str     r3, [sp, #12]
+       bl      FlashBchSel
+       mov     r0, #0
+       bl      flash_boot_enter_slc_mode
+       ldr     r3, [sp, #12]
+       ldr     r1, [r4, #2776]
+       mov     r0, r3
+       ldrb    r1, [r1, #9]    @ zero_extendqisi2
+       bl      __aeabi_uidiv
+       ldr     r2, [sp, #8]
+       add     r3, sp, #24
+       mov     r1, r0
+       mov     r0, #0
+       bl      FlashProgPage
+       mov     r0, #0
+       bl      flash_boot_exit_slc_mode
+       ldr     ip, [sp, #4]
+       mov     r0, ip
+       bl      FlashBchSel
+       ldr     r0, [sp, #16]
+       mov     r1, sl
+       bl      __aeabi_uidiv
+       add     r2, r5, #1
+       uxth    r2, r2
+       mov     r1, r0
+       mov     r0, #0
+       bl      FlashPageProgMsbFFData
+.L2351:
+       cmp     r6, r8
+       bcc     .L2355
+       mov     r1, r7
+       mov     r2, r8
+       mov     r3, #0
+       ldr     r0, .L2357+16
+       bl      printk
+       mov     r5, r7
+       mov     r0, #0
+       add     sp, sp, #92
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L2358:
+       .align  2
+.L2357:
+       .word   .LANCHOR0
+       .word   .LC125
+       .word   1446522928
+       .word   .LANCHOR2
+       .word   .LC126
+       .fnend
+       .size   IDBlockWriteData, .-IDBlockWriteData
+       .align  2
+       .global write_idblock
+       .type   write_idblock, %function
+write_idblock:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 8
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L2372
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       .save {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+       mov     r7, r2
+       ldr     r2, [r3, #4]
+       .pad #20
+       sub     sp, sp, #20
+       ldr     r3, [r3, #2776]
+       mov     r6, r0
+       mov     r4, r1
+       mov     r0, #256000
+       mov     r1, #208
+       ldrb    r3, [r3, #9]    @ zero_extendqisi2
+       mul     r3, r3, r2
+       mov     r2, #6
+       uxth    r3, r3
+       str     r3, [sp, #8]
+       bl      kmalloc_order_trace
+       subs    r5, r0, #0
+       mvneq   r0, #0
+       beq     .L2360
+       add     sl, r6, #508
+       add     sl, sl, #3
+       mov     sl, sl, lsr #9
+       cmp     sl, #255
+       bhi     .L2361
+       add     r0, r4, sl, asl #9
+       mov     r1, r4
+       rsb     r2, sl, #256
+       bl      memcpy
+.L2361:
+       ldr     r8, .L2372
+       mov     r3, #5
+       ldr     r0, .L2372+4
+       mov     r1, r7
+       mov     r2, #4
+       add     sl, sl, #128
+       bl      rknand_print_hex
+       ldrb    r2, [r8, #1]    @ zero_extendqisi2
+       ldr     r1, [r4, #512]
+       cmp     sl, #256
+       movcs   sl, #256
+       ldr     r0, .L2372+8
+       mov     fp, #0
+       bl      printk
+       ldrb    r3, [r8, #1]    @ zero_extendqisi2
+       ldr     r2, [r4, #512]
+       mov     r1, sl
+       ldr     r0, .L2372+12
+       mov     r9, fp
+       cmp     r2, r3
+       mov     r8, r4
+       mov     r2, r6
+       strhi   r3, [r4, #512]
+       mov     r6, r7
+       bl      printk
+       mov     r1, sl, asl #7
+       str     r1, [sp, #12]
+.L2367:
+       ldr     r1, .L2372
+       movw    r2, #2226
+       ldr     r3, [r6], #4
+       ldrh    r2, [r1, r2]
+       cmp     r3, r2
+       bcs     .L2363
+       ldr     r2, .L2372+16
+       ldr     r2, [r2, #132]
+       cmp     r3, r2
+       bcc     .L2363
+       mov     r0, r5
+       mov     r1, #512
+       bl      __memzero
+       ldr     r2, [sp, #8]
+       ldr     r0, [r6, #-4]
+       mov     r1, sl
+       mul     r0, r0, r2
+       mov     r2, r8
+       bl      IDBlockWriteData
+       ldr     r3, [sp, #8]
+       ldr     r0, [r6, #-4]
+       mov     r1, sl
+       mov     r2, r5
+       mul     r0, r0, r3
+       bl      IdBlockReadData
+       mov     r3, #0
+       mov     r7, r3
+.L2366:
+       ldr     r1, [r5, r3]
+       add     r3, r3, #4
+       add     r2, r8, r3
+       ldr     r2, [r2, #-4]
+       cmp     r1, r2
+       beq     .L2364
+       bic     r4, r7, #255
+       stmia   sp, {r1, r2}
+       mov     r3, r7
+       mov     r1, r9
+       ldr     r2, [r6, #-4]
+       mov     r4, r4, asl #2
+       ldr     r0, .L2372+20
+       bl      printk
+       ldr     r0, .L2372+24
+       add     r1, r8, r4
+       mov     r2, #4
+       mov     r3, #256
+       bl      rknand_print_hex
+       mov     r3, #256
+       mov     r2, #4
+       ldr     r0, .L2372+28
+       add     r1, r5, r4
+       bl      rknand_print_hex
+       mov     r0, r5
+       mov     r1, #512
+       bl      __memzero
+       ldr     r1, [sp, #8]
+       ldr     r0, [r6, #-4]
+       mov     r2, r5
+       mul     r0, r0, r1
+       mov     r1, #4
+       bl      IDBlockWriteData
+       ldr     r0, .L2372+32
+       bl      printk
+       ldr     r2, [sp, #12]
+       cmp     r7, r2
+       bcc     .L2363
+       b       .L2365
+.L2364:
+       ldr     r1, [sp, #12]
+       add     r7, r7, #1
+       cmp     r7, r1
+       bne     .L2366
+.L2365:
+       add     fp, fp, #1
+.L2363:
+       add     r9, r9, #1
+       cmp     r9, #5
+       bne     .L2367
+       mov     r0, r5
+       bl      kfree
+       cmp     fp, #0
+       mvneq   r0, #0
+       movne   r0, #0
+.L2360:
+       add     sp, sp, #20
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+.L2373:
+       .align  2
+.L2372:
+       .word   .LANCHOR0
+       .word   .LC127
+       .word   .LC128
+       .word   .LC129
+       .word   .LANCHOR2
+       .word   .LC130
+       .word   .LC131
+       .word   .LC132
+       .word   .LC133
+       .fnend
+       .size   write_idblock, .-write_idblock
+       .align  2
+       .global CRC_32
+       .type   CRC_32, %function
+CRC_32:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       mov     r3, r0
+       mov     r0, #0
+       stmfd   sp!, {r4, lr}
+       .save {r4, lr}
+       mov     r2, r0
+       ldr     ip, .L2377
+       b       .L2375
+.L2376:
+       ldrb    r4, [r3, r2]    @ zero_extendqisi2
+       add     r2, r2, #1
+       eor     r4, r4, r0, lsr #24
+       add     r4, ip, r4, asl #2
+       ldr     r4, [r4, #3008]
+       eor     r0, r4, r0, asl #8
+.L2375:
+       cmp     r2, r1
+       bne     .L2376
+       ldmfd   sp!, {r4, pc}
+.L2378:
+       .align  2
+.L2377:
+       .word   .LANCHOR1
+       .fnend
+       .size   CRC_32, .-CRC_32
+       .align  2
+       .type   rknand_sys_storage_ioctl, %function
+rknand_sys_storage_ioctl:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 520
+       @ frame_needed = 0, uses_anonymous_args = 0
+       ldr     r3, .L2488
+       stmfd   sp!, {r4, r5, r6, lr}
+       .save {r4, r5, r6, lr}
+       cmp     r1, r3
+       .pad #520
+       sub     sp, sp, #520
+       mov     r6, r1
+       mov     r5, r2
+       ldr     r4, [r0, #124]
+       beq     .L2388
+       bhi     .L2397
+       ldr     r3, .L2488+4
+       cmp     r1, r3
+       beq     .L2385
+       bhi     .L2398
+       sub     r3, r3, #125
+       cmp     r1, r3
+       beq     .L2382
+       bhi     .L2399
+       sub     r3, r3, #237
+       cmp     r1, r3
+       bne     .L2431
+       b       .L2484
+.L2399:
+       ldr     r3, .L2488+8
+       cmp     r1, r3
+       beq     .L2383
+       add     r3, r3, #1
+       cmp     r1, r3
+       bne     .L2431
+       b       .L2485
+.L2398:
+       ldr     r3, .L2488+12
+       cmp     r1, r3
+       beq     .L2387
+       bhi     .L2400
+       ldr     r3, .L2488+16
+       cmp     r1, r3
+       bne     .L2431
+       b       .L2486
+.L2400:
+       ldr     r3, .L2488+20
+       cmp     r1, r3
+       beq     .L2387
+       add     r3, r3, #10
+       cmp     r1, r3
+       bne     .L2431
+       b       .L2387
+.L2397:
+       ldr     r3, .L2488+24
+       cmp     r1, r3
+       beq     .L2393
+       bhi     .L2401
+       sub     r3, r3, #78
+       cmp     r1, r3
+       beq     .L2390
+       bcc     .L2389
+       add     r3, r3, #21
+       cmp     r1, r3
+       beq     .L2391
+       add     r3, r3, #56
+       cmp     r1, r3
+       bne     .L2431
+       b       .L2487
+.L2401:
+       ldr     r3, .L2488+28
+       cmp     r1, r3
+       beq     .L2396
+       bhi     .L2402
+       sub     r3, r3, #956
+       sub     r3, r3, #1
+       cmp     r1, r3
+       beq     .L2394
+       add     r3, r3, #956
+       cmp     r1, r3
+       bne     .L2431
+       b       .L2395
+.L2402:
+       ldr     r3, .L2488+32
+       cmp     r1, r3
+       beq     .L2395
+       add     r3, r3, #1
+       cmp     r1, r3
+       bne     .L2431
+       b       .L2396
+.L2389:
+       ldr     r0, .L2488+36
+       bl      printk
+       mov     r0, r4
+       mov     r1, r5
+       mov     r2, #512
+       bl      rk_copy_from_user
+       cmp     r0, #0
+       bne     .L2477
+.L2403:
+       ldr     r0, .L2488+40
+       ldmia   r4, {r1, r2}
+       bl      printk
+       ldr     r6, [r4, #4]
+       cmp     r6, #8
+       bhi     .L2470
+       bl      rknand_device_unlock
+       mov     r2, r4
+       mov     r1, r6
+       ldr     r0, [r4, #0]
+       bl      IdBlockReadData
+       bl      rknand_device_unlock
+       mov     r1, r4
+       mov     r0, r5
+       mov     r2, r6, asl #9
+       bl      rk_copy_to_user
+       subs    r4, r0, #0
+       ldrne   r0, .L2488+44
+       beq     .L2404
+       b       .L2479
+.L2390:
+       ldr     r0, .L2488+48
+       bl      printk
+       mov     r0, r4
+       mov     r1, r5
+       mov     r2, #4096
+       bl      rk_copy_from_user
+       cmp     r0, #0
+       bne     .L2477
+.L2405:
+       ldr     r5, .L2488+52
+       ldr     r0, .L2488+56
+       ldmia   r4, {r1, r2}
+       bl      printk
+       ldr     r3, [r5, #436]
+       cmp     r3, #0
+       bne     .L2406
+       mov     r0, #260096
+       mov     r1, #208
+       mov     r2, #6
+       bl      kmalloc_order_trace
+       cmp     r0, #0
+       str     r0, [r5, #436]
+       beq     .L2470
+.L2406:
+       ldr     r2, [r4, #4]
+       movw    r3, #4088
+       cmp     r2, r3
+       bhi     .L2470
+       ldr     r3, [r4, #0]
+       cmp     r3, #251904
+       bhi     .L2470
+       ldr     r1, .L2488+52
+       ldr     r0, [r1, #436]
+       add     r1, r4, #8
+       add     r0, r0, r3
+       bl      memcpy
+       b       .L2475
+.L2487:
+       ldr     r0, .L2488+60
+       bl      printk
+       mov     r0, r4
+       mov     r1, r5
+       mov     r2, #28
+       bl      rk_copy_from_user
+       cmp     r0, #0
+       bne     .L2477
+.L2407:
+       ldmia   r4, {r1, r2}
+       ldr     r0, .L2488+64
+       bl      printk
+       ldr     r1, [r4, #0]
+       cmp     r1, #256000
+       bhi     .L2470
+       ldr     r5, .L2488+52
+       ldr     r0, [r5, #436]
+       cmp     r0, #0
+       beq     .L2470
+       bl      CRC_32
+       ldr     r3, [r4, #4]
+       cmp     r3, r0
+       bne     .L2450
+       bl      rknand_device_unlock
+       add     r2, r4, #8
+       ldr     r1, [r5, #436]
+       ldr     r0, [r4, #0]
+       mov     r4, #0
+       bl      write_idblock
+       bl      rknand_device_unlock
+       ldr     r0, [r5, #436]
+       bl      kfree
+       str     r4, [r5, #436]
+       b       .L2404
+.L2391:
+       ldr     r0, .L2488+68
+       bl      printk
+       mov     r0, r4
+       bl      ReadFlashInfo
+       mov     r0, r5
+       mov     r1, r4
+       mov     r2, #11
+       b       .L2480
+.L2388:
+       ldr     r0, .L2488+72
+       bl      printk
+       bl      rknand_device_unlock
+       bl      FtlReInitForSDUpdata
+       mov     r6, r0
+       bl      rknand_device_unlock
+       cmp     r6, #0
+       bne     .L2470
+       bl      nand_blk_add_whole_disk
+       bl      rknand_device_unlock
+       mov     r1, r6
+       mov     r2, #64
+       mov     r0, r4
+       bl      FlashReadFacBbtData
+       bl      rknand_device_unlock
+       ldr     r0, .L2488+76
+       mov     r1, r4
+       mov     r2, #4
+       mov     r3, #8
+       bl      rknand_print_hex
+       mov     r0, r5
+       mov     r1, r4
+       mov     r2, #64
+       b       .L2480
+.L2393:
+       ldr     r0, .L2488+80
+       bl      printk
+       ldr     r3, .L2488+52
+       mov     r0, r5
+       mov     r1, r4
+       mov     r2, #4
+       ldr     r3, [r3, #440]
+       ldr     r3, [r3, #20]
+       str     r3, [r4, #0]
+       b       .L2480
+.L2394:
+       ldr     r0, .L2488+84
+       bl      printk
+       bl      rknand_device_unlock
+       mov     r1, #264
+       mov     r2, #2
+       mov     r3, r4
+       mov     r0, #16
+       bl      FtlRead
+       bl      rknand_device_unlock
+       mov     r0, r5
+       mov     r1, r4
+       mov     r2, #1024
+       b       .L2480
+.L2382:
+       ldr     r0, .L2488+88
+       bl      printk
+       mov     r0, sp
+       mov     r1, r5
+       mov     r2, #520
+       bl      rk_copy_from_user
+       subs    r4, r0, #0
+       bne     .L2477
+.L2408:
+       ldr     r2, [sp, #0]
+       ldr     r3, .L2488+92
+       cmp     r2, r3
+       bne     .L2472
+       ldr     r3, [sp, #4]
+       cmp     r3, #512
+       bhi     .L2472
+       ldr     r6, .L2488+52
+       mov     r2, #512
+       mov     r0, sp
+       ldr     r1, [r6, #440]
+       bl      memcpy
+       ldr     r2, [r6, #444]
+       ldr     r3, .L2488+96
+       cmp     r2, r3
+       beq     .L2409
+       add     r0, sp, #64
+       mov     r1, #128
+       str     r4, [sp, #8]
+       str     r4, [sp, #12]
+       bl      __memzero
+.L2409:
+       add     r0, sp, #256
+       mov     r1, #256
+       mov     r3, #0
+       str     r3, [sp, #16]
+       bl      __memzero
+       mov     r0, r5
+       mov     r1, sp
+       mov     r2, #520
+.L2480:
+       bl      rk_copy_to_user
+       b       .L2478
+.L2383:
+       ldr     r0, .L2488+100
+       bl      printk
+       mov     r0, sp
+       mov     r1, r5
+       mov     r2, #520
+       bl      rk_copy_from_user
+       cmp     r0, #0
+       ldrne   r0, .L2488+104
+       bne     .L2479
+       ldr     r2, [sp, #0]
+       ldr     r3, .L2488+92
+       cmp     r2, r3
+       bne     .L2472
+       ldr     r3, [sp, #4]
+       cmp     r3, #512
+       bhi     .L2472
+       ldr     r4, .L2488+52
+       ldr     r3, .L2488+96
+       ldr     r2, [r4, #444]
+       cmp     r2, r3
+       bne     .L2450
+       ldr     r3, [sp, #12]
+       sub     r2, r3, #1
+       cmp     r2, #127
+       mvnhi   r4, #2
+       bhi     .L2380
+       ldr     r0, [r4, #440]
+       add     r1, sp, #64
+       str     r3, [r0, #12]
+       add     r0, r0, #64
+       ldr     r2, [sp, #12]
+       bl      memcpy
+       mov     r0, #1
+       ldr     r1, [r4, #440]
+       b       .L2476
+.L2486:
+       ldr     r0, .L2488+108
+       bl      printk
+       mov     r0, sp
+       mov     r1, r5
+       mov     r2, #520
+       bl      rk_copy_from_user
+       cmp     r0, #0
+       bne     .L2477
+.L2411:
+       ldr     r2, [sp, #0]
+       ldr     r3, .L2488+112
+       cmp     r2, r3
+       bne     .L2472
+       ldr     r3, [sp, #4]
+       cmp     r3, #512
+       bhi     .L2472
+       ldr     r5, .L2488+52
+       ldr     r4, [r5, #448]
+       cmp     r4, #0
+       beq     .L2380
+       ldr     r3, [r5, #452]
+       ldr     r2, .L2488+116
+       ldr     r1, [r3, #0]
+       cmp     r1, r2
+       beq     .L2412
+       str     r2, [r3, #0]
+       mov     r2, #504
+       ldr     r3, [r5, #452]
+       str     r2, [r3, #4]
+       mov     r2, #0
+       str     r2, [r3, #8]
+       str     r2, [r3, #12]
+.L2412:
+       ldr     r1, [r5, #452]
+       mov     r4, #0
+       mov     r0, r4
+       str     r4, [r1, #16]
+       bl      StorageSysDataStore
+       ldr     r3, [r5, #440]
+       ldr     r2, .L2488+92
+       ldr     r5, .L2488+52
+       ldr     r1, [r3, #0]
+       cmp     r1, r2
+       strne   r2, [r3, #0]
+       ldr     r0, [r5, #440]
+       mov     r1, #128
+       ldrne   r3, .L2488+52
+       movne   r2, #504
+       ldrne   r3, [r3, #440]
+       stmneib r3, {r2, r4}
+       mov     r4, #0
+       str     r4, [r0, #12]
+       add     r0, r0, #64
+       bl      __memzero
+       mov     r0, #1
+       ldr     r1, [r5, #440]
+       bl      StorageSysDataStore
+       str     r4, [r5, #448]
+       str     r4, [r5, #444]
+       b       .L2404
+.L2385:
+       ldr     r0, .L2488+120
+       bl      printk
+       mov     r0, sp
+       mov     r1, r5
+       mov     r2, #520
+       bl      rk_copy_from_user
+       subs    r4, r0, #0
+       bne     .L2477
+.L2414:
+       ldr     r2, [sp, #0]
+       ldr     r3, .L2488+124
+       cmp     r2, r3
+       bne     .L2472
+       ldr     r3, [sp, #4]
+       cmp     r3, #512
+       bhi     .L2472
+       ldr     r5, .L2488+52
+       ldr     r3, [r5, #448]
+       cmp     r3, #1
+       beq     .L2380
+       ldr     r3, [r5, #452]
+       mov     r0, #0
+       ldr     r2, .L2488+116
+       ldr     r1, [r3, #0]
+       cmp     r1, r2
+       strne   r2, [r3, #0]
+       ldr     r1, [r5, #452]
+       ldrne   r3, [r5, #452]
+       movne   r2, #504
+       strne   r4, [r3, #12]
+       stmneib r3, {r2, r4}
+       mov     r3, #1
+       str     r3, [r1, #16]
+       bl      StorageSysDataStore
+       ldr     r3, [r5, #440]
+       ldr     r2, .L2488+92
+       ldr     r1, [r3, #0]
+       cmp     r1, r2
+       beq     .L2416
+       str     r2, [r3, #0]
+       mov     r1, #504
+       ldr     r3, .L2488+52
+       mov     r2, #0
+       ldr     r3, [r3, #440]
+       stmib   r3, {r1, r2}
+.L2416:
+       ldr     r5, .L2488+52
+       mov     r1, #128
+       mov     r4, #0
+       ldr     r0, [r5, #440]
+       str     r4, [r0, #12]
+       add     r0, r0, #64
+       bl      __memzero
+       mov     r0, #1
+       ldr     r1, [r5, #440]
+       bl      StorageSysDataStore
+       mov     r3, #1
+       str     r3, [r5, #448]
+       b       .L2404
+.L2485:
+       ldr     r0, .L2488+128
+       bl      printk
+       mov     r0, sp
+       mov     r1, r5
+       mov     r2, #520
+       bl      rk_copy_from_user
+       cmp     r0, #0
+       bne     .L2477
+.L2417:
+       ldr     r2, [sp, #0]
+       ldr     r3, .L2488+132
+       cmp     r2, r3
+       bne     .L2472
+       ldr     r2, [sp, #4]
+       cmp     r2, #512
+       addls   r0, sp, #8
+       ldrls   r1, .L2488+136
+       bls     .L2483
+       b       .L2472
+.L2387:
+       ldr     r3, .L2488+20
+       cmp     r6, r3
+       ldreq   r0, .L2488+140
+       beq     .L2473
+       ldr     r3, .L2488+144
+       cmp     r6, r3
+       ldreq   r0, .L2488+148
+       ldrne   r0, .L2488+152
+.L2473:
+       bl      printk
+       mov     r0, sp
+       mov     r1, r5
+       mov     r2, #520
+       bl      rk_copy_from_user
+       cmp     r0, #0
+       bne     .L2477
+.L2421:
+       ldr     r2, [sp, #0]
+       ldr     r3, .L2488+156
+       cmp     r2, r3
+       bne     .L2470
+       ldr     r3, .L2488+144
+       ldr     r4, .L2488+52
+       cmp     r6, r3
+       bne     .L2422
+       ldr     r3, [r4, #440]
+       mov     r2, sp
+       ldr     r3, [r3, #20]
+       strb    r3, [sp, #8]
+       str     r3, [sp, #4]
+       bic     r3, r2, #8128
+       bic     r3, r3, #63
+       ldr     r3, [r3, #8]
+@ 444 "/home/zyf/rk30/rk3288_android4.4/kernel/arch/arm/include/asm/uaccess.h" 1
+       adds r2, r5, #16; sbcccs r2, r2, r3; movcc r3, #0
+@ 0 "" 2
+       cmp     r3, #0
+       bne     .L2470
+       mov     r0, r5
+       mov     r1, sp
+       mov     r2, #16
+       bl      __copy_to_user
+       cmp     r0, #0
+       moveq   r4, r0
+       mvnne   r4, #13
+       b       .L2380
+.L2422:
+       ldr     r3, [r4, #968]
+       cmp     r3, #10
+       bhi     .L2470
+       ldr     r3, [r4, #440]
+       ldr     r1, [sp, #4]
+       ldr     r2, [r3, #24]
+       cmp     r2, r1
+       beq     .L2423
+       cmp     r2, #0
+       beq     .L2423
+       ldr     r0, .L2488+160
+       bl      printk
+       ldr     r3, [r4, #968]
+       add     r3, r3, #1
+       str     r3, [r4, #968]
+       b       .L2470
+.L2423:
+       ldr     r0, .L2488+52
+       mov     r2, #0
+       str     r2, [r0, #968]
+       ldr     r0, .L2488+20
+       cmp     r6, r0
+       mov     r0, #1
+       strne   r1, [r3, #24]
+       mov     r1, r3
+       movne   r2, #1
+       streq   r2, [r3, #20]
+       streq   r2, [r3, #24]
+       strne   r2, [r3, #20]
+       bl      StorageSysDataStore
+       cmn     r0, #1
+       mvneq   r4, #1
+       movne   r4, #0
+       b       .L2404
+.L2395:
+       ldr     r0, .L2488+164
+       bl      printk
+       mov     r0, sp
+       mov     r1, r5
+       mov     r2, #520
+       bl      rk_copy_from_user
+       cmp     r0, #0
+       bne     .L2477
+.L2426:
+       ldr     r2, [sp, #0]
+       ldr     r3, .L2488+168
+       cmp     r2, r3
+       bne     .L2472
+       ldr     r2, [sp, #4]
+       cmp     r2, #504
+       bhi     .L2472
+       ldr     r3, .L2488+172
+       add     r0, sp, #8
+       cmp     r6, r3
+       ldr     r3, .L2488+52
+       ldreq   r1, [r3, #972]
+       ldrne   r1, [r3, #976]
+       add     r1, r1, #8
+.L2483:
+       bl      memcpy
+       mov     r2, sp
+       bic     r3, r2, #8128
+       bic     r3, r3, #63
+       ldr     r3, [r3, #8]
+@ 444 "/home/zyf/rk30/rk3288_android4.4/kernel/arch/arm/include/asm/uaccess.h" 1
+       adds r2, r5, #520; sbcccs r2, r2, r3; movcc r3, #0
+@ 0 "" 2
+       cmp     r3, #0
+       bne     .L2470
+       mov     r0, r5
+       mov     r1, sp
+       mov     r2, #520
+       bl      __copy_to_user
+.L2478:
+       subs    r4, r0, #0
+       bne     .L2470
+       b       .L2404
+.L2396:
+       ldr     r0, .L2488+176
+       bl      printk
+       mov     r0, sp
+       mov     r1, r5
+       mov     r2, #520
+       bl      rk_copy_from_user
+       cmp     r0, #0
+       beq     .L2429
+.L2477:
+       ldr     r0, .L2488+180
+.L2479:
+       bl      printk
+       b       .L2470
+.L2429:
+       ldr     r2, [sp, #0]
+       ldr     r3, .L2488+168
+       cmp     r2, r3
+       bne     .L2472
+       ldr     r2, [sp, #4]
+       cmp     r2, #504
+       bhi     .L2472
+       ldr     r3, .L2488+28
+       add     r2, r2, #8
+       ldr     r4, .L2488+52
+       cmp     r6, r3
+       bne     .L2430
+       mov     r1, sp
+       ldr     r0, [r4, #972]
+       bl      memcpy
+       mov     r0, #2
+       ldr     r1, [r4, #972]
+       b       .L2476
+.L2430:
+       mov     r1, sp
+       ldr     r0, [r4, #976]
+       bl      memcpy
+       ldr     r1, [r4, #976]
+       mov     r0, #3
+.L2476:
+       bl      StorageSysDataStore
+       mov     r4, r0
+       b       .L2404
+.L2484:
+       bl      rknand_dev_flush
+.L2475:
+       mov     r4, #0
+       b       .L2404
+.L2472:
+       mvn     r4, #0
+.L2404:
+       mov     r1, r4
+       ldr     r0, .L2488+184
+       bl      printk
+       b       .L2380
+.L2431:
+       mvn     r4, #21
+       b       .L2380
+.L2450:
+       mvn     r4, #1
+       b       .L2380
+.L2470:
+       mvn     r4, #13
+.L2380:
+       mov     r0, r4
+       add     sp, sp, #520
+       ldmfd   sp!, {r4, r5, r6, pc}
+.L2489:
+       .align  2
+.L2488:
+       .word   1074033155
+       .word   1074029694
+       .word   1074029570
+       .word   1074031656
+       .word   1074029695
+       .word   1074031666
+       .word   1074033235
+       .word   1074034193
+       .word   1074034194
+       .word   .LC134
+       .word   .LC136
+       .word   .LC137
+       .word   .LC138
+       .word   .LANCHOR2
+       .word   .LC139
+       .word   .LC140
+       .word   .LC141
+       .word   .LC142
+       .word   .LC143
+       .word   .LC144
+       .word   .LC145
+       .word   .LC146
+       .word   .LC147
+       .word   1263358532
+       .word   -1067903959
+       .word   .LC148
+       .word   .LC149
+       .word   .LC150
+       .word   1112753220
+       .word   1146313043
+       .word   .LC151
+       .word   1112755781
+       .word   .LC152
+       .word   1094995539
+       .word   .LANCHOR2+456
+       .word   .LC153
+       .word   1074031676
+       .word   .LC154
+       .word   .LC155
+       .word   1280262987
+       .word   .LC156
+       .word   .LC157
+       .word   1145980246
+       .word   1074034192
+       .word   .LC158
+       .word   .LC135
+       .word   .LC159
+       .fnend
+       .size   rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl
+       .align  2
+       .global rk_ftl_storage_sys_init
+       .type   rk_ftl_storage_sys_init, %function
+rk_ftl_storage_sys_init:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       .save {r3, r4, r5, r6, r7, lr}
+       mov     r2, #512
+       ldr     r4, .L2493
+       mov     r6, #0
+       add     r0, r4, #456
+       ldr     r5, [r4, #416]
+       str     r6, [r4, #436]
+       add     r1, r5, #1536
+       add     r3, r5, #512
+       str     r5, [r4, #452]
+       str     r3, [r4, #440]
+       add     r3, r5, #1024
+       str     r1, [r4, #976]
+       str     r3, [r4, #972]
+       bl      memcpy
+       ldr     r7, [r5, #508]
+       ldr     r3, [r5, #16]
+       cmp     r7, r6
+       str     r6, [r4, #444]
+       str     r6, [r4, #968]
+       str     r3, [r4, #448]
+       beq     .L2491
+       mov     r0, r5
+       mov     r1, #508
+       bl      JSHash
+       cmp     r7, r0
+       beq     .L2491
+       str     r6, [r5, #16]
+       ldr     r0, .L2493+4
+       str     r6, [r4, #448]
+       bl      printk
+.L2491:
+       ldr     r3, [r4, #448]
+       mov     r0, #2
+       ldr     r4, .L2493
+       cmp     r3, #0
+       ldrne   r2, .L2493+8
+       ldrne   r3, .L2493
+       ldr     r1, [r4, #972]
+       strne   r2, [r3, #444]
+       bl      StorageSysDataLoad
+       ldr     r1, [r4, #976]
+       mov     r0, #3
+       bl      StorageSysDataLoad
+       ldr     r0, .L2493+12
+       ldmfd   sp!, {r3, r4, r5, r6, r7, lr}
+       b       misc_register
+.L2494:
+       .align  2
+.L2493:
+       .word   .LANCHOR2
+       .word   .LC160
+       .word   -1067903959
+       .word   .LANCHOR1+4032
+       .fnend
+       .size   rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init
+       .align  2
+       .global StorageSysDataDeInit
+       .type   StorageSysDataDeInit, %function
+StorageSysDataDeInit:
+       .fnstart
+       @ args = 0, pretend = 0, frame = 0
+       @ frame_needed = 0, uses_anonymous_args = 0
+       stmfd   sp!, {r3, lr}
+       .save {r3, lr}
+       ldr     r0, .L2496
+       bl      misc_deregister
+       mov     r0, #0
+       ldmfd   sp!, {r3, pc}
+.L2497:
+       .align  2
+.L2496:
+       .word   .LANCHOR1+4032
+       .fnend
+       .size   StorageSysDataDeInit, .-StorageSysDataDeInit
+       .global rknand_sys_storage_fops
+       .global gTable_Crc32
+       .global SecureBootUnlockTryCount
+       .global SecureBootCheckOK
+       .global SecureBootEn
+       .global gpVendor1Info
+       .global gpVendor0Info
+       .global g_idb_buffer
+       .global gSnSectorData
+       .global gpDrmKeyInfo
+       .global gpBootConfig
+       .global gLoaderBootInfo
+       .global RK29_NANDC1_REG_BASE
+       .global RK29_NANDC_REG_BASE
+       .global gc_ink_free_return_value
+       .global FtlUpdateVaildLpnCount
+       .global g_ect_tbl_power_up_flush
+       .global last_cache_match_count
+       .global power_up_flag
+       .global g_LowFormat
+       .global gFtlInitStatus
+       .global DeviceCapacity
+       .global ToshibaRefValue
+       .global Toshiba15RefValue
+       .global ToshibaA19RefValue
+       .global SamsungRefValue
+       .global refValueDefault
+       .global FbbtBlk
+       .global random_seed
+       .global gSlcNandParaInfo
+       .global gNandParaInfo
+       .global NandFlashParaTbl
+       .global g_power_lost_recovery_flag
+       .global c_mlc_erase_count_value
+       .global g_recovery_ppa_tbl
+       .global g_recovery_page_min_ver
+       .global g_recovery_page_num
+       .global g_cur_erase_blk
+       .global g_gc_skip_write_count
+       .global g_gc_head_data_block_count
+       .global g_gc_head_data_block
+       .global g_ftl_nand_free_count
+       .global g_in_swl_replace
+       .global g_in_gc_progress
+       .global g_all_blk_used_slc_mode
+       .global g_max_erase_count
+       .global g_totle_sys_slc_erase_count
+       .global g_totle_slc_erase_count
+       .global g_min_erase_count
+       .global g_totle_avg_erase_count
+       .global g_totle_mlc_erase_count
+       .global g_totle_l2p_write_count
+       .global g_totle_cache_write_count
+       .global g_tmp_data_superblock_id
+       .global g_totle_read_page_count
+       .global g_totle_discard_page_count
+       .global g_totle_read_sector
+       .global g_totle_write_sector
+       .global g_totle_write_page_count
+       .global g_totle_gc_page_count
+       .global g_gc_blk_index
+       .global g_gc_merge_free_blk_threshold
+       .global g_gc_free_blk_threshold
+       .global g_gc_bad_block_temp_tbl
+       .global g_gc_bad_block_gc_index
+       .global g_gc_bad_block_temp_num
+       .global g_gc_next_blk_1
+       .global g_gc_next_blk
+       .global g_gc_cur_blk_max_valid_pages
+       .global g_gc_cur_blk_valid_pages
+       .global g_gc_page_offset
+       .global g_gc_blk_num
+       .global p_gc_blk_tbl
+       .global p_gc_page_info
+       .global g_sys_ext_data
+       .global g_sys_save_data
+       .global gp_last_act_superblock
+       .global g_gc_superblock
+       .global g_gc_temp_superblock
+       .global g_buffer_superblock
+       .global g_active_superblock
+       .global g_num_data_superblocks
+       .global g_num_free_superblocks
+       .global p_data_block_list_tail
+       .global p_data_block_list_head
+       .global p_free_data_block_list_head
+       .global p_data_block_list_table
+       .global g_l2p_last_update_region_id
+       .global p_l2p_map_buf
+       .global p_l2p_ram_map
+       .global g_totle_vendor_block
+       .global p_vendor_region_ppn_table
+       .global p_vendor_block_ver_table
+       .global p_vendor_block_valid_page_count
+       .global p_vendor_block_table
+       .global g_totle_map_block
+       .global p_map_region_ppn_table
+       .global p_map_block_ver_table
+       .global p_map_block_valid_page_count
+       .global p_map_block_table
+       .global p_blk_mode_table
+       .global p_valid_page_count_check_table
+       .global p_valid_page_count_table
+       .global g_totle_swl_count
+       .global p_swl_mul_table
+       .global p_erase_count_table
+       .global g_ect_tbl_info_size
+       .global gp_ect_tbl_info
+       .global g_gc_num_req
+       .global c_gc_page_buf_num
+       .global gp_gc_page_buf_info
+       .global p_gc_data_buf
+       .global p_gc_spare_buf
+       .global p_io_spare_buf
+       .global p_io_data_buf_1
+       .global p_io_data_buf_0
+       .global p_sys_spare_buf
+       .global p_vendor_data_buf
+       .global p_sys_data_buf_1
+       .global p_sys_data_buf
+       .global g_wr_page_num
+       .global req_wr_io
+       .global c_wr_page_buf_num
+       .global p_wr_io_data_buf
+       .global p_wr_io_spare_buf
+       .global p_plane_order_table
+       .global g_req_cache
+       .global req_gc_dst
+       .global req_gc
+       .global req_erase
+       .global req_prgm
+       .global req_read
+       .global req_sys
+       .global gVendorBlkInfo
+       .global gL2pMapInfo
+       .global gSysFreeQueue
+       .global gSysInfo
+       .global gBbtInfo
+       .global g_inkDie_check_enable
+       .global g_SlcPartLbaEndSector
+       .global g_MaxLbn
+       .global g_VaildLpn
+       .global g_MaxLpn
+       .global g_MaxLbaSector
+       .global g_GlobalDataVersion
+       .global g_GlobalSysVersion
+       .global ftl_gc_temp_power_lost_recovery_flag
+       .global c_ftl_nand_max_data_blks
+       .global c_ftl_nand_data_op_blks_per_plane
+       .global c_ftl_nand_data_blks_per_plane
+       .global c_ftl_nand_max_sys_blks
+       .global c_ftl_nand_init_sys_blks_per_plane
+       .global c_ftl_nand_sys_blks_per_plane
+       .global c_ftl_vendor_part_size
+       .global c_ftl_nand_max_vendor_blks
+       .global c_ftl_nand_max_map_blks
+       .global c_ftl_nand_map_blks_per_plane
+       .global c_ftl_nand_vendor_region_num
+       .global c_ftl_nand_l2pmap_ram_region_num
+       .global c_ftl_nand_map_region_num
+       .global c_ftl_nand_totle_phy_blks
+       .global c_ftl_nand_reserved_blks
+       .global c_ftl_nand_byte_pre_oob
+       .global c_ftl_nand_byte_pre_page
+       .global c_ftl_nand_sec_pre_page_shift
+       .global c_ftl_nand_sec_pre_page
+       .global c_ftl_nand_page_pre_super_blk
+       .global c_ftl_nand_page_pre_slc_blk
+       .global c_ftl_nand_page_pre_blk
+       .global c_ftl_nand_bbm_buf_size
+       .global c_ftl_nand_ext_blk_pre_plane
+       .global c_ftl_nand_blk_pre_plane
+       .global c_ftl_nand_planes_num
+       .global c_ftl_nand_blks_per_die_shift
+       .global c_ftl_nand_blks_per_die
+       .global c_ftl_nand_planes_per_die
+       .global c_ftl_nand_die_num
+       .global c_ftl_nand_type
+       .global gMasterTempBuf
+       .global gMasterInfo
+       .global gNandcDumpWriteEn
+       .global gToggleModeClkDiv
+       .global gBootDdrMode
+       .global gNandcEccBits
+       .global gpNandc1
+       .global gpNandc
+       .global g_nandc_version_data
+       .global gNandcVer
+       .global gNandChipMap
+       .global gNandIDataBuf
+       .global FlashDdrTunningReadCount
+       .global FlashWaitBusyScheduleEn
+       .global gNandPhyInfo
+       .global gFlashProgCheckSpareBuffer
+       .global gFlashProgCheckBuffer
+       .global gFlashSpareBuffer
+       .global gFlashPageBuffer1
+       .global gFlashPageBuffer0
+       .global gpFlashSaveInfo
+       .global gReadRetryInfo
+       .global gpNandParaInfo
+       .global gNandOptPara
+       .global g_slc2KBNand
+       .global g_maxRetryCount
+       .global g_maxRegNum
+       .global g_retryMode
+       .global gNandIDBResBlkNumSaveInFlash
+       .global gNandIDBResBlkNum
+       .global gNandFlashResEndPageAddr
+       .global gNandFlashInfoBlockAddr
+       .global gNandFlashIdbBlockAddr
+       .global gNandFlashInfoBlockEcc
+       .global gNandFlashIDBEccBits
+       .global gNandFlashEccBits
+       .global gNandRandomizer
+       .global gBlockPageAlignSize
+       .global gTotleBlock
+       .global gNandMaxChip
+       .global gNandMaxDie
+       .global gFlashInterfaceMode
+       .global gFlashSlcMode
+       .global gFlashOnfiModeEn
+       .global gFlashToggleModeEn
+       .global gFlashSdrModeEn
+       .global gMultiPageProgEn
+       .global gMultiPageReadEn
+       .global gpReadRetrial
+       .global mlcPageToSlcPageTbl
+       .global slcPageToMlcPageTbl
+       .global DieAddrs
+       .global gDieOp
+       .global DieCsIndex
+       .global IDByte
+       .global read_retry_cur_offset
+       .section        .rodata
+       .set    .LANCHOR3,. + 0
+       .type   __func__.14422, %object
+       .size   __func__.14422, 11
+__func__.14422:
+       .ascii  "FtlMemInit\000"
+.LC0:
+       .byte   60
+       .byte   40
+       .byte   24
+       .byte   16
+       .type   __func__.15298, %object
+       .size   __func__.15298, 21
+__func__.15298:
+       .ascii  "FtlVpcCheckAndModify\000"
+       .section        .rodata.str1.1,"aMS",%progbits,1
+.LC1:
+       .ascii  "Context allocation failed\012\000"
+.LC2:
+       .ascii  "FlashEraseBlocks pageAddr error %x \012\000"
+.LC3:
+       .ascii  "No.%d FLASH ID:%x %x %x %x %x %x\012\000"
+.LC4:
+       .ascii  "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
+       .ascii  "\000"
+.LC5:
+       .ascii  "FLASH INFO:\012\000"
+.LC6:
+       .ascii  "FLASH ID: %x\012\000"
+.LC7:
+       .ascii  "Device Capacity: %d MB\012\000"
+.LC8:
+       .ascii  "FMWAIT: %x %x %x %x\012\000"
+.LC9:
+       .ascii  "FTL INFO:\012\000"
+.LC10:
+       .ascii  "g_MaxLpn = 0x%x\012\000"
+.LC11:
+       .ascii  "g_VaildLpn = 0x%x\012\000"
+.LC12:
+       .ascii  "read_page_count = 0x%x\012\000"
+.LC13:
+       .ascii  "discard_page_count = 0x%x\012\000"
+.LC14:
+       .ascii  "write_page_count = 0x%x\012\000"
+.LC15:
+       .ascii  "cache_write_count = 0x%x\012\000"
+.LC16:
+       .ascii  "l2p_write_count = 0x%x\012\000"
+.LC17:
+       .ascii  "gc_page_count = 0x%x\012\000"
+.LC18:
+       .ascii  "totle_write = %d MB\012\000"
+.LC19:
+       .ascii  "totle_read = %d MB\012\000"
+.LC20:
+       .ascii  "GSV = 0x%x\012\000"
+.LC21:
+       .ascii  "GDV = 0x%x\012\000"
+.LC22:
+       .ascii  "bad blk num = %d %d\012\000"
+.LC23:
+       .ascii  "free_superblocks = 0x%x\012\000"
+.LC24:
+       .ascii  "mlc_EC = 0x%x\012\000"
+.LC25:
+       .ascii  "slc_EC = 0x%x\012\000"
+.LC26:
+       .ascii  "avg_EC = 0x%x\012\000"
+.LC27:
+       .ascii  "sys_EC = 0x%x\012\000"
+.LC28:
+       .ascii  "max_EC = 0x%x\012\000"
+.LC29:
+       .ascii  "min_EC = 0x%x\012\000"
+.LC30:
+       .ascii  "PLT = 0x%x\012\000"
+.LC31:
+       .ascii  "POT = 0x%x\012\000"
+.LC32:
+       .ascii  "MaxSector = 0x%x\012\000"
+.LC33:
+       .ascii  "init_sys_blks_pp = 0x%x\012\000"
+.LC34:
+       .ascii  "sys_blks_pp = 0x%x\012\000"
+.LC35:
+       .ascii  "free sysblock = 0x%x\012\000"
+.LC36:
+       .ascii  "data_blks_pp = 0x%x\012\000"
+.LC37:
+       .ascii  "data_op_blks_pp = 0x%x\012\000"
+.LC38:
+       .ascii  "max_data_blks = 0x%x\012\000"
+.LC39:
+       .ascii  "Sys.id = 0x%x\012\000"
+.LC40:
+       .ascii  "Bbt.id = 0x%x\012\000"
+.LC41:
+       .ascii  "ACT.page = 0x%x\012\000"
+.LC42:
+       .ascii  "ACT.plane = 0x%x\012\000"
+.LC43:
+       .ascii  "ACT.id = 0x%x\012\000"
+.LC44:
+       .ascii  "ACT.mode = 0x%x\012\000"
+.LC45:
+       .ascii  "ACT.a_pages = 0x%x\012\000"
+.LC46:
+       .ascii  "ACT VPC = 0x%x\012\000"
+.LC47:
+       .ascii  "BUF.page = 0x%x\012\000"
+.LC48:
+       .ascii  "BUF.plane = 0x%x\012\000"
+.LC49:
+       .ascii  "BUF.id = 0x%x\012\000"
+.LC50:
+       .ascii  "BUF.mode = 0x%x\012\000"
+.LC51:
+       .ascii  "BUF.a_pages = 0x%x\012\000"
+.LC52:
+       .ascii  "BUF VPC = 0x%x\012\000"
+.LC53:
+       .ascii  "TMP.page = 0x%x\012\000"
+.LC54:
+       .ascii  "TMP.plane = 0x%x\012\000"
+.LC55:
+       .ascii  "TMP.id = 0x%x\012\000"
+.LC56:
+       .ascii  "TMP.mode = 0x%x\012\000"
+.LC57:
+       .ascii  "TMP.a_pages = 0x%x\012\000"
+.LC58:
+       .ascii  "GC.page = 0x%x\012\000"
+.LC59:
+       .ascii  "GC.plane = 0x%x\012\000"
+.LC60:
+       .ascii  "GC.id = 0x%x\012\000"
+.LC61:
+       .ascii  "GC.mode = 0x%x\012\000"
+.LC62:
+       .ascii  "GC.a_pages = 0x%x\012\000"
+.LC63:
+       .ascii  "WR_CHK = 0x%x %x %x %x\012\000"
+.LC64:
+       .ascii  "Read Err Cnt = 0x%x\012\000"
+.LC65:
+       .ascii  "Prog Err Cnt = 0x%x\012\000"
+.LC66:
+       .ascii  "gc_free_blk_th= 0x%x\012\000"
+.LC67:
+       .ascii  "gc_merge_free_blk_th= 0x%x\012\000"
+.LC68:
+       .ascii  "gc_skip_write_count= 0x%x\012\000"
+.LC69:
+       .ascii  "gc_blk_index= 0x%x\012\000"
+.LC70:
+       .ascii  "free min EC= 0x%x\012\000"
+.LC71:
+       .ascii  "free max EC= 0x%x\012\000"
+.LC72:
+       .ascii  "GC__SB VPC = 0x%x\012\000"
+.LC73:
+       .ascii  "%d. [0x%x]=0x%x 0x%x  0x%x\012\000"
+.LC74:
+       .ascii  "free %d. [0x%x] 0x%x  0x%x\012\000"
+.LC75:
+       .ascii  "%s\012\000"
+.LC76:
+       .ascii  "FTL version: 5.0.36 20170316\000"
+.LC77:
+       .ascii  "GetSwlReplaceBlock min_ec_id =%x %x\012\000"
+.LC78:
+       .ascii  "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x"
+       .ascii  "\012\000"
+.LC79:
+       .ascii  "FtlGcRefreshBlock  0x%x \012\000"
+.LC80:
+       .ascii  "FtlGcMarkBadPhyBlk %d 0x%x\012\000"
+.LC81:
+       .ascii  "%s error allocating memory. return -1\012\000"
+.LC82:
+       .ascii  "%s 0x%x:\000"
+.LC83:
+       .ascii  "%x \000"
+.LC84:
+       .ascii  "\000"
+.LC85:
+       .ascii  "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\012"
+       .ascii  "\000"
+.LC86:
+       .ascii  "nandc:\000"
+.LC87:
+       .ascii  "%d flReg.d32=%x %x\012\000"
+.LC88:
+       .ascii  "ECC:%d\012\000"
+.LC89:
+       .ascii  "sdr read ok %x ecc=%d\012\000"
+.LC90:
+       .ascii  "sync para %d\012\000"
+.LC91:
+       .ascii  "TOG mode Read error %x %x\012\000"
+.LC92:
+       .ascii  "FlashLoadPhyInfo fail %x!!\012\000"
+.LC93:
+       .ascii  "read retry status %x %x %x\012\000"
+.LC94:
+       .ascii  "Read pageadd=%x  ecc=%x err=%x\012\000"
+.LC95:
+       .ascii  "data:\000"
+.LC96:
+       .ascii  "spare:\000"
+.LC97:
+       .ascii  "ReadRetry pageadd=%x  ecc=%x err=%x\012\000"
+.LC98:
+       .ascii  "slc mode\000"
+.LC99:
+       .ascii  "no ect\000"
+.LC100:
+       .ascii  "prog error: = %x\012\000"
+.LC101:
+       .ascii  "prog read error: = %x\012\000"
+.LC102:
+       .ascii  "prog read s error: = %x %x %x\012\000"
+.LC103:
+       .ascii  "prog read d error: = %x %x %x\012\000"
+.LC104:
+       .ascii  "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
+.LC105:
+       .ascii  "FtlBbmTblFlush error:%x\012\000"
+.LC106:
+       .ascii  "FtlGcFreeBadSuperBlk 0x%x\012\000"
+.LC107:
+       .ascii  "decrement_vpc_count %x = %d\012\000"
+.LC108:
+       .ascii  "FlashMakeFactorBbt %d\012\000"
+.LC109:
+       .ascii  "bad block:%d %d\012\000"
+.LC110:
+       .ascii  "FMFB:%d %d\012\000"
+.LC111:
+       .ascii  "E:bad block:%d\012\000"
+.LC112:
+       .ascii  "FMFB:Save %d %d\012\000"
+.LC113:
+       .ascii  "spuer block %x vpn is 0\012 \000"
+.LC114:
+       .ascii  "...%s enter...\012\000"
+.LC115:
+       .ascii  "FtlCheckVpc %x = %x  %x\012\000"
+.LC116:
+       .ascii  "%d GC datablk  = %x vpc %x %x\012\000"
+.LC117:
+       .ascii  "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000"
+.LC118:
+       .ascii  "Ftlwrite decrement_vpc_count %x = %d\012\000"
+.LC119:
+       .ascii  "FtlInit %x\012\000"
+.LC120:
+       .ascii  "FtlWrite: lpa error:%x %x\012\000"
+.LC121:
+       .ascii  "FLFB:%d %d\012\000"
+.LC122:
+       .ascii  "BBT:\000"
+.LC123:
+       .ascii  "IdBlockReadData %x %x\012\000"
+.LC124:
+       .ascii  "IdBlockReadData %x %x ret= %x\012\000"
+.LC125:
+       .ascii  "IDBlockWriteData %x %x\012\000"
+.LC126:
+       .ascii  "IDBlockWriteData %x %x ret= %x\012\000"
+.LC127:
+       .ascii  "idblk:\000"
+.LC128:
+       .ascii  "idb reverse %x %x\012\000"
+.LC129:
+       .ascii  "write_idblock totle_sec %x %x\012\000"
+.LC130:
+       .ascii  "write and check error:%d idb=%x,offset=%x,r=%x,w=%x"
+       .ascii  " \012\000"
+.LC131:
+       .ascii  "write\000"
+.LC132:
+       .ascii  "read\000"
+.LC133:
+       .ascii  "write_idblock error\012\000"
+.LC134:
+       .ascii  "READ_SECTOR_IO\012\000"
+.LC135:
+       .ascii  "rk_copy_from_user error \012\000"
+.LC136:
+       .ascii  "READ_SECTOR_IO %x %x\012\000"
+.LC137:
+       .ascii  "rk_copy_to_user error\012\000"
+.LC138:
+       .ascii  "WRITE_SECTOR_IO\012\000"
+.LC139:
+       .ascii  "WRITE_SECTOR_IO %x %x\012\000"
+.LC140:
+       .ascii  "END_WRITE_SECTOR_IO\012\000"
+.LC141:
+       .ascii  "END_WRITE_SECTOR_IO %x %x\012\000"
+.LC142:
+       .ascii  "GET_FLASH_INFO_IO\012\000"
+.LC143:
+       .ascii  "GET_BAD_BLOCK_IO\012\000"
+.LC144:
+       .ascii  "bbt:\000"
+.LC145:
+       .ascii  "GET_LOCK_FLAG_IO\012\000"
+.LC146:
+       .ascii  "GET_PUBLIC_KEY_IO\012\000"
+.LC147:
+       .ascii  "RKNAND_GET_DRM_KEY\012\000"
+.LC148:
+       .ascii  "RKNAND_STORE_DRM_KEY\012\000"
+.LC149:
+       .ascii  "copy_from_user error \012\000"
+.LC150:
+       .ascii  "RKNAND_DIASBLE_SECURE_BOOT\012\000"
+.LC151:
+       .ascii  "RKNAND_ENASBLE_SECURE_BOOT\012\000"
+.LC152:
+       .ascii  "RKNAND_GET_SN_SECTOR\012\000"
+.LC153:
+       .ascii  "RKNAND_LOADER_UNLOCK\012\000"
+.LC154:
+       .ascii  "RKNAND_LOADER_STATUS\012\000"
+.LC155:
+       .ascii  "RKNAND_LOADER_LOCK\012\000"
+.LC156:
+       .ascii  "LockKey not match %d\012\000"
+.LC157:
+       .ascii  "RKNAND_GET_VENDOR_SECTOR\012\000"
+.LC158:
+       .ascii  "RKNAND_STORE_VENDOR_SECTOR\012\000"
+.LC159:
+       .ascii  "return ret = %lx\012\000"
+.LC160:
+       .ascii  "secureBootEn check error\012\000"
+.LC161:
+       .ascii  "rknand_sys_storage\000"
+       .data
+       .align  2
+       .set    .LANCHOR1,. + 0
+       .type   random_seed, %object
+       .size   random_seed, 256
+random_seed:
+       .short  22378
+       .short  1512
+       .short  25245
+       .short  17827
+       .short  25756
+       .short  19440
+       .short  9026
+       .short  10030
+       .short  29528
+       .short  20467
+       .short  29676
+       .short  24432
+       .short  31328
+       .short  6872
+       .short  13426
+       .short  13842
+       .short  8783
+       .short  1108
+       .short  782
+       .short  28837
+       .short  30729
+       .short  9505
+       .short  18676
+       .short  23085
+       .short  18730
+       .short  1085
+       .short  32609
+       .short  14697
+       .short  20858
+       .short  15170
+       .short  30365
+       .short  1607
+       .short  32298
+       .short  4995
+       .short  18905
+       .short  1976
+       .short  9592
+       .short  20204
+       .short  17443
+       .short  13615
+       .short  23330
+       .short  29369
+       .short  13947
+       .short  9398
+       .short  32398
+       .short  8984
+       .short  27600
+       .short  21785
+       .short  6019
+       .short  6311
+       .short  31598
+       .short  30210
+       .short  19327
+       .short  13896
+       .short  11347
+       .short  27545
+       .short  3107
+       .short  26575
+       .short  32270
+       .short  19852
+       .short  20601
+       .short  8349
+       .short  9290
+       .short  29819
+       .short  13579
+       .short  3661
+       .short  28676
+       .short  27331
+       .short  32574
+       .short  8693
+       .short  31253
+       .short  9081
+       .short  5399
+       .short  6842
+       .short  20087
+       .short  5537
+       .short  1274
+       .short  11617
+       .short  9530
+       .short  4866
+       .short  8035
+       .short  23219
+       .short  1178
+       .short  23272
+       .short  7383
+       .short  18944
+       .short  12488
+       .short  12871
+       .short  29340
+       .short  20532
+       .short  11022
+       .short  22514
+       .short  228
+       .short  22363
+       .short  24978
+       .short  14584
+       .short  12138
+       .short  3092
+       .short  17916
+       .short  16863
+       .short  14554
+       .short  31457
+       .short  29474
+       .short  25311
+       .short  24121
+       .short  3684
+       .short  28037
+       .short  22865
+       .short  22839
+       .short  25217
+       .short  13217
+       .short  27186
+       .short  14938
+       .short  11180
+       .short  29754
+       .short  24180
+       .short  15150
+       .short  32455
+       .short  20434
+       .short  23848
+       .short  29983
+       .short  16120
+       .short  14769
+       .short  20041
+       .short  29803
+       .short  28406
+       .short  17598
+       .short  28087
+       .type   NandFlashParaTbl, %object
+       .size   NandFlashParaTbl, 2304
+NandFlashParaTbl:
+       .byte   6
+       .byte   44
+       .byte   100
+       .byte   68
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   68
+       .byte   68
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1064
+       .short  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   104
+       .byte   4
+       .byte   74
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   5
+       .byte   44
+       .byte   -120
+       .byte   4
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   -88
+       .byte   5
+       .byte   -53
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   2
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   104
+       .byte   4
+       .byte   70
+       .byte   -119
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   72
+       .byte   4
+       .byte   74
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1024
+       .short  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   -124
+       .byte   100
+       .byte   60
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   32
+       .short  512
+       .byte   2
+       .byte   2
+       .short  1024
+       .short  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   -124
+       .byte   100
+       .byte   84
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   32
+       .short  512
+       .byte   2
+       .byte   2
+       .short  1024
+       .short  479
+       .byte   4
+       .byte   18
+       .byte   60
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   -41
+       .byte   -108
+       .byte   62
+       .byte   -124
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .short  128
+       .byte   2
+       .byte   2
+       .short  4096
+       .short  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   72
+       .byte   4
+       .byte   70
+       .byte   -123
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1024
+       .short  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   -120
+       .byte   5
+       .byte   -58
+       .byte   -119
+       .byte   0
+       .byte   4
+       .byte   2
+       .byte   8
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   5
+       .byte   44
+       .byte   -120
+       .byte   36
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   104
+       .byte   0
+       .byte   39
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   16
+       .short  128
+       .byte   1
+       .byte   2
+       .short  2048
+       .short  287
+       .byte   0
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   5
+       .byte   44
+       .byte   100
+       .byte   100
+       .byte   86
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   24
+       .short  512
+       .byte   2
+       .byte   2
+       .short  700
+       .short  479
+       .byte   4
+       .byte   18
+       .byte   60
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   -124
+       .byte   -59
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   2
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   -43
+       .byte   -47
+       .byte   -90
+       .byte   104
+       .byte   0
+       .byte   4
+       .byte   2
+       .byte   8
+       .short  64
+       .byte   1
+       .byte   2
+       .short  2048
+       .short  279
+       .byte   0
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   44
+       .byte   -36
+       .byte   -112
+       .byte   -90
+       .byte   84
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .short  64
+       .byte   1
+       .byte   2
+       .short  1024
+       .short  279
+       .byte   0
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   5
+       .byte   -75
+       .byte   100
+       .byte   100
+       .byte   86
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   24
+       .short  512
+       .byte   2
+       .byte   2
+       .short  700
+       .short  479
+       .byte   4
+       .byte   18
+       .byte   60
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   5
+       .byte   44
+       .byte   100
+       .byte   68
+       .byte   50
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   32
+       .short  512
+       .byte   2
+       .byte   1
+       .short  1088
+       .short  1503
+       .byte   5
+       .byte   19
+       .byte   60
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .space  4
+       .byte   5
+       .byte   44
+       .byte   100
+       .byte   100
+       .byte   60
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   32
+       .short  512
+       .byte   2
+       .byte   1
+       .short  1044
+       .short  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   -108
+       .byte   -46
+       .byte   4
+       .byte   67
+       .byte   2
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  473
+       .byte   1
+       .byte   1
+       .byte   24
+       .byte   32
+       .byte   4
+       .byte   0
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   -41
+       .byte   -108
+       .byte   -38
+       .byte   116
+       .byte   -61
+       .byte   2
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1024
+       .short  473
+       .byte   1
+       .byte   2
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   0
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   -41
+       .byte   -108
+       .byte   -111
+       .byte   96
+       .byte   68
+       .byte   2
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1046
+       .short  473
+       .byte   1
+       .byte   3
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   -108
+       .byte   -38
+       .byte   116
+       .byte   -60
+       .byte   2
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2090
+       .short  473
+       .byte   1
+       .byte   4
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   -108
+       .byte   -21
+       .byte   116
+       .byte   68
+       .byte   2
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1066
+       .short  473
+       .byte   1
+       .byte   3
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   -43
+       .byte   -108
+       .byte   -38
+       .byte   116
+       .byte   -60
+       .byte   2
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  530
+       .short  473
+       .byte   1
+       .byte   3
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   -41
+       .byte   -108
+       .byte   -102
+       .byte   116
+       .byte   66
+       .byte   2
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1024
+       .short  281
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   4
+       .byte   0
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   20
+       .byte   -89
+       .byte   66
+       .byte   74
+       .byte   2
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1060
+       .short  473
+       .byte   2
+       .byte   5
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   -41
+       .byte   20
+       .byte   -98
+       .byte   52
+       .byte   74
+       .byte   2
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1056
+       .short  473
+       .byte   2
+       .byte   5
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   -108
+       .byte   -89
+       .byte   66
+       .byte   72
+       .byte   2
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1060
+       .short  473
+       .byte   2
+       .byte   5
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   20
+       .byte   -85
+       .byte   66
+       .byte   74
+       .byte   2
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1056
+       .short  473
+       .byte   2
+       .byte   6
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -83
+       .byte   58
+       .byte   20
+       .byte   -85
+       .byte   66
+       .byte   74
+       .byte   2
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2092
+       .short  473
+       .byte   2
+       .byte   5
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -119
+       .byte   100
+       .byte   68
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -119
+       .byte   -120
+       .byte   36
+       .byte   75
+       .byte   -87
+       .byte   -124
+       .byte   7
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -119
+       .byte   -120
+       .byte   36
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -119
+       .byte   104
+       .byte   36
+       .byte   74
+       .byte   -87
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   8
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -119
+       .byte   104
+       .byte   4
+       .byte   74
+       .byte   -87
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   8
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -119
+       .byte   -41
+       .byte   -108
+       .byte   62
+       .byte   -124
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   8
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -119
+       .byte   104
+       .byte   4
+       .byte   70
+       .byte   -87
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   8
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   -41
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   87
+       .byte   1
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   1
+       .short  1060
+       .short  1473
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   -34
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   87
+       .byte   1
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   1
+       .short  2092
+       .short  1473
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   58
+       .byte   -123
+       .byte   -109
+       .byte   118
+       .byte   87
+       .byte   1
+       .byte   2
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   1
+       .short  2092
+       .short  1505
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   -43
+       .byte   -124
+       .byte   50
+       .byte   114
+       .byte   86
+       .byte   1
+       .byte   1
+       .byte   16
+       .short  128
+       .byte   2
+       .byte   1
+       .short  2056
+       .short  1473
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   -41
+       .byte   -108
+       .byte   50
+       .byte   118
+       .byte   86
+       .byte   1
+       .byte   1
+       .byte   16
+       .short  128
+       .byte   2
+       .byte   2
+       .short  2058
+       .short  1489
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   -34
+       .byte   -108
+       .byte   -126
+       .byte   118
+       .byte   86
+       .byte   1
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2062
+       .short  1489
+       .byte   1
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   80
+       .byte   1
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1066
+       .short  1497
+       .byte   2
+       .byte   34
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   58
+       .byte   -107
+       .byte   -109
+       .byte   122
+       .byte   80
+       .byte   1
+       .byte   2
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1066
+       .short  1497
+       .byte   2
+       .byte   34
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   -41
+       .byte   -108
+       .byte   50
+       .byte   118
+       .byte   85
+       .byte   1
+       .byte   1
+       .byte   16
+       .short  128
+       .byte   2
+       .byte   2
+       .short  2050
+       .short  401
+       .byte   2
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   87
+       .byte   1
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1058
+       .short  1497
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   -41
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   80
+       .byte   1
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   1
+       .short  1060
+       .short  1473
+       .byte   2
+       .byte   34
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   81
+       .byte   1
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1074
+       .short  1497
+       .byte   2
+       .byte   35
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   4
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   58
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   81
+       .byte   1
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2106
+       .short  1497
+       .byte   2
+       .byte   35
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   4
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -104
+       .byte   -41
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   81
+       .byte   1
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   1
+       .short  1056
+       .short  1497
+       .byte   2
+       .byte   35
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   4
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   87
+       .byte   8
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1058
+       .short  1497
+       .byte   2
+       .byte   66
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   -41
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   87
+       .byte   8
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   1
+       .short  1060
+       .short  1473
+       .byte   2
+       .byte   66
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -92
+       .byte   -126
+       .byte   118
+       .byte   86
+       .byte   8
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2082
+       .short  473
+       .byte   1
+       .byte   65
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   80
+       .byte   8
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1066
+       .short  1497
+       .byte   2
+       .byte   67
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   -41
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   80
+       .byte   8
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   1
+       .short  1060
+       .short  1473
+       .byte   2
+       .byte   67
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -92
+       .byte   -126
+       .byte   118
+       .byte   -41
+       .byte   8
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2090
+       .short  1241
+       .byte   1
+       .byte   66
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   87
+       .byte   8
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   1
+       .short  2092
+       .short  1473
+       .byte   2
+       .byte   66
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   58
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   81
+       .byte   8
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2106
+       .short  1497
+       .byte   2
+       .byte   68
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   4
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   81
+       .byte   8
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1074
+       .short  1497
+       .byte   2
+       .byte   68
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   4
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   58
+       .byte   -92
+       .byte   -109
+       .byte   122
+       .byte   80
+       .byte   8
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2138
+       .short  1497
+       .byte   2
+       .byte   0
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -108
+       .byte   -126
+       .byte   118
+       .byte   86
+       .byte   8
+       .byte   1
+       .byte   16
+       .short  256
+       .byte   2
+       .byte   2
+       .short  2062
+       .short  473
+       .byte   1
+       .byte   0
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   -41
+       .byte   8
+       .byte   1
+       .byte   32
+       .short  256
+       .byte   2
+       .byte   2
+       .short  1058
+       .short  1497
+       .byte   2
+       .byte   66
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -20
+       .byte   -41
+       .byte   -108
+       .byte   126
+       .byte   100
+       .byte   68
+       .byte   0
+       .byte   1
+       .byte   16
+       .short  128
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  473
+       .byte   2
+       .byte   49
+       .byte   60
+       .byte   36
+       .byte   3
+       .byte   0
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -20
+       .byte   -34
+       .byte   -43
+       .byte   126
+       .byte   104
+       .byte   68
+       .byte   0
+       .byte   2
+       .byte   16
+       .short  128
+       .byte   2
+       .byte   2
+       .short  2048
+       .short  505
+       .byte   2
+       .byte   49
+       .byte   60
+       .byte   36
+       .byte   3
+       .byte   0
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -20
+       .byte   -41
+       .byte   -108
+       .byte   122
+       .byte   84
+       .byte   67
+       .byte   0
+       .byte   1
+       .byte   16
+       .short  128
+       .byte   2
+       .byte   2
+       .short  2076
+       .short  409
+       .byte   2
+       .byte   0
+       .byte   40
+       .byte   36
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -20
+       .byte   -34
+       .byte   -43
+       .byte   122
+       .byte   88
+       .byte   67
+       .byte   0
+       .byte   2
+       .byte   16
+       .short  128
+       .byte   2
+       .byte   2
+       .short  2076
+       .short  441
+       .byte   2
+       .byte   0
+       .byte   40
+       .byte   36
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -20
+       .byte   -43
+       .byte   -108
+       .byte   118
+       .byte   84
+       .byte   67
+       .byte   0
+       .byte   1
+       .byte   16
+       .short  128
+       .byte   2
+       .byte   2
+       .short  1038
+       .short  281
+       .byte   2
+       .byte   0
+       .byte   24
+       .byte   36
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .byte   6
+       .byte   -20
+       .byte   -41
+       .byte   20
+       .byte   118
+       .byte   84
+       .byte   -62
+       .byte   0
+       .byte   1
+       .byte   16
+       .short  128
+       .byte   2
+       .byte   2
+       .short  2076
+       .short  1169
+       .byte   2
+       .byte   0
+       .byte   24
+       .byte   40
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .type   NandOptPara, %object
+       .size   NandOptPara, 128
+NandOptPara:
+       .byte   1
+       .byte   0
+       .byte   49
+       .byte   63
+       .byte   0
+       .byte   49
+       .byte   -128
+       .byte   21
+       .byte   0
+       .byte   50
+       .byte   17
+       .byte   -128
+       .byte   112
+       .byte   120
+       .byte   120
+       .byte   3
+       .byte   1
+       .byte   0
+       .space  14
+       .byte   2
+       .byte   0
+       .byte   49
+       .byte   63
+       .byte   0
+       .byte   49
+       .byte   -128
+       .byte   21
+       .byte   0
+       .byte   0
+       .byte   17
+       .byte   -127
+       .byte   112
+       .byte   -15
+       .byte   -14
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  14
+       .byte   3
+       .byte   0
+       .byte   49
+       .byte   63
+       .byte   0
+       .byte   49
+       .byte   -128
+       .byte   21
+       .byte   96
+       .byte   96
+       .byte   17
+       .byte   -127
+       .byte   112
+       .byte   -15
+       .byte   -14
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  14
+       .byte   4
+       .byte   0
+       .byte   49
+       .byte   63
+       .byte   0
+       .byte   49
+       .byte   -128
+       .byte   21
+       .byte   96
+       .byte   96
+       .byte   17
+       .byte   -127
+       .byte   112
+       .byte   112
+       .byte   112
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  14
+       .type   gNandParaInfo, %object
+       .size   gNandParaInfo, 32
+gNandParaInfo:
+       .byte   0
+       .byte   0
+       .space  5
+       .byte   0
+       .byte   1
+       .byte   8
+       .short  128
+       .byte   2
+       .byte   1
+       .short  2048
+       .short  0
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .type   SamsungRefValue, %object
+       .size   SamsungRefValue, 64
+SamsungRefValue:
+       .byte   -89
+       .byte   -92
+       .byte   -91
+       .byte   -90
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   5
+       .byte   10
+       .byte   0
+       .byte   0
+       .byte   40
+       .byte   0
+       .byte   -20
+       .byte   -40
+       .byte   -19
+       .byte   -11
+       .byte   -19
+       .byte   -26
+       .byte   10
+       .byte   15
+       .byte   5
+       .byte   0
+       .byte   15
+       .byte   10
+       .byte   -5
+       .byte   -20
+       .byte   -24
+       .byte   -17
+       .byte   -24
+       .byte   -36
+       .byte   -15
+       .byte   -5
+       .byte   -2
+       .byte   -16
+       .byte   10
+       .byte   0
+       .byte   -5
+       .byte   -20
+       .byte   -48
+       .byte   -30
+       .byte   -48
+       .byte   -62
+       .byte   20
+       .byte   15
+       .byte   -5
+       .byte   -20
+       .byte   -24
+       .byte   -5
+       .byte   -24
+       .byte   -36
+       .byte   30
+       .byte   20
+       .byte   -5
+       .byte   -20
+       .byte   -5
+       .byte   -1
+       .byte   -5
+       .byte   -8
+       .byte   7
+       .byte   12
+       .byte   2
+       .byte   0
+       .type   ToshibaA19RefValue, %object
+       .size   ToshibaA19RefValue, 45
+ToshibaA19RefValue:
+       .byte   4
+       .byte   5
+       .byte   6
+       .byte   7
+       .byte   13
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   4
+       .byte   4
+       .byte   124
+       .byte   126
+       .byte   0
+       .byte   0
+       .byte   124
+       .byte   120
+       .byte   120
+       .byte   0
+       .byte   124
+       .byte   118
+       .byte   116
+       .byte   114
+       .byte   0
+       .byte   8
+       .byte   8
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   11
+       .byte   126
+       .byte   118
+       .byte   116
+       .byte   0
+       .byte   16
+       .byte   118
+       .byte   114
+       .byte   112
+       .byte   0
+       .byte   2
+       .byte   0
+       .byte   126
+       .byte   124
+       .byte   0
+       .type   Toshiba15RefValue, %object
+       .size   Toshiba15RefValue, 95
+Toshiba15RefValue:
+       .byte   4
+       .byte   5
+       .byte   6
+       .byte   7
+       .byte   13
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   2
+       .byte   4
+       .byte   2
+       .byte   0
+       .byte   0
+       .byte   8
+       .byte   8
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   124
+       .byte   0
+       .byte   124
+       .byte   124
+       .byte   0
+       .byte   122
+       .byte   0
+       .byte   122
+       .byte   122
+       .byte   0
+       .byte   11
+       .byte   126
+       .byte   118
+       .byte   116
+       .byte   0
+       .byte   120
+       .byte   2
+       .byte   120
+       .byte   122
+       .byte   0
+       .byte   126
+       .byte   4
+       .byte   126
+       .byte   122
+       .byte   0
+       .byte   16
+       .byte   118
+       .byte   114
+       .byte   112
+       .byte   0
+       .byte   118
+       .byte   4
+       .byte   118
+       .byte   120
+       .byte   0
+       .byte   4
+       .byte   4
+       .byte   4
+       .byte   118
+       .byte   0
+       .byte   2
+       .byte   0
+       .byte   126
+       .byte   124
+       .byte   0
+       .byte   6
+       .byte   10
+       .byte   6
+       .byte   2
+       .byte   0
+       .byte   116
+       .byte   124
+       .byte   116
+       .byte   118
+       .byte   0
+       .byte   4
+       .byte   4
+       .byte   124
+       .byte   126
+       .byte   0
+       .byte   0
+       .byte   124
+       .byte   120
+       .byte   120
+       .byte   0
+       .byte   124
+       .byte   118
+       .byte   116
+       .byte   114
+       .byte   0
+       .type   ToshibaRefValue, %object
+       .size   ToshibaRefValue, 8
+ToshibaRefValue:
+       .byte   0
+       .byte   4
+       .byte   124
+       .byte   120
+       .byte   116
+       .byte   8
+       .byte   12
+       .byte   112
+       .type   refValueDefault, %object
+       .size   refValueDefault, 28
+refValueDefault:
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   6
+       .byte   10
+       .byte   6
+       .byte   0
+       .byte   -3
+       .byte   -7
+       .byte   -8
+       .byte   0
+       .byte   -6
+       .byte   -13
+       .byte   -15
+       .byte   0
+       .byte   -11
+       .byte   -20
+       .byte   -23
+       .byte   0
+       .byte   0
+       .byte   -26
+       .byte   -30
+       .byte   0
+       .byte   0
+       .byte   -32
+       .byte   -37
+       .type   gFtlInitStatus, %object
+       .size   gFtlInitStatus, 4
+gFtlInitStatus:
+       .word   -1
+       .type   micron_flash_randomizer_flag, %object
+       .size   micron_flash_randomizer_flag, 4
+micron_flash_randomizer_flag:
+       .word   1
+       .type   gSlcNandParaInfo, %object
+       .size   gSlcNandParaInfo, 32
+gSlcNandParaInfo:
+       .byte   2
+       .byte   -104
+       .byte   -15
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   1
+       .byte   1
+       .byte   4
+       .short  64
+       .byte   1
+       .byte   1
+       .short  1024
+       .short  256
+       .byte   0
+       .byte   0
+       .byte   16
+       .byte   40
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .space  4
+       .type   ftl_gc_temp_block_bops_scan_page_addr, %object
+       .size   ftl_gc_temp_block_bops_scan_page_addr, 2
+ftl_gc_temp_block_bops_scan_page_addr:
+       .short  -1
+       .space  2
+       .type   power_up_flag, %object
+       .size   power_up_flag, 4
+power_up_flag:
+       .word   1
+       .type   gTable_Crc32, %object
+       .size   gTable_Crc32, 1024
+gTable_Crc32:
+       .word   0
+       .word   79760823
+       .word   159521646
+       .word   222500569
+       .word   319043292
+       .word   398801771
+       .word   445001138
+       .word   507977733
+       .word   638086584
+       .word   583622671
+       .word   797603542
+       .word   726367073
+       .word   890002276
+       .word   835540691
+       .word   1015955466
+       .word   944721341
+       .word   1276173168
+       .word   1221711559
+       .word   1167245342
+       .word   1096011177
+       .word   1595207084
+       .word   1540743195
+       .word   1452734146
+       .word   1381497717
+       .word   1780004552
+       .word   1859763071
+       .word   1671081382
+       .word   1734058001
+       .word   2031910932
+       .word   2111671715
+       .word   1889442682
+       .word   1952421581
+       .word   -1742620960
+       .word   -1662993577
+       .word   -1851544178
+       .word   -1788698567
+       .word   -1960476612
+       .word   -1880846965
+       .word   -2102944942
+       .word   -2040097051
+       .word   -1104553128
+       .word   -1159145745
+       .word   -1213480906
+       .word   -1284846207
+       .word   -1389499004
+       .word   -1444093901
+       .word   -1531971862
+       .word   -1603339427
+       .word   -734958192
+       .word   -789553113
+       .word   -575441154
+       .word   -646808759
+       .word   -952804532
+       .word   -1007397125
+       .word   -826851294
+       .word   -898216555
+       .word   -231145432
+       .word   -151515745
+       .word   -71623866
+       .word   -8775951
+       .word   -516081932
+       .word   -436454589
+       .word   -390124134
+       .word   -327278547
+       .word   880959607
+       .word   809725376
+       .word   1023441689
+       .word   968980142
+       .word   663115435
+       .word   591878940
+       .word   772033989
+       .word   717570162
+       .word   311037391
+       .word   374014072
+       .word   453514913
+       .word   533273366
+       .word   26098451
+       .word   89077412
+       .word   135012477
+       .word   214773194
+       .word   2022882055
+       .word   2085861040
+       .word   1896915049
+       .word   1976675806
+       .word   1805028827
+       .word   1868005484
+       .word   1645516469
+       .word   1725274882
+       .word   1587205823
+       .word   1515969288
+       .word   1461243345
+       .word   1406779494
+       .word   1302257763
+       .word   1231023572
+       .word   1142749965
+       .word   1088288442
+       .word   -1398548841
+       .word   -1469916384
+       .word   -1524511239
+       .word   -1579106226
+       .word   -1079517109
+       .word   -1150882308
+       .word   -1239024859
+       .word   -1293617518
+       .word   -1968456913
+       .word   -1905609064
+       .word   -2094423999
+       .word   -2014794250
+       .word   -1716548109
+       .word   -1653702588
+       .word   -1876060515
+       .word   -1796433110
+       .word   -525136409
+       .word   -462290864
+       .word   -382658935
+       .word   -303031490
+       .word   -206095557
+       .word   -143247732
+       .word   -97181611
+       .word   -17551902
+       .word   -960798625
+       .word   -1032163864
+       .word   -818316495
+       .word   -872909178
+       .word   -708880765
+       .word   -780248268
+       .word   -599962131
+       .word   -654557094
+       .word   1761919214
+       .word   1841679705
+       .word   1619450752
+       .word   1682429495
+       .word   2046883378
+       .word   2126642053
+       .word   1937960284
+       .word   2000937195
+       .word   1326230870
+       .word   1271767265
+       .word   1183757880
+       .word   1112521615
+       .word   1544067978
+       .word   1489606205
+       .word   1435140324
+       .word   1363905875
+       .word   622074782
+       .word   567612969
+       .word   748028144
+       .word   676793671
+       .word   907029826
+       .word   852566261
+       .word   1066546732
+       .word   995310491
+       .word   52196902
+       .word   131955601
+       .word   178154824
+       .word   241131775
+       .word   270024954
+       .word   349785421
+       .word   429546388
+       .word   492525091
+       .word   -249203186
+       .word   -169575495
+       .word   -123245216
+       .word   -60399401
+       .word   -501137198
+       .word   -421507739
+       .word   -341615684
+       .word   -278768117
+       .word   -684909642
+       .word   -739502591
+       .word   -558956328
+       .word   -630321809
+       .word   -1003934358
+       .word   -1058529059
+       .word   -844417532
+       .word   -915784781
+       .word   -1120555650
+       .word   -1175150391
+       .word   -1263028720
+       .word   -1334395993
+       .word   -1372480606
+       .word   -1427073515
+       .word   -1481408308
+       .word   -1552773765
+       .word   -1690451770
+       .word   -1610822287
+       .word   -1832920152
+       .word   -1770072545
+       .word   -2009467366
+       .word   -1929839699
+       .word   -2118390412
+       .word   -2055544637
+       .word   1569104025
+       .word   1497869614
+       .word   1409596407
+       .word   1355134528
+       .word   1317180997
+       .word   1245944818
+       .word   1191218475
+       .word   1136754844
+       .word   2072956193
+       .word   2135933078
+       .word   1913443919
+       .word   1993202680
+       .word   1753938941
+       .word   1816917578
+       .word   1627971731
+       .word   1707732260
+       .word   295074793
+       .word   358053470
+       .word   403988615
+       .word   483749168
+       .word   43142453
+       .word   106119298
+       .word   185620059
+       .word   265378796
+       .word   933107281
+       .word   861871078
+       .word   1042025791
+       .word   987562120
+       .word   614080653
+       .word   542846266
+       .word   756562915
+       .word   702101076
+       .word   -978905479
+       .word   -1050272818
+       .word   -869987049
+       .word   -924581728
+       .word   -693952347
+       .word   -765317870
+       .word   -551470133
+       .word   -606062980
+       .word   -475038783
+       .word   -412191114
+       .word   -366124881
+       .word   -286495464
+       .word   -257209059
+       .word   -194363222
+       .word   -114731405
+       .word   -35103804
+       .word   -1984443127
+       .word   -1921597250
+       .word   -2143955353
+       .word   -2064327728
+       .word   -1699480619
+       .word   -1636632990
+       .word   -1825447749
+       .word   -1745818356
+       .word   -1346395983
+       .word   -1417761530
+       .word   -1505903649
+       .word   -1560496536
+       .word   -1128556947
+       .word   -1199924262
+       .word   -1254519549
+       .word   -1309114188
+       .type   rknand_sys_storage_dev, %object
+       .size   rknand_sys_storage_dev, 36
+rknand_sys_storage_dev:
+       .word   255
+       .word   .LC161
+       .word   rknand_sys_storage_fops
+       .space  24
+       .type   rknand_sys_storage_fops, %object
+       .size   rknand_sys_storage_fops, 112
+rknand_sys_storage_fops:
+       .space  36
+       .word   rknand_sys_storage_ioctl
+       .word   rknand_sys_storage_ioctl
+       .space  4
+       .word   rknand_sys_storage_open
+       .space  4
+       .word   rknand_sys_storage_release
+       .space  52
+       .bss
+       .align  2
+       .set    .LANCHOR0,. + 0
+       .set    .LANCHOR2,. + 8184
+       .type   g_slc2KBNand, %object
+       .size   g_slc2KBNand, 1
+g_slc2KBNand:
+       .space  1
+       .type   gNandIDBResBlkNum, %object
+       .size   gNandIDBResBlkNum, 1
+gNandIDBResBlkNum:
+       .space  1
+       .space  2
+       .type   gBlockPageAlignSize, %object
+       .size   gBlockPageAlignSize, 4
+gBlockPageAlignSize:
+       .space  4
+       .type   gNandRandomizer, %object
+       .size   gNandRandomizer, 1
+gNandRandomizer:
+       .space  1
+       .space  3
+       .type   gNandcVer, %object
+       .size   gNandcVer, 4
+gNandcVer:
+       .space  4
+       .type   gNandChipMap, %object
+       .size   gNandChipMap, 32
+gNandChipMap:
+       .space  32
+       .type   gNandOptPara, %object
+       .size   gNandOptPara, 32
+gNandOptPara:
+       .space  32
+       .type   gFlashSlcMode, %object
+       .size   gFlashSlcMode, 1
+gFlashSlcMode:
+       .space  1
+       .space  3
+       .type   gNandIDataBuf, %object
+       .size   gNandIDataBuf, 2048
+gNandIDataBuf:
+       .space  2048
+       .type   IDByte, %object
+       .size   IDByte, 32
+IDByte:
+       .space  32
+       .type   gpNandc, %object
+       .size   gpNandc, 4
+gpNandc:
+       .space  4
+       .type   NANDC_FMCTL, %object
+       .size   NANDC_FMCTL, 4
+NANDC_FMCTL:
+       .space  4
+       .type   NANDC_FMWAIT, %object
+       .size   NANDC_FMWAIT, 4
+NANDC_FMWAIT:
+       .space  4
+       .type   NANDC_FLCTL, %object
+       .size   NANDC_FLCTL, 4
+NANDC_FLCTL:
+       .space  4
+       .type   NANDC_BCHCTL, %object
+       .size   NANDC_BCHCTL, 4
+NANDC_BCHCTL:
+       .space  4
+       .type   NANDC_DLL_CTL_REG0, %object
+       .size   NANDC_DLL_CTL_REG0, 4
+NANDC_DLL_CTL_REG0:
+       .space  4
+       .type   NANDC_DLL_CTL_REG1, %object
+       .size   NANDC_DLL_CTL_REG1, 4
+NANDC_DLL_CTL_REG1:
+       .space  4
+       .type   NANDC_RANDMZ_CFG, %object
+       .size   NANDC_RANDMZ_CFG, 4
+NANDC_RANDMZ_CFG:
+       .space  4
+       .type   NANDC_FMWAIT_SYN, %object
+       .size   NANDC_FMWAIT_SYN, 4
+NANDC_FMWAIT_SYN:
+       .space  4
+       .type   gNandPhyInfo, %object
+       .size   gNandPhyInfo, 28
+gNandPhyInfo:
+       .space  28
+       .type   slcPageToMlcPageTbl, %object
+       .size   slcPageToMlcPageTbl, 512
+slcPageToMlcPageTbl:
+       .space  512
+       .type   DieAddrs, %object
+       .size   DieAddrs, 32
+DieAddrs:
+       .space  32
+       .type   FlashWaitBusyScheduleEn, %object
+       .size   FlashWaitBusyScheduleEn, 4
+FlashWaitBusyScheduleEn:
+       .space  4
+       .type   gpNandParaInfo, %object
+       .size   gpNandParaInfo, 4
+gpNandParaInfo:
+       .space  4
+       .type   gDieOp, %object
+       .size   gDieOp, 128
+gDieOp:
+       .space  128
+       .type   gReadRetryInfo, %object
+       .size   gReadRetryInfo, 852
+gReadRetryInfo:
+       .space  852
+       .type   read_retry_cur_offset, %object
+       .size   read_retry_cur_offset, 4
+read_retry_cur_offset:
+       .space  4
+       .type   g_maxRegNum, %object
+       .size   g_maxRegNum, 1
+g_maxRegNum:
+       .space  1
+       .type   g_retryMode, %object
+       .size   g_retryMode, 1
+g_retryMode:
+       .space  1
+       .type   gNandMaxDie, %object
+       .size   gNandMaxDie, 1
+gNandMaxDie:
+       .space  1
+       .space  1
+       .type   DieCsIndex, %object
+       .size   DieCsIndex, 8
+DieCsIndex:
+       .space  8
+       .type   gFlashInterfaceMode, %object
+       .size   gFlashInterfaceMode, 1
+gFlashInterfaceMode:
+       .space  1
+       .type   gFlashToggleModeEn, %object
+       .size   gFlashToggleModeEn, 1
+gFlashToggleModeEn:
+       .space  1
+       .space  2
+       .type   gFlashPageBuffer0, %object
+       .size   gFlashPageBuffer0, 4
+gFlashPageBuffer0:
+       .space  4
+       .type   gBootDdrMode, %object
+       .size   gBootDdrMode, 4
+gBootDdrMode:
+       .space  4
+       .type   g_nandc_version_data, %object
+       .size   g_nandc_version_data, 4
+g_nandc_version_data:
+       .space  4
+       .type   gMasterTempBuf, %object
+       .size   gMasterTempBuf, 4
+gMasterTempBuf:
+       .space  4
+       .type   gMasterInfo, %object
+       .size   gMasterInfo, 32
+gMasterInfo:
+       .space  32
+       .type   gNandcDumpWriteEn, %object
+       .size   gNandcDumpWriteEn, 4
+gNandcDumpWriteEn:
+       .space  4
+       .type   gNandcEccBits, %object
+       .size   gNandcEccBits, 4
+gNandcEccBits:
+       .space  4
+       .type   gNandFlashEccBits, %object
+       .size   gNandFlashEccBits, 1
+gNandFlashEccBits:
+       .space  1
+       .type   gMultiPageProgEn, %object
+       .size   gMultiPageProgEn, 1
+gMultiPageProgEn:
+       .space  1
+       .space  2
+       .type   c_ftl_nand_sys_blks_per_plane, %object
+       .size   c_ftl_nand_sys_blks_per_plane, 4
+c_ftl_nand_sys_blks_per_plane:
+       .space  4
+       .type   c_ftl_nand_planes_num, %object
+       .size   c_ftl_nand_planes_num, 2
+c_ftl_nand_planes_num:
+       .space  2
+       .space  2
+       .type   c_ftl_nand_max_sys_blks, %object
+       .size   c_ftl_nand_max_sys_blks, 4
+c_ftl_nand_max_sys_blks:
+       .space  4
+       .type   c_ftl_nand_data_blks_per_plane, %object
+       .size   c_ftl_nand_data_blks_per_plane, 2
+c_ftl_nand_data_blks_per_plane:
+       .space  2
+       .type   c_ftl_nand_blk_pre_plane, %object
+       .size   c_ftl_nand_blk_pre_plane, 2
+c_ftl_nand_blk_pre_plane:
+       .space  2
+       .type   c_ftl_nand_max_data_blks, %object
+       .size   c_ftl_nand_max_data_blks, 4
+c_ftl_nand_max_data_blks:
+       .space  4
+       .type   c_ftl_nand_totle_phy_blks, %object
+       .size   c_ftl_nand_totle_phy_blks, 4
+c_ftl_nand_totle_phy_blks:
+       .space  4
+       .type   c_ftl_nand_type, %object
+       .size   c_ftl_nand_type, 2
+c_ftl_nand_type:
+       .space  2
+       .type   c_ftl_nand_die_num, %object
+       .size   c_ftl_nand_die_num, 2
+c_ftl_nand_die_num:
+       .space  2
+       .type   c_ftl_nand_planes_per_die, %object
+       .size   c_ftl_nand_planes_per_die, 2
+c_ftl_nand_planes_per_die:
+       .space  2
+       .type   p_plane_order_table, %object
+       .size   p_plane_order_table, 32
+p_plane_order_table:
+       .space  32
+       .type   c_mlc_erase_count_value, %object
+       .size   c_mlc_erase_count_value, 2
+c_mlc_erase_count_value:
+       .space  2
+       .type   c_ftl_nand_ext_blk_pre_plane, %object
+       .size   c_ftl_nand_ext_blk_pre_plane, 2
+c_ftl_nand_ext_blk_pre_plane:
+       .space  2
+       .type   c_ftl_vendor_part_size, %object
+       .size   c_ftl_vendor_part_size, 2
+c_ftl_vendor_part_size:
+       .space  2
+       .type   c_ftl_nand_blks_per_die, %object
+       .size   c_ftl_nand_blks_per_die, 2
+c_ftl_nand_blks_per_die:
+       .space  2
+       .type   c_ftl_nand_blks_per_die_shift, %object
+       .size   c_ftl_nand_blks_per_die_shift, 2
+c_ftl_nand_blks_per_die_shift:
+       .space  2
+       .type   c_ftl_nand_page_pre_blk, %object
+       .size   c_ftl_nand_page_pre_blk, 2
+c_ftl_nand_page_pre_blk:
+       .space  2
+       .type   c_ftl_nand_page_pre_slc_blk, %object
+       .size   c_ftl_nand_page_pre_slc_blk, 2
+c_ftl_nand_page_pre_slc_blk:
+       .space  2
+       .type   c_ftl_nand_page_pre_super_blk, %object
+       .size   c_ftl_nand_page_pre_super_blk, 2
+c_ftl_nand_page_pre_super_blk:
+       .space  2
+       .type   c_ftl_nand_sec_pre_page, %object
+       .size   c_ftl_nand_sec_pre_page, 2
+c_ftl_nand_sec_pre_page:
+       .space  2
+       .type   c_ftl_nand_sec_pre_page_shift, %object
+       .size   c_ftl_nand_sec_pre_page_shift, 2
+c_ftl_nand_sec_pre_page_shift:
+       .space  2
+       .type   c_ftl_nand_byte_pre_page, %object
+       .size   c_ftl_nand_byte_pre_page, 2
+c_ftl_nand_byte_pre_page:
+       .space  2
+       .type   c_ftl_nand_byte_pre_oob, %object
+       .size   c_ftl_nand_byte_pre_oob, 2
+c_ftl_nand_byte_pre_oob:
+       .space  2
+       .type   c_ftl_nand_reserved_blks, %object
+       .size   c_ftl_nand_reserved_blks, 2
+c_ftl_nand_reserved_blks:
+       .space  2
+       .type   DeviceCapacity, %object
+       .size   DeviceCapacity, 4
+DeviceCapacity:
+       .space  4
+       .type   c_ftl_nand_max_vendor_blks, %object
+       .size   c_ftl_nand_max_vendor_blks, 2
+c_ftl_nand_max_vendor_blks:
+       .space  2
+       .type   c_ftl_nand_vendor_region_num, %object
+       .size   c_ftl_nand_vendor_region_num, 2
+c_ftl_nand_vendor_region_num:
+       .space  2
+       .type   c_ftl_nand_map_blks_per_plane, %object
+       .size   c_ftl_nand_map_blks_per_plane, 2
+c_ftl_nand_map_blks_per_plane:
+       .space  2
+       .space  2
+       .type   c_ftl_nand_max_map_blks, %object
+       .size   c_ftl_nand_max_map_blks, 4
+c_ftl_nand_max_map_blks:
+       .space  4
+       .type   c_ftl_nand_init_sys_blks_per_plane, %object
+       .size   c_ftl_nand_init_sys_blks_per_plane, 4
+c_ftl_nand_init_sys_blks_per_plane:
+       .space  4
+       .type   c_ftl_nand_map_region_num, %object
+       .size   c_ftl_nand_map_region_num, 2
+c_ftl_nand_map_region_num:
+       .space  2
+       .type   c_ftl_nand_l2pmap_ram_region_num, %object
+       .size   c_ftl_nand_l2pmap_ram_region_num, 2
+c_ftl_nand_l2pmap_ram_region_num:
+       .space  2
+       .type   g_MaxLbaSector, %object
+       .size   g_MaxLbaSector, 4
+g_MaxLbaSector:
+       .space  4
+       .type   g_totle_vendor_block, %object
+       .size   g_totle_vendor_block, 2
+g_totle_vendor_block:
+       .space  2
+       .space  2
+       .type   p_vendor_block_table, %object
+       .size   p_vendor_block_table, 4
+p_vendor_block_table:
+       .space  4
+       .type   g_wr_page_num, %object
+       .size   g_wr_page_num, 4
+g_wr_page_num:
+       .space  4
+       .type   req_wr_io, %object
+       .size   req_wr_io, 4
+req_wr_io:
+       .space  4
+       .type   g_MaxLpn, %object
+       .size   g_MaxLpn, 4
+g_MaxLpn:
+       .space  4
+       .type   g_cur_erase_blk, %object
+       .size   g_cur_erase_blk, 4
+g_cur_erase_blk:
+       .space  4
+       .type   gBbtInfo, %object
+       .size   gBbtInfo, 60
+gBbtInfo:
+       .space  60
+       .type   gSysFreeQueue, %object
+       .size   gSysFreeQueue, 2056
+gSysFreeQueue:
+       .space  2056
+       .type   req_erase, %object
+       .size   req_erase, 4
+req_erase:
+       .space  4
+       .type   p_erase_count_table, %object
+       .size   p_erase_count_table, 4
+p_erase_count_table:
+       .space  4
+       .type   g_totle_sys_slc_erase_count, %object
+       .size   g_totle_sys_slc_erase_count, 4
+g_totle_sys_slc_erase_count:
+       .space  4
+       .type   p_sys_data_buf, %object
+       .size   p_sys_data_buf, 4
+p_sys_data_buf:
+       .space  4
+       .type   p_data_block_list_table, %object
+       .size   p_data_block_list_table, 4
+p_data_block_list_table:
+       .space  4
+       .type   p_data_block_list_head, %object
+       .size   p_data_block_list_head, 4
+p_data_block_list_head:
+       .space  4
+       .type   p_valid_page_count_table, %object
+       .size   p_valid_page_count_table, 4
+p_valid_page_count_table:
+       .space  4
+       .type   p_data_block_list_tail, %object
+       .size   p_data_block_list_tail, 4
+p_data_block_list_tail:
+       .space  4
+       .type   g_num_data_superblocks, %object
+       .size   g_num_data_superblocks, 2
+g_num_data_superblocks:
+       .space  2
+       .space  2
+       .type   p_free_data_block_list_head, %object
+       .size   p_free_data_block_list_head, 4
+p_free_data_block_list_head:
+       .space  4
+       .type   g_num_free_superblocks, %object
+       .size   g_num_free_superblocks, 2
+g_num_free_superblocks:
+       .space  2
+       .space  2
+       .type   g_active_superblock, %object
+       .size   g_active_superblock, 48
+g_active_superblock:
+       .space  48
+       .type   g_buffer_superblock, %object
+       .size   g_buffer_superblock, 48
+g_buffer_superblock:
+       .space  48
+       .type   g_gc_temp_superblock, %object
+       .size   g_gc_temp_superblock, 48
+g_gc_temp_superblock:
+       .space  48
+       .type   p_l2p_ram_map, %object
+       .size   p_l2p_ram_map, 4
+p_l2p_ram_map:
+       .space  4
+       .type   g_l2p_last_update_region_id, %object
+       .size   g_l2p_last_update_region_id, 2
+g_l2p_last_update_region_id:
+       .space  2
+       .type   FtlUpdateVaildLpnCount, %object
+       .size   FtlUpdateVaildLpnCount, 2
+FtlUpdateVaildLpnCount:
+       .space  2
+       .type   g_VaildLpn, %object
+       .size   g_VaildLpn, 4
+g_VaildLpn:
+       .space  4
+       .type   p_blk_mode_table, %object
+       .size   p_blk_mode_table, 4
+p_blk_mode_table:
+       .space  4
+       .type   g_inkDie_check_enable, %object
+       .size   g_inkDie_check_enable, 4
+g_inkDie_check_enable:
+       .space  4
+       .type   g_totle_read_page_count, %object
+       .size   g_totle_read_page_count, 4
+g_totle_read_page_count:
+       .space  4
+       .type   g_totle_discard_page_count, %object
+       .size   g_totle_discard_page_count, 4
+g_totle_discard_page_count:
+       .space  4
+       .type   g_totle_write_page_count, %object
+       .size   g_totle_write_page_count, 4
+g_totle_write_page_count:
+       .space  4
+       .type   g_totle_cache_write_count, %object
+       .size   g_totle_cache_write_count, 4
+g_totle_cache_write_count:
+       .space  4
+       .type   g_totle_l2p_write_count, %object
+       .size   g_totle_l2p_write_count, 4
+g_totle_l2p_write_count:
+       .space  4
+       .type   g_totle_gc_page_count, %object
+       .size   g_totle_gc_page_count, 4
+g_totle_gc_page_count:
+       .space  4
+       .type   g_totle_write_sector, %object
+       .size   g_totle_write_sector, 4
+g_totle_write_sector:
+       .space  4
+       .type   g_totle_read_sector, %object
+       .size   g_totle_read_sector, 4
+g_totle_read_sector:
+       .space  4
+       .type   g_GlobalSysVersion, %object
+       .size   g_GlobalSysVersion, 4
+g_GlobalSysVersion:
+       .space  4
+       .type   g_GlobalDataVersion, %object
+       .size   g_GlobalDataVersion, 4
+g_GlobalDataVersion:
+       .space  4
+       .type   g_totle_mlc_erase_count, %object
+       .size   g_totle_mlc_erase_count, 4
+g_totle_mlc_erase_count:
+       .space  4
+       .type   g_totle_slc_erase_count, %object
+       .size   g_totle_slc_erase_count, 4
+g_totle_slc_erase_count:
+       .space  4
+       .type   g_totle_avg_erase_count, %object
+       .size   g_totle_avg_erase_count, 4
+g_totle_avg_erase_count:
+       .space  4
+       .type   g_max_erase_count, %object
+       .size   g_max_erase_count, 4
+g_max_erase_count:
+       .space  4
+       .type   g_min_erase_count, %object
+       .size   g_min_erase_count, 4
+g_min_erase_count:
+       .space  4
+       .type   g_sys_save_data, %object
+       .size   g_sys_save_data, 48
+g_sys_save_data:
+       .space  48
+       .type   c_ftl_nand_data_op_blks_per_plane, %object
+       .size   c_ftl_nand_data_op_blks_per_plane, 2
+c_ftl_nand_data_op_blks_per_plane:
+       .space  2
+       .space  2
+       .type   gSysInfo, %object
+       .size   gSysInfo, 12
+gSysInfo:
+       .space  12
+       .type   g_gc_superblock, %object
+       .size   g_gc_superblock, 48
+g_gc_superblock:
+       .space  48
+       .type   g_all_blk_used_slc_mode, %object
+       .size   g_all_blk_used_slc_mode, 4
+g_all_blk_used_slc_mode:
+       .space  4
+       .type   g_sys_ext_data, %object
+       .size   g_sys_ext_data, 512
+g_sys_ext_data:
+       .space  512
+       .type   g_gc_free_blk_threshold, %object
+       .size   g_gc_free_blk_threshold, 2
+g_gc_free_blk_threshold:
+       .space  2
+       .type   g_gc_merge_free_blk_threshold, %object
+       .size   g_gc_merge_free_blk_threshold, 2
+g_gc_merge_free_blk_threshold:
+       .space  2
+       .type   g_gc_skip_write_count, %object
+       .size   g_gc_skip_write_count, 4
+g_gc_skip_write_count:
+       .space  4
+       .type   g_gc_blk_index, %object
+       .size   g_gc_blk_index, 2
+g_gc_blk_index:
+       .space  2
+       .space  2
+       .type   g_in_swl_replace, %object
+       .size   g_in_swl_replace, 4
+g_in_swl_replace:
+       .space  4
+       .type   g_gc_num_req, %object
+       .size   g_gc_num_req, 4
+g_gc_num_req:
+       .space  4
+       .type   gp_gc_page_buf_info, %object
+       .size   gp_gc_page_buf_info, 4
+gp_gc_page_buf_info:
+       .space  4
+       .type   p_gc_data_buf, %object
+       .size   p_gc_data_buf, 4
+p_gc_data_buf:
+       .space  4
+       .type   p_gc_spare_buf, %object
+       .size   p_gc_spare_buf, 4
+p_gc_spare_buf:
+       .space  4
+       .type   req_gc, %object
+       .size   req_gc, 4
+req_gc:
+       .space  4
+       .type   c_gc_page_buf_num, %object
+       .size   c_gc_page_buf_num, 4
+c_gc_page_buf_num:
+       .space  4
+       .type   g_gc_blk_num, %object
+       .size   g_gc_blk_num, 2
+g_gc_blk_num:
+       .space  2
+       .space  2
+       .type   p_gc_blk_tbl, %object
+       .size   p_gc_blk_tbl, 4
+p_gc_blk_tbl:
+       .space  4
+       .type   p_gc_page_info, %object
+       .size   p_gc_page_info, 4
+p_gc_page_info:
+       .space  4
+       .type   g_gc_page_offset, %object
+       .size   g_gc_page_offset, 2
+g_gc_page_offset:
+       .space  2
+       .type   g_gc_next_blk, %object
+       .size   g_gc_next_blk, 2
+g_gc_next_blk:
+       .space  2
+       .type   g_gc_next_blk_1, %object
+       .size   g_gc_next_blk_1, 2
+g_gc_next_blk_1:
+       .space  2
+       .type   g_gc_bad_block_temp_num, %object
+       .size   g_gc_bad_block_temp_num, 2
+g_gc_bad_block_temp_num:
+       .space  2
+       .type   g_gc_bad_block_temp_tbl, %object
+       .size   g_gc_bad_block_temp_tbl, 34
+g_gc_bad_block_temp_tbl:
+       .space  34
+       .type   g_gc_bad_block_gc_index, %object
+       .size   g_gc_bad_block_gc_index, 2
+g_gc_bad_block_gc_index:
+       .space  2
+       .type   p_map_block_valid_page_count, %object
+       .size   p_map_block_valid_page_count, 4
+p_map_block_valid_page_count:
+       .space  4
+       .type   p_l2p_map_buf, %object
+       .size   p_l2p_map_buf, 4
+p_l2p_map_buf:
+       .space  4
+       .type   gL2pMapInfo, %object
+       .size   gL2pMapInfo, 40
+gL2pMapInfo:
+       .space  40
+       .type   g_totle_map_block, %object
+       .size   g_totle_map_block, 2
+g_totle_map_block:
+       .space  2
+       .space  2
+       .type   p_map_block_table, %object
+       .size   p_map_block_table, 4
+p_map_block_table:
+       .space  4
+       .type   p_map_block_ver_table, %object
+       .size   p_map_block_ver_table, 4
+p_map_block_ver_table:
+       .space  4
+       .type   p_map_region_ppn_table, %object
+       .size   p_map_region_ppn_table, 4
+p_map_region_ppn_table:
+       .space  4
+       .type   c_ftl_nand_bbm_buf_size, %object
+       .size   c_ftl_nand_bbm_buf_size, 2
+c_ftl_nand_bbm_buf_size:
+       .space  2
+       .space  2
+       .type   g_req_cache, %object
+       .size   g_req_cache, 4
+g_req_cache:
+       .space  4
+       .type   g_tmp_data_superblock_id, %object
+       .size   g_tmp_data_superblock_id, 2
+g_tmp_data_superblock_id:
+       .space  2
+       .space  2
+       .type   g_totle_swl_count, %object
+       .size   g_totle_swl_count, 4
+g_totle_swl_count:
+       .space  4
+       .type   ftl_gc_temp_power_lost_recovery_flag, %object
+       .size   ftl_gc_temp_power_lost_recovery_flag, 4
+ftl_gc_temp_power_lost_recovery_flag:
+       .space  4
+       .type   g_recovery_page_min_ver, %object
+       .size   g_recovery_page_min_ver, 4
+g_recovery_page_min_ver:
+       .space  4
+       .type   p_swl_mul_table, %object
+       .size   p_swl_mul_table, 4
+p_swl_mul_table:
+       .space  4
+       .type   g_SlcPartLbaEndSector, %object
+       .size   g_SlcPartLbaEndSector, 4
+g_SlcPartLbaEndSector:
+       .space  4
+       .type   g_in_gc_progress, %object
+       .size   g_in_gc_progress, 4
+g_in_gc_progress:
+       .space  4
+       .type   g_gc_head_data_block, %object
+       .size   g_gc_head_data_block, 4
+g_gc_head_data_block:
+       .space  4
+       .type   g_gc_head_data_block_count, %object
+       .size   g_gc_head_data_block_count, 4
+g_gc_head_data_block_count:
+       .space  4
+       .type   c_wr_page_buf_num, %object
+       .size   c_wr_page_buf_num, 4
+c_wr_page_buf_num:
+       .space  4
+       .type   req_read, %object
+       .size   req_read, 4
+req_read:
+       .space  4
+       .type   req_gc_dst, %object
+       .size   req_gc_dst, 4
+req_gc_dst:
+       .space  4
+       .type   req_prgm, %object
+       .size   req_prgm, 4
+req_prgm:
+       .space  4
+       .type   p_sys_data_buf_1, %object
+       .size   p_sys_data_buf_1, 4
+p_sys_data_buf_1:
+       .space  4
+       .type   p_vendor_data_buf, %object
+       .size   p_vendor_data_buf, 4
+p_vendor_data_buf:
+       .space  4
+       .type   p_wr_io_data_buf, %object
+       .size   p_wr_io_data_buf, 4
+p_wr_io_data_buf:
+       .space  4
+       .type   p_io_data_buf_0, %object
+       .size   p_io_data_buf_0, 4
+p_io_data_buf_0:
+       .space  4
+       .type   p_io_data_buf_1, %object
+       .size   p_io_data_buf_1, 4
+p_io_data_buf_1:
+       .space  4
+       .type   p_sys_spare_buf, %object
+       .size   p_sys_spare_buf, 4
+p_sys_spare_buf:
+       .space  4
+       .type   p_io_spare_buf, %object
+       .size   p_io_spare_buf, 4
+p_io_spare_buf:
+       .space  4
+       .type   p_wr_io_spare_buf, %object
+       .size   p_wr_io_spare_buf, 4
+p_wr_io_spare_buf:
+       .space  4
+       .type   g_ect_tbl_info_size, %object
+       .size   g_ect_tbl_info_size, 2
+g_ect_tbl_info_size:
+       .space  2
+       .space  2
+       .type   gp_ect_tbl_info, %object
+       .size   gp_ect_tbl_info, 4
+gp_ect_tbl_info:
+       .space  4
+       .type   p_valid_page_count_check_table, %object
+       .size   p_valid_page_count_check_table, 4
+p_valid_page_count_check_table:
+       .space  4
+       .type   p_vendor_block_valid_page_count, %object
+       .size   p_vendor_block_valid_page_count, 4
+p_vendor_block_valid_page_count:
+       .space  4
+       .type   p_vendor_block_ver_table, %object
+       .size   p_vendor_block_ver_table, 4
+p_vendor_block_ver_table:
+       .space  4
+       .type   p_vendor_region_ppn_table, %object
+       .size   p_vendor_region_ppn_table, 4
+p_vendor_region_ppn_table:
+       .space  4
+       .type   gNandMaxChip, %object
+       .size   gNandMaxChip, 1
+gNandMaxChip:
+       .space  1
+       .space  1
+       .type   gTotleBlock, %object
+       .size   gTotleBlock, 2
+gTotleBlock:
+       .space  2
+       .type   mlcPageToSlcPageTbl, %object
+       .size   mlcPageToSlcPageTbl, 1024
+mlcPageToSlcPageTbl:
+       .space  1024
+       .type   RK29_NANDC_REG_BASE, %object
+       .size   RK29_NANDC_REG_BASE, 4
+RK29_NANDC_REG_BASE:
+       .space  4
+       .type   gFlashPageBuffer1, %object
+       .size   gFlashPageBuffer1, 4
+gFlashPageBuffer1:
+       .space  4
+       .type   g_maxRetryCount, %object
+       .size   g_maxRetryCount, 1
+g_maxRetryCount:
+       .space  1
+       .space  3
+       .type   gpFlashSaveInfo, %object
+       .size   gpFlashSaveInfo, 4
+gpFlashSaveInfo:
+       .space  4
+       .type   gNandFlashIDBEccBits, %object
+       .size   gNandFlashIDBEccBits, 1
+gNandFlashIDBEccBits:
+       .space  1
+       .space  3
+       .type   gNandFlashIdbBlockAddr, %object
+       .size   gNandFlashIdbBlockAddr, 4
+gNandFlashIdbBlockAddr:
+       .space  4
+       .type   gNandFlashInfoBlockAddr, %object
+       .size   gNandFlashInfoBlockAddr, 4
+gNandFlashInfoBlockAddr:
+       .space  4
+       .type   gNandIDBResBlkNumSaveInFlash, %object
+       .size   gNandIDBResBlkNumSaveInFlash, 1
+gNandIDBResBlkNumSaveInFlash:
+       .space  1
+       .space  3
+       .type   FlashDdrTunningReadCount, %object
+       .size   FlashDdrTunningReadCount, 4
+FlashDdrTunningReadCount:
+       .space  4
+       .type   gFlashSpareBuffer, %object
+       .size   gFlashSpareBuffer, 4
+gFlashSpareBuffer:
+       .space  4
+       .type   gFlashProgCheckBuffer, %object
+       .size   gFlashProgCheckBuffer, 4
+gFlashProgCheckBuffer:
+       .space  4
+       .type   gFlashProgCheckSpareBuffer, %object
+       .size   gFlashProgCheckSpareBuffer, 4
+gFlashProgCheckSpareBuffer:
+       .space  4
+       .type   gMultiPageReadEn, %object
+       .size   gMultiPageReadEn, 1
+gMultiPageReadEn:
+       .space  1
+       .space  3
+       .type   gpReadRetrial, %object
+       .size   gpReadRetrial, 4
+gpReadRetrial:
+       .space  4
+       .type   req_sys, %object
+       .size   req_sys, 36
+req_sys:
+       .space  36
+       .type   g_MaxLbn, %object
+       .size   g_MaxLbn, 4
+g_MaxLbn:
+       .space  4
+       .type   FbbtBlk, %object
+       .size   FbbtBlk, 16
+FbbtBlk:
+       .space  16
+       .type   gVendorBlkInfo, %object
+       .size   gVendorBlkInfo, 40
+gVendorBlkInfo:
+       .space  40
+       .type   g_ect_tbl_power_up_flush, %object
+       .size   g_ect_tbl_power_up_flush, 2
+g_ect_tbl_power_up_flush:
+       .space  2
+       .type   g_power_lost_recovery_flag, %object
+       .size   g_power_lost_recovery_flag, 2
+g_power_lost_recovery_flag:
+       .space  2
+       .type   g_recovery_page_num, %object
+       .size   g_recovery_page_num, 4
+g_recovery_page_num:
+       .space  4
+       .type   g_recovery_ppa_tbl, %object
+       .size   g_recovery_ppa_tbl, 128
+g_recovery_ppa_tbl:
+       .space  128
+       .type   gc_ink_free_return_value, %object
+       .size   gc_ink_free_return_value, 2
+gc_ink_free_return_value:
+       .space  2
+       .type   g_gc_cur_blk_valid_pages, %object
+       .size   g_gc_cur_blk_valid_pages, 2
+g_gc_cur_blk_valid_pages:
+       .space  2
+       .type   g_gc_cur_blk_max_valid_pages, %object
+       .size   g_gc_cur_blk_max_valid_pages, 2
+g_gc_cur_blk_max_valid_pages:
+       .space  2
+       .space  2
+       .type   gp_last_act_superblock, %object
+       .size   gp_last_act_superblock, 4
+gp_last_act_superblock:
+       .space  4
+       .type   g_LowFormat, %object
+       .size   g_LowFormat, 4
+g_LowFormat:
+       .space  4
+       .type   gLoaderBootInfo, %object
+       .size   gLoaderBootInfo, 4
+gLoaderBootInfo:
+       .space  4
+       .type   RK29_NANDC1_REG_BASE, %object
+       .size   RK29_NANDC1_REG_BASE, 4
+RK29_NANDC1_REG_BASE:
+       .space  4
+       .type   gc_discard_updated, %object
+       .size   gc_discard_updated, 4
+gc_discard_updated:
+       .space  4
+       .type   g_ftl_nand_free_count, %object
+       .size   g_ftl_nand_free_count, 4
+g_ftl_nand_free_count:
+       .space  4
+       .type   last_cache_match_count, %object
+       .size   last_cache_match_count, 4
+last_cache_match_count:
+       .space  4
+       .type   g_idb_buffer, %object
+       .size   g_idb_buffer, 4
+g_idb_buffer:
+       .space  4
+       .type   gpDrmKeyInfo, %object
+       .size   gpDrmKeyInfo, 4
+gpDrmKeyInfo:
+       .space  4
+       .type   SecureBootCheckOK, %object
+       .size   SecureBootCheckOK, 4
+SecureBootCheckOK:
+       .space  4
+       .type   SecureBootEn, %object
+       .size   SecureBootEn, 4
+SecureBootEn:
+       .space  4
+       .type   gpBootConfig, %object
+       .size   gpBootConfig, 4
+gpBootConfig:
+       .space  4
+       .type   gSnSectorData, %object
+       .size   gSnSectorData, 512
+gSnSectorData:
+       .space  512
+       .type   SecureBootUnlockTryCount, %object
+       .size   SecureBootUnlockTryCount, 4
+SecureBootUnlockTryCount:
+       .space  4
+       .type   gpVendor0Info, %object
+       .size   gpVendor0Info, 4
+gpVendor0Info:
+       .space  4
+       .type   gpVendor1Info, %object
+       .size   gpVendor1Info, 4
+gpVendor1Info:
+       .space  4
+       .type   gToggleModeClkDiv, %object
+       .size   gToggleModeClkDiv, 4
+gToggleModeClkDiv:
+       .space  4
+       .type   gpNandc1, %object
+       .size   gpNandc1, 4
+gpNandc1:
+       .space  4
+       .type   gNandFlashResEndPageAddr, %object
+       .size   gNandFlashResEndPageAddr, 4
+gNandFlashResEndPageAddr:
+       .space  4
+       .type   gNandFlashInfoBlockEcc, %object
+       .size   gNandFlashInfoBlockEcc, 1
+gNandFlashInfoBlockEcc:
+       .space  1
+       .type   gFlashOnfiModeEn, %object
+       .size   gFlashOnfiModeEn, 1
+gFlashOnfiModeEn:
+       .space  1
+       .type   gFlashSdrModeEn, %object
+       .size   gFlashSdrModeEn, 1
+gFlashSdrModeEn:
+       .space  1
index 6741a695391d662397d6118d2ed1fb95dd60f67b..cd070dce90a91d3cead8a13e20090ea242b61bfc 100644 (file)
 #NO_APP
        .text
        .align  2
+       .type   rknand_sys_storage_release, %function
+rknand_sys_storage_release:
+       stp     x29, x30, [sp, -16]!
+       add     x29, sp, 0
+       ldr     x0, [x1,208]
+       cbz     x0, .L2
+       str     xzr, [x1,208]
+       bl      kfree
+.L2:
+       mov     w0, 0
+       ldp     x29, x30, [sp], 16
+       ret
+       .size   rknand_sys_storage_release, .-rknand_sys_storage_release
+       .align  2
        .type   rknand_sys_storage_open, %function
 rknand_sys_storage_open:
-       adrp    x0, :got:kmalloc_caches
-       mov     x2, 4096
        stp     x29, x30, [sp, -32]!
+       adrp    x0, kmalloc_caches+96
+       mov     x2, 4096
        add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:kmalloc_caches]
        str     x19, [sp,16]
        mov     x19, x1
+       ldr     x0, [x0,#:lo12:kmalloc_caches+96]
        mov     w1, 192
-       ldr     x0, [x0,96]
        movk    w1, 0x240, lsl 16
        bl      kmem_cache_alloc_trace
        str     xzr, [x19,208]
-       cbnz    x0, .L2
+       cbnz    x0, .L8
        adrp    x0, .LC0
        add     x0, x0, :lo12:.LC0
        bl      printk
        mov     w0, -12
-       b       .L3
-.L2:
+       b       .L9
+.L8:
        str     x0, [x19,208]
        mov     w0, 0
-.L3:
+.L9:
        ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
        .size   rknand_sys_storage_open, .-rknand_sys_storage_open
        .align  2
-       .type   rknand_sys_storage_release, %function
-rknand_sys_storage_release:
-       stp     x29, x30, [sp, -16]!
-       add     x29, sp, 0
-       ldr     x0, [x1,208]
-       cbz     x0, .L6
-       str     xzr, [x1,208]
-       bl      kfree
-.L6:
-       mov     w0, 0
-       ldp     x29, x30, [sp], 16
+       .type   ftl_set_blk_mode.part.8, %function
+ftl_set_blk_mode.part.8:
+       adrp    x1, .LANCHOR0
+       uxth    w0, w0
+       ubfx    x2, x0, 5, 11
+       lsl     x2, x2, 2
+       ldr     x3, [x1,#:lo12:.LANCHOR0]
+       mov     w1, 1
+       lsl     w0, w1, w0
+       ldr     w1, [x3,x2]
+       orr     w0, w1, w0
+       str     w0, [x3,x2]
        ret
-       .size   rknand_sys_storage_release, .-rknand_sys_storage_release
+       .size   ftl_set_blk_mode.part.8, .-ftl_set_blk_mode.part.8
        .align  2
        .global FlashMemCmp8
        .type   FlashMemCmp8, %function
 FlashMemCmp8:
-       adrp    x3, :got:g_slc2KBNand
        mov     x5, x0
-       ldr     x3, [x3, #:got_lo12:g_slc2KBNand]
-       ldrb    w0, [x3]
-       cbz     w0, .L14
+       adrp    x0, .LANCHOR0+8
+       ldrb    w0, [x0,#:lo12:.LANCHOR0+8]
+       cbz     w0, .L16
        ldrb    w4, [x5,1]
        mov     w0, 0
        ldrb    w3, [x1,1]
        cmp     w4, w3
-       beq     .L12
-.L14:
-       mov     x3, 0
+       beq     .L13
 .L16:
+       mov     x3, 0
+.L14:
        cmp     w3, w2
        mov     w4, w3
-       bcs     .L18
+       bcs     .L19
        ldrb    w0, [x5,x3]
        add     x3, x3, 1
        add     x6, x1, x3
        ldrb    w6, [x6,-1]
        cmp     w6, w0
-       beq     .L16
+       beq     .L14
        add     w0, w4, 1
-       b       .L12
-.L18:
+       b       .L13
+.L19:
        mov     w0, 0
-.L12:
+.L13:
        ret
        .size   FlashMemCmp8, .-FlashMemCmp8
        .align  2
        .global FlashRsvdBlkChk
        .type   FlashRsvdBlkChk, %function
 FlashRsvdBlkChk:
-       adrp    x2, :got:gNandIDBResBlkNum
-       adrp    x3, :got:gBlockPageAlignSize
+       adrp    x2, .LANCHOR0
        uxtb    w0, w0
-       ldr     x2, [x2, #:got_lo12:gNandIDBResBlkNum]
-       ldr     x3, [x3, #:got_lo12:gBlockPageAlignSize]
-       ldrb    w2, [x2]
-       ldr     w3, [x3]
-       mul     w2, w2, w3
+       add     x2, x2, :lo12:.LANCHOR0
+       ldrb    w3, [x2,9]
+       ldr     w2, [x2,12]
+       mul     w2, w3, w2
        cmp     w1, w2
        cset    w1, cc
        cmp     w0, wzr
@@ -125,29 +136,335 @@ FlashRsvdBlkChk:
        .global FlashGetRandomizer
        .type   FlashGetRandomizer, %function
 FlashGetRandomizer:
-       adrp    x2, :got:random_seed
-       and     w3, w1, 127
        stp     x29, x30, [sp, -32]!
-       uxtb    w0, w0
+       adrp    x2, .LANCHOR1
+       and     w3, w1, 127
+       add     x2, x2, :lo12:.LANCHOR1
        add     x29, sp, 0
-       ldr     x2, [x2, #:got_lo12:random_seed]
+       uxtb    w0, w0
        str     x19, [sp,16]
        ldrh    w19, [x2,w3,uxtw 1]
-       adrp    x2, :got:gNandRandomizer
-       ldr     x2, [x2, #:got_lo12:gNandRandomizer]
-       ldrb    w2, [x2]
-       cbz     w2, .L21
+       adrp    x2, .LANCHOR0+16
+       ldrb    w2, [x2,#:lo12:.LANCHOR0+16]
+       cbz     w2, .L22
        bl      FlashRsvdBlkChk
        cmp     w0, wzr
        orr     w1, w19, -1073741824
        csel    w19, w1, w19, ne
-.L21:
+.L22:
        mov     w0, w19
        ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
        .size   FlashGetRandomizer, .-FlashGetRandomizer
        .align  2
+       .global FlashSetRandomizer
+       .type   FlashSetRandomizer, %function
+FlashSetRandomizer:
+       stp     x29, x30, [sp, -48]!
+       add     x29, sp, 0
+       stp     x19, x20, [sp,16]
+       adrp    x19, .LANCHOR0
+       mov     w20, w1
+       stp     x21, x22, [sp,32]
+       uxtb    w21, w0
+       add     x0, x19, :lo12:.LANCHOR0
+       ldr     w2, [x0,20]
+       cmp     w2, 5
+       bls     .L29
+       adrp    x2, .LANCHOR1
+       and     w20, w1, 127
+       add     x2, x2, :lo12:.LANCHOR1
+       ldrb    w0, [x0,16]
+       ldrh    w20, [x2,w20,uxtw 1]
+       cbz     w0, .L30
+       mov     w0, w21
+       bl      FlashRsvdBlkChk
+       cmp     w0, wzr
+       orr     w1, w20, -1073741824
+       csel    w20, w1, w20, ne
+.L30:
+       add     x19, x19, :lo12:.LANCHOR0
+       add     x21, x19, x21, sxtw 4
+       ldr     x0, [x21,24]
+       str     w20, [x0,336]
+       b       .L28
+.L29:
+       cmp     w2, 4
+       bne     .L28
+       adrp    x2, .LANCHOR1
+       and     w3, w1, 127
+       add     x2, x2, :lo12:.LANCHOR1
+       ldrb    w0, [x0,16]
+       ldrh    w22, [x2,w3,uxtw 1]
+       lsl     w22, w22, 8
+       cbz     w0, .L32
+       mov     w0, w21
+       bl      FlashRsvdBlkChk
+       cbz     w0, .L32
+       ubfiz   w20, w20, 1, 7
+       orr     w20, w20, 1
+       orr     w22, w22, w20
+.L32:
+       add     x19, x19, :lo12:.LANCHOR0
+       add     x21, x19, x21, sxtw 4
+       ldr     x0, [x21,24]
+       str     w22, [x0,336]
+.L28:
+       ldp     x19, x20, [sp,16]
+       ldp     x21, x22, [sp,32]
+       ldp     x29, x30, [sp], 48
+       ret
+       .size   FlashSetRandomizer, .-FlashSetRandomizer
+       .align  2
+       .global FlashReadCmd
+       .type   FlashReadCmd, %function
+FlashReadCmd:
+       adrp    x3, .LANCHOR0
+       uxtb    w0, w0
+       add     x3, x3, :lo12:.LANCHOR0
+       sbfiz   x5, x0, 4, 32
+       add     x3, x3, 24
+       lsr     w4, w1, 16
+       add     x2, x3, x5
+       stp     x29, x30, [sp, -16]!
+       add     x29, sp, 0
+       ldrb    w2, [x2,8]
+       ldr     x3, [x3,x5]
+       add     x2, x3, x2, lsl 8
+       and     w3, w1, 255
+       str     wzr, [x2,2056]
+       str     wzr, [x2,2052]
+       str     wzr, [x2,2052]
+       str     w3, [x2,2052]
+       lsr     w3, w1, 8
+       str     w3, [x2,2052]
+       mov     w3, 48
+       str     w4, [x2,2052]
+       str     w3, [x2,2056]
+       bl      FlashSetRandomizer
+       ldp     x29, x30, [sp], 16
+       ret
+       .size   FlashReadCmd, .-FlashReadCmd
+       .align  2
+       .global FlashReadDpDataOutCmd
+       .type   FlashReadDpDataOutCmd, %function
+FlashReadDpDataOutCmd:
+       adrp    x3, .LANCHOR0
+       uxtb    w0, w0
+       add     x3, x3, :lo12:.LANCHOR0
+       sbfiz   x2, x0, 4, 32
+       add     x4, x3, 24
+       stp     x29, x30, [sp, -16]!
+       add     x5, x4, x2
+       add     x29, sp, 0
+       ldr     x6, [x4,x2]
+       lsr     w4, w1, 8
+       ldrb    w2, [x3,104]
+       lsr     w3, w1, 16
+       cmp     w2, 1
+       ldrb    w2, [x5,8]
+       and     w5, w1, 255
+       add     x2, x6, x2, lsl 8
+       bne     .L46
+       mov     w6, 6
+       str     w6, [x2,2056]
+       str     wzr, [x2,2052]
+       str     wzr, [x2,2052]
+       str     w5, [x2,2052]
+       str     w4, [x2,2052]
+       str     w3, [x2,2052]
+       b       .L48
+.L46:
+       str     wzr, [x2,2056]
+       str     wzr, [x2,2052]
+       str     wzr, [x2,2052]
+       str     w5, [x2,2052]
+       str     w4, [x2,2052]
+       str     w3, [x2,2052]
+       mov     w3, 5
+       str     w3, [x2,2056]
+       str     wzr, [x2,2052]
+       str     wzr, [x2,2052]
+.L48:
+       mov     w3, 224
+       str     w3, [x2,2056]
+       bl      FlashSetRandomizer
+       ldp     x29, x30, [sp], 16
+       ret
+       .size   FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd
+       .align  2
+       .global flash_enter_slc_mode
+       .type   flash_enter_slc_mode, %function
+flash_enter_slc_mode:
+       adrp    x1, .LANCHOR0
+       uxtb    w0, w0
+       add     x1, x1, :lo12:.LANCHOR0
+       ldrb    w2, [x1,120]
+       cbz     w2, .L49
+       sbfiz   x0, x0, 4, 32
+       add     x1, x1, 24
+       add     x2, x1, x0
+       ldr     x1, [x1,x0]
+       ldrb    w0, [x2,8]
+       add     x0, x0, 8
+       add     x0, x1, x0, lsl 8
+       mov     w1, 218
+       str     w1, [x0,8]
+.L49:
+       ret
+       .size   flash_enter_slc_mode, .-flash_enter_slc_mode
+       .align  2
+       .global flash_exit_slc_mode
+       .type   flash_exit_slc_mode, %function
+flash_exit_slc_mode:
+       adrp    x1, .LANCHOR0
+       uxtb    w0, w0
+       add     x1, x1, :lo12:.LANCHOR0
+       ldrb    w2, [x1,120]
+       cbz     w2, .L54
+       sbfiz   x0, x0, 4, 32
+       add     x1, x1, 24
+       add     x2, x1, x0
+       ldr     x1, [x1,x0]
+       ldrb    w0, [x2,8]
+       add     x0, x0, 8
+       add     x0, x1, x0, lsl 8
+       mov     w1, 223
+       str     w1, [x0,8]
+.L54:
+       ret
+       .size   flash_exit_slc_mode, .-flash_exit_slc_mode
+       .align  2
+       .global FlashProgFirstCmd
+       .type   FlashProgFirstCmd, %function
+FlashProgFirstCmd:
+       adrp    x3, .LANCHOR0
+       uxtb    w0, w0
+       add     x3, x3, :lo12:.LANCHOR0
+       sbfiz   x5, x0, 4, 32
+       add     x3, x3, 24
+       lsr     w4, w1, 16
+       add     x2, x3, x5
+       stp     x29, x30, [sp, -16]!
+       add     x29, sp, 0
+       ldrb    w2, [x2,8]
+       ldr     x3, [x3,x5]
+       add     x2, x3, x2, lsl 8
+       mov     w3, 128
+       str     w3, [x2,2056]
+       and     w3, w1, 255
+       str     wzr, [x2,2052]
+       str     wzr, [x2,2052]
+       str     w3, [x2,2052]
+       lsr     w3, w1, 8
+       str     w3, [x2,2052]
+       str     w4, [x2,2052]
+       bl      FlashSetRandomizer
+       ldp     x29, x30, [sp], 16
+       ret
+       .size   FlashProgFirstCmd, .-FlashProgFirstCmd
+       .align  2
+       .global FlashEraseCmd
+       .type   FlashEraseCmd, %function
+FlashEraseCmd:
+       adrp    x3, .LANCHOR0
+       ubfiz   x0, x0, 4, 8
+       add     x3, x3, :lo12:.LANCHOR0
+       add     x4, x3, 24
+       add     x5, x4, x0
+       ldr     x4, [x4,x0]
+       ldrb    w0, [x5,8]
+       cbz     w2, .L61
+       add     x2, x4, x0, lsl 8
+       mov     w5, 96
+       str     w5, [x2,2056]
+       and     w5, w1, 255
+       str     w5, [x2,2052]
+       lsr     w5, w1, 8
+       str     w5, [x2,2052]
+       lsr     w5, w1, 16
+       str     w5, [x2,2052]
+       ldr     w2, [x3,12]
+       add     w1, w1, w2
+.L61:
+       add     x0, x4, x0, lsl 8
+       mov     w2, 96
+       str     w2, [x0,2056]
+       and     w2, w1, 255
+       str     w2, [x0,2052]
+       lsr     w2, w1, 8
+       str     w2, [x0,2052]
+       lsr     w1, w1, 16
+       str     w1, [x0,2052]
+       mov     w1, 208
+       str     w1, [x0,2056]
+       ret
+       .size   FlashEraseCmd, .-FlashEraseCmd
+       .align  2
+       .global FlashProgDpSecondCmd
+       .type   FlashProgDpSecondCmd, %function
+FlashProgDpSecondCmd:
+       adrp    x2, .LANCHOR0
+       uxtb    w0, w0
+       add     x2, x2, :lo12:.LANCHOR0
+       sbfiz   x4, x0, 4, 32
+       add     x5, x2, 24
+       lsr     w3, w1, 16
+       add     x7, x5, x4
+       stp     x29, x30, [sp, -16]!
+       add     x29, sp, 0
+       ldrb    w6, [x2,99]
+       ldrb    w2, [x7,8]
+       ldr     x4, [x5,x4]
+       add     x2, x4, x2, lsl 8
+       and     w4, w1, 255
+       str     w6, [x2,2056]
+       str     wzr, [x2,2052]
+       str     wzr, [x2,2052]
+       str     w4, [x2,2052]
+       lsr     w4, w1, 8
+       str     w4, [x2,2052]
+       str     w3, [x2,2052]
+       bl      FlashSetRandomizer
+       ldp     x29, x30, [sp], 16
+       ret
+       .size   FlashProgDpSecondCmd, .-FlashProgDpSecondCmd
+       .align  2
+       .global FlashProgSecondCmd
+       .type   FlashProgSecondCmd, %function
+FlashProgSecondCmd:
+       adrp    x1, .LANCHOR0
+       ubfiz   x0, x0, 4, 8
+       add     x1, x1, :lo12:.LANCHOR0
+       add     x1, x1, 24
+       add     x2, x1, x0
+       ldr     x1, [x1,x0]
+       ldrb    w0, [x2,8]
+       add     x0, x0, 8
+       add     x0, x1, x0, lsl 8
+       mov     w1, 16
+       str     w1, [x0,8]
+       ret
+       .size   FlashProgSecondCmd, .-FlashProgSecondCmd
+       .align  2
+       .global FlashProgDpFirstCmd
+       .type   FlashProgDpFirstCmd, %function
+FlashProgDpFirstCmd:
+       adrp    x1, .LANCHOR0
+       ubfiz   x0, x0, 4, 8
+       add     x1, x1, :lo12:.LANCHOR0
+       add     x2, x1, 24
+       add     x3, x2, x0
+       ldrb    w1, [x1,98]
+       ldr     x2, [x2,x0]
+       ldrb    w0, [x3,8]
+       add     x0, x0, 8
+       add     x0, x2, x0, lsl 8
+       str     w1, [x0,8]
+       ret
+       .size   FlashProgDpFirstCmd, .-FlashProgDpFirstCmd
+       .align  2
        .global JSHash
        .type   JSHash, %function
 JSHash:
@@ -155,17 +472,17 @@ JSHash:
        mov     w0, 42982
        mov     x2, 0
        movk    w0, 0x47c6, lsl 16
-.L28:
+.L69:
        cmp     w1, w2
-       bls     .L30
+       bls     .L71
        lsl     w3, w0, 5
        ldrb    w4, [x5,x2]
        add     w3, w3, w0, lsr 2
        add     x2, x2, 1
        add     w3, w3, w4
        eor     w0, w0, w3
-       b       .L28
-.L30:
+       b       .L69
+.L71:
        ret
        .size   JSHash, .-JSHash
        .align  2
@@ -185,88 +502,94 @@ FlashPrintInfo:
        .global FlashSuspend
        .type   FlashSuspend, %function
 FlashSuspend:
-       adrp    x0, :got:gpNandc
-       adrp    x2, .LANCHOR0
-       add     x1, x2, :lo12:.LANCHOR0
-       ldr     x0, [x0, #:got_lo12:gpNandc]
-       ldr     x0, [x0]
-       ldr     w3, [x0]
-       str     w3, [x2,#:lo12:.LANCHOR0]
-       ldr     w2, [x0,4]
-       str     w2, [x1,4]
-       ldr     w2, [x0,8]
-       str     w2, [x1,8]
-       ldr     w2, [x0,12]
-       str     w2, [x1,12]
-       ldr     w2, [x0,304]
-       str     w2, [x1,16]
-       ldr     w2, [x0,308]
-       str     w2, [x1,20]
-       ldr     w2, [x0,336]
-       ldr     w0, [x0,344]
-       str     w0, [x1,28]
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       ldr     x1, [x0,128]
+       ldr     w2, [x1]
+       str     w2, [x0,136]
+       ldr     w2, [x1,4]
+       str     w2, [x0,140]
+       ldr     w2, [x1,8]
+       str     w2, [x0,144]
+       ldr     w2, [x1,12]
+       str     w2, [x0,148]
+       ldr     w2, [x1,304]
+       str     w2, [x0,152]
+       ldr     w2, [x1,308]
+       str     w2, [x0,156]
+       ldr     w2, [x1,336]
+       ldr     w1, [x1,344]
+       str     w2, [x0,160]
+       str     w1, [x0,164]
        mov     w0, 0
-       str     w2, [x1,24]
        ret
        .size   FlashSuspend, .-FlashSuspend
        .align  2
        .global LogAddr2PhyAddr
        .type   LogAddr2PhyAddr, %function
 LogAddr2PhyAddr:
-       adrp    x6, :got:gNandPhyInfo
+       adrp    x7, .LANCHOR0
        uxtb    w4, w4
-       ldr     x6, [x6, #:got_lo12:gNandPhyInfo]
-       ldrh    w5, [x6,12]
-       ldrh    w6, [x6,14]
-       mul     w5, w5, w6
-       adrp    x6, :got:gBlockPageAlignSize
-       uxth    w5, w5
-       ldr     x6, [x6, #:got_lo12:gBlockPageAlignSize]
-       ldrh    w8, [x6]
-       adrp    x6, :got:g_slc2KBNand
-       ubfiz   w7, w8, 1, 15
-       ldr     x6, [x6, #:got_lo12:g_slc2KBNand]
-       ldrb    w6, [x6]
+       add     x6, x7, :lo12:.LANCHOR0
+       ldrh    w8, [x6,182]
+       ldrh    w5, [x6,180]
+       ldrh    w9, [x6,12]
+       ldrb    w6, [x6,8]
+       mul     w5, w5, w8
        cmp     w6, 1
-       csel    w8, w7, w8, eq
-       ldr     w7, [x0,4]
+       ubfiz   w8, w9, 1, 15
+       csel    w9, w8, w9, eq
+       ldr     w8, [x0,4]
+       uxth    w5, w5
        cmp     w1, 1
-       ubfx    x6, x7, 10, 16
-       and     w7, w7, 1023
-       udiv    w9, w6, w5
-       msub    w5, w9, w5, w6
+       ubfx    x6, x8, 10, 16
+       and     w8, w8, 1023
+       udiv    w10, w6, w5
+       msub    w5, w10, w5, w6
        uxth    w6, w5
-       bne     .L36
-       adrp    x1, :got:slcPageToMlcPageTbl
-       ldr     x1, [x1, #:got_lo12:slcPageToMlcPageTbl]
-       ldrh    w7, [x1,w7,sxtw 1]
-.L36:
-       adrp    x1, :got:DieAddrs
+       bne     .L77
+       add     x1, x7, :lo12:.LANCHOR0
+       ldrb    w5, [x1,120]
+       cbnz    w5, .L77
+       add     x1, x1, 196
+       ldrh    w8, [x1,w8,sxtw 1]
+.L77:
+       add     x7, x7, :lo12:.LANCHOR0
        cmp     w4, 1
-       ldr     x1, [x1, #:got_lo12:DieAddrs]
-       ldr     w5, [x1,w9,uxtw 2]
+       add     x7, x7, 708
        mov     w1, 0
-       madd    w5, w6, w8, w5
-       add     w5, w5, w7
+       ldr     w5, [x7,w10,uxtw 2]
+       madd    w5, w6, w9, w5
+       add     w5, w5, w8
        str     w5, [x2]
-       str     w9, [x3]
-       bls     .L37
+       str     w10, [x3]
+       bls     .L78
        ldr     w1, [x0,4]
        ldr     w0, [x0,60]
        add     w1, w1, 1024
        cmp     w1, w0
        cset    w1, eq
-.L37:
+.L78:
        mov     w0, w1
        ret
        .size   LogAddr2PhyAddr, .-LogAddr2PhyAddr
        .align  2
+       .global FlashScheduleEnSet
+       .type   FlashScheduleEnSet, %function
+FlashScheduleEnSet:
+       adrp    x1, .LANCHOR0
+       add     x1, x1, :lo12:.LANCHOR0
+       ldr     w2, [x1,740]
+       str     w0, [x1,740]
+       mov     w0, w2
+       ret
+       .size   FlashScheduleEnSet, .-FlashScheduleEnSet
+       .align  2
        .global FlashGetPageSize
        .type   FlashGetPageSize, %function
 FlashGetPageSize:
-       adrp    x0, :got:gpNandParaInfo
-       ldr     x0, [x0, #:got_lo12:gpNandParaInfo]
-       ldr     x0, [x0]
+       adrp    x0, .LANCHOR0+744
+       ldr     x0, [x0,#:lo12:.LANCHOR0+744]
        ldrb    w0, [x0,9]
        ret
        .size   FlashGetPageSize, .-FlashGetPageSize
@@ -280,9 +603,10 @@ NandcReadDontCaseBusyEn:
        .global NandcGetChipIf
        .type   NandcGetChipIf, %function
 NandcGetChipIf:
-       adrp    x1, :got:gNandChipMap
+       adrp    x1, .LANCHOR0
        ubfiz   x0, x0, 4, 8
-       ldr     x1, [x1, #:got_lo12:gNandChipMap]
+       add     x1, x1, :lo12:.LANCHOR0
+       add     x1, x1, 24
        add     x2, x1, x0
        ldr     x0, [x1,x0]
        ldrb    w2, [x2,8]
@@ -291,91 +615,37 @@ NandcGetChipIf:
        ret
        .size   NandcGetChipIf, .-NandcGetChipIf
        .align  2
-       .global FlashEraseCmd
-       .type   FlashEraseCmd, %function
-FlashEraseCmd:
-       stp     x29, x30, [sp, -32]!
-       add     x29, sp, 0
-       str     x1, [x29,16]
-       str     x2, [x29,24]
-       bl      NandcGetChipIf
-       ldr     x2, [x29,24]
-       ldr     x1, [x29,16]
-       cbz     w2, .L43
-       mov     w2, 96
-       str     w2, [x0,8]
-       and     w2, w1, 255
-       str     w2, [x0,4]
-       lsr     w2, w1, 8
-       str     w2, [x0,4]
-       lsr     w2, w1, 16
-       str     w2, [x0,4]
-       adrp    x2, :got:gBlockPageAlignSize
-       ldr     x2, [x2, #:got_lo12:gBlockPageAlignSize]
-       ldr     w2, [x2]
-       add     w1, w1, w2
-.L43:
-       mov     w2, 96
-       str     w2, [x0,8]
-       and     w2, w1, 255
-       str     w2, [x0,4]
-       lsr     w2, w1, 8
-       str     w2, [x0,4]
-       lsr     w1, w1, 16
-       str     w1, [x0,4]
-       mov     w1, 208
-       str     w1, [x0,8]
-       ldp     x29, x30, [sp], 32
-       ret
-       .size   FlashEraseCmd, .-FlashEraseCmd
-       .align  2
-       .global FlashProgSecondCmd
-       .type   FlashProgSecondCmd, %function
-FlashProgSecondCmd:
-       stp     x29, x30, [sp, -16]!
-       add     x29, sp, 0
-       bl      NandcGetChipIf
-       mov     w1, 16
-       str     w1, [x0,8]
-       ldp     x29, x30, [sp], 16
-       ret
-       .size   FlashProgSecondCmd, .-FlashProgSecondCmd
-       .align  2
-       .global FlashProgDpFirstCmd
-       .type   FlashProgDpFirstCmd, %function
-FlashProgDpFirstCmd:
-       stp     x29, x30, [sp, -16]!
-       add     x29, sp, 0
-       bl      NandcGetChipIf
-       adrp    x1, :got:gNandOptPara
-       ldr     x1, [x1, #:got_lo12:gNandOptPara]
-       ldrb    w1, [x1,10]
-       str     w1, [x0,8]
-       ldp     x29, x30, [sp], 16
-       ret
-       .size   FlashProgDpFirstCmd, .-FlashProgDpFirstCmd
-       .align  2
        .global NandcSetDdrPara
        .type   NandcSetDdrPara, %function
 NandcSetDdrPara:
-       adrp    x1, :got:gpNandc
+       adrp    x1, .LANCHOR0+128
        uxtb    w0, w0
        lsl     w2, w0, 8
        orr     w0, w2, w0, lsl 16
-       ldr     x1, [x1, #:got_lo12:gpNandc]
+       ldr     x1, [x1,#:lo12:.LANCHOR0+128]
        orr     w0, w0, 1
-       ldr     x1, [x1]
        str     w0, [x1,304]
        ret
        .size   NandcSetDdrPara, .-NandcSetDdrPara
        .align  2
+       .global NandcSetDdrDiv
+       .type   NandcSetDdrDiv, %function
+NandcSetDdrDiv:
+       adrp    x1, .LANCHOR0+128
+       uxtb    w0, w0
+       ldr     x2, [x1,#:lo12:.LANCHOR0+128]
+       mov     w1, 16640
+       orr     w0, w0, w1
+       str     w0, [x2,344]
+       ret
+       .size   NandcSetDdrDiv, .-NandcSetDdrDiv
+       .align  2
        .global NandcSetDdrMode
        .type   NandcSetDdrMode, %function
 NandcSetDdrMode:
-       adrp    x1, :got:gpNandc
+       adrp    x1, .LANCHOR0+128
        cmp     w0, wzr
-       ldr     x1, [x1, #:got_lo12:gpNandc]
-       ldr     x2, [x1]
+       ldr     x2, [x1,#:lo12:.LANCHOR0+128]
        ldr     w1, [x2]
        and     w3, w1, -8193
        orr     w1, w1, 253952
@@ -388,17 +658,17 @@ NandcSetDdrMode:
        .type   NandcSetMode, %function
 NandcSetMode:
        stp     x29, x30, [sp, -48]!
-       adrp    x1, :got:gpNandc
+       adrp    x1, .LANCHOR0
        uxtb    w0, w0
        add     x29, sp, 0
        str     x21, [sp,32]
-       tst     w0, 6
-       ldr     x21, [x1, #:got_lo12:gpNandc]
+       add     x21, x1, :lo12:.LANCHOR0
        stp     x19, x20, [sp,16]
+       tst     w0, 6
        mov     x20, x1
-       ldr     x2, [x21]
+       ldr     x2, [x21,128]
        ldr     w19, [x2]
-       beq     .L54
+       beq     .L90
        orr     w19, w19, 24576
        and     w0, w0, 4
        and     w19, w19, -32769
@@ -408,7 +678,7 @@ NandcSetMode:
        orr     w1, w19, 32768
        csel    w19, w1, w19, ne
        bl      rknand_get_clk_rate
-       ldr     x0, [x21]
+       ldr     x0, [x21,128]
        mov     w1, 8322
        str     w1, [x0,344]
        mov     w1, 4099
@@ -418,12 +688,12 @@ NandcSetMode:
        str     w1, [x0,308]
        mov     w1, 39
        str     w1, [x0,308]
-       b       .L56
-.L54:
+       b       .L92
+.L90:
        and     w19, w19, -8193
-.L56:
-       ldr     x1, [x20, #:got_lo12:gpNandc]
-       ldr     x0, [x1]
+.L92:
+       add     x1, x20, :lo12:.LANCHOR0
+       ldr     x0, [x1,128]
        str     w19, [x0]
        mov     w0, 0
        ldp     x19, x20, [sp,16]
@@ -435,10 +705,9 @@ NandcSetMode:
        .global NandcFlashCsDebug
        .type   NandcFlashCsDebug, %function
 NandcFlashCsDebug:
-       adrp    x1, :got:gNandChipMap
+       adrp    x1, .LANCHOR0+24
        uxtb    w0, w0
-       ldr     x1, [x1, #:got_lo12:gNandChipMap]
-       ldr     x2, [x1]
+       ldr     x2, [x1,#:lo12:.LANCHOR0+24]
        ldr     w1, [x2]
        bfi     w1, w0, 0, 8
        str     w1, [x2]
@@ -448,9 +717,10 @@ NandcFlashCsDebug:
        .global NandcFlashCs
        .type   NandcFlashCs, %function
 NandcFlashCs:
-       adrp    x1, :got:gNandChipMap
+       adrp    x1, .LANCHOR0
        ubfiz   x0, x0, 4, 8
-       ldr     x1, [x1, #:got_lo12:gNandChipMap]
+       add     x1, x1, :lo12:.LANCHOR0
+       add     x1, x1, 24
        add     x3, x1, x0
        ldr     x2, [x1,x0]
        mov     w1, 1
@@ -465,9 +735,10 @@ NandcFlashCs:
        .global NandcFlashDeCs
        .type   NandcFlashDeCs, %function
 NandcFlashDeCs:
-       adrp    x1, :got:gNandChipMap
+       adrp    x1, .LANCHOR0
        ubfiz   x0, x0, 4, 8
-       ldr     x1, [x1, #:got_lo12:gNandChipMap]
+       add     x1, x1, :lo12:.LANCHOR0
+       add     x1, x1, 24
        ldr     x1, [x1,x0]
        ldr     w0, [x1]
        and     w0, w0, -256
@@ -482,11 +753,11 @@ NandcDelayns:
        sub     sp, sp, #16
        lsr     w0, w0, 4
        str     w0, [sp,12]
-.L63:
+.L99:
        ldr     w0, [sp,12]
        sub     w1, w0, #1
        str     w1, [sp,12]
-       cbnz    w0, .L63
+       cbnz    w0, .L99
        add     sp, sp, 16
        ret
        .size   NandcDelayns, .-NandcDelayns
@@ -494,16 +765,22 @@ NandcDelayns:
        .global FlashReadStatus
        .type   FlashReadStatus, %function
 FlashReadStatus:
+       adrp    x1, .LANCHOR0
+       ubfiz   x0, x0, 4, 8
        stp     x29, x30, [sp, -32]!
+       add     x1, x1, :lo12:.LANCHOR0
+       add     x1, x1, 24
        add     x29, sp, 0
+       add     x2, x1, x0
        str     x19, [sp,16]
-       bl      NandcGetChipIf
-       mov     x19, x0
+       ldrb    w2, [x2,8]
+       ldr     x19, [x1,x0]
        mov     w0, 112
-       str     w0, [x19,8]
+       add     x19, x19, x2, lsl 8
+       str     w0, [x19,2056]
        mov     w0, 80
        bl      NandcDelayns
-       ldr     w0, [x19]
+       ldr     w0, [x19,2048]
        ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
@@ -512,65 +789,62 @@ FlashReadStatus:
        .global ToshibaSetRRPara
        .type   ToshibaSetRRPara, %function
 ToshibaSetRRPara:
+       uxtb    w1, w1
+       mov     w3, 5
+       add     w2, w1, 1
        stp     x29, x30, [sp, -96]!
-       adrp    x2, :got:Toshiba15RefValue
+       smull   x3, w2, w3
+       adrp    x2, .LANCHOR1
        add     x29, sp, 0
+       add     x2, x2, :lo12:.LANCHOR1
+       stp     x21, x22, [sp,32]
        stp     x23, x24, [sp,48]
-       uxtb    x23, w1
-       ldr     x2, [x2, #:got_lo12:Toshiba15RefValue]
+       add     x23, x2, x1, sxtw
+       add     x24, x2, 256
+       add     x21, x2, 304
        stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
-       mov     w20, 5
-       mov     x21, x0
-       add     w0, w23, 1
-       mov     x19, 0
        stp     x25, x26, [sp,64]
-       smull   x20, w0, w20
-       adrp    x0, :got:ToshibaA19RefValue
-       adrp    x25, :got:g_maxRegNum
-       stp     x27, x28, [sp,80]
+       str     x27, [sp,80]
        mov     x22, x0
-       mov     w26, 85
-       ldr     x24, [x0, #:got_lo12:ToshibaA19RefValue]
-       adrp    x27, :got:g_retryMode
-       adrp    x28, :got:ToshibaRefValue
-       add     x24, x20, x24
-       add     x20, x20, x2
-.L67:
-       ldr     x0, [x25, #:got_lo12:g_maxRegNum]
-       ldrb    w0, [x0]
-       cmp     w0, w19
-       bls     .L73
-       str     w26, [x21,8]
-       ldr     x0, [x22, #:got_lo12:ToshibaA19RefValue]
-       ldrsb   w0, [x19,x0]
-       str     w0, [x21,4]
+       add     x24, x24, x3
+       add     x21, x21, x3
+       mov     x20, 0
+       adrp    x26, .LANCHOR0
+       mov     w27, 85
+       mov     x19, x2
+.L103:
+       add     x25, x26, :lo12:.LANCHOR0
+       ldrb    w0, [x25,753]
+       cmp     w0, w20
+       bls     .L109
+       add     x0, x19, 256
+       str     w27, [x22,8]
+       ldrsb   w0, [x20,x0]
+       str     w0, [x22,4]
        mov     w0, 200
        bl      NandcDelayns
-       ldr     x0, [x27, #:got_lo12:g_retryMode]
-       ldrb    w0, [x0]
+       ldrb    w0, [x25,752]
        cmp     w0, 34
-       bne     .L68
-       ldrsb   w0, [x24,x19]
-       b       .L72
-.L68:
+       bne     .L104
+       ldrsb   w0, [x24,x20]
+       b       .L108
+.L104:
        cmp     w0, 35
-       bne     .L70
-       ldrsb   w0, [x20,x19]
-       b       .L72
-.L70:
-       ldr     x0, [x28, #:got_lo12:ToshibaRefValue]
-       ldrsb   w0, [x0,x23]
-.L72:
-       str     w0, [x21]
-       add     x19, x19, 1
-       b       .L67
-.L73:
+       bne     .L106
+       ldrsb   w0, [x21,x20]
+       b       .L108
+.L106:
+       ldrsb   w0, [x23,400]
+.L108:
+       str     w0, [x22]
+       add     x20, x20, 1
+       b       .L103
+.L109:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
+       ldr     x27, [sp,80]
        ldp     x29, x30, [sp], 96
        ret
        .size   ToshibaSetRRPara, .-ToshibaSetRRPara
@@ -579,37 +853,36 @@ ToshibaSetRRPara:
        .type   SamsungSetRRPara, %function
 SamsungSetRRPara:
        stp     x29, x30, [sp, -64]!
-       uxtb    x1, w1
+       adrp    x2, .LANCHOR1
+       add     x2, x2, :lo12:.LANCHOR1
        add     x29, sp, 0
-       stp     x21, x22, [sp,32]
-       mov     x21, x0
-       adrp    x0, :got:SamsungRefValue
+       add     x1, x2, x1, uxtb 2
        stp     x19, x20, [sp,16]
-       add     x1, x1, 1
-       mov     x19, 0
-       ldr     x20, [x0, #:got_lo12:SamsungRefValue]
-       mov     x22, x0
+       stp     x21, x22, [sp,32]
        stp     x23, x24, [sp,48]
-       add     x20, x20, x1, lsl 2
-       adrp    x23, :got:g_maxRegNum
+       mov     x21, x0
+       add     x22, x1, 412
+       mov     x20, 0
+       adrp    x23, .LANCHOR0
        mov     w24, 161
-.L75:
-       ldr     x0, [x23, #:got_lo12:g_maxRegNum]
-       ldrb    w0, [x0]
-       cmp     w0, w19
-       bls     .L77
+       mov     x19, x2
+.L111:
+       add     x0, x23, :lo12:.LANCHOR0
+       ldrb    w0, [x0,753]
+       cmp     w0, w20
+       bls     .L113
        str     w24, [x21,8]
+       add     x0, x19, 408
        str     wzr, [x21]
-       ldr     x0, [x22, #:got_lo12:SamsungRefValue]
-       ldrsb   w0, [x19,x0]
+       ldrsb   w0, [x20,x0]
        str     w0, [x21]
-       ldrsb   w0, [x20,x19]
-       add     x19, x19, 1
+       ldrsb   w0, [x22,x20]
+       add     x20, x20, 1
        str     w0, [x21]
        mov     w0, 300
        bl      NandcDelayns
-       b       .L75
-.L77:
+       b       .L111
+.L113:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -620,110 +893,113 @@ SamsungSetRRPara:
        .global HynixSetRRPara
        .type   HynixSetRRPara, %function
 HynixSetRRPara:
-       stp     x29, x30, [sp, -80]!
-       adrp    x4, :got:gReadRetryInfo
+       stp     x29, x30, [sp, -96]!
        add     x29, sp, 0
        stp     x21, x22, [sp,32]
-       uxtb    x22, w0
-       adrp    x0, :got:gpNandParaInfo
-       stp     x23, x24, [sp,48]
+       adrp    x22, .LANCHOR0
+       str     x27, [sp,80]
        stp     x19, x20, [sp,16]
-       ldr     x0, [x0, #:got_lo12:gpNandParaInfo]
-       mov     x21, x22
+       add     x19, x22, :lo12:.LANCHOR0
+       uxtb    w27, w1
+       stp     x23, x24, [sp,48]
        stp     x25, x26, [sp,64]
-       uxtb    w20, w1
-       mov     x24, x2
-       ldr     x0, [x0]
-       uxtb    w23, w3
+       uxtb    x23, w0
+       mov     x25, x2
+       ldr     x0, [x19,744]
+       mov     x26, x23
+       uxtb    w24, w3
+       add     x19, x19, 760
        ldrb    w0, [x0,19]
        cmp     w0, 6
-       bne     .L79
-       ldr     x4, [x4, #:got_lo12:gReadRetryInfo]
-       lsl     w19, w23, 2
-       add     x4, x4, x22, lsl 6
-       add     x4, x4, 20
-       add     x19, x4, x19, sxtw
-       b       .L80
-.L79:
-       ldr     x4, [x4, #:got_lo12:gReadRetryInfo]
-       lsl     x19, x22, 3
-       add     x19, x19, x23, sxtw
-       add     x4, x4, x19, lsl 3
-       add     x19, x4, 20
-.L80:
-       mov     w0, w21
-       uxtb    x26, w20
-       mov     x20, 0
-       bl      NandcGetChipIf
-       mov     x25, x0
-       mov     w0, w21
+       bne     .L115
+       add     x19, x19, x23, lsl 6
+       lsl     w0, w24, 2
+       add     x19, x19, 20
+       add     x19, x19, x0, sxtw
+       b       .L116
+.L115:
+       lsl     x2, x23, 3
+       add     x2, x2, x24, sxtw
+       add     x19, x19, x2, lsl 3
+       add     x19, x19, 20
+.L116:
+       add     x2, x22, :lo12:.LANCHOR0
+       lsl     x0, x23, 4
+       add     x2, x2, 24
+       uxtb    x27, w27
+       add     x1, x2, x0
+       ldr     x20, [x2,x0]
+       mov     w0, w26
+       ldrb    w21, [x1,8]
        bl      NandcFlashCs
+       ubfiz   x21, x21, 8, 8
        mov     w0, 54
-       str     w0, [x25,8]
-.L81:
-       cmp     x20, x26
-       beq     .L83
-       ldrb    w0, [x24,x20]
-       str     w0, [x25,4]
+       add     x20, x20, x21
+       mov     x21, 0
+       str     w0, [x20,2056]
+.L117:
+       cmp     x21, x27
+       beq     .L119
+       ldrb    w0, [x25,x21]
+       str     w0, [x20,2052]
        mov     w0, 200
        bl      NandcDelayns
-       ldrb    w0, [x19,x20]
-       add     x20, x20, 1
-       str     w0, [x25]
-       b       .L81
-.L83:
+       ldrb    w0, [x19,x21]
+       add     x21, x21, 1
+       str     w0, [x20,2048]
+       b       .L117
+.L119:
+       add     x22, x22, :lo12:.LANCHOR0
        mov     w0, 22
-       str     w0, [x25,8]
-       mov     w0, w21
+       add     x23, x22, x23
+       str     w0, [x20,2056]
+       mov     w0, w26
        bl      NandcFlashDeCs
-       adrp    x0, :got:read_retry_cur_offset
-       ldr     x0, [x0, #:got_lo12:read_retry_cur_offset]
-       strb    w23, [x0,x22]
+       strb    w24, [x23,1616]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
-       ldp     x29, x30, [sp], 80
+       ldr     x27, [sp,80]
+       ldp     x29, x30, [sp], 96
        ret
        .size   HynixSetRRPara, .-HynixSetRRPara
        .align  2
        .global FlashSetReadRetryDefault
        .type   FlashSetReadRetryDefault, %function
 FlashSetReadRetryDefault:
-       adrp    x0, :got:gpNandParaInfo
        stp     x29, x30, [sp, -48]!
        add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:gpNandParaInfo]
        stp     x19, x20, [sp,16]
-       str     x21, [sp,32]
-       mov     x19, 0
-       ldr     x0, [x0]
+       adrp    x19, .LANCHOR0
+       mov     x20, 0
+       add     x19, x19, :lo12:.LANCHOR0
+       stp     x21, x22, [sp,32]
+       ldr     x0, [x19,744]
        ldrb    w0, [x0,19]
        sub     w0, w0, #1
        uxtb    w0, w0
        cmp     w0, 5
-       bhi     .L84
-       adrp    x20, :got:IDByte
-       adrp    x21, :got:gReadRetryInfo
-.L89:
-       lsl     x1, x19, 3
-       ldr     x2, [x20, #:got_lo12:IDByte]
-       uxtb    w0, w19
-       ldrb    w1, [x1,x2]
+       bhi     .L120
+       add     x21, x19, 1620
+       add     x22, x19, 764
+.L125:
+       lsl     x1, x20, 3
+       uxtb    w0, w20
+       ldrb    w1, [x1,x21]
        cmp     w1, 173
-       bne     .L86
-       ldr     x2, [x21, #:got_lo12:gReadRetryInfo]
+       bne     .L122
+       ldrb    w1, [x19,761]
+       mov     x2, x22
        mov     w3, 0
-       add     x2, x2, 4
-       ldrb    w1, [x2,-3]
        bl      HynixSetRRPara
-.L86:
-       add     x19, x19, 1
-       cmp     x19, 4
-       bne     .L89
-.L84:
+.L122:
+       add     x20, x20, 1
+       cmp     x20, 4
+       bne     .L125
+.L120:
        ldp     x19, x20, [sp,16]
-       ldr     x21, [sp,32]
+       ldp     x21, x22, [sp,32]
        ldp     x29, x30, [sp], 48
        ret
        .size   FlashSetReadRetryDefault, .-FlashSetReadRetryDefault
@@ -731,53 +1007,60 @@ FlashSetReadRetryDefault:
        .global FlashReadStatusEN
        .type   FlashReadStatusEN, %function
 FlashReadStatusEN:
-       stp     x29, x30, [sp, -48]!
+       stp     x29, x30, [sp, -32]!
+       adrp    x3, .LANCHOR0
+       ubfiz   x0, x0, 4, 8
+       add     x4, x3, :lo12:.LANCHOR0
        add     x29, sp, 0
+       add     x5, x4, 24
        stp     x19, x20, [sp,16]
-       uxtb    w20, w2
-       str     x1, [x29,40]
-       bl      NandcGetChipIf
-       mov     x19, x0
-       adrp    x0, :got:gpNandParaInfo
-       ldr     x1, [x29,40]
-       ldr     x0, [x0, #:got_lo12:gpNandParaInfo]
-       ldr     x0, [x0]
+       add     x6, x5, x0
+       uxtb    w2, w2
+       ldr     x20, [x5,x0]
+       ldr     x0, [x4,744]
+       ldrb    w19, [x6,8]
        ldrb    w0, [x0,8]
        cmp     w0, 2
-       bne     .L92
-       adrp    x3, :got:gNandOptPara
-       ldr     x0, [x3, #:got_lo12:gNandOptPara]
-       cbnz    w20, .L93
-       ldrb    w0, [x0,13]
-       b       .L101
-.L93:
-       ldrb    w0, [x0,14]
-.L101:
-       str     w0, [x19,8]
+       bne     .L128
+       add     x4, x4, 88
+       cbnz    w2, .L129
+       ldrb    w2, [x4,13]
+       b       .L137
+.L129:
+       ldrb    w2, [x4,14]
+.L137:
+       add     x0, x19, 8
+       add     x3, x3, :lo12:.LANCHOR0
+       add     x0, x20, x0, lsl 8
+       str     w2, [x0,8]
        mov     w2, 0
-       ldr     x0, [x3, #:got_lo12:gNandOptPara]
-       ldrb    w0, [x0,15]
-       cbz     w0, .L96
-.L100:
-       ldr     x0, [x3, #:got_lo12:gNandOptPara]
-       ldrb    w0, [x0,15]
-       cmp     w2, w0
-       bcs     .L96
+       ldrb    w4, [x3,103]
+       cbz     w4, .L132
+       add     x3, x19, 8
+       lsl     x3, x3, 8
+.L136:
+       cmp     w2, w4
+       bcs     .L132
+       add     x5, x20, x3
        lsl     w0, w2, 3
-       add     w2, w2, 1
        lsr     w0, w1, w0
+       add     w2, w2, 1
        and     w0, w0, 255
-       str     w0, [x19,4]
-       b       .L100
-.L92:
-       mov     w0, 112
-       str     w0, [x19,8]
-.L96:
+       str     w0, [x5,4]
+       b       .L136
+.L128:
+       add     x0, x19, 8
+       mov     w1, 112
+       add     x0, x20, x0, lsl 8
+       str     w1, [x0,8]
+.L132:
+       add     x19, x19, 8
        mov     w0, 80
+       lsl     x19, x19, 8
        bl      NandcDelayns
-       ldr     w0, [x19]
+       ldr     w0, [x20,x19]
        ldp     x19, x20, [sp,16]
-       ldp     x29, x30, [sp], 48
+       ldp     x29, x30, [sp], 32
        uxtb    w0, w0
        ret
        .size   FlashReadStatusEN, .-FlashReadStatusEN
@@ -792,15 +1075,15 @@ FlashWaitReadyEN:
        uxtb    w19, w0
        mov     w20, w1
        uxtb    w21, w2
-.L106:
+.L142:
        mov     w0, w19
        mov     w1, w20
        mov     w2, w21
        bl      FlashReadStatusEN
        cmp     w0, 255
        mov     w3, w0
-       beq     .L106
-       tbz     x3, 6, .L106
+       beq     .L142
+       tbz     x3, 6, .L142
        ldp     x19, x20, [sp,16]
        ldr     x21, [sp,32]
        ldp     x29, x30, [sp], 48
@@ -811,24 +1094,24 @@ FlashWaitReadyEN:
        .type   FlashWaitCmdDone, %function
 FlashWaitCmdDone:
        stp     x29, x30, [sp, -48]!
-       adrp    x2, :got:gDieOp
        uxtb    x1, w0
-       mov     x0, 24
+       mov     x2, 24
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       ldr     x2, [x2, #:got_lo12:gDieOp]
-       mov     x20, x1
-       mul     x1, x1, x0
-       str     x21, [sp,32]
-       add     x19, x2, x1
-       ldrb    w21, [x2,x1]
+       adrp    x20, .LANCHOR0
+       stp     x21, x22, [sp,32]
+       add     x20, x20, :lo12:.LANCHOR0
+       mov     x22, x1
+       mul     x1, x1, x2
+       add     x0, x20, 1652
+       add     x19, x0, x1
+       ldrb    w21, [x0,x1]
        ldr     x0, [x19,8]
-       cbz     x0, .L111
+       cbz     x0, .L147
        mov     w0, w21
+       add     x20, x20, 708
        bl      NandcFlashCs
-       adrp    x1, :got:DieAddrs
-       ldr     x1, [x1, #:got_lo12:DieAddrs]
-       ldr     w0, [x1,w20,sxtw 2]
+       ldr     w0, [x20,w22,sxtw 2]
        ldr     w1, [x19,4]
        cmp     w0, wzr
        mov     w0, w21
@@ -842,13 +1125,13 @@ FlashWaitCmdDone:
        str     w0, [x1]
        str     xzr, [x19,8]
        ldr     x1, [x19,16]
-       cbz     x1, .L111
+       cbz     x1, .L147
        str     w0, [x1]
        str     xzr, [x19,16]
-.L111:
+.L147:
        mov     w0, 0
-       ldr     x21, [sp,32]
        ldp     x19, x20, [sp,16]
+       ldp     x21, x22, [sp,32]
        ldp     x29, x30, [sp], 48
        ret
        .size   FlashWaitCmdDone, .-FlashWaitCmdDone
@@ -856,29 +1139,30 @@ FlashWaitCmdDone:
        .global NandcWaitFlashReady
        .type   NandcWaitFlashReady, %function
 NandcWaitFlashReady:
-       adrp    x1, :got:gNandChipMap
-       ubfiz   x0, x0, 4, 8
        stp     x29, x30, [sp, -48]!
+       adrp    x1, .LANCHOR0
+       ubfiz   x0, x0, 4, 8
+       add     x1, x1, :lo12:.LANCHOR0
        add     x29, sp, 0
-       ldr     x1, [x1, #:got_lo12:gNandChipMap]
+       add     x1, x1, 24
        stp     x19, x20, [sp,16]
        mov     w19, 34464
        ldr     x20, [x1,x0]
        movk    w19, 0x1, lsl 16
-.L118:
+.L154:
        mov     w0, 100
        bl      NandcDelayns
        ldr     w0, [x20]
        str     w0, [x29,40]
        ldr     w0, [x29,40]
-       tbnz    x0, 9, .L119
+       tbnz    x0, 9, .L155
        subs    w19, w19, #1
-       bne     .L118
+       bne     .L154
        mov     w0, -1
-       b       .L117
-.L119:
+       b       .L153
+.L155:
        mov     w0, 0
-.L117:
+.L153:
        ldp     x19, x20, [sp,16]
        ldp     x29, x30, [sp], 48
        ret
@@ -887,23 +1171,31 @@ NandcWaitFlashReady:
        .global FlashReset
        .type   FlashReset, %function
 FlashReset:
-       stp     x29, x30, [sp, -32]!
+       stp     x29, x30, [sp, -48]!
+       adrp    x1, .LANCHOR0
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       uxtb    w19, w0
-       mov     w0, w19
-       bl      NandcGetChipIf
-       mov     x20, x0
-       mov     w0, w19
+       add     x1, x1, :lo12:.LANCHOR0
+       uxtb    w20, w0
+       add     x1, x1, 24
+       sbfiz   x0, x20, 4, 32
+       add     x2, x1, x0
+       str     x21, [sp,32]
+       ldr     x21, [x1,x0]
+       mov     w0, w20
+       ldrb    w19, [x2,8]
        bl      NandcFlashCs
+       add     x19, x19, 8
        mov     w0, 255
-       str     w0, [x20,8]
-       mov     w0, w19
+       add     x19, x21, x19, lsl 8
+       str     w0, [x19,8]
+       mov     w0, w20
        bl      NandcWaitFlashReady
-       mov     w0, w19
+       mov     w0, w20
        bl      NandcFlashDeCs
+       ldr     x21, [sp,32]
        ldp     x19, x20, [sp,16]
-       ldp     x29, x30, [sp], 32
+       ldp     x29, x30, [sp], 48
        ret
        .size   FlashReset, .-FlashReset
        .align  2
@@ -941,171 +1233,170 @@ FlashEraseBlock:
        .global FlashSetInterfaceMode
        .type   FlashSetInterfaceMode, %function
 FlashSetInterfaceMode:
-       stp     x29, x30, [sp, -80]!
+       adrp    x1, .LANCHOR0
+       mov     x6, 0
+       add     x1, x1, :lo12:.LANCHOR0
+       mov     w8, 239
+       stp     x29, x30, [sp, -16]!
+       add     x7, x1, 24
+       add     x4, x1, 1620
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
-       stp     x23, x24, [sp,48]
-       stp     x25, x26, [sp,64]
-       mov     w20, w0
-       mov     x19, 0
-       adrp    x25, :got:IDByte
-       adrp    x21, :got:gFlashInterfaceMode
-       mov     w22, 239
-       mov     w23, 128
-       mov     w24, 1
-       mov     w26, 35
-.L134:
-       mov     w0, w19
-       bl      NandcGetChipIf
-       lsl     x1, x19, 3
-       ldr     x2, [x25, #:got_lo12:IDByte]
-       ldrb    w1, [x1,x2]
-       cmp     w1, 152
-       beq     .L124
-       cmp     w1, 69
-       beq     .L124
-       cmp     w1, 173
-       beq     .L124
-       cmp     w1, 44
-       bne     .L125
-.L124:
-       ldr     x2, [x21, #:got_lo12:gFlashInterfaceMode]
-       cmp     w20, 1
-       ldrb    w2, [x2]
-       bne     .L127
-       tbz     x2, 0, .L125
-       str     w22, [x0,8]
-       cmp     w1, 173
-       bne     .L128
-       str     w20, [x0,4]
-       b       .L145
-.L128:
-       cmp     w1, 44
-       bne     .L130
-       str     w20, [x0,4]
-       mov     w1, 5
-       b       .L146
-.L130:
-       str     w23, [x0,4]
-       str     w20, [x0]
-       b       .L132
-.L127:
-       tbz     x2, 2, .L125
-       str     w22, [x0,8]
-       cmp     w1, 173
-       bne     .L131
-       str     w24, [x0,4]
-       mov     w1, 32
-.L146:
-       str     w1, [x0]
-       b       .L132
-.L131:
-       cmp     w1, 44
-       bne     .L133
-       str     w24, [x0,4]
-       str     w26, [x0]
-       b       .L132
-.L133:
-       str     w23, [x0,4]
-.L145:
-       str     wzr, [x0]
-.L132:
-       str     wzr, [x0]
-       str     wzr, [x0]
-       str     wzr, [x0]
-.L125:
-       add     x19, x19, 1
-       cmp     x19, 4
-       bne     .L134
+       ldrb    w2, [x1,1844]
+       mov     w9, 128
+       mov     w10, 1
+       mov     w12, 35
+       and     w11, w2, 1
+       and     w2, w2, 4
+       mov     w13, 32
+       mov     w14, 5
+       uxtb    w5, w2
+.L170:
+       ldrb    w3, [x6,x4]
+       ldr     x1, [x7]
+       cmp     w3, 152
+       ldrb    w2, [x7,8]
+       beq     .L160
+       cmp     w3, 69
+       beq     .L160
+       cmp     w3, 173
+       beq     .L160
+       cmp     w3, 44
+       bne     .L161
+.L160:
+       cmp     w0, 1
+       bne     .L163
+       cbz     w11, .L161
+       ubfiz   x2, x2, 8, 8
+       cmp     w3, 173
+       add     x1, x1, x2
+       str     w8, [x1,2056]
+       bne     .L164
+       str     w0, [x1,2052]
+       b       .L181
+.L164:
+       cmp     w3, 44
+       bne     .L166
+       str     w0, [x1,2052]
+       str     w14, [x1,2048]
+       b       .L168
+.L166:
+       str     w9, [x1,2052]
+       str     w0, [x1,2048]
+       b       .L168
+.L163:
+       cbz     w5, .L161
+       ubfiz   x2, x2, 8, 8
+       cmp     w3, 173
+       add     x1, x1, x2
+       str     w8, [x1,2056]
+       bne     .L167
+       str     w10, [x1,2052]
+       str     w13, [x1,2048]
+       b       .L168
+.L167:
+       cmp     w3, 44
+       bne     .L169
+       str     w10, [x1,2052]
+       str     w12, [x1,2048]
+       b       .L168
+.L169:
+       str     w9, [x1,2052]
+.L181:
+       str     wzr, [x1,2048]
+.L168:
+       str     wzr, [x1,2048]
+       str     wzr, [x1,2048]
+       str     wzr, [x1,2048]
+.L161:
+       add     x6, x6, 8
+       add     x7, x7, 16
+       cmp     x6, 32
+       bne     .L170
        mov     w0, 0
        bl      NandcWaitFlashReady
        mov     w0, 0
-       ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
-       ldp     x23, x24, [sp,48]
-       ldp     x25, x26, [sp,64]
-       ldp     x29, x30, [sp], 80
+       ldp     x29, x30, [sp], 16
        ret
        .size   FlashSetInterfaceMode, .-FlashSetInterfaceMode
        .align  2
        .global FlashReadSpare
        .type   FlashReadSpare, %function
 FlashReadSpare:
-       adrp    x3, :got:gNandParaInfo
-       stp     x29, x30, [sp, -64]!
+       adrp    x3, .LANCHOR1+481
+       adrp    x5, .LANCHOR0
+       stp     x29, x30, [sp, -48]!
+       uxtb    w0, w0
+       add     x5, x5, :lo12:.LANCHOR0
+       add     x5, x5, 24
+       sbfiz   x6, x0, 4, 32
        add     x29, sp, 0
-       ldr     x3, [x3, #:got_lo12:gNandParaInfo]
-       stp     x19, x20, [sp,16]
-       str     x21, [sp,32]
-       uxtb    w21, w0
-       mov     w0, w21
-       str     x2, [x29,56]
-       ldrb    w20, [x3,9]
-       str     x1, [x29,48]
-       bl      NandcGetChipIf
-       str     wzr, [x0,8]
-       mov     x19, x0
-       ldr     x1, [x29,48]
-       lsl     w20, w20, 9
-       str     w20, [x0,4]
-       lsr     w20, w20, 8
-       str     w20, [x0,4]
-       and     w0, w1, 255
-       str     w0, [x19,4]
-       lsr     w0, w1, 8
-       str     w0, [x19,4]
+       ldrb    w4, [x3,#:lo12:.LANCHOR1+481]
+       add     x3, x5, x6
+       str     x19, [sp,16]
+       lsl     w4, w4, 9
+       str     x2, [x29,40]
+       ldrb    w3, [x3,8]
+       ldr     x19, [x5,x6]
+       add     x19, x19, x3, lsl 8
+       and     w3, w1, 255
+       str     wzr, [x19,2056]
+       str     w4, [x19,2052]
+       lsr     w4, w4, 8
+       str     w4, [x19,2052]
+       str     w3, [x19,2052]
+       lsr     w3, w1, 8
+       str     w3, [x19,2052]
        lsr     w1, w1, 16
-       mov     w0, 48
-       str     w1, [x19,4]
-       str     w0, [x19,8]
-       mov     w0, w21
+       str     w1, [x19,2052]
+       mov     w1, 48
+       str     w1, [x19,2056]
        bl      NandcWaitFlashReady
-       ldr     x2, [x29,56]
-       ldr     w0, [x19]
+       ldr     x2, [x29,40]
+       ldr     w0, [x19,2048]
        strb    w0, [x2]
-       ldp     x19, x20, [sp,16]
-       ldr     x21, [sp,32]
-       ldp     x29, x30, [sp], 64
+       ldr     x19, [sp,16]
+       ldp     x29, x30, [sp], 48
        ret
        .size   FlashReadSpare, .-FlashReadSpare
        .align  2
        .global SandiskProgTestBadBlock
        .type   SandiskProgTestBadBlock, %function
 SandiskProgTestBadBlock:
-       stp     x29, x30, [sp, -48]!
+       adrp    x3, .LANCHOR0
+       uxtb    w0, w0
+       stp     x29, x30, [sp, -32]!
+       add     x3, x3, :lo12:.LANCHOR0
+       sbfiz   x4, x0, 4, 32
+       add     x3, x3, 24
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       uxtb    w20, w0
-       mov     w0, w20
-       str     x1, [x29,40]
-       bl      NandcGetChipIf
-       mov     x19, x0
-       mov     w0, 162
-       ldr     x1, [x29,40]
-       str     w0, [x19,8]
-       mov     w0, 128
-       str     w0, [x19,8]
-       and     w0, w1, 255
-       str     wzr, [x19,4]
-       str     wzr, [x19,4]
-       str     w0, [x19,4]
-       lsr     w0, w1, 8
-       str     w0, [x19,4]
+       add     x2, x3, x4
+       str     x19, [sp,16]
+       ldrb    w2, [x2,8]
+       ldr     x19, [x3,x4]
+       add     x19, x19, x2, lsl 8
+       mov     w2, 162
+       str     w2, [x19,2056]
+       mov     w2, 128
+       str     w2, [x19,2056]
+       and     w2, w1, 255
+       str     wzr, [x19,2052]
+       str     wzr, [x19,2052]
+       str     w2, [x19,2052]
+       lsr     w2, w1, 8
+       str     w2, [x19,2052]
        lsr     w1, w1, 16
-       mov     w0, 16
-       str     w1, [x19,4]
-       str     w0, [x19,8]
-       mov     w0, w20
+       str     w1, [x19,2052]
+       mov     w1, 16
+       str     w1, [x19,2056]
        bl      NandcWaitFlashReady
        mov     w0, 112
-       str     w0, [x19,8]
+       str     w0, [x19,2056]
        mov     w0, 80
        bl      NandcDelayns
-       ldr     w0, [x19]
-       ldp     x19, x20, [sp,16]
+       ldr     w0, [x19,2048]
+       ldr     x19, [sp,16]
        and     w0, w0, 1
-       ldp     x29, x30, [sp], 48
+       ldp     x29, x30, [sp], 32
        ret
        .size   SandiskProgTestBadBlock, .-SandiskProgTestBadBlock
        .align  2
@@ -1124,35 +1415,33 @@ SandiskSetRRPara:
        str     w0, [x20,4]
        mov     w0, 200
        bl      NandcDelayns
-       adrp    x3, :got:ToshibaA19RefValue
-       adrp    x2, :got:Toshiba15RefValue
        mov     w1, 5
-       adrp    x4, :got:g_maxRegNum
-       adrp    x5, :got:g_retryMode
+       adrp    x2, .LANCHOR1
+       add     x2, x2, :lo12:.LANCHOR1
+       adrp    x5, .LANCHOR0
        smull   x1, w19, w1
-       ldr     x2, [x2, #:got_lo12:Toshiba15RefValue]
-       ldr     x3, [x3, #:got_lo12:ToshibaA19RefValue]
-       add     x3, x1, x3
-       add     x1, x1, x2
-       mov     x2, 0
-.L150:
-       ldr     x0, [x4, #:got_lo12:g_maxRegNum]
-       ldrb    w0, [x0]
-       cmp     w0, w2
-       bls     .L155
-       ldr     x0, [x5, #:got_lo12:g_retryMode]
-       ldrb    w0, [x0]
-       cmp     w0, 67
-       bne     .L151
-       ldrsb   w0, [x3,x2]
-       b       .L154
-.L151:
-       ldrsb   w0, [x1,x2]
-.L154:
-       str     w0, [x20]
+       add     x0, x2, 256
+       add     x2, x2, 304
+       add     x0, x0, x1
+       add     x1, x2, x1
+       mov     x2, 0
+.L185:
+       add     x3, x5, :lo12:.LANCHOR0
+       ldrb    w4, [x3,753]
+       cmp     w4, w2
+       bls     .L190
+       ldrb    w3, [x3,752]
+       cmp     w3, 67
+       bne     .L186
+       ldrsb   w3, [x0,x2]
+       b       .L189
+.L186:
+       ldrsb   w3, [x1,x2]
+.L189:
+       str     w3, [x20]
        add     x2, x2, 1
-       b       .L150
-.L155:
+       b       .L185
+.L190:
        mov     w0, 0
        bl      NandcWaitFlashReady
        ldp     x19, x20, [sp,16]
@@ -1160,106 +1449,107 @@ SandiskSetRRPara:
        ret
        .size   SandiskSetRRPara, .-SandiskSetRRPara
        .align  2
-       .global NandcRandmzSel
-       .type   NandcRandmzSel, %function
-NandcRandmzSel:
-       adrp    x2, :got:gNandChipMap
-       ubfiz   x0, x0, 4, 8
-       ldr     x2, [x2, #:got_lo12:gNandChipMap]
-       ldr     x0, [x2,x0]
-       str     w1, [x0,336]
-       ret
-       .size   NandcRandmzSel, .-NandcRandmzSel
-       .align  2
-       .global FlashSetRandomizer
-       .type   FlashSetRandomizer, %function
-FlashSetRandomizer:
-       stp     x29, x30, [sp, -48]!
+       .global FlashEraseSLc2KBlocks
+       .type   FlashEraseSLc2KBlocks, %function
+FlashEraseSLc2KBlocks:
+       stp     x29, x30, [sp, -96]!
        add     x29, sp, 0
-       str     x21, [sp,32]
-       uxtb    w21, w0
-       adrp    x0, :got:gNandcVer
+       stp     x21, x22, [sp,32]
+       adrp    x22, __stack_chk_guard
+       adrp    x21, .LANCHOR0
+       stp     x23, x24, [sp,48]
+       stp     x25, x26, [sp,64]
+       add     x21, x21, :lo12:.LANCHOR0
+       mov     w25, w1
+       adrp    x24, .LC1
+       ldr     x1, [x22,#:lo12:__stack_chk_guard]
        stp     x19, x20, [sp,16]
-       mov     w19, w1
-       ldr     x0, [x0, #:got_lo12:gNandcVer]
-       ldr     w0, [x0]
-       cmp     w0, 5
-       bls     .L158
-       adrp    x0, :got:random_seed
-       and     w19, w1, 127
-       ldr     x0, [x0, #:got_lo12:random_seed]
-       ldrh    w19, [x0,w19,uxtw 1]
-       adrp    x0, :got:gNandRandomizer
-       ldr     x0, [x0, #:got_lo12:gNandRandomizer]
-       ldrb    w0, [x0]
-       cbz     w0, .L159
-       mov     w0, w21
-       bl      FlashRsvdBlkChk
-       cmp     w0, wzr
-       orr     w1, w19, -1073741824
-       csel    w19, w1, w19, ne
-.L159:
-       mov     w0, w21
-       mov     w1, w19
-       b       .L173
-.L158:
-       cmp     w0, 4
-       bne     .L157
-       adrp    x0, :got:random_seed
-       and     w2, w1, 127
-       ldr     x0, [x0, #:got_lo12:random_seed]
-       ldrh    w20, [x0,w2,uxtw 1]
-       mov     w0, w21
-       lsl     w20, w20, 8
-       bl      FlashRsvdBlkChk
-       cbz     w0, .L161
-       adrp    x0, :got:gNandRandomizer
-       ldr     x0, [x0, #:got_lo12:gNandRandomizer]
-       ldrb    w0, [x0]
-       cbz     w0, .L161
-       ubfiz   w19, w19, 1, 7
-       orr     w19, w19, 1
-       orr     w20, w20, w19
-.L161:
-       mov     w0, w21
-       mov     w1, w20
-.L173:
-       bl      NandcRandmzSel
-.L157:
-       ldp     x19, x20, [sp,16]
-       ldr     x21, [sp,32]
-       ldp     x29, x30, [sp], 48
-       ret
-       .size   FlashSetRandomizer, .-FlashSetRandomizer
-       .align  2
-       .global FlashReadCmd
-       .type   FlashReadCmd, %function
-FlashReadCmd:
-       stp     x29, x30, [sp, -48]!
-       add     x29, sp, 0
-       str     x19, [sp,16]
-       uxtb    w19, w0
+       str     x1, [x29,88]
+       mov     x20, x0
+       mov     w23, 0
+       add     x26, x21, 1652
+       add     x24, x24, :lo12:.LC1
+.L192:
+       cmp     w23, w25
+       beq     .L202
+       add     x2, x29, 80
+       sub     w4, w25, w23
+       mov     x0, x20
+       mov     w1, 0
+       add     x3, x29, 84
+       bl      LogAddr2PhyAddr
+       ldr     w2, [x29,84]
+       ldrb    w0, [x21,1845]
+       cmp     w2, w0
+       bcc     .L193
+       mov     w0, -1
+       str     w0, [x20]
+       b       .L194
+.L193:
+       uxtw    x2, w2
+       add     x0, x21, x2
+       ldrb    w19, [x0,1848]
+       mov     x0, 24
+       mul     x2, x2, x0
        mov     w0, w19
-       str     x1, [x29,40]
-       bl      NandcGetChipIf
-       str     wzr, [x0,8]
-       str     wzr, [x0,4]
-       ldr     x1, [x29,40]
-       str     wzr, [x0,4]
-       and     w2, w1, 255
-       str     w2, [x0,4]
-       lsr     w2, w1, 8
-       str     w2, [x0,4]
-       lsr     w2, w1, 16
-       str     w2, [x0,4]
-       mov     w2, 48
-       str     w2, [x0,8]
+       strb    w19, [x26,x2]
+       bl      NandcWaitFlashReady
        mov     w0, w19
-       bl      FlashSetRandomizer
-       ldr     x19, [sp,16]
-       ldp     x29, x30, [sp], 48
+       bl      NandcFlashCs
+       ldr     w1, [x29,80]
+       mov     w2, 0
+       mov     w0, w19
+       bl      FlashEraseCmd
+       mov     w0, w19
+       bl      NandcWaitFlashReady
+       ldr     w1, [x29,80]
+       mov     w0, w19
+       bl      FlashReadStatus
+       sbfx    x0, x0, 0, 1
+       str     w0, [x20]
+       mov     w0, w19
+       ldr     w1, [x29,80]
+       ldr     w2, [x21,12]
+       add     w1, w2, w1
+       mov     w2, 0
+       bl      FlashEraseCmd
+       mov     w0, w19
+       bl      NandcWaitFlashReady
+       ldr     w1, [x29,80]
+       mov     w0, w19
+       bl      FlashReadStatus
+       tbz     x0, 0, .L195
+       mov     w0, -1
+       str     w0, [x20]
+.L195:
+       ldr     w0, [x20]
+       cmn     w0, #1
+       bne     .L196
+       ldr     w1, [x29,80]
+       mov     x0, x24
+       bl      printk
+.L196:
+       mov     w0, w19
+       bl      NandcFlashDeCs
+.L194:
+       add     w23, w23, 1
+       add     x20, x20, 56
+       b       .L192
+.L202:
+       ldr     x2, [x29,88]
+       mov     w0, 0
+       ldr     x1, [x22,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L198
+       bl      __stack_chk_fail
+.L198:
+       ldp     x19, x20, [sp,16]
+       ldp     x21, x22, [sp,32]
+       ldp     x23, x24, [sp,48]
+       ldp     x25, x26, [sp,64]
+       ldp     x29, x30, [sp], 96
        ret
-       .size   FlashReadCmd, .-FlashReadCmd
+       .size   FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks
        .align  2
        .global HynixGetReadRetryDefault
        .type   HynixGetReadRetryDefault, %function
@@ -1269,32 +1559,32 @@ HynixGetReadRetryDefault:
        mov     w3, -82
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       adrp    x19, :got:gReadRetryInfo
-       stp     x27, x28, [sp,80]
+       adrp    x19, .LANCHOR0
+       stp     x25, x26, [sp,64]
+       mov     w26, w0
+       add     x0, x19, :lo12:.LANCHOR0
+       add     x1, x0, 760
+       cmp     w26, 2
        stp     x21, x22, [sp,32]
-       ldr     x1, [x19, #:got_lo12:gReadRetryInfo]
-       mov     w28, w0
        stp     x23, x24, [sp,48]
-       stp     x25, x26, [sp,64]
-       strb    w0, [x1]
+       stp     x27, x28, [sp,80]
+       strb    w26, [x0,760]
        mov     w0, -84
        strb    w4, [x1,5]
-       cmp     w28, 2
        strb    w0, [x1,4]
        mov     w0, -81
        strb    w3, [x1,6]
        strb    w0, [x1,7]
-       bne     .L176
+       bne     .L204
        mov     w0, -89
        strb    w0, [x1,4]
-       adrp    x0, :got:refValueDefault
+       adrp    x0, .LANCHOR1+521
        mov     w1, -9
-       ldr     x0, [x0, #:got_lo12:refValueDefault]
-       strb    w1, [x0,17]
-       b       .L213
-.L176:
-       cmp     w28, 3
-       bne     .L178
+       strb    w1, [x0,#:lo12:.LANCHOR1+521]
+       b       .L241
+.L204:
+       cmp     w26, 3
+       bne     .L206
        mov     w0, -80
        strb    w0, [x1,4]
        mov     w0, -79
@@ -1310,10 +1600,10 @@ HynixGetReadRetryDefault:
        mov     w0, -74
        strb    w0, [x1,10]
        mov     w0, -73
-       b       .L229
-.L178:
-       cmp     w28, 4
-       bne     .L179
+       b       .L257
+.L206:
+       cmp     w26, 4
+       bne     .L207
        mov     w5, -52
        strb    w5, [x1,4]
        mov     w5, -65
@@ -1326,14 +1616,14 @@ HynixGetReadRetryDefault:
        mov     w5, -51
        strb    w3, [x1,10]
        strb    w5, [x1,8]
-.L229:
+.L257:
        mov     w21, 8
        strb    w0, [x1,11]
        mov     w20, w21
-       b       .L177
-.L179:
-       cmp     w28, 5
-       bne     .L180
+       b       .L205
+.L207:
+       cmp     w26, 5
+       bne     .L208
        mov     w0, 56
        strb    w0, [x1,4]
        mov     w0, 57
@@ -1343,10 +1633,10 @@ HynixGetReadRetryDefault:
        strb    w0, [x1,6]
        mov     w0, 59
        strb    w0, [x1,7]
-       b       .L228
-.L180:
-       cmp     w28, 6
-       bne     .L213
+       b       .L256
+.L208:
+       cmp     w26, 6
+       bne     .L241
        mov     w0, 14
        strb    w0, [x1,4]
        mov     w0, 15
@@ -1356,418 +1646,374 @@ HynixGetReadRetryDefault:
        strb    w0, [x1,6]
        mov     w0, 17
        strb    w0, [x1,7]
-       b       .L228
-.L213:
+       b       .L256
+.L241:
        mov     w21, 7
-.L228:
+.L256:
        mov     w20, 4
-.L177:
-       sub     w0, w28, #1
+.L205:
+       sub     w0, w26, #1
        cmp     w0, 1
-       bhi     .L225
-       mov     w27, 0
-       adrp    x23, :got:gNandMaxDie
-       adrp    x24, :got:DieCsIndex
-       mov     w25, 55
-       adrp    x26, :got:refValueDefault
-.L181:
-       ldr     x0, [x23, #:got_lo12:gNandMaxDie]
-       ldrb    w0, [x0]
-       cmp     w0, w27
-       bls     .L188
-       ldr     x0, [x24, #:got_lo12:DieCsIndex]
-       mov     x28, 0
-       ldr     x22, [x19, #:got_lo12:gReadRetryInfo]
-       ldrb    w0, [x0,w27,sxtw]
-       sbfiz   x1, x0, 6, 32
-       add     x22, x22, x1
+       bhi     .L253
+       adrp    x24, .LANCHOR1
+       add     x27, x19, :lo12:.LANCHOR0
+       add     x24, x24, :lo12:.LANCHOR1
+       mov     w23, 0
+       add     x28, x27, 760
+       add     x4, x27, 24
+       add     x24, x24, 504
+.L209:
+       ldrb    w0, [x27,1845]
+       cmp     w0, w23
+       bls     .L216
+       add     x0, x27, x23, sxtw
+       ldrb    w0, [x0,1848]
+       mov     x25, 0
+       add     x22, x28, x0, lsl 6
+       lsl     x0, x0, 4
+       add     x1, x4, x0
        add     x22, x22, 20
-       bl      NandcGetChipIf
-       mov     x1, x0
-.L183:
-       str     w25, [x1,8]
+       ldr     x26, [x4,x0]
+       ldrb    w0, [x1,8]
+       mov     w1, 55
+       add     x26, x26, x0, lsl 8
+.L211:
+       add     x0, x28, x25
+       str     w1, [x26,2056]
+       str     x4, [x29,128]
        str     x1, [x29,136]
-       ldr     x0, [x19, #:got_lo12:gReadRetryInfo]
-       add     x0, x28, x0
        ldrb    w0, [x0,4]
-       str     w0, [x1,4]
+       str     w0, [x26,2052]
        mov     w0, 80
        bl      NandcDelayns
+       ldr     w0, [x26,2048]
+       strb    w0, [x22,x25]
+       add     x25, x25, 1
        ldr     x1, [x29,136]
-       ldr     w0, [x1]
-       strb    w0, [x22,x28]
-       add     x28, x28, 1
-       cmp     w20, w28, uxtb
-       bhi     .L183
+       cmp     w20, w25, uxtb
+       ldr     x4, [x29,128]
+       bhi     .L211
        mov     x0, 0
-.L184:
+.L212:
        add     w2, w0, 8
        mov     x1, 0
-.L185:
-       ldr     x3, [x26, #:got_lo12:refValueDefault]
-       add     x4, x1, x0
+.L213:
+       add     x3, x1, x0
        add     x1, x1, 4
-       add     x3, x4, x3
+       add     x3, x24, x3
        cmp     x1, 24
-       ldrb    w4, [x3,4]
+       ldrb    w5, [x3,4]
        ldrb    w3, [x22,x0]
-       add     w3, w4, w3
+       add     w3, w5, w3
        strb    w3, [x22,w2,sxtw]
        add     w2, w2, 8
-       bne     .L185
+       bne     .L213
        add     x0, x0, 1
        cmp     x0, 4
-       bne     .L184
-       add     w27, w27, 1
+       bne     .L212
+       add     w23, w23, 1
        strb    wzr, [x22,16]
        strb    wzr, [x22,24]
        strb    wzr, [x22,32]
-       uxtb    w27, w27
+       uxtb    w23, w23
        strb    wzr, [x22,40]
        strb    wzr, [x22,48]
        strb    wzr, [x22,41]
        strb    wzr, [x22,49]
-       b       .L181
-.L225:
-       sub     w0, w28, #3
+       b       .L209
+.L253:
+       sub     w0, w26, #3
        cmp     w0, 3
-       bhi     .L188
+       bhi     .L216
        mul     w0, w20, w21
-       sub     w25, w20, #1
-       cmp     w28, 6
+       cmp     w26, 6
+       mov     w1, 4
        asr     w24, w0, 2
        lsl     w0, w0, 4
-       str     w0, [x29,136]
+       str     w0, [x29,124]
        lsl     w0, w24, 1
-       mov     w1, 4
-       str     w0, [x29,128]
+       str     w0, [x29,116]
        mov     w0, 8
-       uxtb    x25, w25
        csel    w0, w1, w0, eq
+       add     x23, x19, :lo12:.LANCHOR0
+       str     w0, [x29,120]
+       add     x0, x23, 760
+       str     x0, [x29,136]
+       sub     w0, w20, #1
        mov     w22, 0
-       str     w0, [x29,132]
-       sub     w27, w28, #5
-       add     x0, x25, 1
-       str     x0, [x29,120]
-.L189:
-       adrp    x0, :got:gNandMaxDie
-       ldr     x0, [x0, #:got_lo12:gNandMaxDie]
-       ldrb    w0, [x0]
+       sub     w27, w26, #5
+       uxtb    x0, w0
+       add     x0, x0, 1
+       str     x0, [x29,104]
+.L217:
+       ldrb    w0, [x23,1845]
        cmp     w0, w22
-       bhi     .L212
-.L188:
-       ldr     x19, [x19, #:got_lo12:gReadRetryInfo]
-       strb    w20, [x19,1]
-       strb    w21, [x19,2]
-       ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
+       bhi     .L240
+.L216:
+       add     x19, x19, :lo12:.LANCHOR0
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
+       strb    w21, [x19,762]
+       strb    w20, [x19,761]
+       ldp     x21, x22, [sp,32]
+       ldp     x19, x20, [sp,16]
        ldp     x27, x28, [sp,80]
        ldp     x29, x30, [sp], 144
        ret
-.L212:
-       adrp    x0, :got:DieCsIndex
-       ldr     x3, [x19, #:got_lo12:gReadRetryInfo]
-       str     x3, [x29,104]
-       ldr     x0, [x0, #:got_lo12:DieCsIndex]
-       ldrb    w23, [x0,w22,sxtw]
-       mov     w0, w23
-       sbfiz   x26, x23, 6, 32
-       add     x26, x3, x26
-       bl      NandcGetChipIf
+.L240:
+       add     x0, x23, x22, sxtw
+       ldrb    w0, [x0,1848]
+       ldr     x1, [x29,136]
+       add     x3, x23, 24
        mov     x25, x0
-       mov     w4, 255
-       str     w4, [x0,8]
-       mov     w0, w23
-       str     x4, [x29,112]
-       add     x26, x26, 20
+       add     x28, x1, x0, lsl 6
+       lsl     x0, x0, 4
+       add     x1, x28, 20
+       str     x1, [x29,128]
+       add     x1, x3, x0
+       ldr     x0, [x3,x0]
+       mov     w3, 255
+       str     x3, [x29,96]
+       ldrb    w1, [x1,8]
+       add     x28, x0, x1, lsl 8
+       mov     w0, w25
+       str     w3, [x28,2056]
        bl      NandcWaitFlashReady
        mov     w0, 54
-       cmp     w28, 4
-       str     w0, [x25,8]
-       ldr     x4, [x29,112]
-       ldr     x3, [x29,104]
-       bne     .L190
+       cmp     w26, 4
+       str     w0, [x28,2056]
+       ldr     x3, [x29,96]
+       bne     .L218
        mov     w0, 64
-       str     w4, [x25,4]
-       str     w0, [x25]
+       str     w3, [x28,2052]
+       str     w0, [x28,2048]
        mov     w0, 204
-       b       .L230
-.L190:
+       b       .L258
+.L218:
        cmp     w27, 1
-       bhi     .L192
-       ldrb    w0, [x3,4]
-       str     w0, [x25,4]
+       bhi     .L220
+       ldr     x0, [x29,136]
+       ldrb    w0, [x0,4]
+       str     w0, [x28,2052]
        mov     w0, 82
-       b       .L231
-.L192:
+       b       .L259
+.L220:
        mov     w0, 174
-       str     w0, [x25,4]
-       str     wzr, [x25]
+       str     w0, [x28,2052]
+       str     wzr, [x28,2048]
        mov     w0, 176
-.L230:
-       str     w0, [x25,4]
+.L258:
+       str     w0, [x28,2052]
        mov     w0, 77
-.L231:
-       str     w0, [x25]
+.L259:
+       str     w0, [x28,2048]
        mov     w0, 22
-       str     w0, [x25,8]
+       str     w0, [x28,2056]
        mov     w0, 23
-       str     w0, [x25,8]
+       str     w0, [x28,2056]
        mov     w0, 4
-       str     w0, [x25,8]
+       str     w0, [x28,2056]
        mov     w0, 25
-       str     w0, [x25,8]
-       cmp     w28, 6
-       str     wzr, [x25,8]
-       str     wzr, [x25,4]
-       str     wzr, [x25,4]
-       bne     .L193
+       str     w0, [x28,2056]
+       cmp     w26, 6
+       str     wzr, [x28,2056]
+       str     wzr, [x28,2052]
+       str     wzr, [x28,2052]
+       bne     .L221
        mov     w0, 31
-       str     w0, [x25,4]
-       b       .L194
-.L193:
-       str     wzr, [x25,4]
-.L194:
+       str     w0, [x28,2052]
+       b       .L222
+.L221:
+       str     wzr, [x28,2052]
+.L222:
        mov     w3, 2
-       str     w3, [x25,4]
-       str     wzr, [x25,4]
+       str     w3, [x28,2052]
+       str     wzr, [x28,2052]
        mov     w0, 48
-       str     w0, [x25,8]
-       mov     w0, w23
-       str     x3, [x29,112]
+       str     w0, [x28,2056]
+       mov     w0, w25
+       str     x3, [x29,96]
        bl      NandcWaitFlashReady
-       ldr     x3, [x29,112]
+       ldr     x3, [x29,96]
        mov     w0, 16
        cmp     w27, 1
        csel    w3, w3, w0, hi
        mov     w0, 0
-.L196:
+.L224:
        add     w0, w0, 1
-       ldr     w4, [x25]
+       ldr     w4, [x28,2048]
        uxtb    w0, w0
        cmp     w0, w3
-       bne     .L196
-       adrp    x4, :got:gFlashPageBuffer0
-       ldr     x0, [x4, #:got_lo12:gFlashPageBuffer0]
-       ldr     x7, [x0]
+       bne     .L224
+       ldr     x6, [x23,1856]
        mov     x0, 0
-.L197:
-       ldr     w1, [x29,136]
+.L225:
+       ldr     w1, [x29,124]
        cmp     w1, w0
-       ble     .L232
-       ldr     w3, [x25]
-       strb    w3, [x7,x0]
+       ble     .L260
+       ldr     w3, [x28,2048]
+       strb    w3, [x6,x0]
        add     x0, x0, 1
-       b       .L197
-.L232:
-       ldr     x0, [x4, #:got_lo12:gFlashPageBuffer0]
-       mov     w6, w24
-       mov     w5, 8
-       ldr     x9, [x0]
-.L200:
+       b       .L225
+.L260:
+       ldr     x8, [x23,1856]
+       mov     w5, w24
+       mov     w4, 8
+.L228:
        mov     w0, 0
-.L199:
-       add     w3, w0, w6
+.L227:
+       add     w3, w0, w5
        add     w0, w0, 1
        sbfiz   x3, x3, 2, 32
        cmp     w0, w24
-       ldr     w8, [x9,x3]
-       mvn     w8, w8
-       str     w8, [x9,x3]
-       bne     .L199
-       ldr     w0, [x29,128]
-       subs    w5, w5, #1
-       add     w6, w6, w0
-       bne     .L200
-       mov     x5, 0
-       mov     w13, 1
-.L201:
-       ldr     x0, [x4, #:got_lo12:gFlashPageBuffer0]
+       ldr     w7, [x8,x3]
+       mvn     w7, w7
+       str     w7, [x8,x3]
+       bne     .L227
+       ldr     w0, [x29,116]
+       subs    w4, w4, #1
+       add     w5, w5, w0
+       bne     .L228
+       mov     x4, 0
+       mov     w12, 1
+.L229:
        mov     w3, 0
-       mov     w8, w3
-       ldr     x12, [x0]
-.L205:
-       lsl     w6, w13, w8
-       mov     w10, w5
+       ldr     x11, [x23,1856]
+       mov     w7, w3
+.L233:
+       lsl     w5, w12, w7
+       mov     w9, w4
        mov     w0, 16
-       mov     w9, 0
-.L203:
-       ldr     w11, [x12,w10,sxtw 2]
-       add     w10, w10, w24
-       and     w11, w6, w11
-       cmp     w11, w6
-       csinc   w9, w9, w9, ne
+       mov     w8, 0
+.L231:
+       ldr     w10, [x11,w9,sxtw 2]
+       add     w9, w9, w24
+       and     w10, w5, w10
+       cmp     w10, w5
+       csinc   w8, w8, w8, ne
        subs    w0, w0, #1
-       bne     .L203
-       cmp     w9, 9
-       orr     w6, w3, w6
-       add     w8, w8, 1
-       csel    w3, w6, w3, cs
-       cmp     w8, 32
-       bne     .L205
-       str     w3, [x12,x5,lsl 2]
-       add     x5, x5, 1
-       cmp     w24, w5
-       bgt     .L201
+       bne     .L231
+       cmp     w8, 9
+       orr     w5, w3, w5
+       add     w7, w7, 1
+       csel    w3, w5, w3, cs
+       cmp     w7, 32
+       bne     .L233
+       str     w3, [x11,x4,lsl 2]
+       add     x4, x4, 1
+       cmp     w24, w4
+       bgt     .L229
        mov     w4, w0
-.L208:
+.L236:
        mov     x3, 0
-.L207:
+.L235:
        add     w5, w0, w3
-       ldrb    w6, [x7,x3]
+       ldr     x1, [x29,128]
+       ldrb    w7, [x6,x3]
        add     x3, x3, 1
        cmp     w20, w3, uxtb
-       strb    w6, [x26,w5,sxtw]
-       bhi     .L207
-       ldr     x1, [x29,120]
+       strb    w7, [x1,w5,sxtw]
+       bhi     .L235
+       ldr     x1, [x29,104]
        add     w4, w4, 1
        cmp     w4, w21
-       add     x7, x7, x1
-       ldr     w1, [x29,132]
+       add     x6, x6, x1
+       ldr     w1, [x29,120]
        add     w0, w0, w1
-       blt     .L208
+       blt     .L236
        mov     w0, 255
-       str     w0, [x25,8]
-       mov     w0, w23
+       str     w0, [x28,2056]
+       mov     w0, w25
        bl      NandcWaitFlashReady
        cmp     w27, 1
-       bhi     .L210
+       bhi     .L238
        mov     w0, 54
-       str     w0, [x25,8]
+       str     w0, [x28,2056]
+       ldr     x0, [x29,136]
        mov     w1, -1
-       ldr     x0, [x19, #:got_lo12:gReadRetryInfo]
        ldrb    w0, [x0,4]
-       str     w0, [x25,4]
+       str     w0, [x28,2052]
        mov     w0, 22
-       str     wzr, [x25]
-       str     w0, [x25,8]
+       str     wzr, [x28,2048]
+       str     w0, [x28,2056]
        mov     w0, w22
        bl      FlashReadCmd
-       b       .L211
-.L210:
+       b       .L239
+.L238:
        mov     w0, 56
-       str     w0, [x25,8]
-.L211:
-       mov     w0, w23
+       str     w0, [x28,2056]
+.L239:
+       mov     w0, w25
        add     w22, w22, 1
        bl      NandcWaitFlashReady
        uxtb    w22, w22
-       b       .L189
+       b       .L217
        .size   HynixGetReadRetryDefault, .-HynixGetReadRetryDefault
        .align  2
-       .global FlashReadDpDataOutCmd
-       .type   FlashReadDpDataOutCmd, %function
-FlashReadDpDataOutCmd:
-       stp     x29, x30, [sp, -48]!
-       add     x29, sp, 0
-       str     x19, [sp,16]
-       uxtb    w19, w0
-       mov     w0, w19
-       str     x1, [x29,40]
-       bl      NandcGetChipIf
-       adrp    x2, :got:gNandOptPara
-       ldr     x1, [x29,40]
-       and     w4, w1, 255
-       lsr     w3, w1, 8
-       ldr     x2, [x2, #:got_lo12:gNandOptPara]
-       ldrb    w2, [x2,16]
-       cmp     w2, 1
-       lsr     w2, w1, 16
-       bne     .L234
-       mov     w5, 6
-       str     w5, [x0,8]
-       str     wzr, [x0,4]
-       str     wzr, [x0,4]
-       str     w4, [x0,4]
-       str     w3, [x0,4]
-       str     w2, [x0,4]
-       b       .L236
-.L234:
-       str     wzr, [x0,8]
-       str     wzr, [x0,4]
-       str     wzr, [x0,4]
-       str     w4, [x0,4]
-       str     w3, [x0,4]
-       str     w2, [x0,4]
-       mov     w2, 5
-       str     w2, [x0,8]
-       str     wzr, [x0,4]
-       str     wzr, [x0,4]
-.L236:
-       mov     w2, 224
-       str     w2, [x0,8]
-       mov     w0, w19
-       bl      FlashSetRandomizer
-       ldr     x19, [sp,16]
-       ldp     x29, x30, [sp], 48
-       ret
-       .size   FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd
-       .align  2
        .global FlashReadDpCmd
        .type   FlashReadDpCmd, %function
 FlashReadDpCmd:
        stp     x29, x30, [sp, -80]!
+       adrp    x3, .LANCHOR0
        add     x29, sp, 0
        stp     x21, x22, [sp,32]
+       add     x3, x3, :lo12:.LANCHOR0
        uxtb    w21, w0
+       add     x4, x3, 24
+       sbfiz   x0, x21, 4, 32
+       add     x3, x3, 88
        str     x23, [sp,48]
-       mov     w0, w21
-       str     x1, [x29,64]
        stp     x19, x20, [sp,16]
-       str     x2, [x29,72]
-       bl      NandcGetChipIf
-       adrp    x3, :got:gNandOptPara
-       mov     x19, x0
-       ldr     x1, [x29,64]
-       ldr     x2, [x29,72]
-       ldr     x3, [x3, #:got_lo12:gNandOptPara]
-       and     w5, w1, 255
-       lsr     w4, w1, 8
+       add     x5, x4, x0
        and     w23, w2, 255
+       ldr     x6, [x4,x0]
        lsr     w22, w2, 8
-       lsr     w20, w2, 16
        ldrb    w0, [x3,16]
+       lsr     w4, w1, 8
+       ldrb    w19, [x5,8]
+       lsr     w20, w2, 16
        cmp     w0, 1
+       and     w5, w1, 255
        lsr     w0, w1, 16
-       bne     .L238
+       bne     .L262
+       add     x19, x6, x19, lsl 8
        ldrb    w2, [x3,8]
-       str     w2, [x19,8]
-       str     wzr, [x19,4]
-       str     wzr, [x19,4]
-       str     w5, [x19,4]
-       str     w4, [x19,4]
-       str     w0, [x19,4]
        str     x1, [x29,72]
+       str     w2, [x19,2056]
+       str     wzr, [x19,2052]
+       str     wzr, [x19,2052]
+       str     w5, [x19,2052]
+       str     w4, [x19,2052]
+       str     w0, [x19,2052]
        ldrb    w0, [x3,9]
-       str     w0, [x19,8]
+       str     w0, [x19,2056]
        mov     w0, w21
        bl      NandcWaitFlashReady
-       str     wzr, [x19,8]
-       str     wzr, [x19,4]
+       str     wzr, [x19,2056]
+       str     wzr, [x19,2052]
        mov     w0, 48
-       str     wzr, [x19,4]
-       str     w23, [x19,4]
-       str     w22, [x19,4]
-       str     w20, [x19,4]
-       str     w0, [x19,8]
+       str     wzr, [x19,2052]
+       str     w23, [x19,2052]
+       str     w22, [x19,2052]
+       str     w20, [x19,2052]
+       str     w0, [x19,2056]
        ldr     x1, [x29,72]
-       b       .L239
-.L238:
+       b       .L263
+.L262:
+       add     x19, x6, x19, lsl 8
        ldrb    w2, [x3,8]
-       str     w2, [x19,8]
-       str     w5, [x19,4]
-       str     w4, [x19,4]
-       str     w0, [x19,4]
+       str     w2, [x19,2056]
+       str     w5, [x19,2052]
+       str     w4, [x19,2052]
+       str     w0, [x19,2052]
        ldrb    w0, [x3,9]
-       str     w0, [x19,8]
+       str     w0, [x19,2056]
        mov     w0, 48
-       str     w23, [x19,4]
-       str     w22, [x19,4]
-       str     w20, [x19,4]
-       str     w0, [x19,8]
-.L239:
+       str     w23, [x19,2052]
+       str     w22, [x19,2052]
+       str     w20, [x19,2052]
+       str     w0, [x19,2056]
+.L263:
        mov     w0, w21
        bl      FlashSetRandomizer
        ldr     x23, [sp,48]
@@ -1777,96 +2023,49 @@ FlashReadDpCmd:
        ret
        .size   FlashReadDpCmd, .-FlashReadDpCmd
        .align  2
-       .global FlashProgFirstCmd
-       .type   FlashProgFirstCmd, %function
-FlashProgFirstCmd:
-       stp     x29, x30, [sp, -48]!
-       add     x29, sp, 0
-       str     x19, [sp,16]
-       uxtb    w19, w0
-       mov     w0, w19
-       str     x1, [x29,40]
-       bl      NandcGetChipIf
-       mov     w2, 128
-       str     w2, [x0,8]
-       str     wzr, [x0,4]
-       ldr     x1, [x29,40]
-       str     wzr, [x0,4]
-       and     w2, w1, 255
-       str     w2, [x0,4]
-       lsr     w2, w1, 8
-       str     w2, [x0,4]
-       lsr     w2, w1, 16
-       str     w2, [x0,4]
-       mov     w0, w19
-       bl      FlashSetRandomizer
-       ldr     x19, [sp,16]
-       ldp     x29, x30, [sp], 48
-       ret
-       .size   FlashProgFirstCmd, .-FlashProgFirstCmd
-       .align  2
-       .global FlashProgDpSecondCmd
-       .type   FlashProgDpSecondCmd, %function
-FlashProgDpSecondCmd:
-       stp     x29, x30, [sp, -48]!
-       add     x29, sp, 0
-       str     x19, [sp,16]
-       uxtb    w19, w0
-       mov     w0, w19
-       str     x1, [x29,40]
-       bl      NandcGetChipIf
-       adrp    x2, :got:gNandOptPara
-       ldr     x1, [x29,40]
-       ldr     x2, [x2, #:got_lo12:gNandOptPara]
-       ldrb    w2, [x2,11]
-       str     w2, [x0,8]
-       and     w2, w1, 255
-       str     wzr, [x0,4]
-       str     wzr, [x0,4]
-       str     w2, [x0,4]
-       lsr     w2, w1, 8
-       str     w2, [x0,4]
-       lsr     w2, w1, 16
-       str     w2, [x0,4]
-       mov     w0, w19
-       bl      FlashSetRandomizer
-       ldr     x19, [sp,16]
-       ldp     x29, x30, [sp], 48
-       ret
-       .size   FlashProgDpSecondCmd, .-FlashProgDpSecondCmd
-       .align  2
        .global FlashDeInit
        .type   FlashDeInit, %function
 FlashDeInit:
        stp     x29, x30, [sp, -32]!
        mov     w0, 0
        add     x29, sp, 0
-       str     x19, [sp,16]
-       adrp    x19, :got:gFlashToggleModeEn
+       stp     x19, x20, [sp,16]
        bl      NandcWaitFlashReady
        bl      FlashSetReadRetryDefault
-       ldr     x19, [x19, #:got_lo12:gFlashToggleModeEn]
-       ldrb    w0, [x19]
-       cbz     w0, .L243
-       adrp    x0, :got:gFlashInterfaceMode
-       ldr     x0, [x0, #:got_lo12:gFlashInterfaceMode]
-       ldrb    w0, [x0]
-       tbz     x0, 0, .L243
+       adrp    x0, .LANCHOR0
+       add     x20, x0, :lo12:.LANCHOR0
+       mov     x19, x0
+       ldrb    w1, [x20,1864]
+       cbz     w1, .L265
+       ldrb    w0, [x20,1844]
+       tbz     x0, 0, .L265
        mov     w0, 1
        bl      FlashSetInterfaceMode
        mov     w0, 1
        bl      NandcSetMode
-       strb    wzr, [x19]
-.L243:
-       mov     w0, 0
-       mov     w1, 0
-       bl      NandcRandmzSel
-       ldr     x19, [sp,16]
+       strb    wzr, [x20,1864]
+.L265:
+       add     x0, x19, :lo12:.LANCHOR0
+       ldr     x0, [x0,24]
+       str     wzr, [x0,336]
        mov     w0, 0
+       ldp     x19, x20, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
        .size   FlashDeInit, .-FlashDeInit
        .align  2
+       .global NandcRandmzSel
+       .type   NandcRandmzSel, %function
+NandcRandmzSel:
+       adrp    x2, .LANCHOR0
+       ubfiz   x0, x0, 4, 8
+       add     x2, x2, :lo12:.LANCHOR0
+       add     x2, x2, 24
+       ldr     x0, [x2,x0]
+       str     w1, [x0,336]
+       ret
+       .size   NandcRandmzSel, .-NandcRandmzSel
+       .align  2
        .global NandcTimeCfg
        .type   NandcTimeCfg, %function
 NandcTimeCfg:
@@ -1877,42 +2076,42 @@ NandcTimeCfg:
        mov     w0, 0
        bl      rknand_get_clk_rate
        mov     w2, 16960
-       adrp    x1, :got:gpNandc
+       adrp    x1, .LANCHOR0
        movk    w2, 0xf, lsl 16
+       add     x1, x1, :lo12:.LANCHOR0
        sdiv    w0, w0, w2
-       ldr     x1, [x1, #:got_lo12:gpNandc]
        cmp     w0, 250
-       ble     .L251
-       ldr     x0, [x1]
+       ble     .L274
+       ldr     x0, [x1,128]
        mov     w1, 8354
-       b       .L258
-.L251:
+       b       .L281
+.L274:
        cmp     w0, 220
-       ble     .L253
-       ldr     x0, [x1]
-       b       .L259
-.L253:
+       ble     .L276
+       ldr     x0, [x1,128]
+       b       .L282
+.L276:
        cmp     w0, 185
-       ble     .L254
-       ldr     x0, [x1]
+       ble     .L277
+       ldr     x0, [x1,128]
        mov     w1, 4226
-       b       .L258
-.L254:
+       b       .L281
+.L277:
        cmp     w0, 160
-       ldr     x0, [x1]
-       ble     .L255
+       ldr     x0, [x1,128]
+       ble     .L278
        mov     w1, 4194
-       b       .L258
-.L255:
+       b       .L281
+.L278:
        cmp     w19, 35
        mov     w1, 4193
-       bls     .L258
+       bls     .L281
        cmp     w19, 99
        mov     w1, 4225
-       bls     .L258
-.L259:
+       bls     .L281
+.L282:
        mov     w1, 8322
-.L258:
+.L281:
        str     w1, [x0,4]
        ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 32
@@ -1928,39 +2127,91 @@ FlashTimingCfg:
        and     w1, w1, -33
        cmp     w1, 1
        add     x29, sp, 0
-       bls     .L261
+       bls     .L284
        mov     w1, 8322
        cmp     w0, w1
-       bne     .L262
-.L261:
-       adrp    x1, :got:gpNandc
-       ldr     x1, [x1, #:got_lo12:gpNandc]
-       ldr     x1, [x1]
+       bne     .L285
+.L284:
+       adrp    x1, .LANCHOR0+128
+       ldr     x1, [x1,#:lo12:.LANCHOR0+128]
        str     w0, [x1,4]
-.L262:
-       adrp    x0, :got:gNandParaInfo
-       ldr     x0, [x0, #:got_lo12:gNandParaInfo]
-       ldrb    w0, [x0,21]
+.L285:
+       adrp    x0, .LANCHOR1+493
+       ldrb    w0, [x0,#:lo12:.LANCHOR1+493]
        bl      NandcTimeCfg
        ldp     x29, x30, [sp], 16
        ret
        .size   FlashTimingCfg, .-FlashTimingCfg
        .align  2
+       .global NandcInit
+       .type   NandcInit, %function
+NandcInit:
+       stp     x29, x30, [sp, -32]!
+       mov     w2, 1
+       add     x29, sp, 0
+       str     x19, [sp,16]
+       adrp    x19, .LANCHOR0
+       add     x19, x19, :lo12:.LANCHOR0
+       str     w2, [x19,48]
+       mov     w2, 2
+       str     x0, [x19,24]
+       str     x0, [x19,40]
+       str     w2, [x19,64]
+       mov     w2, 3
+       str     x0, [x19,56]
+       str     w2, [x19,80]
+       str     x0, [x19,72]
+       str     x0, [x19,128]
+       str     wzr, [x19,32]
+       ldr     w1, [x0]
+       ubfx    x2, x1, 13, 1
+       str     w2, [x19,1868]
+       ldr     w2, [x0,352]
+       and     w1, w1, 245760
+       orr     w1, w1, 256
+       ubfx    x2, x2, 16, 4
+       str     w2, [x19,20]
+       ldr     w2, [x0,352]
+       str     w2, [x19,1872]
+       str     w1, [x0]
+       ldr     x0, [x19,128]
+       str     wzr, [x0,336]
+       mov     w0, 40
+       bl      NandcTimeCfg
+       ldr     x0, [x19,128]
+       mov     w1, 8322
+       str     w1, [x0,344]
+       mov     w1, 6145
+       movk    w1, 0x18, lsl 16
+       str     w1, [x0,304]
+       mov     w0, 36864
+       bl      ftl_malloc
+       str     wzr, [x19,1928]
+       str     x0, [x19,1880]
+       str     x0, [x19,1888]
+       add     x0, x0, 32768
+       str     wzr, [x19,1936]
+       str     x0, [x19,1896]
+       ldr     x19, [sp,16]
+       ldp     x29, x30, [sp], 32
+       ret
+       .size   NandcInit, .-NandcInit
+       .align  2
        .global NandcGetTimeCfg
        .type   NandcGetTimeCfg, %function
 NandcGetTimeCfg:
-       adrp    x4, :got:gpNandc
-       ldr     x4, [x4, #:got_lo12:gpNandc]
-       ldr     x5, [x4]
+       adrp    x4, .LANCHOR0
+       add     x4, x4, :lo12:.LANCHOR0
+       ldr     x5, [x4,128]
        ldr     w5, [x5,4]
        str     w5, [x0]
-       ldr     x0, [x4]
+       ldr     x0, [x4,128]
        ldr     w0, [x0]
        str     w0, [x1]
-       ldr     x0, [x4]
+       ldr     x0, [x4,128]
        ldr     w0, [x0,304]
        str     w0, [x2]
-       ldr     x1, [x4]
+       ldr     x1, [x4,128]
        ldr     w0, [x1,308]
        ldr     w1, [x1,344]
        and     w0, w0, 255
@@ -1972,32 +2223,30 @@ NandcGetTimeCfg:
        .global NandcBchSel
        .type   NandcBchSel, %function
 NandcBchSel:
-       adrp    x1, :got:gpNandc
+       adrp    x1, .LANCHOR0
        uxtb    w0, w0
+       add     x1, x1, :lo12:.LANCHOR0
+       mov     w3, 1
        cmp     w0, 16
-       ldr     x1, [x1, #:got_lo12:gpNandc]
-       ldr     x2, [x1]
-       mov     w1, 1
-       str     w1, [x2,8]
-       adrp    x1, :got:gNandcEccBits
-       ldr     x1, [x1, #:got_lo12:gNandcEccBits]
-       str     w0, [x1]
+       ldr     x2, [x1,128]
+       str     w0, [x1,1940]
        mov     w1, 4096
-       bne     .L265
-.L268:
+       str     w3, [x2,8]
+       bne     .L289
+.L292:
        and     w1, w1, -17
-       b       .L266
-.L265:
+       b       .L290
+.L289:
        cmp     w0, 24
-       bne     .L267
+       bne     .L291
        orr     w1, w1, 16
-       b       .L266
-.L267:
+       b       .L290
+.L291:
        cmp     w0, 40
        orr     w1, w1, 262144
        orr     w1, w1, 16
-       beq     .L268
-.L266:
+       beq     .L292
+.L290:
        orr     w1, w1, 1
        str     w1, [x2,12]
        ret
@@ -2006,12 +2255,11 @@ NandcBchSel:
        .global FlashBchSel
        .type   FlashBchSel, %function
 FlashBchSel:
-       adrp    x1, :got:gNandFlashEccBits
-       uxtb    w0, w0
        stp     x29, x30, [sp, -16]!
+       adrp    x1, .LANCHOR0+1944
+       uxtb    w0, w0
        add     x29, sp, 0
-       ldr     x1, [x1, #:got_lo12:gNandFlashEccBits]
-       strb    w0, [x1]
+       strb    w0, [x1,#:lo12:.LANCHOR0+1944]
        bl      NandcBchSel
        ldp     x29, x30, [sp], 16
        ret
@@ -2020,69 +2268,61 @@ FlashBchSel:
        .global FlashResume
        .type   FlashResume, %function
 FlashResume:
-       adrp    x1, :got:gpNandc
        stp     x29, x30, [sp, -48]!
        add     x29, sp, 0
-       ldr     x1, [x1, #:got_lo12:gpNandc]
        stp     x19, x20, [sp,16]
+       adrp    x20, .LANCHOR0
        str     x21, [sp,32]
-       adrp    x19, .LANCHOR0
-       add     x0, x19, :lo12:.LANCHOR0
-       mov     x20, 0
-       ldr     x2, [x1]
-       adrp    x21, :got:IDByte
-       ldr     w3, [x19,#:lo12:.LANCHOR0]
-       str     w3, [x2]
-       ldr     w3, [x0,4]
-       ldr     x2, [x1]
-       str     w3, [x2,4]
-       ldr     w2, [x0,8]
-       ldr     x1, [x1]
+       add     x0, x20, :lo12:.LANCHOR0
+       mov     x21, 0
+       add     x19, x0, 1620
+       ldr     x1, [x0,128]
+       ldr     w2, [x0,136]
+       str     w2, [x1]
+       ldr     w2, [x0,140]
+       ldr     x1, [x0,128]
+       str     w2, [x1,4]
+       ldr     w2, [x0,144]
+       ldr     x1, [x0,128]
        str     w2, [x1,8]
-       ldr     w2, [x0,12]
+       ldr     w2, [x0,148]
        str     w2, [x1,12]
-       ldr     w2, [x0,16]
+       ldr     w2, [x0,152]
        str     w2, [x1,304]
-       ldr     w2, [x0,20]
+       ldr     w2, [x0,156]
        str     w2, [x1,308]
-       ldr     w2, [x0,24]
+       ldr     w2, [x0,160]
        str     w2, [x1,336]
-       ldr     w0, [x0,28]
-       str     w0, [x1,344]
-.L275:
-       lsl     x0, x20, 3
-       ldr     x1, [x21, #:got_lo12:IDByte]
-       ldrb    w0, [x0,x1]
+       ldr     w2, [x0,164]
+       str     w2, [x1,344]
+.L299:
+       lsl     x0, x21, 3
+       ldrb    w0, [x0,x19]
        sub     w0, w0, #1
        uxtb    w0, w0
        cmp     w0, 253
-       bhi     .L274
-       mov     w0, w20
+       bhi     .L298
+       mov     w0, w21
        bl      FlashReset
-.L274:
-       add     x20, x20, 1
-       cmp     x20, 4
-       bne     .L275
-       adrp    x0, :got:gFlashToggleModeEn
-       ldr     x0, [x0, #:got_lo12:gFlashToggleModeEn]
-       ldrb    w0, [x0]
-       cbz     w0, .L276
-       adrp    x20, :got:gFlashInterfaceMode
+.L298:
+       add     x21, x21, 1
+       cmp     x21, 4
+       bne     .L299
+       add     x19, x20, :lo12:.LANCHOR0
+       ldrb    w0, [x19,1864]
+       cbz     w0, .L300
        mov     w0, 1
-       add     x19, x19, :lo12:.LANCHOR0
        bl      NandcSetMode
-       ldr     x20, [x20, #:got_lo12:gFlashInterfaceMode]
-       ldrb    w0, [x20]
+       ldrb    w0, [x19,1844]
        bl      FlashSetInterfaceMode
-       ldrb    w0, [x20]
+       ldrb    w0, [x19,1844]
        bl      NandcSetMode
-       ldr     w0, [x19,16]
+       ldr     w0, [x19,152]
        lsr     w0, w0, 8
        bl      NandcSetDdrPara
-.L276:
-       adrp    x0, :got:gpNandParaInfo
-       ldr     x0, [x0, #:got_lo12:gpNandParaInfo]
-       ldr     x0, [x0]
+.L300:
+       add     x20, x20, :lo12:.LANCHOR0
+       ldr     x0, [x20,744]
        ldrb    w0, [x0,20]
        bl      FlashBchSel
        ldr     x21, [sp,32]
@@ -2150,15 +2390,15 @@ NandcIqrWaitFlashReady:
        mov     w1, 1
        bl      NandCIrqEnable
        ldr     w0, [x19]
-       tbnz    x0, 9, .L286
+       tbnz    x0, 9, .L310
        mov     x0, x19
        bl      wait_for_nand_flash_ready
-       b       .L285
-.L286:
+       b       .L309
+.L310:
        mov     x0, x19
        mov     w1, 1
        bl      NandCIrqDisable
-.L285:
+.L309:
        ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
@@ -2167,126 +2407,147 @@ NandcIqrWaitFlashReady:
        .global FlashEraseBlocks
        .type   FlashEraseBlocks, %function
 FlashEraseBlocks:
-       stp     x29, x30, [sp, -128]!
+       stp     x29, x30, [sp, -144]!
        add     x29, sp, 0
+       stp     x23, x24, [sp,48]
+       mov     w23, w2
+       adrp    x2, __stack_chk_guard
+       stp     x27, x28, [sp,80]
+       mov     w27, w1
+       str     x2, [x29,120]
+       ldr     x1, [x2,#:lo12:__stack_chk_guard]
+       mov     x24, x0
+       str     x1, [x29,136]
+       adrp    x1, .LANCHOR0
        stp     x19, x20, [sp,16]
+       add     x19, x1, :lo12:.LANCHOR0
+       str     x1, [x29,112]
        stp     x21, x22, [sp,32]
        stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
-       stp     x23, x24, [sp,48]
-       mov     x20, x0
-       mov     w21, w1
-       mov     w19, 0
-       mov     w22, 56
-       add     x25, x29, 120
-       add     x26, x29, 124
-       adrp    x27, :got:gMultiPageProgEn
-       adrp    x28, :got:gDieOp
-.L289:
-       cmp     w19, w21
-       adrp    x23, :got:gNandMaxDie
-       bcs     .L304
-       umull   x5, w19, w22
+       ldrb    w3, [x19,8]
+       mov     w20, 0
+       cbz     w3, .L313
+       mov     w1, w23
+       bl      FlashEraseSLc2KBlocks
+       b       .L314
+.L313:
+       mov     w28, 56
+       add     x25, x19, 1652
+       mov     x26, 24
+.L339:
+       cmp     w20, w23
+       bcs     .L340
+       umull   x5, w20, w28
        mov     w1, 0
-       sub     w4, w21, w19
-       add     x23, x20, x5
-       mov     x2, x25
-       mov     x0, x23
-       mov     x3, x26
+       sub     w4, w23, w20
+       add     x21, x24, x5
+       add     x2, x29, 128
+       mov     x0, x21
+       add     x3, x29, 132
        str     x5, [x29,104]
        bl      LogAddr2PhyAddr
-       mov     w24, w0
-       adrp    x1, :got:gNandMaxDie
-       ldr     w0, [x29,124]
+       mov     w22, w0
+       ldrb    w1, [x19,1845]
+       ldr     w0, [x29,132]
        ldr     x5, [x29,104]
-       ldr     x1, [x1, #:got_lo12:gNandMaxDie]
-       ldrb    w1, [x1]
        cmp     w0, w1
-       bcc     .L290
+       bcc     .L315
        mov     w0, -1
-       str     w0, [x20,x5]
-       b       .L291
-.L290:
-       ldr     x1, [x27, #:got_lo12:gMultiPageProgEn]
-       mov     x5, 24
-       ldr     x4, [x28, #:got_lo12:gDieOp]
-       ldrb    w1, [x1]
+       str     w0, [x24,x5]
+       b       .L316
+.L315:
+       ldrb    w1, [x19,1945]
        cmp     w1, wzr
        uxtw    x1, w0
-       csel    w24, w24, wzr, ne
-       madd    x1, x1, x5, x4
-       adrp    x4, :got:gDieOp
+       csel    w22, w22, wzr, ne
+       madd    x1, x1, x26, x25
        ldr     x1, [x1,8]
-       cbz     x1, .L293
-       str     x4, [x29,104]
+       cbz     x1, .L318
        bl      FlashWaitCmdDone
-       ldr     x4, [x29,104]
-.L293:
-       ldr     x2, [x4, #:got_lo12:gDieOp]
-       mov     x1, 24
-       ldr     w0, [x29,124]
-       madd    x1, x0, x1, x2
-       ldr     w2, [x29,120]
-       str     x23, [x1,8]
-       str     xzr, [x1,16]
-       str     w2, [x1,4]
-       cbz     w24, .L294
-       add     w2, w19, 1
-       umull   x2, w2, w22
-       add     x2, x20, x2
-       str     x2, [x1,16]
-.L294:
-       adrp    x1, :got:DieCsIndex
-       ldr     x4, [x4, #:got_lo12:gDieOp]
-       add     w19, w19, w24
-       ldr     x1, [x1, #:got_lo12:DieCsIndex]
-       ldrb    w23, [x1,x0]
-       mov     x1, 24
-       mul     x0, x0, x1
-       strb    w23, [x4,x0]
-       mov     w0, w23
+.L318:
+       ldr     w0, [x29,132]
+       ldr     w1, [x29,128]
+       madd    x2, x0, x26, x25
+       str     x21, [x2,8]
+       str     xzr, [x2,16]
+       str     w1, [x2,4]
+       cbz     w22, .L319
+       add     w1, w20, 1
+       umull   x1, w1, w28
+       add     x1, x24, x1
+       str     x1, [x2,16]
+.L319:
+       add     x1, x19, x0
+       mul     x0, x0, x26
+       ldrb    w21, [x1,1848]
+       strb    w21, [x25,x0]
+       mov     w0, w21
        bl      NandcFlashCs
-       adrp    x0, :got:DieAddrs
-       ldr     w1, [x29,124]
-       ldr     x0, [x0, #:got_lo12:DieAddrs]
+       cmp     w27, 1
+       bne     .L320
+       ldrb    w0, [x19,120]
+       cbz     w0, .L320
+       mov     w0, w21
+       bl      flash_enter_slc_mode
+.L320:
+       ldr     w1, [x29,132]
+       add     x0, x19, 708
+       add     w20, w20, w22
        ldr     w0, [x0,x1,lsl 2]
-       ldr     w1, [x29,120]
+       ldr     w1, [x29,128]
        cmp     w0, wzr
-       mov     w0, w23
+       mov     w0, w21
        cset    w2, ne
        bl      FlashWaitReadyEN
-       ldr     w1, [x29,120]
-       mov     w0, w23
-       mov     w2, w24
+       ldr     w1, [x29,128]
+       mov     w0, w21
+       mov     w2, w22
        bl      FlashEraseCmd
-       mov     w0, w23
+       mov     w0, w21
        bl      NandcFlashDeCs
-.L291:
-       add     w19, w19, 1
-       b       .L289
-.L304:
-       adrp    x0, :got:gpNandc
-       mov     w19, 0
-       ldr     x0, [x0, #:got_lo12:gpNandc]
-       ldr     x0, [x0]
+.L316:
+       add     w20, w20, 1
+       b       .L339
+.L340:
+       ldr     x0, [x29,112]
+       mov     x20, 0
+       mov     x22, 24
+       add     x19, x0, :lo12:.LANCHOR0
+       add     x21, x19, 1652
+       ldr     x0, [x19,128]
        bl      NandcIqrWaitFlashReady
-.L296:
-       ldr     x0, [x23, #:got_lo12:gNandMaxDie]
-       ldrb    w0, [x0]
-       cmp     w19, w0
-       bcs     .L305
-       mov     w0, w19
-       add     w19, w19, 1
+.L322:
+       ldrb    w0, [x19,1845]
+       cmp     w0, w20
+       bls     .L341
+       mov     w0, w20
        bl      FlashWaitCmdDone
-       b       .L296
-.L305:
+       cmp     w27, 1
+       bne     .L323
+       ldrb    w0, [x19,120]
+       cbz     w0, .L323
+       mul     x0, x20, x22
+       ldrb    w0, [x0,x21]
+       bl      flash_exit_slc_mode
+.L323:
+       add     x20, x20, 1
+       b       .L322
+.L341:
        mov     w0, 0
+.L314:
+       ldr     x1, [x29,120]
+       ldr     x2, [x29,136]
+       ldr     x1, [x1,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L325
+       bl      __stack_chk_fail
+.L325:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 128
+       ldp     x29, x30, [sp], 144
        ret
        .size   FlashEraseBlocks, .-FlashEraseBlocks
        .align  2
@@ -2329,11 +2590,11 @@ NandcSendDumpDataStart:
        .type   NandcSendDumpDataDone, %function
 NandcSendDumpDataDone:
        sub     sp, sp, #16
-.L309:
+.L345:
        ldr     w1, [x0,8]
        str     w1, [sp,8]
        ldr     w1, [sp,8]
-       tbz     x1, 20, .L309
+       tbz     x1, 20, .L345
        add     sp, sp, 16
        ret
        .size   NandcSendDumpDataDone, .-NandcSendDumpDataDone
@@ -2345,115 +2606,111 @@ NandcXferStart:
        ubfiz   x0, x0, 4, 8
        ubfx    x3, x3, 1, 7
        add     x29, sp, 0
-       str     x25, [sp,64]
-       uxtb    w25, w1
-       adrp    x1, :got:gNandChipMap
        stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
-       ldr     x1, [x1, #:got_lo12:gNandChipMap]
-       ubfiz   w19, w25, 1, 1
+       adrp    x19, .LANCHOR0
+       str     x25, [sp,64]
        stp     x23, x24, [sp,48]
-       uxtb    w23, w2
-       add     x2, x1, x0
-       ldr     x21, [x1,x0]
-       mov     w1, 16
-       orr     w19, w19, 8
+       uxtb    w24, w1
+       add     x1, x19, :lo12:.LANCHOR0
+       uxtb    w25, w2
+       add     x2, x1, 24
+       stp     x21, x22, [sp,32]
        mov     x22, x4
-       ldrb    w0, [x2,8]
-       ldr     w24, [x21,12]
-       bfi     w24, w1, 8, 8
-       and     w24, w24, -9
-       bfi     w24, w0, 5, 3
+       add     x4, x2, x0
+       ldr     x21, [x2,x0]
+       mov     w2, 16
+       ubfiz   w20, w24, 1, 1
+       ldrb    w0, [x4,8]
+       orr     w20, w20, 8
+       ldr     w23, [x21,12]
+       bfi     w23, w2, 8, 8
+       and     w23, w23, -9
+       bfi     w23, w0, 5, 3
        mov     w0, 1
-       bfi     w19, w0, 5, 2
-       adrp    x0, :got:gNandcVer
-       orr     w19, w19, 536870912
-       orr     w19, w19, 1024
-       ldr     x0, [x0, #:got_lo12:gNandcVer]
-       bfi     w19, w3, 4, 1
-       ldr     w0, [x0]
+       bfi     w20, w0, 5, 2
+       ldr     w0, [x1,20]
+       orr     w20, w20, 536870912
        cmp     w0, 3
-       bls     .L313
+       orr     w20, w20, 1024
+       bfi     w20, w3, 4, 1
+       bls     .L349
        ldr     w0, [x21,16]
        cmp     x5, xzr
        str     w0, [x29,88]
-       cset    w6, ne
+       cset    w8, ne
        ldr     w0, [x29,88]
        and     w0, w0, -5
        str     w0, [x29,88]
-       cbnz    w6, .L327
-       cbz     x4, .L314
-.L327:
-       adrp    x20, :got:gMasterInfo
-       cbnz    w25, .L316
-.L324:
+       cbnz    w8, .L363
+       cbz     x22, .L350
+.L363:
+       cbnz    w24, .L352
+.L360:
        mov     x0, x21
-       add     w23, w23, 1
-       asr     w23, w23, 1
        bl      rk_nandc_xfer_irq_flag_init
-       bfi     w19, w23, 22, 6
        mov     x0, x21
        mov     w1, 0
        bl      NandCIrqEnable
+       add     w2, w25, 1
        mov     x0, x22
-       cbnz    x22, .L318
-       ldr     x0, [x20, #:got_lo12:gMasterInfo]
-       ldr     x0, [x0]
-       b       .L318
-.L316:
-       adrp    x0, :got:gNandcEccBits
-       mov     w3, 128
-       mov     w1, 0
-       lsr     w7, w23, 1
-       mov     w2, w1
-       mov     w8, -1
-       ldr     x0, [x0, #:got_lo12:gNandcEccBits]
-       ldr     w0, [x0]
+       asr     w2, w2, 1
+       bfi     w20, w2, 22, 6
+       cbnz    x22, .L354
+       add     x0, x19, :lo12:.LANCHOR0
+       ldr     x0, [x0,1888]
+       b       .L354
+.L352:
+       add     x1, x19, :lo12:.LANCHOR0
+       mov     w6, 128
+       mov     w3, 0
+       lsr     w2, w25, 1
+       mov     w4, w3
+       mov     w9, -1
+       ldr     w0, [x1,1940]
        cmp     w0, 25
        mov     w0, 64
-       csel    w3, w0, w3, cc
-.L320:
-       cmp     w2, w7
-       bcs     .L324
-       lsr     w0, w1, 2
-       ldr     x4, [x20, #:got_lo12:gMasterInfo]
+       csel    w6, w0, w6, cc
+.L356:
+       cmp     w4, w2
+       bcs     .L360
+       lsr     w0, w3, 2
        ubfiz   x0, x0, 2, 30
-       cbz     w6, .L321
-       ldr     x9, [x4,8]
-       ldrh    w4, [x5,2]
-       ldrh    w10, [x5],4
-       orr     w4, w10, w4, lsl 16
-       str     w4, [x9,x0]
-       b       .L322
-.L321:
-       ldr     x4, [x4,8]
-       str     w8, [x4,x0]
-.L322:
-       add     w2, w2, 1
-       add     w1, w1, w3
-       b       .L320
-.L318:
-       ldr     x20, [x20, #:got_lo12:gMasterInfo]
-       ubfx    x23, x19, 22, 5
-       mov     w2, w25
+       cbz     w8, .L357
+       ldrh    w7, [x5,2]
+       ldr     x10, [x1,1896]
+       ldrh    w11, [x5],4
+       orr     w7, w11, w7, lsl 16
+       str     w7, [x10,x0]
+       b       .L358
+.L357:
+       ldr     x7, [x1,1896]
+       str     w9, [x7,x0]
+.L358:
+       add     w4, w4, 1
+       add     w3, w3, w6
+       b       .L356
+.L354:
+       add     x19, x19, :lo12:.LANCHOR0
+       ubfx    x25, x20, 22, 5
+       mov     w2, w24
        and     x22, x22, 3
-       ldr     x1, [x20,8]
-       str     x1, [x20,24]
-       lsl     w1, w23, 10
-       str     x0, [x20,16]
+       ldr     x1, [x19,1896]
+       str     x1, [x19,1912]
+       lsl     w1, w25, 10
+       str     x0, [x19,1904]
        bl      rknand_dma_map_single
-       str     w0, [x20,32]
-       ldr     x0, [x20,24]
-       lsl     w1, w23, 7
-       mov     w2, w25
+       str     w0, [x19,1920]
+       ldr     x0, [x19,1912]
+       lsl     w1, w25, 7
+       mov     w2, w24
        bl      rknand_dma_map_single
-       str     w0, [x20,36]
+       str     w0, [x19,1924]
        mov     w0, 1
-       str     w0, [x20,40]
-       ldr     w0, [x20,32]
+       str     w0, [x19,1928]
+       ldr     w0, [x19,1920]
        mov     w1, 16
        str     w0, [x21,20]
-       ldr     w0, [x20,36]
+       ldr     w0, [x19,1924]
        str     w0, [x21,24]
        str     wzr, [x29,88]
        ldr     w0, [x29,88]
@@ -2462,14 +2719,14 @@ NandcXferStart:
        ldr     w0, [x29,88]
        orr     w0, w0, 448
        str     w0, [x29,88]
-       cbnz    x22, .L325
+       cbnz    x22, .L361
        ldr     w0, [x29,88]
        mov     w1, 2
        bfi     w0, w1, 3, 3
        str     w0, [x29,88]
-.L325:
+.L361:
        ldr     w0, [x29,88]
-       cmp     w25, wzr
+       cmp     w24, wzr
        cset    w1, eq
        orr     w0, w0, 4
        str     w0, [x29,88]
@@ -2479,14 +2736,14 @@ NandcXferStart:
        ldr     w0, [x29,88]
        orr     w0, w0, 1
        str     w0, [x29,88]
-.L314:
+.L350:
        ldr     w0, [x29,88]
        str     w0, [x21,16]
-.L313:
-       str     w24, [x21,12]
-       str     w19, [x21,8]
-       orr     w19, w19, 4
-       str     w19, [x21,8]
+.L349:
+       str     w23, [x21,12]
+       str     w20, [x21,8]
+       orr     w20, w20, 4
+       str     w20, [x21,8]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -2500,14 +2757,14 @@ NandcXferStart:
 Ftl_log2:
        mov     w2, 1
        mov     w1, 0
-.L332:
+.L368:
        cmp     w2, w0
-       bhi     .L334
+       bhi     .L370
        add     w1, w1, 1
        lsl     w2, w2, 1
        uxth    w1, w1
-       b       .L332
-.L334:
+       b       .L368
+.L370:
        sub     w0, w1, #1
        ret
        .size   Ftl_log2, .-Ftl_log2
@@ -2524,401 +2781,299 @@ FtlSysBlkNumInit:
        uxth    w0, w0
        mov     w1, 24
        cmp     w0, 23
-       adrp    x2, :got:c_ftl_nand_max_sys_blks
        csel    w0, w0, w1, hi
-       adrp    x1, :got:c_ftl_nand_sys_blks_per_plane
-       adrp    x3, :got:c_ftl_nand_blk_pre_plane
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
-       str     w0, [x1]
-       adrp    x1, :got:c_ftl_nand_planes_num
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_max_sys_blks]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w1, [x1]
-       mul     w1, w0, w1
-       str     w1, [x2]
-       adrp    x2, :got:c_ftl_nand_data_blks_per_plane
-       ldr     x3, [x3, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w3, [x3]
+       adrp    x1, .LANCHOR0
+       add     x1, x1, :lo12:.LANCHOR0
+       ldrh    w2, [x1,1952]
+       ldrh    w3, [x1,1962]
+       str     w0, [x1,1948]
+       mul     w2, w0, w2
        sub     w0, w3, w0
-       strh    w0, [x2]
-       adrp    x2, :got:c_ftl_nand_totle_phy_blks
-       adrp    x0, :got:c_ftl_nand_max_data_blks
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_totle_phy_blks]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
-       ldr     w2, [x2]
-       sub     w1, w2, w1
-       str     w1, [x0]
+       strh    w0, [x1,1960]
+       ldr     w0, [x1,1968]
+       str     w2, [x1,1956]
+       sub     w2, w0, w2
        mov     w0, 0
+       str     w2, [x1,1964]
        ret
        .size   FtlSysBlkNumInit, .-FtlSysBlkNumInit
        .align  2
        .global FtlConstantsInit
        .type   FtlConstantsInit, %function
 FtlConstantsInit:
-       stp     x29, x30, [sp, -96]!
-       adrp    x3, :got:c_ftl_nand_planes_per_die
-       adrp    x6, :got:p_plane_order_table
+       stp     x29, x30, [sp, -80]!
+       mov     x3, 0
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
        stp     x23, x24, [sp,48]
+       stp     x21, x22, [sp,32]
        stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
-       mov     x19, x0
-       adrp    x20, :got:c_ftl_nand_blk_pre_plane
-       ldrh    w7, [x0,8]
-       adrp    x0, :got:c_ftl_nand_type
-       ldrh    w2, [x19,10]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_type]
-       ldrh    w5, [x19,14]
-       strh    w7, [x0]
-       adrp    x0, :got:c_ftl_nand_die_num
-       ldr     x1, [x0, #:got_lo12:c_ftl_nand_die_num]
-       strh    w2, [x1]
-       ldrh    w1, [x19,12]
-       ldr     x3, [x3, #:got_lo12:c_ftl_nand_planes_per_die]
-       strh    w1, [x3]
-       ldr     x3, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       strh    w5, [x3]
-       mov     x3, 0
-.L339:
-       ldr     x4, [x6, #:got_lo12:p_plane_order_table]
-       adrp    x13, :got:p_plane_order_table
-       strb    w3, [x3,x4]
+       mov     x23, x0
+       adrp    x19, .LANCHOR0
+       ldrh    w6, [x0,8]
+       add     x0, x19, :lo12:.LANCHOR0
+       ldrh    w2, [x23,10]
+       ldrh    w1, [x23,12]
+       ldrh    w4, [x23,14]
+       strh    w6, [x0,1972]
+       strh    w2, [x0,1974]
+       strh    w1, [x0,1976]
+       strh    w4, [x0,1962]
+.L375:
+       add     x5, x0, 1984
+       strb    w3, [x3,x5]
        add     x3, x3, 1
        cmp     x3, 32
-       bne     .L339
-       ldrh    w4, [x19,20]
-       ldrb    w3, [x19,15]
-       cmp     w4, w3
-       bcs     .L340
-       uxtb    w9, w1
-       mov     w4, 0
-       mul     w12, w1, w2
-       ubfiz   w11, w9, 1, 7
-.L341:
-       cmp     w4, w1
-       bcs     .L343
-       uxtb    w3, w4
-       mov     w6, w4
-       mov     w8, 0
-.L344:
-       cmp     w8, w2
-       bcs     .L357
-       ldr     x10, [x13, #:got_lo12:p_plane_order_table]
-       add     w14, w6, w12
-       add     w15, w3, w9
-       add     w8, w8, 1
-       strb    w3, [x10,w6,uxtw]
-       add     w3, w3, w11
-       strb    w15, [x10,x14]
-       add     w6, w6, w1
-       uxtb    w3, w3
-       b       .L344
-.L357:
-       add     w4, w4, 1
-       b       .L341
-.L343:
-       ldr     x3, [x0, #:got_lo12:c_ftl_nand_die_num]
+       bne     .L375
+       ldrh    w3, [x23,20]
+       ldrb    w0, [x23,15]
+       cmp     w3, w0
+       bcs     .L376
+       uxtb    w8, w1
+       mov     w3, 0
+       mul     w11, w1, w2
+       ubfiz   w10, w8, 1, 7
+       add     x12, x19, :lo12:.LANCHOR0
+.L377:
+       cmp     w3, w1
+       bcs     .L379
+       uxtb    w0, w3
+       mov     w5, w3
+       mov     w7, 0
+.L380:
+       cmp     w7, w2
+       bcs     .L393
+       add     x9, x12, 1984
+       add     w13, w5, w11
+       add     w14, w0, w8
+       add     w7, w7, 1
+       strb    w0, [x9,w5,uxtw]
+       add     w0, w0, w10
+       strb    w14, [x9,x13]
+       add     w5, w5, w1
+       uxtb    w0, w0
+       b       .L380
+.L393:
+       add     w3, w3, 1
+       b       .L377
+.L379:
+       add     x0, x19, :lo12:.LANCHOR0
        lsl     w2, w2, 1
-       lsr     w5, w5, 1
-       strh    w2, [x3]
-       ldr     x2, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       strh    w5, [x2]
-.L340:
-       adrp    x2, :got:c_mlc_erase_count_value
-       adrp    x21, :got:c_ftl_nand_ext_blk_pre_plane
-       mov     w3, 5
-       cmp     w7, 1
-       ldr     x2, [x2, #:got_lo12:c_mlc_erase_count_value]
-       strh    w3, [x2]
-       ldr     x3, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
-       strh    wzr, [x3]
-       bne     .L345
-       strh    w7, [x2]
-.L345:
-       adrp    x23, :got:c_ftl_vendor_part_size
+       lsr     w4, w4, 1
+       strh    w2, [x0,1974]
+       strh    w4, [x0,1962]
+.L376:
+       add     x0, x19, :lo12:.LANCHOR0
+       mov     w2, 5
+       cmp     w6, 1
+       strh    w2, [x0,2016]
+       strh    wzr, [x0,2018]
+       bne     .L381
+       strh    w6, [x0,2016]
+.L381:
+       add     x0, x19, :lo12:.LANCHOR0
        mov     w2, 4352
-       ldr     x3, [x23, #:got_lo12:c_ftl_vendor_part_size]
-       strh    w2, [x3]
-       adrp    x2, :got:g_slc2KBNand
-       ldr     x2, [x2, #:got_lo12:g_slc2KBNand]
-       ldrb    w2, [x2]
-       cbz     w2, .L346
+       strh    w2, [x0,2020]
+       ldrb    w2, [x0,8]
+       cbz     w2, .L382
        mov     w2, 384
-       strh    w2, [x3]
-.L346:
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_die_num]
-       adrp    x24, :got:c_ftl_nand_planes_num
-       adrp    x25, :got:c_ftl_nand_page_pre_blk
-       adrp    x28, :got:c_ftl_nand_page_pre_slc_blk
-       adrp    x27, :got:c_ftl_nand_sec_pre_page
-       adrp    x22, :got:c_ftl_nand_sec_pre_page_shift
-       ldrh    w0, [x0]
-       ldr     x24, [x24, #:got_lo12:c_ftl_nand_planes_num]
-       mul     w0, w1, w0
-       strh    w0, [x24]
-       ldr     x20, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       ldrh    w0, [x20]
-       mul     w1, w1, w0
-       adrp    x0, :got:c_ftl_nand_blks_per_die
-       uxth    w1, w1
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
-       strh    w1, [x0]
-       mov     w0, w1
+       strh    w2, [x0,2020]
+.L382:
+       add     x21, x19, :lo12:.LANCHOR0
+       ldrh    w20, [x21,1962]
+       ldrh    w22, [x21,1974]
+       mul     w22, w1, w22
+       mul     w1, w20, w1
+       uxth    w22, w22
+       strh    w22, [x21,1952]
+       uxth    w0, w1
+       strh    w0, [x21,2022]
        bl      Ftl_log2
-       adrp    x1, :got:c_ftl_nand_blks_per_die_shift
-       ldrh    w2, [x19,18]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die_shift]
-       strh    w0, [x1]
-       ldrh    w0, [x19,16]
-       ldr     x1, [x25, #:got_lo12:c_ftl_nand_page_pre_blk]
-       strh    w0, [x1]
-       ldr     x1, [x28, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       strh    w2, [x1]
-       adrp    x1, :got:c_ftl_nand_page_pre_super_blk
-       ldrh    w2, [x24]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_page_pre_super_blk]
-       mul     w0, w0, w2
-       strh    w0, [x1]
-       ldrh    w0, [x19,20]
-       ldr     x26, [x27, #:got_lo12:c_ftl_nand_sec_pre_page]
-       strh    w0, [x26]
+       ldrh    w25, [x23,16]
+       ldrh    w24, [x23,20]
+       strh    w0, [x21,2024]
+       mul     w0, w22, w25
+       strh    w0, [x21,2030]
+       mov     w0, w24
+       ldrh    w26, [x23,18]
+       strh    w25, [x21,2026]
+       strh    w26, [x21,2028]
+       strh    w24, [x21,2032]
        bl      Ftl_log2
-       ldr     x1, [x22, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
-       uxth    w6, w0
-       ldrh    w2, [x26]
-       mov     x4, x28
-       ldrh    w5, [x24]
-       strh    w0, [x1]
-       adrp    x0, :got:c_ftl_nand_byte_pre_page
-       lsl     w1, w2, 9
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_page]
-       strh    w1, [x0]
-       adrp    x0, :got:c_ftl_nand_byte_pre_oob
-       ubfx    x1, x1, 9, 7
-       lsl     w1, w1, 1
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
-       strh    w1, [x0]
-       adrp    x0, :got:c_ftl_nand_reserved_blks
-       ldrh    w1, [x19,26]
-       mov     x19, x25
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_reserved_blks]
-       strh    w1, [x0]
-       adrp    x1, :got:c_ftl_nand_totle_phy_blks
-       ldrh    w0, [x20]
-       mov     x20, x27
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_totle_phy_blks]
-       cmp     w0, 1024
-       mul     w3, w5, w0
-       str     w3, [x1]
-       bls     .L347
-       ldr     x1, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
-       and     w3, w0, 255
-       strh    w3, [x1]
-.L347:
-       ldr     x21, [x21, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
-       adrp    x3, :got:DeviceCapacity
-       ldr     x7, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w1, [x21]
-       ldrh    w7, [x7]
-       sub     w1, w0, w1
-       ldr     x3, [x3, #:got_lo12:DeviceCapacity]
-       mul     w1, w5, w1
-       mul     w1, w1, w2
-       mul     w1, w1, w7
+       uxth    w3, w0
+       strh    w0, [x21,2034]
+       lsl     w0, w24, 9
+       strh    w0, [x21,2036]
+       ubfx    x0, x0, 9, 7
+       cmp     w20, 1024
+       lsl     w0, w0, 1
+       strh    w0, [x21,2038]
+       ldrh    w0, [x23,26]
+       strh    w0, [x21,2040]
+       mul     w0, w22, w20
+       str     w0, [x21,1968]
+       bls     .L383
+       and     w0, w20, 255
+       strh    w0, [x21,2018]
+.L383:
+       add     x2, x19, :lo12:.LANCHOR0
+       ldrh    w1, [x2,2018]
+       ldrh    w0, [x2,2020]
+       sub     w1, w20, w1
+       mul     w1, w22, w1
+       mul     w1, w1, w24
+       mul     w24, w24, w26
+       mul     w1, w1, w25
        asr     w1, w1, 11
-       str     w1, [x3]
-       ldr     x4, [x4, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldr     x23, [x23, #:got_lo12:c_ftl_vendor_part_size]
-       ldrh    w4, [x4]
-       ldrh    w1, [x23]
-       mul     w2, w2, w4
-       lsl     w3, w1, 3
-       sdiv    w2, w3, w2
-       adrp    x3, :got:c_ftl_nand_max_vendor_blks
-       uxth    w2, w2
-       cmp     w2, 4
-       bls     .L348
-       ldr     x4, [x3, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       strh    w2, [x4]
-       b       .L349
-.L348:
-       ldr     x2, [x3, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       mov     w4, 4
-       strh    w4, [x2]
-.L349:
-       adrp    x2, :got:c_ftl_nand_vendor_region_num
-       asr     w1, w1, w6
-       add     w1, w1, 2
-       lsl     w0, w0, 6
-       cmp     w5, 1
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_vendor_region_num]
-       strh    w1, [x2]
-       add     w1, w6, 9
-       asr     w0, w0, w1
-       adrp    x1, :got:c_ftl_nand_map_blks_per_plane
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_map_blks_per_plane]
-       strh    w0, [x1]
-       adrp    x1, :got:c_ftl_nand_max_map_blks
-       and     w0, w0, 65535
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_max_map_blks]
-       mul     w2, w0, w5
-       add     w0, w0, 8
-       str     w2, [x1]
-       ldr     x3, [x3, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       ldrh    w1, [x3]
-       udiv    w1, w1, w5
-       add     w0, w0, w1
-       adrp    x1, :got:c_ftl_nand_sys_blks_per_plane
-       ldr     x2, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
-       bne     .L356
-       add     w0, w0, 4
-.L356:
-       str     w0, [x2]
-       ldr     x21, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
-       ldrh    w0, [x21]
+       str     w1, [x2,2044]
+       lsl     w1, w0, 3
+       sdiv    w24, w1, w24
+       uxth    w24, w24
+       cmp     w24, 4
+       bls     .L384
+       strh    w24, [x2,2048]
+       b       .L385
+.L384:
+       mov     w1, 4
+       strh    w1, [x2,2048]
+.L385:
+       add     x1, x19, :lo12:.LANCHOR0
+       asr     w0, w0, w3
+       lsl     w20, w20, 6
+       add     w3, w3, 9
+       asr     w20, w20, w3
+       add     w0, w0, 2
+       strh    w20, [x1,2052]
+       and     w20, w20, 65535
+       strh    w0, [x1,2050]
+       cmp     w22, 1
+       mul     w0, w20, w22
+       str     w0, [x1,2056]
+       add     w20, w20, 8
+       ldrh    w0, [x1,2048]
+       udiv    w0, w0, w22
+       add     w20, w20, w0
+       bne     .L392
+       add     w20, w20, 4
+.L392:
+       add     x19, x19, :lo12:.LANCHOR0
+       str     w20, [x1,1948]
+       ldrh    w0, [x19,1948]
        bl      FtlSysBlkNumInit
-       adrp    x0, :got:c_ftl_nand_init_sys_blks_per_plane
-       ldr     w1, [x21]
-       adrp    x2, :got:c_ftl_nand_map_region_num
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
-       str     w1, [x0]
-       adrp    x0, :got:c_ftl_nand_max_data_blks
-       ldr     x19, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
-       ldr     x22, [x22, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
-       ldrh    w1, [x19]
-       ldr     w0, [x0]
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_map_region_num]
+       str     wzr, [x19,2068]
+       ldr     w0, [x19,1948]
+       str     w0, [x19,2060]
+       ldr     w0, [x19,1964]
+       ldrh    w1, [x19,2026]
        lsl     w0, w0, 2
+       ldp     x21, x22, [sp,32]
        mul     w1, w0, w1
-       ldrh    w0, [x22]
+       ldrh    w0, [x19,2034]
+       ldp     x23, x24, [sp,48]
        add     w0, w0, 9
        lsr     w0, w1, w0
-       mov     w1, 2048
+       ldrh    w1, [x19,2032]
        add     w0, w0, 2
-       strh    w0, [x2]
-       adrp    x0, :got:c_ftl_nand_l2pmap_ram_region_num
-       ldr     x20, [x20, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
-       ldrh    w2, [x20]
-       sdiv    w1, w1, w2
-       strh    w1, [x0]
-       adrp    x0, :got:g_MaxLbaSector
-       ldr     x0, [x0, #:got_lo12:g_MaxLbaSector]
-       str     wzr, [x0]
-       mov     w0, 0
-       ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
-       ldp     x23, x24, [sp,48]
+       strh    w0, [x19,2064]
+       mov     w0, 2048
        ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 96
+       sdiv    w0, w0, w1
+       strh    w0, [x19,2066]
+       ldp     x19, x20, [sp,16]
+       ldp     x29, x30, [sp], 80
+       mov     w0, 0
        ret
        .size   FtlConstantsInit, .-FtlConstantsInit
        .align  2
        .global IsBlkInVendorPart
        .type   IsBlkInVendorPart, %function
 IsBlkInVendorPart:
-       adrp    x1, :got:g_totle_vendor_block
+       adrp    x1, .LANCHOR0
        uxth    w4, w0
+       add     x1, x1, :lo12:.LANCHOR0
        mov     w0, 0
-       ldr     x1, [x1, #:got_lo12:g_totle_vendor_block]
-       ldrh    w1, [x1]
-       cbz     w1, .L359
-       adrp    x1, :got:c_ftl_nand_max_vendor_blks
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       ldrh    w2, [x1]
-       adrp    x1, :got:p_vendor_block_table
-       ldr     x1, [x1, #:got_lo12:p_vendor_block_table]
-       ldr     x3, [x1]
+       ldrh    w2, [x1,2072]
+       cbz     w2, .L395
+       ldrh    w2, [x1,2048]
+       ldr     x3, [x1,2080]
        mov     x1, 0
-.L360:
+.L396:
        cmp     w2, w1, uxth
-       bls     .L365
+       bls     .L401
        add     x1, x1, 1
        add     x0, x3, x1, lsl 1
        ldrh    w0, [x0,-2]
        cmp     w0, w4
-       bne     .L360
+       bne     .L396
        mov     w0, 1
-       b       .L359
-.L365:
+       b       .L395
+.L401:
        mov     w0, 0
-.L359:
+.L395:
        ret
        .size   IsBlkInVendorPart, .-IsBlkInVendorPart
        .align  2
        .global FtlCacheMetchLpa
        .type   FtlCacheMetchLpa, %function
 FtlCacheMetchLpa:
-       adrp    x2, :got:g_wr_page_num
+       adrp    x2, .LANCHOR0
        mov     w6, w0
+       add     x2, x2, :lo12:.LANCHOR0
        mov     w0, 0
-       ldr     x2, [x2, #:got_lo12:g_wr_page_num]
-       ldr     w3, [x2]
-       cbz     w3, .L367
-       adrp    x2, :got:req_wr_io
+       ldr     w3, [x2,2088]
+       cbz     w3, .L403
+       ldr     x5, [x2,2096]
        mov     x0, 56
-       ldr     x2, [x2, #:got_lo12:req_wr_io]
-       ldr     x5, [x2]
        mov     x2, 0
-.L368:
+.L404:
        cmp     w3, w2
-       bls     .L377
+       bls     .L413
        madd    x4, x2, x0, x5
        add     x2, x2, 1
        ldr     w4, [x4,24]
        cmp     w4, w6
-       bcc     .L368
+       bcc     .L404
        cmp     w4, w1
-       bhi     .L368
+       bhi     .L404
        mov     w0, 1
-       b       .L367
-.L377:
+       b       .L403
+.L413:
        mov     w0, 0
-.L367:
+.L403:
        ret
        .size   FtlCacheMetchLpa, .-FtlCacheMetchLpa
        .align  2
        .global FtlGetCap
        .type   FtlGetCap, %function
 FtlGetCap:
-       adrp    x0, :got:g_MaxLbaSector
-       ldr     x0, [x0, #:got_lo12:g_MaxLbaSector]
-       ldr     w0, [x0]
+       adrp    x0, .LANCHOR0+2068
+       ldr     w0, [x0,#:lo12:.LANCHOR0+2068]
        ret
        .size   FtlGetCap, .-FtlGetCap
        .align  2
        .global FtlGetCapacity
        .type   FtlGetCapacity, %function
 FtlGetCapacity:
-       adrp    x0, :got:g_MaxLbaSector
-       ldr     x0, [x0, #:got_lo12:g_MaxLbaSector]
-       ldr     w0, [x0]
+       adrp    x0, .LANCHOR0+2068
+       ldr     w0, [x0,#:lo12:.LANCHOR0+2068]
        ret
        .size   FtlGetCapacity, .-FtlGetCapacity
        .align  2
        .global FtlGetLpn
        .type   FtlGetLpn, %function
 FtlGetLpn:
-       adrp    x0, :got:g_MaxLpn
-       ldr     x0, [x0, #:got_lo12:g_MaxLpn]
-       ldr     w0, [x0]
+       adrp    x0, .LANCHOR0+2104
+       ldr     w0, [x0,#:lo12:.LANCHOR0+2104]
        ret
        .size   FtlGetLpn, .-FtlGetLpn
        .align  2
        .global FtlGetCurEraseBlock
        .type   FtlGetCurEraseBlock, %function
 FtlGetCurEraseBlock:
-       adrp    x0, :got:c_ftl_nand_planes_num
-       adrp    x1, :got:g_cur_erase_blk
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldr     x1, [x1, #:got_lo12:g_cur_erase_blk]
-       ldrh    w2, [x0]
-       ldr     w0, [x1]
+       adrp    x1, .LANCHOR0
+       add     x1, x1, :lo12:.LANCHOR0
+       ldrh    w2, [x1,1952]
+       ldr     w0, [x1,2108]
        mul     w0, w2, w0
        ret
        .size   FtlGetCurEraseBlock, .-FtlGetCurEraseBlock
@@ -2926,12 +3081,10 @@ FtlGetCurEraseBlock:
        .global FtlGetAllBlockNum
        .type   FtlGetAllBlockNum, %function
 FtlGetAllBlockNum:
-       adrp    x0, :got:c_ftl_nand_blk_pre_plane
-       adrp    x1, :got:c_ftl_nand_planes_num
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w2, [x0]
-       ldrh    w0, [x1]
+       adrp    x1, .LANCHOR0
+       add     x1, x1, :lo12:.LANCHOR0
+       ldrh    w2, [x1,1962]
+       ldrh    w0, [x1,1952]
        mul     w0, w2, w0
        ret
        .size   FtlGetAllBlockNum, .-FtlGetAllBlockNum
@@ -2939,16 +3092,15 @@ FtlGetAllBlockNum:
        .global FtlBbmMapBadBlock
        .type   FtlBbmMapBadBlock, %function
 FtlBbmMapBadBlock:
-       uxth    w1, w0
-       adrp    x0, :got:c_ftl_nand_blks_per_die
        stp     x29, x30, [sp, -32]!
+       uxth    w1, w0
        mov     w4, 1
        add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
        str     x19, [sp,16]
-       adrp    x19, :got:gBbtInfo
-       ldrh    w3, [x0]
-       ldr     x19, [x19, #:got_lo12:gBbtInfo]
+       adrp    x19, .LANCHOR0
+       add     x19, x19, :lo12:.LANCHOR0
+       add     x19, x19, 2112
+       ldrh    w3, [x19,-90]
        udiv    w2, w1, w3
        add     x0, x19, x2, uxth 3
        ldr     x0, [x0,32]
@@ -2960,8 +3112,8 @@ FtlBbmMapBadBlock:
        ldr     w5, [x0,x6]
        orr     w4, w4, w5
        str     w4, [x0,x6]
-       adrp    x0, .LC1
-       add     x0, x0, :lo12:.LC1
+       adrp    x0, .LC2
+       add     x0, x0, :lo12:.LC2
        bl      printk
        ldrh    w0, [x19,6]
        add     w0, w0, 1
@@ -2975,18 +3127,16 @@ FtlBbmMapBadBlock:
        .global FtlBbmIsBadBlock
        .type   FtlBbmIsBadBlock, %function
 FtlBbmIsBadBlock:
-       adrp    x2, :got:c_ftl_nand_blks_per_die
+       adrp    x2, .LANCHOR0
        uxth    w0, w0
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldrh    w1, [x2]
+       add     x3, x2, :lo12:.LANCHOR0
+       ldrh    w1, [x3,2022]
        udiv    w2, w0, w1
        msub    w0, w2, w1, w0
-       adrp    x1, :got:gBbtInfo
+       add     x2, x3, x2, uxth 3
+       ldr     x1, [x2,2144]
        uxth    w0, w0
-       ldr     x1, [x1, #:got_lo12:gBbtInfo]
        ubfx    x3, x0, 5, 11
-       add     x2, x1, x2, uxth 3
-       ldr     x1, [x2,32]
        ldr     w1, [x1,x3,lsl 2]
        lsr     w0, w1, w0
        and     w0, w0, 1
@@ -3003,34 +3153,32 @@ FtlBbtInfoPrint:
        .type   FtlBbtCalcTotleCnt, %function
 FtlBbtCalcTotleCnt:
        stp     x29, x30, [sp, -48]!
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
+       str     x21, [sp,32]
        mov     w19, 0
-       stp     x21, x22, [sp,32]
        mov     w20, w19
-       adrp    x22, :got:c_ftl_nand_blks_per_die
-       adrp    x21, :got:c_ftl_nand_die_num
-.L387:
-       ldr     x0, [x22, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldr     x1, [x21, #:got_lo12:c_ftl_nand_die_num]
-       ldrh    w0, [x0]
-       ldrh    w1, [x1]
-       mul     w0, w0, w1
-       cmp     w20, w0
-       bge     .L393
+       ldrh    w1, [x0,2022]
+       ldrh    w21, [x0,1974]
+       mul     w21, w1, w21
+.L423:
+       cmp     w20, w21
+       bge     .L429
        mov     w0, w20
        bl      FtlBbmIsBadBlock
-       cbz     w0, .L388
+       cbz     w0, .L424
        add     w19, w19, 1
        uxth    w19, w19
-.L388:
+.L424:
        add     w20, w20, 1
        uxth    w20, w20
-       b       .L387
-.L393:
+       b       .L423
+.L429:
        mov     w0, w19
+       ldr     x21, [sp,32]
        ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
        ldp     x29, x30, [sp], 48
        ret
        .size   FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
@@ -3038,17 +3186,15 @@ FtlBbtCalcTotleCnt:
        .global V2P_block
        .type   V2P_block, %function
 V2P_block:
-       adrp    x2, :got:c_ftl_nand_planes_per_die
+       adrp    x3, .LANCHOR0
        uxth    w0, w0
+       add     x3, x3, :lo12:.LANCHOR0
        uxth    w1, w1
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_planes_per_die]
-       ldrh    w3, [x2]
-       udiv    w2, w0, w3
-       msub    w0, w2, w3, w0
-       madd    w0, w1, w3, w0
-       adrp    x1, :got:c_ftl_nand_blks_per_die
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldrh    w1, [x1]
+       ldrh    w4, [x3,1976]
+       udiv    w2, w0, w4
+       msub    w0, w2, w4, w0
+       madd    w0, w1, w4, w0
+       ldrh    w1, [x3,2022]
        madd    w0, w2, w1, w0
        ret
        .size   V2P_block, .-V2P_block
@@ -3056,13 +3202,11 @@ V2P_block:
        .global P2V_plane
        .type   P2V_plane, %function
 P2V_plane:
-       adrp    x1, :got:c_ftl_nand_planes_per_die
-       adrp    x2, :got:c_ftl_nand_blks_per_die
+       adrp    x2, .LANCHOR0
        uxth    w0, w0
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_planes_per_die]
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldrh    w1, [x1]
-       ldrh    w3, [x2]
+       add     x2, x2, :lo12:.LANCHOR0
+       ldrh    w1, [x2,1976]
+       ldrh    w3, [x2,2022]
        udiv    w2, w0, w1
        udiv    w3, w0, w3
        msub    w0, w2, w1, w0
@@ -3073,16 +3217,14 @@ P2V_plane:
        .global P2V_block_in_plane
        .type   P2V_block_in_plane, %function
 P2V_block_in_plane:
-       adrp    x1, :got:c_ftl_nand_blks_per_die
+       adrp    x2, .LANCHOR0
        uxth    w0, w0
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldrh    w2, [x1]
-       udiv    w1, w0, w2
-       msub    w0, w1, w2, w0
-       adrp    x1, :got:c_ftl_nand_planes_per_die
+       add     x2, x2, :lo12:.LANCHOR0
+       ldrh    w3, [x2,2022]
+       udiv    w1, w0, w3
+       msub    w0, w1, w3, w0
+       ldrh    w1, [x2,1976]
        uxth    w0, w0
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_planes_per_die]
-       ldrh    w1, [x1]
        udiv    w0, w0, w1
        ret
        .size   P2V_block_in_plane, .-P2V_block_in_plane
@@ -3092,25 +3234,24 @@ P2V_block_in_plane:
 ftl_cmp_data_ver:
        cmp     w0, w1
        mov     w2, -2147483648
-       bls     .L398
+       bls     .L434
        sub     w1, w0, w1
        cmp     w1, w2
        cset    w0, ls
-       b       .L399
-.L398:
+       b       .L435
+.L434:
        sub     w1, w1, w0
        cmp     w1, w2
        cset    w0, hi
-.L399:
+.L435:
        ret
        .size   ftl_cmp_data_ver, .-ftl_cmp_data_ver
        .align  2
        .global FtlFreeSysBlkQueueEmpty
        .type   FtlFreeSysBlkQueueEmpty, %function
 FtlFreeSysBlkQueueEmpty:
-       adrp    x0, :got:gSysFreeQueue
-       ldr     x0, [x0, #:got_lo12:gSysFreeQueue]
-       ldrh    w0, [x0,6]
+       adrp    x0, .LANCHOR0+2214
+       ldrh    w0, [x0,#:lo12:.LANCHOR0+2214]
        cmp     w0, wzr
        cset    w0, eq
        ret
@@ -3119,9 +3260,8 @@ FtlFreeSysBlkQueueEmpty:
        .global FtlFreeSysBlkQueueFull
        .type   FtlFreeSysBlkQueueFull, %function
 FtlFreeSysBlkQueueFull:
-       adrp    x0, :got:gSysFreeQueue
-       ldr     x0, [x0, #:got_lo12:gSysFreeQueue]
-       ldrh    w0, [x0,6]
+       adrp    x0, .LANCHOR0+2214
+       ldrh    w0, [x0,#:lo12:.LANCHOR0+2214]
        cmp     w0, 1024
        cset    w0, eq
        ret
@@ -3130,41 +3270,42 @@ FtlFreeSysBlkQueueFull:
        .global FtlFreeSysBlkQueueIn
        .type   FtlFreeSysBlkQueueIn, %function
 FtlFreeSysBlkQueueIn:
-       stp     x29, x30, [sp, -32]!
+       stp     x29, x30, [sp, -48]!
+       adrp    x2, .LANCHOR0
+       uxth    w1, w1
        add     x29, sp, 0
+       stp     x21, x22, [sp,32]
+       uxth    w22, w0
+       add     x0, x2, :lo12:.LANCHOR0
        stp     x19, x20, [sp,16]
-       uxth    w20, w0
-       uxth    w19, w1
-       bl      FtlFreeSysBlkQueueFull
-       uxth    w0, w0
-       cbnz    w0, .L402
-       cbz     w19, .L404
-       mov     w0, w20
+       mov     x19, x2
+       ldrh    w0, [x0,2214]
+       cmp     w0, 1024
+       beq     .L438
+       cbz     w1, .L440
+       adrp    x20, .LANCHOR2
+       mov     w0, w22
+       add     x20, x20, :lo12:.LANCHOR2
        bl      P2V_block_in_plane
-       uxth    w19, w0
-       adrp    x1, :got:req_erase
-       lsl     w2, w20, 10
-       ldr     x1, [x1, #:got_lo12:req_erase]
-       ldr     x0, [x1]
-       str     w2, [x0,4]
-       ldr     x0, [x1]
+       uxth    w21, w0
+       lsl     w1, w22, 10
+       ldr     x0, [x20,-88]
+       str     w1, [x0,4]
        mov     w1, 1
+       mov     w2, w1
+       ldr     x0, [x20,-88]
        bl      FlashEraseBlocks
-       adrp    x0, :got:p_erase_count_table
-       ubfiz   x1, x19, 1, 16
-       ldr     x0, [x0, #:got_lo12:p_erase_count_table]
-       ldr     x2, [x0]
+       ubfiz   x1, x21, 1, 16
+       ldr     x2, [x20,-80]
        ldrh    w0, [x2,x1]
        add     w0, w0, 1
        strh    w0, [x2,x1]
-       adrp    x1, :got:g_totle_sys_slc_erase_count
-       ldr     x1, [x1, #:got_lo12:g_totle_sys_slc_erase_count]
-       ldr     w0, [x1]
+       ldr     w0, [x20,-72]
        add     w0, w0, 1
-       str     w0, [x1]
-.L404:
-       adrp    x1, :got:gSysFreeQueue
-       ldr     x1, [x1, #:got_lo12:gSysFreeQueue]
+       str     w0, [x20,-72]
+.L440:
+       add     x1, x19, :lo12:.LANCHOR0
+       add     x1, x1, 2208
        ldrh    w0, [x1,6]
        ldrh    w2, [x1,4]
        add     w0, w0, 1
@@ -3172,11 +3313,12 @@ FtlFreeSysBlkQueueIn:
        add     x0, x1, x2, sxtw 1
        add     w2, w2, 1
        and     w2, w2, 1023
-       strh    w20, [x0,8]
+       strh    w22, [x0,8]
        strh    w2, [x1,4]
-.L402:
+.L438:
        ldp     x19, x20, [sp,16]
-       ldp     x29, x30, [sp], 32
+       ldp     x21, x22, [sp,32]
+       ldp     x29, x30, [sp], 48
        ret
        .size   FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
        .align  2
@@ -3186,87 +3328,86 @@ FtlFreeSysBLkSort:
        stp     x29, x30, [sp, -48]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
+       adrp    x20, .LANCHOR0
+       str     x21, [sp,32]
+       add     x20, x20, :lo12:.LANCHOR0
        mov     w19, 0
-       adrp    x20, :got:gSysFreeQueue
-       adrp    x21, :got:p_sys_data_buf
-       adrp    x22, :got:p_erase_count_table
-.L409:
-       ldr     x1, [x20, #:got_lo12:gSysFreeQueue]
-       adrp    x6, :got:gSysFreeQueue
-       ldrh    w0, [x1,6]
+       add     x20, x20, 2208
+       adrp    x21, .LANCHOR2
+.L448:
+       ldrh    w0, [x20,6]
        cmp     w0, w19
-       bls     .L417
-       ldrh    w0, [x1,2]
+       bls     .L456
+       ldrh    w0, [x20,2]
        add     w0, w0, w19
-       add     x0, x1, x0, sxtw 1
+       add     x0, x20, x0, sxtw 1
        ldrh    w0, [x0,8]
        bl      P2V_block_in_plane
        ubfiz   x0, x0, 1, 16
-       ldr     x3, [x22, #:got_lo12:p_erase_count_table]
-       ubfiz   x1, x19, 2, 16
-       ldr     x2, [x21, #:got_lo12:p_sys_data_buf]
+       add     x1, x21, :lo12:.LANCHOR2
+       ubfiz   x2, x19, 2, 16
        add     w19, w19, 1
-       ldr     x3, [x3]
+       ldr     x3, [x1,-64]
        uxth    w19, w19
-       ldr     x2, [x2]
-       ldrh    w0, [x3,x0]
-       str     w0, [x2,x1]
-       b       .L409
-.L417:
+       ldr     x1, [x1,-80]
+       ldrh    w0, [x1,x0]
+       str     w0, [x3,x2]
+       b       .L448
+.L456:
+       adrp    x4, .LANCHOR0
+       adrp    x7, .LANCHOR2
        mov     w0, 0
-       adrp    x7, :got:p_sys_data_buf
-.L411:
-       ldr     x1, [x6, #:got_lo12:gSysFreeQueue]
-       ldrh    w5, [x1,6]
-       sub     w1, w5, #1
+       add     x4, x4, :lo12:.LANCHOR0
+       mov     x8, x7
+.L450:
+       ldrh    w6, [x4,2214]
+       sub     w1, w6, #1
        cmp     w0, w1
-       bge     .L418
-       ldr     x1, [x7, #:got_lo12:p_sys_data_buf]
-       add     w4, w0, 1
-       uxth    w4, w4
-       ldr     x3, [x1]
-       mov     w2, w4
+       bge     .L457
+       add     x1, x7, :lo12:.LANCHOR2
+       add     w5, w0, 1
+       uxth    w5, w5
+       ldr     x3, [x1,-64]
+       mov     w2, w5
        mov     w1, w0
-.L412:
-       cmp     w2, w5
-       bcs     .L419
-       ubfiz   x8, x2, 2, 16
-       ldr     w9, [x3,w1,uxtw 2]
-       ldr     w8, [x3,x8]
-       cmp     w9, w8
+.L451:
+       cmp     w2, w6
+       bcs     .L458
+       ubfiz   x9, x2, 2, 16
+       ldr     w10, [x3,w1,uxtw 2]
+       ldr     w9, [x3,x9]
+       cmp     w10, w9
        csel    w1, w1, w2, ls
        add     w2, w2, 1
        uxth    w2, w2
-       b       .L412
-.L419:
+       b       .L451
+.L458:
        cmp     w0, w1
-       beq     .L415
-       ubfiz   x5, x0, 2, 16
-       ubfiz   x2, x1, 2, 32
-       ldr     w9, [x3,x5]
-       ldr     w8, [x3,x2]
+       beq     .L454
+       ubfiz   x2, x0, 2, 16
+       ubfiz   x6, x1, 2, 32
+       ldr     w10, [x3,x2]
+       ldr     w9, [x3,x6]
+       str     w10, [x3,x6]
+       add     x3, x8, :lo12:.LANCHOR2
+       ldr     x3, [x3,-64]
        str     w9, [x3,x2]
-       adrp    x2, :got:p_sys_data_buf
-       ldr     x2, [x2, #:got_lo12:p_sys_data_buf]
-       ldr     x2, [x2]
-       str     w8, [x2,x5]
-       ldr     x2, [x6, #:got_lo12:gSysFreeQueue]
-       ldrh    w3, [x2,2]
+       add     x2, x4, 2208
+       ldrh    w3, [x4,2210]
        add     w1, w3, w1
        add     w0, w3, w0
        add     x1, x2, x1, sxtw 1
        add     x0, x2, x0, sxtw 1
        ldrh    w2, [x0,8]
-       ldrh    w5, [x1,8]
+       ldrh    w6, [x1,8]
        strh    w2, [x1,8]
-       strh    w5, [x0,8]
-.L415:
-       mov     w0, w4
-       b       .L411
-.L418:
+       strh    w6, [x0,8]
+.L454:
+       mov     w0, w5
+       b       .L450
+.L457:
        ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
+       ldr     x21, [sp,32]
        ldp     x29, x30, [sp], 48
        ret
        .size   FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
@@ -3274,64 +3415,54 @@ FtlFreeSysBLkSort:
        .global IsInFreeQueue
        .type   IsInFreeQueue, %function
 IsInFreeQueue:
-       stp     x29, x30, [sp, -32]!
-       add     x29, sp, 0
-       str     x19, [sp,16]
-       uxth    w19, w0
-       bl      FtlFreeSysBlkQueueFull
-       uxth    w1, w0
+       adrp    x1, .LANCHOR0
+       uxth    w6, w0
+       add     x1, x1, :lo12:.LANCHOR0
        mov     w0, 0
-       cbnz    w1, .L421
-       adrp    x2, :got:gSysFreeQueue
-       mov     w0, w1
-       ldr     x3, [x2, #:got_lo12:gSysFreeQueue]
-       ldrh    w4, [x3,6]
-       ldrh    w3, [x3,2]
-.L422:
-       cmp     w0, w4
-       bcs     .L426
-       ldr     x5, [x2, #:got_lo12:gSysFreeQueue]
-       add     w1, w0, w3
-       ubfiz   x1, x1, 1, 10
-       add     x1, x5, x1
-       ldrh    w1, [x1,8]
-       cmp     w1, w19
-       beq     .L425
-       add     w0, w0, 1
-       b       .L422
-.L426:
+       add     x1, x1, 2208
+       ldrh    w4, [x1,6]
+       cmp     w4, 1024
+       beq     .L460
+       ldrh    w5, [x1,2]
+       mov     w3, w0
+.L461:
+       cmp     w3, w4
+       bcs     .L465
+       add     w2, w3, w5
+       ubfiz   x2, x2, 1, 10
+       add     x2, x1, x2
+       ldrh    w0, [x2,8]
+       cmp     w0, w6
+       beq     .L464
+       add     w3, w3, 1
+       b       .L461
+.L465:
        mov     w0, 0
-       b       .L421
-.L425:
+       b       .L460
+.L464:
        mov     w0, 1
-.L421:
-       ldr     x19, [sp,16]
-       ldp     x29, x30, [sp], 32
+.L460:
        ret
        .size   IsInFreeQueue, .-IsInFreeQueue
        .align  2
        .global FtlFreeSysBlkQueueOut
        .type   FtlFreeSysBlkQueueOut, %function
 FtlFreeSysBlkQueueOut:
-       stp     x29, x30, [sp, -16]!
-       add     x29, sp, 0
-       bl      FtlFreeSysBlkQueueEmpty
-       uxth    w1, w0
+       adrp    x1, .LANCHOR0
        mov     w0, 0
-       cbnz    w1, .L428
-       adrp    x1, :got:gSysFreeQueue
-       ldr     x1, [x1, #:got_lo12:gSysFreeQueue]
+       add     x1, x1, :lo12:.LANCHOR0
+       add     x1, x1, 2208
+       ldrh    w3, [x1,6]
+       cbz     w3, .L467
        ldrh    w2, [x1,2]
        add     x0, x1, x2, sxtw 1
-       ldrh    w3, [x1,6]
-       add     w2, w2, 1
        ldrh    w0, [x0,8]
        sub     w3, w3, #1
-       and     w2, w2, 1023
+       add     w2, w2, 1
        strh    w3, [x1,6]
+       and     w2, w2, 1023
        strh    w2, [x1,2]
-.L428:
-       ldp     x29, x30, [sp], 16
+.L467:
        ret
        .size   FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
        .align  2
@@ -3341,96 +3472,86 @@ insert_data_list:
        uxth    w0, w0
        mov     w9, 65535
        cmp     w0, w9
-       beq     .L431
-       adrp    x3, :got:p_data_block_list_table
-       mov     w4, 6
+       beq     .L471
+       adrp    x2, .LANCHOR2
+       mov     w7, 6
+       add     x5, x2, :lo12:.LANCHOR2
        mov     w1, -1
-       adrp    x2, :got:p_data_block_list_head
-       umull   x11, w0, w4
-       ldr     x8, [x3, #:got_lo12:p_data_block_list_table]
-       mov     x10, x3
-       mov     x5, x2
-       ldr     x12, [x8]
-       add     x6, x12, x11
-       strh    w1, [x6,2]
-       strh    w1, [x12,x11]
-       ldr     x7, [x2, #:got_lo12:p_data_block_list_head]
-       ldr     x1, [x7]
-       cbnz    x1, .L432
-       str     x6, [x7]
-       b       .L431
-.L432:
-       adrp    x2, :got:p_valid_page_count_table
-       ubfiz   x7, x0, 1, 16
-       ldr     x13, [x8]
-       mov     x8, -6148914691236517206
-       ldr     x2, [x2, #:got_lo12:p_valid_page_count_table]
-       ldr     x14, [x2]
-       ldrh    w2, [x6,4]
-       ldrh    w3, [x14,x7]
+       umull   x10, w0, w7
+       mov     x3, x2
+       ldr     x11, [x5,-56]
+       add     x4, x11, x10
+       strh    w1, [x4,2]
+       strh    w1, [x11,x10]
+       ldr     x1, [x5,-48]
+       cbnz    x1, .L472
+       str     x4, [x5,-48]
+       b       .L471
+.L472:
+       ubfiz   x8, x0, 1, 16
+       ldr     x13, [x5,-40]
+       ldrh    w2, [x4,4]
+       mov     x14, -6148914691236517206
+       ldr     x12, [x5,-56]
+       ldrh    w6, [x13,x8]
        cmp     w2, wzr
-       mul     w3, w3, w2
-       sub     x2, x1, x13
+       mul     w6, w6, w2
+       sub     x2, x1, x12
        asr     x2, x2, 1
-       csinv   w3, w3, wzr, ne
-       madd    x2, x8, x2, x2
-       adrp    x8, :got:p_erase_count_table
+       csinv   w6, w6, wzr, ne
+       madd    x2, x14, x2, x2
+       ldr     x14, [x5,-80]
        uxth    w2, w2
-       ldr     x8, [x8, #:got_lo12:p_erase_count_table]
-       ldr     x15, [x8]
-       add     x8, x15, x7
-       mov     w7, w4
-.L439:
-       ubfiz   x16, x2, 1, 16
-       ldrh    w17, [x1,4]
-       cmp     w17, wzr
-       ldrh    w4, [x14,x16]
-       mul     w4, w4, w17
-       csinv   w4, w4, wzr, ne
-       cmp     w4, w3
-       bne     .L435
-       ldrh    w16, [x15,x16]
-       ldrh    w4, [x8]
-       cmp     w16, w4
-       bcc     .L437
-       b       .L436
-.L435:
-       bhi     .L436
-.L437:
-       ldrh    w4, [x1]
-       cmp     w4, w9
-       bne     .L438
-       strh    w2, [x6,2]
+       add     x8, x14, x8
+.L479:
+       ubfiz   x15, x2, 1, 16
+       ldrh    w16, [x1,4]
+       cmp     w16, wzr
+       ldrh    w5, [x13,x15]
+       mul     w5, w5, w16
+       csinv   w5, w5, wzr, ne
+       cmp     w5, w6
+       bne     .L475
+       ldrh    w15, [x14,x15]
+       ldrh    w5, [x8]
+       cmp     w15, w5
+       bcc     .L477
+       b       .L476
+.L475:
+       bhi     .L476
+.L477:
+       ldrh    w5, [x1]
+       cmp     w5, w9
+       bne     .L478
+       strh    w2, [x4,2]
+       add     x2, x3, :lo12:.LANCHOR2
        strh    w0, [x1]
-       adrp    x0, :got:p_data_block_list_tail
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_tail]
-       str     x6, [x0]
-       b       .L431
-.L438:
-       umull   x1, w4, w7
-       mov     w2, w4
-       add     x1, x13, x1
-       b       .L439
-.L436:
-       strh    w2, [x12,x11]
+       str     x4, [x2,-32]
+       b       .L471
+.L478:
+       umull   x1, w5, w7
+       mov     w2, w5
+       add     x1, x12, x1
+       b       .L479
+.L476:
+       strh    w2, [x11,x10]
        ldrh    w2, [x1,2]
-       strh    w2, [x6,2]
-       ldr     x2, [x5, #:got_lo12:p_data_block_list_head]
-       ldr     x3, [x2]
+       strh    w2, [x4,2]
+       add     x2, x3, :lo12:.LANCHOR2
+       ldr     x3, [x2,-48]
        cmp     x1, x3
-       bne     .L440
+       bne     .L480
        strh    w0, [x1,2]
-       str     x6, [x2]
-       b       .L431
-.L440:
-       ldrh    w2, [x1,2]
-       mov     w3, 6
-       umull   x2, w2, w3
-       ldr     x3, [x10, #:got_lo12:p_data_block_list_table]
-       ldr     x3, [x3]
-       strh    w0, [x3,x2]
+       str     x4, [x2,-48]
+       b       .L471
+.L480:
+       ldrh    w3, [x1,2]
+       mov     w4, 6
+       ldr     x2, [x2,-56]
+       umull   x3, w3, w4
+       strh    w0, [x2,x3]
        strh    w0, [x1,2]
-.L431:
+.L471:
        mov     w0, 0
        ret
        .size   insert_data_list, .-insert_data_list
@@ -3441,11 +3562,11 @@ INSERT_DATA_LIST:
        stp     x29, x30, [sp, -16]!
        add     x29, sp, 0
        bl      insert_data_list
-       adrp    x0, :got:g_num_data_superblocks
-       ldr     x0, [x0, #:got_lo12:g_num_data_superblocks]
-       ldrh    w1, [x0]
+       adrp    x0, .LANCHOR2
+       add     x0, x0, :lo12:.LANCHOR2
+       ldrh    w1, [x0,-24]
        add     w1, w1, 1
-       strh    w1, [x0]
+       strh    w1, [x0,-24]
        ldp     x29, x30, [sp], 16
        ret
        .size   INSERT_DATA_LIST, .-INSERT_DATA_LIST
@@ -3454,74 +3575,68 @@ INSERT_DATA_LIST:
        .type   insert_free_list, %function
 insert_free_list:
        uxth    w0, w0
-       mov     w6, 65535
-       cmp     w0, w6
-       beq     .L445
-       adrp    x3, :got:p_data_block_list_table
-       mov     w5, 6
+       mov     w7, 65535
+       cmp     w0, w7
+       beq     .L485
+       adrp    x2, .LANCHOR2
+       mov     w6, 6
+       add     x5, x2, :lo12:.LANCHOR2
        mov     w1, -1
-       adrp    x2, :got:p_free_data_block_list_head
-       umull   x7, w0, w5
-       ldr     x9, [x3, #:got_lo12:p_data_block_list_table]
-       mov     x12, x3
+       umull   x8, w0, w6
        mov     x3, x2
-       ldr     x8, [x9]
-       add     x4, x8, x7
+       ldr     x9, [x5,-56]
+       add     x4, x9, x8
        strh    w1, [x4,2]
-       strh    w1, [x8,x7]
-       ldr     x10, [x2, #:got_lo12:p_free_data_block_list_head]
-       ldr     x1, [x10]
-       cbnz    x1, .L446
-       str     x4, [x10]
-       b       .L445
-.L446:
-       adrp    x2, :got:p_erase_count_table
-       ldr     x10, [x9]
-       mov     x9, -6148914691236517206
-       ldr     x2, [x2, #:got_lo12:p_erase_count_table]
-       ldr     x11, [x2]
+       strh    w1, [x9,x8]
+       ldr     x1, [x5,-16]
+       cbnz    x1, .L486
+       str     x4, [x5,-16]
+       b       .L485
+.L486:
+       ldr     x11, [x5,-80]
        ubfiz   x2, x0, 1, 16
-       ldrh    w13, [x11,x2]
+       ldr     x10, [x5,-56]
+       mov     x5, -6148914691236517206
+       ldrh    w12, [x11,x2]
        sub     x2, x1, x10
        asr     x2, x2, 1
-       madd    x2, x9, x2, x2
+       madd    x2, x5, x2, x2
        uxth    w2, w2
-.L449:
-       ubfiz   x9, x2, 1, 16
-       ldrh    w9, [x11,x9]
-       cmp     w9, w13
-       bcs     .L447
-       ldrh    w9, [x1]
-       cmp     w9, w6
-       bne     .L448
+.L489:
+       ubfiz   x5, x2, 1, 16
+       ldrh    w5, [x11,x5]
+       cmp     w5, w12
+       bcs     .L487
+       ldrh    w5, [x1]
+       cmp     w5, w7
+       bne     .L488
        strh    w2, [x4,2]
        strh    w0, [x1]
-       b       .L445
-.L448:
-       umull   x1, w9, w5
-       mov     w2, w9
+       b       .L485
+.L488:
+       umull   x1, w5, w6
+       mov     w2, w5
        add     x1, x10, x1
-       b       .L449
-.L447:
+       b       .L489
+.L487:
        ldrh    w5, [x1,2]
        strh    w5, [x4,2]
-       strh    w2, [x8,x7]
-       ldr     x2, [x3, #:got_lo12:p_free_data_block_list_head]
-       ldr     x3, [x2]
+       strh    w2, [x9,x8]
+       add     x2, x3, :lo12:.LANCHOR2
+       ldr     x3, [x2,-16]
        cmp     x1, x3
-       bne     .L450
+       bne     .L490
        strh    w0, [x1,2]
-       str     x4, [x2]
-       b       .L445
-.L450:
-       ldrh    w2, [x1,2]
-       mov     w3, 6
-       umull   x2, w2, w3
-       ldr     x3, [x12, #:got_lo12:p_data_block_list_table]
-       ldr     x3, [x3]
-       strh    w0, [x3,x2]
+       str     x4, [x2,-16]
+       b       .L485
+.L490:
+       ldrh    w3, [x1,2]
+       mov     w4, 6
+       ldr     x2, [x2,-56]
+       umull   x3, w3, w4
+       strh    w0, [x2,x3]
        strh    w0, [x1,2]
-.L445:
+.L485:
        mov     w0, 0
        ret
        .size   insert_free_list, .-insert_free_list
@@ -3532,11 +3647,11 @@ INSERT_FREE_LIST:
        stp     x29, x30, [sp, -16]!
        add     x29, sp, 0
        bl      insert_free_list
-       adrp    x0, :got:g_num_free_superblocks
-       ldr     x0, [x0, #:got_lo12:g_num_free_superblocks]
-       ldrh    w1, [x0]
+       adrp    x0, .LANCHOR2
+       add     x0, x0, :lo12:.LANCHOR2
+       ldrh    w1, [x0,-8]
        add     w1, w1, 1
-       strh    w1, [x0]
+       strh    w1, [x0,-8]
        ldp     x29, x30, [sp], 16
        ret
        .size   INSERT_FREE_LIST, .-INSERT_FREE_LIST
@@ -3544,48 +3659,48 @@ INSERT_FREE_LIST:
        .global List_remove_node
        .type   List_remove_node, %function
 List_remove_node:
-       adrp    x6, :got:p_data_block_list_table
+       adrp    x6, .LANCHOR2
        uxth    w1, w1
+       add     x6, x6, :lo12:.LANCHOR2
        mov     w5, 6
        ldr     x3, [x0]
        mov     w7, 65535
-       ldr     x6, [x6, #:got_lo12:p_data_block_list_table]
        umull   x1, w1, w5
-       ldr     x2, [x6]
+       ldr     x2, [x6,-56]
        add     x4, x2, x1
        cmp     x4, x3
-       bne     .L453
+       bne     .L493
        ldrh    w3, [x2,x1]
        cmp     w3, w7
-       bne     .L454
+       bne     .L494
        str     xzr, [x0]
-       b       .L455
-.L454:
+       b       .L495
+.L494:
        umull   x3, w3, w5
        add     x3, x2, x3
        str     x3, [x0]
        mov     w0, -1
        strh    w0, [x3,2]
-       b       .L455
-.L453:
+       b       .L495
+.L493:
        ldrh    w0, [x2,x1]
        ldrh    w3, [x4,2]
        cmp     w0, w7
-       bne     .L456
+       bne     .L496
        umull   x3, w3, w5
        mov     w0, -1
        strh    w0, [x2,x3]
-       b       .L455
-.L456:
+       b       .L495
+.L496:
        umull   x0, w0, w5
        add     x0, x2, x0
        strh    w3, [x0,2]
        ldrh    w3, [x4,2]
-       ldr     x0, [x6]
+       ldr     x0, [x6,-56]
        ldrh    w7, [x2,x1]
        umull   x3, w3, w5
        strh    w7, [x0,x3]
-.L455:
+.L495:
        mov     w0, -1
        strh    w0, [x2,x1]
        strh    w0, [x4,2]
@@ -3602,15 +3717,14 @@ List_pop_index_node:
        str     x19, [sp,16]
        mov     w19, 65535
        ldr     x2, [x0]
-       cbz     x2, .L458
-       adrp    x3, :got:p_data_block_list_table
+       cbz     x2, .L498
+       adrp    x3, .LANCHOR2-56
        mov     w5, w19
        mov     w6, 6
-       ldr     x3, [x3, #:got_lo12:p_data_block_list_table]
-       ldr     x4, [x3]
-.L459:
-       cbnz    w1, .L460
-.L462:
+       ldr     x4, [x3,#:lo12:.LANCHOR2-56]
+.L499:
+       cbnz    w1, .L500
+.L502:
        sub     x2, x2, x4
        mov     x1, -6148914691236517206
        asr     x2, x2, 1
@@ -3618,17 +3732,17 @@ List_pop_index_node:
        uxth    w19, w2
        mov     w1, w19
        bl      List_remove_node
-       b       .L458
-.L460:
+       b       .L498
+.L500:
        ldrh    w3, [x2]
        cmp     w3, w5
-       beq     .L462
+       beq     .L502
        umull   x3, w3, w6
        sub     w1, w1, #1
        add     x2, x4, x3
        uxth    w1, w1
-       b       .L459
-.L458:
+       b       .L499
+.L498:
        mov     w0, w19
        ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 32
@@ -3649,36 +3763,31 @@ List_pop_head_node:
        .global List_get_gc_head_node
        .type   List_get_gc_head_node, %function
 List_get_gc_head_node:
-       uxth    w2, w0
-       adrp    x0, :got:p_data_block_list_head
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_head]
-       ldr     x1, [x0]
+       adrp    x2, .LANCHOR2
+       uxth    w3, w0
+       add     x2, x2, :lo12:.LANCHOR2
        mov     w0, 65535
-       cbz     x1, .L466
-       adrp    x0, :got:p_data_block_list_table
-       mov     w4, 65535
+       ldr     x1, [x2,-48]
+       cbz     x1, .L511
+       ldr     x4, [x2,-56]
        mov     w5, 6
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_table]
-       ldr     x0, [x0]
-.L467:
-       cbnz    w2, .L468
-.L470:
-       sub     x1, x1, x0
+.L507:
+       cbz     w3, .L508
+       ldrh    w2, [x1]
+       cmp     w2, w0
+       beq     .L511
+       umull   x2, w2, w5
+       sub     w3, w3, #1
+       add     x1, x4, x2
+       uxth    w3, w3
+       b       .L507
+.L508:
+       sub     x1, x1, x4
        mov     x0, -6148914691236517206
        asr     x1, x1, 1
        madd    x1, x0, x1, x1
        uxth    w0, w1
-       b       .L466
-.L468:
-       ldrh    w3, [x1]
-       cmp     w3, w4
-       beq     .L470
-       umull   x3, w3, w5
-       sub     w2, w2, #1
-       add     x1, x0, x3
-       uxth    w2, w2
-       b       .L467
-.L466:
+.L511:
        ret
        .size   List_get_gc_head_node, .-List_get_gc_head_node
        .align  2
@@ -3687,68 +3796,57 @@ List_get_gc_head_node:
 List_update_data_list:
        stp     x29, x30, [sp, -32]!
        add     x29, sp, 0
-       str     x19, [sp,16]
-       uxth    w19, w0
-       adrp    x0, :got:g_active_superblock
-       ldr     x0, [x0, #:got_lo12:g_active_superblock]
-       ldrh    w0, [x0]
-       cmp     w0, w19
-       beq     .L473
-       adrp    x0, :got:g_buffer_superblock
-       ldr     x0, [x0, #:got_lo12:g_buffer_superblock]
-       ldrh    w0, [x0]
-       cmp     w0, w19
-       beq     .L473
-       adrp    x0, :got:g_gc_temp_superblock
-       ldr     x0, [x0, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w0, [x0]
-       cmp     w0, w19
-       beq     .L473
-       adrp    x0, :got:p_data_block_list_table
-       mov     w3, 6
-       umull   x4, w19, w3
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_table]
-       ldr     x5, [x0]
-       adrp    x0, :got:p_data_block_list_head
-       add     x4, x5, x4
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_head]
-       ldr     x1, [x0]
-       cmp     x4, x1
-       beq     .L473
-       adrp    x1, :got:p_valid_page_count_table
-       ldrh    w2, [x4,4]
-       ldr     x1, [x1, #:got_lo12:p_valid_page_count_table]
-       ldr     x6, [x1]
-       ubfiz   x1, x19, 1, 16
-       ldrh    w1, [x6,x1]
-       mul     w2, w1, w2
-       ldrh    w1, [x4,2]
-       mov     x4, -6148914691236517206
-       cmp     w2, wzr
-       csinv   w2, w2, wzr, ne
-       umull   x3, w1, w3
-       asr     x1, x3, 1
-       add     x3, x5, x3
-       madd    x1, x4, x1, x1
-       ldrh    w3, [x3,4]
-       ldrh    w1, [x6,x1,lsl 1]
-       mul     w1, w1, w3
+       stp     x19, x20, [sp,16]
+       uxth    w20, w0
+       adrp    x0, .LANCHOR2
+       add     x19, x0, :lo12:.LANCHOR2
+       ldrh    w0, [x0,#:lo12:.LANCHOR2]
+       cmp     w0, w20
+       beq     .L513
+       ldrh    w0, [x19,48]
+       cmp     w0, w20
+       beq     .L513
+       ldrh    w0, [x19,96]
+       cmp     w0, w20
+       beq     .L513
+       mov     w2, 6
+       ldr     x4, [x19,-56]
+       ldr     x0, [x19,-48]
+       umull   x3, w20, w2
+       add     x3, x4, x3
+       cmp     x3, x0
+       beq     .L513
+       ldr     x5, [x19,-40]
+       ubfiz   x0, x20, 1, 16
+       ldrh    w1, [x3,4]
+       ldrh    w0, [x5,x0]
+       mul     w1, w0, w1
+       ldrh    w0, [x3,2]
+       mov     x3, -6148914691236517206
        cmp     w1, wzr
        csinv   w1, w1, wzr, ne
-       cmp     w2, w1
-       bcs     .L473
-       mov     w1, w19
+       umull   x2, w0, w2
+       asr     x0, x2, 1
+       add     x2, x4, x2
+       madd    x0, x3, x0, x0
+       ldrh    w2, [x2,4]
+       ldrh    w0, [x5,x0,lsl 1]
+       mul     w0, w0, w2
+       cmp     w0, wzr
+       csinv   w0, w0, wzr, ne
+       cmp     w1, w0
+       bcs     .L513
+       sub     x0, x19, #48
+       mov     w1, w20
        bl      List_remove_node
-       adrp    x0, :got:g_num_data_superblocks
-       ldr     x0, [x0, #:got_lo12:g_num_data_superblocks]
-       ldrh    w1, [x0]
-       sub     w1, w1, #1
-       strh    w1, [x0]
-       mov     w0, w19
+       ldrh    w0, [x19,-24]
+       sub     w0, w0, #1
+       strh    w0, [x19,-24]
+       mov     w0, w20
        bl      INSERT_DATA_LIST
-.L473:
+.L513:
        mov     w0, 0
-       ldr     x19, [sp,16]
+       ldp     x19, x20, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
        .size   List_update_data_list, .-List_update_data_list
@@ -3763,17 +3861,17 @@ ftl_map_blk_alloc_new_blk:
        mov     w20, 0
        ldrh    w2, [x0,10]
        ldr     x1, [x0,16]
-.L477:
+.L517:
        cmp     w20, w2
-       beq     .L480
+       beq     .L520
        mov     x22, x1
        ldrh    w21, [x1],2
-       cbnz    w21, .L478
+       cbnz    w21, .L518
        mov     x19, x0
        bl      FtlFreeSysBlkQueueOut
        uxth    w1, w0
        strh    w0, [x22]
-       cbz     w1, .L480
+       cbz     w1, .L520
        ldr     w0, [x19,48]
        strh    w21, [x19,2]
        add     w0, w0, 1
@@ -3782,12 +3880,12 @@ ftl_map_blk_alloc_new_blk:
        strh    w20, [x19]
        add     w0, w0, 1
        strh    w0, [x19,8]
-       b       .L480
-.L478:
+       b       .L520
+.L518:
        add     w20, w20, 1
        uxth    w20, w20
-       b       .L477
-.L480:
+       b       .L517
+.L520:
        mov     w0, 0
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
@@ -3798,164 +3896,194 @@ ftl_map_blk_alloc_new_blk:
        .global select_l2p_ram_region
        .type   select_l2p_ram_region, %function
 select_l2p_ram_region:
-       adrp    x0, :got:c_ftl_nand_l2pmap_ram_region_num
-       mov     x3, 0
-       mov     w4, 65535
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
-       ldrh    w2, [x0]
-       adrp    x0, :got:p_l2p_ram_map
-       ldr     x0, [x0, #:got_lo12:p_l2p_ram_map]
-       ldr     x1, [x0]
-.L484:
-       uxth    w0, w3
+       adrp    x0, .LANCHOR0+2066
+       mov     x4, 0
+       mov     w5, 65535
+       ldrh    w2, [x0,#:lo12:.LANCHOR0+2066]
+       adrp    x0, .LANCHOR2
+       add     x1, x0, :lo12:.LANCHOR2
+       mov     x3, x0
+       ldr     x1, [x1,144]
+.L524:
+       uxth    w0, w4
        cmp     w0, w2
-       bcs     .L500
-       add     x3, x3, 1
-       add     x5, x1, x3, lsl 4
-       ldrh    w5, [x5,-16]
-       cmp     w5, w4
-       bne     .L484
-       b       .L485
-.L500:
+       bcs     .L540
+       add     x4, x4, 1
+       add     x6, x1, x4, lsl 4
+       ldrh    w6, [x6,-16]
+       cmp     w6, w5
+       bne     .L524
+       b       .L525
+.L540:
        mov     w0, w2
-       mov     x3, 0
-       mov     w6, -2147483648
-.L487:
-       uxth    w5, w3
-       cmp     w5, w2
-       bcs     .L501
-       add     x4, x1, x3, lsl 4
-       ldr     w4, [x4,4]
-       tbnz    w4, #31, .L496
-       cmp     w4, w6
-       bcc     .L488
-.L496:
-       mov     w4, w6
-       mov     w5, w0
-.L488:
-       add     x3, x3, 1
-       mov     w6, w4
-       mov     w0, w5
-       b       .L487
-.L501:
+       mov     x4, 0
+       mov     w7, -2147483648
+.L527:
+       uxth    w6, w4
+       cmp     w6, w2
+       bcs     .L541
+       add     x5, x1, x4, lsl 4
+       ldr     w5, [x5,4]
+       tbnz    w5, #31, .L536
+       cmp     w5, w7
+       bcc     .L528
+.L536:
+       mov     w5, w7
+       mov     w6, w0
+.L528:
+       add     x4, x4, 1
+       mov     w7, w5
+       mov     w0, w6
+       b       .L527
+.L541:
        cmp     w0, w2
-       bcc     .L485
-       adrp    x0, :got:g_l2p_last_update_region_id
+       bcc     .L525
+       add     x0, x3, :lo12:.LANCHOR2
        add     x1, x1, 4
        mov     w4, -1
        mov     w3, 0
-       ldr     x0, [x0, #:got_lo12:g_l2p_last_update_region_id]
-       ldrh    w5, [x0]
+       ldrh    w5, [x0,152]
        mov     w0, w2
-.L491:
+.L531:
        cmp     w3, w2
-       beq     .L485
+       beq     .L525
        ldr     w7, [x1]
        cmp     w7, w4
-       bcs     .L492
+       bcs     .L532
        ldrh    w6, [x1,-4]
        cmp     w6, w5
        csel    w4, w4, w7, eq
        cmp     w6, w5
        csel    w0, w0, w3, eq
-.L492:
+.L532:
        add     w3, w3, 1
        add     x1, x1, 16
        uxth    w3, w3
-       b       .L491
-.L485:
+       b       .L531
+.L525:
        ret
        .size   select_l2p_ram_region, .-select_l2p_ram_region
        .align  2
        .global FtlUpdateVaildLpn
        .type   FtlUpdateVaildLpn, %function
 FtlUpdateVaildLpn:
-       adrp    x1, :got:FtlUpdateVaildLpnCount
-       ldr     x3, [x1, #:got_lo12:FtlUpdateVaildLpnCount]
-       ldrh    w2, [x3]
-       cbnz    w0, .L503
+       adrp    x1, .LANCHOR2
+       add     x3, x1, :lo12:.LANCHOR2
+       ldrh    w2, [x3,154]
+       cbnz    w0, .L543
        cmp     w2, 4
-       bhi     .L503
+       bhi     .L543
        add     w2, w2, 1
-       strh    w2, [x3]
-       b       .L502
-.L503:
-       ldr     x1, [x1, #:got_lo12:FtlUpdateVaildLpnCount]
+       strh    w2, [x3,154]
+       b       .L542
+.L543:
+       adrp    x2, .LANCHOR0+1960
+       add     x0, x1, :lo12:.LANCHOR2
        mov     w7, 65535
-       strh    wzr, [x1]
-       adrp    x1, :got:g_VaildLpn
-       ldr     x0, [x1, #:got_lo12:g_VaildLpn]
-       str     wzr, [x0]
-       adrp    x0, :got:c_ftl_nand_data_blks_per_plane
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w5, [x0]
-       adrp    x0, :got:p_valid_page_count_table
-       ldr     x0, [x0, #:got_lo12:p_valid_page_count_table]
-       ldr     x6, [x0]
+       ldrh    w5, [x2,#:lo12:.LANCHOR0+1960]
+       strh    wzr, [x0,154]
+       str     wzr, [x0,156]
+       ldr     x6, [x0,-40]
        mov     x0, 0
-.L504:
+.L544:
        cmp     w5, w0, uxth
-       bls     .L502
+       bls     .L542
        ldrh    w4, [x6,x0,lsl 1]
        cmp     w4, w7
-       beq     .L505
-       ldr     x3, [x1, #:got_lo12:g_VaildLpn]
-       ldr     w2, [x3]
+       beq     .L545
+       add     x3, x1, :lo12:.LANCHOR2
+       ldr     w2, [x3,156]
        add     w2, w4, w2
-       str     w2, [x3]
-.L505:
+       str     w2, [x3,156]
+.L545:
        add     x0, x0, 1
-       b       .L504
-.L502:
+       b       .L544
+.L542:
        ret
        .size   FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
        .align  2
+       .global ftl_set_blk_mode
+       .type   ftl_set_blk_mode, %function
+ftl_set_blk_mode:
+       stp     x29, x30, [sp, -16]!
+       uxth    w0, w0
+       add     x29, sp, 0
+       cbz     w1, .L549
+       bl      ftl_set_blk_mode.part.8
+       b       .L548
+.L549:
+       adrp    x1, .LANCHOR0
+       ubfx    x2, x0, 5, 11
+       lsl     x2, x2, 2
+       ldr     x3, [x1,#:lo12:.LANCHOR0]
+       mov     w1, 1
+       lsl     w0, w1, w0
+       ldr     w1, [x3,x2]
+       bic     w0, w1, w0
+       str     w0, [x3,x2]
+.L548:
+       ldp     x29, x30, [sp], 16
+       ret
+       .size   ftl_set_blk_mode, .-ftl_set_blk_mode
+       .align  2
+       .global ftl_get_blk_mode
+       .type   ftl_get_blk_mode, %function
+ftl_get_blk_mode:
+       adrp    x1, .LANCHOR0
+       uxth    w0, w0
+       ubfx    x2, x0, 5, 11
+       ldr     x1, [x1,#:lo12:.LANCHOR0]
+       ldr     w1, [x1,x2,lsl 2]
+       lsr     w0, w1, w0
+       and     w0, w0, 1
+       ret
+       .size   ftl_get_blk_mode, .-ftl_get_blk_mode
+       .align  2
        .global ftl_sb_update_avl_pages
        .type   ftl_sb_update_avl_pages, %function
 ftl_sb_update_avl_pages:
-       adrp    x3, :got:c_ftl_nand_planes_num
-       strh    wzr, [x0,4]
+       adrp    x3, .LANCHOR0
        uxth    w1, w1
+       add     x4, x3, :lo12:.LANCHOR0
        uxth    w2, w2
-       mov     w5, 65535
-       ldr     x3, [x3, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w3, [x3]
-.L509:
-       cmp     w2, w3
-       bcs     .L515
-       add     x4, x0, x2, sxtw 1
-       ldrh    w4, [x4,16]
-       cmp     w4, w5
-       beq     .L510
-       ldrh    w4, [x0,4]
-       add     w4, w4, 1
-       strh    w4, [x0,4]
-.L510:
+       strh    wzr, [x0,4]
+       mov     w6, 65535
+       ldrh    w4, [x4,1952]
+.L553:
+       cmp     w2, w4
+       bcs     .L559
+       add     x5, x0, x2, sxtw 1
+       ldrh    w5, [x5,16]
+       cmp     w5, w6
+       beq     .L554
+       ldrh    w5, [x0,4]
+       add     w5, w5, 1
+       strh    w5, [x0,4]
+.L554:
        add     w2, w2, 1
        uxth    w2, w2
-       b       .L509
-.L515:
-       adrp    x2, :got:c_ftl_nand_page_pre_blk
-       mov     x4, x0
+       b       .L553
+.L559:
+       add     x3, x3, :lo12:.LANCHOR0
        mov     w6, 65535
-       add     x3, x0, x3, uxth 1
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w5, [x2]
-.L512:
-       cmp     x4, x3
-       beq     .L516
-       ldrh    w2, [x4,16]
+       add     x4, x0, x4, uxth 1
+       ldrh    w5, [x3,2026]
+       mov     x3, x0
+.L556:
+       cmp     x3, x4
+       beq     .L560
+       ldrh    w2, [x3,16]
        cmp     w2, w6
-       beq     .L513
+       beq     .L557
        ldrh    w2, [x0,4]
        add     w2, w5, w2
        sub     w2, w2, #1
        sub     w2, w2, w1
        strh    w2, [x0,4]
-.L513:
-       add     x4, x4, 2
-       b       .L512
-.L516:
+.L557:
+       add     x3, x3, 2
+       b       .L556
+.L560:
        ret
        .size   ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
        .align  2
@@ -3965,65 +4093,63 @@ make_superblock:
        stp     x29, x30, [sp, -80]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       stp     x23, x24, [sp,48]
        stp     x21, x22, [sp,32]
-       str     x25, [sp,64]
+       stp     x23, x24, [sp,48]
+       stp     x25, x26, [sp,64]
        mov     x19, x0
        strh    wzr, [x0,4]
-       mov     w20, 0
        strb    wzr, [x0,7]
-       adrp    x22, :got:c_ftl_nand_planes_num
-       adrp    x24, :got:p_plane_order_table
-       mov     w23, -1
-.L518:
-       ldr     x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       cmp     w0, w20
-       bls     .L525
-       ldr     x0, [x24, #:got_lo12:p_plane_order_table]
-       add     x21, x19, x20, uxth 1
+       adrp    x0, .LANCHOR0
+       add     x1, x0, :lo12:.LANCHOR0
+       add     x22, x19, 16
+       mov     x21, 0
+       mov     x20, x0
+       mov     x23, x1
+       mov     w25, -1
+       ldrh    w24, [x1,1952]
+.L562:
+       cmp     w24, w21, uxth
+       bls     .L569
+       add     x0, x23, 1984
        ldrh    w1, [x19]
-       ldrb    w0, [x0,w20,sxtw]
+       ldrb    w0, [x0,x21]
        bl      V2P_block
-       strh    w23, [x21,16]
-       mov     w25, w0
+       strh    w25, [x22]
+       mov     w26, w0
        bl      FtlBbmIsBadBlock
-       cbnz    w0, .L519
-       strh    w25, [x21,16]
+       cbnz    w0, .L563
+       strh    w26, [x22]
        ldrb    w0, [x19,7]
        add     w0, w0, 1
        strb    w0, [x19,7]
-.L519:
-       add     w20, w20, 1
-       uxth    w20, w20
-       b       .L518
-.L525:
-       adrp    x1, :got:c_ftl_nand_page_pre_blk
-       ldrb    w0, [x19,7]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
+.L563:
+       add     x21, x21, 1
+       add     x22, x22, 2
+       b       .L562
+.L569:
+       add     x0, x20, :lo12:.LANCHOR0
+       ldrb    w1, [x19,7]
        strb    wzr, [x19,9]
-       ldrh    w1, [x1]
-       mul     w0, w0, w1
+       ldrh    w0, [x0,2026]
+       mul     w0, w1, w0
        strh    w0, [x19,4]
-       adrp    x0, :got:g_inkDie_check_enable
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       ldr     w0, [x0]
-       cbz     w0, .L521
-       adrp    x0, :got:p_erase_count_table
+       adrp    x0, .LANCHOR2
+       add     x0, x0, :lo12:.LANCHOR2
+       ldr     w1, [x0,160]
+       cbz     w1, .L565
        ldrh    w1, [x19]
-       ldr     x0, [x0, #:got_lo12:p_erase_count_table]
-       ldr     x0, [x0]
+       ldr     x0, [x0,-80]
        ldrh    w0, [x0,x1,lsl 1]
        cmp     w0, 59
-       bhi     .L521
+       bhi     .L565
        mov     w0, 1
        strb    w0, [x19,9]
-.L521:
+.L565:
        mov     w0, 0
-       ldr     x25, [sp,64]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
+       ldp     x25, x26, [sp,64]
        ldp     x29, x30, [sp], 80
        ret
        .size   make_superblock, .-make_superblock
@@ -4032,48 +4158,44 @@ make_superblock:
        .type   update_multiplier_value, %function
 update_multiplier_value:
        stp     x29, x30, [sp, -64]!
+       adrp    x1, .LANCHOR0
+       add     x1, x1, :lo12:.LANCHOR0
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       mov     w19, 0
-       uxth    w20, w0
        stp     x21, x22, [sp,32]
        stp     x23, x24, [sp,48]
-       mov     w21, w19
-       adrp    x22, :got:c_ftl_nand_planes_num
-       adrp    x23, :got:p_plane_order_table
-       adrp    x24, :got:c_ftl_nand_page_pre_blk
-.L527:
-       ldr     x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       cmp     w0, w21
-       bls     .L534
-       ldr     x0, [x23, #:got_lo12:p_plane_order_table]
-       mov     w1, w20
-       ldrb    w0, [x0,w21,sxtw]
+       mov     x22, 0
+       uxth    w21, w0
+       ldrh    w23, [x1,1952]
+       mov     w19, w22
+       ldrh    w24, [x1,2026]
+       mov     x20, x1
+.L571:
+       cmp     w23, w22, uxth
+       bls     .L578
+       add     x0, x20, 1984
+       mov     w1, w21
+       ldrb    w0, [x0,x22]
        bl      V2P_block
        bl      FtlBbmIsBadBlock
-       cbnz    w0, .L528
-       ldr     x0, [x24, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w0, [x0]
-       add     w19, w19, w0
+       cbnz    w0, .L572
+       add     w19, w19, w24
        uxth    w19, w19
-.L528:
-       add     w21, w21, 1
-       uxth    w21, w21
-       b       .L527
-.L534:
-       cbz     w19, .L530
+.L572:
+       add     x22, x22, 1
+       b       .L571
+.L578:
+       cbz     w19, .L574
        mov     w0, 32768
        sdiv    w19, w0, w19
-.L530:
+.L574:
        mov     w0, 6
-       umull   x20, w20, w0
-       adrp    x0, :got:p_data_block_list_table
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_table]
-       ldr     x0, [x0]
-       add     x20, x0, x20
+       umull   x21, w21, w0
+       adrp    x0, .LANCHOR2-56
+       ldr     x0, [x0,#:lo12:.LANCHOR2-56]
+       add     x21, x0, x21
        mov     w0, 0
-       strh    w19, [x20,4]
+       strh    w19, [x21,4]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -4084,75 +4206,66 @@ update_multiplier_value:
        .global GetFreeBlockMinEraseCount
        .type   GetFreeBlockMinEraseCount, %function
 GetFreeBlockMinEraseCount:
-       adrp    x0, :got:p_free_data_block_list_head
-       ldr     x0, [x0, #:got_lo12:p_free_data_block_list_head]
-       ldr     x1, [x0]
+       adrp    x2, .LANCHOR2
+       add     x2, x2, :lo12:.LANCHOR2
+       ldr     x1, [x2,-16]
        mov     w0, w1
-       cbz     x1, .L536
-       adrp    x0, :got:p_data_block_list_table
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_table]
-       ldr     x0, [x0]
+       cbz     x1, .L580
+       ldr     x0, [x2,-56]
        sub     x1, x1, x0
        mov     x0, -6148914691236517206
        asr     x1, x1, 1
        madd    x1, x0, x1, x1
-       adrp    x0, :got:p_erase_count_table
+       ldr     x0, [x2,-80]
        and     x1, x1, 65535
-       ldr     x0, [x0, #:got_lo12:p_erase_count_table]
-       ldr     x0, [x0]
        ldrh    w0, [x0,x1,lsl 1]
-.L536:
+.L580:
        ret
        .size   GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
        .align  2
        .global GetFreeBlockMaxEraseCount
        .type   GetFreeBlockMaxEraseCount, %function
 GetFreeBlockMaxEraseCount:
-       uxth    w3, w0
-       adrp    x0, :got:p_free_data_block_list_head
-       ldr     x0, [x0, #:got_lo12:p_free_data_block_list_head]
-       ldr     x1, [x0]
+       adrp    x2, .LANCHOR2
+       uxth    w4, w0
+       add     x5, x2, :lo12:.LANCHOR2
+       ldr     x1, [x5,-16]
        mov     w0, w1
-       cbz     x1, .L539
-       adrp    x0, :got:g_num_free_superblocks
-       mov     w5, 6
-       mov     w6, 65535
-       ldr     x0, [x0, #:got_lo12:g_num_free_superblocks]
-       ldrh    w2, [x0]
+       cbz     x1, .L583
+       ldrh    w3, [x5,-8]
        mov     w0, 7
-       mul     w2, w2, w0
-       adrp    x0, :got:p_data_block_list_table
-       asr     w2, w2, 3
-       cmp     w3, w2
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_table]
-       csel    w3, w2, w3, gt
-       mov     x2, -6148914691236517206
-       ldr     x0, [x0]
+       mov     w6, 6
+       mov     w7, 65535
+       mul     w3, w3, w0
+       ldr     x0, [x5,-56]
+       asr     w3, w3, 3
+       cmp     w4, w3
        sub     x1, x1, x0
+       csel    w4, w3, w4, gt
        asr     x1, x1, 1
-       madd    x1, x2, x1, x1
-       mov     w2, 0
+       mov     x3, -6148914691236517206
+       madd    x1, x3, x1, x1
+       mov     w3, 0
        uxth    w1, w1
-.L541:
-       cmp     w2, w3
-       beq     .L544
-       umull   x4, w1, w5
-       ldrh    w4, [x0,x4]
-       cmp     w4, w6
-       bne     .L542
-.L544:
-       adrp    x0, :got:p_erase_count_table
+.L585:
+       cmp     w3, w4
+       beq     .L588
+       umull   x5, w1, w6
+       ldrh    w5, [x0,x5]
+       cmp     w5, w7
+       bne     .L586
+.L588:
+       add     x2, x2, :lo12:.LANCHOR2
        ubfiz   x1, x1, 1, 16
-       ldr     x0, [x0, #:got_lo12:p_erase_count_table]
-       ldr     x0, [x0]
+       ldr     x0, [x2,-80]
        ldrh    w0, [x0,x1]
-       b       .L539
-.L542:
-       add     w2, w2, 1
-       mov     w1, w4
-       uxth    w2, w2
-       b       .L541
-.L539:
+       b       .L583
+.L586:
+       add     w3, w3, 1
+       mov     w1, w5
+       uxth    w3, w3
+       b       .L585
+.L583:
        ret
        .size   GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
        .align  2
@@ -4160,627 +4273,538 @@ GetFreeBlockMaxEraseCount:
        .type   FtlPrintInfo2buf, %function
 FtlPrintInfo2buf:
        stp     x29, x30, [sp, -128]!
-       adrp    x1, .LC2
        add     x29, sp, 0
-       add     x1, x1, :lo12:.LC2
-       stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
        stp     x23, x24, [sp,48]
-       mov     x22, x0
+       adrp    x24, __stack_chk_guard
+       mov     x23, x0
        stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
-       bl      strcpy
-       add     x20, x22, 12
-       adrp    x2, :got:gNandPhyInfo
+       adrp    x26, .LANCHOR0
+       ldr     x1, [x24,#:lo12:__stack_chk_guard]
+       add     x26, x26, :lo12:.LANCHOR0
+       str     x1, [x29,120]
        adrp    x1, .LC3
-       mov     x0, x20
        add     x1, x1, :lo12:.LC3
-       ldr     x2, [x2, #:got_lo12:gNandPhyInfo]
-       ldr     w2, [x2]
-       bl      sprintf
-       add     x20, x20, x0, sxtw
-       adrp    x2, :got:DeviceCapacity
+       stp     x19, x20, [sp,16]
+       stp     x21, x22, [sp,32]
+       stp     x27, x28, [sp,80]
+       bl      strcpy
+       add     x20, x23, 12
+       ldr     w2, [x26,168]
        adrp    x1, .LC4
        mov     x0, x20
        add     x1, x1, :lo12:.LC4
-       ldr     x2, [x2, #:got_lo12:DeviceCapacity]
-       ldr     w2, [x2]
        bl      sprintf
        add     x20, x20, x0, sxtw
-       adrp    x0, :got:gFtlInitStatus
-       ldr     x0, [x0, #:got_lo12:gFtlInitStatus]
-       ldr     w0, [x0]
-       cmp     w0, 1
-       beq     .L547
-       sub     w0, w20, w22
-       b       .L548
-.L547:
-       add     x0, x29, 112
-       add     x1, x29, 116
-       add     x2, x29, 120
-       add     x3, x29, 124
-       adrp    x19, :got:gBbtInfo
-       adrp    x25, :got:g_num_free_superblocks
-       bl      NandcGetTimeCfg
-       adrp    x23, :got:p_valid_page_count_table
-       ldr     w4, [x29,120]
        adrp    x1, .LC5
-       ldr     w5, [x29,124]
+       ldr     w2, [x26,2044]
        mov     x0, x20
-       ldr     w3, [x29,116]
        add     x1, x1, :lo12:.LC5
-       ldr     w2, [x29,112]
-       adrp    x26, :got:g_sys_ext_data
        bl      sprintf
-       add     x21, x20, x0, sxtw
+       add     x20, x20, x0, sxtw
+       adrp    x0, .LANCHOR1+532
+       ldr     w0, [x0,#:lo12:.LANCHOR1+532]
+       cmp     w0, 1
+       beq     .L591
+       sub     w0, w20, w23
+       b       .L592
+.L591:
+       add     x0, x29, 104
+       add     x1, x29, 108
+       add     x2, x29, 112
+       add     x3, x29, 116
+       adrp    x25, .LANCHOR2
+       bl      NandcGetTimeCfg
+       add     x22, x25, :lo12:.LANCHOR2
+       ldr     w4, [x29,112]
        adrp    x1, .LC6
-       mov     x0, x21
+       ldr     w5, [x29,116]
        add     x1, x1, :lo12:.LC6
-       add     x21, x21, 10
-       adrp    x20, :got:g_sys_save_data
-       bl      strcpy
-       adrp    x2, :got:g_MaxLpn
+       ldr     w3, [x29,108]
+       mov     x0, x20
+       ldr     w2, [x29,104]
+       bl      sprintf
+       add     x21, x20, x0, sxtw
        adrp    x1, .LC7
        mov     x0, x21
        add     x1, x1, :lo12:.LC7
-       ldr     x2, [x2, #:got_lo12:g_MaxLpn]
-       ldr     w2, [x2]
-       bl      sprintf
-       add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_VaildLpn
+       add     x21, x21, 10
+       bl      strcpy
+       ldr     w2, [x26,2104]
        adrp    x1, .LC8
        mov     x0, x21
        add     x1, x1, :lo12:.LC8
-       ldr     x2, [x2, #:got_lo12:g_VaildLpn]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_totle_read_page_count
+       ldr     w2, [x22,156]
        adrp    x1, .LC9
        mov     x0, x21
        add     x1, x1, :lo12:.LC9
-       ldr     x2, [x2, #:got_lo12:g_totle_read_page_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_totle_discard_page_count
+       ldr     w2, [x22,164]
        adrp    x1, .LC10
        mov     x0, x21
        add     x1, x1, :lo12:.LC10
-       ldr     x2, [x2, #:got_lo12:g_totle_discard_page_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_totle_write_page_count
+       ldr     w2, [x22,168]
        adrp    x1, .LC11
        mov     x0, x21
        add     x1, x1, :lo12:.LC11
-       ldr     x2, [x2, #:got_lo12:g_totle_write_page_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_totle_cache_write_count
+       ldr     w2, [x22,172]
        adrp    x1, .LC12
        mov     x0, x21
        add     x1, x1, :lo12:.LC12
-       ldr     x2, [x2, #:got_lo12:g_totle_cache_write_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_totle_l2p_write_count
+       ldr     w2, [x22,176]
        adrp    x1, .LC13
        mov     x0, x21
        add     x1, x1, :lo12:.LC13
-       ldr     x2, [x2, #:got_lo12:g_totle_l2p_write_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_totle_gc_page_count
+       ldr     w2, [x22,180]
        adrp    x1, .LC14
        mov     x0, x21
        add     x1, x1, :lo12:.LC14
-       ldr     x2, [x2, #:got_lo12:g_totle_gc_page_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x0, :got:g_totle_write_sector
+       ldr     w2, [x22,184]
        adrp    x1, .LC15
-       add     x1, x1, :lo12:.LC15
-       ldr     x0, [x0, #:got_lo12:g_totle_write_sector]
-       ldr     w2, [x0]
        mov     x0, x21
-       lsr     w2, w2, 11
+       add     x1, x1, :lo12:.LC15
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x0, :got:g_totle_read_sector
+       ldr     w2, [x22,188]
        adrp    x1, .LC16
-       add     x1, x1, :lo12:.LC16
-       ldr     x0, [x0, #:got_lo12:g_totle_read_sector]
-       ldr     w2, [x0]
        mov     x0, x21
+       add     x1, x1, :lo12:.LC16
        lsr     w2, w2, 11
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_GlobalSysVersion
+       ldr     w2, [x22,192]
        adrp    x1, .LC17
        mov     x0, x21
        add     x1, x1, :lo12:.LC17
-       ldr     x2, [x2, #:got_lo12:g_GlobalSysVersion]
-       ldr     w2, [x2]
+       lsr     w2, w2, 11
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_GlobalDataVersion
+       ldr     w2, [x22,196]
        adrp    x1, .LC18
-       add     x1, x1, :lo12:.LC18
        mov     x0, x21
-       ldr     x2, [x2, #:got_lo12:g_GlobalDataVersion]
-       ldr     w2, [x2]
+       add     x1, x1, :lo12:.LC18
        bl      sprintf
-       ldr     x19, [x19, #:got_lo12:gBbtInfo]
        add     x21, x21, x0, sxtw
-       ldrh    w2, [x19,6]
-       str     x2, [x29,104]
-       bl      FtlBbtCalcTotleCnt
-       uxth    w3, w0
-       ldr     x2, [x29,104]
+       ldr     w2, [x22,200]
        adrp    x1, .LC19
-       mov     x0, x21
        add     x1, x1, :lo12:.LC19
+       mov     x0, x21
        bl      sprintf
-       ldr     x25, [x25, #:got_lo12:g_num_free_superblocks]
-       adrp    x1, .LC20
        add     x21, x21, x0, sxtw
-       add     x1, x1, :lo12:.LC20
+       bl      FtlBbtCalcTotleCnt
+       uxth    w3, w0
+       ldrh    w2, [x26,2118]
+       adrp    x1, .LC20
        mov     x0, x21
-       ldrh    w2, [x25]
+       add     x1, x1, :lo12:.LC20
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_totle_mlc_erase_count
+       ldrh    w2, [x22,-8]
        adrp    x1, .LC21
        mov     x0, x21
        add     x1, x1, :lo12:.LC21
-       ldr     x2, [x2, #:got_lo12:g_totle_mlc_erase_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_totle_slc_erase_count
+       ldr     w2, [x22,204]
        adrp    x1, .LC22
        mov     x0, x21
        add     x1, x1, :lo12:.LC22
-       ldr     x2, [x2, #:got_lo12:g_totle_slc_erase_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_totle_avg_erase_count
+       ldr     w2, [x22,208]
        adrp    x1, .LC23
        mov     x0, x21
        add     x1, x1, :lo12:.LC23
-       ldr     x2, [x2, #:got_lo12:g_totle_avg_erase_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_totle_sys_slc_erase_count
+       ldr     w2, [x22,212]
        adrp    x1, .LC24
        mov     x0, x21
        add     x1, x1, :lo12:.LC24
-       ldr     x2, [x2, #:got_lo12:g_totle_sys_slc_erase_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_max_erase_count
+       ldr     w2, [x22,-72]
        adrp    x1, .LC25
        mov     x0, x21
        add     x1, x1, :lo12:.LC25
-       ldr     x2, [x2, #:got_lo12:g_max_erase_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_min_erase_count
+       ldr     w2, [x22,216]
        adrp    x1, .LC26
        mov     x0, x21
        add     x1, x1, :lo12:.LC26
-       ldr     x2, [x2, #:got_lo12:g_min_erase_count]
-       ldr     w2, [x2]
        bl      sprintf
-       ldr     x20, [x20, #:got_lo12:g_sys_save_data]
-       adrp    x1, .LC27
        add     x21, x21, x0, sxtw
-       add     x1, x1, :lo12:.LC27
+       ldr     w2, [x22,220]
+       adrp    x1, .LC27
        mov     x0, x21
-       ldrh    w2, [x20,30]
+       add     x1, x1, :lo12:.LC27
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrh    w2, [x20,28]
+       ldrh    w2, [x22,254]
        adrp    x1, .LC28
        mov     x0, x21
        add     x1, x1, :lo12:.LC28
-       adrp    x20, :got:g_gc_superblock
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:g_MaxLbaSector
+       ldrh    w2, [x22,252]
        adrp    x1, .LC29
        mov     x0, x21
        add     x1, x1, :lo12:.LC29
-       ldr     x2, [x2, #:got_lo12:g_MaxLbaSector]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:c_ftl_nand_init_sys_blks_per_plane
+       ldr     w2, [x26,2068]
        adrp    x1, .LC30
        mov     x0, x21
        add     x1, x1, :lo12:.LC30
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:c_ftl_nand_sys_blks_per_plane
+       ldr     w2, [x26,2060]
        adrp    x1, .LC31
        mov     x0, x21
        add     x1, x1, :lo12:.LC31
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:gSysFreeQueue
+       ldr     w2, [x26,1948]
        adrp    x1, .LC32
        mov     x0, x21
        add     x1, x1, :lo12:.LC32
-       ldr     x2, [x2, #:got_lo12:gSysFreeQueue]
-       ldrh    w2, [x2,6]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:c_ftl_nand_data_blks_per_plane
+       ldrh    w2, [x26,2214]
        adrp    x1, .LC33
        mov     x0, x21
        add     x1, x1, :lo12:.LC33
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:c_ftl_nand_data_op_blks_per_plane
+       ldrh    w2, [x26,1960]
        adrp    x1, .LC34
        mov     x0, x21
        add     x1, x1, :lo12:.LC34
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       ldrh    w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:c_ftl_nand_max_data_blks
+       ldrh    w2, [x22,272]
        adrp    x1, .LC35
        mov     x0, x21
        add     x1, x1, :lo12:.LC35
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_max_data_blks]
-       ldr     w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x2, :got:gSysInfo
+       ldr     w2, [x26,1964]
        adrp    x1, .LC36
        mov     x0, x21
        add     x1, x1, :lo12:.LC36
-       ldr     x2, [x2, #:got_lo12:gSysInfo]
-       ldrh    w2, [x2]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrh    w2, [x19]
+       ldrh    w2, [x22,280]
        adrp    x1, .LC37
-       adrp    x19, :got:g_active_superblock
        mov     x0, x21
        add     x1, x1, :lo12:.LC37
        bl      sprintf
-       ldr     x19, [x19, #:got_lo12:g_active_superblock]
-       adrp    x1, .LC38
        add     x21, x21, x0, sxtw
-       add     x1, x1, :lo12:.LC38
+       ldrh    w2, [x26,2112]
+       adrp    x1, .LC38
        mov     x0, x21
-       ldrh    w2, [x19,2]
+       add     x1, x1, :lo12:.LC38
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrb    w2, [x19,6]
+       ldrh    w2, [x22,2]
        adrp    x1, .LC39
        mov     x0, x21
        add     x1, x1, :lo12:.LC39
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrh    w2, [x19]
+       ldrb    w2, [x22,6]
        adrp    x1, .LC40
        mov     x0, x21
        add     x1, x1, :lo12:.LC40
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrb    w2, [x19,8]
+       ldrh    w2, [x25,#:lo12:.LANCHOR2]
        adrp    x1, .LC41
        mov     x0, x21
        add     x1, x1, :lo12:.LC41
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrh    w2, [x19,4]
+       ldrb    w2, [x22,8]
        adrp    x1, .LC42
        mov     x0, x21
        add     x1, x1, :lo12:.LC42
        bl      sprintf
-       ldr     x24, [x23, #:got_lo12:p_valid_page_count_table]
-       ldrh    w3, [x19]
-       adrp    x1, .LC43
-       adrp    x19, :got:g_buffer_superblock
        add     x21, x21, x0, sxtw
-       ldr     x2, [x24]
+       ldrh    w2, [x22,4]
+       adrp    x1, .LC43
        mov     x0, x21
        add     x1, x1, :lo12:.LC43
-       ldrh    w2, [x2,x3,lsl 1]
        bl      sprintf
-       ldr     x19, [x19, #:got_lo12:g_buffer_superblock]
-       adrp    x1, .LC44
        add     x21, x21, x0, sxtw
-       add     x1, x1, :lo12:.LC44
+       ldrh    w3, [x25,#:lo12:.LANCHOR2]
+       adrp    x1, .LC44
+       ldr     x2, [x22,-40]
        mov     x0, x21
-       ldrh    w2, [x19,2]
+       add     x1, x1, :lo12:.LC44
+       ldrh    w2, [x2,x3,lsl 1]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrb    w2, [x19,6]
+       ldrh    w2, [x22,50]
        adrp    x1, .LC45
        mov     x0, x21
        add     x1, x1, :lo12:.LC45
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrh    w2, [x19]
+       ldrb    w2, [x22,54]
        adrp    x1, .LC46
        mov     x0, x21
        add     x1, x1, :lo12:.LC46
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrb    w2, [x19,8]
+       ldrh    w2, [x22,48]
        adrp    x1, .LC47
        mov     x0, x21
        add     x1, x1, :lo12:.LC47
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrh    w2, [x19,4]
+       ldrb    w2, [x22,56]
        adrp    x1, .LC48
        mov     x0, x21
        add     x1, x1, :lo12:.LC48
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrh    w3, [x19]
+       ldrh    w2, [x22,52]
        adrp    x1, .LC49
-       ldr     x2, [x24]
-       adrp    x19, :got:g_gc_temp_superblock
        mov     x0, x21
        add     x1, x1, :lo12:.LC49
-       ldrh    w2, [x2,x3,lsl 1]
        bl      sprintf
-       ldr     x19, [x19, #:got_lo12:g_gc_temp_superblock]
-       adrp    x1, .LC50
        add     x21, x21, x0, sxtw
-       add     x1, x1, :lo12:.LC50
+       ldrh    w3, [x22,48]
+       adrp    x1, .LC50
+       ldr     x2, [x22,-40]
        mov     x0, x21
-       ldrh    w2, [x19,2]
+       add     x1, x1, :lo12:.LC50
+       ldrh    w2, [x2,x3,lsl 1]
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrb    w2, [x19,6]
+       ldrh    w2, [x22,98]
        adrp    x1, .LC51
        mov     x0, x21
        add     x1, x1, :lo12:.LC51
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrh    w2, [x19]
+       ldrb    w2, [x22,102]
        adrp    x1, .LC52
        mov     x0, x21
        add     x1, x1, :lo12:.LC52
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrb    w2, [x19,8]
+       ldrh    w2, [x22,96]
        adrp    x1, .LC53
        mov     x0, x21
        add     x1, x1, :lo12:.LC53
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrh    w2, [x19,4]
+       ldrb    w2, [x22,104]
        adrp    x1, .LC54
        mov     x0, x21
        add     x1, x1, :lo12:.LC54
        bl      sprintf
-       ldr     x20, [x20, #:got_lo12:g_gc_superblock]
-       adrp    x1, .LC55
        add     x21, x21, x0, sxtw
-       add     x1, x1, :lo12:.LC55
+       ldrh    w2, [x22,100]
+       adrp    x1, .LC55
        mov     x0, x21
-       ldrh    w2, [x20,2]
+       add     x1, x1, :lo12:.LC55
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrb    w2, [x20,6]
+       ldrh    w2, [x22,298]
        adrp    x1, .LC56
        mov     x0, x21
        add     x1, x1, :lo12:.LC56
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrh    w2, [x20]
+       ldrb    w2, [x22,302]
        adrp    x1, .LC57
        mov     x0, x21
        add     x1, x1, :lo12:.LC57
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrb    w2, [x20,8]
+       ldrh    w2, [x22,296]
        adrp    x1, .LC58
        mov     x0, x21
        add     x1, x1, :lo12:.LC58
        bl      sprintf
        add     x21, x21, x0, sxtw
-       ldrh    w2, [x20,4]
+       ldrb    w2, [x22,304]
        adrp    x1, .LC59
        mov     x0, x21
        add     x1, x1, :lo12:.LC59
        bl      sprintf
        add     x21, x21, x0, sxtw
-       adrp    x0, :got:g_all_blk_used_slc_mode
-       ldr     x26, [x26, #:got_lo12:g_sys_ext_data]
+       ldrh    w2, [x22,300]
        adrp    x1, .LC60
-       add     x1, x1, :lo12:.LC60
-       ldr     x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
-       ldr     w4, [x26,84]
-       ldr     w5, [x26,76]
-       ldr     w3, [x0]
-       adrp    x0, :got:g_inkDie_check_enable
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       ldr     w2, [x0]
        mov     x0, x21
-       orr     w2, w2, w3, lsl 8
-       ldr     w3, [x26,80]
+       add     x1, x1, :lo12:.LC60
        bl      sprintf
-       add     x19, x21, x0, sxtw
-       ldr     w2, [x26,72]
+       add     x21, x21, x0, sxtw
+       ldr     w3, [x22,344]
        adrp    x1, .LC61
-       mov     x0, x19
+       ldr     w2, [x22,160]
        add     x1, x1, :lo12:.LC61
+       ldr     w4, [x22,436]
+       mov     x0, x21
+       ldr     w5, [x22,428]
+       orr     w2, w2, w3, lsl 8
+       ldr     w3, [x22,432]
        bl      sprintf
-       add     x19, x19, x0, sxtw
-       ldr     w2, [x26,96]
+       add     x19, x21, x0, sxtw
+       ldr     w2, [x22,424]
        adrp    x1, .LC62
        mov     x0, x19
        add     x1, x1, :lo12:.LC62
        bl      sprintf
        add     x19, x19, x0, sxtw
-       adrp    x2, :got:g_gc_free_blk_threshold
+       ldr     w2, [x22,448]
        adrp    x1, .LC63
        mov     x0, x19
        add     x1, x1, :lo12:.LC63
-       ldr     x2, [x2, #:got_lo12:g_gc_free_blk_threshold]
-       ldrh    w2, [x2]
        bl      sprintf
        add     x19, x19, x0, sxtw
-       adrp    x2, :got:g_gc_merge_free_blk_threshold
+       ldrh    w2, [x22,864]
        adrp    x1, .LC64
        mov     x0, x19
        add     x1, x1, :lo12:.LC64
-       ldr     x2, [x2, #:got_lo12:g_gc_merge_free_blk_threshold]
-       ldrh    w2, [x2]
        bl      sprintf
        add     x19, x19, x0, sxtw
-       adrp    x2, :got:g_gc_skip_write_count
+       ldrh    w2, [x22,866]
        adrp    x1, .LC65
        mov     x0, x19
        add     x1, x1, :lo12:.LC65
-       ldr     x2, [x2, #:got_lo12:g_gc_skip_write_count]
-       ldr     w2, [x2]
        bl      sprintf
        add     x19, x19, x0, sxtw
-       adrp    x2, :got:g_gc_blk_index
+       ldr     w2, [x22,868]
        adrp    x1, .LC66
+       mov     x0, x19
        add     x1, x1, :lo12:.LC66
+       bl      sprintf
+       add     x19, x19, x0, sxtw
+       ldrh    w2, [x22,872]
+       adrp    x1, .LC67
+       add     x1, x1, :lo12:.LC67
        mov     x0, x19
-       ldr     x2, [x2, #:got_lo12:g_gc_blk_index]
-       ldrh    w2, [x2]
        bl      sprintf
        add     x19, x19, x0, sxtw
        bl      GetFreeBlockMinEraseCount
        uxth    w2, w0
-       adrp    x1, .LC67
+       adrp    x1, .LC68
        mov     x0, x19
-       add     x1, x1, :lo12:.LC67
+       add     x1, x1, :lo12:.LC68
        bl      sprintf
        add     x19, x19, x0, sxtw
-       ldrh    w0, [x25]
+       ldrh    w0, [x22,-8]
        bl      GetFreeBlockMaxEraseCount
        uxth    w2, w0
-       adrp    x1, .LC68
+       adrp    x1, .LC69
        mov     x0, x19
-       add     x1, x1, :lo12:.LC68
+       add     x1, x1, :lo12:.LC69
        bl      sprintf
        add     x19, x19, x0, sxtw
-       ldrh    w0, [x20]
+       ldrh    w0, [x22,296]
        mov     w1, 65535
        cmp     w0, w1
-       beq     .L549
+       beq     .L593
        ubfiz   x2, x0, 1, 16
-       ldr     x3, [x24]
-       adrp    x1, .LC69
+       ldr     x3, [x22,-40]
+       adrp    x1, .LC70
        mov     x0, x19
-       add     x1, x1, :lo12:.LC69
+       add     x1, x1, :lo12:.LC70
        ldrh    w2, [x3,x2]
        bl      sprintf
        add     x19, x19, x0, sxtw
-.L549:
+.L593:
        mov     w0, 0
-       adrp    x24, .LC70
+       adrp    x22, .LC71
        mov     w20, 0
-       adrp    x28, :got:p_data_block_list_table
+       mov     w28, 65535
        bl      List_get_gc_head_node
-       add     x24, x24, :lo12:.LC70
+       mov     w27, 6
        uxth    w3, w0
-       mov     w9, 65535
-       mov     w8, 6
-       adrp    x27, :got:p_erase_count_table
-.L551:
-       cmp     w3, w9
-       str     x9, [x29,96]
-       adrp    x21, :got:p_data_block_list_table
-       beq     .L550
-       ldr     x0, [x23, #:got_lo12:p_valid_page_count_table]
+       add     x22, x22, :lo12:.LC71
+.L595:
+       cmp     w3, w28
+       beq     .L594
+       add     x21, x25, :lo12:.LANCHOR2
        ubfiz   x6, x3, 1, 16
-       ldr     x26, [x28, #:got_lo12:p_data_block_list_table]
+       umull   x26, w3, w27
+       mov     x0, x19
        mov     w2, w20
-       umull   x25, w3, w8
-       ldr     x4, [x0]
-       mov     x1, x24
-       ldr     x0, [x27, #:got_lo12:p_erase_count_table]
+       ldr     x5, [x21,-56]
+       mov     x1, x22
+       ldr     x4, [x21,-40]
        add     w20, w20, 1
-       ldr     x5, [x26]
+       ldr     x7, [x21,-80]
+       add     x5, x5, x26
        ldrh    w4, [x4,x6]
-       ldr     x7, [x0]
-       add     x5, x5, x25
-       mov     x0, x19
-       str     x8, [x29,104]
        ldrh    w5, [x5,4]
        ldrh    w6, [x7,x6]
        bl      sprintf
        add     x19, x19, x0, sxtw
-       ldr     x0, [x26]
+       ldr     x0, [x21,-56]
        cmp     w20, 16
-       ldr     x8, [x29,104]
-       ldr     x9, [x29,96]
-       ldrh    w3, [x0,x25]
-       bne     .L551
-.L550:
-       adrp    x0, :got:p_free_data_block_list_head
-       ldr     x1, [x21, #:got_lo12:p_data_block_list_table]
-       adrp    x23, .LC71
+       ldrh    w3, [x0,x26]
+       bne     .L595
+.L594:
+       add     x1, x25, :lo12:.LANCHOR2
+       adrp    x22, .LC72
        mov     w20, 0
        mov     w28, 65535
        mov     w27, 6
-       ldr     x0, [x0, #:got_lo12:p_free_data_block_list_head]
-       add     x23, x23, :lo12:.LC71
-       ldr     x3, [x1]
-       adrp    x26, :got:p_erase_count_table
-       ldr     x0, [x0]
+       add     x22, x22, :lo12:.LC72
+       ldr     x0, [x1,-16]
+       ldr     x3, [x1,-56]
        sub     x3, x0, x3
        mov     x0, -6148914691236517206
        asr     x3, x3, 1
        madd    x3, x0, x3, x3
        uxth    w3, w3
-.L553:
+.L597:
        cmp     w3, w28
-       beq     .L552
-       ldr     x25, [x21, #:got_lo12:p_data_block_list_table]
+       beq     .L596
+       add     x21, x25, :lo12:.LANCHOR2
        ubfiz   x5, x3, 1, 16
-       ldr     x0, [x26, #:got_lo12:p_erase_count_table]
-       mov     w2, w20
-       umull   x24, w3, w27
-       ldr     x4, [x25]
-       mov     x1, x23
-       ldr     x6, [x0]
+       umull   x26, w3, w27
        mov     x0, x19
-       add     x4, x4, x24
+       mov     w2, w20
+       ldr     x4, [x21,-56]
+       mov     x1, x22
+       ldr     x6, [x21,-80]
        add     w20, w20, 1
+       add     x4, x4, x26
        ldrh    w5, [x6,x5]
        ldrh    w4, [x4,4]
        bl      sprintf
        add     x19, x19, x0, sxtw
-       ldr     x0, [x25]
+       ldr     x0, [x21,-56]
        cmp     w20, 4
-       ldrh    w3, [x0,x24]
-       bne     .L553
-.L552:
-       sub     w0, w19, w22
-.L548:
+       ldrh    w3, [x0,x26]
+       bne     .L597
+.L596:
+       sub     w0, w19, w23
+.L592:
+       ldr     x2, [x29,120]
+       ldr     x1, [x24,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L598
+       bl      __stack_chk_fail
+.L598:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -4794,11 +4818,11 @@ FtlPrintInfo2buf:
        .type   rknand_proc_ftlread, %function
 rknand_proc_ftlread:
        stp     x29, x30, [sp, -32]!
-       adrp    x1, .LC72
-       adrp    x2, .LC73
+       adrp    x1, .LC73
+       adrp    x2, .LC74
        add     x29, sp, 0
-       add     x1, x1, :lo12:.LC72
-       add     x2, x2, :lo12:.LC73
+       add     x1, x1, :lo12:.LC73
+       add     x2, x2, :lo12:.LC74
        stp     x19, x20, [sp,16]
        mov     x20, x0
        bl      sprintf
@@ -4815,250 +4839,208 @@ rknand_proc_ftlread:
        .global GetSwlReplaceBlock
        .type   GetSwlReplaceBlock, %function
 GetSwlReplaceBlock:
-       adrp    x1, :got:g_totle_avg_erase_count
-       adrp    x2, :got:g_min_erase_count
        stp     x29, x30, [sp, -96]!
        add     x29, sp, 0
-       ldr     x0, [x1, #:got_lo12:g_totle_avg_erase_count]
-       stp     x23, x24, [sp,48]
-       str     x25, [sp,64]
-       mov     x24, x1
        stp     x19, x20, [sp,16]
+       adrp    x19, .LANCHOR2
+       add     x0, x19, :lo12:.LANCHOR2
        stp     x21, x22, [sp,32]
-       mov     x25, x2
-       ldr     w3, [x0]
-       ldr     x0, [x2, #:got_lo12:g_min_erase_count]
-       ldr     w0, [x0]
+       stp     x23, x24, [sp,48]
+       stp     x25, x26, [sp,64]
+       ldr     w2, [x0,212]
+       ldr     w1, [x0,220]
+       cmp     w2, w1
+       bcs     .L603
+       adrp    x1, .LANCHOR0
+       str     wzr, [x0,204]
+       add     x2, x1, :lo12:.LANCHOR0
+       ldr     x5, [x0,-80]
+       mov     x0, 0
+       ldrh    w3, [x2,1960]
+.L604:
        cmp     w3, w0
-       bcs     .L558
-       adrp    x0, :got:g_totle_mlc_erase_count
-       adrp    x2, :got:p_erase_count_table
-       ldr     x1, [x0, #:got_lo12:g_totle_mlc_erase_count]
-       str     wzr, [x1]
-       adrp    x1, :got:c_ftl_nand_data_blks_per_plane
-       ldr     x2, [x2, #:got_lo12:p_erase_count_table]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldr     x5, [x2]
-       mov     x2, 0
-       ldrh    w1, [x1]
-.L559:
-       cmp     w1, w2
-       bls     .L602
-       ldr     x4, [x0, #:got_lo12:g_totle_mlc_erase_count]
-       ldrh    w6, [x5,x2,lsl 1]
-       add     x2, x2, 1
-       ldr     w3, [x4]
-       add     w3, w6, w3
-       str     w3, [x4]
-       b       .L559
-.L602:
-       ldr     x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
-       ldr     x2, [x24, #:got_lo12:g_totle_avg_erase_count]
-       ldr     w3, [x0]
-       udiv    w1, w3, w1
-       str     w1, [x2]
-       adrp    x1, :got:g_totle_slc_erase_count
-       ldr     x1, [x1, #:got_lo12:g_totle_slc_erase_count]
-       ldr     w1, [x1]
-       sub     w3, w3, w1
-       adrp    x1, :got:c_mlc_erase_count_value
-       ldr     x1, [x1, #:got_lo12:c_mlc_erase_count_value]
-       ldrh    w1, [x1]
-       udiv    w3, w3, w1
-       str     w3, [x0]
-       b       .L561
-.L558:
-       adrp    x0, :got:g_max_erase_count
-       ldr     x0, [x0, #:got_lo12:g_max_erase_count]
-       ldr     w1, [x0]
-       cmp     w3, w1
-       bls     .L561
+       bls     .L645
+       add     x4, x19, :lo12:.LANCHOR2
+       ldrh    w6, [x5,x0,lsl 1]
+       add     x0, x0, 1
+       ldr     w2, [x4,204]
+       add     w2, w6, w2
+       str     w2, [x4,204]
+       b       .L604
+.L645:
+       add     x2, x19, :lo12:.LANCHOR2
+       add     x1, x1, :lo12:.LANCHOR0
+       ldr     w0, [x2,204]
+       ldrh    w1, [x1,2016]
+       udiv    w3, w0, w3
+       str     w3, [x2,212]
+       ldr     w3, [x2,208]
+       sub     w0, w0, w3
+       udiv    w0, w0, w1
+       str     w0, [x2,204]
+       b       .L606
+.L603:
+       ldr     w1, [x0,216]
+       cmp     w2, w1
+       bls     .L606
        add     w1, w1, 1
-       adrp    x4, :got:c_ftl_nand_data_blks_per_plane
-       str     w1, [x0]
-       adrp    x5, :got:p_erase_count_table
+       adrp    x4, .LANCHOR0
+       str     w1, [x0,216]
        mov     w0, 0
-.L563:
-       ldr     x1, [x4, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w1, [x1]
+.L608:
+       add     x1, x4, :lo12:.LANCHOR0
+       ldrh    w1, [x1,1960]
        cmp     w0, w1
-       bcs     .L561
-       ldr     x1, [x5, #:got_lo12:p_erase_count_table]
+       bcs     .L606
+       add     x1, x19, :lo12:.LANCHOR2
        ubfiz   x2, x0, 1, 32
        add     w0, w0, 1
-       ldr     x3, [x1]
+       ldr     x3, [x1,-80]
        ldrh    w1, [x3,x2]
        add     w1, w1, 1
        strh    w1, [x3,x2]
-       b       .L563
-.L561:
-       ldr     x0, [x25, #:got_lo12:g_min_erase_count]
-       ldr     x1, [x24, #:got_lo12:g_totle_avg_erase_count]
-       ldr     w0, [x0]
-       ldr     w1, [x1]
-       add     w2, w0, 341
-       cmp     w2, w1
-       bls     .L566
-       adrp    x2, :got:g_max_erase_count
-       add     w1, w0, 1024
-       ldr     x2, [x2, #:got_lo12:g_max_erase_count]
-       ldr     w2, [x2]
+       b       .L608
+.L606:
+       add     x0, x19, :lo12:.LANCHOR2
+       ldr     w22, [x0,220]
+       ldr     w23, [x0,212]
+       add     w1, w22, 256
+       cmp     w1, w23
+       bls     .L611
+       ldr     w2, [x0,216]
+       add     w1, w22, 768
        cmp     w1, w2
-       bls     .L566
-       adrp    x1, :got:g_inkDie_check_enable
-       ldr     x1, [x1, #:got_lo12:g_inkDie_check_enable]
-       ldr     w1, [x1]
-       cbz     w1, .L569
-       cmp     w0, 30
-       bls     .L566
-.L569:
+       bls     .L611
+       ldr     w0, [x0,160]
+       cbz     w0, .L614
+       cmp     w22, 30
+       bls     .L611
+.L614:
        mov     w0, 65535
-       b       .L568
-.L566:
-       adrp    x0, :got:g_num_free_superblocks
-       ldr     x0, [x0, #:got_lo12:g_num_free_superblocks]
-       ldrh    w0, [x0]
-       add     w0, w0, w0, lsl 1
-       lsr     w0, w0, 2
+       b       .L613
+.L611:
+       add     x0, x19, :lo12:.LANCHOR2
+       ldrh    w0, [x0,-8]
+       add     w0, w0, w0, lsl 1
+       lsr     w0, w0, 2
        bl      GetFreeBlockMaxEraseCount
        uxth    w6, w0
-       ldr     x0, [x25, #:got_lo12:g_min_erase_count]
-       ldr     w1, [x0]
-       add     w0, w1, 64
+       add     w0, w22, 64
        cmp     w6, w0
-       bcs     .L582
-       cmp     w1, 30
-       bhi     .L569
-.L582:
-       adrp    x0, :got:p_data_block_list_head
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_head]
-       ldr     x2, [x0]
-       cbz     x2, .L569
-       adrp    x0, :got:p_data_block_list_table
-       adrp    x21, :got:p_erase_count_table
-       mov     w22, 65535
-       mov     w10, 6
-       mov     w19, w22
-       mov     w9, w22
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_table]
-       ldr     x8, [x0]
-       ldr     x0, [x21, #:got_lo12:p_erase_count_table]
-       ldr     x5, [x0]
+       bcs     .L625
+       cmp     w22, 30
+       bhi     .L614
+.L625:
+       add     x0, x19, :lo12:.LANCHOR2
+       ldr     x3, [x0,-48]
+       cbz     x3, .L614
+       mov     w24, 65535
+       ldr     x5, [x0,-56]
+       ldr     x26, [x0,-80]
        mov     x0, -6148914691236517206
+       mov     w20, w24
+       mov     w7, w24
        add     x0, x0, 1
-.L571:
-       ldrh    w4, [x2]
-       cmp     w4, w9
-       beq     .L573
-       ldrh    w3, [x2,4]
-       cbz     w3, .L572
-       sub     x3, x2, x8
-       asr     x3, x3, 1
-       mul     x3, x3, x0
-       uxth    w7, w3
-       and     x3, x3, 65535
-       ldrh    w2, [x5,x3,lsl 1]
-       cmp     w2, w1
-       bls     .L581
+       mov     w8, 6
+.L616:
+       ldrh    w1, [x3]
+       cmp     w1, w7
+       beq     .L618
+       ldrh    w2, [x3,4]
+       cbz     w2, .L617
+       sub     x4, x3, x5
+       asr     x4, x4, 1
+       mul     x4, x4, x0
+       uxth    w3, w4
+       and     x4, x4, 65535
+       ldrh    w2, [x26,x4,lsl 1]
        cmp     w2, w22
-       bcs     .L572
-       mov     w22, w2
-       mov     w19, w7
-.L572:
-       umull   x2, w4, w10
-       add     x2, x8, x2
-       b       .L571
-.L581:
-       mov     w19, w7
-.L573:
+       bls     .L624
+       cmp     w2, w24
+       bcs     .L617
+       mov     w24, w2
+       mov     w20, w3
+.L617:
+       umull   x3, w1, w8
+       add     x3, x5, x3
+       b       .L616
+.L624:
+       mov     w20, w3
+.L618:
        mov     w0, 65535
-       cmp     w19, w0
-       beq     .L569
-       ubfiz   x23, x19, 1, 16
-       ldrh    w20, [x5,x23]
-       cmp     w20, w1
-       bls     .L576
+       cmp     w20, w0
+       beq     .L614
+       ubfiz   x25, x20, 1, 16
+       ldrh    w21, [x26,x25]
+       cmp     w21, w22
+       bls     .L620
        str     x6, [x29,88]
        bl      GetFreeBlockMinEraseCount
-       ldr     x2, [x25, #:got_lo12:g_min_erase_count]
        ldr     x6, [x29,88]
-       ldr     w1, [x2]
-       cmp     w1, w0, uxth
-       bcs     .L576
-       str     w22, [x2]
-.L576:
-       cmp     w20, 29
-       bhi     .L578
-       adrp    x0, :got:g_inkDie_check_enable
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       ldr     w0, [x0]
-       cbz     w0, .L578
-       ldr     x1, [x24, #:got_lo12:g_totle_avg_erase_count]
-       add     w0, w20, 10
-       ldr     w1, [x1]
-       cmp     w0, w1
-       bls     .L579
-       adrp    x0, :got:c_mlc_erase_count_value
-       ldr     x0, [x0, #:got_lo12:c_mlc_erase_count_value]
-       ldrh    w0, [x0]
-       cmp     w0, w20
-       bls     .L578
-.L579:
-       adrp    x0, :got:g_num_data_superblocks
-       ldr     x0, [x0, #:got_lo12:g_num_data_superblocks]
-       ldrh    w0, [x0]
+       cmp     w22, w0, uxth
+       bcs     .L620
+       add     x0, x19, :lo12:.LANCHOR2
+       str     w24, [x0,220]
+.L620:
+       cmp     w21, 29
+       bhi     .L621
+       add     x0, x19, :lo12:.LANCHOR2
+       ldr     w0, [x0,160]
+       cbz     w0, .L621
+       add     w0, w21, 10
+       cmp     w0, w23
+       bls     .L622
+       adrp    x0, .LANCHOR0+2016
+       ldrh    w0, [x0,#:lo12:.LANCHOR0+2016]
+       cmp     w0, w21
+       bls     .L621
+.L622:
+       add     x22, x19, :lo12:.LANCHOR2
+       ldrh    w0, [x22,-24]
        cmp     w0, 64
-       bls     .L578
-       ldr     x21, [x21, #:got_lo12:p_erase_count_table]
-       adrp    x0, .LC74
-       mov     w1, w19
-       add     x0, x0, :lo12:.LC74
-       ldr     x2, [x21]
-       ldrh    w2, [x2,x23]
-       bl      printk
-       b       .L601
-.L578:
-       ldr     x1, [x24, #:got_lo12:g_totle_avg_erase_count]
-       ldr     w2, [x1]
-       cmp     w20, w2
-       bcs     .L569
-       add     w0, w20, 128
-       cmp     w6, w0
-       ble     .L569
-       add     w0, w20, 341
-       adrp    x1, :got:g_max_erase_count
-       cmp     w0, w2
-       bcc     .L580
-       ldr     x0, [x1, #:got_lo12:g_max_erase_count]
-       add     w20, w20, 1024
-       ldr     w0, [x0]
-       cmp     w20, w0
-       bcs     .L569
-.L580:
-       adrp    x0, :got:p_valid_page_count_table
-       ldr     x21, [x21, #:got_lo12:p_erase_count_table]
-       ldr     x3, [x1, #:got_lo12:g_max_erase_count]
-       mov     w1, w19
-       ldr     x0, [x0, #:got_lo12:p_valid_page_count_table]
-       ldr     x5, [x21]
-       ldr     w3, [x3]
-       ldr     x4, [x0]
+       bls     .L621
        adrp    x0, .LC75
-       ldrh    w5, [x5,x23]
+       ldrh    w2, [x26,x25]
        add     x0, x0, :lo12:.LC75
-       ldrh    w4, [x4,x23]
+       mov     w1, w20
        bl      printk
-.L601:
-       adrp    x0, :got:g_in_swl_replace
-       mov     w1, 1
-       ldr     x0, [x0, #:got_lo12:g_in_swl_replace]
-       str     w1, [x0]
-       mov     w0, w19
-.L568:
+       mov     w0, 1
+       str     w0, [x22,876]
+       b       .L644
+.L621:
+       cmp     w21, w23
+       bcs     .L614
+       add     w0, w21, 128
+       cmp     w6, w0
+       ble     .L614
+       add     w0, w21, 256
+       cmp     w0, w23
+       bcc     .L623
+       add     x0, x19, :lo12:.LANCHOR2
+       add     w21, w21, 768
+       ldr     w0, [x0,216]
+       cmp     w21, w0
+       bcs     .L614
+.L623:
+       add     x19, x19, :lo12:.LANCHOR2
+       adrp    x0, .LC76
+       ldrh    w5, [x26,x25]
+       add     x0, x0, :lo12:.LC76
+       mov     w1, w20
+       mov     w2, w23
+       ldr     x4, [x19,-40]
+       ldr     w3, [x19,216]
+       ldrh    w4, [x4,x25]
+       bl      printk
+       mov     w0, 1
+       str     w0, [x19,876]
+.L644:
+       mov     w0, w20
+.L613:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
-       ldr     x25, [sp,64]
+       ldp     x25, x26, [sp,64]
        ldp     x29, x30, [sp], 96
        ret
        .size   GetSwlReplaceBlock, .-GetSwlReplaceBlock
@@ -5071,14 +5053,13 @@ free_data_superblock:
        mov     w1, 65535
        cmp     w0, w1
        add     x29, sp, 0
-       beq     .L604
-       adrp    x1, :got:p_valid_page_count_table
-       ubfiz   x2, x0, 1, 16
-       ldr     x1, [x1, #:got_lo12:p_valid_page_count_table]
-       ldr     x1, [x1]
-       strh    wzr, [x1,x2]
+       beq     .L647
+       adrp    x2, .LANCHOR2-40
+       ubfiz   x1, x0, 1, 16
+       ldr     x2, [x2,#:lo12:.LANCHOR2-40]
+       strh    wzr, [x2,x1]
        bl      INSERT_FREE_LIST
-.L604:
+.L647:
        mov     w0, 0
        ldp     x29, x30, [sp], 16
        ret
@@ -5087,169 +5068,145 @@ free_data_superblock:
        .global FtlGcBufInit
        .type   FtlGcBufInit, %function
 FtlGcBufInit:
-       adrp    x0, :got:g_gc_num_req
+       adrp    x3, .LANCHOR2
        mov     w1, 0
-       adrp    x6, :got:c_ftl_nand_planes_num
-       mov     w7, 24
-       adrp    x8, :got:gp_gc_page_buf_info
-       mov     w9, 1
-       ldr     x0, [x0, #:got_lo12:g_gc_num_req]
-       adrp    x10, :got:c_ftl_nand_byte_pre_page
-       mov     w3, 4
-       adrp    x11, :got:p_gc_data_buf
-       adrp    x12, :got:c_ftl_nand_byte_pre_oob
-       adrp    x13, :got:p_gc_spare_buf
-       str     wzr, [x0]
-       adrp    x14, :got:req_gc
-       mov     w15, 56
-.L606:
-       ldr     x0, [x6, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
+       add     x0, x3, :lo12:.LANCHOR2
+       adrp    x10, .LANCHOR0
+       mov     w11, 24
+       mov     w12, 1
+       mov     w6, 4
+       mov     w13, 56
+       str     wzr, [x0,880]
+.L649:
+       add     x5, x10, :lo12:.LANCHOR0
+       adrp    x9, .LANCHOR0
+       ldrh    w0, [x5,1952]
        cmp     w1, w0
-       bcs     .L610
-       ldr     x4, [x8, #:got_lo12:gp_gc_page_buf_info]
-       umull   x2, w1, w7
-       ldr     x5, [x4]
-       add     x0, x5, x2
-       str     w9, [x0,16]
-       ldr     x0, [x10, #:got_lo12:c_ftl_nand_byte_pre_page]
-       ldr     x16, [x11, #:got_lo12:p_gc_data_buf]
-       ldrh    w0, [x0]
-       ldr     x16, [x16]
+       bcs     .L653
+       add     x2, x3, :lo12:.LANCHOR2
+       umull   x4, w1, w11
+       ldr     x7, [x2,888]
+       ldr     x8, [x2,896]
+       add     x0, x7, x4
+       str     w12, [x0,16]
+       ldrh    w0, [x5,2036]
        mul     w0, w1, w0
-       sdiv    w0, w0, w3
-       add     x0, x16, x0, sxtw 2
-       str     x0, [x5,x2]
-       ldr     x0, [x12, #:got_lo12:c_ftl_nand_byte_pre_oob]
-       ldr     x5, [x4]
-       ldr     x16, [x13, #:got_lo12:p_gc_spare_buf]
-       ldrh    w0, [x0]
-       add     x4, x5, x2
-       ldr     x16, [x16]
+       sdiv    w0, w0, w6
+       add     x0, x8, x0, sxtw 2
+       str     x0, [x7,x4]
+       ldrh    w0, [x5,2038]
+       ldr     x8, [x2,888]
+       ldr     x5, [x2,904]
        mul     w0, w1, w0
-       sdiv    w0, w0, w3
-       add     x0, x16, x0, sxtw 2
-       str     x0, [x4,8]
-       umull   x0, w1, w15
-       ldr     x16, [x14, #:got_lo12:req_gc]
+       add     x7, x8, x4
+       ldr     x2, [x2,912]
+       sdiv    w0, w0, w6
+       add     x0, x5, x0, sxtw 2
+       str     x0, [x7,8]
+       umull   x0, w1, w13
        add     w1, w1, 1
-       ldr     x2, [x5,x2]
+       add     x0, x2, x0
+       ldr     x2, [x8,x4]
        uxth    w1, w1
-       ldr     x16, [x16]
-       add     x0, x16, x0
        str     x2, [x0,8]
-       ldr     x2, [x4,8]
+       ldr     x2, [x7,8]
        str     x2, [x0,16]
-       b       .L606
-.L610:
-       adrp    x6, :got:c_gc_page_buf_num
-       mov     w7, 24
-       adrp    x8, :got:gp_gc_page_buf_info
-       adrp    x9, :got:c_ftl_nand_byte_pre_page
-       mov     w3, 4
-       adrp    x10, :got:p_gc_data_buf
-       adrp    x11, :got:c_ftl_nand_byte_pre_oob
-       adrp    x12, :got:p_gc_spare_buf
-.L608:
-       ldr     x1, [x6, #:got_lo12:c_gc_page_buf_num]
-       ldr     w1, [x1]
+       b       .L649
+.L653:
+       mov     w8, 24
+       mov     w5, 4
+.L651:
+       add     x2, x3, :lo12:.LANCHOR2
+       ldr     w1, [x2,920]
        cmp     w0, w1
-       bcs     .L611
-       ldr     x4, [x8, #:got_lo12:gp_gc_page_buf_info]
-       umull   x2, w0, w7
-       ldr     x5, [x4]
-       add     x1, x5, x2
+       bcs     .L654
+       umull   x4, w0, w8
+       ldr     x7, [x2,888]
+       add     x6, x9, :lo12:.LANCHOR0
+       ldr     x10, [x2,896]
+       add     x1, x7, x4
        str     wzr, [x1,16]
-       ldr     x1, [x9, #:got_lo12:c_ftl_nand_byte_pre_page]
-       ldr     x13, [x10, #:got_lo12:p_gc_data_buf]
-       ldrh    w1, [x1]
-       ldr     x13, [x13]
+       ldrh    w1, [x6,2036]
        mul     w1, w0, w1
-       sdiv    w1, w1, w3
-       add     x1, x13, x1, sxtw 2
-       str     x1, [x5,x2]
-       ldr     x1, [x11, #:got_lo12:c_ftl_nand_byte_pre_oob]
-       ldr     x4, [x4]
-       ldrh    w1, [x1]
-       add     x2, x4, x2
-       ldr     x4, [x12, #:got_lo12:p_gc_spare_buf]
+       sdiv    w1, w1, w5
+       add     x1, x10, x1, sxtw 2
+       str     x1, [x7,x4]
+       ldrh    w1, [x6,2038]
+       ldr     x6, [x2,888]
+       ldr     x2, [x2,904]
        mul     w1, w0, w1
+       add     x4, x6, x4
        add     w0, w0, 1
-       ldr     x4, [x4]
-       sdiv    w1, w1, w3
+       sdiv    w1, w1, w5
        uxth    w0, w0
-       add     x1, x4, x1, sxtw 2
-       str     x1, [x2,8]
-       b       .L608
-.L611:
+       add     x1, x2, x1, sxtw 2
+       str     x1, [x4,8]
+       b       .L651
+.L654:
        ret
        .size   FtlGcBufInit, .-FtlGcBufInit
        .align  2
        .global FtlGcBufFree
        .type   FtlGcBufFree, %function
 FtlGcBufFree:
-       adrp    x2, :got:c_gc_page_buf_num
+       adrp    x2, .LANCHOR2
        mov     w3, 0
+       add     x2, x2, :lo12:.LANCHOR2
        mov     w7, 56
        mov     w9, 24
-       ldr     x2, [x2, #:got_lo12:c_gc_page_buf_num]
-       ldr     w8, [x2]
-       adrp    x2, :got:gp_gc_page_buf_info
-       ldr     x2, [x2, #:got_lo12:gp_gc_page_buf_info]
-       ldr     x5, [x2]
-.L613:
+       ldr     w8, [x2,920]
+       ldr     x5, [x2,888]
+.L656:
        cmp     w3, w1
-       bcs     .L612
+       bcs     .L655
        umull   x4, w3, w7
        mov     w2, 0
        add     x4, x0, x4
-.L618:
+.L661:
        cmp     w2, w8
-       bcs     .L615
+       bcs     .L658
        umull   x6, w2, w9
        add     x10, x5, x6
        ldr     x11, [x5,x6]
        ldr     x6, [x4,8]
        cmp     x11, x6
-       bne     .L614
+       bne     .L657
        str     wzr, [x10,16]
-       b       .L615
-.L614:
+       b       .L658
+.L657:
        add     w2, w2, 1
        uxth    w2, w2
-       b       .L618
-.L615:
+       b       .L661
+.L658:
        add     w3, w3, 1
        uxth    w3, w3
-       b       .L613
-.L612:
+       b       .L656
+.L655:
        ret
        .size   FtlGcBufFree, .-FtlGcBufFree
        .align  2
        .global FtlGcBufAlloc
        .type   FtlGcBufAlloc, %function
 FtlGcBufAlloc:
-       adrp    x2, :got:c_gc_page_buf_num
+       adrp    x2, .LANCHOR2
        mov     w7, 24
+       add     x2, x2, :lo12:.LANCHOR2
        mov     w8, 1
        mov     w9, 56
-       ldr     x2, [x2, #:got_lo12:c_gc_page_buf_num]
-       ldr     w5, [x2]
-       adrp    x2, :got:gp_gc_page_buf_info
-       ldr     x2, [x2, #:got_lo12:gp_gc_page_buf_info]
-       ldr     x6, [x2]
+       ldr     w5, [x2,920]
+       ldr     x6, [x2,888]
        mov     w2, 0
-.L620:
+.L663:
        cmp     w2, w1
-       bcs     .L626
+       bcs     .L669
        mov     w3, 0
-.L624:
+.L667:
        cmp     w3, w5
-       bcs     .L622
+       bcs     .L665
        umull   x4, w3, w7
        add     x4, x6, x4
        ldr     w10, [x4,16]
-       cbnz    w10, .L621
+       cbnz    w10, .L664
        umull   x3, w2, w9
        str     w8, [x4,16]
        add     x3, x0, x3
@@ -5257,43 +5214,41 @@ FtlGcBufAlloc:
        str     x10, [x3,8]
        ldr     x4, [x4,8]
        str     x4, [x3,16]
-       b       .L622
-.L621:
+       b       .L665
+.L664:
        add     w3, w3, 1
        uxth    w3, w3
-       b       .L624
-.L622:
+       b       .L667
+.L665:
        add     w2, w2, 1
        uxth    w2, w2
-       b       .L620
-.L626:
+       b       .L663
+.L669:
        ret
        .size   FtlGcBufAlloc, .-FtlGcBufAlloc
        .align  2
        .global IsBlkInGcList
        .type   IsBlkInGcList, %function
 IsBlkInGcList:
-       adrp    x1, :got:g_gc_blk_num
+       adrp    x1, .LANCHOR2
        uxth    w0, w0
-       ldr     x1, [x1, #:got_lo12:g_gc_blk_num]
-       ldrh    w2, [x1]
-       adrp    x1, :got:p_gc_blk_tbl
-       ldr     x1, [x1, #:got_lo12:p_gc_blk_tbl]
-       ldr     x3, [x1]
+       add     x1, x1, :lo12:.LANCHOR2
+       ldrh    w2, [x1,924]
+       ldr     x3, [x1,928]
        mov     x1, 0
-.L628:
+.L671:
        cmp     w2, w1, uxth
-       bls     .L632
+       bls     .L675
        add     x1, x1, 1
        add     x4, x3, x1, lsl 1
        ldrh    w4, [x4,-2]
        cmp     w4, w0
-       bne     .L628
+       bne     .L671
        mov     w0, 1
-       b       .L629
-.L632:
+       b       .L672
+.L675:
        mov     w0, 0
-.L629:
+.L672:
        ret
        .size   IsBlkInGcList, .-IsBlkInGcList
        .align  2
@@ -5304,56 +5259,51 @@ FtlGcUpdatePage:
        add     x29, sp, 0
        str     x19, [sp,16]
        mov     w19, w0
-       lsr     w0, w0, 10
+       lsr     x0, x19, 10
        str     x1, [x29,32]
        str     x2, [x29,40]
        bl      P2V_block_in_plane
-       adrp    x3, :got:g_gc_blk_num
+       adrp    x3, .LANCHOR2
        ldr     x2, [x29,40]
+       add     x4, x3, :lo12:.LANCHOR2
        ldr     x1, [x29,32]
        uxth    w8, w0
        mov     x5, 0
-       ldr     x4, [x3, #:got_lo12:g_gc_blk_num]
-       ldrh    w7, [x4]
-       adrp    x4, :got:p_gc_blk_tbl
-       ldr     x4, [x4, #:got_lo12:p_gc_blk_tbl]
-       ldr     x6, [x4]
-.L634:
+       ldrh    w7, [x4,924]
+       ldr     x6, [x4,928]
+.L677:
        uxth    w4, w5
        cmp     w4, w7
-       bcs     .L638
+       bcs     .L681
        add     x5, x5, 1
        add     x9, x6, x5, lsl 1
        ldrh    w9, [x9,-2]
        cmp     w9, w8
-       bne     .L634
-.L638:
+       bne     .L677
+.L681:
        cmp     w4, w7
-       bne     .L636
+       bne     .L679
        ubfiz   x4, x4, 1, 16
        strh    w0, [x6,x4]
-       ldr     x3, [x3, #:got_lo12:g_gc_blk_num]
-       ldrh    w4, [x3]
+       add     x0, x3, :lo12:.LANCHOR2
+       ldrh    w4, [x0,924]
        add     w4, w4, 1
-       strh    w4, [x3]
-.L636:
-       adrp    x3, :got:g_gc_page_offset
-       adrp    x5, :got:p_gc_page_info
+       strh    w4, [x0,924]
+.L679:
+       add     x3, x3, :lo12:.LANCHOR2
        mov     w0, 12
-       ldr     x3, [x3, #:got_lo12:g_gc_page_offset]
-       ldr     x5, [x5, #:got_lo12:p_gc_page_info]
-       ldrh    w4, [x3]
-       ldr     x6, [x5]
+       ldrh    w4, [x3,936]
+       ldr     x5, [x3,944]
        umull   x4, w4, w0
-       add     x6, x6, x4
-       str     w1, [x6,4]
-       ldr     x1, [x5]
+       add     x5, x5, x4
+       str     w1, [x5,4]
+       ldr     x1, [x3,944]
        add     x0, x1, x4
        str     w2, [x0,8]
        str     w19, [x1,x4]
-       ldrh    w0, [x3]
+       ldrh    w0, [x3,936]
        add     w0, w0, 1
-       strh    w0, [x3]
+       strh    w0, [x3,936]
        ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 48
        ret
@@ -5366,24 +5316,24 @@ FtlGcRefreshBlock:
        add     x29, sp, 0
        str     x19, [sp,16]
        uxth    w19, w0
-       adrp    x0, .LC76
+       adrp    x0, .LC77
        mov     w1, w19
-       add     x0, x0, :lo12:.LC76
+       add     x0, x0, :lo12:.LC77
        bl      printk
-       adrp    x2, :got:g_gc_next_blk
+       adrp    x2, .LANCHOR2
        mov     w0, 65535
-       ldr     x2, [x2, #:got_lo12:g_gc_next_blk]
-       ldrh    w1, [x2]
+       add     x2, x2, :lo12:.LANCHOR2
+       ldrh    w1, [x2,952]
        cmp     w1, w0
-       beq     .L643
-       adrp    x2, :got:g_gc_next_blk_1
-       ldr     x2, [x2, #:got_lo12:g_gc_next_blk_1]
-       ldrh    w1, [x2]
+       bne     .L684
+       strh    w19, [x2,952]
+       b       .L685
+.L684:
+       ldrh    w1, [x2,954]
        cmp     w1, w0
-       bne     .L642
-.L643:
-       strh    w19, [x2]
-.L642:
+       bne     .L685
+       strh    w19, [x2,954]
+.L685:
        mov     w0, 0
        ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 32
@@ -5393,195 +5343,99 @@ FtlGcRefreshBlock:
        .global FtlGcMarkBadPhyBlk
        .type   FtlGcMarkBadPhyBlk, %function
 FtlGcMarkBadPhyBlk:
-       stp     x29, x30, [sp, -48]!
+       stp     x29, x30, [sp, -64]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
        uxth    w20, w0
-       adrp    x19, :got:g_gc_bad_block_temp_num
-       mov     w0, w20
+       adrp    x19, .LANCHOR2
        stp     x21, x22, [sp,32]
+       mov     w0, w20
+       add     x22, x19, :lo12:.LANCHOR2
+       str     x23, [sp,48]
        bl      P2V_block_in_plane
        uxth    w21, w0
-       ldr     x1, [x19, #:got_lo12:g_gc_bad_block_temp_num]
-       adrp    x0, .LC77
+       ldrh    w1, [x22,956]
+       adrp    x0, .LC78
        mov     w2, w20
-       add     x0, x0, :lo12:.LC77
-       ldrh    w1, [x1]
+       add     x0, x0, :lo12:.LC78
        bl      printk
        mov     w0, w21
        bl      FtlGcRefreshBlock
-       adrp    x0, :got:g_inkDie_check_enable
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       ldr     w0, [x0]
-       cbz     w0, .L645
-       adrp    x1, :got:p_erase_count_table
+       ldr     w0, [x22,160]
+       cbz     w0, .L687
        ubfiz   x0, x21, 1, 16
-       ldr     x1, [x1, #:got_lo12:p_erase_count_table]
-       ldr     x2, [x1]
+       ldr     x2, [x22,-80]
        ldrh    w1, [x2,x0]
        cmp     w1, 29
-       bls     .L645
+       bls     .L687
        sub     w1, w1, #30
        strh    w1, [x2,x0]
-.L645:
-       ldr     x0, [x19, #:got_lo12:g_gc_bad_block_temp_num]
-       adrp    x3, :got:g_gc_bad_block_temp_tbl
-       ldrh    w1, [x0]
+.L687:
+       add     x2, x19, :lo12:.LANCHOR2
        mov     x0, 0
-.L646:
+       add     x2, x2, 960
+       ldrh    w1, [x2,-4]
+.L688:
        cmp     w1, w0, uxth
-       bls     .L652
+       bls     .L694
        add     x0, x0, 1
-       ldr     x2, [x3, #:got_lo12:g_gc_bad_block_temp_tbl]
-       add     x2, x2, x0, lsl 1
-       ldrh    w2, [x2,-2]
-       cmp     w2, w20
-       bne     .L646
-       b       .L647
-.L652:
+       add     x3, x2, x0, lsl 1
+       ldrh    w3, [x3,-2]
+       cmp     w3, w20
+       bne     .L688
+       b       .L689
+.L694:
        cmp     w1, 15
-       bhi     .L647
-       ldr     x19, [x19, #:got_lo12:g_gc_bad_block_temp_num]
+       bhi     .L689
+       add     x19, x19, :lo12:.LANCHOR2
        add     w0, w1, 1
-       strh    w0, [x19]
-       adrp    x0, :got:g_gc_bad_block_temp_tbl
-       ldr     x0, [x0, #:got_lo12:g_gc_bad_block_temp_tbl]
-       strh    w20, [x0,w1,sxtw 1]
-.L647:
+       add     x19, x19, 960
+       strh    w0, [x19,-4]
+       strh    w20, [x19,w1,sxtw 1]
+.L689:
        mov     w0, 0
+       ldr     x23, [sp,48]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
-       ldp     x29, x30, [sp], 48
+       ldp     x29, x30, [sp], 64
        ret
        .size   FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
        .align  2
        .global FtlGcReFreshBadBlk
        .type   FtlGcReFreshBadBlk, %function
 FtlGcReFreshBadBlk:
-       adrp    x0, :got:g_gc_bad_block_temp_num
        stp     x29, x30, [sp, -32]!
        add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
        str     x19, [sp,16]
-       ldrh    w1, [x0]
-       cbz     w1, .L654
-       adrp    x0, :got:g_gc_next_blk
-       ldr     x0, [x0, #:got_lo12:g_gc_next_blk]
-       ldrh    w2, [x0]
-       mov     w0, 65535
-       cmp     w2, w0
-       bne     .L654
-       adrp    x19, :got:g_gc_bad_block_gc_index
-       ldr     x0, [x19, #:got_lo12:g_gc_bad_block_gc_index]
-       ldrh    w2, [x0]
+       adrp    x19, .LANCHOR2
+       add     x0, x19, :lo12:.LANCHOR2
+       ldrh    w1, [x0,956]
+       cbz     w1, .L696
+       ldrh    w3, [x0,952]
+       mov     w2, 65535
+       cmp     w3, w2
+       bne     .L696
+       ldrh    w2, [x0,994]
        cmp     w2, w1
-       bcc     .L655
-       strh    wzr, [x0]
-.L655:
-       ldr     x19, [x19, #:got_lo12:g_gc_bad_block_gc_index]
-       adrp    x0, :got:g_gc_bad_block_temp_tbl
-       ldrh    w1, [x19]
-       ldr     x0, [x0, #:got_lo12:g_gc_bad_block_temp_tbl]
+       bcc     .L697
+       strh    wzr, [x0,994]
+.L697:
+       add     x19, x19, :lo12:.LANCHOR2
+       add     x0, x19, 960
+       ldrh    w1, [x19,994]
        ldrh    w0, [x0,w1,sxtw 1]
        bl      P2V_block_in_plane
        bl      FtlGcRefreshBlock
-       ldrh    w0, [x19]
+       ldrh    w0, [x19,994]
        add     w0, w0, 1
-       strh    w0, [x19]
-.L654:
+       strh    w0, [x19,994]
+.L696:
        mov     w0, 0
        ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
        .size   FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
        .align  2
-       .global ftl_malloc
-       .type   ftl_malloc, %function
-ftl_malloc:
-       stp     x29, x30, [sp, -16]!
-       mov     w1, 193
-       sxtw    x0, w0
-       add     x29, sp, 0
-       movk    w1, 0x240, lsl 16
-       bl      __kmalloc
-       ldp     x29, x30, [sp], 16
-       ret
-       .size   ftl_malloc, .-ftl_malloc
-       .align  2
-       .global NandcInit
-       .type   NandcInit, %function
-NandcInit:
-       adrp    x1, :got:gNandChipMap
-       mov     w2, 1
-       stp     x29, x30, [sp, -32]!
-       add     x29, sp, 0
-       ldr     x1, [x1, #:got_lo12:gNandChipMap]
-       str     x19, [sp,16]
-       adrp    x19, :got:gpNandc
-       str     w2, [x1,24]
-       mov     w2, 2
-       str     x0, [x1]
-       str     x0, [x1,16]
-       str     w2, [x1,40]
-       mov     w2, 3
-       str     x0, [x1,32]
-       str     w2, [x1,56]
-       adrp    x2, :got:gBootDdrMode
-       str     x0, [x1,48]
-       str     wzr, [x1,8]
-       ldr     x19, [x19, #:got_lo12:gpNandc]
-       str     x0, [x19]
-       ldr     x2, [x2, #:got_lo12:gBootDdrMode]
-       ldr     w1, [x0]
-       ubfx    x3, x1, 13, 1
-       str     w3, [x2]
-       adrp    x2, :got:gNandcVer
-       ldr     w3, [x0,352]
-       and     w1, w1, 245760
-       ubfx    x3, x3, 16, 4
-       orr     w1, w1, 256
-       ldr     x2, [x2, #:got_lo12:gNandcVer]
-       str     w3, [x2]
-       str     w1, [x0]
-       ldr     x0, [x19]
-       str     wzr, [x0,336]
-       mov     w0, 40
-       bl      NandcTimeCfg
-       ldr     x0, [x19]
-       mov     w1, 8322
-       str     w1, [x0,344]
-       mov     w1, 6145
-       movk    w1, 0x18, lsl 16
-       str     w1, [x0,304]
-       mov     w0, 36864
-       bl      ftl_malloc
-       adrp    x1, :got:gMasterTempBuf
-       ldr     x1, [x1, #:got_lo12:gMasterTempBuf]
-       str     x0, [x1]
-       adrp    x1, :got:gMasterInfo
-       ldr     x1, [x1, #:got_lo12:gMasterInfo]
-       str     x0, [x1]
-       add     x0, x0, 32768
-       str     x0, [x1,8]
-       adrp    x0, :got:gNandcDumpWriteEn
-       str     wzr, [x1,40]
-       ldr     x0, [x0, #:got_lo12:gNandcDumpWriteEn]
-       str     wzr, [x0]
-       ldr     x19, [sp,16]
-       ldp     x29, x30, [sp], 32
-       ret
-       .size   NandcInit, .-NandcInit
-       .align  2
-       .global ftl_free
-       .type   ftl_free, %function
-ftl_free:
-       stp     x29, x30, [sp, -16]!
-       add     x29, sp, 0
-       bl      kfree
-       ldp     x29, x30, [sp], 16
-       ret
-       .size   ftl_free, .-ftl_free
-       .align  2
        .global ftl_memset
        .type   ftl_memset, %function
 ftl_memset:
@@ -5599,104 +5453,113 @@ BuildFlashLsbPageTable:
        stp     x29, x30, [sp, -32]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       mov     w19, w1
-       cbnz    w0, .L664
+       mov     w20, w1
+       cbnz    w0, .L703
+       adrp    x1, .LANCHOR0
        mov     x0, 0
-       adrp    x2, :got:slcPageToMlcPageTbl
-.L665:
-       ldr     x1, [x2, #:got_lo12:slcPageToMlcPageTbl]
-       strh    w0, [x1,x0,lsl 1]
+       add     x1, x1, :lo12:.LANCHOR0
+.L704:
+       add     x2, x1, 196
+       strh    w0, [x2,x0,lsl 1]
        add     x0, x0, 1
        cmp     x0, 256
-       bne     .L665
-.L671:
-       adrp    x20, :got:mlcPageToSlcPageTbl
-       mov     w2, 1024
+       bne     .L704
+.L710:
+       adrp    x19, .LANCHOR2
        mov     w1, 255
-       uxth    w19, w19
-       ldr     x0, [x20, #:got_lo12:mlcPageToSlcPageTbl]
+       add     x19, x19, :lo12:.LANCHOR2
+       mov     w2, 1024
+       add     x19, x19, 996
+       uxth    w20, w20
+       mov     x0, x19
        bl      ftl_memset
+       adrp    x1, .LANCHOR0
        mov     x0, 0
-       adrp    x2, :got:slcPageToMlcPageTbl
-       b       .L666
-.L664:
+       add     x1, x1, :lo12:.LANCHOR0
+       b       .L705
+.L703:
        cmp     w0, 1
-       bne     .L667
+       bne     .L706
+       adrp    x3, .LANCHOR0
        mov     x0, 0
        mov     w4, 3
        mov     w5, 2
-       adrp    x3, :got:slcPageToMlcPageTbl
-.L670:
+       add     x3, x3, :lo12:.LANCHOR0
+.L709:
        cmp     x0, 3
        uxth    w1, w0
        mov     w2, w1
-       bls     .L668
+       bls     .L707
        ubfiz   w2, w1, 1, 15
        and     w1, w1, 1
        cmp     w1, wzr
        csel    w1, w4, w5, ne
        sub     w2, w2, w1
        uxth    w2, w2
-.L668:
-       ldr     x1, [x3, #:got_lo12:slcPageToMlcPageTbl]
+.L707:
+       add     x1, x3, 196
        strh    w2, [x1,x0,lsl 1]
        add     x0, x0, 1
        cmp     x0, 256
-       bne     .L670
-       b       .L671
-.L667:
+       bne     .L709
+       b       .L710
+.L706:
        cmp     w0, 2
-       bne     .L672
-       mov     w2, 65535
+       bne     .L711
+       adrp    x3, .LANCHOR0
+       mov     w1, 65535
        mov     x0, 0
-       adrp    x4, :got:slcPageToMlcPageTbl
-.L674:
-       ldr     x3, [x4, #:got_lo12:slcPageToMlcPageTbl]
+       add     x3, x3, :lo12:.LANCHOR0
+.L713:
+       add     x4, x3, 196
        cmp     x0, 1
-       uxth    w1, w0
-       csel    w1, w2, w1, hi
-       add     w2, w2, 2
-       strh    w1, [x3,x0,lsl 1]
+       uxth    w2, w0
+       csel    w2, w1, w2, hi
+       add     w1, w1, 2
+       strh    w2, [x4,x0,lsl 1]
        add     x0, x0, 1
        cmp     x0, 256
-       uxth    w2, w2
-       bne     .L674
-       b       .L671
-.L672:
+       uxth    w1, w1
+       bne     .L713
+       b       .L710
+.L711:
        cmp     w0, 3
-       bne     .L675
+       bne     .L714
+       adrp    x3, .LANCHOR0
        mov     x0, 0
-       mov     w5, 5
-       mov     w6, 4
-       adrp    x4, :got:slcPageToMlcPageTbl
-.L678:
+       mov     w4, 5
+       mov     w5, 4
+       add     x3, x3, :lo12:.LANCHOR0
+.L717:
        cmp     x0, 5
-       uxth    w3, w0
-       mov     w2, w3
-       bls     .L676
-       ubfiz   w2, w3, 1, 15
-       and     w3, w3, 1
-       cmp     w3, wzr
-       csel    w1, w5, w6, ne
+       uxth    w1, w0
+       mov     w2, w1
+       bls     .L715
+       ubfiz   w2, w1, 1, 15
+       and     w1, w1, 1
+       cmp     w1, wzr
+       csel    w1, w4, w5, ne
        sub     w2, w2, w1
        uxth    w2, w2
-.L676:
-       ldr     x1, [x4, #:got_lo12:slcPageToMlcPageTbl]
+.L715:
+       add     x1, x3, 196
        strh    w2, [x1,x0,lsl 1]
        add     x0, x0, 1
        cmp     x0, 256
-       bne     .L678
-       b       .L671
-.L675:
+       bne     .L717
+       b       .L710
+.L714:
        cmp     w0, 4
-       bne     .L679
-       adrp    x2, :got:slcPageToMlcPageTbl
-       mov     w1, 1
+       bne     .L718
+       adrp    x1, .LANCHOR0
        mov     w5, 7
+       add     x1, x1, :lo12:.LANCHOR0
        mov     w4, 6
-       ldr     x2, [x2, #:got_lo12:slcPageToMlcPageTbl]
+       add     x2, x1, 196
        strh    w0, [x2,8]
        mov     w0, 5
+       strh    wzr, [x1,196]
+       mov     w1, 1
        strh    w0, [x2,10]
        mov     w0, 7
        strh    w1, [x2,2]
@@ -5707,9 +5570,8 @@ BuildFlashLsbPageTable:
        mov     w1, 3
        strh    w0, [x2,14]
        mov     w0, 8
-       strh    wzr, [x2]
        strh    w1, [x2,6]
-.L681:
+.L720:
        and     w3, w0, 1
        ubfiz   w1, w0, 1, 15
        add     w0, w0, 1
@@ -5720,44 +5582,65 @@ BuildFlashLsbPageTable:
        sub     w1, w1, w3
        cmp     w0, 256
        strh    w1, [x2,14]
-       bne     .L681
-       b       .L671
-.L679:
+       bne     .L720
+       b       .L710
+.L718:
+       cmp     w0, 5
+       bne     .L721
+       adrp    x2, .LANCHOR0
+       mov     x0, 0
+       add     x2, x2, :lo12:.LANCHOR0
+.L722:
+       add     x1, x2, 196
+       strh    w0, [x1,x0,lsl 1]
+       add     x0, x0, 1
+       cmp     x0, 16
+       bne     .L722
+       mov     x0, 0
+.L723:
+       add     x2, x1, x0
+       add     w3, w0, 16
+       add     x0, x0, 2
+       cmp     x0, 480
+       strh    w3, [x2,32]
+       bne     .L723
+       b       .L710
+.L721:
        cmp     w0, 6
-       bne     .L671
+       bne     .L710
+       adrp    x1, .LANCHOR0
        mov     x2, 0
-       mov     w5, 12
-       mov     w6, 10
-       adrp    x4, :got:slcPageToMlcPageTbl
-.L684:
+       mov     w4, 12
+       mov     w5, 10
+       add     x1, x1, :lo12:.LANCHOR0
+.L726:
        cmp     x2, 5
        uxth    w3, w2
        mov     w0, w3
-       bls     .L682
+       bls     .L724
        add     w0, w3, w3, lsl 1
        and     w3, w3, 1
        cmp     w3, wzr
        uxth    w0, w0
-       csel    w1, w5, w6, ne
-       sub     w0, w0, w1
+       csel    w3, w4, w5, ne
+       sub     w0, w0, w3
        uxth    w0, w0
-.L682:
-       ldr     x1, [x4, #:got_lo12:slcPageToMlcPageTbl]
-       strh    w0, [x1,x2,lsl 1]
+.L724:
+       add     x3, x1, 196
+       strh    w0, [x3,x2,lsl 1]
        add     x2, x2, 1
        cmp     x2, 256
-       bne     .L684
-       b       .L671
-.L666:
-       cmp     w19, w0, uxth
-       bls     .L700
-       ldr     x1, [x2, #:got_lo12:slcPageToMlcPageTbl]
-       ldr     x3, [x20, #:got_lo12:mlcPageToSlcPageTbl]
-       ldrh    w1, [x1,x0,lsl 1]
+       bne     .L726
+       b       .L710
+.L705:
+       cmp     w20, w0, uxth
+       bls     .L744
+       add     x2, x1, 196
+       ldrh    w2, [x2,x0,lsl 1]
        add     x0, x0, 1
-       strh    w1, [x3,w1,sxtw 1]
-       b       .L666
-.L700:
+       strh    w2, [x19,w2,sxtw 1]
+       b       .L705
+.L744:
        ldp     x19, x20, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
@@ -5768,146 +5651,119 @@ BuildFlashLsbPageTable:
 FlashDieInfoInit:
        stp     x29, x30, [sp, -96]!
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       adrp    x19, :got:gNandMaxDie
        stp     x21, x22, [sp,32]
+       adrp    x22, .LANCHOR2
+       str     x27, [sp,80]
+       add     x1, x22, :lo12:.LANCHOR2
+       adrp    x21, .LANCHOR0
+       stp     x19, x20, [sp,16]
        stp     x23, x24, [sp,48]
-       ldr     x0, [x19, #:got_lo12:gNandMaxDie]
-       adrp    x23, :got:gNandMaxChip
        stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
-       strb    wzr, [x0]
-       adrp    x22, :got:gBlockPageAlignSize
-       ldr     x0, [x23, #:got_lo12:gNandMaxChip]
-       strb    wzr, [x0]
-       adrp    x0, :got:gNandParaInfo
-       ldr     x0, [x0, #:got_lo12:gNandParaInfo]
-       ldrh    w0, [x0,10]
-       cmp     w0, 256
-       bls     .L702
-       ldr     x0, [x22, #:got_lo12:gBlockPageAlignSize]
+       strb    wzr, [x1,2020]
+       adrp    x1, .LANCHOR1+482
+       add     x0, x21, :lo12:.LANCHOR0
+       ldrh    w1, [x1,#:lo12:.LANCHOR1+482]
+       strb    wzr, [x0,1845]
+       cmp     w1, 256
+       bls     .L746
        mov     w1, 512
-       b       .L718
-.L702:
-       cmp     w0, 128
-       bhi     .L704
-       ldr     x1, [x22, #:got_lo12:gBlockPageAlignSize]
-       str     w0, [x1]
-       b       .L703
-.L704:
-       ldr     x0, [x22, #:got_lo12:gBlockPageAlignSize]
+       b       .L762
+.L746:
+       cmp     w1, 128
+       bls     .L762
        mov     w1, 256
-.L718:
-       str     w1, [x0]
-.L703:
-       adrp    x20, :got:DieCsIndex
-       mov     w1, 0
+.L762:
+       add     x19, x21, :lo12:.LANCHOR0
+       str     w1, [x0,12]
        mov     w2, 8
-       adrp    x21, :got:DieAddrs
-       mov     x25, 0
-       adrp    x27, :got:gpNandParaInfo
-       ldr     x0, [x20, #:got_lo12:DieCsIndex]
-       adrp    x28, :got:IDByte
+       mov     w1, 0
+       add     x0, x19, 1848
+       add     x25, x19, 708
+       mov     x24, 0
+       add     x26, x19, 1620
        bl      ftl_memset
-       ldr     x0, [x21, #:got_lo12:DieAddrs]
        mov     w1, 0
        mov     w2, 32
+       mov     x0, x25
        bl      ftl_memset
-       adrp    x0, :got:gDieOp
+       add     x0, x19, 1652
        mov     w1, 0
        mov     w2, 192
-       ldr     x0, [x0, #:got_lo12:gDieOp]
        bl      ftl_memset
-.L706:
-       ldr     x0, [x27, #:got_lo12:gpNandParaInfo]
-       adrp    x24, :got:gpNandParaInfo
-       ldr     x1, [x28, #:got_lo12:IDByte]
-       adrp    x26, :got:IDByte
-       ldr     x2, [x0]
-       add     x1, x1, x25, lsl 3
-       add     x0, x2, 1
-       ldrb    w2, [x2]
+       ldr     x20, [x19,744]
+       add     x23, x20, 1
+.L750:
+       ldrb    w2, [x20]
+       mov     x0, x23
+       add     x1, x26, x24, lsl 3
        bl      FlashMemCmp8
-       cbnz    w0, .L705
-       ldr     x2, [x19, #:got_lo12:gNandMaxDie]
-       ldr     x3, [x21, #:got_lo12:DieAddrs]
-       ldrb    w1, [x2]
-       str     w0, [x3,w1,sxtw 2]
+       cbnz    w0, .L749
+       ldrb    w1, [x19,1845]
+       str     w0, [x25,w1,sxtw 2]
        add     w0, w1, 1
-       strb    w0, [x2]
-       ldr     x0, [x20, #:got_lo12:DieCsIndex]
-       strb    w25, [x0,w1,sxtw]
-.L705:
-       add     x25, x25, 1
-       cmp     x25, 4
-       bne     .L706
-       ldr     x0, [x19, #:got_lo12:gNandMaxDie]
-       ldr     x23, [x23, #:got_lo12:gNandMaxChip]
-       ldrb    w0, [x0]
-       strb    w0, [x23]
-       ldr     x0, [x24, #:got_lo12:gpNandParaInfo]
-       ldr     x0, [x0]
-       ldrb    w0, [x0,8]
+       add     x1, x19, x1, sxtw
+       strb    w0, [x19,1845]
+       strb    w24, [x1,1848]
+.L749:
+       add     x24, x24, 1
+       cmp     x24, 4
+       bne     .L750
+       add     x19, x21, :lo12:.LANCHOR0
+       add     x0, x22, :lo12:.LANCHOR2
+       ldrb    w1, [x19,1845]
+       strb    w1, [x0,2020]
+       ldrb    w0, [x20,8]
        cmp     w0, 2
-       beq     .L711
-.L710:
-       ldr     x24, [x24, #:got_lo12:gpNandParaInfo]
-       adrp    x1, :got:gTotleBlock
-       ldr     x19, [x19, #:got_lo12:gNandMaxDie]
-       ldr     x2, [x24]
-       ldrb    w0, [x19]
-       ldr     x1, [x1, #:got_lo12:gTotleBlock]
-       ldrb    w3, [x2,13]
-       ldrh    w2, [x2,14]
-       mul     w0, w0, w3
-       mul     w0, w0, w2
-       strh    w0, [x1]
-       ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
+       beq     .L751
+.L755:
+       add     x21, x21, :lo12:.LANCHOR0
+       ldrb    w1, [x20,13]
+       add     x22, x22, :lo12:.LANCHOR2
+       ldr     x27, [sp,80]
        ldp     x23, x24, [sp,48]
+       ldrb    w0, [x21,1845]
        ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
+       mul     w0, w0, w1
+       ldrh    w1, [x20,14]
+       ldp     x19, x20, [sp,16]
+       mul     w0, w0, w1
+       strh    w0, [x22,2022]
+       ldp     x21, x22, [sp,32]
        ldp     x29, x30, [sp], 96
        ret
-.L711:
-       mov     x23, 0
-.L707:
-       ldr     x25, [x24, #:got_lo12:gpNandParaInfo]
-       ldr     x1, [x26, #:got_lo12:IDByte]
-       ldr     x2, [x25]
-       add     x1, x1, x23, lsl 3
-       add     x0, x2, 1
-       ldrb    w2, [x2]
+.L751:
+       ldr     w26, [x19,12]
+       mov     x24, 0
+       add     x27, x19, 1620
+       add     x25, x19, 708
+.L754:
+       ldrb    w2, [x20]
+       mov     x0, x23
+       add     x1, x27, x24, lsl 3
        bl      FlashMemCmp8
-       cbnz    w0, .L708
-       ldr     x0, [x19, #:got_lo12:gNandMaxDie]
-       ldr     x3, [x25]
-       ldr     x1, [x22, #:got_lo12:gBlockPageAlignSize]
-       ldrb    w4, [x0]
-       ldrb    w0, [x3,13]
-       ldr     w1, [x1]
-       mov     x2, x4
+       cbnz    w0, .L752
+       ldrb    w1, [x20,13]
+       ldrb    w3, [x19,1845]
+       mul     w0, w1, w26
+       ldrh    w1, [x20,14]
+       mov     x2, x3
+       and     w1, w1, 65280
        mul     w1, w0, w1
-       ldrh    w0, [x3,14]
-       and     w0, w0, 65280
-       mul     w0, w1, w0
-       ldr     x1, [x21, #:got_lo12:DieAddrs]
-       str     w0, [x1,w4,sxtw 2]
-       ldrb    w3, [x3,23]
-       cbz     w3, .L709
-       lsl     w0, w0, 1
-       str     w0, [x1,w4,sxtw 2]
-.L709:
-       ldr     x0, [x19, #:got_lo12:gNandMaxDie]
+       str     w1, [x25,w3,sxtw 2]
+       ldrb    w0, [x20,23]
+       cbz     w0, .L753
+       lsl     w1, w1, 1
+       str     w1, [x25,w3,sxtw 2]
+.L753:
+       add     x0, x19, x3
        add     w2, w2, 1
-       strb    w2, [x0]
-       ldr     x0, [x20, #:got_lo12:DieCsIndex]
-       strb    w23, [x0,x4]
-.L708:
-       add     x23, x23, 1
-       cmp     x23, 4
-       bne     .L707
-       b       .L710
+       strb    w2, [x19,1845]
+       strb    w24, [x0,1848]
+.L752:
+       add     x24, x24, 1
+       cmp     x24, 4
+       bne     .L754
+       b       .L755
        .size   FlashDieInfoInit, .-FlashDieInfoInit
        .align  2
        .global ReadFlashInfo
@@ -5920,55 +5776,48 @@ ReadFlashInfo:
        str     x19, [sp,16]
        mov     x19, x0
        bl      ftl_memset
-       adrp    x2, :got:gpNandParaInfo
-       adrp    x1, :got:gBlockPageAlignSize
-       adrp    x4, :got:DieCsIndex
+       adrp    x1, .LANCHOR0
        mov     w5, 1
-       ldr     x2, [x2, #:got_lo12:gpNandParaInfo]
-       ldr     x1, [x1, #:got_lo12:gBlockPageAlignSize]
-       ldr     x0, [x2]
-       ldrb    w3, [x0,9]
-       ldr     w0, [x1]
-       adrp    x1, :got:gNandFlashEccBits
-       mul     w0, w0, w3
+       add     x1, x1, :lo12:.LANCHOR0
+       ldr     x0, [x1,744]
+       ldrb    w2, [x0,9]
+       ldr     w0, [x1,12]
+       mul     w0, w0, w2
+       ldrb    w2, [x1,1944]
+       strb    w2, [x19,7]
        uxth    w0, w0
        strh    w0, [x19,4]
-       ldr     x1, [x1, #:got_lo12:gNandFlashEccBits]
-       ldrb    w1, [x1]
-       strb    w1, [x19,7]
-       ldr     x3, [x2]
-       ldrb    w1, [x3,13]
-       mul     w0, w1, w0
-       ldrh    w1, [x3,14]
-       mul     w0, w0, w1
-       ldrb    w1, [x3,8]
-       mul     w0, w0, w1
+       ldr     x3, [x1,744]
+       ldrb    w2, [x3,13]
+       mul     w0, w2, w0
+       ldrh    w2, [x3,14]
+       mul     w0, w0, w2
+       ldrb    w2, [x3,8]
+       mul     w0, w0, w2
        str     w0, [x19]
-       ldr     x0, [x2]
+       ldr     x0, [x1,744]
+       ldrb    w4, [x1,1845]
        ldrb    w0, [x0,9]
        strb    w0, [x19,6]
        mov     w0, 32
        strb    w0, [x19,8]
-       ldr     x0, [x2]
+       ldr     x0, [x1,744]
        ldrb    w0, [x0,7]
        strb    w0, [x19,9]
-       adrp    x0, :got:gNandMaxDie
-       strb    wzr, [x19,10]
-       ldr     x0, [x0, #:got_lo12:gNandMaxDie]
-       ldrb    w3, [x0]
        mov     x0, 0
-.L720:
-       cmp     w3, w0, uxtb
-       bls     .L722
-       ldr     x1, [x4, #:got_lo12:DieCsIndex]
-       ldrb    w2, [x19,10]
-       ldrb    w1, [x0,x1]
+       strb    wzr, [x19,10]
+.L764:
+       cmp     w4, w0, uxtb
+       bls     .L766
+       add     x2, x1, 1848
+       ldrb    w3, [x19,10]
+       ldrb    w2, [x0,x2]
        add     x0, x0, 1
-       lsl     w1, w5, w1
-       orr     w1, w1, w2
-       strb    w1, [x19,10]
-       b       .L720
-.L722:
+       lsl     w2, w5, w2
+       orr     w2, w2, w3
+       strb    w2, [x19,10]
+       b       .L764
+.L766:
        ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
@@ -5977,585 +5826,344 @@ ReadFlashInfo:
        .global FtlMemInit
        .type   FtlMemInit, %function
 FtlMemInit:
-       adrp    x0, :got:g_SlcPartLbaEndSector
+       stp     x29, x30, [sp, -80]!
        mov     w1, 65535
-       stp     x29, x30, [sp, -224]!
        add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
+       stp     x21, x22, [sp,32]
+       adrp    x21, .LANCHOR2
+       adrp    x22, .LANCHOR0
+       add     x0, x21, :lo12:.LANCHOR2
+       add     x3, x22, :lo12:.LANCHOR0
        stp     x19, x20, [sp,16]
        stp     x23, x24, [sp,48]
-       stp     x21, x22, [sp,32]
-       stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
-       str     wzr, [x0]
-       adrp    x0, :got:g_all_blk_used_slc_mode
-       adrp    x20, :got:c_ftl_nand_planes_num
-       ldr     x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
-       str     wzr, [x0]
-       adrp    x0, :got:g_GlobalSysVersion
-       ldr     x0, [x0, #:got_lo12:g_GlobalSysVersion]
-       str     wzr, [x0]
-       adrp    x0, :got:g_GlobalDataVersion
-       ldr     x0, [x0, #:got_lo12:g_GlobalDataVersion]
-       str     wzr, [x0]
-       adrp    x0, :got:g_totle_gc_page_count
-       ldr     x0, [x0, #:got_lo12:g_totle_gc_page_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_totle_write_page_count
-       ldr     x0, [x0, #:got_lo12:g_totle_write_page_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_totle_discard_page_count
-       ldr     x0, [x0, #:got_lo12:g_totle_discard_page_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_totle_cache_write_count
-       ldr     x0, [x0, #:got_lo12:g_totle_cache_write_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_totle_l2p_write_count
-       ldr     x0, [x0, #:got_lo12:g_totle_l2p_write_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_totle_read_page_count
-       ldr     x0, [x0, #:got_lo12:g_totle_read_page_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_totle_mlc_erase_count
-       ldr     x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_totle_slc_erase_count
-       ldr     x0, [x0, #:got_lo12:g_totle_slc_erase_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_totle_sys_slc_erase_count
-       ldr     x0, [x0, #:got_lo12:g_totle_sys_slc_erase_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_max_erase_count
-       ldr     x0, [x0, #:got_lo12:g_max_erase_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_min_erase_count
-       ldr     x0, [x0, #:got_lo12:g_min_erase_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_in_gc_progress
-       ldr     x0, [x0, #:got_lo12:g_in_gc_progress]
-       str     wzr, [x0]
-       adrp    x0, :got:g_in_swl_replace
-       ldr     x0, [x0, #:got_lo12:g_in_swl_replace]
-       str     wzr, [x0]
-       adrp    x0, :got:g_gc_head_data_block
-       ldr     x0, [x0, #:got_lo12:g_gc_head_data_block]
-       str     w1, [x0]
-       adrp    x0, :got:g_gc_head_data_block_count
+       str     x25, [sp,64]
+       str     w1, [x0,2032]
        mov     w1, -1
-       ldr     x0, [x0, #:got_lo12:g_gc_head_data_block_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_gc_skip_write_count
-       ldr     x0, [x0, #:got_lo12:g_gc_skip_write_count]
-       str     wzr, [x0]
-       adrp    x0, :got:g_cur_erase_blk
-       ldr     x0, [x0, #:got_lo12:g_cur_erase_blk]
-       str     wzr, [x0]
-       adrp    x0, :got:g_gc_next_blk
-       ldr     x0, [x0, #:got_lo12:g_gc_next_blk]
-       strh    w1, [x0]
-       adrp    x0, :got:g_gc_next_blk_1
-       ldr     x0, [x0, #:got_lo12:g_gc_next_blk_1]
-       strh    w1, [x0]
-       adrp    x0, :got:g_gc_free_blk_threshold
+       str     wzr, [x0,2024]
+       strh    w1, [x0,952]
+       strh    w1, [x0,954]
        mov     w1, 32
-       ldr     x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
-       strh    w1, [x0]
-       adrp    x0, :got:g_gc_merge_free_blk_threshold
+       str     wzr, [x0,344]
+       str     wzr, [x0,196]
+       str     wzr, [x0,200]
+       str     wzr, [x0,184]
+       str     wzr, [x0,172]
+       str     wzr, [x0,168]
+       str     wzr, [x0,176]
+       str     wzr, [x0,180]
+       str     wzr, [x0,164]
+       str     wzr, [x0,204]
+       str     wzr, [x0,208]
+       str     wzr, [x0,-72]
+       str     wzr, [x0,216]
+       str     wzr, [x0,220]
+       str     wzr, [x0,2028]
+       str     wzr, [x0,876]
+       str     wzr, [x0,2036]
+       str     wzr, [x0,868]
+       str     wzr, [x3,2108]
+       strh    w1, [x0,864]
        mov     w1, 128
-       ldr     x0, [x0, #:got_lo12:g_gc_merge_free_blk_threshold]
-       strh    w1, [x0]
-       adrp    x0, :got:g_gc_blk_index
-       adrp    x1, :got:c_wr_page_buf_num
-       mov     x23, x1
-       ldr     x0, [x0, #:got_lo12:g_gc_blk_index]
-       strh    wzr, [x0]
-       adrp    x0, :got:g_gc_bad_block_temp_num
-       ldr     x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
-       strh    wzr, [x0]
-       adrp    x0, :got:g_gc_bad_block_gc_index
-       ldr     x0, [x0, #:got_lo12:g_gc_bad_block_gc_index]
-       strh    wzr, [x0]
-       adrp    x0, :got:c_ftl_nand_sec_pre_page
-       ldr     x3, [x1, #:got_lo12:c_wr_page_buf_num]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w2, [x0]
-       mov     w0, 1024
-       sdiv    w2, w0, w2
-       str     w2, [x3]
-       ldr     x0, [x20, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       lsl     w0, w0, 2
-       cmp     w2, w0
-       bls     .L724
-       str     w0, [x3]
-.L724:
-       adrp    x0, :got:g_wr_page_num
-       adrp    x19, :got:c_ftl_nand_page_pre_super_blk
-       mov     w21, 56
-       adrp    x28, :got:req_gc_dst
-       adrp    x27, :got:p_sys_data_buf
-       adrp    x26, :got:p_sys_data_buf_1
-       ldr     x0, [x0, #:got_lo12:g_wr_page_num]
-       adrp    x25, :got:p_vendor_data_buf
-       adrp    x24, :got:p_gc_data_buf
-       str     wzr, [x0]
-       ldr     x19, [x19, #:got_lo12:c_ftl_nand_page_pre_super_blk]
-       ldrh    w0, [x19]
+       ldrh    w2, [x3,2032]
+       strh    w1, [x0,866]
+       mov     w1, 1024
+       strh    wzr, [x0,872]
+       sdiv    w2, w1, w2
+       ldrh    w1, [x3,1952]
+       strh    wzr, [x0,956]
+       lsl     w1, w1, 2
+       strh    wzr, [x0,994]
+       str     w2, [x0,2040]
+       cmp     w2, w1
+       bls     .L768
+       str     w1, [x0,2040]
+.L768:
+       add     x20, x22, :lo12:.LANCHOR0
+       add     x19, x21, :lo12:.LANCHOR2
+       mov     w24, 56
+       ldrh    w0, [x20,2030]
+       str     wzr, [x20,2088]
        lsl     w0, w0, 1
        bl      ftl_malloc
-       adrp    x8, :got:p_gc_blk_tbl
-       str     x8, [x29,96]
-       ldr     x1, [x8, #:got_lo12:p_gc_blk_tbl]
-       str     x0, [x1]
+       str     x0, [x19,928]
+       ldrh    w1, [x20,2030]
        mov     w0, 12
-       ldrh    w1, [x19]
        mul     w0, w1, w0
        bl      ftl_malloc
-       adrp    x7, :got:p_gc_page_info
-       str     x7, [x29,104]
-       ldr     x1, [x7, #:got_lo12:p_gc_page_info]
-       str     x0, [x1]
-       ldr     x20, [x20, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w19, [x20]
-       mul     w19, w19, w21
-       lsl     w22, w19, 3
-       mov     w0, w22
+       ldrh    w23, [x20,1952]
+       str     x0, [x19,944]
+       mul     w23, w23, w24
+       lsl     w25, w23, 3
+       mov     w0, w25
        bl      ftl_malloc
-       adrp    x6, :got:req_read
-       str     x6, [x29,112]
-       ldr     x1, [x6, #:got_lo12:req_read]
-       str     x0, [x1]
-       mov     w0, w19
+       str     x0, [x19,2048]
+       mov     w0, w23
        bl      ftl_malloc
-       ldr     x1, [x28, #:got_lo12:req_gc_dst]
-       str     x0, [x1]
-       mov     w0, w22
+       str     x0, [x19,2056]
+       mov     w0, w25
        bl      ftl_malloc
-       adrp    x5, :got:req_prgm
-       str     x5, [x29,120]
-       ldr     x1, [x5, #:got_lo12:req_prgm]
-       str     x0, [x1]
-       mov     w0, w19
+       str     x0, [x19,2064]
+       mov     w0, w23
        bl      ftl_malloc
-       adrp    x4, :got:req_erase
-       str     x4, [x29,128]
-       ldr     x1, [x4, #:got_lo12:req_erase]
-       str     x0, [x1]
-       mov     w0, w19
+       str     x0, [x19,-88]
+       mov     w0, w23
        bl      ftl_malloc
-       adrp    x3, :got:req_gc
-       str     x3, [x29,136]
-       ldr     x1, [x3, #:got_lo12:req_gc]
-       str     x0, [x1]
-       ldr     x22, [x23, #:got_lo12:c_wr_page_buf_num]
-       ldr     w0, [x22]
-       mul     w0, w0, w21
+       str     x0, [x19,912]
+       ldr     w0, [x19,2040]
+       mul     w0, w0, w24
        bl      ftl_malloc
-       adrp    x2, :got:req_wr_io
-       adrp    x12, :got:c_ftl_nand_byte_pre_page
-       adrp    x9, :got:c_gc_page_buf_num
-       ldr     x2, [x2, #:got_lo12:req_wr_io]
-       str     x0, [x2]
-       ldrh    w0, [x20]
-       ldr     x12, [x12, #:got_lo12:c_ftl_nand_byte_pre_page]
-       ldr     x23, [x9, #:got_lo12:c_gc_page_buf_num]
+       str     x0, [x20,2096]
+       ldrh    w0, [x20,1952]
+       ldrh    w23, [x20,2036]
        lsl     w0, w0, 1
        add     w0, w0, 1
-       str     x12, [x29,144]
-       ldrh    w19, [x12]
-       str     w0, [x23]
-       mov     w0, w19
+       str     w0, [x19,920]
+       mov     w0, w23
        bl      ftl_malloc
-       ldr     x2, [x27, #:got_lo12:p_sys_data_buf]
-       str     x0, [x2]
-       mov     w0, w19
+       str     x0, [x19,-64]
+       mov     w0, w23
        bl      ftl_malloc
-       ldr     x2, [x26, #:got_lo12:p_sys_data_buf_1]
-       str     x0, [x2]
-       mov     w0, w19
+       str     x0, [x19,2072]
+       mov     w0, w23
        bl      ftl_malloc
-       ldr     x2, [x25, #:got_lo12:p_vendor_data_buf]
-       str     x0, [x2]
-       ldr     w0, [x23]
-       mul     w0, w19, w0
+       str     x0, [x19,2080]
+       ldr     w0, [x19,920]
+       mul     w0, w23, w0
        bl      ftl_malloc
-       ldr     x2, [x24, #:got_lo12:p_gc_data_buf]
-       str     x0, [x2]
-       ldr     w0, [x22]
-       mul     w0, w19, w0
+       str     x0, [x19,896]
+       ldr     w0, [x19,2040]
+       mul     w0, w23, w0
        bl      ftl_malloc
-       adrp    x2, :got:p_wr_io_data_buf
-       ldr     x2, [x2, #:got_lo12:p_wr_io_data_buf]
-       str     x0, [x2]
-       mov     w0, w19
+       str     x0, [x19,2088]
+       mov     w0, w23
        bl      ftl_malloc
-       adrp    x1, :got:p_io_data_buf_0
-       ldr     x2, [x1, #:got_lo12:p_io_data_buf_0]
-       str     x0, [x2]
-       mov     w0, w19
+       str     x0, [x19,2096]
+       mov     w0, w23
        bl      ftl_malloc
-       adrp    x1, :got:p_io_data_buf_1
-       ldr     x2, [x1, #:got_lo12:p_io_data_buf_1]
-       str     x0, [x2]
+       str     x0, [x19,2104]
+       ldr     w1, [x19,920]
        mov     w0, 24
-       ldr     w2, [x23]
-       mul     w0, w2, w0
+       mul     w0, w1, w0
        bl      ftl_malloc
-       ldrh    w19, [x20]
-       adrp    x1, :got:gp_gc_page_buf_info
-       ldr     x2, [x1, #:got_lo12:gp_gc_page_buf_info]
-       str     x0, [x2]
-       adrp    x2, :got:c_ftl_nand_byte_pre_oob
-       ldr     x21, [x2, #:got_lo12:c_ftl_nand_byte_pre_oob]
-       ldrh    w0, [x21]
-       mul     w19, w0, w19
-       mov     w0, w19
+       ldrh    w23, [x20,1952]
+       str     x0, [x19,888]
+       ldrh    w0, [x20,2038]
+       mul     w23, w0, w23
+       mov     w0, w23
        bl      ftl_malloc
-       adrp    x1, :got:p_sys_spare_buf
-       ldr     x10, [x1, #:got_lo12:p_sys_spare_buf]
-       str     x0, [x10]
-       lsl     w0, w19, 3
+       str     x0, [x19,2112]
+       lsl     w0, w23, 3
        bl      ftl_malloc
-       adrp    x1, :got:p_io_spare_buf
-       ldr     x10, [x1, #:got_lo12:p_io_spare_buf]
-       str     x0, [x10]
-       ldrh    w10, [x21]
-       ldr     w0, [x23]
-       adrp    x23, :got:p_io_data_buf_0
-       mul     w0, w10, w0
+       str     x0, [x19,2120]
+       ldrh    w1, [x20,2038]
+       ldr     w0, [x19,920]
+       mul     w0, w1, w0
        bl      ftl_malloc
-       adrp    x15, :got:p_gc_spare_buf
-       ldrh    w2, [x21]
-       str     x15, [x29,152]
-       adrp    x21, :got:gp_gc_page_buf_info
-       ldr     x9, [x15, #:got_lo12:p_gc_spare_buf]
-       str     x0, [x9]
-       ldr     w0, [x22]
-       adrp    x22, :got:p_io_data_buf_1
-       mul     w0, w2, w0
+       str     x0, [x19,904]
+       ldrh    w1, [x20,2038]
+       ldr     w0, [x19,2040]
+       mul     w0, w1, w0
        bl      ftl_malloc
-       adrp    x1, :got:p_wr_io_spare_buf
-       adrp    x13, :got:c_ftl_nand_blk_pre_plane
-       ldr     x1, [x1, #:got_lo12:p_wr_io_spare_buf]
-       str     x0, [x1]
-       adrp    x1, :got:g_ect_tbl_info_size
-       ldr     x19, [x13, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       ldr     x20, [x1, #:got_lo12:g_ect_tbl_info_size]
-       ldrh    w0, [x19]
+       str     x0, [x19,2128]
+       ldrh    w0, [x20,1962]
        lsl     w0, w0, 1
-       strh    w0, [x20]
+       strh    w0, [x19,2136]
        and     w0, w0, 65534
        bl      ftl_malloc
-       adrp    x2, :got:p_swl_mul_table
-       ldr     x2, [x2, #:got_lo12:p_swl_mul_table]
-       str     x0, [x2]
-       ldrh    w0, [x20]
+       str     x0, [x19,2144]
+       ldrh    w0, [x19,2136]
        add     x0, x0, 547
        lsr     x0, x0, 9
-       strh    w0, [x20]
+       strh    w0, [x19,2136]
        lsl     w0, w0, 9
        bl      ftl_malloc
-       adrp    x1, :got:gp_ect_tbl_info
-       adrp    x14, :got:p_erase_count_table
-       str     x14, [x29,160]
-       ldr     x1, [x1, #:got_lo12:gp_ect_tbl_info]
-       str     x0, [x1]
+       ldrh    w23, [x20,1962]
+       str     x0, [x19,2152]
        add     x0, x0, 32
-       ldr     x1, [x14, #:got_lo12:p_erase_count_table]
-       str     x0, [x1]
-       ldrh    w1, [x19]
-       lsl     w20, w1, 1
-       mov     w0, w20
+       lsl     w23, w23, 1
+       str     x0, [x19,-80]
+       mov     w0, w23
        bl      ftl_malloc
-       adrp    x2, :got:p_valid_page_count_check_table
-       ldr     x2, [x2, #:got_lo12:p_valid_page_count_check_table]
-       str     x0, [x2]
-       mov     w0, w20
+       str     x0, [x19,2160]
+       mov     w0, w23
        bl      ftl_malloc
-       adrp    x9, :got:p_valid_page_count_table
-       adrp    x16, :got:c_ftl_nand_max_map_blks
-       str     x9, [x29,168]
-       ldr     x1, [x9, #:got_lo12:p_valid_page_count_table]
-       str     x0, [x1]
-       ldr     x16, [x16, #:got_lo12:c_ftl_nand_max_map_blks]
-       str     x16, [x29,208]
-       ldr     w1, [x16]
-       lsl     w20, w1, 1
-       mov     w0, w20
+       ldr     w23, [x20,2056]
+       str     x0, [x19,-40]
+       lsl     w23, w23, 1
+       mov     w0, w23
        bl      ftl_malloc
-       adrp    x11, :got:p_map_block_table
-       str     x11, [x29,176]
-       ldr     x2, [x11, #:got_lo12:p_map_block_table]
-       str     x0, [x2]
-       mov     w0, w20
+       str     x0, [x19,2168]
+       mov     w0, w23
        bl      ftl_malloc
-       adrp    x10, :got:p_map_block_valid_page_count
-       str     x10, [x29,184]
-       ldr     x1, [x10, #:got_lo12:p_map_block_valid_page_count]
-       str     x0, [x1]
-       adrp    x1, :got:c_ftl_nand_max_vendor_blks
-       ldr     x20, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       ldrh    w0, [x20]
+       str     x0, [x19,2176]
+       ldrh    w0, [x20,1962]
+       lsr     w0, w0, 3
+       add     w0, w0, 4
+       bl      ftl_malloc
+       str     x0, [x22,#:lo12:.LANCHOR0]
+       ldrh    w0, [x20,2048]
        lsl     w0, w0, 1
        bl      ftl_malloc
-       adrp    x2, :got:p_vendor_block_table
-       ldr     x2, [x2, #:got_lo12:p_vendor_block_table]
-       str     x0, [x2]
-       ldrh    w0, [x20]
+       str     x0, [x20,2080]
+       ldrh    w0, [x20,2048]
        lsl     w0, w0, 1
        bl      ftl_malloc
-       adrp    x2, :got:p_vendor_block_valid_page_count
-       ldr     x2, [x2, #:got_lo12:p_vendor_block_valid_page_count]
-       str     x0, [x2]
-       ldrh    w0, [x20]
-       adrp    x20, :got:p_sys_spare_buf
+       str     x0, [x19,2184]
+       ldrh    w0, [x20,2048]
        lsl     w0, w0, 2
        bl      ftl_malloc
-       adrp    x1, :got:p_vendor_block_ver_table
-       ldr     x1, [x1, #:got_lo12:p_vendor_block_ver_table]
-       str     x0, [x1]
-       adrp    x1, :got:c_ftl_nand_vendor_region_num
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_vendor_region_num]
-       str     x1, [x29,216]
-       ldrh    w0, [x1]
+       str     x0, [x19,2192]
+       ldrh    w0, [x20,2050]
        lsl     w0, w0, 2
        bl      ftl_malloc
-       adrp    x2, :got:p_vendor_region_ppn_table
-       ldr     x1, [x29,216]
-       ldr     x2, [x2, #:got_lo12:p_vendor_region_ppn_table]
-       str     x0, [x2]
-       ldrh    w2, [x1]
+       str     x0, [x19,2200]
+       ldrh    w2, [x20,2050]
        mov     w1, 0
        lsl     w2, w2, 2
        bl      ftl_memset
-       adrp    x0, :got:c_ftl_nand_map_region_num
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_map_region_num]
-       ldrh    w0, [x0]
+       ldrh    w0, [x20,2064]
        lsl     w0, w0, 2
        bl      ftl_malloc
-       adrp    x2, :got:p_map_region_ppn_table
-       ldr     x16, [x29,208]
-       str     x2, [x29,192]
-       ldr     x1, [x2, #:got_lo12:p_map_region_ppn_table]
-       str     x0, [x1]
-       ldr     w0, [x16]
+       str     x0, [x19,2208]
+       ldr     w0, [x20,2056]
        lsl     w0, w0, 2
        bl      ftl_malloc
-       adrp    x1, :got:p_map_block_ver_table
-       str     x1, [x29,200]
-       ldr     x16, [x1, #:got_lo12:p_map_block_ver_table]
-       str     x0, [x16]
-       adrp    x16, :got:c_ftl_nand_l2pmap_ram_region_num
-       ldr     x16, [x16, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
-       str     x16, [x29,216]
-       ldrh    w0, [x16]
+       str     x0, [x19,2216]
+       ldrh    w0, [x20,2066]
        lsl     w0, w0, 4
        bl      ftl_malloc
-       adrp    x17, :got:p_l2p_ram_map
-       ldr     x12, [x29,144]
-       ldr     x16, [x29,216]
-       ldr     x17, [x17, #:got_lo12:p_l2p_ram_map]
-       ldrh    w16, [x16]
-       str     x0, [x17]
-       ldrh    w0, [x12]
-       mul     w0, w16, w0
+       str     x0, [x19,144]
+       ldrh    w1, [x20,2066]
+       ldrh    w0, [x20,2036]
+       mul     w0, w1, w0
        bl      ftl_malloc
-       adrp    x12, :got:p_l2p_map_buf
-       ldr     x12, [x12, #:got_lo12:p_l2p_map_buf]
-       str     x0, [x12]
+       str     x0, [x19,2224]
+       ldrh    w1, [x20,1962]
        mov     w0, 6
-       ldrh    w12, [x19]
-       adrp    x19, :got:p_io_spare_buf
-       mul     w0, w12, w0
+       mul     w0, w1, w0
        bl      ftl_malloc
-       adrp    x12, :got:p_data_block_list_table
-       adrp    x16, :got:c_ftl_nand_bbm_buf_size
-       adrp    x17, :got:c_ftl_nand_die_num
-       ldr     x12, [x12, #:got_lo12:p_data_block_list_table]
-       str     x0, [x12]
-       adrp    x0, :got:c_ftl_nand_blks_per_die
-       ldr     x16, [x16, #:got_lo12:c_ftl_nand_bbm_buf_size]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_blks_per_die]
-       str     x16, [x29,208]
-       ldrh    w0, [x0]
+       str     x0, [x19,-56]
+       ldrh    w0, [x20,2022]
+       ldrh    w1, [x20,1974]
        add     w0, w0, 31
        asr     w0, w0, 5
-       strh    w0, [x16]
-       ldr     x17, [x17, #:got_lo12:c_ftl_nand_die_num]
-       str     x17, [x29,216]
-       ldrh    w12, [x17]
-       mul     w0, w0, w12
+       strh    w0, [x19,2232]
+       mul     w0, w0, w1
        lsl     w0, w0, 2
        bl      ftl_malloc
-       adrp    x13, :got:gBbtInfo
-       ldr     x17, [x29,216]
-       ldr     x16, [x29,208]
-       ldr     x15, [x29,152]
-       ldr     x12, [x13, #:got_lo12:gBbtInfo]
-       ldrh    w18, [x17]
-       ldrh    w17, [x16]
-       ldr     x14, [x29,160]
-       ldr     x8, [x29,96]
-       mov     w16, w17
-       ldr     x7, [x29,104]
-       ldr     x6, [x29,112]
-       ldr     x5, [x29,120]
-       ldr     x4, [x29,128]
-       ldr     x3, [x29,136]
-       ldr     x9, [x29,168]
-       ldr     x11, [x29,176]
-       ldr     x10, [x29,184]
-       ldr     x2, [x29,192]
-       ldr     x1, [x29,200]
-       str     x0, [x12,32]
+       str     x0, [x20,2144]
+       add     x1, x20, 2112
+       ldrh    w4, [x19,2232]
+       ldrh    w5, [x20,1974]
        mov     w0, 1
-       str     x15, [x29,216]
-       mov     x15, x13
-       str     x14, [x29,208]
-.L725:
-       cmp     w0, w18
-       add     x12, x12, 8
-       bcs     .L727
-       ldr     x14, [x15, #:got_lo12:gBbtInfo]
+       mov     w2, w4
+.L769:
+       cmp     w0, w5
+       add     x1, x1, 8
+       bcs     .L869
+       ldr     x3, [x20,2144]
        add     w0, w0, 1
-       ldr     x14, [x14,32]
-       add     x14, x14, x16, uxtw 2
-       add     w16, w16, w17
-       str     x14, [x12,32]
-       b       .L725
-.L727:
+       add     x3, x3, x2, uxtw 2
+       add     w2, w2, w4
+       str     x3, [x1,32]
+       b       .L769
+.L869:
+       add     x1, x22, :lo12:.LANCHOR0
+.L771:
        cmp     w0, 8
-       beq     .L825
-       ldr     x12, [x13, #:got_lo12:gBbtInfo]
-       add     x12, x12, x0, uxtw 3
+       beq     .L870
+       add     x2, x1, x0, uxtw 3
        add     w0, w0, 1
-       str     xzr, [x12,32]
-       b       .L727
-.L825:
-       ldr     x11, [x11, #:got_lo12:p_map_block_table]
-       ldr     x0, [x11]
-       cbnz    x0, .L729
-.L731:
-       adrp    x0, .LC78
-       adrp    x1, .LANCHOR1
-       add     x0, x0, :lo12:.LC78
-       add     x1, x1, :lo12:.LANCHOR1
+       str     xzr, [x2,2144]
+       b       .L771
+.L870:
+       add     x0, x21, :lo12:.LANCHOR2
+       ldr     x1, [x0,2168]
+       cbnz    x1, .L773
+.L775:
+       adrp    x0, .LC79
+       adrp    x1, .LANCHOR3
+       add     x0, x0, :lo12:.LC79
+       add     x1, x1, :lo12:.LANCHOR3
        bl      printk
        mov     w0, -1
-       b       .L730
-.L729:
-       ldr     x10, [x10, #:got_lo12:p_map_block_valid_page_count]
-       ldr     x0, [x10]
-       cbz     x0, .L731
-       ldr     x2, [x2, #:got_lo12:p_map_region_ppn_table]
-       ldr     x0, [x2]
-       cbz     x0, .L731
-       ldr     x1, [x1, #:got_lo12:p_map_block_ver_table]
-       ldr     x0, [x1]
-       cbz     x0, .L731
-       adrp    x0, :got:p_l2p_ram_map
-       ldr     x0, [x0, #:got_lo12:p_l2p_ram_map]
-       ldr     x0, [x0]
-       cbz     x0, .L731
-       adrp    x0, :got:p_l2p_map_buf
-       ldr     x0, [x0, #:got_lo12:p_l2p_map_buf]
-       ldr     x0, [x0]
-       cbz     x0, .L731
-       adrp    x0, :got:p_data_block_list_table
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_table]
-       ldr     x0, [x0]
-       cbz     x0, .L731
-       adrp    x0, :got:gBbtInfo
-       ldr     x0, [x0, #:got_lo12:gBbtInfo]
-       ldr     x0, [x0,32]
-       cbz     x0, .L731
-       ldr     x9, [x9, #:got_lo12:p_valid_page_count_table]
-       ldr     x0, [x9]
-       cbz     x0, .L731
-       ldr     x8, [x8, #:got_lo12:p_gc_blk_tbl]
-       ldr     x0, [x8]
-       cbz     x0, .L731
-       ldr     x7, [x7, #:got_lo12:p_gc_page_info]
-       ldr     x0, [x7]
-       cbz     x0, .L731
-       ldr     x6, [x6, #:got_lo12:req_read]
-       ldr     x0, [x6]
-       cbz     x0, .L731
-       ldr     x5, [x5, #:got_lo12:req_prgm]
-       ldr     x0, [x5]
-       cbz     x0, .L731
-       ldr     x4, [x4, #:got_lo12:req_erase]
-       ldr     x0, [x4]
-       cbz     x0, .L731
-       ldr     x3, [x3, #:got_lo12:req_gc]
-       ldr     x0, [x3]
-       cbz     x0, .L731
-       ldr     x28, [x28, #:got_lo12:req_gc_dst]
-       ldr     x0, [x28]
-       cbz     x0, .L731
-       ldr     x27, [x27, #:got_lo12:p_sys_data_buf]
-       ldr     x0, [x27]
-       cbz     x0, .L731
-       ldr     x26, [x26, #:got_lo12:p_sys_data_buf_1]
-       ldr     x0, [x26]
-       cbz     x0, .L731
-       ldr     x25, [x25, #:got_lo12:p_vendor_data_buf]
-       ldr     x0, [x25]
-       cbz     x0, .L731
-       ldr     x24, [x24, #:got_lo12:p_gc_data_buf]
-       ldr     x0, [x24]
-       cbz     x0, .L731
-       ldr     x23, [x23, #:got_lo12:p_io_data_buf_0]
-       ldr     x0, [x23]
-       cbz     x0, .L731
-       ldr     x22, [x22, #:got_lo12:p_io_data_buf_1]
-       ldr     x0, [x22]
-       cbz     x0, .L731
-       ldr     x21, [x21, #:got_lo12:gp_gc_page_buf_info]
-       ldr     x0, [x21]
-       cbz     x0, .L731
-       ldr     x20, [x20, #:got_lo12:p_sys_spare_buf]
-       ldr     x0, [x20]
-       cbz     x0, .L731
-       ldr     x19, [x19, #:got_lo12:p_io_spare_buf]
-       ldr     x0, [x19]
-       cbz     x0, .L731
-       ldr     x0, [x29,216]
-       ldr     x15, [x0, #:got_lo12:p_gc_spare_buf]
-       ldr     x0, [x15]
-       cbz     x0, .L731
-       ldr     x0, [x29,208]
-       ldr     x14, [x0, #:got_lo12:p_erase_count_table]
-       ldr     x0, [x14]
-       cbz     x0, .L731
-       adrp    x0, :got:p_swl_mul_table
-       ldr     x0, [x0, #:got_lo12:p_swl_mul_table]
-       ldr     x0, [x0]
-       cbz     x0, .L731
-       adrp    x0, :got:p_vendor_block_table
-       ldr     x0, [x0, #:got_lo12:p_vendor_block_table]
-       ldr     x0, [x0]
-       cbz     x0, .L731
-       adrp    x0, :got:p_vendor_block_valid_page_count
-       ldr     x0, [x0, #:got_lo12:p_vendor_block_valid_page_count]
-       ldr     x0, [x0]
-       cbz     x0, .L731
-       adrp    x0, :got:p_vendor_block_ver_table
-       ldr     x0, [x0, #:got_lo12:p_vendor_block_ver_table]
-       ldr     x0, [x0]
-       cbz     x0, .L731
-       adrp    x0, :got:p_vendor_region_ppn_table
-       ldr     x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
-       ldr     x0, [x0]
-       cbz     x0, .L731
+       b       .L774
+.L773:
+       ldr     x1, [x0,2176]
+       cbz     x1, .L775
+       ldr     x1, [x0,2208]
+       cbz     x1, .L775
+       ldr     x1, [x0,2216]
+       cbz     x1, .L775
+       ldr     x1, [x0,144]
+       cbz     x1, .L775
+       ldr     x1, [x0,2224]
+       cbz     x1, .L775
+       ldr     x1, [x0,-56]
+       cbz     x1, .L775
+       add     x22, x22, :lo12:.LANCHOR0
+       ldr     x1, [x22,2144]
+       cbz     x1, .L775
+       ldr     x0, [x0,-40]
+       cbz     x0, .L775
+       add     x0, x21, :lo12:.LANCHOR2
+       ldr     x1, [x0,928]
+       cbz     x1, .L775
+       ldr     x1, [x0,944]
+       cbz     x1, .L775
+       ldr     x1, [x0,2048]
+       cbz     x1, .L775
+       ldr     x1, [x0,2064]
+       cbz     x1, .L775
+       ldr     x1, [x0,-88]
+       cbz     x1, .L775
+       ldr     x1, [x0,912]
+       cbz     x1, .L775
+       ldr     x1, [x0,2056]
+       cbz     x1, .L775
+       ldr     x1, [x0,-64]
+       cbz     x1, .L775
+       ldr     x1, [x0,2072]
+       cbz     x1, .L775
+       ldr     x0, [x0,2080]
+       cbz     x0, .L775
+       add     x0, x21, :lo12:.LANCHOR2
+       ldr     x1, [x0,896]
+       cbz     x1, .L775
+       ldr     x1, [x0,2096]
+       cbz     x1, .L775
+       ldr     x1, [x0,2104]
+       cbz     x1, .L775
+       ldr     x1, [x0,888]
+       cbz     x1, .L775
+       ldr     x1, [x0,2112]
+       cbz     x1, .L775
+       ldr     x1, [x0,2120]
+       cbz     x1, .L775
+       ldr     x1, [x0,904]
+       cbz     x1, .L775
+       ldr     x1, [x0,-80]
+       cbz     x1, .L775
+       ldr     x0, [x0,2144]
+       cbz     x0, .L775
+       adrp    x0, .LANCHOR0+2080
+       ldr     x0, [x0,#:lo12:.LANCHOR0+2080]
+       cbz     x0, .L775
+       adrp    x0, .LANCHOR2
+       add     x0, x0, :lo12:.LANCHOR2
+       ldr     x1, [x0,2184]
+       cbz     x1, .L775
+       ldr     x1, [x0,2192]
+       cbz     x1, .L775
+       ldr     x0, [x0,2200]
+       cbz     x0, .L775
        mov     w0, 0
-.L730:
+.L774:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
-       ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 224
+       ldr     x25, [sp,64]
+       ldp     x29, x30, [sp], 80
        ret
        .size   FtlMemInit, .-FtlMemInit
        .align  2
@@ -6565,22 +6173,21 @@ FtlBbt2Bitmap:
        stp     x29, x30, [sp, -32]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       mov     x19, x1
-       adrp    x1, :got:c_ftl_nand_bbm_buf_size
        mov     x20, x0
-       mov     x0, x19
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_bbm_buf_size]
-       ldrh    w2, [x1]
+       adrp    x0, .LANCHOR2+2232
+       mov     x19, x1
+       ldrh    w2, [x0,#:lo12:.LANCHOR2+2232]
+       mov     x0, x1
        mov     w1, 0
        lsl     w2, w2, 2
        bl      ftl_memset
        mov     x3, 0
        mov     w0, 65535
        mov     w5, 1
-.L828:
+.L873:
        ldrh    w2, [x20,x3]
        cmp     w2, w0
-       beq     .L826
+       beq     .L871
        ubfx    x4, x2, 5, 11
        add     x3, x3, 2
        lsl     x4, x4, 2
@@ -6589,8 +6196,8 @@ FtlBbt2Bitmap:
        ldr     w1, [x19,x4]
        orr     w2, w1, w2
        str     w2, [x19,x4]
-       bne     .L828
-.L826:
+       bne     .L873
+.L871:
        ldp     x19, x20, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
@@ -6599,13 +6206,13 @@ FtlBbt2Bitmap:
        .global FtlBbtMemInit
        .type   FtlBbtMemInit, %function
 FtlBbtMemInit:
-       adrp    x0, :got:gBbtInfo
+       adrp    x0, .LANCHOR0
        mov     w1, -1
        stp     x29, x30, [sp, -16]!
+       add     x0, x0, :lo12:.LANCHOR0
        mov     w2, 16
        add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:gBbtInfo]
-       add     x0, x0, 12
+       add     x0, x0, 2124
        strh    w1, [x0,-12]
        mov     w1, 255
        strh    wzr, [x0,-6]
@@ -6617,16 +6224,16 @@ FtlBbtMemInit:
        .global FtlFreeSysBlkQueueInit
        .type   FtlFreeSysBlkQueueInit, %function
 FtlFreeSysBlkQueueInit:
-       adrp    x1, :got:gSysFreeQueue
+       adrp    x1, .LANCHOR0
        mov     w2, 2048
        stp     x29, x30, [sp, -16]!
+       add     x1, x1, :lo12:.LANCHOR0
        add     x29, sp, 0
-       ldr     x1, [x1, #:got_lo12:gSysFreeQueue]
-       strh    wzr, [x1,2]
-       strh    wzr, [x1,4]
-       strh    wzr, [x1,6]
-       strh    w0, [x1],8
-       mov     x0, x1
+       strh    w0, [x1,2208]
+       add     x0, x1, 2216
+       strh    wzr, [x1,2210]
+       strh    wzr, [x1,2212]
+       strh    wzr, [x1,2214]
        mov     w1, 0
        bl      ftl_memset
        mov     w0, 0
@@ -6654,74 +6261,74 @@ ftl_free_no_use_map_blk:
        mov     x0, x21
        bl      ftl_memset
        mov     w0, 0
-.L834:
+.L879:
        ldrh    w1, [x19,6]
        cmp     w1, w0
-       bls     .L847
+       bls     .L892
        ubfiz   x1, x0, 2, 16
        ldr     w2, [x20,x1]
        mov     w1, 0
        ubfx    x2, x2, 10, 16
-.L835:
+.L880:
        ldrh    w3, [x19,10]
        cmp     w3, w1
-       bls     .L848
+       bls     .L893
        ubfiz   x3, x1, 1, 16
        ldrh    w4, [x25,x3]
        cmp     w4, w2
-       bne     .L836
+       bne     .L881
        ldrh    w4, [x21,x3]
        add     w4, w4, 1
        strh    w4, [x21,x3]
-.L836:
+.L881:
        add     w1, w1, 1
        uxth    w1, w1
-       b       .L835
-.L848:
+       b       .L880
+.L893:
        add     w0, w0, 1
        uxth    w0, w0
-       b       .L834
-.L847:
+       b       .L879
+.L892:
        mov     w24, 0
        ldrh    w26, [x21]
        mov     w20, w24
-       adrp    x27, :got:c_ftl_nand_page_pre_slc_blk
-.L839:
+       adrp    x27, .LANCHOR0
+.L884:
        ldrh    w0, [x19,10]
        cmp     w0, w20
-       bls     .L849
+       bls     .L894
        ldrh    w0, [x19]
        uxtw    x22, w20
        cmp     w0, w20
-       bne     .L840
-       ldr     x0, [x27, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
+       bne     .L885
+       add     x0, x27, :lo12:.LANCHOR0
        ldrh    w1, [x19,2]
-       ldrh    w0, [x0]
+       ldrh    w0, [x0,2028]
        cmp     w1, w0
-       bcs     .L840
+       bcs     .L885
        strh    w0, [x21,x22,lsl 1]
-.L840:
+.L885:
        lsl     x22, x22, 1
        ldrh    w23, [x21,x22]
        cmp     w26, w23
-       bls     .L841
+       bls     .L886
        mov     w24, w20
        mov     w26, w23
-.L841:
-       cbnz    w23, .L842
+.L886:
+       cbnz    w23, .L887
        ldrh    w0, [x25,x22]
-       cbz     w0, .L842
+       cbz     w0, .L887
        mov     w1, 1
        bl      FtlFreeSysBlkQueueIn
        strh    w23, [x25,x22]
        ldrh    w0, [x19,8]
        sub     w0, w0, #1
        strh    w0, [x19,8]
-.L842:
+.L887:
        add     w20, w20, 1
        uxth    w20, w20
-       b       .L839
-.L849:
+       b       .L884
+.L894:
        mov     w0, w24
        ldr     x27, [sp,80]
        ldp     x19, x20, [sp,16]
@@ -6735,171 +6342,125 @@ ftl_free_no_use_map_blk:
        .global FtlL2PDataInit
        .type   FtlL2PDataInit, %function
 FtlL2PDataInit:
-       stp     x29, x30, [sp, -64]!
+       stp     x29, x30, [sp, -48]!
+       mov     w1, 0
        add     x29, sp, 0
-       stp     x21, x22, [sp,32]
-       adrp    x22, :got:c_ftl_nand_max_map_blks
-       str     x23, [sp,48]
-       adrp    x23, :got:p_map_block_valid_page_count
-       adrp    x21, :got:c_ftl_nand_byte_pre_page
        stp     x19, x20, [sp,16]
-       ldr     x1, [x22, #:got_lo12:c_ftl_nand_max_map_blks]
-       adrp    x19, :got:c_ftl_nand_l2pmap_ram_region_num
-       ldr     x0, [x23, #:got_lo12:p_map_block_valid_page_count]
-       adrp    x20, :got:p_l2p_map_buf
-       ldr     w2, [x1]
-       mov     w1, 0
-       ldr     x0, [x0]
+       adrp    x20, .LANCHOR0
+       adrp    x19, .LANCHOR2
+       stp     x21, x22, [sp,32]
+       add     x21, x20, :lo12:.LANCHOR0
+       add     x22, x19, :lo12:.LANCHOR2
+       ldr     w2, [x21,2056]
+       ldr     x0, [x22,2176]
        lsl     w2, w2, 1
        bl      ftl_memset
-       ldr     x1, [x21, #:got_lo12:c_ftl_nand_byte_pre_page]
-       ldr     x0, [x20, #:got_lo12:p_l2p_map_buf]
-       ldrh    w3, [x1]
-       ldr     x1, [x19, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
-       ldr     x0, [x0]
-       ldrh    w2, [x1]
+       ldrh    w3, [x21,2036]
        mov     w1, 255
+       ldrh    w2, [x21,2066]
+       ldr     x0, [x22,2224]
        mul     w2, w3, w2
        bl      ftl_memset
        mov     w1, 0
-       mov     x3, x23
-       adrp    x5, :got:p_l2p_ram_map
-       mov     w6, -1
-.L851:
-       ldr     x0, [x19, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
-       ldrh    w0, [x0]
+       mov     w5, -1
+.L896:
+       add     x3, x20, :lo12:.LANCHOR0
+       ldrh    w0, [x3,2066]
        cmp     w0, w1
-       bls     .L853
-       ldr     x2, [x5, #:got_lo12:p_l2p_ram_map]
+       bls     .L898
+       add     x4, x19, :lo12:.LANCHOR2
        ubfiz   x0, x1, 4, 16
-       ldr     x4, [x2]
-       add     x4, x4, x0
-       str     wzr, [x4,4]
-       ldr     x4, [x2]
-       strh    w6, [x4,x0]
-       ldr     x2, [x2]
-       ldr     x4, [x20, #:got_lo12:p_l2p_map_buf]
+       ldr     x2, [x4,144]
        add     x2, x2, x0
-       ldr     x0, [x21, #:got_lo12:c_ftl_nand_byte_pre_page]
-       ldr     x4, [x4]
-       ldrh    w0, [x0]
+       str     wzr, [x2,4]
+       ldr     x2, [x4,144]
+       strh    w5, [x2,x0]
+       ldr     x2, [x4,144]
+       add     x2, x2, x0
+       ldrh    w0, [x3,2036]
+       ldr     x3, [x4,2224]
        mul     w0, w0, w1
+       add     w1, w1, 1
        sxtw    x0, w0
+       uxth    w1, w1
        and     x0, x0, -4
-       add     x0, x4, x0
+       add     x0, x3, x0
        str     x0, [x2,8]
-       add     w0, w1, 1
-       uxth    w1, w0
-       b       .L851
-.L853:
-       adrp    x0, :got:gL2pMapInfo
+       b       .L896
+.L898:
+       add     x0, x19, :lo12:.LANCHOR2
        mov     w2, -1
-       ldr     x0, [x0, #:got_lo12:gL2pMapInfo]
-       strh    w2, [x0,2]
-       strh    w2, [x0]
-       ldr     x1, [x22, #:got_lo12:c_ftl_nand_max_map_blks]
-       ldr     w1, [x1]
-       strh    w1, [x0,10]
-       mov     w1, -3902
-       strh    w1, [x0,4]
-       adrp    x1, :got:g_totle_map_block
-       ldr     x1, [x1, #:got_lo12:g_totle_map_block]
-       ldrh    w1, [x1]
-       strh    w1, [x0,8]
-       adrp    x1, :got:c_ftl_nand_map_region_num
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_map_region_num]
-       ldrh    w1, [x1]
-       strh    w1, [x0,6]
-       adrp    x1, :got:p_map_block_table
-       ldr     x1, [x1, #:got_lo12:p_map_block_table]
-       ldr     x1, [x1]
-       str     x1, [x0,16]
-       adrp    x1, :got:p_map_block_ver_table
-       ldr     x1, [x1, #:got_lo12:p_map_block_ver_table]
-       ldr     x1, [x1]
-       str     x1, [x0,24]
-       ldr     x1, [x3, #:got_lo12:p_map_block_valid_page_count]
-       ldr     x1, [x1]
-       str     x1, [x0,32]
-       adrp    x1, :got:p_map_region_ppn_table
-       ldr     x1, [x1, #:got_lo12:p_map_region_ppn_table]
-       ldr     x1, [x1]
-       str     x1, [x0,40]
+       add     x1, x0, 2240
+       strh    w2, [x0,2242]
+       strh    w2, [x0,2240]
+       ldr     w2, [x3,2056]
+       strh    w2, [x0,2250]
+       mov     w2, -3902
+       strh    w2, [x0,2244]
+       ldrh    w2, [x0,2304]
+       strh    w2, [x0,2248]
+       ldrh    w2, [x3,2064]
+       strh    w2, [x0,2246]
+       ldr     x2, [x0,2168]
+       str     x2, [x0,2256]
+       ldr     x2, [x0,2216]
+       str     x2, [x0,2264]
+       ldr     x2, [x0,2176]
+       str     x2, [x0,2272]
+       ldr     x0, [x0,2208]
+       str     x0, [x1,40]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
-       ldr     x23, [sp,48]
-       ldp     x29, x30, [sp], 64
+       ldp     x29, x30, [sp], 48
        ret
        .size   FtlL2PDataInit, .-FtlL2PDataInit
        .align  2
        .global FtlVariablesInit
        .type   FtlVariablesInit, %function
 FtlVariablesInit:
-       adrp    x0, :got:g_req_cache
-       mov     w1, -1
        stp     x29, x30, [sp, -32]!
-       add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:g_req_cache]
-       str     x19, [sp,16]
-       adrp    x19, :got:c_ftl_nand_blk_pre_plane
-       str     xzr, [x0]
-       adrp    x0, :got:g_tmp_data_superblock_id
-       ldr     x0, [x0, #:got_lo12:g_tmp_data_superblock_id]
-       strh    w1, [x0]
-       adrp    x0, :got:g_totle_swl_count
-       mov     w1, -1
-       ldr     x0, [x0, #:got_lo12:g_totle_swl_count]
-       str     wzr, [x0]
-       adrp    x0, :got:ftl_gc_temp_power_lost_recovery_flag
-       ldr     x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
-       str     wzr, [x0]
-       adrp    x0, :got:g_recovery_page_min_ver
-       ldr     x0, [x0, #:got_lo12:g_recovery_page_min_ver]
-       str     w1, [x0]
-       adrp    x0, :got:g_inkDie_check_enable
-       adrp    x1, :got:c_ftl_nand_max_vendor_blks
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       str     wzr, [x0]
-       adrp    x0, :got:g_totle_vendor_block
-       ldr     x0, [x0, #:got_lo12:g_totle_vendor_block]
-       strh    wzr, [x0]
-       adrp    x0, :got:p_vendor_block_table
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       ldr     x0, [x0, #:got_lo12:p_vendor_block_table]
-       ldrh    w2, [x1]
+       mov     w0, -1
        mov     w1, 0
-       ldr     x0, [x0]
+       add     x29, sp, 0
+       stp     x19, x20, [sp,16]
+       adrp    x19, .LANCHOR2
+       adrp    x20, .LANCHOR0
+       add     x19, x19, :lo12:.LANCHOR2
+       add     x20, x20, :lo12:.LANCHOR0
+       strh    w0, [x19,2320]
+       mov     w0, -1
+       ldrh    w2, [x20,2048]
+       str     w0, [x19,2332]
+       ldr     x0, [x20,2080]
        lsl     w2, w2, 1
+       str     xzr, [x19,2312]
+       str     wzr, [x19,2324]
+       str     wzr, [x19,2328]
+       str     wzr, [x19,160]
+       strh    wzr, [x20,2072]
        bl      ftl_memset
-       ldr     x19, [x19, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       adrp    x0, :got:p_erase_count_table
+       ldrh    w2, [x20,1962]
        mov     w1, 0
-       ldrh    w2, [x19]
-       ldr     x0, [x0, #:got_lo12:p_erase_count_table]
+       ldr     x0, [x19,-80]
        lsl     w2, w2, 1
-       ldr     x0, [x0]
        bl      ftl_memset
-       adrp    x0, :got:p_swl_mul_table
-       ldrh    w2, [x19]
+       ldrh    w2, [x20,1962]
        mov     w1, 0
+       ldr     x0, [x19,2144]
        lsl     w2, w2, 1
-       ldr     x0, [x0, #:got_lo12:p_swl_mul_table]
-       ldr     x0, [x0]
        bl      ftl_memset
-       adrp    x0, :got:g_sys_save_data
+       add     x0, x19, 224
        mov     w1, 0
        mov     w2, 48
-       ldr     x0, [x0, #:got_lo12:g_sys_save_data]
        bl      ftl_memset
-       adrp    x0, :got:g_sys_ext_data
        mov     w1, 0
        mov     w2, 512
-       ldr     x0, [x0, #:got_lo12:g_sys_ext_data]
+       add     x0, x19, 352
        bl      ftl_memset
        bl      FtlGcBufInit
        bl      FtlL2PDataInit
-       ldr     x19, [sp,16]
        mov     w0, 0
+       ldp     x19, x20, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
        .size   FtlVariablesInit, .-FtlVariablesInit
@@ -6908,131 +6469,105 @@ FtlVariablesInit:
        .type   SupperBlkListInit, %function
 SupperBlkListInit:
        stp     x29, x30, [sp, -112]!
-       adrp    x0, :got:c_ftl_nand_blk_pre_plane
-       mov     w2, 6
+       mov     w1, 0
        add     x29, sp, 0
        stp     x23, x24, [sp,48]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       adrp    x23, :got:p_data_block_list_table
+       adrp    x24, .LANCHOR0
+       add     x0, x24, :lo12:.LANCHOR0
        stp     x19, x20, [sp,16]
        stp     x21, x22, [sp,32]
        stp     x25, x26, [sp,64]
        stp     x27, x28, [sp,80]
-       ldr     x1, [x23, #:got_lo12:p_data_block_list_table]
-       adrp    x21, :got:g_num_data_superblocks
-       ldrh    w3, [x0]
-       adrp    x20, :got:g_num_free_superblocks
-       mov     w24, 0
-       adrp    x25, :got:c_ftl_nand_planes_num
-       ldr     x0, [x1]
-       mov     w1, 0
-       mul     w2, w3, w2
-       mov     w22, w24
-       mov     w19, w24
-       adrp    x26, :got:p_plane_order_table
-       adrp    x27, :got:c_ftl_nand_page_pre_blk
+       adrp    x22, .LANCHOR2
+       mov     w26, 6
+       add     x20, x22, :lo12:.LANCHOR2
+       ldrh    w2, [x0,1962]
+       mov     w25, 0
+       mov     x21, x20
+       mov     w23, w25
+       mov     w19, w25
+       ldr     x0, [x20,-56]
+       mul     w2, w2, w26
        bl      ftl_memset
-       mov     w28, 32768
-       adrp    x0, :got:p_free_data_block_list_head
-       ldr     x0, [x0, #:got_lo12:p_free_data_block_list_head]
-       str     xzr, [x0]
-       adrp    x0, :got:p_data_block_list_head
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_head]
-       str     xzr, [x0]
-       adrp    x0, :got:p_data_block_list_tail
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_tail]
-       str     xzr, [x0]
-       ldr     x0, [x21, #:got_lo12:g_num_data_superblocks]
-       strh    wzr, [x0]
-       ldr     x0, [x20, #:got_lo12:g_num_free_superblocks]
-       strh    wzr, [x0]
-.L856:
-       adrp    x0, :got:c_ftl_nand_data_blks_per_plane
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w0, [x0]
-       cmp     w0, w19
-       bls     .L867
-       mov     w2, 0
-       mov     w4, w2
-.L862:
-       ldr     x0, [x25, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       cmp     w0, w4
-       bls     .L868
-       ldr     x0, [x26, #:got_lo12:p_plane_order_table]
+       str     xzr, [x20,-16]
+       str     xzr, [x20,-48]
+       str     xzr, [x20,-32]
+       strh    wzr, [x20,-24]
+       strh    wzr, [x20,-8]
+.L901:
+       add     x0, x24, :lo12:.LANCHOR0
+       ldrh    w1, [x0,1960]
+       cmp     w1, w19
+       bls     .L907
+       mov     x28, 0
+       ldrh    w3, [x0,1952]
+       ldrh    w2, [x0,2026]
+       mov     w20, w28
+       mov     x27, x0
+.L908:
+       cmp     w3, w28, uxth
+       bls     .L912
+       add     x0, x27, 1984
        mov     w1, w19
        str     x2, [x29,96]
-       str     x4, [x29,104]
-       ldrb    w0, [x0,w4,sxtw]
+       str     x3, [x29,104]
+       ldrb    w0, [x0,x28]
        bl      V2P_block
        bl      FtlBbmIsBadBlock
-       ldr     x4, [x29,104]
+       ldr     x3, [x29,104]
        ldr     x2, [x29,96]
-       cbnz    w0, .L857
-       ldr     x0, [x27, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w0, [x0]
-       add     w2, w2, w0
-       uxth    w2, w2
-.L857:
-       add     w4, w4, 1
-       uxth    w4, w4
-       b       .L862
-.L868:
-       cbz     w2, .L859
-       sdiv    w2, w28, w2
-.L859:
-       ldr     x1, [x23, #:got_lo12:p_data_block_list_table]
-       mov     w0, 6
-       umull   x0, w19, w0
-       ldr     x1, [x1]
+       cbnz    w0, .L902
+       add     w20, w20, w2
+       uxth    w20, w20
+.L902:
+       add     x28, x28, 1
+       b       .L908
+.L912:
+       cbz     w20, .L904
+       mov     w0, 32768
+       sdiv    w20, w0, w20
+.L904:
+       ldr     x1, [x21,-56]
+       umull   x0, w19, w26
        add     x0, x1, x0
-       strh    w2, [x0,4]
-       adrp    x0, :got:g_active_superblock
-       ldr     x0, [x0, #:got_lo12:g_active_superblock]
-       ldrh    w0, [x0]
+       strh    w20, [x0,4]
+       ldrh    w0, [x21]
        cmp     w0, w19
-       beq     .L860
-       adrp    x0, :got:g_buffer_superblock
-       ldr     x0, [x0, #:got_lo12:g_buffer_superblock]
-       ldrh    w0, [x0]
+       beq     .L905
+       ldrh    w0, [x21,48]
        cmp     w0, w19
-       beq     .L860
-       adrp    x0, :got:g_gc_temp_superblock
-       ldr     x0, [x0, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w0, [x0]
+       beq     .L905
+       ldrh    w0, [x21,96]
        cmp     w0, w19
-       beq     .L860
-       adrp    x1, :got:p_valid_page_count_table
+       beq     .L905
        ubfiz   x0, x19, 1, 16
-       ldr     x1, [x1, #:got_lo12:p_valid_page_count_table]
-       ldr     x1, [x1]
+       ldr     x1, [x21,-40]
        ldrh    w0, [x1,x0]
-       cbnz    w0, .L861
-       add     w3, w24, 1
+       cbnz    w0, .L906
+       add     w4, w25, 1
        mov     w0, w19
-       uxth    w24, w3
+       uxth    w25, w4
        bl      INSERT_FREE_LIST
-       b       .L860
-.L861:
-       add     w22, w22, 1
+       b       .L905
+.L906:
+       add     w23, w23, 1
        mov     w0, w19
-       uxth    w22, w22
+       uxth    w23, w23
        bl      INSERT_DATA_LIST
-.L860:
+.L905:
        add     w19, w19, 1
        uxth    w19, w19
-       b       .L856
-.L867:
-       ldr     x21, [x21, #:got_lo12:g_num_data_superblocks]
+       b       .L901
+.L907:
+       add     x22, x22, :lo12:.LANCHOR2
        mov     w0, 0
-       strh    w22, [x21]
-       ldr     x20, [x20, #:got_lo12:g_num_free_superblocks]
-       strh    w24, [x20]
        ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
+       ldp     x27, x28, [sp,80]
+       strh    w23, [x22,-24]
+       strh    w25, [x22,-8]
        ldp     x23, x24, [sp,48]
+       ldp     x21, x22, [sp,32]
        ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
        ldp     x29, x30, [sp], 112
        ret
        .size   SupperBlkListInit, .-SupperBlkListInit
@@ -7040,34 +6575,28 @@ SupperBlkListInit:
        .global FtlGcPageVarInit
        .type   FtlGcPageVarInit, %function
 FtlGcPageVarInit:
-       adrp    x0, :got:g_gc_blk_num
-       mov     w1, 255
        stp     x29, x30, [sp, -32]!
+       mov     w1, 255
        add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:g_gc_blk_num]
-       str     x19, [sp,16]
-       adrp    x19, :got:c_ftl_nand_page_pre_super_blk
-       strh    wzr, [x0]
-       adrp    x0, :got:g_gc_page_offset
-       ldr     x0, [x0, #:got_lo12:g_gc_page_offset]
-       strh    wzr, [x0]
-       adrp    x0, :got:p_gc_blk_tbl
-       ldr     x19, [x19, #:got_lo12:c_ftl_nand_page_pre_super_blk]
-       ldr     x0, [x0, #:got_lo12:p_gc_blk_tbl]
-       ldrh    w2, [x19]
-       ldr     x0, [x0]
+       stp     x19, x20, [sp,16]
+       adrp    x20, .LANCHOR0
+       adrp    x19, .LANCHOR2
+       add     x20, x20, :lo12:.LANCHOR0
+       add     x19, x19, :lo12:.LANCHOR2
+       ldrh    w2, [x20,2030]
+       ldr     x0, [x19,928]
        lsl     w2, w2, 1
+       strh    wzr, [x19,924]
+       strh    wzr, [x19,936]
        bl      ftl_memset
-       adrp    x0, :got:p_gc_page_info
-       ldrh    w3, [x19]
+       ldrh    w3, [x20,2030]
        mov     w2, 12
+       ldr     x0, [x19,944]
        mov     w1, 255
-       ldr     x0, [x0, #:got_lo12:p_gc_page_info]
        mul     w2, w3, w2
-       ldr     x0, [x0]
        bl      ftl_memset
        bl      FtlGcBufInit
-       ldr     x19, [sp,16]
+       ldp     x19, x20, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
        .size   FtlGcPageVarInit, .-FtlGcPageVarInit
@@ -7089,78 +6618,81 @@ FlashGetReadRetryDefault:
        stp     x29, x30, [sp, -16]!
        mov     w1, w0
        add     x29, sp, 0
-       cbz     w0, .L871
+       cbz     w0, .L915
        sub     w2, w0, #1
        cmp     w2, 5
-       bhi     .L873
+       bhi     .L917
        bl      HynixGetReadRetryDefault
-       b       .L871
-.L873:
+       b       .L915
+.L917:
        cmp     w0, 49
-       bne     .L874
-       adrp    x0, :got:gReadRetryInfo
+       bne     .L918
+       adrp    x0, .LANCHOR0
        mov     w2, 64
-       ldr     x0, [x0, #:got_lo12:gReadRetryInfo]
-       add     x0, x0, 4
+       add     x0, x0, :lo12:.LANCHOR0
+       add     x0, x0, 764
        strb    w1, [x0,-4]
        mov     w1, 4
        strb    w1, [x0,-3]
        mov     w1, 15
        strb    w1, [x0,-2]
-       adrp    x1, :got:SamsungRefValue
-       ldr     x1, [x1, #:got_lo12:SamsungRefValue]
-       b       .L889
-.L874:
+       adrp    x1, .LANCHOR1
+       add     x1, x1, :lo12:.LANCHOR1
+       add     x1, x1, 408
+       b       .L933
+.L918:
        sub     w0, w0, #65
        cmp     w0, 1
-       bls     .L880
+       bls     .L924
        cmp     w1, 33
-       bne     .L875
-.L880:
-       adrp    x0, :got:gReadRetryInfo
-       ldr     x0, [x0, #:got_lo12:gReadRetryInfo]
-       strb    w1, [x0]
+       bne     .L919
+.L924:
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       strb    w1, [x0,760]
        mov     w1, 4
-       b       .L890
-.L875:
+       b       .L934
+.L919:
        cmp     w1, 67
-       beq     .L881
+       beq     .L925
        cmp     w1, 34
-       bne     .L877
-.L881:
-       adrp    x0, :got:gReadRetryInfo
-       ldr     x0, [x0, #:got_lo12:gReadRetryInfo]
-       strb    w1, [x0]
+       bne     .L921
+.L925:
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       strb    w1, [x0,760]
        mov     w1, 5
-.L890:
-       strb    w1, [x0,1]
+.L934:
+       strb    w1, [x0,761]
        mov     w1, 7
-       strb    w1, [x0,2]
-       adrp    x1, :got:ToshibaA19RefValue
-       add     x0, x0, 4
+       strb    w1, [x0,762]
+       adrp    x1, .LANCHOR1
+       add     x1, x1, :lo12:.LANCHOR1
+       add     x0, x0, 764
+       add     x1, x1, 256
        mov     w2, 45
-       ldr     x1, [x1, #:got_lo12:ToshibaA19RefValue]
-       b       .L889
-.L877:
+       b       .L933
+.L921:
        cmp     w1, 68
-       beq     .L882
+       beq     .L926
        cmp     w1, 35
-       bne     .L871
-.L882:
-       adrp    x0, :got:gReadRetryInfo
+       bne     .L915
+.L926:
+       adrp    x0, .LANCHOR0
        mov     w2, 95
-       ldr     x0, [x0, #:got_lo12:gReadRetryInfo]
-       add     x0, x0, 4
+       add     x0, x0, :lo12:.LANCHOR0
+       add     x0, x0, 764
        strb    w1, [x0,-4]
        mov     w1, 5
        strb    w1, [x0,-3]
        mov     w1, 17
        strb    w1, [x0,-2]
-       adrp    x1, :got:Toshiba15RefValue
-       ldr     x1, [x1, #:got_lo12:Toshiba15RefValue]
-.L889:
+       adrp    x1, .LANCHOR1
+       add     x1, x1, :lo12:.LANCHOR1
+       add     x1, x1, 304
+.L933:
        bl      ftl_memcpy
-.L871:
+.L915:
        ldp     x29, x30, [sp], 16
        ret
        .size   FlashGetReadRetryDefault, .-FlashGetReadRetryDefault
@@ -7168,11 +6700,12 @@ FlashGetReadRetryDefault:
        .global FlashReadIdbData
        .type   FlashReadIdbData, %function
 FlashReadIdbData:
-       adrp    x1, :got:gNandIDataBuf
-       mov     w2, 2048
        stp     x29, x30, [sp, -16]!
+       adrp    x1, .LANCHOR2
+       mov     w2, 2048
+       add     x1, x1, :lo12:.LANCHOR2
        add     x29, sp, 0
-       ldr     x1, [x1, #:got_lo12:gNandIDataBuf]
+       add     x1, x1, 2336
        bl      ftl_memcpy
        mov     w0, 0
        ldp     x29, x30, [sp], 16
@@ -7185,63 +6718,66 @@ FlashLoadPhyInfoInRam:
        stp     x29, x30, [sp, -64]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       adrp    x19, :got:NandFlashParaTbl
-       str     x23, [sp,48]
        stp     x21, x22, [sp,32]
-       mov     w20, 0
-       adrp    x23, :got:IDByte
-       ldr     x22, [x19, #:got_lo12:NandFlashParaTbl]
-.L896:
-       ldr     x1, [x23, #:got_lo12:IDByte]
-       add     x0, x22, 1
-       ldrb    w2, [x22]
+       adrp    x20, .LANCHOR1
+       adrp    x22, .LANCHOR0
+       add     x21, x20, :lo12:.LANCHOR1
+       add     x22, x22, :lo12:.LANCHOR0
+       str     x23, [sp,48]
+       add     x21, x21, 536
+       mov     w19, 0
+       add     x22, x22, 1620
+.L940:
+       ldrb    w2, [x21]
+       add     x0, x21, 1
+       mov     x1, x22
        bl      FlashMemCmp8
-       mov     w21, w0
-       cbnz    w0, .L893
-       ldr     x19, [x19, #:got_lo12:NandFlashParaTbl]
-       ubfiz   x20, x20, 5, 32
-       adds    x19, x20, x19
-       beq     .L899
+       mov     w23, w0
+       cbnz    w0, .L937
+       add     x0, x20, :lo12:.LANCHOR1
+       ubfiz   x19, x19, 5, 32
+       add     x1, x0, 536
+       adds    x19, x1, x19
+       beq     .L943
        ldrb    w3, [x19,22]
        mov     x2, 0
-       adrp    x4, .LANCHOR2
-       b       .L898
-.L893:
-       add     w20, w20, 1
-       add     x22, x22, 32
-       cmp     w20, 66
-       bne     .L896
-       b       .L899
-.L898:
-       lsl     x0, x2, 5
-       add     x5, x4, :lo12:.LANCHOR2
-       mov     w1, w2
-       ldrb    w0, [x0,x5]
-       cmp     w0, w3
-       beq     .L897
+       mov     x1, x0
+       b       .L942
+.L937:
+       add     w19, w19, 1
+       add     x21, x21, 32
+       cmp     w19, 72
+       bne     .L940
+       b       .L943
+.L942:
+       add     x4, x1, x2, lsl 5
+       mov     w0, w2
+       ldrb    w4, [x4,2840]
+       cmp     w4, w3
+       beq     .L941
        add     x2, x2, 1
        cmp     x2, 4
-       bne     .L898
-       mov     w1, w2
-.L897:
-       adrp    x0, :got:gNandOptPara
-       adrp    x2, .LANCHOR2
-       add     x2, x2, :lo12:.LANCHOR2
-       ubfiz   x1, x1, 5, 32
+       bne     .L942
+       mov     w0, w2
+.L941:
+       add     x20, x20, :lo12:.LANCHOR1
+       ubfiz   x1, x0, 5, 32
+       adrp    x0, .LANCHOR0
+       add     x2, x20, 2840
+       add     x0, x0, :lo12:.LANCHOR0
        add     x1, x2, x1
+       add     x0, x0, 88
        mov     w2, 32
-       ldr     x0, [x0, #:got_lo12:gNandOptPara]
        bl      ftl_memcpy
-       adrp    x0, :got:gNandParaInfo
+       add     x0, x20, 472
        mov     x1, x19
        mov     w2, 32
-       ldr     x0, [x0, #:got_lo12:gNandParaInfo]
        bl      ftl_memcpy
-       b       .L894
-.L899:
-       mov     w21, -1
-.L894:
-       mov     w0, w21
+       b       .L938
+.L943:
+       mov     w23, -1
+.L938:
+       mov     w0, w23
        ldr     x23, [sp,48]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
@@ -7264,14 +6800,14 @@ NandcCopy1KB:
        add     x4, x0, 4096
        add     x21, x0, 512
        add     x2, x4, x2
-       bne     .L904
-       cbz     x3, .L905
+       bne     .L948
+       cbz     x3, .L949
        mov     x0, x2
        mov     x1, x3
        mov     w2, 1024
        bl      ftl_memcpy
-.L905:
-       cbz     x20, .L903
+.L949:
+       cbz     x20, .L947
        mov     w0, 48
        lsr     w19, w19, 1
        ldrb    w1, [x20,1]
@@ -7285,15 +6821,15 @@ NandcCopy1KB:
        ldrb    w1, [x20,3]
        orr     w0, w0, w1, lsl 24
        str     w0, [x21,w19,sxtw 2]
-       b       .L903
-.L904:
-       cbz     x3, .L908
+       b       .L947
+.L948:
+       cbz     x3, .L952
        mov     x1, x2
        mov     x0, x3
        mov     w2, 1024
        bl      ftl_memcpy
-.L908:
-       cbz     x20, .L903
+.L952:
+       cbz     x20, .L947
        mov     w0, 48
        lsr     w19, w19, 1
        mul     w19, w19, w0
@@ -7306,7 +6842,7 @@ NandcCopy1KB:
        lsr     w0, w0, 24
        strb    w1, [x20,2]
        strb    w0, [x20,3]
-.L903:
+.L947:
        ldp     x19, x20, [sp,16]
        ldr     x21, [sp,32]
        ldp     x29, x30, [sp], 48
@@ -7327,21 +6863,20 @@ ftl_memcmp:
        .global FlashSramLoadStore
        .type   FlashSramLoadStore, %function
 FlashSramLoadStore:
-       adrp    x4, :got:RK29_NANDC_REG_BASE
+       adrp    x4, .LANCHOR4+32
        mov     x6, x0
        stp     x29, x30, [sp, -16]!
        uxtw    x1, w1
        add     x29, sp, 0
-       ldr     x4, [x4, #:got_lo12:RK29_NANDC_REG_BASE]
-       ldr     x4, [x4]
+       ldr     x4, [x4,#:lo12:.LANCHOR4+32]
        add     x4, x4, 4096
-       cbnz    w2, .L921
+       cbnz    w2, .L965
        add     x1, x4, x1
-       b       .L923
-.L921:
+       b       .L967
+.L965:
        add     x0, x4, x1
        mov     x1, x6
-.L923:
+.L967:
        mov     w2, w3
        bl      ftl_memcpy
        ldp     x29, x30, [sp], 16
@@ -7387,11 +6922,8 @@ rk_nand_resume:
        .global rk_ftl_get_capacity
        .type   rk_ftl_get_capacity, %function
 rk_ftl_get_capacity:
-       stp     x29, x30, [sp, -16]!
-       mov     w0, -1
-       add     x29, sp, 0
-       bl      FtlGetCapacity
-       ldp     x29, x30, [sp], 16
+       adrp    x0, .LANCHOR0+2068
+       ldr     w0, [x0,#:lo12:.LANCHOR0+2068]
        ret
        .size   rk_ftl_get_capacity, .-rk_ftl_get_capacity
        .align  2
@@ -7404,9 +6936,9 @@ rknand_print_hex:
        stp     x21, x22, [sp,32]
        stp     x23, x24, [sp,48]
        mov     x19, 0
-       adrp    x23, .LC79
-       adrp    x21, .LC80
-       adrp    x24, .LC72
+       adrp    x23, .LC80
+       adrp    x21, .LC81
+       adrp    x24, .LC73
        stp     x25, x26, [sp,64]
        str     x27, [sp,80]
        mov     x22, x1
@@ -7414,48 +6946,48 @@ rknand_print_hex:
        mov     w25, w2
        uxtw    x26, w3
        mov     w20, w19
-       add     x23, x23, :lo12:.LC79
-       add     x21, x21, :lo12:.LC80
-       add     x24, x24, :lo12:.LC72
-.L930:
+       add     x23, x23, :lo12:.LC80
+       add     x21, x21, :lo12:.LC81
+       add     x24, x24, :lo12:.LC73
+.L974:
        cmp     x19, x26
-       beq     .L938
-       cbnz    w20, .L931
+       beq     .L982
+       cbnz    w20, .L975
        mov     x0, x23
        mov     x1, x27
        mov     w2, w19
        bl      printk
-.L931:
+.L975:
        cmp     w25, 4
        mov     x0, x21
-       bne     .L932
+       bne     .L976
        ldr     w1, [x22,x19,lsl 2]
-       b       .L937
-.L932:
+       b       .L981
+.L976:
        cmp     w25, 2
-       bne     .L934
+       bne     .L978
        ldrsh   w1, [x22,x19,lsl 1]
-       b       .L937
-.L934:
+       b       .L981
+.L978:
        ldrb    w1, [x22,x19]
-.L937:
+.L981:
        bl      printk
        add     w20, w20, 1
        cmp     w20, 15
-       bls     .L935
-       adrp    x1, .LC81
+       bls     .L979
+       adrp    x1, .LC82
        mov     x0, x24
-       add     x1, x1, :lo12:.LC81
+       add     x1, x1, :lo12:.LC82
        mov     w20, 0
        bl      printk
-.L935:
+.L979:
        add     x19, x19, 1
-       b       .L930
-.L938:
-       adrp    x0, .LC72
-       adrp    x1, .LC81
-       add     x1, x1, :lo12:.LC81
-       add     x0, x0, :lo12:.LC72
+       b       .L974
+.L982:
+       adrp    x0, .LC73
+       adrp    x1, .LC82
+       add     x1, x1, :lo12:.LC82
+       add     x0, x0, :lo12:.LC73
        bl      printk
        ldr     x27, [sp,80]
        ldp     x19, x20, [sp,16]
@@ -7470,50 +7002,49 @@ rknand_print_hex:
        .type   NandcXferComp, %function
 NandcXferComp:
        stp     x29, x30, [sp, -80]!
-       adrp    x1, :got:gNandChipMap
        ubfiz   x0, x0, 4, 8
        add     x29, sp, 0
-       stp     x21, x22, [sp,32]
-       ldr     x1, [x1, #:got_lo12:gNandChipMap]
-       adrp    x21, :got:gNandcVer
        stp     x19, x20, [sp,16]
+       adrp    x20, .LANCHOR0
        str     x23, [sp,48]
-       ldr     x19, [x1,x0]
-       ldr     x0, [x21, #:got_lo12:gNandcVer]
-       ldr     w0, [x0]
+       add     x1, x20, :lo12:.LANCHOR0
+       add     x2, x1, 24
+       stp     x21, x22, [sp,32]
+       ldr     x19, [x2,x0]
+       ldr     w0, [x1,20]
        cmp     w0, 3
-       bls     .L970
+       bls     .L1014
        ldr     w0, [x19,16]
-       tbz     x0, 2, .L970
+       tbz     x0, 2, .L1014
        mov     x0, x19
        bl      wait_for_nandc_xfer_completed
-       ldr     w20, [x19,16]
+       ldr     w21, [x19,16]
        ldr     w0, [x19,8]
-       ubfx    x20, x20, 1, 1
+       ubfx    x21, x21, 1, 1
        str     w0, [x29,64]
-       cbz     w20, .L941
-       adrp    x22, .LC82
-       adrp    x23, .LC83
-       mov     w20, 0
-       add     x22, x22, :lo12:.LC82
-       add     x23, x23, :lo12:.LC83
-.L942:
+       cbz     w21, .L985
+       adrp    x22, .LC83
+       adrp    x23, .LC84
+       mov     w21, 0
+       add     x22, x22, :lo12:.LC83
+       add     x23, x23, :lo12:.LC84
+.L986:
        ldr     w2, [x19,28]
        ldr     w1, [x29,64]
        ubfx    x2, x2, 16, 5
        ubfx    x1, x1, 22, 6
        cmp     w2, w1
-       bge     .L950
-       ldr     x0, [x21, #:got_lo12:gNandcVer]
-       ldr     w0, [x0]
+       bge     .L994
+       add     x0, x20, :lo12:.LANCHOR0
+       ldr     w0, [x0,20]
        cmp     w0, 5
-       bhi     .L943
-.L946:
-       add     w20, w20, 1
-       and     w0, w20, 16777215
-       cbnz    w0, .L942
+       bhi     .L987
+.L990:
+       add     w21, w21, 1
+       and     w0, w21, 16777215
+       cbnz    w0, .L986
        ldr     w2, [x19,28]
-       mov     w1, w20
+       mov     w1, w21
        ldr     w3, [x29,64]
        mov     x0, x22
        ubfx    x2, x2, 16, 5
@@ -7524,19 +7055,19 @@ NandcXferComp:
        mov     w2, 4
        mov     w3, 512
        bl      rknand_print_hex
-       b       .L942
-.L943:
+       b       .L986
+.L987:
        ldr     w0, [x19]
        str     w0, [x29,72]
        ldr     w0, [x29,72]
-       tbz     x0, 13, .L946
+       tbz     x0, 13, .L990
        ldr     w0, [x29,72]
-       tbz     x0, 17, .L946
-.L950:
-       adrp    x19, :got:gMasterInfo
-       ldr     x19, [x19, #:got_lo12:gMasterInfo]
+       tbz     x0, 17, .L990
+.L994:
+       add     x19, x20, :lo12:.LANCHOR0
+       add     x19, x19, 1888
        ldr     w0, [x19,40]
-       cbz     w0, .L951
+       cbz     w0, .L995
        ldr     w1, [x29,64]
        mov     w2, 0
        ldr     w0, [x19,32]
@@ -7549,45 +7080,43 @@ NandcXferComp:
        ubfx    x1, x1, 22, 5
        lsl     w1, w1, 7
        bl      rknand_dma_unmap_single
-       b       .L951
-.L941:
-       adrp    x21, .LC84
-       adrp    x22, .LC83
-       add     x21, x21, :lo12:.LC84
-       add     x22, x22, :lo12:.LC83
-.L952:
+       b       .L995
+.L985:
+       adrp    x22, .LC85
+       adrp    x23, .LC84
+       add     x22, x22, :lo12:.LC85
+       add     x23, x23, :lo12:.LC84
+.L996:
        ldr     w0, [x29,64]
-       tbnz    x0, 20, .L978
+       tbnz    x0, 20, .L1022
        ldr     w0, [x19,8]
-       add     w20, w20, 1
+       add     w21, w21, 1
        str     w0, [x29,64]
-       and     w0, w20, 16777215
-       cbnz    w0, .L952
+       and     w0, w21, 16777215
+       cbnz    w0, .L996
        ldr     w2, [x29,64]
-       mov     w1, w20
+       mov     w1, w21
        ldr     w3, [x19,28]
-       mov     x0, x21
+       mov     x0, x22
        ubfx    x3, x3, 16, 5
        bl      printk
-       mov     x0, x22
+       mov     x0, x23
        mov     x1, x19
        mov     w2, 4
        mov     w3, 512
        bl      rknand_print_hex
-       b       .L952
-.L978:
-       adrp    x0, :got:gNandcDumpWriteEn
-       mov     x20, x0
-       ldr     x1, [x0, #:got_lo12:gNandcDumpWriteEn]
-       ldr     w1, [x1]
-       cbz     w1, .L955
+       b       .L996
+.L1022:
+       add     x0, x20, :lo12:.LANCHOR0
+       ldr     w0, [x0,1936]
+       cbz     w0, .L999
        mov     x0, x19
        bl      NandcSendDumpDataStart
-.L955:
-       adrp    x21, :got:gMasterInfo
-       ldr     x21, [x21, #:got_lo12:gMasterInfo]
+.L999:
+       add     x21, x20, :lo12:.LANCHOR0
+       add     x21, x21, 1888
        ldr     w0, [x21,40]
-       cbz     w0, .L956
+       cbz     w0, .L1000
        ldr     w1, [x29,64]
        mov     w2, 1
        ldr     w0, [x21,32]
@@ -7600,23 +7129,22 @@ NandcXferComp:
        ubfx    x1, x1, 22, 5
        lsl     w1, w1, 7
        bl      rknand_dma_unmap_single
-.L956:
-       ldr     x0, [x20, #:got_lo12:gNandcDumpWriteEn]
-       ldr     w0, [x0]
-       cbz     w0, .L951
+.L1000:
+       add     x0, x20, :lo12:.LANCHOR0
+       ldr     w0, [x0,1936]
+       cbz     w0, .L995
        mov     x0, x19
        bl      NandcSendDumpDataDone
-.L951:
-       adrp    x0, :got:gMasterInfo
-       ldr     x0, [x0, #:got_lo12:gMasterInfo]
-       str     wzr, [x0,40]
-       b       .L939
-.L970:
+.L995:
+       add     x20, x20, :lo12:.LANCHOR0
+       str     wzr, [x20,1928]
+       b       .L983
+.L1014:
        ldr     w0, [x19,8]
        str     w0, [x29,64]
        ldr     w0, [x29,64]
-       tbz     x0, 20, .L970
-.L939:
+       tbz     x0, 20, .L1014
+.L983:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldr     x23, [sp,48]
@@ -7627,273 +7155,279 @@ NandcXferComp:
        .global NandcXferData
        .type   NandcXferData, %function
 NandcXferData:
-       stp     x29, x30, [sp, -176]!
+       stp     x29, x30, [sp, -192]!
        add     x29, sp, 0
-       stp     x23, x24, [sp,48]
-       uxtb    w24, w0
-       adrp    x0, :got:gNandChipMap
-       stp     x19, x20, [sp,16]
-       uxtb    w20, w1
-       sbfiz   x1, x24, 4, 32
-       ldr     x0, [x0, #:got_lo12:gNandChipMap]
-       uxtb    w23, w2
        stp     x21, x22, [sp,32]
+       adrp    x22, __stack_chk_guard
+       uxtb    w21, w1
        stp     x25, x26, [sp,64]
+       stp     x19, x20, [sp,16]
+       stp     x23, x24, [sp,48]
        stp     x27, x28, [sp,80]
-       mov     x25, x3
-       mov     x21, x4
-       ldr     x19, [x0,x1]
+       uxtb    w26, w0
+       adrp    x19, .LANCHOR0
+       ldr     x0, [x22,#:lo12:__stack_chk_guard]
+       uxtb    w25, w2
+       str     x0, [x29,184]
+       add     x0, x19, :lo12:.LANCHOR0
+       add     x0, x0, x26, sxtw 4
+       str     x22, [x29,104]
+       ldr     x20, [x0,24]
        and     x0, x3, 63
-       cbnz    x0, .L980
-       cbnz    x4, .L981
-       add     x21, x29, 112
+       mov     x27, x3
+       mov     x23, x4
+       cbnz    x0, .L1024
+       cbnz    x4, .L1025
+       add     x0, x29, 120
        mov     w1, 255
-       mov     x0, x21
        mov     w2, 64
+       add     x23, x29, 120
        bl      ftl_memset
-.L981:
-       mov     w0, w24
-       mov     w1, w20
-       mov     w2, w23
+.L1025:
+       mov     w0, w26
+       mov     w1, w21
+       mov     w2, w25
        mov     w3, 0
-       mov     x4, x25
-       mov     x5, x21
-       mov     w22, 0
+       mov     x4, x27
+       mov     x5, x23
+       mov     w24, 0
        bl      NandcXferStart
-       mov     w0, w24
+       mov     w0, w26
        bl      NandcXferComp
-       cbnz    w20, .L982
-       adrp    x0, :got:gNandcEccBits
-       ubfx    x2, x23, 1, 7
+       cbnz    w21, .L1026
+       add     x1, x19, :lo12:.LANCHOR0
+       ubfx    x2, x25, 1, 7
        mov     w3, 128
-       adrp    x5, :got:gMasterInfo
-       add     x2, x21, x2, lsl 2
-       ldr     x1, [x0, #:got_lo12:gNandcEccBits]
-       ldr     w1, [x1]
-       cmp     w1, 25
-       mov     w1, 64
-       csel    w3, w1, w3, cc
-       mov     w1, w20
-.L984:
-       cmp     x21, x2
-       add     w4, w1, w3
-       beq     .L1026
-       ldr     x6, [x5, #:got_lo12:gMasterInfo]
-       and     x1, x1, 4294967292
-       add     x21, x21, 4
-       ldr     x6, [x6,8]
-       ldr     w1, [x6,x1]
-       strb    w1, [x21,-4]
-       lsr     w6, w1, 8
-       strb    w6, [x21,-3]
-       lsr     w6, w1, 16
-       strb    w6, [x21,-2]
-       lsr     w1, w1, 24
-       strb    w1, [x21,-1]
-       mov     w1, w4
-       b       .L984
-.L1026:
-       ldr     x0, [x0, #:got_lo12:gNandcEccBits]
-       lsr     w23, w23, 2
-       ldr     w5, [x0]
-       adrp    x0, :got:gNandcVer
-       ldr     x0, [x0, #:got_lo12:gNandcVer]
-       ldr     w4, [x0]
+       add     x2, x23, x2, lsl 2
+       ldr     w0, [x1,1940]
+       cmp     w0, 25
+       mov     w0, 64
+       csel    w3, w0, w3, cc
+       mov     w0, w21
+.L1028:
+       cmp     x23, x2
+       add     w4, w0, w3
+       beq     .L1072
+       ldr     x5, [x1,1896]
+       and     x0, x0, 4294967292
+       add     x23, x23, 4
+       ldr     w0, [x5,x0]
+       strb    w0, [x23,-4]
+       lsr     w5, w0, 8
+       strb    w5, [x23,-3]
+       lsr     w5, w0, 16
+       strb    w5, [x23,-2]
+       lsr     w0, w0, 24
+       strb    w0, [x23,-1]
+       mov     w0, w4
+       b       .L1028
+.L1072:
+       add     x0, x19, :lo12:.LANCHOR0
+       lsr     w25, w25, 2
+       ldr     w5, [x0,1940]
+       ldr     w4, [x0,20]
        mov     w0, 0
-       mov     w22, w0
-.L986:
-       cmp     w0, w23
-       bcs     .L982
-       cbz     w5, .L982
+       mov     w24, w0
+.L1030:
+       cmp     w0, w25
+       bcs     .L1026
+       cbz     w5, .L1026
        uxtw    x1, w0
        add     x1, x1, 8
-       ldr     w1, [x19,x1,lsl 2]
-       str     w1, [x29,104]
-       ldr     w1, [x29,104]
-       tbnz    x1, 2, .L1010
-       ldr     w3, [x29,104]
+       ldr     w1, [x20,x1,lsl 2]
+       str     w1, [x29,112]
+       ldr     w1, [x29,112]
+       tbnz    x1, 2, .L1055
+       ldr     w3, [x29,112]
        ubfx    x3, x3, 15, 1
-       cbnz    w3, .L1010
+       cbnz    w3, .L1055
        cmp     w4, 5
-       bls     .L988
-       ldr     w2, [x29,104]
+       bls     .L1032
+       ldr     w2, [x29,112]
        ubfx    x6, x2, 3, 5
-       ldr     w2, [x29,104]
-       ldr     w1, [x29,104]
+       ldr     w2, [x29,112]
+       ldr     w1, [x29,112]
        ubfx    x2, x2, 27, 1
        ubfx    x3, x1, 16, 5
-       ldr     w1, [x29,104]
+       ldr     w1, [x29,112]
        orr     w2, w6, w2, lsl 5
        ubfx    x1, x1, 29, 1
        orr     w1, w3, w1, lsl 5
-       ldr     w3, [x29,104]
+       ldr     w3, [x29,112]
        cmp     w2, w1
-       bls     .L989
-       ldr     w1, [x29,104]
+       bls     .L1033
+       ldr     w1, [x29,112]
        ubfx    x3, x3, 3, 5
        ubfx    x1, x1, 27, 1
+       b       .L1070
+.L1033:
+       ldr     w1, [x29,112]
+       ubfx    x3, x3, 16, 5
+       ubfx    x1, x1, 29, 1
+.L1070:
        orr     w3, w3, w1, lsl 5
-       b       .L990
-.L989:
-       ubfx    x1, x3, 16, 5
-       ldr     w3, [x29,104]
-       ubfx    x3, x3, 29, 1
-       b       .L1025
-.L988:
+       b       .L1034
+.L1032:
        cmp     w4, 3
-       bls     .L990
-       ldr     w2, [x29,104]
+       bls     .L1034
+       ldr     w2, [x29,112]
        ubfx    x6, x2, 3, 5
-       ldr     w2, [x29,104]
-       ldr     w1, [x29,104]
+       ldr     w2, [x29,112]
+       ldr     w1, [x29,112]
        ubfx    x2, x2, 28, 1
        ubfx    x3, x1, 16, 5
-       ldr     w1, [x29,104]
+       ldr     w1, [x29,112]
        orr     w2, w6, w2, lsl 5
        ubfx    x1, x1, 30, 1
        orr     w1, w3, w1, lsl 5
-       ldr     w3, [x29,104]
+       ldr     w3, [x29,112]
        cmp     w2, w1
-       bls     .L991
+       bls     .L1035
        ubfx    x1, x3, 3, 5
-       ldr     w3, [x29,104]
+       ldr     w3, [x29,112]
        ubfx    x3, x3, 28, 1
-       b       .L1025
-.L991:
+       b       .L1071
+.L1035:
        ubfx    x1, x3, 16, 5
-       ldr     w3, [x29,104]
+       ldr     w3, [x29,112]
        ubfx    x3, x3, 30, 1
-.L1025:
+.L1071:
        orr     w3, w1, w3, lsl 5
-.L990:
-       cmp     w22, w3
-       csel    w22, w22, w3, cs
-       b       .L987
-.L1010:
-       mov     w22, -1
-.L987:
+.L1034:
+       cmp     w24, w3
+       csel    w24, w24, w3, cs
+       b       .L1031
+.L1055:
+       mov     w24, -1
+.L1031:
        add     w0, w0, 1
-       b       .L986
-.L982:
-       str     wzr, [x19,16]
-       b       .L993
-.L980:
-       cmp     w20, 1
-       bne     .L1024
-       mov     w22, 0
-       mov     w27, 2
-.L994:
-       cmp     w22, w23
-       bcs     .L1027
-       and     w26, w22, 3
-       mov     x3, x25
-       cbz     x25, .L996
-       ubfiz   x0, x22, 9, 23
-       add     x3, x25, x0
-.L996:
-       cmp     x21, xzr
-       mov     x0, x19
-       csel    w4, w27, wzr, ne
+       b       .L1030
+.L1026:
+       str     wzr, [x20,16]
+       b       .L1037
+.L1024:
+       cmp     w21, 1
+       bne     .L1069
+       mov     w24, 0
+       mov     w22, 2
+.L1038:
+       cmp     w24, w25
+       bcs     .L1073
+       and     w28, w24, 3
+       mov     x3, x27
+       cbz     x27, .L1040
+       ubfiz   x0, x24, 9, 23
+       add     x3, x27, x0
+.L1040:
+       cmp     x23, xzr
+       mov     x0, x20
+       csel    w4, w22, wzr, ne
        mov     w1, 1
-       mov     w2, w26
-       mul     w4, w4, w22
-       add     w22, w22, 2
-       add     x4, x21, x4
+       mov     w2, w28
+       mul     w4, w4, w24
+       add     w24, w24, 2
+       add     x4, x23, x4
        bl      NandcCopy1KB
        mov     x4, 0
-       mov     w0, w24
+       mov     w0, w26
        mov     w1, 1
        mov     w2, 2
-       mov     w3, w26
+       mov     w3, w28
        mov     x5, x4
        bl      NandcXferStart
-       mov     w0, w24
+       mov     w0, w26
        bl      NandcXferComp
-       b       .L994
-.L1027:
-       mov     w22, 0
-       b       .L993
-.L1024:
+       b       .L1038
+.L1073:
+       mov     w24, 0
+       b       .L1037
+.L1069:
        mov     w1, 0
        mov     x4, 0
-       mov     w26, 0
-       mov     w0, w24
+       mov     w22, 0
+       mov     w0, w26
        mov     w2, 2
        mov     w3, w1
        mov     x5, x4
-       mov     w22, w26
-       mov     w27, 2
+       mov     w24, w22
        bl      NandcXferStart
-.L999:
-       cmp     w26, w23
-       bcs     .L993
-       mov     w0, w24
-       add     w28, w26, 2
+.L1043:
+       cmp     w22, w25
+       bcs     .L1037
+       mov     w0, w26
+       add     w28, w22, 2
        bl      NandcXferComp
-       ldr     w0, [x19,32]
-       cmp     w28, w23
-       str     w0, [x29,104]
-       bcs     .L1000
+       ldr     w0, [x20,32]
+       cmp     w28, w25
+       str     w0, [x29,112]
+       bcs     .L1044
        mov     x4, 0
-       mov     w0, w24
+       mov     w0, w26
        mov     w1, 0
        mov     w2, 2
        and     w3, w28, 3
        mov     x5, x4
        bl      NandcXferStart
-.L1000:
-       ldr     w0, [x29,104]
-       tbnz    x0, 2, .L1015
-       ldr     w0, [x29,104]
+.L1044:
+       ldr     w0, [x29,112]
+       tbnz    x0, 2, .L1060
+       ldr     w0, [x29,112]
        ubfx    x1, x0, 3, 5
-       ldr     w0, [x29,104]
+       ldr     w0, [x29,112]
        ubfx    x0, x0, 27, 1
        orr     w0, w1, w0, lsl 5
-       cmp     w22, w0
-       csel    w22, w22, w0, cs
-       b       .L1001
-.L1015:
-       mov     w22, -1
-.L1001:
-       and     w2, w26, 3
-       mov     x3, x25
-       cbz     x25, .L1002
-       ubfiz   x3, x26, 9, 23
-       add     x3, x25, x3
-.L1002:
-       cmp     x21, xzr
-       mov     x0, x19
-       csel    w4, w27, wzr, ne
+       cmp     w24, w0
+       csel    w24, w24, w0, cs
+       b       .L1045
+.L1060:
+       mov     w24, -1
+.L1045:
+       and     w2, w22, 3
+       mov     x3, x27
+       cbz     x27, .L1046
+       ubfiz   x3, x22, 9, 23
+       add     x3, x27, x3
+.L1046:
+       cmp     x23, xzr
+       mov     w0, 2
+       csel    w4, w0, wzr, ne
        mov     w1, 0
-       mul     w4, w4, w26
-       mov     w26, w28
-       add     x4, x21, x4
+       mov     x0, x20
+       mul     w4, w4, w22
+       mov     w22, w28
+       add     x4, x23, x4
        bl      NandcCopy1KB
-       b       .L999
-.L993:
-       cbnz    w20, .L1005
-       adrp    x0, :got:gNandcVer
-       ldr     x0, [x0, #:got_lo12:gNandcVer]
-       ldr     w0, [x0]
+       b       .L1043
+.L1037:
+       cbnz    w21, .L1049
+       add     x19, x19, :lo12:.LANCHOR0
+       ldr     w0, [x19,20]
        cmp     w0, 5
-       bls     .L1005
-       ldr     w0, [x19]
+       bls     .L1049
+       ldr     w0, [x20]
        mov     w1, 8192
        movk    w1, 0x2, lsl 16
        and     w1, w0, w1
        cmp     w1, 139264
-       bne     .L1005
+       bne     .L1049
        orr     w0, w0, 131072
-       mov     w22, -1
-       str     w0, [x19]
-.L1005:
-       mov     w0, w22
+       mov     w24, -1
+       str     w0, [x20]
+.L1049:
+       ldr     x1, [x29,104]
+       mov     w0, w24
+       ldr     x2, [x29,184]
+       ldr     x1, [x1,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L1051
+       bl      __stack_chk_fail
+.L1051:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 176
+       ldp     x29, x30, [sp], 192
        ret
        .size   NandcXferData, .-NandcXferData
        .align  2
@@ -7905,23 +7439,20 @@ FlashReadRawPage:
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
        uxtb    w19, w0
-       adrp    x0, :got:gNandParaInfo
+       adrp    x0, .LANCHOR1+481
        str     x21, [sp,32]
        mov     x21, x2
-       ldr     x0, [x0, #:got_lo12:gNandParaInfo]
-       ldrb    w20, [x0,9]
-       cbnz    w19, .L1029
-       adrp    x0, :got:gNandIDBResBlkNum
-       adrp    x5, :got:gBlockPageAlignSize
-       ldr     x0, [x0, #:got_lo12:gNandIDBResBlkNum]
-       ldr     x5, [x5, #:got_lo12:gBlockPageAlignSize]
-       ldrb    w0, [x0]
-       ldr     w2, [x5]
-       mul     w0, w0, w2
+       ldrb    w20, [x0,#:lo12:.LANCHOR1+481]
+       cbnz    w19, .L1075
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       ldrb    w5, [x0,9]
+       ldr     w0, [x0,12]
+       mul     w0, w5, w0
        cmp     w1, w0
        mov     w0, 4
        csel    w20, w20, w0, cs
-.L1029:
+.L1075:
        mov     w0, w19
        str     x4, [x29,48]
        str     x1, [x29,56]
@@ -7954,164 +7485,151 @@ FlashReadRawPage:
 FlashDdrTunningRead:
        stp     x29, x30, [sp, -128]!
        add     x29, sp, 0
-       stp     x23, x24, [sp,48]
-       uxtb    w24, w0
-       adrp    x0, :got:gpNandc
+       stp     x19, x20, [sp,16]
+       adrp    x19, .LANCHOR0
+       add     x19, x19, :lo12:.LANCHOR0
        stp     x21, x22, [sp,32]
+       stp     x23, x24, [sp,48]
+       stp     x27, x28, [sp,80]
        stp     x25, x26, [sp,64]
-       ldr     x0, [x0, #:got_lo12:gpNandc]
+       uxtb    w23, w0
        mov     w22, 6
-       stp     x27, x28, [sp,80]
-       stp     x19, x20, [sp,16]
-       mov     w26, w1
-       mov     x25, x2
-       ldr     x0, [x0]
-       mov     x23, x3
-       mov     w27, w4
+       ldr     x0, [x19,128]
+       mov     w24, w1
+       mov     x28, x2
+       mov     x27, x3
+       mov     w25, w4
        mov     w21, 1024
        ldr     w0, [x0,304]
        str     w0, [x29,124]
-       adrp    x0, :got:gNandcVer
-       ldr     x0, [x0, #:got_lo12:gNandcVer]
-       ldr     w0, [x0]
+       ldr     w0, [x19,20]
        cmp     w0, 8
        mov     w0, 12
        csel    w22, w22, w0, cc
-       cbz     w4, .L1032
+       cbz     w4, .L1078
        mov     w0, 1
-       adrp    x19, :got:gFlashInterfaceMode
        bl      FlashSetInterfaceMode
        mov     w0, 1
        bl      NandcSetMode
-       mov     w0, w24
+       mov     w0, w23
        bl      FlashReset
-       mov     w1, w26
-       mov     x2, x25
-       mov     x3, x23
-       mov     w0, w24
+       mov     w1, w24
+       mov     x2, x28
+       mov     x3, x27
+       mov     w0, w23
        bl      FlashReadRawPage
-       ldr     x19, [x19, #:got_lo12:gFlashInterfaceMode]
        mov     w21, w0
-       ldrb    w0, [x19]
+       ldrb    w0, [x19,1844]
        bl      FlashSetInterfaceMode
-       ldrb    w0, [x19]
+       ldrb    w0, [x19,1844]
        bl      NandcSetMode
        cmn     w21, #1
-       bne     .L1033
-.L1042:
+       bne     .L1079
+.L1088:
        mov     w21, -1
-       b       .L1034
-.L1033:
-       adrp    x0, .LC85
-       mov     w1, w26
-       add     x0, x0, :lo12:.LC85
+       b       .L1080
+.L1079:
+       adrp    x0, .LC86
+       mov     w1, w24
+       add     x0, x0, :lo12:.LC86
        mov     w2, w21
        bl      printk
        cmp     w21, 9
-       bhi     .L1035
-       adrp    x1, :got:IDByte
-       sxtw    x0, w24
-       lsl     x2, x0, 3
-       ldr     x1, [x1, #:got_lo12:IDByte]
-       ldrb    w1, [x1,x2]
-       cmp     w1, 173
-       bne     .L1035
-       adrp    x1, :got:gNandChipMap
-       lsl     x0, x0, 4
-       ldr     x1, [x1, #:got_lo12:gNandChipMap]
-       ldr     x0, [x1,x0]
+       bhi     .L1081
+       add     x19, x19, x23, sxtw 4
+       ldr     x0, [x19,24]
        ldr     w1, [x0,3840]
        ldr     w1, [x0]
        orr     w1, w1, 131072
        str     w1, [x0]
-.L1035:
-       adrp    x0, :got:FlashDdrTunningReadCount
-       ldr     x0, [x0, #:got_lo12:FlashDdrTunningReadCount]
-       ldr     w1, [x0]
+.L1081:
+       adrp    x0, .LANCHOR4
+       add     x0, x0, :lo12:.LANCHOR4
+       ldr     w1, [x0,40]
        add     w1, w1, 1
-       str     w1, [x0]
+       str     w1, [x0,40]
        cmp     w1, 2047
-       bls     .L1034
-       mov     x23, 0
-       str     wzr, [x0]
-       mov     x25, x23
-.L1032:
+       bls     .L1080
+       mov     x27, 0
+       str     wzr, [x0,40]
+       mov     x28, x27
+.L1078:
        mov     w19, 0
-       mov     w28, -1
+       mov     w26, -1
        mov     w5, w19
        mov     w6, w19
        mov     w20, w19
-.L1040:
+.L1086:
        mov     w0, w22
        str     x5, [x29,104]
        str     x6, [x29,112]
        bl      NandcSetDdrPara
-       mov     w1, w26
-       mov     w0, w24
-       mov     x2, x25
-       mov     x3, x23
+       mov     w1, w24
+       mov     w0, w23
+       mov     x2, x28
+       mov     x3, x27
        bl      FlashReadRawPage
        add     w1, w21, 1
        ldr     x6, [x29,112]
        cmp     w0, w1
        ldr     x5, [x29,104]
-       bhi     .L1036
+       bhi     .L1082
        cmp     w0, 2
-       bhi     .L1046
+       bhi     .L1092
        add     w20, w20, 1
        cmp     w20, 9
-       bls     .L1046
+       bls     .L1092
        sub     w19, w22, w20
        mov     w21, w0
-       mov     w28, 0
-       b       .L1038
-.L1036:
+       mov     w26, 0
+       b       .L1084
+.L1082:
        cmp     w6, w20
-       bcs     .L1047
+       bcs     .L1093
        cmp     w20, 7
        sub     w5, w19, w20
-       bhi     .L1048
+       bhi     .L1094
        mov     w6, w20
-       b       .L1047
-.L1046:
-       mov     x23, 0
+       b       .L1093
+.L1092:
+       mov     x27, 0
        mov     w19, w22
        mov     w21, w0
-       mov     w28, 0
-       mov     x25, x23
-       b       .L1037
-.L1047:
+       mov     w26, 0
+       mov     x28, x27
+       b       .L1083
+.L1093:
        mov     w20, 0
-.L1037:
+.L1083:
        add     w22, w22, 2
        cmp     w22, 69
-       bls     .L1040
-.L1038:
+       bls     .L1086
+.L1084:
        cmp     w6, w20
        csel    w19, w19, w5, cc
-       b       .L1039
-.L1048:
+       b       .L1085
+.L1094:
        mov     w19, w5
-.L1039:
-       cbz     w19, .L1041
-       adrp    x0, .LC86
+.L1085:
+       cbz     w19, .L1087
+       adrp    x0, .LC87
        mov     w1, w19
-       add     x0, x0, :lo12:.LC86
+       add     x0, x0, :lo12:.LC87
        bl      printk
        mov     w0, w19
        bl      NandcSetDdrPara
-.L1041:
-       cbz     w28, .L1034
-       adrp    x0, .LC87
-       mov     w1, w24
-       add     x0, x0, :lo12:.LC87
-       mov     w2, w26
+.L1087:
+       cbz     w26, .L1080
+       adrp    x0, .LC88
+       mov     w1, w23
+       add     x0, x0, :lo12:.LC88
+       mov     w2, w24
        bl      printk
-       cbz     w27, .L1042
+       cbz     w25, .L1088
        ldr     w0, [x29,124]
        lsr     w0, w0, 8
        bl      NandcSetDdrPara
-.L1034:
+.L1080:
        mov     w0, w21
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
@@ -8127,88 +7645,82 @@ FlashDdrTunningRead:
 FlashReadPage:
        stp     x29, x30, [sp, -80]!
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       uxtb    w20, w0
-       str     x25, [sp,64]
-       mov     w0, w20
-       stp     x23, x24, [sp,48]
        stp     x21, x22, [sp,32]
-       mov     x24, x2
+       uxtb    w21, w0
        mov     w22, w1
+       mov     w0, w21
+       stp     x23, x24, [sp,48]
+       stp     x19, x20, [sp,16]
+       stp     x25, x26, [sp,64]
+       mov     x24, x2
        mov     x23, x3
        bl      FlashReadRawPage
        cmn     w0, #1
        mov     w19, w0
-       bne     .L1064
-       adrp    x21, :got:gNandRandomizer
-       ldr     x21, [x21, #:got_lo12:gNandRandomizer]
-       ldrb    w25, [x21]
-       cbnz    w25, .L1065
-.L1067:
-       adrp    x0, :got:gFlashToggleModeEn
-       ldr     x0, [x0, #:got_lo12:gFlashToggleModeEn]
-       ldrb    w0, [x0]
-       cbz     w0, .L1064
-       b       .L1082
-.L1065:
-       mov     w0, w20
+       bne     .L1104
+       adrp    x20, .LANCHOR0
+       add     x25, x20, :lo12:.LANCHOR0
+       ldrb    w26, [x25,16]
+       cbnz    w26, .L1105
+.L1107:
+       add     x20, x20, :lo12:.LANCHOR0
+       ldrb    w0, [x20,1864]
+       cbz     w0, .L1104
+       b       .L1122
+.L1105:
+       mov     w0, w21
        mov     w1, w22
        mov     x2, x24
        mov     x3, x23
-       strb    wzr, [x21]
+       strb    wzr, [x25,16]
        bl      FlashReadRawPage
-       strb    w25, [x21]
+       strb    w26, [x25,16]
        cmn     w0, #1
-       beq     .L1067
+       beq     .L1107
        mov     w19, w0
-       b       .L1064
-.L1082:
-       adrp    x0, :got:gpNandc
+       b       .L1104
+.L1122:
+       ldr     x0, [x20,128]
        mov     w1, w22
        mov     x2, x24
        mov     x3, x23
        mov     w4, 1
-       ldr     x0, [x0, #:got_lo12:gpNandc]
-       ldr     x0, [x0]
-       ldr     w21, [x0,304]
-       mov     w0, w20
+       ldr     w25, [x0,304]
+       mov     w0, w21
        bl      FlashDdrTunningRead
        cmn     w0, #1
        mov     w19, w0
-       beq     .L1068
-       adrp    x1, :got:gNandFlashEccBits
-       ldr     x1, [x1, #:got_lo12:gNandFlashEccBits]
-       ldrb    w0, [x1]
+       beq     .L1108
+       ldrb    w0, [x20,1944]
        cmp     w19, w0, lsr 1
-       bls     .L1064
-.L1068:
-       lsr     w0, w21, 8
+       bls     .L1104
+.L1108:
+       lsr     w0, w25, 8
        bl      NandcSetDdrPara
-.L1064:
-       adrp    x0, :got:gpReadRetrial
+.L1104:
+       adrp    x0, .LANCHOR4+48
        cmn     w19, #1
-       ldr     x0, [x0, #:got_lo12:gpReadRetrial]
-       ldr     x4, [x0]
-       bne     .L1069
-       cbz     x4, .L1069
+       ldr     x4, [x0,#:lo12:.LANCHOR4+48]
+       bne     .L1109
+       cbz     x4, .L1109
        mov     w1, w22
        mov     x2, x24
        mov     x3, x23
-       mov     w0, w20
+       mov     w0, w21
        blr     x4
        mov     w19, w0
-       adrp    x0, .LC88
+       adrp    x0, .LC89
        mov     w1, w19
-       add     x0, x0, :lo12:.LC88
-       mov     w2, w20
+       add     x0, x0, :lo12:.LC89
+       mov     w2, w21
        mov     w3, w22
        bl      printk
-.L1069:
+.L1109:
        mov     w0, w19
-       ldr     x25, [sp,64]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
+       ldp     x25, x26, [sp,64]
        ldp     x29, x30, [sp], 80
        ret
        .size   FlashReadPage, .-FlashReadPage
@@ -8219,14 +7731,14 @@ FlashDdrParaScan:
        stp     x29, x30, [sp, -48]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       adrp    x19, :got:gFlashInterfaceMode
+       adrp    x19, .LANCHOR0
        mov     w20, w1
        stp     x21, x22, [sp,32]
+       add     x22, x19, :lo12:.LANCHOR0
        uxtb    w21, w0
-       ldr     x22, [x19, #:got_lo12:gFlashInterfaceMode]
-       ldrb    w0, [x22]
+       ldrb    w0, [x22,1844]
        bl      FlashSetInterfaceMode
-       ldrb    w0, [x22]
+       ldrb    w0, [x22,1844]
        bl      NandcSetMode
        mov     x2, 0
        mov     w1, w20
@@ -8236,32 +7748,29 @@ FlashDdrParaScan:
        bl      FlashDdrTunningRead
        mov     w22, w0
        mov     x2, 0
-       mov     w1, w20
        mov     w0, w21
+       mov     w1, w20
        mov     x3, x2
        bl      FlashReadRawPage
        cmn     w0, #1
-       mov     x1, x19
-       adrp    x19, :got:gFlashToggleModeEn
-       beq     .L1087
+       beq     .L1127
        cmn     w22, #1
-       bne     .L1084
-.L1087:
-       ldr     x0, [x1, #:got_lo12:gFlashInterfaceMode]
-       ldrb    w0, [x0]
-       tbz     x0, 0, .L1084
+       bne     .L1124
+.L1127:
+       add     x20, x19, :lo12:.LANCHOR0
+       ldrb    w0, [x20,1844]
+       tbz     x0, 0, .L1124
        mov     w0, 1
        bl      FlashSetInterfaceMode
        mov     w0, 1
        bl      NandcSetMode
-       ldr     x19, [x19, #:got_lo12:gFlashToggleModeEn]
-       strb    wzr, [x19]
-       b       .L1086
-.L1084:
-       ldr     x19, [x19, #:got_lo12:gFlashToggleModeEn]
+       strb    wzr, [x20,1864]
+       b       .L1126
+.L1124:
+       add     x19, x19, :lo12:.LANCHOR0
        mov     w0, 1
-       strb    w0, [x19]
-.L1086:
+       strb    w0, [x19,1864]
+.L1126:
        mov     w0, 0
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
@@ -8272,308 +7781,324 @@ FlashDdrParaScan:
        .global FlashLoadPhyInfo
        .type   FlashLoadPhyInfo, %function
 FlashLoadPhyInfo:
-       stp     x29, x30, [sp, -144]!
-       mov     w0, 60
+       stp     x29, x30, [sp, -128]!
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       adrp    x20, :got:gNandParaInfo
-       mov     w19, 0
-       strb    w0, [x29,136]
+       stp     x27, x28, [sp,80]
+       adrp    x27, __stack_chk_guard
+       stp     x23, x24, [sp,48]
+       adrp    x24, .LANCHOR0
+       adrp    x23, .LANCHOR4
+       ldr     x0, [x27,#:lo12:__stack_chk_guard]
+       add     x1, x24, :lo12:.LANCHOR0
+       str     x0, [x29,120]
+       mov     w0, 60
+       strb    w0, [x29,112]
        mov     w0, 40
-       strb    w0, [x29,137]
+       strb    w0, [x29,113]
        mov     w0, 24
-       strb    w0, [x29,138]
+       strb    w0, [x29,114]
        mov     w0, 16
        stp     x21, x22, [sp,32]
-       strb    w0, [x29,139]
-       adrp    x22, :got:gFlashPageBuffer0
-       ldr     x0, [x20, #:got_lo12:gNandParaInfo]
-       adrp    x21, :got:gpFlashSaveInfo
-       stp     x23, x24, [sp,48]
        stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
-       ldr     x1, [x22, #:got_lo12:gFlashPageBuffer0]
-       adrp    x23, :got:gNandFlashInfoBlockAddr
-       ldrh    w0, [x0,10]
-       mov     w24, 4
-       str     w0, [x29,124]
+       stp     x19, x20, [sp,16]
+       strb    w0, [x29,115]
+       adrp    x22, .LANCHOR1
+       add     x0, x23, :lo12:.LANCHOR4
+       add     x21, x22, :lo12:.LANCHOR1
+       ldr     x1, [x1,1856]
+       add     x21, x21, 472
+       mov     w20, 0
+       mov     w26, 4
+       str     x1, [x0,56]
        mov     w25, -1
-       ldr     x0, [x21, #:got_lo12:gpFlashSaveInfo]
-       adrp    x26, :got:gNandOptPara
-       ldr     x1, [x1]
-       adrp    x27, :got:gReadRetryInfo
-       str     x21, [x29,112]
-       str     x1, [x0]
-       ldr     x0, [x23, #:got_lo12:gNandFlashInfoBlockAddr]
-       str     wzr, [x0]
-.L1095:
-       add     w28, w19, 1
-       mov     x21, 0
-.L1097:
-       add     x0, x29, 136
-       ldrb    w0, [x21,x0]
+       str     wzr, [x0,64]
+       mov     w0, 0
+       ldrh    w28, [x21,10]
+       bl      flash_enter_slc_mode
+.L1135:
+       add     w0, w20, 1
+       mov     x19, 0
+       str     w0, [x29,104]
+.L1137:
+       add     x0, x29, 112
+       ldrb    w0, [x19,x0]
        bl      FlashBchSel
-       ldr     x6, [x22, #:got_lo12:gFlashPageBuffer0]
+       add     x5, x24, :lo12:.LANCHOR0
        mov     w0, 0
-       mov     w1, w19
+       mov     w1, w20
        mov     x3, 0
-       str     x6, [x29,104]
-       ldr     x2, [x6]
+       str     x5, [x29,96]
+       ldr     x2, [x5,1856]
        bl      FlashReadRawPage
        cmn     w0, #1
-       bne     .L1096
-       ldr     x6, [x29,104]
+       bne     .L1136
+       ldr     x5, [x29,96]
        mov     w0, 0
-       mov     w1, w28
+       ldr     w1, [x29,104]
        mov     x3, 0
-       ldr     x2, [x6]
+       ldr     x2, [x5,1856]
        bl      FlashReadRawPage
        cmn     w0, #1
-       bne     .L1096
-       add     x21, x21, 1
-       cmp     x21, 4
-       beq     .L1098
-       b       .L1097
-.L1099:
-       ldr     w21, [x0,8]
+       bne     .L1136
+       add     x19, x19, 1
+       cmp     x19, 4
+       beq     .L1138
+       b       .L1137
+.L1139:
+       add     x0, x2, 12
        mov     w1, 2036
-       add     x0, x0, 12
+       str     x2, [x29,104]
        mov     w25, -1
        bl      JSHash
-       cmp     w21, w0
-       beq     .L1109
-.L1098:
-       ldr     w0, [x29,124]
-       subs    w24, w24, #1
-       add     w19, w19, w0
-       bne     .L1095
-       b       .L1106
-.L1096:
-       ldr     x0, [x29,112]
-       mov     w1, 20036
-       movk    w1, 0x4e41, lsl 16
-       ldr     x28, [x0, #:got_lo12:gpFlashSaveInfo]
-       ldr     x0, [x28]
-       ldr     w2, [x0]
-       cmp     w2, w1
-       bne     .L1098
-       cbnz    w25, .L1099
-       ldr     x20, [x20, #:got_lo12:gNandParaInfo]
-       adrp    x0, :got:gNandFlashIdbBlockAddr
-       ldrh    w1, [x20,10]
-       ldr     x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
-       udiv    w19, w19, w1
-       add     w19, w19, 1
-       str     w19, [x0]
-       b       .L1106
-.L1109:
-       ldr     x21, [x20, #:got_lo12:gNandParaInfo]
-       mov     w2, 32
-       ldr     x1, [x28]
+       ldr     x2, [x29,104]
+       ldr     w1, [x2,8]
+       cmp     w1, w0
+       beq     .L1149
+.L1138:
+       subs    w26, w26, #1
+       add     w20, w20, w28
+       bne     .L1135
+       mov     w0, w26
+       bl      flash_exit_slc_mode
+.L1140:
+       ldr     x2, [x29,120]
+       mov     w0, w25
+       ldr     x1, [x27,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L1145
+       bl      __stack_chk_fail
+.L1136:
+       add     x19, x23, :lo12:.LANCHOR4
+       mov     w0, 20036
+       movk    w0, 0x4e41, lsl 16
+       ldr     x2, [x19,56]
+       ldr     w1, [x2]
+       cmp     w1, w0
+       bne     .L1138
+       cbnz    w25, .L1139
+       add     x22, x22, :lo12:.LANCHOR1
+       ldrh    w0, [x22,482]
+       udiv    w20, w20, w0
+       add     w20, w20, 1
+       str     w20, [x19,68]
+       b       .L1140
+.L1149:
+       add     x1, x2, 160
        mov     x0, x21
-       add     x1, x1, 160
+       mov     w2, 32
+       add     x25, x24, :lo12:.LANCHOR0
        bl      ftl_memcpy
-       ldr     x1, [x28]
+       ldr     x1, [x19,56]
        mov     w2, 32
-       ldr     x0, [x26, #:got_lo12:gNandOptPara]
+       add     x0, x25, 88
        add     x1, x1, 192
        bl      ftl_memcpy
-       ldr     x1, [x28]
+       ldr     x1, [x19,56]
        mov     w2, 852
-       ldr     x0, [x27, #:got_lo12:gReadRetryInfo]
+       add     x0, x25, 760
        add     x1, x1, 224
        bl      ftl_memcpy
-       adrp    x1, :got:gFlashToggleModeEn
-       ldr     x2, [x28]
-       ldr     x1, [x1, #:got_lo12:gFlashToggleModeEn]
-       ldr     w0, [x2,1076]
-       strb    w0, [x1]
-       ldrh    w1, [x21,10]
-       ldr     x0, [x23, #:got_lo12:gNandFlashInfoBlockAddr]
-       udiv    w1, w19, w1
-       str     w19, [x0]
-       adrp    x0, :got:gNandFlashIdbBlockAddr
-       add     w3, w1, 1
-       ldr     x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
-       cbz     w1, .L1101
-       str     w3, [x0]
-       b       .L1102
-.L1101:
-       mov     w1, 2
-       str     w1, [x0]
-.L1102:
-       adrp    x0, :got:gNandIDBResBlkNumSaveInFlash
-       ldrh    w1, [x2,14]
+       str     w20, [x19,64]
+       ldr     x1, [x19,56]
+       ldr     w0, [x1,1076]
+       strb    w0, [x25,1864]
+       ldrh    w0, [x21,10]
+       udiv    w0, w20, w0
+       add     w2, w0, 1
+       cbz     w0, .L1141
+       str     w2, [x19,68]
+       b       .L1142
+.L1141:
+       mov     w0, 2
+       str     w0, [x19,68]
+.L1142:
+       add     x0, x23, :lo12:.LANCHOR4
+       ldrh    w1, [x1,14]
        mov     w25, 0
-       ldr     x0, [x0, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
-       strb    w1, [x0]
-       b       .L1098
-.L1106:
-       mov     w0, w25
+       strb    w1, [x0,72]
+       b       .L1138
+.L1145:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 144
+       ldp     x29, x30, [sp], 128
        ret
        .size   FlashLoadPhyInfo, .-FlashLoadPhyInfo
        .align  2
        .global ToshibaReadRetrial
        .type   ToshibaReadRetrial, %function
 ToshibaReadRetrial:
-       stp     x29, x30, [sp, -96]!
+       stp     x29, x30, [sp, -128]!
        add     x29, sp, 0
        stp     x23, x24, [sp,48]
        uxtb    w23, w0
        mov     w0, w23
+       str     w1, [x29,116]
        stp     x19, x20, [sp,16]
-       stp     x25, x26, [sp,64]
-       stp     x21, x22, [sp,32]
        stp     x27, x28, [sp,80]
-       mov     x26, x2
-       mov     w27, w1
-       mov     x25, x3
+       stp     x21, x22, [sp,32]
+       stp     x25, x26, [sp,64]
+       mov     x27, x2
+       mov     x26, x3
+       adrp    x19, .LANCHOR0
        bl      NandcWaitFlashReady
-       mov     w0, w23
-       adrp    x20, :got:g_retryMode
+       add     x2, x19, :lo12:.LANCHOR0
+       sbfiz   x0, x23, 4, 32
+       add     x1, x2, 24
        mov     w22, 0
-       bl      NandcGetChipIf
-       mov     x19, x0
-       ldr     x0, [x20, #:got_lo12:g_retryMode]
-       ldrb    w0, [x0]
+       add     x3, x1, x0
+       ldr     x24, [x1,x0]
+       ldrb    w0, [x3,8]
+       str     x0, [x29,120]
+       add     x20, x0, 8
+       mov     x28, x0
+       ldrb    w0, [x2,752]
+       add     x20, x24, x20, lsl 8
        sub     w0, w0, #67
        uxtb    w0, w0
        cmp     w0, 1
-       bls     .L1111
-       adrp    x0, :got:gFlashToggleModeEn
-       ldr     x0, [x0, #:got_lo12:gFlashToggleModeEn]
-       ldrb    w0, [x0]
-       cbz     w0, .L1112
+       bls     .L1151
+       ldrb    w0, [x2,1864]
+       cbz     w0, .L1152
        mov     w0, w22
        mov     w22, 1
        bl      NandcSetDdrMode
-.L1112:
-       mov     w0, 92
-       str     w0, [x19,8]
-       mov     w0, 197
-       str     w0, [x19,8]
-.L1111:
+.L1152:
+       ubfiz   x0, x28, 8, 8
+       mov     w2, 92
+       add     x0, x24, x0
+       str     w2, [x0,2056]
+       mov     w2, 197
+       str     w2, [x0,2056]
+.L1151:
+       ldr     x0, [x29,120]
        mov     w21, 1
-       mov     w24, -1
-.L1113:
-       adrp    x0, :got:g_maxRetryCount
-       ldr     x0, [x0, #:got_lo12:g_maxRetryCount]
-       ldrb    w0, [x0]
+       mov     w25, -1
+       add     x0, x0, 8
+       lsl     x0, x0, 8
+       str     x0, [x29,104]
+       ubfiz   x0, x28, 8, 8
+       str     x0, [x29,96]
+.L1153:
+       adrp    x0, .LANCHOR4
+       add     x0, x0, :lo12:.LANCHOR4
+       ldrb    w0, [x0,73]
        add     w0, w0, 1
        cmp     w21, w0
-       bcs     .L1138
-       ldr     x0, [x20, #:got_lo12:g_retryMode]
+       bcs     .L1178
+       add     x0, x19, :lo12:.LANCHOR0
        mov     w1, w21
-       ldrb    w0, [x0]
+       ldrb    w0, [x0,752]
        sub     w0, w0, #67
        uxtb    w0, w0
        cmp     w0, 1
-       mov     x0, x19
-       bhi     .L1114
+       mov     x0, x20
+       bhi     .L1154
        bl      SandiskSetRRPara
-       b       .L1115
-.L1114:
+       b       .L1155
+.L1154:
        bl      ToshibaSetRRPara
-.L1115:
-       ldr     x0, [x20, #:got_lo12:g_retryMode]
-       ldrb    w0, [x0]
+.L1155:
+       add     x0, x19, :lo12:.LANCHOR0
+       ldrb    w0, [x0,752]
        cmp     w0, 34
-       bne     .L1116
-       adrp    x0, :got:g_maxRetryCount
-       ldr     x0, [x0, #:got_lo12:g_maxRetryCount]
-       ldrb    w0, [x0]
+       bne     .L1156
+       adrp    x0, .LANCHOR4
+       add     x0, x0, :lo12:.LANCHOR4
+       ldrb    w0, [x0,73]
        sub     w0, w0, #3
        cmp     w21, w0
-       bne     .L1116
-       mov     w0, 179
-       str     w0, [x19,8]
-.L1116:
-       mov     w0, 38
-       str     w0, [x19,8]
-       mov     w0, 93
-       str     w0, [x19,8]
-       cbz     w22, .L1117
+       bne     .L1156
+       ldr     x0, [x29,104]
+       mov     w1, 179
+       add     x0, x24, x0
+       str     w1, [x0,8]
+.L1156:
+       ldr     x0, [x29,96]
+       mov     w1, 38
+       add     x0, x24, x0
+       str     w1, [x0,2056]
+       mov     w1, 93
+       str     w1, [x0,2056]
+       cbz     w22, .L1157
        mov     w0, 4
        bl      NandcSetDdrMode
+       ldr     w1, [x29,116]
        mov     w0, w23
-       mov     w1, w27
-       mov     x2, x26
-       mov     x3, x25
+       mov     x2, x27
+       mov     x3, x26
        bl      FlashReadRawPage
        mov     w28, w0
        mov     w0, 0
        bl      NandcSetDdrMode
-       b       .L1118
-.L1117:
+       b       .L1158
+.L1157:
+       ldr     w1, [x29,116]
        mov     w0, w23
-       mov     w1, w27
-       mov     x2, x26
-       mov     x3, x25
+       mov     x2, x27
+       mov     x3, x26
        bl      FlashReadRawPage
        mov     w28, w0
-.L1118:
+.L1158:
        cmn     w28, #1
-       beq     .L1119
-       adrp    x0, :got:gNandFlashEccBits
-       cmn     w24, #1
-       csel    w24, w24, w28, ne
-       ldr     x0, [x0, #:got_lo12:gNandFlashEccBits]
-       ldrb    w0, [x0]
+       beq     .L1159
+       add     x0, x19, :lo12:.LANCHOR0
+       cmn     w25, #1
+       csel    w25, w25, w28, ne
+       ldrb    w0, [x0,1944]
        add     w0, w0, w0, lsl 1
        cmp     w28, w0, lsr 2
-       bcc     .L1121
-       mov     x25, 0
-       mov     x26, x25
-.L1119:
+       bcc     .L1161
+       mov     x26, 0
+       mov     x27, x26
+.L1159:
        add     w21, w21, 1
-       b       .L1113
-.L1138:
-       mov     w28, w24
-.L1121:
-       ldr     x20, [x20, #:got_lo12:g_retryMode]
+       b       .L1153
+.L1178:
+       mov     w28, w25
+.L1161:
+       add     x0, x19, :lo12:.LANCHOR0
        mov     w1, 0
-       ldrb    w0, [x20]
+       ldrb    w0, [x0,752]
        sub     w0, w0, #67
        uxtb    w0, w0
        cmp     w0, 1
-       mov     x0, x19
-       bhi     .L1123
+       mov     x0, x20
+       bhi     .L1163
        bl      SandiskSetRRPara
-       b       .L1124
-.L1123:
+       b       .L1164
+.L1163:
        bl      ToshibaSetRRPara
-.L1124:
+.L1164:
+       ldr     x0, [x29,120]
+       add     x19, x19, :lo12:.LANCHOR0
+       add     x0, x0, 8
+       add     x24, x24, x0, lsl 8
        mov     w0, 255
-       str     w0, [x19,8]
-       adrp    x0, :got:gNandFlashEccBits
-       ldr     x0, [x0, #:got_lo12:gNandFlashEccBits]
-       ldrb    w0, [x0]
+       str     w0, [x24,8]
+       ldrb    w0, [x19,1944]
        add     w0, w0, w0, lsl 1
        cmp     w28, w0, lsr 2
-       bcc     .L1125
+       bcc     .L1165
        cmn     w28, #1
        mov     w0, 256
        csel    w28, w28, w0, eq
-.L1125:
+.L1165:
        mov     w0, w23
        bl      NandcWaitFlashReady
-       cbz     w22, .L1126
+       cbz     w22, .L1166
        mov     w0, 4
        bl      NandcSetDdrMode
-.L1126:
+.L1166:
        mov     w0, w28
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 96
+       ldp     x29, x30, [sp], 128
        ret
        .size   ToshibaReadRetrial, .-ToshibaReadRetrial
        .align  2
@@ -8583,68 +8108,71 @@ SamsungReadRetrial:
        stp     x29, x30, [sp, -96]!
        add     x29, sp, 0
        stp     x21, x22, [sp,32]
-       uxtb    w21, w0
+       uxtb    w22, w0
        str     x27, [sp,80]
-       mov     w0, w21
-       mov     x22, x3
+       mov     w0, w22
+       adrp    x27, .LANCHOR4
        stp     x19, x20, [sp,16]
        stp     x23, x24, [sp,48]
        stp     x25, x26, [sp,64]
-       mov     w23, w1
-       mov     x25, x2
+       mov     x24, x2
+       mov     w25, w1
+       mov     x23, x3
+       adrp    x20, .LANCHOR0
        bl      NandcWaitFlashReady
-       mov     w20, 1
-       mov     w0, w21
+       mov     w26, 1
+       add     x0, x20, :lo12:.LANCHOR0
+       sbfiz   x1, x22, 4, 32
+       add     x0, x0, 24
        mov     w19, -1
-       adrp    x26, :got:g_maxRetryCount
-       adrp    x27, :got:gNandFlashEccBits
-       bl      NandcGetChipIf
-       mov     x24, x0
-.L1140:
-       ldr     x0, [x26, #:got_lo12:g_maxRetryCount]
-       ldrb    w4, [x0]
-       add     w4, w4, 1
-       cmp     w20, w4
-       bcs     .L1143
-       mov     x0, x24
-       mov     w1, w20
+       add     x2, x0, x1
+       ldr     x0, [x0,x1]
+       ldrb    w21, [x2,8]
+       add     x21, x21, 8
+       add     x21, x0, x21, lsl 8
+.L1180:
+       add     x0, x27, :lo12:.LANCHOR4
+       ldrb    w0, [x0,73]
+       add     w0, w0, 1
+       cmp     w26, w0
+       bcs     .L1183
+       mov     x0, x21
+       mov     w1, w26
        bl      SamsungSetRRPara
-       mov     w0, w21
-       mov     w1, w23
-       mov     x2, x25
-       mov     x3, x22
+       mov     w0, w22
+       mov     w1, w25
+       mov     x2, x24
+       mov     x3, x23
        bl      FlashReadRawPage
        cmn     w0, #1
-       mov     w4, w0
-       beq     .L1141
+       beq     .L1181
+       add     x1, x20, :lo12:.LANCHOR0
        cmn     w19, #1
        csel    w19, w19, w0, ne
-       ldr     x0, [x27, #:got_lo12:gNandFlashEccBits]
-       ldrb    w2, [x0]
-       add     w2, w2, w2, lsl 1
-       cmp     w4, w2, lsr 2
-       bcc     .L1146
-       mov     x22, 0
-       mov     x25, x22
-.L1141:
-       add     w20, w20, 1
-       b       .L1140
-.L1146:
-       mov     w19, w4
-.L1143:
-       mov     x0, x24
+       ldrb    w1, [x1,1944]
+       add     w1, w1, w1, lsl 1
+       cmp     w0, w1, lsr 2
+       bcc     .L1186
+       mov     x23, 0
+       mov     x24, x23
+.L1181:
+       add     w26, w26, 1
+       b       .L1180
+.L1186:
+       mov     w19, w0
+.L1183:
+       mov     x0, x21
        mov     w1, 0
+       add     x20, x20, :lo12:.LANCHOR0
        bl      SamsungSetRRPara
-       adrp    x0, :got:gNandFlashEccBits
-       ldr     x0, [x0, #:got_lo12:gNandFlashEccBits]
-       ldrb    w0, [x0]
+       ldrb    w0, [x20,1944]
        add     w0, w0, w0, lsl 1
        cmp     w19, w0, lsr 2
-       bcc     .L1145
+       bcc     .L1185
        cmn     w19, #1
        mov     w0, 256
        csel    w19, w19, w0, eq
-.L1145:
+.L1185:
        mov     w0, w19
        ldr     x27, [sp,80]
        ldp     x19, x20, [sp,16]
@@ -8658,87 +8186,102 @@ SamsungReadRetrial:
        .global MicronReadRetrial
        .type   MicronReadRetrial, %function
 MicronReadRetrial:
-       stp     x29, x30, [sp, -96]!
+       stp     x29, x30, [sp, -128]!
        add     x29, sp, 0
-       stp     x21, x22, [sp,32]
-       uxtb    w22, w0
-       mov     w21, 0
-       mov     w0, w22
-       stp     x19, x20, [sp,16]
        stp     x23, x24, [sp,48]
+       uxtb    w24, w0
+       mov     w23, 0
+       mov     w0, w24
+       stp     x19, x20, [sp,16]
        stp     x25, x26, [sp,64]
        stp     x27, x28, [sp,80]
+       stp     x21, x22, [sp,32]
        mov     w25, w1
-       mov     x24, x2
-       mov     x23, x3
+       mov     x27, x2
+       mov     x26, x3
+       adrp    x21, .LANCHOR0
        bl      NandcWaitFlashReady
-       mov     w0, w22
-       mov     w20, -1
-       mov     w26, 239
-       mov     w27, 137
-       bl      NandcGetChipIf
-       adrp    x28, :got:gNandFlashEccBits
-       mov     x19, x0
-.L1156:
-       str     w26, [x19,8]
+       mov     w19, -1
+       add     x0, x21, :lo12:.LANCHOR0
+       sbfiz   x1, x24, 4, 32
+       add     x0, x0, 24
+       adrp    x4, .LANCHOR4
+       add     x2, x0, x1
+       mov     w6, 239
+       mov     w7, 137
+       ldr     x28, [x0,x1]
+       ldrb    w20, [x2,8]
+       lsl     x5, x20, 8
+.L1193:
+       add     x0, x4, :lo12:.LANCHOR4
+       ldrb    w0, [x0,73]
+       cmp     w23, w0
+       bcs     .L1196
+       add     x22, x28, x5
        mov     w0, 200
-       str     w27, [x19,4]
-       add     w21, w21, 1
+       str     x4, [x29,96]
+       add     w23, w23, 1
+       str     x5, [x29,104]
+       str     w6, [x22,2056]
+       str     w7, [x22,2052]
+       str     x6, [x29,112]
+       str     x7, [x29,120]
        bl      NandcDelayns
-       str     w21, [x19]
-       str     wzr, [x19]
-       mov     w0, w22
-       str     wzr, [x19]
+       str     w23, [x22,2048]
+       mov     w0, w24
+       str     wzr, [x22,2048]
        mov     w1, w25
-       str     wzr, [x19]
-       mov     x2, x24
-       mov     x3, x23
+       str     wzr, [x22,2048]
+       mov     x2, x27
+       str     wzr, [x22,2048]
+       mov     x3, x26
        bl      FlashReadRawPage
        cmn     w0, #1
-       beq     .L1153
-       ldr     x1, [x28, #:got_lo12:gNandFlashEccBits]
-       cmn     w20, #1
-       csel    w20, w20, w0, ne
-       ldrb    w2, [x1]
+       ldr     x7, [x29,120]
+       ldr     x6, [x29,112]
+       ldr     x5, [x29,104]
+       ldr     x4, [x29,96]
+       beq     .L1193
+       add     x1, x21, :lo12:.LANCHOR0
+       cmn     w19, #1
+       csel    w19, w19, w0, ne
+       ldrb    w2, [x1,1944]
        add     w2, w2, w2, lsl 1
        cmp     w0, w2, lsr 2
-       bcc     .L1158
-       mov     x23, 0
-       mov     x24, x23
-.L1153:
-       cmp     w21, 7
-       bne     .L1156
-       b       .L1155
-.L1158:
-       mov     w20, w0
-.L1155:
+       bcc     .L1199
+       mov     x26, 0
+       mov     x27, x26
+       b       .L1193
+.L1199:
+       mov     w19, w0
+.L1196:
+       add     x20, x28, x20, lsl 8
        mov     w0, 239
-       str     w0, [x19,8]
+       add     x21, x21, :lo12:.LANCHOR0
+       str     w0, [x20,2056]
        mov     w0, 137
-       str     w0, [x19,4]
+       str     w0, [x20,2052]
        mov     w0, 200
        bl      NandcDelayns
-       str     wzr, [x19]
-       str     wzr, [x19]
-       adrp    x0, :got:gNandFlashEccBits
-       str     wzr, [x19]
-       str     wzr, [x19]
-       ldr     x0, [x0, #:got_lo12:gNandFlashEccBits]
-       ldrb    w0, [x0]
+       str     wzr, [x20,2048]
+       ldrb    w0, [x21,1944]
+       str     wzr, [x20,2048]
+       str     wzr, [x20,2048]
        add     w0, w0, w0, lsl 1
-       cmp     w20, w0, lsr 2
-       bcc     .L1157
-       cmn     w20, #1
+       str     wzr, [x20,2048]
+       cmp     w19, w0, lsr 2
+       bcc     .L1198
+       cmn     w19, #1
        mov     w0, 256
-       csel    w20, w20, w0, eq
-.L1157:
-       mov     w0, w20
+       csel    w19, w19, w0, eq
+.L1198:
+       mov     w0, w19
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 96
+       ldp     x29, x30, [sp], 128
        ret
        .size   MicronReadRetrial, .-MicronReadRetrial
        .align  2
@@ -8748,36 +8291,37 @@ HynixReadRetrial:
        stp     x29, x30, [sp, -112]!
        add     x29, sp, 0
        stp     x21, x22, [sp,32]
-       adrp    x21, :got:gReadRetryInfo
+       adrp    x21, .LANCHOR0
        uxtb    x22, w0
-       stp     x23, x24, [sp,48]
        stp     x27, x28, [sp,80]
-       ldr     x0, [x21, #:got_lo12:gReadRetryInfo]
+       add     x28, x21, :lo12:.LANCHOR0
        mov     w27, w1
-       stp     x19, x20, [sp,16]
-       stp     x25, x26, [sp,64]
+       add     x0, x28, 760
        add     x1, x0, x22
-       mov     x26, x2
-       ldrb    w25, [x0,2]
        mov     w0, w22
+       stp     x23, x24, [sp,48]
+       stp     x25, x26, [sp,64]
+       stp     x19, x20, [sp,16]
+       mov     x26, x2
        mov     x24, x3
-       mov     x23, x22
        ldrb    w20, [x1,12]
+       mov     x23, x22
+       ldrb    w25, [x28,762]
        bl      NandcWaitFlashReady
-       mov     w28, 0
+       mov     w4, 0
        mov     w19, -1
-       adrp    x4, :got:gNandFlashEccBits
-.L1166:
-       cmp     w28, w25
-       bcs     .L1170
+       add     x5, x28, 764
+.L1206:
+       cmp     w4, w25
+       bcs     .L1210
        add     w20, w20, 1
-       ldr     x2, [x21, #:got_lo12:gReadRetryInfo]
+       ldrb    w1, [x28,761]
+       mov     x2, x5
        mov     w0, w23
-       str     x4, [x29,104]
        uxtb    w20, w20
-       add     x2, x2, 4
+       str     x4, [x29,96]
        cmp     w20, w25
-       ldrb    w1, [x2,-3]
+       str     x5, [x29,104]
        csel    w20, w20, wzr, cc
        mov     w3, w20
        bl      HynixSetRRPara
@@ -8787,36 +8331,34 @@ HynixReadRetrial:
        mov     x3, x24
        bl      FlashReadRawPage
        cmn     w0, #1
-       ldr     x4, [x29,104]
-       beq     .L1168
-       ldr     x1, [x4, #:got_lo12:gNandFlashEccBits]
+       ldr     x5, [x29,104]
+       ldr     x4, [x29,96]
+       beq     .L1208
+       ldrb    w1, [x28,1944]
        cmn     w19, #1
        csel    w19, w19, w0, ne
-       ldrb    w1, [x1]
        add     w1, w1, w1, lsl 1
        cmp     w0, w1, lsr 2
-       bcc     .L1173
+       bcc     .L1213
        mov     x24, 0
        mov     x26, x24
-.L1168:
-       add     w28, w28, 1
-       b       .L1166
-.L1173:
+.L1208:
+       add     w4, w4, 1
+       b       .L1206
+.L1213:
        mov     w19, w0
-.L1170:
-       ldr     x21, [x21, #:got_lo12:gReadRetryInfo]
-       adrp    x0, :got:gNandFlashEccBits
-       add     x21, x21, x22
-       strb    w20, [x21,12]
-       ldr     x0, [x0, #:got_lo12:gNandFlashEccBits]
-       ldrb    w0, [x0]
+.L1210:
+       add     x21, x21, :lo12:.LANCHOR0
+       add     x22, x21, x22
+       ldrb    w0, [x21,1944]
+       strb    w20, [x22,772]
        add     w0, w0, w0, lsl 1
        cmp     w19, w0, lsr 2
-       bcc     .L1172
+       bcc     .L1212
        cmn     w19, #1
        mov     w0, 256
        csel    w19, w19, w0, eq
-.L1172:
+.L1212:
        mov     w0, w19
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
@@ -8835,31 +8377,26 @@ FlashProgPage:
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
        uxtb    w19, w0
-       adrp    x0, :got:gNandParaInfo
+       adrp    x0, .LANCHOR1+481
        stp     x21, x22, [sp,32]
        mov     w20, w1
        mov     x22, x2
-       ldr     x0, [x0, #:got_lo12:gNandParaInfo]
-       ldrb    w21, [x0,9]
-       cbnz    w19, .L1180
-       adrp    x0, :got:gNandIDBResBlkNum
-       adrp    x1, :got:gBlockPageAlignSize
-       ldr     x0, [x0, #:got_lo12:gNandIDBResBlkNum]
-       ldr     x1, [x1, #:got_lo12:gBlockPageAlignSize]
-       ldrb    w0, [x0]
-       ldr     w1, [x1]
-       mul     w0, w0, w1
-       cmp     w20, w0
-       bcs     .L1180
-       adrp    x0, :got:g_slc2KBNand
-       ldr     x0, [x0, #:got_lo12:g_slc2KBNand]
-       ldrb    w0, [x0]
-       cbnz    w0, .L1181
+       ldrb    w21, [x0,#:lo12:.LANCHOR1+481]
+       cbnz    w19, .L1220
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       ldrb    w1, [x0,9]
+       ldr     w2, [x0,12]
+       mul     w1, w1, w2
+       cmp     w20, w1
+       bcs     .L1220
+       ldrb    w0, [x0,8]
+       cbnz    w0, .L1221
        sub     w21, w21, #2
-       b       .L1180
-.L1181:
+       b       .L1220
+.L1221:
        mov     w21, 4
-.L1180:
+.L1220:
        mov     w0, w19
        str     x4, [x29,56]
        bl      NandcWaitFlashReady
@@ -8895,166 +8432,145 @@ FlashProgPage:
        .global FlashSavePhyInfo
        .type   FlashSavePhyInfo, %function
 FlashSavePhyInfo:
-       stp     x29, x30, [sp, -112]!
+       stp     x29, x30, [sp, -80]!
        add     x29, sp, 0
        stp     x23, x24, [sp,48]
-       adrp    x23, :got:gFlashPageBuffer0
-       adrp    x24, :got:gFlashPageBuffer1
-       stp     x21, x22, [sp,32]
-       adrp    x22, :got:gpFlashSaveInfo
+       adrp    x23, .LANCHOR0
        stp     x19, x20, [sp,16]
-       ldr     x20, [x23, #:got_lo12:gFlashPageBuffer0]
-       ldr     x19, [x22, #:got_lo12:gpFlashSaveInfo]
+       stp     x21, x22, [sp,32]
+       add     x20, x23, :lo12:.LANCHOR0
+       adrp    x22, .LANCHOR4
+       add     x19, x22, :lo12:.LANCHOR4
+       mov     w21, 0
        stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
-       adrp    x25, :got:gBlockPageAlignSize
-       adrp    x26, :got:gNandFlashIdbBlockAddr
-       ldr     x0, [x20]
-       adrp    x27, :got:gNandFlashInfoBlockAddr
-       str     x0, [x19]
-       adrp    x0, :got:gNandFlashIDBEccBits
-       ldr     x0, [x0, #:got_lo12:gNandFlashIDBEccBits]
-       ldrb    w0, [x0]
+       ldr     x0, [x20,1856]
+       str     x0, [x19,56]
+       ldrb    w0, [x19,74]
        bl      FlashBchSel
-       ldr     x0, [x20]
+       ldr     x0, [x20,1856]
        mov     w1, 0
        mov     w2, 2048
        bl      ftl_memset
-       ldr     x1, [x19]
+       ldr     x1, [x19,56]
        mov     w0, 20036
        movk    w0, 0x4e41, lsl 16
        mov     w2, 32
        str     w0, [x1]
-       adrp    x1, :got:gNandMaxDie
-       ldr     x0, [x19]
-       ldr     x1, [x1, #:got_lo12:gNandMaxDie]
+       ldr     x0, [x19,56]
+       ldrb    w1, [x20,1845]
        add     x0, x0, 16
-       ldrb    w1, [x1]
        strh    w1, [x0,-4]
-       adrp    x1, :got:gNandIDBResBlkNum
-       ldr     x1, [x1, #:got_lo12:gNandIDBResBlkNum]
-       ldrb    w1, [x1]
+       ldrb    w1, [x20,9]
        strh    w1, [x0,-2]
-       adrp    x1, :got:gFlashToggleModeEn
-       ldr     x1, [x1, #:got_lo12:gFlashToggleModeEn]
-       ldrb    w1, [x1]
+       ldrb    w1, [x20,1864]
        str     w1, [x0,1060]
-       adrp    x1, :got:IDByte
-       ldr     x1, [x1, #:got_lo12:IDByte]
+       add     x1, x20, 1620
        bl      ftl_memcpy
-       adrp    x1, :got:DieCsIndex
-       ldr     x0, [x19]
+       ldr     x0, [x19,56]
+       add     x1, x20, 1848
        mov     w2, 8
        add     x0, x0, 80
-       ldr     x1, [x1, #:got_lo12:DieCsIndex]
        bl      ftl_memcpy
-       adrp    x1, :got:DieAddrs
-       ldr     x0, [x19]
+       ldr     x0, [x19,56]
+       add     x1, x20, 708
        mov     w2, 32
        add     x0, x0, 96
-       ldr     x1, [x1, #:got_lo12:DieAddrs]
        bl      ftl_memcpy
-       adrp    x1, :got:gNandParaInfo
-       ldr     x0, [x19]
+       ldr     x0, [x19,56]
+       adrp    x1, .LANCHOR1
+       add     x1, x1, :lo12:.LANCHOR1
        mov     w2, 32
+       add     x1, x1, 472
        add     x0, x0, 160
-       ldr     x1, [x1, #:got_lo12:gNandParaInfo]
        bl      ftl_memcpy
-       adrp    x1, :got:gNandOptPara
-       ldr     x0, [x19]
+       ldr     x0, [x19,56]
+       add     x1, x20, 88
        mov     w2, 32
        add     x0, x0, 192
-       ldr     x1, [x1, #:got_lo12:gNandOptPara]
        bl      ftl_memcpy
-       adrp    x1, :got:gReadRetryInfo
-       ldr     x0, [x19]
+       ldr     x0, [x19,56]
+       add     x1, x20, 760
        mov     w2, 852
        add     x0, x0, 224
-       ldr     x1, [x1, #:got_lo12:gReadRetryInfo]
        bl      ftl_memcpy
-       ldr     x20, [x19]
+       ldr     x20, [x19,56]
        mov     w1, 2036
        add     x0, x20, 12
        bl      JSHash
        str     w0, [x20,8]
-       ldr     x0, [x19]
-       mov     w1, 1592
-       str     w1, [x0,4]
-       ldr     x0, [x24, #:got_lo12:gFlashPageBuffer1]
-       ldr     x0, [x0]
-       str     x0, [x19]
-       mov     w19, 0
-       mov     w20, w19
-.L1185:
-       ldr     x21, [x25, #:got_lo12:gBlockPageAlignSize]
+       mov     w0, 1592
+       str     w0, [x20,4]
+       ldr     x0, [x19,80]
+       str     x0, [x19,56]
+       mov     w0, 0
+       mov     w19, w21
+       bl      flash_enter_slc_mode
+.L1225:
+       add     x20, x23, :lo12:.LANCHOR0
        mov     w2, 0
        mov     w0, 0
-       ldr     w1, [x21]
-       mul     w1, w20, w1
+       add     x24, x22, :lo12:.LANCHOR4
+       add     w26, w19, 1
+       ldr     w1, [x20,12]
+       mul     w1, w19, w1
        bl      FlashEraseBlock
-       ldr     x28, [x23, #:got_lo12:gFlashPageBuffer0]
-       ldr     w1, [x21]
+       ldr     w1, [x20,12]
        mov     x3, 0
+       ldr     x2, [x20,1856]
        mov     w0, 0
-       ldr     x2, [x28]
-       mul     w1, w20, w1
+       mul     w1, w19, w1
        bl      FlashProgPage
-       ldr     w1, [x21]
+       ldr     w1, [x20,12]
        mov     x3, 0
-       ldr     x2, [x28]
+       ldr     x2, [x20,1856]
        mov     w0, 0
-       add     w28, w20, 1
-       mul     w1, w20, w1
+       mul     w1, w19, w1
        add     w1, w1, 1
        bl      FlashProgPage
-       ldr     w1, [x21]
+       ldr     w1, [x20,12]
        mov     w0, 0
-       ldr     x2, [x24, #:got_lo12:gFlashPageBuffer1]
+       ldr     x2, [x24,80]
        mov     x3, 0
-       mul     w1, w20, w1
-       ldr     x2, [x2]
+       mul     w1, w19, w1
        bl      FlashReadRawPage
        cmn     w0, #1
-       beq     .L1186
-       ldr     x0, [x22, #:got_lo12:gpFlashSaveInfo]
-       mov     w1, 20036
-       movk    w1, 0x4e41, lsl 16
-       ldr     x0, [x0]
-       ldr     w2, [x0]
-       cmp     w2, w1
-       bne     .L1186
-       ldr     w2, [x0,8]
+       beq     .L1223
+       ldr     x25, [x24,56]
+       mov     w0, 20036
+       movk    w0, 0x4e41, lsl 16
+       ldr     w1, [x25]
+       cmp     w1, w0
+       bne     .L1223
        mov     w1, 2036
-       add     x0, x0, 12
-       str     x2, [x29,104]
+       add     x0, x25, 12
        bl      JSHash
-       ldr     x2, [x29,104]
-       cmp     w2, w0
-       bne     .L1186
-       ldr     x0, [x26, #:got_lo12:gNandFlashIdbBlockAddr]
-       str     w28, [x0]
-       ldr     w0, [x21]
-       ldr     x1, [x27, #:got_lo12:gNandFlashInfoBlockAddr]
-       mul     w20, w20, w0
-       str     w20, [x1]
-       cbnz    w19, .L1187
-       mov     w19, 1
-.L1186:
-       cmp     w28, 4
-       mov     w20, w28
-       bne     .L1185
-       eor     w0, w19, 1
-       neg     w0, w0
-       b       .L1184
-.L1187:
+       ldr     w1, [x25,8]
+       cmp     w1, w0
+       bne     .L1223
+       ldr     w0, [x20,12]
+       cmp     w21, 1
+       str     w26, [x24,68]
+       mul     w19, w19, w0
+       str     w19, [x24,64]
+       beq     .L1226
+       mov     w21, 1
+.L1223:
+       cmp     w26, 4
+       mov     w19, w26
+       bne     .L1225
+       b       .L1224
+.L1226:
+       mov     w21, 2
+.L1224:
        mov     w0, 0
-.L1184:
+       bl      flash_exit_slc_mode
+       cmp     w21, wzr
+       csetm   w0, eq
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 112
+       ldp     x29, x30, [sp], 80
        ret
        .size   FlashSavePhyInfo, .-FlashSavePhyInfo
        .align  2
@@ -9062,97 +8578,118 @@ FlashSavePhyInfo:
        .type   FlashReadIdbDataRaw, %function
 FlashReadIdbDataRaw:
        stp     x29, x30, [sp, -128]!
-       mov     w1, 60
-       mov     w2, 2048
        add     x29, sp, 0
-       stp     x23, x24, [sp,48]
+       stp     x21, x22, [sp,32]
+       adrp    x22, __stack_chk_guard
        stp     x25, x26, [sp,64]
-       strb    w1, [x29,120]
-       mov     w1, 40
-       strb    w1, [x29,121]
-       mov     w1, 24
-       strb    w1, [x29,122]
-       mov     w1, 16
-       strb    w1, [x29,123]
-       adrp    x1, :got:gNandFlashEccBits
+       mov     x26, x0
+       ldr     x0, [x22,#:lo12:__stack_chk_guard]
+       str     x0, [x29,120]
+       mov     w0, 60
+       strb    w0, [x29,112]
+       mov     w0, 40
+       strb    w0, [x29,113]
+       mov     w0, 24
        stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
-       ldr     x1, [x1, #:got_lo12:gNandFlashEccBits]
-       adrp    x21, .LC89
+       strb    w0, [x29,114]
+       adrp    x19, .LANCHOR0
+       mov     w0, 16
+       strb    w0, [x29,115]
+       add     x0, x19, :lo12:.LANCHOR0
+       stp     x23, x24, [sp,48]
        stp     x27, x28, [sp,80]
-       mov     w19, 2
-       mov     w28, -1
-       ldrb    w22, [x1]
-       adrp    x24, :got:gNandIDBResBlkNum
+       ldr     w1, [x0,1872]
+       ldrb    w27, [x0,1944]
+       mov     w0, 12336
+       movk    w0, 0x5638, lsl 16
+       cmp     w1, w0
+       bne     .L1232
+       mov     w0, 0
+       bl      flash_enter_slc_mode
+.L1232:
+       adrp    x24, .LC90
+       mov     x0, x26
        mov     w1, 0
-       adrp    x25, :got:gBlockPageAlignSize
-       adrp    x26, :got:gFlashPageBuffer0
-       add     x21, x21, :lo12:.LC89
-       mov     x23, x0
+       mov     w2, 2048
+       mov     w25, -1
+       mov     w20, 2
+       add     x24, x24, :lo12:.LC90
+       adrp    x28, .LANCHOR4
        bl      ftl_memset
-.L1193:
-       ldr     x0, [x24, #:got_lo12:gNandIDBResBlkNum]
-       ldrb    w0, [x0]
-       cmp     w19, w0
-       bcs     .L1197
-       mov     x27, 0
-.L1195:
-       add     x0, x29, 120
-       ldrb    w4, [x27,x0]
+.L1233:
+       add     x0, x19, :lo12:.LANCHOR0
+       ldrb    w0, [x0,9]
+       cmp     w20, w0
+       bcs     .L1237
+       mov     x23, 0
+.L1235:
+       add     x0, x29, 112
+       add     x21, x19, :lo12:.LANCHOR0
+       ldrb    w4, [x23,x0]
        str     x4, [x29,104]
        mov     w0, w4
        bl      FlashBchSel
-       ldr     x20, [x26, #:got_lo12:gFlashPageBuffer0]
-       ldr     x0, [x25, #:got_lo12:gBlockPageAlignSize]
-       mov     x3, 0
-       ldr     x2, [x20]
-       ldr     w1, [x0]
+       ldr     w1, [x21,12]
        mov     w0, 0
-       mul     w1, w19, w1
+       ldr     x2, [x21,1856]
+       mov     x3, 0
+       mul     w1, w20, w1
        bl      FlashReadRawPage
        cmn     w0, #1
        ldr     x4, [x29,104]
-       bne     .L1194
-       add     x27, x27, 1
-       cmp     x27, 4
-       bne     .L1195
-       b       .L1196
-.L1194:
-       ldr     x0, [x20]
+       bne     .L1234
+       add     x23, x23, 1
+       cmp     x23, 4
+       bne     .L1235
+       b       .L1236
+.L1234:
+       ldr     x0, [x21,1856]
        ldr     w1, [x0]
        mov     w0, 35899
        movk    w0, 0xfcdc, lsl 16
        cmp     w1, w0
-       bne     .L1196
+       bne     .L1236
        mov     w1, w4
-       mov     x0, x21
+       mov     x0, x24
        bl      printk
-       ldr     x1, [x20]
-       mov     x0, x23
+       ldr     x1, [x21,1856]
+       mov     x0, x26
        mov     w2, 2048
        bl      ftl_memcpy
-       adrp    x0, :got:gNandIDBResBlkNum
-       ldr     x1, [x20]
-       ldr     x0, [x0, #:got_lo12:gNandIDBResBlkNum]
-       ldr     w1, [x1,512]
-       strb    w1, [x0]
-       adrp    x1, :got:gNandFlashIdbBlockAddr
-       ldr     x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
-       ldr     w0, [x1]
-       cmp     w0, w19
-       bls     .L1199
-       mov     w28, 0
-       str     w19, [x1]
+       ldr     x0, [x21,1856]
+       ldr     w0, [x0,512]
+       strb    w0, [x21,9]
+       add     x0, x28, :lo12:.LANCHOR4
+       ldr     w1, [x0,68]
+       cmp     w1, w20
+       bls     .L1241
+       mov     w25, 0
+       str     w20, [x0,68]
        bl      FlashSavePhyInfo
-.L1196:
-       add     w19, w19, 1
-       b       .L1193
-.L1199:
-       mov     w28, 0
-.L1197:
-       mov     w0, w22
+.L1236:
+       add     w20, w20, 1
+       b       .L1233
+.L1241:
+       mov     w25, 0
+.L1237:
+       mov     w0, w27
+       add     x19, x19, :lo12:.LANCHOR0
        bl      FlashBchSel
-       mov     w0, w28
+       ldr     w1, [x19,1872]
+       mov     w0, 12336
+       movk    w0, 0x5638, lsl 16
+       cmp     w1, w0
+       bne     .L1238
+       mov     w0, 0
+       bl      flash_exit_slc_mode
+.L1238:
+       ldr     x2, [x29,120]
+       mov     w0, w25
+       ldr     x1, [x22,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L1240
+       bl      __stack_chk_fail
+.L1240:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -9168,528 +8705,493 @@ FlashInit:
        stp     x29, x30, [sp, -112]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       mov     x19, x0
-       mov     w0, 32768
+       adrp    x19, .LANCHOR0
+       add     x20, x19, :lo12:.LANCHOR0
        stp     x21, x22, [sp,32]
+       mov     x22, x0
+       mov     w0, 32768
        stp     x23, x24, [sp,48]
-       stp     x27, x28, [sp,80]
        stp     x25, x26, [sp,64]
+       stp     x27, x28, [sp,80]
+       adrp    x23, .LANCHOR4
        bl      ftl_malloc
-       adrp    x20, :got:gNandIDBResBlkNum
-       adrp    x1, :got:gFlashPageBuffer0
-       adrp    x24, :got:gNandIDBResBlkNumSaveInFlash
-       adrp    x23, :got:gFlashToggleModeEn
-       adrp    x22, :got:g_slc2KBNand
-       adrp    x25, :got:gNandFlashIDBEccBits
-       adrp    x21, :got:IDByte
-       ldr     x1, [x1, #:got_lo12:gFlashPageBuffer0]
-       adrp    x27, .LC90
-       mov     w28, 0
-       add     x27, x27, :lo12:.LC90
-       str     x0, [x1]
+       add     x21, x23, :lo12:.LANCHOR4
+       str     x0, [x20,1856]
        mov     w0, 32768
+       add     x24, x20, 24
+       adrp    x25, .LC91
+       mov     w28, 0
        bl      ftl_malloc
-       adrp    x1, :got:gFlashPageBuffer1
-       ldr     x1, [x1, #:got_lo12:gFlashPageBuffer1]
-       str     x0, [x1]
+       str     x0, [x21,80]
        mov     w0, 4096
+       mov     w27, 144
        bl      ftl_malloc
-       adrp    x1, :got:gFlashSpareBuffer
-       ldr     x1, [x1, #:got_lo12:gFlashSpareBuffer]
-       str     x0, [x1]
+       str     x0, [x21,88]
        mov     w0, 32768
        bl      ftl_malloc
-       adrp    x1, :got:gFlashProgCheckBuffer
-       ldr     x1, [x1, #:got_lo12:gFlashProgCheckBuffer]
-       str     x0, [x1]
+       str     x0, [x21,96]
        mov     w0, 4096
        bl      ftl_malloc
-       adrp    x1, :got:gFlashProgCheckSpareBuffer
-       ldr     x1, [x1, #:got_lo12:gFlashProgCheckSpareBuffer]
-       str     x0, [x1]
-       mov     w1, 50
-       ldr     x0, [x20, #:got_lo12:gNandIDBResBlkNum]
-       strb    w1, [x0]
-       ldr     x0, [x24, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
-       strb    w1, [x0]
-       adrp    x1, :got:gNandFlashIdbBlockAddr
+       str     x0, [x21,104]
        mov     w0, 128
-       ldr     x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
-       str     wzr, [x1]
-       adrp    x1, :got:gBlockPageAlignSize
-       ldr     x1, [x1, #:got_lo12:gBlockPageAlignSize]
-       str     w0, [x1]
-       adrp    x1, :got:FlashDdrTunningReadCount
-       ldr     x0, [x23, #:got_lo12:gFlashToggleModeEn]
-       strb    wzr, [x0]
-       ldr     x1, [x1, #:got_lo12:FlashDdrTunningReadCount]
-       str     wzr, [x1]
-       mov     w1, 60
-       ldr     x0, [x22, #:got_lo12:g_slc2KBNand]
-       strb    wzr, [x0]
-       ldr     x0, [x25, #:got_lo12:gNandFlashIDBEccBits]
-       strb    w1, [x0]
-       mov     x0, x19
+       str     w0, [x20,12]
+       mov     w0, 60
+       mov     w1, 50
+       strb    w0, [x21,74]
+       mov     x0, x22
+       strb    wzr, [x20,1864]
+       strb    w1, [x20,9]
+       strb    wzr, [x20,8]
+       add     x20, x20, 1620
+       strb    w1, [x21,72]
+       mov     x26, x20
+       str     wzr, [x21,68]
+       str     wzr, [x21,40]
        bl      NandcInit
-       ldr     x19, [x21, #:got_lo12:IDByte]
-       str     x24, [x29,104]
-.L1207:
-       uxtb    w26, w28
-       mov     w0, w26
+       add     x0, x25, :lo12:.LC91
+       str     x0, [x29,104]
+.L1249:
+       uxtb    w25, w28
+       mov     w0, w25
        bl      FlashReset
-       mov     w0, w26
-       bl      NandcGetChipIf
-       mov     x24, x0
-       mov     w0, w26
+       ldrb    w22, [x24,8]
+       ldr     x21, [x24]
+       mov     w0, w25
+       ubfiz   x22, x22, 8, 8
+       add     x21, x21, x22
        bl      NandcFlashCs
-       mov     w0, 144
-       str     w0, [x24,8]
-       str     wzr, [x24,4]
        mov     w0, 200
+       str     w27, [x21,2056]
+       str     wzr, [x21,2052]
        bl      NandcDelayns
-       ldr     w0, [x24]
-       strb    w0, [x19]
-       ldr     w0, [x24]
-       strb    w0, [x19,1]
-       ldr     w0, [x24]
-       strb    w0, [x19,2]
-       ldr     w0, [x24]
-       strb    w0, [x19,3]
-       ldr     w0, [x24]
-       strb    w0, [x19,4]
-       ldr     w0, [x24]
-       strb    w0, [x19,5]
-       ldr     w0, [x24]
-       strb    w0, [x19,6]
-       ldr     w0, [x24]
-       strb    w0, [x19,7]
-       mov     w0, w26
+       ldr     w0, [x21,2048]
+       strb    w0, [x20]
+       ldr     w0, [x21,2048]
+       strb    w0, [x20,1]
+       ldr     w0, [x21,2048]
+       strb    w0, [x20,2]
+       ldr     w0, [x21,2048]
+       strb    w0, [x20,3]
+       ldr     w0, [x21,2048]
+       strb    w0, [x20,4]
+       ldr     w0, [x21,2048]
+       strb    w0, [x20,5]
+       ldr     w0, [x21,2048]
+       strb    w0, [x20,6]
+       ldr     w0, [x21,2048]
+       strb    w0, [x20,7]
+       mov     w0, w25
        bl      NandcFlashDeCs
-       ldrb    w2, [x19]
+       ldrb    w2, [x20]
        sub     w0, w2, #1
        uxtb    w0, w0
        cmp     w0, 253
-       bhi     .L1204
-       ldrb    w3, [x19,1]
-       mov     x0, x27
-       ldrb    w4, [x19,2]
+       bhi     .L1246
+       ldr     x0, [x29,104]
        add     w1, w28, 1
-       ldrb    w5, [x19,3]
-       ldrb    w6, [x19,4]
-       ldrb    w7, [x19,5]
+       ldrb    w3, [x20,1]
+       ldrb    w4, [x20,2]
+       ldrb    w5, [x20,3]
+       ldrb    w6, [x20,4]
+       ldrb    w7, [x20,5]
        bl      printk
-.L1204:
-       cbnz    w28, .L1205
-       ldr     x1, [x21, #:got_lo12:IDByte]
-       ldrb    w0, [x1]
+.L1246:
+       cbnz    w28, .L1247
+       ldrb    w0, [x26]
        sub     w0, w0, #1
        uxtb    w0, w0
        cmp     w0, 253
-       bhi     .L1243
-       ldrb    w0, [x1,1]
+       bhi     .L1287
+       ldrb    w0, [x26,1]
        cmp     w0, 255
-       beq     .L1243
-       bl      FlashCs123Init
-.L1205:
+       beq     .L1287
+.L1247:
        add     w28, w28, 1
-       add     x19, x19, 8
+       add     x24, x24, 16
        cmp     w28, 4
-       bne     .L1207
-       ldr     x0, [x21, #:got_lo12:IDByte]
-       ldrb    w0, [x0]
-       cmp     w0, 173
-       beq     .L1208
-       adrp    x0, :got:gBootDdrMode
-       ldr     x0, [x0, #:got_lo12:gBootDdrMode]
-       ldr     w0, [x0]
+       add     x20, x20, 8
+       bne     .L1249
+       add     x0, x19, :lo12:.LANCHOR0
+       ldrb    w1, [x0,1620]
+       cmp     w1, 173
+       beq     .L1250
+       ldr     w0, [x0,1868]
        bl      NandcSetDdrMode
-.L1208:
-       adrp    x26, :got:gReadRetryInfo
+.L1250:
+       add     x20, x19, :lo12:.LANCHOR0
        mov     w1, 0
+       add     x0, x20, 760
        mov     w2, 852
-       adrp    x19, :got:gpNandParaInfo
-       adrp    x27, :got:gNandRandomizer
-       ldr     x0, [x26, #:got_lo12:gReadRetryInfo]
        bl      ftl_memset
-       adrp    x0, :got:gNandParaInfo
-       ldr     x1, [x19, #:got_lo12:gpNandParaInfo]
-       mov     x28, x0
-       ldr     x2, [x0, #:got_lo12:gNandParaInfo]
-       str     x2, [x1]
-       ldr     x1, [x27, #:got_lo12:gNandRandomizer]
-       strb    wzr, [x1]
-       ldr     x1, [x21, #:got_lo12:IDByte]
-       ldrb    w2, [x1,1]
+       strb    wzr, [x20,16]
+       ldrb    w2, [x20,1621]
+       adrp    x1, .LANCHOR1
+       add     x0, x1, :lo12:.LANCHOR1
        cmp     w2, 218
-       cset    w1, eq
-       cbnz    w1, .L1244
+       add     x0, x0, 472
+       cset    w3, eq
+       str     x0, [x20,744]
+       add     x20, x20, 1620
+       cbnz    w3, .L1251
        cmp     w2, 241
-       bne     .L1209
-.L1244:
-       ldr     x0, [x22, #:got_lo12:g_slc2KBNand]
-       mov     w2, 1
-       strb    w2, [x0]
-       mov     w2, 16
-       ldr     x0, [x20, #:got_lo12:gNandIDBResBlkNum]
-       strb    w2, [x0]
-       ldr     x25, [x25, #:got_lo12:gNandFlashIDBEccBits]
-       strb    w2, [x25]
-       ldr     x0, [x21, #:got_lo12:IDByte]
-       ldrb    w0, [x0]
+       beq     .L1251
+       cmp     w2, 220
+       bne     .L1252
+       ldrb    w0, [x20,3]
+       cmp     w0, 149
+       bne     .L1252
+.L1251:
+       add     x0, x19, :lo12:.LANCHOR0
+       mov     w4, 1
+       mov     w5, 16
+       strb    w4, [x0,8]
+       add     x4, x23, :lo12:.LANCHOR4
+       strb    w5, [x0,9]
+       ldrb    w0, [x0,1620]
+       strb    w5, [x4,74]
+       add     x5, x1, :lo12:.LANCHOR1
        cmp     w0, 152
-       bne     .L1211
+       strb    w0, [x5,2969]
+       bne     .L1253
        mov     w0, 24
-       strb    w0, [x25]
-.L1211:
-       adrp    x25, :got:gSlcNandParaInfo
-       cbz     w1, .L1212
-       ldr     x0, [x25, #:got_lo12:gSlcNandParaInfo]
-       mov     w1, 2048
-       strh    w1, [x0,14]
-.L1212:
-       adrp    x0, :got:gNandOptPara
-       adrp    x1, .LANCHOR2
-       add     x1, x1, :lo12:.LANCHOR2
+       strb    w0, [x4,74]
+.L1253:
+       cbz     w3, .L1254
+       add     x0, x1, :lo12:.LANCHOR1
+       mov     w2, 2048
+       strh    w2, [x0,2982]
+       mov     w2, -38
+       b       .L1312
+.L1254:
+       cmp     w2, 220
+       bne     .L1255
+       add     x0, x1, :lo12:.LANCHOR1
+       mov     w2, 4096
+       strh    w2, [x0,2982]
+       mov     w2, -36
+.L1312:
+       strb    w2, [x0,2970]
+.L1255:
+       add     x20, x1, :lo12:.LANCHOR1
+       add     x0, x19, :lo12:.LANCHOR0
+       add     x1, x20, 2872
        mov     w2, 32
-       add     x1, x1, 32
-       ldr     x0, [x0, #:got_lo12:gNandOptPara]
+       add     x0, x0, 88
        bl      ftl_memcpy
-       ldr     x0, [x28, #:got_lo12:gNandParaInfo]
+       add     x0, x20, 472
+       add     x1, x20, 2968
        mov     w2, 32
-       ldr     x1, [x25, #:got_lo12:gSlcNandParaInfo]
        bl      ftl_memcpy
-.L1209:
-       ldr     x0, [x22, #:got_lo12:g_slc2KBNand]
-       ldrb    w0, [x0]
-       cbnz    w0, .L1213
+.L1252:
+       add     x20, x19, :lo12:.LANCHOR0
+       ldrb    w0, [x20,8]
+       cbnz    w0, .L1256
        bl      FlashLoadPhyInfoInRam
-       cbnz    w0, .L1215
-       ldr     x0, [x19, #:got_lo12:gpNandParaInfo]
-       adrp    x25, :got:gFlashInterfaceMode
-       ldr     x0, [x0]
-       ldr     x25, [x25, #:got_lo12:gFlashInterfaceMode]
+       cbnz    w0, .L1258
+       ldr     x0, [x20,744]
        ldrb    w1, [x0,17]
        and     w0, w1, 7
-       strb    w0, [x25]
-       tbnz    x1, 0, .L1215
-       ldr     x1, [x23, #:got_lo12:gFlashToggleModeEn]
-       mov     w2, 1
-       strb    w2, [x1]
+       strb    w0, [x20,1844]
+       tbnz    x1, 0, .L1258
+       mov     w1, 1
+       strb    w1, [x20,1864]
        bl      FlashSetInterfaceMode
-       ldrb    w0, [x25]
+       ldrb    w0, [x20,1844]
        bl      NandcSetMode
-.L1215:
+.L1258:
+       add     x20, x19, :lo12:.LANCHOR0
+       ldr     x0, [x20,744]
+       ldrb    w0, [x0,26]
+       strb    w0, [x20,120]
        bl      FlashLoadPhyInfo
-       cbz     w0, .L1213
-       adrp    x0, :got:gBootDdrMode
-       ldr     x0, [x0, #:got_lo12:gBootDdrMode]
-       ldr     w0, [x0]
-       cbz     w0, .L1218
+       cbz     w0, .L1256
+       ldr     w0, [x20,1868]
+       cbz     w0, .L1261
        mov     w0, 1
        bl      FlashSetInterfaceMode
        mov     w0, 1
-       b       .L1275
-.L1218:
-       adrp    x25, :got:gFlashInterfaceMode
-       ldr     x25, [x25, #:got_lo12:gFlashInterfaceMode]
-       ldrb    w0, [x25]
+       b       .L1313
+.L1261:
+       ldrb    w0, [x20,1844]
        bl      FlashSetInterfaceMode
-       ldrb    w0, [x25]
-.L1275:
+       ldrb    w0, [x20,1844]
+.L1313:
        bl      NandcSetMode
        bl      FlashLoadPhyInfo
-       cbz     w0, .L1213
+       cbz     w0, .L1256
        mov     w0, 1
+       add     x20, x19, :lo12:.LANCHOR0
        bl      FlashSetInterfaceMode
        mov     w0, 1
        bl      NandcSetMode
-       ldr     x25, [x19, #:got_lo12:gpNandParaInfo]
-       adrp    x0, .LC91
-       add     x0, x0, :lo12:.LC91
-       ldr     x1, [x25]
+       ldr     x1, [x20,744]
+       adrp    x0, .LC92
+       add     x0, x0, :lo12:.LC92
        ldrh    w1, [x1,14]
        bl      printk
        bl      FlashLoadPhyInfoInRam
        cmn     w0, #1
-       beq     .L1206
+       beq     .L1248
        bl      FlashDieInfoInit
-       ldr     x0, [x25]
+       ldr     x0, [x20,744]
        ldrb    w0, [x0,19]
        bl      FlashGetReadRetryDefault
-       adrp    x1, :got:gTotleBlock
-       ldr     x0, [x25]
-       ldr     x1, [x1, #:got_lo12:gTotleBlock]
+       adrp    x1, .LANCHOR2+2022
+       ldr     x0, [x20,744]
+       ldrh    w1, [x1,#:lo12:.LANCHOR2+2022]
        ldrb    w2, [x0,9]
-       ldrh    w1, [x1]
        add     w1, w1, 4095
        cmp     w2, w1, lsr 12
-       blt     .L1220
+       blt     .L1263
        ldrh    w1, [x0,14]
        add     w1, w1, 255
        cmp     w2, w1, lsr 8
-       bge     .L1221
-.L1220:
+       bge     .L1264
+.L1263:
        ldrh    w1, [x0,14]
        and     w1, w1, -256
        strh    w1, [x0,14]
-.L1221:
-       adrp    x0, :got:gFlashInterfaceMode
-       ldr     x0, [x0, #:got_lo12:gFlashInterfaceMode]
-       ldrb    w0, [x0]
+.L1264:
+       add     x0, x19, :lo12:.LANCHOR0
+       ldrb    w0, [x0,1844]
        tst     w0, 6
-       beq     .L1222
+       beq     .L1265
        bl      FlashSavePhyInfo
-       adrp    x1, :got:gNandFlashInfoBlockAddr
+       add     x1, x23, :lo12:.LANCHOR4
        mov     w0, 0
-       ldr     x1, [x1, #:got_lo12:gNandFlashInfoBlockAddr]
-       ldr     w1, [x1]
+       ldr     w1, [x1,64]
        bl      FlashDdrParaScan
-.L1222:
+.L1265:
        bl      FlashSavePhyInfo
-.L1213:
-       ldr     x0, [x19, #:got_lo12:gpNandParaInfo]
-       adrp    x25, :got:gFlashInterfaceMode
-       ldr     x27, [x27, #:got_lo12:gNandRandomizer]
-       adrp    x3, :got:gpReadRetrial
-       ldr     x4, [x0]
-       ldrh    w0, [x4,16]
-       ubfx    x1, x0, 7, 1
-       strb    w1, [x27]
-       adrp    x1, :got:gMultiPageReadEn
-       ubfx    x2, x0, 3, 1
-       ldr     x1, [x1, #:got_lo12:gMultiPageReadEn]
-       strb    w2, [x1]
-       adrp    x1, :got:gMultiPageProgEn
-       ubfx    x2, x0, 4, 1
-       ldr     x1, [x1, #:got_lo12:gMultiPageProgEn]
-       strb    w2, [x1]
-       ubfx    x2, x0, 8, 3
-       ldr     x1, [x25, #:got_lo12:gFlashInterfaceMode]
-       strb    w2, [x1]
-       ldr     x6, [x3, #:got_lo12:gpReadRetrial]
-       str     xzr, [x6]
-       tbz     x0, 6, .L1224
-       adrp    x1, :got:g_retryMode
-       ldrb    w0, [x4,19]
-       ldr     x1, [x1, #:got_lo12:g_retryMode]
-       strb    w0, [x1]
-       adrp    x1, :got:g_maxRegNum
-       ldr     x26, [x26, #:got_lo12:gReadRetryInfo]
-       ldr     x2, [x1, #:got_lo12:g_maxRegNum]
-       ldrb    w5, [x26,1]
-       strb    w5, [x2]
-       adrp    x2, :got:g_maxRetryCount
-       ldrb    w7, [x26,2]
-       ldr     x5, [x2, #:got_lo12:g_maxRetryCount]
-       strb    w7, [x5]
-       sub     w5, w0, #1
-       uxtb    w5, w5
-       cmp     w5, 5
-       bhi     .L1225
-       adrp    x1, :got:HynixReadRetrial
+.L1256:
+       add     x1, x19, :lo12:.LANCHOR0
+       ldr     x3, [x1,744]
+       ldrb    w0, [x3,26]
+       strb    w0, [x1,120]
+       ldrh    w0, [x3,16]
+       ubfx    x2, x0, 7, 1
+       strb    w2, [x1,16]
+       add     x2, x23, :lo12:.LANCHOR4
+       ubfx    x4, x0, 3, 1
+       strb    w4, [x2,112]
+       ubfx    x4, x0, 4, 1
+       str     xzr, [x2,48]
+       strb    w4, [x1,1945]
+       ubfx    x4, x0, 8, 3
+       strb    w4, [x1,1844]
+       tbz     x0, 6, .L1267
+       ldrb    w0, [x3,19]
+       ldrb    w4, [x1,762]
+       strb    w4, [x2,73]
+       sub     w4, w0, #1
+       ldrb    w5, [x1,761]
+       uxtb    w4, w4
+       strb    w0, [x1,752]
+       strb    w5, [x1,753]
+       cmp     w4, 5
+       bhi     .L1268
        sub     w0, w0, #5
+       adrp    x4, HynixReadRetrial
+       add     x4, x4, :lo12:HynixReadRetrial
+       str     x4, [x2,48]
        uxtb    w0, w0
-       ldr     x1, [x1, #:got_lo12:HynixReadRetrial]
        cmp     w0, 1
-       str     x1, [x6]
-       bhi     .L1224
-       adrp    x0, :got:gNandcDumpWriteEn
-       mov     w1, 1
-       ldr     x0, [x0, #:got_lo12:gNandcDumpWriteEn]
-       str     w1, [x0]
-       b       .L1224
-.L1225:
-       sub     w5, w0, #17
-       uxtb    w5, w5
-       cmp     w5, 1
-       bhi     .L1227
-       adrp    x0, :got:MicronReadRetrial
-       ldr     x0, [x0, #:got_lo12:MicronReadRetrial]
-       b       .L1277
-.L1227:
-       sub     w5, w0, #65
-       uxtb    w5, w5
-       cmp     w5, 1
-       bls     .L1245
-       cmp     w0, 33
-       bne     .L1228
-.L1245:
-       adrp    x0, :got:ToshibaReadRetrial
-       ldr     x3, [x3, #:got_lo12:gpReadRetrial]
-       ldr     x0, [x0, #:got_lo12:ToshibaReadRetrial]
-       str     x0, [x3]
-       mov     w0, 4
-       ldr     x1, [x1, #:got_lo12:g_maxRegNum]
-       strb    w0, [x1]
+       bhi     .L1267
+       mov     w0, 1
+       str     w0, [x1,1936]
+       b       .L1267
+.L1268:
+       sub     w1, w0, #17
+       uxtb    w1, w1
+       cmp     w1, 2
+       bhi     .L1270
+       adrp    x1, MicronReadRetrial
+       cmp     w0, 19
+       add     x1, x1, :lo12:MicronReadRetrial
+       str     x1, [x2,48]
+       beq     .L1271
        mov     w0, 7
-       ldr     x2, [x2, #:got_lo12:g_maxRetryCount]
-       strb    w0, [x2]
-       b       .L1224
-.L1228:
-       sub     w5, w0, #67
-       uxtb    w5, w5
-       cmp     w5, 1
-       sub     w5, w0, #34
-       cset    w7, ls
-       uxtb    w5, w5
-       cmp     w5, 1
-       bls     .L1246
-       cbz     w7, .L1230
-.L1246:
-       adrp    x5, :got:ToshibaReadRetrial
-       ldr     x3, [x3, #:got_lo12:gpReadRetrial]
+       b       .L1314
+.L1271:
+       mov     w0, 15
+.L1314:
+       strb    w0, [x2,73]
+       b       .L1267
+.L1270:
+       sub     w1, w0, #65
+       uxtb    w1, w1
+       cmp     w1, 1
+       bls     .L1288
+       cmp     w0, 33
+       bne     .L1272
+.L1288:
+       add     x0, x23, :lo12:.LANCHOR4
+       adrp    x1, ToshibaReadRetrial
+       add     x1, x1, :lo12:ToshibaReadRetrial
+       mov     w2, 4
+       str     x1, [x0,48]
+       add     x1, x19, :lo12:.LANCHOR0
+       strb    w2, [x1,753]
+       mov     w1, 7
+       strb    w1, [x0,73]
+       b       .L1267
+.L1272:
+       sub     w1, w0, #67
+       uxtb    w1, w1
+       cmp     w1, 1
+       sub     w1, w0, #34
+       cset    w4, ls
+       uxtb    w1, w1
+       cmp     w1, 1
+       bls     .L1289
+       cbz     w4, .L1274
+.L1289:
+       add     x2, x23, :lo12:.LANCHOR4
+       adrp    x1, ToshibaReadRetrial
+       add     x1, x1, :lo12:ToshibaReadRetrial
        cmp     w0, 35
-       ldr     x5, [x5, #:got_lo12:ToshibaReadRetrial]
-       str     x5, [x3]
-       ldr     x2, [x2, #:got_lo12:g_maxRetryCount]
-       beq     .L1232
+       str     x1, [x2,48]
+       beq     .L1276
        cmp     w0, 68
-       beq     .L1232
+       beq     .L1276
        mov     w0, 7
-       b       .L1276
-.L1232:
-       mov     w0, 17
+       strb    w0, [x2,73]
+       b       .L1277
 .L1276:
-       strb    w0, [x2]
-       mov     w0, 4
-       ldr     x1, [x1, #:got_lo12:g_maxRegNum]
-       cbnz    w7, .L1278
-       mov     w0, 5
-.L1278:
-       strb    w0, [x1]
-       b       .L1224
-.L1230:
-       cmp     w0, 49
-       bne     .L1224
-       adrp    x0, :got:SamsungReadRetrial
-       ldr     x0, [x0, #:got_lo12:SamsungReadRetrial]
+       add     x0, x23, :lo12:.LANCHOR4
+       mov     w1, 17
+       strb    w1, [x0,73]
 .L1277:
-       str     x0, [x6]
-.L1224:
-       ldrh    w2, [x4,10]
-       ldrb    w1, [x4,12]
-       ldrb    w0, [x4,18]
+       add     x0, x19, :lo12:.LANCHOR0
+       mov     w1, 4
+       cbnz    w4, .L1315
+       mov     w1, 5
+.L1315:
+       strb    w1, [x0,753]
+       b       .L1267
+.L1274:
+       cmp     w0, 49
+       bne     .L1267
+       adrp    x0, SamsungReadRetrial
+       add     x0, x0, :lo12:SamsungReadRetrial
+       str     x0, [x2,48]
+.L1267:
+       ldrh    w2, [x3,10]
+       ldrb    w1, [x3,12]
+       ldrb    w0, [x3,18]
        sdiv    w1, w2, w1
        bl      BuildFlashLsbPageTable
        bl      FlashDieInfoInit
-       ldr     x0, [x21, #:got_lo12:IDByte]
-       ldrb    w0, [x0]
-       cmp     w0, 44
-       bne     .L1235
-       ldr     x0, [x23, #:got_lo12:gFlashToggleModeEn]
-       ldrb    w1, [x0]
-       cbz     w1, .L1235
-       strb    wzr, [x0]
+       add     x0, x19, :lo12:.LANCHOR0
+       ldrb    w1, [x0,1620]
+       cmp     w1, 44
+       bne     .L1279
+       ldrb    w1, [x0,1864]
+       cbz     w1, .L1279
+       strb    wzr, [x0,1864]
        mov     w0, 1
        bl      FlashSetInterfaceMode
        mov     w0, 1
        bl      NandcSetMode
-.L1235:
-       ldr     x25, [x25, #:got_lo12:gFlashInterfaceMode]
-       ldrb    w0, [x25]
+.L1279:
+       mov     w0, 0
+       bl      flash_enter_slc_mode
+       add     x1, x19, :lo12:.LANCHOR0
+       ldrb    w0, [x1,1844]
        tst     w0, 6
-       beq     .L1236
-       ldr     x23, [x23, #:got_lo12:gFlashToggleModeEn]
-       ldrb    w1, [x23]
-       cbnz    w1, .L1237
-       tbnz    x0, 0, .L1236
-.L1237:
-       adrp    x1, :got:gNandFlashInfoBlockAddr
+       beq     .L1280
+       ldrb    w1, [x1,1864]
+       cbnz    w1, .L1281
+       tbnz    x0, 0, .L1280
+.L1281:
+       add     x1, x23, :lo12:.LANCHOR4
        mov     w0, 0
-       ldr     x1, [x1, #:got_lo12:gNandFlashInfoBlockAddr]
-       ldr     w1, [x1]
+       ldr     w1, [x1,64]
        bl      FlashDdrParaScan
-.L1236:
-       ldr     x0, [x19, #:got_lo12:gpNandParaInfo]
-       ldr     x0, [x0]
+.L1280:
+       mov     w0, 0
+       add     x20, x19, :lo12:.LANCHOR0
+       bl      flash_exit_slc_mode
+       ldr     x0, [x20,744]
        ldrb    w0, [x0,20]
        bl      FlashBchSel
-       adrp    x0, :got:gNandIDataBuf
-       ldr     x0, [x0, #:got_lo12:gNandIDataBuf]
+       adrp    x0, .LANCHOR2
+       add     x0, x0, :lo12:.LANCHOR2
+       add     x0, x0, 2336
        bl      FlashReadIdbDataRaw
-       cbnz    w0, .L1238
-       ldr     x0, [x29,104]
-       ldr     x24, [x0, #:got_lo12:gNandIDBResBlkNumSaveInFlash]
-       ldr     x0, [x20, #:got_lo12:gNandIDBResBlkNum]
-       ldrb    w1, [x24]
-       ldrb    w2, [x0]
-       cmp     w2, w1
-       bls     .L1239
-       strb    w1, [x0]
-.L1239:
-       ldr     x0, [x20, #:got_lo12:gNandIDBResBlkNum]
-       ldrb    w0, [x0]
+       cbnz    w0, .L1282
+       add     x23, x23, :lo12:.LANCHOR4
+       ldrb    w1, [x20,9]
+       ldrb    w0, [x23,72]
+       cmp     w1, w0
+       bls     .L1283
+       strb    w0, [x20,9]
+.L1283:
+       add     x0, x19, :lo12:.LANCHOR0
+       ldrb    w0, [x0,9]
        cmp     w0, 15
-       bhi     .L1240
-.L1238:
-       ldr     x0, [x20, #:got_lo12:gNandIDBResBlkNum]
+       bhi     .L1284
+.L1282:
+       add     x0, x19, :lo12:.LANCHOR0
        mov     w1, 16
-       strb    w1, [x0]
-.L1240:
+       strb    w1, [x0,9]
+.L1284:
        mov     w0, 18928
+       add     x19, x19, :lo12:.LANCHOR0
        movk    w0, 0x2, lsl 16
        bl      FlashTimingCfg
-       bl      FlashPrintInfo
-       ldr     x19, [x19, #:got_lo12:gpNandParaInfo]
-       adrp    x0, :got:gNandPhyInfo
-       ldr     x4, [x19]
-       ldr     x0, [x0, #:got_lo12:gNandPhyInfo]
-       ldrb    w1, [x4,12]
-       strh    w1, [x0,8]
-       ldrh    w3, [x4,14]
-       ldrb    w1, [x4,7]
-       str     w1, [x0,4]
-       ldr     x21, [x21, #:got_lo12:IDByte]
-       ldr     w1, [x21]
-       str     w1, [x0]
-       adrp    x1, :got:gNandMaxDie
-       ldr     x1, [x1, #:got_lo12:gNandMaxDie]
-       ldrb    w1, [x1]
-       strh    w1, [x0,10]
-       ldrb    w1, [x4,13]
-       strh    w1, [x0,12]
-       strh    w3, [x0,14]
-       ldrh    w1, [x4,10]
-       strh    w1, [x0,16]
-       ldrb    w2, [x4,12]
-       ldrh    w1, [x4,10]
-       sdiv    w1, w1, w2
-       strh    w1, [x0,18]
-       ldrb    w2, [x4,9]
-       strh    w2, [x0,20]
-       ldrh    w5, [x4,10]
-       ldrb    w1, [x4,9]
-       mul     w1, w1, w5
+       ldr     x1, [x19,744]
+       ldrb    w2, [x1,12]
+       strh    w2, [x19,176]
+       ldrh    w4, [x1,14]
+       ldrb    w2, [x1,7]
+       str     w2, [x19,172]
+       ldr     w2, [x19,1620]
+       str     w2, [x19,168]
+       ldrb    w2, [x19,1845]
+       strh    w2, [x19,178]
+       ldrb    w2, [x1,13]
+       strh    w2, [x19,180]
+       strh    w4, [x19,182]
+       ldrh    w2, [x1,10]
+       strh    w2, [x19,184]
+       ldrb    w3, [x1,12]
+       ldrh    w2, [x1,10]
+       sdiv    w2, w2, w3
+       strh    w2, [x19,186]
+       ldrb    w3, [x1,9]
+       strh    w3, [x19,188]
+       ldrh    w5, [x1,10]
+       ldrb    w2, [x1,9]
+       mul     w2, w2, w5
        mov     w5, 512
-       strh    w5, [x0,24]
-       uxth    w1, w1
-       strh    w1, [x0,22]
-       ldr     x20, [x20, #:got_lo12:gNandIDBResBlkNum]
-       ldrb    w5, [x20]
-       strh    w5, [x0,26]
-       ldr     x22, [x22, #:got_lo12:g_slc2KBNand]
-       ldrb    w5, [x22]
+       strh    w5, [x19,192]
+       ldrb    w5, [x19,9]
+       strh    w5, [x19,194]
+       uxth    w2, w2
+       ldrb    w5, [x19,8]
+       strh    w2, [x19,190]
        cmp     w5, 1
-       bne     .L1241
-       lsl     w1, w1, 1
-       mov     w5, 16
-       lsr     w3, w3, 1
+       bne     .L1285
        lsl     w2, w2, 1
-       strh    w1, [x0,22]
-       mov     w1, 8
-       strb    w5, [x20]
-       strh    w3, [x0,14]
-       strh    w2, [x0,20]
-       strh    w1, [x0,26]
-.L1241:
-       ldrb    w0, [x4,20]
+       mov     w5, 16
+       lsr     w4, w4, 1
+       lsl     w3, w3, 1
+       strh    w2, [x19,190]
+       mov     w2, 8
+       strb    w5, [x19,9]
+       strh    w4, [x19,182]
+       strh    w3, [x19,188]
+       strh    w2, [x19,194]
+.L1285:
+       ldrb    w0, [x1,20]
        bl      FlashBchSel
        bl      FlashSuspend
        mov     w0, 0
-       b       .L1206
-.L1243:
+       b       .L1248
+.L1287:
        mov     w0, -2
-.L1206:
+.L1248:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -9702,332 +9204,515 @@ FlashInit:
        .global FlashPageProgMsbFFData
        .type   FlashPageProgMsbFFData, %function
 FlashPageProgMsbFFData:
-       stp     x29, x30, [sp, -80]!
-       adrp    x3, :got:gpNandParaInfo
+       stp     x29, x30, [sp, -112]!
        add     x29, sp, 0
+       stp     x23, x24, [sp,48]
+       adrp    x23, .LANCHOR0
        stp     x21, x22, [sp,32]
-       uxtb    w22, w0
-       ldr     x0, [x3, #:got_lo12:gpNandParaInfo]
+       uxtb    w21, w0
+       add     x0, x23, :lo12:.LANCHOR0
        stp     x19, x20, [sp,16]
-       stp     x23, x24, [sp,48]
        stp     x25, x26, [sp,64]
-       uxtb    w19, w2
-       mov     x20, x3
-       ldr     x0, [x0]
-       ldrb    w2, [x0,19]
-       cmp     w2, 35
-       cset    w4, eq
-       cmp     w2, 68
-       cset    w0, eq
-       orr     w4, w4, w0
-       cbnz    w4, .L1284
-       sub     w2, w2, #5
-       uxtb    w2, w2
-       cmp     w2, 1
-       bhi     .L1279
-.L1284:
-       mov     w21, w1
-       adrp    x24, :got:mlcPageToSlcPageTbl
-       mov     w25, 65535
-       adrp    x26, :got:gFlashPageBuffer1
-.L1282:
-       ldr     x0, [x20, #:got_lo12:gpNandParaInfo]
-       ldr     x0, [x0]
+       stp     x27, x28, [sp,80]
+       uxth    w22, w2
+       ldr     x2, [x0,744]
+       ldrb    w24, [x2,19]
+       ldrb    w2, [x0,120]
+       cbz     w2, .L1317
+       ldr     w2, [x0,1872]
+       mov     w0, 12336
+       movk    w0, 0x5638, lsl 16
+       cmp     w2, w0
+       beq     .L1316
+.L1317:
+       sub     w0, w24, #5
+       uxtb    w0, w0
+       cmp     w0, 1
+       bls     .L1319
+       cmp     w24, 68
+       beq     .L1319
+       cmp     w24, 35
+       beq     .L1319
+       sub     w0, w24, #17
+       uxtb    w0, w0
+       cmp     w0, 2
+       bhi     .L1316
+.L1319:
+       mov     w27, w1
+       sub     w24, w24, #17
+       add     x23, x23, :lo12:.LANCHOR0
+       add     x26, x23, 24
+       add     x26, x26, x21, sxtw 4
+.L1322:
+       ldr     x0, [x23,744]
        ldrh    w0, [x0,10]
-       cmp     w0, w19
-       bls     .L1279
-       ldr     x0, [x24, #:got_lo12:mlcPageToSlcPageTbl]
-       ldrh    w0, [x0,w19,sxtw 1]
-       cmp     w0, w25
-       bne     .L1279
-       ldr     x23, [x26, #:got_lo12:gFlashPageBuffer1]
+       cmp     w0, w22
+       bls     .L1316
+       adrp    x0, .LANCHOR2
+       add     x0, x0, :lo12:.LANCHOR2
+       add     x0, x0, 996
+       ldrh    w1, [x0,w22,sxtw 1]
+       mov     w0, 65535
+       cmp     w1, w0
+       bne     .L1316
+       adrp    x25, .LANCHOR4
        mov     w1, 255
+       add     x19, x25, :lo12:.LANCHOR4
        mov     w2, 32768
-       ldr     x0, [x23]
+       ldr     x0, [x19,80]
        bl      ftl_memset
-       ldr     x2, [x23]
-       add     w1, w19, w21
-       mov     w0, w22
+       uxtb    w0, w24
+       cmp     w0, 1
+       bhi     .L1323
+       adrp    x28, .LANCHOR1
+       add     x28, x28, :lo12:.LANCHOR1
+       ldr     w1, [x28,3000]
+       cbz     w1, .L1324
+       ldrb    w20, [x26,8]
+       mov     w0, w21
+       ldr     x19, [x26]
+       ubfiz   x20, x20, 8, 8
+       str     x1, [x29,104]
+       add     x19, x19, x20
+       bl      NandcFlashCs
+       mov     w0, 239
+       mov     w20, 146
+       str     w0, [x19,2056]
+       mov     w0, w21
+       str     w20, [x19,2052]
+       str     wzr, [x19,2048]
+       str     wzr, [x19,2048]
+       str     wzr, [x19,2048]
+       str     wzr, [x19,2048]
+       bl      NandcFlashDeCs
+       ldr     x1, [x29,104]
+       cmp     w1, 1
+       bne     .L1325
+       mov     w0, w21
+       bl      NandcFlashCs
+       mov     w0, 238
+       str     w0, [x19,2056]
+       str     w20, [x19,2052]
+       mov     w0, 2000
+       bl      NandcDelayns
+       ldr     w20, [x19,2048]
+       mov     w0, w21
+       uxtb    w20, w20
+       bl      NandcFlashDeCs
+       cbnz    w20, .L1326
+       mov     w0, 2
+       str     w0, [x28,3000]
+       b       .L1325
+.L1326:
+       str     wzr, [x28,3000]
+       b       .L1316
+.L1325:
+       add     x25, x25, :lo12:.LANCHOR4
+       add     w1, w22, w27
        mov     x3, 0
-       add     w19, w19, 1
+       mov     w0, w21
+       ldr     x2, [x25,80]
        bl      FlashProgPage
-       uxtb    w19, w19
-       b       .L1282
-.L1279:
+       mov     w0, w21
+       bl      NandcFlashCs
+       mov     w0, 239
+       str     w0, [x19,2056]
+       mov     w0, 146
+       str     w0, [x19,2052]
+       mov     w0, 1
+       str     w0, [x19,2048]
+       str     wzr, [x19,2048]
+       mov     w0, w21
+       str     wzr, [x19,2048]
+       str     wzr, [x19,2048]
+       bl      NandcFlashDeCs
+       b       .L1324
+.L1323:
+       ldr     x2, [x19,80]
+       mov     w0, w21
+       add     w1, w22, w27
+       mov     x3, 0
+       bl      FlashProgPage
+.L1324:
+       add     w22, w22, 1
+       uxth    w22, w22
+       b       .L1322
+.L1316:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
-       ldp     x29, x30, [sp], 80
+       ldp     x27, x28, [sp,80]
+       ldp     x29, x30, [sp], 112
        ret
        .size   FlashPageProgMsbFFData, .-FlashPageProgMsbFFData
        .align  2
-       .global FlashProgPageDp
-       .type   FlashProgPageDp, %function
-FlashProgPageDp:
-       stp     x29, x30, [sp, -80]!
+       .global FlashReadSlc2KPages
+       .type   FlashReadSlc2KPages, %function
+FlashReadSlc2KPages:
+       stp     x29, x30, [sp, -144]!
        add     x29, sp, 0
+       stp     x21, x22, [sp,32]
+       adrp    x21, __stack_chk_guard
+       mov     w22, 0
+       stp     x25, x26, [sp,64]
+       mov     w25, w1
+       ldr     x1, [x21,#:lo12:__stack_chk_guard]
+       str     x1, [x29,136]
+       adrp    x1, .LANCHOR1+481
        stp     x19, x20, [sp,16]
-       uxtb    w19, w0
-       adrp    x0, :got:gNandParaInfo
        stp     x23, x24, [sp,48]
-       stp     x21, x22, [sp,32]
-       ldr     x0, [x0, #:got_lo12:gNandParaInfo]
-       mov     w20, w1
-       str     x5, [x29,72]
-       mov     x24, x2
-       mov     x21, x3
-       mov     x23, x4
-       ldrb    w22, [x0,9]
-       mov     w0, w19
+       adrp    x20, .LANCHOR0
+       adrp    x23, .LC93
+       adrp    x24, .LC95
+       ldrb    w26, [x1,#:lo12:.LANCHOR1+481]
+       stp     x27, x28, [sp,80]
+       mov     x19, x0
+       mov     w27, w2
+       add     x20, x20, :lo12:.LANCHOR0
+       add     x23, x23, :lo12:.LC93
+       add     x24, x24, :lo12:.LC95
+.L1338:
+       cmp     w22, w25
+       beq     .L1373
+       mov     w1, w27
+       sub     w4, w25, w22
+       mov     x0, x19
+       add     x2, x29, 132
+       add     x3, x29, 128
+       bl      LogAddr2PhyAddr
+       ldr     w0, [x29,128]
+       adrp    x5, .LANCHOR0
+       ldrb    w1, [x20,1845]
+       cmp     w0, w1
+       bcc     .L1339
+       mov     w0, -1
+       str     w0, [x19]
+       b       .L1340
+.L1339:
+       add     x0, x20, x0, uxtw
+       ldrb    w28, [x0,1848]
+       str     x5, [x29,104]
+       mov     w0, w28
        bl      NandcWaitFlashReady
-       mov     w0, w19
+       mov     w0, w28
        bl      NandcFlashCs
-       mov     w0, w19
-       mov     w1, w20
-       bl      FlashProgFirstCmd
-       mov     w2, w22
-       mov     x3, x24
-       mov     x4, x21
-       mov     w0, w19
-       mov     w1, 1
-       adrp    x21, :got:gBlockPageAlignSize
-       bl      NandcXferData
-       mov     w1, w20
-       mov     w0, w19
-       bl      FlashProgDpFirstCmd
-       mov     w0, w19
+       ldr     w1, [x29,132]
+       mov     w0, w28
+       bl      FlashReadCmd
+       mov     w0, w28
        bl      NandcWaitFlashReady
-       ldr     x21, [x21, #:got_lo12:gBlockPageAlignSize]
-       mov     w0, w19
-       ldr     w1, [x21]
-       add     w1, w20, w1
-       bl      FlashProgDpSecondCmd
-       ldr     x5, [x29,72]
-       mov     w2, w22
-       mov     x3, x23
-       mov     w0, w19
-       mov     x4, x5
-       mov     w1, 1
+       ldr     x3, [x19,8]
+       mov     w1, 0
+       ldr     x4, [x19,16]
+       mov     w2, w26
+       mov     w0, w28
        bl      NandcXferData
-       ldr     w1, [x21]
-       mov     w0, w19
-       add     w1, w20, w1
-       bl      FlashProgSecondCmd
-       mov     w0, w19
-       bl      NandcWaitFlashReady
-       mov     w1, w20
-       mov     w0, w19
-       bl      FlashReadStatus
-       mov     w20, w0
-       mov     w0, w19
+       mov     w6, w0
+       ldr     w2, [x20,12]
+       mov     w0, w28
+       ldr     w1, [x29,132]
+       str     x6, [x29,112]
+       add     w1, w2, w1
+       bl      FlashReadCmd
+       ldr     x0, [x19,8]
+       mov     w1, 0
+       mov     w2, w26
+       cmp     x0, xzr
+       add     x3, x0, 2048
+       ldr     x0, [x19,16]
+       csel    x3, x3, xzr, ne
+       add     x4, x0, 8
+       cmp     x0, xzr
+       csel    x4, x4, xzr, ne
+       mov     w0, w28
+       bl      NandcXferData
+       mov     w1, w0
+       mov     w0, w28
+       str     x1, [x29,120]
        bl      NandcFlashDeCs
-       and     w0, w20, 1
+       ldr     x5, [x29,104]
+       ldr     x1, [x29,120]
+       add     x0, x5, :lo12:.LANCHOR0
+       ldr     x6, [x29,112]
+       cmp     w1, w6
+       ldrb    w0, [x0,1944]
+       csel    w3, w1, w6, cs
+       add     w0, w0, w0, lsl 1
+       cmp     w3, w0, lsr 2
+       bls     .L1343
+       cmn     w3, #1
+       mov     w0, 256
+       csel    w3, w3, w0, eq
+.L1343:
+       cmp     w3, 256
+       beq     .L1355
+       cmn     w3, #1
+       bne     .L1344
+.L1355:
+       str     w3, [x19]
+       b       .L1346
+.L1344:
+       str     wzr, [x19]
+.L1346:
+       ldr     x0, [x19,16]
+       cbz     x0, .L1347
+       ldr     w1, [x0,8]
+       cmn     w1, #1
+       bne     .L1347
+       ldr     w0, [x0]
+       cmn     w0, #1
+       beq     .L1347
+       str     w1, [x19]
+.L1347:
+       ldr     w3, [x19]
+       cmn     w3, #1
+       bne     .L1340
+       add     x5, x5, :lo12:.LANCHOR0
+       ldr     w1, [x19,4]
+       mov     x0, x23
+       ldrb    w2, [x5,1944]
+       bl      printk
+       ldr     x1, [x19,8]
+       cbz     x1, .L1349
+       adrp    x0, .LC94
+       mov     w2, 4
+       add     x0, x0, :lo12:.LC94
+       mov     w3, 8
+       bl      rknand_print_hex
+.L1349:
+       ldr     x1, [x19,16]
+       cbz     x1, .L1340
+       mov     w2, 4
+       mov     x0, x24
+       mov     w3, w2
+       bl      rknand_print_hex
+.L1340:
+       add     w22, w22, 1
+       add     x19, x19, 56
+       b       .L1338
+.L1373:
+       ldr     x2, [x29,136]
+       mov     w0, 0
+       ldr     x1, [x21,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L1352
+       bl      __stack_chk_fail
+.L1352:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
-       ldp     x29, x30, [sp], 80
+       ldp     x25, x26, [sp,64]
+       ldp     x27, x28, [sp,80]
+       ldp     x29, x30, [sp], 144
        ret
-       .size   FlashProgPageDp, .-FlashProgPageDp
+       .size   FlashReadSlc2KPages, .-FlashReadSlc2KPages
        .align  2
        .global FlashReadPages
        .type   FlashReadPages, %function
 FlashReadPages:
-       stp     x29, x30, [sp, -160]!
+       stp     x29, x30, [sp, -176]!
+       adrp    x3, __stack_chk_guard
        add     x29, sp, 0
-       stp     x23, x24, [sp,48]
-       mov     x24, x0
-       adrp    x0, :got:gNandParaInfo
        stp     x21, x22, [sp,32]
+       ldr     x4, [x3,#:lo12:__stack_chk_guard]
+       adrp    x22, .LANCHOR0
+       str     x4, [x29,168]
+       adrp    x4, .LANCHOR1+481
        stp     x25, x26, [sp,64]
-       ldr     x0, [x0, #:got_lo12:gNandParaInfo]
-       adrp    x26, :got:gNandRandomizer
-       stp     x27, x28, [sp,80]
        stp     x19, x20, [sp,16]
-       mov     w23, 0
-       mov     w27, w1
-       ldrb    w0, [x0,9]
-       mov     w22, w23
-       str     w0, [x29,140]
-       ldr     x0, [x26, #:got_lo12:gNandRandomizer]
-       str     w2, [x29,132]
-       ldrb    w0, [x0]
-       str     w0, [x29,136]
+       ldrb    w4, [x4,#:lo12:.LANCHOR1+481]
+       mov     x25, x0
+       str     w4, [x29,156]
+       add     x4, x22, :lo12:.LANCHOR0
+       stp     x23, x24, [sp,48]
+       stp     x27, x28, [sp,80]
+       str     w1, [x29,152]
+       ldrb    w5, [x4,16]
+       ldrb    w23, [x4,8]
+       str     w2, [x29,140]
+       str     w5, [x29,136]
+       str     x3, [x29,128]
+       cbz     w23, .L1411
+       bl      FlashReadSlc2KPages
+       b       .L1376
+.L1411:
        adrp    x0, .LC93
+       mov     w24, w23
        add     x0, x0, :lo12:.LC93
+       str     x0, [x29,120]
+       adrp    x0, .LC95
+       add     x0, x0, :lo12:.LC95
        str     x0, [x29,112]
-       adrp    x0, .LC94
-       add     x0, x0, :lo12:.LC94
+       adrp    x0, .LC96
+       add     x0, x0, :lo12:.LC96
        str     x0, [x29,104]
-       adrp    x0, .LC92
-       add     x0, x0, :lo12:.LC92
-       str     x0, [x29,96]
-.L1290:
-       cmp     w22, w27
-       bcs     .L1358
-       mov     w25, 56
-       ldr     w1, [x29,132]
-       sub     w4, w27, w22
-       add     x2, x29, 156
-       umull   x25, w22, w25
-       add     x3, x29, 152
-       add     x21, x24, x25
+.L1375:
+       ldr     w0, [x29,152]
+       cmp     w24, w0
+       bcs     .L1459
+       mov     w27, 56
+       ldr     w0, [x29,152]
+       ldr     w1, [x29,140]
+       add     x2, x29, 164
+       umull   x27, w24, w27
+       sub     w4, w0, w24
+       add     x3, x29, 160
+       add     x21, x25, x27
        mov     x0, x21
+       ldr     w28, [x21,4]
        bl      LogAddr2PhyAddr
+       add     x2, x22, :lo12:.LANCHOR0
        mov     w19, w0
-       adrp    x0, :got:gNandMaxDie
-       ldr     w1, [x29,152]
-       ldr     x0, [x0, #:got_lo12:gNandMaxDie]
-       ldrb    w0, [x0]
-       cmp     w1, w0
-       bcc     .L1291
+       ldr     w0, [x29,160]
+       ldrb    w1, [x2,1845]
+       cmp     w0, w1
+       bcc     .L1377
        mov     w0, -1
-       str     w0, [x24,x25]
-       b       .L1292
-.L1291:
-       adrp    x0, :got:DieCsIndex
-       ldr     x0, [x0, #:got_lo12:DieCsIndex]
-       ldrb    w20, [x0,w1,uxtw]
-       adrp    x0, :got:gMultiPageReadEn
-       ldr     x0, [x0, #:got_lo12:gMultiPageReadEn]
-       ldrb    w0, [x0]
+       str     w0, [x25,x27]
+       b       .L1378
+.L1377:
+       add     x0, x2, x0, uxtw
+       adrp    x26, .LANCHOR4
+       ldrb    w20, [x0,1848]
+       add     x0, x26, :lo12:.LANCHOR4
+       str     x2, [x29,144]
+       ldrb    w0, [x0,112]
        cmp     w0, wzr
        mov     w0, w20
        csel    w19, w19, wzr, ne
        bl      NandcWaitFlashReady
-       adrp    x1, :got:gpNandParaInfo
-       str     x1, [x29,120]
-       ldr     x0, [x1, #:got_lo12:gpNandParaInfo]
-       ldr     x0, [x0]
+       ldr     x2, [x29,144]
+       ldr     x0, [x2,744]
        ldrb    w0, [x0,19]
        sub     w0, w0, #1
        uxtb    w0, w0
        cmp     w0, 5
-       bhi     .L1294
-       adrp    x2, :got:gReadRetryInfo
-       sxtw    x1, w20
-       ldr     x2, [x2, #:got_lo12:gReadRetryInfo]
-       add     x0, x2, x1
-       ldrb    w3, [x0,12]
-       adrp    x0, :got:read_retry_cur_offset
-       ldr     x0, [x0, #:got_lo12:read_retry_cur_offset]
-       ldrb    w0, [x0,x1]
+       bhi     .L1380
+       sxtw    x0, w20
+       add     x1, x2, 760
+       add     x3, x1, x0
+       add     x0, x2, x0
+       ldrb    w3, [x3,12]
+       ldrb    w0, [x0,1616]
        cmp     w0, w3
-       beq     .L1294
-       ldrb    w1, [x2,1]
+       beq     .L1380
+       ldrb    w1, [x2,761]
        mov     w0, w20
-       add     x2, x2, 4
+       add     x2, x2, 764
        bl      HynixSetRRPara
-.L1294:
+.L1380:
        mov     w0, w20
        bl      NandcFlashCs
-.L1295:
+       ldr     w0, [x29,140]
+       cmp     w0, 1
+       cset    w0, eq
+       orr     w0, w0, w28, lsr 31
+       str     w0, [x29,144]
+       cbz     w0, .L1387
+       add     x0, x22, :lo12:.LANCHOR0
+       ldrb    w0, [x0,120]
+       cbz     w0, .L1387
+       mov     w0, w20
+       bl      flash_enter_slc_mode
+.L1387:
        cmp     w20, 255
-       ldr     w1, [x29,156]
-       bne     .L1327
+       ldr     w1, [x29,164]
+       bne     .L1416
        cmn     w1, #1
        cset    w0, ne
-       cbz     w0, .L1323
-.L1327:
-       cbz     w19, .L1298
-       adrp    x0, :got:gBlockPageAlignSize
-       ldr     x0, [x0, #:got_lo12:gBlockPageAlignSize]
-       ldr     w2, [x0]
+       cbz     w0, .L1412
+.L1416:
+       cbz     w19, .L1384
+       add     x0, x22, :lo12:.LANCHOR0
+       ldr     w2, [x0,12]
        mov     w0, w20
        add     w2, w1, w2
        bl      FlashReadDpCmd
-       b       .L1299
-.L1298:
+       b       .L1385
+.L1384:
        mov     w0, w20
        bl      FlashReadCmd
-       b       .L1299
-.L1323:
+       b       .L1385
+.L1412:
        mov     w19, w0
-.L1296:
-       ldrb    w2, [x29,140]
-       mov     w1, 0
-       ldr     x3, [x21,8]
+.L1382:
+       ldrb    w2, [x29,156]
        mov     w0, w20
+       ldr     x3, [x21,8]
+       mov     w1, 0
        ldr     x4, [x21,16]
        bl      NandcXferData
+       cmn     w0, #1
        mov     w28, w0
-       mov     w0, 0
-       bl      NandcReadDontCaseBusyEn
-       cmn     w28, #1
-       bne     .L1300
-       ldr     x0, [x26, #:got_lo12:gNandRandomizer]
-       ldrb    w1, [x0]
-       cbz     w1, .L1300
-       strb    wzr, [x0]
+       bne     .L1386
+       add     x0, x22, :lo12:.LANCHOR0
+       ldrb    w1, [x0,16]
+       cbz     w1, .L1386
+       strb    wzr, [x0,16]
        mov     w19, 0
-       b       .L1295
-.L1300:
-       cbz     w19, .L1301
-       adrp    x0, :got:gBlockPageAlignSize
-       ldr     w1, [x29,156]
-       ldr     x0, [x0, #:got_lo12:gBlockPageAlignSize]
-       ldr     w2, [x0]
+       b       .L1387
+.L1386:
+       cbz     w19, .L1388
+       add     x0, x22, :lo12:.LANCHOR0
+       ldr     w1, [x29,164]
+       ldr     w2, [x0,12]
        mov     w0, w20
        add     w1, w2, w1
        bl      FlashReadDpDataOutCmd
-       add     w0, w22, 1
+       add     w0, w24, 1
        mov     w4, 56
-       ldrb    w2, [x29,140]
+       ldrb    w2, [x29,156]
        mov     w1, 0
        umull   x4, w0, w4
        mov     w0, w20
-       add     x4, x24, x4
+       add     x4, x25, x4
        ldr     x3, [x4,8]
        ldr     x4, [x4,16]
        bl      NandcXferData
        cmn     w0, #1
        mov     w23, w0
        csel    w19, w19, wzr, ne
-.L1301:
+.L1388:
        mov     w0, w20
        bl      NandcFlashDeCs
-       ldr     x0, [x26, #:got_lo12:gNandRandomizer]
+       add     x6, x22, :lo12:.LANCHOR0
+       ldrb    w0, [x29,136]
        cmn     w28, #1
-       ldrb    w1, [x29,136]
-       strb    w1, [x0]
-       bne     .L1308
-       adrp    x0, :got:gFlashToggleModeEn
-       ldr     x0, [x0, #:got_lo12:gFlashToggleModeEn]
-       ldrb    w0, [x0]
-       cbnz    w0, .L1303
-.L1307:
-       adrp    x0, :got:gpReadRetrial
-       ldr     x0, [x0, #:got_lo12:gpReadRetrial]
-       ldr     x19, [x0]
-       cbnz    x19, .L1304
-       b       .L1359
-.L1303:
-       adrp    x0, :got:gpNandc
-       ldr     w1, [x29,156]
-       ldr     x2, [x21,8]
+       strb    w0, [x6,16]
+       bne     .L1395
+       ldrb    w0, [x6,1864]
+       cbnz    w0, .L1390
+.L1394:
+       add     x0, x26, :lo12:.LANCHOR4
+       ldr     x19, [x0,48]
+       cbnz    x19, .L1391
+       b       .L1460
+.L1390:
+       ldr     x0, [x6,128]
        mov     w4, 1
+       ldr     w1, [x29,164]
+       ldr     x2, [x21,8]
        ldr     x3, [x21,16]
-       ldr     x0, [x0, #:got_lo12:gpNandc]
-       ldr     x0, [x0]
        ldr     w19, [x0,304]
        mov     w0, w20
+       str     x6, [x29,96]
        bl      FlashDdrTunningRead
        cmn     w0, #1
        mov     w28, w0
-       beq     .L1306
-       adrp    x1, :got:gNandFlashEccBits
-       ldr     x1, [x1, #:got_lo12:gNandFlashEccBits]
-       ldrb    w0, [x1]
+       beq     .L1393
+       ldr     x6, [x29,96]
+       ldrb    w0, [x6,1944]
        cmp     w28, w0, lsr 1
-       bls     .L1325
-.L1306:
+       bls     .L1414
+.L1393:
        lsr     w0, w19, 8
        bl      NandcSetDdrPara
        cmn     w28, #1
-       beq     .L1307
-       b       .L1325
-.L1304:
-       ldr     w1, [x29,156]
+       beq     .L1394
+       b       .L1414
+.L1391:
+       ldr     w1, [x29,164]
        mov     w0, w20
        ldr     x2, [x21,8]
        ldr     x3, [x21,16]
@@ -10035,233 +9720,245 @@ FlashReadPages:
        cmn     w0, #1
        mov     w28, w0
        mov     w19, 0
-       bne     .L1309
-       ldr     x0, [x29,120]
-       ldr     x0, [x0, #:got_lo12:gpNandParaInfo]
-       ldr     x0, [x0]
+       bne     .L1396
+       add     x2, x22, :lo12:.LANCHOR0
+       ldr     x0, [x2,744]
        ldrb    w0, [x0,19]
        sub     w0, w0, #1
        uxtb    w0, w0
        cmp     w0, 5
-       bhi     .L1310
-       adrp    x2, :got:gReadRetryInfo
+       bhi     .L1397
+       ldrb    w1, [x2,761]
        mov     w0, w20
+       add     x2, x2, 764
        mov     w3, w19
-       ldr     x2, [x2, #:got_lo12:gReadRetryInfo]
-       add     x2, x2, 4
-       ldrb    w1, [x2,-3]
        bl      HynixSetRRPara
-.L1310:
-       ldr     w1, [x29,156]
+.L1397:
+       ldr     w1, [x29,164]
        mov     w0, w20
        ldr     x2, [x21,8]
        mov     w19, 0
        ldr     x3, [x21,16]
        bl      FlashReadRawPage
        mov     w28, w0
-       adrp    x2, :got:gNandFlashEccBits
-       ldr     x0, [x29,96]
+       add     x2, x22, :lo12:.LANCHOR0
+       ldr     x0, [x29,104]
        ldr     w1, [x21,4]
        mov     w3, w28
-       ldr     x2, [x2, #:got_lo12:gNandFlashEccBits]
-       ldrb    w2, [x2]
+       ldrb    w2, [x2,1944]
        bl      printk
-       b       .L1309
-.L1359:
-       ldr     w1, [x29,156]
+       b       .L1396
+.L1460:
+       ldr     w1, [x29,164]
        mov     w0, w20
        ldr     x2, [x21,8]
        ldr     x3, [x21,16]
        bl      FlashReadRawPage
        mov     w28, w0
-       b       .L1309
-.L1325:
+       b       .L1396
+.L1414:
        mov     w19, 0
-.L1308:
-       adrp    x0, :got:gNandFlashEccBits
-       ldr     x0, [x0, #:got_lo12:gNandFlashEccBits]
-       ldrb    w0, [x0]
+.L1395:
+       add     x0, x22, :lo12:.LANCHOR0
+       ldrb    w0, [x0,1944]
        add     w0, w0, w0, lsl 1
        cmp     w28, w0, lsr 2
-       bls     .L1309
-       adrp    x0, :got:gpReadRetrial
-       ldr     x0, [x0, #:got_lo12:gpReadRetrial]
-       ldr     x0, [x0]
+       bls     .L1396
+       add     x0, x26, :lo12:.LANCHOR4
+       ldr     x0, [x0,48]
        cmp     x0, xzr
        mov     w0, 256
        csel    w28, w28, w0, ne
-.L1309:
+.L1396:
        cmp     w28, 256
-       beq     .L1328
+       beq     .L1417
        cmn     w28, #1
-       bne     .L1311
-.L1328:
-       str     w28, [x24,x25]
-       b       .L1313
-.L1311:
-       str     wzr, [x24,x25]
-.L1313:
-       ldr     w3, [x24,x25]
+       bne     .L1398
+.L1417:
+       str     w28, [x25,x27]
+       b       .L1400
+.L1398:
+       str     wzr, [x25,x27]
+.L1400:
+       ldr     w3, [x25,x27]
        cmn     w3, #1
-       bne     .L1315
-       adrp    x2, :got:gNandFlashEccBits
+       bne     .L1402
+       add     x2, x22, :lo12:.LANCHOR0
        ldr     w1, [x21,4]
-       ldr     x0, [x29,112]
-       ldr     x2, [x2, #:got_lo12:gNandFlashEccBits]
-       ldrb    w2, [x2]
+       ldr     x0, [x29,120]
+       ldrb    w2, [x2,1944]
        bl      printk
        ldr     x1, [x21,16]
-       cbz     x1, .L1315
+       cbz     x1, .L1402
        mov     w2, 4
-       ldr     x0, [x29,104]
+       ldr     x0, [x29,112]
        mov     w3, w2
        bl      rknand_print_hex
-.L1315:
-       cbz     w19, .L1317
-       adrp    x0, :got:gNandFlashEccBits
-       ldr     x0, [x0, #:got_lo12:gNandFlashEccBits]
-       ldrb    w0, [x0]
+.L1402:
+       cbz     w19, .L1404
+       add     x0, x22, :lo12:.LANCHOR0
+       ldrb    w0, [x0,1944]
        add     w0, w0, w0, lsl 1
        cmp     w23, w0, lsr 2
-       bls     .L1318
-       adrp    x0, :got:gpReadRetrial
-       ldr     x0, [x0, #:got_lo12:gpReadRetrial]
-       ldr     x0, [x0]
+       bls     .L1405
+       add     x26, x26, :lo12:.LANCHOR4
+       ldr     x0, [x26,48]
        cmp     x0, xzr
        mov     w0, 256
        csel    w23, w23, w0, ne
-.L1318:
-       add     w0, w22, 1
+.L1405:
+       add     w0, w24, 1
        mov     w1, 56
        cmp     w23, 256
        umull   x0, w0, w1
-       beq     .L1329
+       beq     .L1418
        cmn     w23, #1
-       bne     .L1319
-.L1329:
-       str     w23, [x24,x0]
-       b       .L1317
-.L1319:
-       str     wzr, [x24,x0]
-.L1317:
-       add     w22, w22, w19
-.L1292:
-       add     w22, w22, 1
-       b       .L1290
-.L1299:
+       bne     .L1406
+.L1418:
+       str     w23, [x25,x0]
+       b       .L1404
+.L1406:
+       str     wzr, [x25,x0]
+.L1404:
+       ldr     w0, [x29,144]
+       add     w24, w24, w19
+       cbz     w0, .L1378
+       add     x0, x22, :lo12:.LANCHOR0
+       ldrb    w0, [x0,120]
+       cbz     w0, .L1378
+       mov     w0, w20
+       bl      flash_exit_slc_mode
+.L1378:
+       add     w24, w24, 1
+       b       .L1375
+.L1459:
+       mov     w0, 0
+.L1376:
+       ldr     x1, [x29,128]
+       ldr     x2, [x29,168]
+       ldr     x1, [x1,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L1410
+       bl      __stack_chk_fail
+.L1385:
        mov     w0, w20
        bl      NandcWaitFlashReady
-       cbz     w19, .L1296
-       ldr     w1, [x29,156]
+       cbz     w19, .L1382
+       ldr     w1, [x29,164]
        mov     w0, w20
        bl      FlashReadDpDataOutCmd
-       b       .L1296
-.L1358:
-       mov     w0, 0
+       b       .L1382
+.L1410:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 160
+       ldp     x29, x30, [sp], 176
        ret
        .size   FlashReadPages, .-FlashReadPages
        .align  2
        .global FlashLoadFactorBbt
        .type   FlashLoadFactorBbt, %function
 FlashLoadFactorBbt:
-       adrp    x0, :got:gNandPhyInfo
-       mov     w2, 16
        stp     x29, x30, [sp, -192]!
+       mov     w2, 16
        add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:gNandPhyInfo]
        stp     x23, x24, [sp,48]
+       adrp    x23, __stack_chk_guard
+       adrp    x24, .LANCHOR4
+       stp     x21, x22, [sp,32]
+       adrp    x22, .LANCHOR0
+       ldr     x0, [x23,#:lo12:__stack_chk_guard]
+       str     x0, [x29,184]
+       add     x0, x22, :lo12:.LANCHOR0
        stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
        stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
-       adrp    x23, :got:FbbtBlk
-       adrp    x24, :got:gFlashSpareBuffer
-       ldrh    w1, [x0,12]
+       stp     x27, x28, [sp,80]
+       add     x19, x24, :lo12:.LANCHOR4
        mov     w27, -1
-       ldrh    w21, [x0,14]
-       adrp    x26, .LC95
-       ldr     x0, [x23, #:got_lo12:FbbtBlk]
-       add     x28, x29, 136
-       add     x26, x26, :lo12:.LC95
+       ldrh    w1, [x0,180]
+       adrp    x26, .LC97
+       ldrh    w21, [x0,182]
+       add     x0, x19, 120
+       add     x26, x26, :lo12:.LC97
        mul     w21, w1, w21
        mov     w1, 0
-       bl      ftl_memset
        uxth    w21, w21
-       ldr     x0, [x24, #:got_lo12:gFlashSpareBuffer]
+       bl      ftl_memset
        add     w25, w21, w27
+       ldr     x0, [x19,88]
        mov     w3, 0
-       str     xzr, [x29,144]
+       str     x0, [x29,144]
+       str     xzr, [x29,136]
+       sub     w0, w21, #8
        mov     w19, w3
        uxth    w25, w25
-       ldr     x0, [x0]
-       str     x0, [x29,152]
-       sub     w0, w21, #16
        str     w0, [x29,124]
-.L1361:
-       adrp    x22, :got:gNandMaxDie
-       ldr     x1, [x22, #:got_lo12:gNandMaxDie]
-       ldrb    w1, [x1]
+.L1462:
+       add     x1, x22, :lo12:.LANCHOR0
+       ldrb    w1, [x1,1845]
        cmp     w1, w19
-       bls     .L1371
-       mul     w4, w19, w21
+       bls     .L1473
+       mul     w5, w19, w21
        mov     w20, w25
-       mov     w5, 61664
-.L1362:
+       mov     w6, 61664
+.L1463:
        ldr     w0, [x29,124]
        cmp     w20, w0
-       ble     .L1364
-       add     w1, w4, w20
-       mov     x0, x28
+       ble     .L1465
+       add     w1, w5, w20
+       add     x0, x29, 128
        lsl     w1, w1, 10
-       str     w1, [x28,4]
+       str     w1, [x29,132]
        mov     w1, 1
-       str     x5, [x29,96]
+       str     x6, [x29,96]
        mov     w2, w1
        str     x3, [x29,104]
-       str     x4, [x29,112]
+       str     x5, [x29,112]
        bl      FlashReadPages
-       ldr     w0, [x28]
-       ldr     x4, [x29,112]
+       ldr     w0, [x29,128]
+       ldr     x5, [x29,112]
        cmn     w0, #1
        ldr     x3, [x29,104]
-       ldr     x5, [x29,96]
-       beq     .L1363
-       ldr     x0, [x24, #:got_lo12:gFlashSpareBuffer]
-       ldr     x0, [x0]
+       ldr     x6, [x29,96]
+       beq     .L1464
+       add     x28, x24, :lo12:.LANCHOR4
+       ldr     x0, [x28,88]
        ldrh    w0, [x0]
-       cmp     w0, w5
-       bne     .L1363
+       cmp     w0, w6
+       bne     .L1464
        mov     x0, x26
        mov     w1, w19
        mov     w2, w20
        str     x3, [x29,112]
+       add     x28, x28, 120
        bl      printk
        ldr     x3, [x29,112]
-       ldr     x0, [x23, #:got_lo12:FbbtBlk]
+       strh    w20, [x28,w19,sxtw 1]
        add     w3, w3, 1
-       strh    w20, [x0,w19,sxtw 1]
        uxth    w3, w3
-       b       .L1364
-.L1363:
+       b       .L1465
+.L1464:
        sub     w20, w20, #1
        uxth    w20, w20
-       b       .L1362
-.L1364:
-       ldr     x22, [x22, #:got_lo12:gNandMaxDie]
+       b       .L1463
+.L1465:
+       add     x0, x22, :lo12:.LANCHOR0
        add     w19, w19, 1
        uxtb    w19, w19
-       ldrb    w1, [x22]
-       cmp     w1, w3
+       ldrb    w0, [x0,1845]
+       cmp     w0, w3
        csel    w27, w27, wzr, ne
-       b       .L1361
-.L1371:
+       b       .L1462
+.L1473:
+       ldr     x2, [x29,184]
        mov     w0, w27
+       ldr     x1, [x23,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L1469
+       bl      __stack_chk_fail
+.L1469:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -10271,156 +9968,354 @@ FlashLoadFactorBbt:
        ret
        .size   FlashLoadFactorBbt, .-FlashLoadFactorBbt
        .align  2
-       .global FtlLoadFactoryBbt
-       .type   FtlLoadFactoryBbt, %function
-FtlLoadFactoryBbt:
-       adrp    x1, :got:p_sys_data_buf
-       adrp    x0, :got:req_sys
-       stp     x29, x30, [sp, -112]!
+       .global FlashProgSlc2KPages
+       .type   FlashProgSlc2KPages, %function
+FlashProgSlc2KPages:
+       stp     x29, x30, [sp, -192]!
        add     x29, sp, 0
-       ldr     x1, [x1, #:got_lo12:p_sys_data_buf]
        stp     x21, x22, [sp,32]
+       adrp    x22, __stack_chk_guard
+       adrp    x21, .LANCHOR0
+       stp     x23, x24, [sp,48]
+       mov     w23, w1
+       str     w3, [x29,108]
+       ldr     x1, [x22,#:lo12:__stack_chk_guard]
+       mov     w24, 0
+       str     x1, [x29,184]
+       adrp    x1, .LANCHOR1+481
        stp     x25, x26, [sp,64]
        stp     x27, x28, [sp,80]
+       ldrb    w26, [x1,#:lo12:.LANCHOR1+481]
+       mov     w25, w2
        stp     x19, x20, [sp,16]
-       stp     x23, x24, [sp,48]
-       ldr     x2, [x0, #:got_lo12:req_sys]
-       adrp    x20, :got:gBbtInfo
-       ldr     x1, [x1]
+       mov     x28, x0
+       mov     x19, x0
+       add     x21, x21, :lo12:.LANCHOR0
+       mov     w27, -1
+.L1475:
+       cmp     w24, w23
+       beq     .L1505
+       mov     w1, w25
+       sub     w4, w23, w24
+       mov     x0, x28
+       add     x2, x29, 120
+       add     x3, x29, 124
+       bl      LogAddr2PhyAddr
+       ldr     w0, [x29,124]
+       ldrb    w1, [x21,1845]
+       cmp     w0, w1
+       bcc     .L1476
+       str     w27, [x28]
+       b       .L1477
+.L1476:
+       add     x0, x21, x0, uxtw
+       ldrb    w20, [x0,1848]
+       mov     w0, w20
+       bl      NandcWaitFlashReady
+       mov     w0, w20
+       bl      NandcFlashCs
+       ldr     w1, [x29,120]
+       mov     w0, w20
+       bl      FlashProgFirstCmd
+       ldr     x3, [x28,8]
+       mov     w2, w26
+       ldr     x4, [x28,16]
+       mov     w1, 1
+       mov     w0, w20
+       bl      NandcXferData
+       ldr     w1, [x29,120]
+       mov     w0, w20
+       bl      FlashProgSecondCmd
+       mov     w0, w20
+       bl      NandcWaitFlashReady
+       ldr     w1, [x29,120]
+       mov     w0, w20
+       bl      FlashReadStatus
+       sbfx    x0, x0, 0, 1
+       str     w0, [x28]
+       mov     w0, w20
+       ldr     w1, [x29,120]
+       ldr     w2, [x21,12]
+       add     w1, w2, w1
+       bl      FlashProgFirstCmd
+       ldr     x0, [x28,8]
+       mov     w1, 1
+       mov     w2, w26
+       cmp     x0, xzr
+       add     x3, x0, 2048
+       ldr     x0, [x28,16]
+       csel    x3, x3, xzr, ne
+       add     x4, x0, 8
+       cmp     x0, xzr
+       csel    x4, x4, xzr, ne
+       mov     w0, w20
+       bl      NandcXferData
+       adrp    x0, .LANCHOR0
+       ldr     w1, [x29,120]
+       add     x0, x0, :lo12:.LANCHOR0
+       ldr     w2, [x0,12]
+       mov     w0, w20
+       add     w1, w2, w1
+       bl      FlashProgSecondCmd
+       mov     w0, w20
+       bl      NandcWaitFlashReady
+       ldr     w1, [x29,120]
+       mov     w0, w20
+       bl      FlashReadStatus
+       tbz     x0, 0, .L1480
+       str     w27, [x28]
+.L1480:
+       mov     w0, w20
+       bl      NandcFlashDeCs
+.L1477:
+       add     w24, w24, 1
+       add     x28, x28, 56
+       b       .L1475
+.L1505:
+       ldr     w0, [x29,108]
        mov     w21, 0
-       mov     x22, x0
-       adrp    x25, :got:c_ftl_nand_die_num
-       str     x1, [x2,8]
-       adrp    x1, :got:p_sys_spare_buf
-       mov     w26, -1
-       adrp    x27, :got:c_ftl_nand_blks_per_die
-       mov     w28, 61664
-       ldr     x1, [x1, #:got_lo12:p_sys_spare_buf]
-       ldr     x24, [x1]
-       str     x24, [x2,16]
-       ldr     x20, [x20, #:got_lo12:gBbtInfo]
-.L1373:
-       ldr     x0, [x25, #:got_lo12:c_ftl_nand_die_num]
-       ldrh    w0, [x0]
-       cmp     w21, w0
-       bcs     .L1382
-       strh    w26, [x20,12]
-       adrp    x3, :got:c_ftl_nand_blks_per_die
-       ldr     x0, [x27, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldrh    w19, [x0]
-       sub     w19, w19, #1
-       uxth    w19, w19
-.L1374:
-       ldr     x0, [x3, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldrh    w1, [x0]
-       sub     w0, w1, #16
-       cmp     w19, w0
-       ble     .L1376
-       ldr     x23, [x22, #:got_lo12:req_sys]
-       madd    w1, w21, w1, w19
-       mov     x0, x23
-       str     x3, [x29,104]
-       lsl     w1, w1, 10
-       str     w1, [x23,4]
+       cbnz    w0, .L1482
+.L1489:
+       ldr     x2, [x29,184]
+       mov     w0, 0
+       ldr     x1, [x22,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L1490
+       bl      __stack_chk_fail
+.L1482:
+       adrp    x24, .LC101
+       adrp    x26, .LC100
+       adrp    x27, .LC99
+       add     x24, x24, :lo12:.LC101
+       add     x26, x26, :lo12:.LC100
+       add     x27, x27, :lo12:.LC99
+.L1504:
+       cmp     w21, w23
+       beq     .L1489
+       ldr     w0, [x19]
+       cmn     w0, #1
+       bne     .L1483
+       adrp    x0, .LC98
+       ldr     w1, [x19,4]
+       add     x0, x0, :lo12:.LC98
+       bl      printk
+       b       .L1484
+.L1483:
+       adrp    x20, .LANCHOR4
+       sub     w4, w23, w21
+       add     x28, x20, :lo12:.LANCHOR4
+       add     x3, x29, 124
+       mov     w1, w25
+       add     x2, x29, 120
+       mov     x0, x19
+       bl      LogAddr2PhyAddr
+       ldr     x0, [x28,96]
+       mov     x1, x19
+       mov     x2, 56
+       str     wzr, [x0]
+       ldr     x0, [x28,104]
+       str     wzr, [x0]
+       add     x0, x29, 128
+       bl      memcpy
+       ldr     x0, [x28,96]
        mov     w1, 1
-       mov     w2, w1
+       str     x0, [x29,136]
+       mov     w2, w25
+       ldr     x0, [x28,104]
+       str     x0, [x29,144]
+       add     x0, x29, 128
        bl      FlashReadPages
-       ldr     w0, [x23]
-       ldr     x3, [x29,104]
-       cmn     w0, #1
-       beq     .L1375
-       ldrh    w0, [x24]
-       cmp     w0, w28
-       bne     .L1375
-       strh    w19, [x20,12]
-       b       .L1376
-.L1375:
-       sub     w19, w19, #1
-       uxth    w19, w19
-       b       .L1374
-.L1376:
+       ldr     w28, [x29,128]
+       cmn     w28, #1
+       bne     .L1485
+       ldr     w1, [x19,4]
+       mov     x0, x27
+       bl      printk
+       str     w28, [x19]
+.L1485:
+       ldr     x0, [x19,16]
+       cbz     x0, .L1486
+       ldr     w2, [x0]
+       add     x0, x20, :lo12:.LANCHOR4
+       ldr     x0, [x0,104]
+       ldr     w3, [x0]
+       cmp     w2, w3
+       beq     .L1486
+       ldr     w1, [x19,4]
+       mov     x0, x26
+       bl      printk
+       mov     w0, -1
+       str     w0, [x19]
+.L1486:
+       ldr     x0, [x19,8]
+       cbz     x0, .L1484
+       add     x20, x20, :lo12:.LANCHOR4
+       ldr     w2, [x0]
+       ldr     x0, [x20,96]
+       ldr     w3, [x0]
+       cmp     w2, w3
+       beq     .L1484
+       ldr     w1, [x19,4]
+       mov     x0, x24
+       bl      printk
+       mov     w0, -1
+       str     w0, [x19]
+.L1484:
        add     w21, w21, 1
-       add     x20, x20, 2
-       b       .L1373
-.L1382:
-       mov     w0, 0
+       add     x19, x19, 56
+       b       .L1504
+.L1490:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 112
+       ldp     x29, x30, [sp], 192
        ret
-       .size   FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
+       .size   FlashProgSlc2KPages, .-FlashProgSlc2KPages
        .align  2
-       .global FtlGetLastWrittenPage
-       .type   FtlGetLastWrittenPage, %function
-FtlGetLastWrittenPage:
-       stp     x29, x30, [sp, -208]!
-       cmp     w1, 1
+       .global FtlLoadFactoryBbt
+       .type   FtlLoadFactoryBbt, %function
+FtlLoadFactoryBbt:
+       stp     x29, x30, [sp, -80]!
+       adrp    x0, .LANCHOR2
        add     x29, sp, 0
-       stp     x23, x24, [sp,48]
        stp     x19, x20, [sp,16]
+       adrp    x19, .LANCHOR4
+       add     x0, x0, :lo12:.LANCHOR2
+       add     x19, x19, :lo12:.LANCHOR4
        stp     x21, x22, [sp,32]
        stp     x25, x26, [sp,64]
-       mov     w24, w1
-       bne     .L1384
-       adrp    x1, :got:c_ftl_nand_page_pre_slc_blk
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       b       .L1394
-.L1384:
-       adrp    x1, :got:c_ftl_nand_page_pre_blk
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
-.L1394:
-       ldrh    w19, [x1]
-       lsl     w21, w0, 10
-       add     x22, x29, 88
-       mov     w1, 1
-       sub     w19, w19, #1
-       mov     w2, w24
-       str     xzr, [x29,96]
-       add     x25, x29, 144
-       sxth    w19, w19
-       str     x25, [x29,104]
-       orr     w0, w19, w21
-       str     w0, [x29,92]
-       mov     x0, x22
-       bl      FlashReadPages
-       ldr     w0, [x29,144]
-       cmn     w0, #1
-       bne     .L1386
+       stp     x23, x24, [sp,48]
+       add     x19, x19, 136
+       adrp    x22, .LANCHOR0
+       ldr     x1, [x0,-64]
+       add     x21, x22, :lo12:.LANCHOR0
+       ldr     x24, [x0,2112]
+       add     x21, x21, 2112
+       str     x1, [x19,8]
+       mov     w23, 0
+       str     x24, [x19,16]
+       mov     w25, -1
+       mov     w26, 61664
+.L1507:
+       add     x0, x22, :lo12:.LANCHOR0
+       ldrh    w1, [x0,1974]
+       cmp     w23, w1
+       bcs     .L1516
+       ldrh    w20, [x0,2022]
+       strh    w25, [x21,12]
+.L1509:
+       add     x0, x22, :lo12:.LANCHOR0
+       sub     w20, w20, #1
+       uxth    w20, w20
+       ldrh    w0, [x0,2022]
+       sub     w1, w0, #16
+       cmp     w20, w1
+       ble     .L1510
+       madd    w0, w23, w0, w20
+       mov     w1, 1
+       lsl     w0, w0, 10
+       mov     w2, w1
+       str     w0, [x19,4]
+       mov     x0, x19
+       bl      FlashReadPages
+       ldr     w0, [x19]
+       cmn     w0, #1
+       beq     .L1509
+       ldrh    w0, [x24]
+       cmp     w0, w26
+       bne     .L1509
+       strh    w20, [x21,12]
+.L1510:
+       add     w23, w23, 1
+       add     x21, x21, 2
+       b       .L1507
+.L1516:
+       mov     w0, 0
+       ldp     x19, x20, [sp,16]
+       ldp     x21, x22, [sp,32]
+       ldp     x23, x24, [sp,48]
+       ldp     x25, x26, [sp,64]
+       ldp     x29, x30, [sp], 80
+       ret
+       .size   FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
+       .align  2
+       .global FtlGetLastWrittenPage
+       .type   FtlGetLastWrittenPage, %function
+FtlGetLastWrittenPage:
+       stp     x29, x30, [sp, -208]!
+       adrp    x3, .LANCHOR0
+       add     x29, sp, 0
+       stp     x21, x22, [sp,32]
+       adrp    x21, __stack_chk_guard
+       add     x3, x3, :lo12:.LANCHOR0
+       stp     x23, x24, [sp,48]
+       mov     w24, w1
+       ldr     x1, [x21,#:lo12:__stack_chk_guard]
+       cmp     w24, 1
+       stp     x19, x20, [sp,16]
+       stp     x25, x26, [sp,64]
+       str     x1, [x29,200]
+       bne     .L1518
+       ldrh    w19, [x3,2028]
+       b       .L1519
+.L1518:
+       ldrh    w19, [x3,2026]
+.L1519:
+       sub     w19, w19, #1
+       lsl     w22, w0, 10
+       mov     w1, 1
+       mov     w2, w24
+       sxth    w19, w19
+       str     xzr, [x29,88]
+       orr     w0, w19, w22
+       str     w0, [x29,84]
+       add     x0, x29, 80
+       add     x25, x29, 136
+       str     x25, [x29,96]
+       bl      FlashReadPages
+       ldr     w0, [x29,136]
+       cmn     w0, #1
+       bne     .L1520
        mov     w23, 0
        mov     w26, 2
-.L1387:
+.L1521:
        cmp     w23, w19
-       bgt     .L1386
+       bgt     .L1520
        add     w3, w23, w19
        mov     w1, 1
        mov     w2, w24
        sdiv    w20, w3, w26
        sxth    w0, w20
-       orr     w0, w0, w21
-       str     w0, [x22,4]
-       mov     x0, x22
+       orr     w0, w0, w22
+       str     w0, [x29,84]
+       add     x0, x29, 80
        bl      FlashReadPages
        ldr     w0, [x25]
        cmn     w0, #1
-       bne     .L1388
+       bne     .L1522
        ldr     w0, [x25,4]
        cmn     w0, #1
-       bne     .L1388
-       ldr     w0, [x22]
+       bne     .L1522
+       ldr     w0, [x29,80]
        cmn     w0, #1
-       beq     .L1388
+       beq     .L1522
        sub     w19, w20, #1
        sxth    w19, w19
-       b       .L1387
-.L1388:
+       b       .L1521
+.L1522:
        add     w20, w20, 1
        sxth    w23, w20
-       b       .L1387
-.L1386:
+       b       .L1521
+.L1520:
+       ldr     x2, [x29,200]
        mov     w0, w19
+       ldr     x1, [x21,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L1525
+       bl      __stack_chk_fail
+.L1525:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -10432,186 +10327,179 @@ FtlGetLastWrittenPage:
        .global FtlLoadBbt
        .type   FtlLoadBbt, %function
 FtlLoadBbt:
-       stp     x29, x30, [sp, -64]!
-       adrp    x0, :got:p_sys_spare_buf
+       stp     x29, x30, [sp, -80]!
        add     x29, sp, 0
-       stp     x21, x22, [sp,32]
-       adrp    x21, :got:req_sys
        stp     x23, x24, [sp,48]
+       adrp    x23, .LANCHOR4
+       adrp    x24, .LANCHOR2
        stp     x19, x20, [sp,16]
-       ldr     x1, [x21, #:got_lo12:req_sys]
-       adrp    x23, :got:c_ftl_nand_blks_per_die
-       mov     w24, 61649
-       str     xzr, [x1,8]
-       ldr     x0, [x0, #:got_lo12:p_sys_spare_buf]
-       ldr     x20, [x0]
-       str     x20, [x1,16]
+       add     x0, x24, :lo12:.LANCHOR2
+       add     x19, x23, :lo12:.LANCHOR4
+       stp     x21, x22, [sp,32]
+       str     x25, [sp,64]
+       add     x19, x19, 136
+       adrp    x20, .LANCHOR0
+       str     xzr, [x19,8]
+       ldr     x22, [x0,2112]
+       mov     w25, 61649
+       str     x22, [x19,16]
        bl      FtlBbtMemInit
-       ldr     x0, [x23, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldrh    w19, [x0]
-       sub     w19, w19, #1
-       uxth    w19, w19
-.L1396:
-       ldr     x0, [x23, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldrh    w0, [x0]
+       add     x0, x20, :lo12:.LANCHOR0
+       ldrh    w21, [x0,2022]
+       sub     w21, w21, #1
+       uxth    w21, w21
+.L1530:
+       add     x0, x20, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2022]
        sub     w0, w0, #48
-       cmp     w19, w0
-       ble     .L1399
-       ldr     x22, [x21, #:got_lo12:req_sys]
-       lsl     w0, w19, 10
+       cmp     w21, w0
+       ble     .L1533
+       lsl     w0, w21, 10
        mov     w1, 1
+       str     w0, [x19,4]
        mov     w2, w1
-       str     w0, [x22,4]
-       mov     x0, x22
+       mov     x0, x19
        bl      FlashReadPages
-       ldr     w0, [x22]
+       ldr     w0, [x19]
        cmn     w0, #1
-       bne     .L1397
-       ldr     w0, [x22,4]
+       bne     .L1531
+       ldr     w0, [x19,4]
        mov     w1, 1
        mov     w2, w1
        add     w0, w0, 1
-       str     w0, [x22,4]
-       mov     x0, x22
+       str     w0, [x19,4]
+       mov     x0, x19
        bl      FlashReadPages
-.L1397:
-       ldr     x0, [x21, #:got_lo12:req_sys]
-       ldr     w0, [x0]
+.L1531:
+       ldr     w0, [x19]
        cmn     w0, #1
-       beq     .L1398
-       ldrh    w0, [x20]
-       cmp     w0, w24
-       bne     .L1398
-       adrp    x0, :got:gBbtInfo
-       ldr     w1, [x20,4]
-       ldr     x0, [x0, #:got_lo12:gBbtInfo]
+       beq     .L1532
+       ldrh    w0, [x22]
+       cmp     w0, w25
+       bne     .L1532
+       add     x1, x20, :lo12:.LANCHOR0
+       add     x0, x1, 2112
+       strh    w21, [x1,2112]
+       ldr     w1, [x22,4]
        str     w1, [x0,8]
-       strh    w19, [x0]
-       ldrh    w1, [x20,8]
+       ldrh    w1, [x22,8]
        strh    w1, [x0,4]
-       b       .L1399
-.L1398:
-       sub     w19, w19, #1
-       uxth    w19, w19
-       b       .L1396
-.L1399:
-       adrp    x19, :got:gBbtInfo
+       b       .L1533
+.L1532:
+       sub     w21, w21, #1
+       uxth    w21, w21
+       b       .L1530
+.L1533:
+       add     x21, x20, :lo12:.LANCHOR0
        mov     w2, 65535
        mov     w0, -1
-       ldr     x22, [x19, #:got_lo12:gBbtInfo]
-       ldrh    w1, [x22]
+       ldrh    w1, [x21,2112]
        cmp     w1, w2
-       beq     .L1401
-       ldrh    w1, [x22,4]
+       beq     .L1535
+       ldrh    w1, [x21,2116]
        cmp     w1, w2
-       beq     .L1403
-       ldr     x23, [x21, #:got_lo12:req_sys]
+       beq     .L1537
+       add     x25, x23, :lo12:.LANCHOR4
        lsl     w1, w1, 10
-       mov     x0, x23
-       str     w1, [x23,4]
+       add     x0, x25, 136
+       str     w1, [x0,4]
        mov     w1, 1
        mov     w2, w1
        bl      FlashReadPages
-       ldr     w0, [x23]
+       ldr     w0, [x25,136]
        cmn     w0, #1
-       beq     .L1403
-       ldrh    w1, [x20]
+       beq     .L1537
+       ldrh    w1, [x22]
        mov     w0, 61649
        cmp     w1, w0
-       bne     .L1403
-       ldr     w0, [x20,4]
-       ldr     w1, [x22,8]
+       bne     .L1537
+       ldr     w0, [x22,4]
+       ldr     w1, [x21,2120]
        cmp     w0, w1
-       bls     .L1403
-       str     w0, [x22,8]
-       ldrh    w1, [x22,4]
-       ldrh    w0, [x20,8]
-       strh    w1, [x22]
-       strh    w0, [x22,4]
-.L1403:
-       ldr     x23, [x19, #:got_lo12:gBbtInfo]
+       bls     .L1537
+       str     w0, [x21,2120]
+       ldrh    w1, [x21,2116]
+       ldrh    w0, [x22,8]
+       strh    w1, [x21,2112]
+       strh    w0, [x21,2116]
+.L1537:
+       add     x25, x20, :lo12:.LANCHOR0
        mov     w1, 1
-       adrp    x24, :got:p_sys_data_buf
-       ldrh    w0, [x23]
+       add     x21, x23, :lo12:.LANCHOR4
+       add     x21, x21, 136
+       ldrh    w0, [x25,2112]
        bl      FtlGetLastWrittenPage
-       sxth    w22, w0
+       sxth    w19, w0
        add     w0, w0, 1
-       strh    w0, [x23,2]
-.L1405:
-       tbnz    w22, #31, .L1410
-       ldr     x0, [x19, #:got_lo12:gBbtInfo]
+       strh    w0, [x25,2114]
+.L1539:
+       tbnz    w19, #31, .L1544
+       ldrh    w0, [x25,2112]
        mov     w1, 1
-       ldr     x23, [x21, #:got_lo12:req_sys]
        mov     w2, w1
-       ldrh    w0, [x0]
-       orr     w0, w22, w0, lsl 10
-       str     w0, [x23,4]
-       ldr     x0, [x24, #:got_lo12:p_sys_data_buf]
-       ldr     x0, [x0]
-       str     x0, [x23,8]
-       mov     x0, x23
+       orr     w0, w19, w0, lsl 10
+       str     w0, [x21,4]
+       add     x0, x24, :lo12:.LANCHOR2
+       ldr     x0, [x0,-64]
+       str     x0, [x21,8]
+       mov     x0, x21
        bl      FlashReadPages
-       ldr     w0, [x23]
+       ldr     w0, [x21]
        cmn     w0, #1
-       beq     .L1406
-.L1410:
-       ldr     x0, [x19, #:got_lo12:gBbtInfo]
-       ldrh    w1, [x20,10]
-       strh    w1, [x0,6]
-       mov     w1, 65535
-       ldrh    w0, [x20,12]
-       cmp     w0, w1
-       bne     .L1407
-       b       .L1408
-.L1406:
-       sub     w22, w22, #1
-       sxth    w22, w22
-       b       .L1405
-.L1407:
-       adrp    x1, :got:c_ftl_nand_sys_blks_per_plane
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
-       ldr     w2, [x1]
+       beq     .L1540
+.L1544:
+       add     x1, x20, :lo12:.LANCHOR0
+       ldrh    w0, [x22,10]
+       mov     w2, 65535
+       strh    w0, [x1,2118]
+       ldrh    w0, [x22,12]
+       cmp     w0, w2
+       bne     .L1541
+       b       .L1542
+.L1540:
+       sub     w19, w19, #1
+       sxth    w19, w19
+       b       .L1539
+.L1541:
+       ldr     w2, [x1,1948]
        cmp     w0, w2
-       beq     .L1408
-       adrp    x1, :got:c_ftl_nand_blk_pre_plane
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       ldrh    w1, [x1]
+       beq     .L1542
+       ldrh    w1, [x1,1962]
        lsr     w1, w1, 2
        cmp     w0, w1
-       bcs     .L1408
+       bcs     .L1542
        cmp     w2, w1
-       bcs     .L1408
+       bcs     .L1542
        bl      FtlSysBlkNumInit
-.L1408:
-       mov     x20, 0
-       adrp    x22, :got:c_ftl_nand_die_num
-       adrp    x23, :got:c_ftl_nand_bbm_buf_size
-.L1411:
-       ldr     x0, [x22, #:got_lo12:c_ftl_nand_die_num]
-       mov     w1, w20
-       add     x20, x20, 1
-       ldrh    w0, [x0]
+.L1542:
+       add     x20, x20, :lo12:.LANCHOR0
+       mov     x19, 0
+       add     x21, x20, 2112
+       add     x23, x23, :lo12:.LANCHOR4
+.L1545:
+       ldrh    w0, [x20,1974]
+       mov     w1, w19
+       add     x19, x19, 1
        cmp     w1, w0
-       bcs     .L1426
-       ldr     x0, [x23, #:got_lo12:c_ftl_nand_bbm_buf_size]
-       ldr     x3, [x21, #:got_lo12:req_sys]
-       ldrh    w2, [x0]
-       ldr     x0, [x19, #:got_lo12:gBbtInfo]
-       ldr     x3, [x3,8]
-       add     x0, x0, x20, lsl 3
+       bcs     .L1560
+       add     x0, x24, :lo12:.LANCHOR2
+       ldr     x3, [x23,144]
+       ldrh    w2, [x0,2232]
+       add     x0, x21, x19, lsl 3
        mul     w1, w1, w2
-       lsl     w2, w2, 2
        ldr     x0, [x0,24]
+       lsl     w2, w2, 2
        add     x1, x3, x1, lsl 2
        bl      ftl_memcpy
-       b       .L1411
-.L1426:
+       b       .L1545
+.L1560:
        mov     w0, 0
-.L1401:
+.L1535:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
-       ldp     x29, x30, [sp], 64
+       ldr     x25, [sp,64]
+       ldp     x29, x30, [sp], 80
        ret
        .size   FtlLoadBbt, .-FtlLoadBbt
        .align  2
@@ -10621,55 +10509,50 @@ load_l2p_region:
        stp     x29, x30, [sp, -48]!
        uxth    x1, w1
        add     x29, sp, 0
+       stp     x19, x20, [sp,16]
+       adrp    x20, .LANCHOR2
+       add     x20, x20, :lo12:.LANCHOR2
        stp     x21, x22, [sp,32]
        uxth    w21, w0
-       adrp    x0, :got:p_map_region_ppn_table
-       stp     x19, x20, [sp,16]
-       ubfiz   x2, x21, 2, 16
-       adrp    x20, :got:p_l2p_ram_map
-       ldr     x0, [x0, #:got_lo12:p_map_region_ppn_table]
-       ldr     x0, [x0]
-       ldr     w22, [x0,x2]
-       cbnz    w22, .L1428
-       ldr     x20, [x20, #:got_lo12:p_l2p_ram_map]
-       adrp    x2, :got:c_ftl_nand_byte_pre_page
+       ubfiz   x0, x21, 2, 16
+       ldr     x2, [x20,2208]
+       ldr     w22, [x2,x0]
+       cbnz    w22, .L1562
+       ldr     x0, [x20,144]
        lsl     x19, x1, 4
+       adrp    x2, .LANCHOR0+2036
        mov     w1, 255
-       ldr     x0, [x20]
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
        add     x0, x0, x19
-       ldrh    w2, [x2]
+       ldrh    w2, [x2,#:lo12:.LANCHOR0+2036]
        ldr     x0, [x0,8]
        bl      ftl_memset
-       ldr     x0, [x20]
+       ldr     x0, [x20,144]
        strh    w21, [x0,x19]
-       ldr     x1, [x20]
+       ldr     x1, [x20,144]
        add     x19, x1, x19
        str     w22, [x19,4]
-       b       .L1429
-.L1428:
-       adrp    x0, :got:req_sys
+       b       .L1563
+.L1562:
        lsl     x19, x1, 4
-       ldr     x0, [x0, #:got_lo12:req_sys]
-       str     w22, [x0,4]
-       ldr     x20, [x20, #:got_lo12:p_l2p_ram_map]
-       ldr     x1, [x20]
+       ldr     x1, [x20,144]
+       adrp    x0, .LANCHOR4
+       add     x0, x0, :lo12:.LANCHOR4
        add     x1, x1, x19
+       add     x0, x0, 136
        ldr     x1, [x1,8]
        str     x1, [x0,8]
-       adrp    x1, :got:p_sys_spare_buf
-       ldr     x1, [x1, #:got_lo12:p_sys_spare_buf]
-       ldr     x1, [x1]
+       ldr     x1, [x20,2112]
        str     x1, [x0,16]
        mov     w1, 1
        mov     w2, w1
+       str     w22, [x0,4]
        bl      FlashReadPages
-       ldr     x0, [x20]
+       ldr     x0, [x20,144]
        add     x0, x0, x19
        str     wzr, [x0,4]
-       ldr     x0, [x20]
+       ldr     x0, [x20,144]
        strh    w21, [x0,x19]
-.L1429:
+.L1563:
        mov     w0, 0
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
@@ -10682,37 +10565,36 @@ load_l2p_region:
 FtlVendorPartRead:
        stp     x29, x30, [sp, -176]!
        add     x29, sp, 0
+       stp     x23, x24, [sp,48]
+       adrp    x23, __stack_chk_guard
+       mov     x24, x2
        stp     x21, x22, [sp,32]
+       stp     x25, x26, [sp,64]
        mov     w22, w0
-       adrp    x0, :got:c_ftl_nand_sec_pre_page_shift
-       stp     x19, x20, [sp,16]
-       stp     x23, x24, [sp,48]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
+       adrp    x25, .LANCHOR0
+       ldr     x0, [x23,#:lo12:__stack_chk_guard]
        mov     w21, w1
-       stp     x25, x26, [sp,64]
+       str     x0, [x29,168]
+       add     x0, x25, :lo12:.LANCHOR0
+       stp     x19, x20, [sp,16]
        stp     x27, x28, [sp,80]
        add     w1, w22, w1
-       mov     x23, x2
-       ldrh    w3, [x0]
-       adrp    x0, :got:c_ftl_vendor_part_size
+       str     x23, [x29,104]
+       ldrh    w3, [x0,2034]
        mov     w20, -1
-       ldr     x0, [x0, #:got_lo12:c_ftl_vendor_part_size]
-       ldrh    w0, [x0]
+       ldrh    w0, [x0,2020]
        cmp     w1, w0
-       bhi     .L1431
-       lsr     w24, w22, w3
+       bhi     .L1565
+       lsr     w23, w22, w3
        mov     w20, 0
-       add     x25, x29, 120
-       adrp    x26, :got:p_vendor_data_buf
-.L1432:
-       cbz     w21, .L1431
-       adrp    x0, :got:p_vendor_region_ppn_table
-       ldr     x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
-       ldr     x0, [x0]
-       ldr     w1, [x0,w24,uxtw 2]
-       adrp    x0, :got:c_ftl_nand_sec_pre_page
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w19, [x0]
+       adrp    x26, .LANCHOR2
+.L1566:
+       cbz     w21, .L1565
+       add     x4, x26, :lo12:.LANCHOR2
+       ldr     x0, [x4,2200]
+       ldr     w1, [x0,w23,uxtw 2]
+       add     x0, x25, :lo12:.LANCHOR0
+       ldrh    w19, [x0,2032]
        uxth    w0, w21
        udiv    w27, w22, w19
        msub    w27, w27, w19, w22
@@ -10721,40 +10603,46 @@ FtlVendorPartRead:
        cmp     w19, w21
        csel    w19, w0, w19, hi
        lsl     w28, w19, 9
-       cbz     w1, .L1434
-       ldr     x5, [x26, #:got_lo12:p_vendor_data_buf]
+       cbz     w1, .L1568
+       ldr     x0, [x4,2080]
        ubfiz   x27, x27, 9, 16
-       str     w1, [x25,4]
+       str     w1, [x29,116]
        mov     w1, 1
+       str     x0, [x29,120]
        mov     w2, w1
-       str     x5, [x29,104]
-       ldr     x0, [x5]
-       str     x0, [x25,8]
-       mov     x0, x25
-       str     xzr, [x25,16]
+       add     x0, x29, 112
+       str     x4, [x29,96]
+       str     xzr, [x29,128]
        bl      FlashReadPages
-       ldr     x5, [x29,104]
+       ldr     x4, [x29,96]
        mov     w2, w28
-       ldr     w0, [x25]
-       ldr     x1, [x5]
+       ldr     w0, [x29,112]
+       ldr     x1, [x4,2080]
        cmn     w0, #1
-       mov     x0, x23
+       mov     x0, x24
        csinv   w20, w20, wzr, ne
        add     x1, x1, x27
        bl      ftl_memcpy
-       b       .L1436
-.L1434:
-       mov     x0, x23
+       b       .L1570
+.L1568:
+       mov     x0, x24
        mov     w2, w28
        bl      ftl_memset
-.L1436:
-       add     w24, w24, 1
+.L1570:
+       add     w23, w23, 1
        sub     w21, w21, w19
        add     w22, w22, w19
-       add     x23, x23, x28, sxtw
-       b       .L1432
-.L1431:
+       add     x24, x24, x28, sxtw
+       b       .L1566
+.L1565:
+       ldr     x1, [x29,104]
        mov     w0, w20
+       ldr     x2, [x29,168]
+       ldr     x1, [x1,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L1572
+       bl      __stack_chk_fail
+.L1572:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -10770,33 +10658,31 @@ FtlLoadEctTbl:
        stp     x29, x30, [sp, -32]!
        mov     w0, 64
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       adrp    x20, :got:g_ect_tbl_info_size
-       adrp    x19, :got:gp_ect_tbl_info
-       ldr     x20, [x20, #:got_lo12:g_ect_tbl_info_size]
-       ldr     x19, [x19, #:got_lo12:gp_ect_tbl_info]
-       ldrh    w1, [x20]
-       ldr     x2, [x19]
+       str     x19, [sp,16]
+       adrp    x19, .LANCHOR2
+       add     x19, x19, :lo12:.LANCHOR2
+       ldrh    w1, [x19,2136]
+       ldr     x2, [x19,2152]
        bl      FtlVendorPartRead
-       ldr     x0, [x19]
+       ldr     x0, [x19,2152]
        ldr     w1, [x0]
        mov     w0, 17221
        movk    w0, 0x4254, lsl 16
        cmp     w1, w0
-       beq     .L1440
-       adrp    x0, .LC72
-       adrp    x1, .LC96
-       add     x1, x1, :lo12:.LC96
-       add     x0, x0, :lo12:.LC72
+       beq     .L1575
+       adrp    x0, .LC73
+       adrp    x1, .LC102
+       add     x1, x1, :lo12:.LC102
+       add     x0, x0, :lo12:.LC73
        bl      printk
-       ldrh    w2, [x20]
+       ldrh    w2, [x19,2136]
        mov     w1, 0
-       ldr     x0, [x19]
+       ldr     x0, [x19,2152]
        lsl     w2, w2, 9
        bl      ftl_memset
-.L1440:
+.L1575:
        mov     w0, 0
-       ldp     x19, x20, [sp,16]
+       ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
        .size   FtlLoadEctTbl, .-FtlLoadEctTbl
@@ -10804,668 +10690,605 @@ FtlLoadEctTbl:
        .global Ftl_load_ext_data
        .type   Ftl_load_ext_data, %function
 Ftl_load_ext_data:
-       stp     x29, x30, [sp, -32]!
+       stp     x29, x30, [sp, -48]!
        mov     w1, 1
        mov     w0, 0
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       adrp    x19, :got:g_sys_ext_data
-       ldr     x20, [x19, #:got_lo12:g_sys_ext_data]
-       mov     x2, x20
+       adrp    x19, .LANCHOR2
+       str     x21, [sp,32]
+       add     x20, x19, :lo12:.LANCHOR2
+       add     x21, x20, 352
+       mov     x2, x21
        bl      FtlVendorPartRead
-       ldr     w1, [x20]
+       ldr     w1, [x20,352]
        mov     w0, 19539
        movk    w0, 0x4654, lsl 16
        cmp     w1, w0
-       beq     .L1442
-       mov     x0, x20
+       beq     .L1577
+       mov     x0, x21
        mov     w1, 0
        mov     w2, 512
        bl      ftl_memset
        mov     w0, 19539
        movk    w0, 0x4654, lsl 16
-       str     w0, [x20]
-.L1442:
-       ldr     x0, [x19, #:got_lo12:g_sys_ext_data]
-       mov     w1, 19539
-       movk    w1, 0x4654, lsl 16
-       adrp    x20, :got:g_totle_slc_erase_count
-       ldr     w2, [x0]
+       str     w0, [x20,352]
+.L1577:
+       add     x0, x19, :lo12:.LANCHOR2
+       mov     w2, 19539
+       movk    w2, 0x4654, lsl 16
+       ldr     w3, [x0,352]
+       cmp     w3, w2
+       bne     .L1578
+       ldr     w2, [x0,440]
+       str     w2, [x0,188]
+       ldr     w2, [x0,444]
+       str     w2, [x0,192]
+       ldr     w2, [x0,360]
+       str     w2, [x0,184]
+       ldr     w2, [x0,364]
+       str     w2, [x0,172]
+       ldr     w2, [x0,368]
+       str     w2, [x0,164]
+       ldr     w2, [x0,372]
+       str     w2, [x0,180]
+       ldr     w2, [x0,380]
+       str     w2, [x0,208]
+       ldr     w2, [x0,384]
+       str     w2, [x0,-72]
+       ldr     w2, [x0,388]
+       str     w2, [x0,168]
+       ldr     w2, [x0,392]
+       str     w2, [x0,176]
+       ldr     w2, [x0,396]
+       str     w2, [x0,216]
+       ldr     w1, [x0,412]
+       ldr     w2, [x0,400]
+       str     w2, [x0,220]
+       str     w1, [x0,344]
+.L1578:
+       add     x0, x19, :lo12:.LANCHOR2
+       mov     w1, 34661
+       movk    w1, 0x1234, lsl 16
+       ldr     w2, [x0,420]
+       str     wzr, [x0,2024]
        cmp     w2, w1
-       bne     .L1443
-       adrp    x1, :got:g_totle_write_sector
-       ldr     w2, [x0,88]
-       ldr     x1, [x1, #:got_lo12:g_totle_write_sector]
-       str     w2, [x1]
-       adrp    x1, :got:g_totle_read_sector
-       ldr     w2, [x0,92]
-       ldr     x1, [x1, #:got_lo12:g_totle_read_sector]
-       str     w2, [x1]
-       adrp    x1, :got:g_totle_gc_page_count
-       ldr     w2, [x0,8]
-       ldr     x1, [x1, #:got_lo12:g_totle_gc_page_count]
-       str     w2, [x1]
-       adrp    x1, :got:g_totle_write_page_count
-       ldr     w2, [x0,12]
-       ldr     x1, [x1, #:got_lo12:g_totle_write_page_count]
-       str     w2, [x1]
-       adrp    x1, :got:g_totle_read_page_count
-       ldr     w2, [x0,16]
-       ldr     x1, [x1, #:got_lo12:g_totle_read_page_count]
-       str     w2, [x1]
-       adrp    x1, :got:g_totle_l2p_write_count
-       ldr     w2, [x0,20]
-       ldr     x1, [x1, #:got_lo12:g_totle_l2p_write_count]
-       str     w2, [x1]
-       ldr     w2, [x0,28]
-       ldr     x1, [x20, #:got_lo12:g_totle_slc_erase_count]
-       str     w2, [x1]
-       adrp    x1, :got:g_totle_sys_slc_erase_count
-       ldr     w2, [x0,32]
-       ldr     x1, [x1, #:got_lo12:g_totle_sys_slc_erase_count]
-       str     w2, [x1]
-       adrp    x1, :got:g_totle_discard_page_count
-       ldr     w2, [x0,36]
-       ldr     x1, [x1, #:got_lo12:g_totle_discard_page_count]
-       str     w2, [x1]
-       adrp    x1, :got:g_totle_cache_write_count
-       ldr     w2, [x0,40]
-       ldr     x1, [x1, #:got_lo12:g_totle_cache_write_count]
-       str     w2, [x1]
-       adrp    x1, :got:g_max_erase_count
-       ldr     w2, [x0,44]
-       ldr     x1, [x1, #:got_lo12:g_max_erase_count]
-       str     w2, [x1]
-       adrp    x1, :got:g_min_erase_count
-       ldr     x1, [x1, #:got_lo12:g_min_erase_count]
-       ldr     w2, [x0,48]
-       ldr     w0, [x0,60]
-       str     w2, [x1]
-       adrp    x1, :got:g_all_blk_used_slc_mode
-       ldr     x1, [x1, #:got_lo12:g_all_blk_used_slc_mode]
-       str     w0, [x1]
-.L1443:
-       adrp    x0, :got:g_SlcPartLbaEndSector
-       ldr     x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
-       str     wzr, [x0]
-       mov     w0, 34661
-       movk    w0, 0x1234, lsl 16
-       ldr     x19, [x19, #:got_lo12:g_sys_ext_data]
-       ldr     w1, [x19,68]
-       cmp     w1, w0
-       bne     .L1444
-       adrp    x0, :got:g_inkDie_check_enable
+       bne     .L1579
        mov     w1, 1
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       str     w1, [x0]
-       adrp    x0, .LC72
-       adrp    x1, .LC97
-       add     x0, x0, :lo12:.LC72
-       add     x1, x1, :lo12:.LC97
+       str     w1, [x0,160]
+       adrp    x0, .LC73
+       adrp    x1, .LC103
+       add     x0, x0, :lo12:.LC73
+       add     x1, x1, :lo12:.LC103
        bl      printk
-.L1444:
-       adrp    x0, :got:c_mlc_erase_count_value
-       ldr     x2, [x20, #:got_lo12:g_totle_slc_erase_count]
-       adrp    x3, :got:g_totle_avg_erase_count
-       ldr     x0, [x0, #:got_lo12:c_mlc_erase_count_value]
-       ldr     x3, [x3, #:got_lo12:g_totle_avg_erase_count]
-       ldrh    w1, [x0]
-       adrp    x0, :got:g_totle_mlc_erase_count
-       ldr     x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
-       ldr     w4, [x0]
-       ldr     w0, [x2]
-       madd    w0, w1, w4, w0
-       adrp    x1, :got:c_ftl_nand_data_blks_per_plane
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w1, [x1]
+.L1579:
+       adrp    x2, .LANCHOR0
+       add     x19, x19, :lo12:.LANCHOR2
+       add     x2, x2, :lo12:.LANCHOR0
+       ldr     x21, [sp,32]
+       ldr     w3, [x19,204]
+       ldrh    w1, [x2,2016]
+       ldr     w0, [x19,208]
+       madd    w0, w1, w3, w0
+       ldrh    w1, [x2,1960]
        udiv    w0, w0, w1
-       str     w0, [x3]
+       str     w0, [x19,212]
        ldp     x19, x20, [sp,16]
-       ldp     x29, x30, [sp], 32
+       ldp     x29, x30, [sp], 48
        ret
        .size   Ftl_load_ext_data, .-Ftl_load_ext_data
        .align  2
-       .global FtlScanSysBlk
-       .type   FtlScanSysBlk, %function
-FtlScanSysBlk:
-       stp     x29, x30, [sp, -160]!
-       mov     w1, 0
-       add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       adrp    x19, :got:g_totle_map_block
-       stp     x21, x22, [sp,32]
+       .global StorageSysDataLoad
+       .type   StorageSysDataLoad, %function
+StorageSysDataLoad:
+       stp     x29, x30, [sp, -48]!
+       mov     x2, 512
+       add     x29, sp, 0
+       stp     x19, x20, [sp,16]
+       mov     w20, w0
+       mov     x19, x1
+       mov     x0, x1
+       mov     w1, 0
+       bl      memset
+       bl      rknand_device_lock
+       mov     x2, x19
+       mov     w1, 1
+       add     w0, w20, 512
+       bl      FtlVendorPartRead
+       str     x0, [x29,40]
+       bl      rknand_device_unlock
+       ldr     x0, [x29,40]
+       ldp     x19, x20, [sp,16]
+       ldp     x29, x30, [sp], 48
+       ret
+       .size   StorageSysDataLoad, .-StorageSysDataLoad
+       .align  2
+       .global FtlScanSysBlk
+       .type   FtlScanSysBlk, %function
+FtlScanSysBlk:
+       stp     x29, x30, [sp, -128]!
+       mov     w1, 0
+       add     x29, sp, 0
+       stp     x19, x20, [sp,16]
+       adrp    x19, .LANCHOR0
+       stp     x21, x22, [sp,32]
+       add     x20, x19, :lo12:.LANCHOR0
+       adrp    x22, .LANCHOR2
+       add     x21, x22, :lo12:.LANCHOR2
        stp     x23, x24, [sp,48]
-       ldr     x0, [x19, #:got_lo12:g_totle_map_block]
-       adrp    x24, :got:p_map_block_ver_table
-       stp     x27, x28, [sp,80]
        stp     x25, x26, [sp,64]
-       adrp    x28, :got:g_totle_vendor_block
-       strh    wzr, [x0]
-       adrp    x25, :got:c_ftl_nand_max_map_blks
-       adrp    x21, :got:p_map_block_table
-       adrp    x27, :got:c_ftl_nand_max_vendor_blks
-       adrp    x23, :got:p_vendor_block_ver_table
-       ldr     x0, [x28, #:got_lo12:g_totle_vendor_block]
-       strh    wzr, [x0]
-       ldr     x20, [x25, #:got_lo12:c_ftl_nand_max_map_blks]
-       ldr     x0, [x24, #:got_lo12:p_map_block_ver_table]
-       ldr     w2, [x20]
-       ldr     x0, [x0]
+       stp     x27, x28, [sp,80]
+       strh    wzr, [x21,2304]
+       mov     x24, x22
+       ldr     w2, [x20,2056]
+       mov     w22, 65535
+       ldr     x0, [x21,2216]
        lsl     w2, w2, 2
+       strh    wzr, [x20,2072]
        bl      ftl_memset
-       ldr     x0, [x21, #:got_lo12:p_map_block_table]
+       ldr     w2, [x20,2056]
        mov     w1, 0
-       ldr     w2, [x20]
-       adrp    x20, :got:p_vendor_block_table
-       ldr     x0, [x0]
+       ldr     x0, [x21,2168]
        lsl     w2, w2, 1
        bl      ftl_memset
-       ldr     x22, [x27, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       ldr     x0, [x23, #:got_lo12:p_vendor_block_ver_table]
+       ldrh    w2, [x20,2048]
        mov     w1, 0
-       ldrh    w2, [x22]
-       ldr     x0, [x0]
+       ldr     x0, [x21,2192]
        lsl     w2, w2, 2
        bl      ftl_memset
-       ldr     x0, [x20, #:got_lo12:p_vendor_block_table]
+       ldrh    w2, [x20,2048]
        mov     w1, 0
-       ldrh    w2, [x22]
-       adrp    x22, :got:gSysInfo
-       ldr     x0, [x0]
+       ldr     x0, [x20,2080]
        lsl     w2, w2, 1
        bl      ftl_memset
-       ldr     x0, [x22, #:got_lo12:gSysInfo]
+       add     x0, x21, 280
        mov     w1, 255
        mov     w2, 12
        bl      ftl_memset
-       str     x28, [x29,144]
-       adrp    x0, :got:c_ftl_nand_data_blks_per_plane
-       str     x25, [x29,136]
-       str     x27, [x29,128]
-       str     x22, [x29,120]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w0, [x0]
-       str     w0, [x29,156]
-.L1446:
-       adrp    x0, :got:c_ftl_nand_blk_pre_plane
-       ldr     w1, [x29,156]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       ldrh    w0, [x0]
-       cmp     w0, w1
-       bls     .L1522
-       mov     w22, 0
-       adrp    x25, :got:c_ftl_nand_byte_pre_oob
-       mov     w27, w22
-       mov     w26, 4
-.L1489:
-       adrp    x0, :got:c_ftl_nand_planes_num
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       cmp     w0, w27
-       bls     .L1523
-       adrp    x0, :got:p_plane_order_table
-       ldrh    w1, [x29,156]
-       ldr     x0, [x0, #:got_lo12:p_plane_order_table]
-       ldrb    w0, [x0,w27,sxtw]
+       ldrh    w21, [x20,1960]
+.L1582:
+       add     x1, x19, :lo12:.LANCHOR0
+       ldrh    w0, [x1,1962]
+       cmp     w0, w21
+       bls     .L1625
+       mov     x27, 0
+       ldrh    w5, [x1,1952]
+       ldrh    w4, [x1,2038]
+       mov     w20, w27
+       mov     x23, x1
+.L1626:
+       cmp     w5, w27, uxth
+       bls     .L1657
+       add     x0, x23, 1984
+       mov     w1, w21
+       str     x4, [x29,112]
+       str     x5, [x29,120]
+       ldrb    w0, [x0,x27]
        bl      V2P_block
        uxth    w28, w0
        bl      FtlBbmIsBadBlock
-       cbnz    w0, .L1447
-       adrp    x1, :got:req_read
+       ldr     x5, [x29,120]
+       ldr     x4, [x29,112]
+       cbnz    w0, .L1583
+       add     x2, x24, :lo12:.LANCHOR2
        mov     w0, 56
        lsl     w28, w28, 10
-       umull   x0, w22, w0
-       ldr     x2, [x1, #:got_lo12:req_read]
-       ldr     x1, [x2]
+       mov     w3, 4
+       umull   x0, w20, w0
+       ldr     x1, [x2,2048]
        add     x1, x1, x0
        str     w28, [x1,4]
-       ldr     x1, [x2]
-       adrp    x2, :got:p_gc_spare_buf
-       add     x1, x1, x0
-       str     xzr, [x1,8]
-       ldr     x0, [x25, #:got_lo12:c_ftl_nand_byte_pre_oob]
-       ldr     x2, [x2, #:got_lo12:p_gc_spare_buf]
-       ldrh    w0, [x0]
-       ldr     x2, [x2]
-       mul     w0, w22, w0
-       add     w22, w22, 1
-       sdiv    w0, w0, w26
-       uxth    w22, w22
-       add     x0, x2, x0, sxtw 2
-       str     x0, [x1,16]
-.L1447:
-       add     w27, w27, 1
-       uxth    w27, w27
-       b       .L1489
-.L1523:
-       adrp    x0, :got:req_read
-       mov     w1, w22
+       ldr     x1, [x2,2048]
+       ldr     x2, [x2,904]
+       add     x0, x1, x0
+       mul     w1, w20, w4
+       add     w20, w20, 1
+       str     xzr, [x0,8]
+       sdiv    w1, w1, w3
+       uxth    w20, w20
+       add     x1, x2, x1, sxtw 2
+       str     x1, [x0,16]
+.L1583:
+       add     x27, x27, 1
+       b       .L1626
+.L1657:
+       add     x0, x24, :lo12:.LANCHOR2
+       mov     w1, w20
        mov     w2, 1
-       mov     x27, 0
-       mov     w28, 65535
-       ldr     x0, [x0, #:got_lo12:req_read]
-       ldr     x0, [x0]
+       mov     x23, 0
+       mov     w27, 61634
+       mov     w28, 61574
+       ldr     x0, [x0,2048]
        bl      FlashReadPages
-.L1449:
-       cmp     w22, w27, uxth
-       bls     .L1524
+.L1585:
+       cmp     w20, w23, uxth
+       bls     .L1658
+       add     x7, x24, :lo12:.LANCHOR2
        mov     x0, 56
-       mul     x5, x27, x0
-       adrp    x0, :got:req_read
-       ldr     x6, [x0, #:got_lo12:req_read]
-       ldr     x2, [x6]
-       add     x1, x2, x5
-       ldr     w7, [x2,x5]
+       mul     x6, x23, x0
+       ldr     x2, [x7,2048]
+       add     x1, x2, x6
+       ldr     w8, [x2,x6]
        ldr     w0, [x1,4]
-       cmn     w7, #1
+       cmn     w8, #1
        ldr     x26, [x1,16]
        ubfx    x25, x0, 10, 16
-       bne     .L1451
+       bne     .L1587
        add     w0, w0, 1
        str     w0, [x1,4]
        mov     w1, 1
-       str     x7, [x29,96]
-       ldr     x0, [x6]
+       str     x8, [x29,104]
+       ldr     x0, [x7,2048]
        mov     w2, w1
-       str     x6, [x29,104]
-       add     x0, x0, x5
-       str     x5, [x29,112]
+       str     x7, [x29,112]
+       add     x0, x0, x6
+       str     x6, [x29,120]
        bl      FlashReadPages
        ldrh    w0, [x26]
-       ldr     x5, [x29,112]
-       cmp     w0, w28
-       ldr     x6, [x29,104]
-       ldr     x7, [x29,96]
-       bne     .L1451
-       ldr     x0, [x6]
-       str     w7, [x0,x5]
-.L1451:
-       adrp    x0, :got:req_read
-       ldr     x0, [x0, #:got_lo12:req_read]
-       ldr     x0, [x0]
-       ldr     w0, [x0,x5]
-       cmn     w0, #1
-       beq     .L1453
-       adrp    x0, :got:g_GlobalSysVersion
-       ldr     x0, [x0, #:got_lo12:g_GlobalSysVersion]
-       ldr     w0, [x0]
+       ldr     x6, [x29,120]
+       cmp     w0, w22
+       ldr     x7, [x29,112]
+       ldr     x8, [x29,104]
+       bne     .L1587
+       ldr     x0, [x7,2048]
+       str     w8, [x0,x6]
+.L1587:
+       add     x0, x24, :lo12:.LANCHOR2
+       ldr     x1, [x0,2048]
+       ldr     w1, [x1,x6]
+       cmn     w1, #1
+       beq     .L1589
+       ldr     w0, [x0,196]
        cmn     w0, #1
-       beq     .L1454
+       beq     .L1590
        ldr     w1, [x26,4]
        cmp     w0, w1
-       bhi     .L1455
-.L1454:
+       bhi     .L1591
+.L1590:
        ldr     w0, [x26,4]
        cmn     w0, #1
-       beq     .L1455
-       adrp    x1, :got:g_GlobalSysVersion
+       beq     .L1591
+       add     x1, x24, :lo12:.LANCHOR2
        add     w0, w0, 1
-       ldr     x1, [x1, #:got_lo12:g_GlobalSysVersion]
-       str     w0, [x1]
-.L1455:
+       str     w0, [x1,196]
+.L1591:
        ldrh    w0, [x26]
        mov     w1, 61604
        cmp     w0, w1
-       beq     .L1457
-       bhi     .L1458
-       mov     w1, 61574
-       cmp     w0, w1
-       bne     .L1456
-       ldr     x0, [x29,128]
-       ldr     x6, [x23, #:got_lo12:p_vendor_block_ver_table]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       ldr     x6, [x6]
-       ldrh    w5, [x0]
-       ldr     x0, [x29,144]
-       sub     w1, w5, #1
-       ldr     x0, [x0, #:got_lo12:g_totle_vendor_block]
+       beq     .L1593
+       bhi     .L1594
+       cmp     w0, w28
+       bne     .L1592
+       add     x0, x19, :lo12:.LANCHOR0
+       add     x7, x24, :lo12:.LANCHOR2
+       ldrh    w6, [x0,2048]
+       ldrh    w0, [x0,2072]
+       sub     w1, w6, #1
+       ldr     x7, [x7,2192]
        sxth    w2, w1
-       ldrh    w0, [x0]
        sub     w1, w1, w0
-       b       .L1474
-.L1458:
-       mov     w1, 61634
-       cmp     w0, w1
-       beq     .L1460
-       cmp     w0, w28
-       bne     .L1456
+       b       .L1610
+.L1594:
+       cmp     w0, w27
+       beq     .L1596
+       cmp     w0, w22
+       bne     .L1592
        mov     w0, w25
        mov     w1, 0
-       b       .L1519
-.L1460:
-       ldr     x0, [x29,136]
-       ldr     x6, [x24, #:got_lo12:p_map_block_ver_table]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_max_map_blks]
-       ldr     x6, [x6]
-       ldr     w5, [x0]
-       ldr     x0, [x19, #:got_lo12:g_totle_map_block]
-       uxth    w1, w5
-       ldrh    w0, [x0]
+       b       .L1655
+.L1596:
+       add     x0, x19, :lo12:.LANCHOR0
+       add     x7, x24, :lo12:.LANCHOR2
+       ldr     w6, [x0,2056]
+       ldrh    w0, [x7,2304]
+       ldr     x7, [x7,2216]
+       uxth    w1, w6
        sub     w2, w1, #1
        sub     w1, w1, w0
-       sxth    w2, w2
        sub     w1, w1, #1
+       sxth    w2, w2
        sxth    w1, w1
-.L1462:
+.L1598:
        cmp     w2, w1
-       ble     .L1525
-       sbfiz   x7, x2, 2, 32
-       ldr     w10, [x26,4]
-       sxth    x8, w2
-       ldr     w9, [x6,x7]
-       cmp     w10, w9
-       bls     .L1463
-       ldr     w1, [x6]
-       cbnz    w1, .L1464
-       cmp     w0, w5
-       bne     .L1465
-.L1464:
-       ldr     x0, [x21, #:got_lo12:p_map_block_table]
+       ble     .L1659
+       sbfiz   x8, x2, 2, 32
+       ldr     w11, [x26,4]
+       sxth    x9, w2
+       ldr     w10, [x7,x8]
+       cmp     w11, w10
+       bls     .L1599
+       ldr     w1, [x7]
+       cbnz    w1, .L1600
+       cmp     w0, w6
+       bne     .L1601
+.L1600:
+       add     x0, x24, :lo12:.LANCHOR2
        mov     w1, 1
-       str     x8, [x29,96]
-       str     x2, [x29,104]
-       ldr     x0, [x0]
-       str     x7, [x29,112]
+       str     x9, [x29,104]
+       str     x2, [x29,112]
+       ldr     x0, [x0,2168]
+       str     x8, [x29,120]
        ldrh    w0, [x0]
        bl      FtlFreeSysBlkQueueIn
-       ldr     x7, [x29,112]
-       ldr     x2, [x29,104]
-       ldr     x8, [x29,96]
-       b       .L1466
-.L1465:
-       ldr     x1, [x19, #:got_lo12:g_totle_map_block]
+       ldr     x8, [x29,120]
+       ldr     x2, [x29,112]
+       ldr     x9, [x29,104]
+       b       .L1602
+.L1601:
+       add     x1, x24, :lo12:.LANCHOR2
        add     w0, w0, 1
-       strh    w0, [x1]
-.L1466:
+       strh    w0, [x1,2304]
+.L1602:
        mov     w0, 0
-.L1467:
+.L1603:
        cmp     w0, w2
-       beq     .L1526
-       ldr     x1, [x24, #:got_lo12:p_map_block_ver_table]
-       ldr     x6, [x1]
+       beq     .L1660
+       add     x6, x24, :lo12:.LANCHOR2
        sxtw    x1, w0
-       lsl     x5, x1, 2
+       lsl     x7, x1, 2
        lsl     x1, x1, 1
-       add     x9, x6, x5
        add     w0, w0, 1
+       ldr     x10, [x6,2216]
        sxth    w0, w0
-       ldr     w9, [x9,4]
-       str     w9, [x6,x5]
-       ldr     x5, [x21, #:got_lo12:p_map_block_table]
-       ldr     x5, [x5]
-       add     x6, x5, x1
-       ldrh    w6, [x6,2]
-       strh    w6, [x5,x1]
-       b       .L1467
-.L1526:
-       ldr     x0, [x24, #:got_lo12:p_map_block_ver_table]
-       ldr     w1, [x26,4]
-       ldr     x0, [x0]
-       str     w1, [x0,x7]
-       ldr     x0, [x21, #:got_lo12:p_map_block_table]
-       ldr     x0, [x0]
-       strh    w25, [x0,x8,lsl 1]
-       tbz     w2, #31, .L1518
-       b       .L1453
-.L1463:
+       add     x11, x10, x7
+       ldr     w11, [x11,4]
+       str     w11, [x10,x7]
+       ldr     x6, [x6,2168]
+       add     x7, x6, x1
+       ldrh    w7, [x7,2]
+       strh    w7, [x6,x1]
+       b       .L1603
+.L1660:
+       add     x0, x24, :lo12:.LANCHOR2
+       ldr     w6, [x26,4]
+       ldr     x1, [x0,2216]
+       str     w6, [x1,x8]
+       ldr     x1, [x0,2168]
+       strh    w25, [x1,x9,lsl 1]
+       tbz     w2, #31, .L1654
+       b       .L1589
+.L1599:
        sub     w2, w2, #1
        sxth    w2, w2
-       b       .L1462
-.L1525:
-       tbz     w2, #31, .L1473
-       b       .L1453
-.L1518:
-       ldr     x1, [x29,136]
-       ldr     x0, [x19, #:got_lo12:g_totle_map_block]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_max_map_blks]
-       ldrh    w0, [x0]
-       ldr     w1, [x1]
+       b       .L1598
+.L1659:
+       tbz     w2, #31, .L1609
+       b       .L1589
+.L1654:
+       add     x1, x19, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2304]
+       ldr     w1, [x1,2056]
        sub     w1, w1, w0
        sub     w1, w1, #1
        cmp     w2, w1, sxth
-       bgt     .L1456
-.L1473:
-       ldr     x1, [x19, #:got_lo12:g_totle_map_block]
+       bgt     .L1592
+.L1609:
+       add     x1, x24, :lo12:.LANCHOR2
        add     w0, w0, 1
        sxtw    x2, w2
-       strh    w0, [x1]
-       ldr     w1, [x26,4]
-       ldr     x0, [x24, #:got_lo12:p_map_block_ver_table]
-       ldr     x0, [x0]
-       str     w1, [x0,x2,lsl 2]
-       ldr     x0, [x21, #:got_lo12:p_map_block_table]
-       b       .L1520
-.L1482:
-       sbfiz   x7, x2, 2, 32
-       ldr     w10, [x26,4]
-       sxth    x8, w2
-       ldr     w9, [x6,x7]
-       cmp     w10, w9
-       bhi     .L1527
+       ldr     w4, [x26,4]
+       strh    w0, [x1,2304]
+       ldr     x0, [x1,2216]
+       str     w4, [x0,x2,lsl 2]
+       ldr     x0, [x1,2168]
+       b       .L1656
+.L1618:
+       sbfiz   x8, x2, 2, 32
+       ldr     w11, [x26,4]
+       sxth    x9, w2
+       ldr     w10, [x7,x8]
+       cmp     w11, w10
+       bhi     .L1661
        sub     w2, w2, #1
        sxth    w2, w2
-.L1474:
+.L1610:
        cmp     w2, w1
-       bgt     .L1482
-       b       .L1481
-.L1527:
-       ldr     w1, [x6]
-       cbnz    w1, .L1476
-       cmp     w0, w5
-       bne     .L1477
-.L1476:
-       ldr     x0, [x20, #:got_lo12:p_vendor_block_table]
+       bgt     .L1618
+       b       .L1617
+.L1661:
+       ldr     w1, [x7]
+       cbnz    w1, .L1612
+       cmp     w0, w6
+       bne     .L1613
+.L1612:
+       add     x0, x19, :lo12:.LANCHOR0
        mov     w1, 1
-       str     x8, [x29,96]
-       str     x7, [x29,104]
-       ldr     x0, [x0]
-       str     x2, [x29,112]
+       str     x9, [x29,104]
+       str     x8, [x29,112]
+       ldr     x0, [x0,2080]
+       str     x2, [x29,120]
        ldrh    w0, [x0]
        bl      FtlFreeSysBlkQueueIn
-       ldr     x2, [x29,112]
-       ldr     x7, [x29,104]
-       ldr     x8, [x29,96]
-       b       .L1478
-.L1477:
-       ldr     x1, [x29,144]
+       ldr     x2, [x29,120]
+       ldr     x8, [x29,112]
+       ldr     x9, [x29,104]
+       b       .L1614
+.L1613:
+       add     x1, x19, :lo12:.LANCHOR0
        add     w0, w0, 1
-       ldr     x1, [x1, #:got_lo12:g_totle_vendor_block]
-       strh    w0, [x1]
-.L1478:
+       strh    w0, [x1,2072]
+.L1614:
        mov     w0, 0
-.L1479:
+.L1615:
        cmp     w0, w2
-       beq     .L1528
-       ldr     x1, [x23, #:got_lo12:p_vendor_block_ver_table]
-       ldr     x6, [x1]
+       beq     .L1662
+       add     x1, x24, :lo12:.LANCHOR2
+       ldr     x7, [x1,2192]
        sxtw    x1, w0
-       lsl     x5, x1, 2
+       lsl     x6, x1, 2
        lsl     x1, x1, 1
-       add     x9, x6, x5
+       add     x10, x7, x6
        add     w0, w0, 1
        sxth    w0, w0
-       ldr     w9, [x9,4]
-       str     w9, [x6,x5]
-       ldr     x5, [x20, #:got_lo12:p_vendor_block_table]
-       ldr     x5, [x5]
-       add     x6, x5, x1
-       ldrh    w6, [x6,2]
-       strh    w6, [x5,x1]
-       b       .L1479
-.L1528:
-       ldr     x0, [x23, #:got_lo12:p_vendor_block_ver_table]
+       ldr     w10, [x10,4]
+       str     w10, [x7,x6]
+       add     x6, x19, :lo12:.LANCHOR0
+       ldr     x6, [x6,2080]
+       add     x7, x6, x1
+       ldrh    w7, [x7,2]
+       strh    w7, [x6,x1]
+       b       .L1615
+.L1662:
+       add     x0, x24, :lo12:.LANCHOR2
        ldr     w1, [x26,4]
-       ldr     x0, [x0]
-       str     w1, [x0,x7]
-       ldr     x0, [x20, #:got_lo12:p_vendor_block_table]
-       ldr     x0, [x0]
-       strh    w25, [x0,x8,lsl 1]
-.L1481:
-       tbnz    w2, #31, .L1453
-       ldr     x0, [x29,144]
-       ldr     x5, [x0, #:got_lo12:g_totle_vendor_block]
-       ldr     x0, [x29,128]
-       ldrh    w1, [x5]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       ldrh    w0, [x0]
+       ldr     x0, [x0,2192]
+       str     w1, [x0,x8]
+       add     x0, x19, :lo12:.LANCHOR0
+       ldr     x0, [x0,2080]
+       strh    w25, [x0,x9,lsl 1]
+.L1617:
+       tbnz    w2, #31, .L1589
+       add     x1, x19, :lo12:.LANCHOR0
+       ldrh    w0, [x1,2048]
+       ldrh    w6, [x1,2072]
        sub     w0, w0, #1
-       sub     w0, w0, w1
+       sub     w0, w0, w6
        cmp     w2, w0, sxth
-       bgt     .L1456
-       add     w1, w1, 1
-       strh    w1, [x5]
+       bgt     .L1592
+       add     x0, x24, :lo12:.LANCHOR2
        sxtw    x2, w2
-       ldr     w1, [x26,4]
-       ldr     x0, [x23, #:got_lo12:p_vendor_block_ver_table]
-       ldr     x0, [x0]
-       str     w1, [x0,x2,lsl 2]
-       ldr     x0, [x20, #:got_lo12:p_vendor_block_table]
-.L1520:
-       ldr     x0, [x0]
+       add     w6, w6, 1
+       ldr     w4, [x26,4]
+       strh    w6, [x1,2072]
+       ldr     x0, [x0,2192]
+       str     w4, [x0,x2,lsl 2]
+       ldr     x0, [x1,2080]
+.L1656:
        strh    w25, [x0,x2,lsl 1]
-       b       .L1456
-.L1457:
-       ldr     x0, [x29,120]
-       ldr     x0, [x0, #:got_lo12:gSysInfo]
-       ldrh    w1, [x0]
-       cmp     w1, w28
-       beq     .L1521
-       ldrh    w0, [x0,4]
-       cmp     w0, w28
-       beq     .L1486
+       b       .L1592
+.L1593:
+       add     x0, x24, :lo12:.LANCHOR2
+       add     x1, x0, 280
+       ldrh    w2, [x0,280]
+       cmp     w2, w22
+       bne     .L1621
+       strh    w25, [x0,280]
+       ldr     w0, [x26,4]
+       str     w0, [x1,8]
+       b       .L1592
+.L1621:
+       ldrh    w0, [x1,4]
+       cmp     w0, w22
+       beq     .L1622
        mov     w1, 1
        bl      FtlFreeSysBlkQueueIn
-.L1486:
-       ldr     x0, [x29,120]
-       ldr     w1, [x26,4]
-       ldr     x0, [x0, #:got_lo12:gSysInfo]
-       ldr     w2, [x0,8]
-       cmp     w2, w1
-       bcs     .L1487
-       ldrh    w1, [x0]
-       strh    w1, [x0,4]
-.L1521:
+.L1622:
+       add     x1, x24, :lo12:.LANCHOR2
+       ldr     w2, [x26,4]
+       add     x0, x1, 280
+       ldr     w6, [x0,8]
+       cmp     w6, w2
+       bcs     .L1623
+       ldrh    w2, [x1,280]
+       strh    w2, [x0,4]
+       strh    w25, [x1,280]
        ldr     w1, [x26,4]
-       strh    w25, [x0]
        str     w1, [x0,8]
-       b       .L1456
-.L1487:
+       b       .L1592
+.L1623:
        strh    w25, [x0,4]
-       b       .L1456
-.L1453:
+       b       .L1592
+.L1589:
        mov     w0, w25
        mov     w1, 1
-.L1519:
+.L1655:
        bl      FtlFreeSysBlkQueueIn
-.L1456:
-       add     x27, x27, 1
-       b       .L1449
-.L1524:
-       ldr     w0, [x29,156]
-       add     w26, w0, 1
-       uxth    w0, w26
-       str     w0, [x29,156]
-       b       .L1446
-.L1522:
-       ldr     x0, [x21, #:got_lo12:p_map_block_table]
-       ldr     x1, [x0]
-       ldrh    w0, [x1]
-       cbz     w0, .L1490
-.L1493:
-       ldr     x0, [x20, #:got_lo12:p_vendor_block_table]
-       ldr     x2, [x0]
+.L1592:
+       add     x23, x23, 1
+       b       .L1585
+.L1658:
+       add     w21, w21, 1
+       uxth    w21, w21
+       b       .L1582
+.L1625:
+       add     x4, x24, :lo12:.LANCHOR2
+       ldr     x2, [x4,2168]
        ldrh    w0, [x2]
-       cbz     w0, .L1491
-       b       .L1513
-.L1490:
-       ldr     x19, [x19, #:got_lo12:g_totle_map_block]
-       ldrh    w2, [x19]
-       cbz     w2, .L1493
-       ldr     x2, [x29,136]
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_max_map_blks]
-       ldr     w2, [x2]
-.L1494:
-       cmp     w0, w2
-       bcs     .L1493
-       ldrh    w3, [x1,w0,sxtw 1]
-       cbz     w3, .L1495
-       mov     w6, w0
-.L1496:
-       ldr     x1, [x29,136]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_max_map_blks]
-       ldr     w1, [x1]
+       cbz     w0, .L1627
+.L1630:
+       add     x1, x19, :lo12:.LANCHOR0
+       ldr     x2, [x1,2080]
+       ldrh    w0, [x2]
+       cbz     w0, .L1628
+       b       .L1649
+.L1627:
+       ldrh    w4, [x4,2304]
+       cbz     w4, .L1630
+       ldr     w1, [x1,2056]
+.L1631:
+       cmp     w0, w1
+       bcs     .L1630
+       ldrh    w4, [x2,w0,sxtw 1]
+       cbz     w4, .L1632
+       mov     w7, w0
+.L1633:
+       add     x1, x19, :lo12:.LANCHOR0
+       ldr     w1, [x1,2056]
        cmp     w0, w1
-       bcs     .L1493
-       ldr     x3, [x21, #:got_lo12:p_map_block_table]
-       sxtw    x5, w0
-       sub     w1, w0, w6
-       lsl     x2, x5, 1
+       bcs     .L1630
+       add     x2, x24, :lo12:.LANCHOR2
+       sxtw    x6, w0
+       sub     w1, w0, w7
+       lsl     x4, x6, 1
        add     w0, w0, 1
-       ldr     x4, [x3]
+       ldr     x5, [x2,2168]
        sxtw    x1, w1
        sxth    w0, w0
-       ldrh    w7, [x4,x2]
-       strh    w7, [x4,x1,lsl 1]
-       ldr     x4, [x24, #:got_lo12:p_map_block_ver_table]
-       ldr     x4, [x4]
-       ldr     w5, [x4,x5,lsl 2]
-       str     w5, [x4,x1,lsl 2]
-       ldr     x1, [x3]
-       strh    wzr, [x1,x2]
-       b       .L1496
-.L1495:
+       ldrh    w8, [x5,x4]
+       strh    w8, [x5,x1,lsl 1]
+       ldr     x5, [x2,2216]
+       ldr     w6, [x5,x6,lsl 2]
+       str     w6, [x5,x1,lsl 2]
+       ldr     x1, [x2,2168]
+       strh    wzr, [x1,x4]
+       b       .L1633
+.L1632:
        add     w0, w0, 1
        sxth    w0, w0
-       b       .L1494
-.L1491:
-       ldr     x1, [x29,144]
-       ldr     x1, [x1, #:got_lo12:g_totle_vendor_block]
-       ldrh    w1, [x1]
-       cbz     w1, .L1513
-       ldr     x1, [x29,128]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       ldrh    w1, [x1]
-.L1499:
+       b       .L1631
+.L1628:
+       ldrh    w4, [x1,2072]
+       cbz     w4, .L1649
+       ldrh    w1, [x1,2048]
+.L1636:
        cmp     w0, w1
-       mov     w6, w0
-       bge     .L1513
-       ldrh    w3, [x2,w0,sxtw 1]
-       cbz     w3, .L1500
-.L1501:
-       ldr     x1, [x29,128]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       ldrh    w1, [x1]
+       mov     w7, w0
+       bge     .L1649
+       ldrh    w4, [x2,w0,sxtw 1]
+       cbz     w4, .L1637
+.L1638:
+       add     x2, x19, :lo12:.LANCHOR0
+       ldrh    w1, [x2,2048]
        cmp     w0, w1
-       bge     .L1513
-       ldr     x3, [x20, #:got_lo12:p_vendor_block_table]
-       sxtw    x5, w0
-       sub     w1, w0, w6
-       lsl     x2, x5, 1
-       add     w0, w0, 1
-       ldr     x4, [x3]
+       bge     .L1649
+       sxtw    x6, w0
+       sub     w1, w0, w7
+       ldr     x5, [x2,2080]
+       lsl     x4, x6, 1
        sxtw    x1, w1
+       add     w0, w0, 1
+       ldrh    w8, [x5,x4]
        sxth    w0, w0
-       ldrh    w7, [x4,x2]
-       strh    w7, [x4,x1,lsl 1]
-       ldr     x4, [x23, #:got_lo12:p_vendor_block_ver_table]
-       ldr     x4, [x4]
-       ldr     w5, [x4,x5,lsl 2]
-       str     w5, [x4,x1,lsl 2]
-       ldr     x1, [x3]
-       strh    wzr, [x1,x2]
-       b       .L1501
-.L1500:
+       strh    w8, [x5,x1,lsl 1]
+       add     x5, x24, :lo12:.LANCHOR2
+       ldr     x5, [x5,2192]
+       ldr     w6, [x5,x6,lsl 2]
+       str     w6, [x5,x1,lsl 2]
+       ldr     x1, [x2,2080]
+       strh    wzr, [x1,x4]
+       b       .L1638
+.L1637:
        add     w0, w0, 1
        sxth    w0, w0
-       b       .L1499
-.L1513:
+       b       .L1636
+.L1649:
        mov     w0, 0
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 160
+       ldp     x29, x30, [sp], 128
        ret
        .size   FtlScanSysBlk, .-FtlScanSysBlk
        .align  2
@@ -11473,241 +11296,196 @@ FtlScanSysBlk:
        .type   FtlLoadSysInfo, %function
 FtlLoadSysInfo:
        stp     x29, x30, [sp, -80]!
-       adrp    x0, :got:p_sys_spare_buf
+       mov     w1, 0
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       adrp    x20, :got:req_sys
-       str     x25, [sp,64]
        stp     x21, x22, [sp,32]
+       adrp    x22, .LANCHOR4
+       adrp    x21, .LANCHOR2
+       stp     x19, x20, [sp,16]
+       add     x20, x21, :lo12:.LANCHOR2
+       add     x19, x22, :lo12:.LANCHOR4
        stp     x23, x24, [sp,48]
-       ldr     x1, [x20, #:got_lo12:req_sys]
-       adrp    x22, :got:c_ftl_nand_data_blks_per_plane
-       adrp    x21, :got:p_valid_page_count_table
-       adrp    x23, :got:gSysInfo
-       str     xzr, [x1,8]
-       ldr     x0, [x0, #:got_lo12:p_sys_spare_buf]
-       ldr     x0, [x0]
-       str     x0, [x1,16]
-       ldr     x1, [x22, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldr     x0, [x21, #:got_lo12:p_valid_page_count_table]
-       ldrh    w2, [x1]
-       mov     w1, 0
-       ldr     x0, [x0]
+       str     x25, [sp,64]
+       add     x19, x19, 136
+       adrp    x23, .LANCHOR0
+       str     xzr, [x19,8]
+       ldr     x0, [x20,2112]
+       add     x25, x20, 280
+       str     x0, [x19,16]
+       add     x0, x23, :lo12:.LANCHOR0
+       ldrh    w2, [x0,1960]
+       ldr     x0, [x20,-40]
        lsl     w2, w2, 1
        bl      ftl_memset
-       ldr     x24, [x23, #:got_lo12:gSysInfo]
+       ldrh    w0, [x20,280]
        mov     w1, 65535
-       ldrh    w0, [x24]
        cmp     w0, w1
-       bne     .L1530
-.L1534:
+       bne     .L1664
+.L1668:
        mov     w19, -1
-       b       .L1531
-.L1530:
+       b       .L1665
+.L1664:
        mov     w1, 1
-       adrp    x25, :got:p_sys_data_buf
        bl      FtlGetLastWrittenPage
-       sxth    w19, w0
+       sxth    w24, w0
        add     w0, w0, 1
-       strh    w0, [x24,2]
-.L1532:
-       tbnz    w19, #31, .L1537
-       ldr     x0, [x23, #:got_lo12:gSysInfo]
+       strh    w0, [x25,2]
+.L1666:
+       tbnz    w24, #31, .L1671
+       ldrh    w0, [x20,280]
        mov     w1, 1
-       ldr     x24, [x20, #:got_lo12:req_sys]
        mov     w2, w1
-       ldrh    w0, [x0]
-       orr     w0, w19, w0, lsl 10
-       str     w0, [x24,4]
-       ldr     x0, [x25, #:got_lo12:p_sys_data_buf]
-       ldr     x0, [x0]
-       str     x0, [x24,8]
-       mov     x0, x24
+       orr     w0, w24, w0, lsl 10
+       str     w0, [x19,4]
+       ldr     x0, [x20,-64]
+       str     x0, [x19,8]
+       mov     x0, x19
        bl      FlashReadPages
-       ldr     w0, [x24]
+       ldr     w0, [x19]
        cmn     w0, #1
-       beq     .L1533
-.L1537:
-       adrp    x24, :got:g_sys_save_data
-       ldr     x20, [x20, #:got_lo12:req_sys]
+       beq     .L1667
+.L1671:
+       add     x24, x22, :lo12:.LANCHOR4
+       add     x19, x21, :lo12:.LANCHOR2
+       add     x20, x19, 224
        mov     w2, 48
-       ldr     x19, [x24, #:got_lo12:g_sys_save_data]
-       ldr     x1, [x20,8]
-       mov     x0, x19
+       add     x22, x23, :lo12:.LANCHOR0
+       mov     x0, x20
+       ldr     x1, [x24,144]
        bl      ftl_memcpy
-       ldr     x22, [x22, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldr     x21, [x21, #:got_lo12:p_valid_page_count_table]
-       ldr     x1, [x20,8]
-       ldrh    w2, [x22]
-       ldr     x0, [x21]
+       ldr     x1, [x24,144]
+       ldrh    w2, [x22,1960]
+       ldr     x0, [x19,-40]
        add     x1, x1, 48
        lsl     w2, w2, 1
        bl      ftl_memcpy
-       ldr     w1, [x19]
+       ldrh    w2, [x22,1960]
+       ldr     x3, [x24,144]
+       ldr     x0, [x23,#:lo12:.LANCHOR0]
+       uxth    x1, w2
+       lsr     w2, w2, 3
+       add     x1, x1, 24
+       add     w2, w2, 4
+       lsr     x1, x1, 1
+       add     x1, x3, x1, lsl 2
+       bl      ftl_memcpy
+       ldr     w1, [x19,224]
        mov     w0, 19539
        movk    w0, 0x4654, lsl 16
-       mov     x2, x24
        cmp     w1, w0
-       beq     .L1544
-       b       .L1534
-.L1533:
-       sub     w19, w19, #1
-       sxth    w19, w19
-       b       .L1532
-.L1544:
-       ldr     x23, [x23, #:got_lo12:gSysInfo]
-       adrp    x0, :got:c_ftl_nand_die_num
-       ldrh    w3, [x19,8]
-       ldrb    w1, [x19,10]
-       strh    w3, [x23,6]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_die_num]
-       ldrh    w0, [x0]
+       beq     .L1678
+       b       .L1668
+.L1667:
+       sub     w24, w24, #1
+       sxth    w24, w24
+       b       .L1666
+.L1678:
+       ldrb    w1, [x20,10]
+       ldrh    w0, [x22,1974]
+       ldrh    w2, [x20,8]
+       strh    w2, [x19,286]
        cmp     w1, w0
-       bne     .L1534
-       adrp    x0, :got:g_MaxLbn
-       adrp    x4, :got:c_ftl_nand_sec_pre_page
-       ldrh    w6, [x19,14]
-       adrp    x20, :got:g_gc_superblock
-       ldr     x0, [x0, #:got_lo12:g_MaxLbn]
-       str     w3, [x0]
-       adrp    x0, :got:c_ftl_nand_page_pre_blk
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w1, [x0]
-       adrp    x0, :got:g_MaxLpn
-       ldr     x0, [x0, #:got_lo12:g_MaxLpn]
-       mul     w1, w1, w3
-       str     w1, [x0]
-       adrp    x0, :got:g_MaxLbaSector
-       ldr     x4, [x4, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldr     x0, [x0, #:got_lo12:g_MaxLbaSector]
-       ldrh    w4, [x4]
-       mul     w1, w1, w4
-       str     w1, [x0]
-       adrp    x1, :got:c_ftl_nand_max_data_blks
-       adrp    x0, :got:gBbtInfo
-       adrp    x4, :got:c_ftl_nand_data_op_blks_per_plane
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_max_data_blks]
-       ldr     x0, [x0, #:got_lo12:gBbtInfo]
-       ldr     x4, [x4, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       ldr     w1, [x1]
-       ldrh    w0, [x0,6]
+       bne     .L1668
+       ldrh    w1, [x22,2026]
+       ldrh    w0, [x22,2032]
+       str     w2, [x24,192]
+       mul     w1, w1, w2
+       str     w1, [x22,2104]
+       strh    wzr, [x19,298]
+       mul     w1, w1, w0
+       str     w1, [x22,2068]
+       ldrh    w0, [x22,2118]
+       ldr     w1, [x22,1964]
+       strb    wzr, [x19,302]
        sub     w0, w1, w0
-       adrp    x1, :got:c_ftl_nand_planes_num
-       sub     w0, w0, w3
-       adrp    x3, :got:g_active_superblock
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w1, [x1]
+       ldrh    w1, [x22,1952]
+       sub     w0, w0, w2
+       ldrh    w2, [x20,14]
+       strb    wzr, [x19,304]
        udiv    w0, w0, w1
-       ldrh    w1, [x19,16]
-       strh    w0, [x4]
-       lsr     w4, w1, 6
+       strh    w0, [x19,272]
+       adrp    x0, .LANCHOR2
+       strh    w2, [x0,#:lo12:.LANCHOR2]
+       ldrh    w0, [x20,16]
+       lsr     w1, w0, 6
+       strh    w1, [x19,2]
+       mov     w1, -1
+       strh    w1, [x19,296]
+       ldrh    w1, [x20,18]
+       and     w0, w0, 63
+       strh    w1, [x19,48]
+       ldrh    w1, [x20,20]
+       strb    w0, [x19,6]
+       lsr     w3, w1, 6
        and     w1, w1, 63
-       ldr     x0, [x3, #:got_lo12:g_active_superblock]
-       strb    w1, [x0,6]
-       ldrb    w1, [x19,11]
-       strh    w6, [x0]
-       strh    w4, [x0,2]
-       strb    w1, [x0,8]
-       mov     w0, -1
-       ldr     x1, [x20, #:got_lo12:g_gc_superblock]
-       strh    w0, [x1]
-       strh    wzr, [x1,2]
-       strb    wzr, [x1,6]
-       strb    wzr, [x1,8]
-       adrp    x1, :got:g_buffer_superblock
-       ldrh    w0, [x19,18]
-       ldr     x4, [x1, #:got_lo12:g_buffer_superblock]
-       strh    w0, [x4]
-       ldrh    w5, [x19,20]
-       lsr     w0, w5, 6
-       strh    w0, [x4,2]
-       ldrb    w0, [x19,12]
-       and     w5, w5, 63
-       strb    w0, [x4,8]
-       adrp    x0, :got:g_gc_temp_superblock
-       strb    w5, [x4,6]
-       mov     x21, x0
-       ldrh    w5, [x19,22]
-       ldr     x4, [x0, #:got_lo12:g_gc_temp_superblock]
-       strh    w5, [x4]
-       ldrh    w5, [x19,24]
-       lsr     w7, w5, 6
-       and     w5, w5, 63
-       strb    w5, [x4,6]
-       ldrb    w5, [x19,13]
-       strh    w7, [x4,2]
-       strb    w5, [x4,8]
-       adrp    x4, :got:g_totle_gc_page_count
-       ldr     w5, [x19,32]
-       ldr     x4, [x4, #:got_lo12:g_totle_gc_page_count]
-       str     wzr, [x4]
-       adrp    x4, :got:g_totle_write_page_count
-       ldr     x4, [x4, #:got_lo12:g_totle_write_page_count]
-       str     wzr, [x4]
-       adrp    x4, :got:g_totle_read_page_count
-       ldr     x4, [x4, #:got_lo12:g_totle_read_page_count]
-       str     wzr, [x4]
-       adrp    x4, :got:g_totle_l2p_write_count
-       ldr     x4, [x4, #:got_lo12:g_totle_l2p_write_count]
-       str     wzr, [x4]
-       adrp    x4, :got:g_totle_mlc_erase_count
-       ldr     x4, [x4, #:got_lo12:g_totle_mlc_erase_count]
-       str     w5, [x4]
-       adrp    x4, :got:g_totle_slc_erase_count
-       ldr     w5, [x19,40]
-       mov     x19, x1
-       ldr     x4, [x4, #:got_lo12:g_totle_slc_erase_count]
-       str     wzr, [x4]
-       adrp    x4, :got:g_max_erase_count
-       ldr     x4, [x4, #:got_lo12:g_max_erase_count]
-       str     wzr, [x4]
-       adrp    x4, :got:g_totle_cache_write_count
-       ldr     x4, [x4, #:got_lo12:g_totle_cache_write_count]
-       str     wzr, [x4]
-       adrp    x4, :got:g_GlobalSysVersion
-       ldr     x4, [x4, #:got_lo12:g_GlobalSysVersion]
-       ldr     w7, [x4]
-       cmp     w5, w7
-       bls     .L1538
-       str     w5, [x4]
-.L1538:
-       adrp    x0, :got:g_GlobalDataVersion
-       ldr     x2, [x2, #:got_lo12:g_sys_save_data]
-       ldr     x0, [x0, #:got_lo12:g_GlobalDataVersion]
-       ldr     w1, [x2,36]
-       ldr     w2, [x0]
-       cmp     w1, w2
-       bls     .L1539
-       str     w1, [x0]
-.L1539:
+       strb    w1, [x19,54]
+       ldrb    w1, [x20,12]
+       strb    w1, [x19,56]
+       ldrh    w1, [x20,22]
+       strh    w1, [x19,96]
+       ldrh    w1, [x20,24]
+       ldrb    w0, [x20,11]
+       strh    w3, [x19,50]
+       lsr     w3, w1, 6
+       and     w1, w1, 63
+       strb    w0, [x19,8]
+       strb    w1, [x19,102]
+       strh    w3, [x19,98]
+       ldrb    w1, [x20,13]
+       strb    w1, [x19,104]
+       ldr     w0, [x20,32]
+       str     w0, [x19,204]
+       ldr     w1, [x19,196]
+       ldr     w0, [x20,40]
+       str     wzr, [x19,184]
+       str     wzr, [x19,172]
+       cmp     w0, w1
+       str     wzr, [x19,164]
+       str     wzr, [x19,180]
+       str     wzr, [x19,208]
+       str     wzr, [x19,216]
+       str     wzr, [x19,176]
+       bls     .L1672
+       str     w0, [x19,196]
+.L1672:
+       add     x0, x21, :lo12:.LANCHOR2
+       ldr     w1, [x0,260]
+       ldr     w3, [x0,200]
+       cmp     w1, w3
+       bls     .L1673
+       str     w1, [x0,200]
+.L1673:
        mov     w0, 65535
-       cmp     w6, w0
-       beq     .L1540
-       ldr     x0, [x3, #:got_lo12:g_active_superblock]
+       cmp     w2, w0
+       beq     .L1674
+       add     x0, x21, :lo12:.LANCHOR2
        bl      make_superblock
-.L1540:
-       ldr     x0, [x19, #:got_lo12:g_buffer_superblock]
+.L1674:
+       add     x1, x21, :lo12:.LANCHOR2
+       add     x0, x1, 48
+       ldrh    w2, [x1,48]
        mov     w1, 65535
-       ldrh    w2, [x0]
        cmp     w2, w1
-       beq     .L1541
+       beq     .L1675
        bl      make_superblock
-.L1541:
-       ldr     x0, [x21, #:got_lo12:g_gc_temp_superblock]
+.L1675:
+       add     x1, x21, :lo12:.LANCHOR2
+       add     x0, x1, 96
+       ldrh    w2, [x1,96]
        mov     w1, 65535
-       ldrh    w2, [x0]
        cmp     w2, w1
-       beq     .L1542
+       beq     .L1676
        bl      make_superblock
-.L1542:
-       ldr     x0, [x20, #:got_lo12:g_gc_superblock]
+.L1676:
+       add     x21, x21, :lo12:.LANCHOR2
        mov     w1, 65535
+       add     x0, x21, 296
        mov     w19, 0
-       ldrh    w2, [x0]
+       ldrh    w2, [x21,296]
        cmp     w2, w1
-       beq     .L1531
+       beq     .L1665
        bl      make_superblock
-.L1531:
+.L1665:
        mov     w0, w19
        ldr     x25, [sp,64]
        ldp     x19, x20, [sp,16]
@@ -11720,563 +11498,580 @@ FtlLoadSysInfo:
        .global FtlGcScanTempBlk
        .type   FtlGcScanTempBlk, %function
 FtlGcScanTempBlk:
-       stp     x29, x30, [sp, -128]!
+       stp     x29, x30, [sp, -144]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       adrp    x19, .LANCHOR2
-       stp     x25, x26, [sp,64]
-       mov     x26, x0
-       add     x0, x19, :lo12:.LANCHOR2
+       adrp    x19, .LANCHOR1
        stp     x23, x24, [sp,48]
+       mov     x24, x0
+       add     x0, x19, :lo12:.LANCHOR1
+       stp     x25, x26, [sp,64]
        stp     x21, x22, [sp,32]
        stp     x27, x28, [sp,80]
-       mov     w23, w1
-       ldrh    w25, [x0,128]
+       str     x19, [x29,136]
+       mov     w25, w1
+       ldrh    w28, [x0,3004]
        mov     w0, 65535
+       cmp     w28, w0
+       beq     .L1699
+       cbnz    w28, .L1680
+       b       .L1681
+.L1699:
+       mov     w28, 0
+.L1680:
+       adrp    x0, .LANCHOR0+2026
+       ldrh    w0, [x0,#:lo12:.LANCHOR0+2026]
        cmp     w25, w0
-       beq     .L1566
-       cbnz    w25, .L1546
-       b       .L1547
-.L1566:
-       mov     w25, 0
-.L1546:
-       adrp    x0, :got:c_ftl_nand_page_pre_blk
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w0, [x0]
-       cmp     w23, w0
-       bne     .L1548
-.L1547:
+       bne     .L1682
+.L1681:
        bl      FtlGcPageVarInit
-.L1548:
-       mov     w22, -1
+.L1682:
+       mov     w23, -1
        mov     w20, 0
        mov     w21, 65535
-       adrp    x24, :got:req_read
-.L1560:
-       ldrh    w0, [x26]
-       strb    wzr, [x26,8]
+       adrp    x26, .LANCHOR0
+       adrp    x27, .LANCHOR2
+.L1693:
+       ldrh    w0, [x24]
+       strb    wzr, [x24,8]
        cmp     w0, w21
-       beq     .L1567
-.L1550:
-.L1563:
-       adrp    x0, :got:c_ftl_nand_planes_num
-       adrp    x1, :got:c_ftl_nand_byte_pre_oob
-       mov     x2, x26
-       mov     w27, 0
+       beq     .L1700
+.L1684:
+.L1696:
+       add     x0, x26, :lo12:.LANCHOR0
+       mov     x2, x24
+       mov     w19, 0
        mov     w10, 4
-       adrp    x11, :got:p_gc_spare_buf
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_byte_pre_oob]
-       ldrh    w6, [x0]
-       ldrh    w9, [x1]
-       add     x6, x26, x6, lsl 1
-.L1551:
+       ldrh    w6, [x0,1952]
+       ldrh    w9, [x0,2038]
+       add     x6, x24, x6, lsl 1
+.L1685:
        cmp     x2, x6
-       beq     .L1575
+       beq     .L1710
        ldrh    w1, [x2,16]
        cmp     w1, w21
-       beq     .L1552
-       ldr     x8, [x24, #:got_lo12:req_read]
+       beq     .L1686
+       add     x7, x27, :lo12:.LANCHOR2
        mov     w0, 56
-       orr     w1, w25, w1, lsl 10
-       add     w5, w27, 1
-       umull   x0, w27, w0
-       ldr     x7, [x8]
-       add     x7, x7, x0
-       str     w1, [x7,4]
-       ldr     x1, [x8]
+       orr     w1, w28, w1, lsl 10
+       add     w5, w19, 1
+       umull   x0, w19, w0
+       ldr     x8, [x7,2048]
+       add     x8, x8, x0
+       str     w1, [x8,4]
+       ldr     x1, [x7,2048]
+       ldr     x7, [x7,904]
        add     x0, x1, x0
-       mul     w1, w27, w9
-       uxth    w27, w5
+       mul     w1, w19, w9
+       uxth    w19, w5
        str     xzr, [x0,8]
        sdiv    w1, w1, w10
-       ldr     x7, [x11, #:got_lo12:p_gc_spare_buf]
-       ldr     x7, [x7]
        add     x1, x7, x1, sxtw 2
        str     x1, [x0,16]
-.L1552:
+.L1686:
        add     x2, x2, 2
-       b       .L1551
-.L1575:
-       ldr     x0, [x24, #:got_lo12:req_read]
-       mov     w1, w27
+       b       .L1685
+.L1710:
+       add     x0, x27, :lo12:.LANCHOR2
+       mov     w1, w19
        mov     w2, 0
-       mov     x28, 0
-       ldr     x0, [x0]
+       mov     x22, 0
+       ldr     x0, [x0,2048]
        bl      FlashReadPages
-.L1554:
-       cmp     w27, w28, uxth
-       bls     .L1576
+.L1688:
+       cmp     w19, w22, uxth
+       bls     .L1711
+       adrp    x0, .LANCHOR2
+       add     x7, x0, :lo12:.LANCHOR2
        mov     x0, 56
-       mul     x6, x28, x0
-       adrp    x0, :got:req_read
-       str     x6, [x29,112]
-       ldr     x8, [x0, #:got_lo12:req_read]
+       str     x7, [x29,96]
+       mul     x8, x22, x0
+       ldr     x10, [x7,2048]
        str     x8, [x29,104]
-       ldr     x0, [x8]
-       add     x0, x0, x6
-       ldr     w1, [x0,4]
-       str     x1, [x29,120]
-       lsr     w0, w1, 10
+       add     x9, x10, x8
+       str     x10, [x29,112]
+       str     x9, [x29,120]
+       ldr     w1, [x9,4]
+       str     x1, [x29,128]
+       lsr     x0, x1, 10
        bl      P2V_plane
        uxth    w2, w0
+       ldr     x10, [x29,112]
        ldr     x8, [x29,104]
-       ldr     x6, [x29,112]
-       ldr     x0, [x8]
-       add     x8, x0, x6
-       ldr     w6, [x0,x6]
-       cbnz    w6, .L1555
-       ldr     x6, [x8,16]
-       add     x28, x28, 1
-       ldr     x1, [x29,120]
-       ldrh    w0, [x6]
+       ldr     x1, [x29,128]
+       ldr     x7, [x29,96]
+       ldr     w0, [x10,x8]
+       cbnz    w0, .L1689
+       ldr     x9, [x29,120]
+       add     x22, x22, 1
+       ldr     x8, [x9,16]
+       ldrh    w0, [x8]
        cmp     w0, w21
-       bne     .L1556
-       adrp    x0, :got:ftl_gc_temp_power_lost_recovery_flag
-       mov     w1, 1
-       ldr     x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
-       str     w1, [x0]
-       b       .L1549
-.L1556:
-       ldr     w0, [x6,12]
-       ldr     w2, [x6,8]
+       bne     .L1690
+       mov     w0, 1
+       str     w0, [x7,2328]
+       b       .L1683
+.L1690:
+       ldr     w0, [x8,12]
+       ldr     w2, [x8,8]
        bl      FtlGcUpdatePage
-       b       .L1554
-.L1555:
-       adrp    x0, :got:g_inkDie_check_enable
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       ldr     w0, [x0]
-       cbz     w0, .L1557
-       adrp    x0, :got:p_erase_count_table
-       ldrh    w1, [x26]
-       ldr     x0, [x0, #:got_lo12:p_erase_count_table]
-       ldr     x0, [x0]
-       ldrh    w0, [x0,x1,lsl 1]
-       cmp     w0, 119
-       bls     .L1558
-.L1557:
-       cmn     w6, #1
-       bne     .L1559
-.L1558:
-       ldr     w22, [x8,4]
-.L1559:
-       adrp    x0, :got:p_valid_page_count_table
-       ldrh    w1, [x26]
-       mov     w25, 0
-       ldr     x0, [x0, #:got_lo12:p_valid_page_count_table]
-       ldr     x0, [x0]
-       strh    wzr, [x0,x1,lsl 1]
-       ldrh    w0, [x26]
+       b       .L1688
+.L1689:
+       ldr     w2, [x7,160]
+       cbz     w2, .L1691
+       ldrh    w3, [x24]
+       ldr     x2, [x7,-80]
+       ldrh    w2, [x2,x3,lsl 1]
+       cmp     w2, 119
+       bls     .L1692
+.L1691:
+       cmn     w0, #1
+       csel    w1, w1, w23, eq
+.L1692:
+       adrp    x0, .LANCHOR2
+       ldrh    w2, [x24]
+       add     x22, x0, :lo12:.LANCHOR2
+       str     x1, [x29,128]
+       mov     w28, 0
+       ldr     x0, [x22,-40]
+       strh    wzr, [x0,x2,lsl 1]
+       ldrh    w0, [x24]
        bl      INSERT_FREE_LIST
        mov     w0, -1
-       strh    w0, [x26]
+       strh    w0, [x24]
        bl      FtlGcPageVarInit
-       b       .L1560
-.L1576:
+       ldr     x1, [x29,128]
+       mov     w23, w1
+       b       .L1693
+.L1711:
        add     w20, w20, 1
-       add     w3, w25, 1
-       cmp     w20, w23
-       adrp    x0, :got:c_ftl_nand_page_pre_blk
-       uxth    w25, w3
-       bcs     .L1562
-.L1564:
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w0, [x0]
-       cmp     w0, w25
-       bhi     .L1563
-       b       .L1567
-.L1562:
-       add     x2, x19, :lo12:.LANCHOR2
-       ldrh    w1, [x2,128]
-       cmp     w1, w21
-       beq     .L1564
-       add     w1, w1, w20
-       strh    w1, [x2,128]
-       ldr     x1, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w1, [x1]
-       cmp     w1, w25
-       bls     .L1564
-       b       .L1565
-.L1567:
+       add     w3, w28, 1
+       cmp     w20, w25
+       uxth    w28, w3
+       bcs     .L1695
+.L1697:
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2026]
+       cmp     w0, w28
+       bhi     .L1696
+       b       .L1700
+.L1695:
+       ldr     x0, [x29,136]
+       add     x1, x0, :lo12:.LANCHOR1
+       ldrh    w0, [x1,3004]
+       cmp     w0, w21
+       beq     .L1697
+       add     w0, w0, w20
+       strh    w0, [x1,3004]
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2026]
+       cmp     w0, w28
+       bls     .L1697
+       b       .L1698
+.L1700:
        mov     w2, 0
-.L1549:
-       add     x19, x19, :lo12:.LANCHOR2
+.L1683:
+       ldr     x0, [x29,136]
+       mov     w1, w28
+       strh    w28, [x24,2]
+       add     x19, x0, :lo12:.LANCHOR1
        mov     w0, -1
-       strh    w25, [x26,2]
-       mov     w1, w25
-       strb    w2, [x26,6]
-       strh    w0, [x19,128]
-       mov     x0, x26
+       strb    w2, [x24,6]
+       strh    w0, [x19,3004]
+       mov     x0, x24
        bl      ftl_sb_update_avl_pages
-.L1565:
-       mov     w0, w22
+.L1698:
+       mov     w0, w23
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 128
+       ldp     x29, x30, [sp], 144
        ret
        .size   FtlGcScanTempBlk, .-FtlGcScanTempBlk
        .align  2
        .global FlashProgPages
        .type   FlashProgPages, %function
 FlashProgPages:
-       stp     x29, x30, [sp, -192]!
+       stp     x29, x30, [sp, -208]!
+       adrp    x4, __stack_chk_guard
+       adrp    x7, .LANCHOR1+481
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       mov     x19, x0
-       adrp    x0, :got:gpNandParaInfo
+       ldr     x5, [x4,#:lo12:__stack_chk_guard]
+       adrp    x20, .LANCHOR0
+       str     x5, [x29,200]
+       add     x5, x20, :lo12:.LANCHOR0
        stp     x21, x22, [sp,32]
        stp     x23, x24, [sp,48]
-       ldr     x0, [x0, #:got_lo12:gpNandParaInfo]
-       mov     w24, w1
        stp     x25, x26, [sp,64]
        stp     x27, x28, [sp,80]
-       mov     w26, w2
+       ldrb    w7, [x7,#:lo12:.LANCHOR1+481]
+       mov     x19, x0
+       ldr     x6, [x5,744]
+       mov     w25, w1
+       ldrb    w5, [x5,8]
+       mov     w23, w2
        str     w3, [x29,120]
-       ldr     x0, [x0]
-       mov     w21, 0
+       mov     w22, 0
+       str     w7, [x29,124]
+       str     x4, [x29,112]
+       ldrb    w6, [x6,19]
+       cbz     w5, .L1713
+       bl      FlashProgSlc2KPages
+       b       .L1714
+.L1713:
+       sub     w0, w6, #1
        mov     w27, 56
-       ldrb    w1, [x0,19]
-       adrp    x0, :got:gNandParaInfo
-       ldr     x0, [x0, #:got_lo12:gNandParaInfo]
-       ldrb    w28, [x0,9]
-       add     x0, x29, 128
-       str     x0, [x29,112]
-       add     x0, x29, 132
-       str     x0, [x29,104]
-       sub     w0, w1, #1
-       str     w0, [x29,100]
-.L1578:
-       cmp     w21, w24
-       adrp    x20, :got:gNandMaxDie
-       bcs     .L1620
-       umull   x20, w21, w27
-       ldr     x2, [x29,112]
-       mov     w1, w26
-       add     x25, x19, x20
-       ldr     x3, [x29,104]
-       sub     w4, w24, w21
-       mov     x0, x25
+       mov     x28, 24
+       str     w0, [x29,108]
+.L1765:
+       cmp     w22, w25
+       bcs     .L1766
+       umull   x21, w22, w27
+       sub     w4, w25, w22
+       add     x2, x29, 136
+       add     x26, x19, x21
+       mov     w1, w23
+       mov     x0, x26
+       add     x3, x29, 140
        bl      LogAddr2PhyAddr
-       mov     w23, w0
-       adrp    x1, :got:gNandMaxDie
-       ldr     w0, [x29,132]
-       ldr     x1, [x1, #:got_lo12:gNandMaxDie]
-       ldrb    w2, [x1]
-       cmp     w0, w2
-       bcc     .L1579
+       mov     w24, w0
+       add     x2, x20, :lo12:.LANCHOR0
+       ldr     w0, [x29,140]
+       ldrb    w4, [x2,1845]
+       cmp     w0, w4
+       bcc     .L1715
        mov     w0, -1
-       str     w0, [x19,x20]
-       b       .L1580
-.L1579:
-       adrp    x1, :got:gMultiPageProgEn
-       adrp    x22, :got:gDieOp
-       ldr     x1, [x1, #:got_lo12:gMultiPageProgEn]
-       ldr     x3, [x22, #:got_lo12:gDieOp]
-       ldrb    w1, [x1]
+       str     w0, [x19,x21]
+       b       .L1716
+.L1715:
+       ldrb    w1, [x2,1945]
+       add     x3, x2, 1652
        cmp     w1, wzr
        uxtw    x1, w0
-       mov     x0, 24
-       csel    w23, w23, wzr, ne
-       madd    x0, x1, x0, x3
+       csel    w24, w24, wzr, ne
+       madd    x0, x1, x28, x3
        ldr     x0, [x0,8]
-       cbz     x0, .L1582
-       cmp     w2, 1
-       bne     .L1583
-       adrp    x0, :got:gpNandc
-       ldr     x0, [x0, #:got_lo12:gpNandc]
-       ldr     x0, [x0]
+       cbz     x0, .L1718
+       cmp     w4, 1
+       bne     .L1719
+       ldr     x0, [x2,128]
        bl      NandcIqrWaitFlashReady
-.L1583:
-       ldrb    w0, [x29,132]
+.L1719:
+       ldrb    w0, [x29,140]
        bl      FlashWaitCmdDone
-.L1582:
-       ldr     x2, [x22, #:got_lo12:gDieOp]
-       mov     x0, 24
-       ldr     w1, [x29,132]
-       madd    x0, x1, x0, x2
-       ldr     w2, [x29,128]
-       str     x25, [x0,8]
+.L1718:
+       add     x0, x20, :lo12:.LANCHOR0
+       ldr     w2, [x29,140]
+       add     x0, x0, 1652
+       ldr     w1, [x29,136]
+       madd    x0, x2, x28, x0
+       str     x26, [x0,8]
        str     xzr, [x0,16]
-       str     w2, [x0,4]
-       cbz     w23, .L1584
-       add     w2, w21, 1
-       umull   x2, w2, w27
-       add     x2, x19, x2
-       str     x2, [x0,16]
-.L1584:
-       adrp    x0, :got:DieCsIndex
-       ldr     x22, [x22, #:got_lo12:gDieOp]
-       ldr     x0, [x0, #:got_lo12:DieCsIndex]
-       ldrb    w20, [x0,x1]
-       mov     x0, 24
-       mul     x1, x1, x0
-       adrp    x0, :got:gNandMaxDie
-       strb    w20, [x22,x1]
-       ldr     x0, [x0, #:got_lo12:gNandMaxDie]
-       ldrb    w0, [x0]
+       str     w1, [x0,4]
+       cbz     w24, .L1720
+       add     w1, w22, 1
+       umull   x1, w1, w27
+       add     x1, x19, x1
+       str     x1, [x0,16]
+.L1720:
+       add     x1, x20, :lo12:.LANCHOR0
+       add     x0, x1, x2
+       madd    x2, x2, x28, x1
+       ldrb    w21, [x0,1848]
+       ldrb    w0, [x1,1845]
+       strb    w21, [x2,1652]
        cmp     w0, 1
-       mov     w0, w20
-       bne     .L1585
+       bne     .L1721
+       mov     w0, w21
        bl      NandcWaitFlashReady
-       b       .L1586
-.L1585:
+       b       .L1722
+.L1721:
+       mov     w0, w21
+       str     x1, [x29,96]
        bl      NandcFlashCs
-       adrp    x0, :got:DieAddrs
-       ldr     w1, [x29,132]
-       ldr     x0, [x0, #:got_lo12:DieAddrs]
-       ldr     w0, [x0,x1,lsl 2]
-       ldr     w1, [x29,128]
+       ldr     x1, [x29,96]
+       ldr     w0, [x29,140]
+       add     x1, x1, 708
+       ldr     w0, [x1,x0,lsl 2]
+       ldr     w1, [x29,136]
        cmp     w0, wzr
-       mov     w0, w20
+       mov     w0, w21
        cset    w2, ne
        bl      FlashWaitReadyEN
-       mov     w0, w20
+       mov     w0, w21
        bl      NandcFlashDeCs
-.L1586:
-       ldr     w0, [x29,100]
+.L1722:
+       ldr     w0, [x29,108]
        cmp     w0, 5
-       bhi     .L1587
-       adrp    x0, :got:read_retry_cur_offset
-       ldr     x0, [x0, #:got_lo12:read_retry_cur_offset]
-       ldrb    w0, [x0,w20,sxtw]
-       cbz     w0, .L1587
-       adrp    x2, :got:gReadRetryInfo
-       mov     w0, w20
+       bhi     .L1723
+       add     x2, x20, :lo12:.LANCHOR0
+       add     x0, x2, x21, sxtw
+       ldrb    w0, [x0,1616]
+       cbz     w0, .L1723
+       ldrb    w1, [x2,761]
+       mov     w0, w21
+       add     x2, x2, 764
        mov     w3, 0
-       ldr     x2, [x2, #:got_lo12:gReadRetryInfo]
-       add     x2, x2, 4
-       ldrb    w1, [x2,-3]
        bl      HynixSetRRPara
-.L1587:
-       mov     w0, w20
+.L1723:
+       mov     w0, w21
        bl      NandcFlashCs
-       ldr     w1, [x29,128]
-       mov     w0, w20
+       cmp     w23, 1
+       bne     .L1724
+       add     x0, x20, :lo12:.LANCHOR0
+       ldrb    w0, [x0,120]
+       cbz     w0, .L1724
+       mov     w0, w21
+       bl      flash_enter_slc_mode
+.L1724:
+       ldr     w1, [x29,136]
+       mov     w0, w21
        bl      FlashProgFirstCmd
-       ldr     x3, [x25,8]
-       mov     w0, w20
-       ldr     x4, [x25,16]
+       ldrb    w2, [x29,124]
+       mov     w0, w21
+       ldr     x3, [x26,8]
        mov     w1, 1
-       mov     w2, w28
+       ldr     x4, [x26,16]
        bl      NandcXferData
-       cbz     w23, .L1588
-       ldr     w1, [x29,128]
-       mov     w0, w20
+       cbz     w24, .L1725
+       ldr     w1, [x29,136]
+       mov     w0, w21
+       add     x26, x20, :lo12:.LANCHOR0
        bl      FlashProgDpFirstCmd
-       adrp    x0, :got:DieAddrs
-       ldr     w1, [x29,132]
-       ldr     x0, [x0, #:got_lo12:DieAddrs]
+       ldr     w1, [x29,140]
+       add     x0, x26, 708
        ldr     w0, [x0,x1,lsl 2]
-       ldr     w1, [x29,128]
+       ldr     w1, [x29,136]
        cmp     w0, wzr
-       mov     w0, w20
+       mov     w0, w21
        cset    w2, ne
        bl      FlashWaitReadyEN
-       adrp    x0, :got:gBlockPageAlignSize
-       ldr     w1, [x29,128]
-       ldr     x0, [x0, #:got_lo12:gBlockPageAlignSize]
-       ldr     w2, [x0]
-       mov     w0, w20
+       ldr     w2, [x26,12]
+       mov     w0, w21
+       ldr     w1, [x29,136]
        add     w1, w2, w1
        bl      FlashProgDpSecondCmd
-       add     w4, w21, 1
-       mov     w0, w20
+       add     w4, w22, 1
+       ldrb    w2, [x29,124]
+       mov     w0, w21
        mov     w1, 1
-       mov     w2, w28
        umull   x4, w4, w27
        add     x4, x19, x4
        ldr     x3, [x4,8]
        ldr     x4, [x4,16]
        bl      NandcXferData
-.L1588:
-       ldr     w1, [x29,128]
-       mov     w0, w20
-       add     w21, w21, w23
+.L1725:
+       ldr     w1, [x29,136]
+       mov     w0, w21
+       add     w22, w22, w24
        bl      FlashProgSecondCmd
-       mov     w0, w20
+       mov     w0, w21
        bl      NandcFlashDeCs
-.L1580:
-       add     w21, w21, 1
-       b       .L1578
-.L1620:
-       adrp    x0, :got:gpNandc
-       mov     w21, 0
-       ldr     x0, [x0, #:got_lo12:gpNandc]
-       ldr     x0, [x0]
+.L1716:
+       add     w22, w22, 1
+       b       .L1765
+.L1766:
+       add     x20, x20, :lo12:.LANCHOR0
+       mov     x21, 0
+       add     x22, x20, 1652
+       mov     x24, 24
+       ldr     x0, [x20,128]
        bl      NandcIqrWaitFlashReady
-.L1590:
-       ldr     x0, [x20, #:got_lo12:gNandMaxDie]
-       ldrb    w0, [x0]
-       cmp     w21, w0
-       bcs     .L1621
+.L1727:
+       ldrb    w0, [x20,1845]
+       cmp     w0, w21
+       bls     .L1767
        mov     w0, w21
-       add     w21, w21, 1
        bl      FlashWaitCmdDone
-       b       .L1590
-.L1621:
+       cmp     w23, 1
+       bne     .L1728
+       ldrb    w0, [x20,120]
+       cbz     w0, .L1728
+       mul     x0, x21, x24
+       ldrb    w0, [x0,x22]
+       bl      flash_exit_slc_mode
+.L1728:
+       add     x21, x21, 1
+       b       .L1727
+.L1767:
        ldr     w0, [x29,120]
-       cbz     w0, .L1619
-       adrp    x23, .LC101
-       adrp    x25, .LC100
-       adrp    x27, .LC99
-       mov     w22, 0
-       add     x23, x23, :lo12:.LC101
-       add     x25, x25, :lo12:.LC100
-       add     x27, x27, :lo12:.LC99
-.L1593:
-       cmp     w22, w24
-       beq     .L1619
+       cbnz    w0, .L1730
+.L1738:
+       mov     w0, 0
+       b       .L1714
+.L1730:
+       adrp    x22, .LC101
+       adrp    x24, .LC100
+       adrp    x26, .LC99
+       mov     w21, 0
+       add     x22, x22, :lo12:.LC101
+       add     x24, x24, :lo12:.LC100
+       add     x26, x26, :lo12:.LC99
+.L1731:
+       cmp     w21, w25
+       beq     .L1738
        ldr     w0, [x19]
        cmn     w0, #1
-       bne     .L1594
+       bne     .L1732
        adrp    x0, .LC98
        ldr     w1, [x19,4]
        add     x0, x0, :lo12:.LC98
        bl      printk
-       b       .L1595
-.L1594:
-       sub     w4, w24, w22
-       mov     w1, w26
-       add     x2, x29, 128
-       add     x3, x29, 132
+       b       .L1733
+.L1732:
+       adrp    x20, .LANCHOR4
+       sub     w4, w25, w21
+       add     x27, x20, :lo12:.LANCHOR4
+       add     x3, x29, 140
+       mov     w1, w23
+       add     x2, x29, 136
        mov     x0, x19
-       adrp    x20, :got:gFlashProgCheckBuffer
-       adrp    x21, :got:gFlashProgCheckSpareBuffer
        bl      LogAddr2PhyAddr
-       ldr     x4, [x20, #:got_lo12:gFlashProgCheckBuffer]
-       add     x3, x29, 136
+       ldr     x0, [x27,96]
        mov     x1, x19
        mov     x2, 56
-       str     x4, [x29,120]
-       ldr     x0, [x4]
        str     wzr, [x0]
-       ldr     x28, [x21, #:got_lo12:gFlashProgCheckSpareBuffer]
-       ldr     x0, [x28]
+       ldr     x0, [x27,104]
        str     wzr, [x0]
-       mov     x0, x3
+       add     x0, x29, 144
        bl      memcpy
-       mov     x3, x0
-       ldr     x4, [x29,120]
+       ldr     x0, [x27,96]
        mov     w1, 1
-       mov     w2, w26
-       ldr     x0, [x4]
-       str     x0, [x29,144]
-       ldr     x0, [x28]
        str     x0, [x29,152]
-       mov     x0, x3
+       mov     w2, w23
+       ldr     x0, [x27,104]
+       str     x0, [x29,160]
+       add     x0, x29, 144
        bl      FlashReadPages
-       ldr     w28, [x29,136]
-       cmn     w28, #1
-       bne     .L1596
+       ldr     w27, [x29,144]
+       cmn     w27, #1
+       bne     .L1734
        ldr     w1, [x19,4]
-       mov     x0, x27
+       mov     x0, x26
        bl      printk
-       str     w28, [x19]
-.L1596:
+       str     w27, [x19]
+.L1734:
        ldr     x0, [x19,16]
-       cbz     x0, .L1597
-       ldr     x21, [x21, #:got_lo12:gFlashProgCheckSpareBuffer]
+       cbz     x0, .L1735
        ldr     w2, [x0]
-       ldr     x0, [x21]
+       add     x0, x20, :lo12:.LANCHOR4
+       ldr     x0, [x0,104]
        ldr     w3, [x0]
        cmp     w2, w3
-       beq     .L1597
+       beq     .L1735
        ldr     w1, [x19,4]
-       mov     x0, x25
+       mov     x0, x24
        bl      printk
        mov     w0, -1
        str     w0, [x19]
-.L1597:
+.L1735:
        ldr     x0, [x19,8]
-       cbz     x0, .L1595
-       ldr     x20, [x20, #:got_lo12:gFlashProgCheckBuffer]
+       cbz     x0, .L1733
+       add     x20, x20, :lo12:.LANCHOR4
        ldr     w2, [x0]
-       ldr     x0, [x20]
+       ldr     x0, [x20,96]
        ldr     w3, [x0]
        cmp     w2, w3
-       beq     .L1595
+       beq     .L1733
        ldr     w1, [x19,4]
-       mov     x0, x23
+       mov     x0, x22
        bl      printk
        mov     w0, -1
        str     w0, [x19]
-.L1595:
-       add     w22, w22, 1
+.L1733:
+       add     w21, w21, 1
        add     x19, x19, 56
-       b       .L1593
-.L1619:
-       mov     w0, 0
+       b       .L1731
+.L1714:
+       ldr     x1, [x29,112]
+       ldr     x2, [x29,200]
+       ldr     x1, [x1,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L1739
+       bl      __stack_chk_fail
+.L1739:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 192
+       ldp     x29, x30, [sp], 208
        ret
        .size   FlashProgPages, .-FlashProgPages
        .align  2
-       .type   FlashTestBlk.part.19, %function
-FlashTestBlk.part.19:
+       .type   FlashTestBlk.part.17, %function
+FlashTestBlk.part.17:
        stp     x29, x30, [sp, -176]!
        mov     w1, 165
        mov     w2, 32
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       adrp    x20, :got:gFlashPageBuffer1
        str     x21, [sp,32]
-       uxth    w21, w0
-       add     x19, x29, 56
-       lsl     w21, w21, 10
-       ldr     x20, [x20, #:got_lo12:gFlashPageBuffer1]
-       ldr     x0, [x20]
+       adrp    x19, .LANCHOR4
+       adrp    x21, __stack_chk_guard
+       add     x19, x19, :lo12:.LANCHOR4
+       uxth    w20, w0
+       lsl     w20, w20, 10
+       ldr     x0, [x21,#:lo12:__stack_chk_guard]
+       str     x0, [x29,168]
+       ldr     x0, [x19,80]
+       str     x0, [x29,56]
+       add     x0, x29, 104
        str     x0, [x29,64]
-       add     x0, x29, 112
-       str     x0, [x29,72]
        bl      ftl_memset
-       ldr     x0, [x20]
-       mov     w2, 8
+       ldr     x0, [x19,80]
        mov     w1, 90
+       mov     w2, 8
        bl      ftl_memset
-       str     w21, [x29,60]
-       mov     x0, x19
+       str     w20, [x29,52]
        mov     w1, 1
+       add     x0, x29, 48
+       mov     w2, w1
        bl      FlashEraseBlocks
        mov     w1, 1
-       mov     x0, x19
+       add     x0, x29, 48
        mov     w2, w1
        mov     w3, w1
        bl      FlashProgPages
-       ldr     w0, [x29,56]
-       mov     w1, 1
+       ldr     w0, [x29,48]
+       mov     w1, 0
+       mov     w2, 1
        cmn     w0, #1
-       mov     x0, x19
-       csetm   w20, eq
+       add     x0, x29, 48
+       csetm   w19, eq
        bl      FlashEraseBlocks
-       ldr     x21, [sp,32]
-       mov     w0, w20
+       ldr     x2, [x29,168]
+       mov     w0, w19
+       ldr     x1, [x21,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L1769
+       bl      __stack_chk_fail
+.L1769:
        ldp     x19, x20, [sp,16]
+       ldr     x21, [sp,32]
        ldp     x29, x30, [sp], 176
        ret
-       .size   FlashTestBlk.part.19, .-FlashTestBlk.part.19
+       .size   FlashTestBlk.part.17, .-FlashTestBlk.part.17
        .align  2
        .global FlashTestBlk
        .type   FlashTestBlk, %function
 FlashTestBlk:
-       adrp    x1, :got:gNandFlashIdbBlockAddr
-       uxth    w2, w0
+       uxth    w1, w0
+       adrp    x0, .LANCHOR4+68
        stp     x29, x30, [sp, -16]!
-       mov     w0, 0
        add     x29, sp, 0
-       ldr     x1, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
-       ldr     w1, [x1]
-       cmp     w2, w1
-       bcc     .L1624
-       mov     w0, w2
-       bl      FlashTestBlk.part.19
-.L1624:
+       ldr     w2, [x0,#:lo12:.LANCHOR4+68]
+       mov     w0, 0
+       cmp     w1, w2
+       bcc     .L1771
+       mov     w0, w1
+       bl      FlashTestBlk.part.17
+.L1771:
        ldp     x29, x30, [sp], 16
        ret
        .size   FlashTestBlk, .-FlashTestBlk
@@ -12284,338 +12079,328 @@ FlashTestBlk:
        .global FlashMakeFactorBbt
        .type   FlashMakeFactorBbt, %function
 FlashMakeFactorBbt:
-       adrp    x5, :got:gFlashSpareBuffer
-       adrp    x4, :got:gNandPhyInfo
        stp     x29, x30, [sp, -256]!
-       adrp    x3, :got:gpNandParaInfo
-       adrp    x2, :got:gBlockPageAlignSize
+       adrp    x2, __stack_chk_guard
+       adrp    x4, .LANCHOR0
        add     x29, sp, 0
-       ldr     x0, [x5, #:got_lo12:gFlashSpareBuffer]
-       stp     x19, x20, [sp,16]
        stp     x21, x22, [sp,32]
-       stp     x23, x24, [sp,48]
+       ldr     x0, [x2,#:lo12:__stack_chk_guard]
+       adrp    x22, .LANCHOR4
+       str     x0, [x29,248]
+       add     x0, x22, :lo12:.LANCHOR4
+       stp     x19, x20, [sp,16]
        stp     x25, x26, [sp,64]
        stp     x27, x28, [sp,80]
-       ldr     x1, [x4, #:got_lo12:gNandPhyInfo]
+       stp     x23, x24, [sp,48]
+       mov     x20, x4
+       str     x2, [x29,112]
+       ldr     x0, [x0,88]
+       add     x25, x20, :lo12:.LANCHOR0
+       str     x0, [x29,160]
+       add     x0, x4, :lo12:.LANCHOR0
        mov     w19, 0
-       ldr     x0, [x0]
-       str     x0, [x29,184]
-       ldrh    w22, [x1,14]
-       ldrh    w0, [x1,12]
-       adrp    x1, :got:g_slc2KBNand
-       str     x1, [x29,128]
-       str     x5, [x29,160]
-       mul     w22, w0, w22
-       ldr     x0, [x3, #:got_lo12:gpNandParaInfo]
-       str     x4, [x29,168]
-       str     x3, [x29,152]
-       uxth    w22, w22
-       ldr     x0, [x0]
-       str     x2, [x29,136]
-       ldrb    w0, [x0,24]
-       str     w0, [x29,180]
-       ldr     x0, [x2, #:got_lo12:gBlockPageAlignSize]
-       ldrh    w25, [x0]
-       ldr     x0, [x1, #:got_lo12:g_slc2KBNand]
-       ubfiz   w1, w25, 1, 15
-       ldrb    w0, [x0]
+       add     x28, x25, 708
+       ldrh    w1, [x0,180]
+       ldrh    w21, [x0,182]
+       mul     w21, w1, w21
+       ldr     x1, [x0,744]
+       uxth    w21, w21
+       ldrb    w1, [x1,24]
+       str     w1, [x29,128]
+       ldrh    w1, [x0,12]
+       str     w1, [x29,172]
+       ldrb    w0, [x0,8]
+       ubfiz   w1, w1, 1, 15
        cmp     w0, 1
-       adrp    x0, .LC102
-       csel    w25, w1, w25, eq
-       add     x0, x0, :lo12:.LC102
+       ldr     w0, [x29,172]
+       csel    w0, w1, w0, eq
+       str     w0, [x29,172]
+       adrp    x0, .LC104
        mov     w1, 1
+       add     x0, x0, :lo12:.LC104
        bl      printk
-       ldr     x0, [x29,160]
+       add     x0, x22, :lo12:.LANCHOR4
        mov     w1, 0
        mov     w2, 4096
-       ldr     x0, [x0, #:got_lo12:gFlashSpareBuffer]
-       ldr     x0, [x0]
+       ldr     x0, [x0,88]
        bl      ftl_memset
-       lsr     w0, w22, 4
-       str     w0, [x29,176]
-       ldr     w0, [x29,180]
+       lsr     w0, w21, 4
+       str     w0, [x29,168]
+       ldr     w0, [x29,128]
        and     w0, w0, 1
-       str     w0, [x29,112]
-       ldr     w0, [x29,180]
-       and     w0, w0, 2
-       uxtb    w0, w0
        str     w0, [x29,108]
-       sub     w0, w22, #1
+       sub     w0, w21, #1
        uxth    w0, w0
-       str     w0, [x29,104]
-.L1628:
-       adrp    x0, :got:gNandMaxDie
-       str     x0, [x29,144]
-       ldr     x1, [x0, #:got_lo12:gNandMaxDie]
-       ldrb    w1, [x1]
-       cmp     w1, w19
-       bls     .L1673
-       adrp    x0, :got:FbbtBlk
-       str     x0, [x29,120]
+       str     w0, [x29,124]
+.L1775:
+       ldrb    w0, [x25,1845]
+       cmp     w0, w19
+       bls     .L1827
+       add     x0, x22, :lo12:.LANCHOR4
        sxtw    x24, w19
-       ldr     x1, [x0, #:got_lo12:FbbtBlk]
-       ldrh    w20, [x1,w19,sxtw 1]
-       cbnz    w20, .L1655
-       ldr     x1, [x29,168]
-       adrp    x21, :got:gFlashPageBuffer0
-       mov     w26, w20
-       mov     w23, w20
-       ldr     x1, [x1, #:got_lo12:gNandPhyInfo]
-       ldr     x0, [x21, #:got_lo12:gFlashPageBuffer0]
-       ldrh    w2, [x1,20]
+       add     x0, x0, 120
+       ldrh    w20, [x0,w19,sxtw 1]
+       cbnz    w20, .L1806
+       ldrh    w2, [x25,188]
        mov     w1, w20
-       ldr     x0, [x0]
+       ldr     x0, [x25,1856]
+       mov     w26, w20
        lsl     w2, w2, 9
+       mov     w23, w20
        bl      ftl_memset
-       adrp    x0, :got:DieCsIndex
-       ldr     x0, [x0, #:got_lo12:DieCsIndex]
-       ldrb    w27, [x0,x24]
-       ldr     w0, [x29,180]
-       and     w0, w0, 4
+       add     x0, x25, x24
+       ldrb    w27, [x0,1848]
+       ldr     w0, [x29,128]
+       and     w0, w0, 2
        uxtb    w0, w0
-       str     w0, [x29,116]
-.L1630:
-       uxth    w28, w26
-       cmp     w28, w22
-       bcs     .L1640
+       str     w0, [x29,120]
+.L1777:
+       uxth    w0, w26
+       str     w0, [x29,144]
+       cmp     w0, w21
+       bcs     .L1787
        mov     w0, -1
-       strb    w0, [x29,198]
-       strb    w0, [x29,199]
-       ldr     w0, [x29,112]
-       cbz     w0, .L1632
-       adrp    x0, :got:DieAddrs
-       add     x2, x29, 198
-       ldr     x0, [x0, #:got_lo12:DieAddrs]
-       ldr     w3, [x0,x24,lsl 2]
+       strb    w0, [x29,190]
+       strb    w0, [x29,191]
+       ldr     w0, [x29,108]
+       cbz     w0, .L1779
+       ldr     w3, [x28,x24,lsl 2]
        mov     w0, w27
+       add     x2, x29, 190
        add     w3, w20, w3
        str     x3, [x29,96]
        mov     w1, w3
        bl      FlashReadSpare
-       ldr     x0, [x29,128]
+       ldrb    w0, [x25,8]
        ldr     x3, [x29,96]
-       ldr     x0, [x0, #:got_lo12:g_slc2KBNand]
-       ldrb    w0, [x0]
        cmp     w0, 1
-       bne     .L1632
-       ldr     x0, [x29,136]
-       add     x2, x29, 199
-       ldr     x0, [x0, #:got_lo12:gBlockPageAlignSize]
-       ldr     w1, [x0]
+       bne     .L1779
+       ldr     w1, [x25,12]
        mov     w0, w27
+       add     x2, x29, 191
        add     w1, w3, w1
        bl      FlashReadSpare
-       ldrb    w0, [x29,198]
-       ldrb    w1, [x29,199]
+       ldrb    w0, [x29,190]
+       ldrb    w1, [x29,191]
        and     w0, w1, w0
-       strb    w0, [x29,198]
-.L1632:
-       ldr     w0, [x29,108]
-       cbz     w0, .L1634
-       ldr     x0, [x29,152]
-       add     x2, x29, 199
-       ldr     x0, [x0, #:got_lo12:gpNandParaInfo]
-       ldr     x0, [x0]
+       strb    w0, [x29,190]
+.L1779:
+       ldr     w0, [x29,120]
+       cbz     w0, .L1781
+       ldr     x0, [x25,744]
+       add     x2, x29, 191
        ldrh    w1, [x0,10]
-       adrp    x0, :got:DieAddrs
+       ldr     w0, [x28,x24,lsl 2]
        sub     w1, w1, #1
-       ldr     x0, [x0, #:got_lo12:DieAddrs]
-       ldr     w0, [x0,x24,lsl 2]
        add     w1, w1, w0
        mov     w0, w27
        add     w1, w1, w20
        bl      FlashReadSpare
-.L1634:
-       ldr     x0, [x29,152]
-       ldrb    w1, [x29,198]
-       ldr     x0, [x0, #:got_lo12:gpNandParaInfo]
-       ldr     x0, [x0]
+.L1781:
+       ldr     x0, [x25,744]
+       ldrb    w1, [x29,190]
        ldrb    w0, [x0,7]
        cmp     w0, 8
-       beq     .L1656
+       beq     .L1807
        cmp     w0, 1
-       bne     .L1635
-.L1656:
+       bne     .L1782
+.L1807:
        mov     w0, 1
-       cbz     w1, .L1637
-       ldrb    w0, [x29,199]
+       cbz     w1, .L1784
+       ldrb    w0, [x29,191]
        cmp     w0, wzr
        cset    w0, eq
-       b       .L1637
-.L1635:
+       b       .L1784
+.L1782:
        cmp     w1, 255
        mov     w0, 1
-       bne     .L1637
-       ldrb    w0, [x29,199]
+       bne     .L1784
+       ldrb    w0, [x29,191]
        cmp     w0, 255
        cset    w0, ne
-.L1637:
-       ldr     w1, [x29,116]
-       cbz     w1, .L1638
-       adrp    x0, :got:DieAddrs
-       ldr     x0, [x0, #:got_lo12:DieAddrs]
-       ldr     w1, [x0,x24,lsl 2]
+.L1784:
+       ldr     x1, [x29,128]
+       tbz     x1, 2, .L1785
+       ldr     w1, [x28,x24,lsl 2]
        mov     w0, w27
        add     w1, w20, w1
        bl      SandiskProgTestBadBlock
-.L1638:
-       cbz     w0, .L1639
-       adrp    x0, .LC103
+.L1785:
+       cbz     w0, .L1786
+       adrp    x0, .LC105
        mov     w1, w19
        mov     w2, w26
-       add     x0, x0, :lo12:.LC103
+       add     x0, x0, :lo12:.LC105
        add     w23, w23, 1
        bl      printk
-       ldr     x0, [x21, #:got_lo12:gFlashPageBuffer0]
-       ubfx    x1, x28, 5, 11
-       lsl     x1, x1, 2
+       ldr     x0, [x29,144]
        uxth    w23, w23
-       ldr     x2, [x0]
+       ldr     x2, [x25,1856]
+       ubfx    x1, x0, 5, 11
+       ldrb    w3, [x29,144]
+       lsl     x1, x1, 2
        mov     w0, 1
-       lsl     w28, w0, w28
-       ldr     w0, [x2,x1]
-       orr     w28, w0, w28
-       ldr     x0, [x29,144]
-       str     w28, [x2,x1]
-       ldr     w1, [x29,176]
-       ldr     x0, [x0, #:got_lo12:gNandMaxDie]
-       ldrb    w0, [x0]
+       lsl     w0, w0, w3
+       ldr     w3, [x2,x1]
+       orr     w0, w3, w0
+       str     w0, [x2,x1]
+       ldr     w1, [x29,168]
+       ldrb    w0, [x25,1845]
        mul     w0, w1, w0
        cmp     w23, w0
-       bgt     .L1640
-.L1639:
+       bgt     .L1787
+.L1786:
+       ldr     w0, [x29,172]
        add     w26, w26, 1
-       add     w20, w20, w25
-       b       .L1630
-.L1640:
-       adrp    x0, .LC104
+       add     w20, w20, w0
+       b       .L1777
+.L1787:
+       adrp    x0, .LC106
        mov     w1, w19
-       add     x0, x0, :lo12:.LC104
+       add     x0, x0, :lo12:.LC106
        mov     w2, w23
        bl      printk
-       ldr     x0, [x29,144]
-       ldr     w1, [x29,176]
-       ldr     x0, [x0, #:got_lo12:gNandMaxDie]
-       ldrb    w0, [x0]
+       ldrb    w0, [x25,1845]
+       ldr     w1, [x29,168]
        mul     w0, w1, w0
        cmp     w23, w0
-       blt     .L1642
-       ldr     x1, [x29,168]
-       ldr     x0, [x21, #:got_lo12:gFlashPageBuffer0]
-       ldr     x1, [x1, #:got_lo12:gNandPhyInfo]
-       ldr     x0, [x0]
-       ldrh    w2, [x1,20]
+       blt     .L1789
+       ldrh    w2, [x25,188]
        mov     w1, 0
+       ldr     x0, [x25,1856]
        lsl     w2, w2, 9
        bl      ftl_memset
-.L1642:
-       cbnz    w19, .L1644
-       adrp    x27, :got:gNandFlashIdbBlockAddr
-       adrp    x23, .LC105
+.L1789:
+       cbnz    w19, .L1791
+       add     x0, x22, :lo12:.LANCHOR4
+       adrp    x26, .LC107
        mov     w20, w19
-       adrp    x26, :got:gNandIDBResBlkNum
-       add     x23, x23, :lo12:.LC105
-       ldr     x0, [x27, #:got_lo12:gNandFlashIdbBlockAddr]
-       ldrh    w28, [x0]
-.L1645:
-       ldr     x0, [x26, #:got_lo12:gNandIDBResBlkNum]
-       ldrb    w0, [x0]
-       cmp     w28, w0
-       bcs     .L1674
-       mov     w0, w28
+       add     x26, x26, :lo12:.LC107
+       mov     w23, 1
+       ldrh    w27, [x0,68]
+.L1792:
+       ldrb    w0, [x25,9]
+       cmp     w0, w27
+       bls     .L1828
+       mov     w0, w27
        bl      FlashTestBlk
-       cbz     w0, .L1646
-       mov     w1, w28
-       mov     x0, x23
+       cbz     w0, .L1793
+       mov     w1, w27
+       mov     x0, x26
+       add     w20, w20, 1
        bl      printk
-       ldr     x0, [x21, #:got_lo12:gFlashPageBuffer0]
-       ubfx    x1, x28, 5, 11
+       ubfx    x1, x27, 5, 11
+       ldr     x2, [x25,1856]
+       lsl     x1, x1, 2
+       lsl     w0, w23, w27
+       uxth    w20, w20
+       ldr     w3, [x2,x1]
+       orr     w0, w3, w0
+       str     w0, [x2,x1]
+.L1793:
+       add     w27, w27, 1
+       uxth    w27, w27
+       b       .L1792
+.L1828:
+       adrp    x26, .LC107
+       ldr     w23, [x29,124]
+       sub     w27, w21, #50
+       add     x26, x26, :lo12:.LC107
+.L1795:
+       cmp     w23, w27
+       ble     .L1829
+       mov     w0, w23
+       bl      FlashTestBlk
+       cbz     w0, .L1796
+       mov     w1, w23
+       mov     x0, x26
+       bl      printk
+       ubfx    x1, x23, 5, 11
+       ldr     x3, [x25,1856]
        lsl     x1, x1, 2
-       add     w2, w20, 1
-       ldr     x3, [x0]
        mov     w0, 1
-       lsl     w0, w0, w28
-       uxth    w20, w2
-       ldr     w4, [x3,x1]
-       orr     w0, w4, w0
+       lsl     w0, w0, w23
+       ldr     w5, [x3,x1]
+       orr     w0, w5, w0
        str     w0, [x3,x1]
-.L1646:
-       add     w28, w28, 1
-       uxth    w28, w28
-       b       .L1645
-.L1674:
-       ldr     x27, [x27, #:got_lo12:gNandFlashIdbBlockAddr]
-       ldr     w1, [x27]
+.L1796:
+       sub     w2, w23, #1
+       uxth    w23, w2
+       b       .L1795
+.L1829:
+       add     x1, x22, :lo12:.LANCHOR4
+       ldrb    w0, [x25,9]
+       ldr     w1, [x1,68]
        sub     w0, w0, w1
        cmp     w20, w0
-       bcc     .L1644
-       ldr     x1, [x29,168]
-       ldr     x0, [x21, #:got_lo12:gFlashPageBuffer0]
-       ldr     x1, [x1, #:got_lo12:gNandPhyInfo]
-       ldr     x0, [x0]
-       ldrh    w2, [x1,20]
+       bcc     .L1791
+       ldrh    w2, [x25,188]
        mov     w1, 0
+       ldr     x0, [x25,1856]
        lsl     w2, w2, 9
        bl      ftl_memset
-.L1644:
-       adrp    x23, .LC106
-       ldr     w27, [x29,104]
-       mul     w26, w19, w22
-       add     x23, x23, :lo12:.LC106
-       mov     w20, -3872
-       add     x28, x29, 200
-.L1649:
+.L1791:
+       adrp    x23, .LC108
+       ldr     w27, [x29,124]
+       mul     w26, w19, w21
+       add     x23, x23, :lo12:.LC108
+       add     x20, x22, :lo12:.LANCHOR4
+.L1799:
        mov     w2, w27
        mov     x0, x23
        mov     w1, w19
        bl      printk
-       ldr     x0, [x21, #:got_lo12:gFlashPageBuffer0]
-       ldr     x2, [x0]
-.L1650:
+       ldr     x2, [x25,1856]
+.L1800:
        ubfx    x0, x27, 5, 11
-       ldr     w1, [x2,x0,lsl 2]
-       lsr     w1, w1, w27
-       and     w0, w1, 1
-       tbz     x1, 0, .L1675
+       ldr     w0, [x2,x0,lsl 2]
+       lsr     w0, w0, w27
+       and     w1, w0, 1
+       tbz     x0, 0, .L1830
        sub     w27, w27, #1
        uxth    w27, w27
-       b       .L1650
-.L1675:
-       ldr     x1, [x29,120]
-       ldr     x1, [x1, #:got_lo12:FbbtBlk]
-       strh    w27, [x1,x24,lsl 1]
-       ldr     x1, [x29,184]
-       strh    w20, [x1]
-       strh    w27, [x1,2]
-       strh    w0, [x1,8]
-       add     w1, w27, w26
-       lsl     w1, w1, 10
-       ldr     x0, [x21, #:got_lo12:gFlashPageBuffer0]
-       ldr     x0, [x0]
-       str     x0, [x28,8]
+       b       .L1800
+.L1830:
+       add     x0, x20, 120
+       mov     w2, -3872
+       strh    w27, [x0,x24,lsl 1]
        ldr     x0, [x29,160]
-       ldr     x0, [x0, #:got_lo12:gFlashSpareBuffer]
-       str     w1, [x28,4]
+       strh    w2, [x0]
+       strh    w27, [x0,2]
+       strh    w1, [x0,8]
        mov     w1, 1
-       ldr     x0, [x0]
-       str     x0, [x28,16]
-       mov     x0, x28
+       ldr     x0, [x25,1856]
+       mov     w2, w1
+       str     x0, [x29,200]
+       ldr     x0, [x20,88]
+       str     x0, [x29,208]
+       add     w0, w27, w26
+       lsl     w0, w0, 10
+       str     w0, [x29,196]
+       add     x0, x29, 192
        bl      FlashEraseBlocks
        mov     w1, 1
-       mov     x0, x28
+       add     x0, x29, 192
        mov     w2, w1
        mov     w3, w1
        bl      FlashProgPages
-       ldr     w0, [x28]
-       cbz     w0, .L1655
+       ldr     w0, [x29,192]
+       cbz     w0, .L1806
        sub     w27, w27, #1
        uxth    w27, w27
-       b       .L1649
-.L1655:
+       b       .L1799
+.L1806:
        add     w19, w19, 1
        uxtb    w19, w19
-       b       .L1628
-.L1673:
+       b       .L1775
+.L1827:
+       ldr     x0, [x29,112]
+       ldr     x1, [x29,248]
+       ldr     x0, [x0,#:lo12:__stack_chk_guard]
+       cmp     x1, x0
+       beq     .L1803
+       bl      __stack_chk_fail
+.L1803:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -12631,242 +12416,221 @@ FtlLowFormatEraseBlock:
        stp     x29, x30, [sp, -128]!
        add     x29, sp, 0
        stp     x21, x22, [sp,32]
-       uxth    w21, w0
-       adrp    x0, :got:g_cur_erase_blk
+       adrp    x22, .LANCHOR0
        stp     x19, x20, [sp,16]
-       stp     x23, x24, [sp,48]
-       ldr     x0, [x0, #:got_lo12:g_cur_erase_blk]
-       uxtb    w23, w1
+       add     x20, x22, :lo12:.LANCHOR0
        stp     x25, x26, [sp,64]
        stp     x27, x28, [sp,80]
-       mov     w25, 0
-       str     w21, [x0]
-       mov     w20, w25
-       mov     w19, w25
-       mov     w24, 56
-       adrp    x26, :got:p_plane_order_table
-       adrp    x27, :got:c_ftl_nand_byte_pre_oob
-       mov     w28, 4
-.L1677:
-       adrp    x0, :got:c_ftl_nand_planes_num
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       cmp     w0, w25
-       bls     .L1715
-       adrp    x1, :got:req_erase
-       umull   x0, w25, w24
-       ldr     x1, [x1, #:got_lo12:req_erase]
-       ldr     x1, [x1]
+       stp     x23, x24, [sp,48]
+       uxth    w25, w0
+       mov     w28, 0
+       ldrb    w0, [x20,120]
+       uxtb    w26, w1
+       str     w0, [x29,124]
+       mov     w21, w28
+       str     w25, [x20,2108]
+       mov     w19, w28
+       adrp    x24, .LANCHOR2
+       mov     w27, 56
+.L1832:
+       ldrh    w0, [x20,1952]
+       cmp     w0, w28
+       bls     .L1865
+       add     x1, x24, :lo12:.LANCHOR2
+       umull   x0, w28, w27
+       ldr     x1, [x1,-88]
        str     wzr, [x1,x0]
-       mov     w1, w21
-       ldr     x0, [x26, #:got_lo12:p_plane_order_table]
-       ldrb    w0, [x0,w25,sxtw]
+       add     x0, x20, 1984
+       mov     w1, w25
+       ldrb    w0, [x0,w28,sxtw]
        bl      V2P_block
-       uxth    w22, w0
-       mov     w1, w22
-       cbnz    w23, .L1678
-.L1682:
+       uxth    w23, w0
+       mov     w1, w23
+       cbz     w26, .L1833
+       str     x1, [x29,112]
+       bl      IsBlkInVendorPart
+       ldr     x1, [x29,112]
+       cbnz    w0, .L1834
+.L1833:
        mov     w0, w1
        bl      FtlBbmIsBadBlock
-       cbnz    w0, .L1716
-       adrp    x1, :got:req_erase
-       lsl     w22, w22, 10
-       umull   x0, w20, w24
-       ldr     x1, [x1, #:got_lo12:req_erase]
-       ldr     x3, [x1]
-       add     x3, x3, x0
-       str     w22, [x3,4]
-       adrp    x3, :got:p_io_spare_buf
-       ldr     x1, [x1]
+       cbnz    w0, .L1835
+       adrp    x1, .LANCHOR2
+       lsl     w23, w23, 10
+       add     x3, x1, :lo12:.LANCHOR2
+       mov     w2, 4
+       umull   x0, w21, w27
+       ldr     x1, [x3,-88]
        add     x1, x1, x0
+       str     w23, [x1,4]
+       ldr     x1, [x3,-88]
+       ldr     x3, [x3,2120]
+       add     x1, x1, x0
+       ldrh    w0, [x20,2038]
+       mul     w0, w21, w0
+       add     w21, w21, 1
        str     xzr, [x1,8]
-       ldr     x0, [x27, #:got_lo12:c_ftl_nand_byte_pre_oob]
-       ldr     x3, [x3, #:got_lo12:p_io_spare_buf]
-       ldrh    w0, [x0]
-       ldr     x3, [x3]
-       mul     w0, w20, w0
-       add     w20, w20, 1
-       sdiv    w0, w0, w28
-       uxth    w20, w20
+       sdiv    w0, w0, w2
+       uxth    w21, w21
        add     x0, x3, x0, sxtw 2
        str     x0, [x1,16]
-       b       .L1681
-.L1678:
-       str     x1, [x29,120]
-       bl      IsBlkInVendorPart
-       ldr     x1, [x29,120]
-       cbnz    w0, .L1681
-       b       .L1682
-.L1716:
+       b       .L1834
+.L1835:
        add     w19, w19, 1
        uxth    w19, w19
-.L1681:
-       add     w2, w25, 1
-       uxth    w25, w2
-       b       .L1677
-.L1715:
-       cbz     w20, .L1685
-       adrp    x22, :got:req_erase
-       mov     w1, w20
+.L1834:
+       add     w2, w28, 1
+       uxth    w28, w2
+       b       .L1832
+.L1865:
+       cbz     w21, .L1838
+       ldr     w0, [x29,124]
+       adrp    x20, .LANCHOR2
+       mov     w2, w21
        mov     x24, 0
-       mov     x25, 56
-       ldr     x0, [x22, #:got_lo12:req_erase]
-       ldr     x0, [x0]
+       cmp     w0, wzr
+       add     x0, x20, :lo12:.LANCHOR2
+       cset    w23, ne
+       mov     x27, 56
+       mov     w1, w23
+       ldr     x0, [x0,-88]
        bl      FlashEraseBlocks
-.L1686:
-       cmp     w20, w24, uxth
-       bls     .L1717
-       ldr     x1, [x22, #:got_lo12:req_erase]
-       mul     x0, x24, x25
-       ldr     x1, [x1]
+.L1839:
+       cmp     w21, w24, uxth
+       bls     .L1866
+       add     x1, x20, :lo12:.LANCHOR2
+       mul     x0, x24, x27
+       ldr     x1, [x1,-88]
        add     x2, x1, x0
        ldr     w0, [x1,x0]
        cmn     w0, #1
-       bne     .L1687
+       bne     .L1840
        ldr     w0, [x2,4]
        add     w19, w19, 1
        lsr     w0, w0, 10
        uxth    w19, w19
        bl      FtlBbmMapBadBlock
-.L1687:
+.L1840:
        add     x24, x24, 1
-       b       .L1686
-.L1717:
-       cmp     w23, wzr
-       cset    w26, ne
-       cbz     w26, .L1703
-       adrp    x0, :got:g_inkDie_check_enable
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       ldr     w0, [x0]
-       cbz     w0, .L1703
-       adrp    x0, :got:c_ftl_nand_page_pre_slc_blk
-       mov     w23, 5
-       mov     w27, 1
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w25, [x0]
-       udiv    w23, w25, w23
-       sub     w23, w23, #1
-       uxth    w0, w23
-       str     w0, [x29,120]
-       b       .L1689
-.L1703:
+       b       .L1839
+.L1866:
+       cbnz    w26, .L1842
        mov     w0, 6
-       mov     w27, 0
-       str     w0, [x29,120]
-       mov     w25, 1
-.L1689:
+       uxth    w23, w23
+       str     w0, [x29,124]
+       mov     w27, 1
+       b       .L1843
+.L1842:
+       add     x0, x22, :lo12:.LANCHOR0
+       mov     w23, 1
+       ldrh    w27, [x0,2028]
+       lsr     w0, w27, 2
+       str     w0, [x29,124]
+.L1843:
        mov     w24, 0
-       mov     w28, 56
-.L1701:
-       mov     w23, 0
-       mov     w20, w23
-.L1690:
-       adrp    x0, :got:c_ftl_nand_planes_num
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       cmp     w0, w23
-       bls     .L1718
-       ldr     x1, [x22, #:got_lo12:req_erase]
-       umull   x0, w23, w28
-       ldr     x1, [x1]
+       add     x22, x22, :lo12:.LANCHOR0
+.L1853:
+       mov     w28, 0
+       mov     w21, w28
+.L1844:
+       ldrh    w0, [x22,1952]
+       cmp     w0, w28
+       bls     .L1867
+       add     x1, x20, :lo12:.LANCHOR2
+       mov     w0, 56
+       umull   x0, w28, w0
+       ldr     x1, [x1,-88]
        str     wzr, [x1,x0]
-       adrp    x0, :got:p_plane_order_table
-       mov     w1, w21
-       ldr     x0, [x0, #:got_lo12:p_plane_order_table]
-       ldrb    w0, [x0,w23,sxtw]
+       add     x0, x22, 1984
+       mov     w1, w25
+       ldrb    w0, [x0,w28,sxtw]
        bl      V2P_block
        uxth    w2, w0
-       str     w2, [x29,116]
+       str     w2, [x29,112]
        mov     w1, w2
-       cbnz    w26, .L1691
-.L1694:
+       cbz     w26, .L1845
+       str     x1, [x29,104]
+       bl      IsBlkInVendorPart
+       ldr     x1, [x29,104]
+       cbnz    w0, .L1846
+.L1845:
        mov     w0, w1
        bl      FtlBbmIsBadBlock
-       cbnz    w0, .L1693
-       ldr     x4, [x22, #:got_lo12:req_erase]
-       umull   x0, w20, w28
-       ldr     w2, [x29,116]
-       ldr     x1, [x4]
-       add     x1, x1, x0
-       add     w3, w24, w2, lsl 10
+       cbnz    w0, .L1846
+       add     x3, x20, :lo12:.LANCHOR2
+       mov     w0, 56
+       ldr     w2, [x29,112]
+       umull   x0, w21, w0
+       ldr     x1, [x3,-88]
+       add     w4, w24, w2, lsl 10
        mov     w2, 4
-       str     w3, [x1,4]
-       ldr     x1, [x4]
        add     x1, x1, x0
-       adrp    x0, :got:p_io_data_buf_0
-       ldr     x0, [x0, #:got_lo12:p_io_data_buf_0]
-       ldr     x0, [x0]
+       str     w4, [x1,4]
+       ldr     x1, [x3,-88]
+       add     x1, x1, x0
+       ldr     x0, [x3,2096]
+       ldr     x3, [x3,2104]
        str     x0, [x1,8]
-       adrp    x0, :got:c_ftl_nand_byte_pre_oob
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
-       ldrh    w0, [x0]
-       mul     w0, w20, w0
-       add     w20, w20, 1
+       ldrh    w0, [x22,2038]
+       mul     w0, w21, w0
+       add     w21, w21, 1
        sdiv    w0, w0, w2
-       adrp    x2, :got:p_io_data_buf_1
-       uxth    w20, w20
-       ldr     x3, [x2, #:got_lo12:p_io_data_buf_1]
-       ldr     x3, [x3]
+       uxth    w21, w21
        add     x0, x3, x0, sxtw 2
        str     x0, [x1,16]
-       b       .L1693
-.L1691:
-       str     x1, [x29,104]
-       bl      IsBlkInVendorPart
-       ldr     x1, [x29,104]
-       cbz     w0, .L1694
-.L1693:
-       add     w2, w23, 1
-       uxth    w23, w2
-       b       .L1690
-.L1718:
-       cbz     w20, .L1685
-       ldr     x0, [x22, #:got_lo12:req_erase]
-       mov     w1, w20
-       mov     w2, w27
+.L1846:
+       add     w2, w28, 1
+       uxth    w28, w2
+       b       .L1844
+.L1867:
+       cbz     w21, .L1838
+       add     x0, x20, :lo12:.LANCHOR2
+       mov     w1, w21
+       mov     w2, w23
        mov     w3, 1
-       mov     x23, 0
-       ldr     x0, [x0]
+       mov     x28, 0
+       ldr     x0, [x0,-88]
        bl      FlashProgPages
-.L1697:
-       cmp     w20, w23, uxth
-       bls     .L1719
-       ldr     x1, [x22, #:got_lo12:req_erase]
+.L1849:
+       cmp     w21, w28, uxth
+       bls     .L1868
+       add     x1, x20, :lo12:.LANCHOR2
        mov     x0, 56
-       mul     x0, x23, x0
-       ldr     x3, [x1]
+       mul     x0, x28, x0
+       ldr     x3, [x1,-88]
        add     x1, x3, x0
        ldr     w0, [x3,x0]
        cmn     w0, #1
-       bne     .L1698
+       bne     .L1850
        ldr     w0, [x1,4]
        add     w19, w19, 1
        lsr     w0, w0, 10
        uxth    w19, w19
        bl      FtlBbmMapBadBlock
-       b       .L1699
-.L1698:
-       cbz     w26, .L1699
+       b       .L1851
+.L1850:
+       cbz     w26, .L1851
        ldr     w0, [x1,4]
        mov     w1, 1
        lsr     w0, w0, 10
        bl      FtlFreeSysBlkQueueIn
-.L1699:
-       add     x23, x23, 1
-       b       .L1697
-.L1719:
-       ldr     w0, [x29,120]
+.L1851:
+       add     x28, x28, 1
+       b       .L1849
+.L1868:
+       ldr     w0, [x29,124]
        add     w24, w24, w0
        uxth    w24, w24
-       cmp     w24, w25
-       bcc     .L1701
-       cmp     w21, 63
-       bhi     .L1685
-       ldr     x22, [x22, #:got_lo12:req_erase]
-       mov     w1, w20
-       ldr     x0, [x22]
+       cmp     w24, w27
+       bcc     .L1853
+       cmp     w25, 63
+       bhi     .L1838
+       add     x20, x20, :lo12:.LANCHOR2
+       mov     w1, w23
+       mov     w2, w21
+       ldr     x0, [x20,-88]
        bl      FlashEraseBlocks
-.L1685:
+.L1838:
        mov     w0, w19
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
@@ -12880,163 +12644,140 @@ FtlLowFormatEraseBlock:
        .global FtlBbmTblFlush
        .type   FtlBbmTblFlush, %function
 FtlBbmTblFlush:
-       stp     x29, x30, [sp, -112]!
+       stp     x29, x30, [sp, -96]!
+       mov     w1, 0
        add     x29, sp, 0
        stp     x21, x22, [sp,32]
-       adrp    x21, :got:p_sys_data_buf
-       adrp    x22, :got:p_sys_spare_buf
+       adrp    x22, .LANCHOR2
+       str     x27, [sp,80]
        stp     x19, x20, [sp,16]
-       adrp    x20, :got:req_sys
-       mov     x19, 0
-       ldr     x0, [x21, #:got_lo12:p_sys_data_buf]
-       stp     x25, x26, [sp,64]
+       add     x2, x22, :lo12:.LANCHOR2
+       adrp    x19, .LANCHOR4
+       adrp    x20, .LANCHOR0
+       mov     x21, 0
        stp     x23, x24, [sp,48]
-       stp     x27, x28, [sp,80]
-       ldr     x1, [x20, #:got_lo12:req_sys]
-       adrp    x24, :got:c_ftl_nand_die_num
-       ldr     x0, [x0]
-       adrp    x25, :got:gBbtInfo
-       adrp    x26, :got:c_ftl_nand_bbm_buf_size
-       str     x0, [x1,8]
-       ldr     x2, [x22, #:got_lo12:p_sys_spare_buf]
-       ldr     x2, [x2]
-       str     x2, [x1,16]
-       adrp    x2, :got:c_ftl_nand_byte_pre_page
-       mov     w1, 0
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
-       ldrh    w2, [x2]
+       stp     x25, x26, [sp,64]
+       add     x24, x19, :lo12:.LANCHOR4
+       add     x20, x20, :lo12:.LANCHOR0
+       ldr     x0, [x2,-64]
+       add     x23, x20, 2112
+       ldr     x2, [x2,2112]
+       str     x2, [x24,152]
+       ldrh    w2, [x20,2036]
+       str     x0, [x24,144]
        bl      ftl_memset
-       str     x21, [x29,104]
-       str     x22, [x29,96]
-.L1721:
-       ldr     x1, [x24, #:got_lo12:c_ftl_nand_die_num]
-       mov     w0, w19
-       adrp    x23, :got:gBbtInfo
-       add     x19, x19, 1
-       ldrh    w1, [x1]
+.L1870:
+       ldrh    w1, [x20,1974]
+       mov     w0, w21
+       add     x21, x21, 1
        cmp     w0, w1
-       bge     .L1728
-       ldr     x1, [x26, #:got_lo12:c_ftl_nand_bbm_buf_size]
-       ldrh    w2, [x1]
-       ldr     x1, [x20, #:got_lo12:req_sys]
+       bge     .L1877
+       add     x1, x22, :lo12:.LANCHOR2
+       ldr     x3, [x24,144]
+       ldrh    w2, [x1,2232]
+       add     x1, x23, x21, lsl 3
+       ldr     x1, [x1,24]
        mul     w0, w0, w2
-       ldr     x3, [x1,8]
-       lsl     w2, w2, 2
-       ldr     x1, [x25, #:got_lo12:gBbtInfo]
        add     x0, x3, x0, sxtw 2
-       add     x1, x1, x19, lsl 3
-       ldr     x1, [x1,24]
+       lsl     w2, w2, 2
        bl      ftl_memcpy
-       b       .L1721
-.L1728:
-       ldr     x0, [x20, #:got_lo12:req_sys]
+       b       .L1870
+.L1877:
+       add     x19, x19, :lo12:.LANCHOR4
        mov     w1, 255
+       add     x19, x19, 136
        mov     w2, 16
-       adrp    x24, .LC107
-       adrp    x25, .LC108
-       mov     w26, 0
-       ldr     x21, [x0,16]
-       add     x24, x24, :lo12:.LC107
-       adrp    x27, :got:c_ftl_nand_page_pre_slc_blk
-       adrp    x28, :got:req_erase
+       adrp    x25, .LC109
+       adrp    x26, .LC110
+       ldr     x21, [x19,16]
+       mov     w24, 0
+       add     x25, x25, :lo12:.LC109
+       add     x26, x26, :lo12:.LC110
        mov     x0, x21
-       add     x25, x25, :lo12:.LC108
        bl      ftl_memset
        mov     w0, -3887
        strh    w0, [x21]
-       ldr     x0, [x23, #:got_lo12:gBbtInfo]
-       ldr     w1, [x0,8]
-       str     w1, [x21,4]
-       ldrh    w1, [x0]
-       strh    w1, [x21,2]
-       ldrh    w1, [x0,4]
-       ldrh    w0, [x0,6]
+       ldr     w0, [x23,8]
+       str     w0, [x21,4]
+       ldrh    w0, [x20,2112]
+       strh    w0, [x21,2]
+       ldrh    w0, [x23,4]
+       strh    w0, [x21,8]
+       ldrh    w0, [x23,6]
        strh    w0, [x21,10]
-       adrp    x0, :got:c_ftl_nand_sys_blks_per_plane
-       strh    w1, [x21,8]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_sys_blks_per_plane]
-       ldr     w0, [x0]
+       ldr     w0, [x20,1948]
        strh    w0, [x21,12]
-.L1723:
-       ldr     x0, [x29,104]
-       ldr     x22, [x20, #:got_lo12:req_sys]
-       ldr     x0, [x0, #:got_lo12:p_sys_data_buf]
-       ldr     x0, [x0]
-       str     x0, [x22,8]
-       ldr     x0, [x29,96]
-       ldr     x0, [x0, #:got_lo12:p_sys_spare_buf]
-       str     wzr, [x22]
-       ldr     x0, [x0]
-       str     x0, [x22,16]
-       ldr     x19, [x23, #:got_lo12:gBbtInfo]
-       ldrh    w4, [x21,10]
-       ldrh    w1, [x19]
-       ldrh    w2, [x19,2]
-       ldrh    w3, [x19,4]
+.L1872:
+       add     x27, x22, :lo12:.LANCHOR2
+       ldrh    w1, [x20,2112]
+       ldrh    w2, [x20,2114]
+       ldrh    w3, [x20,2116]
+       ldr     x0, [x27,-64]
+       str     x0, [x19,8]
+       ldr     x0, [x27,2112]
+       str     x0, [x19,16]
        orr     w0, w2, w1, lsl 10
-       str     w0, [x22,4]
-       mov     x0, x24
+       str     w0, [x19,4]
+       mov     x0, x25
+       ldrh    w4, [x21,10]
+       str     wzr, [x19]
        bl      printk
        mov     w1, 1
-       mov     x0, x22
+       mov     x0, x19
        mov     w2, w1
        mov     w3, w1
        bl      FlashProgPages
-       ldr     x0, [x27, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w1, [x19,2]
-       ldrh    w0, [x0]
+       ldrh    w0, [x20,2028]
+       ldrh    w1, [x20,2114]
        sub     w0, w0, #1
        cmp     w1, w0
-       blt     .L1724
-       ldr     w0, [x19,8]
-       ldrh    w1, [x19]
+       blt     .L1873
+       ldr     w0, [x20,2120]
+       strh    wzr, [x20,2114]
        add     w0, w0, 1
-       str     w0, [x19,8]
+       str     w0, [x20,2120]
        str     w0, [x21,4]
-       strh    w1, [x21,8]
-       ldrh    w0, [x19,4]
-       strh    w0, [x19]
-       strh    w1, [x19,4]
-       lsl     w0, w0, 10
-       strh    wzr, [x19,2]
-       str     w0, [x22,4]
-       ldr     x1, [x28, #:got_lo12:req_erase]
-       ldr     x2, [x1]
-       str     w0, [x2,4]
-       ldr     x0, [x1]
+       ldrh    w0, [x20,2112]
+       ldrh    w1, [x20,2116]
+       strh    w0, [x21,8]
+       strh    w0, [x20,2116]
+       ldr     x0, [x27,-88]
+       strh    w1, [x20,2112]
+       lsl     w1, w1, 10
+       str     w1, [x19,4]
+       str     w1, [x0,4]
        mov     w1, 1
+       mov     w2, w1
+       ldr     x0, [x27,-88]
        bl      FlashEraseBlocks
        mov     w1, 1
-       mov     x0, x22
+       mov     x0, x19
        mov     w2, w1
        mov     w3, w1
        bl      FlashProgPages
-.L1724:
-       bl      FtlBbtInfoPrint
-       ldr     x1, [x23, #:got_lo12:gBbtInfo]
-       ldrh    w0, [x1,2]
+.L1873:
+       ldrh    w0, [x20,2114]
        add     w0, w0, 1
-       strh    w0, [x1,2]
-       ldr     x1, [x20, #:got_lo12:req_sys]
-       ldr     w0, [x1]
+       strh    w0, [x20,2114]
+       ldr     w0, [x19]
        cmn     w0, #1
-       bne     .L1725
-       ldr     w1, [x1,4]
-       mov     x0, x25
+       bne     .L1874
+       ldr     w1, [x19,4]
+       mov     x0, x26
        bl      printk
-       b       .L1723
-.L1725:
-       cbnz    w26, .L1729
-       mov     w26, 1
-       b       .L1723
-.L1729:
+       b       .L1872
+.L1874:
+       cbnz    w24, .L1878
+       mov     w24, 1
+       b       .L1872
+.L1878:
        mov     w0, 0
+       ldr     x27, [sp,80]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 112
+       ldp     x29, x30, [sp], 96
        ret
        .size   FtlBbmTblFlush, .-FtlBbmTblFlush
        .align  2
@@ -13045,233 +12786,204 @@ FtlBbmTblFlush:
 allocate_data_superblock:
        stp     x29, x30, [sp, -128]!
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
        stp     x21, x22, [sp,32]
+       adrp    x21, .LANCHOR2
+       add     x21, x21, :lo12:.LANCHOR2
+       stp     x19, x20, [sp,16]
        stp     x23, x24, [sp,48]
        stp     x25, x26, [sp,64]
        stp     x27, x28, [sp,80]
-       mov     x19, x0
-       adrp    x20, :got:g_num_free_superblocks
-       adrp    x24, :got:c_ftl_nand_type
-       adrp    x21, :got:g_inkDie_check_enable
-       adrp    x22, :got:g_min_erase_count
-.L1731:
-       adrp    x0, :got:g_gc_temp_superblock
-       ldr     x0, [x0, #:got_lo12:g_gc_temp_superblock]
-       cmp     x19, x0
-       bne     .L1732
-       ldr     x0, [x20, #:got_lo12:g_num_free_superblocks]
-       ldrh    w2, [x0]
-       adrp    x0, :got:g_in_swl_replace
-       lsr     w3, w2, 1
-       ldr     x0, [x0, #:got_lo12:g_in_swl_replace]
-       add     w1, w3, 1
-       ldr     w4, [x0]
-       mul     w0, w2, w4
-       add     w1, w1, w0, lsr 2
-       ldr     x0, [x21, #:got_lo12:g_inkDie_check_enable]
+       mov     x20, x0
+       add     x23, x21, 96
+       mov     x19, x21
+       sub     x24, x21, #16
+.L1880:
+       cmp     x20, x23
+       bne     .L1881
+       ldrh    w0, [x21,-8]
+       ldr     w3, [x21,876]
+       lsr     w2, w0, 1
+       add     w4, w2, 1
+       mul     w1, w0, w3
+       add     w1, w4, w1, lsr 2
+       ldr     w4, [x21,160]
        uxth    w1, w1
-       ldr     w0, [x0]
-       cbz     w0, .L1733
-       ldr     x0, [x22, #:got_lo12:g_min_erase_count]
-       ldr     w0, [x0]
-       cmp     w0, 29
-       bhi     .L1733
-       cmp     w0, 2
+       cbz     w4, .L1882
+       ldr     w4, [x21,220]
+       cmp     w4, 29
+       bhi     .L1882
+       cmp     w4, 2
        mov     w1, 0
-       bls     .L1734
-       tbz     x2, 0, .L1758
-       cbz     w4, .L1734
-.L1758:
-       mov     w1, w3
-       b       .L1733
-.L1732:
-       ldrb    w0, [x19,8]
+       bls     .L1883
+       tbz     x0, 0, .L1908
+       cbz     w3, .L1883
+.L1908:
+       mov     w1, w2
+       b       .L1882
+.L1881:
+       ldrb    w0, [x20,8]
        mov     w1, 0
        cmp     w0, 1
-       bne     .L1734
-       ldr     x0, [x24, #:got_lo12:c_ftl_nand_type]
-       ldrh    w0, [x0]
-       cmp     w0, 1
-       beq     .L1734
-       ldr     x2, [x21, #:got_lo12:g_inkDie_check_enable]
-       ldr     x0, [x20, #:got_lo12:g_num_free_superblocks]
-       ldr     w2, [x2]
-       ldrh    w0, [x0]
+       bne     .L1883
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       ldrh    w2, [x0,1972]
+       cmp     w2, 1
+       beq     .L1883
+       ldrb    w0, [x0,120]
+       cbnz    w0, .L1883
+       ldr     w2, [x21,160]
+       ldrh    w0, [x21,-8]
        lsr     w1, w0, 3
-       cbz     w2, .L1733
-       ldr     x2, [x22, #:got_lo12:g_min_erase_count]
-       ldr     w2, [x2]
+       cbz     w2, .L1882
+       ldr     w2, [x21,220]
        cmp     w2, 1
-       bhi     .L1733
+       bhi     .L1882
        mov     w1, 7
        mul     w1, w0, w1
        lsr     w1, w1, 3
-.L1733:
-       cbz     w1, .L1734
+.L1882:
+       cbz     w1, .L1883
        sub     w1, w1, #1
        uxth    w1, w1
-.L1734:
-       adrp    x0, :got:p_free_data_block_list_head
-       ldr     x0, [x0, #:got_lo12:p_free_data_block_list_head]
+.L1883:
+       mov     x0, x24
        bl      List_pop_index_node
-       uxth    w26, w0
-       ldr     x1, [x20, #:got_lo12:g_num_free_superblocks]
-       ldrh    w0, [x1]
+       uxth    w22, w0
+       ldrh    w0, [x19,-8]
        sub     w0, w0, #1
-       strh    w0, [x1]
-       strh    w26, [x19]
-       mov     x0, x19
+       strh    w0, [x19,-8]
+       strh    w22, [x20]
+       mov     x0, x20
        bl      make_superblock
-       ldrb    w0, [x19,7]
-       cbz     w0, .L1736
-       adrp    x0, :got:c_ftl_nand_planes_num
-       adrp    x6, :got:req_erase
+       ldrb    w0, [x20,7]
+       cbz     w0, .L1885
+       adrp    x25, .LANCHOR0
        mov     x3, 56
-       mov     w7, 65535
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w5, [x0]
+       add     x0, x25, :lo12:.LANCHOR0
+       mov     w6, 65535
+       ldrh    w5, [x0,1952]
        mov     x0, 0
-       mov     w25, w0
-       b       .L1737
-.L1736:
-       adrp    x0, :got:p_valid_page_count_table
-       ubfiz   x1, x26, 1, 16
+       mov     w26, w0
+       b       .L1886
+.L1885:
+       ubfiz   x0, x22, 1, 16
+       ldr     x1, [x19,-40]
        mov     w2, -1
-       ldr     x0, [x0, #:got_lo12:p_valid_page_count_table]
-       ldr     x0, [x0]
-       strh    w2, [x0,x1]
-       b       .L1780
-.L1740:
-       ldr     x1, [x6, #:got_lo12:req_erase]
-       ldr     x4, [x1]
+       strh    w2, [x1,x0]
+       b       .L1930
+.L1889:
+       ldr     x4, [x19,-88]
        madd    x1, x0, x3, x4
        str     xzr, [x1,16]
        str     xzr, [x1,8]
-       add     x1, x19, x0, lsl 1
+       add     x1, x20, x0, lsl 1
        ldrh    w1, [x1,16]
-       cmp     w1, w7
-       beq     .L1739
-       umull   x2, w25, w3
-       add     w25, w25, 1
+       cmp     w1, w6
+       beq     .L1888
+       umull   x2, w26, w3
+       add     w26, w26, 1
        lsl     w1, w1, 10
        add     x2, x4, x2
-       uxth    w25, w25
+       uxth    w26, w26
        str     w1, [x2,4]
-.L1739:
+.L1888:
        add     x0, x0, 1
-.L1737:
+.L1886:
        cmp     w5, w0, uxth
-       adrp    x23, :got:req_erase
-       bhi     .L1740
-       adrp    x1, :got:g_active_superblock
-       uxtw    x27, w26
-       adrp    x0, :got:p_erase_count_table
-       ldr     x1, [x1, #:got_lo12:g_active_superblock]
-       cmp     x19, x1
-       bne     .L1741
-       ldr     x2, [x21, #:got_lo12:g_inkDie_check_enable]
-       ldr     w2, [x2]
-       cbz     w2, .L1741
-       ldr     x2, [x0, #:got_lo12:p_erase_count_table]
-       ldr     x2, [x2]
-       ldrh    w2, [x2,x27,lsl 1]
-       cmp     w2, 30
-       bls     .L1741
-       strb    wzr, [x1,8]
-.L1741:
-       ldrb    w5, [x19,8]
-       adrp    x1, :got:c_mlc_erase_count_value
-       adrp    x3, :got:g_totle_mlc_erase_count
-       adrp    x2, :got:g_totle_slc_erase_count
-       ldr     x6, [x0, #:got_lo12:p_erase_count_table]
-       cbnz    w5, .L1742
-       lsl     x5, x27, 1
-       ldr     x6, [x6]
-       mov     w7, 2
-       ldrh    w8, [x6,x5]
-       cbz     w8, .L1781
-       ldr     x7, [x1, #:got_lo12:c_mlc_erase_count_value]
-       ldrh    w7, [x7]
-       add     w7, w8, w7
-.L1781:
-       strh    w7, [x6,x5]
-       ldr     x6, [x3, #:got_lo12:g_totle_mlc_erase_count]
-       b       .L1782
-.L1742:
-       lsl     x5, x27, 1
-       ldr     x7, [x6]
-       ldrh    w6, [x7,x5]
-       add     w6, w6, 1
-       strh    w6, [x7,x5]
-       ldr     x6, [x2, #:got_lo12:g_totle_slc_erase_count]
-.L1782:
-       ldr     w5, [x6]
+       bhi     .L1889
+       cmp     x20, x19
+       uxtw    x27, w22
+       bne     .L1890
+       ldr     w0, [x19,160]
+       cbz     w0, .L1890
+       ldr     x0, [x19,-80]
+       ldrh    w0, [x0,x27,lsl 1]
+       cmp     w0, 30
+       bls     .L1890
+       strb    wzr, [x19,8]
+.L1890:
+       ldrb    w0, [x20,8]
+       cbnz    w0, .L1891
+       lsl     x0, x27, 1
+       ldr     x1, [x19,-80]
+       mov     w2, 2
+       ldrh    w3, [x1,x0]
+       cbz     w3, .L1931
+       add     x2, x25, :lo12:.LANCHOR0
+       ldrh    w2, [x2,2016]
+       add     w2, w3, w2
+.L1931:
+       strh    w2, [x1,x0]
+       mov     w1, 0
+       ldr     w0, [x19,204]
+       add     w0, w0, 1
+       str     w0, [x19,204]
+       mov     w0, w22
+       bl      ftl_set_blk_mode
+       b       .L1894
+.L1891:
+       lsl     x0, x27, 1
+       ldr     x2, [x19,-80]
+       ldrh    w1, [x2,x0]
+       add     w1, w1, 1
+       strh    w1, [x2,x0]
+       ldr     w0, [x19,208]
+       add     w0, w0, 1
+       str     w0, [x19,208]
+       mov     w0, w22
+       bl      ftl_set_blk_mode.part.8
+.L1894:
        lsl     x27, x27, 1
-       add     w5, w5, 1
-       str     w5, [x6]
-       ldr     x0, [x0, #:got_lo12:p_erase_count_table]
-       ldr     x0, [x0]
-       ldrh    w5, [x0,x27]
-       adrp    x0, :got:g_max_erase_count
-       ldr     x0, [x0, #:got_lo12:g_max_erase_count]
-       ldr     w6, [x0]
-       cmp     w5, w6
-       bls     .L1746
-       str     w5, [x0]
-.L1746:
-       ldr     x1, [x1, #:got_lo12:c_mlc_erase_count_value]
-       adrp    x5, :got:g_totle_avg_erase_count
-       ldr     x3, [x3, #:got_lo12:g_totle_mlc_erase_count]
-       ldr     x2, [x2, #:got_lo12:g_totle_slc_erase_count]
-       ldrh    w1, [x1]
-       ldr     w3, [x3]
-       ldr     w0, [x2]
-       ldr     x5, [x5, #:got_lo12:g_totle_avg_erase_count]
+       ldr     x0, [x19,-80]
+       ldr     w1, [x19,216]
+       ldrh    w0, [x0,x27]
+       cmp     w0, w1
+       bls     .L1895
+       str     w0, [x19,216]
+.L1895:
+       add     x2, x25, :lo12:.LANCHOR0
+       ldr     w3, [x19,204]
+       ldr     w0, [x19,208]
+       ldrh    w1, [x2,2016]
        madd    w0, w1, w3, w0
-       adrp    x1, :got:c_ftl_nand_data_blks_per_plane
+       ldrh    w1, [x2,1960]
        mov     x3, 56
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w1, [x1]
        udiv    w0, w0, w1
-       str     w0, [x5]
-       adrp    x0, :got:gp_ect_tbl_info
-       ldr     x0, [x0, #:got_lo12:gp_ect_tbl_info]
-       ldr     x1, [x0]
+       ldr     x1, [x19,2152]
+       str     w0, [x19,212]
        ldr     w0, [x1,16]
        add     w0, w0, 1
        str     w0, [x1,16]
        mov     x0, 0
-.L1747:
-       cmp     w25, w0, uxth
-       bls     .L1783
-       ldr     x1, [x23, #:got_lo12:req_erase]
-       ldr     x1, [x1]
+.L1896:
+       cmp     w26, w0, uxth
+       bls     .L1932
+       ldr     x1, [x19,-88]
        madd    x1, x0, x3, x1
        add     x0, x0, 1
        ldr     w2, [x1,4]
        and     w2, w2, -1024
        str     w2, [x1,4]
-       b       .L1747
-.L1783:
-       ldr     x0, [x23, #:got_lo12:req_erase]
-       mov     w1, w25
+       b       .L1896
+.L1932:
+       ldrb    w1, [x20,8]
+       mov     w2, w26
+       ldr     x0, [x19,-88]
        mov     x28, 0
-       ldr     x0, [x0]
        bl      FlashEraseBlocks
        mov     w1, w28
        mov     x3, 56
-.L1749:
-       cmp     w25, w28, uxth
-       bls     .L1784
-       ldr     x2, [x23, #:got_lo12:req_erase]
+.L1898:
+       cmp     w26, w28, uxth
+       bls     .L1933
        mul     x0, x28, x3
-       ldr     x2, [x2]
-       add     x5, x2, x0
+       ldr     x2, [x19,-88]
+       add     x4, x2, x0
        ldr     w2, [x2,x0]
        cmn     w2, #1
-       bne     .L1750
-       ldr     w0, [x5,4]
+       bne     .L1899
+       ldr     w0, [x4,4]
        add     w1, w1, 1
        str     x3, [x29,96]
        lsr     w0, w0, 10
@@ -13279,58 +12991,54 @@ allocate_data_superblock:
        str     x1, [x29,112]
        str     x1, [x29,120]
        bl      FtlBbmMapBadBlock
-       add     x0, x19, x28, lsl 1
+       add     x0, x20, x28, lsl 1
        ldr     x2, [x29,104]
        ldr     x3, [x29,96]
        ldr     x1, [x29,120]
        strh    w2, [x0,16]
-       ldrb    w0, [x19,7]
+       ldrb    w0, [x20,7]
        sub     w0, w0, #1
-       strb    w0, [x19,7]
-.L1750:
+       strb    w0, [x20,7]
+.L1899:
        add     x28, x28, 1
-       b       .L1749
-.L1784:
-       cbz     w1, .L1752
-       mov     w0, w26
+       b       .L1898
+.L1933:
+       cbz     w1, .L1901
+       mov     w0, w22
        bl      update_multiplier_value
        bl      FtlBbmTblFlush
-.L1752:
-       ldrb    w1, [x19,7]
-       adrp    x0, :got:p_valid_page_count_table
-       cbnz    w1, .L1753
-       ldr     x0, [x0, #:got_lo12:p_valid_page_count_table]
+.L1901:
+       ldrb    w0, [x20,7]
+       cbnz    w0, .L1902
+       ldr     x0, [x19,-40]
        mov     w1, -1
-       ldr     x0, [x0]
        strh    w1, [x0,x27]
-.L1780:
-       mov     w0, w26
+.L1930:
+       mov     w0, w22
        bl      INSERT_DATA_LIST
-       b       .L1731
-.L1753:
-       adrp    x2, :got:c_ftl_nand_page_pre_blk
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
-       strh    wzr, [x19,2]
-       strb    wzr, [x19,6]
-       ldrh    w2, [x2]
-       strh    w26, [x19]
-       mul     w1, w1, w2
-       adrp    x2, :got:g_GlobalSysVersion
-       uxth    w1, w1
-       strh    w1, [x19,4]
-       ldr     x2, [x2, #:got_lo12:g_GlobalSysVersion]
-       ldr     w3, [x2]
-       str     w3, [x19,12]
-       add     w3, w3, 1
-       str     w3, [x2]
-       ldr     x0, [x0, #:got_lo12:p_valid_page_count_table]
-       ldrh    w2, [x19]
-       ldr     x0, [x0]
-       strh    w1, [x0,x2,lsl 1]
-       mov     w0, 0
-       ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
-       ldp     x23, x24, [sp,48]
+       b       .L1880
+.L1902:
+       add     x25, x25, :lo12:.LANCHOR0
+       strh    wzr, [x20,2]
+       strb    wzr, [x20,6]
+       ldrh    w1, [x25,2026]
+       strh    w22, [x20]
+       mul     w0, w0, w1
+       adrp    x1, .LANCHOR2
+       add     x1, x1, :lo12:.LANCHOR2
+       uxth    w0, w0
+       strh    w0, [x20,4]
+       ldr     w2, [x1,196]
+       str     w2, [x20,12]
+       add     w2, w2, 1
+       str     w2, [x1,196]
+       ldr     x1, [x1,-40]
+       ldrh    w2, [x20]
+       strh    w0, [x1,x2,lsl 1]
+       mov     w0, 0
+       ldp     x19, x20, [sp,16]
+       ldp     x21, x22, [sp,32]
+       ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
        ldp     x29, x30, [sp], 128
@@ -13340,86 +13048,77 @@ allocate_data_superblock:
        .global FtlGcFreeBadSuperBlk
        .type   FtlGcFreeBadSuperBlk, %function
 FtlGcFreeBadSuperBlk:
-       stp     x29, x30, [sp, -112]!
+       stp     x29, x30, [sp, -80]!
        add     x29, sp, 0
-       stp     x21, x22, [sp,32]
-       adrp    x21, :got:g_gc_bad_block_temp_num
-       stp     x23, x24, [sp,48]
-       uxth    w24, w0
-       ldr     x0, [x21, #:got_lo12:g_gc_bad_block_temp_num]
        stp     x19, x20, [sp,16]
-       stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
+       adrp    x19, .LANCHOR2
+       str     x25, [sp,64]
+       add     x19, x19, :lo12:.LANCHOR2
+       stp     x23, x24, [sp,48]
+       uxth    w23, w0
+       ldrh    w0, [x19,956]
+       stp     x21, x22, [sp,32]
+       mov     w21, 0
+       cbz     w0, .L1936
+       adrp    x22, .LANCHOR0
+       adrp    x24, .LC111
+       add     x22, x22, :lo12:.LANCHOR0
+       add     x24, x24, :lo12:.LC111
+.L1944:
+       ldrh    w0, [x22,1952]
+       cmp     w0, w21
+       bls     .L1945
+       add     x0, x22, 1984
+       mov     w1, w23
        mov     w20, 0
-       ldrh    w0, [x0]
-       cbz     w0, .L1787
-       adrp    x22, .LC109
-       adrp    x23, :got:c_ftl_nand_planes_num
-       adrp    x25, :got:p_plane_order_table
-       adrp    x26, :got:g_gc_bad_block_temp_tbl
-       add     x22, x22, :lo12:.LC109
-.L1795:
-       ldr     x0, [x23, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       cmp     w0, w20
-       bls     .L1796
-       ldr     x0, [x25, #:got_lo12:p_plane_order_table]
-       mov     w1, w24
-       mov     w19, 0
-       ldrb    w0, [x0,w20,sxtw]
+       ldrb    w0, [x0,w21,sxtw]
        bl      V2P_block
-       uxth    w27, w0
-.L1788:
-       ldr     x28, [x21, #:got_lo12:g_gc_bad_block_temp_num]
-       ldrh    w0, [x28]
-       cmp     w0, w19
-       bls     .L1797
-       ldr     x0, [x26, #:got_lo12:g_gc_bad_block_temp_tbl]
-       adrp    x4, :got:g_gc_bad_block_temp_tbl
-       ldrh    w0, [x0,w19,sxtw 1]
-       cmp     w0, w27
-       bne     .L1789
-       mov     w1, w27
-       mov     x0, x22
-       str     x4, [x29,104]
+       uxth    w25, w0
+.L1937:
+       ldrh    w0, [x19,956]
+       cmp     w0, w20
+       bls     .L1946
+       add     x0, x19, 960
+       ldrh    w0, [x0,w20,sxtw 1]
+       cmp     w0, w25
+       bne     .L1938
+       mov     w1, w25
+       mov     x0, x24
        bl      printk
-       mov     w0, w27
+       mov     w0, w25
        bl      FtlBbmMapBadBlock
        bl      FtlBbmTblFlush
-       ldrh    w2, [x28]
-       mov     w3, w19
-       ldr     x4, [x29,104]
-.L1790:
+       ldrh    w2, [x19,956]
+       mov     w3, w20
+.L1939:
        cmp     w3, w2
-       bcs     .L1798
-       ldr     x1, [x4, #:got_lo12:g_gc_bad_block_temp_tbl]
+       bcs     .L1947
+       add     x4, x19, 960
        add     w0, w3, 1
-       ldrh    w5, [x1,w0,sxtw 1]
-       strh    w5, [x1,w3,sxtw 1]
+       ldrh    w1, [x4,w0,sxtw 1]
+       strh    w1, [x4,w3,sxtw 1]
        uxth    w3, w0
-       b       .L1790
-.L1798:
-       ldr     x0, [x21, #:got_lo12:g_gc_bad_block_temp_num]
+       b       .L1939
+.L1947:
        sub     w2, w2, #1
-       strh    w2, [x0]
-.L1789:
-       add     w19, w19, 1
-       uxth    w19, w19
-       b       .L1788
-.L1797:
+       strh    w2, [x19,956]
+.L1938:
        add     w20, w20, 1
        uxth    w20, w20
-       b       .L1795
-.L1796:
+       b       .L1937
+.L1946:
+       add     w21, w21, 1
+       uxth    w21, w21
+       b       .L1944
+.L1945:
        bl      FtlGcReFreshBadBlk
-.L1787:
+.L1936:
        mov     w0, 0
+       ldr     x25, [sp,64]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
-       ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 112
+       ldp     x29, x30, [sp], 80
        ret
        .size   FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
        .align  2
@@ -13428,63 +13127,52 @@ FtlGcFreeBadSuperBlk:
 update_vpc_list:
        stp     x29, x30, [sp, -32]!
        add     x29, sp, 0
-       str     x19, [sp,16]
+       stp     x19, x20, [sp,16]
        uxth    w19, w0
-       adrp    x0, :got:p_valid_page_count_table
-       ubfiz   x1, x19, 1, 16
-       ldr     x0, [x0, #:got_lo12:p_valid_page_count_table]
-       ldr     x0, [x0]
-       ldrh    w1, [x0,x1]
-       cbnz    w1, .L1800
-       adrp    x0, :got:g_gc_superblock
-       ldr     x0, [x0, #:got_lo12:g_gc_superblock]
-       ldrh    w2, [x0]
-       cmp     w2, w19
-       bne     .L1801
-       mov     w1, -1
-       strh    w1, [x0]
-       b       .L1802
-.L1801:
-       adrp    x0, :got:g_active_superblock
-       ldr     x0, [x0, #:got_lo12:g_active_superblock]
-       ldrh    w2, [x0]
-       mov     w0, w1
-       cmp     w2, w19
-       beq     .L1803
-       adrp    x0, :got:g_buffer_superblock
-       ldr     x0, [x0, #:got_lo12:g_buffer_superblock]
-       ldrh    w2, [x0]
-       mov     w0, w1
-       cmp     w2, w19
-       beq     .L1803
-       adrp    x0, :got:g_gc_temp_superblock
-       ldr     x0, [x0, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w2, [x0]
-       mov     w0, w1
-       cmp     w2, w19
-       beq     .L1803
-.L1802:
-       adrp    x0, :got:p_data_block_list_head
+       adrp    x0, .LANCHOR2
+       add     x1, x0, :lo12:.LANCHOR2
+       ubfiz   x2, x19, 1, 16
+       mov     x20, x0
+       ldr     x3, [x1,-40]
+       ldrh    w2, [x3,x2]
+       cbnz    w2, .L1949
+       ldrh    w3, [x1,296]
+       cmp     w3, w19
+       bne     .L1950
+       mov     w0, -1
+       strh    w0, [x1,296]
+       b       .L1951
+.L1950:
+       ldrh    w3, [x0,#:lo12:.LANCHOR2]
+       mov     w0, w2
+       cmp     w3, w19
+       beq     .L1952
+       ldrh    w3, [x1,48]
+       cmp     w3, w19
+       beq     .L1952
+       ldrh    w1, [x1,96]
+       cmp     w1, w19
+       beq     .L1952
+.L1951:
+       add     x20, x20, :lo12:.LANCHOR2
        mov     w1, w19
-       ldr     x0, [x0, #:got_lo12:p_data_block_list_head]
+       sub     x0, x20, #48
        bl      List_remove_node
-       adrp    x0, :got:g_num_data_superblocks
-       ldr     x0, [x0, #:got_lo12:g_num_data_superblocks]
-       ldrh    w1, [x0]
-       sub     w1, w1, #1
-       strh    w1, [x0]
+       ldrh    w0, [x20,-24]
+       sub     w0, w0, #1
+       strh    w0, [x20,-24]
        mov     w0, w19
        bl      free_data_superblock
        mov     w0, w19
        bl      FtlGcFreeBadSuperBlk
        mov     w0, 1
-       b       .L1803
-.L1800:
+       b       .L1952
+.L1949:
        mov     w0, w19
        bl      List_update_data_list
        mov     w0, 0
-.L1803:
-       ldr     x19, [sp,16]
+.L1952:
+       ldp     x19, x20, [sp,16]
        ldp     x29, x30, [sp], 32
        ret
        .size   update_vpc_list, .-update_vpc_list
@@ -13498,44 +13186,43 @@ decrement_vpc_count:
        add     x29, sp, 0
        str     x19, [sp,16]
        cmp     w1, w0
-       beq     .L1808
-       adrp    x0, :got:p_valid_page_count_table
-       ubfiz   x2, x1, 1, 16
-       ldr     x0, [x0, #:got_lo12:p_valid_page_count_table]
-       ldr     x0, [x0]
-       ldrh    w19, [x0,x2]
-       cbnz    w19, .L1809
-       adrp    x0, .LC110
+       adrp    x2, .LANCHOR2
+       beq     .L1957
+       add     x0, x2, :lo12:.LANCHOR2
+       ubfiz   x3, x1, 1, 16
+       ldr     x0, [x0,-40]
+       ldrh    w19, [x0,x3]
+       cbnz    w19, .L1958
+       adrp    x0, .LC112
        mov     w2, w19
-       add     x0, x0, :lo12:.LC110
+       add     x0, x0, :lo12:.LC112
        bl      printk
-       b       .L1813
-.L1809:
+       b       .L1962
+.L1958:
        sub     w19, w19, #1
-       strh    w19, [x0,x2]
-.L1808:
-       adrp    x19, :got:g_tmp_data_superblock_id
+       strh    w19, [x0,x3]
+.L1957:
+       add     x19, x2, :lo12:.LANCHOR2
        mov     w0, 65535
-       ldr     x19, [x19, #:got_lo12:g_tmp_data_superblock_id]
-       ldrh    w2, [x19]
+       ldrh    w2, [x19,2320]
        cmp     w2, w0
-       bne     .L1811
-       strh    w1, [x19]
-.L1813:
+       bne     .L1960
+       strh    w1, [x19,2320]
+.L1962:
        mov     w0, 0
-       b       .L1810
-.L1811:
+       b       .L1959
+.L1960:
        cmp     w2, w1
        str     x1, [x29,40]
        mov     w0, 0
-       beq     .L1810
+       beq     .L1959
        mov     w0, w2
        bl      update_vpc_list
        cmp     w0, wzr
        ldr     x1, [x29,40]
        cset    w0, ne
-       strh    w1, [x19]
-.L1810:
+       strh    w1, [x19,2320]
+.L1959:
        ldr     x19, [sp,16]
        ldp     x29, x30, [sp], 48
        ret
@@ -13549,56 +13236,84 @@ FtlSlcSuperblockCheck:
        stp     x19, x20, [sp,16]
        stp     x21, x22, [sp,32]
        ldrh    w1, [x0,4]
-       cbz     w1, .L1814
+       cbz     w1, .L1963
        mov     x19, x0
        ldrb    w0, [x0,6]
-       mov     w20, 65535
-       adrp    x21, :got:mlcPageToSlcPageTbl
+       adrp    x20, .LANCHOR2
+       mov     w21, 65535
        add     x0, x0, 8
-       adrp    x22, :got:c_ftl_nand_planes_num
+       add     x20, x20, :lo12:.LANCHOR2
+       adrp    x22, .LANCHOR0
+       add     x20, x20, 996
        ldrh    w0, [x19,x0,lsl 1]
-.L1817:
-       cmp     w0, w20
-       bne     .L1821
-.L1819:
+.L1966:
+       cmp     w0, w21
+       bne     .L1974
+.L1968:
        ldrb    w0, [x19,6]
+       add     x1, x22, :lo12:.LANCHOR0
        add     w0, w0, 1
+       ldrh    w1, [x1,1952]
        uxtb    w0, w0
        strb    w0, [x19,6]
-       ldr     x1, [x22, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w1, [x1]
        cmp     w1, w0
-       bne     .L1818
+       bne     .L1967
        ldrh    w0, [x19,2]
        strb    wzr, [x19,6]
        add     w0, w0, 1
        strh    w0, [x19,2]
-.L1818:
+.L1967:
        ldrb    w0, [x19,6]
        add     x0, x0, 8
        ldrh    w0, [x19,x0,lsl 1]
-       b       .L1817
-.L1821:
-       ldrb    w0, [x19,8]
-       cmp     w0, 1
-       bne     .L1814
-       ldr     x0, [x21, #:got_lo12:mlcPageToSlcPageTbl]
-       ldrh    w1, [x19,2]
-       ldrh    w0, [x0,w1,sxtw 1]
-       cmp     w0, w20
-       bne     .L1814
+       b       .L1966
+.L1974:
+       ldrb    w1, [x19,8]
+       cmp     w1, 1
+       bne     .L1969
+       add     x0, x22, :lo12:.LANCHOR0
+       ldrb    w0, [x0,120]
+       cbnz    w0, .L1969
+       ldrh    w0, [x19,2]
+       ldrh    w0, [x20,w0,sxtw 1]
+       cmp     w0, w21
+       bne     .L1969
        ldrh    w0, [x19,4]
        sub     w0, w0, #1
        strh    w0, [x19,4]
        ldrh    w0, [x19]
        bl      decrement_vpc_count
        ldrh    w1, [x19,4]
-       cbnz    w1, .L1819
+       cbnz    w1, .L1968
        ldrh    w0, [x19,2]
        strb    w1, [x19,6]
        add     w0, w0, 1
        strh    w0, [x19,2]
-.L1814:
+       b       .L1963
+.L1969:
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       ldrb    w2, [x0,120]
+       cbz     w2, .L1963
+       cmp     w1, 1
+       bne     .L1963
+       ldrh    w2, [x19,2]
+       ldrh    w1, [x0,2028]
+       cmp     w2, w1
+       bcc     .L1963
+       adrp    x2, .LANCHOR2-40
+       ldrh    w1, [x19]
+       ldrh    w4, [x19,4]
+       lsl     x1, x1, 1
+       ldr     x3, [x2,#:lo12:.LANCHOR2-40]
+       ldrh    w2, [x3,x1]
+       sub     w2, w2, w4
+       strh    w2, [x3,x1]
+       strh    wzr, [x19,4]
+       ldrh    w0, [x0,2026]
+       strh    w0, [x19,2]
+       strb    wzr, [x19,6]
+.L1963:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x29, x30, [sp], 48
@@ -13610,99 +13325,127 @@ FtlSlcSuperblockCheck:
 get_new_active_ppa:
        stp     x29, x30, [sp, -64]!
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
        stp     x21, x22, [sp,32]
+       stp     x19, x20, [sp,16]
        stp     x23, x24, [sp,48]
        mov     x19, x0
        strb    wzr, [x0,10]
        ldrb    w0, [x0,6]
-       mov     w20, 65535
-       adrp    x21, :got:c_ftl_nand_planes_num
-       adrp    x23, :got:mlcPageToSlcPageTbl
+       adrp    x21, .LANCHOR2
+       add     x21, x21, :lo12:.LANCHOR2
+       mov     w22, 65535
        add     x0, x0, 8
+       adrp    x23, .LANCHOR0
+       add     x21, x21, 996
        ldrh    w0, [x19,x0,lsl 1]
-.L1823:
-       cmp     w0, w20
-       adrp    x22, :got:c_ftl_nand_planes_num
-       bne     .L1835
-.L1824:
+.L1976:
+       cmp     w0, w22
+       adrp    x20, .LANCHOR0
+       bne     .L1991
+.L1977:
        ldrb    w0, [x19,6]
+       add     x1, x23, :lo12:.LANCHOR0
        add     w0, w0, 1
+       ldrh    w1, [x1,1952]
        uxtb    w0, w0
        strb    w0, [x19,6]
-       ldr     x1, [x21, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w1, [x1]
        cmp     w1, w0
-       bne     .L1825
+       bne     .L1978
        ldrh    w0, [x19,2]
        strb    wzr, [x19,6]
        add     w0, w0, 1
        strh    w0, [x19,2]
-.L1825:
+.L1978:
        ldrb    w0, [x19,6]
        add     x0, x0, 8
        ldrh    w0, [x19,x0,lsl 1]
-       b       .L1823
-.L1835:
+       b       .L1976
+.L1991:
        ldrb    w1, [x19,8]
        cmp     w1, 1
-       bne     .L1826
-       ldr     x1, [x23, #:got_lo12:mlcPageToSlcPageTbl]
-       ldrh    w2, [x19,2]
-       ldrh    w1, [x1,w2,sxtw 1]
-       cmp     w1, w20
-       bne     .L1826
+       bne     .L1979
+       add     x1, x23, :lo12:.LANCHOR0
+       ldrb    w1, [x1,120]
+       cbnz    w1, .L1979
+       ldrh    w1, [x19,2]
+       ldrh    w1, [x21,w1,sxtw 1]
+       cmp     w1, w22
+       bne     .L1979
        ldrh    w0, [x19,4]
        sub     w0, w0, #1
        strh    w0, [x19,4]
        ldrh    w0, [x19]
        bl      decrement_vpc_count
-       b       .L1824
-.L1826:
-       ldrh    w20, [x19,2]
-       mov     w21, 65535
-       mov     w23, w21
-       adrp    x24, :got:mlcPageToSlcPageTbl
-       orr     w20, w20, w0, lsl 10
-       ldrh    w0, [x19,4]
-       sub     w0, w0, #1
-       strh    w0, [x19,4]
-.L1827:
-       ldr     x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
+       b       .L1977
+.L1979:
+       ldrh    w1, [x19,4]
+       adrp    x21, .LANCHOR2
+       ldrh    w22, [x19,2]
+       mov     w23, 65535
+       add     x21, x21, :lo12:.LANCHOR2
+       sub     w1, w1, #1
+       orr     w22, w22, w0, lsl 10
+       strh    w1, [x19,4]
+       mov     w24, w23
+       add     x21, x21, 996
+.L1980:
+       add     x0, x20, :lo12:.LANCHOR0
        ldrb    w1, [x19,6]
-       ldrh    w2, [x0]
-.L1829:
+       ldrh    w2, [x0,1952]
+.L1982:
        add     w1, w1, 1
        uxtb    w1, w1
        cmp     w1, w2
-       bne     .L1828
-       ldrh    w0, [x19,2]
+       bne     .L1981
+       ldrh    w1, [x19,2]
+       add     w1, w1, 1
+       strh    w1, [x19,2]
        mov     w1, 0
-       add     w0, w0, 1
-       strh    w0, [x19,2]
-.L1828:
+.L1981:
        add     x0, x19, x1, sxtw 1
        ldrh    w0, [x0,16]
-       cmp     w0, w21
-       beq     .L1829
+       cmp     w0, w23
+       beq     .L1982
        ldrb    w0, [x19,8]
        strb    w1, [x19,6]
        cmp     w0, 1
-       bne     .L1830
-       ldr     x0, [x24, #:got_lo12:mlcPageToSlcPageTbl]
-       ldrh    w1, [x19,2]
-       ldrh    w0, [x0,w1,sxtw 1]
-       cmp     w0, w23
-       bne     .L1830
-       ldrh    w0, [x19,4]
-       cbz     w0, .L1830
-       sub     w0, w0, #1
-       strh    w0, [x19,4]
+       bne     .L1987
+       add     x0, x20, :lo12:.LANCHOR0
+       ldrb    w0, [x0,120]
+       cbnz    w0, .L1984
+       ldrh    w0, [x19,2]
+       ldrh    w0, [x21,w0,sxtw 1]
+       cmp     w0, w24
+       bne     .L1984
+       ldrh    w1, [x19,4]
+       cbz     w1, .L1984
        ldrh    w0, [x19]
+       sub     w1, w1, #1
+       strh    w1, [x19,4]
        bl      decrement_vpc_count
-       b       .L1827
-.L1830:
-       mov     w0, w20
+       b       .L1980
+.L1984:
+       add     x20, x20, :lo12:.LANCHOR0
+       ldrb    w0, [x20,120]
+       cbz     w0, .L1987
+       ldrh    w1, [x19,2]
+       ldrh    w0, [x20,2028]
+       cmp     w1, w0
+       bcc     .L1987
+       adrp    x0, .LANCHOR2-40
+       ldrh    w1, [x19]
+       ldrh    w3, [x19,4]
+       lsl     x1, x1, 1
+       ldr     x0, [x0,#:lo12:.LANCHOR2-40]
+       ldrh    w2, [x0,x1]
+       sub     w2, w2, w3
+       strh    w2, [x0,x1]
+       strh    wzr, [x19,4]
+       ldrh    w0, [x20,2026]
+       strh    w0, [x19,2]
+       strb    wzr, [x19,6]
+.L1987:
+       mov     w0, w22
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -13713,220 +13456,288 @@ get_new_active_ppa:
        .global FtlVpcTblFlush
        .type   FtlVpcTblFlush, %function
 FtlVpcTblFlush:
-       stp     x29, x30, [sp, -96]!
+       stp     x29, x30, [sp, -80]!
+       adrp    x0, .LANCHOR2
        add     x29, sp, 0
-       stp     x23, x24, [sp,48]
-       adrp    x23, :got:p_sys_data_buf
-       adrp    x24, :got:p_sys_spare_buf
-       stp     x21, x22, [sp,32]
-       adrp    x21, :got:req_sys
-       adrp    x22, :got:gSysInfo
-       ldr     x0, [x23, #:got_lo12:p_sys_data_buf]
-       stp     x25, x26, [sp,64]
        stp     x19, x20, [sp,16]
-       stp     x27, x28, [sp,80]
-       ldr     x26, [x21, #:got_lo12:req_sys]
-       adrp    x19, :got:g_sys_save_data
-       ldr     x0, [x0]
-       adrp    x25, :got:g_GlobalSysVersion
-       mov     w28, 65535
-       str     x0, [x26,8]
-       ldr     x0, [x24, #:got_lo12:p_sys_spare_buf]
-       ldr     x20, [x0]
-       str     x20, [x26,16]
-       ldr     x0, [x22, #:got_lo12:gSysInfo]
-       str     wzr, [x20,12]
-       ldrh    w1, [x0]
-       strh    w1, [x20,2]
-       mov     w1, -3932
-       strh    w1, [x20]
-       ldr     w1, [x0,8]
-       str     w1, [x20,4]
-       mov     w1, 19539
-       str     wzr, [x20,8]
-       movk    w1, 0x4654, lsl 16
-       ldrh    w0, [x0,6]
-       ldr     x19, [x19, #:got_lo12:g_sys_save_data]
-       str     w1, [x19]
-       mov     w1, 39
-       strh    w0, [x19,8]
-       adrp    x0, :got:c_ftl_nand_die_num
-       movk    w1, 0x5000, lsl 16
-       str     w1, [x19,4]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_die_num]
-       ldrh    w0, [x0]
-       strb    w0, [x19,10]
-       adrp    x0, :got:g_active_superblock
-       ldr     x0, [x0, #:got_lo12:g_active_superblock]
-       ldrh    w1, [x0]
-       strh    w1, [x19,14]
-       ldrh    w1, [x0,2]
-       ldrb    w2, [x0,6]
-       ldrb    w0, [x0,8]
-       strb    w0, [x19,11]
-       adrp    x0, :got:g_buffer_superblock
-       orr     w1, w2, w1, lsl 6
-       strh    w1, [x19,16]
-       ldr     x0, [x0, #:got_lo12:g_buffer_superblock]
-       ldrh    w1, [x0]
-       strh    w1, [x19,18]
-       ldrh    w1, [x0,2]
-       ldrb    w2, [x0,6]
-       ldrb    w0, [x0,8]
-       strb    w0, [x19,12]
-       adrp    x0, :got:g_gc_temp_superblock
+       add     x19, x0, :lo12:.LANCHOR2
+       adrp    x20, .LANCHOR4
+       add     x20, x20, :lo12:.LANCHOR4
+       str     x25, [sp,64]
+       add     x20, x20, 136
+       mov     w25, 65535
+       stp     x21, x22, [sp,32]
+       ldr     x22, [x19,2112]
+       add     x21, x19, 224
+       stp     x23, x24, [sp,48]
+       ldr     x1, [x19,-64]
+       adrp    x24, .LANCHOR0
+       str     x1, [x20,8]
+       add     x23, x24, :lo12:.LANCHOR0
+       str     x22, [x20,16]
+       ldrh    w2, [x19,280]
+       strh    w2, [x22,2]
+       mov     w2, -3932
+       strh    w2, [x22]
+       str     wzr, [x22,12]
+       ldr     w2, [x19,288]
+       str     w2, [x22,4]
+       mov     w2, 19539
+       str     wzr, [x22,8]
+       movk    w2, 0x4654, lsl 16
+       ldrh    w1, [x19,286]
+       ldrh    w0, [x0,#:lo12:.LANCHOR2]
+       strh    w1, [x19,232]
+       strh    w0, [x19,238]
+       ldrh    w1, [x23,1974]
+       ldrh    w0, [x19,2]
+       strb    w1, [x19,234]
+       ldrb    w1, [x19,6]
+       str     w2, [x19,224]
+       mov     w2, 54
+       orr     w0, w1, w0, lsl 6
+       movk    w2, 0x5000, lsl 16
+       strh    w0, [x19,240]
+       str     w2, [x19,228]
+       ldrb    w0, [x19,8]
+       strb    w0, [x19,235]
+       ldrh    w1, [x19,48]
+       strh    w1, [x19,242]
+       ldrh    w1, [x19,50]
+       ldrb    w2, [x19,54]
+       ldrb    w0, [x19,56]
        orr     w1, w2, w1, lsl 6
-       strh    w1, [x19,20]
-       ldr     x0, [x0, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w1, [x0]
-       strh    w1, [x19,22]
-       ldrh    w1, [x0,2]
-       ldrb    w2, [x0,6]
-       ldrb    w0, [x0,8]
-       strb    w0, [x19,13]
-       adrp    x0, :got:g_totle_mlc_erase_count
+       strb    w0, [x19,236]
+       strh    w1, [x19,244]
+       ldrb    w0, [x19,104]
+       ldrh    w1, [x19,96]
+       strh    w1, [x19,246]
+       strb    w0, [x19,237]
+       ldrh    w1, [x19,98]
+       ldr     w0, [x19,204]
+       ldrb    w2, [x19,102]
+       str     w0, [x19,256]
+       ldr     w0, [x19,196]
        orr     w1, w2, w1, lsl 6
-       strh    w1, [x19,24]
-       adrp    x2, :got:c_ftl_nand_byte_pre_page
+       str     w0, [x19,264]
+       ldr     w0, [x19,200]
+       str     w0, [x19,260]
+       ldrh    w2, [x23,2036]
+       ldr     x0, [x20,8]
+       strh    w1, [x19,248]
        mov     w1, 255
-       ldr     x0, [x0, #:got_lo12:g_totle_mlc_erase_count]
-       ldr     w0, [x0]
-       str     w0, [x19,32]
-       ldr     x0, [x25, #:got_lo12:g_GlobalSysVersion]
-       ldr     w0, [x0]
-       str     w0, [x19,40]
-       adrp    x0, :got:g_GlobalDataVersion
-       ldr     x0, [x0, #:got_lo12:g_GlobalDataVersion]
-       ldr     w0, [x0]
-       str     w0, [x19,36]
-       ldr     x0, [x26,8]
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
-       ldrh    w2, [x2]
        bl      ftl_memset
-       ldr     x0, [x26,8]
-       mov     x1, x19
+       ldr     x0, [x20,8]
+       mov     x1, x21
        mov     w2, 48
+       mov     x21, x24
        bl      ftl_memcpy
-       adrp    x2, :got:c_ftl_nand_data_blks_per_plane
-       adrp    x1, :got:p_valid_page_count_table
-       ldr     x0, [x26,8]
-       adrp    x26, :got:c_ftl_nand_page_pre_slc_blk
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_data_blks_per_plane]
+       ldr     x0, [x20,8]
+       ldrh    w2, [x23,1960]
+       ldr     x1, [x19,-40]
        add     x0, x0, 48
-       ldr     x1, [x1, #:got_lo12:p_valid_page_count_table]
-       ldrh    w2, [x2]
-       ldr     x1, [x1]
        lsl     w2, w2, 1
        bl      ftl_memcpy
+       ldrh    w2, [x23,1960]
+       ldr     x1, [x20,8]
+       uxth    x0, w2
+       lsr     w2, w2, 3
+       add     x0, x0, 24
+       add     w2, w2, 4
+       lsr     x0, x0, 1
+       add     x0, x1, x0, lsl 2
+       ldr     x1, [x24,#:lo12:.LANCHOR0]
+       bl      ftl_memcpy
        mov     w0, 0
        bl      FtlUpdateVaildLpn
-.L1837:
-       ldr     x0, [x23, #:got_lo12:p_sys_data_buf]
-       ldr     x27, [x21, #:got_lo12:req_sys]
-       ldr     x0, [x0]
-       str     x0, [x27,8]
-       ldr     x0, [x24, #:got_lo12:p_sys_spare_buf]
-       ldr     x0, [x0]
-       str     x0, [x27,16]
-       ldr     x19, [x22, #:got_lo12:gSysInfo]
-       ldrh    w0, [x19]
-       ldrh    w1, [x19,2]
-       orr     w0, w1, w0, lsl 10
+.L1993:
+       ldr     x0, [x19,-64]
+       str     x0, [x20,8]
+       ldrh    w1, [x19,280]
+       ldr     x0, [x19,2112]
+       str     x0, [x20,16]
+       ldrh    w0, [x19,282]
+       orr     w1, w0, w1, lsl 10
+       str     w1, [x20,4]
        mov     w1, 1
-       str     w0, [x27,4]
+       mov     x0, x20
        mov     w2, w1
        mov     w3, w1
-       mov     x0, x27
        bl      FlashProgPages
-       ldr     x0, [x26, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w1, [x19,2]
-       ldrh    w0, [x0]
-       sub     w0, w0, #1
-       cmp     w1, w0
-       blt     .L1838
-       ldrh    w0, [x19]
-       ldrh    w28, [x19,4]
-       strh    wzr, [x19,2]
-       strh    w0, [x19,4]
+       add     x1, x21, :lo12:.LANCHOR0
+       ldrh    w0, [x19,282]
+       ldrh    w1, [x1,2028]
+       sub     w1, w1, #1
+       cmp     w0, w1
+       blt     .L1994
+       ldrh    w0, [x19,280]
+       ldrh    w25, [x19,284]
+       strh    wzr, [x19,282]
+       strh    w0, [x19,284]
        bl      FtlFreeSysBlkQueueOut
-       strh    w0, [x19]
-       ldr     x2, [x25, #:got_lo12:g_GlobalSysVersion]
-       ldr     w1, [x2]
-       str     w1, [x19,8]
-       add     w3, w1, 1
-       str     w3, [x2]
+       ldr     w1, [x19,196]
+       str     w1, [x19,288]
+       add     w2, w1, 1
+       str     w2, [x19,196]
        ubfiz   w2, w0, 10, 16
-       str     w2, [x27,4]
-       str     w1, [x20,4]
+       str     w2, [x20,4]
+       str     w1, [x22,4]
        mov     w1, 1
-       strh    w0, [x20,2]
+       strh    w0, [x19,280]
        mov     w2, w1
-       mov     x0, x27
+       strh    w0, [x22,2]
        mov     w3, w1
+       mov     x0, x20
        bl      FlashProgPages
-.L1838:
-       ldr     x0, [x22, #:got_lo12:gSysInfo]
-       ldrh    w1, [x0,2]
+.L1994:
+       ldrh    w1, [x19,282]
+       ldr     w0, [x20]
        add     w1, w1, 1
+       cmn     w0, #1
        uxth    w1, w1
-       strh    w1, [x0,2]
-       ldr     x2, [x21, #:got_lo12:req_sys]
-       ldr     w2, [x2]
-       cmn     w2, #1
-       bne     .L1839
+       strh    w1, [x19,282]
+       bne     .L1995
        cmp     w1, 1
-       bne     .L1837
-       adrp    x1, :got:c_ftl_nand_page_pre_slc_blk
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w1, [x1]
+       bne     .L1993
+       add     x0, x21, :lo12:.LANCHOR0
+       ldrh    w1, [x0,2028]
        sub     w1, w1, #1
-       strh    w1, [x0,2]
-       b       .L1837
-.L1839:
+       strh    w1, [x19,282]
+       b       .L1993
+.L1995:
        cmp     w1, 1
-       beq     .L1837
+       beq     .L1993
        mov     w0, 65535
-       cmp     w28, w0
-       beq     .L1841
-       mov     w0, w28
+       cmp     w25, w0
+       beq     .L1997
+       mov     w0, w25
        mov     w1, 1
        bl      FtlFreeSysBlkQueueIn
-.L1841:
+.L1997:
        mov     w0, 0
+       ldr     x25, [sp,64]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
-       ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 96
+       ldp     x29, x30, [sp], 80
        ret
        .size   FtlVpcTblFlush, .-FtlVpcTblFlush
        .align  2
+       .global FtlSuperblockPowerLostFix
+       .type   FtlSuperblockPowerLostFix, %function
+FtlSuperblockPowerLostFix:
+       stp     x29, x30, [sp, -144]!
+       adrp    x1, __stack_chk_guard
+       add     x29, sp, 0
+       stp     x19, x20, [sp,16]
+       mov     x19, x0
+       adrp    x20, .LANCHOR2
+       ldr     x0, [x1,#:lo12:__stack_chk_guard]
+       str     x0, [x29,136]
+       add     x0, x20, :lo12:.LANCHOR2
+       stp     x21, x22, [sp,32]
+       stp     x23, x24, [sp,48]
+       stp     x25, x26, [sp,64]
+       mov     w23, 0
+       mov     x26, x1
+       ldr     x22, [x0,904]
+       adrp    x0, .LANCHOR0
+       add     x2, x0, :lo12:.LANCHOR0
+       mov     x21, x0
+       ldrb    w2, [x2,120]
+       cbz     w2, .L2002
+       ldrb    w0, [x19,8]
+       cmp     w0, 1
+       cset    w23, eq
+.L2002:
+       mov     w24, 7
+       mov     w25, -1
+.L2003:
+       subs    w24, w24, #1
+       beq     .L2004
+       ldrh    w0, [x19,4]
+       cbz     w0, .L2004
+       mov     x0, x19
+       bl      get_new_active_ppa
+       str     w0, [x29,84]
+       add     x1, x20, :lo12:.LANCHOR2
+       str     w25, [x29,104]
+       mov     w2, w23
+       mov     w3, 0
+       ldr     x0, [x1,-64]
+       str     x0, [x29,88]
+       ldr     x0, [x1,2112]
+       str     x0, [x29,96]
+       str     w25, [x22,8]
+       str     w25, [x22,12]
+       ldrh    w0, [x19]
+       strh    w0, [x22,2]
+       strh    wzr, [x22]
+       ldr     x22, [x1,2112]
+       ldr     w0, [x1,200]
+       str     w0, [x22,4]
+       add     w0, w0, 1
+       cmn     w0, #1
+       csel    w0, w0, wzr, ne
+       str     w0, [x1,200]
+       add     x0, x29, 80
+       mov     w1, 1
+       bl      FlashProgPages
+       ldrh    w0, [x19]
+       bl      decrement_vpc_count
+       b       .L2003
+.L2004:
+       add     x20, x20, :lo12:.LANCHOR2
+       ldrh    w0, [x19]
+       ldrh    w3, [x19,4]
+       lsl     x0, x0, 1
+       ldr     x2, [x20,-40]
+       ldrh    w1, [x2,x0]
+       sub     w1, w1, w3
+       strh    w1, [x2,x0]
+       add     x0, x21, :lo12:.LANCHOR0
+       strb    wzr, [x19,6]
+       strh    wzr, [x19,4]
+       ldr     x1, [x29,136]
+       ldrh    w0, [x0,2026]
+       strh    w0, [x19,2]
+       ldr     x0, [x26,#:lo12:__stack_chk_guard]
+       cmp     x1, x0
+       beq     .L2008
+       bl      __stack_chk_fail
+.L2008:
+       ldp     x19, x20, [sp,16]
+       ldp     x21, x22, [sp,32]
+       ldp     x23, x24, [sp,48]
+       ldp     x25, x26, [sp,64]
+       ldp     x29, x30, [sp], 144
+       ret
+       .size   FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
+       .align  2
        .global ftl_map_blk_gc
        .type   ftl_map_blk_gc, %function
 ftl_map_blk_gc:
-       stp     x29, x30, [sp, -96]!
+       stp     x29, x30, [sp, -80]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
        stp     x21, x22, [sp,32]
        stp     x23, x24, [sp,48]
        stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
        mov     x19, x0
-       adrp    x22, :got:c_ftl_nand_page_pre_slc_blk
+       adrp    x22, .LANCHOR0
        ldr     x20, [x0,16]
-       ldr     x24, [x0,40]
+       ldr     x23, [x0,40]
        bl      ftl_free_no_use_map_blk
        ldrh    w1, [x19,10]
        ldrh    w2, [x19,8]
        sub     w1, w1, #1
        cmp     w2, w1
-       blt     .L1846
+       blt     .L2015
        ubfiz   x1, x0, 1, 16
-       ldrh    w23, [x20,x1]
-       cbz     w23, .L1846
+       ldrh    w24, [x20,x1]
+       cbz     w24, .L2015
        ldr     w0, [x19,52]
-       cbnz    w0, .L1846
+       cbnz    w0, .L2015
        mov     w2, 1
        str     w2, [x19,52]
        strh    w0, [x20,x1]
@@ -13934,73 +13745,71 @@ ftl_map_blk_gc:
        ldrh    w1, [x19,2]
        sub     w0, w0, #1
        strh    w0, [x19,8]
-       ldr     x0, [x22, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w0, [x0]
+       add     x0, x22, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2028]
        cmp     w1, w0
-       bcc     .L1847
+       bcc     .L2016
        mov     x0, x19
        bl      ftl_map_blk_alloc_new_blk
-.L1847:
-       mov     w20, 0
-       adrp    x25, :got:req_sys
-       adrp    x26, :got:p_sys_data_buf_1
-       adrp    x27, :got:p_sys_spare_buf
-.L1848:
+.L2016:
+       adrp    x20, .LANCHOR4
+       mov     w21, 0
+       add     x20, x20, :lo12:.LANCHOR4
+       adrp    x26, .LANCHOR2
+       add     x20, x20, 136
+.L2017:
        ldrh    w0, [x19,6]
-       cmp     w0, w20
-       bls     .L1856
-       ubfiz   x28, x20, 2, 16
-       ldr     w0, [x24,x28]
-       cmp     w23, w0, lsr 10
-       bne     .L1849
-       ldr     x0, [x26, #:got_lo12:p_sys_data_buf_1]
+       cmp     w0, w21
+       bls     .L2025
+       ubfiz   x25, x21, 2, 16
+       ldr     w0, [x23,x25]
+       cmp     w24, w0, lsr 10
+       bne     .L2018
+       add     x0, x26, :lo12:.LANCHOR2
+       ldr     x1, [x0,2072]
+       ldr     x0, [x0,2112]
+       str     x1, [x20,8]
        mov     w1, 1
-       ldr     x21, [x25, #:got_lo12:req_sys]
+       str     x0, [x20,16]
        mov     w2, w1
-       ldr     x0, [x0]
-       str     x0, [x21,8]
-       ldr     x0, [x27, #:got_lo12:p_sys_spare_buf]
-       ldr     x0, [x0]
-       str     x0, [x21,16]
-       ldr     w0, [x24,x28]
-       str     w0, [x21,4]
-       mov     x0, x21
+       ldr     w0, [x23,x25]
+       str     w0, [x20,4]
+       mov     x0, x20
        bl      FlashReadPages
-       ldr     w0, [x21]
+       ldr     w0, [x20]
        cmn     w0, #1
-       bne     .L1850
-       str     wzr, [x24,x28]
-       b       .L1849
-.L1850:
-       ldr     x2, [x21,8]
+       bne     .L2019
+       str     wzr, [x23,x25]
+       b       .L2018
+.L2019:
+       ldr     x2, [x20,8]
        mov     x0, x19
-       mov     w1, w20
+       mov     w1, w21
        bl      FtlMapWritePage
-.L1849:
-       add     w20, w20, 1
-       uxth    w20, w20
-       b       .L1848
-.L1856:
-       mov     w0, w23
+.L2018:
+       add     w21, w21, 1
+       uxth    w21, w21
+       b       .L2017
+.L2025:
+       mov     w0, w24
        mov     w1, 1
        bl      FtlFreeSysBlkQueueIn
        str     wzr, [x19,52]
-.L1846:
-       ldr     x22, [x22, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
+.L2015:
+       add     x22, x22, :lo12:.LANCHOR0
        ldrh    w1, [x19,2]
-       ldrh    w0, [x22]
+       ldrh    w0, [x22,2028]
        cmp     w1, w0
-       bcc     .L1852
+       bcc     .L2021
        mov     x0, x19
        bl      ftl_map_blk_alloc_new_blk
-.L1852:
+.L2021:
        mov     w0, 0
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 96
+       ldp     x29, x30, [sp], 80
        ret
        .size   ftl_map_blk_gc, .-ftl_map_blk_gc
        .align  2
@@ -14018,7 +13827,7 @@ Ftl_write_map_blk_to_last_page:
        ldr     x23, [x0,40]
        ldrh    w0, [x0]
        cmp     w0, w1
-       bne     .L1858
+       bne     .L2027
        ldrh    w0, [x19,8]
        add     w0, w0, 1
        strh    w0, [x19,8]
@@ -14029,64 +13838,62 @@ Ftl_write_map_blk_to_last_page:
        strh    wzr, [x19]
        add     w0, w0, 1
        str     w0, [x19,48]
-       b       .L1859
-.L1858:
+       b       .L2028
+.L2027:
        ubfiz   x0, x0, 1, 16
-       ldrh    w1, [x19,2]
-       adrp    x21, :got:p_sys_data_buf
+       adrp    x21, .LANCHOR2
+       add     x3, x21, :lo12:.LANCHOR2
        ldrh    w22, [x20,x0]
-       adrp    x20, :got:req_sys
-       ldr     x0, [x20, #:got_lo12:req_sys]
-       orr     w1, w1, w22, lsl 10
+       adrp    x20, .LANCHOR4
+       ldrh    w0, [x19,2]
+       add     x1, x20, :lo12:.LANCHOR4
+       orr     w0, w0, w22, lsl 10
+       str     w0, [x1,140]
+       ldr     x0, [x3,-64]
+       str     x0, [x1,144]
+       ldr     x0, [x3,2112]
+       str     x0, [x1,152]
+       ldr     w1, [x19,48]
        str     w1, [x0,4]
-       ldr     x3, [x21, #:got_lo12:p_sys_data_buf]
-       ldr     x1, [x3]
-       str     x1, [x0,8]
-       adrp    x1, :got:p_sys_spare_buf
-       ldr     x1, [x1, #:got_lo12:p_sys_spare_buf]
-       ldr     x1, [x1]
-       str     x1, [x0,16]
-       ldr     w0, [x19,48]
-       str     w0, [x1,4]
-       mov     w0, -1291
-       strh    w0, [x1,8]
-       ldrh    w0, [x19,4]
-       strh    w0, [x1]
-       adrp    x0, :got:c_ftl_nand_page_pre_slc_blk
-       strh    w22, [x1,2]
+       mov     w1, -1291
+       strh    w1, [x0,8]
+       ldrh    w1, [x19,4]
+       strh    w1, [x0]
        mov     w1, 255
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w2, [x0]
-       ldr     x0, [x3]
+       strh    w22, [x0,2]
+       adrp    x0, .LANCHOR0+2028
+       ldrh    w2, [x0,#:lo12:.LANCHOR0+2028]
+       ldr     x0, [x3,-64]
        lsl     w2, w2, 3
        bl      ftl_memset
-       mov     w2, 0
-       mov     w1, w2
-.L1860:
-       ldrh    w0, [x19,6]
-       cmp     w0, w1
-       bls     .L1863
+       mov     w0, 0
+       mov     w1, w0
+.L2029:
+       ldrh    w2, [x19,6]
+       cmp     w2, w1
+       bls     .L2032
        ubfiz   x4, x1, 2, 16
-       ldr     w0, [x23,x4]
-       cmp     w22, w0, lsr 10
-       bne     .L1861
-       ldr     x3, [x21, #:got_lo12:p_sys_data_buf]
-       add     w2, w2, 1
-       uxth    w2, w2
-       ldr     x5, [x3]
-       ubfiz   x0, x2, 3, 16
-       str     w1, [x5,x0]
-       ldr     x3, [x3]
+       ldr     w2, [x23,x4]
+       cmp     w22, w2, lsr 10
+       bne     .L2030
+       add     x3, x21, :lo12:.LANCHOR2
+       add     w0, w0, 1
+       uxth    w0, w0
+       ldr     x5, [x3,-64]
+       ubfiz   x2, x0, 3, 16
+       str     w1, [x5,x2]
+       ldr     x3, [x3,-64]
        ldr     w4, [x23,x4]
-       add     x0, x3, x0
-       str     w4, [x0,4]
-.L1861:
+       add     x2, x3, x2
+       str     w4, [x2,4]
+.L2030:
        add     w1, w1, 1
        uxth    w1, w1
-       b       .L1860
-.L1863:
+       b       .L2029
+.L2032:
        mov     w1, 1
-       ldr     x0, [x20, #:got_lo12:req_sys]
+       add     x0, x20, :lo12:.LANCHOR4
+       add     x0, x0, 136
        mov     w2, w1
        mov     w3, 0
        bl      FlashProgPages
@@ -14095,7 +13902,7 @@ Ftl_write_map_blk_to_last_page:
        strh    w0, [x19,2]
        mov     x0, x19
        bl      ftl_map_blk_gc
-.L1859:
+.L2028:
        mov     w0, 0
        ldr     x23, [sp,48]
        ldp     x19, x20, [sp,16]
@@ -14109,49 +13916,50 @@ Ftl_write_map_blk_to_last_page:
 FtlMapWritePage:
        stp     x29, x30, [sp, -96]!
        add     x29, sp, 0
+       stp     x19, x20, [sp,16]
+       adrp    x20, .LANCHOR4
+       str     x27, [sp,80]
        stp     x21, x22, [sp,32]
+       add     x20, x20, :lo12:.LANCHOR4
+       adrp    x22, .LANCHOR2
        stp     x23, x24, [sp,48]
        stp     x25, x26, [sp,64]
-       stp     x19, x20, [sp,16]
-       stp     x27, x28, [sp,80]
        mov     x19, x0
        mov     w21, w1
-       mov     x22, x2
-       adrp    x23, :got:g_totle_l2p_write_count
-       adrp    x24, :got:c_ftl_nand_page_pre_slc_blk
-       mov     w25, 65535
-       adrp    x26, :got:req_sys
-       adrp    x27, :got:p_sys_spare_buf
-.L1870:
-       ldr     x1, [x23, #:got_lo12:g_totle_l2p_write_count]
-       ldr     w0, [x1]
+       mov     x23, x2
+       adrp    x24, .LANCHOR0
+       mov     x25, x22
+       mov     w26, 65535
+       add     x20, x20, 136
+.L2039:
+       add     x1, x22, :lo12:.LANCHOR2
+       ldr     w0, [x1,180]
        add     w0, w0, 1
-       str     w0, [x1]
-       ldr     x0, [x24, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
+       str     w0, [x1,180]
+       add     x0, x24, :lo12:.LANCHOR0
        ldrh    w1, [x19,2]
-       ldrh    w0, [x0]
+       ldrh    w0, [x0,2028]
        sub     w0, w0, #1
        cmp     w1, w0
-       bge     .L1865
+       bge     .L2034
        ldrh    w0, [x19]
-       cmp     w0, w25
-       bne     .L1866
-.L1865:
+       cmp     w0, w26
+       bne     .L2035
+.L2034:
        mov     x0, x19
        bl      Ftl_write_map_blk_to_last_page
-.L1866:
+.L2035:
        ldrh    w1, [x19]
        mov     w2, 16
        ldr     x0, [x19,16]
-       ldr     x20, [x26, #:got_lo12:req_sys]
-       ldrh    w28, [x0,x1,lsl 1]
+       ldrh    w27, [x0,x1,lsl 1]
        mov     w1, 0
        ldrh    w0, [x19,2]
-       str     x22, [x20,8]
-       orr     w0, w0, w28, lsl 10
+       str     x23, [x20,8]
+       orr     w0, w0, w27, lsl 10
        str     w0, [x20,4]
-       ldr     x0, [x27, #:got_lo12:p_sys_spare_buf]
-       ldr     x0, [x0]
+       add     x0, x25, :lo12:.LANCHOR2
+       ldr     x0, [x0,2112]
        str     x0, [x20,16]
        bl      ftl_memset
        ldr     x0, [x20,16]
@@ -14161,7 +13969,7 @@ FtlMapWritePage:
        ldrh    w1, [x19,4]
        strh    w1, [x0]
        mov     w1, 1
-       strh    w28, [x0,2]
+       strh    w27, [x0,2]
        mov     w2, w1
        mov     x0, x20
        mov     w3, w1
@@ -14171,10 +13979,10 @@ FtlMapWritePage:
        uxth    w0, w0
        strh    w0, [x19,2]
        cmp     w0, 1
-       beq     .L1870
+       beq     .L2039
        ldr     w0, [x20]
        cmn     w0, #1
-       beq     .L1870
+       beq     .L2039
        ldr     x0, [x19,40]
        ldr     w1, [x20,4]
        str     w1, [x0,w21,uxtw 2]
@@ -14183,7 +13991,7 @@ FtlMapWritePage:
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
+       ldr     x27, [sp,80]
        ldp     x29, x30, [sp], 96
        ret
        .size   FtlMapWritePage, .-FtlMapWritePage
@@ -14194,17 +14002,16 @@ flush_l2p_region:
        stp     x29, x30, [sp, -32]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       adrp    x20, :got:p_l2p_ram_map
+       adrp    x20, .LANCHOR2
        ubfiz   x19, x0, 4, 16
-       adrp    x0, :got:gL2pMapInfo
-       ldr     x20, [x20, #:got_lo12:p_l2p_ram_map]
-       ldr     x0, [x0, #:got_lo12:gL2pMapInfo]
-       ldr     x1, [x20]
+       add     x20, x20, :lo12:.LANCHOR2
+       add     x0, x20, 2240
+       ldr     x1, [x20,144]
        add     x2, x1, x19
        ldrh    w1, [x1,x19]
        ldr     x2, [x2,8]
        bl      FtlMapWritePage
-       ldr     x0, [x20]
+       ldr     x0, [x20,144]
        add     x19, x0, x19
        ldr     w0, [x19,4]
        and     w0, w0, 2147483647
@@ -14218,183 +14025,168 @@ flush_l2p_region:
        .global log2phys
        .type   log2phys, %function
 log2phys:
-       stp     x29, x30, [sp, -80]!
+       stp     x29, x30, [sp, -96]!
+       adrp    x5, .LANCHOR0
        mov     x4, 1
+       add     x5, x5, :lo12:.LANCHOR0
        add     x29, sp, 0
        stp     x21, x22, [sp,32]
-       mov     x21, x1
-       adrp    x1, :got:c_ftl_nand_sec_pre_page_shift
        stp     x23, x24, [sp,48]
        stp     x19, x20, [sp,16]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
-       adrp    x23, :got:p_l2p_ram_map
+       str     x25, [sp,64]
+       adrp    x23, .LANCHOR2
+       mov     x21, x1
+       add     x1, x23, :lo12:.LANCHOR2
+       ldrh    w3, [x5,2034]
        mov     w22, w2
-       ldrh    w3, [x1]
-       ldr     x1, [x23, #:got_lo12:p_l2p_ram_map]
        add     w3, w3, 7
+       ldr     x25, [x1,144]
        lsr     w20, w0, w3
        lsl     x3, x4, x3
        sub     w3, w3, #1
-       ldr     x1, [x1]
+       mov     x4, 0
        and     w0, w3, w0
        uxth    w20, w20
-       mov     x4, 0
        uxth    x24, w0
-       adrp    x0, :got:c_ftl_nand_l2pmap_ram_region_num
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
-       ldrh    w0, [x0]
-.L1875:
+       ldrh    w0, [x5,2066]
+.L2044:
        uxth    x19, w4
        cmp     w19, w0
-       bcs     .L1887
+       bcs     .L2056
        add     x4, x4, 1
-       add     x2, x1, x4, lsl 4
-       ldrh    w2, [x2,-16]
-       cmp     w2, w20
-       bne     .L1875
-.L1876:
-       cbnz    w22, .L1877
-       ldr     x0, [x23, #:got_lo12:p_l2p_ram_map]
-       ldr     x1, [x0]
+       add     x1, x25, x4, lsl 4
+       ldrh    w1, [x1,-16]
+       cmp     w1, w20
+       bne     .L2044
+.L2045:
+       cbnz    w22, .L2046
+       add     x0, x23, :lo12:.LANCHOR2
+       ldr     x1, [x0,144]
        add     x1, x1, x19, lsl 4
        ldr     x0, [x1,8]
        ldr     w0, [x0,x24,lsl 2]
        str     w0, [x21]
-       b       .L1878
-.L1877:
-       ldr     x2, [x23, #:got_lo12:p_l2p_ram_map]
+       b       .L2047
+.L2046:
+       add     x1, x23, :lo12:.LANCHOR2
        lsl     x0, x19, 4
        ldr     w3, [x21]
-       ldr     x1, [x2]
-       add     x1, x1, x0
-       ldr     x1, [x1,8]
-       str     w3, [x1,x24,lsl 2]
-       ldr     x1, [x2]
-       add     x0, x1, x0
-       ldr     w1, [x0,4]
-       orr     w1, w1, -2147483648
-       str     w1, [x0,4]
-       adrp    x0, :got:g_l2p_last_update_region_id
-       ldr     x0, [x0, #:got_lo12:g_l2p_last_update_region_id]
-       strh    w20, [x0]
-.L1878:
-       ldr     x23, [x23, #:got_lo12:p_l2p_ram_map]
-       ldr     x0, [x23]
+       ldr     x2, [x1,144]
+       add     x2, x2, x0
+       ldr     x2, [x2,8]
+       str     w3, [x2,x24,lsl 2]
+       strh    w20, [x1,152]
+       ldr     x2, [x1,144]
+       add     x0, x2, x0
+       ldr     w2, [x0,4]
+       orr     w2, w2, -2147483648
+       str     w2, [x0,4]
+.L2047:
+       add     x23, x23, :lo12:.LANCHOR2
+       ldr     x0, [x23,144]
        add     x19, x0, x19, lsl 4
        ldr     w0, [x19,4]
        cmn     w0, #1
-       beq     .L1884
+       beq     .L2053
        add     w0, w0, 1
        str     w0, [x19,4]
-       b       .L1884
-.L1887:
+       b       .L2053
+.L2056:
        bl      select_l2p_ram_region
        uxth    x19, w0
-       ldr     x3, [x23, #:got_lo12:p_l2p_ram_map]
        ubfiz   x2, x19, 4, 16
        mov     w1, w0
-       ldr     x3, [x3]
-       add     x4, x3, x2
-       ldrh    w3, [x3,x2]
+       add     x3, x25, x2
+       ldrh    w4, [x25,x2]
        mov     w2, 65535
-       cmp     w3, w2
-       beq     .L1881
-       ldr     w2, [x4,4]
-       tbz     w2, #31, .L1881
-       str     x1, [x29,72]
+       cmp     w4, w2
+       beq     .L2050
+       ldr     w2, [x3,4]
+       tbz     w2, #31, .L2050
+       str     x1, [x29,88]
        bl      flush_l2p_region
-       ldr     x1, [x29,72]
-.L1881:
+       ldr     x1, [x29,88]
+.L2050:
        mov     w0, w20
        bl      load_l2p_region
-       b       .L1876
-.L1884:
+       b       .L2045
+.L2053:
        mov     w0, 0
+       ldr     x25, [sp,64]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
-       ldp     x29, x30, [sp], 80
+       ldp     x29, x30, [sp], 96
        ret
        .size   log2phys, .-log2phys
        .align  2
        .global FtlReUsePrevPpa
        .type   FtlReUsePrevPpa, %function
 FtlReUsePrevPpa:
-       stp     x29, x30, [sp, -80]!
+       stp     x29, x30, [sp, -64]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
        mov     w20, w0
-       lsr     w0, w1, 10
+       lsr     x0, x1, 10
        stp     x21, x22, [sp,32]
-       str     x23, [sp,48]
-       str     w1, [x29,76]
+       str     w1, [x29,60]
+       adrp    x21, .LANCHOR2
        bl      P2V_block_in_plane
-       uxth    w4, w0
-       adrp    x0, :got:p_valid_page_count_table
-       ubfiz   x22, x4, 1, 16
-       mov     x23, x0
-       ldr     x1, [x0, #:got_lo12:p_valid_page_count_table]
-       ldr     x2, [x1]
-       ldrh    w1, [x2,x22]
-       cbnz    w1, .L1889
-       adrp    x0, :got:p_free_data_block_list_head
-       ldr     x2, [x0, #:got_lo12:p_free_data_block_list_head]
-       ldr     x19, [x2]
-       cbz     x19, .L1890
-       adrp    x2, :got:g_num_free_superblocks
-       mov     x6, -6148914691236517206
-       mov     x21, x2
-       ldr     x3, [x2, #:got_lo12:g_num_free_superblocks]
-       mov     w2, 6
-       ldrh    w5, [x3]
-       adrp    x3, :got:p_data_block_list_table
-       ldr     x3, [x3, #:got_lo12:p_data_block_list_table]
-       ldr     x3, [x3]
-       sub     x19, x19, x3
+       uxth    w0, w0
+       add     x2, x21, :lo12:.LANCHOR2
+       ubfiz   x22, x0, 1, 16
+       ldr     x3, [x2,-40]
+       ldrh    w1, [x3,x22]
+       cbnz    w1, .L2058
+       ldr     x19, [x2,-16]
+       cbz     x19, .L2059
+       ldrh    w3, [x2,-8]
+       mov     x4, -6148914691236517206
+       ldr     x2, [x2,-56]
+       mov     w5, 65535
+       sub     x19, x19, x2
        asr     x19, x19, 1
-       madd    x19, x6, x19, x19
-       mov     w6, 65535
+       madd    x19, x4, x19, x19
+       mov     w4, 6
        uxth    w19, w19
-.L1891:
-       cmp     w1, w5
-       beq     .L1890
-       cmp     w19, w4
-       bne     .L1892
-       ldr     x0, [x0, #:got_lo12:p_free_data_block_list_head]
+.L2060:
+       cmp     w1, w3
+       beq     .L2059
+       cmp     w19, w0
+       bne     .L2061
+       add     x21, x21, :lo12:.LANCHOR2
        mov     w1, w19
+       sub     x0, x21, #16
        bl      List_remove_node
-       ldr     x0, [x21, #:got_lo12:g_num_free_superblocks]
-       ldrh    w1, [x0]
-       sub     w1, w1, #1
-       strh    w1, [x0]
+       ldrh    w0, [x21,-8]
+       sub     w0, w0, #1
+       strh    w0, [x21,-8]
        mov     w0, w19
        bl      INSERT_DATA_LIST
-       ldr     x0, [x23, #:got_lo12:p_valid_page_count_table]
-       ldr     x1, [x0]
+       ldr     x1, [x21,-40]
        ldrh    w0, [x1,x22]
        add     w0, w0, 1
        strh    w0, [x1,x22]
-       b       .L1890
-.L1892:
-       umull   x19, w19, w2
-       ldrh    w19, [x3,x19]
-       cmp     w19, w6
-       beq     .L1890
+       b       .L2059
+.L2061:
+       umull   x19, w19, w4
+       ldrh    w19, [x2,x19]
+       cmp     w19, w5
+       beq     .L2059
        add     w1, w1, 1
        uxth    w1, w1
-       b       .L1891
-.L1889:
+       b       .L2060
+.L2058:
        add     w1, w1, 1
-       strh    w1, [x2,x22]
-.L1890:
-       add     x1, x29, 76
+       strh    w1, [x3,x22]
+.L2059:
+       add     x1, x29, 60
        mov     w0, w20
        mov     w2, 1
        bl      log2phys
-       ldr     x23, [sp,48]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
-       ldp     x29, x30, [sp], 80
+       ldp     x29, x30, [sp], 64
        ret
        .size   FtlReUsePrevPpa, .-FtlReUsePrevPpa
        .align  2
@@ -14404,210 +14196,205 @@ FtlMapTblRecovery:
        stp     x29, x30, [sp, -144]!
        mov     w1, 0
        add     x29, sp, 0
+       stp     x27, x28, [sp,80]
+       mov     x27, x0
+       stp     x23, x24, [sp,48]
        stp     x25, x26, [sp,64]
-       mov     x26, x0
        stp     x19, x20, [sp,16]
        stp     x21, x22, [sp,32]
-       stp     x23, x24, [sp,48]
-       stp     x27, x28, [sp,80]
-       ldrh    w23, [x26,6]
-       adrp    x20, :got:p_sys_data_buf
-       ldr     x0, [x0,40]
-       adrp    x19, :got:req_sys
-       lsl     w2, w23, 2
-       ldrh    w24, [x26,8]
-       str     x0, [x29,136]
-       mov     w27, 0
-       ldr     x22, [x26,16]
-       ldr     x25, [x26,24]
+       ldrh    w22, [x27,6]
+       adrp    x19, .LANCHOR2
+       ldr     x20, [x0,40]
+       mov     w25, 0
+       ldr     x21, [x0,16]
+       lsl     w2, w22, 2
+       ldr     x0, [x0,24]
+       adrp    x24, .LANCHOR0
+       str     x0, [x29,128]
+       mov     x0, x20
+       ldrh    w23, [x27,8]
        bl      ftl_memset
-       ldr     x0, [x20, #:got_lo12:p_sys_data_buf]
-       ldr     x1, [x19, #:got_lo12:req_sys]
-       ldr     x0, [x0]
-       str     x0, [x1,8]
-       adrp    x0, :got:p_sys_spare_buf
-       ldr     x0, [x0, #:got_lo12:p_sys_spare_buf]
-       str     wzr, [x26,52]
-       str     wzr, [x26,48]
-       ldr     x21, [x0]
-       mov     w0, -1
-       str     x21, [x1,16]
-       strh    w0, [x26]
-       strh    w0, [x26,2]
-       mov     w0, 1
-       str     w0, [x26,56]
-       sub     w0, w24, #1
-       str     w0, [x29,132]
-.L1898:
-       cmp     w27, w24
-       bge     .L1915
-       ldr     w0, [x29,132]
-       sxtw    x28, w27
-       cmp     w27, w0
-       bne     .L1899
+       str     x19, [x29,136]
+       add     x1, x19, :lo12:.LANCHOR2
+       adrp    x0, .LANCHOR4
+       add     x4, x0, :lo12:.LANCHOR4
+       str     x0, [x29,120]
+       add     x4, x4, 136
+       sub     w0, w23, #1
+       ldr     x2, [x1,-64]
+       ldr     x26, [x1,2112]
+       mov     w1, -1
+       str     x2, [x4,8]
+       str     x26, [x4,16]
+       mov     x19, x4
+       strh    w1, [x27]
+       strh    w1, [x27,2]
+       mov     w1, 1
+       str     wzr, [x27,52]
+       str     wzr, [x27,48]
+       str     w1, [x27,56]
+       str     w0, [x29,116]
+.L2067:
+       cmp     w25, w23
+       bge     .L2084
+       ldr     w0, [x29,116]
+       sxtw    x28, w25
+       cmp     w25, w0
+       bne     .L2068
        lsl     x0, x28, 1
        mov     w1, 1
-       add     x20, x22, x0
-       ldrh    w0, [x22,x0]
-       mov     w22, 0
+       add     x23, x21, x0
+       ldrh    w0, [x21,x0]
+       mov     w21, 0
        bl      FtlGetLastWrittenPage
-       strh    w27, [x26]
-       sxth    w1, w0
+       sxth    w24, w0
        add     w0, w0, 1
-       strh    w0, [x26,2]
-       ldr     w0, [x25,x28,lsl 2]
-       add     w25, w1, 1
-       str     w0, [x26,48]
-       ldr     x0, [x19, #:got_lo12:req_sys]
-       str     xzr, [x0,8]
-.L1900:
-       cmp     w22, w25
-       bge     .L1915
-       ldrh    w0, [x20]
+       strh    w0, [x27,2]
+       ldr     x0, [x29,128]
+       add     w24, w24, 1
+       strh    w25, [x27]
+       ldr     w0, [x0,x28,lsl 2]
+       str     w0, [x27,48]
+       ldr     x0, [x29,120]
+       add     x19, x0, :lo12:.LANCHOR4
+       add     x19, x19, 136
+       str     xzr, [x19,8]
+.L2069:
+       cmp     w21, w24
+       bge     .L2084
+       ldrh    w0, [x23]
        mov     w1, 1
-       ldr     x24, [x19, #:got_lo12:req_sys]
        mov     w2, w1
-       orr     w0, w22, w0, lsl 10
-       str     w0, [x24,4]
-       mov     x0, x24
+       orr     w0, w21, w0, lsl 10
+       str     w0, [x19,4]
+       mov     x0, x19
        bl      FlashReadPages
-       ldr     w0, [x24]
+       ldr     w0, [x19]
        cmn     w0, #1
-       beq     .L1901
-       ldrh    w1, [x21,8]
-       cmp     w1, w23
-       bcs     .L1901
-       ldrh    w2, [x21]
-       ldrh    w0, [x26,4]
-       cmp     w2, w0
-       bne     .L1901
-       ubfiz   x1, x1, 2, 16
-       ldr     x2, [x29,136]
-       ldr     w0, [x24,4]
-       str     w0, [x2,x1]
-.L1901:
-       add     w22, w22, 1
-       sxth    w22, w22
-       b       .L1900
-.L1915:
-       mov     x0, x26
+       beq     .L2070
+       ldrh    w0, [x26,8]
+       cmp     w0, w22
+       bcs     .L2070
+       ldrh    w2, [x26]
+       ldrh    w1, [x27,4]
+       cmp     w2, w1
+       bne     .L2070
+       ubfiz   x0, x0, 2, 16
+       ldr     w1, [x19,4]
+       str     w1, [x20,x0]
+.L2070:
+       add     w21, w21, 1
+       sxth    w21, w21
+       b       .L2069
+.L2084:
+       mov     x0, x27
        bl      ftl_free_no_use_map_blk
-       adrp    x0, :got:c_ftl_nand_page_pre_slc_blk
-       ldrh    w1, [x26,2]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w0, [x0]
+       adrp    x0, .LANCHOR0+2028
+       ldrh    w1, [x27,2]
+       ldrh    w0, [x0,#:lo12:.LANCHOR0+2028]
        cmp     w1, w0
-       bne     .L1904
-       mov     x0, x26
+       bne     .L2073
+       mov     x0, x27
        bl      ftl_map_blk_alloc_new_blk
-       b       .L1904
-.L1899:
-       ldr     x0, [x20, #:got_lo12:p_sys_data_buf]
-       lsl     x1, x28, 1
-       ldr     x6, [x19, #:got_lo12:req_sys]
-       add     x28, x22, x1
-       str     x6, [x29,120]
-       ldr     x0, [x0]
-       str     x0, [x6,8]
-       adrp    x0, :got:c_ftl_nand_page_pre_slc_blk
-       ldrh    w1, [x22,x1]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w0, [x0]
+       b       .L2073
+.L2068:
+       ldr     x0, [x29,136]
+       add     x0, x0, :lo12:.LANCHOR2
+       ldr     x0, [x0,-64]
+       str     x0, [x19,8]
+       lsl     x0, x28, 1
+       add     x28, x21, x0
+       ldrh    w1, [x21,x0]
+       add     x0, x24, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2028]
        sub     w0, w0, #1
        orr     w0, w0, w1, lsl 10
        mov     w1, 1
-       str     w0, [x6,4]
+       str     w0, [x19,4]
        mov     w2, w1
-       mov     x0, x6
+       mov     x0, x19
        bl      FlashReadPages
-       ldr     x6, [x29,120]
-       adrp    x8, :got:c_ftl_nand_page_pre_slc_blk
-       ldr     w0, [x6]
+       ldr     w0, [x19]
        cmn     w0, #1
-       beq     .L1905
-       ldrh    w1, [x21]
-       ldrh    w0, [x26,4]
+       beq     .L2074
+       ldrh    w1, [x26]
+       ldrh    w0, [x27,4]
        cmp     w1, w0
-       bne     .L1905
-       ldrh    w0, [x21,8]
-       mov     w1, 64245
-       cmp     w0, w1
-       bne     .L1905
+       bne     .L2074
+       ldrh    w1, [x26,8]
+       mov     w0, 64245
+       cmp     w1, w0
+       bne     .L2074
        mov     w0, 0
-.L1906:
-       ldr     x1, [x8, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w1, [x1]
+.L2075:
+       adrp    x1, .LANCHOR0
+       add     x1, x1, :lo12:.LANCHOR0
+       ldrh    w1, [x1,2028]
        sub     w1, w1, #1
        cmp     w0, w1
-       bge     .L1909
-       ldr     x1, [x20, #:got_lo12:p_sys_data_buf]
+       bge     .L2078
+       ldr     x1, [x29,136]
        sbfiz   x2, x0, 3, 32
-       ldr     x6, [x1]
-       ldrh    w1, [x6,x2]
-       cmp     w1, w23
-       bcs     .L1907
-       add     x2, x6, x2
+       add     x1, x1, :lo12:.LANCHOR2
+       ldr     x5, [x1,-64]
+       ldrh    w1, [x5,x2]
+       cmp     w1, w22
+       bcs     .L2076
+       add     x2, x5, x2
        ubfiz   x1, x1, 2, 16
-       ldr     x3, [x29,136]
        ldr     w2, [x2,4]
-       str     w2, [x3,x1]
-.L1907:
+       str     w2, [x20,x1]
+.L2076:
        add     w0, w0, 1
        sxth    w0, w0
-       b       .L1906
-.L1905:
-       ldr     x0, [x19, #:got_lo12:req_sys]
-       mov     w6, 0
-       str     xzr, [x0,8]
-.L1910:
-       ldr     x0, [x8, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w0, [x0]
-       cmp     w6, w0
-       bge     .L1909
+       b       .L2075
+.L2074:
+       str     xzr, [x19,8]
+       mov     w5, 0
+.L2079:
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2028]
+       cmp     w5, w0
+       bge     .L2078
        ldrh    w0, [x28]
        mov     w1, 1
-       ldr     x7, [x19, #:got_lo12:req_sys]
        mov     w2, w1
-       str     x8, [x29,104]
-       orr     w0, w6, w0, lsl 10
-       str     x6, [x29,112]
-       str     w0, [x7,4]
-       mov     x0, x7
-       str     x7, [x29,120]
+       str     x5, [x29,104]
+       orr     w0, w5, w0, lsl 10
+       str     w0, [x19,4]
+       mov     x0, x19
        bl      FlashReadPages
-       ldr     x7, [x29,120]
-       ldr     x6, [x29,112]
-       ldr     x8, [x29,104]
-       ldr     w0, [x7]
+       ldr     w0, [x19]
+       ldr     x5, [x29,104]
        cmn     w0, #1
-       beq     .L1911
-       ldrh    w1, [x21,8]
-       cmp     w1, w23
-       bcs     .L1911
-       ldrh    w2, [x21]
-       ldrh    w0, [x26,4]
-       cmp     w2, w0
-       bne     .L1911
-       ubfiz   x1, x1, 2, 16
-       ldr     x2, [x29,136]
-       ldr     w0, [x7,4]
-       str     w0, [x2,x1]
-.L1911:
-       add     w6, w6, 1
-       sxth    w6, w6
-       b       .L1910
-.L1909:
-       add     w4, w27, 1
-       sxth    w27, w4
-       b       .L1898
-.L1904:
-       ldrh    w1, [x26,8]
-       ldrh    w0, [x26,10]
+       beq     .L2080
+       ldrh    w0, [x26,8]
+       cmp     w0, w22
+       bcs     .L2080
+       ldrh    w2, [x26]
+       ldrh    w1, [x27,4]
+       cmp     w2, w1
+       bne     .L2080
+       ubfiz   x0, x0, 2, 16
+       ldr     w1, [x19,4]
+       str     w1, [x20,x0]
+.L2080:
+       add     w5, w5, 1
+       sxth    w5, w5
+       b       .L2079
+.L2078:
+       add     w6, w25, 1
+       sxth    w25, w6
+       b       .L2067
+.L2073:
+       ldrh    w1, [x27,8]
+       ldrh    w0, [x27,10]
        cmp     w1, w0
-       bcc     .L1916
-       mov     x0, x26
+       bcc     .L2085
+       mov     x0, x27
        bl      ftl_map_blk_gc
-.L1916:
+.L2085:
        mov     w0, 0
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
@@ -14621,39 +14408,30 @@ FtlMapTblRecovery:
        .global FtlLoadVonderInfo
        .type   FtlLoadVonderInfo, %function
 FtlLoadVonderInfo:
-       adrp    x1, :got:c_ftl_nand_max_vendor_blks
-       adrp    x0, :got:gVendorBlkInfo
+       adrp    x0, .LANCHOR4
+       adrp    x1, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR4
+       add     x1, x1, :lo12:.LANCHOR0
        stp     x29, x30, [sp, -16]!
+       add     x0, x0, 200
        add     x29, sp, 0
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_max_vendor_blks]
-       ldr     x0, [x0, #:got_lo12:gVendorBlkInfo]
-       ldrh    w1, [x1]
-       strh    w1, [x0,10]
-       mov     w1, -3962
-       strh    w1, [x0,4]
-       adrp    x1, :got:g_totle_vendor_block
-       ldr     x1, [x1, #:got_lo12:g_totle_vendor_block]
-       ldrh    w1, [x1]
-       strh    w1, [x0,8]
-       adrp    x1, :got:c_ftl_nand_vendor_region_num
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_vendor_region_num]
-       ldrh    w1, [x1]
-       strh    w1, [x0,6]
-       adrp    x1, :got:p_vendor_block_table
-       ldr     x1, [x1, #:got_lo12:p_vendor_block_table]
-       ldr     x1, [x1]
+       ldrh    w2, [x1,2048]
+       strh    w2, [x0,10]
+       mov     w2, -3962
+       strh    w2, [x0,4]
+       ldrh    w2, [x1,2072]
+       strh    w2, [x0,8]
+       ldrh    w2, [x1,2050]
+       ldr     x1, [x1,2080]
        str     x1, [x0,16]
-       adrp    x1, :got:p_vendor_block_ver_table
-       ldr     x1, [x1, #:got_lo12:p_vendor_block_ver_table]
-       ldr     x1, [x1]
-       str     x1, [x0,24]
-       adrp    x1, :got:p_vendor_block_valid_page_count
-       ldr     x1, [x1, #:got_lo12:p_vendor_block_valid_page_count]
-       ldr     x1, [x1]
-       str     x1, [x0,32]
-       adrp    x1, :got:p_vendor_region_ppn_table
-       ldr     x1, [x1, #:got_lo12:p_vendor_region_ppn_table]
-       ldr     x1, [x1]
+       adrp    x1, .LANCHOR2
+       add     x1, x1, :lo12:.LANCHOR2
+       strh    w2, [x0,6]
+       ldr     x2, [x1,2192]
+       str     x2, [x0,24]
+       ldr     x2, [x1,2184]
+       ldr     x1, [x1,2200]
+       str     x2, [x0,32]
        str     x1, [x0,40]
        bl      FtlMapTblRecovery
        mov     w0, 0
@@ -14667,8 +14445,9 @@ FtlLoadMapInfo:
        stp     x29, x30, [sp, -16]!
        add     x29, sp, 0
        bl      FtlL2PDataInit
-       adrp    x0, :got:gL2pMapInfo
-       ldr     x0, [x0, #:got_lo12:gL2pMapInfo]
+       adrp    x0, .LANCHOR2
+       add     x0, x0, :lo12:.LANCHOR2
+       add     x0, x0, 2240
        bl      FtlMapTblRecovery
        mov     w0, 0
        ldp     x29, x30, [sp], 16
@@ -14678,282 +14457,270 @@ FtlLoadMapInfo:
        .global FtlReadRefresh
        .type   FtlReadRefresh, %function
 FtlReadRefresh:
-       stp     x29, x30, [sp, -128]!
+       stp     x29, x30, [sp, -144]!
+       adrp    x1, .LANCHOR2
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       adrp    x19, :got:g_sys_ext_data
-       str     x23, [sp,48]
        stp     x21, x22, [sp,32]
-       ldr     x1, [x19, #:got_lo12:g_sys_ext_data]
-       ldr     w0, [x1,80]
-       cbz     w0, .L1930
-       adrp    x0, :got:g_MaxLpn
-       ldr     w3, [x1,84]
-       mov     x20, x0
-       ldr     x2, [x0, #:got_lo12:g_MaxLpn]
-       ldr     w2, [x2]
-       cmp     w3, w2
-       bcs     .L1931
-       mov     w21, 2048
-       add     x23, x29, 68
-.L1936:
-       ldr     x22, [x19, #:got_lo12:g_sys_ext_data]
-       ldr     x1, [x20, #:got_lo12:g_MaxLpn]
-       ldr     w0, [x22,84]
-       ldr     w1, [x1]
+       adrp    x21, __stack_chk_guard
+       str     x23, [sp,48]
+       stp     x19, x20, [sp,16]
+       adrp    x20, .LANCHOR0
+       ldr     x0, [x21,#:lo12:__stack_chk_guard]
+       str     x0, [x29,136]
+       add     x0, x1, :lo12:.LANCHOR2
+       add     x2, x0, 352
+       ldr     w3, [x2,80]
+       cbz     w3, .L2099
+       add     x1, x20, :lo12:.LANCHOR0
+       ldr     w3, [x2,84]
+       ldr     w1, [x1,2104]
+       cmp     w3, w1
+       bcs     .L2100
+       mov     w22, 2048
+       mov     x19, x0
+.L2105:
+       add     x1, x20, :lo12:.LANCHOR0
+       ldr     w0, [x19,436]
+       ldr     w1, [x1,2104]
        cmp     w0, w1
-       bcs     .L1933
+       bcs     .L2102
+       add     x1, x29, 76
        mov     w2, 0
-       mov     x1, x23
        bl      log2phys
-       ldr     w0, [x22,84]
-       ldr     w2, [x29,68]
+       ldr     w0, [x19,436]
+       ldr     w1, [x29,76]
        add     w0, w0, 1
-       str     w0, [x22,84]
-       cmn     w2, #1
-       beq     .L1934
-       str     w2, [x29,76]
-       mov     w1, 1
-       str     w0, [x29,96]
+       str     w0, [x19,436]
+       cmn     w1, #1
+       beq     .L2103
+       str     w1, [x29,84]
        mov     w2, 0
-       add     x0, x29, 72
-       str     xzr, [x29,80]
+       str     w0, [x29,104]
+       mov     w1, 1
+       add     x0, x29, 80
        str     xzr, [x29,88]
-       str     wzr, [x29,72]
+       str     xzr, [x29,96]
+       str     wzr, [x29,80]
        bl      FlashReadPages
-       ldr     w0, [x29,72]
+       ldr     w0, [x29,80]
        cmp     w0, 256
-       bne     .L1933
-       ldr     w0, [x29,68]
-       lsr     w0, w0, 10
+       bne     .L2102
+       ldr     w0, [x29,76]
+       lsr     x0, x0, 10
        bl      P2V_block_in_plane
        bl      FtlGcRefreshBlock
-       b       .L1933
-.L1934:
-       subs    w21, w21, #1
-       bne     .L1936
-.L1933:
+       b       .L2102
+.L2103:
+       subs    w22, w22, #1
+       bne     .L2105
+.L2102:
        mov     w0, -1
-       b       .L1938
-.L1931:
-       adrp    x0, :got:g_totle_read_page_count
-       str     wzr, [x1,80]
-       str     wzr, [x1,84]
-       ldr     x0, [x0, #:got_lo12:g_totle_read_page_count]
-       ldr     w0, [x0]
-       str     w0, [x1,76]
-       b       .L1942
-.L1930:
-       adrp    x2, :got:g_max_erase_count
-       ldr     w1, [x1,76]
-       ldr     x2, [x2, #:got_lo12:g_max_erase_count]
-       ldr     w3, [x2]
-       adrp    x2, :got:g_inkDie_check_enable
-       ldr     x2, [x2, #:got_lo12:g_inkDie_check_enable]
-       ldr     w4, [x2]
-       adrp    x2, :got:g_totle_read_page_count
-       ldr     x2, [x2, #:got_lo12:g_totle_read_page_count]
-       ldr     w2, [x2]
-       add     w5, w2, 1048576
-       cmp     w1, w5
-       bhi     .L1939
-       add     w3, w4, w3, lsr 10
-       mov     w4, 33554432
-       asr     w3, w4, w3
-       add     w1, w3, w1
-       cmp     w1, w2
-       bcs     .L1938
-.L1939:
-       ldr     x0, [x19, #:got_lo12:g_sys_ext_data]
+       b       .L2107
+.L2100:
+       ldr     w0, [x0,164]
+       str     wzr, [x2,80]
+       str     wzr, [x2,84]
+       str     w0, [x2,76]
+       b       .L2114
+.L2099:
+       add     x20, x20, :lo12:.LANCHOR0
+       ldr     w3, [x0,216]
+       mov     w2, 1048576
+       ldr     w0, [x0,160]
+       ldrb    w4, [x20,120]
+       cbnz    w4, .L2108
+       add     w2, w0, w3, lsr 10
+       mov     w0, 33554432
+       asr     w2, w0, w2
+.L2108:
+       add     x3, x1, :lo12:.LANCHOR2
+       ldr     w0, [x3,428]
+       ldr     w3, [x3,164]
+       add     w4, w3, 1048576
+       cmp     w0, w4
+       bhi     .L2109
+       add     w2, w2, w0
+       mov     w0, 0
+       cmp     w2, w3
+       bcs     .L2107
+.L2109:
+       add     x0, x1, :lo12:.LANCHOR2
        mov     w1, 1
-       str     wzr, [x0,84]
-       str     w1, [x0,80]
-       str     w2, [x0,76]
-.L1942:
+       str     wzr, [x0,436]
+       str     w1, [x0,432]
+       str     w3, [x0,428]
+.L2114:
        mov     w0, 0
-.L1938:
+.L2107:
+       ldr     x2, [x29,136]
+       ldr     x1, [x21,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2110
+       bl      __stack_chk_fail
+.L2110:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldr     x23, [sp,48]
-       ldp     x29, x30, [sp], 128
+       ldp     x29, x30, [sp], 144
        ret
        .size   FtlReadRefresh, .-FtlReadRefresh
        .align  2
        .global FtlVendorPartWrite
        .type   FtlVendorPartWrite, %function
 FtlVendorPartWrite:
-       stp     x29, x30, [sp, -176]!
+       stp     x29, x30, [sp, -192]!
        add     x29, sp, 0
        stp     x25, x26, [sp,64]
-       mov     w26, w0
-       adrp    x0, :got:c_ftl_nand_sec_pre_page_shift
-       stp     x19, x20, [sp,16]
+       adrp    x25, __stack_chk_guard
+       mov     x26, x2
+       stp     x27, x28, [sp,80]
        stp     x23, x24, [sp,48]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page_shift]
-       mov     w25, w1
+       mov     w28, w0
+       adrp    x23, .LANCHOR0
+       ldr     x0, [x25,#:lo12:__stack_chk_guard]
+       mov     w27, w1
+       str     x0, [x29,184]
+       add     x0, x23, :lo12:.LANCHOR0
+       stp     x19, x20, [sp,16]
        stp     x21, x22, [sp,32]
-       stp     x27, x28, [sp,80]
-       add     w1, w26, w1
-       mov     x23, x2
-       ldrh    w20, [x0]
-       adrp    x0, :got:c_ftl_vendor_part_size
-       mov     w19, -1
-       ldr     x0, [x0, #:got_lo12:c_ftl_vendor_part_size]
-       ldrh    w0, [x0]
+       add     w1, w28, w1
+       str     x25, [x29,120]
+       ldrh    w21, [x0,2034]
+       mov     w20, -1
+       ldrh    w0, [x0,2020]
        cmp     w1, w0
-       bhi     .L1944
-       lsr     w20, w26, w20
-       mov     w19, 0
-       adrp    x24, :got:p_vendor_data_buf
-       add     x22, x29, 120
-       adrp    x28, :got:gVendorBlkInfo
-.L1945:
-       cbz     w25, .L1944
-       adrp    x0, :got:p_vendor_region_ppn_table
-       ldr     x0, [x0, #:got_lo12:p_vendor_region_ppn_table]
-       ldr     x0, [x0]
-       ldr     w2, [x0,w20,uxtw 2]
-       adrp    x0, :got:c_ftl_nand_sec_pre_page
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w1, [x0]
-       uxth    w0, w25
-       udiv    w21, w26, w1
-       msub    w21, w21, w1, w26
-       sub     w3, w1, w21
-       uxth    w27, w3
-       cmp     w27, w25
-       csel    w27, w0, w27, hi
-       cmp     w27, w1
-       beq     .L1947
-       cbz     w2, .L1947
-       ldr     x0, [x24, #:got_lo12:p_vendor_data_buf]
+       bhi     .L2116
+       adrp    x24, .LANCHOR4
+       lsr     w21, w28, w21
+       add     x24, x24, :lo12:.LANCHOR4
+       mov     w20, 0
+       adrp    x25, .LANCHOR2
+       add     x24, x24, 200
+.L2117:
+       cbz     w27, .L2116
+       add     x2, x25, :lo12:.LANCHOR2
+       ldr     x0, [x2,2200]
+       ldr     w5, [x0,w21,uxtw 2]
+       add     x0, x23, :lo12:.LANCHOR0
+       ldrh    w1, [x0,2032]
+       uxth    w0, w27
+       udiv    w22, w28, w1
+       msub    w22, w22, w1, w28
+       sub     w19, w1, w22
+       uxth    w19, w19
+       cmp     w19, w27
+       csel    w19, w0, w19, hi
+       cmp     w19, w1
+       beq     .L2119
+       cbz     w5, .L2119
+       ldr     x0, [x2,2080]
        mov     w1, 1
-       str     w2, [x22,4]
+       str     x0, [x29,136]
        mov     w2, w1
-       str     xzr, [x22,16]
-       ldr     x0, [x0]
-       str     x0, [x22,8]
-       mov     x0, x22
+       add     x0, x29, 128
+       str     w5, [x29,132]
+       str     xzr, [x29,144]
        bl      FlashReadPages
-       b       .L1948
-.L1947:
-       adrp    x1, :got:c_ftl_nand_byte_pre_page
-       ldr     x0, [x24, #:got_lo12:p_vendor_data_buf]
-       ldr     x2, [x1, #:got_lo12:c_ftl_nand_byte_pre_page]
+       b       .L2120
+.L2119:
+       adrp    x0, .LANCHOR2
+       add     x2, x23, :lo12:.LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR2
        mov     w1, 0
-       ldr     x0, [x0]
-       ldrh    w2, [x2]
+       ldrh    w2, [x2,2036]
+       ldr     x0, [x0,2080]
        bl      ftl_memset
-.L1948:
-       ldr     x7, [x24, #:got_lo12:p_vendor_data_buf]
-       lsl     w6, w27, 9
-       ubfiz   x21, x21, 9, 16
-       mov     w2, w6
-       mov     x1, x23
+.L2120:
+       adrp    x0, .LANCHOR2
+       lsl     w5, w19, 9
+       add     x6, x0, :lo12:.LANCHOR2
+       ubfiz   x22, x22, 9, 16
+       mov     w2, w5
+       mov     x1, x26
+       str     x5, [x29,112]
+       sub     w27, w27, w19
+       ldr     x0, [x6,2080]
+       add     w28, w28, w19
        str     x6, [x29,104]
-       ldr     x0, [x7]
-       sub     w25, w25, w27
-       str     x7, [x29,96]
-       add     w26, w26, w27
-       add     x0, x0, x21
+       add     x0, x0, x22
        bl      ftl_memcpy
-       ldr     x7, [x29,96]
-       mov     w1, w20
-       ldr     x0, [x28, #:got_lo12:gVendorBlkInfo]
-       add     w20, w20, 1
-       ldr     x2, [x7]
+       ldr     x6, [x29,104]
+       mov     w1, w21
+       mov     x0, x24
+       add     w21, w21, 1
+       ldr     x2, [x6,2080]
        bl      FtlMapWritePage
        cmn     w0, #1
-       ldr     x6, [x29,104]
-       csinv   w19, w19, wzr, ne
-       add     x23, x23, x6, sxtw
-       b       .L1945
-.L1944:
-       mov     w0, w19
+       ldr     x5, [x29,112]
+       csinv   w20, w20, wzr, ne
+       add     x26, x26, x5, sxtw
+       b       .L2117
+.L2116:
+       ldr     x1, [x29,120]
+       mov     w0, w20
+       ldr     x2, [x29,184]
+       ldr     x1, [x1,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2123
+       bl      __stack_chk_fail
+.L2123:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 176
+       ldp     x29, x30, [sp], 192
        ret
        .size   FtlVendorPartWrite, .-FtlVendorPartWrite
        .align  2
        .global Ftl_save_ext_data
        .type   Ftl_save_ext_data, %function
 Ftl_save_ext_data:
-       adrp    x2, :got:g_sys_ext_data
-       mov     w0, 19539
+       adrp    x0, .LANCHOR2
+       mov     w1, 19539
+       add     x0, x0, :lo12:.LANCHOR2
+       movk    w1, 0x4654, lsl 16
        stp     x29, x30, [sp, -16]!
-       movk    w0, 0x4654, lsl 16
+       add     x2, x0, 352
        add     x29, sp, 0
-       ldr     x2, [x2, #:got_lo12:g_sys_ext_data]
-       ldr     w1, [x2]
-       cmp     w1, w0
-       bne     .L1958
-       mov     w0, 39
+       ldr     w3, [x0,352]
+       cmp     w3, w1
+       bne     .L2131
+       mov     w1, 54
+       movk    w1, 0x5000, lsl 16
+       str     w1, [x2,4]
+       ldr     w1, [x0,188]
+       str     w1, [x2,88]
+       ldr     w1, [x0,192]
+       str     w1, [x2,92]
+       ldr     w1, [x0,184]
+       str     w1, [x2,8]
+       ldr     w1, [x0,172]
+       str     w1, [x2,12]
+       ldr     w1, [x0,164]
+       str     w1, [x2,16]
+       ldr     w1, [x0,180]
+       str     w1, [x2,20]
+       ldr     w1, [x0,208]
+       str     w1, [x2,28]
+       ldr     w1, [x0,-72]
+       str     w1, [x2,32]
+       ldr     w1, [x0,168]
+       str     w1, [x2,36]
+       ldr     w1, [x0,176]
+       str     w1, [x2,40]
+       ldr     w1, [x0,216]
+       str     w1, [x2,44]
+       ldr     w1, [x0,220]
+       str     w1, [x2,48]
+       ldr     w1, [x0,344]
+       ldr     w0, [x0,2024]
+       str     w1, [x2,60]
        mov     w1, 1
-       movk    w0, 0x5000, lsl 16
-       str     w0, [x2,4]
-       adrp    x0, :got:g_totle_write_sector
-       ldr     x0, [x0, #:got_lo12:g_totle_write_sector]
-       ldr     w0, [x0]
-       str     w0, [x2,88]
-       adrp    x0, :got:g_totle_read_sector
-       ldr     x0, [x0, #:got_lo12:g_totle_read_sector]
-       ldr     w0, [x0]
-       str     w0, [x2,92]
-       adrp    x0, :got:g_totle_gc_page_count
-       ldr     x0, [x0, #:got_lo12:g_totle_gc_page_count]
-       ldr     w0, [x0]
-       str     w0, [x2,8]
-       adrp    x0, :got:g_totle_write_page_count
-       ldr     x0, [x0, #:got_lo12:g_totle_write_page_count]
-       ldr     w0, [x0]
-       str     w0, [x2,12]
-       adrp    x0, :got:g_totle_read_page_count
-       ldr     x0, [x0, #:got_lo12:g_totle_read_page_count]
-       ldr     w0, [x0]
-       str     w0, [x2,16]
-       adrp    x0, :got:g_totle_l2p_write_count
-       ldr     x0, [x0, #:got_lo12:g_totle_l2p_write_count]
-       ldr     w0, [x0]
-       str     w0, [x2,20]
-       adrp    x0, :got:g_totle_slc_erase_count
-       ldr     x0, [x0, #:got_lo12:g_totle_slc_erase_count]
-       ldr     w0, [x0]
-       str     w0, [x2,28]
-       adrp    x0, :got:g_totle_sys_slc_erase_count
-       ldr     x0, [x0, #:got_lo12:g_totle_sys_slc_erase_count]
-       ldr     w0, [x0]
-       str     w0, [x2,32]
-       adrp    x0, :got:g_totle_discard_page_count
-       ldr     x0, [x0, #:got_lo12:g_totle_discard_page_count]
-       ldr     w0, [x0]
-       str     w0, [x2,36]
-       adrp    x0, :got:g_totle_cache_write_count
-       ldr     x0, [x0, #:got_lo12:g_totle_cache_write_count]
-       ldr     w0, [x0]
-       str     w0, [x2,40]
-       adrp    x0, :got:g_max_erase_count
-       ldr     x0, [x0, #:got_lo12:g_max_erase_count]
-       ldr     w0, [x0]
-       str     w0, [x2,44]
-       adrp    x0, :got:g_min_erase_count
-       ldr     x0, [x0, #:got_lo12:g_min_erase_count]
-       ldr     w0, [x0]
-       str     w0, [x2,48]
-       adrp    x0, :got:g_all_blk_used_slc_mode
-       ldr     x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
-       ldr     w0, [x0]
-       str     w0, [x2,60]
-       adrp    x0, :got:g_SlcPartLbaEndSector
-       ldr     x0, [x0, #:got_lo12:g_SlcPartLbaEndSector]
-       ldr     w0, [x0]
        str     w0, [x2,64]
        mov     w0, 0
        bl      FtlVendorPartWrite
-.L1958:
+.L2131:
        ldp     x29, x30, [sp], 16
        ret
        .size   Ftl_save_ext_data, .-Ftl_save_ext_data
@@ -14961,66 +14728,81 @@ Ftl_save_ext_data:
        .global FtlEctTblFlush
        .type   FtlEctTblFlush, %function
 FtlEctTblFlush:
-       adrp    x1, :got:g_inkDie_check_enable
+       adrp    x2, .LANCHOR2
+       mov     w1, 32
+       add     x3, x2, :lo12:.LANCHOR2
        stp     x29, x30, [sp, -16]!
        add     x29, sp, 0
-       ldr     x1, [x1, #:got_lo12:g_inkDie_check_enable]
-       ldr     w2, [x1]
-       mov     w1, 32
-       cbz     w2, .L1961
-       adrp    x2, :got:g_min_erase_count
-       ldr     x2, [x2, #:got_lo12:g_min_erase_count]
-       ldr     w2, [x2]
-       cmp     w2, 29
-       mov     w2, 4
-       csel    w1, w1, w2, hi
-.L1961:
-       adrp    x2, :got:g_ect_tbl_power_up_flush
-       ldr     x2, [x2, #:got_lo12:g_ect_tbl_power_up_flush]
-       ldrh    w3, [x2]
-       cmp     w3, 31
-       bhi     .L1962
-       add     w3, w3, 1
+       ldr     w4, [x3,160]
+       cbz     w4, .L2134
+       ldr     w3, [x3,220]
+       cmp     w3, 29
+       mov     w3, 4
+       csel    w1, w1, w3, hi
+.L2134:
+       adrp    x3, .LANCHOR4
+       add     x3, x3, :lo12:.LANCHOR4
+       ldrh    w4, [x3,264]
+       cmp     w4, 31
+       bhi     .L2135
+       add     w4, w4, 1
        mov     w1, 1
-       strh    w3, [x2]
-.L1962:
-       adrp    x2, :got:gp_ect_tbl_info
-       cbnz    w0, .L1963
-       ldr     x0, [x2, #:got_lo12:gp_ect_tbl_info]
-       ldr     x3, [x0]
+       strh    w4, [x3,264]
+.L2135:
+       cbnz    w0, .L2136
+       add     x0, x2, :lo12:.LANCHOR2
+       ldr     x3, [x0,2152]
        ldr     w0, [x3,20]
        add     w1, w1, w0
        ldr     w0, [x3,16]
        cmp     w0, w1
-       bcc     .L1964
-.L1963:
-       ldr     x2, [x2, #:got_lo12:gp_ect_tbl_info]
-       ldr     x0, [x2]
+       bcc     .L2137
+.L2136:
+       add     x2, x2, :lo12:.LANCHOR2
+       ldr     x0, [x2,2152]
        ldr     w1, [x0,16]
        str     w1, [x0,20]
        mov     w1, 17221
        movk    w1, 0x4254, lsl 16
        str     w1, [x0]
-       adrp    x1, :got:g_ect_tbl_info_size
-       ldr     x0, [x2]
-       ldr     x1, [x1, #:got_lo12:g_ect_tbl_info_size]
+       ldr     x0, [x2,2152]
+       ldrh    w1, [x2,2136]
        str     wzr, [x0,4]
-       ldrh    w1, [x1]
-       ldr     x2, [x2]
        lsl     w3, w1, 9
        str     w3, [x0,12]
        ldr     w3, [x0,8]
+       ldr     x2, [x2,2152]
        add     w3, w3, 1
        str     w3, [x0,8]
        mov     w0, 64
        bl      FtlVendorPartWrite
        bl      Ftl_save_ext_data
-.L1964:
+.L2137:
        mov     w0, 0
        ldp     x29, x30, [sp], 16
        ret
        .size   FtlEctTblFlush, .-FtlEctTblFlush
        .align  2
+       .global StorageSysDataStore
+       .type   StorageSysDataStore, %function
+StorageSysDataStore:
+       stp     x29, x30, [sp, -32]!
+       add     x29, sp, 0
+       str     x0, [x29,16]
+       str     x1, [x29,24]
+       bl      rknand_device_lock
+       ldr     x0, [x29,16]
+       mov     w1, 1
+       ldr     x2, [x29,24]
+       add     w0, w0, 512
+       bl      FtlVendorPartWrite
+       str     x0, [x29,24]
+       bl      rknand_device_unlock
+       ldr     x0, [x29,24]
+       ldp     x29, x30, [sp], 32
+       ret
+       .size   StorageSysDataStore, .-StorageSysDataStore
+       .align  2
        .global FtlMapBlkWriteDumpData
        .type   FtlMapBlkWriteDumpData, %function
 FtlMapBlkWriteDumpData:
@@ -15031,44 +14813,42 @@ FtlMapBlkWriteDumpData:
        ldr     w1, [x0,56]
        ldrh    w20, [x0,6]
        ldr     x4, [x0,40]
-       cbz     w1, .L1968
+       cbz     w1, .L2142
+       adrp    x3, .LANCHOR2
+       adrp    x2, .LANCHOR4
+       add     x3, x3, :lo12:.LANCHOR2
+       add     x1, x2, :lo12:.LANCHOR4
+       sub     w20, w20, #1
        str     wzr, [x0,56]
        mov     x21, x0
-       adrp    x0, :got:p_sys_data_buf_1
-       adrp    x2, :got:req_sys
-       adrp    x3, :got:p_sys_spare_buf
-       sub     w20, w20, #1
-       mov     x19, x2
-       ldr     x0, [x0, #:got_lo12:p_sys_data_buf_1]
+       add     x1, x1, 136
+       ldr     x0, [x3,2072]
        uxth    w20, w20
-       ldr     x1, [x2, #:got_lo12:req_sys]
-       ldr     x0, [x0]
-       str     x0, [x1,8]
-       ldr     x3, [x3, #:got_lo12:p_sys_spare_buf]
-       ldr     x3, [x3]
+       ldr     x3, [x3,2112]
+       mov     x19, x2
        str     x3, [x1,16]
        ubfiz   x3, x20, 2, 16
+       str     x0, [x1,8]
        ldr     w3, [x4,x3]
        str     w3, [x1,4]
-       cbz     w3, .L1970
+       cbz     w3, .L2144
        mov     x0, x1
        mov     w1, 1
        mov     w2, w1
        bl      FlashReadPages
-       b       .L1971
-.L1970:
-       adrp    x2, :got:c_ftl_nand_byte_pre_page
+       b       .L2145
+.L2144:
+       adrp    x2, .LANCHOR0+2036
        mov     w1, 255
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
-       ldrh    w2, [x2]
+       ldrh    w2, [x2,#:lo12:.LANCHOR0+2036]
        bl      ftl_memset
-.L1971:
-       ldr     x2, [x19, #:got_lo12:req_sys]
+.L2145:
+       add     x2, x19, :lo12:.LANCHOR4
        mov     x0, x21
        mov     w1, w20
-       ldr     x2, [x2,8]
+       ldr     x2, [x2,144]
        bl      FtlMapWritePage
-.L1968:
+.L2142:
        ldp     x19, x20, [sp,16]
        ldr     x21, [sp,32]
        ldp     x29, x30, [sp], 48
@@ -15078,846 +14858,836 @@ FtlMapBlkWriteDumpData:
        .global FtlRecoverySuperblock
        .type   FtlRecoverySuperblock, %function
 FtlRecoverySuperblock:
-       stp     x29, x30, [sp, -240]!
+       stp     x29, x30, [sp, -224]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
+       mov     x19, x0
+       adrp    x0, __stack_chk_guard
        stp     x23, x24, [sp,48]
-       stp     x25, x26, [sp,64]
+       adrp    x23, .LANCHOR0
+       str     x0, [x29,136]
+       ldr     x1, [x0,#:lo12:__stack_chk_guard]
+       str     x1, [x29,216]
+       ldrh    w1, [x19,2]
+       str     w1, [x29,188]
+       add     x1, x23, :lo12:.LANCHOR0
        stp     x27, x28, [sp,80]
-       mov     x19, x0
-       ldrh    w25, [x0,2]
-       ldrb    w22, [x0,6]
-       adrp    x0, :got:c_ftl_nand_page_pre_blk
-       str     x0, [x29,160]
-       ldr     x1, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w1, [x1]
-       cmp     w1, w25
-       bne     .L1976
+       stp     x21, x22, [sp,32]
+       stp     x25, x26, [sp,64]
+       ldr     w2, [x29,188]
+       ldrh    w1, [x1,2026]
+       ldrb    w27, [x19,6]
+       cmp     w1, w2
+       bne     .L2150
        strh    wzr, [x19,4]
-       b       .L2119
-.L1976:
+       b       .L2302
+.L2150:
        ldrh    w0, [x19,16]
        mov     w1, 0
        mov     w2, 65535
-.L1978:
+.L2152:
        cmp     w0, w2
-       bne     .L2122
+       bne     .L2305
        add     w1, w1, 1
        uxth    w1, w1
        add     x0, x19, x1, sxtw 1
        ldrh    w0, [x0,16]
-       b       .L1978
-.L2122:
+       b       .L2152
+.L2305:
        ldrb    w1, [x19,8]
        cmp     w1, 1
-       bne     .L1980
+       bne     .L2154
        bl      FtlGetLastWrittenPage
        cmn     w0, #1
-       mov     w20, w0
-       beq     .L1981
-       adrp    x0, :got:slcPageToMlcPageTbl
-       ldr     x0, [x0, #:got_lo12:slcPageToMlcPageTbl]
-       ldrh    w23, [x0,w20,sxtw 1]
-       b       .L1982
-.L1980:
+       mov     w21, w0
+       beq     .L2155
+       add     x0, x23, :lo12:.LANCHOR0
+       mov     w24, w21
+       ldrb    w1, [x0,120]
+       cbnz    w1, .L2224
+       add     x0, x0, 196
+       ldrh    w24, [x0,w21,sxtw 1]
+       b       .L2224
+.L2154:
        mov     w1, 0
        bl      FtlGetLastWrittenPage
        cmn     w0, #1
-       mov     w20, w0
-       beq     .L1981
-       mov     w23, w0
-.L1982:
-       adrp    x1, :got:c_ftl_nand_planes_num
-       adrp    x0, :got:c_ftl_nand_byte_pre_oob
-       mov     w26, 0
-       str     x1, [x29,192]
+       mov     w21, w0
+       beq     .L2155
+       mov     w24, w0
+.L2224:
+       add     x0, x23, :lo12:.LANCHOR0
+       mov     x2, x19
+       mov     w28, 0
        mov     w7, 65535
        mov     w8, 56
-       ldr     x2, [x1, #:got_lo12:c_ftl_nand_planes_num]
-       adrp    x9, :got:req_read
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
+       adrp    x9, .LANCHOR2
+       ldrh    w3, [x0,1952]
        mov     w10, 4
-       adrp    x11, :got:p_gc_spare_buf
-       ldrh    w3, [x2]
-       mov     x2, x19
-       ldrh    w6, [x0]
+       ldrh    w6, [x0,2038]
        add     x3, x19, x3, lsl 1
-       b       .L1983
-.L1981:
+       b       .L2157
+.L2155:
        strh    wzr, [x19,2]
-.L2119:
+.L2302:
        strb    wzr, [x19,6]
-       b       .L1977
-.L1985:
+       b       .L2151
+.L2159:
        ldrh    w1, [x2,16]
        cmp     w1, w7
-       beq     .L1984
-       ldr     x5, [x9, #:got_lo12:req_read]
-       orr     w1, w23, w1, lsl 10
-       umull   x0, w26, w8
-       ldr     x4, [x5]
-       add     x4, x4, x0
-       str     w1, [x4,4]
-       ldr     x1, [x5]
+       beq     .L2158
+       add     x4, x9, :lo12:.LANCHOR2
+       orr     w1, w24, w1, lsl 10
+       umull   x0, w28, w8
+       ldr     x5, [x4,2048]
+       add     x5, x5, x0
+       str     w1, [x5,4]
+       ldr     x1, [x4,2048]
+       ldr     x4, [x4,904]
        add     x0, x1, x0
-       mul     w1, w26, w6
-       add     w26, w26, 1
+       mul     w1, w28, w6
+       add     w28, w28, 1
        str     xzr, [x0,8]
        sdiv    w1, w1, w10
-       uxth    w26, w26
-       ldr     x4, [x11, #:got_lo12:p_gc_spare_buf]
-       ldr     x4, [x4]
+       uxth    w28, w28
        add     x1, x4, x1, sxtw 2
        str     x1, [x0,16]
-.L1984:
+.L2158:
        add     x2, x2, 2
-.L1983:
+.L2157:
        cmp     x2, x3
-       bne     .L1985
-       adrp    x21, :got:req_read
-       mov     w1, w26
-       mov     w2, 0
-       mov     w24, 65535
-       ldr     x0, [x21, #:got_lo12:req_read]
-       ldr     x0, [x0]
+       bne     .L2159
+       ldrb    w0, [x19,8]
+       str     wzr, [x29,184]
+       cmp     w0, 1
+       bne     .L2160
+       add     x0, x23, :lo12:.LANCHOR0
+       ldrb    w0, [x0,120]
+       cmp     w0, wzr
+       cset    w0, ne
+       str     w0, [x29,184]
+.L2160:
+       adrp    x20, .LANCHOR2
+       ldr     w2, [x29,184]
+       add     x25, x20, :lo12:.LANCHOR2
+       mov     w1, w28
+       mov     w26, 0
+       ldr     x0, [x25,2048]
        bl      FlashReadPages
-       adrp    x0, :got:g_GlobalDataVersion
-       mov     x3, 0
-       str     x0, [x29,152]
-       mov     x6, 56
-       uxth    w7, w23
-       ldr     x1, [x0, #:got_lo12:g_GlobalDataVersion]
-       ldr     w27, [x1]
-.L1986:
-       uxth    w28, w3
-       cmp     w28, w26
-       bcs     .L1995
-       ldr     x0, [x21, #:got_lo12:req_read]
-       mul     x2, x3, x6
-       ldr     x0, [x0]
-       add     x1, x0, x2
-       ldr     w0, [x0,x2]
-       cbnz    w0, .L1987
-       ldr     x5, [x1,16]
-       str     x5, [x29,168]
-       ldr     w0, [x5,4]
-       cmn     w0, #1
-       beq     .L1989
-       ldr     x1, [x29,152]
-       str     x7, [x29,176]
-       str     x6, [x29,184]
-       ldr     x4, [x1, #:got_lo12:g_GlobalDataVersion]
-       str     x2, [x29,200]
-       str     x3, [x29,208]
-       ldr     w1, [x4]
-       str     x4, [x29,216]
+       ldr     w22, [x25,200]
+       ldr     x3, [x25,2048]
+       uxth    w6, w24
+       mov     w25, 65535
+.L2161:
+       cmp     w26, w28
+       beq     .L2306
+       ldr     w0, [x3]
+       cbnz    w0, .L2162
+       ldr     x4, [x3,16]
+       ldr     w2, [x4,4]
+       cmn     w2, #1
+       beq     .L2163
+       add     x5, x20, :lo12:.LANCHOR2
+       mov     w0, w2
+       str     x6, [x29,144]
+       str     x4, [x29,152]
+       ldr     w1, [x5,200]
+       str     x3, [x29,160]
+       str     x2, [x29,168]
+       str     x5, [x29,176]
        bl      ftl_cmp_data_ver
-       ldr     x4, [x29,216]
-       ldr     x3, [x29,208]
-       ldr     x2, [x29,200]
-       ldr     x6, [x29,184]
-       ldr     x7, [x29,176]
-       ldr     x5, [x29,168]
-       cbz     w0, .L1989
-       ldr     w0, [x5,4]
-       add     w0, w0, 1
-       str     w0, [x4]
-.L1989:
-       ldr     x0, [x21, #:got_lo12:req_read]
-       ldr     x0, [x0]
-       add     x2, x0, x2
-       ldr     x0, [x2,16]
-       ldr     w0, [x0]
+       ldr     x5, [x29,176]
+       ldr     x2, [x29,168]
+       ldr     x3, [x29,160]
+       ldr     x4, [x29,152]
+       ldr     x6, [x29,144]
+       cbz     w0, .L2163
+       add     w2, w2, 1
+       str     w2, [x5,200]
+.L2163:
+       ldr     w0, [x4]
        cmn     w0, #1
-       bne     .L1991
-.L1995:
-       cmp     w28, w26
-       bne     .L2114
-       ldr     x0, [x21, #:got_lo12:req_read]
-       add     w20, w20, 1
-       uxth    w20, w20
-       ldr     x0, [x0]
+       bne     .L2164
+       add     x0, x20, :lo12:.LANCHOR2
+       mov     w1, 56
+       uxth    w21, w21
+       umull   x26, w26, w1
+       ldr     x0, [x0,2048]
+       add     x26, x0, x26
+       ldr     w0, [x26,4]
+       b       .L2298
+.L2162:
+       mov     w25, w6
+.L2164:
+       add     w26, w26, 1
+       add     x3, x3, 56
+       uxth    w26, w26
+       b       .L2161
+.L2306:
+       add     x0, x20, :lo12:.LANCHOR2
+       add     w21, w21, 1
+       uxth    w21, w21
+       ldr     x0, [x0,2048]
        ldr     w0, [x0,4]
-       b       .L2115
-.L1987:
-       mov     w24, w7
-.L1991:
-       add     x3, x3, 1
-       b       .L1986
-.L2114:
-       mov     w0, 56
-       uxth    w20, w20
-       umull   x28, w28, w0
-       ldr     x0, [x21, #:got_lo12:req_read]
-       ldr     x0, [x0]
-       add     x28, x0, x28
-       ldr     w0, [x28,4]
-.L2115:
-       lsr     w0, w0, 10
+.L2298:
+       lsr     x0, x0, 10
        bl      P2V_plane
        uxth    w26, w0
        ldrb    w1, [x19,8]
        cmp     w1, 1
-       bne     .L1997
-       adrp    x0, :got:slcPageToMlcPageTbl
-       ldr     x0, [x0, #:got_lo12:slcPageToMlcPageTbl]
-       ldrh    w20, [x0,w20,sxtw 1]
-.L1997:
-       ldr     x0, [x29,160]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w0, [x0]
-       cmp     w0, w20
-       bne     .L1998
-       strh    w20, [x19,2]
+       bne     .L2168
+       add     x0, x23, :lo12:.LANCHOR0
+       ldrb    w2, [x0,120]
+       cbnz    w2, .L2168
+       add     x0, x0, 196
+       ldrh    w21, [x0,w21,sxtw 1]
+.L2168:
+       add     x0, x23, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2026]
+       cmp     w0, w21
+       bne     .L2169
+       strh    w21, [x19,2]
        strb    wzr, [x19,6]
        strh    wzr, [x19,4]
-.L1998:
-       uxth    w0, w22
-       cmp     w20, w25
-       str     w0, [x29,184]
-       bne     .L1999
-       cmp     w26, w0
-       beq     .L2120
-.L1999:
+.L2169:
+       uxth    w0, w27
+       str     w0, [x29,152]
+       ldr     w0, [x29,188]
+       cmp     w21, w0
+       beq     .L2307
+.L2170:
        mov     w0, 65535
-       sub     w22, w27, #1
-       cmp     w24, w0
-       bne     .L2000
-       cbnz    w1, .L2001
-.L2000:
-       adrp    x24, :got:g_recovery_page_min_ver
-       uxth    w5, w23
-       ldr     x0, [x24, #:got_lo12:g_recovery_page_min_ver]
-       ldr     w1, [x0]
+       sub     w22, w22, #1
+       cmp     w25, w0
+       bne     .L2171
+       cbz     w1, .L2171
+.L2172:
+       adrp    x25, .LANCHOR4
+       mov     w1, 1
+       add     x0, x25, :lo12:.LANCHOR4
+       strh    w1, [x0,266]
+       add     x0, x20, :lo12:.LANCHOR2
+       add     x0, x0, 2240
+       bl      FtlMapBlkWriteDumpData
+       ldr     w24, [x29,188]
+       adrp    x0, .LC113
+       str     x25, [x29,128]
+       add     x0, x0, :lo12:.LC113
+       str     x0, [x29,120]
+.L2190:
+       add     x0, x23, :lo12:.LANCHOR0
+       mov     x1, x19
+       str     wzr, [x29,176]
+       mov     w7, 65535
+       mov     w8, 56
+       ldrh    w3, [x0,1952]
+       ldrb    w6, [x0,120]
+       add     x3, x19, x3, lsl 1
+.L2191:
+       cmp     x1, x3
+       bne     .L2194
+       add     x0, x20, :lo12:.LANCHOR2
+       ldr     w1, [x29,176]
+       ldr     w2, [x29,184]
+       ldr     x0, [x0,2048]
+       bl      FlashReadPages
+       str     xzr, [x29,160]
+.L2195:
+       ldrh    w0, [x29,160]
+       ldr     w1, [x29,176]
+       cmp     w1, w0, uxth
+       bhi     .L2221
+       add     x0, x23, :lo12:.LANCHOR0
+       add     w24, w24, 1
+       uxth    w24, w24
+       ldrh    w1, [x0,2026]
+       cmp     w24, w1
+       bne     .L2190
+       ldrh    w2, [x0,1952]
+       mov     w3, 65535
+       strh    w24, [x19,2]
+       mov     x0, 0
+       strh    wzr, [x19,4]
+.L2222:
+       uxth    w1, w0
+       cmp     w1, w2
+       bcs     .L2151
+       add     x0, x0, 1
+       add     x4, x19, x0, lsl 1
+       ldrh    w4, [x4,14]
+       cmp     w4, w3
+       beq     .L2222
+       strb    w1, [x19,6]
+.L2151:
+       ldr     x1, [x29,136]
+       mov     w0, 0
+       ldr     x2, [x29,216]
+       ldr     x1, [x1,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2225
+       bl      __stack_chk_fail
+.L2307:
+       ldr     w0, [x29,152]
+       cmp     w26, w0
+       bne     .L2170
+       b       .L2303
+.L2171:
+       add     x0, x20, :lo12:.LANCHOR2
+       uxth    w5, w24
+       ldr     w1, [x0,2332]
        cmn     w1, #1
-       bne     .L2002
-       str     w22, [x0]
-.L2002:
-       ldr     x0, [x24, #:got_lo12:g_recovery_page_min_ver]
-       mov     w27, w25
-       ldr     w6, [x0]
-       add     w0, w25, 7
-       cmp     w0, w23, uxth
-       bge     .L2003
-       sub     w27, w5, #7
-       uxth    w27, w27
-.L2003:
+       bne     .L2173
+       str     w22, [x0,2332]
+.L2173:
+       add     x0, x20, :lo12:.LANCHOR2
+       ldr     w25, [x29,188]
+       ldr     w6, [x0,2332]
+       ldr     w0, [x29,188]
+       add     w0, w0, 7
+       cmp     w0, w24, uxth
+       bge     .L2174
+       sub     w25, w5, #7
+       uxth    w25, w25
+.L2174:
        mov     w3, -1
+       add     x28, x20, :lo12:.LANCHOR2
+       mov     w27, w3
        mov     w4, 65535
-       mov     w28, w3
        mov     w7, 56
-       adrp    x8, :got:mlcPageToSlcPageTbl
-.L2004:
-       cmp     w27, w5
-       bhi     .L2017
-       ldr     x0, [x29,192]
-       mov     w23, 0
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w2, [x0]
+       add     x8, x28, 996
+.L2175:
+       cmp     w25, w5
+       bhi     .L2188
+       add     x0, x23, :lo12:.LANCHOR0
+       mov     w24, 0
+       ldrh    w2, [x0,1952]
        mov     x0, x19
        add     x2, x19, x2, lsl 1
-.L2018:
+.L2189:
        cmp     x0, x2
-       beq     .L2123
+       beq     .L2308
        ldrh    w1, [x0,16]
        cmp     w1, w4
-       beq     .L2005
-       ldr     x10, [x21, #:got_lo12:req_read]
-       orr     w1, w27, w1, lsl 10
-       umull   x9, w23, w7
-       add     w23, w23, 1
-       ldr     x10, [x10]
-       uxth    w23, w23
+       beq     .L2176
+       umull   x9, w24, w7
+       ldr     x10, [x28,2048]
+       add     w24, w24, 1
+       orr     w1, w25, w1, lsl 10
        add     x9, x10, x9
+       uxth    w24, w24
        str     w1, [x9,4]
-.L2005:
+.L2176:
        add     x0, x0, 2
-       b       .L2018
-.L2123:
-       ldr     x9, [x21, #:got_lo12:req_read]
-       mov     w1, w23
-       mov     w2, 0
-       str     x8, [x29,136]
-       str     x7, [x29,144]
-       ldr     x0, [x9]
-       str     x4, [x29,168]
-       str     x6, [x29,176]
-       str     x5, [x29,200]
-       str     x3, [x29,208]
-       str     x9, [x29,216]
+       b       .L2189
+.L2308:
+       ldr     x0, [x28,2048]
+       mov     w1, w24
+       ldr     w2, [x29,184]
+       str     x8, [x29,120]
+       str     x7, [x29,128]
+       str     x4, [x29,144]
+       str     x6, [x29,160]
+       str     x5, [x29,168]
+       str     x3, [x29,176]
        bl      FlashReadPages
-       ldr     x9, [x29,216]
+       add     x0, x23, :lo12:.LANCHOR0
+       ldr     x3, [x29,176]
+       ldr     x5, [x29,168]
        mov     w1, 0
-       ldr     x3, [x29,208]
-       sxtw    x10, w27
-       ldr     x5, [x29,200]
-       ldr     x0, [x9]
-       ldr     x6, [x29,176]
-       ldr     x4, [x29,168]
+       ldr     x6, [x29,160]
+       sxtw    x10, w25
+       ldrb    w9, [x0,120]
+       ldr     x0, [x28,2048]
+       ldr     x4, [x29,144]
+       ldr     x7, [x29,128]
        add     x0, x0, 16
-       ldr     x7, [x29,144]
-       ldr     x8, [x29,136]
-.L2007:
-       cmp     w1, w23
-       beq     .L2124
+       ldr     x8, [x29,120]
+.L2178:
+       cmp     w1, w24
+       beq     .L2309
        ldr     w2, [x0,-16]
-       cbnz    w2, .L2008
+       cbnz    w2, .L2179
        ldr     x2, [x0]
-       ldrh    w9, [x2]
-       cmp     w9, w4
-       beq     .L2009
-       ldr     w9, [x2,4]
-       cmn     w9, #1
-       beq     .L2009
-       ldr     x2, [x24, #:got_lo12:g_recovery_page_min_ver]
+       ldrh    w11, [x2]
+       cmp     w11, w4
+       beq     .L2180
+       ldr     w2, [x2,4]
+       cmn     w2, #1
+       beq     .L2180
+       ldr     w27, [x28,2332]
        cmn     w3, #1
-       ldr     w28, [x2]
-       str     w9, [x2]
-       bne     .L2009
-       ldr     x2, [x8, #:got_lo12:mlcPageToSlcPageTbl]
-       ldrh    w2, [x2,x10,lsl 1]
+       str     w2, [x28,2332]
+       bne     .L2180
+       ldrh    w2, [x8,x10,lsl 1]
        cmp     w2, w4
-       beq     .L2009
-       cmp     w28, w22
-       csinv   w3, w28, wzr, ne
-       b       .L2009
-.L2008:
+       bne     .L2181
+       cbz     w9, .L2180
+.L2181:
+       cmp     w27, w22
+       csinv   w3, w27, wzr, ne
+       b       .L2180
+.L2179:
        ldrb    w0, [x19,8]
-       cbnz    w0, .L2001
-       adrp    x0, :got:mlcPageToSlcPageTbl
-       ldr     x0, [x0, #:got_lo12:mlcPageToSlcPageTbl]
-       ldrh    w1, [x0,w27,sxtw 1]
-       mov     w0, 65535
-       cmp     w1, w0
-       bne     .L2012
+       cbnz    w0, .L2172
+       add     x0, x20, :lo12:.LANCHOR2
+       add     x1, x0, 996
+       ldrh    w2, [x1,w25,sxtw 1]
+       mov     w1, 65535
+       cmp     w2, w1
+       bne     .L2183
        cmn     w3, #1
-       ldr     x24, [x24, #:got_lo12:g_recovery_page_min_ver]
-       beq     .L2013
-       str     w3, [x24]
-       b       .L2001
-.L2013:
+       beq     .L2184
+       str     w3, [x0,2332]
+       b       .L2172
+.L2184:
        cmp     w6, w22
-       beq     .L2014
-       str     w6, [x24]
-       b       .L2001
-.L2014:
-       ldr     w0, [x24]
-       b       .L2121
-.L2012:
-       cmp     w28, w22
-       beq     .L2015
-       cmn     w28, #1
-       beq     .L2001
-       ldr     x24, [x24, #:got_lo12:g_recovery_page_min_ver]
-       str     w28, [x24]
-       b       .L2001
-.L2015:
-       ldr     x24, [x24, #:got_lo12:g_recovery_page_min_ver]
-       ldr     w0, [x24]
-       cmp     w0, w22
-       beq     .L2001
-.L2121:
-       sub     w0, w0, #1
-       b       .L2116
-.L2009:
+       beq     .L2185
+       str     w6, [x0,2332]
+       b       .L2172
+.L2185:
+       ldr     w1, [x0,2332]
+       b       .L2304
+.L2183:
+       cmp     w27, w22
+       beq     .L2186
+       cmn     w27, #1
+       beq     .L2172
+       str     w27, [x0,2332]
+       b       .L2172
+.L2186:
+       ldr     w1, [x0,2332]
+       cmp     w1, w22
+       beq     .L2172
+.L2304:
+       sub     w1, w1, #1
+       b       .L2299
+.L2180:
        add     w1, w1, 1
        add     x0, x0, 56
        uxth    w1, w1
-       b       .L2007
-.L2124:
-       add     w27, w27, 1
-       uxth    w27, w27
-       b       .L2004
-.L2017:
-       ldr     x24, [x24, #:got_lo12:g_recovery_page_min_ver]
-       mov     w0, -1
-.L2116:
-       str     w0, [x24]
-.L2001:
-       adrp    x0, :got:g_power_lost_recovery_flag
-       mov     w1, 1
-       mov     w23, w25
-       ldr     x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
-       strh    w1, [x0]
-       adrp    x0, :got:gL2pMapInfo
-       ldr     x0, [x0, #:got_lo12:gL2pMapInfo]
-       bl      FtlMapBlkWriteDumpData
-       add     x0, x29, 232
-       str     x0, [x29,144]
-       adrp    x0, .LC111
-       add     x0, x0, :lo12:.LC111
-       str     x0, [x29,128]
-       add     x0, x29, 236
-       str     x0, [x29,120]
-       add     x0, x29, 228
-       str     x0, [x29,112]
-.L2019:
-       ldr     x0, [x29,192]
-       mov     w4, 65535
-       str     wzr, [x29,216]
-       mov     w5, 56
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w2, [x0]
-       mov     x0, x19
-       add     x2, x19, x2, lsl 1
-.L2020:
-       cmp     x0, x2
-       beq     .L2125
-       ldrh    w1, [x0,16]
-       cmp     w1, w4
-       beq     .L2021
-       ldr     w3, [x29,216]
-       orr     w1, w23, w1, lsl 10
-       ldr     x6, [x21, #:got_lo12:req_read]
-       umull   x3, w3, w5
-       ldr     x6, [x6]
-       add     x3, x6, x3
-       str     w1, [x3,4]
-       ldr     w1, [x29,216]
-       add     w1, w1, 1
-       uxth    w1, w1
-       str     w1, [x29,216]
-.L2021:
-       add     x0, x0, 2
-       b       .L2020
-.L2125:
-       ldr     x0, [x21, #:got_lo12:req_read]
-       mov     w2, 0
-       ldr     w1, [x29,216]
-       ldr     x0, [x0]
-       bl      FlashReadPages
-       str     xzr, [x29,200]
-.L2023:
-       ldrh    w0, [x29,200]
-       ldr     w1, [x29,216]
-       cmp     w1, w0, uxth
-       bls     .L2126
-       ldr     x0, [x29,200]
+       b       .L2178
+.L2309:
+       add     w25, w25, 1
+       uxth    w25, w25
+       b       .L2175
+.L2188:
+       add     x0, x20, :lo12:.LANCHOR2
+       mov     w1, -1
+.L2299:
+       str     w1, [x0,2332]
+       b       .L2172
+.L2194:
+       ldrh    w2, [x1,16]
+       cmp     w2, w7
+       beq     .L2192
+       ldr     w0, [x29,176]
+       add     x5, x20, :lo12:.LANCHOR2
+       orr     w2, w24, w2, lsl 10
+       ldr     x4, [x5,2048]
+       umull   x0, w0, w8
+       add     x4, x4, x0
+       str     w2, [x4,4]
+       ldrb    w2, [x19,8]
+       cmp     w2, 1
+       bne     .L2193
+       cbz     w6, .L2193
+       ldr     x2, [x5,2048]
+       add     x0, x2, x0
+       ldr     w2, [x0,4]
+       orr     w2, w2, -2147483648
+       str     w2, [x0,4]
+.L2193:
+       ldr     w0, [x29,176]
+       add     w0, w0, 1
+       uxth    w0, w0
+       str     w0, [x29,176]
+.L2192:
+       add     x1, x1, 2
+       b       .L2191
+.L2221:
+       ldr     x0, [x29,160]
        mov     x1, 56
-       mul     x24, x0, x1
-       ldr     x0, [x21, #:got_lo12:req_read]
-       ldr     x0, [x0]
-       add     x0, x0, x24
-       ldr     w0, [x0,4]
-       str     w0, [x29,236]
-       lsr     w0, w0, 10
+       mul     x25, x0, x1
+       add     x0, x20, :lo12:.LANCHOR2
+       ldr     x1, [x0,2048]
+       str     x1, [x29,168]
+       add     x28, x1, x25
+       ldr     w27, [x28,4]
+       str     w27, [x29,212]
+       lsr     x0, x27, 10
        bl      P2V_plane
        uxth    w0, w0
-       cmp     w23, w25
-       bcc     .L2024
-       ldr     w1, [x29,184]
-       cmp     w0, w1
-       bcs     .L2056
-       cmp     w23, w25
-       beq     .L2024
-.L2056:
+       ldr     w1, [x29,188]
+       cmp     w24, w1
+       ldr     x1, [x29,168]
+       bcc     .L2196
+       ldr     w2, [x29,152]
+       cmp     w0, w2
+       bcs     .L2229
+       ldr     w2, [x29,188]
+       cmp     w24, w2
+       beq     .L2196
+.L2229:
        cmp     w0, w26
-       bne     .L2057
-       cmp     w23, w20
-       beq     .L2026
-.L2057:
-       ldr     x0, [x21, #:got_lo12:req_read]
-       ldr     x0, [x0]
-       add     x1, x0, x24
-       ldr     w0, [x0,x24]
+       bne     .L2230
+       cmp     w24, w21
+       beq     .L2198
+.L2230:
+       ldr     w0, [x1,x25]
        cmn     w0, #1
-       beq     .L2028
-       ldr     x28, [x1,16]
+       beq     .L2200
+       ldr     x28, [x28,16]
        mov     w0, 61589
        ldrh    w1, [x28]
        cmp     w1, w0
-       bne     .L2037
+       bne     .L2207
        ldr     w22, [x28,4]
        cmn     w22, #1
-       beq     .L2031
-       ldr     x0, [x29,152]
-       ldr     x27, [x0, #:got_lo12:g_GlobalDataVersion]
+       beq     .L2202
+       add     x27, x20, :lo12:.LANCHOR2
        mov     w0, w22
-       ldr     w1, [x27]
+       ldr     w1, [x27,200]
        bl      ftl_cmp_data_ver
-       cbz     w0, .L2031
-       ldr     w0, [x28,4]
-       add     w0, w0, 1
-       str     w0, [x27]
-.L2031:
+       cbz     w0, .L2202
+       add     w0, w22, 1
+       str     w0, [x27,200]
+.L2202:
        ldr     w27, [x28,8]
-       mov     w2, 0
+       add     x1, x29, 208
        ldr     w0, [x28,12]
-       ldr     x1, [x29,144]
-       str     w0, [x29,228]
+       mov     w2, 0
+       str     w0, [x29,204]
        mov     w0, w27
        bl      log2phys
-       adrp    x0, :got:g_recovery_page_min_ver
-       str     x0, [x29,136]
-       ldr     x1, [x0, #:got_lo12:g_recovery_page_min_ver]
-       str     x1, [x29,168]
-       ldr     w1, [x1]
+       add     x3, x20, :lo12:.LANCHOR2
+       str     x3, [x29,168]
+       ldr     w1, [x3,2332]
        cmn     w1, #1
-       beq     .L2033
+       beq     .L2203
        mov     w0, w22
        bl      ftl_cmp_data_ver
-       cbz     w0, .L2033
-       ldr     w1, [x29,228]
+       ldr     x3, [x29,168]
+       cbz     w0, .L2203
+       ldr     w1, [x29,204]
        cmn     w1, #1
-       beq     .L2034
-       ldr     x3, [x21, #:got_lo12:req_read]
-       str     x3, [x29,104]
-       ldr     x0, [x3]
-       add     x0, x0, x24
+       beq     .L2204
+       ldr     x0, [x3,2048]
+       str     x3, [x29,112]
+       add     x0, x0, x25
        str     w1, [x0,4]
        mov     w1, 1
        ldr     x2, [x0,16]
-       ldr     x0, [x3]
-       str     x2, [x29,208]
+       ldr     x0, [x3,2048]
+       str     x2, [x29,168]
        mov     w2, 0
-       add     x0, x0, x24
+       add     x0, x0, x25
        bl      FlashReadPages
-       ldr     x0, [x29,208]
-       ldr     x3, [x29,104]
+       ldr     x3, [x29,112]
+       ldr     x0, [x29,168]
+       ldr     x2, [x3,2048]
        ldr     w0, [x0,4]
-       str     w0, [x29,176]
-       ldr     x0, [x3]
-       ldr     w0, [x0,x24]
+       str     w0, [x29,144]
+       add     x4, x2, x25
+       ldr     w0, [x2,x25]
        cmn     w0, #1
-       bne     .L2035
-       b       .L2036
-.L2034:
-       ldr     w0, [x29,236]
-       ldr     w1, [x29,232]
+       bne     .L2205
+       b       .L2206
+.L2204:
+       ldr     w0, [x29,212]
+       ldr     w1, [x29,208]
        cmp     w1, w0
-       bne     .L2037
-       ldr     x1, [x29,112]
+       bne     .L2207
        mov     w0, w27
+       add     x1, x29, 204
        mov     w2, 1
        bl      log2phys
-.L2037:
+.L2207:
        ldrh    w0, [x19]
-       b       .L2118
-.L2035:
-       ldr     x0, [x29,208]
+       b       .L2301
+.L2205:
+       ldr     x0, [x29,168]
        ldr     w28, [x0,8]
        cmp     w28, w27
-       bne     .L2036
-       ldr     x0, [x29,168]
-       ldr     w1, [x29,176]
-       str     x3, [x29,104]
-       ldr     w0, [x0]
+       bne     .L2206
+       ldr     w0, [x3,2332]
+       ldr     w1, [x29,144]
+       str     x2, [x29,96]
+       str     x4, [x29,104]
+       str     x3, [x29,112]
        bl      ftl_cmp_data_ver
-       ldr     x3, [x29,104]
-       cbz     w0, .L2036
-       ldr     w0, [x29,232]
-       ldr     w1, [x29,236]
+       ldr     x3, [x29,112]
+       ldr     x4, [x29,104]
+       ldr     x2, [x29,96]
+       cbz     w0, .L2206
+       ldr     w0, [x29,208]
+       ldr     w1, [x29,212]
        cmp     w0, w1
-       beq     .L2042
-       ldr     w1, [x29,228]
+       beq     .L2212
+       ldr     w1, [x29,204]
        cmp     w0, w1
-       beq     .L2036
+       beq     .L2206
        cmn     w0, #1
-       ldr     x1, [x3]
-       beq     .L2040
-       add     x1, x1, x24
-       str     w0, [x1,4]
-       ldr     x2, [x1,16]
-       mov     w1, 1
-       ldr     x0, [x3]
-       str     x2, [x29,208]
+       beq     .L2210
+       str     w0, [x4,4]
        mov     w2, 0
-       add     x0, x0, x24
+       ldr     x1, [x4,16]
+       ldr     x0, [x3,2048]
+       str     x1, [x29,168]
+       mov     w1, 1
+       add     x0, x0, x25
        bl      FlashReadPages
-       b       .L2041
-.L2040:
-       str     w0, [x1,x24]
-.L2041:
-       ldr     x0, [x21, #:got_lo12:req_read]
-       ldr     x0, [x0]
-       ldr     w0, [x0,x24]
-       cmn     w0, #1
-       beq     .L2042
-       ldr     x0, [x29,208]
-       ldr     w24, [x0,4]
-       ldr     x0, [x29,136]
-       mov     w1, w24
-       ldr     x0, [x0, #:got_lo12:g_recovery_page_min_ver]
-       ldr     w0, [x0]
+       b       .L2211
+.L2210:
+       str     w0, [x2,x25]
+.L2211:
+       add     x0, x20, :lo12:.LANCHOR2
+       ldr     x1, [x0,2048]
+       ldr     w1, [x1,x25]
+       cmn     w1, #1
+       beq     .L2212
+       ldr     x1, [x29,168]
+       ldr     w0, [x0,2332]
+       ldr     w25, [x1,4]
+       mov     w1, w25
        bl      ftl_cmp_data_ver
-       cbz     w0, .L2042
-       ldr     w0, [x29,176]
-       mov     w1, w24
+       cbz     w0, .L2212
+       ldr     w0, [x29,144]
+       mov     w1, w25
        bl      ftl_cmp_data_ver
-       cbz     w0, .L2036
-.L2042:
-       ldr     w1, [x29,228]
+       cbz     w0, .L2206
+.L2212:
+       ldr     w1, [x29,204]
        mov     w0, w28
        bl      FtlReUsePrevPpa
-.L2036:
+.L2206:
        mov     w0, -1
-       str     w0, [x29,228]
+       str     w0, [x29,204]
        ldrh    w0, [x19]
        bl      decrement_vpc_count
-       b       .L2044
-.L2033:
-       ldr     w0, [x29,236]
-       ldr     w1, [x29,232]
+       b       .L2214
+.L2203:
+       ldr     w0, [x29,212]
+       ldr     w1, [x29,208]
        cmp     w1, w0
-       beq     .L2044
-       ldr     x1, [x29,120]
+       beq     .L2214
        mov     w0, w27
+       add     x1, x29, 212
        mov     w2, 1
        bl      log2phys
-       ldr     w0, [x29,232]
-       cmn     w0, #1
-       beq     .L2044
-       ldr     w1, [x29,228]
-       cmp     w0, w1
-       beq     .L2044
-       lsr     w0, w0, 10
+       ldr     w25, [x29,208]
+       cmn     w25, #1
+       beq     .L2214
+       ldr     w0, [x29,204]
+       cmp     w25, w0
+       beq     .L2214
+       lsr     x0, x25, 10
        bl      P2V_block_in_plane
        uxth    w0, w0
-       adrp    x1, :got:g_active_superblock
-       ldr     x1, [x1, #:got_lo12:g_active_superblock]
-       ldrh    w1, [x1]
-       cmp     w1, w0
-       beq     .L2047
-       adrp    x1, :got:g_buffer_superblock
-       ldr     x1, [x1, #:got_lo12:g_buffer_superblock]
-       ldrh    w1, [x1]
-       cmp     w1, w0
-       beq     .L2047
-       adrp    x1, :got:g_gc_temp_superblock
-       ldr     x1, [x1, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w1, [x1]
+       ldrh    w2, [x20,#:lo12:.LANCHOR2]
+       add     x1, x20, :lo12:.LANCHOR2
+       cmp     w2, w0
+       beq     .L2217
+       ldrh    w2, [x1,48]
+       cmp     w2, w0
+       beq     .L2217
+       ldrh    w1, [x1,96]
        cmp     w1, w0
-       bne     .L2044
-.L2047:
-       ldr     x24, [x21, #:got_lo12:req_read]
-       mov     w2, 0
-       ldr     w1, [x29,232]
-       ldr     x0, [x24]
-       str     w1, [x0,4]
+       bne     .L2214
+.L2217:
+       add     x28, x20, :lo12:.LANCHOR2
        mov     w1, 1
-       ldr     x28, [x0,16]
-       ldr     x0, [x24]
+       mov     w2, 0
+       ldr     x0, [x28,2048]
+       str     w25, [x0,4]
+       ldr     x3, [x0,16]
+       ldr     x0, [x28,2048]
+       str     x3, [x29,168]
        bl      FlashReadPages
-       ldr     x0, [x24]
-       ldr     w1, [x28,4]
+       ldr     x0, [x28,2048]
+       ldr     x3, [x29,168]
        ldr     w0, [x0]
+       ldr     w1, [x3,4]
        cmn     w0, #1
-       beq     .L2044
+       beq     .L2214
        mov     w0, w22
        bl      ftl_cmp_data_ver
-       cbnz    w0, .L2044
-       ldr     x1, [x29,144]
+       cbnz    w0, .L2214
        mov     w0, w27
+       add     x1, x29, 208
        mov     w2, 1
        bl      log2phys
-.L2044:
-       ldr     w0, [x29,228]
+.L2214:
+       ldr     w0, [x29,204]
        cmn     w0, #1
-       beq     .L2024
-       lsr     w0, w0, 10
+       beq     .L2196
+       lsr     x0, x0, 10
        bl      P2V_block_in_plane
        uxth    w1, w0
-       adrp    x2, :got:p_valid_page_count_table
+       add     x2, x20, :lo12:.LANCHOR2
        ubfiz   x3, x1, 1, 16
-       ldr     x2, [x2, #:got_lo12:p_valid_page_count_table]
-       ldr     x2, [x2]
+       ldr     x2, [x2,-40]
        ldrh    w2, [x2,x3]
-       cbz     w2, .L2048
-.L2118:
+       cbz     w2, .L2218
+.L2301:
        bl      decrement_vpc_count
-       b       .L2024
-.L2048:
-       ldr     x0, [x29,128]
+       b       .L2196
+.L2218:
+       ldr     x0, [x29,120]
        bl      printk
-       b       .L2024
-.L2028:
-       adrp    x1, :got:g_recovery_page_num
-       ldr     x1, [x1, #:got_lo12:g_recovery_page_num]
-       ldr     w0, [x1]
+       b       .L2196
+.L2200:
+       ldr     x0, [x29,128]
+       add     x1, x0, :lo12:.LANCHOR4
+       ldr     w0, [x1,268]
        cmp     w0, 31
-       bhi     .L2049
-       adrp    x2, :got:g_recovery_ppa_tbl
-       ldr     w3, [x29,236]
-       ldr     x2, [x2, #:got_lo12:g_recovery_ppa_tbl]
-       str     w3, [x2,w0,uxtw 2]
+       bhi     .L2219
+       add     x2, x1, 272
+       str     w27, [x2,w0,uxtw 2]
        add     w0, w0, 1
-       str     w0, [x1]
-.L2049:
+       str     w0, [x1,268]
+.L2219:
        ldrh    w0, [x19]
        bl      decrement_vpc_count
-       adrp    x0, :got:g_recovery_page_min_ver
-       ldr     x0, [x0, #:got_lo12:g_recovery_page_min_ver]
-       ldr     w1, [x0]
+       add     x0, x20, :lo12:.LANCHOR2
+       ldr     w1, [x0,2332]
        cmn     w1, #1
-       beq     .L2117
+       beq     .L2300
        cmp     w1, w22
-       bls     .L2024
-.L2117:
-       str     w22, [x0]
-.L2024:
-       ldr     x0, [x29,200]
-       add     x0, x0, 1
-       str     x0, [x29,200]
-       b       .L2023
-.L2126:
+       bls     .L2196
+.L2300:
+       str     w22, [x0,2332]
+.L2196:
        ldr     x0, [x29,160]
-       add     w23, w23, 1
-       uxth    w23, w23
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w0, [x0]
-       cmp     w23, w0
-       bne     .L2019
-       ldr     x0, [x29,192]
-       mov     w3, 65535
-       strh    w23, [x19,2]
-       strh    wzr, [x19,4]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w2, [x0]
-       mov     x0, 0
-.L2052:
-       uxth    w1, w0
-       cmp     w1, w2
-       bcs     .L1977
        add     x0, x0, 1
-       add     x4, x19, x0, lsl 1
-       ldrh    w4, [x4,14]
-       cmp     w4, w3
-       beq     .L2052
-       strb    w1, [x19,6]
-       b       .L1977
-.L2026:
+       str     x0, [x29,160]
+       b       .L2195
+.L2198:
        strb    w26, [x19,6]
-       strh    w20, [x19,2]
-.L2120:
+       strh    w21, [x19,2]
+.L2303:
        mov     x0, x19
-       mov     w1, w20
+       mov     w1, w21
        mov     w2, w26
        bl      ftl_sb_update_avl_pages
-.L1977:
-       mov     w0, 0
+       b       .L2151
+.L2225:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 240
+       ldp     x29, x30, [sp], 224
        ret
        .size   FtlRecoverySuperblock, .-FtlRecoverySuperblock
        .align  2
        .global FtlWriteDumpData
        .type   FtlWriteDumpData, %function
 FtlWriteDumpData:
-       stp     x29, x30, [sp, -144]!
+       stp     x29, x30, [sp, -160]!
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       adrp    x19, :got:g_active_superblock
+       adrp    x19, .LANCHOR2
        stp     x21, x22, [sp,32]
        stp     x23, x24, [sp,48]
-       ldr     x0, [x19, #:got_lo12:g_active_superblock]
+       add     x21, x19, :lo12:.LANCHOR2
+       adrp    x23, __stack_chk_guard
        stp     x25, x26, [sp,64]
-       ldrh    w3, [x0,4]
-       cbz     w3, .L2128
-       ldrb    w1, [x0,8]
-       cbnz    w1, .L2128
-       adrp    x2, :got:c_ftl_nand_page_pre_blk
-       ldrb    w1, [x0,7]
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w2, [x2]
-       mul     w1, w1, w2
-       cmp     w3, w1
-       beq     .L2128
-       adrp    x1, :got:g_MaxLpn
-       ldrb    w23, [x0,10]
-       ldr     x1, [x1, #:got_lo12:g_MaxLpn]
-       ldr     w21, [x1]
-       adrp    x1, :got:c_ftl_nand_planes_num
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w24, [x1]
-       cbnz    w23, .L2127
-       sub     w21, w21, #1
-       add     x1, x29, 84
-       mov     w2, w23
-       mov     w0, w21
-       add     x22, x29, 88
+       ldr     x0, [x23,#:lo12:__stack_chk_guard]
+       ldrh    w1, [x21,4]
+       str     x0, [x29,152]
+       cbz     w1, .L2311
+       ldrb    w0, [x21,8]
+       cbnz    w0, .L2311
+       adrp    x22, .LANCHOR0
+       ldrb    w0, [x21,7]
+       add     x22, x22, :lo12:.LANCHOR0
+       ldrh    w2, [x22,2026]
+       mul     w0, w0, w2
+       cmp     w1, w0
+       beq     .L2311
+       ldrb    w25, [x21,10]
+       ldr     w24, [x22,2104]
+       ldrh    w26, [x22,1952]
+       cbnz    w25, .L2310
+       sub     w24, w24, #1
+       add     x1, x29, 92
+       mov     w0, w24
+       mov     w2, w25
        bl      log2phys
-       str     w21, [x29,112]
-       adrp    x0, :got:p_sys_data_buf
-       ldr     w2, [x29,84]
-       str     w2, [x29,92]
-       cmn     w2, #1
-       ldr     x0, [x0, #:got_lo12:p_sys_data_buf]
-       ldr     x1, [x0]
-       str     x1, [x29,96]
-       adrp    x1, :got:p_sys_spare_buf
-       ldr     x1, [x1, #:got_lo12:p_sys_spare_buf]
-       ldr     x20, [x1]
-       str     x20, [x29,104]
-       str     w23, [x20,4]
-       beq     .L2130
-       mov     x0, x22
+       ldr     x20, [x21,2112]
+       ldr     w0, [x29,92]
+       ldr     x1, [x21,-64]
+       str     w0, [x29,100]
+       cmn     w0, #1
+       str     w24, [x29,120]
+       str     x1, [x29,104]
+       str     x20, [x29,112]
+       str     w25, [x20,4]
+       beq     .L2313
+       add     x0, x29, 96
        mov     w1, 1
-       mov     w2, w23
+       mov     w2, w25
        bl      FlashReadPages
-       b       .L2131
-.L2130:
-       adrp    x2, :got:c_ftl_nand_byte_pre_page
-       ldr     x0, [x0]
+       b       .L2314
+.L2313:
+       ldr     x0, [x21,-64]
        mov     w1, 255
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_byte_pre_page]
-       ldrh    w2, [x2]
+       ldrh    w2, [x22,2036]
        bl      ftl_memset
-.L2131:
-       mov     w0, 6
-       mov     w26, 0
-       adrp    x25, :got:g_GlobalDataVersion
-       mul     w24, w24, w0
+.L2314:
        mov     w0, -3947
+       lsl     w26, w26, 2
        strh    w0, [x20]
-.L2132:
-       cmp     w26, w24
-       beq     .L2133
-       ldr     x23, [x19, #:got_lo12:g_active_superblock]
-       ldrh    w0, [x23,4]
-       cbz     w0, .L2133
-       ldr     w0, [x22,4]
-       add     w26, w26, 1
+       mov     w22, 0
+       add     x21, x19, :lo12:.LANCHOR2
+.L2315:
+       cmp     w22, w26
+       beq     .L2316
+       ldrh    w0, [x21,4]
+       cbz     w0, .L2316
+       ldr     w0, [x29,100]
+       add     w22, w22, 1
        str     w0, [x20,12]
-       ldrh    w0, [x23]
+       ldrh    w0, [x21]
        strh    w0, [x20,2]
-       mov     x0, x23
-       str     w21, [x20,8]
+       mov     x0, x21
+       str     w24, [x20,8]
        bl      get_new_active_ppa
-       str     w0, [x22,4]
-       ldr     x0, [x25, #:got_lo12:g_GlobalDataVersion]
+       str     w0, [x29,100]
+       ldr     w1, [x21,200]
        mov     w2, 0
-       mov     w3, w2
-       ldr     w1, [x0]
        str     w1, [x20,4]
+       mov     w3, w2
        add     w1, w1, 1
+       add     x0, x29, 96
        cmn     w1, #1
        csel    w1, w1, wzr, ne
-       str     w1, [x0]
+       str     w1, [x21,200]
        mov     w1, 1
-       mov     x0, x22
        bl      FlashProgPages
-       ldrh    w0, [x23]
+       ldrh    w0, [x21]
        bl      decrement_vpc_count
-       b       .L2132
-.L2133:
-       ldr     x19, [x19, #:got_lo12:g_active_superblock]
+       b       .L2315
+.L2316:
+       add     x19, x19, :lo12:.LANCHOR2
        mov     w0, 1
        strb    w0, [x19,10]
-       b       .L2127
-.L2128:
-       ldr     x19, [x19, #:got_lo12:g_active_superblock]
+       b       .L2310
+.L2311:
+       add     x19, x19, :lo12:.LANCHOR2
        strb    wzr, [x19,10]
-.L2127:
+.L2310:
+       ldr     x1, [x29,152]
+       ldr     x0, [x23,#:lo12:__stack_chk_guard]
+       cmp     x1, x0
+       beq     .L2321
+       bl      __stack_chk_fail
+.L2321:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
-       ldp     x29, x30, [sp], 144
+       ldp     x29, x30, [sp], 160
        ret
        .size   FtlWriteDumpData, .-FtlWriteDumpData
        .align  2
@@ -15929,27 +15699,27 @@ l2p_flush:
        stp     x19, x20, [sp,16]
        str     x21, [sp,32]
        mov     w19, 0
-       adrp    x20, :got:c_ftl_nand_l2pmap_ram_region_num
-       adrp    x21, :got:p_l2p_ram_map
+       adrp    x20, .LANCHOR0
+       adrp    x21, .LANCHOR2
        bl      FtlWriteDumpData
-.L2145:
-       ldr     x0, [x20, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
-       ldrh    w0, [x0]
+.L2329:
+       add     x0, x20, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2066]
        cmp     w0, w19
-       bls     .L2148
-       ldr     x1, [x21, #:got_lo12:p_l2p_ram_map]
+       bls     .L2332
+       add     x1, x21, :lo12:.LANCHOR2
        ubfiz   x0, x19, 4, 16
-       ldr     x1, [x1]
+       ldr     x1, [x1,144]
        add     x0, x1, x0
        ldr     w0, [x0,4]
-       tbz     w0, #31, .L2146
+       tbz     w0, #31, .L2330
        mov     w0, w19
        bl      flush_l2p_region
-.L2146:
+.L2330:
        add     w19, w19, 1
        uxth    w19, w19
-       b       .L2145
-.L2148:
+       b       .L2329
+.L2332:
        mov     w0, 0
        ldr     x21, [sp,32]
        ldp     x19, x20, [sp,16]
@@ -15960,114 +15730,110 @@ l2p_flush:
        .global FtlVpcCheckAndModify
        .type   FtlVpcCheckAndModify, %function
 FtlVpcCheckAndModify:
-       stp     x29, x30, [sp, -112]!
-       adrp    x1, .LANCHOR1
-       adrp    x0, .LC112
-       add     x1, x1, :lo12:.LANCHOR1
+       stp     x29, x30, [sp, -96]!
+       adrp    x1, .LANCHOR3
        add     x29, sp, 0
+       stp     x21, x22, [sp,32]
+       adrp    x22, __stack_chk_guard
+       add     x1, x1, :lo12:.LANCHOR3
        add     x1, x1, 16
-       add     x0, x0, :lo12:.LC112
+       str     x25, [sp,64]
        stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
+       ldr     x0, [x22,#:lo12:__stack_chk_guard]
+       adrp    x21, .LANCHOR0
+       str     x0, [x29,88]
+       adrp    x0, .LC114
+       add     x0, x0, :lo12:.LC114
+       adrp    x20, .LANCHOR2
        stp     x23, x24, [sp,48]
-       stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
        bl      printk
-       adrp    x20, :got:p_valid_page_count_check_table
-       adrp    x0, :got:c_ftl_nand_blk_pre_plane
        mov     w19, 0
-       adrp    x21, :got:g_MaxLpn
-       add     x22, x29, 108
-       ldr     x1, [x20, #:got_lo12:p_valid_page_count_check_table]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       ldrh    w2, [x0]
-       ldr     x0, [x1]
+       add     x1, x21, :lo12:.LANCHOR0
+       add     x0, x20, :lo12:.LANCHOR2
+       ldrh    w2, [x1,1962]
        mov     w1, 0
+       ldr     x0, [x0,2160]
        lsl     w2, w2, 1
        bl      ftl_memset
-.L2150:
-       ldr     x0, [x21, #:got_lo12:g_MaxLpn]
-       ldr     w0, [x0]
+.L2334:
+       add     x0, x21, :lo12:.LANCHOR0
+       ldr     w0, [x0,2104]
        cmp     w19, w0
-       bcs     .L2165
+       bcs     .L2350
        mov     w0, w19
-       mov     x1, x22
+       add     x1, x29, 84
        mov     w2, 0
        bl      log2phys
-       ldr     w0, [x29,108]
+       ldr     w0, [x29,84]
        cmn     w0, #1
-       beq     .L2151
-       lsr     w0, w0, 10
+       beq     .L2335
+       lsr     x0, x0, 10
        bl      P2V_block_in_plane
        ubfiz   x0, x0, 1, 16
-       ldr     x1, [x20, #:got_lo12:p_valid_page_count_check_table]
-       ldr     x3, [x1]
-       ldrh    w2, [x3,x0]
-       add     w2, w2, 1
-       strh    w2, [x3,x0]
-.L2151:
+       add     x1, x20, :lo12:.LANCHOR2
+       ldr     x2, [x1,2160]
+       ldrh    w1, [x2,x0]
+       add     w1, w1, 1
+       strh    w1, [x2,x0]
+.L2335:
        add     w19, w19, 1
-       b       .L2150
-.L2165:
-       adrp    x22, .LC113
+       b       .L2334
+.L2350:
+       adrp    x24, .LC115
        mov     w19, 0
-       adrp    x23, :got:c_ftl_nand_data_blks_per_plane
-       adrp    x24, :got:p_valid_page_count_table
+       add     x20, x20, :lo12:.LANCHOR2
        mov     w25, 65535
-       add     x22, x22, :lo12:.LC113
-       adrp    x26, :got:g_active_superblock
-.L2153:
-       ldr     x0, [x23, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w0, [x0]
+       add     x24, x24, :lo12:.LC115
+.L2337:
+       add     x0, x21, :lo12:.LANCHOR0
+       ldrh    w0, [x0,1960]
        cmp     w0, w19
-       bls     .L2166
-       ldr     x27, [x24, #:got_lo12:p_valid_page_count_table]
-       ubfiz   x21, x19, 1, 16
-       ldr     x28, [x20, #:got_lo12:p_valid_page_count_check_table]
-       ldr     x0, [x27]
-       ldrh    w2, [x0,x21]
-       ldr     x0, [x28]
-       ldrh    w3, [x0,x21]
+       bls     .L2351
+       ubfiz   x23, x19, 1, 16
+       ldr     x0, [x20,-40]
+       ldrh    w2, [x0,x23]
+       ldr     x0, [x20,2160]
+       ldrh    w3, [x0,x23]
        cmp     w2, w3
-       beq     .L2156
+       beq     .L2340
        cmp     w2, w25
-       beq     .L2156
-       mov     x0, x22
+       beq     .L2340
+       mov     x0, x24
        mov     w1, w19
        bl      printk
-       ldr     x0, [x26, #:got_lo12:g_active_superblock]
-       ldrh    w0, [x0]
+       ldrh    w0, [x20]
        cmp     w0, w19
-       beq     .L2156
-       adrp    x0, :got:g_gc_temp_superblock
-       ldr     x0, [x0, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w0, [x0]
+       beq     .L2340
+       ldrh    w0, [x20,96]
        cmp     w0, w19
-       beq     .L2156
-       adrp    x0, :got:g_buffer_superblock
-       ldr     x0, [x0, #:got_lo12:g_buffer_superblock]
-       ldrh    w0, [x0]
+       beq     .L2340
+       ldrh    w0, [x20,48]
        cmp     w0, w19
-       beq     .L2156
-       ldr     x0, [x28]
-       ldrh    w1, [x0,x21]
-       ldr     x0, [x27]
-       strh    w1, [x0,x21]
+       beq     .L2340
+       ldr     x0, [x20,2160]
+       ldrh    w1, [x0,x23]
+       ldr     x0, [x20,-40]
+       strh    w1, [x0,x23]
        mov     w0, w19
        bl      update_vpc_list
        bl      l2p_flush
        bl      FtlVpcTblFlush
-.L2156:
+.L2340:
        add     w19, w19, 1
        uxth    w19, w19
-       b       .L2153
-.L2166:
+       b       .L2337
+.L2351:
+       ldr     x1, [x29,88]
+       ldr     x0, [x22,#:lo12:__stack_chk_guard]
+       cmp     x1, x0
+       beq     .L2343
+       bl      __stack_chk_fail
+.L2343:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
-       ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 112
+       ldr     x25, [sp,64]
+       ldp     x29, x30, [sp], 96
        ret
        .size   FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
        .align  2
@@ -16078,91 +15844,81 @@ allocate_new_data_superblock:
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
        str     x21, [sp,32]
-       mov     x19, x0
+       mov     x20, x0
+       adrp    x19, .LANCHOR2
        ldrh    w21, [x0]
        mov     w0, 65535
        cmp     w21, w0
-       beq     .L2168
-       adrp    x1, :got:p_valid_page_count_table
+       beq     .L2353
+       add     x1, x19, :lo12:.LANCHOR2
        ubfiz   x0, x21, 1, 16
-       ldr     x1, [x1, #:got_lo12:p_valid_page_count_table]
-       ldr     x1, [x1]
+       ldr     x1, [x1,-40]
        ldrh    w0, [x1,x0]
-       cbz     w0, .L2169
+       cbz     w0, .L2354
        mov     w0, w21
        bl      INSERT_DATA_LIST
-       b       .L2168
-.L2169:
+       b       .L2353
+.L2354:
        mov     w0, w21
        bl      INSERT_FREE_LIST
-.L2168:
-       adrp    x0, :got:g_buffer_superblock
-       strb    wzr, [x19,8]
-       ldr     x0, [x0, #:got_lo12:g_buffer_superblock]
-       cmp     x19, x0
-       beq     .L2170
-       adrp    x0, :got:c_ftl_nand_type
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_type]
-       ldrh    w0, [x0]
-       cmp     w0, 1
-       bne     .L2171
-.L2170:
+.L2353:
+       add     x2, x19, :lo12:.LANCHOR2
+       strb    wzr, [x20,8]
+       add     x0, x2, 48
+       cmp     x20, x0
+       beq     .L2355
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       ldrh    w1, [x0,1972]
+       cmp     w1, 1
+       beq     .L2355
+       ldrb    w0, [x0,120]
+       cbz     w0, .L2356
+.L2355:
        mov     w0, 1
-       strb    w0, [x19,8]
-       b       .L2172
-.L2171:
-       adrp    x1, :got:g_active_superblock
-       ldr     x2, [x1, #:got_lo12:g_active_superblock]
-       cmp     x19, x2
-       bne     .L2172
-       cmp     w0, 3
-       beq     .L2174
-       adrp    x0, :got:g_all_blk_used_slc_mode
-       ldr     x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
-       ldr     w0, [x0]
+       strb    w0, [x20,8]
+       b       .L2357
+.L2356:
+       cmp     x20, x2
+       bne     .L2357
+       cmp     w1, 3
+       beq     .L2359
+       ldr     w0, [x20,344]
        cmp     w0, 1
-       bne     .L2175
-.L2174:
-       ldr     x0, [x1, #:got_lo12:g_active_superblock]
-       mov     w2, 1
-       strb    w2, [x0,8]
-.L2175:
-       adrp    x0, :got:g_inkDie_check_enable
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       ldr     w0, [x0]
-       cbz     w0, .L2172
-       adrp    x0, :got:g_min_erase_count
-       ldr     x0, [x0, #:got_lo12:g_min_erase_count]
-       ldr     w0, [x0]
-       cmp     w0, 29
-       bhi     .L2172
-       ldr     x1, [x1, #:got_lo12:g_active_superblock]
-       mov     w0, 1
-       strb    w0, [x1,8]
-.L2172:
-       adrp    x1, :got:g_tmp_data_superblock_id
-       mov     w2, 65535
-       mov     x20, x1
-       ldr     x0, [x1, #:got_lo12:g_tmp_data_superblock_id]
-       ldrh    w0, [x0]
-       cmp     w0, w2
-       beq     .L2177
-       cmp     w21, w0
-       bne     .L2178
-       adrp    x2, :got:p_valid_page_count_table
-       ubfiz   x1, x0, 1, 16
-       ldr     x2, [x2, #:got_lo12:p_valid_page_count_table]
-       ldr     x2, [x2]
-       ldrh    w1, [x2,x1]
-       cbz     w1, .L2179
-.L2178:
+       bne     .L2360
+.L2359:
+       add     x0, x19, :lo12:.LANCHOR2
+       mov     w1, 1
+       strb    w1, [x0,8]
+.L2360:
+       add     x0, x19, :lo12:.LANCHOR2
+       ldr     w1, [x0,160]
+       cbz     w1, .L2357
+       ldr     w1, [x0,220]
+       cmp     w1, 29
+       bhi     .L2357
+       mov     w1, 1
+       strb    w1, [x0,8]
+.L2357:
+       add     x2, x19, :lo12:.LANCHOR2
+       mov     w1, 65535
+       ldrh    w0, [x2,2320]
+       cmp     w0, w1
+       beq     .L2362
+       cmp     w21, w0
+       bne     .L2363
+       ubfiz   x1, x0, 1, 16
+       ldr     x2, [x2,-40]
+       ldrh    w1, [x2,x1]
+       cbz     w1, .L2364
+.L2363:
        bl      update_vpc_list
-.L2179:
-       ldr     x1, [x20, #:got_lo12:g_tmp_data_superblock_id]
+.L2364:
+       add     x19, x19, :lo12:.LANCHOR2
        mov     w0, -1
-       strh    w0, [x1]
-.L2177:
-       mov     x0, x19
+       strh    w0, [x19,2320]
+.L2362:
+       mov     x0, x20
        bl      allocate_data_superblock
        bl      l2p_flush
        bl      FtlVpcTblFlush
@@ -16175,3996 +15931,2914 @@ allocate_new_data_superblock:
        ret
        .size   allocate_new_data_superblock, .-allocate_new_data_superblock
        .align  2
-       .global FtlCacheWriteBack
-       .type   FtlCacheWriteBack, %function
-FtlCacheWriteBack:
-       adrp    x0, :got:gp_last_act_superblock
+       .global rk_ftl_garbage_collect
+       .type   rk_ftl_garbage_collect, %function
+rk_ftl_garbage_collect:
        stp     x29, x30, [sp, -144]!
+       mov     w2, 0
        add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:gp_last_act_superblock]
-       stp     x19, x20, [sp,16]
        stp     x21, x22, [sp,32]
+       mov     w22, w1
+       adrp    x1, __stack_chk_guard
+       stp     x19, x20, [sp,16]
        stp     x23, x24, [sp,48]
+       adrp    x19, .LANCHOR2
+       mov     w24, w0
+       ldr     x0, [x1,#:lo12:__stack_chk_guard]
+       str     x0, [x29,136]
+       add     x0, x19, :lo12:.LANCHOR2
        stp     x25, x26, [sp,64]
        stp     x27, x28, [sp,80]
-       ldr     x19, [x0]
-       adrp    x0, :got:g_wr_page_num
-       str     x0, [x29,120]
-       ldr     x1, [x0, #:got_lo12:g_wr_page_num]
-       ldr     w1, [x1]
-       cbz     w1, .L2190
-       adrp    x21, :got:req_wr_io
-       ldrb    w3, [x19,9]
-       mov     w2, 0
-       mov     w23, 0
-       adrp    x24, .LC114
-       mov     w22, w23
-       ldr     x0, [x21, #:got_lo12:req_wr_io]
-       mov     w25, 56
-       adrp    x26, :got:p_valid_page_count_table
-       add     x24, x24, :lo12:.LC114
-       ldr     x0, [x0]
-       bl      FlashProgPages
-       add     x0, x29, 140
-       str     x0, [x29,112]
-.L2191:
-       ldr     x0, [x29,120]
-       ldr     x0, [x0, #:got_lo12:g_wr_page_num]
-       ldr     w1, [x0]
-       cmp     w22, w1
-       bcs     .L2209
-       cbz     w23, .L2192
-       ldr     x1, [x21, #:got_lo12:req_wr_io]
-       mov     w2, -1
-       umull   x0, w22, w25
-       ldr     x1, [x1]
-       str     w2, [x1,x0]
-.L2192:
-       umull   x20, w22, w25
-       adrp    x27, :got:c_ftl_nand_page_pre_blk
-       adrp    x28, :got:g_sys_ext_data
-.L2193:
-       ldr     x3, [x21, #:got_lo12:req_wr_io]
-       ldr     x1, [x3]
-       add     x0, x1, x20
-       ldr     w1, [x1,x20]
-       cmn     w1, #1
-       bne     .L2210
-       ldr     w0, [x0,4]
-       lsr     w0, w0, 10
-       bl      P2V_block_in_plane
-       ldrh    w1, [x19]
-       cmp     w1, w0, uxth
-       bne     .L2194
-       ldr     x0, [x26, #:got_lo12:p_valid_page_count_table]
-       ubfiz   x1, x1, 1, 16
-       ldrh    w3, [x19,4]
-       ldr     x2, [x0]
-       ldrh    w0, [x2,x1]
-       sub     w0, w0, w3
-       strh    w0, [x2,x1]
-       ldr     x0, [x27, #:got_lo12:c_ftl_nand_page_pre_blk]
-       strb    wzr, [x19,6]
-       strh    wzr, [x19,4]
-       ldrh    w0, [x0]
-       strh    w0, [x19,2]
-.L2194:
-       ldrh    w0, [x19,4]
-       cbnz    w0, .L2195
-       mov     x0, x19
-       bl      allocate_new_data_superblock
-.L2195:
-       ldr     x1, [x28, #:got_lo12:g_sys_ext_data]
-       ldr     w0, [x1,96]
-       add     w0, w0, 1
-       str     w0, [x1,96]
-       ldr     x23, [x21, #:got_lo12:req_wr_io]
-       ldr     x0, [x23]
-       add     x0, x0, x20
-       ldr     w0, [x0,4]
-       lsr     w0, w0, 10
-       bl      FtlGcMarkBadPhyBlk
-       mov     x0, x19
-       bl      get_new_active_ppa
-       str     w0, [x29,140]
-       ldr     x1, [x23]
-       mov     w2, 0
-       add     x1, x1, x20
-       str     w0, [x1,4]
-       mov     w1, 1
-       ldr     x0, [x23]
-       mov     w23, 1
-       ldrb    w3, [x19,9]
-       add     x0, x0, x20
-       bl      FlashProgPages
-       b       .L2193
-.L2210:
-       ldr     w1, [x0,4]
+       str     x1, [x29,120]
+       ldr     w3, [x0,2028]
+       cbnz    w3, .L2378
+       ldrh    w1, [x0,-24]
+       cmp     w1, 47
+       bls     .L2378
+       adrp    x1, .LANCHOR1+3004
+       ldrh    w2, [x1,#:lo12:.LANCHOR1+3004]
+       mov     w1, 65535
+       cmp     w2, w1
+       bne     .L2379
+.L2382:
+       add     x0, x19, :lo12:.LANCHOR2
+       mov     w2, 65535
+       ldrh    w1, [x0,954]
+       cmp     w1, w2
+       bne     .L2380
+       b       .L2381
+.L2379:
+       ldrh    w0, [x0,96]
+       cmp     w0, w1
+       beq     .L2382
+       mov     w0, 1
+       bl      FtlGcFreeTempBlock
        mov     w2, 1
-       str     w1, [x29,140]
-       ldr     w0, [x0,24]
+       cbz     w0, .L2382
+       b       .L2378
+.L2380:
+       ldrh    w3, [x0,952]
+       cmp     w3, w2
+       bne     .L2381
+       strh    w1, [x0,952]
+       mov     w1, -1
+       strh    w1, [x0,954]
+.L2381:
+       add     x20, x19, :lo12:.LANCHOR2
+       cmp     w24, 1
+       ldr     w0, [x20,868]
+       add     w0, w0, 1
+       add     w0, w0, w24, lsl 7
+       str     w0, [x20,868]
+       beq     .L2383
+.L2385:
+       mov     w21, 65535
+       b       .L2384
+.L2383:
+       ldr     w1, [x20,160]
+       cbz     w1, .L2385
+       ldr     w1, [x20,220]
+       cmp     w1, 29
+       bhi     .L2385
+       adrp    x23, .LANCHOR4
+       add     x21, x23, :lo12:.LANCHOR4
+       ldrh    w1, [x21,400]
+       add     w0, w0, w1
+       str     w0, [x20,868]
+       bl      FtlGcReFreshBadBlk
+       ldrh    w0, [x20,296]
+       mov     w1, 65535
+       cmp     w0, w1
+       bne     .L2385
+       ldrh    w1, [x20,952]
+       cmp     w1, w0
+       bne     .L2385
+       ldr     w0, [x20,868]
+       cmp     w0, 1024
+       bls     .L2385
+       ldr     w0, [x20,220]
+       str     wzr, [x20,868]
+       strh    wzr, [x21,400]
+       cbnz    w0, .L2386
+       mov     w0, 6
+       b       .L2537
+.L2386:
+       cmp     w0, 5
+       bhi     .L2387
+       mov     w0, 18
+.L2537:
+       strh    w0, [x21,400]
+.L2387:
+       mov     w0, 32
+       mov     w27, 65535
+       bl      List_get_gc_head_node
+       uxth    w25, w0
+       cmp     w25, w27
+       beq     .L2391
+       add     x20, x19, :lo12:.LANCHOR2
+       ldrh    w0, [x20,872]
+       cbz     w0, .L2389
+       adrp    x2, .LANCHOR0
+       ldr     x26, [x20,-40]
+       add     x2, x2, :lo12:.LANCHOR0
+       ubfiz   x25, x25, 1, 16
+       ldrh    w1, [x2,2028]
+       ldrh    w2, [x2,1952]
+       ldrh    w3, [x26,x25]
+       mul     w1, w1, w2
+       add     w1, w1, 1
+       cmp     w3, w1
+       bgt     .L2391
+       add     w1, w0, 1
+       str     wzr, [x20,876]
+       uxth    w1, w1
+       strh    w1, [x20,872]
+       str     x1, [x29,112]
+       bl      List_get_gc_head_node
+       uxth    w21, w0
+       cmp     w21, w27
        ldr     x1, [x29,112]
-       str     x3, [x29,104]
-       bl      log2phys
-       ldr     x3, [x29,104]
-       ldr     x0, [x3]
-       add     x20, x0, x20
-       ldr     x0, [x20,16]
-       ldr     w0, [x0,12]
-       cmn     w0, #1
-       beq     .L2197
-       lsr     w0, w0, 10
-       bl      P2V_block_in_plane
-       uxth    w1, w0
-       ldr     x2, [x26, #:got_lo12:p_valid_page_count_table]
-       ubfiz   x0, x1, 1, 16
-       mov     w20, w1
-       ldr     x2, [x2]
-       ldrh    w2, [x2,x0]
-       cbnz    w2, .L2198
-       mov     x0, x24
+       beq     .L2391
+       ubfiz   x27, x21, 1, 16
+       adrp    x0, .LC116
+       ldrh    w4, [x26,x25]
+       add     x0, x0, :lo12:.LC116
+       mov     w2, w21
+       ldrh    w3, [x26,x27]
        bl      printk
-.L2198:
-       mov     w0, w20
-       bl      decrement_vpc_count
-.L2197:
-       add     w22, w22, 1
-       b       .L2191
-.L2209:
-       str     wzr, [x0]
-.L2190:
-       mov     w0, 0
-       ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
-       ldp     x23, x24, [sp,48]
-       ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 144
-       ret
-       .size   FtlCacheWriteBack, .-FtlCacheWriteBack
-       .align  2
-       .global rk_ftl_cache_write_back
-       .type   rk_ftl_cache_write_back, %function
-rk_ftl_cache_write_back:
-       stp     x29, x30, [sp, -16]!
-       add     x29, sp, 0
-       bl      FtlCacheWriteBack
-       ldp     x29, x30, [sp], 16
-       ret
-       .size   rk_ftl_cache_write_back, .-rk_ftl_cache_write_back
-       .align  2
-       .global FtlSysFlush
-       .type   FtlSysFlush, %function
-FtlSysFlush:
-       stp     x29, x30, [sp, -16]!
-       add     x29, sp, 0
-       bl      FtlCacheWriteBack
-       bl      l2p_flush
-       bl      FtlVpcTblFlush
+       ldrh    w0, [x20,872]
+       cmp     w0, 40
+       bls     .L2390
+       ldr     x0, [x20,-40]
+       ldrh    w0, [x0,x27]
+       cmp     w0, 32
+       bls     .L2390
+       strh    wzr, [x20,872]
+.L2390:
+       add     x23, x23, :lo12:.LANCHOR4
+       mov     w0, 6
+       strh    w0, [x23,400]
+       b       .L2384
+.L2389:
        mov     w0, 1
-       bl      FtlEctTblFlush
+       strh    w0, [x20,872]
+.L2391:
+       bl      GetSwlReplaceBlock
+       uxth    w21, w0
+       mov     w0, 65535
+       cmp     w21, w0
+       bne     .L2384
+       add     x23, x23, :lo12:.LANCHOR4
+       strh    wzr, [x23,400]
+.L2384:
+       add     x20, x19, :lo12:.LANCHOR2
+       mov     w0, 65535
+       ldrh    w1, [x20,296]
+       cmp     w1, w0
+       bne     .L2392
+       ldrh    w0, [x20,96]
+       cmp     w0, w1
+       bne     .L2392
+       ldrh    w25, [x20,952]
+       cmp     w25, w0
+       bne     .L2392
+       ldrh    w0, [x20,-8]
+       mov     w2, 1024
+       ldr     w1, [x20,868]
+       cmp     w0, 24
+       mov     w0, 5120
+       csel    w0, w0, w2, cc
+       cmp     w1, w0
+       bls     .L2392
+       adrp    x0, .LANCHOR4+400
+       str     wzr, [x20,868]
+       mov     x23, x20
+       strh    wzr, [x0,#:lo12:.LANCHOR4+400]
+       bl      GetSwlReplaceBlock
+       uxth    w21, w0
+       cmp     w21, w25
+       bne     .L2394
+       ldrh    w1, [x20,-8]
+       ldrh    w0, [x20,866]
+       cmp     w1, w0
+       bcs     .L2395
+       mov     w0, 64
+       bl      List_get_gc_head_node
+       uxth    w0, w0
+       cmp     w0, w21
+       beq     .L2404
+       ldr     w2, [x20,2024]
+       uxtw    x1, w0
+       adrp    x20, .LANCHOR0
+       cbnz    w2, .L2397
+       add     x0, x20, :lo12:.LANCHOR0
+       ldrh    w2, [x0,1972]
+       cmp     w2, 3
+       beq     .L2397
+       ldr     w2, [x23,344]
+       cbnz    w2, .L2397
+       ldr     w2, [x23,160]
+       cbnz    w2, .L2397
+       ldrb    w0, [x0,120]
+       cbz     w0, .L2398
+.L2397:
+       add     x0, x19, :lo12:.LANCHOR2
+       add     x3, x20, :lo12:.LANCHOR0
+       ldr     x0, [x0,-40]
+       ldrh    w4, [x0,x1,lsl 1]
+       ldrh    w1, [x3,2028]
+       ldrh    w0, [x3,1952]
+       ldrh    w3, [x3,1972]
+       mul     w2, w1, w0
+       cmp     w3, 3
        mov     w0, 0
-       ldp     x29, x30, [sp], 16
-       ret
-       .size   FtlSysFlush, .-FtlSysFlush
-       .align  2
-       .global FtlDeInit
-       .type   FtlDeInit, %function
-FtlDeInit:
-       adrp    x0, :got:gFtlInitStatus
-       stp     x29, x30, [sp, -16]!
-       add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:gFtlInitStatus]
-       ldr     w0, [x0]
-       cmp     w0, 1
-       bne     .L2214
-       bl      FtlSysFlush
-.L2214:
+       lsr     w1, w1, 1
+       csel    w0, w1, w0, eq
+       add     w0, w2, w0
+       cmp     w4, w0
+       bgt     .L2400
        mov     w0, 0
-       ldp     x29, x30, [sp], 16
-       ret
-       .size   FtlDeInit, .-FtlDeInit
-       .align  2
-       .global rk_ftl_de_init
-       .type   rk_ftl_de_init, %function
-rk_ftl_de_init:
-       stp     x29, x30, [sp, -16]!
-       add     x29, sp, 0
-       bl      rk_nand_de_init
-       bl      FtlDeInit
-       bl      rk_nand_de_init
-       ldp     x29, x30, [sp], 16
-       ret
-       .size   rk_ftl_de_init, .-rk_ftl_de_init
-       .align  2
-       .global FtlDiscard
-       .type   FtlDiscard, %function
-FtlDiscard:
-       stp     x29, x30, [sp, -96]!
-       add     w2, w0, w1
-       add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       mov     w20, w0
-       adrp    x0, :got:g_MaxLbaSector
-       stp     x21, x22, [sp,32]
-       stp     x23, x24, [sp,48]
-       ldr     x0, [x0, #:got_lo12:g_MaxLbaSector]
-       mov     w19, w1
-       str     x25, [sp,64]
-       ldr     w1, [x0]
-       mov     w0, -1
-       cmp     w2, w1
-       bhi     .L2217
-       cmp     w19, 31
-       bls     .L2231
-       adrp    x22, :got:c_ftl_nand_sec_pre_page
-       bl      FtlCacheWriteBack
-       ldr     x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w1, [x0]
-       udiv    w21, w20, w1
-       msub    w20, w1, w21, w20
-       uxth    w20, w20
-       cbz     w20, .L2219
-       sub     w1, w1, w20
-       add     w21, w21, 1
-       cmp     w1, w19
-       csel    w1, w1, w19, ls
-       sub     w19, w19, w1, uxth
-.L2219:
-       adrp    x20, .LANCHOR0
-       mov     w0, -1
-       add     x23, x29, 88
-       str     w0, [x29,92]
        add     x20, x20, :lo12:.LANCHOR0
-       adrp    x24, :got:g_totle_discard_page_count
-       add     x25, x29, 92
-.L2220:
-       ldr     x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w0, [x0]
-       cmp     w19, w0
-       bcc     .L2232
-       mov     w0, w21
-       mov     x1, x23
-       mov     w2, 0
-       bl      log2phys
-       ldr     w0, [x29,88]
-       cmn     w0, #1
-       beq     .L2221
-       ldr     w0, [x20,32]
-       mov     w2, 1
-       add     w0, w0, 1
-       str     w0, [x20,32]
-       ldr     x1, [x24, #:got_lo12:g_totle_discard_page_count]
-       ldr     w0, [x1]
-       add     w0, w0, 1
-       str     w0, [x1]
-       mov     x1, x25
-       mov     w0, w21
-       bl      log2phys
-       ldr     w0, [x29,88]
-       lsr     w0, w0, 10
-       bl      P2V_block_in_plane
-       bl      decrement_vpc_count
-.L2221:
-       ldr     x0, [x22, #:got_lo12:c_ftl_nand_sec_pre_page]
-       add     w21, w21, 1
-       ldrh    w0, [x0]
-       sub     w19, w19, w0
-       b       .L2220
-.L2232:
+       bl      List_get_gc_head_node
+       uxth    w21, w0
+       add     x1, x19, :lo12:.LANCHOR2
+       ldr     w0, [x20,2104]
+       ldr     w2, [x1,156]
+       add     w0, w0, w0, lsl 1
+       cmp     w2, w0, lsr 2
+       bls     .L2401
+       mov     w0, 128
+       b       .L2538
+.L2401:
+       mov     w0, 160
+.L2538:
+       strh    w0, [x1,866]
+       b       .L2402
+.L2400:
+       add     x0, x19, :lo12:.LANCHOR2
+       mov     w1, 128
+       b       .L2539
+.L2398:
+       ldr     x2, [x23,-40]
+       ldrh    w1, [x2,x1,lsl 1]
+       cmp     w1, 7
+       bhi     .L2403
+       bl      List_get_gc_head_node
+       uxth    w21, w0
+       add     x0, x19, :lo12:.LANCHOR2
+       mov     w1, 128
+       strh    w1, [x0,866]
+       b       .L2402
+.L2403:
+       add     x0, x19, :lo12:.LANCHOR2
+       mov     w1, 64
+.L2539:
+       strh    w1, [x0,866]
+       b       .L2404
+.L2395:
+       mov     w0, 80
+       strh    w0, [x20,866]
+       b       .L2404
+.L2402:
+       mov     w0, 65535
+       cmp     w21, w0
+       beq     .L2404
+.L2394:
+       add     x5, x19, :lo12:.LANCHOR2
+       ubfiz   x4, x21, 1, 16
+       adrp    x0, .LC117
+       mov     w1, w21
+       add     x0, x0, :lo12:.LC117
+       ldr     x3, [x5,-40]
+       ldr     x6, [x5,-80]
+       ldrh    w2, [x5,-8]
+       ldrh    w3, [x3,x4]
+       ldrh    w5, [x5,864]
+       ldrh    w4, [x6,x4]
+       bl      printk
+.L2404:
+       bl      FtlGcReFreshBadBlk
+.L2392:
+       mov     w0, 65535
+       cmp     w21, w0
+       cset    w1, eq
+       cbz     w1, .L2405
+       cbnz    w24, .L2405
+       add     x0, x19, :lo12:.LANCHOR2
+       mov     w20, 1
+       ldrh    w1, [x0,-8]
+       cmp     w1, 24
+       bhi     .L2406
        adrp    x0, .LANCHOR0
+       cmp     w1, 16
        add     x0, x0, :lo12:.LANCHOR0
-       ldr     w1, [x0,32]
-       cmp     w1, 32
-       bls     .L2231
-       str     wzr, [x0,32]
-       bl      l2p_flush
-       bl      FtlVpcTblFlush
-.L2231:
-       mov     w0, 0
-.L2217:
-       ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
-       ldp     x23, x24, [sp,48]
-       ldr     x25, [sp,64]
-       ldp     x29, x30, [sp], 96
-       ret
-       .size   FtlDiscard, .-FtlDiscard
-       .align  2
-       .global FtlGcFreeTempBlock
-       .type   FtlGcFreeTempBlock, %function
-FtlGcFreeTempBlock:
-       stp     x29, x30, [sp, -112]!
-       add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       adrp    x19, :got:g_gc_temp_superblock
-       adrp    x20, :got:c_ftl_nand_page_pre_blk
-       stp     x21, x22, [sp,32]
-       stp     x23, x24, [sp,48]
-       ldr     x2, [x19, #:got_lo12:g_gc_temp_superblock]
-       stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
-       ldr     x1, [x20, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w21, [x2]
+       ldrh    w20, [x0,2026]
+       bls     .L2407
+       lsr     w20, w20, 5
+       b       .L2406
+.L2407:
+       cmp     w1, 12
+       bls     .L2408
+       lsr     w20, w20, 4
+       b       .L2406
+.L2408:
+       cmp     w1, 8
+       bls     .L2406
+       lsr     w20, w20, 2
+.L2406:
+       add     x0, x19, :lo12:.LANCHOR2
+       ldrh    w2, [x0,864]
+       cmp     w2, w1
+       bcs     .L2410
+       ldrh    w1, [x0,96]
        mov     w2, 65535
-       cmp     w21, w2
-       ldrh    w1, [x1]
-       bne     .L2234
-.L2244:
-       adrp    x0, :got:ftl_gc_temp_power_lost_recovery_flag
-       ldr     x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
-       str     wzr, [x0]
-       mov     w0, 65535
-       ldr     x22, [x19, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w1, [x22]
+       cmp     w1, w2
+       bne     .L2411
+       ldrh    w2, [x0,952]
+       cmp     w2, w1
+       bne     .L2411
+       adrp    x1, .LANCHOR4+400
+       ldrh    w2, [x1,#:lo12:.LANCHOR4+400]
+       cbnz    w2, .L2412
+       adrp    x1, .LANCHOR0+2104
+       ldr     w3, [x0,156]
+       ldr     w1, [x1,#:lo12:.LANCHOR0+2104]
+       add     w1, w1, w1, lsl 1
+       cmp     w3, w1, lsr 2
+       bcs     .L2413
+.L2412:
+       add     x1, x19, :lo12:.LANCHOR2
+       ldrh    w0, [x1,272]
+       add     w0, w0, w0, lsl 1
+       asr     w0, w0, 2
+       strh    w0, [x1,864]
+       b       .L2414
+.L2413:
+       mov     w1, 18
+       strh    w1, [x0,864]
+.L2414:
+       add     x19, x19, :lo12:.LANCHOR2
+       str     wzr, [x19,876]
+       b       .L2378
+.L2411:
+       add     x1, x19, :lo12:.LANCHOR2
+       ldrh    w0, [x1,272]
+       add     w0, w0, w0, lsl 1
+       asr     w0, w0, 2
+       strh    w0, [x1,864]
+.L2410:
+       cmp     w22, 2
+       bhi     .L2470
+       add     x0, x19, :lo12:.LANCHOR2
+       ldr     w0, [x0,160]
+       cbz     w0, .L2470
+       add     w20, w20, 1
+       uxth    w20, w20
+       b       .L2470
+.L2405:
+       add     x20, x19, :lo12:.LANCHOR2
+       mov     w2, 65535
+       ldrh    w0, [x20,96]
+       cmp     w0, w2
+       bne     .L2417
+       cbz     w1, .L2417
+       ldrh    w1, [x20,952]
        cmp     w1, w0
-       beq     .L2262
-       adrp    x21, :got:p_valid_page_count_table
-       bl      FtlCacheWriteBack
-       ldr     x20, [x20, #:got_lo12:c_ftl_nand_page_pre_blk]
-       adrp    x25, :got:p_gc_page_info
-       ldrh    w2, [x22]
-       mov     w26, 12
-       ldr     x0, [x21, #:got_lo12:p_valid_page_count_table]
-       add     x27, x29, 108
-       ldrh    w3, [x20]
-       adrp    x20, :got:g_gc_page_offset
-       ldr     x1, [x0]
-       ldrb    w0, [x22,7]
-       mov     w22, 0
-       mul     w0, w0, w3
-       strh    w0, [x1,x2,lsl 1]
-       adrp    x0, :got:g_totle_gc_page_count
-       ldr     x1, [x20, #:got_lo12:g_gc_page_offset]
-       ldr     x0, [x0, #:got_lo12:g_totle_gc_page_count]
-       ldrh    w2, [x1]
-       ldr     w1, [x0]
-       add     w1, w2, w1
-       str     w1, [x0]
-       b       .L2245
-.L2234:
-       cbz     w0, .L2237
-       adrp    x0, .LANCHOR2
-       add     x0, x0, :lo12:.LANCHOR2
-       ldrh    w3, [x0,128]
-       cmp     w3, w2
-       beq     .L2238
-.L2239:
+       bne     .L2417
+       ldrh    w1, [x20,296]
+       cmp     w1, w0
+       beq     .L2418
+.L2423:
+       mov     w21, 65535
+       b       .L2417
+.L2418:
+       ldrh    w23, [x20,-8]
+       adrp    x21, .LANCHOR4
+       ldrh    w0, [x20,864]
+       str     wzr, [x20,876]
+       cmp     w0, w23
+       bcs     .L2419
+       add     x0, x21, :lo12:.LANCHOR4
+       ldrh    w0, [x0,400]
+       cbnz    w0, .L2420
+       adrp    x0, .LANCHOR0+2104
+       ldr     w1, [x20,156]
+       ldr     w0, [x0,#:lo12:.LANCHOR0+2104]
+       add     w0, w0, w0, lsl 1
+       cmp     w1, w0, lsr 2
+       bcs     .L2421
+.L2420:
+       add     x19, x19, :lo12:.LANCHOR2
+       ldrh    w0, [x19,272]
+       add     w0, w0, w0, lsl 1
+       asr     w0, w0, 2
+       strh    w0, [x19,864]
+       b       .L2422
+.L2421:
+       mov     w0, 18
+       strh    w0, [x20,864]
+.L2422:
+       add     x21, x21, :lo12:.LANCHOR4
+       bl      FtlReadRefresh
+       ldrh    w2, [x21,400]
+       b       .L2378
+.L2419:
+       add     x22, x21, :lo12:.LANCHOR4
+       ldrh    w0, [x22,400]
+       cbnz    w0, .L2423
+       ldrh    w21, [x20,272]
+       add     w1, w21, w21, lsl 1
+       asr     w1, w1, 2
+       strh    w1, [x20,864]
+       bl      List_get_gc_head_node
+       ubfiz   x0, x0, 1, 16
+       ldr     x1, [x20,-40]
+       ldrh    w2, [x1,x0]
+       adrp    x1, .LANCHOR0
+       add     x1, x1, :lo12:.LANCHOR0
+       ldrh    w0, [x1,2028]
+       ldrh    w1, [x1,1952]
+       mul     w0, w0, w1
        mov     w1, 2
-       b       .L2237
-.L2238:
-       strh    wzr, [x0,128]
-       adrp    x0, :got:g_num_free_superblocks
-       ldr     x0, [x0, #:got_lo12:g_num_free_superblocks]
-       ldrh    w0, [x0]
-       cmp     w0, 17
-       bhi     .L2239
-.L2237:
-       ldr     x0, [x19, #:got_lo12:g_gc_temp_superblock]
-       bl      FtlGcScanTempBlk
-       str     w0, [x29,108]
-       cmn     w0, #1
-       beq     .L2240
-       adrp    x0, :got:g_sys_ext_data
-       ubfiz   x21, x21, 1, 16
-       ldr     x0, [x0, #:got_lo12:g_sys_ext_data]
-       ldr     w1, [x0,96]
-       add     w1, w1, 1
-       str     w1, [x0,96]
-       adrp    x0, :got:p_erase_count_table
-       ldr     x0, [x0, #:got_lo12:p_erase_count_table]
-       ldr     x1, [x0]
-       ldrh    w0, [x1,x21]
-       cmp     w0, 4
-       bls     .L2241
-       sub     w0, w0, #5
-       strh    w0, [x1,x21]
-       mov     w0, 1
-       bl      FtlEctTblFlush
-.L2241:
-       adrp    x0, :got:ftl_gc_temp_power_lost_recovery_flag
-       mov     x19, x0
-       ldr     x1, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
-       ldr     w1, [x1]
-       cbnz    w1, .L2242
-       ldr     w0, [x29,108]
-       lsr     w0, w0, 10
-       bl      FtlBbmMapBadBlock
-       bl      FtlBbmTblFlush
-.L2242:
-       ldr     x0, [x19, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
-       str     wzr, [x0]
-       mov     w0, 1
-       b       .L2243
-.L2240:
-       adrp    x0, .LANCHOR2+128
-       mov     w1, 65535
-       ldrh    w2, [x0,#:lo12:.LANCHOR2+128]
-       mov     w0, 1
-       cmp     w2, w1
-       bne     .L2243
-       b       .L2244
-.L2248:
-       ldr     x0, [x25, #:got_lo12:p_gc_page_info]
-       mov     x1, x27
-       umull   x24, w22, w26
-       mov     w2, 0
-       ldr     x28, [x0]
-       add     x23, x28, x24
-       ldr     w0, [x23,8]
-       bl      log2phys
-       ldr     w0, [x29,108]
-       ldr     w1, [x28,x24]
-       cmp     w0, w1
-       bne     .L2246
-       lsr     w0, w0, 10
-       bl      P2V_block_in_plane
-       mov     w24, w0
-       ldr     w0, [x23,8]
-       add     x1, x23, 4
-       mov     w2, 1
-       bl      log2phys
-       mov     w0, w24
-.L2261:
-       bl      decrement_vpc_count
-.L2247:
-       add     w22, w22, 1
-       uxth    w22, w22
-.L2245:
-       ldr     x0, [x20, #:got_lo12:g_gc_page_offset]
-       ldrh    w0, [x0]
-       cmp     w0, w22
-       bhi     .L2248
-       b       .L2264
-.L2246:
-       ldr     w1, [x23,4]
-       cmp     w0, w1
-       beq     .L2247
-       ldr     x0, [x19, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w0, [x0]
-       b       .L2261
-.L2264:
+       sdiv    w0, w0, w1
+       cmp     w2, w0
+       ble     .L2424
+       sub     w21, w21, #1
+       cmp     w23, w21
+       blt     .L2424
+       bl      FtlReadRefresh
+       ldrh    w2, [x22,400]
+       b       .L2378
+.L2424:
+       cbnz    w2, .L2423
        mov     w0, -1
+       add     x19, x19, :lo12:.LANCHOR2
        bl      decrement_vpc_count
-       ldr     x21, [x21, #:got_lo12:p_valid_page_count_table]
-       ldr     x0, [x19, #:got_lo12:g_gc_temp_superblock]
-       ldr     x2, [x21]
-       ldrh    w0, [x0]
-       ubfiz   x1, x0, 1, 16
-       ldrh    w1, [x2,x1]
-       cbz     w1, .L2249
-       bl      INSERT_DATA_LIST
-       b       .L2250
-.L2249:
-       bl      INSERT_FREE_LIST
-.L2250:
-       ldr     x19, [x19, #:got_lo12:g_gc_temp_superblock]
+       ldrh    w2, [x19,-8]
+       add     w2, w2, 1
+       b       .L2378
+.L2417:
+       add     x0, x19, :lo12:.LANCHOR2
+       mov     w20, 2
+       ldr     w0, [x0,160]
+       cmp     w0, wzr
+       csinc   w20, w20, wzr, ne
+       b       .L2416
+.L2470:
+       mov     w21, 65535
+.L2416:
+       add     x0, x19, :lo12:.LANCHOR2
+       mov     w2, 65535
+       ldrh    w1, [x0,296]
+       cmp     w1, w2
+       bne     .L2426
+       cmp     w21, w1
+       beq     .L2427
+       strh    w21, [x0,296]
+       b       .L2428
+.L2427:
+       ldrh    w1, [x0,952]
+       cmp     w1, w21
+       beq     .L2428
+       strh    w1, [x0,296]
+       mov     w1, -1
+       strh    w1, [x0,952]
+.L2428:
+       adrp    x1, .LANCHOR0+120
+       add     x0, x19, :lo12:.LANCHOR2
+       add     x22, x0, 296
+       ldrb    w1, [x1,#:lo12:.LANCHOR0+120]
+       strb    wzr, [x0,304]
+       cbz     w1, .L2429
+       ldrh    w0, [x0,296]
+       bl      ftl_get_blk_mode
+       strb    w0, [x22,8]
+.L2429:
+       add     x22, x19, :lo12:.LANCHOR2
+       ldrh    w0, [x22,296]
+       bl      IsBlkInGcList
+       cbz     w0, .L2430
        mov     w0, -1
-       strh    w0, [x19]
-       adrp    x0, :got:g_gc_blk_num
-       ldr     x20, [x20, #:got_lo12:g_gc_page_offset]
-       strh    wzr, [x20]
-       ldr     x0, [x0, #:got_lo12:g_gc_blk_num]
-       strh    wzr, [x0]
-       bl      l2p_flush
-       bl      FtlVpcTblFlush
-       adrp    x0, :got:g_inkDie_check_enable
-       adrp    x1, :got:g_num_free_superblocks
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       ldr     w2, [x0]
-       adrp    x0, :got:c_ftl_nand_data_op_blks_per_plane
-       cbz     w2, .L2251
-       adrp    x2, :got:g_min_erase_count
-       ldr     x2, [x2, #:got_lo12:g_min_erase_count]
-       ldr     w2, [x2]
-       cmp     w2, 29
-       bhi     .L2251
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       ldr     x1, [x1, #:got_lo12:g_num_free_superblocks]
-       ldrh    w0, [x0]
-       ldrh    w1, [x1]
+       strh    w0, [x22,296]
+.L2430:
+       add     x22, x19, :lo12:.LANCHOR2
+       mov     w0, 65535
+       add     x23, x22, 296
+       ldrh    w1, [x22,296]
        cmp     w1, w0
-       bcs     .L2252
-       adrp    x1, :got:g_gc_free_blk_threshold
-       lsl     w0, w0, 1
-       ldr     x1, [x1, #:got_lo12:g_gc_free_blk_threshold]
-       strh    w0, [x1]
-.L2252:
-       adrp    x0, :got:g_gc_superblock
-       mov     w1, -1
-       ldr     x0, [x0, #:got_lo12:g_gc_superblock]
-       b       .L2263
-.L2251:
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       ldr     x1, [x1, #:got_lo12:g_num_free_superblocks]
-       ldrh    w0, [x0]
-       ldrh    w1, [x1]
-       add     w0, w0, w0, lsl 1
-       cmp     w1, w0, lsr 2
-       ble     .L2262
-       adrp    x0, :got:g_gc_superblock
-       mov     w1, -1
-       ldr     x0, [x0, #:got_lo12:g_gc_superblock]
-       strh    w1, [x0]
-       adrp    x0, :got:g_gc_free_blk_threshold
-       mov     w1, 20
-       ldr     x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
-.L2263:
-       strh    w1, [x0]
-.L2262:
-       mov     w0, 0
-.L2243:
-       ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
-       ldp     x23, x24, [sp,48]
-       ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 112
-       ret
-       .size   FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
-       .align  2
-       .global FtlGcPageRecovery
-       .type   FtlGcPageRecovery, %function
-FtlGcPageRecovery:
-       stp     x29, x30, [sp, -32]!
-       add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       adrp    x19, :got:c_ftl_nand_page_pre_blk
-       adrp    x20, :got:g_gc_temp_superblock
-       ldr     x19, [x19, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldr     x20, [x20, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w1, [x19]
-       mov     x0, x20
-       bl      FtlGcScanTempBlk
-       ldrh    w1, [x20,2]
-       ldrh    w0, [x19]
+       beq     .L2426
+       mov     x0, x23
+       bl      make_superblock
+       strh    wzr, [x22,298]
+       adrp    x0, .LANCHOR4
+       ldrh    w2, [x22,296]
+       add     x0, x0, :lo12:.LANCHOR4
+       ldr     x1, [x22,-40]
+       strb    wzr, [x22,302]
+       strh    wzr, [x0,402]
+       ldrh    w1, [x1,x2,lsl 1]
+       strh    w1, [x0,404]
+.L2426:
+       add     x3, x19, :lo12:.LANCHOR2
+       ldrh    w1, [x19,#:lo12:.LANCHOR2]
+       ldrh    w0, [x3,296]
        cmp     w1, w0
-       bcc     .L2265
-       adrp    x0, :got:gL2pMapInfo
-       ldr     x0, [x0, #:got_lo12:gL2pMapInfo]
-       bl      FtlMapBlkWriteDumpData
-       mov     w0, 0
-       bl      FtlGcFreeTempBlock
-       adrp    x0, :got:ftl_gc_temp_power_lost_recovery_flag
-       ldr     x0, [x0, #:got_lo12:ftl_gc_temp_power_lost_recovery_flag]
-       str     wzr, [x0]
-.L2265:
-       ldp     x19, x20, [sp,16]
-       ldp     x29, x30, [sp], 32
-       ret
-       .size   FtlGcPageRecovery, .-FtlGcPageRecovery
-       .align  2
-       .global FtlPowerLostRecovery
-       .type   FtlPowerLostRecovery, %function
-FtlPowerLostRecovery:
-       adrp    x0, :got:g_power_lost_recovery_flag
-       stp     x29, x30, [sp, -32]!
-       add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
-       str     x19, [sp,16]
-       adrp    x19, :got:g_active_superblock
-       strh    wzr, [x0]
-       adrp    x0, :got:g_recovery_page_num
-       ldr     x0, [x0, #:got_lo12:g_recovery_page_num]
-       str     wzr, [x0]
-       ldr     x19, [x19, #:got_lo12:g_active_superblock]
-       mov     x0, x19
-       bl      FtlRecoverySuperblock
-       mov     x0, x19
-       adrp    x19, :got:g_buffer_superblock
-       bl      FtlSlcSuperblockCheck
-       ldr     x19, [x19, #:got_lo12:g_buffer_superblock]
-       mov     x0, x19
-       bl      FtlRecoverySuperblock
-       mov     x0, x19
-       bl      FtlSlcSuperblockCheck
-       bl      FtlGcPageRecovery
+       beq     .L2432
+       ldrh    w1, [x3,48]
+       cmp     w1, w0
+       beq     .L2432
+.L2433:
+       mov     x28, x3
+       mov     w24, 65535
+       b       .L2434
+.L2432:
+       add     x19, x19, :lo12:.LANCHOR2
        mov     w0, -1
-       bl      decrement_vpc_count
-       ldr     x19, [sp,16]
-       mov     w0, 0
-       ldp     x29, x30, [sp], 32
-       ret
-       .size   FtlPowerLostRecovery, .-FtlPowerLostRecovery
-       .align  2
-       .global Ftl_gc_temp_data_write_back
-       .type   Ftl_gc_temp_data_write_back, %function
-Ftl_gc_temp_data_write_back:
-       stp     x29, x30, [sp, -64]!
-       mov     w2, 0
-       add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
-       adrp    x19, :got:req_gc_dst
-       adrp    x21, :got:g_gc_num_req
-       str     x23, [sp,48]
-       mov     w3, w2
-       mov     w20, 0
-       mov     w23, 56
-       ldr     x0, [x19, #:got_lo12:req_gc_dst]
-       ldr     x1, [x21, #:got_lo12:g_gc_num_req]
-       ldr     x0, [x0]
-       ldr     w1, [x1]
-       bl      FlashProgPages
-.L2269:
-       ldr     x22, [x21, #:got_lo12:g_gc_num_req]
-       ldr     w1, [x22]
-       cmp     w20, w1
-       bcs     .L2275
-       ldr     x3, [x19, #:got_lo12:req_gc_dst]
-       umull   x0, w20, w23
-       ldr     x2, [x3]
-       add     x1, x2, x0
-       ldr     w4, [x2,x0]
-       cmn     w4, #1
-       bne     .L2270
-       adrp    x1, :got:g_gc_temp_superblock
-       adrp    x2, :got:p_valid_page_count_table
-       ldr     x1, [x1, #:got_lo12:g_gc_temp_superblock]
-       ldr     x2, [x2, #:got_lo12:p_valid_page_count_table]
-       ldrh    w5, [x1]
-       ldr     x2, [x2]
-       strh    wzr, [x2,x5,lsl 1]
-       strh    w4, [x1]
-       adrp    x1, :got:g_sys_ext_data
-       ldr     x1, [x1, #:got_lo12:g_sys_ext_data]
-       ldr     w2, [x1,96]
-       add     w2, w2, 1
-       str     w2, [x1,96]
-       ldr     x1, [x3]
-       add     x0, x1, x0
-       ldr     w0, [x0,4]
-       lsr     w0, w0, 10
-       bl      FtlBbmMapBadBlock
-       bl      FtlBbmTblFlush
-       bl      FtlGcPageVarInit
-       b       .L2274
-.L2270:
-       ldr     x2, [x1,16]
-       add     w20, w20, 1
-       ldr     w1, [x1,4]
+       strh    w0, [x19,296]
+       b       .L2540
+.L2454:
+       ldrh    w0, [x28,298]
+       add     w20, w20, w0
        uxth    w20, w20
-       ldr     w0, [x2,12]
-       ldr     w2, [x2,8]
-       bl      FtlGcUpdatePage
-       b       .L2269
-.L2275:
-       ldr     x19, [x19, #:got_lo12:req_gc_dst]
-       ldr     x0, [x19]
-       bl      FtlGcBufFree
-       str     wzr, [x22]
-       adrp    x0, :got:g_gc_temp_superblock
-       ldr     x0, [x0, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w1, [x0,4]
-       mov     w0, 0
-       cbnz    w1, .L2271
-       mov     w0, 1
-       bl      FtlGcFreeTempBlock
-.L2274:
-       mov     w0, 1
-.L2271:
-       ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
-       ldr     x23, [sp,48]
-       ldp     x29, x30, [sp], 64
-       ret
-       .size   Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
-       .align  2
-       .global FtlSysBlkInit
-       .type   FtlSysBlkInit, %function
-FtlSysBlkInit:
-       adrp    x0, :got:c_ftl_nand_max_sys_blks
-       stp     x29, x30, [sp, -48]!
-       add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
-       stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
-       ldrh    w0, [x0]
-       bl      FtlFreeSysBlkQueueInit
-       bl      FtlScanSysBlk
-       adrp    x0, :got:gSysInfo
-       ldr     x0, [x0, #:got_lo12:gSysInfo]
-       ldrh    w1, [x0]
-       mov     w0, 65535
+       strh    w20, [x28,298]
+       cmp     w20, w25
+       adrp    x20, .LANCHOR4
+       bcs     .L2456
+       add     x0, x20, :lo12:.LANCHOR4
+       ldrh    w1, [x0,402]
+       ldrh    w0, [x0,404]
        cmp     w1, w0
-       bne     .L2277
-.L2279:
-       mov     w22, -1
-       b       .L2278
-.L2277:
-       bl      FtlLoadSysInfo
+       beq     .L2456
+.L2457:
+       ldrh    w0, [x28,-8]
+       cmp     w0, 2
+       bhi     .L2460
+       add     x23, x23, :lo12:.LANCHOR0
+       ldrh    w20, [x23,2026]
+.L2434:
+       ldrh    w0, [x28,296]
+       cmp     w0, w24
+       bne     .L2435
+       str     wzr, [x28,876]
+.L2436:
+       ldrh    w22, [x28,872]
+       mov     w0, w22
+       bl      List_get_gc_head_node
+       uxth    w23, w0
+       cmp     w23, w24
+       strh    w23, [x28,296]
+       bne     .L2437
+       strh    wzr, [x28,872]
+       mov     w2, 8
+       b       .L2378
+.L2437:
+       mov     w0, w23
+       add     w22, w22, 1
+       bl      IsBlkInGcList
+       cbz     w0, .L2438
+       strh    w22, [x28,872]
+       b       .L2436
+.L2438:
+       adrp    x0, .LANCHOR0
+       ubfiz   x1, x23, 1, 16
+       add     x5, x0, :lo12:.LANCHOR0
+       ldr     x2, [x28,-40]
+       uxth    w22, w22
+       mov     w3, 2
+       strh    w22, [x28,872]
+       ldrh    w0, [x5,2026]
+       ldrh    w5, [x5,1952]
+       ldrh    w4, [x2,x1]
+       mul     w0, w0, w5
+       sdiv    w5, w0, w3
+       cmp     w4, w5
+       bgt     .L2440
+       cmp     w4, 8
+       bls     .L2441
+       cmp     w22, 48
+       bls     .L2441
+       ldrh    w4, [x28,924]
+       cmp     w4, 35
+       bhi     .L2441
+.L2440:
+       strh    wzr, [x28,872]
+.L2441:
+       ldrh    w1, [x2,x1]
+       cmp     w1, w0
+       blt     .L2442
+       cmp     w21, w24
+       bne     .L2442
+       add     x19, x19, :lo12:.LANCHOR2
+       mov     w0, -1
+       strh    wzr, [x19,872]
+       strh    w0, [x19,296]
+.L2540:
+       adrp    x0, .LANCHOR4+400
+       ldrh    w2, [x0,#:lo12:.LANCHOR4+400]
+       b       .L2378
+.L2442:
+       cbnz    w1, .L2443
+       mov     w0, -1
+       bl      decrement_vpc_count
+       ldrh    w0, [x28,872]
+       add     w0, w0, 1
+       strh    w0, [x28,872]
+       b       .L2436
+.L2443:
+       adrp    x0, .LANCHOR0
+       strb    wzr, [x28,304]
+       add     x0, x0, :lo12:.LANCHOR0
+       ldrb    w0, [x0,120]
+       cbz     w0, .L2444
+       mov     w0, w23
+       bl      ftl_get_blk_mode
+       strb    w0, [x28,304]
+.L2444:
+       add     x22, x28, 296
+       mov     x0, x22
+       bl      make_superblock
+       adrp    x1, .LANCHOR4
+       ldrh    w2, [x28,296]
+       add     x1, x1, :lo12:.LANCHOR4
+       ldr     x0, [x28,-40]
+       strh    wzr, [x1,402]
+       ldrh    w0, [x0,x2,lsl 1]
+       strh    w0, [x1,404]
+       strh    wzr, [x28,298]
+       strb    wzr, [x28,302]
+.L2435:
+       bl      FtlReadRefresh
+       adrp    x23, .LANCHOR0
+       mov     w0, 1
+       str     w0, [x28,2028]
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       ldrb    w1, [x0,120]
+       ldrh    w25, [x0,2026]
+       cbz     w1, .L2445
+       ldrb    w1, [x28,304]
+       cmp     w1, 1
+       bne     .L2445
+       ldrh    w25, [x0,2028]
+.L2445:
+       ldrh    w0, [x28,298]
+       add     w1, w0, w20
+       cmp     w1, w25
+       ble     .L2446
+       sub     w20, w25, w0
+       uxth    w20, w20
+.L2446:
+       mov     w26, 0
+.L2447:
+       cmp     w20, w26, uxth
+       bls     .L2454
+       add     x1, x28, 296
+       add     x0, x23, :lo12:.LANCHOR0
+       ldrh    w4, [x1,2]
+       ldrh    w6, [x0,1952]
+       mov     x0, 0
+       add     w4, w4, w26
        mov     w22, w0
-       cbnz    w0, .L2279
-       bl      FtlLoadMapInfo
-       bl      FtlLoadVonderInfo
-       bl      Ftl_load_ext_data
-       bl      FtlLoadEctTbl
-       bl      FtlFreeSysBLkSort
-       bl      SupperBlkListInit
-       bl      FtlPowerLostRecovery
-       adrp    x0, :got:c_ftl_nand_l2pmap_ram_region_num
-       mov     x1, 0
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_l2pmap_ram_region_num]
-       ldrh    w2, [x0]
-       adrp    x0, :got:p_l2p_ram_map
-       ldr     x0, [x0, #:got_lo12:p_l2p_ram_map]
-       ldr     x0, [x0]
-.L2280:
-       cmp     w1, w2
-       mov     w3, w1
-       bge     .L2284
-       add     x4, x0, x1, lsl 4
-       add     x1, x1, 1
-       ldr     w4, [x4,4]
-       tbz     w4, #31, .L2280
-.L2284:
-       adrp    x19, :got:g_sys_save_data
-       cmp     w3, w2
-       adrp    x20, :got:g_active_superblock
-       ldr     x1, [x19, #:got_lo12:g_sys_save_data]
-       ldrh    w0, [x1,28]
+.L2455:
+       cmp     w6, w0, uxth
+       bls     .L2541
+       add     x2, x1, x0, lsl 1
+       ldrh    w2, [x2,16]
+       cmp     w2, w24
+       beq     .L2448
+       mov     w3, 56
+       ldr     x7, [x28,912]
+       orr     w2, w4, w2, lsl 10
+       umull   x5, w22, w3
+       add     w22, w22, 1
+       add     x5, x7, x5
+       uxth    w22, w22
+       str     w2, [x5,4]
+.L2448:
+       add     x0, x0, 1
+       b       .L2455
+.L2541:
+       ldr     x0, [x28,912]
+       mov     w1, w22
+       ldrb    w2, [x28,304]
+       mov     x27, 0
+       bl      FlashReadPages
+.L2450:
+       cmp     w22, w27, uxth
+       bls     .L2542
+       mov     x0, 56
+       mul     x4, x27, x0
+       ldr     x0, [x28,912]
+       add     x1, x0, x4
+       ldr     w0, [x0,x4]
+       cmn     w0, #1
+       ldr     x5, [x1,16]
+       beq     .L2472
+       ldrh    w0, [x5]
+       mov     w1, 61589
+       cmp     w0, w1
+       bne     .L2472
+       ldr     w0, [x5,8]
+       add     x1, x29, 132
+       mov     w2, 0
+       str     x4, [x29,104]
+       str     x5, [x29,112]
+       bl      log2phys
+       ldr     x2, [x28,912]
+       ldr     x4, [x29,104]
+       ldr     w0, [x29,132]
+       add     x2, x2, x4
+       ldr     x5, [x29,112]
+       and     w0, w0, 2147483647
+       ldr     w1, [x2,4]
+       cmp     w0, w1
+       bne     .L2472
+       adrp    x0, .LANCHOR4
+       mov     x3, 56
+       add     x1, x0, :lo12:.LANCHOR4
+       str     x4, [x29,96]
+       str     x5, [x29,104]
+       ldrh    w0, [x1,402]
        add     w0, w0, 1
-       strh    w0, [x1,28]
-       blt     .L2281
-       adrp    x0, :got:g_power_lost_recovery_flag
-       ldr     x0, [x0, #:got_lo12:g_power_lost_recovery_flag]
-       ldrh    w0, [x0]
-       cbz     w0, .L2285
-.L2281:
-       adrp    x3, :got:p_valid_page_count_table
-       ldr     x1, [x20, #:got_lo12:g_active_superblock]
-       ldr     x3, [x3, #:got_lo12:p_valid_page_count_table]
-       ldrh    w0, [x1]
-       ldrh    w5, [x1,4]
-       ldr     x4, [x3]
-       lsl     x0, x0, 1
-       ldrh    w2, [x4,x0]
-       sub     w2, w2, w5
-       strh    w2, [x4,x0]
-       adrp    x0, :got:c_ftl_nand_page_pre_blk
-       ldr     x4, [x3]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       strh    wzr, [x1,4]
-       strb    wzr, [x1,6]
-       ldrh    w2, [x0]
-       strh    w2, [x1,2]
-       adrp    x1, :got:g_buffer_superblock
-       ldr     x1, [x1, #:got_lo12:g_buffer_superblock]
-       ldrh    w2, [x1]
-       ldrh    w5, [x1,4]
-       lsl     x2, x2, 1
-       ldrh    w3, [x4,x2]
-       sub     w3, w3, w5
-       strh    w3, [x4,x2]
-       strb    wzr, [x1,6]
-       ldrh    w0, [x0]
-       strh    w0, [x1,2]
-       adrp    x0, :got:gL2pMapInfo
-       strh    wzr, [x1,4]
-       ldr     x0, [x0, #:got_lo12:gL2pMapInfo]
-       bl      FtlMapBlkWriteDumpData
-       adrp    x0, :got:gVendorBlkInfo
-       ldr     x0, [x0, #:got_lo12:gVendorBlkInfo]
-       bl      FtlMapBlkWriteDumpData
-       ldr     x1, [x19, #:got_lo12:g_sys_save_data]
-       ldrh    w0, [x1,30]
+       strh    w0, [x1,402]
+       ldr     w0, [x28,880]
+       ldr     x1, [x28,2056]
+       madd    x1, x0, x3, x1
+       ldr     w0, [x2,24]
+       str     x1, [x29,112]
+       str     w0, [x1,24]
+       bl      Ftl_get_new_temp_ppa
+       ldr     x1, [x29,112]
+       mov     x2, 56
+       ldr     x4, [x29,96]
+       ldr     x5, [x29,104]
+       str     w0, [x1,4]
+       ldr     w0, [x28,880]
+       ldr     x1, [x28,2056]
+       madd    x0, x0, x2, x1
+       ldr     x1, [x28,912]
+       add     x1, x1, x4
+       ldr     x2, [x1,8]
+       str     x2, [x0,8]
+       add     x2, x28, 96
+       str     x2, [x29,112]
+       ldr     x1, [x1,16]
+       str     x1, [x0,16]
+       mov     w1, 1
+       ldr     w0, [x29,132]
+       str     w0, [x5,12]
+       ldrh    w0, [x28,96]
+       strh    w0, [x5,2]
+       ldr     w0, [x28,200]
+       str     w0, [x5,4]
+       ldr     w0, [x28,880]
        add     w0, w0, 1
-       strh    w0, [x1,30]
+       str     w0, [x28,880]
+       ldr     x0, [x28,912]
+       add     x0, x0, x4
+       bl      FtlGcBufAlloc
+       add     x0, x23, :lo12:.LANCHOR0
+       ldrb    w0, [x0,120]
+       cbnz    w0, .L2452
+       ldr     x2, [x29,112]
+       ldr     w1, [x28,880]
+       ldrb    w0, [x2,7]
+       cmp     w1, w0
+       beq     .L2452
+       ldrh    w0, [x2,4]
+       cbnz    w0, .L2472
+.L2452:
+       bl      Ftl_gc_temp_data_write_back
+       cbz     w0, .L2472
+       adrp    x0, .LANCHOR4
+       add     x19, x19, :lo12:.LANCHOR2
+       add     x0, x0, :lo12:.LANCHOR4
+       str     wzr, [x19,2028]
+       ldrh    w2, [x0,400]
+       b       .L2378
+.L2472:
+       add     x27, x27, 1
+       b       .L2450
+.L2542:
+       add     w26, w26, 1
+       b       .L2447
+.L2456:
+       ldr     w0, [x28,880]
+       cbz     w0, .L2458
+       bl      Ftl_gc_temp_data_write_back
+       cbz     w0, .L2458
+       add     x20, x20, :lo12:.LANCHOR4
+       str     wzr, [x28,2028]
+       ldrh    w2, [x20,400]
+       b       .L2378
+.L2458:
+       add     x0, x20, :lo12:.LANCHOR4
+       ldrh    w2, [x0,402]
+       cbnz    w2, .L2459
+       ldrh    w0, [x28,296]
+       ldr     x1, [x28,-40]
+       lsl     x0, x0, 1
+       ldrh    w4, [x1,x0]
+       cbz     w4, .L2459
+       strh    w2, [x1,x0]
+       ldrh    w0, [x28,296]
+       bl      update_vpc_list
+       bl      FtlCacheWriteBack
        bl      l2p_flush
        bl      FtlVpcTblFlush
-.L2285:
-       mov     w0, 1
-       bl      FtlUpdateVaildLpn
-       ldr     x20, [x20, #:got_lo12:g_active_superblock]
-       mov     w1, 65535
-       ldrh    w0, [x20]
-       cmp     w0, w1
-       beq     .L2286
-       ldrh    w1, [x20,4]
-       cbnz    w1, .L2286
-       adrp    x21, :got:g_buffer_superblock
-       ldr     x21, [x21, #:got_lo12:g_buffer_superblock]
-       ldrh    w1, [x21,4]
-       cbnz    w1, .L2286
-       bl      FtlGcRefreshBlock
-       ldrh    w0, [x21]
-       bl      FtlGcRefreshBlock
-       mov     x0, x20
-       bl      allocate_new_data_superblock
-       mov     x0, x21
-       bl      allocate_new_data_superblock
-       adrp    x0, :got:gVendorBlkInfo
-       ldr     x0, [x0, #:got_lo12:gVendorBlkInfo]
-       bl      FtlMapBlkWriteDumpData
-.L2286:
-       ldr     x19, [x19, #:got_lo12:g_sys_save_data]
-       ldrh    w0, [x19,28]
-       and     w0, w0, 31
-       cbnz    w0, .L2278
-       bl      FtlVpcCheckAndModify
-.L2278:
-       mov     w0, w22
+.L2459:
+       mov     w0, -1
+       strh    w0, [x28,296]
+       b       .L2457
+.L2460:
+       add     x20, x20, :lo12:.LANCHOR4
+       str     wzr, [x28,2028]
+       ldrh    w2, [x20,400]
+       cmp     w2, wzr
+       csinc   w2, w2, w0, ne
+.L2378:
+       ldr     x1, [x29,120]
+       mov     w0, w2
+       ldr     x2, [x29,136]
+       ldr     x1, [x1,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2463
+       bl      __stack_chk_fail
+.L2463:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
-       ldp     x29, x30, [sp], 48
+       ldp     x23, x24, [sp,48]
+       ldp     x25, x26, [sp,64]
+       ldp     x27, x28, [sp,80]
+       ldp     x29, x30, [sp], 144
        ret
-       .size   FtlSysBlkInit, .-FtlSysBlkInit
+       .size   rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
        .align  2
-       .global FtlInit
-       .type   FtlInit, %function
-FtlInit:
-       stp     x29, x30, [sp, -32]!
-       adrp    x1, :got:g_LowFormat
-       add     x29, sp, 0
+       .global FtlCacheWriteBack
+       .type   FtlCacheWriteBack, %function
+FtlCacheWriteBack:
+       stp     x29, x30, [sp, -112]!
+       add     x29, sp, 0
+       stp     x23, x24, [sp,48]
+       adrp    x24, __stack_chk_guard
        stp     x19, x20, [sp,16]
-       adrp    x19, :got:gFtlInitStatus
-       mov     x20, x0
-       mov     w0, -1
-       ldr     x19, [x19, #:got_lo12:gFtlInitStatus]
-       str     w0, [x19]
-       adrp    x0, .LC72
-       add     x0, x0, :lo12:.LC72
-       ldr     x1, [x1, #:got_lo12:g_LowFormat]
-       str     wzr, [x1]
-       adrp    x1, .LC73
-       add     x1, x1, :lo12:.LC73
+       adrp    x19, .LANCHOR0
+       ldr     x0, [x24,#:lo12:__stack_chk_guard]
+       str     x0, [x29,104]
+       adrp    x0, .LANCHOR4+408
+       stp     x21, x22, [sp,32]
+       stp     x25, x26, [sp,64]
+       ldr     x20, [x0,#:lo12:.LANCHOR4+408]
+       add     x0, x19, :lo12:.LANCHOR0
+       stp     x27, x28, [sp,80]
+       ldr     w1, [x0,2088]
+       cbz     w1, .L2544
+       ldrb    w0, [x0,120]
+       mov     w22, 0
+       cbz     w0, .L2545
+       ldrb    w0, [x20,8]
+       cmp     w0, 1
+       cset    w22, eq
+.L2545:
+       add     x0, x19, :lo12:.LANCHOR0
+       ldrb    w3, [x20,9]
+       adrp    x25, .LC118
+       mov     w2, w22
+       mov     w23, 0
+       mov     w26, 56
+       ldr     x0, [x0,2096]
+       adrp    x27, .LANCHOR2
+       add     x25, x25, :lo12:.LC118
+       bl      FlashProgPages
+.L2546:
+       add     x0, x19, :lo12:.LANCHOR0
+       ldr     w1, [x0,2088]
+       cmp     w23, w1
+       bcs     .L2563
+       umull   x21, w23, w26
+       ldr     x0, [x0,2096]
+       add     x1, x0, x21
+       ldr     w0, [x0,x21]
+       cmn     w0, #1
+       beq     .L2567
+       ldr     w0, [x1,4]
+       cbz     w22, .L2581
+       orr     w0, w0, -2147483648
+.L2581:
+       str     w0, [x29,100]
+       mov     w2, 1
+       ldr     w0, [x1,24]
+       add     x1, x29, 100
+       bl      log2phys
+       add     x0, x19, :lo12:.LANCHOR0
+       ldr     x0, [x0,2096]
+       add     x21, x0, x21
+       ldr     x0, [x21,16]
+       ldr     w0, [x0,12]
+       cmn     w0, #1
+       beq     .L2550
+       lsr     x0, x0, 10
+       bl      P2V_block_in_plane
+       uxth    w1, w0
+       add     x2, x27, :lo12:.LANCHOR2
+       ubfiz   x0, x1, 1, 16
+       mov     w21, w1
+       ldr     x2, [x2,-40]
+       ldrh    w2, [x2,x0]
+       cbnz    w2, .L2551
+       mov     x0, x25
        bl      printk
-       mov     x0, x20
-       bl      FtlConstantsInit
-       bl      FtlMemInit
-       bl      FtlVariablesInit
-       adrp    x0, :got:c_ftl_nand_max_sys_blks
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
-       ldrh    w0, [x0]
-       bl      FtlFreeSysBlkQueueInit
-       bl      FtlLoadBbt
-       cbnz    w0, .L2294
-       bl      FtlSysBlkInit
-       cbnz    w0, .L2294
+.L2551:
+       mov     w0, w21
+       bl      decrement_vpc_count
+.L2550:
+       add     w23, w23, 1
+       b       .L2546
+.L2583:
+       mov     w20, 16386
+       adrp    x21, .LANCHOR2
+.L2562:
+       add     x0, x21, :lo12:.LANCHOR2
+       ldrh    w0, [x0,956]
+       cbz     w0, .L2563
        mov     w0, 1
-       str     w0, [x19]
-.L2294:
+       mov     w1, w0
+       bl      rk_ftl_garbage_collect
+       subs    w20, w20, #1
+       bne     .L2562
+.L2563:
+       add     x19, x19, :lo12:.LANCHOR0
+       str     wzr, [x19,2088]
+       b       .L2544
+.L2567:
+       adrp    x23, .LANCHOR2
+       adrp    x26, .LC118
+       mov     w25, 0
+       mov     w27, 56
+       add     x23, x23, :lo12:.LANCHOR2
+       add     x26, x26, :lo12:.LC118
+.L2547:
+       add     x0, x19, :lo12:.LANCHOR0
+       ldr     w1, [x0,2088]
+       cmp     w25, w1
+       bcs     .L2583
+       umull   x21, w25, w27
+       ldr     x0, [x0,2096]
+       mov     w1, -1
+       str     w1, [x0,x21]
+.L2553:
+       add     x28, x19, :lo12:.LANCHOR0
+       ldr     x0, [x28,2096]
+       add     x1, x0, x21
+       ldr     w0, [x0,x21]
+       cmn     w0, #1
+       ldr     w0, [x1,4]
+       bne     .L2584
+       lsr     x0, x0, 10
+       bl      P2V_block_in_plane
+       ldrh    w1, [x20]
+       cmp     w1, w0, uxth
+       bne     .L2554
+       ldr     x2, [x23,-40]
+       ubfiz   x1, x1, 1, 16
+       ldrh    w3, [x20,4]
+       ldrh    w0, [x2,x1]
+       sub     w0, w0, w3
+       strh    w0, [x2,x1]
+       strb    wzr, [x20,6]
+       ldrh    w0, [x28,2026]
+       strh    w0, [x20,2]
+       strh    wzr, [x20,4]
+.L2554:
+       ldrh    w0, [x20,4]
+       cbnz    w0, .L2555
+       mov     x0, x20
+       bl      allocate_new_data_superblock
+.L2555:
+       ldr     w0, [x23,448]
+       add     x28, x19, :lo12:.LANCHOR0
+       add     w0, w0, 1
+       str     w0, [x23,448]
+       ldr     x0, [x28,2096]
+       add     x0, x0, x21
+       ldr     w0, [x0,4]
+       lsr     x0, x0, 10
+       bl      FtlGcMarkBadPhyBlk
+       mov     x0, x20
+       bl      get_new_active_ppa
+       str     w0, [x29,100]
+       ldr     x1, [x28,2096]
+       mov     w2, w22
+       add     x1, x1, x21
+       str     w0, [x1,4]
+       mov     w1, 1
+       ldr     x0, [x28,2096]
+       ldrb    w3, [x20,9]
+       add     x0, x0, x21
+       bl      FlashProgPages
+       b       .L2553
+.L2584:
+       cbz     w22, .L2582
+       orr     w0, w0, -2147483648
+.L2582:
+       str     w0, [x29,100]
+       mov     w2, 1
+       ldr     w0, [x1,24]
+       add     x1, x29, 100
+       bl      log2phys
+       add     x0, x19, :lo12:.LANCHOR0
+       ldr     x0, [x0,2096]
+       add     x21, x0, x21
+       ldr     x0, [x21,16]
+       ldr     w0, [x0,12]
+       cmn     w0, #1
+       beq     .L2559
+       lsr     x0, x0, 10
+       bl      P2V_block_in_plane
+       uxth    w1, w0
+       ubfiz   x0, x1, 1, 16
+       ldr     x2, [x23,-40]
+       mov     w21, w1
+       ldrh    w2, [x2,x0]
+       cbnz    w2, .L2560
+       mov     x0, x26
+       bl      printk
+.L2560:
+       mov     w0, w21
+       bl      decrement_vpc_count
+.L2559:
+       add     w25, w25, 1
+       b       .L2547
+.L2544:
+       ldr     x2, [x29,104]
        mov     w0, 0
+       ldr     x1, [x24,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2565
+       bl      __stack_chk_fail
+.L2565:
        ldp     x19, x20, [sp,16]
-       ldp     x29, x30, [sp], 32
+       ldp     x21, x22, [sp,32]
+       ldp     x23, x24, [sp,48]
+       ldp     x25, x26, [sp,64]
+       ldp     x27, x28, [sp,80]
+       ldp     x29, x30, [sp], 112
        ret
-       .size   FtlInit, .-FtlInit
+       .size   FtlCacheWriteBack, .-FtlCacheWriteBack
        .align  2
-       .global rk_ftl_init
-       .type   rk_ftl_init, %function
-rk_ftl_init:
-       stp     x29, x30, [sp, -32]!
-       mov     w0, 2048
+       .global FtlSysFlush
+       .type   FtlSysFlush, %function
+FtlSysFlush:
+       stp     x29, x30, [sp, -16]!
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       adrp    x20, :got:gLoaderBootInfo
-       bl      ftl_malloc
-       adrp    x19, :got:RK29_NANDC_REG_BASE
-       adrp    x1, :got:RK29_NANDC1_REG_BASE
-       ldr     x20, [x20, #:got_lo12:gLoaderBootInfo]
-       str     x0, [x20]
-       ldr     x19, [x19, #:got_lo12:RK29_NANDC_REG_BASE]
-       mov     x0, x19
-       str     xzr, [x19]
-       ldr     x1, [x1, #:got_lo12:RK29_NANDC1_REG_BASE]
-       str     xzr, [x1]
-       bl      rknand_get_reg_addr
-       ldr     x1, [x19]
-       mov     w0, -1
-       cbz     x1, .L2297
-       bl      rk_nandc_irq_init
-       mov     w1, 0
-       ldr     x0, [x20]
-       mov     w2, w1
-       mov     w3, 2048
-       bl      FlashSramLoadStore
-       bl      rknand_flash_cs_init
-       ldr     x0, [x19]
-       bl      FlashInit
-       mov     w19, w0
-       cbnz    w0, .L2298
-       adrp    x0, :got:gNandPhyInfo
-       ldr     x0, [x0, #:got_lo12:gNandPhyInfo]
-       bl      FtlInit
-.L2298:
-       adrp    x0, .LC115
-       mov     w1, w19
-       add     x0, x0, :lo12:.LC115
-       bl      printk
-       mov     w0, w19
-.L2297:
-       ldp     x19, x20, [sp,16]
-       ldp     x29, x30, [sp], 32
+       bl      FtlCacheWriteBack
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+       mov     w0, 1
+       bl      FtlEctTblFlush
+       mov     w0, 0
+       ldp     x29, x30, [sp], 16
        ret
-       .size   rk_ftl_init, .-rk_ftl_init
+       .size   FtlSysFlush, .-FtlSysFlush
        .align  2
-       .global Ftl_get_new_temp_ppa
-       .type   Ftl_get_new_temp_ppa, %function
-Ftl_get_new_temp_ppa:
-       stp     x29, x30, [sp, -32]!
-       mov     w1, 65535
+       .global FtlDeInit
+       .type   FtlDeInit, %function
+FtlDeInit:
+       adrp    x0, .LANCHOR1+532
+       stp     x29, x30, [sp, -16]!
        add     x29, sp, 0
-       str     x19, [sp,16]
-       adrp    x19, :got:g_gc_temp_superblock
-       ldr     x0, [x19, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w2, [x0]
+       ldr     w0, [x0,#:lo12:.LANCHOR1+532]
+       cmp     w0, 1
+       bne     .L2587
+       bl      FtlSysFlush
+.L2587:
+       mov     w0, 0
+       ldp     x29, x30, [sp], 16
+       ret
+       .size   FtlDeInit, .-FtlDeInit
+       .align  2
+       .global rk_ftl_de_init
+       .type   rk_ftl_de_init, %function
+rk_ftl_de_init:
+       stp     x29, x30, [sp, -16]!
+       add     x29, sp, 0
+       bl      FlashDeInit
+       bl      FtlDeInit
+       bl      FlashDeInit
+       ldp     x29, x30, [sp], 16
+       ret
+       .size   rk_ftl_de_init, .-rk_ftl_de_init
+       .align  2
+       .global FtlDiscard
+       .type   FtlDiscard, %function
+FtlDiscard:
+       stp     x29, x30, [sp, -80]!
+       add     x29, sp, 0
+       stp     x21, x22, [sp,32]
+       adrp    x22, .LANCHOR0
+       add     x21, x22, :lo12:.LANCHOR0
+       stp     x19, x20, [sp,16]
+       stp     x23, x24, [sp,48]
+       adrp    x23, __stack_chk_guard
+       mov     w20, w0
+       add     w2, w20, w1
+       mov     w19, w1
+       ldr     w1, [x21,2068]
+       ldr     x0, [x23,#:lo12:__stack_chk_guard]
+       str     x0, [x29,72]
        cmp     w2, w1
-       beq     .L2302
-       ldrh    w0, [x0,4]
-       cbnz    w0, .L2303
-.L2302:
+       mov     w0, -1
+       bhi     .L2590
+       cmp     w19, 31
+       bls     .L2605
        bl      FtlCacheWriteBack
-       mov     w0, 0
-       bl      FtlGcFreeTempBlock
-       ldr     x0, [x19, #:got_lo12:g_gc_temp_superblock]
-       strb    wzr, [x0,8]
-       bl      allocate_data_superblock
-       adrp    x0, :got:g_gc_blk_num
-       ldr     x0, [x0, #:got_lo12:g_gc_blk_num]
-       strh    wzr, [x0]
-       adrp    x0, :got:g_gc_page_offset
-       ldr     x0, [x0, #:got_lo12:g_gc_page_offset]
-       strh    wzr, [x0]
+       ldrh    w1, [x21,2032]
+       udiv    w21, w20, w1
+       msub    w20, w1, w21, w20
+       uxth    w20, w20
+       cbz     w20, .L2592
+       sub     w1, w1, w20
+       add     w21, w21, 1
+       cmp     w1, w19
+       csel    w1, w1, w19, ls
+       sub     w19, w19, w1, uxth
+.L2592:
+       mov     w0, -1
+       adrp    x20, .LANCHOR4
+       str     w0, [x29,68]
+       adrp    x24, .LANCHOR2
+.L2593:
+       add     x0, x22, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2032]
+       cmp     w19, w0
+       bcc     .L2606
+       mov     w0, w21
+       add     x1, x29, 64
+       mov     w2, 0
+       bl      log2phys
+       ldr     w0, [x29,64]
+       cmn     w0, #1
+       beq     .L2594
+       add     x1, x20, :lo12:.LANCHOR4
+       mov     w2, 1
+       ldr     w0, [x1,416]
+       add     w0, w0, 1
+       str     w0, [x1,416]
+       add     x1, x24, :lo12:.LANCHOR2
+       ldr     w0, [x1,168]
+       add     w0, w0, 1
+       str     w0, [x1,168]
+       add     x1, x29, 68
+       mov     w0, w21
+       bl      log2phys
+       ldr     w0, [x29,64]
+       lsr     x0, x0, 10
+       bl      P2V_block_in_plane
+       bl      decrement_vpc_count
+.L2594:
+       add     x0, x22, :lo12:.LANCHOR0
+       add     w21, w21, 1
+       ldrh    w0, [x0,2032]
+       sub     w19, w19, w0
+       b       .L2593
+.L2606:
+       adrp    x0, .LANCHOR4
+       add     x0, x0, :lo12:.LANCHOR4
+       ldr     w1, [x0,416]
+       cmp     w1, 32
+       bls     .L2605
+       str     wzr, [x0,416]
        bl      l2p_flush
        bl      FtlVpcTblFlush
+.L2605:
        mov     w0, 0
-       bl      FtlEctTblFlush
-.L2303:
-       ldr     x0, [x19, #:got_lo12:g_gc_temp_superblock]
-       bl      get_new_active_ppa
-       ldr     x19, [sp,16]
-       ldp     x29, x30, [sp], 32
+.L2590:
+       ldr     x2, [x29,72]
+       ldr     x1, [x23,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2597
+       bl      __stack_chk_fail
+.L2597:
+       ldp     x19, x20, [sp,16]
+       ldp     x21, x22, [sp,32]
+       ldp     x23, x24, [sp,48]
+       ldp     x29, x30, [sp], 80
        ret
-       .size   Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
+       .size   FtlDiscard, .-FtlDiscard
        .align  2
-       .global rk_ftl_garbage_collect
-       .type   rk_ftl_garbage_collect, %function
-rk_ftl_garbage_collect:
-       stp     x29, x30, [sp, -160]!
+       .global FtlGcFreeTempBlock
+       .type   FtlGcFreeTempBlock, %function
+FtlGcFreeTempBlock:
+       stp     x29, x30, [sp, -96]!
+       mov     w3, 65535
        add     x29, sp, 0
-       stp     x21, x22, [sp,32]
-       adrp    x22, :got:g_in_gc_progress
        stp     x19, x20, [sp,16]
+       adrp    x19, .LANCHOR2
+       stp     x21, x22, [sp,32]
+       add     x2, x19, :lo12:.LANCHOR2
+       adrp    x22, __stack_chk_guard
        stp     x23, x24, [sp,48]
-       ldr     x2, [x22, #:got_lo12:g_in_gc_progress]
        stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
-       ldr     w3, [x2]
-       mov     w2, 0
-       cbnz    w3, .L2431
-       mov     w24, w0
-       adrp    x0, .LANCHOR2+128
-       mov     w23, w1
-       mov     w1, 65535
-       ldrh    w0, [x0,#:lo12:.LANCHOR2+128]
-       cmp     w0, w1
-       bne     .L2306
-.L2309:
-       adrp    x0, :got:g_gc_next_blk_1
-       mov     w3, 65535
-       ldr     x0, [x0, #:got_lo12:g_gc_next_blk_1]
-       ldrh    w2, [x0]
-       cmp     w2, w3
-       bne     .L2307
-       b       .L2308
-.L2306:
-       adrp    x0, :got:g_gc_temp_superblock
-       ldr     x0, [x0, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w0, [x0]
-       cmp     w0, w1
-       beq     .L2309
-       mov     w0, 1
-       bl      FtlGcFreeTempBlock
-       mov     w2, 1
-       cbz     w0, .L2309
-       b       .L2431
-.L2307:
-       adrp    x1, :got:g_gc_next_blk
-       ldr     x1, [x1, #:got_lo12:g_gc_next_blk]
-       ldrh    w4, [x1]
-       cmp     w4, w3
-       bne     .L2308
-       strh    w2, [x1]
-       mov     w1, -1
-       strh    w1, [x0]
-.L2308:
-       adrp    x26, :got:g_gc_skip_write_count
-       cmp     w24, 1
-       adrp    x19, :got:g_gc_superblock
-       ldr     x20, [x26, #:got_lo12:g_gc_skip_write_count]
-       ldr     w0, [x20]
-       add     w0, w0, 1
-       add     w0, w0, w24, lsl 7
-       str     w0, [x20]
-       beq     .L2310
-.L2312:
-       mov     w21, 65535
-       b       .L2311
-.L2310:
-       adrp    x1, :got:g_inkDie_check_enable
-       ldr     x1, [x1, #:got_lo12:g_inkDie_check_enable]
-       ldr     w1, [x1]
-       cbz     w1, .L2312
-       adrp    x27, :got:g_min_erase_count
-       ldr     x27, [x27, #:got_lo12:g_min_erase_count]
-       ldr     w1, [x27]
-       cmp     w1, 29
-       bhi     .L2312
-       adrp    x25, :got:gc_ink_free_return_value
-       ldr     x21, [x25, #:got_lo12:gc_ink_free_return_value]
-       ldrh    w1, [x21]
-       add     w0, w0, w1
-       str     w0, [x20]
-       bl      FtlGcReFreshBadBlk
-       ldr     x0, [x19, #:got_lo12:g_gc_superblock]
-       ldrh    w1, [x0]
+       ldr     x1, [x22,#:lo12:__stack_chk_guard]
+       adrp    x21, .LANCHOR0
+       ldrh    w20, [x2,96]
+       str     x1, [x29,88]
+       add     x1, x21, :lo12:.LANCHOR0
+       cmp     w20, w3
+       ldrh    w1, [x1,2026]
+       bne     .L2608
+.L2618:
+       add     x20, x19, :lo12:.LANCHOR2
        mov     w0, 65535
+       add     x23, x20, 96
+       ldrh    w1, [x20,96]
+       str     wzr, [x20,2328]
        cmp     w1, w0
-       bne     .L2312
-       adrp    x0, :got:g_gc_next_blk
-       ldr     x0, [x0, #:got_lo12:g_gc_next_blk]
-       ldrh    w0, [x0]
-       cmp     w0, w1
-       bne     .L2312
-       ldr     w0, [x20]
-       cmp     w0, 1024
-       bls     .L2312
-       ldr     w0, [x27]
-       str     wzr, [x20]
-       strh    wzr, [x21]
-       cbnz    w0, .L2313
-       mov     w0, 6
-       b       .L2450
-.L2313:
-       cmp     w0, 5
-       bhi     .L2314
-       mov     w0, 18
-.L2450:
-       strh    w0, [x21]
-.L2314:
-       mov     w0, 32
-       bl      List_get_gc_head_node
-       uxth    w28, w0
-       mov     w3, 65535
-       cmp     w28, w3
-       beq     .L2318
-       adrp    x20, :got:g_gc_blk_index
-       ldr     x20, [x20, #:got_lo12:g_gc_blk_index]
-       ldrh    w0, [x20]
-       cbz     w0, .L2316
-       adrp    x27, :got:p_valid_page_count_table
-       ubfiz   x28, x28, 1, 16
-       adrp    x2, :got:c_ftl_nand_planes_num
-       ldr     x27, [x27, #:got_lo12:p_valid_page_count_table]
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_planes_num]
-       ldr     x1, [x27]
-       ldrh    w2, [x2]
-       ldrh    w4, [x1,x28]
-       adrp    x1, :got:c_ftl_nand_page_pre_slc_blk
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w1, [x1]
-       mul     w1, w1, w2
+       beq     .L2637
+       add     x21, x21, :lo12:.LANCHOR0
+       bl      FtlCacheWriteBack
+       ldrb    w0, [x23,7]
+       mov     w26, 12
+       ldr     x1, [x20,-40]
+       ldrh    w3, [x21,2026]
+       mov     w21, 0
+       ldrh    w2, [x20,96]
+       mul     w0, w0, w3
+       strh    w0, [x1,x2,lsl 1]
+       ldr     w0, [x20,184]
+       ldrh    w1, [x20,936]
+       add     w0, w1, w0
+       str     w0, [x20,184]
+       b       .L2619
+.L2608:
+       cbz     w0, .L2611
+       adrp    x0, .LANCHOR1
+       add     x0, x0, :lo12:.LANCHOR1
+       ldrh    w4, [x0,3004]
+       cmp     w4, w3
+       beq     .L2612
+.L2613:
+       mov     w1, 2
+       b       .L2611
+.L2612:
+       strh    wzr, [x0,3004]
+       ldrh    w0, [x2,-8]
+       cmp     w0, 17
+       bhi     .L2613
+.L2611:
+       add     x23, x19, :lo12:.LANCHOR2
+       add     x0, x23, 96
+       bl      FtlGcScanTempBlk
+       str     w0, [x29,84]
+       cmn     w0, #1
+       beq     .L2614
+       ubfiz   x20, x20, 1, 16
+       ldr     x1, [x23,-80]
+       ldrh    w0, [x1,x20]
+       cmp     w0, 4
+       bls     .L2615
+       sub     w0, w0, #5
+       strh    w0, [x1,x20]
+       mov     w0, 1
+       bl      FtlEctTblFlush
+.L2615:
+       add     x0, x19, :lo12:.LANCHOR2
+       ldr     w1, [x0,2328]
+       cbnz    w1, .L2616
+       ldr     w1, [x0,448]
        add     w1, w1, 1
-       cmp     w4, w1
-       bgt     .L2318
-       adrp    x1, :got:g_in_swl_replace
-       str     x3, [x29,136]
-       ldr     x1, [x1, #:got_lo12:g_in_swl_replace]
-       str     wzr, [x1]
-       add     w1, w0, 1
-       strh    w1, [x20]
-       bl      List_get_gc_head_node
-       uxth    w21, w0
-       ldr     x3, [x29,136]
-       cmp     w21, w3
-       beq     .L2318
-       ubfiz   x5, x21, 1, 16
-       ldr     x4, [x27]
-       adrp    x0, .LC116
-       ldrh    w1, [x20]
-       add     x0, x0, :lo12:.LC116
-       mov     w2, w21
-       ldrh    w3, [x4,x5]
-       ldrh    w4, [x4,x28]
-       str     x5, [x29,136]
-       bl      printk
-       ldrh    w0, [x20]
-       ldr     x5, [x29,136]
-       cmp     w0, 40
-       bls     .L2317
-       ldr     x0, [x27]
-       ldrh    w0, [x0,x5]
-       cmp     w0, 32
-       bls     .L2317
-       strh    wzr, [x20]
-.L2317:
-       ldr     x25, [x25, #:got_lo12:gc_ink_free_return_value]
-       mov     w0, 6
-       strh    w0, [x25]
-       b       .L2311
-.L2316:
+       str     w1, [x0,448]
+       ldr     w0, [x29,84]
+       lsr     w0, w0, 10
+       bl      FtlBbmMapBadBlock
+       bl      FtlBbmTblFlush
+.L2616:
+       add     x19, x19, :lo12:.LANCHOR2
        mov     w0, 1
-       strh    w0, [x20]
-.L2318:
-       bl      GetSwlReplaceBlock
-       uxth    w21, w0
-       mov     w0, 65535
-       cmp     w21, w0
-       bne     .L2311
-       ldr     x25, [x25, #:got_lo12:gc_ink_free_return_value]
-       strh    wzr, [x25]
-.L2311:
-       ldr     x0, [x19, #:got_lo12:g_gc_superblock]
-       ldrh    w2, [x0]
-       mov     w0, 65535
-       cmp     w2, w0
-       bne     .L2319
-       adrp    x0, :got:g_gc_temp_superblock
-       ldr     x0, [x0, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w1, [x0]
-       cmp     w1, w2
-       bne     .L2319
-       adrp    x0, :got:g_gc_next_blk
-       ldr     x0, [x0, #:got_lo12:g_gc_next_blk]
-       ldrh    w20, [x0]
-       cmp     w20, w1
-       bne     .L2319
-       adrp    x25, :got:g_num_free_superblocks
-       ldr     x26, [x26, #:got_lo12:g_gc_skip_write_count]
-       mov     w2, 1024
-       ldr     x27, [x25, #:got_lo12:g_num_free_superblocks]
-       ldr     w1, [x26]
-       ldrh    w0, [x27]
-       cmp     w0, 24
-       mov     w0, 5120
-       csel    w0, w0, w2, cc
-       cmp     w1, w0
-       bls     .L2319
-       adrp    x0, :got:gc_ink_free_return_value
-       str     wzr, [x26]
-       ldr     x0, [x0, #:got_lo12:gc_ink_free_return_value]
-       strh    wzr, [x0]
-       bl      GetSwlReplaceBlock
-       uxth    w21, w0
-       cmp     w21, w20
-       bne     .L2321
-       adrp    x20, :got:g_gc_merge_free_blk_threshold
-       ldrh    w1, [x27]
-       ldr     x26, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
-       ldrh    w0, [x26]
-       cmp     w1, w0
-       bcs     .L2322
-       mov     w0, 64
-       bl      List_get_gc_head_node
-       uxth    w0, w0
-       cmp     w0, w21
-       beq     .L2331
-       adrp    x1, :got:g_SlcPartLbaEndSector
-       adrp    x4, :got:c_ftl_nand_type
-       uxtw    x2, w0
-       ldr     x1, [x1, #:got_lo12:g_SlcPartLbaEndSector]
-       ldr     w3, [x1]
-       adrp    x1, :got:p_valid_page_count_table
-       cbnz    w3, .L2324
-       ldr     x0, [x4, #:got_lo12:c_ftl_nand_type]
-       ldrh    w0, [x0]
-       cmp     w0, 3
-       beq     .L2324
-       adrp    x0, :got:g_all_blk_used_slc_mode
-       ldr     x0, [x0, #:got_lo12:g_all_blk_used_slc_mode]
-       ldr     w0, [x0]
-       cbnz    w0, .L2324
-       adrp    x0, :got:g_inkDie_check_enable
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       ldr     w0, [x0]
-       cbz     w0, .L2325
-.L2324:
-       ldr     x1, [x1, #:got_lo12:p_valid_page_count_table]
-       ldr     x0, [x1]
-       ldrh    w5, [x0,x2,lsl 1]
-       adrp    x0, :got:c_ftl_nand_page_pre_slc_blk
-       ldr     x2, [x4, #:got_lo12:c_ftl_nand_type]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldrh    w2, [x2]
-       ldrh    w1, [x0]
-       adrp    x0, :got:c_ftl_nand_planes_num
-       cmp     w2, 3
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       mul     w3, w1, w0
-       mov     w0, 0
-       lsr     w1, w1, 1
-       csel    w0, w1, w0, eq
-       add     w0, w3, w0
-       cmp     w5, w0
-       bgt     .L2327
-       mov     w0, 0
-       bl      List_get_gc_head_node
-       uxth    w21, w0
-       adrp    x0, :got:g_MaxLpn
-       adrp    x1, :got:g_VaildLpn
-       ldr     x20, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
-       ldr     x0, [x0, #:got_lo12:g_MaxLpn]
-       ldr     x1, [x1, #:got_lo12:g_VaildLpn]
-       ldr     w0, [x0]
-       ldr     w1, [x1]
-       add     w0, w0, w0, lsl 1
-       cmp     w1, w0, lsr 2
-       bls     .L2328
-       mov     w0, 128
-       b       .L2451
-.L2328:
-       mov     w0, 160
-.L2451:
-       strh    w0, [x20]
-       b       .L2329
-.L2327:
-       ldr     x20, [x20, #:got_lo12:g_gc_merge_free_blk_threshold]
-       mov     w0, 128
-       strh    w0, [x20]
-       b       .L2331
-.L2325:
-       ldr     x1, [x1, #:got_lo12:p_valid_page_count_table]
-       ldr     x1, [x1]
-       ldrh    w1, [x1,x2,lsl 1]
-       cmp     w1, 7
-       bhi     .L2330
-       bl      List_get_gc_head_node
-       uxth    w21, w0
-       mov     w0, 128
-       strh    w0, [x26]
-       b       .L2329
-.L2330:
-       mov     w0, 64
-       b       .L2452
-.L2322:
-       mov     w0, 80
-.L2452:
-       strh    w0, [x26]
-       b       .L2331
-.L2329:
-       mov     w0, 65535
-       cmp     w21, w0
-       beq     .L2331
-.L2321:
-       adrp    x0, :got:p_valid_page_count_table
-       adrp    x5, :got:g_gc_free_blk_threshold
-       ubfiz   x4, x21, 1, 16
-       ldr     x25, [x25, #:got_lo12:g_num_free_superblocks]
-       mov     w1, w21
-       ldr     x0, [x0, #:got_lo12:p_valid_page_count_table]
-       ldr     x5, [x5, #:got_lo12:g_gc_free_blk_threshold]
-       ldrh    w2, [x25]
-       ldr     x3, [x0]
-       adrp    x0, :got:p_erase_count_table
-       ldrh    w5, [x5]
-       ldr     x0, [x0, #:got_lo12:p_erase_count_table]
-       ldrh    w3, [x3,x4]
-       ldr     x6, [x0]
-       adrp    x0, .LC117
-       add     x0, x0, :lo12:.LC117
-       ldrh    w4, [x6,x4]
-       bl      printk
-.L2331:
-       bl      FtlGcReFreshBadBlk
-.L2319:
-       mov     w0, 65535
-       cmp     w21, w0
-       cset    w1, eq
-       cbz     w1, .L2332
-       cbnz    w24, .L2332
-       adrp    x0, :got:g_num_free_superblocks
-       mov     w20, 1
-       ldr     x0, [x0, #:got_lo12:g_num_free_superblocks]
-       ldrh    w1, [x0]
-       cmp     w1, 24
-       bhi     .L2333
-       adrp    x0, :got:c_ftl_nand_page_pre_blk
-       cmp     w1, 16
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w20, [x0]
-       bls     .L2334
-       lsr     w20, w20, 5
-       b       .L2333
-.L2334:
-       cmp     w1, 12
-       bls     .L2335
-       lsr     w20, w20, 4
-       b       .L2333
-.L2335:
-       cmp     w1, 8
-       bls     .L2333
-       lsr     w20, w20, 2
-.L2333:
-       adrp    x0, :got:g_gc_free_blk_threshold
-       ldr     x4, [x0, #:got_lo12:g_gc_free_blk_threshold]
-       ldrh    w2, [x4]
-       cmp     w2, w1
-       bcs     .L2337
-       adrp    x1, :got:g_gc_temp_superblock
-       ldr     x1, [x1, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w2, [x1]
+       str     wzr, [x19,2328]
+       b       .L2617
+.L2614:
+       adrp    x0, .LANCHOR1+3004
        mov     w1, 65535
+       ldrh    w2, [x0,#:lo12:.LANCHOR1+3004]
+       mov     w0, 1
        cmp     w2, w1
-       bne     .L2338
-       adrp    x1, :got:g_gc_next_blk
-       ldr     x1, [x1, #:got_lo12:g_gc_next_blk]
-       ldrh    w1, [x1]
-       cmp     w1, w2
-       bne     .L2338
-       adrp    x1, :got:gc_ink_free_return_value
-       ldr     x1, [x1, #:got_lo12:gc_ink_free_return_value]
-       ldrh    w2, [x1]
-       cbnz    w2, .L2339
-       adrp    x1, :got:g_MaxLpn
-       adrp    x3, :got:g_VaildLpn
-       ldr     x1, [x1, #:got_lo12:g_MaxLpn]
-       ldr     x3, [x3, #:got_lo12:g_VaildLpn]
-       ldr     w1, [x1]
-       ldr     w3, [x3]
-       add     w1, w1, w1, lsl 1
-       cmp     w3, w1, lsr 2
-       bcs     .L2340
-.L2339:
-       adrp    x1, :got:c_ftl_nand_data_op_blks_per_plane
-       ldr     x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       ldrh    w1, [x1]
-       add     w1, w1, w1, lsl 1
-       asr     w1, w1, 2
-       strh    w1, [x0]
-       b       .L2341
-.L2340:
-       mov     w0, 18
-       strh    w0, [x4]
-.L2341:
-       adrp    x0, :got:g_in_swl_replace
-       ldr     x0, [x0, #:got_lo12:g_in_swl_replace]
-       str     wzr, [x0]
-       b       .L2431
-.L2338:
-       adrp    x1, :got:c_ftl_nand_data_op_blks_per_plane
-       ldr     x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       ldrh    w1, [x1]
-       add     w1, w1, w1, lsl 1
-       asr     w1, w1, 2
-       strh    w1, [x0]
-.L2337:
-       cmp     w23, 2
-       bhi     .L2392
-       adrp    x0, :got:g_inkDie_check_enable
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       ldr     w0, [x0]
-       cbz     w0, .L2392
-       add     w20, w20, 1
-       uxth    w20, w20
-       b       .L2392
-.L2332:
-       adrp    x0, :got:g_gc_temp_superblock
-       mov     w2, 65535
-       ldr     x0, [x0, #:got_lo12:g_gc_temp_superblock]
-       ldrh    w0, [x0]
-       cmp     w0, w2
-       bne     .L2344
-       cbz     w1, .L2344
-       adrp    x1, :got:g_gc_next_blk
-       ldr     x1, [x1, #:got_lo12:g_gc_next_blk]
-       ldrh    w1, [x1]
-       cmp     w1, w0
-       bne     .L2344
-       ldr     x1, [x19, #:got_lo12:g_gc_superblock]
-       ldrh    w1, [x1]
-       cmp     w1, w0
-       beq     .L2345
-.L2350:
-       mov     w21, 65535
-       b       .L2344
-.L2345:
-       adrp    x0, :got:g_in_swl_replace
-       adrp    x20, :got:g_num_free_superblocks
-       adrp    x21, :got:gc_ink_free_return_value
-       ldr     x0, [x0, #:got_lo12:g_in_swl_replace]
-       str     wzr, [x0]
-       adrp    x0, :got:g_gc_free_blk_threshold
-       ldr     x24, [x20, #:got_lo12:g_num_free_superblocks]
-       ldr     x2, [x0, #:got_lo12:g_gc_free_blk_threshold]
-       ldrh    w3, [x24]
-       ldrh    w1, [x2]
-       cmp     w3, w1
-       bls     .L2346
-       ldr     x1, [x21, #:got_lo12:gc_ink_free_return_value]
-       ldrh    w1, [x1]
-       cbnz    w1, .L2347
-       adrp    x1, :got:g_MaxLpn
-       adrp    x3, :got:g_VaildLpn
-       ldr     x1, [x1, #:got_lo12:g_MaxLpn]
-       ldr     x3, [x3, #:got_lo12:g_VaildLpn]
-       ldr     w1, [x1]
-       ldr     w3, [x3]
-       add     w1, w1, w1, lsl 1
-       cmp     w3, w1, lsr 2
-       bcs     .L2348
-.L2347:
-       adrp    x1, :got:c_ftl_nand_data_op_blks_per_plane
-       ldr     x0, [x0, #:got_lo12:g_gc_free_blk_threshold]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       ldrh    w1, [x1]
-       add     w1, w1, w1, lsl 1
-       asr     w1, w1, 2
-       strh    w1, [x0]
-       b       .L2349
-.L2348:
-       mov     w0, 18
-       strh    w0, [x2]
-.L2349:
-       bl      FtlReadRefresh
-       ldr     x21, [x21, #:got_lo12:gc_ink_free_return_value]
-       b       .L2453
-.L2346:
-       ldr     x21, [x21, #:got_lo12:gc_ink_free_return_value]
-       ldrh    w0, [x21]
-       cbnz    w0, .L2350
-       adrp    x23, :got:c_ftl_nand_data_op_blks_per_plane
-       ldr     x23, [x23, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       ldrh    w1, [x23]
-       add     w1, w1, w1, lsl 1
-       asr     w1, w1, 2
-       strh    w1, [x2]
-       bl      List_get_gc_head_node
-       ubfiz   x0, x0, 1, 16
-       adrp    x1, :got:p_valid_page_count_table
-       ldr     x1, [x1, #:got_lo12:p_valid_page_count_table]
-       ldr     x1, [x1]
-       ldrh    w2, [x1,x0]
-       adrp    x0, :got:c_ftl_nand_page_pre_slc_blk
-       adrp    x1, :got:c_ftl_nand_planes_num
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_slc_blk]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       ldrh    w1, [x1]
-       mul     w0, w0, w1
-       mov     w1, 2
-       sdiv    w0, w0, w1
-       cmp     w2, w0
-       ble     .L2351
-       ldrh    w0, [x23]
-       ldrh    w1, [x24]
-       sub     w0, w0, #1
-       cmp     w1, w0
-       blt     .L2351
-       bl      FtlReadRefresh
-.L2453:
-       ldrh    w2, [x21]
-       b       .L2431
-.L2351:
-       cbnz    w2, .L2350
+       bne     .L2617
+       b       .L2618
+.L2622:
+       ldr     x25, [x20,944]
+       add     x1, x29, 84
+       umull   x24, w21, w26
+       mov     w2, 0
+       add     x23, x25, x24
+       ldr     w0, [x23,8]
+       bl      log2phys
+       ldr     w0, [x29,84]
+       ldr     w1, [x25,x24]
+       cmp     w0, w1
+       bne     .L2620
+       lsr     x0, x0, 10
+       bl      P2V_block_in_plane
+       mov     w24, w0
+       ldr     w0, [x23,8]
+       add     x1, x23, 4
+       mov     w2, 1
+       bl      log2phys
+       mov     w0, w24
+.L2636:
+       bl      decrement_vpc_count
+.L2621:
+       add     w21, w21, 1
+       uxth    w21, w21
+.L2619:
+       ldrh    w0, [x20,936]
+       cmp     w0, w21
+       bhi     .L2622
+       b       .L2638
+.L2620:
+       ldr     w1, [x23,4]
+       cmp     w0, w1
+       beq     .L2621
+       ldrh    w0, [x20,96]
+       b       .L2636
+.L2638:
        mov     w0, -1
        bl      decrement_vpc_count
-       ldr     x20, [x20, #:got_lo12:g_num_free_superblocks]
-       ldrh    w2, [x20]
-       add     w2, w2, 1
-       b       .L2431
-.L2344:
-       adrp    x0, :got:g_inkDie_check_enable
-       mov     w20, 2
-       ldr     x0, [x0, #:got_lo12:g_inkDie_check_enable]
-       ldr     w0, [x0]
-       cmp     w0, wzr
-       csinc   w20, w20, wzr, ne
-       b       .L2343
-.L2392:
-       mov     w21, 65535
-.L2343:
-       ldr     x1, [x19, #:got_lo12:g_gc_superblock]
-       mov     w2, 65535
-       ldrh    w0, [x1]
-       cmp     w0, w2
-       bne     .L2353
-       cmp     w21, w0
-       beq     .L2354
-       strh    w21, [x1]
-       b       .L2355
-.L2354:
-       adrp    x0, :got:g_gc_next_blk
-       ldr     x0, [x0, #:got_lo12:g_gc_next_blk]
-       ldrh    w2, [x0]
-       cmp     w2, w21
-       beq     .L2355
-       strh    w2, [x1]
-       mov     w1, -1
-       strh    w1, [x0]
-.L2355:
-       ldr     x23, [x19, #:got_lo12:g_gc_superblock]
-       ldrh    w0, [x23]
-       bl      IsBlkInGcList
-       cbz     w0, .L2356
-       mov     w0, -1
-       strh    w0, [x23]
-.L2356:
-       ldr     x23, [x19, #:got_lo12:g_gc_superblock]
-       mov     w0, 65535
-       ldrh    w1, [x23]
-       cmp     w1, w0
-       beq     .L2353
-       mov     x0, x23
-       bl      make_superblock
-       strh    wzr, [x23,2]
-       adrp    x0, :got:g_gc_cur_blk_valid_pages
-       strb    wzr, [x23,6]
-       ldrh    w1, [x23]
-       ldr     x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
-       strh    wzr, [x0]
-       adrp    x0, :got:p_valid_page_count_table
-       ldr     x0, [x0, #:got_lo12:p_valid_page_count_table]
-       ldr     x0, [x0]
-       ldrh    w1, [x0,x1,lsl 1]
-       adrp    x0, :got:g_gc_cur_blk_max_valid_pages
-       ldr     x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
-       strh    w1, [x0]
-.L2353:
-       ldr     x0, [x19, #:got_lo12:g_gc_superblock]
-       ldrh    w1, [x0]
-       adrp    x0, :got:g_active_superblock
-       ldr     x0, [x0, #:got_lo12:g_active_superblock]
-       ldrh    w0, [x0]
-       cmp     w0, w1
-       beq     .L2358
-       adrp    x0, :got:g_buffer_superblock
-       ldr     x0, [x0, #:got_lo12:g_buffer_superblock]
-       ldrh    w0, [x0]
-       cmp     w0, w1
-       beq     .L2358
-.L2359:
-       add     x0, x29, 156
-       mov     w24, 65535
-       str     x0, [x29,136]
-       b       .L2360
-.L2358:
-       ldr     x19, [x19, #:got_lo12:g_gc_superblock]
+       ldrh    w0, [x20,96]
+       ldr     x2, [x20,-40]
+       ubfiz   x1, x0, 1, 16
+       ldrh    w1, [x2,x1]
+       cbz     w1, .L2623
+       bl      INSERT_DATA_LIST
+       b       .L2624
+.L2623:
+       bl      INSERT_FREE_LIST
+.L2624:
+       add     x20, x19, :lo12:.LANCHOR2
        mov     w0, -1
-       strh    w0, [x19]
-       b       .L2454
-.L2378:
-       ldr     x1, [x19, #:got_lo12:g_gc_superblock]
-       ldrh    w0, [x1,2]
-       add     w20, w20, w0
-       adrp    x0, :got:c_ftl_nand_page_pre_blk
-       uxth    w20, w20
-       strh    w20, [x1,2]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w0, [x0]
-       cmp     w0, w20
-       bls     .L2380
-       adrp    x1, :got:g_gc_cur_blk_valid_pages
-       adrp    x0, :got:g_gc_cur_blk_max_valid_pages
-       ldr     x1, [x1, #:got_lo12:g_gc_cur_blk_valid_pages]
-       ldr     x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
-       ldrh    w1, [x1]
-       ldrh    w0, [x0]
+       strh    wzr, [x20,936]
+       strh    w0, [x20,96]
+       strh    wzr, [x20,924]
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+       ldr     w0, [x20,160]
+       cbz     w0, .L2625
+       ldr     w0, [x20,220]
+       cmp     w0, 29
+       bhi     .L2625
+       ldrh    w0, [x20,272]
+       ldrh    w1, [x20,-8]
        cmp     w1, w0
-       beq     .L2380
-.L2381:
-       adrp    x0, :got:g_num_free_superblocks
-       ldr     x0, [x0, #:got_lo12:g_num_free_superblocks]
-       ldrh    w0, [x0]
-       cmp     w0, 2
-       bhi     .L2384
-       adrp    x0, :got:c_ftl_nand_page_pre_blk
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w20, [x0]
-.L2360:
-       ldr     x0, [x19, #:got_lo12:g_gc_superblock]
-       ldrh    w0, [x0]
-       cmp     w0, w24
-       bne     .L2361
-       adrp    x0, :got:g_in_swl_replace
-       adrp    x23, :got:c_ftl_nand_planes_num
-       mov     w25, 2
-       ldr     x0, [x0, #:got_lo12:g_in_swl_replace]
-       str     wzr, [x0]
-.L2362:
-       adrp    x0, :got:g_gc_blk_index
-       adrp    x26, :got:g_gc_blk_index
-       ldr     x27, [x0, #:got_lo12:g_gc_blk_index]
-       ldrh    w0, [x27]
-       bl      List_get_gc_head_node
-       ldr     x28, [x19, #:got_lo12:g_gc_superblock]
-       uxth    w0, w0
-       cmp     w0, w24
-       strh    w0, [x28]
-       bne     .L2363
-       strh    wzr, [x27]
-       mov     w2, 8
-       b       .L2431
-.L2363:
-       bl      IsBlkInGcList
-       cbz     w0, .L2364
-       ldrh    w0, [x27]
-       add     w0, w0, 1
-       strh    w0, [x27]
-       b       .L2362
-.L2364:
-       ldrh    w0, [x27]
-       adrp    x1, :got:p_valid_page_count_table
-       ldrh    w2, [x28]
-       add     w0, w0, 1
-       lsl     x2, x2, 1
-       uxth    w0, w0
-       strh    w0, [x27]
-       ldr     x1, [x1, #:got_lo12:p_valid_page_count_table]
-       ldr     x5, [x23, #:got_lo12:c_ftl_nand_planes_num]
-       ldr     x3, [x1]
-       adrp    x1, :got:c_ftl_nand_page_pre_blk
-       ldrh    w5, [x5]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w4, [x3,x2]
-       ldrh    w1, [x1]
-       mul     w1, w1, w5
-       sdiv    w5, w1, w25
-       cmp     w4, w5
-       bgt     .L2366
-       cmp     w4, 8
-       bls     .L2367
-       cmp     w0, 48
-       bls     .L2367
-       adrp    x0, :got:g_gc_blk_num
-       ldr     x0, [x0, #:got_lo12:g_gc_blk_num]
-       ldrh    w0, [x0]
-       cmp     w0, 35
-       bhi     .L2367
-.L2366:
-       ldr     x0, [x26, #:got_lo12:g_gc_blk_index]
-       strh    wzr, [x0]
-.L2367:
-       cmp     w21, w24
-       ldrh    w0, [x3,x2]
-       bne     .L2368
-       cmp     w0, w1
-       blt     .L2368
-       ldr     x19, [x19, #:got_lo12:g_gc_superblock]
+       bcs     .L2626
+       lsl     w0, w0, 1
+       strh    w0, [x20,864]
+.L2626:
+       add     x19, x19, :lo12:.LANCHOR2
        mov     w0, -1
-       strh    w0, [x19]
-       ldr     x26, [x26, #:got_lo12:g_gc_blk_index]
-       strh    wzr, [x26]
-       b       .L2454
-.L2368:
-       cbnz    w0, .L2369
+       strh    w0, [x19,296]
+       b       .L2637
+.L2625:
+       add     x19, x19, :lo12:.LANCHOR2
+       ldrh    w0, [x19,272]
+       ldrh    w1, [x19,-8]
+       add     w0, w0, w0, lsl 1
+       cmp     w1, w0, lsr 2
+       ble     .L2637
        mov     w0, -1
-       bl      decrement_vpc_count
-       ldr     x26, [x26, #:got_lo12:g_gc_blk_index]
-       ldrh    w0, [x26]
-       add     w0, w0, 1
-       strh    w0, [x26]
-       b       .L2362
-.L2369:
-       ldr     x23, [x19, #:got_lo12:g_gc_superblock]
-       mov     x0, x23
-       strb    wzr, [x23,8]
-       bl      make_superblock
-       adrp    x0, :got:g_gc_cur_blk_valid_pages
-       ldrh    w1, [x23]
-       ldr     x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
-       strh    wzr, [x0]
-       adrp    x0, :got:p_valid_page_count_table
-       ldr     x0, [x0, #:got_lo12:p_valid_page_count_table]
-       ldr     x0, [x0]
-       ldrh    w1, [x0,x1,lsl 1]
-       adrp    x0, :got:g_gc_cur_blk_max_valid_pages
-       ldr     x0, [x0, #:got_lo12:g_gc_cur_blk_max_valid_pages]
-       strh    wzr, [x23,2]
-       strb    wzr, [x23,6]
-       strh    w1, [x0]
-.L2361:
-       bl      FtlReadRefresh
-       ldr     x0, [x22, #:got_lo12:g_in_gc_progress]
-       mov     w1, 1
-       str     w1, [x0]
-       ldr     x0, [x19, #:got_lo12:g_gc_superblock]
-       ldrh    w1, [x0,2]
-       adrp    x0, :got:c_ftl_nand_page_pre_blk
-       add     w2, w1, w20
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w0, [x0]
-       cmp     w2, w0
-       ble     .L2370
-       sub     w20, w0, w1
-       uxth    w20, w20
-.L2370:
-       mov     w25, 0
-.L2371:
-       cmp     w20, w25, uxth
-       bls     .L2378
-       adrp    x0, :got:c_ftl_nand_planes_num
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w4, [x0]
-       ldr     x0, [x19, #:got_lo12:g_gc_superblock]
-       ldrh    w2, [x0,2]
-       mov     x0, 0
-       mov     w23, w0
-       add     w2, w2, w25
-.L2379:
-       cmp     w4, w0, uxth
-       bls     .L2456
-       ldr     x1, [x19, #:got_lo12:g_gc_superblock]
-       add     x1, x1, x0, lsl 1
-       ldrh    w1, [x1,16]
-       cmp     w1, w24
-       beq     .L2372
-       adrp    x5, :got:req_gc
-       mov     w3, 56
-       orr     w1, w2, w1, lsl 10
-       umull   x3, w23, w3
-       ldr     x5, [x5, #:got_lo12:req_gc]
-       add     w23, w23, 1
-       uxth    w23, w23
-       ldr     x5, [x5]
-       add     x3, x5, x3
-       str     w1, [x3,4]
-.L2372:
-       add     x0, x0, 1
-       b       .L2379
-.L2456:
-       adrp    x0, :got:req_gc
-       mov     w1, w23
-       mov     w2, 0
-       mov     x26, 0
-       mov     x27, 56
-       ldr     x0, [x0, #:got_lo12:req_gc]
-       ldr     x0, [x0]
-       bl      FlashReadPages
-.L2374:
-       cmp     w23, w26, uxth
-       bls     .L2457
-       adrp    x0, :got:req_gc
-       mul     x4, x26, x27
-       ldr     x6, [x0, #:got_lo12:req_gc]
-       ldr     x0, [x6]
-       add     x1, x0, x4
-       ldr     w0, [x0,x4]
-       cmn     w0, #1
-       ldr     x5, [x1,16]
-       beq     .L2394
-       ldrh    w0, [x5]
-       mov     w1, 61589
-       cmp     w0, w1
-       bne     .L2394
-       ldr     w0, [x5,8]
-       mov     w2, 0
-       ldr     x1, [x29,136]
-       str     x6, [x29,112]
-       str     x4, [x29,120]
-       str     x5, [x29,128]
-       bl      log2phys
-       ldr     x6, [x29,112]
-       ldr     x4, [x29,120]
-       ldr     w1, [x29,156]
-       ldr     x2, [x6]
-       ldr     x5, [x29,128]
-       add     x2, x2, x4
-       ldr     w0, [x2,4]
-       cmp     w1, w0
-       bne     .L2394
-       adrp    x0, :got:g_gc_cur_blk_valid_pages
-       str     x6, [x29,96]
-       str     x4, [x29,104]
-       str     x5, [x29,112]
-       ldr     x1, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
-       ldrh    w0, [x1]
-       add     w0, w0, 1
-       strh    w0, [x1]
-       adrp    x0, :got:g_gc_num_req
-       ldr     x28, [x0, #:got_lo12:g_gc_num_req]
-       adrp    x0, :got:req_gc_dst
-       ldr     x7, [x0, #:got_lo12:req_gc_dst]
-       ldr     w0, [x28]
-       str     x7, [x29,120]
-       ldr     x1, [x7]
-       madd    x1, x0, x27, x1
-       ldr     w0, [x2,24]
-       str     x1, [x29,128]
-       str     w0, [x1,24]
-       bl      Ftl_get_new_temp_ppa
-       ldr     x1, [x29,128]
-       ldr     x7, [x29,120]
-       ldr     x6, [x29,96]
-       str     w0, [x1,4]
-       ldr     w0, [x28]
-       ldr     x1, [x7]
-       ldr     x4, [x29,104]
-       ldr     x5, [x29,112]
-       madd    x0, x0, x27, x1
-       ldr     x1, [x6]
-       add     x1, x1, x4
-       ldr     x2, [x1,8]
-       str     x2, [x0,8]
-       adrp    x2, :got:g_gc_temp_superblock
-       ldr     x1, [x1,16]
-       str     x1, [x0,16]
-       mov     w1, 1
-       ldr     w0, [x29,156]
-       str     w0, [x5,12]
-       ldr     x2, [x2, #:got_lo12:g_gc_temp_superblock]
-       str     x2, [x29,128]
-       ldrh    w0, [x2]
-       strh    w0, [x5,2]
-       adrp    x0, :got:g_GlobalDataVersion
-       ldr     x0, [x0, #:got_lo12:g_GlobalDataVersion]
-       ldr     w0, [x0]
-       str     w0, [x5,4]
-       ldr     w0, [x28]
-       add     w0, w0, 1
-       str     w0, [x28]
-       ldr     x0, [x6]
-       add     x0, x0, x4
-       bl      FtlGcBufAlloc
-       ldr     x2, [x29,128]
-       ldr     w1, [x28]
-       ldrb    w0, [x2,7]
-       cmp     w1, w0
-       beq     .L2376
-       ldrh    w0, [x2,4]
-       cbnz    w0, .L2394
-.L2376:
-       bl      Ftl_gc_temp_data_write_back
-       cbnz    w0, .L2455
-.L2394:
-       add     x26, x26, 1
-       b       .L2374
-.L2457:
-       add     w25, w25, 1
-       b       .L2371
-.L2380:
-       adrp    x0, :got:g_gc_num_req
-       ldr     x0, [x0, #:got_lo12:g_gc_num_req]
-       ldr     w0, [x0]
-       cbz     w0, .L2382
-       bl      Ftl_gc_temp_data_write_back
-       cbz     w0, .L2382
-.L2455:
-       ldr     x22, [x22, #:got_lo12:g_in_gc_progress]
-       str     wzr, [x22]
-.L2454:
-       adrp    x0, :got:gc_ink_free_return_value
-       ldr     x0, [x0, #:got_lo12:gc_ink_free_return_value]
-       ldrh    w2, [x0]
-       b       .L2431
-.L2382:
-       adrp    x0, :got:g_gc_cur_blk_valid_pages
-       ldr     x0, [x0, #:got_lo12:g_gc_cur_blk_valid_pages]
-       ldrh    w3, [x0]
-       cbnz    w3, .L2383
-       adrp    x0, :got:p_valid_page_count_table
-       ldr     x1, [x19, #:got_lo12:g_gc_superblock]
-       ldr     x2, [x0, #:got_lo12:p_valid_page_count_table]
-       ldrh    w0, [x1]
-       ldr     x2, [x2]
-       lsl     x0, x0, 1
-       ldrh    w4, [x2,x0]
-       cbz     w4, .L2383
-       strh    w3, [x2,x0]
-       ldrh    w0, [x1]
-       bl      update_vpc_list
-       bl      FtlCacheWriteBack
-       bl      l2p_flush
-       bl      FtlVpcTblFlush
-.L2383:
-       ldr     x0, [x19, #:got_lo12:g_gc_superblock]
-       mov     w1, -1
-       strh    w1, [x0]
-       b       .L2381
-.L2384:
-       ldr     x22, [x22, #:got_lo12:g_in_gc_progress]
-       adrp    x1, :got:gc_ink_free_return_value
-       str     wzr, [x22]
-       ldr     x1, [x1, #:got_lo12:gc_ink_free_return_value]
-       ldrh    w2, [x1]
-       cmp     w2, wzr
-       csinc   w2, w2, w0, ne
-.L2431:
-       mov     w0, w2
+       strh    w0, [x19,296]
+       mov     w0, 20
+       strh    w0, [x19,864]
+.L2637:
+       mov     w0, 0
+.L2617:
+       ldr     x2, [x29,88]
+       ldr     x1, [x22,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2627
+       bl      __stack_chk_fail
+.L2627:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 160
+       ldp     x29, x30, [sp], 96
        ret
-       .size   rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
+       .size   FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
        .align  2
-       .global FtlRead
-       .type   FtlRead, %function
-FtlRead:
-       stp     x29, x30, [sp, -192]!
-       uxtb    w0, w0
+       .global Ftl_gc_temp_data_write_back
+       .type   Ftl_gc_temp_data_write_back, %function
+Ftl_gc_temp_data_write_back:
+       adrp    x0, .LANCHOR0+120
+       stp     x29, x30, [sp, -48]!
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
+       ldrb    w0, [x0,#:lo12:.LANCHOR0+120]
        stp     x21, x22, [sp,32]
-       stp     x23, x24, [sp,48]
-       cmp     w0, 16
-       mov     w19, w1
-       mov     w28, w2
-       mov     x25, x3
-       bne     .L2459
-       add     w0, w1, 256
-       mov     w1, w2
-       mov     x2, x3
-       bl      FtlVendorPartRead
-       b       .L2460
-.L2459:
-       add     w0, w1, w2
-       str     w0, [x29,172]
-       adrp    x0, :got:g_MaxLbaSector
-       ldr     w2, [x29,172]
-       ldr     x0, [x0, #:got_lo12:g_MaxLbaSector]
-       ldr     w1, [x0]
-       mov     w0, -1
-       cmp     w2, w1
-       bhi     .L2460
-       adrp    x23, :got:c_ftl_nand_sec_pre_page
-       sub     w24, w2, #1
-       ldr     x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w0, [x0]
-       udiv    w27, w19, w0
-       udiv    w24, w24, w0
-       adrp    x0, :got:g_totle_read_sector
-       sub     w22, w24, w27
-       ldr     x0, [x0, #:got_lo12:g_totle_read_sector]
-       add     w22, w22, 1
-       ldr     w1, [x0]
-       add     w1, w28, w1
-       str     w1, [x0]
-       adrp    x0, :got:g_totle_read_page_count
-       ldr     x0, [x0, #:got_lo12:g_totle_read_page_count]
-       ldr     w1, [x0]
-       add     w1, w22, w1
-       str     w1, [x0]
-       mov     w0, w27
-       mov     w1, w24
-       bl      FtlCacheMetchLpa
-       cbz     w0, .L2461
-       bl      FtlCacheWriteBack
-.L2461:
-       mov     w26, 0
-       add     x0, x29, 188
-       mov     w20, w27
-       str     w26, [x29,168]
-       mov     w21, w26
-       str     w26, [x29,156]
-       str     x0, [x29,112]
-.L2462:
-       cbz     w22, .L2504
-       ldr     x1, [x29,112]
-       mov     w0, w20
+       stp     x19, x20, [sp,16]
+       adrp    x21, .LANCHOR2
+       cbz     w0, .L2640
+       add     x0, x21, :lo12:.LANCHOR2
+       ldr     w1, [x0,880]
+       tbz     x1, 0, .L2640
+       ldrh    w0, [x0,100]
+       cbz     w0, .L2640
+.L2645:
+       mov     w0, 0
+       b       .L2641
+.L2640:
+       add     x1, x21, :lo12:.LANCHOR2
        mov     w2, 0
-       bl      log2phys
-       ldr     w3, [x29,188]
-       cmn     w3, #1
-       bne     .L2501
-       mov     w3, 0
-.L2463:
-       ldr     x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w0, [x0]
-       cmp     w3, w0
-       bcs     .L2467
-       madd    w0, w20, w0, w3
-       cmp     w0, w19
-       bcc     .L2465
-       ldr     w1, [x29,172]
-       cmp     w0, w1
-       bcs     .L2465
-       sub     w0, w0, w19
-       mov     w1, 0
-       ubfiz   x0, x0, 9, 23
-       mov     w2, 512
-       add     x0, x25, x0
-       str     x3, [x29,160]
-       bl      ftl_memset
-       ldr     x3, [x29,160]
-.L2465:
-       add     w3, w3, 1
-       b       .L2463
-.L2501:
-       mov     w0, 56
-       cmp     w20, w27
-       umull   x1, w21, w0
-       adrp    x0, :got:req_read
-       ldr     x0, [x0, #:got_lo12:req_read]
-       ldr     x2, [x0]
-       add     x2, x2, x1
-       str     w3, [x2,4]
-       bne     .L2468
-       adrp    x2, :got:p_io_data_buf_0
-       ldr     x0, [x0]
-       add     x0, x0, x1
-       ldr     x2, [x2, #:got_lo12:p_io_data_buf_0]
-       ldr     x2, [x2]
-       str     x2, [x0,8]
-       ldr     x2, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w2, [x2]
-       udiv    w3, w19, w2
-       msub    w3, w3, w2, w19
-       str     w3, [x29,128]
-       sub     w3, w2, w3
-       cmp     w3, w28
-       csel    w3, w3, w28, ls
-       str     w3, [x29,168]
-       cmp     w3, w2
-       bne     .L2469
-       str     x25, [x0,8]
-       b       .L2469
-.L2468:
-       ldr     x2, [x0]
-       cmp     w20, w24
-       add     x2, x2, x1
-       bne     .L2470
-       adrp    x0, :got:p_io_data_buf_1
-       ldr     w4, [x29,172]
-       ldr     x0, [x0, #:got_lo12:p_io_data_buf_1]
-       ldr     x0, [x0]
-       str     x0, [x2,8]
-       ldr     x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w3, [x0]
-       mul     w0, w20, w3
-       sub     w26, w4, w0
-       cmp     w26, w3
-       bne     .L2469
-       b       .L2502
-.L2470:
-       ldr     x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w0, [x0]
-       mul     w0, w20, w0
-.L2502:
-       sub     w0, w0, w19
-       ubfiz   x0, x0, 9, 23
-       add     x0, x25, x0
-       str     x0, [x2,8]
-.L2469:
-       adrp    x0, :got:req_read
-       adrp    x2, :got:p_io_spare_buf
-       ldr     x0, [x0, #:got_lo12:req_read]
-       ldr     x2, [x2, #:got_lo12:p_io_spare_buf]
-       ldr     x0, [x0]
-       ldr     x2, [x2]
-       add     x1, x0, x1
-       adrp    x0, :got:c_ftl_nand_byte_pre_oob
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
-       str     w20, [x1,24]
-       ldrh    w0, [x0]
-       mul     w0, w21, w0
-       add     w21, w21, 1
-       and     x0, x0, 4294967292
-       add     x0, x2, x0
-       str     x0, [x1,16]
-.L2467:
-       subs    w22, w22, #1
-       add     w20, w20, 1
-       beq     .L2471
-       adrp    x0, :got:c_ftl_nand_planes_num
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       cmp     w21, w0, lsl 3
-       bne     .L2462
-.L2471:
-       cbz     w21, .L2462
-       adrp    x0, :got:req_read
-       mov     w1, w21
-       mov     w2, 0
-       ldr     x0, [x0, #:got_lo12:req_read]
-       ldr     x0, [x0]
-       bl      FlashReadPages
-       str     xzr, [x29,160]
-       ldr     x0, [x29,128]
-       ubfiz   x0, x0, 9, 23
-       str     x0, [x29,144]
-       ldr     w0, [x29,168]
-       lsl     w0, w0, 9
-       str     w0, [x29,152]
-       lsl     w0, w26, 9
-       str     w0, [x29,124]
-.L2473:
-       ldr     w0, [x29,160]
-       cmp     w21, w0
-       bls     .L2505
-       ldr     x0, [x29,160]
-       mov     x1, 56
-       mul     x3, x0, x1
-       adrp    x0, :got:req_read
-       ldr     x0, [x0, #:got_lo12:req_read]
-       ldr     x0, [x0]
-       add     x0, x0, x3
-       ldr     w1, [x0,24]
-       cmp     w1, w27
-       bne     .L2474
-       ldr     x1, [x0,8]
-       adrp    x0, :got:p_io_data_buf_0
-       ldr     x0, [x0, #:got_lo12:p_io_data_buf_0]
-       ldr     x0, [x0]
-       cmp     x1, x0
-       bne     .L2475
-       ldr     x2, [x29,144]
-       mov     x0, x25
-       str     x3, [x29,104]
-       add     x1, x1, x2
-       ldr     w2, [x29,152]
-       b       .L2503
-.L2474:
-       cmp     w1, w24
-       bne     .L2475
-       ldr     x1, [x0,8]
-       adrp    x0, :got:p_io_data_buf_1
-       ldr     x0, [x0, #:got_lo12:p_io_data_buf_1]
-       ldr     x0, [x0]
-       cmp     x1, x0
-       bne     .L2475
-       ldr     x0, [x23, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldr     w2, [x29,124]
-       str     x3, [x29,104]
-       ldrh    w0, [x0]
-       mul     w0, w24, w0
-       sub     w0, w0, w19
-       ubfiz   x0, x0, 9, 23
-       add     x0, x25, x0
-.L2503:
-       bl      ftl_memcpy
-       ldr     x3, [x29,104]
-.L2475:
-       adrp    x0, :got:req_read
-       ldr     x0, [x0, #:got_lo12:req_read]
-       ldr     x0, [x0]
-       add     x5, x0, x3
-       ldr     w2, [x0,x3]
+       mov     w3, w2
+       mov     w20, 0
+       mov     w22, 56
+       ldr     x0, [x1,2056]
+       ldr     w1, [x1,880]
+       bl      FlashProgPages
+.L2642:
+       add     x19, x21, :lo12:.LANCHOR2
+       ldr     w1, [x19,880]
+       cmp     w20, w1
+       bcs     .L2656
+       umull   x0, w20, w22
+       ldr     x2, [x19,2056]
+       add     x1, x2, x0
+       ldr     w2, [x2,x0]
        cmn     w2, #1
-       bne     .L2476
-       adrp    x1, :got:g_sys_ext_data
-       str     w2, [x29,156]
-       ldr     x4, [x1, #:got_lo12:g_sys_ext_data]
-       ldr     w1, [x4,72]
+       bne     .L2643
+       ldrh    w3, [x19,96]
+       ldr     x1, [x19,-40]
+       strh    wzr, [x1,x3,lsl 1]
+       strh    w2, [x19,96]
+       ldr     w1, [x19,448]
        add     w1, w1, 1
-       str     w1, [x4,72]
-.L2476:
-       ldr     w0, [x0,x3]
-       cmp     w0, 256
-       bne     .L2477
-       ldr     w0, [x5,4]
+       str     w1, [x19,448]
+       ldr     x1, [x19,2056]
+       add     x0, x1, x0
+       ldr     w0, [x0,4]
        lsr     w0, w0, 10
-       bl      P2V_block_in_plane
-       bl      FtlGcRefreshBlock
-.L2477:
-       ldr     x0, [x29,160]
-       add     x0, x0, 1
-       str     x0, [x29,160]
-       b       .L2473
-.L2505:
-       mov     w21, 0
-       b       .L2462
-.L2504:
-       adrp    x0, :got:g_gc_bad_block_temp_num
-       ldr     x0, [x0, #:got_lo12:g_gc_bad_block_temp_num]
-       ldrh    w0, [x0]
-       cbz     w0, .L2480
-       mov     w0, w22
-       mov     w1, 1
-       bl      rk_ftl_garbage_collect
-.L2480:
-       ldr     w0, [x29,156]
-.L2460:
+       bl      FtlBbmMapBadBlock
+       bl      FtlBbmTblFlush
+       bl      FtlGcPageVarInit
+       b       .L2655
+.L2643:
+       ldr     x2, [x1,16]
+       add     w20, w20, 1
+       ldr     w1, [x1,4]
+       uxth    w20, w20
+       ldr     w0, [x2,12]
+       ldr     w2, [x2,8]
+       bl      FtlGcUpdatePage
+       b       .L2642
+.L2656:
+       ldr     x0, [x19,2056]
+       bl      FtlGcBufFree
+       str     wzr, [x19,880]
+       ldrh    w0, [x19,100]
+       cbnz    w0, .L2645
+       mov     w0, 1
+       bl      FtlGcFreeTempBlock
+.L2655:
+       mov     w0, 1
+.L2641:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
-       ldp     x23, x24, [sp,48]
-       ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 192
+       ldp     x29, x30, [sp], 48
        ret
-       .size   FtlRead, .-FtlRead
+       .size   Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
        .align  2
-       .global StorageSysDataLoad
-       .type   StorageSysDataLoad, %function
-StorageSysDataLoad:
+       .global FtlGcPageRecovery
+       .type   FtlGcPageRecovery, %function
+FtlGcPageRecovery:
        stp     x29, x30, [sp, -48]!
-       mov     x2, 512
        add     x29, sp, 0
+       stp     x19, x20, [sp,16]
+       adrp    x20, .LANCHOR0
+       adrp    x19, .LANCHOR2
+       add     x20, x20, :lo12:.LANCHOR0
+       add     x19, x19, :lo12:.LANCHOR2
+       str     x21, [sp,32]
+       add     x21, x19, 96
+       mov     x0, x21
+       ldrh    w1, [x20,2026]
+       bl      FtlGcScanTempBlk
+       ldrh    w1, [x19,98]
+       ldrh    w0, [x20,2026]
+       cmp     w1, w0
+       bcc     .L2657
+       add     x0, x19, 2240
+       bl      FtlMapBlkWriteDumpData
+       mov     w0, 0
+       bl      FtlGcFreeTempBlock
+       str     wzr, [x19,2328]
+.L2657:
+       ldp     x19, x20, [sp,16]
+       ldr     x21, [sp,32]
+       ldp     x29, x30, [sp], 48
+       ret
+       .size   FtlGcPageRecovery, .-FtlGcPageRecovery
+       .align  2
+       .global FtlPowerLostRecovery
+       .type   FtlPowerLostRecovery, %function
+FtlPowerLostRecovery:
+       stp     x29, x30, [sp, -32]!
+       adrp    x0, .LANCHOR4
+       add     x29, sp, 0
+       add     x0, x0, :lo12:.LANCHOR4
        str     x19, [sp,16]
-       mov     w19, w0
-       mov     x0, x1
-       str     x1, [x29,40]
-       mov     w1, 0
-       bl      memset
-       bl      rknand_device_lock
-       ldr     x3, [x29,40]
-       add     w1, w19, 256
-       mov     w2, 1
-       mov     w0, 16
-       bl      FtlRead
-       str     x0, [x29,40]
-       bl      rknand_device_unlock
+       adrp    x19, .LANCHOR2
+       add     x19, x19, :lo12:.LANCHOR2
+       strh    wzr, [x0,266]
+       str     wzr, [x0,268]
+       mov     x0, x19
+       bl      FtlRecoverySuperblock
+       mov     x0, x19
+       add     x19, x19, 48
+       bl      FtlSlcSuperblockCheck
+       mov     x0, x19
+       bl      FtlRecoverySuperblock
+       mov     x0, x19
+       bl      FtlSlcSuperblockCheck
+       bl      FtlGcPageRecovery
+       mov     w0, -1
+       bl      decrement_vpc_count
        ldr     x19, [sp,16]
-       ldr     x0, [x29,40]
-       ldp     x29, x30, [sp], 48
+       mov     w0, 0
+       ldp     x29, x30, [sp], 32
        ret
-       .size   StorageSysDataLoad, .-StorageSysDataLoad
+       .size   FtlPowerLostRecovery, .-FtlPowerLostRecovery
        .align  2
-       .global FtlWrite
-       .type   FtlWrite, %function
-FtlWrite:
-       stp     x29, x30, [sp, -320]!
-       uxtb    w0, w0
+       .global FtlSysBlkInit
+       .type   FtlSysBlkInit, %function
+FtlSysBlkInit:
+       stp     x29, x30, [sp, -64]!
        add     x29, sp, 0
-       stp     x23, x24, [sp,48]
-       stp     x25, x26, [sp,64]
        stp     x19, x20, [sp,16]
+       adrp    x20, .LANCHOR0
+       str     x23, [sp,48]
+       add     x20, x20, :lo12:.LANCHOR0
+       adrp    x19, .LANCHOR2
        stp     x21, x22, [sp,32]
-       stp     x27, x28, [sp,80]
-       cmp     w0, 16
-       mov     w23, w1
-       mov     w24, w2
-       mov     x25, x3
-       bne     .L2508
-       add     w0, w1, 256
-       mov     w1, w2
-       mov     x2, x3
-       bl      FtlVendorPartWrite
-       b       .L2509
-.L2508:
-       adrp    x0, :got:g_MaxLbaSector
-       add     w2, w1, w2
-       ldr     x0, [x0, #:got_lo12:g_MaxLbaSector]
-       ldr     w1, [x0]
-       mov     w0, -1
-       cmp     w2, w1
-       bhi     .L2509
-       adrp    x0, :got:g_ftl_nand_free_count
-       adrp    x3, :got:c_ftl_nand_sec_pre_page
-       mov     w1, 2048
-       sub     w2, w2, #1
-       str     x3, [x29,248]
-       ldr     x0, [x0, #:got_lo12:g_ftl_nand_free_count]
-       str     w1, [x0]
-       ldr     x0, [x3, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w1, [x0]
-       udiv    w0, w2, w1
-       cmp     w24, w1, lsl 1
-       str     w0, [x29,220]
-       udiv    w26, w23, w1
-       sub     w27, w0, w26
-       adrp    x0, :got:g_totle_write_page_count
-       add     w21, w27, 1
-       ldr     x0, [x0, #:got_lo12:g_totle_write_page_count]
-       ldr     w2, [x0]
-       add     w2, w21, w2
-       str     w2, [x0]
-       adrp    x0, :got:g_totle_write_sector
-       ldr     x0, [x0, #:got_lo12:g_totle_write_sector]
-       ldr     w2, [x0]
-       add     w2, w24, w2
-       str     w2, [x0]
-       cset    w0, cs
-       cmp     w24, 8
-       str     w0, [x29,236]
-       bhi     .L2547
-       adrp    x19, :got:g_buffer_superblock
-       ldr     x19, [x19, #:got_lo12:g_buffer_superblock]
-       b       .L2510
-.L2547:
-       adrp    x19, :got:g_active_superblock
-       ldr     x19, [x19, #:got_lo12:g_active_superblock]
-.L2510:
-       adrp    x22, :got:g_wr_page_num
-       ldr     x0, [x22, #:got_lo12:g_wr_page_num]
-       ldr     w3, [x0]
-       cbz     w3, .L2511
-       adrp    x0, :got:req_wr_io
-       sub     w3, w3, #1
-       mov     w2, 56
-       adrp    x20, :got:last_cache_match_count
-       ldr     x0, [x0, #:got_lo12:req_wr_io]
-       umull   x3, w3, w2
-       ldr     x0, [x0]
-       add     x3, x0, x3
-       ldr     w0, [x3,24]
-       cmp     w26, w0
-       bne     .L2512
-       adrp    x0, :got:g_totle_cache_write_count
-       ldr     x0, [x0, #:got_lo12:g_totle_cache_write_count]
-       ldr     w2, [x0]
-       add     w2, w2, 1
-       str     w2, [x0]
-       ldr     x28, [x20, #:got_lo12:last_cache_match_count]
-       ldr     w0, [x28]
-       add     w0, w0, 1
-       str     w0, [x28]
-       msub    w0, w26, w1, w23
-       sub     w1, w1, w0
-       ubfiz   x0, x0, 9, 23
-       cmp     w1, w24
-       csel    w19, w1, w24, ls
-       ldr     x1, [x3,8]
-       lsl     w21, w19, 9
-       add     x0, x1, x0
-       mov     w2, w21
-       mov     x1, x25
-       bl      ftl_memcpy
-       cbnz    w27, .L2513
-       ldr     w1, [x28]
-       mov     w0, w27
-       cmp     w1, 2
-       ble     .L2509
-.L2513:
-       add     x25, x25, x21
-       sub     w24, w24, w19
-       add     w23, w23, w19
-       add     w26, w26, 1
-       mov     w21, w27
-.L2512:
-       ldr     x20, [x20, #:got_lo12:last_cache_match_count]
-       adrp    x0, :got:gp_last_act_superblock
-       str     wzr, [x20]
-       ldr     x0, [x0, #:got_lo12:gp_last_act_superblock]
-       ldr     x19, [x0]
-.L2511:
-       ldr     w1, [x29,220]
-       mov     w0, w26
-       bl      FtlCacheMetchLpa
-       cbz     w0, .L2514
-       bl      FtlCacheWriteBack
-.L2514:
-       adrp    x0, :got:gp_last_act_superblock
-       str     x0, [x29,168]
-       str     w26, [x29,232]
-       ldr     x1, [x0, #:got_lo12:gp_last_act_superblock]
-       add     x0, x29, 260
-       str     x0, [x29,144]
-       add     x0, x29, 264
-       str     x0, [x29,240]
-       adrp    x0, .LC118
-       add     x0, x0, :lo12:.LC118
-       str     x19, [x1]
-       str     x0, [x29,136]
-.L2515:
-       cbz     w21, .L2572
-       ldrh    w1, [x19,4]
-       cbnz    w1, .L2516
-       adrp    x0, :got:g_active_superblock
-       adrp    x20, :got:g_active_superblock
-       ldr     x0, [x0, #:got_lo12:g_active_superblock]
-       cmp     x19, x0
-       bne     .L2517
-       adrp    x19, :got:g_buffer_superblock
-       ldr     x0, [x19, #:got_lo12:g_buffer_superblock]
-       ldrh    w27, [x0,4]
-       cbnz    w27, .L2518
-       bl      allocate_new_data_superblock
-       adrp    x0, :got:power_up_flag
-       ldr     x0, [x0, #:got_lo12:power_up_flag]
-       str     w27, [x0]
-.L2518:
-       ldr     x0, [x20, #:got_lo12:g_active_superblock]
-       bl      allocate_new_data_superblock
-       adrp    x0, :got:power_up_flag
-       ldr     x0, [x0, #:got_lo12:power_up_flag]
-       ldr     w0, [x0]
-       cbnz    w0, .L2549
-.L2520:
-       ldr     x19, [x20, #:got_lo12:g_active_superblock]
-       b       .L2519
-.L2517:
-       adrp    x2, :got:power_up_flag
-       ldrh    w0, [x0,4]
-       ldr     x2, [x2, #:got_lo12:power_up_flag]
-       str     w1, [x2]
-       cbnz    w0, .L2520
-       mov     x0, x19
-       bl      allocate_new_data_superblock
-       b       .L2519
-.L2549:
-       ldr     x19, [x19, #:got_lo12:g_buffer_superblock]
-.L2519:
-       ldrh    w0, [x19,4]
-       cbnz    w0, .L2521
-       mov     x0, x19
-       bl      allocate_new_data_superblock
-.L2521:
-       ldr     x0, [x29,168]
-       ldr     x0, [x0, #:got_lo12:gp_last_act_superblock]
-       str     x19, [x0]
-.L2516:
-       adrp    x2, :got:c_wr_page_buf_num
-       ldr     x3, [x22, #:got_lo12:g_wr_page_num]
-       ldrh    w1, [x19,4]
-       str     xzr, [x29,224]
-       ldr     x0, [x2, #:got_lo12:c_wr_page_buf_num]
-       ldr     w3, [x3]
-       str     x2, [x29,160]
-       ldr     w0, [x0]
-       sub     w0, w0, w3
+       add     x21, x19, :lo12:.LANCHOR2
+       ldrh    w0, [x20,1956]
+       bl      FtlFreeSysBlkQueueInit
+       bl      FtlScanSysBlk
+       ldrh    w1, [x21,280]
+       mov     w0, 65535
        cmp     w1, w0
-       csel    w0, w1, w0, ls
-       cmp     w0, w21
-       csel    w0, w0, w21, ls
-       str     w0, [x29,212]
-       ldr     w0, [x29,236]
-       and     w0, w0, 1
-       str     w0, [x29,156]
-       add     w0, w24, w23
-       str     w0, [x29,208]
-.L2522:
-       ldr     w0, [x29,224]
-       ldr     w2, [x29,212]
-       ldr     w1, [x29,232]
-       cmp     w0, w2
-       add     w28, w1, w0
-       bcs     .L2573
-       ldrh    w1, [x19,4]
-       cbz     w1, .L2551
-       ldr     w1, [x29,220]
-       cmp     w28, w1
-       cset    w10, eq
-       cbz     w0, .L2524
-       ldr     w1, [x29,156]
-       tst     w10, w1
-       beq     .L2524
-       ldr     x1, [x29,248]
-       ldr     w2, [x29,208]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w1, [x1]
-       msub    w2, w28, w1, w2
-       cmp     w2, w1
-       bne     .L2551
-.L2524:
-       ldr     x1, [x29,144]
-       mov     w2, 0
-       mov     w0, w28
-       str     x10, [x29,96]
-       bl      log2phys
-       mov     x0, x19
-       bl      get_new_active_ppa
-       ldr     x8, [x22, #:got_lo12:g_wr_page_num]
-       adrp    x4, :got:req_wr_io
-       mov     w7, 56
-       str     x4, [x29,120]
-       str     x8, [x29,104]
-       ldr     x6, [x4, #:got_lo12:req_wr_io]
-       ldr     w9, [x8]
-       str     x7, [x29,112]
-       ldr     x2, [x6]
-       umull   x1, w9, w7
-       str     x6, [x29,128]
-       add     x2, x2, x1
-       str     w0, [x2,4]
-       ldr     x0, [x6]
-       add     x1, x0, x1
-       adrp    x0, :got:c_ftl_nand_byte_pre_oob
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_byte_pre_oob]
-       ldrh    w2, [x0]
-       adrp    x0, :got:p_wr_io_spare_buf
-       ldr     x0, [x0, #:got_lo12:p_wr_io_spare_buf]
-       mul     w5, w2, w9
-       ldr     x0, [x0]
-       and     x3, x5, 4294967292
-       adrp    x5, :got:c_ftl_nand_byte_pre_page
-       str     x0, [x29,176]
-       add     x27, x0, x3
-       str     x27, [x1,16]
-       str     x5, [x29,192]
-       ldr     x20, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
-       str     x3, [x29,184]
-       ldrh    w0, [x20]
-       mul     w0, w0, w9
-       adrp    x9, :got:p_wr_io_data_buf
-       and     x0, x0, 4294967292
-       ldr     x9, [x9, #:got_lo12:p_wr_io_data_buf]
-       str     w28, [x1,24]
-       ldr     x9, [x9]
-       add     x0, x9, x0
-       str     x0, [x1,8]
-       mov     x0, x27
-       mov     w1, 0
-       bl      ftl_memset
-       cmp     w28, w26
-       ldr     x4, [x29,120]
-       cset    w0, eq
-       str     w0, [x29,216]
-       ldr     x5, [x29,192]
-       cbnz    w0, .L2554
-       ldr     x10, [x29,96]
-       ldr     x6, [x29,128]
-       ldr     x7, [x29,112]
-       ldr     x8, [x29,104]
-       cbz     w10, .L2525
-       ldr     x0, [x29,248]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w20, [x0]
-       ldr     w0, [x29,208]
-       msub    w20, w28, w20, w0
-       ldr     w0, [x29,216]
-       str     w0, [x29,192]
-       uxth    w20, w20
-       b       .L2528
-.L2554:
-       ldr     x0, [x29,248]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w20, [x0]
-       udiv    w0, w23, w20
-       msub    w0, w0, w20, w23
-       str     w0, [x29,192]
-       sub     w20, w20, w0
-       cmp     w20, w24
-       csel    w20, w20, w24, ls
-.L2528:
-       ldr     x0, [x29,248]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w0, [x0]
-       cmp     w20, w0
-       bne     .L2529
-       ldr     w0, [x29,216]
-       mov     x1, x25
-       cbnz    w0, .L2530
-       mul     w1, w20, w28
-       sub     w1, w1, w23
-       ubfiz   x1, x1, 9, 23
-       add     x1, x25, x1
-.L2530:
-       ldr     w2, [x29,236]
-       mov     w0, 56
-       cbz     w2, .L2531
-       ldr     x2, [x22, #:got_lo12:g_wr_page_num]
-       ldr     x4, [x4, #:got_lo12:req_wr_io]
-       ldr     w2, [x2]
-       umull   x0, w2, w0
-       ldr     x2, [x4]
-       add     x0, x2, x0
-       str     x1, [x0,8]
-       b       .L2532
-.L2531:
-       ldr     x2, [x22, #:got_lo12:g_wr_page_num]
-       ldr     x4, [x4, #:got_lo12:req_wr_io]
-       ldr     x5, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
-       ldr     w2, [x2]
-       umull   x0, w2, w0
-       ldr     x2, [x4]
-       add     x0, x2, x0
-       ldrh    w2, [x5]
-       ldr     x0, [x0,8]
-       b       .L2571
-.L2529:
-       ldr     w0, [x29,260]
-       cmn     w0, #1
-       beq     .L2533
-       ldr     x1, [x29,240]
-       mov     w2, 56
-       str     x4, [x29,128]
-       str     w28, [x1,24]
-       str     w0, [x1,4]
-       ldr     x0, [x22, #:got_lo12:g_wr_page_num]
-       ldr     x1, [x4, #:got_lo12:req_wr_io]
-       ldr     w0, [x0]
-       ldr     x1, [x1]
-       umull   x0, w0, w2
-       ldr     x2, [x29,240]
-       add     x0, x1, x0
-       ldr     x1, [x0,8]
-       ldr     x0, [x0,16]
-       str     x1, [x2,8]
-       mov     w1, 1
-       str     x0, [x2,16]
-       mov     x0, x2
-       mov     w2, 0
-       bl      FlashReadPages
-       ldr     x0, [x29,240]
-       ldr     x4, [x29,128]
-       ldr     w0, [x0]
-       cmn     w0, #1
-       bne     .L2534
-       adrp    x0, :got:g_sys_ext_data
-       ldr     x0, [x0, #:got_lo12:g_sys_ext_data]
-       ldr     w1, [x0,72]
-       add     w1, w1, 1
-       str     w1, [x0,72]
-       b       .L2536
-.L2534:
-       ldr     w0, [x27,8]
-       cmp     w0, w28
-       beq     .L2536
-       adrp    x0, :got:g_sys_ext_data
-       mov     w2, w28
-       str     x4, [x29,128]
-       ldr     x0, [x0, #:got_lo12:g_sys_ext_data]
-       ldr     w1, [x0,72]
-       add     w1, w1, 1
-       str     w1, [x0,72]
-       ldr     x0, [x29,136]
-       ldr     w1, [x27,8]
-       bl      printk
-       b       .L2570
-.L2533:
-       ldr     x0, [x22, #:got_lo12:g_wr_page_num]
-       mov     w1, 56
-       ldr     x5, [x5, #:got_lo12:c_ftl_nand_byte_pre_page]
-       str     x4, [x29,128]
-       ldr     w0, [x0]
-       ldrh    w2, [x5]
-       umull   x0, w0, w1
-       ldr     x1, [x4, #:got_lo12:req_wr_io]
-       ldr     x1, [x1]
-       add     x0, x1, x0
-       mov     w1, 0
-       ldr     x0, [x0,8]
-       bl      ftl_memset
-.L2570:
-       ldr     x4, [x29,128]
-.L2536:
-       ldr     w1, [x29,216]
-       mov     w0, 56
-       lsl     w2, w20, 9
-       cbz     w1, .L2537
-       ldr     x1, [x22, #:got_lo12:g_wr_page_num]
-       ldr     x4, [x4, #:got_lo12:req_wr_io]
-       ldr     w5, [x1]
-       ldr     x4, [x4]
-       umull   x0, w5, w0
-       add     x4, x4, x0
-       ldr     x0, [x29,192]
-       ubfiz   x0, x0, 9, 23
-       ldr     x1, [x4,8]
-       add     x0, x1, x0
-       mov     x1, x25
-       b       .L2571
-.L2537:
-       ldr     x1, [x22, #:got_lo12:g_wr_page_num]
-       ldr     x4, [x4, #:got_lo12:req_wr_io]
-       ldr     w5, [x1]
-       ldr     x1, [x4]
-       umull   x0, w5, w0
-       add     x0, x1, x0
-       ldr     x1, [x29,248]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldr     x0, [x0,8]
-       ldrh    w1, [x1]
-       mul     w1, w28, w1
-       sub     w1, w1, w23
-       ubfiz   x1, x1, 9, 23
-       add     x1, x25, x1
-       b       .L2571
-.L2525:
-       ldr     w0, [x29,236]
-       ldr     w1, [x8]
-       cbz     w0, .L2538
-       umull   x0, w1, w7
-       ldr     x1, [x6]
-       add     x1, x1, x0
-       ldr     x0, [x29,248]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w0, [x0]
-       mul     w0, w28, w0
-       sub     w0, w0, w23
-       ubfiz   x0, x0, 9, 23
-       add     x0, x25, x0
-       str     x0, [x1,8]
-       b       .L2532
-.L2538:
-       umull   x0, w1, w7
-       ldr     x1, [x6]
-       ldrh    w2, [x20]
-       add     x0, x1, x0
-       ldr     x1, [x29,248]
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldr     x0, [x0,8]
-       ldrh    w1, [x1]
-       mul     w1, w28, w1
-       sub     w1, w1, w23
-       ubfiz   x1, x1, 9, 23
-       add     x1, x25, x1
-.L2571:
-       bl      ftl_memcpy
-.L2532:
-       ldr     x1, [x29,176]
-       mov     w0, -3947
-       ldr     x2, [x29,184]
-       strh    w0, [x1,x2]
-       adrp    x1, :got:g_GlobalDataVersion
-       ldr     x1, [x1, #:got_lo12:g_GlobalDataVersion]
-       str     w28, [x27,8]
-       ldr     w0, [x1]
-       str     w0, [x27,4]
+       bne     .L2661
+.L2663:
+       mov     w22, -1
+       b       .L2662
+.L2661:
+       bl      FtlLoadSysInfo
+       mov     w22, w0
+       cbnz    w0, .L2663
+       bl      FtlLoadMapInfo
+       bl      FtlLoadVonderInfo
+       bl      Ftl_load_ext_data
+       bl      FtlLoadEctTbl
+       bl      FtlFreeSysBLkSort
+       bl      SupperBlkListInit
+       bl      FtlPowerLostRecovery
+       ldrh    w2, [x20,2066]
+       mov     x1, 0
+       ldr     x0, [x21,144]
+.L2664:
+       cmp     w1, w2
+       mov     w3, w1
+       bge     .L2668
+       add     x4, x0, x1, lsl 4
+       add     x1, x1, 1
+       ldr     w4, [x4,4]
+       tbz     w4, #31, .L2664
+.L2668:
+       add     x1, x19, :lo12:.LANCHOR2
+       cmp     w3, w2
+       adrp    x21, .LANCHOR4
+       ldrh    w0, [x1,252]
        add     w0, w0, 1
-       cmn     w0, #1
-       csel    w0, w0, wzr, ne
-       str     w0, [x1]
-       ldr     w0, [x29,260]
-       str     w0, [x27,12]
-       ldrh    w0, [x19]
-       strh    w0, [x27,2]
-       ldr     x1, [x22, #:got_lo12:g_wr_page_num]
-       ldr     w0, [x1]
+       strh    w0, [x1,252]
+       blt     .L2665
+       add     x0, x21, :lo12:.LANCHOR4
+       ldrh    w0, [x0,266]
+       cbz     w0, .L2669
+.L2665:
+       add     x20, x19, :lo12:.LANCHOR2
+       mov     x0, x20
+       bl      FtlSuperblockPowerLostFix
+       add     x0, x20, 48
+       bl      FtlSuperblockPowerLostFix
+       add     x0, x20, 2240
+       bl      FtlMapBlkWriteDumpData
+       add     x0, x21, :lo12:.LANCHOR4
+       add     x0, x0, 200
+       bl      FtlMapBlkWriteDumpData
+       ldrh    w0, [x20,254]
        add     w0, w0, 1
-       str     w0, [x1]
-       ldr     x0, [x29,224]
-       add     x0, x0, 1
-       str     x0, [x29,224]
-       b       .L2522
-.L2573:
-       str     w28, [x29,232]
-       mov     x0, x2
-       b       .L2523
-.L2551:
-       str     w28, [x29,232]
-.L2523:
-       sub     w21, w21, w0
-       ldr     w0, [x29,236]
-       cbnz    w0, .L2542
-       ldr     x0, [x29,160]
-       ldr     x1, [x22, #:got_lo12:g_wr_page_num]
-       ldr     x0, [x0, #:got_lo12:c_wr_page_buf_num]
-       ldr     w1, [x1]
-       ldr     w0, [x0]
-       cmp     w1, w0
-       bcs     .L2542
-       ldrh    w0, [x19,4]
-       cbz     w0, .L2542
-.L2544:
-       str     wzr, [x29,236]
-       b       .L2543
-.L2542:
-       bl      FtlCacheWriteBack
-       ldr     x0, [x22, #:got_lo12:g_wr_page_num]
-       cmp     w21, 3
-       str     wzr, [x0]
-       bls     .L2544
-.L2543:
-       bl      rknand_queue_cond_resched
-       b       .L2515
-.L2572:
-       ldr     w1, [x29,220]
-       mov     w0, w21
-       sub     w1, w1, w26
-       bl      rk_ftl_garbage_collect
-       mov     w0, w21
-.L2509:
+       strh    w0, [x20,254]
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+       bl      FtlVpcTblFlush
+.L2669:
+       mov     w0, 1
+       add     x20, x19, :lo12:.LANCHOR2
+       bl      FtlUpdateVaildLpn
+       ldrh    w0, [x19,#:lo12:.LANCHOR2]
+       mov     w1, 65535
+       cmp     w0, w1
+       beq     .L2670
+       ldrh    w1, [x20,4]
+       cbnz    w1, .L2670
+       ldrh    w1, [x20,52]
+       add     x23, x20, 48
+       cbnz    w1, .L2670
+       bl      FtlGcRefreshBlock
+       ldrh    w0, [x20,48]
+       bl      FtlGcRefreshBlock
+       mov     x0, x20
+       bl      allocate_new_data_superblock
+       mov     x0, x23
+       bl      allocate_new_data_superblock
+       add     x0, x21, :lo12:.LANCHOR4
+       add     x0, x0, 200
+       bl      FtlMapBlkWriteDumpData
+.L2670:
+       add     x19, x19, :lo12:.LANCHOR2
+       ldrh    w0, [x19,252]
+       and     w0, w0, 31
+       cbnz    w0, .L2662
+       bl      FtlVpcCheckAndModify
+.L2662:
+       mov     w0, w22
+       ldr     x23, [sp,48]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
-       ldp     x23, x24, [sp,48]
-       ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 320
+       ldp     x29, x30, [sp], 64
        ret
-       .size   FtlWrite, .-FtlWrite
+       .size   FtlSysBlkInit, .-FtlSysBlkInit
        .align  2
-       .global StorageSysDataStore
-       .type   StorageSysDataStore, %function
-StorageSysDataStore:
-       stp     x29, x30, [sp, -48]!
+       .global FtlInit
+       .type   FtlInit, %function
+FtlInit:
+       stp     x29, x30, [sp, -32]!
+       adrp    x1, .LC74
        add     x29, sp, 0
-       str     x19, [sp,16]
-       mov     w19, w0
-       str     x1, [x29,40]
-       bl      rknand_device_lock
-       ldr     x3, [x29,40]
-       add     w1, w19, 256
-       mov     w2, 1
-       mov     w0, 16
-       bl      FtlWrite
-       str     x0, [x29,40]
-       bl      rknand_device_unlock
-       ldr     x19, [sp,16]
-       ldr     x0, [x29,40]
-       ldp     x29, x30, [sp], 48
+       stp     x19, x20, [sp,16]
+       adrp    x19, .LANCHOR1
+       mov     x20, x0
+       add     x19, x19, :lo12:.LANCHOR1
+       mov     w0, -1
+       add     x1, x1, :lo12:.LC74
+       str     w0, [x19,532]
+       adrp    x0, .LANCHOR4+420
+       str     wzr, [x0,#:lo12:.LANCHOR4+420]
+       adrp    x0, .LC73
+       add     x0, x0, :lo12:.LC73
+       bl      printk
+       mov     x0, x20
+       bl      FtlConstantsInit
+       bl      FtlMemInit
+       bl      FtlVariablesInit
+       adrp    x0, .LANCHOR0+1956
+       ldrh    w0, [x0,#:lo12:.LANCHOR0+1956]
+       bl      FtlFreeSysBlkQueueInit
+       bl      FtlLoadBbt
+       cbnz    w0, .L2678
+       bl      FtlSysBlkInit
+       cbnz    w0, .L2678
+       mov     w0, 1
+       str     w0, [x19,532]
+.L2678:
+       mov     w0, 0
+       ldp     x19, x20, [sp,16]
+       ldp     x29, x30, [sp], 32
        ret
-       .size   StorageSysDataStore, .-StorageSysDataStore
+       .size   FtlInit, .-FtlInit
        .align  2
-       .type   FlashReadFacBbtData.part.16, %function
-FlashReadFacBbtData.part.16:
+       .global rk_ftl_init
+       .type   rk_ftl_init, %function
+rk_ftl_init:
        stp     x29, x30, [sp, -32]!
-       mov     w3, 0
-       adrp    x4, :got:gFlashPageBuffer0
+       mov     w0, 2048
        add     x29, sp, 0
        str     x19, [sp,16]
-       mov     x19, x0
-       cbnz    w1, .L2578
-       adrp    x1, :got:gNandFlashIdbBlockAddr
-       mov     w7, 1
-.L2581:
-       ldr     x0, [x1, #:got_lo12:gNandFlashIdbBlockAddr]
-       ldr     w0, [x0]
-       cmp     w3, w0
-       bcs     .L2578
-       ldr     x0, [x4, #:got_lo12:gFlashPageBuffer0]
-       ubfx    x5, x3, 5, 11
-       lsl     x5, x5, 2
-       lsl     w6, w7, w3
-       add     w3, w3, 1
-       ldr     x0, [x0]
-       uxth    w3, w3
-       ldr     w8, [x0,x5]
-       orr     w6, w8, w6
-       str     w6, [x0,x5]
-       b       .L2581
-.L2578:
-       ldr     x4, [x4, #:got_lo12:gFlashPageBuffer0]
-       mov     x0, x19
-       ldr     x1, [x4]
-       bl      ftl_memcpy
-       mov     w2, 4
+       adrp    x19, .LANCHOR4
+       add     x19, x19, :lo12:.LANCHOR4
+       bl      ftl_malloc
+       add     x1, x19, 432
+       str     x0, [x19,424]
+       add     x0, x19, 32
+       str     xzr, [x19,32]
+       str     xzr, [x19,432]
+       bl      rknand_get_reg_addr
+       ldr     x1, [x19,32]
+       mov     w0, -1
+       cbz     x1, .L2681
+       bl      rk_nandc_irq_init
+       mov     w1, 0
+       ldr     x0, [x19,424]
+       mov     w2, w1
+       mov     w3, 2048
+       bl      FlashSramLoadStore
+       bl      rknand_flash_cs_init
+       ldr     x0, [x19,32]
+       bl      FlashInit
+       mov     w19, w0
+       cbnz    w0, .L2682
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       add     x0, x0, 168
+       bl      FtlInit
+.L2682:
        adrp    x0, .LC119
-       mov     x1, x19
+       mov     w1, w19
        add     x0, x0, :lo12:.LC119
-       mov     w3, w2
-       bl      rknand_print_hex
+       bl      printk
+       mov     w0, w19
+.L2681:
        ldr     x19, [sp,16]
-       mov     w0, 0
        ldp     x29, x30, [sp], 32
        ret
-       .size   FlashReadFacBbtData.part.16, .-FlashReadFacBbtData.part.16
+       .size   rk_ftl_init, .-rk_ftl_init
        .align  2
-       .global FlashReadFacBbtData
-       .type   FlashReadFacBbtData, %function
-FlashReadFacBbtData:
-       adrp    x4, :got:gNandPhyInfo
-       stp     x29, x30, [sp, -160]!
+       .global Ftl_get_new_temp_ppa
+       .type   Ftl_get_new_temp_ppa, %function
+Ftl_get_new_temp_ppa:
+       stp     x29, x30, [sp, -32]!
        add     x29, sp, 0
-       ldr     x4, [x4, #:got_lo12:gNandPhyInfo]
        stp     x19, x20, [sp,16]
-       stp     x21, x22, [sp,32]
-       stp     x23, x24, [sp,48]
-       stp     x25, x26, [sp,64]
-       str     x27, [sp,80]
-       mov     x22, x0
-       mov     w24, w1
-       mov     w26, w2
-       ldrh    w0, [x4,14]
-       add     x23, x29, 104
-       ldrh    w3, [x4,12]
-       adrp    x4, :got:gFlashSpareBuffer
-       mov     x21, x4
-       mov     w27, 61664
-       mul     w3, w3, w0
-       adrp    x0, :got:gFlashPageBuffer0
-       uxth    w3, w3
-       ldr     x0, [x0, #:got_lo12:gFlashPageBuffer0]
-       sub     w20, w3, #1
-       mul     w25, w1, w3
-       uxth    w20, w20
-       sub     w19, w3, #16
-       ldr     x0, [x0]
-       str     x0, [x29,112]
-       ldr     x0, [x4, #:got_lo12:gFlashSpareBuffer]
-       ldr     x0, [x0]
-       str     x0, [x29,120]
-.L2583:
-       cmp     w20, w19
-       ble     .L2591
-       add     w0, w20, w25
-       mov     w1, 1
-       lsl     w0, w0, 10
-       mov     w2, w1
-       str     w0, [x23,4]
-       mov     x0, x23
-       bl      FlashReadPages
-       ldr     w0, [x23]
-       cmn     w0, #1
-       beq     .L2584
-       ldr     x0, [x21, #:got_lo12:gFlashSpareBuffer]
-       ldr     x0, [x0]
-       ldrh    w0, [x0]
-       cmp     w0, w27
-       bne     .L2584
-       mov     w0, w22
-       cbz     x22, .L2585
-       mov     x0, x22
-       mov     w1, w24
-       mov     w2, w26
-       bl      FlashReadFacBbtData.part.16
-       b       .L2585
-.L2584:
-       sub     w20, w20, #1
-       uxth    w20, w20
-       b       .L2583
-.L2591:
-       mov     w0, -1
-.L2585:
+       adrp    x19, .LANCHOR2
+       add     x0, x19, :lo12:.LANCHOR2
+       add     x1, x0, 96
+       ldrh    w2, [x0,96]
+       mov     w0, 65535
+       cmp     w2, w0
+       beq     .L2686
+       ldrh    w0, [x1,4]
+       cbnz    w0, .L2687
+.L2686:
+       bl      FtlCacheWriteBack
+       add     x20, x19, :lo12:.LANCHOR2
+       mov     w0, 0
+       bl      FtlGcFreeTempBlock
+       strb    wzr, [x20,104]
+       add     x0, x20, 96
+       bl      allocate_data_superblock
+       strh    wzr, [x20,924]
+       strh    wzr, [x20,936]
+       bl      l2p_flush
+       bl      FtlVpcTblFlush
+       mov     w0, 0
+       bl      FtlEctTblFlush
+.L2687:
+       add     x0, x19, :lo12:.LANCHOR2
+       add     x0, x0, 96
+       bl      get_new_active_ppa
        ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
-       ldp     x23, x24, [sp,48]
-       ldp     x25, x26, [sp,64]
-       ldr     x27, [sp,80]
-       ldp     x29, x30, [sp], 160
+       ldp     x29, x30, [sp], 32
        ret
-       .size   FlashReadFacBbtData, .-FlashReadFacBbtData
+       .size   Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
        .align  2
-       .global FlashGetBadBlockList
-       .type   FlashGetBadBlockList, %function
-FlashGetBadBlockList:
-       adrp    x2, :got:gpNandParaInfo
-       stp     x29, x30, [sp, -48]!
+       .global rk_ftl_cache_write_back
+       .type   rk_ftl_cache_write_back, %function
+rk_ftl_cache_write_back:
+       stp     x29, x30, [sp, -16]!
        add     x29, sp, 0
-       ldr     x2, [x2, #:got_lo12:gpNandParaInfo]
-       stp     x19, x20, [sp,16]
-       str     x21, [sp,32]
-       mov     x21, x0
-       adrp    x20, :got:gFlashPageBuffer1
-       ldr     x0, [x2]
-       ldrb    w2, [x0,13]
-       ldrh    w19, [x0,14]
-       ldr     x0, [x20, #:got_lo12:gFlashPageBuffer1]
-       mul     w19, w2, w19
-       ldr     x0, [x0]
-       uxth    w19, w19
-       add     w2, w19, 7
-       lsr     w2, w2, 3
-       bl      FlashReadFacBbtData
-       cmn     w0, #1
-       bne     .L2593
-.L2597:
-       mov     w1, 0
-       b       .L2594
-.L2593:
-       mov     w2, 0
-       lsr     w0, w19, 4
-       mov     w1, w2
-       sub     w19, w19, #1
-       mov     w5, 1
-.L2595:
-       cmp     w2, w19
-       bge     .L2594
-       ldr     x3, [x20, #:got_lo12:gFlashPageBuffer1]
-       ubfx    x4, x2, 5, 11
-       ldr     x6, [x3]
-       lsl     w3, w5, w2
-       ldr     w4, [x6,x4,lsl 2]
-       tst     w3, w4
-       beq     .L2596
-       add     w3, w1, 1
-       ubfiz   x1, x1, 1, 16
-       strh    w2, [x21,x1]
-       uxth    w1, w3
-.L2596:
-       cmp     w1, w0
-       bcs     .L2597
-       add     w2, w2, 1
-       uxth    w2, w2
-       b       .L2595
-.L2594:
-       ubfiz   x1, x1, 1, 16
-       mov     w0, -1
-       ldp     x19, x20, [sp,16]
-       strh    w0, [x21,x1]
-       mov     w0, 0
-       ldr     x21, [sp,32]
-       ldp     x29, x30, [sp], 48
+       bl      FtlCacheWriteBack
+       ldp     x29, x30, [sp], 16
        ret
-       .size   FlashGetBadBlockList, .-FlashGetBadBlockList
+       .size   rk_ftl_cache_write_back, .-rk_ftl_cache_write_back
        .align  2
-       .global FtlMakeBbt
-       .type   FtlMakeBbt, %function
-FtlMakeBbt:
-       stp     x29, x30, [sp, -96]!
+       .global FtlRead
+       .type   FtlRead, %function
+FtlRead:
+       stp     x29, x30, [sp, -192]!
+       uxtb    w0, w0
        add     x29, sp, 0
        stp     x19, x20, [sp,16]
-       adrp    x19, :got:gBbtInfo
+       mov     w20, w1
+       adrp    x1, __stack_chk_guard
+       stp     x27, x28, [sp,80]
+       mov     w28, w2
+       cmp     w0, 16
+       ldr     x2, [x1,#:lo12:__stack_chk_guard]
+       stp     x25, x26, [sp,64]
        stp     x21, x22, [sp,32]
        stp     x23, x24, [sp,48]
-       stp     x25, x26, [sp,64]
-       stp     x27, x28, [sp,80]
-       bl      FtlBbtMemInit
-       mov     w21, 0
-       bl      FtlLoadFactoryBbt
-       ldr     x22, [x19, #:got_lo12:gBbtInfo]
-       adrp    x25, :got:c_ftl_nand_blks_per_die
-       mov     x23, x22
-.L2603:
-       adrp    x0, :got:c_ftl_nand_die_num
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_die_num]
-       ldrh    w0, [x0]
-       cmp     w21, w0
-       bcs     .L2621
-       adrp    x0, :got:p_sys_data_buf
-       adrp    x1, :got:req_sys
-       ldrh    w26, [x23,12]
-       ldr     x0, [x0, #:got_lo12:p_sys_data_buf]
-       ldr     x20, [x1, #:got_lo12:req_sys]
-       adrp    x1, :got:p_sys_spare_buf
-       ldr     x0, [x0]
-       str     x0, [x20,8]
-       ldr     x1, [x1, #:got_lo12:p_sys_spare_buf]
-       ldr     x24, [x1]
-       mov     w1, 65535
-       str     x24, [x20,16]
-       cmp     w26, w1
-       beq     .L2604
-       ldr     x24, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldrh    w1, [x24]
-       madd    w26, w21, w1, w26
-       mov     w1, 1
-       lsl     w0, w26, 10
-       mov     w2, w1
-       str     w0, [x20,4]
-       mov     x0, x20
-       bl      FlashReadPages
-       ldrh    w2, [x24]
-       ldr     x0, [x22,32]
-       add     w2, w2, 7
-       ldr     x1, [x20,8]
-       lsr     w2, w2, 3
-       bl      ftl_memcpy
-       b       .L2605
-.L2604:
-       mov     w1, w21
-       adrp    x28, :got:c_ftl_nand_bbm_buf_size
-       bl      FlashGetBadBlockList
-       ldr     x0, [x20,8]
-       ldr     x1, [x22,32]
-       bl      FtlBbt2Bitmap
-       ldr     x0, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldrh    w20, [x0]
-       sub     w20, w20, #1
-       uxth    w20, w20
-.L2606:
-       ldr     x26, [x25, #:got_lo12:c_ftl_nand_blks_per_die]
-       ldrh    w0, [x26]
-       madd    w0, w21, w0, w20
-       bl      FtlBbmIsBadBlock
-       cmp     w0, 1
-       bne     .L2622
-       sub     w20, w20, #1
-       uxth    w20, w20
-       b       .L2606
-.L2622:
-       adrp    x0, :got:p_sys_spare_buf
-       strh    w20, [x23,12]
+       str     x2, [x29,184]
+       mov     x26, x3
+       str     x1, [x29,112]
+       bne     .L2690
+       add     w0, w20, 256
+       mov     w1, w28
+       mov     x2, x3
+       bl      FtlVendorPartRead
+       b       .L2691
+.L2690:
+       adrp    x21, .LANCHOR0
+       add     w0, w20, w28
+       add     x1, x21, :lo12:.LANCHOR0
+       str     w0, [x29,168]
+       mov     w0, -1
+       ldr     w3, [x29,168]
+       ldr     w2, [x1,2068]
+       cmp     w3, w2
+       bhi     .L2691
+       ldrh    w0, [x1,2032]
+       sub     w25, w3, #1
+       adrp    x19, .LANCHOR2
+       udiv    w1, w20, w0
+       str     w1, [x29,172]
+       udiv    w25, w25, w0
+       ldr     w0, [x29,172]
+       sub     w24, w25, w0
+       add     x0, x19, :lo12:.LANCHOR2
+       add     w24, w24, 1
+       ldr     w1, [x0,192]
+       add     w1, w28, w1
+       str     w1, [x0,192]
+       ldr     w1, [x0,164]
+       add     w1, w24, w1
+       str     w1, [x0,164]
+       ldr     w0, [x29,172]
+       mov     w1, w25
+       bl      FtlCacheMetchLpa
+       cbz     w0, .L2692
+       bl      FtlCacheWriteBack
+.L2692:
+       mov     w27, 0
+       ldr     w22, [x29,172]
+       str     w27, [x29,156]
+       mov     w23, w27
+       str     w27, [x29,152]
+.L2693:
+       cbz     w24, .L2736
+       mov     w0, w22
+       add     x1, x29, 180
+       mov     w2, 0
+       bl      log2phys
+       ldr     w3, [x29,180]
+       cmn     w3, #1
+       bne     .L2733
+       mov     w3, 0
+.L2694:
+       add     x0, x21, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2032]
+       cmp     w3, w0
+       bcs     .L2698
+       madd    w0, w22, w0, w3
+       cmp     w0, w20
+       bcc     .L2696
+       ldr     w1, [x29,168]
+       cmp     w0, w1
+       bcs     .L2696
+       sub     w0, w0, w20
        mov     w1, 0
-       mov     w2, 16
-       ldr     x0, [x0, #:got_lo12:p_sys_spare_buf]
-       ldr     x0, [x0]
+       ubfiz   x0, x0, 9, 23
+       mov     w2, 512
+       add     x0, x26, x0
+       str     x3, [x29,160]
        bl      ftl_memset
-       str     wzr, [x24,4]
-       mov     w0, -3872
-       strh    w0, [x24]
-       ldrh    w0, [x23,12]
-       strh    w0, [x24,2]
-       ldrh    w0, [x26]
-       ldrh    w1, [x23,12]
-       madd    w26, w21, w0, w1
-       adrp    x0, :got:req_sys
-       ldr     x1, [x22,32]
-       ldr     x27, [x0, #:got_lo12:req_sys]
-       lsl     w0, w26, 10
-       str     w0, [x27,4]
-       ldr     x0, [x28, #:got_lo12:c_ftl_nand_bbm_buf_size]
-       ldrh    w2, [x0]
-       ldr     x0, [x27,8]
-       lsl     w2, w2, 2
-       bl      ftl_memcpy
-       mov     w1, 1
-       mov     x0, x27
-       bl      FlashEraseBlocks
-       mov     w1, 1
-       mov     x0, x27
-       mov     w2, w1
-       mov     w3, w1
-       bl      FlashProgPages
-       ldr     w0, [x27]
-       cmn     w0, #1
-       bne     .L2605
-       mov     w0, w26
-       bl      FtlBbmMapBadBlock
-       b       .L2606
-.L2605:
-       mov     w0, w26
-       add     w21, w21, 1
-       add     x22, x22, 8
-       add     x23, x23, 2
-       bl      FtlBbmMapBadBlock
-       b       .L2603
-.L2621:
-       mov     w20, 0
-       adrp    x21, :got:c_ftl_nand_reserved_blks
-.L2610:
-       ldr     x0, [x21, #:got_lo12:c_ftl_nand_reserved_blks]
-       ldrh    w0, [x0]
-       cmp     w0, w20
-       bls     .L2623
-       mov     w0, w20
-       add     w20, w20, 1
-       bl      FtlBbmMapBadBlock
-       uxth    w20, w20
-       b       .L2610
-.L2623:
-       ldr     x0, [x19, #:got_lo12:gBbtInfo]
-       mov     w22, 65535
-       ldrh    w20, [x0,12]
-       sub     w20, w20, #1
-       uxth    w20, w20
-.L2612:
-       ldr     x21, [x19, #:got_lo12:gBbtInfo]
-       ldrh    w0, [x21,12]
-       sub     w0, w0, #48
-       cmp     w20, w0
-       ble     .L2616
-       mov     w0, w20
-       bl      FtlBbmIsBadBlock
-       cmp     w0, 1
-       beq     .L2613
-       mov     w0, w20
-       bl      FlashTestBlk
-       cbz     w0, .L2614
-       mov     w0, w20
-       bl      FtlBbmMapBadBlock
-       b       .L2613
-.L2614:
-       ldrh    w0, [x21]
-       cmp     w0, w22
-       bne     .L2615
-       strh    w20, [x21]
-       b       .L2613
-.L2615:
-       strh    w20, [x21,4]
-       b       .L2616
-.L2613:
-       sub     w20, w20, #1
-       uxth    w20, w20
-       b       .L2612
-.L2616:
-       ldr     x19, [x19, #:got_lo12:gBbtInfo]
-       adrp    x0, :got:req_erase
-       str     wzr, [x19,8]
-       strh    wzr, [x19,2]
-       ldrh    w1, [x19]
-       ldr     x0, [x0, #:got_lo12:req_erase]
-       lsl     w1, w1, 10
-       ldr     x2, [x0]
-       str     w1, [x2,4]
-       ldrh    w1, [x19,4]
-       ldr     x0, [x0]
-       lsl     w1, w1, 10
-       str     w1, [x0,60]
-       mov     w1, 2
-       bl      FlashEraseBlocks
-       ldrh    w0, [x19]
-       bl      FtlBbmMapBadBlock
-       ldrh    w0, [x19,4]
-       bl      FtlBbmMapBadBlock
-       bl      FtlBbmTblFlush
-       strh    wzr, [x19,2]
-       ldr     w0, [x19,8]
-       ldrh    w1, [x19,4]
-       add     w0, w0, 1
-       str     w0, [x19,8]
-       ldrh    w0, [x19]
-       strh    w0, [x19,4]
-       strh    w1, [x19]
-       bl      FtlBbmTblFlush
-       mov     w0, 0
+       ldr     x3, [x29,160]
+.L2696:
+       add     w3, w3, 1
+       b       .L2694
+.L2733:
+       mov     w0, 56
+       umull   x1, w23, w0
+       add     x0, x19, :lo12:.LANCHOR2
+       ldr     x2, [x0,2048]
+       add     x2, x2, x1
+       str     w3, [x2,4]
+       ldr     w2, [x29,172]
+       cmp     w22, w2
+       ldr     x2, [x0,2048]
+       add     x2, x2, x1
+       bne     .L2699
+       ldr     x0, [x0,2096]
+       str     x0, [x2,8]
+       add     x0, x21, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2032]
+       udiv    w3, w20, w0
+       msub    w3, w3, w0, w20
+       str     w3, [x29,128]
+       sub     w3, w0, w3
+       cmp     w3, w28
+       csel    w3, w3, w28, ls
+       str     w3, [x29,156]
+       cmp     w3, w0
+       bne     .L2700
+       str     x26, [x2,8]
+       b       .L2700
+.L2699:
+       cmp     w22, w25
+       bne     .L2701
+       ldr     x0, [x0,2104]
+       str     x0, [x2,8]
+       add     x0, x21, :lo12:.LANCHOR0
+       ldr     w4, [x29,168]
+       ldrh    w3, [x0,2032]
+       mul     w0, w22, w3
+       sub     w27, w4, w0
+       cmp     w27, w3
+       bne     .L2700
+       b       .L2734
+.L2701:
+       add     x0, x21, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2032]
+       mul     w0, w22, w0
+.L2734:
+       sub     w0, w0, w20
+       ubfiz   x0, x0, 9, 23
+       add     x0, x26, x0
+       str     x0, [x2,8]
+.L2700:
+       add     x2, x19, :lo12:.LANCHOR2
+       ldr     x0, [x2,2048]
+       ldr     x2, [x2,2120]
+       add     x1, x0, x1
+       add     x0, x21, :lo12:.LANCHOR0
+       ldrh    w0, [x0,2038]
+       str     w22, [x1,24]
+       mul     w0, w23, w0
+       add     w23, w23, 1
+       and     x0, x0, 4294967292
+       add     x0, x2, x0
+       str     x0, [x1,16]
+.L2698:
+       subs    w24, w24, #1
+       add     w22, w22, 1
+       beq     .L2702
+       add     x0, x21, :lo12:.LANCHOR0
+       ldrh    w0, [x0,1952]
+       cmp     w23, w0, lsl 3
+       bne     .L2693
+.L2702:
+       cbz     w23, .L2693
+       add     x0, x19, :lo12:.LANCHOR2
+       mov     w1, w23
+       mov     w2, 0
+       ldr     x0, [x0,2048]
+       bl      FlashReadPages
+       str     xzr, [x29,160]
+       ldr     x0, [x29,128]
+       ubfiz   x0, x0, 9, 23
+       str     x0, [x29,144]
+       ldr     w0, [x29,156]
+       lsl     w0, w0, 9
+       str     w0, [x29,124]
+       lsl     w0, w27, 9
+       str     w0, [x29,120]
+.L2704:
+       ldr     w0, [x29,160]
+       cmp     w23, w0
+       bls     .L2737
+       ldr     x0, [x29,160]
+       add     x2, x19, :lo12:.LANCHOR2
+       mov     x1, 56
+       ldr     w4, [x29,172]
+       mul     x3, x0, x1
+       ldr     x0, [x2,2048]
+       add     x0, x0, x3
+       ldr     w1, [x0,24]
+       cmp     w1, w4
+       bne     .L2705
+       ldr     x1, [x0,8]
+       ldr     x0, [x2,2096]
+       cmp     x1, x0
+       bne     .L2706
+       ldr     x2, [x29,144]
+       mov     x0, x26
+       str     x3, [x29,104]
+       add     x1, x1, x2
+       ldr     w2, [x29,124]
+       b       .L2735
+.L2705:
+       cmp     w1, w25
+       bne     .L2706
+       ldr     x1, [x0,8]
+       ldr     x0, [x2,2104]
+       cmp     x1, x0
+       bne     .L2706
+       add     x0, x21, :lo12:.LANCHOR0
+       ldr     w2, [x29,120]
+       str     x3, [x29,104]
+       ldrh    w0, [x0,2032]
+       mul     w0, w25, w0
+       sub     w0, w0, w20
+       ubfiz   x0, x0, 9, 23
+       add     x0, x26, x0
+.L2735:
+       bl      ftl_memcpy
+       ldr     x3, [x29,104]
+.L2706:
+       add     x0, x19, :lo12:.LANCHOR2
+       ldr     x1, [x0,2048]
+       add     x5, x1, x3
+       ldr     w4, [x1,x3]
+       cmn     w4, #1
+       bne     .L2707
+       ldr     w2, [x0,424]
+       str     w4, [x29,152]
+       add     w2, w2, 1
+       str     w2, [x0,424]
+.L2707:
+       ldr     w0, [x1,x3]
+       cmp     w0, 256
+       bne     .L2708
+       ldr     w0, [x5,4]
+       lsr     x0, x0, 10
+       bl      P2V_block_in_plane
+       bl      FtlGcRefreshBlock
+.L2708:
+       ldr     x0, [x29,160]
+       add     x0, x0, 1
+       str     x0, [x29,160]
+       b       .L2704
+.L2737:
+       mov     w23, 0
+       b       .L2693
+.L2736:
+       add     x19, x19, :lo12:.LANCHOR2
+       ldrh    w0, [x19,956]
+       cbz     w0, .L2711
+       mov     w0, w24
+       mov     w1, 1
+       bl      rk_ftl_garbage_collect
+.L2711:
+       ldr     w0, [x29,152]
+.L2691:
+       ldr     x1, [x29,112]
+       ldr     x2, [x29,184]
+       ldr     x1, [x1,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2712
+       bl      __stack_chk_fail
+.L2712:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
        ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 96
+       ldp     x29, x30, [sp], 192
        ret
-       .size   FtlMakeBbt, .-FtlMakeBbt
+       .size   FtlRead, .-FtlRead
        .align  2
-       .global FtlLowFormat
-       .type   FtlLowFormat, %function
-FtlLowFormat:
-       stp     x29, x30, [sp, -80]!
+       .global FtlWrite
+       .type   FtlWrite, %function
+FtlWrite:
+       stp     x29, x30, [sp, -288]!
+       uxtb    w0, w0
        add     x29, sp, 0
-       stp     x19, x20, [sp,16]
-       adrp    x19, :got:g_GlobalSysVersion
-       str     x25, [sp,64]
        stp     x23, x24, [sp,48]
-       stp     x21, x22, [sp,32]
-       ldr     x0, [x19, #:got_lo12:g_GlobalSysVersion]
-       adrp    x23, :got:c_ftl_nand_max_sys_blks
-       str     wzr, [x0]
-       adrp    x0, :got:g_GlobalDataVersion
-       ldr     x0, [x0, #:got_lo12:g_GlobalDataVersion]
-       str     wzr, [x0]
-       ldr     x0, [x23, #:got_lo12:c_ftl_nand_max_sys_blks]
-       ldrh    w0, [x0]
-       bl      FtlFreeSysBlkQueueInit
-       bl      FtlLoadBbt
-       cbz     w0, .L2625
-       bl      FtlMakeBbt
-.L2625:
-       mov     w0, 0
-       adrp    x3, :got:c_ftl_nand_sec_pre_page
-       adrp    x4, :got:p_io_data_buf_0
-       adrp    x5, :got:p_io_data_buf_1
-.L2626:
-       ldr     x1, [x3, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldrh    w1, [x1]
-       cmp     w0, w1, lsl 7
-       bge     .L2649
-       ldr     x1, [x4, #:got_lo12:p_io_data_buf_0]
-       ubfiz   x2, x0, 2, 16
-       ldr     x6, [x1]
-       mvn     w1, w0
-       orr     w1, w0, w1, lsl 16
-       add     w0, w0, 1
-       str     w1, [x6,x2]
-       uxth    w0, w0
-       ldr     x1, [x5, #:got_lo12:p_io_data_buf_1]
-       ldr     x6, [x1]
-       mov     w1, 23752
-       movk    w1, 0xa0f, lsl 16
-       str     w1, [x6,x2]
-       b       .L2626
-.L2649:
-       adrp    x24, :got:c_ftl_nand_data_blks_per_plane
-       mov     w21, 0
-       adrp    x25, :got:c_ftl_nand_blk_pre_plane
-       ldr     x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w22, [x0]
-.L2628:
-       ldr     x0, [x25, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       adrp    x20, :got:c_ftl_nand_blk_pre_plane
-       ldrh    w0, [x0]
-       cmp     w0, w22
-       bls     .L2650
-       mov     w0, w22
-       mov     w1, 1
-       add     w22, w22, 1
-       bl      FtlLowFormatEraseBlock
-       add     w0, w21, w0
-       uxth    w22, w22
-       uxth    w21, w0
-       b       .L2628
-.L2650:
-       adrp    x22, :got:c_ftl_nand_planes_num
-       sub     w1, w21, #3
-       ldr     x0, [x22, #:got_lo12:c_ftl_nand_planes_num]
-       ldrh    w0, [x0]
-       cmp     w1, w0, lsl 1
-       bge     .L2630
-.L2634:
-       mov     w21, 0
-       mov     w23, w21
-       b       .L2631
-.L2630:
-       udiv    w21, w21, w0
-       adrp    x0, :got:c_ftl_nand_init_sys_blks_per_plane
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_init_sys_blks_per_plane]
-       ldr     w0, [x0]
-       add     w0, w21, w0
-       bl      FtlSysBlkNumInit
-       ldr     x23, [x23, #:got_lo12:c_ftl_nand_max_sys_blks]
-       ldrh    w0, [x23]
-       bl      FtlFreeSysBlkQueueInit
-       ldr     x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w21, [x0]
-.L2632:
-       ldr     x0, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       ldrh    w0, [x0]
-       cmp     w0, w21
-       bls     .L2634
-       mov     w0, w21
-       mov     w1, 1
-       add     w21, w21, 1
-       bl      FtlLowFormatEraseBlock
-       uxth    w21, w21
-       b       .L2632
-.L2631:
-       ldr     x0, [x24, #:got_lo12:c_ftl_nand_data_blks_per_plane]
-       ldrh    w0, [x0]
-       cmp     w0, w23
-       bls     .L2651
-       mov     w0, w23
-       mov     w1, 0
-       add     w23, w23, 1
-       bl      FtlLowFormatEraseBlock
-       add     w0, w21, w0
-       uxth    w23, w23
-       uxth    w21, w0
-       b       .L2631
-.L2651:
-       adrp    x0, :got:g_cur_erase_blk
-       ldr     x1, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       adrp    x2, :got:g_MaxLpn
-       adrp    x5, :got:c_ftl_nand_data_op_blks_per_plane
-       ldr     x0, [x0, #:got_lo12:g_cur_erase_blk]
-       ldrh    w1, [x1]
-       str     w1, [x0]
-       adrp    x0, :got:c_ftl_nand_max_data_blks
-       ldr     x22, [x22, #:got_lo12:c_ftl_nand_planes_num]
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_max_data_blks]
-       ldr     x8, [x2, #:got_lo12:g_MaxLpn]
-       ldrh    w6, [x22]
-       ldr     w1, [x0]
-       udiv    w0, w1, w6
-       str     w0, [x8]
-       ubfx    x7, x0, 5, 16
-       ldr     x4, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       add     w3, w7, 36
-       strh    w3, [x4]
-       mov     w3, 24
-       mul     w3, w6, w3
-       cmp     w21, w3
-       ble     .L2636
-       sub     w1, w1, w21
-       udiv    w1, w1, w6
-       str     w1, [x8]
-       lsr     w1, w1, 5
-       add     w1, w1, 24
-       strh    w1, [x4]
-.L2636:
-       adrp    x3, :got:g_inkDie_check_enable
-       ldr     x3, [x3, #:got_lo12:g_inkDie_check_enable]
-       ldr     w1, [x3]
-       cmp     w1, 1
-       bne     .L2637
-       ldr     x1, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       udiv    w3, w21, w6
-       ldrh    w4, [x1]
-       add     w3, w4, w3
-       add     w3, w4, w3, asr 2
-       strh    w3, [x1]
-.L2637:
-       adrp    x3, :got:c_ftl_nand_ext_blk_pre_plane
-       ldr     x3, [x3, #:got_lo12:c_ftl_nand_ext_blk_pre_plane]
-       ldrh    w1, [x3]
-       cbz     w1, .L2639
-       ldr     x3, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       ldrh    w4, [x3]
-       add     w4, w4, w1, lsr 1
-       strh    w4, [x3]
-       mul     w4, w1, w6
-       cmp     w4, w21
-       ble     .L2639
-       ldr     x4, [x2, #:got_lo12:g_MaxLpn]
-       add     w1, w1, 32
-       add     w1, w7, w1
-       strh    w1, [x3]
-       str     w0, [x4]
-.L2639:
-       ldr     x1, [x5, #:got_lo12:c_ftl_nand_data_op_blks_per_plane]
-       adrp    x22, :got:g_MaxLbn
-       ldr     x2, [x2, #:got_lo12:g_MaxLpn]
-       adrp    x21, :got:p_valid_page_count_table
-       ldrh    w0, [x1]
-       ldr     w1, [x2]
-       sub     w0, w1, w0
-       ldr     x1, [x22, #:got_lo12:g_MaxLbn]
-       mul     w0, w0, w6
-       str     w0, [x1]
-       adrp    x1, :got:c_ftl_nand_page_pre_blk
-       ldr     x1, [x1, #:got_lo12:c_ftl_nand_page_pre_blk]
-       ldrh    w1, [x1]
-       mul     w0, w0, w1
-       str     w0, [x2]
-       adrp    x2, :got:c_ftl_nand_sec_pre_page
-       adrp    x1, :got:g_MaxLbaSector
-       ldr     x2, [x2, #:got_lo12:c_ftl_nand_sec_pre_page]
-       ldr     x1, [x1, #:got_lo12:g_MaxLbaSector]
-       ldrh    w2, [x2]
-       mul     w0, w0, w2
-       str     w0, [x1]
-       bl      FtlBbmTblFlush
-       ldr     x0, [x20, #:got_lo12:c_ftl_nand_blk_pre_plane]
-       mov     x20, x21
-       ldr     x1, [x21, #:got_lo12:p_valid_page_count_table]
-       ldrh    w2, [x0]
-       ldr     x0, [x1]
-       mov     w1, 0
-       lsl     w2, w2, 1
-       bl      ftl_memset
-       adrp    x0, :got:g_VaildLpn
-       mov     w1, -1
        mov     w23, w1
-       ldr     x0, [x0, #:got_lo12:g_VaildLpn]
-       str     wzr, [x0]
-       adrp    x0, :got:g_gc_superblock
-       ldr     x0, [x0, #:got_lo12:g_gc_superblock]
-       strh    w1, [x0]
-       strh    wzr, [x0,2]
-       strb    wzr, [x0,6]
-       strb    wzr, [x0,8]
-       adrp    x0, :got:g_active_superblock
-       mov     x24, x0
-       ldr     x2, [x0, #:got_lo12:g_active_superblock]
-       strh    wzr, [x2,2]
-       strb    wzr, [x2,6]
-       strh    wzr, [x2]
-       strb    wzr, [x2,8]
-.L2641:
-       ldr     x21, [x24, #:got_lo12:g_active_superblock]
-       mov     x0, x21
-       bl      make_superblock
-       ldrb    w0, [x21,7]
-       cbnz    w0, .L2642
-       ldr     x0, [x20, #:got_lo12:p_valid_page_count_table]
-       ldrh    w1, [x21]
-       ldr     x0, [x0]
-       strh    w23, [x0,x1,lsl 1]
-       ldrh    w0, [x21]
-       add     w0, w0, 1
-       strh    w0, [x21]
-       b       .L2641
-.L2642:
-       ldr     x1, [x19, #:got_lo12:g_GlobalSysVersion]
-       mov     w24, -1
-       ldrh    w2, [x21,4]
-       ldr     w0, [x1]
-       str     w0, [x21,12]
-       add     w0, w0, 1
-       str     w0, [x1]
-       ldrh    w1, [x21]
-       ldr     x0, [x20, #:got_lo12:p_valid_page_count_table]
-       ldr     x0, [x0]
-       strh    w2, [x0,x1,lsl 1]
-       adrp    x0, :got:g_buffer_superblock
-       mov     x23, x0
-       ldrh    w2, [x21]
-       ldr     x1, [x0, #:got_lo12:g_buffer_superblock]
+       adrp    x1, __stack_chk_guard
+       mov     w24, w2
+       cmp     w0, 16
+       stp     x25, x26, [sp,64]
+       ldr     x2, [x1,#:lo12:__stack_chk_guard]
+       mov     x25, x3
+       stp     x19, x20, [sp,16]
+       stp     x21, x22, [sp,32]
+       stp     x27, x28, [sp,80]
+       str     x2, [x29,280]
+       str     x1, [x29,120]
+       bne     .L2739
+       add     w0, w23, 256
+       mov     w1, w24
+       mov     x2, x3
+       bl      FtlVendorPartWrite
+       b       .L2740
+.L2739:
+       adrp    x22, .LANCHOR0
+       add     w27, w23, w24
+       add     x2, x22, :lo12:.LANCHOR0
+       mov     w0, -1
+       ldr     w1, [x2,2068]
+       cmp     w27, w1
+       bhi     .L2740
+       adrp    x5, .LANCHOR4
+       ldrh    w1, [x2,2032]
+       add     x4, x5, :lo12:.LANCHOR4
+       sub     w27, w27, #1
+       mov     w0, 2048
+       adrp    x20, .LANCHOR2
+       udiv    w26, w23, w1
+       cmp     w24, w1, lsl 1
+       str     w0, [x4,440]
+       str     x5, [x29,152]
+       udiv    w0, w27, w1
+       str     w0, [x29,180]
+       sub     w28, w0, w26
+       add     w21, w28, 1
+       add     x0, x20, :lo12:.LANCHOR2
+       add     x19, x0, 48
+       ldr     w3, [x0,172]
+       add     w3, w21, w3
+       str     w3, [x0,172]
+       ldr     w3, [x0,188]
+       add     w3, w24, w3
+       str     w3, [x0,188]
+       cset    w3, cs
+       str     w3, [x29,204]
+       ldr     w3, [x2,2088]
+       cmp     w24, 8
+       csel    x19, x0, x19, hi
+       cbz     w3, .L2742
+       sub     w3, w3, #1
+       mov     w5, 56
+       ldr     x2, [x2,2096]
+       umull   x3, w3, w5
+       add     x3, x2, x3
+       ldr     w2, [x3,24]
+       cmp     w26, w2
+       bne     .L2743
+       ldr     w2, [x0,176]
+       str     x4, [x29,192]
        add     w2, w2, 1
-       strh    wzr, [x1,2]
-       strh    w2, [x1]
-       mov     w2, 1
-       strb    wzr, [x1,6]
-       strb    w2, [x1,8]
-.L2643:
-       ldr     x21, [x23, #:got_lo12:g_buffer_superblock]
-       mov     x0, x21
-       bl      make_superblock
-       ldrb    w0, [x21,7]
-       cbnz    w0, .L2644
-       ldr     x0, [x20, #:got_lo12:p_valid_page_count_table]
-       ldrh    w1, [x21]
-       ldr     x0, [x0]
-       strh    w24, [x0,x1,lsl 1]
-       ldrh    w0, [x21]
+       str     w2, [x0,176]
+       ldr     w0, [x4,444]
        add     w0, w0, 1
-       strh    w0, [x21]
-       b       .L2643
-.L2644:
-       ldr     x19, [x19, #:got_lo12:g_GlobalSysVersion]
-       ldrh    w1, [x21]
-       ldrh    w2, [x21,4]
-       ldr     w0, [x19]
-       str     w0, [x21,12]
-       add     w0, w0, 1
-       str     w0, [x19]
-       ldr     x20, [x20, #:got_lo12:p_valid_page_count_table]
-       ldr     x0, [x20]
-       mov     w20, -1
-       strh    w2, [x0,x1,lsl 1]
-       adrp    x0, :got:g_gc_temp_superblock
-       ldr     x0, [x0, #:got_lo12:g_gc_temp_superblock]
-       strh    w20, [x0]
-       bl      FtlFreeSysBlkQueueOut
-       adrp    x1, :got:gSysInfo
-       ldr     x1, [x1, #:got_lo12:gSysInfo]
-       strh    w0, [x1]
-       strh    wzr, [x1,2]
-       strh    w20, [x1,4]
-       ldr     x22, [x22, #:got_lo12:g_MaxLbn]
-       ldr     w0, [x22]
-       strh    w0, [x1,6]
-       ldr     w0, [x19]
-       str     w0, [x1,8]
-       add     w0, w0, 1
-       str     w0, [x19]
-       bl      FtlVpcTblFlush
-       bl      FtlSysBlkInit
-       cbnz    w0, .L2645
-       adrp    x0, :got:gFtlInitStatus
+       str     w0, [x4,444]
+       msub    w0, w26, w1, w23
+       sub     w1, w1, w0
+       ubfiz   x0, x0, 9, 23
+       cmp     w1, w24
+       csel    w19, w1, w24, ls
+       ldr     x1, [x3,8]
+       lsl     w21, w19, 9
+       add     x0, x1, x0
+       mov     w2, w21
+       mov     x1, x25
+       bl      ftl_memcpy
+       ldr     x4, [x29,192]
+       cbnz    w28, .L2744
+       ldr     w1, [x4,444]
+       mov     w0, w28
+       cmp     w1, 2
+       ble     .L2740
+.L2744:
+       add     x25, x25, x21
+       sub     w24, w24, w19
+       add     w23, w23, w19
+       add     w26, w26, 1
+       mov     w21, w28
+.L2743:
+       ldr     x0, [x29,152]
+       add     x0, x0, :lo12:.LANCHOR4
+       ldr     x19, [x0,408]
+       str     wzr, [x0,444]
+.L2742:
+       ldr     w1, [x29,180]
+       mov     w0, w26
+       bl      FtlCacheMetchLpa
+       cbz     w0, .L2745
+       bl      FtlCacheWriteBack
+.L2745:
+       ldr     x0, [x29,152]
+       add     x20, x20, :lo12:.LANCHOR2
+       str     w26, [x29,200]
+       add     x0, x0, :lo12:.LANCHOR4
+       str     x19, [x0,408]
+       adrp    x0, .LC120
+       add     x0, x0, :lo12:.LC120
+       str     x0, [x29,104]
+.L2746:
+       cbz     w21, .L2805
+       ldrh    w0, [x19,4]
+       cbnz    w0, .L2747
+       cmp     x19, x20
+       bne     .L2748
+       add     x0, x20, 48
+       ldrh    w19, [x0,4]
+       cbnz    w19, .L2749
+       bl      allocate_new_data_superblock
+       adrp    x0, .LANCHOR1
+       add     x0, x0, :lo12:.LANCHOR1
+       str     w19, [x0,3008]
+.L2749:
+       mov     x0, x20
+       add     x19, x20, 48
+       bl      allocate_new_data_superblock
+       adrp    x0, .LANCHOR1
+       add     x0, x0, :lo12:.LANCHOR1
+       ldr     w0, [x0,3008]
+       cbnz    w0, .L2750
+.L2751:
+       mov     x19, x20
+       b       .L2750
+.L2748:
+       adrp    x1, .LANCHOR1
+       add     x1, x1, :lo12:.LANCHOR1
+       str     w0, [x1,3008]
+       ldrh    w0, [x20,4]
+       cbnz    w0, .L2751
+       mov     x0, x19
+       bl      allocate_new_data_superblock
+.L2750:
+       ldrh    w0, [x19,4]
+       cbnz    w0, .L2752
+       mov     x0, x19
+       bl      allocate_new_data_superblock
+.L2752:
+       ldr     x0, [x29,152]
+       add     x0, x0, :lo12:.LANCHOR4
+       str     x19, [x0,408]
+.L2747:
+       add     x2, x22, :lo12:.LANCHOR0
+       ldr     w0, [x20,2040]
+       ldrh    w1, [x19,4]
+       str     xzr, [x29,192]
+       ldr     w2, [x2,2088]
+       sub     w0, w0, w2
+       cmp     w1, w0
+       csel    w0, w1, w0, ls
+       cmp     w0, w21
+       csel    w0, w0, w21, ls
+       str     w0, [x29,148]
+       ldr     w0, [x29,204]
+       and     w0, w0, 1
+       str     w0, [x29,116]
+       add     w0, w24, w23
+       str     w0, [x29,144]
+.L2753:
+       ldr     w0, [x29,192]
+       ldr     w2, [x29,148]
+       ldr     w1, [x29,200]
+       cmp     w0, w2
+       add     w27, w1, w0
+       bcs     .L2806
+       ldrh    w1, [x19,4]
+       cbz     w1, .L2783
+       ldr     w1, [x29,180]
+       cmp     w27, w1
+       cset    w7, eq
+       cbz     w0, .L2755
+       ldr     w1, [x29,116]
+       tst     w7, w1
+       beq     .L2755
+       add     x1, x22, :lo12:.LANCHOR0
+       ldr     w2, [x29,144]
+       ldrh    w1, [x1,2032]
+       msub    w2, w27, w1, w2
+       cmp     w2, w1
+       bne     .L2783
+.L2755:
+       add     x1, x29, 220
+       mov     w2, 0
+       mov     w0, w27
+       str     x7, [x29,96]
+       bl      log2phys
+       mov     x0, x19
+       bl      get_new_active_ppa
+       add     x4, x22, :lo12:.LANCHOR0
+       mov     w5, 56
+       str     x4, [x29,184]
+       str     x5, [x29,160]
+       ldr     w6, [x4,2088]
+       ldr     x2, [x4,2096]
+       umull   x1, w6, w5
+       add     x2, x2, x1
+       str     w0, [x2,4]
+       ldrh    w2, [x4,2038]
+       ldr     x0, [x4,2096]
+       add     x1, x0, x1
+       mul     w0, w2, w6
+       and     x0, x0, 4294967292
+       str     x0, [x29,136]
+       ldr     x0, [x20,2128]
+       ldr     x3, [x29,136]
+       str     x0, [x29,128]
+       add     x28, x0, x3
+       ldrh    w0, [x4,2036]
+       str     x28, [x1,16]
+       str     w27, [x1,24]
+       mul     w0, w0, w6
+       ldr     x6, [x20,2088]
+       and     x0, x0, 4294967292
+       add     x0, x6, x0
+       str     x0, [x1,8]
+       mov     x0, x28
+       mov     w1, 0
+       bl      ftl_memset
+       cmp     w27, w26
+       ldr     x4, [x29,184]
+       cset    w0, eq
+       str     w0, [x29,176]
+       cbnz    w0, .L2786
+       ldr     x7, [x29,96]
+       ldr     x5, [x29,160]
+       cbz     w7, .L2756
+       ldr     w0, [x29,144]
+       ldrh    w2, [x4,2032]
+       msub    w2, w27, w2, w0
+       uxth    w0, w2
+       str     w0, [x29,184]
+       ldr     w0, [x29,176]
+       str     w0, [x29,160]
+       b       .L2759
+.L2786:
+       ldrh    w2, [x4,2032]
+       udiv    w0, w23, w2
+       msub    w0, w0, w2, w23
+       str     w0, [x29,160]
+       sub     w2, w2, w0
+       cmp     w2, w24
+       csel    w0, w2, w24, ls
+       str     w0, [x29,184]
+.L2759:
+       add     x2, x22, :lo12:.LANCHOR0
+       ldr     w1, [x29,184]
+       ldrh    w0, [x2,2032]
+       cmp     w1, w0
+       bne     .L2760
+       ldr     w0, [x29,176]
+       mov     x1, x25
+       cbnz    w0, .L2761
+       ldr     w0, [x29,184]
+       mul     w1, w0, w27
+       sub     w1, w1, w23
+       ubfiz   x1, x1, 9, 23
+       add     x1, x25, x1
+.L2761:
+       ldr     w2, [x29,204]
+       mov     w0, 56
+       add     x4, x22, :lo12:.LANCHOR0
+       cbz     w2, .L2762
+       ldr     w2, [x4,2088]
+       umull   x0, w2, w0
+       ldr     x2, [x4,2096]
+       add     x0, x2, x0
+       b       .L2804
+.L2762:
+       ldr     w2, [x4,2088]
+       umull   x0, w2, w0
+       ldr     x2, [x4,2096]
+       add     x0, x2, x0
+       ldr     x0, [x0,8]
+       b       .L2802
+.L2760:
+       ldr     w0, [x29,220]
+       cmn     w0, #1
+       beq     .L2764
+       str     w0, [x29,228]
+       mov     w1, 56
+       ldr     w0, [x2,2088]
+       str     w27, [x29,248]
+       umull   x0, w0, w1
+       ldr     x1, [x2,2096]
+       mov     w2, 0
+       add     x0, x1, x0
+       ldr     x1, [x0,8]
+       ldr     x0, [x0,16]
+       str     x1, [x29,232]
        mov     w1, 1
-       ldr     x0, [x0, #:got_lo12:gFtlInitStatus]
-       str     w1, [x0]
-.L2645:
-       mov     w0, 0
-       ldr     x25, [sp,64]
+       str     x0, [x29,240]
+       add     x0, x29, 224
+       bl      FlashReadPages
+       ldr     w0, [x29,224]
+       cmn     w0, #1
+       bne     .L2765
+       ldr     w0, [x20,424]
+       add     w0, w0, 1
+       str     w0, [x20,424]
+       b       .L2767
+.L2765:
+       ldr     w0, [x28,8]
+       cmp     w0, w27
+       beq     .L2767
+       ldr     w0, [x20,424]
+       mov     w2, w27
+       add     w0, w0, 1
+       str     w0, [x20,424]
+       ldr     x0, [x29,104]
+       ldr     w1, [x28,8]
+       bl      printk
+       b       .L2767
+.L2764:
+       ldr     w0, [x2,2088]
+       mov     w1, 56
+       umull   x0, w0, w1
+       ldr     x1, [x2,2096]
+       ldrh    w2, [x2,2036]
+       add     x0, x1, x0
+       mov     w1, 0
+       ldr     x0, [x0,8]
+       bl      ftl_memset
+.L2767:
+       ldr     w1, [x29,184]
+       mov     w0, 56
+       lsl     w2, w1, 9
+       ldr     w1, [x29,176]
+       cbz     w1, .L2768
+       add     x1, x22, :lo12:.LANCHOR0
+       ldr     w4, [x1,2088]
+       umull   x0, w4, w0
+       ldr     x4, [x1,2096]
+       add     x4, x4, x0
+       ldr     x0, [x29,160]
+       ubfiz   x0, x0, 9, 23
+       ldr     x1, [x4,8]
+       add     x0, x1, x0
+       mov     x1, x25
+       b       .L2803
+.L2768:
+       add     x5, x22, :lo12:.LANCHOR0
+       ldr     w4, [x5,2088]
+       ldr     x1, [x5,2096]
+       umull   x0, w4, w0
+       add     x0, x1, x0
+       ldrh    w1, [x5,2032]
+       mul     w1, w27, w1
+       ldr     x0, [x0,8]
+       sub     w1, w1, w23
+       ubfiz   x1, x1, 9, 23
+       add     x1, x25, x1
+       b       .L2803
+.L2756:
+       ldr     w0, [x29,204]
+       ldrh    w1, [x4,2032]
+       ldr     w2, [x4,2088]
+       cbz     w0, .L2769
+       mul     w1, w27, w1
+       umull   x0, w2, w5
+       sub     w1, w1, w23
+       ldr     x2, [x4,2096]
+       ubfiz   x1, x1, 9, 23
+       add     x0, x2, x0
+       add     x1, x25, x1
+.L2804:
+       str     x1, [x0,8]
+       b       .L2763
+.L2769:
+       umull   x0, w2, w5
+       ldr     x2, [x4,2096]
+       mul     w1, w27, w1
+       add     x0, x2, x0
+       sub     w1, w1, w23
+       ubfiz   x1, x1, 9, 23
+       ldr     x0, [x0,8]
+       add     x1, x25, x1
+.L2802:
+       ldrh    w2, [x4,2036]
+.L2803:
+       bl      ftl_memcpy
+.L2763:
+       ldr     x1, [x29,128]
+       mov     w0, -3947
+       ldr     x2, [x29,136]
+       strh    w0, [x1,x2]
+       add     x1, x22, :lo12:.LANCHOR0
+       str     w27, [x28,8]
+       ldr     w0, [x20,200]
+       str     w0, [x28,4]
+       add     w0, w0, 1
+       cmn     w0, #1
+       csel    w0, w0, wzr, ne
+       str     w0, [x20,200]
+       ldr     w0, [x29,220]
+       str     w0, [x28,12]
+       ldrh    w0, [x19]
+       strh    w0, [x28,2]
+       ldr     w0, [x1,2088]
+       add     w0, w0, 1
+       str     w0, [x1,2088]
+       ldr     x0, [x29,192]
+       add     x0, x0, 1
+       str     x0, [x29,192]
+       b       .L2753
+.L2806:
+       str     w27, [x29,200]
+       mov     x0, x2
+       b       .L2754
+.L2783:
+       str     w27, [x29,200]
+.L2754:
+       sub     w21, w21, w0
+       ldr     w0, [x29,204]
+       cbnz    w0, .L2773
+       add     x0, x22, :lo12:.LANCHOR0
+       ldr     w1, [x0,2088]
+       ldr     w0, [x20,2040]
+       cmp     w1, w0
+       bcs     .L2773
+       ldrh    w0, [x19,4]
+       cbz     w0, .L2773
+.L2775:
+       str     wzr, [x29,204]
+       b       .L2746
+.L2773:
+       bl      FtlCacheWriteBack
+       add     x0, x22, :lo12:.LANCHOR0
+       cmp     w21, 3
+       str     wzr, [x0,2088]
+       bls     .L2775
+       b       .L2746
+.L2805:
+       ldr     w1, [x29,180]
+       mov     w0, w21
+       sub     w1, w1, w26
+       bl      rk_ftl_garbage_collect
+       mov     w0, w21
+.L2740:
+       ldr     x1, [x29,120]
+       ldr     x2, [x29,280]
+       ldr     x1, [x1,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2777
+       bl      __stack_chk_fail
+.L2777:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
-       ldp     x29, x30, [sp], 80
+       ldp     x25, x26, [sp,64]
+       ldp     x27, x28, [sp,80]
+       ldp     x29, x30, [sp], 288
        ret
-       .size   FtlLowFormat, .-FtlLowFormat
+       .size   FtlWrite, .-FtlWrite
        .align  2
-       .global FtlReInitForSDUpdata
-       .type   FtlReInitForSDUpdata, %function
-FtlReInitForSDUpdata:
-       adrp    x0, :got:RK29_NANDC_REG_BASE
-       stp     x29, x30, [sp, -48]!
+       .type   FlashReadFacBbtData.part.14, %function
+FlashReadFacBbtData.part.14:
+       stp     x29, x30, [sp, -32]!
+       mov     w3, 0
+       adrp    x4, .LANCHOR0
        add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:RK29_NANDC_REG_BASE]
        str     x19, [sp,16]
-       ldr     x0, [x0]
-       bl      FlashInit
-       mov     w1, 0
-       cbnz    w0, .L2653
-       bl      FlashLoadFactorBbt
-       cbz     w0, .L2654
-       bl      FlashMakeFactorBbt
-.L2654:
-       adrp    x0, :got:gFlashPageBuffer1
-       ldr     x0, [x0, #:got_lo12:gFlashPageBuffer1]
-       ldr     x0, [x0]
-       bl      FlashReadIdbDataRaw
-       cbz     w0, .L2655
-       mov     w1, 0
-       mov     w2, 16
-       add     x0, x29, 32
-       bl      FlashReadFacBbtData
+       mov     x19, x0
+       cbnz    w1, .L2810
+       adrp    x1, .LANCHOR4
+       mov     w7, 1
+.L2813:
+       add     x0, x1, :lo12:.LANCHOR4
+       ldr     w0, [x0,68]
+       cmp     w3, w0
+       bcs     .L2810
+       add     x6, x4, :lo12:.LANCHOR0
+       ubfx    x5, x3, 5, 11
+       lsl     x5, x5, 2
+       ldr     x0, [x6,1856]
+       lsl     w6, w7, w3
+       add     w3, w3, 1
+       ldr     w8, [x0,x5]
+       uxth    w3, w3
+       orr     w6, w8, w6
+       str     w6, [x0,x5]
+       b       .L2813
+.L2810:
+       add     x4, x4, :lo12:.LANCHOR0
+       mov     x0, x19
+       ldr     x1, [x4,1856]
+       bl      ftl_memcpy
+       mov     w2, 4
+       adrp    x0, .LC121
+       mov     x1, x19
+       add     x0, x0, :lo12:.LC121
+       mov     w3, w2
+       bl      rknand_print_hex
+       ldr     x19, [sp,16]
        mov     w0, 0
-       ldr     w2, [x29,32]
-       mov     w1, w0
-       mov     w4, 1
-.L2657:
-       lsl     w3, w4, w1
-       add     w1, w1, 1
-       tst     w3, w2
-       cset    w3, ne
-       cmp     w1, 16
-       add     w0, w0, w3
-       bne     .L2657
-       cmp     w0, 6
-       bhi     .L2658
-       adrp    x0, :got:gNandIDBResBlkNum
-       ldr     x0, [x0, #:got_lo12:gNandIDBResBlkNum]
-       b       .L2682
-.L2658:
-       mov     w1, 0
-       mov     w4, 1
-.L2661:
-       lsl     w3, w4, w1
-       add     w1, w1, 1
-       tst     w3, w2
-       cset    w3, ne
-       cmp     w1, 24
-       add     w0, w0, w3
-       bne     .L2661
-       cmp     w0, 17
-       adrp    x0, :got:gNandIDBResBlkNum
-       ldr     x0, [x0, #:got_lo12:gNandIDBResBlkNum]
-       bls     .L2682
-       mov     w1, 36
-.L2682:
-       strb    w1, [x0]
-       adrp    x1, :got:gNandIDBResBlkNum
-       adrp    x0, :got:gNandPhyInfo
-       ldr     x1, [x1, #:got_lo12:gNandIDBResBlkNum]
-       ldr     x0, [x0, #:got_lo12:gNandPhyInfo]
-       ldrb    w1, [x1]
-       strh    w1, [x0,26]
-.L2655:
-       adrp    x0, .LC72
-       adrp    x1, .LC73
-       add     x1, x1, :lo12:.LC73
-       add     x0, x0, :lo12:.LC72
-       mov     w19, 1
-       bl      printk
-       adrp    x0, :got:gNandPhyInfo
-       ldr     x0, [x0, #:got_lo12:gNandPhyInfo]
-       bl      FtlConstantsInit
-       bl      FtlVariablesInit
-       adrp    x0, :got:c_ftl_nand_max_sys_blks
-       ldr     x0, [x0, #:got_lo12:c_ftl_nand_max_sys_blks]
-       ldrh    w0, [x0]
-       bl      FtlFreeSysBlkQueueInit
-.L2663:
-       bl      FtlLoadBbt
-       cbz     w0, .L2664
-.L2684:
-       bl      FtlLowFormat
-       cmp     w19, 3
-       bhi     .L2685
-       add     w19, w19, 1
-       b       .L2663
-.L2685:
-       mov     w1, -1
-       b       .L2653
-.L2664:
-       bl      FtlSysBlkInit
-       cbnz    w0, .L2684
-       adrp    x1, :got:gFtlInitStatus
-       mov     w2, 1
-       ldr     x1, [x1, #:got_lo12:gFtlInitStatus]
-       str     w2, [x1]
-       mov     w1, w0
-.L2653:
-       mov     w0, w1
-       ldr     x19, [sp,16]
-       ldp     x29, x30, [sp], 48
+       ldp     x29, x30, [sp], 32
        ret
-       .size   FtlReInitForSDUpdata, .-FtlReInitForSDUpdata
+       .size   FlashReadFacBbtData.part.14, .-FlashReadFacBbtData.part.14
        .align  2
-       .global IdBlockReadData
-       .type   IdBlockReadData, %function
-IdBlockReadData:
-       stp     x29, x30, [sp, -176]!
+       .global FlashReadFacBbtData
+       .type   FlashReadFacBbtData, %function
+FlashReadFacBbtData:
+       stp     x29, x30, [sp, -160]!
+       adrp    x4, .LANCHOR0
        add     x29, sp, 0
+       stp     x21, x22, [sp,32]
+       adrp    x21, __stack_chk_guard
+       add     x4, x4, :lo12:.LANCHOR0
        stp     x19, x20, [sp,16]
        stp     x23, x24, [sp,48]
-       mov     w20, w0
-       adrp    x23, :got:gpNandParaInfo
-       adrp    x0, :got:gBlockPageAlignSize
-       stp     x21, x22, [sp,32]
-       ldr     x21, [x23, #:got_lo12:gpNandParaInfo]
-       mov     x22, x2
-       ldr     x0, [x0, #:got_lo12:gBlockPageAlignSize]
-       stp     x27, x28, [sp,80]
        stp     x25, x26, [sp,64]
-       mov     w27, w1
-       mov     w1, w20
-       ldr     w3, [x0]
-       mov     w2, w27
-       ldr     x0, [x21]
-       mov     x26, x23
-       ldrb    w19, [x0,9]
-       adrp    x0, .LC120
-       add     x0, x0, :lo12:.LC120
-       mul     w19, w3, w19
-       bl      printk
-       ldr     x0, [x21]
-       mov     w5, 4
-       uxth    w19, w19
-       mov     w21, 0
-       adrp    x6, :got:slcPageToMlcPageTbl
-       adrp    x7, :got:gFlashPageBuffer1
-       ldrb    w28, [x0,9]
-       adrp    x8, :got:gNandFlashEccBits
-       udiv    w0, w20, w19
-       adrp    x9, :got:gNandFlashIDBEccBits
-       msub    w19, w0, w19, w20
-       sub     w4, w20, w19
-       mul     w3, w19, w28
-       ubfx    x3, x3, 2, 2
-.L2687:
-       cmp     w21, w27
-       bcs     .L2689
-       add     w0, w21, w19
-       ldr     x1, [x6, #:got_lo12:slcPageToMlcPageTbl]
-       ubfx    x0, x0, 2, 16
-       ldr     x25, [x7, #:got_lo12:gFlashPageBuffer1]
-       sub     w23, w5, w3
-       add     w3, w3, w4
-       str     x5, [x29,104]
-       ldrh    w24, [x1,w0,sxtw 1]
-       uxth    w23, w23
-       ldr     x0, [x26, #:got_lo12:gpNandParaInfo]
-       ldr     x2, [x25]
-       str     x4, [x29,112]
-       ldr     x0, [x0]
-       str     x6, [x29,120]
-       str     x7, [x29,128]
-       ldrb    w1, [x0,9]
-       ldr     x0, [x8, #:got_lo12:gNandFlashEccBits]
-       str     x8, [x29,152]
-       str     x9, [x29,168]
-       ldrb    w10, [x0]
-       ldr     x0, [x9, #:got_lo12:gNandFlashIDBEccBits]
-       madd    w24, w24, w28, w3
-       str     x10, [x29,160]
-       ldrb    w0, [x0]
-       str     x2, [x29,136]
-       str     x1, [x29,144]
-       bl      FlashBchSel
-       ldr     x1, [x29,144]
-       mov     x3, 0
-       ldr     x2, [x29,136]
-       mov     w0, 0
-       udiv    w1, w24, w1
-       bl      FlashReadPage
-       ldr     x10, [x29,160]
-       mov     w0, w10
-       bl      FlashBchSel
-       ubfiz   x0, x21, 9, 16
-       ldr     x1, [x25]
-       add     x0, x22, x0
-       mov     w2, 2048
-       add     w21, w23, w21
-       bl      ftl_memcpy
-       uxth    w21, w21
-       mov     w3, 0
-       ldr     x5, [x29,104]
-       ldr     x4, [x29,112]
-       ldr     x6, [x29,120]
-       ldr     x7, [x29,128]
-       ldr     x8, [x29,152]
-       ldr     x9, [x29,168]
-       b       .L2687
-.L2689:
-       adrp    x0, .LC121
-       mov     w1, w20
-       mov     w2, w27
-       mov     w3, 0
-       add     x0, x0, :lo12:.LC121
-       bl      printk
-       mov     w0, 0
+       str     x27, [sp,80]
+       mov     x23, x0
+       ldr     x0, [x21,#:lo12:__stack_chk_guard]
+       mov     w24, w1
+       ldrh    w3, [x4,180]
+       mov     w26, w2
+       str     x0, [x29,152]
+       mov     w27, 61664
+       ldrh    w0, [x4,182]
+       mul     w3, w3, w0
+       ldr     x0, [x4,1856]
+       adrp    x4, .LANCHOR4
+       str     x0, [x29,104]
+       add     x0, x4, :lo12:.LANCHOR4
+       uxth    w3, w3
+       mov     x22, x4
+       sub     w20, w3, #1
+       sub     w19, w3, #16
+       ldr     x0, [x0,88]
+       mul     w25, w1, w3
+       str     x0, [x29,112]
+       uxth    w20, w20
+.L2815:
+       cmp     w20, w19
+       ble     .L2824
+       add     w0, w20, w25
+       mov     w1, 1
+       lsl     w0, w0, 10
+       mov     w2, w1
+       str     w0, [x29,100]
+       add     x0, x29, 96
+       bl      FlashReadPages
+       ldr     w0, [x29,96]
+       cmn     w0, #1
+       beq     .L2816
+       add     x0, x22, :lo12:.LANCHOR4
+       ldr     x0, [x0,88]
+       ldrh    w0, [x0]
+       cmp     w0, w27
+       bne     .L2816
+       mov     w0, w23
+       cbz     x23, .L2817
+       mov     x0, x23
+       mov     w1, w24
+       mov     w2, w26
+       bl      FlashReadFacBbtData.part.14
+       b       .L2817
+.L2816:
+       sub     w20, w20, #1
+       uxth    w20, w20
+       b       .L2815
+.L2824:
+       mov     w0, -1
+.L2817:
+       ldr     x2, [x29,152]
+       ldr     x1, [x21,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2819
+       bl      __stack_chk_fail
+.L2819:
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
        ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 176
+       ldr     x27, [sp,80]
+       ldp     x29, x30, [sp], 160
        ret
-       .size   IdBlockReadData, .-IdBlockReadData
+       .size   FlashReadFacBbtData, .-FlashReadFacBbtData
        .align  2
-       .global IDBlockWriteData
-       .type   IDBlockWriteData, %function
-IDBlockWriteData:
-       stp     x29, x30, [sp, -224]!
+       .global FlashGetBadBlockList
+       .type   FlashGetBadBlockList, %function
+FlashGetBadBlockList:
+       stp     x29, x30, [sp, -48]!
        add     x29, sp, 0
-       stp     x21, x22, [sp,32]
-       stp     x25, x26, [sp,64]
-       adrp    x21, :got:gpNandParaInfo
-       mov     w25, w0
-       adrp    x0, :got:gBlockPageAlignSize
-       stp     x23, x24, [sp,48]
-       ldr     x22, [x21, #:got_lo12:gpNandParaInfo]
-       mov     w24, 0
-       ldr     x0, [x0, #:got_lo12:gBlockPageAlignSize]
-       stp     x27, x28, [sp,80]
+       str     x21, [sp,32]
+       mov     x21, x0
+       adrp    x0, .LANCHOR0+744
        stp     x19, x20, [sp,16]
-       mov     w27, w1
-       mov     x20, x2
-       ldr     w3, [x0]
-       mov     w1, w25
-       ldr     x0, [x22]
-       mov     w2, w27
-       add     x28, x29, 160
-       ldrb    w19, [x0,9]
-       adrp    x0, .LC122
-       add     x0, x0, :lo12:.LC122
-       mul     w19, w3, w19
-       bl      printk
-       adrp    x0, :got:gNandPhyInfo
-       mov     w2, 0
+       adrp    x20, .LANCHOR4
+       ldr     x0, [x0,#:lo12:.LANCHOR0+744]
+       ldrb    w2, [x0,13]
+       ldrh    w19, [x0,14]
+       add     x0, x20, :lo12:.LANCHOR4
+       mul     w19, w2, w19
+       ldr     x0, [x0,80]
        uxth    w19, w19
-       ldr     x0, [x0, #:got_lo12:gNandPhyInfo]
-       ldrh    w1, [x0,20]
-       mov     w0, 0
-       udiv    w1, w25, w1
-       bl      FlashEraseBlock
-       udiv    w26, w25, w19
-       ldr     x0, [x22]
-       adrp    x5, :got:slcPageToMlcPageTbl
-       adrp    x6, :got:gNandFlashEccBits
-       adrp    x7, :got:gNandFlashIDBEccBits
-       ldrb    w22, [x0,9]
-       msub    w26, w26, w19, w25
-       sub     w23, w25, w26
-.L2691:
-       cmp     w24, w27
-       bcs     .L2697
-       add     w4, w24, w26
-       lsr     w4, w4, 2
-       and     w19, w4, 65535
-       uxth    w0, w4
-       cbz     w0, .L2692
-       ldr     x0, [x5, #:got_lo12:slcPageToMlcPageTbl]
-       add     w1, w19, 1
-       str     wzr, [x28,4]
-       ldrh    w4, [x0,w1,sxtw 1]
-       sub     w4, w4, #1
-       lsl     w4, w4, 2
-       str     w4, [x28]
-.L2692:
-       ldr     x4, [x5, #:got_lo12:slcPageToMlcPageTbl]
-       ubfiz   x2, x24, 9, 16
-       ldr     x0, [x6, #:got_lo12:gNandFlashEccBits]
-       add     x2, x20, x2
-       str     x5, [x29,104]
-       add     w24, w24, 4
-       ldrh    w1, [x4,w19,sxtw 1]
-       ldrb    w8, [x0]
-       uxth    w24, w24
-       ldr     x0, [x7, #:got_lo12:gNandFlashIDBEccBits]
-       madd    w1, w1, w22, w23
-       str     x6, [x29,136]
-       ldrb    w0, [x0]
-       str     x7, [x29,152]
-       str     x4, [x29,112]
-       str     x8, [x29,144]
-       str     x1, [x29,120]
-       str     x2, [x29,128]
-       bl      FlashBchSel
-       ldr     x0, [x21, #:got_lo12:gpNandParaInfo]
-       ldr     x1, [x29,120]
-       ldr     x2, [x29,128]
-       ldr     x0, [x0]
-       ldrb    w3, [x0,9]
-       mov     w0, 0
-       udiv    w1, w1, w3
-       mov     x3, x28
-       bl      FlashProgPage
-       ldr     x8, [x29,144]
-       mov     w0, w8
-       bl      FlashBchSel
-       udiv    w1, w23, w22
-       ldr     x4, [x29,112]
-       mov     w0, 0
-       ldrh    w2, [x4,w19,sxtw 1]
+       add     w2, w19, 7
+       lsr     w2, w2, 3
+       bl      FlashReadFacBbtData
+       cmn     w0, #1
+       bne     .L2826
+.L2830:
+       mov     w1, 0
+       b       .L2827
+.L2826:
+       mov     w2, 0
+       lsr     w0, w19, 4
+       mov     w1, w2
+       sub     w19, w19, #1
+       mov     w5, 1
+.L2828:
+       cmp     w2, w19
+       bge     .L2827
+       add     x3, x20, :lo12:.LANCHOR4
+       ubfx    x4, x2, 5, 11
+       ldr     x6, [x3,80]
+       lsl     w3, w5, w2
+       ldr     w4, [x6,x4,lsl 2]
+       tst     w3, w4
+       beq     .L2829
+       add     w3, w1, 1
+       ubfiz   x1, x1, 1, 16
+       strh    w2, [x21,x1]
+       uxth    w1, w3
+.L2829:
+       cmp     w1, w0
+       bcs     .L2830
        add     w2, w2, 1
-       bl      FlashPageProgMsbFFData
-       ldr     x5, [x29,104]
-       ldr     x6, [x29,136]
-       ldr     x7, [x29,152]
-       b       .L2691
-.L2697:
-       adrp    x0, .LC123
-       mov     w1, w25
-       mov     w2, w27
-       mov     w3, 0
-       add     x0, x0, :lo12:.LC123
-       bl      printk
-       mov     w0, 0
+       uxth    w2, w2
+       b       .L2828
+.L2827:
+       ubfiz   x1, x1, 1, 16
+       mov     w0, -1
        ldp     x19, x20, [sp,16]
-       ldp     x21, x22, [sp,32]
-       ldp     x23, x24, [sp,48]
-       ldp     x25, x26, [sp,64]
-       ldp     x27, x28, [sp,80]
-       ldp     x29, x30, [sp], 224
+       strh    w0, [x21,x1]
+       mov     w0, 0
+       ldr     x21, [sp,32]
+       ldp     x29, x30, [sp], 48
        ret
-       .size   IDBlockWriteData, .-IDBlockWriteData
+       .size   FlashGetBadBlockList, .-FlashGetBadBlockList
        .align  2
-       .global write_idblock
-       .type   write_idblock, %function
-write_idblock:
+       .global FtlMakeBbt
+       .type   FtlMakeBbt, %function
+FtlMakeBbt:
        stp     x29, x30, [sp, -112]!
        add     x29, sp, 0
-       stp     x23, x24, [sp,48]
-       mov     w24, w0
-       adrp    x0, :got:gpNandParaInfo
        stp     x19, x20, [sp,16]
+       adrp    x19, .LANCHOR0
+       adrp    x20, .LANCHOR4
        stp     x21, x22, [sp,32]
-       ldr     x0, [x0, #:got_lo12:gpNandParaInfo]
-       mov     x21, x1
+       add     x20, x20, :lo12:.LANCHOR4
+       add     x22, x19, :lo12:.LANCHOR0
+       add     x22, x22, 2112
+       add     x20, x20, 136
+       stp     x23, x24, [sp,48]
        stp     x25, x26, [sp,64]
+       mov     x24, x22
+       mov     w23, 0
+       mov     x25, x20
        stp     x27, x28, [sp,80]
-       mov     w1, 192
-       mov     x23, x2
-       ldr     x0, [x0]
-       movk    w1, 0x240, lsl 16
-       mov     w2, 6
-       ldrb    w22, [x0,9]
-       adrp    x0, :got:gBlockPageAlignSize
-       ldr     x0, [x0, #:got_lo12:gBlockPageAlignSize]
-       ldr     w25, [x0]
-       mov     x0, 59392
-       movk    x0, 0x3, lsl 16
-       bl      kmalloc_order_trace
-       mov     x20, x0
-       mov     w0, -1
-       cbz     x20, .L2708
-       add     w19, w24, 511
-       lsr     w19, w19, 9
-       cmp     w19, 255
-       bhi     .L2700
-       ubfiz   x0, x19, 9, 23
-       mov     w2, 256
-       add     x0, x21, x0
-       mov     x1, x21
-       sub     w2, w2, w19
-       bl      memcpy
-.L2700:
-       add     w19, w19, 128
-       mov     w0, 256
-       cmp     w19, 256
-       adrp    x26, :got:gNandIDBResBlkNum
-       csel    w19, w19, w0, ls
-       adrp    x0, .LC124
-       add     x0, x0, :lo12:.LC124
-       mov     x1, x23
-       mov     w2, 4
-       mov     w3, 5
-       bl      rknand_print_hex
-       ldr     x26, [x26, #:got_lo12:gNandIDBResBlkNum]
-       ldr     w1, [x21,512]
-       adrp    x0, .LC125
-       add     x0, x0, :lo12:.LC125
-       ldrb    w2, [x26]
-       bl      printk
-       ldrb    w0, [x26]
-       ldr     w1, [x21,512]
-       cmp     w1, w0
-       bls     .L2701
-       str     w0, [x21,512]
-.L2701:
-       adrp    x0, .LC126
-       mov     w2, w24
-       mul     w22, w22, w25
-       add     x0, x0, :lo12:.LC126
-       mov     w1, w19
-       mov     x28, 0
-       adrp    x25, .LC127
-       bl      printk
-       adrp    x26, .LC128
-       adrp    x27, .LC129
-       lsl     w0, w19, 7
-       uxth    w22, w22
-       str     w0, [x29,108]
-       mov     w24, w28
-       add     x25, x25, :lo12:.LC127
-       add     x26, x26, :lo12:.LC128
-       add     x27, x27, :lo12:.LC129
-.L2706:
-       adrp    x0, :got:gNandPhyInfo
-       ldr     w2, [x23,x28,lsl 2]
-       mov     w8, w28
-       ldr     x0, [x0, #:got_lo12:gNandPhyInfo]
-       ldrh    w0, [x0,26]
-       cmp     w2, w0
-       bcs     .L2702
-       adrp    x0, :got:gNandFlashIdbBlockAddr
-       ldr     x0, [x0, #:got_lo12:gNandFlashIdbBlockAddr]
-       ldr     w0, [x0]
-       cmp     w2, w0
-       bcc     .L2702
-       mov     w1, 0
-       mov     x2, 512
-       mov     x0, x20
-       str     x8, [x29,96]
-       bl      memset
-       ldr     w0, [x23,x28,lsl 2]
-       mov     w1, w19
-       mov     x2, x21
-       mul     w0, w22, w0
-       bl      IDBlockWriteData
-       ldr     w0, [x23,x28,lsl 2]
-       mov     w1, w19
-       mov     x2, x20
-       mul     w0, w22, w0
-       bl      IdBlockReadData
-       ldr     x8, [x29,96]
-       mov     x0, 0
-.L2703:
-       ldr     w1, [x29,108]
-       mov     w3, w0
-       cmp     w0, w1
-       bcs     .L2713
-       ldr     w4, [x20,x0,lsl 2]
-       mov     x7, x0
-       add     x0, x0, 1
-       add     x1, x21, x0, lsl 2
-       ldr     w5, [x1,-4]
-       cmp     w4, w5
-       beq     .L2703
-       ldr     w2, [x23,x28,lsl 2]
-       mov     w1, w8
-       mov     x0, x25
-       str     x7, [x29,96]
-       bl      printk
-       ldr     x7, [x29,96]
-       mov     x0, x26
-       mov     w2, 4
-       mov     w3, 256
-       and     x4, x7, -256
-       lsl     x4, x4, 2
-       str     x4, [x29,96]
-       add     x1, x21, x4
-       bl      rknand_print_hex
-       ldr     x4, [x29,96]
-       mov     w3, 256
-       mov     x0, x27
-       mov     w2, 4
-       add     x1, x20, x4
-       bl      rknand_print_hex
+       bl      FtlBbtMemInit
+       bl      FtlLoadFactoryBbt
+.L2836:
+       add     x21, x19, :lo12:.LANCHOR0
+       ldrh    w0, [x21,1974]
+       cmp     w23, w0
+       bcs     .L2854
+       adrp    x1, .LANCHOR2
+       ldrh    w27, [x24,12]
+       add     x2, x1, :lo12:.LANCHOR2
+       str     x1, [x29,104]
+       ldr     x0, [x2,-64]
+       ldr     x26, [x2,2112]
+       mov     w2, 65535
+       str     x0, [x20,8]
+       cmp     w27, w2
+       str     x26, [x20,16]
+       beq     .L2837
+       ldrh    w0, [x21,2022]
+       mov     w1, 1
+       mov     w2, w1
+       madd    w27, w23, w0, w27
+       lsl     w0, w27, 10
+       str     w0, [x20,4]
        mov     x0, x20
+       bl      FlashReadPages
+       ldrh    w2, [x21,2022]
+       ldr     x0, [x22,32]
+       add     w2, w2, 7
+       ldr     x1, [x20,8]
+       lsr     w2, w2, 3
+       bl      ftl_memcpy
+       b       .L2838
+.L2837:
+       mov     w1, w23
+       mov     w28, -3872
+       bl      FlashGetBadBlockList
+       ldr     x0, [x20,8]
+       ldr     x1, [x22,32]
+       bl      FtlBbt2Bitmap
+       ldrh    w21, [x21,2022]
+       sub     w21, w21, #1
+       uxth    w21, w21
+.L2839:
+       add     x27, x19, :lo12:.LANCHOR0
+       ldrh    w0, [x27,2022]
+       madd    w0, w23, w0, w21
+       bl      FtlBbmIsBadBlock
+       cmp     w0, 1
+       bne     .L2855
+       sub     w21, w21, #1
+       uxth    w21, w21
+       b       .L2839
+.L2855:
+       ldr     x0, [x29,104]
        mov     w1, 0
-       mov     x2, 512
-       bl      memset
-       ldr     w0, [x23,x28,lsl 2]
-       mov     w1, 4
-       mov     x2, x20
-       mul     w0, w22, w0
-       bl      IDBlockWriteData
-       adrp    x0, .LC130
-       add     x0, x0, :lo12:.LC130
-       bl      printk
-       b       .L2702
-.L2713:
-       add     w24, w24, 1
-.L2702:
-       add     x28, x28, 1
-       cmp     x28, 5
-       bne     .L2706
-       mov     x0, x20
-       bl      kfree
-       cmp     w24, wzr
-       csetm   w0, eq
-.L2708:
+       mov     w2, 16
+       strh    w21, [x24,12]
+       add     x3, x0, :lo12:.LANCHOR2
+       str     x3, [x29,96]
+       ldr     x0, [x3,2112]
+       bl      ftl_memset
+       strh    w28, [x26]
+       str     wzr, [x26,4]
+       ldr     x3, [x29,96]
+       ldrh    w0, [x24,12]
+       strh    w0, [x26,2]
+       ldrh    w0, [x27,2022]
+       ldrh    w1, [x24,12]
+       ldrh    w2, [x3,2232]
+       madd    w27, w23, w0, w1
+       ldr     x1, [x22,32]
+       lsl     w2, w2, 2
+       lsl     w0, w27, 10
+       str     w0, [x25,4]
+       ldr     x0, [x25,8]
+       bl      ftl_memcpy
+       mov     w1, 1
+       mov     x0, x25
+       mov     w2, w1
+       bl      FlashEraseBlocks
+       mov     w1, 1
+       mov     x0, x25
+       mov     w2, w1
+       mov     w3, w1
+       bl      FlashProgPages
+       ldr     w0, [x25]
+       cmn     w0, #1
+       bne     .L2838
+       mov     w0, w27
+       bl      FtlBbmMapBadBlock
+       b       .L2839
+.L2838:
+       mov     w0, w27
+       add     w23, w23, 1
+       add     x22, x22, 8
+       add     x24, x24, 2
+       bl      FtlBbmMapBadBlock
+       b       .L2836
+.L2854:
+       mov     w20, 0
+.L2843:
+       add     x21, x19, :lo12:.LANCHOR0
+       ldrh    w0, [x21,2040]
+       cmp     w0, w20
+       bls     .L2856
+       mov     w0, w20
+       add     w20, w20, 1
+       bl      FtlBbmMapBadBlock
+       uxth    w20, w20
+       b       .L2843
+.L2856:
+       ldrh    w20, [x21,2124]
+       mov     w23, 65535
+       sub     w20, w20, #1
+       uxth    w20, w20
+.L2845:
+       add     x22, x21, 2112
+       ldrh    w0, [x22,12]
+       sub     w0, w0, #48
+       cmp     w20, w0
+       ble     .L2849
+       mov     w0, w20
+       bl      FtlBbmIsBadBlock
+       cmp     w0, 1
+       beq     .L2846
+       mov     w0, w20
+       bl      FlashTestBlk
+       cbz     w0, .L2847
+       mov     w0, w20
+       bl      FtlBbmMapBadBlock
+       b       .L2846
+.L2847:
+       ldrh    w0, [x21,2112]
+       cmp     w0, w23
+       bne     .L2848
+       strh    w20, [x21,2112]
+       b       .L2846
+.L2848:
+       strh    w20, [x22,4]
+       b       .L2849
+.L2846:
+       sub     w20, w20, #1
+       uxth    w20, w20
+       b       .L2845
+.L2849:
+       adrp    x0, .LANCHOR2
+       add     x19, x19, :lo12:.LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR2
+       ldrh    w1, [x19,2112]
+       ldr     x2, [x0,-88]
+       str     wzr, [x19,2120]
+       lsl     w1, w1, 10
+       strh    wzr, [x19,2114]
+       str     w1, [x2,4]
+       mov     w2, 2
+       ldrh    w1, [x19,2116]
+       ldr     x0, [x0,-88]
+       lsl     w1, w1, 10
+       str     w1, [x0,60]
+       mov     w1, 1
+       bl      FlashEraseBlocks
+       ldrh    w0, [x19,2112]
+       bl      FtlBbmMapBadBlock
+       ldrh    w0, [x19,2116]
+       bl      FtlBbmMapBadBlock
+       bl      FtlBbmTblFlush
+       strh    wzr, [x19,2114]
+       ldr     w0, [x19,2120]
+       ldrh    w1, [x19,2116]
+       add     w0, w0, 1
+       str     w0, [x19,2120]
+       ldrh    w0, [x19,2112]
+       strh    w0, [x19,2116]
+       strh    w1, [x19,2112]
+       bl      FtlBbmTblFlush
+       mov     w0, 0
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
        ldp     x23, x24, [sp,48]
@@ -20172,816 +18846,1654 @@ write_idblock:
        ldp     x27, x28, [sp,80]
        ldp     x29, x30, [sp], 112
        ret
-       .size   write_idblock, .-write_idblock
-       .align  2
-       .global CRC_32
-       .type   CRC_32, %function
-CRC_32:
-       mov     x2, 0
-       mov     x4, x0
-       adrp    x5, :got:gTable_Crc32
-       mov     w0, w2
-.L2715:
-       cmp     w1, w2
-       bls     .L2717
-       ldrb    w3, [x4,x2]
-       add     x2, x2, 1
-       ldr     x6, [x5, #:got_lo12:gTable_Crc32]
-       eor     w3, w3, w0, lsr 24
-       ldr     w3, [x6,w3,uxtw 2]
-       eor     w0, w3, w0, lsl 8
-       b       .L2715
-.L2717:
-       ret
-       .size   CRC_32, .-CRC_32
+       .size   FtlMakeBbt, .-FtlMakeBbt
        .align  2
-       .type   rknand_sys_storage_ioctl, %function
-rknand_sys_storage_ioctl:
-       sub     sp, sp, #528
-       stp     x29, x30, [sp, -48]!
+       .global FtlLowFormat
+       .type   FtlLowFormat, %function
+FtlLowFormat:
+       stp     x29, x30, [sp, -64]!
        add     x29, sp, 0
+       stp     x21, x22, [sp,32]
+       adrp    x21, .LANCHOR2
+       add     x0, x21, :lo12:.LANCHOR2
        stp     x19, x20, [sp,16]
-       str     x21, [sp,32]
-       mov     w19, w1
-       mov     x21, x2
-       ldr     x20, [x0,208]
-       mov     w0, 29187
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2720
-       mov     w0, 29187
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       bhi     .L2721
-       mov     w0, 25726
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2722
-       mov     w0, 25726
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       bhi     .L2723
-       mov     w0, 25601
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2724
-       mov     w0, 25601
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       bhi     .L2725
-       mov     w0, 25364
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       bne     .L2773
-       bl      rknand_dev_flush
-       b       .L2796
-.L2725:
-       mov     w0, 25602
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2727
-       mov     w0, 25603
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2728
-       b       .L2773
-.L2723:
-       mov     w0, 27688
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2729
-       mov     w0, 27688
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       bhi     .L2730
-       mov     w0, 25727
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2731
-       b       .L2773
-.L2730:
-       mov     w0, 27698
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2729
-       mov     w0, 27708
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2729
-       b       .L2773
-.L2721:
-       mov     w0, 29267
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2732
-       mov     w0, 29267
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       bhi     .L2733
-       mov     w0, 29189
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2734
-       mov     w0, 29189
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       bcc     .L2735
-       mov     w0, 29210
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2736
-       mov     w0, 29266
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2737
-       b       .L2773
-.L2733:
-       mov     w0, 30225
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2738
-       mov     w0, 30225
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       bhi     .L2739
-       mov     w0, 29268
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2740
-       mov     w0, 30224
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2741
-       b       .L2773
-.L2739:
-       mov     w0, 30226
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2741
-       mov     w0, 30227
-       movk    w0, 0x4004, lsl 16
-       cmp     w1, w0
-       beq     .L2738
-       b       .L2773
-.L2735:
-       adrp    x0, .LC131
-       add     x0, x0, :lo12:.LC131
-       bl      printk
+       stp     x23, x24, [sp,48]
+       adrp    x20, .LANCHOR0
+       str     wzr, [x0,196]
+       str     wzr, [x0,200]
+       add     x0, x20, :lo12:.LANCHOR0
+       ldrh    w0, [x0,1956]
+       bl      FtlFreeSysBlkQueueInit
+       bl      FtlLoadBbt
+       cbz     w0, .L2858
+       bl      FtlMakeBbt
+.L2858:
+       mov     w0, 0
+.L2859:
+       add     x1, x20, :lo12:.LANCHOR0
+       ldrh    w2, [x1,2032]
+       cmp     w0, w2, lsl 7
+       bge     .L2882
+       add     x3, x21, :lo12:.LANCHOR2
+       ubfiz   x2, x0, 2, 16
+       mvn     w1, w0
+       ldr     x4, [x3,2096]
+       orr     w1, w0, w1, lsl 16
+       add     w0, w0, 1
+       str     w1, [x4,x2]
+       mov     w1, 23752
+       movk    w1, 0xa0f, lsl 16
+       uxth    w0, w0
+       ldr     x3, [x3,2104]
+       str     w1, [x3,x2]
+       b       .L2859
+.L2882:
+       ldrh    w22, [x1,1960]
+       mov     w19, 0
+.L2861:
+       add     x23, x20, :lo12:.LANCHOR0
+       ldrh    w0, [x23,1962]
+       cmp     w0, w22
+       bls     .L2883
+       mov     w0, w22
+       mov     w1, 1
+       add     w22, w22, 1
+       bl      FtlLowFormatEraseBlock
+       add     w0, w19, w0
+       uxth    w22, w22
+       uxth    w19, w0
+       b       .L2861
+.L2883:
+       ldrh    w0, [x23,1952]
+       sub     w1, w19, #3
+       cmp     w1, w0, lsl 1
+       bge     .L2863
+.L2867:
+       mov     w19, 0
+       mov     w22, w19
+       b       .L2864
+.L2863:
+       udiv    w19, w19, w0
+       ldr     w0, [x23,2060]
+       add     w0, w19, w0
+       bl      FtlSysBlkNumInit
+       ldrh    w0, [x23,1956]
+       bl      FtlFreeSysBlkQueueInit
+       ldrh    w19, [x23,1960]
+.L2865:
+       add     x0, x20, :lo12:.LANCHOR0
+       ldrh    w0, [x0,1962]
+       cmp     w0, w19
+       bls     .L2867
+       mov     w0, w19
+       mov     w1, 1
+       add     w19, w19, 1
+       bl      FtlLowFormatEraseBlock
+       uxth    w19, w19
+       b       .L2865
+.L2864:
+       add     x2, x20, :lo12:.LANCHOR0
+       ldrh    w0, [x2,1960]
+       cmp     w0, w22
+       bls     .L2884
+       mov     w0, w22
+       mov     w1, 0
+       add     w22, w22, 1
+       bl      FtlLowFormatEraseBlock
+       add     w0, w19, w0
+       uxth    w22, w22
+       uxth    w19, w0
+       b       .L2864
+.L2884:
+       ldrh    w3, [x2,1952]
+       add     x6, x21, :lo12:.LANCHOR2
+       ldr     w1, [x2,1964]
+       ldrh    w0, [x2,1962]
+       str     w0, [x2,2108]
+       udiv    w4, w1, w3
+       str     w4, [x2,2104]
+       ubfx    x5, x4, 5, 16
+       add     w0, w5, 36
+       strh    w0, [x6,272]
+       mov     w0, 24
+       mul     w0, w3, w0
+       cmp     w19, w0
+       ble     .L2869
+       sub     w1, w1, w19
+       udiv    w1, w1, w3
+       str     w1, [x2,2104]
+       lsr     w1, w1, 5
+       add     w1, w1, 24
+       strh    w1, [x6,272]
+.L2869:
+       add     x2, x21, :lo12:.LANCHOR2
+       ldr     w0, [x2,160]
+       cmp     w0, 1
+       bne     .L2870
+       ldrh    w1, [x2,272]
+       udiv    w0, w19, w3
+       add     w0, w1, w0
+       add     w0, w1, w0, asr 2
+       strh    w0, [x2,272]
+.L2870:
+       add     x6, x20, :lo12:.LANCHOR0
+       ldrh    w1, [x6,2018]
+       cbz     w1, .L2872
+       add     x0, x21, :lo12:.LANCHOR2
+       ldrh    w2, [x0,272]
+       add     w2, w2, w1, lsr 1
+       strh    w2, [x0,272]
+       mul     w2, w1, w3
+       cmp     w2, w19
+       ble     .L2872
+       add     w1, w1, 32
+       str     w4, [x6,2104]
+       add     w1, w5, w1
+       strh    w1, [x0,272]
+.L2872:
+       add     x19, x21, :lo12:.LANCHOR2
+       add     x22, x20, :lo12:.LANCHOR0
+       adrp    x24, .LANCHOR4
+       mov     w23, -1
+       ldr     w1, [x22,2104]
+       ldrh    w0, [x19,272]
+       sub     w0, w1, w0
+       add     x1, x24, :lo12:.LANCHOR4
+       mul     w0, w0, w3
+       str     w0, [x1,192]
+       ldrh    w1, [x22,2026]
+       mul     w0, w0, w1
+       ldrh    w1, [x22,2032]
+       str     w0, [x22,2104]
+       mul     w0, w0, w1
+       str     w0, [x22,2068]
+       bl      FtlBbmTblFlush
+       ldrh    w2, [x22,1962]
+       mov     w1, 0
+       ldr     x0, [x19,-40]
+       lsl     w2, w2, 1
+       bl      ftl_memset
+       strh    wzr, [x21,#:lo12:.LANCHOR2]
+       mov     w0, 1
+       ldrh    w2, [x22,1960]
+       strb    w0, [x19,8]
+       mov     w1, 255
+       ldr     x0, [x20,#:lo12:.LANCHOR0]
+       lsr     w2, w2, 3
+       mov     x21, x24
+       str     wzr, [x19,156]
+       strh    w23, [x19,296]
+       strh    wzr, [x19,298]
+       strb    wzr, [x19,302]
+       strb    wzr, [x19,304]
+       strh    wzr, [x19,2]
+       strb    wzr, [x19,6]
+       bl      ftl_memset
+.L2874:
+       mov     x0, x19
+       bl      make_superblock
+       ldrb    w0, [x19,7]
+       cbnz    w0, .L2875
+       ldrh    w1, [x19]
+       ldr     x0, [x19,-40]
+       strh    w23, [x0,x1,lsl 1]
+       ldrh    w0, [x19]
+       add     w0, w0, 1
+       strh    w0, [x19]
+       b       .L2874
+.L2875:
+       ldr     w0, [x19,196]
+       add     x20, x19, 48
+       str     w0, [x19,12]
+       mov     w22, -1
+       add     w0, w0, 1
+       ldrh    w1, [x19]
+       str     w0, [x19,196]
+       ldr     x0, [x19,-40]
+       ldrh    w2, [x19,4]
+       strh    w2, [x0,x1,lsl 1]
+       strh    wzr, [x20,2]
+       ldrh    w0, [x19]
+       strb    wzr, [x20,6]
+       add     w0, w0, 1
+       strh    w0, [x19,48]
+       mov     w0, 1
+       strb    w0, [x20,8]
+.L2876:
        mov     x0, x20
-       mov     x1, x21
-       mov     x2, 512
-       bl      rk_copy_from_user
-       cbz     x0, .L2742
-.L2746:
-       adrp    x0, .LC132
-       add     x0, x0, :lo12:.LC132
-       b       .L2800
-.L2742:
-       adrp    x0, .LC133
-       ldr     w1, [x20]
-       ldr     w2, [x20,4]
-       add     x0, x0, :lo12:.LC133
+       bl      make_superblock
+       ldrb    w0, [x20,7]
+       cbnz    w0, .L2877
+       ldrh    w1, [x20]
+       ldr     x0, [x19,-40]
+       strh    w22, [x0,x1,lsl 1]
+       ldrh    w0, [x20]
+       add     w0, w0, 1
+       strh    w0, [x20]
+       b       .L2876
+.L2877:
+       ldr     w0, [x19,196]
+       add     x21, x21, :lo12:.LANCHOR4
+       str     w0, [x20,12]
+       add     w0, w0, 1
+       ldrh    w1, [x20]
+       str     w0, [x19,196]
+       ldr     x0, [x19,-40]
+       ldrh    w2, [x20,4]
+       mov     w20, -1
+       strh    w2, [x0,x1,lsl 1]
+       strh    w20, [x19,96]
+       bl      FtlFreeSysBlkQueueOut
+       strh    w0, [x19,280]
+       ldr     w0, [x21,192]
+       strh    w0, [x19,286]
+       ldr     w0, [x19,196]
+       str     w0, [x19,288]
+       add     w0, w0, 1
+       strh    wzr, [x19,282]
+       strh    w20, [x19,284]
+       str     w0, [x19,196]
+       bl      FtlVpcTblFlush
+       bl      FtlSysBlkInit
+       cbnz    w0, .L2878
+       adrp    x0, .LANCHOR1+532
+       mov     w1, 1
+       str     w1, [x0,#:lo12:.LANCHOR1+532]
+.L2878:
+       mov     w0, 0
+       ldp     x19, x20, [sp,16]
+       ldp     x21, x22, [sp,32]
+       ldp     x23, x24, [sp,48]
+       ldp     x29, x30, [sp], 64
+       ret
+       .size   FtlLowFormat, .-FtlLowFormat
+       .align  2
+       .global FtlReInitForSDUpdata
+       .type   FtlReInitForSDUpdata, %function
+FtlReInitForSDUpdata:
+       stp     x29, x30, [sp, -64]!
+       add     x29, sp, 0
+       stp     x19, x20, [sp,16]
+       adrp    x20, __stack_chk_guard
+       adrp    x19, .LANCHOR4
+       ldr     x0, [x20,#:lo12:__stack_chk_guard]
+       str     x0, [x29,56]
+       add     x0, x19, :lo12:.LANCHOR4
+       ldr     x0, [x0,32]
+       bl      FlashInit
+       mov     w1, 0
+       cbnz    w0, .L2886
+       bl      FlashLoadFactorBbt
+       cbz     w0, .L2887
+       bl      FlashMakeFactorBbt
+.L2887:
+       add     x19, x19, :lo12:.LANCHOR4
+       ldr     x0, [x19,80]
+       bl      FlashReadIdbDataRaw
+       cbz     w0, .L2888
+       mov     w1, 0
+       mov     w2, 16
+       add     x0, x29, 40
+       bl      FlashReadFacBbtData
+       mov     w0, 0
+       ldr     w2, [x29,40]
+       mov     w1, w0
+       mov     w4, 1
+.L2890:
+       lsl     w3, w4, w1
+       add     w1, w1, 1
+       tst     w3, w2
+       cset    w3, ne
+       cmp     w1, 16
+       add     w0, w0, w3
+       bne     .L2890
+       cmp     w0, 6
+       bhi     .L2891
+       adrp    x0, .LANCHOR0+9
+       strb    w1, [x0,#:lo12:.LANCHOR0+9]
+       b       .L2892
+.L2891:
+       mov     w1, 0
+       mov     w4, 1
+.L2894:
+       lsl     w3, w4, w1
+       add     w1, w1, 1
+       tst     w3, w2
+       cset    w3, ne
+       cmp     w1, 24
+       add     w0, w0, w3
+       bne     .L2894
+       cmp     w0, 17
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       bls     .L2916
+       mov     w1, 36
+.L2916:
+       strb    w1, [x0,9]
+.L2892:
+       adrp    x0, .LANCHOR0
+       add     x0, x0, :lo12:.LANCHOR0
+       ldrb    w1, [x0,9]
+       strh    w1, [x0,194]
+.L2888:
+       adrp    x0, .LC73
+       adrp    x1, .LC74
+       add     x1, x1, :lo12:.LC74
+       add     x0, x0, :lo12:.LC73
+       adrp    x19, .LANCHOR0
        bl      printk
-       ldr     w19, [x20,4]
-       cmp     w19, 8
-       bhi     .L2799
-       bl      rknand_device_unlock
-       ldr     w0, [x20]
-       mov     w1, w19
-       mov     x2, x20
-       bl      IdBlockReadData
-       bl      rknand_device_unlock
-       mov     x0, x21
-       mov     x1, x20
-       ubfiz   x2, x19, 9, 23
-       bl      rk_copy_to_user
-       cbz     x0, .L2796
-       adrp    x0, .LC134
-       add     x0, x0, :lo12:.LC134
-.L2800:
+       add     x19, x19, :lo12:.LANCHOR0
+       add     x0, x19, 168
+       bl      FtlConstantsInit
+       bl      FtlVariablesInit
+       ldrh    w0, [x19,1956]
+       mov     w19, 1
+       bl      FtlFreeSysBlkQueueInit
+.L2896:
+       bl      FtlLoadBbt
+       cbz     w0, .L2897
+.L2918:
+       bl      FtlLowFormat
+       cmp     w19, 3
+       bhi     .L2919
+       add     w19, w19, 1
+       b       .L2896
+.L2919:
+       mov     w1, -1
+       b       .L2886
+.L2897:
+       bl      FtlSysBlkInit
+       cbnz    w0, .L2918
+       adrp    x1, .LANCHOR1+532
+       mov     w2, 1
+       str     w2, [x1,#:lo12:.LANCHOR1+532]
+       mov     w1, w0
+.L2886:
+       ldr     x2, [x29,56]
+       mov     w0, w1
+       ldr     x1, [x20,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2902
+       bl      __stack_chk_fail
+.L2902:
+       ldp     x19, x20, [sp,16]
+       ldp     x29, x30, [sp], 64
+       ret
+       .size   FtlReInitForSDUpdata, .-FtlReInitForSDUpdata
+       .align  2
+       .global flash_boot_enter_slc_mode
+       .type   flash_boot_enter_slc_mode, %function
+flash_boot_enter_slc_mode:
+       adrp    x1, .LANCHOR0+1872
+       uxtb    w0, w0
+       stp     x29, x30, [sp, -16]!
+       add     x29, sp, 0
+       ldr     w2, [x1,#:lo12:.LANCHOR0+1872]
+       mov     w1, 12336
+       movk    w1, 0x5638, lsl 16
+       cmp     w2, w1
+       bne     .L2920
+       bl      flash_enter_slc_mode
+.L2920:
+       ldp     x29, x30, [sp], 16
+       ret
+       .size   flash_boot_enter_slc_mode, .-flash_boot_enter_slc_mode
+       .align  2
+       .global flash_boot_exit_slc_mode
+       .type   flash_boot_exit_slc_mode, %function
+flash_boot_exit_slc_mode:
+       adrp    x1, .LANCHOR0+1872
+       uxtb    w0, w0
+       stp     x29, x30, [sp, -16]!
+       add     x29, sp, 0
+       ldr     w2, [x1,#:lo12:.LANCHOR0+1872]
+       mov     w1, 12336
+       movk    w1, 0x5638, lsl 16
+       cmp     w2, w1
+       bne     .L2922
+       bl      flash_exit_slc_mode
+.L2922:
+       ldp     x29, x30, [sp], 16
+       ret
+       .size   flash_boot_exit_slc_mode, .-flash_boot_exit_slc_mode
+       .align  2
+       .global IdBlockReadData
+       .type   IdBlockReadData, %function
+IdBlockReadData:
+       stp     x29, x30, [sp, -144]!
+       add     x29, sp, 0
+       stp     x19, x20, [sp,16]
+       adrp    x19, .LANCHOR0
+       mov     x20, x2
+       add     x19, x19, :lo12:.LANCHOR0
+       stp     x21, x22, [sp,32]
+       mov     w22, w0
+       ldr     x0, [x19,744]
+       stp     x23, x24, [sp,48]
+       stp     x25, x26, [sp,64]
+       stp     x27, x28, [sp,80]
+       ldr     w3, [x19,12]
+       mov     w26, w1
+       ldrb    w21, [x0,9]
+       adrp    x0, .LC122
+       add     x0, x0, :lo12:.LC122
+       mov     w1, w22
+       mov     w2, w26
+       mov     w23, 0
+       mul     w21, w3, w21
        bl      printk
-       b       .L2799
-.L2734:
-       adrp    x0, .LC135
-       add     x0, x0, :lo12:.LC135
+       ldr     x0, [x19,744]
+       mov     w6, 4
+       uxth    w21, w21
+       adrp    x7, .LANCHOR4
+       ldrb    w28, [x0,9]
+       udiv    w0, w22, w21
+       msub    w21, w0, w21, w22
+       sub     w5, w22, w21
+       mul     w3, w21, w28
+       ubfx    x3, x3, 2, 2
+.L2925:
+       cmp     w23, w26
+       bcs     .L2931
+       ldrb    w1, [x19,120]
+       sub     w24, w6, w3
+       add     w4, w23, w21
+       lsr     w4, w4, 2
+       uxth    w24, w24
+       add     x0, x19, x4, uxth 1
+       ldrh    w0, [x0,196]
+       cbz     w1, .L2926
+       ldr     w2, [x19,1872]
+       mov     w1, 12336
+       movk    w1, 0x5638, lsl 16
+       uxth    w4, w4
+       cmp     w2, w1
+       csel    w0, w4, w0, eq
+.L2926:
+       add     w3, w3, w5
+       add     x27, x7, :lo12:.LANCHOR4
+       ldrb    w4, [x19,1944]
+       madd    w25, w0, w28, w3
+       ldr     x0, [x19,744]
+       ldr     x2, [x27,80]
+       str     x6, [x29,96]
+       ldrb    w1, [x0,9]
+       ldrb    w0, [x27,74]
+       str     x5, [x29,104]
+       str     x7, [x29,112]
+       str     x4, [x29,136]
+       str     x2, [x29,120]
+       str     x1, [x29,128]
+       bl      FlashBchSel
+       mov     w0, 0
+       bl      flash_boot_enter_slc_mode
+       ldr     x1, [x29,128]
+       mov     x3, 0
+       ldr     x2, [x29,120]
+       mov     w0, 0
+       udiv    w1, w25, w1
+       bl      FlashReadPage
+       mov     w0, 0
+       bl      flash_boot_exit_slc_mode
+       ldr     x4, [x29,136]
+       mov     w0, w4
+       bl      FlashBchSel
+       ubfiz   x0, x23, 9, 16
+       ldr     x1, [x27,80]
+       add     x0, x20, x0
+       mov     w2, 2048
+       add     w23, w24, w23
+       bl      ftl_memcpy
+       uxth    w23, w23
+       mov     w3, 0
+       ldr     x6, [x29,96]
+       ldr     x5, [x29,104]
+       ldr     x7, [x29,112]
+       b       .L2925
+.L2931:
+       adrp    x0, .LC123
+       mov     w1, w22
+       mov     w2, w26
+       mov     w3, 0
+       add     x0, x0, :lo12:.LC123
        bl      printk
-       mov     x0, x20
-       mov     x1, x21
-       mov     x2, 4096
-       bl      rk_copy_from_user
-       cbnz    x0, .L2746
-       ldr     w1, [x20]
-       adrp    x0, .LC136
-       ldr     w2, [x20,4]
-       add     x0, x0, :lo12:.LC136
+       mov     w0, 0
+       ldp     x19, x20, [sp,16]
+       ldp     x21, x22, [sp,32]
+       ldp     x23, x24, [sp,48]
+       ldp     x25, x26, [sp,64]
+       ldp     x27, x28, [sp,80]
+       ldp     x29, x30, [sp], 144
+       ret
+       .size   IdBlockReadData, .-IdBlockReadData
+       .align  2
+       .global IDBlockWriteData
+       .type   IDBlockWriteData, %function
+IDBlockWriteData:
+       stp     x29, x30, [sp, -208]!
+       add     x29, sp, 0
+       stp     x19, x20, [sp,16]
+       adrp    x19, .LANCHOR0
+       adrp    x20, __stack_chk_guard
+       add     x19, x19, :lo12:.LANCHOR0
+       stp     x27, x28, [sp,80]
+       mov     w28, w1
+       ldr     x1, [x19,744]
+       stp     x23, x24, [sp,48]
+       stp     x21, x22, [sp,32]
+       stp     x25, x26, [sp,64]
+       mov     w25, w0
+       ldr     x0, [x20,#:lo12:__stack_chk_guard]
+       ldrb    w22, [x1,9]
+       mov     x23, x2
+       str     x0, [x29,200]
+       mov     w1, w25
+       ldr     w0, [x19,12]
+       mov     w2, w28
+       mov     w24, 0
+       mul     w22, w0, w22
+       adrp    x0, .LC124
+       add     x0, x0, :lo12:.LC124
+       uxth    w22, w22
        bl      printk
-       adrp    x0, :got:g_idb_buffer
-       mov     x19, x0
-       ldr     x21, [x0, #:got_lo12:g_idb_buffer]
-       ldr     x1, [x21]
-       cbz     x1, .L2747
-.L2750:
-       ldr     w2, [x20,4]
-       cmp     w2, 4088
-       bls     .L2748
-       b       .L2799
-.L2747:
+       mov     w0, 0
+       bl      flash_boot_enter_slc_mode
+       ldrh    w1, [x19,188]
+       mov     w2, 0
+       mov     w0, 0
+       udiv    w1, w25, w1
+       bl      FlashEraseBlock
+       mov     w0, 0
+       bl      flash_boot_exit_slc_mode
+       udiv    w27, w25, w22
+       ldr     x0, [x19,744]
+       adrp    x5, .LANCHOR4
+       ldrb    w21, [x0,9]
+       msub    w27, w27, w22, w25
+       sub     w22, w25, w27
+.L2933:
+       cmp     w24, w28
+       bcs     .L2948
+       add     w4, w24, w27
+       lsr     w4, w4, 2
+       uxth    w0, w4
+       and     w4, w4, 65535
+       cbz     w0, .L2934
+       add     x1, x19, 196
+       add     w2, w4, 1
+       ldrh    w3, [x1,w2,sxtw 1]
+       ldrb    w1, [x19,120]
+       cbz     w1, .L2935
+       ldr     w2, [x19,1872]
+       mov     w1, 12336
+       movk    w1, 0x5638, lsl 16
+       cmp     w2, w1
+       bne     .L2935
+       add     w3, w0, 1
+       uxth    w3, w3
+.L2935:
+       sub     w3, w3, #1
+       str     wzr, [x29,140]
+       lsl     w3, w3, 2
+       str     w3, [x29,136]
+.L2934:
+       add     x1, x19, 196
+       ldrh    w26, [x1,w4,sxtw 1]
+       ldrb    w1, [x19,120]
+       cbz     w1, .L2936
+       ldr     w2, [x19,1872]
+       mov     w1, 12336
+       movk    w1, 0x5638, lsl 16
+       cmp     w2, w1
+       csel    w26, w26, w0, ne
+.L2936:
+       add     x0, x5, :lo12:.LANCHOR4
+       ldrb    w4, [x19,1944]
+       madd    w3, w26, w21, w22
+       ubfiz   x2, x24, 9, 16
+       str     x5, [x29,120]
+       ldrb    w0, [x0,74]
+       add     x2, x23, x2
+       str     x4, [x29,112]
+       add     w24, w24, 4
+       str     x3, [x29,96]
+       str     x2, [x29,104]
+       bl      FlashBchSel
+       mov     w0, 0
+       uxth    w24, w24
+       bl      flash_boot_enter_slc_mode
+       ldr     x0, [x19,744]
+       ldr     x3, [x29,96]
+       ldr     x2, [x29,104]
+       ldrb    w1, [x0,9]
+       mov     w0, 0
+       udiv    w1, w3, w1
+       add     x3, x29, 136
+       bl      FlashProgPage
+       mov     w0, 0
+       bl      flash_boot_exit_slc_mode
+       ldr     x4, [x29,112]
+       mov     w0, w4
+       bl      FlashBchSel
+       udiv    w1, w22, w21
+       add     w2, w26, 1
+       mov     w0, 0
+       bl      FlashPageProgMsbFFData
+       ldr     x5, [x29,120]
+       b       .L2933
+.L2948:
+       adrp    x0, .LC125
+       mov     w1, w25
+       mov     w2, w28
+       add     x0, x0, :lo12:.LC125
+       mov     w3, 0
+       bl      printk
+       ldr     x2, [x29,200]
+       mov     w0, 0
+       ldr     x1, [x20,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L2938
+       bl      __stack_chk_fail
+.L2938:
+       ldp     x19, x20, [sp,16]
+       ldp     x21, x22, [sp,32]
+       ldp     x23, x24, [sp,48]
+       ldp     x25, x26, [sp,64]
+       ldp     x27, x28, [sp,80]
+       ldp     x29, x30, [sp], 208
+       ret
+       .size   IDBlockWriteData, .-IDBlockWriteData
+       .align  2
+       .global write_idblock
+       .type   write_idblock, %function
+write_idblock:
+       stp     x29, x30, [sp, -128]!
+       add     x29, sp, 0
+       stp     x23, x24, [sp,48]
+       adrp    x24, .LANCHOR0
+       mov     x23, x2
+       stp     x25, x26, [sp,64]
+       mov     w25, w0
+       add     x0, x24, :lo12:.LANCHOR0
+       stp     x19, x20, [sp,16]
+       stp     x21, x22, [sp,32]
+       stp     x27, x28, [sp,80]
+       mov     x21, x1
+       mov     w2, 6
+       ldr     x1, [x0,744]
+       ldr     w26, [x0,12]
+       mov     x0, 59392
+       movk    x0, 0x3, lsl 16
+       ldrb    w22, [x1,9]
        mov     w1, 192
-       mov     x0, 260096
        movk    w1, 0x240, lsl 16
-       mov     w2, 6
        bl      kmalloc_order_trace
-       str     x0, [x21]
-       cbnz    x0, .L2750
-       b       .L2799
-.L2748:
-       ldr     w0, [x20]
-       mov     w1, 55296
-       movk    w1, 0x3, lsl 16
-       cmp     w0, w1
-       bhi     .L2799
-       ldr     x19, [x19, #:got_lo12:g_idb_buffer]
-       uxtw    x2, w2
-       ldr     x1, [x19]
-       add     x0, x1, x0, uxtw
-       add     x1, x20, 8
-       bl      memcpy
-       b       .L2796
-.L2737:
-       adrp    x0, .LC137
-       add     x0, x0, :lo12:.LC137
-       bl      printk
-       mov     x0, x20
+       str     x24, [x29,120]
+       mov     x20, x0
+       mov     w0, -1
+       cbz     x20, .L2959
+       add     w19, w25, 511
+       lsr     w19, w19, 9
+       cmp     w19, 255
+       bhi     .L2951
+       ubfiz   x0, x19, 9, 23
+       mov     w2, 256
+       add     x0, x21, x0
        mov     x1, x21
-       mov     x2, 28
-       bl      rk_copy_from_user
-       cbnz    x0, .L2746
-       ldr     w1, [x20]
-       adrp    x0, .LC138
-       ldr     w2, [x20,4]
-       add     x0, x0, :lo12:.LC138
+       sub     w2, w2, w19
+       bl      memcpy
+.L2951:
+       add     w19, w19, 128
+       mov     w0, 256
+       cmp     w19, 256
+       mov     x1, x23
+       csel    w19, w19, w0, ls
+       adrp    x0, .LC126
+       add     x0, x0, :lo12:.LC126
+       mov     w2, 4
+       mov     w3, 5
+       bl      rknand_print_hex
+       ldr     x0, [x29,120]
+       ldr     w1, [x21,512]
+       add     x27, x0, :lo12:.LANCHOR0
+       adrp    x0, .LC127
+       add     x0, x0, :lo12:.LC127
+       ldrb    w2, [x27,9]
        bl      printk
-       ldr     w1, [x20]
-       mov     w0, 59392
-       movk    w0, 0x3, lsl 16
+       ldrb    w0, [x27,9]
+       ldr     w1, [x21,512]
        cmp     w1, w0
-       bhi     .L2799
-       adrp    x19, :got:g_idb_buffer
-       ldr     x19, [x19, #:got_lo12:g_idb_buffer]
-       ldr     x0, [x19]
-       cbz     x0, .L2799
-       ldr     w21, [x20,4]
-       bl      CRC_32
-       cmp     w21, w0
-       beq     .L2751
-.L2756:
-       mov     x0, -2
-       b       .L2719
-.L2751:
-       bl      rknand_device_unlock
-       ldr     x1, [x19]
-       add     x2, x20, 8
-       ldr     w0, [x20]
-       bl      write_idblock
-       bl      rknand_device_unlock
-       ldr     x0, [x19]
-       bl      kfree
-       str     xzr, [x19]
-       b       .L2796
-.L2736:
-       adrp    x0, .LC139
-       add     x0, x0, :lo12:.LC139
+       bls     .L2952
+       str     w0, [x21,512]
+.L2952:
+       adrp    x0, .LC128
+       mov     w2, w25
+       mul     w22, w22, w26
+       add     x0, x0, :lo12:.LC128
+       mov     w1, w19
+       mov     x24, 0
+       adrp    x26, .LC129
        bl      printk
+       adrp    x27, .LC130
+       adrp    x28, .LC131
+       lsl     w0, w19, 7
+       uxth    w22, w22
+       str     w0, [x29,116]
+       mov     w25, w24
+       add     x26, x26, :lo12:.LC129
+       add     x27, x27, :lo12:.LC130
+       add     x28, x28, :lo12:.LC131
+.L2957:
+       ldr     x1, [x29,120]
+       mov     w8, w24
+       ldr     w0, [x23,x24,lsl 2]
+       add     x1, x1, :lo12:.LANCHOR0
+       ldrh    w1, [x1,194]
+       cmp     w0, w1
+       bcs     .L2953
+       adrp    x1, .LANCHOR4+68
+       ldr     w1, [x1,#:lo12:.LANCHOR4+68]
+       cmp     w0, w1
+       bcc     .L2953
+       mov     w1, 0
+       mov     x2, 512
        mov     x0, x20
-       bl      ReadFlashInfo
-       mov     x0, x21
-       mov     x1, x20
-       mov     x2, 11
-       b       .L2791
-.L2720:
-       adrp    x0, .LC140
-       add     x0, x0, :lo12:.LC140
-       bl      printk
-       bl      rknand_device_unlock
-       bl      FtlReInitForSDUpdata
-       mov     w19, w0
-       bl      rknand_device_unlock
-       cbnz    w19, .L2799
-       bl      nand_blk_add_whole_disk
-       bl      rknand_device_unlock
+       str     x8, [x29,104]
+       bl      memset
+       ldr     w0, [x23,x24,lsl 2]
        mov     w1, w19
-       mov     w2, 64
-       mov     x0, x20
-       bl      FlashReadFacBbtData
-       bl      rknand_device_unlock
-       adrp    x0, .LC141
-       mov     x1, x20
-       add     x0, x0, :lo12:.LC141
-       mov     w2, 4
-       mov     w3, 8
-       bl      rknand_print_hex
-       mov     x0, x21
-       mov     x1, x20
-       mov     x2, 64
-       b       .L2791
-.L2732:
-       adrp    x0, .LC142
-       add     x0, x0, :lo12:.LC142
-       bl      printk
-       adrp    x0, :got:gpDrmKeyInfo
-       mov     x1, x20
-       mov     x2, 4
-       ldr     x0, [x0, #:got_lo12:gpDrmKeyInfo]
-       ldr     x0, [x0]
-       ldr     w0, [x0,20]
-       str     w0, [x20]
-       mov     x0, x21
-       b       .L2791
-.L2740:
-       adrp    x0, .LC143
-       add     x0, x0, :lo12:.LC143
+       mov     x2, x21
+       mul     w0, w22, w0
+       bl      IDBlockWriteData
+       ldr     w0, [x23,x24,lsl 2]
+       mov     w1, w19
+       mov     x2, x20
+       mul     w0, w22, w0
+       bl      IdBlockReadData
+       ldr     x8, [x29,104]
+       mov     x0, 0
+.L2954:
+       ldr     w1, [x29,116]
+       mov     w3, w0
+       cmp     w0, w1
+       bcs     .L2964
+       ldr     w4, [x20,x0,lsl 2]
+       mov     x7, x0
+       add     x0, x0, 1
+       add     x1, x21, x0, lsl 2
+       ldr     w5, [x1,-4]
+       cmp     w4, w5
+       beq     .L2954
+       ldr     w2, [x23,x24,lsl 2]
+       mov     w1, w8
+       mov     x0, x26
+       str     x7, [x29,104]
+       bl      printk
+       ldr     x7, [x29,104]
+       mov     x0, x27
+       mov     w2, 4
+       mov     w3, 256
+       and     x4, x7, -256
+       lsl     x4, x4, 2
+       str     x4, [x29,104]
+       add     x1, x21, x4
+       bl      rknand_print_hex
+       ldr     x4, [x29,104]
+       mov     w3, 256
+       mov     x0, x28
+       mov     w2, 4
+       add     x1, x20, x4
+       bl      rknand_print_hex
+       mov     x0, x20
+       mov     w1, 0
+       mov     x2, 512
+       bl      memset
+       ldr     w0, [x23,x24,lsl 2]
+       mov     w1, 4
+       mov     x2, x20
+       mul     w0, w22, w0
+       bl      IDBlockWriteData
+       adrp    x0, .LC132
+       add     x0, x0, :lo12:.LC132
+       bl      printk
+       b       .L2953
+.L2964:
+       add     w25, w25, 1
+.L2953:
+       add     x24, x24, 1
+       cmp     x24, 5
+       bne     .L2957
+       mov     x0, x20
+       bl      kfree
+       cmp     w25, wzr
+       csetm   w0, eq
+.L2959:
+       ldp     x19, x20, [sp,16]
+       ldp     x21, x22, [sp,32]
+       ldp     x23, x24, [sp,48]
+       ldp     x25, x26, [sp,64]
+       ldp     x27, x28, [sp,80]
+       ldp     x29, x30, [sp], 128
+       ret
+       .size   write_idblock, .-write_idblock
+       .align  2
+       .global CRC_32
+       .type   CRC_32, %function
+CRC_32:
+       mov     x2, 0
+       adrp    x3, .LANCHOR1
+       mov     x5, x0
+       add     x3, x3, :lo12:.LANCHOR1
+       mov     w0, w2
+.L2966:
+       cmp     w1, w2
+       bls     .L2968
+       ldrb    w4, [x5,x2]
+       add     x6, x3, 3016
+       add     x2, x2, 1
+       eor     w4, w4, w0, lsr 24
+       ldr     w4, [x6,w4,uxtw 2]
+       eor     w0, w4, w0, lsl 8
+       b       .L2966
+.L2968:
+       ret
+       .size   CRC_32, .-CRC_32
+       .align  2
+       .type   rknand_sys_storage_ioctl, %function
+rknand_sys_storage_ioctl:
+       sub     sp, sp, #528
+       stp     x29, x30, [sp, -48]!
+       add     x29, sp, 0
+       stp     x21, x22, [sp,32]
+       stp     x19, x20, [sp,16]
+       adrp    x22, __stack_chk_guard
+       mov     w19, w1
+       ldr     x20, [x0,208]
+       mov     w0, 29187
+       movk    w0, 0x4004, lsl 16
+       mov     x21, x2
+       ldr     x1, [x22,#:lo12:__stack_chk_guard]
+       cmp     w19, w0
+       str     x1, [x29,568]
+       beq     .L2971
+       mov     w0, 29187
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       bhi     .L2972
+       mov     w0, 25726
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2973
+       mov     w0, 25726
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       bhi     .L2974
+       mov     w0, 25601
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2975
+       mov     w0, 25601
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       bhi     .L2976
+       mov     w0, 25364
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       bne     .L3026
+       bl      rknand_dev_flush
+       b       .L3060
+.L2976:
+       mov     w0, 25602
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2978
+       mov     w0, 25603
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2979
+       b       .L3026
+.L2974:
+       mov     w0, 27688
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2980
+       mov     w0, 27688
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       bhi     .L2981
+       mov     w0, 25727
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2982
+       b       .L3026
+.L2981:
+       mov     w0, 27698
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2980
+       mov     w0, 27708
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2980
+       b       .L3026
+.L2972:
+       mov     w0, 29267
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2983
+       mov     w0, 29267
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       bhi     .L2984
+       mov     w0, 29189
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2985
+       mov     w0, 29189
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       bcc     .L2986
+       mov     w0, 29210
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2987
+       mov     w0, 29266
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2988
+       b       .L3026
+.L2984:
+       mov     w0, 30225
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2989
+       mov     w0, 30225
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       bhi     .L2990
+       mov     w0, 29268
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2991
+       mov     w0, 30224
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2992
+       b       .L3026
+.L2990:
+       mov     w0, 30226
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2992
+       mov     w0, 30227
+       movk    w0, 0x4004, lsl 16
+       cmp     w19, w0
+       beq     .L2989
+       b       .L3026
+.L2986:
+       adrp    x0, .LC133
+       add     x0, x0, :lo12:.LC133
+       bl      printk
+       mov     x0, x20
+       mov     x1, x21
+       mov     x2, 512
+       bl      rk_copy_from_user
+       cbz     x0, .L2993
+.L2997:
+       adrp    x0, .LC134
+       add     x0, x0, :lo12:.LC134
+       b       .L3063
+.L2993:
+       adrp    x0, .LC135
+       ldr     w1, [x20]
+       ldr     w2, [x20,4]
+       add     x0, x0, :lo12:.LC135
        bl      printk
+       ldr     w19, [x20,4]
+       cmp     w19, 8
+       bhi     .L3062
        bl      rknand_device_unlock
-       mov     w1, 264
-       mov     w2, 2
-       mov     x3, x20
-       mov     w0, 16
-       bl      FtlRead
+       ldr     w0, [x20]
+       mov     w1, w19
+       mov     x2, x20
+       bl      IdBlockReadData
        bl      rknand_device_unlock
        mov     x0, x21
        mov     x1, x20
-       mov     x2, 1024
-       b       .L2791
-.L2724:
-       adrp    x0, .LC144
-       add     x19, x29, 56
-       add     x0, x0, :lo12:.LC144
+       ubfiz   x2, x19, 9, 23
+       bl      rk_copy_to_user
+       cbz     x0, .L3060
+       adrp    x0, .LC136
+       add     x0, x0, :lo12:.LC136
+       b       .L3063
+.L2985:
+       adrp    x0, .LC137
+       add     x0, x0, :lo12:.LC137
        bl      printk
-       mov     x0, x19
+       mov     x0, x20
        mov     x1, x21
-       mov     x2, 520
+       mov     x2, 4096
        bl      rk_copy_from_user
-       mov     x20, x0
-       cbnz    x0, .L2746
-       ldr     w1, [x19]
-       mov     w0, 21060
-       movk    w0, 0x4b4d, lsl 16
-       cmp     w1, w0
-       beq     .L2753
-.L2754:
-       mov     x19, -1
-       b       .L2745
-.L2753:
-       ldr     w0, [x19,4]
-       cmp     w0, 512
-       bhi     .L2754
-       adrp    x1, :got:gpDrmKeyInfo
-       mov     x0, x19
-       mov     x2, 512
-       ldr     x1, [x1, #:got_lo12:gpDrmKeyInfo]
-       ldr     x1, [x1]
+       cbnz    x0, .L2997
+       ldr     w1, [x20]
+       adrp    x0, .LC138
+       ldr     w2, [x20,4]
+       add     x0, x0, :lo12:.LC138
+       bl      printk
+       adrp    x0, .LANCHOR4
+       add     x21, x0, :lo12:.LANCHOR4
+       mov     x19, x0
+       ldr     x1, [x21,448]
+       cbz     x1, .L2998
+.L3001:
+       ldr     w2, [x20,4]
+       cmp     w2, 4088
+       bls     .L2999
+       b       .L3062
+.L2998:
+       mov     w1, 192
+       mov     x0, 260096
+       movk    w1, 0x240, lsl 16
+       mov     w2, 6
+       bl      kmalloc_order_trace
+       str     x0, [x21,448]
+       cbnz    x0, .L3001
+       b       .L3062
+.L2999:
+       ldr     w0, [x20]
+       mov     w1, 55296
+       movk    w1, 0x3, lsl 16
+       cmp     w0, w1
+       bhi     .L3062
+       add     x19, x19, :lo12:.LANCHOR4
+       uxtw    x2, w2
+       ldr     x1, [x19,448]
+       add     x0, x1, x0, uxtw
+       add     x1, x20, 8
        bl      memcpy
-       adrp    x0, :got:SecureBootCheckOK
-       ldr     x0, [x0, #:got_lo12:SecureBootCheckOK]
-       ldr     w1, [x0]
-       mov     w0, 5161
-       movk    w0, 0xc059, lsl 16
-       cmp     w1, w0
-       beq     .L2755
-       str     w20, [x19,8]
-       add     x0, x19, 64
-       str     w20, [x19,12]
-       mov     w1, w20
-       mov     x2, 128
-       bl      memset
-.L2755:
-       str     wzr, [x19,16]
-       add     x0, x19, 256
-       mov     w1, 0
-       mov     x2, 256
-       bl      memset
-       b       .L2795
-.L2727:
-       adrp    x0, .LC145
-       add     x19, x29, 56
-       add     x0, x0, :lo12:.LC145
+       b       .L3060
+.L2988:
+       adrp    x0, .LC139
+       add     x0, x0, :lo12:.LC139
        bl      printk
-       mov     x0, x19
+       mov     x0, x20
        mov     x1, x21
-       mov     x2, 520
+       mov     x2, 28
        bl      rk_copy_from_user
-       cbnz    x0, .L2746
-       ldr     w1, [x19]
+       cbnz    x0, .L2997
+       ldr     w1, [x20]
+       adrp    x0, .LC140
+       ldr     w2, [x20,4]
+       add     x0, x0, :lo12:.LC140
+       bl      printk
+       ldr     w1, [x20]
+       mov     w0, 59392
+       movk    w0, 0x3, lsl 16
+       cmp     w1, w0
+       bhi     .L3062
+       adrp    x19, .LANCHOR4
+       add     x19, x19, :lo12:.LANCHOR4
+       ldr     x0, [x19,448]
+       cbz     x0, .L3062
+       bl      CRC_32
+       ldr     w1, [x20,4]
+       cmp     w1, w0
+       beq     .L3002
+.L3008:
+       mov     x0, -2
+       b       .L2970
+.L3002:
+       bl      rknand_device_unlock
+       ldr     x1, [x19,448]
+       add     x2, x20, 8
+       ldr     w0, [x20]
+       bl      write_idblock
+       bl      rknand_device_unlock
+       ldr     x0, [x19,448]
+       bl      kfree
+       str     xzr, [x19,448]
+       b       .L3060
+.L2987:
+       adrp    x0, .LC141
+       add     x0, x0, :lo12:.LC141
+       bl      printk
+       mov     x0, x20
+       bl      ReadFlashInfo
+       mov     x0, x21
+       mov     x1, x20
+       mov     x2, 11
+       b       .L3059
+.L2971:
+       adrp    x0, .LC142
+       add     x0, x0, :lo12:.LC142
+       bl      printk
+       bl      rknand_device_unlock
+       bl      FtlReInitForSDUpdata
+       mov     w19, w0
+       bl      rknand_device_unlock
+       cbnz    w19, .L3062
+       bl      nand_blk_add_whole_disk
+       bl      rknand_device_unlock
+       mov     w1, w19
+       mov     w2, 64
+       mov     x0, x20
+       bl      FlashReadFacBbtData
+       bl      rknand_device_unlock
+       adrp    x0, .LC143
+       mov     x1, x20
+       add     x0, x0, :lo12:.LC143
+       mov     w2, 4
+       mov     w3, 8
+       bl      rknand_print_hex
+       mov     x0, x21
+       mov     x1, x20
+       mov     x2, 64
+.L3059:
+       bl      rk_copy_to_user
+       b       .L3053
+.L2983:
+       adrp    x0, .LC144
+       add     x0, x0, :lo12:.LC144
+       bl      printk
+       adrp    x0, .LANCHOR4+456
+       mov     x1, x20
+       mov     x2, 4
+       ldr     x0, [x0,#:lo12:.LANCHOR4+456]
+       ldr     w0, [x0,20]
+       str     w0, [x20]
+       mov     x0, x21
+       b       .L3059
+.L2991:
+       adrp    x0, .LC145
+       add     x0, x0, :lo12:.LC145
+       bl      printk
+       bl      rknand_device_unlock
+       mov     w1, 2
+       mov     x2, x20
+       mov     w0, 520
+       bl      FtlVendorPartRead
+       bl      rknand_device_unlock
+       mov     x0, x21
+       mov     x1, x20
+       mov     x2, 1024
+       b       .L3059
+.L2975:
+       adrp    x0, .LC146
+       add     x0, x0, :lo12:.LC146
+       bl      printk
+       add     x0, x29, 48
+       mov     x1, x21
+       mov     x2, 520
+       bl      rk_copy_from_user
+       mov     x19, x0
+       cbnz    x0, .L2997
+       ldr     w1, [x29,48]
        mov     w0, 21060
        movk    w0, 0x4b4d, lsl 16
        cmp     w1, w0
-       bne     .L2754
-       ldr     w0, [x19,4]
+       beq     .L3004
+.L3005:
+       mov     x19, -1
+       b       .L2996
+.L3004:
+       ldr     w0, [x29,52]
        cmp     w0, 512
-       bhi     .L2754
-       adrp    x0, :got:SecureBootCheckOK
-       ldr     x0, [x0, #:got_lo12:SecureBootCheckOK]
-       ldr     w1, [x0]
+       bhi     .L3005
+       adrp    x20, .LANCHOR4
+       add     x0, x29, 48
+       add     x20, x20, :lo12:.LANCHOR4
+       mov     x2, 512
+       ldr     x1, [x20,456]
+       bl      memcpy
+       ldr     w1, [x20,464]
        mov     w0, 5161
        movk    w0, 0xc059, lsl 16
        cmp     w1, w0
-       bne     .L2756
-       ldr     w1, [x19,12]
+       beq     .L3006
+       add     x0, x29, 112
+       mov     w1, w19
+       mov     x2, 128
+       str     w19, [x29,56]
+       str     w19, [x29,60]
+       bl      memset
+.L3006:
+       mov     w1, 0
+       mov     x2, 256
+       add     x0, x29, 304
+       str     wzr, [x29,64]
+       bl      memset
+       mov     x0, x21
+       add     x1, x29, 48
+       mov     x2, 520
+       b       .L3059
+.L2978:
+       adrp    x0, .LC147
+       add     x0, x0, :lo12:.LC147
+       bl      printk
+       add     x0, x29, 48
+       mov     x1, x21
+       mov     x2, 520
+       bl      rk_copy_from_user
+       cbz     x0, .L3007
+       adrp    x0, .LC148
+       add     x0, x0, :lo12:.LC148
+.L3063:
+       bl      printk
+       b       .L3062
+.L3007:
+       ldr     w1, [x29,48]
+       mov     w0, 21060
+       movk    w0, 0x4b4d, lsl 16
+       cmp     w1, w0
+       bne     .L3005
+       ldr     w0, [x29,52]
+       cmp     w0, 512
+       bhi     .L3005
+       adrp    x1, .LANCHOR4
+       mov     w0, 5161
+       add     x1, x1, :lo12:.LANCHOR4
+       movk    w0, 0xc059, lsl 16
+       ldr     w2, [x1,464]
+       cmp     w2, w0
+       bne     .L3008
+       ldr     w2, [x29,60]
        mov     x0, -3
-       sub     w2, w1, #1
-       cmp     w2, 127
-       bhi     .L2719
-       adrp    x0, :got:gpDrmKeyInfo
-       ldr     x0, [x0, #:got_lo12:gpDrmKeyInfo]
-       ldr     x20, [x0]
-       add     x0, x20, 64
-       str     w1, [x20,12]
-       add     x1, x19, 64
-       ldr     w2, [x19,12]
+       sub     w3, w2, #1
+       cmp     w3, 127
+       bhi     .L2970
+       ldr     x19, [x1,456]
+       add     x1, x29, 112
+       add     x0, x19, 64
+       str     w2, [x19,12]
+       ldr     w2, [x29,60]
        bl      memcpy
        mov     w0, 1
-       mov     x1, x20
-       b       .L2798
-.L2731:
-       adrp    x0, .LC146
-       add     x19, x29, 56
-       add     x0, x0, :lo12:.LC146
+       mov     x1, x19
+       b       .L3061
+.L2982:
+       adrp    x0, .LC149
+       add     x0, x0, :lo12:.LC149
        bl      printk
-       mov     x0, x19
+       add     x0, x29, 48
        mov     x1, x21
        mov     x2, 520
        bl      rk_copy_from_user
-       cbnz    x0, .L2746
-       ldr     w1, [x19]
+       cbnz    x0, .L2997
+       ldr     w1, [x29,48]
        mov     w0, 17476
        movk    w0, 0x4253, lsl 16
        cmp     w1, w0
-       bne     .L2754
-       ldr     w0, [x19,4]
+       bne     .L3005
+       ldr     w0, [x29,52]
        cmp     w0, 512
-       bhi     .L2754
-       adrp    x19, :got:SecureBootEn
-       ldr     x0, [x19, #:got_lo12:SecureBootEn]
-       ldr     w0, [x0]
-       cbnz    w0, .L2757
-.L2760:
+       bhi     .L3005
+       adrp    x19, .LANCHOR4
+       add     x0, x19, :lo12:.LANCHOR4
+       ldr     w1, [x0,468]
+       cbnz    w1, .L3009
+.L3012:
        mov     x0, 0
-       b       .L2719
-.L2757:
-       adrp    x0, :got:gpBootConfig
-       mov     w3, 22867
-       movk    w3, 0x4453, lsl 16
-       ldr     x1, [x0, #:got_lo12:gpBootConfig]
-       ldr     x2, [x1]
-       ldr     w4, [x2]
-       cmp     w4, w3
-       beq     .L2758
-       mov     w3, 22867
-       movk    w3, 0x4453, lsl 16
-       str     w3, [x2]
-       mov     w3, 504
-       ldr     x2, [x1]
-       str     w3, [x2,4]
-       ldr     x1, [x1]
-       str     wzr, [x1,8]
-       str     wzr, [x1,12]
-.L2758:
-       ldr     x0, [x0, #:got_lo12:gpBootConfig]
-       ldr     x1, [x0]
+       b       .L2970
+.L3009:
+       ldr     x1, [x0,472]
+       mov     w2, 22867
+       movk    w2, 0x4453, lsl 16
+       ldr     w3, [x1]
+       cmp     w3, w2
+       beq     .L3010
+       mov     w2, 22867
+       movk    w2, 0x4453, lsl 16
+       str     w2, [x1]
+       mov     w2, 504
+       ldr     x1, [x0,472]
+       str     w2, [x1,4]
+       ldr     x0, [x0,472]
+       str     wzr, [x0,8]
+       str     wzr, [x0,12]
+.L3010:
+       add     x20, x19, :lo12:.LANCHOR4
        mov     w0, 0
+       ldr     x1, [x20,472]
        str     wzr, [x1,16]
        bl      StorageSysDataStore
-       adrp    x0, :got:gpDrmKeyInfo
-       mov     w3, 21060
-       movk    w3, 0x4b4d, lsl 16
-       ldr     x1, [x0, #:got_lo12:gpDrmKeyInfo]
-       ldr     x2, [x1]
-       ldr     w4, [x2]
-       cmp     w4, w3
-       beq     .L2759
-       mov     w3, 21060
-       movk    w3, 0x4b4d, lsl 16
-       str     w3, [x2]
-       mov     w3, 504
-       ldr     x2, [x1]
-       str     w3, [x2,4]
-       ldr     x1, [x1]
-       str     wzr, [x1,8]
-.L2759:
-       ldr     x0, [x0, #:got_lo12:gpDrmKeyInfo]
+       ldr     x0, [x20,456]
+       mov     w1, 21060
+       movk    w1, 0x4b4d, lsl 16
+       ldr     w2, [x0]
+       cmp     w2, w1
+       beq     .L3011
+       mov     w1, 21060
+       movk    w1, 0x4b4d, lsl 16
+       str     w1, [x0]
+       mov     w1, 504
+       ldr     x0, [x20,456]
+       str     w1, [x0,4]
+       ldr     x0, [x20,456]
+       str     wzr, [x0,8]
+.L3011:
+       add     x19, x19, :lo12:.LANCHOR4
        mov     w1, 0
        mov     x2, 128
-       ldr     x20, [x0]
+       ldr     x20, [x19,456]
        add     x0, x20, 64
        str     wzr, [x20,12]
        bl      memset
        mov     w0, 1
        mov     x1, x20
        bl      StorageSysDataStore
-       ldr     x19, [x19, #:got_lo12:SecureBootEn]
-       adrp    x0, :got:SecureBootCheckOK
-       str     wzr, [x19]
-       ldr     x0, [x0, #:got_lo12:SecureBootCheckOK]
-       str     wzr, [x0]
-       b       .L2796
-.L2722:
-       adrp    x0, .LC147
-       add     x19, x29, 56
-       add     x0, x0, :lo12:.LC147
+       str     wzr, [x19,468]
+       str     wzr, [x19,464]
+       b       .L3060
+.L2973:
+       adrp    x0, .LC150
+       add     x0, x0, :lo12:.LC150
        bl      printk
-       mov     x0, x19
+       add     x0, x29, 48
        mov     x1, x21
        mov     x2, 520
        bl      rk_copy_from_user
-       cbnz    x0, .L2746
-       ldr     w2, [x19]
+       cbnz    x0, .L2997
+       ldr     w2, [x29,48]
        mov     w1, 20037
        movk    w1, 0x4253, lsl 16
        cmp     w2, w1
-       bne     .L2754
-       ldr     w1, [x19,4]
+       bne     .L3005
+       ldr     w1, [x29,52]
        cmp     w1, 512
-       bhi     .L2754
-       adrp    x19, :got:SecureBootEn
-       ldr     x1, [x19, #:got_lo12:SecureBootEn]
-       ldr     w1, [x1]
-       cmp     w1, 1
-       beq     .L2760
-       adrp    x1, :got:gpBootConfig
-       mov     w4, 22867
-       movk    w4, 0x4453, lsl 16
-       ldr     x2, [x1, #:got_lo12:gpBootConfig]
-       ldr     x3, [x2]
-       ldr     w5, [x3]
-       cmp     w5, w4
-       beq     .L2761
-       mov     w4, 22867
-       movk    w4, 0x4453, lsl 16
-       str     w4, [x3]
-       mov     w4, 504
-       ldr     x3, [x2]
-       str     w4, [x3,4]
-       ldr     x2, [x2]
-       str     w0, [x2,8]
-       str     w0, [x2,12]
-.L2761:
-       ldr     x1, [x1, #:got_lo12:gpBootConfig]
-       mov     w0, 1
-       ldr     x1, [x1]
-       str     w0, [x1,16]
-       mov     w0, 0
-       bl      StorageSysDataStore
-       adrp    x0, :got:gpDrmKeyInfo
-       mov     w3, 21060
-       movk    w3, 0x4b4d, lsl 16
-       ldr     x1, [x0, #:got_lo12:gpDrmKeyInfo]
-       ldr     x2, [x1]
+       bhi     .L3005
+       adrp    x19, .LANCHOR4
+       add     x1, x19, :lo12:.LANCHOR4
+       ldr     w2, [x1,468]
+       cmp     w2, 1
+       beq     .L3012
+       ldr     x2, [x1,472]
+       mov     w3, 22867
+       movk    w3, 0x4453, lsl 16
        ldr     w4, [x2]
        cmp     w4, w3
-       beq     .L2762
-       mov     w3, 21060
-       movk    w3, 0x4b4d, lsl 16
+       beq     .L3013
+       mov     w3, 22867
+       movk    w3, 0x4453, lsl 16
        str     w3, [x2]
        mov     w3, 504
-       ldr     x2, [x1]
+       ldr     x2, [x1,472]
        str     w3, [x2,4]
-       ldr     x1, [x1]
-       str     wzr, [x1,8]
-.L2762:
-       ldr     x0, [x0, #:got_lo12:gpDrmKeyInfo]
+       ldr     x1, [x1,472]
+       str     w0, [x1,8]
+       str     w0, [x1,12]
+.L3013:
+       add     x20, x19, :lo12:.LANCHOR4
+       mov     w0, 1
+       ldr     x1, [x20,472]
+       str     w0, [x1,16]
+       mov     w0, 0
+       bl      StorageSysDataStore
+       ldr     x0, [x20,456]
+       mov     w1, 21060
+       movk    w1, 0x4b4d, lsl 16
+       ldr     w2, [x0]
+       cmp     w2, w1
+       beq     .L3014
+       mov     w1, 21060
+       movk    w1, 0x4b4d, lsl 16
+       str     w1, [x0]
+       mov     w1, 504
+       ldr     x0, [x20,456]
+       str     w1, [x0,4]
+       ldr     x0, [x20,456]
+       str     wzr, [x0,8]
+.L3014:
+       add     x19, x19, :lo12:.LANCHOR4
        mov     w1, 0
        mov     x2, 128
-       ldr     x20, [x0]
+       ldr     x20, [x19,456]
        add     x0, x20, 64
        str     wzr, [x20,12]
        bl      memset
        mov     w0, 1
        mov     x1, x20
        bl      StorageSysDataStore
-       ldr     x19, [x19, #:got_lo12:SecureBootEn]
        mov     w0, 1
-       str     w0, [x19]
-       b       .L2796
-.L2728:
-       adrp    x0, .LC148
-       add     x19, x29, 56
-       add     x0, x0, :lo12:.LC148
+       str     w0, [x19,468]
+       b       .L3060
+.L2979:
+       adrp    x0, .LC151
+       add     x0, x0, :lo12:.LC151
        bl      printk
-       mov     x0, x19
+       add     x0, x29, 48
        mov     x1, x21
        mov     x2, 520
        bl      rk_copy_from_user
-       cbnz    x0, .L2746
-       ldr     w1, [x19]
+       cbnz    x0, .L2997
+       ldr     w1, [x29,48]
        mov     w0, 20051
        movk    w0, 0x4144, lsl 16
        cmp     w1, w0
-       bne     .L2754
-       ldr     w2, [x19,4]
+       bne     .L3005
+       ldr     w2, [x29,52]
        cmp     w2, 512
-       bhi     .L2754
-       adrp    x1, :got:gSnSectorData
-       add     x0, x19, 8
+       bhi     .L3005
+       adrp    x1, .LANCHOR4
+       add     x0, x29, 56
+       add     x1, x1, :lo12:.LANCHOR4
        uxtw    x2, w2
-       ldr     x1, [x1, #:got_lo12:gSnSectorData]
-       bl      memcpy
-.L2795:
-       mov     x0, x21
-       mov     x1, x19
-       b       .L2792
-.L2729:
+       add     x1, x1, 480
+       b       .L3058
+.L2980:
        mov     w0, 27698
        movk    w0, 0x4004, lsl 16
        cmp     w19, w0
-       bne     .L2763
-       adrp    x0, .LC149
-       add     x0, x0, :lo12:.LC149
-       b       .L2793
-.L2763:
+       bne     .L3015
+       adrp    x0, .LC152
+       add     x0, x0, :lo12:.LC152
+       b       .L3055
+.L3015:
        mov     w0, 27708
        movk    w0, 0x4004, lsl 16
        cmp     w19, w0
-       bne     .L2765
-       adrp    x0, .LC150
-       add     x0, x0, :lo12:.LC150
-       b       .L2793
-.L2765:
-       adrp    x0, .LC151
-       add     x0, x0, :lo12:.LC151
-.L2793:
+       bne     .L3017
+       adrp    x0, .LC153
+       add     x0, x0, :lo12:.LC153
+       b       .L3055
+.L3017:
+       adrp    x0, .LC154
+       add     x0, x0, :lo12:.LC154
+.L3055:
        bl      printk
-       add     x20, x29, 56
-       mov     x0, x20
+       add     x0, x29, 48
        mov     x1, x21
        mov     x2, 520
        bl      rk_copy_from_user
-       cbnz    x0, .L2746
-       ldr     w1, [x20]
+       cbnz    x0, .L2997
+       ldr     w1, [x29,48]
        mov     w0, 17227
        movk    w0, 0x4c4f, lsl 16
        cmp     w1, w0
-       bne     .L2799
+       bne     .L3062
        mov     w0, 27708
        movk    w0, 0x4004, lsl 16
        cmp     w19, w0
-       bne     .L2766
-       adrp    x0, :got:gpDrmKeyInfo
-       mov     x1, x20
-       mov     x2, 16
-       ldr     x0, [x0, #:got_lo12:gpDrmKeyInfo]
-       ldr     x0, [x0]
+       adrp    x0, .LANCHOR4
+       bne     .L3018
+       add     x0, x0, :lo12:.LANCHOR4
+       ldr     x0, [x0,456]
        ldr     w0, [x0,20]
-       str     w0, [x20,4]
-       strb    w0, [x20,8]
+       strb    w0, [x29,56]
+       str     w0, [x29,52]
+#APP
+// 86 "./arch/arm64/include/asm/thread_info.h" 1
+       mrs x0, sp_el0
+// 0 "" 2
+#NO_APP
+       ldr     x1, [x0,8]
        mov     x0, x21
-       bl      rk_copy_to_user
-       cbz     x0, .L2719
-       b       .L2799
-.L2766:
-       adrp    x2, :got:SecureBootUnlockTryCount
-       mov     x3, x2
-       ldr     x21, [x2, #:got_lo12:SecureBootUnlockTryCount]
-       ldr     w0, [x21]
-       cmp     w0, 10
-       bhi     .L2799
-       adrp    x0, :got:gpDrmKeyInfo
-       ldr     w1, [x20,4]
-       ldr     x0, [x0, #:got_lo12:gpDrmKeyInfo]
-       ldr     x2, [x0]
-       ldr     w0, [x2,24]
-       cmp     w0, w1
-       beq     .L2767
-       cbz     w0, .L2767
-       adrp    x0, .LC152
-       add     x0, x0, :lo12:.LC152
+#APP
+// 394 "./arch/arm64/include/asm/uaccess.h" 1
+       adds x0, x0, 16; ccmp x0, x1, #2, cc; cset x2, ls
+// 0 "" 2
+#NO_APP
+       cbz     x2, .L3062
+       mov     x0, x21
+       add     x1, x29, 48
+       mov     x2, 16
+       bl      __arch_copy_to_user
+       cbz     x0, .L2970
+       b       .L3062
+.L3018:
+       add     x20, x0, :lo12:.LANCHOR4
+       ldr     w1, [x20,992]
+       cmp     w1, 10
+       bhi     .L3062
+       ldr     x1, [x20,456]
+       ldr     w2, [x29,52]
+       ldr     w3, [x1,24]
+       cmp     w3, w2
+       beq     .L3019
+       cbz     w3, .L3019
+       adrp    x0, .LC155
+       mov     w1, w2
+       add     x0, x0, :lo12:.LC155
        bl      printk
-       ldr     w0, [x21]
+       ldr     w0, [x20,992]
        add     w0, w0, 1
-       str     w0, [x21]
-.L2799:
+       str     w0, [x20,992]
+.L3062:
        mov     x0, -14
-       b       .L2719
-.L2767:
-       ldr     x3, [x3, #:got_lo12:SecureBootUnlockTryCount]
+       b       .L2970
+.L3019:
+       add     x0, x0, :lo12:.LANCHOR4
+       str     wzr, [x0,992]
        mov     w0, 27698
        movk    w0, 0x4004, lsl 16
        cmp     w19, w0
-       str     wzr, [x3]
-       bne     .L2768
-       str     wzr, [x2,20]
-       str     wzr, [x2,24]
-       b       .L2769
-.L2768:
+       bne     .L3020
+       str     wzr, [x1,20]
+       str     wzr, [x1,24]
+       b       .L3021
+.L3020:
        mov     w0, 1
-       str     w1, [x2,24]
-       str     w0, [x2,20]
-.L2769:
+       str     w2, [x1,24]
+       str     w0, [x1,20]
+.L3021:
        mov     w0, 1
-       mov     x1, x2
        mov     x19, -2
        bl      StorageSysDataStore
        cmn     w0, #1
-       bne     .L2796
-       b       .L2745
-.L2741:
-       adrp    x0, .LC153
-       add     x20, x29, 56
-       add     x0, x0, :lo12:.LC153
+       bne     .L3060
+       b       .L2996
+.L2992:
+       adrp    x0, .LC156
+       add     x0, x0, :lo12:.LC156
        bl      printk
-       mov     x0, x20
+       add     x0, x29, 48
        mov     x1, x21
        mov     x2, 520
        bl      rk_copy_from_user
-       cbnz    x0, .L2746
-       ldr     w1, [x20]
+       cbnz    x0, .L2997
+       ldr     w1, [x29,48]
        mov     w0, 17750
        movk    w0, 0x444e, lsl 16
        cmp     w1, w0
-       bne     .L2754
-       ldr     w2, [x20,4]
+       bne     .L3005
+       ldr     w2, [x29,52]
        cmp     w2, 504
-       bhi     .L2754
+       bhi     .L3005
        mov     w0, 30224
-       uxtw    x2, w2
+       adrp    x1, .LANCHOR4
        movk    w0, 0x4004, lsl 16
+       uxtw    x2, w2
        cmp     w19, w0
-       add     x0, x20, 8
-       bne     .L2770
-       adrp    x1, :got:gpVendor0Info
-       ldr     x1, [x1, #:got_lo12:gpVendor0Info]
-       b       .L2794
-.L2770:
-       adrp    x1, :got:gpVendor1Info
-       ldr     x1, [x1, #:got_lo12:gpVendor1Info]
-.L2794:
-       ldr     x1, [x1]
+       add     x1, x1, :lo12:.LANCHOR4
+       add     x0, x29, 56
+       bne     .L3022
+       ldr     x1, [x1,1000]
+       b       .L3056
+.L3022:
+       ldr     x1, [x1,1008]
+.L3056:
        add     x1, x1, 8
+.L3058:
        bl      memcpy
+#APP
+// 86 "./arch/arm64/include/asm/thread_info.h" 1
+       mrs x0, sp_el0
+// 0 "" 2
+#NO_APP
+       ldr     x1, [x0,8]
        mov     x0, x21
-       mov     x1, x20
-.L2792:
+#APP
+// 394 "./arch/arm64/include/asm/uaccess.h" 1
+       adds x0, x0, 520; ccmp x0, x1, #2, cc; cset x2, ls
+// 0 "" 2
+#NO_APP
+       cbz     x2, .L3062
+       mov     x0, x21
+       add     x1, x29, 48
        mov     x2, 520
-.L2791:
-       bl      rk_copy_to_user
-       cbnz    x0, .L2799
-       b       .L2796
-.L2738:
-       adrp    x0, .LC154
-       add     x20, x29, 56
-       add     x0, x0, :lo12:.LC154
+       bl      __arch_copy_to_user
+.L3053:
+       cbnz    x0, .L3062
+       b       .L3060
+.L2989:
+       adrp    x0, .LC157
+       add     x0, x0, :lo12:.LC157
        bl      printk
-       mov     x0, x20
+       add     x0, x29, 48
        mov     x1, x21
        mov     x2, 520
        bl      rk_copy_from_user
-       cbnz    x0, .L2746
-       ldr     w1, [x20]
+       cbnz    x0, .L2997
+       ldr     w1, [x29,48]
        mov     w0, 17750
        movk    w0, 0x444e, lsl 16
        cmp     w1, w0
-       bne     .L2754
-       ldr     w2, [x20,4]
+       bne     .L3005
+       ldr     w2, [x29,52]
        cmp     w2, 504
-       bhi     .L2754
+       bhi     .L3005
        mov     w0, 30225
        add     w2, w2, 8
        movk    w0, 0x4004, lsl 16
        cmp     w19, w0
-       bne     .L2772
-       adrp    x19, :got:gpVendor0Info
-       mov     x1, x20
-       ldr     x19, [x19, #:got_lo12:gpVendor0Info]
-       ldr     x0, [x19]
+       adrp    x19, .LANCHOR4
+       add     x19, x19, :lo12:.LANCHOR4
+       bne     .L3024
+       ldr     x0, [x19,1000]
+       add     x1, x29, 48
        bl      memcpy
        mov     w0, 2
-       b       .L2797
-.L2772:
-       adrp    x19, :got:gpVendor1Info
-       mov     x1, x20
-       ldr     x19, [x19, #:got_lo12:gpVendor1Info]
-       ldr     x0, [x19]
+       ldr     x1, [x19,1000]
+       b       .L3061
+.L3024:
+       ldr     x0, [x19,1008]
+       add     x1, x29, 48
        bl      memcpy
+       ldr     x1, [x19,1008]
        mov     w0, 3
-.L2797:
-       ldr     x1, [x19]
-.L2798:
+.L3061:
        bl      StorageSysDataStore
        uxtw    x19, w0
-       b       .L2745
-.L2796:
+       b       .L2996
+.L3060:
        mov     x19, 0
-.L2745:
-       adrp    x0, .LC155
+.L2996:
+       adrp    x0, .LC158
        mov     x1, x19
-       add     x0, x0, :lo12:.LC155
+       add     x0, x0, :lo12:.LC158
        bl      printk
        mov     x0, x19
-       b       .L2719
-.L2773:
+       b       .L2970
+.L3026:
        mov     x0, -22
-.L2719:
+.L2970:
+       ldr     x2, [x29,568]
+       ldr     x1, [x22,#:lo12:__stack_chk_guard]
+       cmp     x2, x1
+       beq     .L3025
+       bl      __stack_chk_fail
+.L3025:
        ldp     x19, x20, [sp,16]
-       ldr     x21, [sp,32]
+       ldp     x21, x22, [sp,32]
        ldp     x29, x30, [sp], 48
        add     sp, sp, 528
        ret
@@ -20990,87 +20502,63 @@ rknand_sys_storage_ioctl:
        .global rk_ftl_storage_sys_init
        .type   rk_ftl_storage_sys_init, %function
 rk_ftl_storage_sys_init:
-       adrp    x0, :got:g_idb_buffer
-       stp     x29, x30, [sp, -80]!
+       stp     x29, x30, [sp, -48]!
+       mov     w2, 512
        add     x29, sp, 0
-       ldr     x0, [x0, #:got_lo12:g_idb_buffer]
        stp     x19, x20, [sp,16]
+       adrp    x20, .LANCHOR4
+       add     x19, x20, :lo12:.LANCHOR4
        stp     x21, x22, [sp,32]
-       stp     x23, x24, [sp,48]
-       str     x25, [sp,64]
-       adrp    x21, :got:gpBootConfig
-       str     xzr, [x0]
-       adrp    x0, :got:gLoaderBootInfo
-       adrp    x20, :got:gpVendor0Info
-       adrp    x19, :got:gpVendor1Info
-       ldr     x21, [x21, #:got_lo12:gpBootConfig]
-       ldr     x0, [x0, #:got_lo12:gLoaderBootInfo]
-       ldr     x1, [x0]
-       adrp    x0, :got:gpDrmKeyInfo
-       str     x1, [x21]
-       add     x2, x1, 512
-       ldr     x0, [x0, #:got_lo12:gpDrmKeyInfo]
-       str     x2, [x0]
-       add     x2, x1, 1024
+       ldr     x1, [x19,424]
+       str     x1, [x19,472]
+       add     x0, x1, 512
+       str     x0, [x19,456]
+       add     x0, x1, 1024
        add     x1, x1, 1536
-       ldr     x0, [x20, #:got_lo12:gpVendor0Info]
-       str     x2, [x0]
-       mov     w2, 512
-       ldr     x0, [x19, #:got_lo12:gpVendor1Info]
-       str     x1, [x0]
-       adrp    x0, :got:gSnSectorData
-       ldr     x0, [x0, #:got_lo12:gSnSectorData]
+       str     x0, [x19,1000]
+       add     x0, x19, 480
+       str     xzr, [x19,448]
+       str     x1, [x19,1008]
        bl      ftl_memcpy
-       adrp    x1, :got:SecureBootEn
-       ldr     x0, [x21]
-       adrp    x3, :got:SecureBootCheckOK
-       mov     x25, x1
-       mov     x24, x3
-       ldr     x22, [x1, #:got_lo12:SecureBootEn]
-       ldr     w2, [x0,16]
-       ldr     w23, [x0,508]
-       str     w2, [x22]
-       ldr     x2, [x3, #:got_lo12:SecureBootCheckOK]
-       str     wzr, [x2]
-       adrp    x2, :got:SecureBootUnlockTryCount
-       ldr     x2, [x2, #:got_lo12:SecureBootUnlockTryCount]
-       str     wzr, [x2]
-       cbz     w23, .L2803
+       ldr     x21, [x19,472]
+       str     wzr, [x19,464]
+       str     wzr, [x19,992]
+       ldr     w0, [x21,16]
+       ldr     w22, [x21,508]
+       str     w0, [x19,468]
+       cbz     w22, .L3065
+       mov     x0, x21
        mov     w1, 508
        bl      JSHash
-       cmp     w23, w0
-       beq     .L2803
-       ldr     x0, [x21]
-       str     wzr, [x22]
-       str     wzr, [x0,16]
-       adrp    x0, .LC156
-       add     x0, x0, :lo12:.LC156
+       cmp     w22, w0
+       beq     .L3065
+       adrp    x0, .LC159
+       str     wzr, [x21,16]
+       add     x0, x0, :lo12:.LC159
+       str     wzr, [x19,468]
        bl      printk
-.L2803:
-       ldr     x1, [x25, #:got_lo12:SecureBootEn]
-       ldr     w0, [x1]
-       cbz     w0, .L2805
-       ldr     x0, [x24, #:got_lo12:SecureBootCheckOK]
+.L3065:
+       add     x0, x20, :lo12:.LANCHOR4
+       ldr     w1, [x0,468]
+       cbz     w1, .L3066
        mov     w1, 5161
        movk    w1, 0xc059, lsl 16
-       str     w1, [x0]
-.L2805:
-       ldr     x20, [x20, #:got_lo12:gpVendor0Info]
+       str     w1, [x0,464]
+.L3066:
+       add     x20, x20, :lo12:.LANCHOR4
        mov     w0, 2
-       ldr     x1, [x20]
+       ldr     x1, [x20,1000]
        bl      StorageSysDataLoad
-       ldr     x19, [x19, #:got_lo12:gpVendor1Info]
+       ldr     x1, [x20,1008]
        mov     w0, 3
-       ldr     x1, [x19]
        bl      StorageSysDataLoad
-       adrp    x0, .LANCHOR3
-       add     x0, x0, :lo12:.LANCHOR3
+       adrp    x0, .LANCHOR1
+       add     x0, x0, :lo12:.LANCHOR1
+       add     x0, x0, 4040
        bl      misc_register
-       ldr     x25, [sp,64]
        ldp     x19, x20, [sp,16]
        ldp     x21, x22, [sp,32]
-       ldp     x23, x24, [sp,48]
-       ldp     x29, x30, [sp], 80
+       ldp     x29, x30, [sp], 48
        ret
        .size   rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init
        .align  2
@@ -21078,9 +20566,10 @@ rk_ftl_storage_sys_init:
        .type   StorageSysDataDeInit, %function
 StorageSysDataDeInit:
        stp     x29, x30, [sp, -16]!
-       adrp    x0, .LANCHOR3
+       adrp    x0, .LANCHOR1
+       add     x0, x0, :lo12:.LANCHOR1
        add     x29, sp, 0
-       add     x0, x0, :lo12:.LANCHOR3
+       add     x0, x0, 4040
        bl      misc_deregister
        mov     w0, 0
        ldp     x29, x30, [sp], 16
@@ -21186,6 +20675,7 @@ StorageSysDataDeInit:
        .global p_map_block_ver_table
        .global p_map_block_valid_page_count
        .global p_map_block_table
+       .global p_blk_mode_table
        .global p_valid_page_count_check_table
        .global p_valid_page_count_table
        .global g_totle_swl_count
@@ -21271,10 +20761,12 @@ StorageSysDataDeInit:
        .global gNandcEccBits
        .global gpNandc1
        .global gpNandc
+       .global g_nandc_version_data
        .global gNandcVer
        .global gNandChipMap
        .global gNandIDataBuf
        .global FlashDdrTunningReadCount
+       .global FlashWaitBusyScheduleEn
        .global gNandPhyInfo
        .global gFlashProgCheckSpareBuffer
        .global gFlashProgCheckBuffer
@@ -21303,6 +20795,7 @@ StorageSysDataDeInit:
        .global gNandMaxChip
        .global gNandMaxDie
        .global gFlashInterfaceMode
+       .global gFlashSlcMode
        .global gFlashOnfiModeEn
        .global gFlashToggleModeEn
        .global gFlashSdrModeEn
@@ -21318,2674 +20811,213 @@ StorageSysDataDeInit:
        .global read_retry_cur_offset
        .section        .rodata
        .align  3
-.LANCHOR1 = . + 0
-       .type   __func__.18162, %object
-       .size   __func__.18162, 11
-__func__.18162:
+.LANCHOR3 = . + 0
+       .type   __func__.19127, %object
+       .size   __func__.19127, 11
+__func__.19127:
        .string "FtlMemInit"
        .zero   5
-       .type   __func__.19016, %object
-       .size   __func__.19016, 21
-__func__.19016:
+       .type   __func__.20003, %object
+       .size   __func__.20003, 21
+__func__.20003:
        .string "FtlVpcCheckAndModify"
-       .section        .data.rel.local,"aw",%progbits
-       .align  3
-       .type   rknand_sys_storage_fops, %object
-       .size   rknand_sys_storage_fops, 216
-rknand_sys_storage_fops:
-       .zero   64
-       .xword  rknand_sys_storage_ioctl
-       .xword  rknand_sys_storage_ioctl
-       .zero   8
-       .xword  rknand_sys_storage_open
-       .zero   8
-       .xword  rknand_sys_storage_release
-       .zero   104
-       .data
-       .align  3
-.LANCHOR2 = . + 0
-       .type   NandOptPara, %object
-       .size   NandOptPara, 128
-NandOptPara:
-       .byte   1
-       .byte   0
-       .byte   49
-       .byte   63
-       .byte   0
-       .byte   49
-       .byte   -128
-       .byte   21
-       .byte   0
-       .byte   50
-       .byte   17
-       .byte   -128
-       .byte   112
-       .byte   120
-       .byte   120
-       .byte   3
-       .byte   1
-       .byte   0
-       .zero   14
-       .byte   2
-       .byte   0
-       .byte   49
-       .byte   63
-       .byte   0
-       .byte   49
-       .byte   -128
-       .byte   21
-       .byte   0
-       .byte   0
-       .byte   17
-       .byte   -127
-       .byte   112
-       .byte   -15
-       .byte   -14
-       .byte   0
-       .byte   0
-       .byte   0
-       .zero   14
-       .byte   3
-       .byte   0
-       .byte   49
-       .byte   63
-       .byte   0
-       .byte   49
-       .byte   -128
-       .byte   21
-       .byte   96
-       .byte   96
-       .byte   17
-       .byte   -127
-       .byte   112
-       .byte   -15
-       .byte   -14
-       .byte   0
-       .byte   0
-       .byte   0
-       .zero   14
-       .byte   4
-       .byte   0
-       .byte   49
-       .byte   63
-       .byte   0
-       .byte   49
-       .byte   -128
-       .byte   21
-       .byte   96
-       .byte   96
-       .byte   17
-       .byte   -127
-       .byte   112
-       .byte   112
-       .byte   112
-       .byte   0
-       .byte   0
-       .byte   0
-       .zero   14
-       .type   ftl_gc_temp_block_bops_scan_page_addr, %object
-       .size   ftl_gc_temp_block_bops_scan_page_addr, 2
-ftl_gc_temp_block_bops_scan_page_addr:
-       .hword  -1
-       .zero   6
-       .type   gTable_Crc32, %object
-       .size   gTable_Crc32, 1024
-gTable_Crc32:
-       .word   0
-       .word   79760823
-       .word   159521646
-       .word   222500569
-       .word   319043292
-       .word   398801771
-       .word   445001138
-       .word   507977733
-       .word   638086584
-       .word   583622671
-       .word   797603542
-       .word   726367073
-       .word   890002276
-       .word   835540691
-       .word   1015955466
-       .word   944721341
-       .word   1276173168
-       .word   1221711559
-       .word   1167245342
-       .word   1096011177
-       .word   1595207084
-       .word   1540743195
-       .word   1452734146
-       .word   1381497717
-       .word   1780004552
-       .word   1859763071
-       .word   1671081382
-       .word   1734058001
-       .word   2031910932
-       .word   2111671715
-       .word   1889442682
-       .word   1952421581
-       .word   -1742620960
-       .word   -1662993577
-       .word   -1851544178
-       .word   -1788698567
-       .word   -1960476612
-       .word   -1880846965
-       .word   -2102944942
-       .word   -2040097051
-       .word   -1104553128
-       .word   -1159145745
-       .word   -1213480906
-       .word   -1284846207
-       .word   -1389499004
-       .word   -1444093901
-       .word   -1531971862
-       .word   -1603339427
-       .word   -734958192
-       .word   -789553113
-       .word   -575441154
-       .word   -646808759
-       .word   -952804532
-       .word   -1007397125
-       .word   -826851294
-       .word   -898216555
-       .word   -231145432
-       .word   -151515745
-       .word   -71623866
-       .word   -8775951
-       .word   -516081932
-       .word   -436454589
-       .word   -390124134
-       .word   -327278547
-       .word   880959607
-       .word   809725376
-       .word   1023441689
-       .word   968980142
-       .word   663115435
-       .word   591878940
-       .word   772033989
-       .word   717570162
-       .word   311037391
-       .word   374014072
-       .word   453514913
-       .word   533273366
-       .word   26098451
-       .word   89077412
-       .word   135012477
-       .word   214773194
-       .word   2022882055
-       .word   2085861040
-       .word   1896915049
-       .word   1976675806
-       .word   1805028827
-       .word   1868005484
-       .word   1645516469
-       .word   1725274882
-       .word   1587205823
-       .word   1515969288
-       .word   1461243345
-       .word   1406779494
-       .word   1302257763
-       .word   1231023572
-       .word   1142749965
-       .word   1088288442
-       .word   -1398548841
-       .word   -1469916384
-       .word   -1524511239
-       .word   -1579106226
-       .word   -1079517109
-       .word   -1150882308
-       .word   -1239024859
-       .word   -1293617518
-       .word   -1968456913
-       .word   -1905609064
-       .word   -2094423999
-       .word   -2014794250
-       .word   -1716548109
-       .word   -1653702588
-       .word   -1876060515
-       .word   -1796433110
-       .word   -525136409
-       .word   -462290864
-       .word   -382658935
-       .word   -303031490
-       .word   -206095557
-       .word   -143247732
-       .word   -97181611
-       .word   -17551902
-       .word   -960798625
-       .word   -1032163864
-       .word   -818316495
-       .word   -872909178
-       .word   -708880765
-       .word   -780248268
-       .word   -599962131
-       .word   -654557094
-       .word   1761919214
-       .word   1841679705
-       .word   1619450752
-       .word   1682429495
-       .word   2046883378
-       .word   2126642053
-       .word   1937960284
-       .word   2000937195
-       .word   1326230870
-       .word   1271767265
-       .word   1183757880
-       .word   1112521615
-       .word   1544067978
-       .word   1489606205
-       .word   1435140324
-       .word   1363905875
-       .word   622074782
-       .word   567612969
-       .word   748028144
-       .word   676793671
-       .word   907029826
-       .word   852566261
-       .word   1066546732
-       .word   995310491
-       .word   52196902
-       .word   131955601
-       .word   178154824
-       .word   241131775
-       .word   270024954
-       .word   349785421
-       .word   429546388
-       .word   492525091
-       .word   -249203186
-       .word   -169575495
-       .word   -123245216
-       .word   -60399401
-       .word   -501137198
-       .word   -421507739
-       .word   -341615684
-       .word   -278768117
-       .word   -684909642
-       .word   -739502591
-       .word   -558956328
-       .word   -630321809
-       .word   -1003934358
-       .word   -1058529059
-       .word   -844417532
-       .word   -915784781
-       .word   -1120555650
-       .word   -1175150391
-       .word   -1263028720
-       .word   -1334395993
-       .word   -1372480606
-       .word   -1427073515
-       .word   -1481408308
-       .word   -1552773765
-       .word   -1690451770
-       .word   -1610822287
-       .word   -1832920152
-       .word   -1770072545
-       .word   -2009467366
-       .word   -1929839699
-       .word   -2118390412
-       .word   -2055544637
-       .word   1569104025
-       .word   1497869614
-       .word   1409596407
-       .word   1355134528
-       .word   1317180997
-       .word   1245944818
-       .word   1191218475
-       .word   1136754844
-       .word   2072956193
-       .word   2135933078
-       .word   1913443919
-       .word   1993202680
-       .word   1753938941
-       .word   1816917578
-       .word   1627971731
-       .word   1707732260
-       .word   295074793
-       .word   358053470
-       .word   403988615
-       .word   483749168
-       .word   43142453
-       .word   106119298
-       .word   185620059
-       .word   265378796
-       .word   933107281
-       .word   861871078
-       .word   1042025791
-       .word   987562120
-       .word   614080653
-       .word   542846266
-       .word   756562915
-       .word   702101076
-       .word   -978905479
-       .word   -1050272818
-       .word   -869987049
-       .word   -924581728
-       .word   -693952347
-       .word   -765317870
-       .word   -551470133
-       .word   -606062980
-       .word   -475038783
-       .word   -412191114
-       .word   -366124881
-       .word   -286495464
-       .word   -257209059
-       .word   -194363222
-       .word   -114731405
-       .word   -35103804
-       .word   -1984443127
-       .word   -1921597250
-       .word   -2143955353
-       .word   -2064327728
-       .word   -1699480619
-       .word   -1636632990
-       .word   -1825447749
-       .word   -1745818356
-       .word   -1346395983
-       .word   -1417761530
-       .word   -1505903649
-       .word   -1560496536
-       .word   -1128556947
-       .word   -1199924262
-       .word   -1254519549
-       .word   -1309114188
-       .type   power_up_flag, %object
-       .size   power_up_flag, 4
-power_up_flag:
-       .word   1
-       .type   gFtlInitStatus, %object
-       .size   gFtlInitStatus, 4
-gFtlInitStatus:
-       .word   -1
-       .type   ToshibaRefValue, %object
-       .size   ToshibaRefValue, 8
-ToshibaRefValue:
-       .byte   0
-       .byte   4
-       .byte   124
-       .byte   120
-       .byte   116
-       .byte   8
-       .byte   12
-       .byte   112
-       .type   Toshiba15RefValue, %object
-       .size   Toshiba15RefValue, 95
-Toshiba15RefValue:
-       .byte   4
-       .byte   5
-       .byte   6
-       .byte   7
-       .byte   13
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   2
-       .byte   4
-       .byte   2
-       .byte   0
-       .byte   0
-       .byte   8
-       .byte   8
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   124
-       .byte   0
-       .byte   124
-       .byte   124
-       .byte   0
-       .byte   122
-       .byte   0
-       .byte   122
-       .byte   122
-       .byte   0
-       .byte   11
-       .byte   126
-       .byte   118
-       .byte   116
-       .byte   0
-       .byte   120
-       .byte   2
-       .byte   120
-       .byte   122
-       .byte   0
-       .byte   126
-       .byte   4
-       .byte   126
-       .byte   122
-       .byte   0
-       .byte   16
-       .byte   118
-       .byte   114
-       .byte   112
-       .byte   0
-       .byte   118
-       .byte   4
-       .byte   118
-       .byte   120
-       .byte   0
-       .byte   4
-       .byte   4
-       .byte   4
-       .byte   118
-       .byte   0
-       .byte   2
-       .byte   0
-       .byte   126
-       .byte   124
-       .byte   0
-       .byte   6
-       .byte   10
-       .byte   6
-       .byte   2
-       .byte   0
-       .byte   116
-       .byte   124
-       .byte   116
-       .byte   118
-       .byte   0
-       .byte   4
-       .byte   4
-       .byte   124
-       .byte   126
-       .byte   0
-       .byte   0
-       .byte   124
-       .byte   120
-       .byte   120
-       .byte   0
-       .byte   124
-       .byte   118
-       .byte   116
-       .byte   114
-       .byte   0
-       .zero   1
-       .type   ToshibaA19RefValue, %object
-       .size   ToshibaA19RefValue, 45
-ToshibaA19RefValue:
-       .byte   4
-       .byte   5
-       .byte   6
-       .byte   7
-       .byte   13
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   4
-       .byte   4
-       .byte   124
-       .byte   126
-       .byte   0
-       .byte   0
-       .byte   124
-       .byte   120
-       .byte   120
-       .byte   0
-       .byte   124
-       .byte   118
-       .byte   116
-       .byte   114
-       .byte   0
-       .byte   8
-       .byte   8
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   11
-       .byte   126
-       .byte   118
-       .byte   116
-       .byte   0
-       .byte   16
-       .byte   118
-       .byte   114
-       .byte   112
-       .byte   0
-       .byte   2
-       .byte   0
-       .byte   126
-       .byte   124
-       .byte   0
-       .zero   3
-       .type   SamsungRefValue, %object
-       .size   SamsungRefValue, 64
-SamsungRefValue:
-       .byte   -89
-       .byte   -92
-       .byte   -91
-       .byte   -90
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   5
-       .byte   10
-       .byte   0
-       .byte   0
-       .byte   40
-       .byte   0
-       .byte   -20
-       .byte   -40
-       .byte   -19
-       .byte   -11
-       .byte   -19
-       .byte   -26
-       .byte   10
-       .byte   15
-       .byte   5
-       .byte   0
-       .byte   15
-       .byte   10
-       .byte   -5
-       .byte   -20
-       .byte   -24
-       .byte   -17
-       .byte   -24
-       .byte   -36
-       .byte   -15
-       .byte   -5
-       .byte   -2
-       .byte   -16
-       .byte   10
-       .byte   0
-       .byte   -5
-       .byte   -20
-       .byte   -48
-       .byte   -30
-       .byte   -48
-       .byte   -62
-       .byte   20
-       .byte   15
-       .byte   -5
-       .byte   -20
-       .byte   -24
-       .byte   -5
-       .byte   -24
-       .byte   -36
-       .byte   30
-       .byte   20
-       .byte   -5
-       .byte   -20
-       .byte   -5
-       .byte   -1
-       .byte   -5
-       .byte   -8
-       .byte   7
-       .byte   12
-       .byte   2
-       .byte   0
-       .type   refValueDefault, %object
-       .size   refValueDefault, 28
-refValueDefault:
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   6
-       .byte   10
-       .byte   6
-       .byte   0
-       .byte   -3
-       .byte   -7
-       .byte   -8
-       .byte   0
-       .byte   -6
-       .byte   -13
-       .byte   -15
-       .byte   0
-       .byte   -11
-       .byte   -20
-       .byte   -23
-       .byte   0
-       .byte   0
-       .byte   -26
-       .byte   -30
-       .byte   0
-       .byte   0
-       .byte   -32
-       .byte   -37
-       .zero   4
-       .type   random_seed, %object
-       .size   random_seed, 256
-random_seed:
-       .hword  22378
-       .hword  1512
-       .hword  25245
-       .hword  17827
-       .hword  25756
-       .hword  19440
-       .hword  9026
-       .hword  10030
-       .hword  29528
-       .hword  20467
-       .hword  29676
-       .hword  24432
-       .hword  31328
-       .hword  6872
-       .hword  13426
-       .hword  13842
-       .hword  8783
-       .hword  1108
-       .hword  782
-       .hword  28837
-       .hword  30729
-       .hword  9505
-       .hword  18676
-       .hword  23085
-       .hword  18730
-       .hword  1085
-       .hword  32609
-       .hword  14697
-       .hword  20858
-       .hword  15170
-       .hword  30365
-       .hword  1607
-       .hword  32298
-       .hword  4995
-       .hword  18905
-       .hword  1976
-       .hword  9592
-       .hword  20204
-       .hword  17443
-       .hword  13615
-       .hword  23330
-       .hword  29369
-       .hword  13947
-       .hword  9398
-       .hword  32398
-       .hword  8984
-       .hword  27600
-       .hword  21785
-       .hword  6019
-       .hword  6311
-       .hword  31598
-       .hword  30210
-       .hword  19327
-       .hword  13896
-       .hword  11347
-       .hword  27545
-       .hword  3107
-       .hword  26575
-       .hword  32270
-       .hword  19852
-       .hword  20601
-       .hword  8349
-       .hword  9290
-       .hword  29819
-       .hword  13579
-       .hword  3661
-       .hword  28676
-       .hword  27331
-       .hword  32574
-       .hword  8693
-       .hword  31253
-       .hword  9081
-       .hword  5399
-       .hword  6842
-       .hword  20087
-       .hword  5537
-       .hword  1274
-       .hword  11617
-       .hword  9530
-       .hword  4866
-       .hword  8035
-       .hword  23219
-       .hword  1178
-       .hword  23272
-       .hword  7383
-       .hword  18944
-       .hword  12488
-       .hword  12871
-       .hword  29340
-       .hword  20532
-       .hword  11022
-       .hword  22514
-       .hword  228
-       .hword  22363
-       .hword  24978
-       .hword  14584
-       .hword  12138
-       .hword  3092
-       .hword  17916
-       .hword  16863
-       .hword  14554
-       .hword  31457
-       .hword  29474
-       .hword  25311
-       .hword  24121
-       .hword  3684
-       .hword  28037
-       .hword  22865
-       .hword  22839
-       .hword  25217
-       .hword  13217
-       .hword  27186
-       .hword  14938
-       .hword  11180
-       .hword  29754
-       .hword  24180
-       .hword  15150
-       .hword  32455
-       .hword  20434
-       .hword  23848
-       .hword  29983
-       .hword  16120
-       .hword  14769
-       .hword  20041
-       .hword  29803
-       .hword  28406
-       .hword  17598
-       .hword  28087
-       .type   gSlcNandParaInfo, %object
-       .size   gSlcNandParaInfo, 32
-gSlcNandParaInfo:
-       .byte   2
-       .byte   -104
-       .byte   -15
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   0
-       .byte   1
-       .byte   1
-       .byte   4
-       .hword  64
-       .byte   1
-       .byte   1
-       .hword  1024
-       .hword  256
-       .byte   0
-       .byte   0
-       .byte   16
-       .byte   40
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .type   gNandParaInfo, %object
-       .size   gNandParaInfo, 32
-gNandParaInfo:
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   0
-       .byte   1
-       .byte   8
-       .hword  128
-       .byte   2
-       .byte   1
-       .hword  2048
-       .hword  0
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .type   NandFlashParaTbl, %object
-       .size   NandFlashParaTbl, 2112
-NandFlashParaTbl:
-       .byte   6
-       .byte   44
-       .byte   100
-       .byte   68
-       .byte   75
-       .byte   -87
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  479
-       .byte   3
-       .byte   17
-       .byte   40
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   68
-       .byte   68
-       .byte   75
-       .byte   -87
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1064
-       .hword  479
-       .byte   3
-       .byte   17
-       .byte   40
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   104
-       .byte   4
-       .byte   74
-       .byte   -87
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   8
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  287
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   5
-       .byte   44
-       .byte   -120
-       .byte   4
-       .byte   75
-       .byte   -87
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  287
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   -88
-       .byte   5
-       .byte   -53
-       .byte   -87
-       .byte   0
-       .byte   4
-       .byte   2
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  287
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   104
-       .byte   4
-       .byte   70
-       .byte   -119
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   8
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  287
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   72
-       .byte   4
-       .byte   74
-       .byte   -91
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   8
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1024
-       .hword  287
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   -124
-       .byte   100
-       .byte   60
-       .byte   -91
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   32
-       .hword  512
-       .byte   2
-       .byte   2
-       .hword  1024
-       .hword  479
-       .byte   3
-       .byte   17
-       .byte   40
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   -124
-       .byte   100
-       .byte   84
-       .byte   -87
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   32
-       .hword  512
-       .byte   2
-       .byte   2
-       .hword  1024
-       .hword  479
-       .byte   4
-       .byte   18
-       .byte   60
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   -41
-       .byte   -108
-       .byte   62
-       .byte   -124
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   8
-       .hword  128
-       .byte   2
-       .byte   2
-       .hword  4096
-       .hword  279
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   72
-       .byte   4
-       .byte   70
-       .byte   -123
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   8
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1024
-       .hword  287
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   -120
-       .byte   5
-       .byte   -58
-       .byte   -119
-       .byte   0
-       .byte   4
-       .byte   2
-       .byte   8
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  287
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   5
-       .byte   44
-       .byte   -120
-       .byte   36
-       .byte   75
-       .byte   -87
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  287
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   104
-       .byte   0
-       .byte   39
-       .byte   -87
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   16
-       .hword  128
-       .byte   1
-       .byte   2
-       .hword  2048
-       .hword  287
-       .byte   0
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   5
-       .byte   44
-       .byte   100
-       .byte   100
-       .byte   86
-       .byte   -91
-       .byte   0
-       .byte   4
-       .byte   1
-       .byte   24
-       .hword  512
-       .byte   2
-       .byte   2
-       .hword  700
-       .hword  479
-       .byte   4
-       .byte   18
-       .byte   60
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   -124
-       .byte   -59
-       .byte   75
-       .byte   -87
-       .byte   0
-       .byte   4
-       .byte   2
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  479
-       .byte   3
-       .byte   17
-       .byte   40
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   44
-       .byte   -43
-       .byte   -47
-       .byte   -90
-       .byte   104
-       .byte   0
-       .byte   4
-       .byte   2
-       .byte   8
-       .hword  64
-       .byte   1
-       .byte   2
-       .hword  2048
-       .hword  279
-       .byte   0
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   -34
-       .byte   -108
-       .byte   -46
-       .byte   4
-       .byte   67
-       .byte   2
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  473
-       .byte   1
-       .byte   1
-       .byte   24
-       .byte   32
-       .byte   4
-       .byte   0
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   -41
-       .byte   -108
-       .byte   -38
-       .byte   116
-       .byte   -61
-       .byte   2
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1024
-       .hword  473
-       .byte   1
-       .byte   2
-       .byte   40
-       .byte   32
-       .byte   4
-       .byte   0
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   -41
-       .byte   -108
-       .byte   -111
-       .byte   96
-       .byte   68
-       .byte   2
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1046
-       .hword  473
-       .byte   1
-       .byte   3
-       .byte   40
-       .byte   32
-       .byte   4
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   -34
-       .byte   -108
-       .byte   -38
-       .byte   116
-       .byte   -60
-       .byte   2
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2090
-       .hword  473
-       .byte   1
-       .byte   4
-       .byte   40
-       .byte   32
-       .byte   4
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   -34
-       .byte   -108
-       .byte   -21
-       .byte   116
-       .byte   68
-       .byte   2
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1066
-       .hword  473
-       .byte   1
-       .byte   3
-       .byte   40
-       .byte   32
-       .byte   4
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   -43
-       .byte   -108
-       .byte   -38
-       .byte   116
-       .byte   -60
-       .byte   2
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  530
-       .hword  473
-       .byte   1
-       .byte   3
-       .byte   40
-       .byte   32
-       .byte   4
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   -41
-       .byte   -108
-       .byte   -102
-       .byte   116
-       .byte   66
-       .byte   2
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1024
-       .hword  281
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   4
-       .byte   0
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   -34
-       .byte   20
-       .byte   -89
-       .byte   66
-       .byte   74
-       .byte   2
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1060
-       .hword  473
-       .byte   2
-       .byte   5
-       .byte   40
-       .byte   32
-       .byte   4
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   -41
-       .byte   20
-       .byte   -98
-       .byte   52
-       .byte   74
-       .byte   2
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1056
-       .hword  473
-       .byte   2
-       .byte   5
-       .byte   40
-       .byte   32
-       .byte   4
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   -34
-       .byte   -108
-       .byte   -89
-       .byte   66
-       .byte   72
-       .byte   2
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1060
-       .hword  473
-       .byte   2
-       .byte   5
-       .byte   40
-       .byte   32
-       .byte   4
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   -34
-       .byte   20
-       .byte   -85
-       .byte   66
-       .byte   74
-       .byte   2
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1056
-       .hword  1497
-       .byte   2
-       .byte   6
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -83
-       .byte   58
-       .byte   20
-       .byte   -85
-       .byte   66
-       .byte   74
-       .byte   2
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2092
-       .hword  1497
-       .byte   2
-       .byte   5
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -119
-       .byte   100
-       .byte   68
-       .byte   75
-       .byte   -87
-       .byte   0
-       .byte   7
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  479
-       .byte   3
-       .byte   17
-       .byte   40
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -119
-       .byte   -120
-       .byte   36
-       .byte   75
-       .byte   -87
-       .byte   -124
-       .byte   7
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  479
-       .byte   3
-       .byte   17
-       .byte   40
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -119
-       .byte   -120
-       .byte   36
-       .byte   75
-       .byte   -87
-       .byte   0
-       .byte   7
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  279
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -119
-       .byte   104
-       .byte   36
-       .byte   74
-       .byte   -87
-       .byte   0
-       .byte   7
-       .byte   1
-       .byte   8
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  279
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -119
-       .byte   104
-       .byte   4
-       .byte   74
-       .byte   -87
-       .byte   0
-       .byte   7
-       .byte   1
-       .byte   8
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  279
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -119
-       .byte   -41
-       .byte   -108
-       .byte   62
-       .byte   -124
-       .byte   0
-       .byte   7
-       .byte   1
-       .byte   8
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  279
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -119
-       .byte   104
-       .byte   4
-       .byte   70
-       .byte   -87
-       .byte   0
-       .byte   7
-       .byte   1
-       .byte   8
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  279
-       .byte   1
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   0
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   -41
-       .byte   -124
-       .byte   -109
-       .byte   114
-       .byte   87
-       .byte   1
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   1
-       .hword  1060
-       .hword  1473
-       .byte   2
-       .byte   33
-       .byte   40
-       .byte   32
-       .byte   2
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   -34
-       .byte   -124
-       .byte   -109
-       .byte   114
-       .byte   87
-       .byte   1
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   1
-       .hword  2092
-       .hword  1473
-       .byte   2
-       .byte   33
-       .byte   40
-       .byte   32
-       .byte   2
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   58
-       .byte   -123
-       .byte   -109
-       .byte   118
-       .byte   87
-       .byte   1
-       .byte   2
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   1
-       .hword  2092
-       .hword  1505
-       .byte   2
-       .byte   33
-       .byte   40
-       .byte   32
-       .byte   2
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   -43
-       .byte   -124
-       .byte   50
-       .byte   114
-       .byte   86
-       .byte   1
-       .byte   1
-       .byte   16
-       .hword  128
-       .byte   2
-       .byte   1
-       .hword  2056
-       .hword  1473
-       .byte   2
-       .byte   33
-       .byte   40
-       .byte   32
-       .byte   2
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   -41
-       .byte   -108
-       .byte   50
-       .byte   118
-       .byte   86
-       .byte   1
-       .byte   1
-       .byte   16
-       .hword  128
-       .byte   2
-       .byte   2
-       .hword  2058
-       .hword  1489
-       .byte   2
-       .byte   33
-       .byte   40
-       .byte   32
-       .byte   2
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   -34
-       .byte   -108
-       .byte   -126
-       .byte   118
-       .byte   86
-       .byte   1
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2062
-       .hword  1489
-       .byte   1
-       .byte   33
-       .byte   40
-       .byte   32
-       .byte   2
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   -34
-       .byte   -108
-       .byte   -109
-       .byte   118
-       .byte   80
-       .byte   1
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1066
-       .hword  1497
-       .byte   2
-       .byte   34
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   58
-       .byte   -107
-       .byte   -109
-       .byte   122
-       .byte   80
-       .byte   1
-       .byte   2
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1066
-       .hword  1497
-       .byte   2
-       .byte   34
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   -41
-       .byte   -108
-       .byte   50
-       .byte   118
-       .byte   85
-       .byte   1
-       .byte   1
-       .byte   16
-       .hword  128
-       .byte   2
-       .byte   2
-       .hword  2050
-       .hword  401
-       .byte   2
-       .byte   0
-       .byte   24
-       .byte   32
-       .byte   1
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   -34
-       .byte   -108
-       .byte   -109
-       .byte   118
-       .byte   87
-       .byte   1
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1058
-       .hword  1497
-       .byte   2
-       .byte   33
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   -41
-       .byte   -124
-       .byte   -109
-       .byte   114
-       .byte   80
-       .byte   1
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   1
-       .hword  1060
-       .hword  1473
-       .byte   2
-       .byte   34
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   -34
-       .byte   -108
-       .byte   -109
-       .byte   118
-       .byte   81
-       .byte   1
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1074
-       .hword  1497
-       .byte   2
-       .byte   35
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   4
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   58
-       .byte   -108
-       .byte   -109
-       .byte   118
-       .byte   81
-       .byte   1
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2106
-       .hword  1497
-       .byte   2
-       .byte   35
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   4
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -104
-       .byte   -41
-       .byte   -124
-       .byte   -109
-       .byte   114
-       .byte   81
-       .byte   1
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   1
-       .hword  1056
-       .hword  1497
-       .byte   2
-       .byte   35
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   4
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   69
-       .byte   -34
-       .byte   -108
-       .byte   -109
-       .byte   118
-       .byte   87
-       .byte   8
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1058
-       .hword  1497
-       .byte   2
-       .byte   66
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   69
-       .byte   -41
-       .byte   -124
-       .byte   -109
-       .byte   114
-       .byte   87
-       .byte   8
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   1
-       .hword  1060
-       .hword  1473
-       .byte   2
-       .byte   66
-       .byte   40
-       .byte   32
-       .byte   2
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   69
-       .byte   -34
-       .byte   -92
-       .byte   -126
-       .byte   118
-       .byte   86
-       .byte   8
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2082
-       .hword  473
-       .byte   1
-       .byte   65
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   69
-       .byte   -34
-       .byte   -108
-       .byte   -109
-       .byte   118
-       .byte   80
-       .byte   8
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1066
-       .hword  1497
-       .byte   2
-       .byte   67
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   69
-       .byte   -41
-       .byte   -124
-       .byte   -109
-       .byte   114
-       .byte   80
-       .byte   8
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   1
-       .hword  1060
-       .hword  1473
-       .byte   2
-       .byte   67
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   69
-       .byte   -34
-       .byte   -92
-       .byte   -126
-       .byte   118
-       .byte   -41
-       .byte   8
-       .byte   1
-       .byte   16
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2090
-       .hword  1241
-       .byte   1
-       .byte   66
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   69
-       .byte   -34
-       .byte   -124
-       .byte   -109
-       .byte   114
-       .byte   87
-       .byte   8
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   1
-       .hword  2092
-       .hword  1473
-       .byte   2
-       .byte   66
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   69
-       .byte   58
-       .byte   -108
-       .byte   -109
-       .byte   118
-       .byte   81
-       .byte   8
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2106
-       .hword  1497
-       .byte   2
-       .byte   68
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   4
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   69
-       .byte   -34
-       .byte   -108
-       .byte   -109
-       .byte   118
-       .byte   81
-       .byte   8
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  1074
-       .hword  1497
-       .byte   2
-       .byte   68
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   4
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   69
-       .byte   58
-       .byte   -92
-       .byte   -109
-       .byte   122
-       .byte   80
-       .byte   8
-       .byte   1
-       .byte   32
-       .hword  256
-       .byte   2
-       .byte   2
-       .hword  2138
-       .hword  1497
-       .byte   2
-       .byte   0
-       .byte   40
-       .byte   32
-       .byte   3
-       .byte   1
-       .byte   1
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -20
-       .byte   -41
-       .byte   -108
-       .byte   126
-       .byte   100
-       .byte   68
-       .byte   0
-       .byte   1
-       .byte   16
-       .hword  128
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  473
-       .byte   2
-       .byte   49
-       .byte   60
-       .byte   36
-       .byte   3
-       .byte   0
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -20
-       .byte   -34
-       .byte   -43
-       .byte   126
-       .byte   104
-       .byte   68
-       .byte   0
-       .byte   2
-       .byte   16
-       .hword  128
-       .byte   2
-       .byte   2
-       .hword  2048
-       .hword  505
-       .byte   2
-       .byte   49
-       .byte   60
-       .byte   36
-       .byte   3
-       .byte   0
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -20
-       .byte   -41
-       .byte   -108
-       .byte   122
-       .byte   84
-       .byte   67
-       .byte   0
-       .byte   1
-       .byte   16
-       .hword  128
-       .byte   2
-       .byte   2
-       .hword  2076
-       .hword  409
-       .byte   2
-       .byte   0
-       .byte   40
-       .byte   36
-       .byte   3
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -20
-       .byte   -34
-       .byte   -43
-       .byte   122
-       .byte   88
-       .byte   67
-       .byte   0
-       .byte   2
-       .byte   16
-       .hword  128
-       .byte   2
-       .byte   2
-       .hword  2076
-       .hword  441
-       .byte   2
-       .byte   0
-       .byte   40
-       .byte   36
-       .byte   3
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -20
-       .byte   -43
-       .byte   -108
-       .byte   118
-       .byte   84
-       .byte   67
-       .byte   0
-       .byte   1
-       .byte   16
-       .hword  128
-       .byte   2
-       .byte   2
-       .hword  1038
-       .hword  281
-       .byte   2
-       .byte   0
-       .byte   24
-       .byte   36
-       .byte   3
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
-       .byte   6
-       .byte   -20
-       .byte   -41
-       .byte   20
-       .byte   118
-       .byte   84
-       .byte   -62
-       .byte   0
-       .byte   1
-       .byte   16
-       .hword  128
-       .byte   2
-       .byte   2
-       .hword  2076
-       .hword  1169
-       .byte   2
-       .byte   0
-       .byte   24
-       .byte   40
-       .byte   3
-       .byte   1
-       .byte   3
-       .byte   0
-       .byte   0
-       .zero   5
        .section        .rodata.str1.1,"aMS",%progbits,1
 .LC0:
        .string "Context allocation failed\n"
 .LC1:
-       .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n"
+       .string "FlashEraseBlocks pageAddr error %x\n"
 .LC2:
-       .string "FLASH INFO:\n"
+       .string "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n"
 .LC3:
-       .string "FLASH ID: %x\n"
+       .string "FLASH INFO:\n"
 .LC4:
-       .string "Device Capacity: %d MB\n"
+       .string "FLASH ID: %x\n"
 .LC5:
-       .string "FMWAIT: %x %x %x %x\n"
+       .string "Device Capacity: %d MB\n"
 .LC6:
-       .string "FTL INFO:\n"
+       .string "FMWAIT: %x %x %x %x\n"
 .LC7:
-       .string "g_MaxLpn = 0x%x\n"
+       .string "FTL INFO:\n"
 .LC8:
-       .string "g_VaildLpn = 0x%x\n"
+       .string "g_MaxLpn = 0x%x\n"
 .LC9:
-       .string "read_page_count = 0x%x\n"
+       .string "g_VaildLpn = 0x%x\n"
 .LC10:
-       .string "discard_page_count = 0x%x\n"
+       .string "read_page_count = 0x%x\n"
 .LC11:
-       .string "write_page_count = 0x%x\n"
+       .string "discard_page_count = 0x%x\n"
 .LC12:
-       .string "cache_write_count = 0x%x\n"
+       .string "write_page_count = 0x%x\n"
 .LC13:
-       .string "l2p_write_count = 0x%x\n"
+       .string "cache_write_count = 0x%x\n"
 .LC14:
-       .string "gc_page_count = 0x%x\n"
+       .string "l2p_write_count = 0x%x\n"
 .LC15:
-       .string "totle_write = %d MB\n"
+       .string "gc_page_count = 0x%x\n"
 .LC16:
-       .string "totle_read = %d MB\n"
+       .string "totle_write = %d MB\n"
 .LC17:
-       .string "GSV = 0x%x\n"
+       .string "totle_read = %d MB\n"
 .LC18:
-       .string "GDV = 0x%x\n"
+       .string "GSV = 0x%x\n"
 .LC19:
-       .string "bad blk num = %d %d\n"
+       .string "GDV = 0x%x\n"
 .LC20:
-       .string "free_superblocks = 0x%x\n"
+       .string "bad blk num = %d %d\n"
 .LC21:
-       .string "mlc_EC = 0x%x\n"
+       .string "free_superblocks = 0x%x\n"
 .LC22:
-       .string "slc_EC = 0x%x\n"
+       .string "mlc_EC = 0x%x\n"
 .LC23:
-       .string "avg_EC = 0x%x\n"
+       .string "slc_EC = 0x%x\n"
 .LC24:
-       .string "sys_EC = 0x%x\n"
+       .string "avg_EC = 0x%x\n"
 .LC25:
-       .string "max_EC = 0x%x\n"
+       .string "sys_EC = 0x%x\n"
 .LC26:
-       .string "min_EC = 0x%x\n"
+       .string "max_EC = 0x%x\n"
 .LC27:
-       .string "PLT = 0x%x\n"
+       .string "min_EC = 0x%x\n"
 .LC28:
-       .string "POT = 0x%x\n"
+       .string "PLT = 0x%x\n"
 .LC29:
-       .string "MaxSector = 0x%x\n"
+       .string "POT = 0x%x\n"
 .LC30:
-       .string "init_sys_blks_pp = 0x%x\n"
+       .string "MaxSector = 0x%x\n"
 .LC31:
-       .string "sys_blks_pp = 0x%x\n"
+       .string "init_sys_blks_pp = 0x%x\n"
 .LC32:
-       .string "free sysblock = 0x%x\n"
+       .string "sys_blks_pp = 0x%x\n"
 .LC33:
-       .string "data_blks_pp = 0x%x\n"
+       .string "free sysblock = 0x%x\n"
 .LC34:
-       .string "data_op_blks_pp = 0x%x\n"
+       .string "data_blks_pp = 0x%x\n"
 .LC35:
-       .string "max_data_blks = 0x%x\n"
+       .string "data_op_blks_pp = 0x%x\n"
 .LC36:
-       .string "Sys.id = 0x%x\n"
+       .string "max_data_blks = 0x%x\n"
 .LC37:
-       .string "Bbt.id = 0x%x\n"
+       .string "Sys.id = 0x%x\n"
 .LC38:
-       .string "ACT.page = 0x%x\n"
+       .string "Bbt.id = 0x%x\n"
 .LC39:
-       .string "ACT.plane = 0x%x\n"
+       .string "ACT.page = 0x%x\n"
 .LC40:
-       .string "ACT.id = 0x%x\n"
+       .string "ACT.plane = 0x%x\n"
 .LC41:
-       .string "ACT.mode = 0x%x\n"
+       .string "ACT.id = 0x%x\n"
 .LC42:
-       .string "ACT.a_pages = 0x%x\n"
+       .string "ACT.mode = 0x%x\n"
 .LC43:
-       .string "ACT VPC = 0x%x\n"
+       .string "ACT.a_pages = 0x%x\n"
 .LC44:
-       .string "BUF.page = 0x%x\n"
+       .string "ACT VPC = 0x%x\n"
 .LC45:
-       .string "BUF.plane = 0x%x\n"
+       .string "BUF.page = 0x%x\n"
 .LC46:
-       .string "BUF.id = 0x%x\n"
+       .string "BUF.plane = 0x%x\n"
 .LC47:
-       .string "BUF.mode = 0x%x\n"
+       .string "BUF.id = 0x%x\n"
 .LC48:
-       .string "BUF.a_pages = 0x%x\n"
+       .string "BUF.mode = 0x%x\n"
 .LC49:
-       .string "BUF VPC = 0x%x\n"
+       .string "BUF.a_pages = 0x%x\n"
 .LC50:
-       .string "TMP.page = 0x%x\n"
+       .string "BUF VPC = 0x%x\n"
 .LC51:
-       .string "TMP.plane = 0x%x\n"
+       .string "TMP.page = 0x%x\n"
 .LC52:
-       .string "TMP.id = 0x%x\n"
+       .string "TMP.plane = 0x%x\n"
 .LC53:
-       .string "TMP.mode = 0x%x\n"
+       .string "TMP.id = 0x%x\n"
 .LC54:
-       .string "TMP.a_pages = 0x%x\n"
+       .string "TMP.mode = 0x%x\n"
 .LC55:
-       .string "GC.page = 0x%x\n"
+       .string "TMP.a_pages = 0x%x\n"
 .LC56:
-       .string "GC.plane = 0x%x\n"
+       .string "GC.page = 0x%x\n"
 .LC57:
-       .string "GC.id = 0x%x\n"
+       .string "GC.plane = 0x%x\n"
 .LC58:
-       .string "GC.mode = 0x%x\n"
+       .string "GC.id = 0x%x\n"
 .LC59:
-       .string "GC.a_pages = 0x%x\n"
+       .string "GC.mode = 0x%x\n"
 .LC60:
-       .string "WR_CHK = 0x%x %x %x %x\n"
+       .string "GC.a_pages = 0x%x\n"
 .LC61:
-       .string "Read Err Cnt = 0x%x\n"
+       .string "WR_CHK = 0x%x %x %x %x\n"
 .LC62:
-       .string "Prog Err Cnt = 0x%x\n"
+       .string "Read Err Cnt = 0x%x\n"
 .LC63:
-       .string "gc_free_blk_th= 0x%x\n"
+       .string "Prog Err Cnt = 0x%x\n"
 .LC64:
-       .string "gc_merge_free_blk_th= 0x%x\n"
+       .string "gc_free_blk_th= 0x%x\n"
 .LC65:
-       .string "gc_skip_write_count= 0x%x\n"
+       .string "gc_merge_free_blk_th= 0x%x\n"
 .LC66:
-       .string "gc_blk_index= 0x%x\n"
+       .string "gc_skip_write_count= 0x%x\n"
 .LC67:
-       .string "free min EC= 0x%x\n"
+       .string "gc_blk_index= 0x%x\n"
 .LC68:
-       .string "free max EC= 0x%x\n"
+       .string "free min EC= 0x%x\n"
 .LC69:
-       .string "GC__SB VPC = 0x%x\n"
+       .string "free max EC= 0x%x\n"
 .LC70:
-       .string "%d. [0x%x]=0x%x 0x%x  0x%x\n"
+       .string "GC__SB VPC = 0x%x\n"
 .LC71:
-       .string "free %d. [0x%x] 0x%x  0x%x\n"
+       .string "%d. [0x%x]=0x%x 0x%x  0x%x\n"
 .LC72:
-       .string "%s\n"
+       .string "free %d. [0x%x] 0x%x  0x%x\n"
 .LC73:
-       .string "FTL version: 5.0.31 20160315"
+       .string "%s\n"
 .LC74:
-       .string "GetSwlReplaceBlock min_ec_id =%x %x\n"
+       .string "FTL version: 5.0.36 20170316"
 .LC75:
-       .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n"
+       .string "GetSwlReplaceBlock min_ec_id =%x %x\n"
 .LC76:
-       .string "FtlGcRefreshBlock  0x%x \n"
+       .string "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n"
 .LC77:
-       .string "FtlGcMarkBadPhyBlk %d 0x%x\n"
+       .string "FtlGcRefreshBlock  0x%x\n"
 .LC78:
-       .string "%s error allocating memory. return -1\n"
+       .string "FtlGcMarkBadPhyBlk %d 0x%x\n"
 .LC79:
-       .string "%s 0x%x:"
+       .string "%s error allocating memory. return -1\n"
 .LC80:
-       .string "%"
+       .string "%s 0x%x:"
 .LC81:
-       .string ""
+       .string "%x "
 .LC82:
-       .string "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\n"
+       .string ""
 .LC83:
-       .string "nandc:"
+       .string "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\n"
 .LC84:
-       .string "%d flReg.d32=%x %x\n"
+       .string "nandc:"
 .LC85:
-       .string "sdr read ok %x ecc=%d\n"
+       .string "%d flReg.d32=%x %x\n"
 .LC86:
-       .string "sync para %d\n"
+       .string "sdr read ok %x ecc=%d\n"
 .LC87:
-       .string "TOG mode Read error %x %x\n"
+       .string "sync para %d\n"
 .LC88:
-       .string "read retry status %x %x %x\n"
+       .string "TOG mode Read error %x %x\n"
 .LC89:
-       .string "ECC:%d\n"
+       .string "read retry status %x %x %x\n"
 .LC90:
-       .string "No.%d FLASH ID:%x %x %x %x %x %x\n"
+       .string "ECC:%d\n"
 .LC91:
-       .string "FlashLoadPhyInfo fail %x!!\n"
+       .string "No.%d FLASH ID:%x %x %x %x %x %x\n"
 .LC92:
-       .string "ReadRetry pageadd=%x  ecc=%x err=%x\n"
+       .string "FlashLoadPhyInfo fail %x!!\n"
 .LC93:
        .string "Read pageadd=%x  ecc=%x err=%x\n"
 .LC94:
-       .string "spare:"
+       .string "data:"
 .LC95:
-       .string "FLFB:%d %d\n"
+       .string "spare:"
 .LC96:
-       .string "no ect"
+       .string "ReadRetry pageadd=%x  ecc=%x err=%x\n"
 .LC97:
-       .string "slc mode"
+       .string "FLFB:%d %d\n"
 .LC98:
        .string "prog error: = %x\n"
 .LC99:
@@ -23995,120 +21027,2866 @@ NandFlashParaTbl:
 .LC101:
        .string "prog read d error: = %x %x %x\n"
 .LC102:
-       .string "FlashMakeFactorBbt %d\n"
+       .string "no ect"
 .LC103:
-       .string "bad block:%d %d\n"
+       .string "slc mode"
 .LC104:
-       .string "FMFB:%d %d\n"
+       .string "FlashMakeFactorBbt %d\n"
 .LC105:
-       .string "E:bad block:%d\n"
+       .string "bad block:%d %d\n"
 .LC106:
-       .string "FMFB:Save %d %d\n"
+       .string "FMFB:%d %d\n"
 .LC107:
-       .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n"
+       .string "E:bad block:%d\n"
 .LC108:
-       .string "FtlBbmTblFlush error:%x\n"
+       .string "FMFB:Save %d %d\n"
 .LC109:
-       .string "FtlGcFreeBadSuperBlk 0x%x\n"
+       .string "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n"
 .LC110:
-       .string "decrement_vpc_count %x = %d\n"
+       .string "FtlBbmTblFlush error:%x\n"
 .LC111:
-       .string "spuer block %x vpn is 0\n "
+       .string "FtlGcFreeBadSuperBlk 0x%x\n"
 .LC112:
-       .string "...%s enter...\n"
+       .string "decrement_vpc_count %x = %d\n"
 .LC113:
-       .string "FtlCheckVpc %x = %x  %x\n"
+       .string "spuer block %x vpn is 0\n "
 .LC114:
-       .string "Ftlwrite decrement_vpc_count %x = %d\n"
+       .string "...%s enter...\n"
 .LC115:
-       .string "FtlInit %x\n"
+       .string "FtlCheckVpc %x = %x  %x\n"
 .LC116:
        .string "%d GC datablk  = %x vpc %x %x\n"
 .LC117:
        .string "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n"
 .LC118:
-       .string "FtlWrite: lpa error:%x %x\n"
+       .string "Ftlwrite decrement_vpc_count %x = %d\n"
 .LC119:
-       .string "BBT:"
+       .string "FtlInit %x\n"
 .LC120:
-       .string "IdBlockReadData %x %x\n"
+       .string "FtlWrite: lpa error:%x %x\n"
 .LC121:
-       .string "IdBlockReadData %x %x ret= %x\n"
+       .string "BBT:"
 .LC122:
-       .string "IDBlockWriteData %x %x\n"
+       .string "IdBlockReadData %x %x\n"
 .LC123:
-       .string "IDBlockWriteData %x %x ret= %x\n"
+       .string "IdBlockReadData %x %x ret= %x\n"
 .LC124:
-       .string "idblk:"
+       .string "IDBlockWriteData %x %x\n"
 .LC125:
-       .string "idb reverse %x %x\n"
+       .string "IDBlockWriteData %x %x ret= %x\n"
 .LC126:
-       .string "write_idblock totle_sec %x %x\n"
+       .string "idblk:"
 .LC127:
-       .string "write and check error:%d idb=%x,offset=%x,r=%x,w=%x \n"
+       .string "idb reverse %x %x\n"
 .LC128:
-       .string "write"
+       .string "write_idblock totle_sec %x %x\n"
 .LC129:
-       .string "read"
+       .string "write and check error:%d idb=%x,offset=%x,r=%x,w=%x\n"
 .LC130:
-       .string "write_idblock error\n"
+       .string "write"
 .LC131:
-       .string "READ_SECTOR_IO\n"
+       .string "read"
 .LC132:
-       .string "rk_copy_from_user error \n"
+       .string "write_idblock error\n"
 .LC133:
-       .string "READ_SECTOR_IO %x %x\n"
+       .string "READ_SECTOR_IO\n"
 .LC134:
-       .string "rk_copy_to_user error\n"
+       .string "rk_copy_from_user error\n"
 .LC135:
-       .string "WRITE_SECTOR_IO\n"
+       .string "READ_SECTOR_IO %x %x\n"
 .LC136:
-       .string "WRITE_SECTOR_IO %x %x\n"
+       .string "rk_copy_to_user error\n"
 .LC137:
-       .string "END_WRITE_SECTOR_IO\n"
+       .string "WRITE_SECTOR_IO\n"
 .LC138:
-       .string "END_WRITE_SECTOR_IO %x %x\n"
+       .string "WRITE_SECTOR_IO %x %x\n"
 .LC139:
-       .string "GET_FLASH_INFO_IO\n"
+       .string "END_WRITE_SECTOR_IO\n"
 .LC140:
-       .string "GET_BAD_BLOCK_IO\n"
+       .string "END_WRITE_SECTOR_IO %x %x\n"
 .LC141:
-       .string "bbt:"
+       .string "GET_FLASH_INFO_IO\n"
 .LC142:
-       .string "GET_LOCK_FLAG_IO\n"
+       .string "GET_BAD_BLOCK_IO\n"
 .LC143:
-       .string "GET_PUBLIC_KEY_IO\n"
+       .string "bbt:"
 .LC144:
-       .string "RKNAND_GET_DRM_KEY\n"
+       .string "GET_LOCK_FLAG_IO\n"
 .LC145:
-       .string "RKNAND_STORE_DRM_KEY\n"
+       .string "GET_PUBLIC_KEY_IO\n"
 .LC146:
-       .string "RKNAND_DIASBLE_SECURE_BOOT\n"
+       .string "RKNAND_GET_DRM_KEY\n"
 .LC147:
-       .string "RKNAND_ENASBLE_SECURE_BOOT\n"
+       .string "RKNAND_STORE_DRM_KEY\n"
 .LC148:
-       .string "RKNAND_GET_SN_SECTOR\n"
+       .string "copy_from_user error\n"
 .LC149:
-       .string "RKNAND_LOADER_UNLOCK\n"
+       .string "RKNAND_DIASBLE_SECURE_BOOT\n"
 .LC150:
-       .string "RKNAND_LOADER_STATUS\n"
+       .string "RKNAND_ENASBLE_SECURE_BOOT\n"
 .LC151:
-       .string "RKNAND_LOADER_LOCK\n"
+       .string "RKNAND_GET_SN_SECTOR\n"
 .LC152:
-       .string "LockKey not match %d\n"
+       .string "RKNAND_LOADER_UNLOCK\n"
 .LC153:
-       .string "RKNAND_GET_VENDOR_SECTOR\n"
+       .string "RKNAND_LOADER_STATUS\n"
 .LC154:
-       .string "RKNAND_STORE_VENDOR_SECTOR\n"
+       .string "RKNAND_LOADER_LOCK\n"
 .LC155:
-       .string "return ret = %lx\n"
+       .string "LockKey not match %d\n"
 .LC156:
-       .string "secureBootEn check error\n"
+       .string "RKNAND_GET_VENDOR_SECTOR\n"
 .LC157:
+       .string "RKNAND_STORE_VENDOR_SECTOR\n"
+.LC158:
+       .string "return ret = %lx\n"
+.LC159:
+       .string "secureBootEn check error\n"
+.LC160:
        .string "rknand_sys_storage"
+       .data
+       .align  3
+.LANCHOR1 = . + 0
+       .type   random_seed, %object
+       .size   random_seed, 256
+random_seed:
+       .hword  22378
+       .hword  1512
+       .hword  25245
+       .hword  17827
+       .hword  25756
+       .hword  19440
+       .hword  9026
+       .hword  10030
+       .hword  29528
+       .hword  20467
+       .hword  29676
+       .hword  24432
+       .hword  31328
+       .hword  6872
+       .hword  13426
+       .hword  13842
+       .hword  8783
+       .hword  1108
+       .hword  782
+       .hword  28837
+       .hword  30729
+       .hword  9505
+       .hword  18676
+       .hword  23085
+       .hword  18730
+       .hword  1085
+       .hword  32609
+       .hword  14697
+       .hword  20858
+       .hword  15170
+       .hword  30365
+       .hword  1607
+       .hword  32298
+       .hword  4995
+       .hword  18905
+       .hword  1976
+       .hword  9592
+       .hword  20204
+       .hword  17443
+       .hword  13615
+       .hword  23330
+       .hword  29369
+       .hword  13947
+       .hword  9398
+       .hword  32398
+       .hword  8984
+       .hword  27600
+       .hword  21785
+       .hword  6019
+       .hword  6311
+       .hword  31598
+       .hword  30210
+       .hword  19327
+       .hword  13896
+       .hword  11347
+       .hword  27545
+       .hword  3107
+       .hword  26575
+       .hword  32270
+       .hword  19852
+       .hword  20601
+       .hword  8349
+       .hword  9290
+       .hword  29819
+       .hword  13579
+       .hword  3661
+       .hword  28676
+       .hword  27331
+       .hword  32574
+       .hword  8693
+       .hword  31253
+       .hword  9081
+       .hword  5399
+       .hword  6842
+       .hword  20087
+       .hword  5537
+       .hword  1274
+       .hword  11617
+       .hword  9530
+       .hword  4866
+       .hword  8035
+       .hword  23219
+       .hword  1178
+       .hword  23272
+       .hword  7383
+       .hword  18944
+       .hword  12488
+       .hword  12871
+       .hword  29340
+       .hword  20532
+       .hword  11022
+       .hword  22514
+       .hword  228
+       .hword  22363
+       .hword  24978
+       .hword  14584
+       .hword  12138
+       .hword  3092
+       .hword  17916
+       .hword  16863
+       .hword  14554
+       .hword  31457
+       .hword  29474
+       .hword  25311
+       .hword  24121
+       .hword  3684
+       .hword  28037
+       .hword  22865
+       .hword  22839
+       .hword  25217
+       .hword  13217
+       .hword  27186
+       .hword  14938
+       .hword  11180
+       .hword  29754
+       .hword  24180
+       .hword  15150
+       .hword  32455
+       .hword  20434
+       .hword  23848
+       .hword  29983
+       .hword  16120
+       .hword  14769
+       .hword  20041
+       .hword  29803
+       .hword  28406
+       .hword  17598
+       .hword  28087
+       .type   ToshibaA19RefValue, %object
+       .size   ToshibaA19RefValue, 45
+ToshibaA19RefValue:
+       .byte   4
+       .byte   5
+       .byte   6
+       .byte   7
+       .byte   13
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   4
+       .byte   4
+       .byte   124
+       .byte   126
+       .byte   0
+       .byte   0
+       .byte   124
+       .byte   120
+       .byte   120
+       .byte   0
+       .byte   124
+       .byte   118
+       .byte   116
+       .byte   114
+       .byte   0
+       .byte   8
+       .byte   8
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   11
+       .byte   126
+       .byte   118
+       .byte   116
+       .byte   0
+       .byte   16
+       .byte   118
+       .byte   114
+       .byte   112
+       .byte   0
+       .byte   2
+       .byte   0
+       .byte   126
+       .byte   124
+       .byte   0
+       .zero   3
+       .type   Toshiba15RefValue, %object
+       .size   Toshiba15RefValue, 95
+Toshiba15RefValue:
+       .byte   4
+       .byte   5
+       .byte   6
+       .byte   7
+       .byte   13
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   2
+       .byte   4
+       .byte   2
+       .byte   0
+       .byte   0
+       .byte   8
+       .byte   8
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   124
+       .byte   0
+       .byte   124
+       .byte   124
+       .byte   0
+       .byte   122
+       .byte   0
+       .byte   122
+       .byte   122
+       .byte   0
+       .byte   11
+       .byte   126
+       .byte   118
+       .byte   116
+       .byte   0
+       .byte   120
+       .byte   2
+       .byte   120
+       .byte   122
+       .byte   0
+       .byte   126
+       .byte   4
+       .byte   126
+       .byte   122
+       .byte   0
+       .byte   16
+       .byte   118
+       .byte   114
+       .byte   112
+       .byte   0
+       .byte   118
+       .byte   4
+       .byte   118
+       .byte   120
+       .byte   0
+       .byte   4
+       .byte   4
+       .byte   4
+       .byte   118
+       .byte   0
+       .byte   2
+       .byte   0
+       .byte   126
+       .byte   124
+       .byte   0
+       .byte   6
+       .byte   10
+       .byte   6
+       .byte   2
+       .byte   0
+       .byte   116
+       .byte   124
+       .byte   116
+       .byte   118
+       .byte   0
+       .byte   4
+       .byte   4
+       .byte   124
+       .byte   126
+       .byte   0
+       .byte   0
+       .byte   124
+       .byte   120
+       .byte   120
+       .byte   0
+       .byte   124
+       .byte   118
+       .byte   116
+       .byte   114
+       .byte   0
+       .zero   1
+       .type   ToshibaRefValue, %object
+       .size   ToshibaRefValue, 8
+ToshibaRefValue:
+       .byte   0
+       .byte   4
+       .byte   124
+       .byte   120
+       .byte   116
+       .byte   8
+       .byte   12
+       .byte   112
+       .type   SamsungRefValue, %object
+       .size   SamsungRefValue, 64
+SamsungRefValue:
+       .byte   -89
+       .byte   -92
+       .byte   -91
+       .byte   -90
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   5
+       .byte   10
+       .byte   0
+       .byte   0
+       .byte   40
+       .byte   0
+       .byte   -20
+       .byte   -40
+       .byte   -19
+       .byte   -11
+       .byte   -19
+       .byte   -26
+       .byte   10
+       .byte   15
+       .byte   5
+       .byte   0
+       .byte   15
+       .byte   10
+       .byte   -5
+       .byte   -20
+       .byte   -24
+       .byte   -17
+       .byte   -24
+       .byte   -36
+       .byte   -15
+       .byte   -5
+       .byte   -2
+       .byte   -16
+       .byte   10
+       .byte   0
+       .byte   -5
+       .byte   -20
+       .byte   -48
+       .byte   -30
+       .byte   -48
+       .byte   -62
+       .byte   20
+       .byte   15
+       .byte   -5
+       .byte   -20
+       .byte   -24
+       .byte   -5
+       .byte   -24
+       .byte   -36
+       .byte   30
+       .byte   20
+       .byte   -5
+       .byte   -20
+       .byte   -5
+       .byte   -1
+       .byte   -5
+       .byte   -8
+       .byte   7
+       .byte   12
+       .byte   2
+       .byte   0
+       .type   gNandParaInfo, %object
+       .size   gNandParaInfo, 32
+gNandParaInfo:
+       .byte   0
+       .byte   0
+       .zero   5
+       .byte   0
+       .byte   1
+       .byte   8
+       .hword  128
+       .byte   2
+       .byte   1
+       .hword  2048
+       .hword  0
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .type   refValueDefault, %object
+       .size   refValueDefault, 28
+refValueDefault:
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   6
+       .byte   10
+       .byte   6
+       .byte   0
+       .byte   -3
+       .byte   -7
+       .byte   -8
+       .byte   0
+       .byte   -6
+       .byte   -13
+       .byte   -15
+       .byte   0
+       .byte   -11
+       .byte   -20
+       .byte   -23
+       .byte   0
+       .byte   0
+       .byte   -26
+       .byte   -30
+       .byte   0
+       .byte   0
+       .byte   -32
+       .byte   -37
+       .type   gFtlInitStatus, %object
+       .size   gFtlInitStatus, 4
+gFtlInitStatus:
+       .word   -1
+       .type   NandFlashParaTbl, %object
+       .size   NandFlashParaTbl, 2304
+NandFlashParaTbl:
+       .byte   6
+       .byte   44
+       .byte   100
+       .byte   68
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   68
+       .byte   68
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1064
+       .hword  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   104
+       .byte   4
+       .byte   74
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   5
+       .byte   44
+       .byte   -120
+       .byte   4
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   -88
+       .byte   5
+       .byte   -53
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   2
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   104
+       .byte   4
+       .byte   70
+       .byte   -119
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   72
+       .byte   4
+       .byte   74
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1024
+       .hword  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   -124
+       .byte   100
+       .byte   60
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   32
+       .hword  512
+       .byte   2
+       .byte   2
+       .hword  1024
+       .hword  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   -124
+       .byte   100
+       .byte   84
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   32
+       .hword  512
+       .byte   2
+       .byte   2
+       .hword  1024
+       .hword  479
+       .byte   4
+       .byte   18
+       .byte   60
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   -41
+       .byte   -108
+       .byte   62
+       .byte   -124
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .hword  128
+       .byte   2
+       .byte   2
+       .hword  4096
+       .hword  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   72
+       .byte   4
+       .byte   70
+       .byte   -123
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1024
+       .hword  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   -120
+       .byte   5
+       .byte   -58
+       .byte   -119
+       .byte   0
+       .byte   4
+       .byte   2
+       .byte   8
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   5
+       .byte   44
+       .byte   -120
+       .byte   36
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  287
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   104
+       .byte   0
+       .byte   39
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   16
+       .hword  128
+       .byte   1
+       .byte   2
+       .hword  2048
+       .hword  287
+       .byte   0
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   5
+       .byte   44
+       .byte   100
+       .byte   100
+       .byte   86
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   24
+       .hword  512
+       .byte   2
+       .byte   2
+       .hword  700
+       .hword  479
+       .byte   4
+       .byte   18
+       .byte   60
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   -124
+       .byte   -59
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   4
+       .byte   2
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   -43
+       .byte   -47
+       .byte   -90
+       .byte   104
+       .byte   0
+       .byte   4
+       .byte   2
+       .byte   8
+       .hword  64
+       .byte   1
+       .byte   2
+       .hword  2048
+       .hword  279
+       .byte   0
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   44
+       .byte   -36
+       .byte   -112
+       .byte   -90
+       .byte   84
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   8
+       .hword  64
+       .byte   1
+       .byte   2
+       .hword  1024
+       .hword  279
+       .byte   0
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   5
+       .byte   -75
+       .byte   100
+       .byte   100
+       .byte   86
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   24
+       .hword  512
+       .byte   2
+       .byte   2
+       .hword  700
+       .hword  479
+       .byte   4
+       .byte   18
+       .byte   60
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   5
+       .byte   44
+       .byte   100
+       .byte   68
+       .byte   50
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   32
+       .hword  512
+       .byte   2
+       .byte   1
+       .hword  1088
+       .hword  1503
+       .byte   5
+       .byte   19
+       .byte   60
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .zero   4
+       .byte   5
+       .byte   44
+       .byte   100
+       .byte   100
+       .byte   60
+       .byte   -91
+       .byte   0
+       .byte   4
+       .byte   1
+       .byte   32
+       .hword  512
+       .byte   2
+       .byte   1
+       .hword  1044
+       .hword  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   -108
+       .byte   -46
+       .byte   4
+       .byte   67
+       .byte   2
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  473
+       .byte   1
+       .byte   1
+       .byte   24
+       .byte   32
+       .byte   4
+       .byte   0
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   -41
+       .byte   -108
+       .byte   -38
+       .byte   116
+       .byte   -61
+       .byte   2
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1024
+       .hword  473
+       .byte   1
+       .byte   2
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   0
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   -41
+       .byte   -108
+       .byte   -111
+       .byte   96
+       .byte   68
+       .byte   2
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1046
+       .hword  473
+       .byte   1
+       .byte   3
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   -108
+       .byte   -38
+       .byte   116
+       .byte   -60
+       .byte   2
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2090
+       .hword  473
+       .byte   1
+       .byte   4
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   -108
+       .byte   -21
+       .byte   116
+       .byte   68
+       .byte   2
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1066
+       .hword  473
+       .byte   1
+       .byte   3
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   -43
+       .byte   -108
+       .byte   -38
+       .byte   116
+       .byte   -60
+       .byte   2
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  530
+       .hword  473
+       .byte   1
+       .byte   3
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   -41
+       .byte   -108
+       .byte   -102
+       .byte   116
+       .byte   66
+       .byte   2
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1024
+       .hword  281
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   4
+       .byte   0
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   20
+       .byte   -89
+       .byte   66
+       .byte   74
+       .byte   2
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1060
+       .hword  473
+       .byte   2
+       .byte   5
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   -41
+       .byte   20
+       .byte   -98
+       .byte   52
+       .byte   74
+       .byte   2
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1056
+       .hword  473
+       .byte   2
+       .byte   5
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   -108
+       .byte   -89
+       .byte   66
+       .byte   72
+       .byte   2
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1060
+       .hword  473
+       .byte   2
+       .byte   5
+       .byte   40
+       .byte   32
+       .byte   4
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   -34
+       .byte   20
+       .byte   -85
+       .byte   66
+       .byte   74
+       .byte   2
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1056
+       .hword  473
+       .byte   2
+       .byte   6
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -83
+       .byte   58
+       .byte   20
+       .byte   -85
+       .byte   66
+       .byte   74
+       .byte   2
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2092
+       .hword  473
+       .byte   2
+       .byte   5
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -119
+       .byte   100
+       .byte   68
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -119
+       .byte   -120
+       .byte   36
+       .byte   75
+       .byte   -87
+       .byte   -124
+       .byte   7
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  479
+       .byte   3
+       .byte   17
+       .byte   40
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -119
+       .byte   -120
+       .byte   36
+       .byte   75
+       .byte   -87
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -119
+       .byte   104
+       .byte   36
+       .byte   74
+       .byte   -87
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   8
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -119
+       .byte   104
+       .byte   4
+       .byte   74
+       .byte   -87
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   8
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -119
+       .byte   -41
+       .byte   -108
+       .byte   62
+       .byte   -124
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   8
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -119
+       .byte   104
+       .byte   4
+       .byte   70
+       .byte   -87
+       .byte   0
+       .byte   7
+       .byte   1
+       .byte   8
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  279
+       .byte   1
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   -41
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   87
+       .byte   1
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   1
+       .hword  1060
+       .hword  1473
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   -34
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   87
+       .byte   1
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   1
+       .hword  2092
+       .hword  1473
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   58
+       .byte   -123
+       .byte   -109
+       .byte   118
+       .byte   87
+       .byte   1
+       .byte   2
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   1
+       .hword  2092
+       .hword  1505
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   -43
+       .byte   -124
+       .byte   50
+       .byte   114
+       .byte   86
+       .byte   1
+       .byte   1
+       .byte   16
+       .hword  128
+       .byte   2
+       .byte   1
+       .hword  2056
+       .hword  1473
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   -41
+       .byte   -108
+       .byte   50
+       .byte   118
+       .byte   86
+       .byte   1
+       .byte   1
+       .byte   16
+       .hword  128
+       .byte   2
+       .byte   2
+       .hword  2058
+       .hword  1489
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   -34
+       .byte   -108
+       .byte   -126
+       .byte   118
+       .byte   86
+       .byte   1
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2062
+       .hword  1489
+       .byte   1
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   80
+       .byte   1
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1066
+       .hword  1497
+       .byte   2
+       .byte   34
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   58
+       .byte   -107
+       .byte   -109
+       .byte   122
+       .byte   80
+       .byte   1
+       .byte   2
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1066
+       .hword  1497
+       .byte   2
+       .byte   34
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   -41
+       .byte   -108
+       .byte   50
+       .byte   118
+       .byte   85
+       .byte   1
+       .byte   1
+       .byte   16
+       .hword  128
+       .byte   2
+       .byte   2
+       .hword  2050
+       .hword  401
+       .byte   2
+       .byte   0
+       .byte   24
+       .byte   32
+       .byte   1
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   87
+       .byte   1
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1058
+       .hword  1497
+       .byte   2
+       .byte   33
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   -41
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   80
+       .byte   1
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   1
+       .hword  1060
+       .hword  1473
+       .byte   2
+       .byte   34
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   81
+       .byte   1
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1074
+       .hword  1497
+       .byte   2
+       .byte   35
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   4
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   58
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   81
+       .byte   1
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2106
+       .hword  1497
+       .byte   2
+       .byte   35
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   4
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -104
+       .byte   -41
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   81
+       .byte   1
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   1
+       .hword  1056
+       .hword  1497
+       .byte   2
+       .byte   35
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   4
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   87
+       .byte   8
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1058
+       .hword  1497
+       .byte   2
+       .byte   66
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   -41
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   87
+       .byte   8
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   1
+       .hword  1060
+       .hword  1473
+       .byte   2
+       .byte   66
+       .byte   40
+       .byte   32
+       .byte   2
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -92
+       .byte   -126
+       .byte   118
+       .byte   86
+       .byte   8
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2082
+       .hword  473
+       .byte   1
+       .byte   65
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   80
+       .byte   8
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1066
+       .hword  1497
+       .byte   2
+       .byte   67
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   -41
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   80
+       .byte   8
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   1
+       .hword  1060
+       .hword  1473
+       .byte   2
+       .byte   67
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -92
+       .byte   -126
+       .byte   118
+       .byte   -41
+       .byte   8
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2090
+       .hword  1241
+       .byte   1
+       .byte   66
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -124
+       .byte   -109
+       .byte   114
+       .byte   87
+       .byte   8
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   1
+       .hword  2092
+       .hword  1473
+       .byte   2
+       .byte   66
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   58
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   81
+       .byte   8
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2106
+       .hword  1497
+       .byte   2
+       .byte   68
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   4
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   81
+       .byte   8
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1074
+       .hword  1497
+       .byte   2
+       .byte   68
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   4
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   58
+       .byte   -92
+       .byte   -109
+       .byte   122
+       .byte   80
+       .byte   8
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2138
+       .hword  1497
+       .byte   2
+       .byte   0
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -108
+       .byte   -126
+       .byte   118
+       .byte   86
+       .byte   8
+       .byte   1
+       .byte   16
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  2062
+       .hword  473
+       .byte   1
+       .byte   0
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   69
+       .byte   -34
+       .byte   -108
+       .byte   -109
+       .byte   118
+       .byte   -41
+       .byte   8
+       .byte   1
+       .byte   32
+       .hword  256
+       .byte   2
+       .byte   2
+       .hword  1058
+       .hword  1497
+       .byte   2
+       .byte   66
+       .byte   40
+       .byte   32
+       .byte   3
+       .byte   1
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -20
+       .byte   -41
+       .byte   -108
+       .byte   126
+       .byte   100
+       .byte   68
+       .byte   0
+       .byte   1
+       .byte   16
+       .hword  128
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  473
+       .byte   2
+       .byte   49
+       .byte   60
+       .byte   36
+       .byte   3
+       .byte   0
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -20
+       .byte   -34
+       .byte   -43
+       .byte   126
+       .byte   104
+       .byte   68
+       .byte   0
+       .byte   2
+       .byte   16
+       .hword  128
+       .byte   2
+       .byte   2
+       .hword  2048
+       .hword  505
+       .byte   2
+       .byte   49
+       .byte   60
+       .byte   36
+       .byte   3
+       .byte   0
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -20
+       .byte   -41
+       .byte   -108
+       .byte   122
+       .byte   84
+       .byte   67
+       .byte   0
+       .byte   1
+       .byte   16
+       .hword  128
+       .byte   2
+       .byte   2
+       .hword  2076
+       .hword  409
+       .byte   2
+       .byte   0
+       .byte   40
+       .byte   36
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -20
+       .byte   -34
+       .byte   -43
+       .byte   122
+       .byte   88
+       .byte   67
+       .byte   0
+       .byte   2
+       .byte   16
+       .hword  128
+       .byte   2
+       .byte   2
+       .hword  2076
+       .hword  441
+       .byte   2
+       .byte   0
+       .byte   40
+       .byte   36
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -20
+       .byte   -43
+       .byte   -108
+       .byte   118
+       .byte   84
+       .byte   67
+       .byte   0
+       .byte   1
+       .byte   16
+       .hword  128
+       .byte   2
+       .byte   2
+       .hword  1038
+       .hword  281
+       .byte   2
+       .byte   0
+       .byte   24
+       .byte   36
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .byte   6
+       .byte   -20
+       .byte   -41
+       .byte   20
+       .byte   118
+       .byte   84
+       .byte   -62
+       .byte   0
+       .byte   1
+       .byte   16
+       .hword  128
+       .byte   2
+       .byte   2
+       .hword  2076
+       .hword  1169
+       .byte   2
+       .byte   0
+       .byte   24
+       .byte   40
+       .byte   3
+       .byte   1
+       .byte   3
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .type   NandOptPara, %object
+       .size   NandOptPara, 128
+NandOptPara:
+       .byte   1
+       .byte   0
+       .byte   49
+       .byte   63
+       .byte   0
+       .byte   49
+       .byte   -128
+       .byte   21
+       .byte   0
+       .byte   50
+       .byte   17
+       .byte   -128
+       .byte   112
+       .byte   120
+       .byte   120
+       .byte   3
+       .byte   1
+       .byte   0
+       .zero   14
+       .byte   2
+       .byte   0
+       .byte   49
+       .byte   63
+       .byte   0
+       .byte   49
+       .byte   -128
+       .byte   21
+       .byte   0
+       .byte   0
+       .byte   17
+       .byte   -127
+       .byte   112
+       .byte   -15
+       .byte   -14
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   14
+       .byte   3
+       .byte   0
+       .byte   49
+       .byte   63
+       .byte   0
+       .byte   49
+       .byte   -128
+       .byte   21
+       .byte   96
+       .byte   96
+       .byte   17
+       .byte   -127
+       .byte   112
+       .byte   -15
+       .byte   -14
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   14
+       .byte   4
+       .byte   0
+       .byte   49
+       .byte   63
+       .byte   0
+       .byte   49
+       .byte   -128
+       .byte   21
+       .byte   96
+       .byte   96
+       .byte   17
+       .byte   -127
+       .byte   112
+       .byte   112
+       .byte   112
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   14
+       .type   gSlcNandParaInfo, %object
+       .size   gSlcNandParaInfo, 32
+gSlcNandParaInfo:
+       .byte   2
+       .byte   -104
+       .byte   -15
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   0
+       .byte   1
+       .byte   1
+       .byte   4
+       .hword  64
+       .byte   1
+       .byte   1
+       .hword  1024
+       .hword  256
+       .byte   0
+       .byte   0
+       .byte   16
+       .byte   40
+       .byte   1
+       .byte   0
+       .byte   1
+       .byte   0
+       .byte   0
+       .byte   0
+       .zero   4
+       .type   micron_flash_randomizer_flag, %object
+       .size   micron_flash_randomizer_flag, 4
+micron_flash_randomizer_flag:
+       .word   1
+       .type   ftl_gc_temp_block_bops_scan_page_addr, %object
+       .size   ftl_gc_temp_block_bops_scan_page_addr, 2
+ftl_gc_temp_block_bops_scan_page_addr:
+       .hword  -1
+       .zero   2
+       .type   power_up_flag, %object
+       .size   power_up_flag, 4
+power_up_flag:
+       .word   1
+       .zero   4
+       .type   gTable_Crc32, %object
+       .size   gTable_Crc32, 1024
+gTable_Crc32:
+       .word   0
+       .word   79760823
+       .word   159521646
+       .word   222500569
+       .word   319043292
+       .word   398801771
+       .word   445001138
+       .word   507977733
+       .word   638086584
+       .word   583622671
+       .word   797603542
+       .word   726367073
+       .word   890002276
+       .word   835540691
+       .word   1015955466
+       .word   944721341
+       .word   1276173168
+       .word   1221711559
+       .word   1167245342
+       .word   1096011177
+       .word   1595207084
+       .word   1540743195
+       .word   1452734146
+       .word   1381497717
+       .word   1780004552
+       .word   1859763071
+       .word   1671081382
+       .word   1734058001
+       .word   2031910932
+       .word   2111671715
+       .word   1889442682
+       .word   1952421581
+       .word   -1742620960
+       .word   -1662993577
+       .word   -1851544178
+       .word   -1788698567
+       .word   -1960476612
+       .word   -1880846965
+       .word   -2102944942
+       .word   -2040097051
+       .word   -1104553128
+       .word   -1159145745
+       .word   -1213480906
+       .word   -1284846207
+       .word   -1389499004
+       .word   -1444093901
+       .word   -1531971862
+       .word   -1603339427
+       .word   -734958192
+       .word   -789553113
+       .word   -575441154
+       .word   -646808759
+       .word   -952804532
+       .word   -1007397125
+       .word   -826851294
+       .word   -898216555
+       .word   -231145432
+       .word   -151515745
+       .word   -71623866
+       .word   -8775951
+       .word   -516081932
+       .word   -436454589
+       .word   -390124134
+       .word   -327278547
+       .word   880959607
+       .word   809725376
+       .word   1023441689
+       .word   968980142
+       .word   663115435
+       .word   591878940
+       .word   772033989
+       .word   717570162
+       .word   311037391
+       .word   374014072
+       .word   453514913
+       .word   533273366
+       .word   26098451
+       .word   89077412
+       .word   135012477
+       .word   214773194
+       .word   2022882055
+       .word   2085861040
+       .word   1896915049
+       .word   1976675806
+       .word   1805028827
+       .word   1868005484
+       .word   1645516469
+       .word   1725274882
+       .word   1587205823
+       .word   1515969288
+       .word   1461243345
+       .word   1406779494
+       .word   1302257763
+       .word   1231023572
+       .word   1142749965
+       .word   1088288442
+       .word   -1398548841
+       .word   -1469916384
+       .word   -1524511239
+       .word   -1579106226
+       .word   -1079517109
+       .word   -1150882308
+       .word   -1239024859
+       .word   -1293617518
+       .word   -1968456913
+       .word   -1905609064
+       .word   -2094423999
+       .word   -2014794250
+       .word   -1716548109
+       .word   -1653702588
+       .word   -1876060515
+       .word   -1796433110
+       .word   -525136409
+       .word   -462290864
+       .word   -382658935
+       .word   -303031490
+       .word   -206095557
+       .word   -143247732
+       .word   -97181611
+       .word   -17551902
+       .word   -960798625
+       .word   -1032163864
+       .word   -818316495
+       .word   -872909178
+       .word   -708880765
+       .word   -780248268
+       .word   -599962131
+       .word   -654557094
+       .word   1761919214
+       .word   1841679705
+       .word   1619450752
+       .word   1682429495
+       .word   2046883378
+       .word   2126642053
+       .word   1937960284
+       .word   2000937195
+       .word   1326230870
+       .word   1271767265
+       .word   1183757880
+       .word   1112521615
+       .word   1544067978
+       .word   1489606205
+       .word   1435140324
+       .word   1363905875
+       .word   622074782
+       .word   567612969
+       .word   748028144
+       .word   676793671
+       .word   907029826
+       .word   852566261
+       .word   1066546732
+       .word   995310491
+       .word   52196902
+       .word   131955601
+       .word   178154824
+       .word   241131775
+       .word   270024954
+       .word   349785421
+       .word   429546388
+       .word   492525091
+       .word   -249203186
+       .word   -169575495
+       .word   -123245216
+       .word   -60399401
+       .word   -501137198
+       .word   -421507739
+       .word   -341615684
+       .word   -278768117
+       .word   -684909642
+       .word   -739502591
+       .word   -558956328
+       .word   -630321809
+       .word   -1003934358
+       .word   -1058529059
+       .word   -844417532
+       .word   -915784781
+       .word   -1120555650
+       .word   -1175150391
+       .word   -1263028720
+       .word   -1334395993
+       .word   -1372480606
+       .word   -1427073515
+       .word   -1481408308
+       .word   -1552773765
+       .word   -1690451770
+       .word   -1610822287
+       .word   -1832920152
+       .word   -1770072545
+       .word   -2009467366
+       .word   -1929839699
+       .word   -2118390412
+       .word   -2055544637
+       .word   1569104025
+       .word   1497869614
+       .word   1409596407
+       .word   1355134528
+       .word   1317180997
+       .word   1245944818
+       .word   1191218475
+       .word   1136754844
+       .word   2072956193
+       .word   2135933078
+       .word   1913443919
+       .word   1993202680
+       .word   1753938941
+       .word   1816917578
+       .word   1627971731
+       .word   1707732260
+       .word   295074793
+       .word   358053470
+       .word   403988615
+       .word   483749168
+       .word   43142453
+       .word   106119298
+       .word   185620059
+       .word   265378796
+       .word   933107281
+       .word   861871078
+       .word   1042025791
+       .word   987562120
+       .word   614080653
+       .word   542846266
+       .word   756562915
+       .word   702101076
+       .word   -978905479
+       .word   -1050272818
+       .word   -869987049
+       .word   -924581728
+       .word   -693952347
+       .word   -765317870
+       .word   -551470133
+       .word   -606062980
+       .word   -475038783
+       .word   -412191114
+       .word   -366124881
+       .word   -286495464
+       .word   -257209059
+       .word   -194363222
+       .word   -114731405
+       .word   -35103804
+       .word   -1984443127
+       .word   -1921597250
+       .word   -2143955353
+       .word   -2064327728
+       .word   -1699480619
+       .word   -1636632990
+       .word   -1825447749
+       .word   -1745818356
+       .word   -1346395983
+       .word   -1417761530
+       .word   -1505903649
+       .word   -1560496536
+       .word   -1128556947
+       .word   -1199924262
+       .word   -1254519549
+       .word   -1309114188
+       .type   rknand_sys_storage_dev, %object
+       .size   rknand_sys_storage_dev, 80
+rknand_sys_storage_dev:
+       .word   255
+       .zero   4
+       .xword  .LC160
+       .xword  rknand_sys_storage_fops
+       .zero   56
+       .type   rknand_sys_storage_fops, %object
+       .size   rknand_sys_storage_fops, 216
+rknand_sys_storage_fops:
+       .zero   64
+       .xword  rknand_sys_storage_ioctl
+       .xword  rknand_sys_storage_ioctl
+       .zero   8
+       .xword  rknand_sys_storage_open
+       .zero   8
+       .xword  rknand_sys_storage_release
+       .zero   104
        .bss
        .align  3
 .LANCHOR0 = . + 0
+.LANCHOR2 = . + 4352
+.LANCHOR4 = . + 8704
+       .type   p_blk_mode_table, %object
+       .size   p_blk_mode_table, 8
+p_blk_mode_table:
+       .zero   8
+       .type   g_slc2KBNand, %object
+       .size   g_slc2KBNand, 1
+g_slc2KBNand:
+       .zero   1
+       .type   gNandIDBResBlkNum, %object
+       .size   gNandIDBResBlkNum, 1
+gNandIDBResBlkNum:
+       .zero   1
+       .zero   2
+       .type   gBlockPageAlignSize, %object
+       .size   gBlockPageAlignSize, 4
+gBlockPageAlignSize:
+       .zero   4
+       .type   gNandRandomizer, %object
+       .size   gNandRandomizer, 1
+gNandRandomizer:
+       .zero   1
+       .zero   3
+       .type   gNandcVer, %object
+       .size   gNandcVer, 4
+gNandcVer:
+       .zero   4
+       .type   gNandChipMap, %object
+       .size   gNandChipMap, 64
+gNandChipMap:
+       .zero   64
+       .type   gNandOptPara, %object
+       .size   gNandOptPara, 32
+gNandOptPara:
+       .zero   32
+       .type   gFlashSlcMode, %object
+       .size   gFlashSlcMode, 1
+gFlashSlcMode:
+       .zero   1
+       .zero   7
+       .type   gpNandc, %object
+       .size   gpNandc, 8
+gpNandc:
+       .zero   8
        .type   NANDC_FMCTL, %object
        .size   NANDC_FMCTL, 4
 NANDC_FMCTL:
@@ -24141,405 +23919,469 @@ NANDC_RANDMZ_CFG:
        .size   NANDC_FMWAIT_SYN, 4
 NANDC_FMWAIT_SYN:
        .zero   4
-       .type   gc_discard_updated, %object
-       .size   gc_discard_updated, 4
-gc_discard_updated:
-       .zero   4
-       .type   SecureBootUnlockTryCount, %object
-       .size   SecureBootUnlockTryCount, 4
-SecureBootUnlockTryCount:
-       .zero   4
-       .type   SecureBootCheckOK, %object
-       .size   SecureBootCheckOK, 4
-SecureBootCheckOK:
-       .zero   4
-       .type   SecureBootEn, %object
-       .size   SecureBootEn, 4
-SecureBootEn:
-       .zero   4
-       .type   gpVendor1Info, %object
-       .size   gpVendor1Info, 8
-gpVendor1Info:
-       .zero   8
-       .type   gpVendor0Info, %object
-       .size   gpVendor0Info, 8
-gpVendor0Info:
-       .zero   8
-       .type   g_idb_buffer, %object
-       .size   g_idb_buffer, 8
-g_idb_buffer:
-       .zero   8
-       .type   gSnSectorData, %object
-       .size   gSnSectorData, 512
-gSnSectorData:
+       .type   gNandPhyInfo, %object
+       .size   gNandPhyInfo, 28
+gNandPhyInfo:
+       .zero   28
+       .type   slcPageToMlcPageTbl, %object
+       .size   slcPageToMlcPageTbl, 512
+slcPageToMlcPageTbl:
        .zero   512
-       .type   gpDrmKeyInfo, %object
-       .size   gpDrmKeyInfo, 8
-gpDrmKeyInfo:
-       .zero   8
-       .type   gpBootConfig, %object
-       .size   gpBootConfig, 8
-gpBootConfig:
-       .zero   8
-       .type   gLoaderBootInfo, %object
-       .size   gLoaderBootInfo, 8
-gLoaderBootInfo:
-       .zero   8
-       .type   RK29_NANDC1_REG_BASE, %object
-       .size   RK29_NANDC1_REG_BASE, 8
-RK29_NANDC1_REG_BASE:
-       .zero   8
-       .type   RK29_NANDC_REG_BASE, %object
-       .size   RK29_NANDC_REG_BASE, 8
-RK29_NANDC_REG_BASE:
-       .zero   8
-       .type   gc_ink_free_return_value, %object
-       .size   gc_ink_free_return_value, 2
-gc_ink_free_return_value:
-       .zero   2
-       .type   FtlUpdateVaildLpnCount, %object
-       .size   FtlUpdateVaildLpnCount, 2
-FtlUpdateVaildLpnCount:
-       .zero   2
-       .type   g_ect_tbl_power_up_flush, %object
-       .size   g_ect_tbl_power_up_flush, 2
-g_ect_tbl_power_up_flush:
-       .zero   2
-       .zero   2
-       .type   last_cache_match_count, %object
-       .size   last_cache_match_count, 4
-last_cache_match_count:
-       .zero   4
-       .type   g_LowFormat, %object
-       .size   g_LowFormat, 4
-g_LowFormat:
+       .type   DieAddrs, %object
+       .size   DieAddrs, 32
+DieAddrs:
+       .zero   32
+       .type   FlashWaitBusyScheduleEn, %object
+       .size   FlashWaitBusyScheduleEn, 4
+FlashWaitBusyScheduleEn:
        .zero   4
-       .type   DeviceCapacity, %object
-       .size   DeviceCapacity, 4
-DeviceCapacity:
+       .type   gpNandParaInfo, %object
+       .size   gpNandParaInfo, 8
+gpNandParaInfo:
+       .zero   8
+       .type   g_retryMode, %object
+       .size   g_retryMode, 1
+g_retryMode:
+       .zero   1
+       .type   g_maxRegNum, %object
+       .size   g_maxRegNum, 1
+g_maxRegNum:
+       .zero   1
+       .zero   6
+       .type   gReadRetryInfo, %object
+       .size   gReadRetryInfo, 852
+gReadRetryInfo:
+       .zero   852
        .zero   4
+       .type   read_retry_cur_offset, %object
+       .size   read_retry_cur_offset, 4
+read_retry_cur_offset:
        .zero   4
-       .type   FbbtBlk, %object
-       .size   FbbtBlk, 16
-FbbtBlk:
-       .zero   16
-       .type   g_power_lost_recovery_flag, %object
-       .size   g_power_lost_recovery_flag, 2
-g_power_lost_recovery_flag:
-       .zero   2
-       .type   c_mlc_erase_count_value, %object
-       .size   c_mlc_erase_count_value, 2
-c_mlc_erase_count_value:
+       .type   IDByte, %object
+       .size   IDByte, 32
+IDByte:
+       .zero   32
+       .type   gDieOp, %object
+       .size   gDieOp, 192
+gDieOp:
+       .zero   192
+       .type   gFlashInterfaceMode, %object
+       .size   gFlashInterfaceMode, 1
+gFlashInterfaceMode:
+       .zero   1
+       .type   gNandMaxDie, %object
+       .size   gNandMaxDie, 1
+gNandMaxDie:
+       .zero   1
        .zero   2
+       .type   DieCsIndex, %object
+       .size   DieCsIndex, 8
+DieCsIndex:
+       .zero   8
+       .type   gFlashPageBuffer0, %object
+       .size   gFlashPageBuffer0, 8
+gFlashPageBuffer0:
+       .zero   8
+       .type   gFlashToggleModeEn, %object
+       .size   gFlashToggleModeEn, 1
+gFlashToggleModeEn:
+       .zero   1
+       .zero   3
+       .type   gBootDdrMode, %object
+       .size   gBootDdrMode, 4
+gBootDdrMode:
        .zero   4
-       .type   g_recovery_ppa_tbl, %object
-       .size   g_recovery_ppa_tbl, 128
-g_recovery_ppa_tbl:
-       .zero   128
-       .type   g_recovery_page_min_ver, %object
-       .size   g_recovery_page_min_ver, 4
-g_recovery_page_min_ver:
-       .zero   4
-       .type   g_recovery_page_num, %object
-       .size   g_recovery_page_num, 4
-g_recovery_page_num:
-       .zero   4
-       .type   g_cur_erase_blk, %object
-       .size   g_cur_erase_blk, 4
-g_cur_erase_blk:
-       .zero   4
-       .type   g_gc_skip_write_count, %object
-       .size   g_gc_skip_write_count, 4
-g_gc_skip_write_count:
-       .zero   4
-       .type   g_gc_head_data_block_count, %object
-       .size   g_gc_head_data_block_count, 4
-g_gc_head_data_block_count:
-       .zero   4
-       .type   g_gc_head_data_block, %object
-       .size   g_gc_head_data_block, 4
-g_gc_head_data_block:
-       .zero   4
-       .type   g_ftl_nand_free_count, %object
-       .size   g_ftl_nand_free_count, 4
-g_ftl_nand_free_count:
-       .zero   4
-       .type   g_in_swl_replace, %object
-       .size   g_in_swl_replace, 4
-g_in_swl_replace:
-       .zero   4
-       .type   g_in_gc_progress, %object
-       .size   g_in_gc_progress, 4
-g_in_gc_progress:
-       .zero   4
-       .type   g_all_blk_used_slc_mode, %object
-       .size   g_all_blk_used_slc_mode, 4
-g_all_blk_used_slc_mode:
-       .zero   4
-       .type   g_max_erase_count, %object
-       .size   g_max_erase_count, 4
-g_max_erase_count:
-       .zero   4
-       .type   g_totle_sys_slc_erase_count, %object
-       .size   g_totle_sys_slc_erase_count, 4
-g_totle_sys_slc_erase_count:
-       .zero   4
-       .type   g_totle_slc_erase_count, %object
-       .size   g_totle_slc_erase_count, 4
-g_totle_slc_erase_count:
-       .zero   4
-       .type   g_min_erase_count, %object
-       .size   g_min_erase_count, 4
-g_min_erase_count:
-       .zero   4
-       .type   g_totle_avg_erase_count, %object
-       .size   g_totle_avg_erase_count, 4
-g_totle_avg_erase_count:
-       .zero   4
-       .type   g_totle_mlc_erase_count, %object
-       .size   g_totle_mlc_erase_count, 4
-g_totle_mlc_erase_count:
-       .zero   4
-       .type   g_totle_l2p_write_count, %object
-       .size   g_totle_l2p_write_count, 4
-g_totle_l2p_write_count:
+       .type   g_nandc_version_data, %object
+       .size   g_nandc_version_data, 4
+g_nandc_version_data:
        .zero   4
-       .type   g_totle_cache_write_count, %object
-       .size   g_totle_cache_write_count, 4
-g_totle_cache_write_count:
        .zero   4
-       .type   g_tmp_data_superblock_id, %object
-       .size   g_tmp_data_superblock_id, 2
-g_tmp_data_superblock_id:
-       .zero   2
-       .zero   2
-       .type   g_totle_read_page_count, %object
-       .size   g_totle_read_page_count, 4
-g_totle_read_page_count:
+       .type   gMasterTempBuf, %object
+       .size   gMasterTempBuf, 8
+gMasterTempBuf:
+       .zero   8
+       .type   gMasterInfo, %object
+       .size   gMasterInfo, 48
+gMasterInfo:
+       .zero   48
+       .type   gNandcDumpWriteEn, %object
+       .size   gNandcDumpWriteEn, 4
+gNandcDumpWriteEn:
        .zero   4
-       .type   g_totle_discard_page_count, %object
-       .size   g_totle_discard_page_count, 4
-g_totle_discard_page_count:
+       .type   gNandcEccBits, %object
+       .size   gNandcEccBits, 4
+gNandcEccBits:
        .zero   4
-       .type   g_totle_read_sector, %object
-       .size   g_totle_read_sector, 4
-g_totle_read_sector:
+       .type   gNandFlashEccBits, %object
+       .size   gNandFlashEccBits, 1
+gNandFlashEccBits:
+       .zero   1
+       .type   gMultiPageProgEn, %object
+       .size   gMultiPageProgEn, 1
+gMultiPageProgEn:
+       .zero   1
+       .zero   2
+       .type   c_ftl_nand_sys_blks_per_plane, %object
+       .size   c_ftl_nand_sys_blks_per_plane, 4
+c_ftl_nand_sys_blks_per_plane:
        .zero   4
-       .type   g_totle_write_sector, %object
-       .size   g_totle_write_sector, 4
-g_totle_write_sector:
+       .type   c_ftl_nand_planes_num, %object
+       .size   c_ftl_nand_planes_num, 2
+c_ftl_nand_planes_num:
+       .zero   2
+       .zero   2
+       .type   c_ftl_nand_max_sys_blks, %object
+       .size   c_ftl_nand_max_sys_blks, 4
+c_ftl_nand_max_sys_blks:
        .zero   4
-       .type   g_totle_write_page_count, %object
-       .size   g_totle_write_page_count, 4
-g_totle_write_page_count:
+       .type   c_ftl_nand_data_blks_per_plane, %object
+       .size   c_ftl_nand_data_blks_per_plane, 2
+c_ftl_nand_data_blks_per_plane:
+       .zero   2
+       .type   c_ftl_nand_blk_pre_plane, %object
+       .size   c_ftl_nand_blk_pre_plane, 2
+c_ftl_nand_blk_pre_plane:
+       .zero   2
+       .type   c_ftl_nand_max_data_blks, %object
+       .size   c_ftl_nand_max_data_blks, 4
+c_ftl_nand_max_data_blks:
        .zero   4
-       .type   g_totle_gc_page_count, %object
-       .size   g_totle_gc_page_count, 4
-g_totle_gc_page_count:
+       .type   c_ftl_nand_totle_phy_blks, %object
+       .size   c_ftl_nand_totle_phy_blks, 4
+c_ftl_nand_totle_phy_blks:
        .zero   4
-       .type   g_gc_blk_index, %object
-       .size   g_gc_blk_index, 2
-g_gc_blk_index:
+       .type   c_ftl_nand_type, %object
+       .size   c_ftl_nand_type, 2
+c_ftl_nand_type:
        .zero   2
-       .type   g_gc_merge_free_blk_threshold, %object
-       .size   g_gc_merge_free_blk_threshold, 2
-g_gc_merge_free_blk_threshold:
+       .type   c_ftl_nand_die_num, %object
+       .size   c_ftl_nand_die_num, 2
+c_ftl_nand_die_num:
        .zero   2
-       .type   g_gc_free_blk_threshold, %object
-       .size   g_gc_free_blk_threshold, 2
-g_gc_free_blk_threshold:
+       .type   c_ftl_nand_planes_per_die, %object
+       .size   c_ftl_nand_planes_per_die, 2
+c_ftl_nand_planes_per_die:
        .zero   2
        .zero   6
-       .type   g_gc_bad_block_temp_tbl, %object
-       .size   g_gc_bad_block_temp_tbl, 34
-g_gc_bad_block_temp_tbl:
-       .zero   34
-       .type   g_gc_bad_block_gc_index, %object
-       .size   g_gc_bad_block_gc_index, 2
-g_gc_bad_block_gc_index:
+       .type   p_plane_order_table, %object
+       .size   p_plane_order_table, 32
+p_plane_order_table:
+       .zero   32
+       .type   c_mlc_erase_count_value, %object
+       .size   c_mlc_erase_count_value, 2
+c_mlc_erase_count_value:
        .zero   2
-       .type   g_gc_bad_block_temp_num, %object
-       .size   g_gc_bad_block_temp_num, 2
-g_gc_bad_block_temp_num:
+       .type   c_ftl_nand_ext_blk_pre_plane, %object
+       .size   c_ftl_nand_ext_blk_pre_plane, 2
+c_ftl_nand_ext_blk_pre_plane:
        .zero   2
-       .type   g_gc_next_blk_1, %object
-       .size   g_gc_next_blk_1, 2
-g_gc_next_blk_1:
+       .type   c_ftl_vendor_part_size, %object
+       .size   c_ftl_vendor_part_size, 2
+c_ftl_vendor_part_size:
        .zero   2
-       .type   g_gc_next_blk, %object
-       .size   g_gc_next_blk, 2
-g_gc_next_blk:
+       .type   c_ftl_nand_blks_per_die, %object
+       .size   c_ftl_nand_blks_per_die, 2
+c_ftl_nand_blks_per_die:
        .zero   2
-       .type   g_gc_cur_blk_max_valid_pages, %object
-       .size   g_gc_cur_blk_max_valid_pages, 2
-g_gc_cur_blk_max_valid_pages:
+       .type   c_ftl_nand_blks_per_die_shift, %object
+       .size   c_ftl_nand_blks_per_die_shift, 2
+c_ftl_nand_blks_per_die_shift:
        .zero   2
-       .type   g_gc_cur_blk_valid_pages, %object
-       .size   g_gc_cur_blk_valid_pages, 2
-g_gc_cur_blk_valid_pages:
+       .type   c_ftl_nand_page_pre_blk, %object
+       .size   c_ftl_nand_page_pre_blk, 2
+c_ftl_nand_page_pre_blk:
        .zero   2
-       .type   g_gc_page_offset, %object
-       .size   g_gc_page_offset, 2
-g_gc_page_offset:
+       .type   c_ftl_nand_page_pre_slc_blk, %object
+       .size   c_ftl_nand_page_pre_slc_blk, 2
+c_ftl_nand_page_pre_slc_blk:
        .zero   2
-       .type   g_gc_blk_num, %object
-       .size   g_gc_blk_num, 2
-g_gc_blk_num:
+       .type   c_ftl_nand_page_pre_super_blk, %object
+       .size   c_ftl_nand_page_pre_super_blk, 2
+c_ftl_nand_page_pre_super_blk:
+       .zero   2
+       .type   c_ftl_nand_sec_pre_page, %object
+       .size   c_ftl_nand_sec_pre_page, 2
+c_ftl_nand_sec_pre_page:
+       .zero   2
+       .type   c_ftl_nand_sec_pre_page_shift, %object
+       .size   c_ftl_nand_sec_pre_page_shift, 2
+c_ftl_nand_sec_pre_page_shift:
+       .zero   2
+       .type   c_ftl_nand_byte_pre_page, %object
+       .size   c_ftl_nand_byte_pre_page, 2
+c_ftl_nand_byte_pre_page:
+       .zero   2
+       .type   c_ftl_nand_byte_pre_oob, %object
+       .size   c_ftl_nand_byte_pre_oob, 2
+c_ftl_nand_byte_pre_oob:
+       .zero   2
+       .type   c_ftl_nand_reserved_blks, %object
+       .size   c_ftl_nand_reserved_blks, 2
+c_ftl_nand_reserved_blks:
+       .zero   2
+       .zero   2
+       .type   DeviceCapacity, %object
+       .size   DeviceCapacity, 4
+DeviceCapacity:
+       .zero   4
+       .type   c_ftl_nand_max_vendor_blks, %object
+       .size   c_ftl_nand_max_vendor_blks, 2
+c_ftl_nand_max_vendor_blks:
+       .zero   2
+       .type   c_ftl_nand_vendor_region_num, %object
+       .size   c_ftl_nand_vendor_region_num, 2
+c_ftl_nand_vendor_region_num:
+       .zero   2
+       .type   c_ftl_nand_map_blks_per_plane, %object
+       .size   c_ftl_nand_map_blks_per_plane, 2
+c_ftl_nand_map_blks_per_plane:
+       .zero   2
+       .zero   2
+       .type   c_ftl_nand_max_map_blks, %object
+       .size   c_ftl_nand_max_map_blks, 4
+c_ftl_nand_max_map_blks:
+       .zero   4
+       .type   c_ftl_nand_init_sys_blks_per_plane, %object
+       .size   c_ftl_nand_init_sys_blks_per_plane, 4
+c_ftl_nand_init_sys_blks_per_plane:
+       .zero   4
+       .type   c_ftl_nand_map_region_num, %object
+       .size   c_ftl_nand_map_region_num, 2
+c_ftl_nand_map_region_num:
+       .zero   2
+       .type   c_ftl_nand_l2pmap_ram_region_num, %object
+       .size   c_ftl_nand_l2pmap_ram_region_num, 2
+c_ftl_nand_l2pmap_ram_region_num:
+       .zero   2
+       .type   g_MaxLbaSector, %object
+       .size   g_MaxLbaSector, 4
+g_MaxLbaSector:
+       .zero   4
+       .type   g_totle_vendor_block, %object
+       .size   g_totle_vendor_block, 2
+g_totle_vendor_block:
        .zero   2
        .zero   6
-       .type   p_gc_blk_tbl, %object
-       .size   p_gc_blk_tbl, 8
-p_gc_blk_tbl:
+       .type   p_vendor_block_table, %object
+       .size   p_vendor_block_table, 8
+p_vendor_block_table:
        .zero   8
-       .type   p_gc_page_info, %object
-       .size   p_gc_page_info, 8
-p_gc_page_info:
+       .type   g_wr_page_num, %object
+       .size   g_wr_page_num, 4
+g_wr_page_num:
+       .zero   4
+       .zero   4
+       .type   req_wr_io, %object
+       .size   req_wr_io, 8
+req_wr_io:
        .zero   8
-       .type   g_sys_ext_data, %object
-       .size   g_sys_ext_data, 512
-g_sys_ext_data:
-       .zero   512
-       .type   g_sys_save_data, %object
-       .size   g_sys_save_data, 48
-g_sys_save_data:
-       .zero   48
-       .type   gp_last_act_superblock, %object
-       .size   gp_last_act_superblock, 8
-gp_last_act_superblock:
+       .type   g_MaxLpn, %object
+       .size   g_MaxLpn, 4
+g_MaxLpn:
+       .zero   4
+       .type   g_cur_erase_blk, %object
+       .size   g_cur_erase_blk, 4
+g_cur_erase_blk:
+       .zero   4
+       .type   gBbtInfo, %object
+       .size   gBbtInfo, 96
+gBbtInfo:
+       .zero   96
+       .type   gSysFreeQueue, %object
+       .size   gSysFreeQueue, 2056
+gSysFreeQueue:
+       .zero   2056
+       .type   req_erase, %object
+       .size   req_erase, 8
+req_erase:
        .zero   8
-       .type   g_gc_superblock, %object
-       .size   g_gc_superblock, 48
-g_gc_superblock:
-       .zero   48
-       .type   g_gc_temp_superblock, %object
-       .size   g_gc_temp_superblock, 48
-g_gc_temp_superblock:
-       .zero   48
-       .type   g_buffer_superblock, %object
-       .size   g_buffer_superblock, 48
-g_buffer_superblock:
-       .zero   48
-       .type   g_active_superblock, %object
-       .size   g_active_superblock, 48
-g_active_superblock:
-       .zero   48
-       .type   g_num_data_superblocks, %object
-       .size   g_num_data_superblocks, 2
-g_num_data_superblocks:
-       .zero   2
-       .type   g_num_free_superblocks, %object
-       .size   g_num_free_superblocks, 2
-g_num_free_superblocks:
-       .zero   2
+       .type   p_erase_count_table, %object
+       .size   p_erase_count_table, 8
+p_erase_count_table:
+       .zero   8
+       .type   g_totle_sys_slc_erase_count, %object
+       .size   g_totle_sys_slc_erase_count, 4
+g_totle_sys_slc_erase_count:
        .zero   4
-       .type   p_data_block_list_tail, %object
-       .size   p_data_block_list_tail, 8
-p_data_block_list_tail:
+       .zero   4
+       .type   p_sys_data_buf, %object
+       .size   p_sys_data_buf, 8
+p_sys_data_buf:
+       .zero   8
+       .type   p_data_block_list_table, %object
+       .size   p_data_block_list_table, 8
+p_data_block_list_table:
        .zero   8
        .type   p_data_block_list_head, %object
        .size   p_data_block_list_head, 8
 p_data_block_list_head:
        .zero   8
+       .type   p_valid_page_count_table, %object
+       .size   p_valid_page_count_table, 8
+p_valid_page_count_table:
+       .zero   8
+       .type   p_data_block_list_tail, %object
+       .size   p_data_block_list_tail, 8
+p_data_block_list_tail:
+       .zero   8
+       .type   g_num_data_superblocks, %object
+       .size   g_num_data_superblocks, 2
+g_num_data_superblocks:
+       .zero   2
+       .zero   6
        .type   p_free_data_block_list_head, %object
        .size   p_free_data_block_list_head, 8
 p_free_data_block_list_head:
        .zero   8
-       .type   p_data_block_list_table, %object
-       .size   p_data_block_list_table, 8
-p_data_block_list_table:
-       .zero   8
-       .type   g_l2p_last_update_region_id, %object
-       .size   g_l2p_last_update_region_id, 2
-g_l2p_last_update_region_id:
+       .type   g_num_free_superblocks, %object
+       .size   g_num_free_superblocks, 2
+g_num_free_superblocks:
        .zero   2
        .zero   6
-       .type   p_l2p_map_buf, %object
-       .size   p_l2p_map_buf, 8
-p_l2p_map_buf:
-       .zero   8
+       .type   g_active_superblock, %object
+       .size   g_active_superblock, 48
+g_active_superblock:
+       .zero   48
+       .type   g_buffer_superblock, %object
+       .size   g_buffer_superblock, 48
+g_buffer_superblock:
+       .zero   48
+       .type   g_gc_temp_superblock, %object
+       .size   g_gc_temp_superblock, 48
+g_gc_temp_superblock:
+       .zero   48
        .type   p_l2p_ram_map, %object
        .size   p_l2p_ram_map, 8
 p_l2p_ram_map:
        .zero   8
-       .type   g_totle_vendor_block, %object
-       .size   g_totle_vendor_block, 2
-g_totle_vendor_block:
+       .type   g_l2p_last_update_region_id, %object
+       .size   g_l2p_last_update_region_id, 2
+g_l2p_last_update_region_id:
        .zero   2
-       .zero   6
-       .type   p_vendor_region_ppn_table, %object
-       .size   p_vendor_region_ppn_table, 8
-p_vendor_region_ppn_table:
-       .zero   8
-       .type   p_vendor_block_ver_table, %object
-       .size   p_vendor_block_ver_table, 8
-p_vendor_block_ver_table:
-       .zero   8
-       .type   p_vendor_block_valid_page_count, %object
-       .size   p_vendor_block_valid_page_count, 8
-p_vendor_block_valid_page_count:
-       .zero   8
-       .type   p_vendor_block_table, %object
-       .size   p_vendor_block_table, 8
-p_vendor_block_table:
-       .zero   8
-       .type   g_totle_map_block, %object
-       .size   g_totle_map_block, 2
-g_totle_map_block:
+       .type   FtlUpdateVaildLpnCount, %object
+       .size   FtlUpdateVaildLpnCount, 2
+FtlUpdateVaildLpnCount:
+       .zero   2
+       .type   g_VaildLpn, %object
+       .size   g_VaildLpn, 4
+g_VaildLpn:
+       .zero   4
+       .type   g_inkDie_check_enable, %object
+       .size   g_inkDie_check_enable, 4
+g_inkDie_check_enable:
+       .zero   4
+       .type   g_totle_read_page_count, %object
+       .size   g_totle_read_page_count, 4
+g_totle_read_page_count:
+       .zero   4
+       .type   g_totle_discard_page_count, %object
+       .size   g_totle_discard_page_count, 4
+g_totle_discard_page_count:
+       .zero   4
+       .type   g_totle_write_page_count, %object
+       .size   g_totle_write_page_count, 4
+g_totle_write_page_count:
+       .zero   4
+       .type   g_totle_cache_write_count, %object
+       .size   g_totle_cache_write_count, 4
+g_totle_cache_write_count:
+       .zero   4
+       .type   g_totle_l2p_write_count, %object
+       .size   g_totle_l2p_write_count, 4
+g_totle_l2p_write_count:
+       .zero   4
+       .type   g_totle_gc_page_count, %object
+       .size   g_totle_gc_page_count, 4
+g_totle_gc_page_count:
+       .zero   4
+       .type   g_totle_write_sector, %object
+       .size   g_totle_write_sector, 4
+g_totle_write_sector:
+       .zero   4
+       .type   g_totle_read_sector, %object
+       .size   g_totle_read_sector, 4
+g_totle_read_sector:
+       .zero   4
+       .type   g_GlobalSysVersion, %object
+       .size   g_GlobalSysVersion, 4
+g_GlobalSysVersion:
+       .zero   4
+       .type   g_GlobalDataVersion, %object
+       .size   g_GlobalDataVersion, 4
+g_GlobalDataVersion:
+       .zero   4
+       .type   g_totle_mlc_erase_count, %object
+       .size   g_totle_mlc_erase_count, 4
+g_totle_mlc_erase_count:
+       .zero   4
+       .type   g_totle_slc_erase_count, %object
+       .size   g_totle_slc_erase_count, 4
+g_totle_slc_erase_count:
+       .zero   4
+       .type   g_totle_avg_erase_count, %object
+       .size   g_totle_avg_erase_count, 4
+g_totle_avg_erase_count:
+       .zero   4
+       .type   g_max_erase_count, %object
+       .size   g_max_erase_count, 4
+g_max_erase_count:
+       .zero   4
+       .type   g_min_erase_count, %object
+       .size   g_min_erase_count, 4
+g_min_erase_count:
+       .zero   4
+       .type   g_sys_save_data, %object
+       .size   g_sys_save_data, 48
+g_sys_save_data:
+       .zero   48
+       .type   c_ftl_nand_data_op_blks_per_plane, %object
+       .size   c_ftl_nand_data_op_blks_per_plane, 2
+c_ftl_nand_data_op_blks_per_plane:
        .zero   2
        .zero   6
-       .type   p_map_region_ppn_table, %object
-       .size   p_map_region_ppn_table, 8
-p_map_region_ppn_table:
-       .zero   8
-       .type   p_map_block_ver_table, %object
-       .size   p_map_block_ver_table, 8
-p_map_block_ver_table:
-       .zero   8
-       .type   p_map_block_valid_page_count, %object
-       .size   p_map_block_valid_page_count, 8
-p_map_block_valid_page_count:
-       .zero   8
-       .type   p_map_block_table, %object
-       .size   p_map_block_table, 8
-p_map_block_table:
-       .zero   8
-       .type   p_valid_page_count_check_table, %object
-       .size   p_valid_page_count_check_table, 8
-p_valid_page_count_check_table:
-       .zero   8
-       .type   p_valid_page_count_table, %object
-       .size   p_valid_page_count_table, 8
-p_valid_page_count_table:
-       .zero   8
-       .type   g_totle_swl_count, %object
-       .size   g_totle_swl_count, 4
-g_totle_swl_count:
+       .type   gSysInfo, %object
+       .size   gSysInfo, 12
+gSysInfo:
+       .zero   12
+       .zero   4
+       .type   g_gc_superblock, %object
+       .size   g_gc_superblock, 48
+g_gc_superblock:
+       .zero   48
+       .type   g_all_blk_used_slc_mode, %object
+       .size   g_all_blk_used_slc_mode, 4
+g_all_blk_used_slc_mode:
        .zero   4
        .zero   4
-       .type   p_swl_mul_table, %object
-       .size   p_swl_mul_table, 8
-p_swl_mul_table:
-       .zero   8
-       .type   p_erase_count_table, %object
-       .size   p_erase_count_table, 8
-p_erase_count_table:
-       .zero   8
-       .type   g_ect_tbl_info_size, %object
-       .size   g_ect_tbl_info_size, 2
-g_ect_tbl_info_size:
+       .type   g_sys_ext_data, %object
+       .size   g_sys_ext_data, 512
+g_sys_ext_data:
+       .zero   512
+       .type   g_gc_free_blk_threshold, %object
+       .size   g_gc_free_blk_threshold, 2
+g_gc_free_blk_threshold:
+       .zero   2
+       .type   g_gc_merge_free_blk_threshold, %object
+       .size   g_gc_merge_free_blk_threshold, 2
+g_gc_merge_free_blk_threshold:
+       .zero   2
+       .type   g_gc_skip_write_count, %object
+       .size   g_gc_skip_write_count, 4
+g_gc_skip_write_count:
+       .zero   4
+       .type   g_gc_blk_index, %object
+       .size   g_gc_blk_index, 2
+g_gc_blk_index:
        .zero   2
-       .zero   6
-       .type   gp_ect_tbl_info, %object
-       .size   gp_ect_tbl_info, 8
-gp_ect_tbl_info:
-       .zero   8
+       .zero   2
+       .type   g_in_swl_replace, %object
+       .size   g_in_swl_replace, 4
+g_in_swl_replace:
+       .zero   4
        .type   g_gc_num_req, %object
        .size   g_gc_num_req, 4
 g_gc_num_req:
        .zero   4
-       .type   c_gc_page_buf_num, %object
-       .size   c_gc_page_buf_num, 4
-c_gc_page_buf_num:
        .zero   4
        .type   gp_gc_page_buf_info, %object
        .size   gp_gc_page_buf_info, 8
@@ -24553,496 +24395,411 @@ p_gc_data_buf:
        .size   p_gc_spare_buf, 8
 p_gc_spare_buf:
        .zero   8
-       .type   p_io_spare_buf, %object
-       .size   p_io_spare_buf, 8
-p_io_spare_buf:
-       .zero   8
-       .type   p_io_data_buf_1, %object
-       .size   p_io_data_buf_1, 8
-p_io_data_buf_1:
-       .zero   8
-       .type   p_io_data_buf_0, %object
-       .size   p_io_data_buf_0, 8
-p_io_data_buf_0:
-       .zero   8
-       .type   p_sys_spare_buf, %object
-       .size   p_sys_spare_buf, 8
-p_sys_spare_buf:
-       .zero   8
-       .type   p_vendor_data_buf, %object
-       .size   p_vendor_data_buf, 8
-p_vendor_data_buf:
+       .type   req_gc, %object
+       .size   req_gc, 8
+req_gc:
        .zero   8
-       .type   p_sys_data_buf_1, %object
-       .size   p_sys_data_buf_1, 8
-p_sys_data_buf_1:
+       .type   c_gc_page_buf_num, %object
+       .size   c_gc_page_buf_num, 4
+c_gc_page_buf_num:
+       .zero   4
+       .type   g_gc_blk_num, %object
+       .size   g_gc_blk_num, 2
+g_gc_blk_num:
+       .zero   2
+       .zero   2
+       .type   p_gc_blk_tbl, %object
+       .size   p_gc_blk_tbl, 8
+p_gc_blk_tbl:
        .zero   8
-       .type   p_sys_data_buf, %object
-       .size   p_sys_data_buf, 8
-p_sys_data_buf:
+       .type   g_gc_page_offset, %object
+       .size   g_gc_page_offset, 2
+g_gc_page_offset:
+       .zero   2
+       .zero   6
+       .type   p_gc_page_info, %object
+       .size   p_gc_page_info, 8
+p_gc_page_info:
        .zero   8
-       .type   g_wr_page_num, %object
-       .size   g_wr_page_num, 4
-g_wr_page_num:
+       .type   g_gc_next_blk, %object
+       .size   g_gc_next_blk, 2
+g_gc_next_blk:
+       .zero   2
+       .type   g_gc_next_blk_1, %object
+       .size   g_gc_next_blk_1, 2
+g_gc_next_blk_1:
+       .zero   2
+       .type   g_gc_bad_block_temp_num, %object
+       .size   g_gc_bad_block_temp_num, 2
+g_gc_bad_block_temp_num:
+       .zero   2
+       .zero   2
+       .type   g_gc_bad_block_temp_tbl, %object
+       .size   g_gc_bad_block_temp_tbl, 34
+g_gc_bad_block_temp_tbl:
+       .zero   34
+       .type   g_gc_bad_block_gc_index, %object
+       .size   g_gc_bad_block_gc_index, 2
+g_gc_bad_block_gc_index:
+       .zero   2
+       .type   mlcPageToSlcPageTbl, %object
+       .size   mlcPageToSlcPageTbl, 1024
+mlcPageToSlcPageTbl:
+       .zero   1024
+       .type   gNandMaxChip, %object
+       .size   gNandMaxChip, 1
+gNandMaxChip:
+       .zero   1
+       .zero   1
+       .type   gTotleBlock, %object
+       .size   gTotleBlock, 2
+gTotleBlock:
+       .zero   2
+       .type   g_SlcPartLbaEndSector, %object
+       .size   g_SlcPartLbaEndSector, 4
+g_SlcPartLbaEndSector:
        .zero   4
+       .type   g_in_gc_progress, %object
+       .size   g_in_gc_progress, 4
+g_in_gc_progress:
+       .zero   4
+       .type   g_gc_head_data_block, %object
+       .size   g_gc_head_data_block, 4
+g_gc_head_data_block:
+       .zero   4
+       .type   g_gc_head_data_block_count, %object
+       .size   g_gc_head_data_block_count, 4
+g_gc_head_data_block_count:
        .zero   4
-       .type   req_wr_io, %object
-       .size   req_wr_io, 8
-req_wr_io:
-       .zero   8
        .type   c_wr_page_buf_num, %object
        .size   c_wr_page_buf_num, 4
 c_wr_page_buf_num:
        .zero   4
        .zero   4
+       .type   req_read, %object
+       .size   req_read, 8
+req_read:
+       .zero   8
+       .type   req_gc_dst, %object
+       .size   req_gc_dst, 8
+req_gc_dst:
+       .zero   8
+       .type   req_prgm, %object
+       .size   req_prgm, 8
+req_prgm:
+       .zero   8
+       .type   p_sys_data_buf_1, %object
+       .size   p_sys_data_buf_1, 8
+p_sys_data_buf_1:
+       .zero   8
+       .type   p_vendor_data_buf, %object
+       .size   p_vendor_data_buf, 8
+p_vendor_data_buf:
+       .zero   8
        .type   p_wr_io_data_buf, %object
        .size   p_wr_io_data_buf, 8
 p_wr_io_data_buf:
+       .zero   8
+       .type   p_io_data_buf_0, %object
+       .size   p_io_data_buf_0, 8
+p_io_data_buf_0:
+       .zero   8
+       .type   p_io_data_buf_1, %object
+       .size   p_io_data_buf_1, 8
+p_io_data_buf_1:
+       .zero   8
+       .type   p_sys_spare_buf, %object
+       .size   p_sys_spare_buf, 8
+p_sys_spare_buf:
+       .zero   8
+       .type   p_io_spare_buf, %object
+       .size   p_io_spare_buf, 8
+p_io_spare_buf:
        .zero   8
        .type   p_wr_io_spare_buf, %object
        .size   p_wr_io_spare_buf, 8
 p_wr_io_spare_buf:
        .zero   8
-       .type   p_plane_order_table, %object
-       .size   p_plane_order_table, 32
-p_plane_order_table:
-       .zero   32
+       .type   g_ect_tbl_info_size, %object
+       .size   g_ect_tbl_info_size, 2
+g_ect_tbl_info_size:
+       .zero   2
+       .zero   6
+       .type   p_swl_mul_table, %object
+       .size   p_swl_mul_table, 8
+p_swl_mul_table:
+       .zero   8
+       .type   gp_ect_tbl_info, %object
+       .size   gp_ect_tbl_info, 8
+gp_ect_tbl_info:
+       .zero   8
+       .type   p_valid_page_count_check_table, %object
+       .size   p_valid_page_count_check_table, 8
+p_valid_page_count_check_table:
+       .zero   8
+       .type   p_map_block_table, %object
+       .size   p_map_block_table, 8
+p_map_block_table:
+       .zero   8
+       .type   p_map_block_valid_page_count, %object
+       .size   p_map_block_valid_page_count, 8
+p_map_block_valid_page_count:
+       .zero   8
+       .type   p_vendor_block_valid_page_count, %object
+       .size   p_vendor_block_valid_page_count, 8
+p_vendor_block_valid_page_count:
+       .zero   8
+       .type   p_vendor_block_ver_table, %object
+       .size   p_vendor_block_ver_table, 8
+p_vendor_block_ver_table:
+       .zero   8
+       .type   p_vendor_region_ppn_table, %object
+       .size   p_vendor_region_ppn_table, 8
+p_vendor_region_ppn_table:
+       .zero   8
+       .type   p_map_region_ppn_table, %object
+       .size   p_map_region_ppn_table, 8
+p_map_region_ppn_table:
+       .zero   8
+       .type   p_map_block_ver_table, %object
+       .size   p_map_block_ver_table, 8
+p_map_block_ver_table:
+       .zero   8
+       .type   p_l2p_map_buf, %object
+       .size   p_l2p_map_buf, 8
+p_l2p_map_buf:
+       .zero   8
+       .type   c_ftl_nand_bbm_buf_size, %object
+       .size   c_ftl_nand_bbm_buf_size, 2
+c_ftl_nand_bbm_buf_size:
+       .zero   2
+       .zero   6
+       .type   gL2pMapInfo, %object
+       .size   gL2pMapInfo, 64
+gL2pMapInfo:
+       .zero   64
+       .type   g_totle_map_block, %object
+       .size   g_totle_map_block, 2
+g_totle_map_block:
+       .zero   2
+       .zero   6
        .type   g_req_cache, %object
        .size   g_req_cache, 8
 g_req_cache:
        .zero   8
-       .type   req_gc_dst, %object
-       .size   req_gc_dst, 8
-req_gc_dst:
+       .type   g_tmp_data_superblock_id, %object
+       .size   g_tmp_data_superblock_id, 2
+g_tmp_data_superblock_id:
+       .zero   2
+       .zero   2
+       .type   g_totle_swl_count, %object
+       .size   g_totle_swl_count, 4
+g_totle_swl_count:
+       .zero   4
+       .type   ftl_gc_temp_power_lost_recovery_flag, %object
+       .size   ftl_gc_temp_power_lost_recovery_flag, 4
+ftl_gc_temp_power_lost_recovery_flag:
+       .zero   4
+       .type   g_recovery_page_min_ver, %object
+       .size   g_recovery_page_min_ver, 4
+g_recovery_page_min_ver:
+       .zero   4
+       .type   gNandIDataBuf, %object
+       .size   gNandIDataBuf, 2048
+gNandIDataBuf:
+       .zero   2048
+       .type   RK29_NANDC_REG_BASE, %object
+       .size   RK29_NANDC_REG_BASE, 8
+RK29_NANDC_REG_BASE:
+       .zero   8
+       .type   FlashDdrTunningReadCount, %object
+       .size   FlashDdrTunningReadCount, 4
+FlashDdrTunningReadCount:
+       .zero   4
+       .zero   4
+       .type   gpReadRetrial, %object
+       .size   gpReadRetrial, 8
+gpReadRetrial:
+       .zero   8
+       .type   gpFlashSaveInfo, %object
+       .size   gpFlashSaveInfo, 8
+gpFlashSaveInfo:
        .zero   8
-       .type   req_gc, %object
-       .size   req_gc, 8
-req_gc:
+       .type   gNandFlashInfoBlockAddr, %object
+       .size   gNandFlashInfoBlockAddr, 4
+gNandFlashInfoBlockAddr:
+       .zero   4
+       .type   gNandFlashIdbBlockAddr, %object
+       .size   gNandFlashIdbBlockAddr, 4
+gNandFlashIdbBlockAddr:
+       .zero   4
+       .type   gNandIDBResBlkNumSaveInFlash, %object
+       .size   gNandIDBResBlkNumSaveInFlash, 1
+gNandIDBResBlkNumSaveInFlash:
+       .zero   1
+       .type   g_maxRetryCount, %object
+       .size   g_maxRetryCount, 1
+g_maxRetryCount:
+       .zero   1
+       .type   gNandFlashIDBEccBits, %object
+       .size   gNandFlashIDBEccBits, 1
+gNandFlashIDBEccBits:
+       .zero   1
+       .zero   5
+       .type   gFlashPageBuffer1, %object
+       .size   gFlashPageBuffer1, 8
+gFlashPageBuffer1:
        .zero   8
-       .type   req_erase, %object
-       .size   req_erase, 8
-req_erase:
+       .type   gFlashSpareBuffer, %object
+       .size   gFlashSpareBuffer, 8
+gFlashSpareBuffer:
        .zero   8
-       .type   req_prgm, %object
-       .size   req_prgm, 8
-req_prgm:
+       .type   gFlashProgCheckBuffer, %object
+       .size   gFlashProgCheckBuffer, 8
+gFlashProgCheckBuffer:
        .zero   8
-       .type   req_read, %object
-       .size   req_read, 8
-req_read:
+       .type   gFlashProgCheckSpareBuffer, %object
+       .size   gFlashProgCheckSpareBuffer, 8
+gFlashProgCheckSpareBuffer:
        .zero   8
+       .type   gMultiPageReadEn, %object
+       .size   gMultiPageReadEn, 1
+gMultiPageReadEn:
+       .zero   1
+       .zero   7
+       .type   FbbtBlk, %object
+       .size   FbbtBlk, 16
+FbbtBlk:
+       .zero   16
        .type   req_sys, %object
        .size   req_sys, 56
 req_sys:
        .zero   56
-       .type   gVendorBlkInfo, %object
-       .size   gVendorBlkInfo, 64
-gVendorBlkInfo:
-       .zero   64
-       .type   gL2pMapInfo, %object
-       .size   gL2pMapInfo, 64
-gL2pMapInfo:
-       .zero   64
-       .type   gSysFreeQueue, %object
-       .size   gSysFreeQueue, 2056
-gSysFreeQueue:
-       .zero   2056
-       .type   gSysInfo, %object
-       .size   gSysInfo, 12
-gSysInfo:
-       .zero   12
-       .zero   4
-       .type   gBbtInfo, %object
-       .size   gBbtInfo, 96
-gBbtInfo:
-       .zero   96
-       .type   g_inkDie_check_enable, %object
-       .size   g_inkDie_check_enable, 4
-g_inkDie_check_enable:
-       .zero   4
-       .type   g_SlcPartLbaEndSector, %object
-       .size   g_SlcPartLbaEndSector, 4
-g_SlcPartLbaEndSector:
-       .zero   4
        .type   g_MaxLbn, %object
        .size   g_MaxLbn, 4
 g_MaxLbn:
        .zero   4
-       .type   g_VaildLpn, %object
-       .size   g_VaildLpn, 4
-g_VaildLpn:
-       .zero   4
-       .type   g_MaxLpn, %object
-       .size   g_MaxLpn, 4
-g_MaxLpn:
-       .zero   4
-       .type   g_MaxLbaSector, %object
-       .size   g_MaxLbaSector, 4
-g_MaxLbaSector:
-       .zero   4
-       .type   g_GlobalDataVersion, %object
-       .size   g_GlobalDataVersion, 4
-g_GlobalDataVersion:
-       .zero   4
-       .type   g_GlobalSysVersion, %object
-       .size   g_GlobalSysVersion, 4
-g_GlobalSysVersion:
-       .zero   4
-       .type   ftl_gc_temp_power_lost_recovery_flag, %object
-       .size   ftl_gc_temp_power_lost_recovery_flag, 4
-ftl_gc_temp_power_lost_recovery_flag:
-       .zero   4
-       .type   c_ftl_nand_max_data_blks, %object
-       .size   c_ftl_nand_max_data_blks, 4
-c_ftl_nand_max_data_blks:
-       .zero   4
-       .type   c_ftl_nand_data_op_blks_per_plane, %object
-       .size   c_ftl_nand_data_op_blks_per_plane, 2
-c_ftl_nand_data_op_blks_per_plane:
-       .zero   2
-       .type   c_ftl_nand_data_blks_per_plane, %object
-       .size   c_ftl_nand_data_blks_per_plane, 2
-c_ftl_nand_data_blks_per_plane:
-       .zero   2
-       .type   c_ftl_nand_max_sys_blks, %object
-       .size   c_ftl_nand_max_sys_blks, 4
-c_ftl_nand_max_sys_blks:
-       .zero   4
-       .type   c_ftl_nand_init_sys_blks_per_plane, %object
-       .size   c_ftl_nand_init_sys_blks_per_plane, 4
-c_ftl_nand_init_sys_blks_per_plane:
-       .zero   4
-       .type   c_ftl_nand_sys_blks_per_plane, %object
-       .size   c_ftl_nand_sys_blks_per_plane, 4
-c_ftl_nand_sys_blks_per_plane:
-       .zero   4
-       .type   c_ftl_vendor_part_size, %object
-       .size   c_ftl_vendor_part_size, 2
-c_ftl_vendor_part_size:
-       .zero   2
-       .type   c_ftl_nand_max_vendor_blks, %object
-       .size   c_ftl_nand_max_vendor_blks, 2
-c_ftl_nand_max_vendor_blks:
-       .zero   2
-       .type   c_ftl_nand_max_map_blks, %object
-       .size   c_ftl_nand_max_map_blks, 4
-c_ftl_nand_max_map_blks:
        .zero   4
-       .type   c_ftl_nand_map_blks_per_plane, %object
-       .size   c_ftl_nand_map_blks_per_plane, 2
-c_ftl_nand_map_blks_per_plane:
-       .zero   2
-       .type   c_ftl_nand_vendor_region_num, %object
-       .size   c_ftl_nand_vendor_region_num, 2
-c_ftl_nand_vendor_region_num:
-       .zero   2
-       .type   c_ftl_nand_l2pmap_ram_region_num, %object
-       .size   c_ftl_nand_l2pmap_ram_region_num, 2
-c_ftl_nand_l2pmap_ram_region_num:
+       .type   gVendorBlkInfo, %object
+       .size   gVendorBlkInfo, 64
+gVendorBlkInfo:
+       .zero   64
+       .type   g_ect_tbl_power_up_flush, %object
+       .size   g_ect_tbl_power_up_flush, 2
+g_ect_tbl_power_up_flush:
        .zero   2
-       .type   c_ftl_nand_map_region_num, %object
-       .size   c_ftl_nand_map_region_num, 2
-c_ftl_nand_map_region_num:
+       .type   g_power_lost_recovery_flag, %object
+       .size   g_power_lost_recovery_flag, 2
+g_power_lost_recovery_flag:
        .zero   2
-       .type   c_ftl_nand_totle_phy_blks, %object
-       .size   c_ftl_nand_totle_phy_blks, 4
-c_ftl_nand_totle_phy_blks:
+       .type   g_recovery_page_num, %object
+       .size   g_recovery_page_num, 4
+g_recovery_page_num:
        .zero   4
-       .type   c_ftl_nand_reserved_blks, %object
-       .size   c_ftl_nand_reserved_blks, 2
-c_ftl_nand_reserved_blks:
-       .zero   2
-       .type   c_ftl_nand_byte_pre_oob, %object
-       .size   c_ftl_nand_byte_pre_oob, 2
-c_ftl_nand_byte_pre_oob:
-       .zero   2
-       .type   c_ftl_nand_byte_pre_page, %object
-       .size   c_ftl_nand_byte_pre_page, 2
-c_ftl_nand_byte_pre_page:
-       .zero   2
-       .type   c_ftl_nand_sec_pre_page_shift, %object
-       .size   c_ftl_nand_sec_pre_page_shift, 2
-c_ftl_nand_sec_pre_page_shift:
-       .zero   2
-       .type   c_ftl_nand_sec_pre_page, %object
-       .size   c_ftl_nand_sec_pre_page, 2
-c_ftl_nand_sec_pre_page:
-       .zero   2
-       .type   c_ftl_nand_page_pre_super_blk, %object
-       .size   c_ftl_nand_page_pre_super_blk, 2
-c_ftl_nand_page_pre_super_blk:
-       .zero   2
-       .type   c_ftl_nand_page_pre_slc_blk, %object
-       .size   c_ftl_nand_page_pre_slc_blk, 2
-c_ftl_nand_page_pre_slc_blk:
-       .zero   2
-       .type   c_ftl_nand_page_pre_blk, %object
-       .size   c_ftl_nand_page_pre_blk, 2
-c_ftl_nand_page_pre_blk:
-       .zero   2
-       .type   c_ftl_nand_bbm_buf_size, %object
-       .size   c_ftl_nand_bbm_buf_size, 2
-c_ftl_nand_bbm_buf_size:
-       .zero   2
-       .type   c_ftl_nand_ext_blk_pre_plane, %object
-       .size   c_ftl_nand_ext_blk_pre_plane, 2
-c_ftl_nand_ext_blk_pre_plane:
-       .zero   2
-       .type   c_ftl_nand_blk_pre_plane, %object
-       .size   c_ftl_nand_blk_pre_plane, 2
-c_ftl_nand_blk_pre_plane:
-       .zero   2
-       .type   c_ftl_nand_planes_num, %object
-       .size   c_ftl_nand_planes_num, 2
-c_ftl_nand_planes_num:
-       .zero   2
-       .type   c_ftl_nand_blks_per_die_shift, %object
-       .size   c_ftl_nand_blks_per_die_shift, 2
-c_ftl_nand_blks_per_die_shift:
-       .zero   2
-       .type   c_ftl_nand_blks_per_die, %object
-       .size   c_ftl_nand_blks_per_die, 2
-c_ftl_nand_blks_per_die:
-       .zero   2
-       .type   c_ftl_nand_planes_per_die, %object
-       .size   c_ftl_nand_planes_per_die, 2
-c_ftl_nand_planes_per_die:
+       .type   g_recovery_ppa_tbl, %object
+       .size   g_recovery_ppa_tbl, 128
+g_recovery_ppa_tbl:
+       .zero   128
+       .type   gc_ink_free_return_value, %object
+       .size   gc_ink_free_return_value, 2
+gc_ink_free_return_value:
        .zero   2
-       .type   c_ftl_nand_die_num, %object
-       .size   c_ftl_nand_die_num, 2
-c_ftl_nand_die_num:
+       .type   g_gc_cur_blk_valid_pages, %object
+       .size   g_gc_cur_blk_valid_pages, 2
+g_gc_cur_blk_valid_pages:
        .zero   2
-       .type   c_ftl_nand_type, %object
-       .size   c_ftl_nand_type, 2
-c_ftl_nand_type:
+       .type   g_gc_cur_blk_max_valid_pages, %object
+       .size   g_gc_cur_blk_max_valid_pages, 2
+g_gc_cur_blk_max_valid_pages:
        .zero   2
        .zero   2
-       .type   gMasterTempBuf, %object
-       .size   gMasterTempBuf, 8
-gMasterTempBuf:
+       .type   gp_last_act_superblock, %object
+       .size   gp_last_act_superblock, 8
+gp_last_act_superblock:
        .zero   8
-       .type   gMasterInfo, %object
-       .size   gMasterInfo, 48
-gMasterInfo:
-       .zero   48
-       .type   gNandcDumpWriteEn, %object
-       .size   gNandcDumpWriteEn, 4
-gNandcDumpWriteEn:
+       .type   gc_discard_updated, %object
+       .size   gc_discard_updated, 4
+gc_discard_updated:
        .zero   4
-       .type   gToggleModeClkDiv, %object
-       .size   gToggleModeClkDiv, 4
-gToggleModeClkDiv:
+       .type   g_LowFormat, %object
+       .size   g_LowFormat, 4
+g_LowFormat:
        .zero   4
-       .type   gBootDdrMode, %object
-       .size   gBootDdrMode, 4
-gBootDdrMode:
+       .type   gLoaderBootInfo, %object
+       .size   gLoaderBootInfo, 8
+gLoaderBootInfo:
+       .zero   8
+       .type   RK29_NANDC1_REG_BASE, %object
+       .size   RK29_NANDC1_REG_BASE, 8
+RK29_NANDC1_REG_BASE:
+       .zero   8
+       .type   g_ftl_nand_free_count, %object
+       .size   g_ftl_nand_free_count, 4
+g_ftl_nand_free_count:
        .zero   4
-       .type   gNandcEccBits, %object
-       .size   gNandcEccBits, 4
-gNandcEccBits:
+       .type   last_cache_match_count, %object
+       .size   last_cache_match_count, 4
+last_cache_match_count:
        .zero   4
-       .type   gpNandc1, %object
-       .size   gpNandc1, 8
-gpNandc1:
+       .type   g_idb_buffer, %object
+       .size   g_idb_buffer, 8
+g_idb_buffer:
        .zero   8
-       .type   gpNandc, %object
-       .size   gpNandc, 8
-gpNandc:
+       .type   gpDrmKeyInfo, %object
+       .size   gpDrmKeyInfo, 8
+gpDrmKeyInfo:
        .zero   8
-       .type   gNandcVer, %object
-       .size   gNandcVer, 4
-gNandcVer:
-       .zero   4
+       .type   SecureBootCheckOK, %object
+       .size   SecureBootCheckOK, 4
+SecureBootCheckOK:
        .zero   4
-       .type   gNandChipMap, %object
-       .size   gNandChipMap, 64
-gNandChipMap:
-       .zero   64
-       .type   gNandIDataBuf, %object
-       .size   gNandIDataBuf, 2048
-gNandIDataBuf:
-       .zero   2048
-       .type   FlashDdrTunningReadCount, %object
-       .size   FlashDdrTunningReadCount, 4
-FlashDdrTunningReadCount:
+       .type   SecureBootEn, %object
+       .size   SecureBootEn, 4
+SecureBootEn:
        .zero   4
+       .type   gpBootConfig, %object
+       .size   gpBootConfig, 8
+gpBootConfig:
+       .zero   8
+       .type   gSnSectorData, %object
+       .size   gSnSectorData, 512
+gSnSectorData:
+       .zero   512
+       .type   SecureBootUnlockTryCount, %object
+       .size   SecureBootUnlockTryCount, 4
+SecureBootUnlockTryCount:
        .zero   4
-       .type   gNandPhyInfo, %object
-       .size   gNandPhyInfo, 28
-gNandPhyInfo:
-       .zero   28
        .zero   4
-       .type   gFlashProgCheckSpareBuffer, %object
-       .size   gFlashProgCheckSpareBuffer, 8
-gFlashProgCheckSpareBuffer:
-       .zero   8
-       .type   gFlashProgCheckBuffer, %object
-       .size   gFlashProgCheckBuffer, 8
-gFlashProgCheckBuffer:
-       .zero   8
-       .type   gFlashSpareBuffer, %object
-       .size   gFlashSpareBuffer, 8
-gFlashSpareBuffer:
-       .zero   8
-       .type   gFlashPageBuffer1, %object
-       .size   gFlashPageBuffer1, 8
-gFlashPageBuffer1:
-       .zero   8
-       .type   gFlashPageBuffer0, %object
-       .size   gFlashPageBuffer0, 8
-gFlashPageBuffer0:
+       .type   gpVendor0Info, %object
+       .size   gpVendor0Info, 8
+gpVendor0Info:
        .zero   8
-       .type   gpFlashSaveInfo, %object
-       .size   gpFlashSaveInfo, 8
-gpFlashSaveInfo:
+       .type   gpVendor1Info, %object
+       .size   gpVendor1Info, 8
+gpVendor1Info:
        .zero   8
-       .type   gReadRetryInfo, %object
-       .size   gReadRetryInfo, 852
-gReadRetryInfo:
-       .zero   852
+       .type   gToggleModeClkDiv, %object
+       .size   gToggleModeClkDiv, 4
+gToggleModeClkDiv:
        .zero   4
-       .type   gpNandParaInfo, %object
-       .size   gpNandParaInfo, 8
-gpNandParaInfo:
+       .zero   4
+       .type   gpNandc1, %object
+       .size   gpNandc1, 8
+gpNandc1:
        .zero   8
-       .type   gNandOptPara, %object
-       .size   gNandOptPara, 32
-gNandOptPara:
-       .zero   32
-       .type   g_slc2KBNand, %object
-       .size   g_slc2KBNand, 1
-g_slc2KBNand:
-       .zero   1
-       .type   g_maxRetryCount, %object
-       .size   g_maxRetryCount, 1
-g_maxRetryCount:
-       .zero   1
-       .type   g_maxRegNum, %object
-       .size   g_maxRegNum, 1
-g_maxRegNum:
-       .zero   1
-       .type   g_retryMode, %object
-       .size   g_retryMode, 1
-g_retryMode:
-       .zero   1
-       .type   gNandIDBResBlkNumSaveInFlash, %object
-       .size   gNandIDBResBlkNumSaveInFlash, 1
-gNandIDBResBlkNumSaveInFlash:
-       .zero   1
-       .type   gNandIDBResBlkNum, %object
-       .size   gNandIDBResBlkNum, 1
-gNandIDBResBlkNum:
-       .zero   1
-       .zero   2
        .type   gNandFlashResEndPageAddr, %object
        .size   gNandFlashResEndPageAddr, 4
 gNandFlashResEndPageAddr:
-       .zero   4
-       .type   gNandFlashInfoBlockAddr, %object
-       .size   gNandFlashInfoBlockAddr, 4
-gNandFlashInfoBlockAddr:
-       .zero   4
-       .type   gNandFlashIdbBlockAddr, %object
-       .size   gNandFlashIdbBlockAddr, 4
-gNandFlashIdbBlockAddr:
        .zero   4
        .type   gNandFlashInfoBlockEcc, %object
        .size   gNandFlashInfoBlockEcc, 1
 gNandFlashInfoBlockEcc:
-       .zero   1
-       .type   gNandFlashIDBEccBits, %object
-       .size   gNandFlashIDBEccBits, 1
-gNandFlashIDBEccBits:
-       .zero   1
-       .type   gNandFlashEccBits, %object
-       .size   gNandFlashEccBits, 1
-gNandFlashEccBits:
-       .zero   1
-       .type   gNandRandomizer, %object
-       .size   gNandRandomizer, 1
-gNandRandomizer:
-       .zero   1
-       .type   gBlockPageAlignSize, %object
-       .size   gBlockPageAlignSize, 4
-gBlockPageAlignSize:
-       .zero   4
-       .type   gTotleBlock, %object
-       .size   gTotleBlock, 2
-gTotleBlock:
-       .zero   2
-       .type   gNandMaxChip, %object
-       .size   gNandMaxChip, 1
-gNandMaxChip:
-       .zero   1
-       .type   gNandMaxDie, %object
-       .size   gNandMaxDie, 1
-gNandMaxDie:
-       .zero   1
-       .type   gFlashInterfaceMode, %object
-       .size   gFlashInterfaceMode, 1
-gFlashInterfaceMode:
        .zero   1
        .type   gFlashOnfiModeEn, %object
        .size   gFlashOnfiModeEn, 1
 gFlashOnfiModeEn:
-       .zero   1
-       .type   gFlashToggleModeEn, %object
-       .size   gFlashToggleModeEn, 1
-gFlashToggleModeEn:
        .zero   1
        .type   gFlashSdrModeEn, %object
        .size   gFlashSdrModeEn, 1
 gFlashSdrModeEn:
        .zero   1
-       .type   gMultiPageProgEn, %object
-       .size   gMultiPageProgEn, 1
-gMultiPageProgEn:
-       .zero   1
-       .type   gMultiPageReadEn, %object
-       .size   gMultiPageReadEn, 1
-gMultiPageReadEn:
-       .zero   1
-       .zero   2
-       .type   gpReadRetrial, %object
-       .size   gpReadRetrial, 8
-gpReadRetrial:
-       .zero   8
-       .type   mlcPageToSlcPageTbl, %object
-       .size   mlcPageToSlcPageTbl, 1024
-mlcPageToSlcPageTbl:
-       .zero   1024
-       .type   slcPageToMlcPageTbl, %object
-       .size   slcPageToMlcPageTbl, 512
-slcPageToMlcPageTbl:
-       .zero   512
-       .type   DieAddrs, %object
-       .size   DieAddrs, 32
-DieAddrs:
-       .zero   32
-       .type   gDieOp, %object
-       .size   gDieOp, 192
-gDieOp:
-       .zero   192
-       .type   DieCsIndex, %object
-       .size   DieCsIndex, 8
-DieCsIndex:
-       .zero   8
-       .type   IDByte, %object
-       .size   IDByte, 32
-IDByte:
-       .zero   32
-       .type   read_retry_cur_offset, %object
-       .size   read_retry_cur_offset, 4
-read_retry_cur_offset:
-       .zero   4
-       .section        .data.rel,"aw",%progbits
-       .align  3
-.LANCHOR3 = . + 0
-       .type   rknand_sys_storage_dev, %object
-       .size   rknand_sys_storage_dev, 80
-rknand_sys_storage_dev:
-       .word   255
-       .zero   4
-       .xword  .LC157
-       .xword  rknand_sys_storage_fops
-       .zero   56
index 39de3ea38a9bee2bab25eb219b0bc2dd8df18379..343ec6cd310378d33289bf5cb608bb5911e1d99a 100644 (file)
@@ -24,7 +24,7 @@
 #include "rk_nand_blk.h"
 #include "rk_ftl_api.h"
 
-#define RKNAND_VERSION_AND_DATE  "rknandbase v1.1 2016-01-08"
+#define RKNAND_VERSION_AND_DATE  "rknandbase v1.1 2016-11-08"
 
 struct rk_nandc_info {
        int     id;
@@ -33,6 +33,7 @@ struct rk_nandc_info {
        int     clk_rate;
        struct clk      *clk;   /* flash clk*/
        struct clk      *hclk;  /* nandc clk*/
+       struct clk      *gclk;  /* flash clk gate*/
 };
 
 static struct rk_nandc_info g_nandc_info[2];
@@ -52,6 +53,16 @@ static int nandc1_xfer_completed_flag;
 static int nandc1_ready_completed_flag;
 static int rk_timer_add;
 
+void *ftl_malloc(int size)
+{
+       return kmalloc(size, GFP_KERNEL | GFP_DMA);
+}
+
+void ftl_free(void *buf)
+{
+       kfree(buf);
+}
+
 char rknand_get_sn(char *pbuf)
 {
        memcpy(pbuf, &nand_idb_data[0x600], 0x200);
@@ -271,7 +282,7 @@ int rk_nandc_irq_init(void)
        rk_timer_add = 0;
        nandc0_ready_completed_flag = 0;
        nandc0_xfer_completed_flag = 0;
-       rk_nandc_irq_config(0, 1, rk_nandc_interrupt);
+       ret = rk_nandc_irq_config(0, 1, rk_nandc_interrupt);
 
        if (g_nandc_info[1].reg_base != 0) {
                nandc1_ready_completed_flag = 0;
@@ -332,6 +343,7 @@ static int rknand_probe(struct platform_device *pdev)
 
        g_nandc_info[id].hclk = devm_clk_get(&pdev->dev, "hclk_nandc");
        g_nandc_info[id].clk = devm_clk_get(&pdev->dev, "clk_nandc");
+       g_nandc_info[id].gclk = devm_clk_get(&pdev->dev, "g_clk_nandc");
 
        if (unlikely(IS_ERR(g_nandc_info[id].clk)) ||
            unlikely(IS_ERR(g_nandc_info[id].hclk))) {
@@ -343,6 +355,8 @@ static int rknand_probe(struct platform_device *pdev)
        g_nandc_info[id].clk_rate = clk_get_rate(g_nandc_info[id].clk);
        clk_prepare_enable(g_nandc_info[id].clk);
        clk_prepare_enable(g_nandc_info[id].hclk);
+       if (!(IS_ERR(g_nandc_info[id].gclk)))
+               clk_prepare_enable(g_nandc_info[id].gclk);
 
        dev_info(&pdev->dev,
                 "rknand_probe clk rate = %d\n",