From 244b2c5ca8b14627e4a17755e5922221e121c771 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 09 Oct 2024 06:15:07 +0000
Subject: [PATCH] change system file

---
 kernel/drivers/rkflash/rk_sftl_arm_v7.S | 17672 ++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 8,944 insertions(+), 8,728 deletions(-)

diff --git a/kernel/drivers/rkflash/rk_sftl_arm_v7.S b/kernel/drivers/rkflash/rk_sftl_arm_v7.S
index aa63e12..4fa6a0a 100644
--- a/kernel/drivers/rkflash/rk_sftl_arm_v7.S
+++ b/kernel/drivers/rkflash/rk_sftl_arm_v7.S
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-/* Copyright (c) 2018 Rockchip Electronics Co. Ltd.
- * date: 2022-08-15
+/* Copyright (c) 2018-2023 Rockchip Electronics Co. Ltd.
+ * date: 2023-04-11
  */
 	.arch armv7-a
 	.eabi_attribute 20, 1
@@ -14,53 +14,139 @@
 	.eabi_attribute 34, 1
 	.eabi_attribute 18, 2
 	.file	"rk_sftl.c"
+	.text
 	.syntax divided
 	.syntax unified
 	.global	__aeabi_uidiv
 	.arm
 	.syntax unified
-	.text
 	.align	2
 	.syntax unified
 	.arm
 	.fpu softvfp
 	.type	l2p_addr_tran, %function
 l2p_addr_tran:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L4
-	push	{r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	mov	r8, r1
-	ldr	r6, [r0, #4]
-	mov	r9, r2
-	ldrh	r4, [r3, #8]
-	ldrh	r5, [r3, #10]
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L3
+	mov	r7, r1
+	mov	r8, r2
+	ldrh	r9, [r3, #8]
+	ldrh	r6, [r3, #10]
 	ldrh	r3, [r3, #14]
-	lsr	r7, r6, #10
-	ubfx	r6, r6, #0, #10
-	uxth	r0, r7
-	uxth	r7, r7
 	cmp	r3, #4
-	lsreq	r4, r4, #1
-	lsleq	r5, r5, #1
-	mov	r1, r4
-	uxtheq	r5, r5
+	lsleq	r4, r6, #1
+	lsreq	r9, r9, #1
+	mov	r1, r9
+	uxtheq	r6, r4
+	ldr	r4, [r0, #4]
+	lsr	r5, r4, #10
+	ubfx	r0, r4, #10, #16
 	bl	__aeabi_uidiv
 	uxth	r0, r0
-	mls	r4, r0, r4, r7
-	mla	r4, r5, r4, r6
-	str	r4, [r8]
-	str	r0, [r9]
+	uxth	r5, r5
+	ubfx	r4, r4, #0, #10
+	mls	r5, r0, r9, r5
+	mla	r4, r6, r5, r4
+	str	r4, [r7]
+	str	r0, [r8]
 	mov	r0, #0
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L5:
-	.align	2
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
 .L4:
+	.align	2
+.L3:
 	.word	.LANCHOR0
-	.fnend
 	.size	l2p_addr_tran, .-l2p_addr_tran
+	.align	2
+	.syntax unified
+	.arm
+	.fpu softvfp
+	.type	_copy_from_user, %function
+_copy_from_user:
+	@ args = 0, pretend = 0, frame = 0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	mov	r3, sp
+	bic	ip, r3, #8128
+	mov	r6, r0
+	bic	ip, ip, #63
+	mov	r4, r2
+	ldr	r3, [ip, #8]
+	.syntax divided
+@ 157 "./include/linux/uaccess.h" 1
+	.syntax unified
+adds r5, r1, r2; sbcscc r5, r5, r3; movcc r3, #0
+@ 0 "" 2
+	.arm
+	.syntax unified
+	cmp	r3, #0
+	bne	.L8
+	.syntax divided
+@ 89 "./arch/arm/include/asm/domain.h" 1
+	mrc	p15, 0, r7, c3, c0	@ get domain
+@ 0 "" 2
+	.arm
+	.syntax unified
+	bic	r3, r7, #12
+	orr	r3, r3, #4
+	.syntax divided
+@ 99 "./arch/arm/include/asm/domain.h" 1
+	mcr	p15, 0, r3, c3, c0	@ set domain
+@ 0 "" 2
+@ 102 "./arch/arm/include/asm/domain.h" 1
+	isb 
+@ 0 "" 2
+	.arm
+	.syntax unified
+	bl	arm_copy_from_user
+	mov	r5, r0
+	.syntax divided
+@ 99 "./arch/arm/include/asm/domain.h" 1
+	mcr	p15, 0, r7, c3, c0	@ set domain
+@ 0 "" 2
+@ 102 "./arch/arm/include/asm/domain.h" 1
+	isb 
+@ 0 "" 2
+	.arm
+	.syntax unified
+	cmp	r0, #0
+	beq	.L5
+.L6:
+	sub	r4, r4, r5
+	mov	r2, r5
+	add	r0, r6, r4
+	mov	r1, #0
+	bl	memset
+.L5:
+	mov	r0, r5
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L8:
+	mov	r5, r2
+	b	.L6
+	.size	_copy_from_user, .-_copy_from_user
+	.section	.rodata.str1.1,"aMS",%progbits,1
+.LC0:
+	.ascii	"SFTL version: 5.0.59 20221121\000"
+.LC1:
+	.ascii	"\012%s\012\000"
+.LC2:
+	.ascii	"act blk: %x %x %x %x %x %x\012\000"
+.LC3:
+	.ascii	"buf blk: %x %x %x %x %x %x\012\000"
+.LC4:
+	.ascii	"tmp blk: %x %x %x %x %x %x\012\000"
+.LC5:
+	.ascii	"gc blk: %x %x %x %x %x %x\012\000"
+.LC6:
+	.ascii	"free blk: %x %x %x\012\000"
+	.text
 	.align	2
 	.global	ftl_print_sblk_info
 	.syntax unified
@@ -68,79 +154,80 @@
 	.fpu softvfp
 	.type	ftl_print_sblk_info, %function
 ftl_print_sblk_info:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r0, r1, r2, r3, r4, lr}
-	.save {r4, lr}
-	.pad #16
-	ldr	r4, .L8
-	ldr	r1, .L8+4
-	ldr	r0, .L8+8
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #20
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L13
+	ldr	r1, .L13+4
+	ldr	r0, .L13+8
 	bl	sftl_printk
+	ldr	r0, .L13+12
 	ldrh	r1, [r4, #24]
-	ldr	ip, [r4, #72]
-	ldrb	r3, [r4, #30]	@ zero_extendqisi2
+	ldr	r2, [r4, #72]
+	lsl	r3, r1, #1
+	ldrh	r3, [r2, r3]
+	str	r3, [sp, #8]
+	ldrh	r3, [r4, #28]
+	str	r3, [sp, #4]
+	ldrb	r3, [r4, #32]	@ zero_extendqisi2
 	ldrh	r2, [r4, #26]
-	lsl	r0, r1, #1
-	ldrh	r0, [ip, r0]
-	str	r0, [sp, #8]
-	ldrh	r0, [r4, #28]
-	str	r0, [sp, #4]
-	ldrb	r0, [r4, #32]	@ zero_extendqisi2
-	str	r0, [sp]
-	ldr	r0, .L8+12
+	str	r3, [sp]
+	ldrb	r3, [r4, #30]	@ zero_extendqisi2
 	bl	sftl_printk
 	ldrh	r1, [r4, #76]
-	ldr	ip, [r4, #72]
-	ldrb	r3, [r4, #82]	@ zero_extendqisi2
+	ldr	r2, [r4, #72]
+	ldr	r0, .L13+16
+	lsl	r3, r1, #1
+	ldrh	r3, [r2, r3]
+	str	r3, [sp, #8]
+	ldrh	r3, [r4, #80]
+	str	r3, [sp, #4]
+	ldrb	r3, [r4, #84]	@ zero_extendqisi2
 	ldrh	r2, [r4, #78]
-	lsl	r0, r1, #1
-	ldrh	r0, [ip, r0]
-	str	r0, [sp, #8]
-	ldrh	r0, [r4, #80]
-	str	r0, [sp, #4]
-	ldrb	r0, [r4, #84]	@ zero_extendqisi2
-	str	r0, [sp]
-	ldr	r0, .L8+16
+	str	r3, [sp]
+	ldrb	r3, [r4, #82]	@ zero_extendqisi2
 	bl	sftl_printk
 	ldrh	r1, [r4, #124]
-	ldr	ip, [r4, #72]
-	ldrb	r3, [r4, #130]	@ zero_extendqisi2
+	ldr	r2, [r4, #72]
+	ldr	r0, .L13+20
+	lsl	r3, r1, #1
+	ldrh	r3, [r2, r3]
+	str	r3, [sp, #8]
+	ldrh	r3, [r4, #128]
+	str	r3, [sp, #4]
+	ldrb	r3, [r4, #132]	@ zero_extendqisi2
 	ldrh	r2, [r4, #126]
-	lsl	r0, r1, #1
-	ldrh	r0, [ip, r0]
-	str	r0, [sp, #8]
-	ldrh	r0, [r4, #128]
-	str	r0, [sp, #4]
-	ldrb	r0, [r4, #132]	@ zero_extendqisi2
-	str	r0, [sp]
-	ldr	r0, .L8+20
+	str	r3, [sp]
+	ldrb	r3, [r4, #130]	@ zero_extendqisi2
 	bl	sftl_printk
 	ldrh	r1, [r4, #172]
-	ldr	ip, [r4, #72]
-	ldrb	r3, [r4, #178]	@ zero_extendqisi2
+	ldr	r2, [r4, #72]
+	ldr	r0, .L13+24
+	lsl	r3, r1, #1
+	ldrh	r3, [r2, r3]
+	str	r3, [sp, #8]
+	ldrh	r3, [r4, #176]
+	str	r3, [sp, #4]
+	ldrb	r3, [r4, #180]	@ zero_extendqisi2
 	ldrh	r2, [r4, #174]
-	lsl	r0, r1, #1
-	ldrh	r0, [ip, r0]
-	str	r0, [sp, #8]
-	ldrh	r0, [r4, #176]
-	str	r0, [sp, #4]
-	ldrb	r0, [r4, #180]	@ zero_extendqisi2
-	str	r0, [sp]
-	ldr	r0, .L8+24
+	str	r3, [sp]
+	ldrb	r3, [r4, #178]	@ zero_extendqisi2
 	bl	sftl_printk
 	ldrh	r3, [r4, #220]
 	ldrh	r2, [r4, #222]
 	ldrh	r1, [r4, #224]
-	ldr	r0, .L8+28
-	add	sp, sp, #16
-	@ sp needed
-	pop	{r4, lr}
-	b	sftl_printk
-.L9:
+	ldr	r0, .L13+28
+	bl	sftl_printk
+	sub	sp, fp, #16
+	ldmfd	sp, {r4, fp, sp, pc}
+.L14:
 	.align	2
-.L8:
+.L13:
 	.word	.LANCHOR0
 	.word	.LC0
 	.word	.LC1
@@ -149,7 +236,6 @@
 	.word	.LC4
 	.word	.LC5
 	.word	.LC6
-	.fnend
 	.size	ftl_print_sblk_info, .-ftl_print_sblk_info
 	.align	2
 	.global	Ftl_log2
@@ -158,24 +244,26 @@
 	.fpu softvfp
 	.type	Ftl_log2, %function
 Ftl_log2:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	mov	r1, #0
 	mov	r2, #1
-.L11:
-	cmp	r2, r0
+.L16:
 	uxth	r3, r1
+	cmp	r2, r0
 	add	r1, r1, #1
-	bls	.L12
+	bls	.L17
 	sub	r0, r3, #1
 	uxth	r0, r0
-	bx	lr
-.L12:
+	ldmfd	sp, {fp, sp, pc}
+.L17:
 	lsl	r2, r2, #1
-	b	.L11
-	.fnend
+	b	.L16
 	.size	Ftl_log2, .-Ftl_log2
 	.align	2
 	.global	FtlPrintInfo
@@ -184,12 +272,14 @@
 	.fpu softvfp
 	.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
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldmfd	sp, {fp, sp, pc}
 	.size	FtlPrintInfo, .-FtlPrintInfo
 	.align	2
 	.global	FtlSysBlkNumInit
@@ -198,11 +288,14 @@
 	.fpu softvfp
 	.type	FtlSysBlkNumInit, %function
 FtlSysBlkNumInit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r3, .L15
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L20
 	cmp	r0, #24
 	movcc	r0, #24
 	ldrh	r2, [r3, #232]
@@ -211,17 +304,16 @@
 	mul	r2, r0, r2
 	sub	r0, r1, r0
 	ldr	r1, [r3, #248]
-	strh	r0, [r3, #240]	@ movhi
-	mov	r0, #0
 	str	r2, [r3, #236]
+	strh	r0, [r3, #240]	@ movhi
 	sub	r2, r1, r2
+	mov	r0, #0
 	str	r2, [r3, #244]
-	bx	lr
-.L16:
+	ldmfd	sp, {fp, sp, pc}
+.L21:
 	.align	2
-.L15:
+.L20:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlSysBlkNumInit, .-FtlSysBlkNumInit
 	.global	__aeabi_idiv
 	.align	2
@@ -231,172 +323,168 @@
 	.fpu softvfp
 	.type	FtlConstantsInit, %function
 FtlConstantsInit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 8
-	@ frame_needed = 0, uses_anonymous_args = 0
-	mov	r3, r0
-	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #12
-	ldrh	ip, [r3, #14]
-	movw	r5, #258
-	ldr	r4, .L32
-	ldrh	r0, [r0]
-	cmp	ip, #4
-	ldrh	r7, [r3, #2]
-	ldrh	lr, [r3, #4]
-	add	r1, r4, #256
-	ldrh	r2, [r3, #6]
-	strh	r0, [r4, #252]	@ movhi
-	strh	r7, [r4, #254]	@ movhi
-	strh	lr, [r1]	@ movhi
-	strh	r2, [r4, #242]	@ movhi
-	strh	ip, [r4, r5]	@ movhi
-	bne	.L18
-	lsr	r2, r2, #1
-	strh	r2, [r4, #242]	@ movhi
-	mov	r2, #8
-	strh	r2, [r4, r5]	@ movhi
-.L19:
-	ldr	ip, .L32+4
-	mov	r2, #0
-.L20:
-	strb	r2, [r2, ip]
-	add	r2, r2, #1
-	cmp	r2, #32
-	bne	.L20
-	ldr	r2, .L32+8
-	cmp	r0, #1
-	mov	ip, #5
-	ldrh	r5, [r4, #242]
-	ldr	r8, .L32+12
-	mov	lr, #0
-	strh	ip, [r2]	@ movhi
-	movw	ip, #294
-	strheq	r0, [r2]	@ movhi
-	mov	r2, #640
-	ldrh	r0, [r1]
-	mov	r6, r8
-	strh	r2, [r6], #4	@ movhi
-	movw	r2, #298
-	strh	lr, [r4, ip]	@ movhi
-	str	r3, [sp, #4]
-	smulbb	r7, r7, r0
-	smulbb	r0, r0, r5
-	uxth	r7, r7
-	uxth	r0, r0
-	strh	r7, [r4, #232]	@ movhi
-	strh	r0, [r4, r2]	@ movhi
-	bl	Ftl_log2
-	ldr	r3, [sp, #4]
-	movw	r2, #302
-	strh	r0, [r6]	@ movhi
-	mov	r6, r8
-	add	r8, r8, #24
-	ldrh	r10, [r3, #12]
-	strh	r10, [r4, r2]	@ movhi
-	movw	r2, #306
-	smulbb	r1, r7, r10
-	strh	r10, [r8, #-16]	@ movhi
-	strh	r1, [r4, r2]	@ movhi
-	movw	r2, #258
-	ldrh	fp, [r4, r2]
-	mov	r0, fp
-	bl	Ftl_log2
-	lsl	r2, fp, #9
-	ldr	r3, [sp, #4]
-	movw	r1, #310
-	strh	r0, [r6, #12]!	@ movhi
-	uxth	r2, r2
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L36
 	mov	r9, r0
-	mov	r0, #5120
-	strh	r2, [r4, r1]	@ movhi
-	lsr	r2, r2, #8
-	mul	r1, r10, fp
-	strh	r2, [r8, #-8]	@ movhi
-	ldrh	r2, [r3, #20]
-	movw	r3, #314
+	ldrh	r2, [r0]
+	movw	lr, #258
+	add	r1, r4, #256
+	ldrh	r6, [r0, #2]
+	ldrh	ip, [r0, #4]
+	ldrh	r3, [r0, #6]
+	ldrh	r0, [r0, #14]
+	strh	r2, [r4, #252]	@ movhi
+	cmp	r0, #4
+	strh	r6, [r4, #254]	@ movhi
+	strh	ip, [r1]	@ movhi
+	strh	r3, [r4, #242]	@ movhi
+	strh	r0, [r4, lr]	@ movhi
+	bne	.L23
+	lsr	r3, r3, #1
+	strh	r3, [r4, #242]	@ movhi
+	mov	r3, #8
+	strh	r3, [r4, lr]	@ movhi
+.L24:
+	ldr	r0, .L36+4
+	mov	r3, #0
+.L25:
+	strb	r3, [r0], #1
+	add	r3, r3, #1
+	cmp	r3, #32
+	bne	.L25
+	movw	r3, #294
+	ldr	r5, .L36+8
+	ldrh	r7, [r4, #242]
+	mov	r0, #0
+	strh	r0, [r4, r3]	@ movhi
+	mov	r3, r5
+	ldrh	r0, [r1]
+	cmp	r2, #1
+	mov	r8, r5
+	add	r5, r5, #28
+	movne	r2, #5
+	strh	r2, [r3], #4	@ movhi
+	mov	r2, #640
+	smulbb	r6, r6, r0
+	strh	r2, [r3]	@ movhi
+	smulbb	r0, r0, r7
+	movw	r3, #298
+	uxth	r6, r6
+	strh	r6, [r4, #232]	@ movhi
+	uxth	r0, r0
+	strh	r0, [r4, r3]	@ movhi
+	bl	Ftl_log2
+	ldrh	r2, [r9, #12]
+	movw	r3, #302
+	strh	r0, [r5, #-20]	@ movhi
+	strh	r2, [r5, #-16]	@ movhi
 	strh	r2, [r4, r3]	@ movhi
-	mul	r3, r5, r7
-	lsl	r5, r5, #6
+	movw	r3, #306
+	smulbb	r1, r6, r2
+	str	r2, [fp, #-52]
+	strh	r1, [r4, r3]	@ movhi
+	movw	r3, #258
+	ldrh	r1, [r4, r3]
+	str	r1, [fp, #-48]
+	mov	r0, r1
+	bl	Ftl_log2
+	ldr	r1, [fp, #-48]
+	ldr	r2, [fp, #-52]
+	mov	r10, r0
+	strh	r0, [r8, #16]!	@ movhi
+	movw	r0, #310
+	lsl	r3, r1, #9
+	uxth	r3, r3
+	strh	r3, [r4, r0]	@ movhi
+	ldrh	r0, [r9, #20]
+	mul	r1, r2, r1
+	lsr	r3, r3, #8
+	strh	r3, [r5, #-8]	@ movhi
+	movw	r3, #314
+	strh	r0, [r4, r3]	@ movhi
+	mul	r3, r7, r6
 	str	r3, [r4, #248]
-	mul	r3, fp, r3
-	mul	r3, r10, r3
+	mov	r0, #5120
+	lsl	r7, r7, #6
+	mul	r3, r1, r3
 	asr	r3, r3, #11
 	str	r3, [r4, #316]
 	bl	__aeabi_idiv
-	uxth	r0, r0
-	movw	r2, #322
-	mov	r1, r7
 	cmp	r0, #4
-	movls	r3, #4
-	strhhi	r0, [r8]	@ movhi
-	strhls	r3, [r8]	@ movhi
+	movw	r2, #322
+	strhgt	r0, [r5]	@ movhi
+	movle	r3, #4
+	strhle	r3, [r5]	@ movhi
 	mov	r3, #640
-	asr	r3, r3, r9
-	add	r9, r9, #9
-	asr	r5, r5, r9
-	ldrh	r0, [r8]
+	mov	r1, r6
+	asr	r3, r3, r10
+	add	r10, r10, #9
 	add	r3, r3, #2
 	strh	r3, [r4, r2]	@ movhi
-	ldr	r3, .L32+16
-	strh	r5, [r3]	@ movhi
-	uxth	r5, r5
-	mul	r3, r7, r5
-	add	r5, r5, #8
+	ldr	r3, .L36+12
+	asr	r7, r7, r10
+	ldrh	r0, [r5]
+	strh	r7, [r3]	@ movhi
+	uxth	r7, r7
+	mul	r3, r7, r6
 	str	r3, [r4, #328]
 	bl	__aeabi_uidiv
-	uxtah	r0, r5, r0
-	cmp	r7, #1
-	addeq	r0, r0, #4
-	str	r0, [r4, #228]
+	cmp	r6, #1
+	uxtah	r7, r7, r0
+	addne	r7, r7, #8
+	addeq	r7, r7, #12
+	str	r7, [r4, #228]
 	ldrh	r0, [r4, #228]
 	bl	FtlSysBlkNumInit
 	ldr	r3, [r4, #228]
-	mov	r0, #0
-	str	r0, [r4, #340]
 	str	r3, [r4, #332]
-	ldr	r3, [r4, #244]
-	lsl	r2, r3, #2
 	movw	r3, #302
+	ldr	r2, [r4, #244]
+	mov	r0, #0
 	ldrh	r3, [r4, r3]
-	mul	r3, r3, r2
-	ldrh	r2, [r6]
+	str	r0, [r4, #340]
+	mul	r3, r2, r3
+	ldrh	r2, [r8]
 	add	r2, r2, #9
+	lsl	r3, r3, #2
 	lsr	r3, r3, r2
-	ldr	r2, .L32+20
+	ldr	r2, .L36+16
 	add	r3, r3, #2
 	strh	r3, [r2]	@ movhi
-	mov	r2, #32
 	movw	r3, #338
+	mov	r2, #32
 	strh	r2, [r4, r3]	@ movhi
-	ldrh	r3, [r8]
+	ldrh	r3, [r5]
 	add	r3, r3, #3
-	strh	r3, [r8]	@ movhi
+	strh	r3, [r5]	@ movhi
 	ldr	r3, [r4, #328]
 	add	r3, r3, #3
 	str	r3, [r4, #328]
-	add	sp, sp, #12
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L18:
-	cmp	lr, #1
-	cmpeq	ip, #8
-	lsreq	r2, r2, #1
-	strheq	r2, [r4, #242]	@ movhi
-	moveq	r2, #2
-	strheq	r2, [r1]	@ movhi
-	b	.L19
-.L33:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L23:
+	cmp	r0, #8
+	cmpeq	ip, #1
+	lsreq	r3, r3, #1
+	strheq	r3, [r4, #242]	@ movhi
+	moveq	r3, #2
+	strheq	r3, [r1]	@ movhi
+	b	.L24
+.L37:
 	.align	2
-.L32:
+.L36:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+260
 	.word	.LANCHOR0+292
-	.word	.LANCHOR0+296
 	.word	.LANCHOR0+324
 	.word	.LANCHOR0+336
-	.fnend
 	.size	FtlConstantsInit, .-FtlConstantsInit
 	.align	2
 	.global	IsBlkInVendorPart
@@ -405,36 +493,38 @@
 	.fpu softvfp
 	.type	IsBlkInVendorPart, %function
 IsBlkInVendorPart:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r2, .L41
-	add	r3, r2, #344
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L44
+	mov	r1, r0
+	add	r2, r3, #344
+	ldrh	r0, [r2]
+	cmp	r0, #0
+	ldmfdeq	sp, {fp, sp, pc}
+	ldr	r2, [r3, #348]
+	add	r3, r3, #320
 	ldrh	r3, [r3]
-	cmp	r3, #0
-	beq	.L40
-	ldr	r3, [r2, #348]
-	add	r2, r2, #320
-	ldrh	r2, [r2]
-	add	r2, r3, r2, lsl #1
-.L36:
-	cmp	r3, r2
-	bne	.L37
+	add	r3, r2, r3, lsl #1
 .L40:
+	cmp	r2, r3
+	bne	.L41
 	mov	r0, #0
-	bx	lr
-.L37:
-	ldrh	r1, [r3], #2
-	cmp	r0, r1
-	bne	.L36
-	mov	r0, #1
-	bx	lr
-.L42:
-	.align	2
+	ldmfd	sp, {fp, sp, pc}
 .L41:
+	ldrh	r0, [r2], #2
+	cmp	r1, r0
+	bne	.L40
+	mov	r0, #1
+	ldmfd	sp, {fp, sp, pc}
+.L45:
+	.align	2
+.L44:
 	.word	.LANCHOR0
-	.fnend
 	.size	IsBlkInVendorPart, .-IsBlkInVendorPart
 	.align	2
 	.global	FtlCacheWriteBack
@@ -443,13 +533,15 @@
 	.fpu softvfp
 	.type	FtlCacheWriteBack, %function
 FtlCacheWriteBack:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	mov	r0, #0
-	bx	lr
-	.fnend
+	ldmfd	sp, {fp, sp, pc}
 	.size	FtlCacheWriteBack, .-FtlCacheWriteBack
 	.align	2
 	.global	sftl_get_density
@@ -458,20 +550,27 @@
 	.fpu softvfp
 	.type	sftl_get_density, %function
 sftl_get_density:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r3, .L45
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L48
 	ldr	r0, [r3, #340]
-	bx	lr
-.L46:
+	ldmfd	sp, {fp, sp, pc}
+.L49:
 	.align	2
-.L45:
+.L48:
 	.word	.LANCHOR0
-	.fnend
 	.size	sftl_get_density, .-sftl_get_density
 	.global	__aeabi_uidivmod
+	.section	.rodata.str1.1
+.LC7:
+	.ascii	"phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
+	.ascii	"\000"
+	.text
 	.align	2
 	.global	FtlBbmMapBadBlock
 	.syntax unified
@@ -479,14 +578,16 @@
 	.fpu softvfp
 	.type	FtlBbmMapBadBlock, %function
 FtlBbmMapBadBlock:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r0, r1, r2, r4, r5, r6, r7, lr}
-	.save {r4, r5, r6, r7, lr}
-	.pad #12
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #8
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L51
 	movw	r3, #298
-	ldr	r4, .L49
 	mov	r5, r0
 	ldrh	r7, [r4, r3]
 	mov	r1, r7
@@ -495,34 +596,32 @@
 	mov	r1, r7
 	mov	r0, r5
 	bl	__aeabi_uidivmod
-	add	r2, r4, r6, lsl #2
-	uxth	r3, r1
-	ldr	r2, [r2, #380]
-	lsr	r1, r3, #5
-	and	ip, r3, #31
-	mov	lr, #1
+	add	r3, r4, r6, lsl #2
+	ubfx	r0, r1, #5, #11
+	and	ip, r1, #31
 	add	r4, r4, #352
-	ldr	r0, [r2, r1, lsl #2]
-	orr	r0, r0, lr, lsl ip
-	str	r0, [r2, r1, lsl #2]
-	mov	r2, r6
-	str	r0, [sp]
+	mov	lr, #1
+	ldr	r3, [r3, #380]
+	ldr	r2, [r3, r0, lsl #2]
+	orr	r2, r2, lr, lsl ip
+	str	r2, [r3, r0, lsl #2]
+	uxth	r3, r1
+	ldr	r0, .L51+4
 	mov	r1, r5
-	ldr	r0, .L49+4
+	str	r2, [sp]
+	mov	r2, r6
 	bl	sftl_printk
 	ldrh	r3, [r4, #6]
 	mov	r0, #0
 	add	r3, r3, #1
 	strh	r3, [r4, #6]	@ movhi
-	add	sp, sp, #12
-	@ sp needed
-	pop	{r4, r5, r6, r7, pc}
-.L50:
+	sub	sp, fp, #28
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L52:
 	.align	2
-.L49:
+.L51:
 	.word	.LANCHOR0
 	.word	.LC7
-	.fnend
 	.size	FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
 	.align	2
 	.global	FtlBbmIsBadBlock
@@ -531,35 +630,36 @@
 	.fpu softvfp
 	.type	FtlBbmIsBadBlock, %function
 FtlBbmIsBadBlock:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r5, .L54
 	movw	r3, #298
-	ldr	r5, .L53
-	mov	r7, r0
-	ldrh	r6, [r5, r3]
-	mov	r1, r6
+	mov	r6, r0
+	ldrh	r7, [r5, r3]
+	mov	r1, r7
 	bl	__aeabi_uidivmod
-	mov	r0, r7
+	mov	r0, r6
 	uxth	r4, r1
-	mov	r1, r6
+	mov	r1, r7
 	bl	__aeabi_uidiv
 	uxth	r0, r0
 	lsr	r2, r4, #5
-	add	r5, r5, r0, lsl #2
 	and	r4, r4, #31
+	add	r5, r5, r0, lsl #2
 	ldr	r3, [r5, #380]
 	ldr	r0, [r3, r2, lsl #2]
 	lsr	r0, r0, r4
 	and	r0, r0, #1
-	pop	{r4, r5, r6, r7, r8, pc}
-.L54:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L55:
 	.align	2
-.L53:
+.L54:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
 	.align	2
 	.global	FtlBbtInfoPrint
@@ -568,12 +668,14 @@
 	.fpu softvfp
 	.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
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldmfd	sp, {fp, sp, pc}
 	.size	FtlBbtInfoPrint, .-FtlBbtInfoPrint
 	.align	2
 	.global	FtlBbtCalcTotleCnt
@@ -582,36 +684,37 @@
 	.fpu softvfp
 	.type	FtlBbtCalcTotleCnt, %function
 FtlBbtCalcTotleCnt:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	ldr	r3, .L64
 	movw	r2, #298
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
 	mov	r5, #0
 	mov	r4, r5
-	ldrh	r2, [r3, r2]
-	ldrh	r6, [r3, #254]
-	mul	r6, r6, r2
-.L57:
+	ldrh	r6, [r3, r2]
+	ldrh	r3, [r3, #254]
+	mul	r6, r3, r6
+.L58:
 	uxth	r0, r5
 	cmp	r0, r6
-	blt	.L59
+	blt	.L60
 	mov	r0, r4
-	pop	{r4, r5, r6, pc}
-.L59:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L60:
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #0
-	add	r5, r5, #1
 	addne	r4, r4, #1
+	add	r5, r5, #1
 	uxthne	r4, r4
-	b	.L57
+	b	.L58
 .L65:
 	.align	2
 .L64:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
 	.align	2
 	.global	V2P_block
@@ -620,34 +723,35 @@
 	.fpu softvfp
 	.type	V2P_block, %function
 V2P_block:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
-	mov	r5, r1
-	ldr	r4, .L68
-	mov	r7, r0
-	add	r3, r4, #256
-	ldrh	r6, [r3]
-	mov	r1, r6
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r8, .L67
+	mov	r4, r1
+	mov	r6, r0
+	add	r3, r8, #256
+	ldrh	r7, [r3]
+	mov	r1, r7
 	bl	__aeabi_uidiv
 	movw	r3, #298
-	smulbb	r5, r6, r5
-	ldrh	r4, [r4, r3]
-	mov	r1, r6
-	smulbb	r4, r4, r0
-	mov	r0, r7
+	smulbb	r4, r7, r4
+	mov	r1, r7
+	ldrh	r5, [r8, r3]
+	smulbb	r5, r5, r0
+	mov	r0, r6
 	bl	__aeabi_uidivmod
-	add	r0, r5, r1
-	add	r0, r4, r0
-	uxth	r0, r0
-	pop	{r4, r5, r6, r7, r8, pc}
-.L69:
-	.align	2
+	add	r4, r4, r1
+	add	r4, r5, r4
+	uxth	r0, r4
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
 .L68:
+	.align	2
+.L67:
 	.word	.LANCHOR0
-	.fnend
 	.size	V2P_block, .-V2P_block
 	.align	2
 	.global	P2V_plane
@@ -656,30 +760,31 @@
 	.fpu softvfp
 	.type	P2V_plane, %function
 P2V_plane:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L72
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	mov	r6, r0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L70
+	mov	r5, r0
 	add	r2, r3, #256
-	ldrh	r5, [r2]
+	ldrh	r6, [r2]
 	movw	r2, #298
 	ldrh	r1, [r3, r2]
 	bl	__aeabi_uidiv
-	mov	r1, r5
-	smulbb	r4, r0, r5
-	mov	r0, r6
+	mov	r1, r6
+	smulbb	r4, r0, r6
+	mov	r0, r5
 	bl	__aeabi_uidivmod
-	add	r1, r4, r1
-	uxth	r0, r1
-	pop	{r4, r5, r6, pc}
-.L73:
+	add	r0, r4, r1
+	uxth	r0, r0
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L71:
 	.align	2
-.L72:
+.L70:
 	.word	.LANCHOR0
-	.fnend
 	.size	P2V_plane, .-P2V_plane
 	.align	2
 	.global	P2V_block_in_plane
@@ -688,26 +793,28 @@
 	.fpu softvfp
 	.type	P2V_block_in_plane, %function
 P2V_block_in_plane:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, lr}
-	.save {r4, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L73
 	movw	r3, #298
-	ldr	r4, .L76
 	ldrh	r1, [r4, r3]
 	add	r4, r4, #256
 	bl	__aeabi_uidivmod
-	uxth	r0, r1
+	mov	r0, r1
 	ldrh	r1, [r4]
+	uxth	r0, r0
 	bl	__aeabi_uidiv
 	uxth	r0, r0
-	pop	{r4, pc}
-.L77:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L74:
 	.align	2
-.L76:
+.L73:
 	.word	.LANCHOR0
-	.fnend
 	.size	P2V_block_in_plane, .-P2V_block_in_plane
 	.align	2
 	.global	ftl_cmp_data_ver
@@ -716,24 +823,26 @@
 	.fpu softvfp
 	.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.
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	cmp	r0, r1
-	bls	.L79
+	bls	.L76
 	sub	r0, r0, r1
 	cmp	r0, #-2147483648
 	movhi	r0, #0
 	movls	r0, #1
-	bx	lr
-.L79:
-	sub	r0, r1, r0
-	cmp	r0, #-2147483648
+	ldmfd	sp, {fp, sp, pc}
+.L76:
+	sub	r1, r1, r0
+	cmp	r1, #-2147483648
 	movls	r0, #0
 	movhi	r0, #1
-	bx	lr
-	.fnend
+	ldmfd	sp, {fp, sp, pc}
 	.size	ftl_cmp_data_ver, .-ftl_cmp_data_ver
 	.align	2
 	.global	FtlFreeSysBlkQueueEmpty
@@ -742,20 +851,22 @@
 	.fpu softvfp
 	.type	FtlFreeSysBlkQueueEmpty, %function
 FtlFreeSysBlkQueueEmpty:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r3, .L82
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L79
 	ldrh	r0, [r3, #6]
 	clz	r0, r0
 	lsr	r0, r0, #5
-	bx	lr
-.L83:
+	ldmfd	sp, {fp, sp, pc}
+.L80:
 	.align	2
-.L82:
+.L79:
 	.word	.LANCHOR0+412
-	.fnend
 	.size	FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
 	.align	2
 	.global	FtlFreeSysBlkQueueFull
@@ -764,21 +875,23 @@
 	.fpu softvfp
 	.type	FtlFreeSysBlkQueueFull, %function
 FtlFreeSysBlkQueueFull:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r3, .L85
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L82
 	ldrh	r0, [r3, #6]
 	sub	r0, r0, #1024
 	clz	r0, r0
 	lsr	r0, r0, #5
-	bx	lr
-.L86:
+	ldmfd	sp, {fp, sp, pc}
+.L83:
 	.align	2
-.L85:
+.L82:
 	.word	.LANCHOR0+412
-	.fnend
 	.size	FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
 	.align	2
 	.global	FtlFreeSysBLkSort
@@ -787,48 +900,49 @@
 	.fpu softvfp
 	.type	FtlFreeSysBLkSort, %function
 FtlFreeSysBLkSort:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L100
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L93
 	ldrh	r2, [r3, #6]
 	cmp	r2, #0
-	bxeq	lr
-	ldr	r2, .L100+4
+	ldmfdeq	sp, {r4, r5, fp, sp, pc}
+	ldr	r2, .L93+4
 	mov	r0, #0
-	push	{r4, lr}
-	.save {r4, lr}
-	mov	r4, r0
 	ldrh	r1, [r3, #2]
-	ldrh	lr, [r2, #28]
+	mov	lr, r0
+	ldrh	ip, [r2, #28]
 	ldrh	r2, [r3, #4]
-	and	lr, lr, #31
-.L89:
-	uxth	ip, r0
-	add	r0, r0, #1
-	cmp	lr, ip
-	bgt	.L90
-	cmp	r4, #0
+	and	ip, ip, #31
+.L87:
+	uxth	r4, r0
+	cmp	ip, r4
+	bhi	.L88
+	cmp	lr, #0
 	strhne	r1, [r3, #2]	@ movhi
 	strhne	r2, [r3, #4]	@ movhi
-	pop	{r4, pc}
-.L90:
-	add	ip, r3, r1, lsl #1
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L88:
+	add	lr, r3, r1, lsl #1
 	add	r1, r1, #1
+	add	r0, r0, #1
 	ubfx	r1, r1, #0, #10
-	ldrh	r4, [ip, #8]
-	add	ip, r3, r2, lsl #1
-	strh	r4, [ip, #8]	@ movhi
-	mov	r4, #1
-	add	r2, r2, r4
+	ldrh	r4, [lr, #8]
+	add	lr, r3, r2, lsl #1
+	add	r2, r2, #1
+	strh	r4, [lr, #8]	@ movhi
 	ubfx	r2, r2, #0, #10
-	b	.L89
-.L101:
+	mov	lr, #1
+	b	.L87
+.L94:
 	.align	2
-.L100:
+.L93:
 	.word	.LANCHOR0+412
 	.word	.LANCHOR0+2468
-	.fnend
 	.size	FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
 	.align	2
 	.global	IsInFreeQueue
@@ -837,42 +951,41 @@
 	.fpu softvfp
 	.type	IsInFreeQueue, %function
 IsInFreeQueue:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L112
-	ldrh	ip, [r3, #6]
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r1, .L101
+	ldrh	ip, [r1, #6]
 	cmp	ip, #1024
-	beq	.L106
-	str	lr, [sp, #-4]!
-	.save {lr}
-	mov	r1, #0
-	ldrh	lr, [r3, #2]
-.L104:
-	cmp	r1, ip
-	bcc	.L105
+	movne	r2, #0
+	ldrhne	lr, [r1, #2]
+	bne	.L97
+.L99:
 	mov	r0, #0
-	ldr	pc, [sp], #4
-.L105:
-	add	r2, r1, lr
-	ubfx	r2, r2, #0, #10
-	add	r2, r3, r2, lsl #1
-	ldrh	r2, [r2, #8]
-	cmp	r2, r0
-	beq	.L107
-	add	r1, r1, #1
-	b	.L104
-.L106:
-	mov	r0, #0
-	bx	lr
-.L107:
+	ldmfd	sp, {fp, sp, pc}
+.L98:
+	add	r3, lr, r2
+	ubfx	r3, r3, #0, #10
+	add	r3, r1, r3, lsl #1
+	ldrh	r3, [r3, #8]
+	cmp	r3, r0
+	beq	.L100
+	add	r2, r2, #1
+.L97:
+	cmp	ip, r2
+	bhi	.L98
+	b	.L99
+.L100:
 	mov	r0, #1
-	ldr	pc, [sp], #4
-.L113:
+	ldmfd	sp, {fp, sp, pc}
+.L102:
 	.align	2
-.L112:
+.L101:
 	.word	.LANCHOR0+412
-	.fnend
 	.size	IsInFreeQueue, .-IsInFreeQueue
 	.align	2
 	.global	insert_data_list
@@ -881,101 +994,105 @@
 	.fpu softvfp
 	.type	insert_data_list, %function
 insert_data_list:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 8
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #12
-	ldr	r2, .L129
-	ldrh	r3, [r2, #240]
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L117
+	ldrh	r3, [r4, #240]
 	cmp	r3, r0
-	bls	.L116
-	mov	r4, #6
-	ldr	r7, [r2, #2516]
-	mul	r4, r4, r0
-	mvn	lr, #0
-	add	ip, r7, r4
-	strh	lr, [ip, #2]	@ movhi
-	strh	lr, [r7, r4]	@ movhi
-	ldr	r3, [r2, #2520]
-	cmp	r3, #0
-	streq	ip, [r2, #2520]
-	beq	.L116
-	ldr	r9, [r2, #72]
-	mov	r1, r2
-	lsl	r2, r0, #1
-	ldr	r8, [r1, #2516]
-	movw	r10, #65535
-	ldrh	r5, [r9, r2]
-	ldrh	r2, [ip, #4]
+	bls	.L105
+	mov	lr, #6
+	ldr	r5, [r4, #2516]
+	mvn	ip, #0
+	mul	lr, lr, r0
+	add	r1, r5, lr
+	strh	ip, [r1, #2]	@ movhi
+	strh	ip, [r5, lr]	@ movhi
+	ldr	r2, [r4, #2520]
 	cmp	r2, #0
-	mulne	lr, r2, r5
-	sub	r2, r3, r8
-	asr	r5, r2, #1
-	ldr	r2, .L129+4
-	mul	r2, r2, r5
-	ldrh	r5, [r1, #240]
-	str	r5, [sp, #4]
-	mov	r5, #0
-	uxth	r2, r2
-.L122:
-	ldr	r6, [sp, #4]
-	add	r5, r5, #1
-	uxth	r5, r5
-	cmp	r5, r6
-	movls	r6, #0
-	movhi	r6, #1
-	cmp	r0, r2
-	orreq	r6, r6, #1
+	streq	r1, [r4, #2520]
+	beq	.L105
+	ldr	r8, [r4, #72]
+	lsl	r3, r0, #1
+	ldr	r7, [r4, #2516]
+	movw	r10, #65535
+	ldrh	r4, [r4, #240]
+	ldrh	r6, [r8, r3]
+	ldrh	r3, [r1, #4]
+	str	r4, [fp, #-48]
+	mov	r4, #0
+	cmp	r3, #0
+	mulne	ip, r3, r6
+	sub	r3, r2, r7
+	ldr	r6, .L117+4
+	asr	r3, r3, #1
+	mul	r3, r6, r3
+	uxth	r3, r3
+.L111:
+	sub	r6, r0, r3
+	add	r4, r4, #1
+	clz	r6, r6
+	ldr	r9, [fp, #-48]
+	uxth	r4, r4
+	lsr	r6, r6, #5
+	cmp	r4, r9
+	orrhi	r6, r6, #1
 	cmp	r6, #0
-	bne	.L116
-	ldrh	r6, [r3, #4]
-	cmp	r6, #0
-	beq	.L120
-	lsl	fp, r2, #1
-	ldrh	fp, [r9, fp]
-	mul	r6, r6, fp
-	cmp	r6, lr
-	bcs	.L120
-	ldrh	r6, [r3]
+	bne	.L105
+	ldrh	r9, [r2, #4]
+	cmp	r9, #0
+	beq	.L109
+	lsl	r6, r3, #1
+	ldrh	r6, [r8, r6]
+	mul	r6, r9, r6
+	cmp	r6, ip
+	bcs	.L109
+	ldrh	r6, [r2]
 	cmp	r6, r10
-	bne	.L121
-	strh	r2, [ip, #2]	@ movhi
-	strh	r0, [r3]	@ movhi
-	str	ip, [r1, #2524]
-.L116:
+	bne	.L110
+	strh	r3, [r1, #2]	@ movhi
+	ldr	r3, .L117
+	strh	r0, [r2]	@ movhi
+	str	r1, [r3, #2524]
+.L105:
 	mov	r0, #0
-	add	sp, sp, #12
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L121:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L110:
 	mov	r3, #6
-	mov	r2, r6
-	mla	r3, r3, r6, r8
-	b	.L122
-.L120:
-	strh	r2, [r7, r4]	@ movhi
-	ldrh	r2, [r3, #2]
-	strh	r2, [ip, #2]	@ movhi
-	ldr	r2, [r1, #2520]
-	cmp	r3, r2
-	ldrhne	ip, [r3, #2]
-	movne	r2, #6
-	ldrne	r1, [r1, #2516]
-	strheq	r0, [r3, #2]	@ movhi
-	streq	ip, [r1, #2520]
-	mulne	r2, r2, ip
-	strhne	r0, [r1, r2]	@ movhi
-	strhne	r0, [r3, #2]	@ movhi
-	b	.L116
-.L130:
+	mla	r2, r3, r6, r7
+	mov	r3, r6
+	b	.L111
+.L109:
+	strh	r3, [r5, lr]	@ movhi
+	ldr	ip, .L117
+	ldrh	r3, [r2, #2]
+	strh	r3, [r1, #2]	@ movhi
+	ldr	lr, [ip, #2520]
+	cmp	r2, lr
+	strheq	r0, [r2, #2]	@ movhi
+	streq	r1, [ip, #2520]
+	ldrne	r1, [ip, #2516]
+	movne	ip, #6
+	mulne	r3, ip, r3
+	strhne	r0, [r1, r3]	@ movhi
+	strhne	r0, [r2, #2]	@ movhi
+	b	.L105
+.L118:
 	.align	2
-.L129:
+.L117:
 	.word	.LANCHOR0
 	.word	-1431655765
-	.fnend
 	.size	insert_data_list, .-insert_data_list
+	.section	.rodata.str1.1
+.LC8:
+	.ascii	"\012!!!!! error @ func:%s - line:%d\012\000"
+	.text
 	.align	2
 	.global	INSERT_DATA_LIST
 	.syntax unified
@@ -983,33 +1100,34 @@
 	.fpu softvfp
 	.type	INSERT_DATA_LIST, %function
 INSERT_DATA_LIST:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, lr}
-	.save {r4, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	bl	insert_data_list
-	ldr	r2, .L134
+	ldr	r2, .L121
 	add	r1, r2, #2528
 	ldrh	r2, [r2, #240]
 	ldrh	r3, [r1]
 	add	r3, r3, #1
 	uxth	r3, r3
-	cmp	r2, r3
 	strh	r3, [r1]	@ movhi
-	popcs	{r4, pc}
+	cmp	r2, r3
+	ldmfdcs	sp, {fp, sp, pc}
+	ldr	r1, .L121+4
 	mov	r2, #214
-	ldr	r1, .L134+4
-	ldr	r0, .L134+8
-	pop	{r4, lr}
-	b	sftl_printk
-.L135:
+	ldr	r0, .L121+8
+	bl	sftl_printk
+	ldmfd	sp, {fp, sp, pc}
+.L122:
 	.align	2
-.L134:
+.L121:
 	.word	.LANCHOR0
 	.word	.LANCHOR1
 	.word	.LC8
-	.fnend
 	.size	INSERT_DATA_LIST, .-INSERT_DATA_LIST
 	.align	2
 	.global	insert_free_list
@@ -1018,75 +1136,78 @@
 	.fpu softvfp
 	.type	insert_free_list, %function
 insert_free_list:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	movw	r4, #65535
-	cmp	r0, r4
-	beq	.L137
-	ldr	r2, .L144
-	mov	r1, #6
-	mul	r5, r1, r0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	movw	r8, #65535
+	cmp	r0, r8
+	beq	.L124
+	ldr	r1, .L131
+	mov	r6, #6
 	mvn	r3, #0
-	ldr	r6, [r2, #2516]
-	mov	ip, r2
-	add	lr, r6, r5
-	strh	r3, [lr, #2]	@ movhi
-	strh	r3, [r6, r5]	@ movhi
-	ldr	r3, [r2, #2532]
+	mul	lr, r6, r0
+	ldr	r4, [r1, #2516]
+	add	ip, r4, lr
+	strh	r3, [ip, #2]	@ movhi
+	strh	r3, [r4, lr]	@ movhi
+	ldr	r3, [r1, #2532]
 	cmp	r3, #0
-	streq	lr, [r2, #2532]
-	beq	.L137
-	ldr	r8, [r2, #2536]
+	bne	.L125
+.L130:
+	str	ip, [r1, #2532]
+	b	.L124
+.L125:
 	lsl	r2, r0, #1
-	ldr	r7, [ip, #2516]
-	ldrh	r9, [r8, r2]
-	sub	r2, r3, r7
-	asr	r10, r2, #1
-	ldr	r2, .L144+4
-	mul	r2, r2, r10
-	mov	r10, r1
+	ldr	r7, [r1, #2536]
+	ldr	r5, [r1, #2516]
+	ldr	r10, .L131+4
+	ldrh	r9, [r7, r2]
+	sub	r2, r3, r5
+	asr	r2, r2, #1
+	mul	r2, r10, r2
 	uxth	r2, r2
-.L141:
-	lsl	r1, r2, #1
-	ldrh	r1, [r8, r1]
-	cmp	r1, r9
-	bcs	.L139
-	ldrh	r1, [r3]
-	cmp	r1, r4
-	bne	.L140
-	strh	r2, [lr, #2]	@ movhi
+.L128:
+	lsl	r10, r2, #1
+	ldrh	r10, [r7, r10]
+	cmp	r10, r9
+	bcs	.L126
+	ldrh	r10, [r3]
+	cmp	r10, r8
+	bne	.L127
+	strh	r2, [ip, #2]	@ movhi
 	strh	r0, [r3]	@ movhi
-.L137:
+.L124:
 	mov	r0, #0
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L140:
-	mla	r3, r10, r1, r7
-	mov	r2, r1
-	b	.L141
-.L139:
-	ldrh	r1, [r3, #2]
-	strh	r1, [lr, #2]	@ movhi
-	strh	r2, [r6, r5]	@ movhi
-	ldr	r2, [ip, #2532]
-	cmp	r3, r2
-	ldrhne	lr, [r3, #2]
-	movne	r2, #6
-	ldrne	r1, [ip, #2516]
+	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L127:
+	mla	r3, r6, r10, r5
+	mov	r2, r10
+	b	.L128
+.L126:
+	ldrh	r5, [r3, #2]
+	strh	r5, [ip, #2]	@ movhi
+	strh	r2, [r4, lr]	@ movhi
+	ldr	r2, [r1, #2532]
+	cmp	r2, r3
 	strheq	r0, [r3, #2]	@ movhi
-	streq	lr, [ip, #2532]
-	mulne	r2, r2, lr
-	strhne	r0, [r1, r2]	@ movhi
-	strhne	r0, [r3, #2]	@ movhi
-	b	.L137
-.L145:
+	beq	.L130
+.L129:
+	ldrh	r2, [r3, #2]
+	mov	ip, #6
+	ldr	r1, [r1, #2516]
+	mul	r2, ip, r2
+	strh	r0, [r1, r2]	@ movhi
+	strh	r0, [r3, #2]	@ movhi
+	b	.L124
+.L132:
 	.align	2
-.L144:
+.L131:
 	.word	.LANCHOR0
 	.word	-1431655765
-	.fnend
 	.size	insert_free_list, .-insert_free_list
 	.align	2
 	.global	INSERT_FREE_LIST
@@ -1095,32 +1216,33 @@
 	.fpu softvfp
 	.type	INSERT_FREE_LIST, %function
 INSERT_FREE_LIST:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, lr}
-	.save {r4, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	bl	insert_free_list
-	ldr	r2, .L149
+	ldr	r2, .L135
 	ldrh	r3, [r2, #224]
 	add	r3, r3, #1
 	uxth	r3, r3
 	strh	r3, [r2, #224]	@ movhi
 	ldrh	r2, [r2, #240]
 	cmp	r2, r3
-	popcs	{r4, pc}
+	ldmfdcs	sp, {fp, sp, pc}
+	ldr	r1, .L135+4
 	mov	r2, #207
-	ldr	r1, .L149+4
-	ldr	r0, .L149+8
-	pop	{r4, lr}
-	b	sftl_printk
-.L150:
+	ldr	r0, .L135+8
+	bl	sftl_printk
+	ldmfd	sp, {fp, sp, pc}
+.L136:
 	.align	2
-.L149:
+.L135:
 	.word	.LANCHOR0
 	.word	.LANCHOR1+17
 	.word	.LC8
-	.fnend
 	.size	INSERT_FREE_LIST, .-INSERT_FREE_LIST
 	.align	2
 	.global	List_remove_node
@@ -1129,78 +1251,85 @@
 	.fpu softvfp
 	.type	List_remove_node, %function
 List_remove_node:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
-	mov	r6, #6
-	ldr	r4, .L158
-	mul	r6, r6, r1
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r8, .L148
+	mov	r4, #6
 	movw	r3, #65535
-	mov	r8, r0
-	ldr	r7, [r4, #2516]
-	add	r5, r7, r6
-	ldrh	r2, [r5, #2]
+	mov	r5, r0
+	mul	r4, r4, r1
+	ldr	r7, [r8, #2516]
+	add	r6, r7, r4
+	ldrh	r2, [r6, #2]
 	cmp	r2, r3
-	bne	.L152
+	bne	.L138
 	ldr	r3, [r0]
-	cmp	r5, r3
-	beq	.L152
-	mov	r2, #372
-	ldr	r1, .L158+4
-	ldr	r0, .L158+8
-	bl	sftl_printk
-.L152:
-	ldr	r3, [r8]
-	movw	r2, #65535
-	cmp	r5, r3
-	ldrh	r3, [r7, r6]
-	bne	.L153
-	cmp	r3, r2
-	ldrne	r2, [r4, #2516]
-	movne	r1, #6
-	moveq	r3, #0
-	streq	r3, [r8]
-	mlane	r3, r1, r3, r2
-	mvnne	r2, #0
-	strne	r3, [r8]
-	strhne	r2, [r3, #2]	@ movhi
-.L155:
+	cmp	r6, r3
+	bne	.L139
+.L142:
+	ldrh	r2, [r7, r4]
+	movw	r3, #65535
+	cmp	r2, r3
+	bne	.L146
+	mov	r3, #0
+	str	r3, [r5]
+.L144:
 	mvn	r3, #0
 	mov	r0, #0
-	strh	r3, [r7, r6]	@ movhi
-	strh	r3, [r5, #2]	@ movhi
-	pop	{r4, r5, r6, r7, r8, pc}
-.L153:
-	cmp	r3, r2
-	ldrh	r1, [r5, #2]
-	bne	.L156
-	cmp	r1, r3
-	movne	r3, #6
-	ldrne	r2, [r4, #2516]
-	mulne	r1, r3, r1
-	mvnne	r3, #0
-	strhne	r3, [r2, r1]	@ movhi
-	b	.L155
-.L156:
-	ldr	r0, [r4, #2516]
+	strh	r3, [r7, r4]	@ movhi
+	strh	r3, [r6, #2]	@ movhi
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L139:
+	ldr	r1, .L148+4
+	mov	r2, #372
+	ldr	r0, .L148+8
+	bl	sftl_printk
+.L138:
+	ldr	r3, [r5]
+	ldrh	r1, [r7, r4]
+	cmp	r3, r6
+	beq	.L142
+	movw	r2, #65535
+	ldrh	r3, [r6, #2]
+	cmp	r1, r2
+	bne	.L145
+	cmp	r3, r1
+	beq	.L144
 	mov	r2, #6
-	mla	r3, r2, r3, r0
-	strh	r1, [r3, #2]	@ movhi
-	ldrh	r0, [r5, #2]
-	ldrh	r1, [r7, r6]
-	ldr	r3, [r4, #2516]
-	mul	r2, r2, r0
-	strh	r1, [r3, r2]	@ movhi
-	b	.L155
-.L159:
+	ldr	r1, [r8, #2516]
+	mul	r3, r2, r3
+	mvn	r2, #0
+	strh	r2, [r1, r3]	@ movhi
+	b	.L144
+.L146:
+	ldr	r3, [r8, #2516]
+	mov	r1, #6
+	mla	r3, r1, r2, r3
+	mvn	r2, #0
+	str	r3, [r5]
+	strh	r2, [r3, #2]	@ movhi
+	b	.L144
+.L145:
+	ldr	r2, [r8, #2516]
+	mov	r0, #6
+	mla	r2, r0, r1, r2
+	strh	r3, [r2, #2]	@ movhi
+	mul	r3, r0, r3
+	ldr	r2, [r8, #2516]
+	ldrh	r1, [r7, r4]
+	strh	r1, [r2, r3]	@ movhi
+	b	.L144
+.L149:
 	.align	2
-.L158:
+.L148:
 	.word	.LANCHOR0
 	.word	.LANCHOR1+34
 	.word	.LC8
-	.fnend
 	.size	List_remove_node, .-List_remove_node
 	.align	2
 	.global	List_pop_index_node
@@ -1209,47 +1338,48 @@
 	.fpu softvfp
 	.type	List_pop_index_node, %function
 List_pop_index_node:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	ldr	r3, [r0]
 	cmp	r3, #0
-	beq	.L166
-	ldr	r2, .L171
-	push	{r4, lr}
-	.save {r4, lr}
-	movw	lr, #65535
-	mov	r4, #6
-	ldr	r2, [r2, #2516]
-.L162:
+	beq	.L155
+	ldr	r2, .L159
+	movw	ip, #65535
+	mov	lr, #6
+	ldr	r4, [r2, #2516]
+.L152:
 	cmp	r1, #0
-	bne	.L163
-.L165:
-	ldr	r4, .L171+4
-	sub	r3, r3, r2
-	asr	r3, r3, #1
-	mul	r4, r4, r3
+	beq	.L153
+	ldrh	r2, [r3]
+	cmp	r2, ip
+	bne	.L154
+.L153:
+	sub	r4, r3, r4
+	ldr	r3, .L159+4
+	asr	r4, r4, #1
+	mul	r4, r3, r4
 	uxth	r1, r4
 	bl	List_remove_node
 	uxth	r0, r4
-	pop	{r4, pc}
-.L163:
-	ldrh	ip, [r3]
-	cmp	ip, lr
-	beq	.L165
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L154:
 	sub	r1, r1, #1
-	mla	r3, r4, ip, r2
+	mla	r3, lr, r2, r4
 	uxth	r1, r1
-	b	.L162
-.L166:
+	b	.L152
+.L155:
 	movw	r0, #65535
-	bx	lr
-.L172:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L160:
 	.align	2
-.L171:
+.L159:
 	.word	.LANCHOR0
 	.word	-1431655765
-	.fnend
 	.size	List_pop_index_node, .-List_pop_index_node
 	.align	2
 	.global	List_pop_head_node
@@ -1258,13 +1388,16 @@
 	.fpu softvfp
 	.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.
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	mov	r1, #0
-	b	List_pop_index_node
-	.fnend
+	bl	List_pop_index_node
+	ldmfd	sp, {fp, sp, pc}
 	.size	List_pop_head_node, .-List_pop_head_node
 	.align	2
 	.global	List_get_gc_head_node
@@ -1273,44 +1406,46 @@
 	.fpu softvfp
 	.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, .L180
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r2, .L168
 	ldr	r3, [r2, #2520]
 	cmp	r3, #0
-	ldrne	r1, [r2, #2516]
-	movne	ip, #6
-	movwne	r2, #65535
-	bne	.L176
-.L179:
+	movwne	r1, #65535
+	movne	lr, #6
+	ldrne	ip, [r2, #2516]
+	bne	.L164
+.L167:
 	movw	r0, #65535
-	bx	lr
-.L178:
-	sub	r0, r0, #1
-	mla	r3, ip, r3, r1
-	uxth	r0, r0
-.L176:
+	ldmfd	sp, {fp, sp, pc}
+.L166:
+	sub	r2, r0, #1
+	mla	r3, lr, r3, ip
+	uxth	r0, r2
+.L164:
 	cmp	r0, #0
-	beq	.L177
+	beq	.L165
 	ldrh	r3, [r3]
-	cmp	r3, r2
-	bne	.L178
-	b	.L179
-.L177:
-	ldr	r0, .L180+4
-	sub	r3, r3, r1
-	asr	r3, r3, #1
-	mul	r3, r0, r3
-	uxth	r0, r3
-	bx	lr
-.L181:
+	cmp	r3, r1
+	bne	.L166
+	b	.L167
+.L165:
+	sub	r0, r3, ip
+	ldr	r3, .L168+4
+	asr	r0, r0, #1
+	mul	r0, r3, r0
+	uxth	r0, r0
+	ldmfd	sp, {fp, sp, pc}
+.L169:
 	.align	2
-.L180:
+.L168:
 	.word	.LANCHOR0
 	.word	-1431655765
-	.fnend
 	.size	List_get_gc_head_node, .-List_get_gc_head_node
 	.align	2
 	.global	List_update_data_list
@@ -1319,102 +1454,103 @@
 	.fpu softvfp
 	.type	List_update_data_list, %function
 List_update_data_list:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	ldr	r4, .L194
-	ldrh	r3, [r4, #24]
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r5, .L181
+	mov	r4, r0
+	ldrh	r3, [r5, #24]
 	cmp	r3, r0
-	beq	.L184
-	ldrh	r3, [r4, #76]
+	beq	.L172
+	ldrh	r3, [r5, #76]
 	cmp	r3, r0
-	beq	.L184
-	ldrh	r3, [r4, #124]
+	beq	.L172
+	ldrh	r3, [r5, #124]
 	cmp	r3, r0
-	beq	.L184
+	beq	.L172
 	mov	r7, #6
-	ldr	r9, [r4, #2516]
+	ldr	r9, [r5, #2516]
+	ldr	r3, [r5, #2520]
 	mul	r7, r7, r0
-	ldr	r3, [r4, #2520]
 	add	r8, r9, r7
 	cmp	r8, r3
-	beq	.L184
-	ldr	r2, [r4, #72]
+	beq	.L172
+	ldr	r2, [r5, #72]
 	lsl	r3, r0, #1
-	ldrh	r6, [r8, #4]
-	mov	r5, r0
-	ldrh	r3, [r2, r3]
+	ldrh	r6, [r2, r3]
 	movw	r2, #65535
-	cmp	r6, #0
+	ldrh	r3, [r8, #4]
+	cmp	r3, #0
 	mvneq	r6, #0
-	mulne	r6, r6, r3
+	mulne	r6, r3, r6
 	ldrh	r3, [r8, #2]
 	cmp	r3, r2
-	bne	.L187
+	bne	.L175
 	ldrh	r2, [r9, r7]
 	cmp	r2, r3
-	bne	.L187
+	bne	.L175
+	ldr	r1, .L181+4
 	movw	r2, #463
-	ldr	r1, .L194+4
-	ldr	r0, .L194+8
+	ldr	r0, .L181+8
 	bl	sftl_printk
-.L187:
+.L175:
 	ldrh	r3, [r8, #2]
 	movw	r2, #65535
 	cmp	r3, r2
-	bne	.L188
+	bne	.L176
 	ldrh	r2, [r9, r7]
 	cmp	r2, r3
-	beq	.L184
-.L188:
+	beq	.L172
+.L176:
 	mov	r2, #6
-	mul	r2, r2, r3
-	ldr	r3, .L194+12
-	asr	r1, r2, #1
-	mul	r3, r3, r1
-	ldr	r1, [r4, #72]
-	lsl	r3, r3, #1
-	ldrh	r0, [r1, r3]
-	ldr	r1, [r4, #2516]
-	add	r2, r1, r2
-	ldrh	r3, [r2, #4]
+	ldr	r1, .L181+12
+	mul	r3, r2, r3
+	asr	r2, r3, #1
+	mul	r2, r1, r2
+	ldr	r1, [r5, #72]
+	lsl	r2, r2, #1
+	ldrh	r2, [r1, r2]
+	ldr	r1, [r5, #2516]
+	add	r3, r1, r3
+	ldrh	r3, [r3, #4]
 	cmp	r3, #0
-	mulne	r3, r3, r0
 	mvneq	r3, #0
+	mulne	r3, r3, r2
 	cmp	r6, r3
-	bcs	.L184
-	ldr	r4, .L194+16
-	mov	r1, r5
-	ldr	r0, .L194+20
+	bcs	.L172
+	ldr	r5, .L181+16
+	mov	r1, r4
+	ldr	r0, .L181+20
 	bl	List_remove_node
-	ldrh	r3, [r4]
+	ldrh	r3, [r5]
 	cmp	r3, #0
-	bne	.L190
+	bne	.L178
+	ldr	r1, .L181+4
 	movw	r2, #474
-	ldr	r1, .L194+4
-	ldr	r0, .L194+8
+	ldr	r0, .L181+8
 	bl	sftl_printk
-.L190:
-	ldrh	r3, [r4]
-	mov	r0, r5
+.L178:
+	ldrh	r3, [r5]
+	mov	r0, r4
 	sub	r3, r3, #1
-	strh	r3, [r4]	@ movhi
+	strh	r3, [r5]	@ movhi
 	bl	INSERT_DATA_LIST
-.L184:
+.L172:
 	mov	r0, #0
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L195:
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L182:
 	.align	2
-.L194:
+.L181:
 	.word	.LANCHOR0
 	.word	.LANCHOR1+51
 	.word	.LC8
 	.word	-1431655765
 	.word	.LANCHOR0+2528
 	.word	.LANCHOR0+2520
-	.fnend
 	.size	List_update_data_list, .-List_update_data_list
 	.align	2
 	.global	select_l2p_ram_region
@@ -1423,90 +1559,92 @@
 	.fpu softvfp
 	.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	r3, .L207
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L193
 	movw	r2, #338
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
 	mov	r1, #0
-	mov	r0, #12
-	movw	ip, #65535
+	mov	ip, #12
+	movw	lr, #65535
 	ldrh	r2, [r3, r2]
 	ldr	r3, [r3, #2540]
-.L197:
+	sub	r0, r3, #12
+.L184:
 	uxth	r4, r1
-	cmp	r4, r2
-	bcc	.L199
+	cmp	r2, r4
+	bhi	.L186
 	mov	r4, r2
+	add	r5, r3, #4
 	mov	r1, #0
 	mov	r0, #-2147483648
-	mov	r5, #12
-.L200:
+	mov	r6, #12
+.L187:
 	uxth	lr, r1
-	cmp	lr, r2
-	bcc	.L202
-	cmp	r4, r2
-	bcc	.L198
-	ldr	r1, .L207+4
+	cmp	r2, lr
+	bhi	.L189
+	cmp	r2, r4
+	bhi	.L185
+	ldr	r1, .L193+4
 	mov	r4, r2
 	mvn	r0, #0
 	ldrh	r5, [r1]
 	mov	r1, #0
-.L203:
+.L190:
 	uxth	ip, r1
-	cmp	ip, r2
-	bcc	.L205
-	cmp	r4, r2
-	bcc	.L198
+	cmp	r2, ip
+	bhi	.L192
+	cmp	r2, r4
+	bhi	.L185
+	ldr	r1, .L193+8
 	mov	r2, #796
-	ldr	r1, .L207+8
-	ldr	r0, .L207+12
+	ldr	r0, .L193+12
 	bl	sftl_printk
-	b	.L198
-.L199:
+	b	.L185
+.L186:
 	add	r1, r1, #1
-	mla	lr, r0, r1, r3
-	ldrh	lr, [lr, #-12]
-	cmp	lr, ip
-	bne	.L197
-.L198:
+	mul	r5, ip, r1
+	ldrh	r5, [r0, r5]
+	cmp	r5, lr
+	bne	.L184
+.L185:
 	mov	r0, r4
-	pop	{r4, r5, r6, pc}
-.L202:
-	mla	ip, r5, r1, r3
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L189:
+	mul	ip, r6, r1
 	add	r1, r1, #1
-	ldr	ip, [ip, #4]
-	cmp	r0, ip
-	movls	r6, #0
-	movhi	r6, #1
-	cmp	ip, #0
-	movlt	r6, #0
-	cmp	r6, #0
+	ldr	ip, [r5, ip]
+	mvn	r7, ip
+	cmp	ip, r0
+	lsr	r7, r7, #31
+	movcs	r7, #0
+	cmp	r7, #0
 	movne	r0, ip
 	movne	r4, lr
-	b	.L200
-.L205:
+	b	.L187
+.L192:
 	ldr	lr, [r3, #4]
-	cmp	r0, lr
-	bls	.L204
+	cmp	lr, r0
+	bcs	.L191
 	ldrh	r6, [r3]
 	cmp	r6, r5
 	movne	r0, lr
 	movne	r4, ip
-.L204:
+.L191:
 	add	r1, r1, #1
 	add	r3, r3, #12
-	b	.L203
-.L208:
+	b	.L190
+.L194:
 	.align	2
-.L207:
+.L193:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+2544
 	.word	.LANCHOR1+73
 	.word	.LC8
-	.fnend
 	.size	select_l2p_ram_region, .-select_l2p_ram_region
 	.align	2
 	.global	FtlUpdateVaildLpn
@@ -1515,45 +1653,43 @@
 	.fpu softvfp
 	.type	FtlUpdateVaildLpn, %function
 FtlUpdateVaildLpn:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	ip, .L218
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L201
 	movw	r1, #2546
-	ldrh	r2, [ip, r1]
+	ldrh	r2, [r3, r1]
 	cmp	r2, #4
 	cmpls	r0, #0
-	bne	.L210
+	bne	.L196
 	add	r2, r2, #1
-	strh	r2, [ip, r1]	@ movhi
-	bx	lr
-.L210:
+	strh	r2, [r3, r1]	@ movhi
+	ldmfd	sp, {fp, sp, pc}
+.L196:
 	mov	r2, #0
-	str	lr, [sp, #-4]!
-	.save {lr}
-	strh	r2, [ip, r1]	@ movhi
-	mov	r3, ip
+	strh	r2, [r3, r1]	@ movhi
+	str	r2, [r3, #2548]
 	movw	lr, #65535
-	str	r2, [ip, #2548]
-	ldrh	r1, [ip, #240]
-	ldr	r2, [ip, #72]
+	ldr	r2, [r3, #72]
+	ldrh	r1, [r3, #240]
 	add	r1, r2, r1, lsl #1
-.L211:
+.L197:
 	cmp	r2, r1
-	bne	.L213
-	ldr	pc, [sp], #4
-.L213:
+	ldmfdeq	sp, {fp, sp, pc}
 	ldrh	ip, [r2], #2
 	cmp	ip, lr
 	ldrne	r0, [r3, #2548]
 	addne	r0, r0, ip
 	strne	r0, [r3, #2548]
-	b	.L211
-.L219:
+	b	.L197
+.L202:
 	.align	2
-.L218:
+.L201:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
 	.align	2
 	.global	ftl_sb_update_avl_pages
@@ -1562,56 +1698,55 @@
 	.fpu softvfp
 	.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
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L211
+	add	ip, r2, #8
 	mov	r3, #0
-	push	{r4, r5, lr}
-	.save {r4, r5, lr}
-	strh	r3, [r0, #4]	@ movhi
-	add	ip, r0, r2, lsl #1
 	movw	r5, #65535
-	ldr	r3, .L228
-	add	ip, ip, #14
-	ldrh	lr, [r3, #232]
-.L221:
-	cmp	r2, lr
-	bcc	.L223
-	movw	r2, #302
-	add	ip, r0, #16
-	ldrh	r3, [r3, r2]
-	movw	r4, #65535
-	sub	r3, r3, #1
-	sub	r1, r3, r1
-	mov	r3, #0
-	uxth	r1, r1
-.L224:
-	uxth	r2, r3
+	add	ip, r0, ip, lsl #1
+	strh	r3, [r0, #4]	@ movhi
+	ldrh	lr, [r4, #232]
+.L204:
 	cmp	lr, r2
-	bhi	.L226
-	pop	{r4, r5, pc}
-.L223:
-	ldrh	r4, [ip, #2]!
+	bhi	.L206
+	movw	r3, #302
+	add	ip, r0, #16
+	mov	r2, #0
+	ldrh	r3, [r4, r3]
+	movw	r4, #65535
+	sub	r3, r3, r1
+	sub	r3, r3, #1
+	sxth	r3, r3
+.L207:
+	uxth	r1, r2
+	cmp	lr, r1
+	ldmfdls	sp, {r4, r5, fp, sp, pc}
+	ldrh	r1, [ip], #2
 	add	r2, r2, #1
+	cmp	r1, r4
+	ldrhne	r1, [r0, #4]
+	addne	r1, r3, r1
+	strhne	r1, [r0, #4]	@ movhi
+	b	.L207
+.L206:
+	ldrh	r3, [ip], #2
+	add	r2, r2, #1
+	cmp	r3, r5
 	uxth	r2, r2
-	cmp	r4, r5
-	ldrhne	r4, [r0, #4]
-	addne	r4, r4, #1
-	strhne	r4, [r0, #4]	@ movhi
-	b	.L221
-.L226:
-	ldrh	r2, [ip], #2
-	add	r3, r3, #1
-	cmp	r2, r4
-	ldrhne	r2, [r0, #4]
-	addne	r2, r1, r2
-	strhne	r2, [r0, #4]	@ movhi
-	b	.L224
-.L229:
+	ldrhne	r3, [r0, #4]
+	addne	r3, r3, #1
+	strhne	r3, [r0, #4]	@ movhi
+	b	.L204
+.L212:
 	.align	2
-.L228:
+.L211:
 	.word	.LANCHOR0
-	.fnend
 	.size	ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
 	.align	2
 	.global	FtlSlcSuperblockCheck
@@ -1620,48 +1755,46 @@
 	.fpu softvfp
 	.type	FtlSlcSuperblockCheck, %function
 FtlSlcSuperblockCheck:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	ldrh	r3, [r0, #4]
 	cmp	r3, #0
-	bxeq	lr
-	ldrh	r2, [r0]
-	movw	r3, #65535
-	cmp	r2, r3
-	bxeq	lr
-	ldrb	r2, [r0, #6]	@ zero_extendqisi2
-	str	lr, [sp, #-4]!
-	.save {lr}
-	mov	lr, #0
-	add	r2, r0, r2, lsl #1
-	ldrh	r1, [r2, #16]
-	ldr	r2, .L240
-	ldrh	ip, [r2, #232]
-	mov	r2, r3
-.L233:
-	cmp	r1, r2
-	beq	.L235
-	ldr	pc, [sp], #4
-.L235:
+	ldmfdeq	sp, {fp, sp, pc}
+	ldrh	r3, [r0]
+	movw	r2, #65535
+	cmp	r3, r2
+	ldmfdeq	sp, {fp, sp, pc}
+	ldrb	r3, [r0, #6]	@ zero_extendqisi2
+	mov	ip, #0
+	ldr	r1, .L219
+	add	r3, r0, r3, lsl #1
+	ldrh	r1, [r1, #232]
+	ldrh	r3, [r3, #16]
+.L216:
+	cmp	r3, r2
+	ldmfdne	sp, {fp, sp, pc}
 	ldrb	r3, [r0, #6]	@ zero_extendqisi2
 	add	r3, r3, #1
 	uxtb	r3, r3
-	cmp	r3, ip
 	strb	r3, [r0, #6]
+	cmp	r3, r1
+	strbeq	ip, [r0, #6]
 	ldrheq	r3, [r0, #2]
-	strbeq	lr, [r0, #6]
 	addeq	r3, r3, #1
 	strheq	r3, [r0, #2]	@ movhi
 	ldrb	r3, [r0, #6]	@ zero_extendqisi2
 	add	r3, r0, r3, lsl #1
-	ldrh	r1, [r3, #16]
-	b	.L233
-.L241:
+	ldrh	r3, [r3, #16]
+	b	.L216
+.L220:
 	.align	2
-.L240:
+.L219:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
 	.align	2
 	.global	make_superblock
@@ -1670,72 +1803,76 @@
 	.fpu softvfp
 	.type	make_superblock, %function
 make_superblock:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	@ args = 0, pretend = 0, frame = 8
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r7, .L227
 	mov	r4, r0
-	ldr	r6, .L249
 	ldrh	r2, [r0]
-	ldrh	r3, [r6, #240]
+	ldrh	r3, [r7, #240]
 	cmp	r2, r3
-	bcc	.L243
+	bcc	.L222
+	ldr	r1, .L227+4
 	movw	r2, #2157
-	ldr	r1, .L249+4
-	ldr	r0, .L249+8
+	ldr	r0, .L227+8
 	bl	sftl_printk
-.L243:
-	ldrh	r9, [r6, #232]
-	add	r7, r4, #16
-	ldr	r10, .L249+12
-	mvn	r8, #0
-	mov	r5, #0
-	strh	r5, [r4, #4]	@ movhi
-	strb	r5, [r4, #7]
-.L244:
-	uxth	r3, r5
+.L222:
+	ldrh	r6, [r7, #232]
+	mov	r3, #0
+	strh	r3, [r4, #4]	@ movhi
+	add	r5, r4, #16
+	strb	r3, [r4, #7]
+	mvn	r9, #0
+	add	r6, r4, r6, lsl #1
+	ldr	r3, .L227+12
+	add	r6, r6, #16
+.L223:
 	ldrh	r1, [r4]
-	cmp	r9, r3
-	bhi	.L246
-	movw	r2, #302
-	ldrb	r3, [r4, #7]	@ zero_extendqisi2
-	ldrh	r2, [r6, r2]
+	cmp	r6, r5
+	ldrb	r8, [r4, #7]	@ zero_extendqisi2
+	bne	.L225
+	movw	r3, #302
 	lsl	r1, r1, #1
 	mov	r0, #0
-	smulbb	r3, r3, r2
-	strh	r3, [r4, #4]	@ movhi
+	ldrh	r3, [r7, r3]
+	smulbb	r8, r3, r8
 	mov	r3, #0
 	strb	r3, [r4, #9]
-	ldr	r3, [r6, #2536]
+	ldr	r3, [r7, #2536]
+	strh	r8, [r4, #4]	@ movhi
 	ldrh	r2, [r3, r1]
 	movw	r3, #10000
 	cmp	r2, r3
 	movhi	r3, #1
 	strbhi	r3, [r4, #9]
-	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L246:
-	ldrb	r0, [r10, r5]	@ zero_extendqisi2
-	add	r7, r7, #2
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L225:
+	ldrb	r0, [r3], #1	@ zero_extendqisi2
+	add	r5, r5, #2
+	str	r3, [fp, #-48]
 	bl	V2P_block
-	strh	r8, [r7, #-2]	@ movhi
-	mov	fp, r0
+	strh	r9, [r5, #-2]	@ movhi
+	mov	r10, r0
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #0
-	add	r5, r5, #1
-	strheq	fp, [r7, #-2]	@ movhi
-	ldrbeq	r3, [r4, #7]	@ zero_extendqisi2
-	addeq	r3, r3, #1
-	strbeq	r3, [r4, #7]
-	b	.L244
-.L250:
+	addeq	r8, r8, #1
+	strheq	r10, [r5, #-2]	@ movhi
+	ldr	r3, [fp, #-48]
+	strbeq	r8, [r4, #7]
+	b	.L223
+.L228:
 	.align	2
-.L249:
+.L227:
 	.word	.LANCHOR0
 	.word	.LANCHOR1+95
 	.word	.LC8
 	.word	.LANCHOR0+260
-	.fnend
 	.size	make_superblock, .-make_superblock
 	.align	2
 	.global	update_multiplier_value
@@ -1744,52 +1881,52 @@
 	.fpu softvfp
 	.type	update_multiplier_value, %function
 update_multiplier_value:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L258
-	movw	r2, #302
-	push	{r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	mov	r5, #0
-	mov	r7, r0
-	mov	r4, r5
-	mov	r6, r3
-	add	r10, r3, #260
-	ldrh	r8, [r3, #232]
-	ldrh	r9, [r3, r2]
-.L252:
-	uxth	r3, r5
-	cmp	r8, r3
-	bhi	.L254
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r6, .L237
+	movw	r3, #302
+	mov	r7, #0
+	mov	r5, r0
+	add	r8, r6, #260
+	mov	r4, r7
+	ldrh	r9, [r6, #232]
+	ldrh	r10, [r6, r3]
+.L230:
+	uxth	r3, r7
+	cmp	r9, r3
+	bhi	.L232
 	cmp	r4, #0
-	moveq	r0, r4
-	beq	.L255
+	beq	.L233
 	mov	r1, r4
 	mov	r0, #32768
 	bl	__aeabi_idiv
-.L255:
-	ldr	r1, [r6, #2516]
+	uxth	r4, r0
+.L233:
+	ldr	r0, [r6, #2516]
 	mov	r3, #6
-	mla	r1, r3, r7, r1
-	strh	r0, [r1, #4]	@ movhi
+	mla	r5, r3, r5, r0
 	mov	r0, #0
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L254:
-	mov	r1, r7
-	ldrb	r0, [r10, r5]	@ zero_extendqisi2
+	strh	r4, [r5, #4]	@ movhi
+	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L232:
+	mov	r1, r5
+	ldrb	r0, [r8], #1	@ zero_extendqisi2
 	bl	V2P_block
+	add	r7, r7, #1
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #0
-	add	r5, r5, #1
-	addeq	r4, r4, r9
+	addeq	r4, r10, r4
 	uxtheq	r4, r4
-	b	.L252
-.L259:
+	b	.L230
+.L238:
 	.align	2
-.L258:
+.L237:
 	.word	.LANCHOR0
-	.fnend
 	.size	update_multiplier_value, .-update_multiplier_value
 	.align	2
 	.global	GetFreeBlockMinEraseCount
@@ -1798,30 +1935,32 @@
 	.fpu softvfp
 	.type	GetFreeBlockMinEraseCount, %function
 GetFreeBlockMinEraseCount:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r2, .L263
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r2, .L242
 	ldr	r0, [r2, #2532]
 	cmp	r0, #0
-	bxeq	lr
+	ldmfdeq	sp, {fp, sp, pc}
 	ldr	r3, [r2, #2516]
-	sub	r0, r0, r3
-	ldr	r3, .L263+4
-	asr	r0, r0, #1
-	mul	r0, r3, r0
-	ldr	r3, [r2, #2536]
-	uxth	r0, r0
-	lsl	r0, r0, #1
-	ldrh	r0, [r3, r0]
-	bx	lr
-.L264:
+	ldr	r2, [r2, #2536]
+	sub	r3, r0, r3
+	ldr	r0, .L242+4
+	asr	r3, r3, #1
+	mul	r3, r0, r3
+	uxth	r3, r3
+	lsl	r3, r3, #1
+	ldrh	r0, [r2, r3]
+	ldmfd	sp, {fp, sp, pc}
+.L243:
 	.align	2
-.L263:
+.L242:
 	.word	.LANCHOR0
 	.word	-1431655765
-	.fnend
 	.size	GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
 	.align	2
 	.global	GetFreeBlockMaxEraseCount
@@ -1830,56 +1969,191 @@
 	.fpu softvfp
 	.type	GetFreeBlockMaxEraseCount, %function
 GetFreeBlockMaxEraseCount:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r1, .L277
-	ldr	r3, [r1, #2532]
-	cmp	r3, #0
-	beq	.L271
-	push	{r4, r5, lr}
-	.save {r4, r5, lr}
-	mov	r4, #6
-	ldrh	r2, [r1, #224]
-	movw	r5, #65535
-	ldr	ip, [r1, #2516]
-	rsb	r2, r2, r2, lsl #3
-	sub	r3, r3, ip
-	asr	r2, r2, #3
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r1, .L251
+	mov	r2, r0
+	ldr	r0, [r1, #2532]
+	cmp	r0, #0
+	ldmfdeq	sp, {r4, r5, r6, r7, fp, sp, pc}
+	ldrh	r3, [r1, #224]
+	mov	r5, #6
+	ldr	lr, [r1, #2516]
+	movw	r6, #65535
+	rsb	r3, r3, r3, lsl #3
+	asr	ip, r3, #3
+	cmp	r2, r3, asr #3
+	sub	r3, r0, lr
+	ldr	r0, .L251+4
+	uxthgt	r2, ip
+	mov	ip, #0
 	asr	r3, r3, #1
-	cmp	r0, r2
-	uxthgt	r0, r2
-	ldr	r2, .L277+4
-	mul	r3, r2, r3
-	mov	r2, #0
+	mul	r3, r0, r3
 	uxth	r3, r3
-.L268:
-	uxth	lr, r2
-	cmp	r0, lr
-	bls	.L270
-	mul	lr, r4, r3
-	add	r2, r2, #1
-	ldrh	lr, [ip, lr]
-	cmp	lr, r5
-	bne	.L272
-.L270:
-	ldr	r2, [r1, #2536]
-	lsl	r3, r3, #1
-	ldrh	r0, [r2, r3]
-	pop	{r4, r5, pc}
-.L272:
-	mov	r3, lr
-	b	.L268
-.L271:
+.L247:
+	uxth	r4, ip
 	mov	r0, r3
-	bx	lr
-.L278:
+	cmp	r4, r2
+	bcs	.L248
+	mul	r3, r5, r3
+	add	ip, ip, #1
+	ldrh	r3, [lr, r3]
+	cmp	r3, r6
+	bne	.L247
+.L248:
+	ldr	r2, [r1, #2536]
+	lsl	r3, r0, #1
+	ldrh	r0, [r2, r3]
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L252:
 	.align	2
-.L277:
+.L251:
 	.word	.LANCHOR0
 	.word	-1431655765
-	.fnend
 	.size	GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
+	.section	.rodata.str1.1
+.LC9:
+	.ascii	"FLASH INFO:\012\000"
+.LC10:
+	.ascii	"Device Capacity: %d MB\012\000"
+.LC11:
+	.ascii	"FTL INFO:\012\000"
+.LC12:
+	.ascii	"g_MaxLpn = 0x%x\012\000"
+.LC13:
+	.ascii	"g_VaildLpn = 0x%x\012\000"
+.LC14:
+	.ascii	"read_page_count = 0x%x\012\000"
+.LC15:
+	.ascii	"discard_page_count = 0x%x\012\000"
+.LC16:
+	.ascii	"write_page_count = 0x%x\012\000"
+.LC17:
+	.ascii	"cache_write_count = 0x%x\012\000"
+.LC18:
+	.ascii	"l2p_write_count = 0x%x\012\000"
+.LC19:
+	.ascii	"gc_page_count = 0x%x\012\000"
+.LC20:
+	.ascii	"totle_write = %d MB\012\000"
+.LC21:
+	.ascii	"totle_read = %d MB\012\000"
+.LC22:
+	.ascii	"GSV = 0x%x\012\000"
+.LC23:
+	.ascii	"GDV = 0x%x\012\000"
+.LC24:
+	.ascii	"bad blk num = %d\012\000"
+.LC25:
+	.ascii	"free_superblocks = 0x%x\012\000"
+.LC26:
+	.ascii	"mlc_EC = 0x%x\012\000"
+.LC27:
+	.ascii	"slc_EC = 0x%x\012\000"
+.LC28:
+	.ascii	"avg_EC = 0x%x\012\000"
+.LC29:
+	.ascii	"sys_EC = 0x%x\012\000"
+.LC30:
+	.ascii	"max_EC = 0x%x\012\000"
+.LC31:
+	.ascii	"min_EC = 0x%x\012\000"
+.LC32:
+	.ascii	"PLT = 0x%x\012\000"
+.LC33:
+	.ascii	"POT = 0x%x\012\000"
+.LC34:
+	.ascii	"MaxSector = 0x%x\012\000"
+.LC35:
+	.ascii	"init_sys_blks_pp = 0x%x\012\000"
+.LC36:
+	.ascii	"sys_blks_pp = 0x%x\012\000"
+.LC37:
+	.ascii	"free sysblock = 0x%x\012\000"
+.LC38:
+	.ascii	"data_blks_pp = 0x%x\012\000"
+.LC39:
+	.ascii	"data_op_blks_pp = 0x%x\012\000"
+.LC40:
+	.ascii	"max_data_blks = 0x%x\012\000"
+.LC41:
+	.ascii	"Sys.id = 0x%x\012\000"
+.LC42:
+	.ascii	"Bbt.id = 0x%x\012\000"
+.LC43:
+	.ascii	"ACT.page = 0x%x\012\000"
+.LC44:
+	.ascii	"ACT.plane = 0x%x\012\000"
+.LC45:
+	.ascii	"ACT.id = 0x%x\012\000"
+.LC46:
+	.ascii	"ACT.mode = 0x%x\012\000"
+.LC47:
+	.ascii	"ACT.a_pages = 0x%x\012\000"
+.LC48:
+	.ascii	"ACT VPC = 0x%x\012\000"
+.LC49:
+	.ascii	"BUF.page = 0x%x\012\000"
+.LC50:
+	.ascii	"BUF.plane = 0x%x\012\000"
+.LC51:
+	.ascii	"BUF.id = 0x%x\012\000"
+.LC52:
+	.ascii	"BUF.mode = 0x%x\012\000"
+.LC53:
+	.ascii	"BUF.a_pages = 0x%x\012\000"
+.LC54:
+	.ascii	"BUF VPC = 0x%x\012\000"
+.LC55:
+	.ascii	"TMP.page = 0x%x\012\000"
+.LC56:
+	.ascii	"TMP.plane = 0x%x\012\000"
+.LC57:
+	.ascii	"TMP.id = 0x%x\012\000"
+.LC58:
+	.ascii	"TMP.mode = 0x%x\012\000"
+.LC59:
+	.ascii	"TMP.a_pages = 0x%x\012\000"
+.LC60:
+	.ascii	"GC.page = 0x%x\012\000"
+.LC61:
+	.ascii	"GC.plane = 0x%x\012\000"
+.LC62:
+	.ascii	"GC.id = 0x%x\012\000"
+.LC63:
+	.ascii	"GC.mode = 0x%x\012\000"
+.LC64:
+	.ascii	"GC.a_pages = 0x%x\012\000"
+.LC65:
+	.ascii	"WR_CHK = %x %x %x\012\000"
+.LC66:
+	.ascii	"Read Err Cnt = 0x%x\012\000"
+.LC67:
+	.ascii	"Prog Err Cnt = 0x%x\012\000"
+.LC68:
+	.ascii	"gc_free_blk_th= 0x%x\012\000"
+.LC69:
+	.ascii	"gc_merge_free_blk_th= 0x%x\012\000"
+.LC70:
+	.ascii	"gc_skip_write_count= 0x%x\012\000"
+.LC71:
+	.ascii	"gc_blk_index= 0x%x\012\000"
+.LC72:
+	.ascii	"free min EC= 0x%x\012\000"
+.LC73:
+	.ascii	"free max EC= 0x%x\012\000"
+.LC74:
+	.ascii	"GC__SB VPC = 0x%x\012\000"
+.LC75:
+	.ascii	"%d. [0x%x]=0x%x 0x%x  0x%x\012\000"
+.LC76:
+	.ascii	"free %d. [0x%x] 0x%x  0x%x\012\000"
+	.text
 	.align	2
 	.global	FtlPrintInfo2buf
 	.syntax unified
@@ -1887,519 +2161,518 @@
 	.fpu softvfp
 	.type	FtlPrintInfo2buf, %function
 FtlPrintInfo2buf:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r6, r0
-	ldr	r5, .L292
-	add	r4, r6, #12
-	.pad #20
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #20
-	ldr	r1, .L292+4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r6, .L265
+	mov	r7, r0
+	ldr	r1, .L265+4
+	add	r5, r7, #12
 	bl	strcpy
-	ldr	r3, [r5, #316]
+	ldr	r2, .L265+8
+	mov	r0, r5
 	mov	r1, #64
-	ldr	r2, .L292+8
-	mov	r0, r4
+	ldr	r3, [r6, #316]
+	add	r8, r6, #352
 	bl	snprintf
-	add	r4, r4, r0
-	ldr	r1, .L292+12
-	mov	r0, r4
-	add	r4, r4, #10
+	add	r5, r5, r0
+	ldr	r1, .L265+12
+	mov	r0, r5
+	add	r5, r5, #10
 	bl	strcpy
-	ldr	r3, [r5, #2552]
+	ldr	r3, [r6, #2552]
+	mov	r0, r5
+	ldr	r2, .L265+16
 	mov	r1, #64
-	ldr	r2, .L292+16
-	mov	r0, r4
 	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #2548]
-	ldr	r2, .L292+20
+	add	r5, r5, r0
+	ldr	r3, [r6, #2548]
+	mov	r0, r5
+	ldr	r2, .L265+20
 	mov	r1, #64
-	mov	r0, r4
-	add	r7, r5, #352
 	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #2556]
-	ldr	r2, .L292+24
+	add	r5, r5, r0
+	ldr	r3, [r6, #2556]
+	mov	r0, r5
+	ldr	r2, .L265+24
 	mov	r1, #64
-	mov	r0, r4
-	ldr	r8, .L292+28
 	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #2560]
-	ldr	r2, .L292+32
+	add	r5, r5, r0
+	ldr	r3, [r6, #2560]
+	mov	r0, r5
+	ldr	r2, .L265+28
 	mov	r1, #64
-	mov	r0, r4
 	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #2564]
-	ldr	r2, .L292+36
+	add	r5, r5, r0
+	ldr	r3, [r6, #2564]
+	mov	r0, r5
+	ldr	r2, .L265+32
 	mov	r1, #64
-	mov	r0, r4
 	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #2568]
-	ldr	r2, .L292+40
+	add	r5, r5, r0
+	ldr	r3, [r6, #2568]
+	mov	r0, r5
+	ldr	r2, .L265+36
 	mov	r1, #64
-	mov	r0, r4
 	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #2572]
-	ldr	r2, .L292+44
+	add	r5, r5, r0
+	ldr	r3, [r6, #2572]
+	mov	r0, r5
+	ldr	r2, .L265+40
 	mov	r1, #64
-	mov	r0, r4
 	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #2576]
-	ldr	r2, .L292+48
+	add	r5, r5, r0
+	ldr	r3, [r6, #2576]
+	mov	r0, r5
+	ldr	r2, .L265+44
 	mov	r1, #64
-	mov	r0, r4
 	bl	snprintf
-	ldr	r3, [r5, #2580]
-	add	r4, r4, r0
-	ldr	r2, .L292+52
+	ldr	r3, [r6, #2580]
+	add	r5, r5, r0
+	ldr	r2, .L265+48
+	mov	r0, r5
 	mov	r1, #64
-	mov	r0, r4
 	lsr	r3, r3, #11
 	bl	snprintf
-	ldr	r3, [r5, #2584]
-	add	r4, r4, r0
-	ldr	r2, .L292+56
+	ldr	r3, [r6, #2584]
+	add	r5, r5, r0
+	ldr	r2, .L265+52
+	mov	r0, r5
 	mov	r1, #64
-	mov	r0, r4
 	lsr	r3, r3, #11
 	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #2588]
-	ldr	r2, .L292+60
-	mov	r1, #64
+	add	r4, r5, r0
+	ldr	r3, [r6, #2588]
 	mov	r0, r4
+	ldr	r2, .L265+56
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldr	r3, [r5, #2592]
-	ldr	r2, .L292+64
-	mov	r1, #64
+	ldr	r3, [r6, #2592]
 	mov	r0, r4
+	ldr	r2, .L265+60
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldrh	r3, [r7, #6]
-	ldr	r2, .L292+68
-	mov	r1, #64
+	ldrh	r3, [r8, #6]
 	mov	r0, r4
+	ldr	r2, .L265+64
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldrh	r3, [r5, #224]
-	ldr	r2, .L292+72
-	mov	r1, #64
+	ldrh	r3, [r6, #224]
 	mov	r0, r4
+	ldr	r2, .L265+68
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldr	r3, [r5, #2596]
-	ldr	r2, .L292+76
-	mov	r1, #64
+	ldr	r3, [r6, #2596]
 	mov	r0, r4
+	ldr	r2, .L265+72
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldr	r3, [r5, #2600]
-	ldr	r2, .L292+80
-	mov	r1, #64
+	ldr	r3, [r6, #2600]
 	mov	r0, r4
+	ldr	r2, .L265+76
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldr	r3, [r5, #2604]
-	ldr	r2, .L292+84
-	mov	r1, #64
+	ldr	r3, [r6, #2604]
 	mov	r0, r4
+	ldr	r2, .L265+80
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldr	r3, [r5, #2608]
-	ldr	r2, .L292+88
-	mov	r1, #64
+	ldr	r3, [r6, #2608]
 	mov	r0, r4
+	ldr	r2, .L265+84
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldr	r3, [r5, #2612]
-	ldr	r2, .L292+92
-	mov	r1, #64
+	ldr	r3, [r6, #2612]
 	mov	r0, r4
+	ldr	r2, .L265+88
+	mov	r1, #64
+	ldr	r5, .L265+92
 	bl	snprintf
 	add	r4, r4, r0
-	ldr	r3, [r5, #2616]
-	ldr	r2, .L292+96
-	mov	r1, #64
+	ldr	r3, [r6, #2616]
+	ldr	r2, .L265+96
 	mov	r0, r4
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldrh	r3, [r8, #30]
-	ldr	r2, .L292+100
-	mov	r1, #64
+	ldrh	r3, [r5, #30]
 	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrh	r3, [r8, #28]
-	ldr	r2, .L292+104
+	ldr	r2, .L265+100
 	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #340]
-	ldr	r2, .L292+108
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #332]
-	ldr	r2, .L292+112
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #228]
-	ldr	r2, .L292+116
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r3, r5, #412
-	add	r4, r4, r0
-	ldrh	r3, [r3, #6]
-	mov	r1, #64
-	ldr	r2, .L292+120
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrh	r3, [r5, #240]
-	ldr	r2, .L292+124
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	movw	r3, #2620
-	add	r4, r4, r0
-	ldrh	r3, [r5, r3]
-	mov	r1, #64
-	ldr	r2, .L292+128
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #244]
-	ldr	r2, .L292+132
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r3, r5, #2624
-	add	r4, r4, r0
-	ldrh	r3, [r3]
-	mov	r1, #64
-	ldr	r2, .L292+136
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrh	r3, [r7]
-	ldr	r2, .L292+140
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrh	r3, [r5, #26]
-	ldr	r2, .L292+144
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrb	r3, [r5, #30]	@ zero_extendqisi2
-	ldr	r2, .L292+148
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrh	r3, [r5, #24]
-	ldr	r2, .L292+152
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrb	r3, [r5, #32]	@ zero_extendqisi2
-	ldr	r2, .L292+156
-	mov	r1, #64
-	mov	r0, r4
 	bl	snprintf
 	add	r4, r4, r0
 	ldrh	r3, [r5, #28]
-	ldr	r2, .L292+160
-	mov	r1, #64
 	mov	r0, r4
-	bl	snprintf
-	ldrh	r3, [r5, #24]
-	add	r4, r4, r0
-	ldr	r2, [r5, #72]
+	ldr	r2, .L265+104
 	mov	r1, #64
-	mov	r0, r4
-	lsl	r3, r3, #1
-	ldrh	r3, [r2, r3]
-	ldr	r2, .L292+164
 	bl	snprintf
 	add	r4, r4, r0
-	ldrh	r3, [r5, #78]
-	ldr	r2, .L292+168
-	mov	r1, #64
+	ldr	r3, [r6, #340]
 	mov	r0, r4
+	ldr	r2, .L265+108
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldrb	r3, [r5, #82]	@ zero_extendqisi2
-	ldr	r2, .L292+172
-	mov	r1, #64
+	ldr	r3, [r6, #332]
 	mov	r0, r4
+	ldr	r2, .L265+112
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldrh	r3, [r5, #76]
-	ldr	r2, .L292+176
-	mov	r1, #64
+	ldr	r3, [r6, #228]
 	mov	r0, r4
+	ldr	r2, .L265+116
+	mov	r1, #64
+	bl	snprintf
+	add	r3, r6, #412
+	add	r4, r4, r0
+	ldr	r2, .L265+120
+	mov	r0, r4
+	mov	r1, #64
+	ldrh	r3, [r3, #6]
 	bl	snprintf
 	add	r4, r4, r0
-	ldrb	r3, [r5, #84]	@ zero_extendqisi2
-	ldr	r2, .L292+180
-	mov	r1, #64
+	ldrh	r3, [r6, #240]
 	mov	r0, r4
+	ldr	r2, .L265+124
+	mov	r1, #64
+	bl	snprintf
+	movw	r3, #2620
+	add	r4, r4, r0
+	ldr	r2, .L265+128
+	ldrh	r3, [r6, r3]
+	mov	r0, r4
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldrh	r3, [r5, #80]
-	ldr	r2, .L292+184
-	mov	r1, #64
+	ldr	r3, [r6, #244]
 	mov	r0, r4
-	bl	snprintf
-	ldrh	r3, [r5, #76]
-	add	r4, r4, r0
-	ldr	r2, [r5, #72]
+	ldr	r2, .L265+132
 	mov	r1, #64
-	mov	r0, r4
-	lsl	r3, r3, #1
-	ldrh	r3, [r2, r3]
-	ldr	r2, .L292+188
 	bl	snprintf
+	add	r3, r6, #2624
 	add	r4, r4, r0
-	ldrh	r3, [r5, #126]
-	ldr	r2, .L292+192
+	ldr	r2, .L265+136
+	mov	r0, r4
 	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrb	r3, [r5, #130]	@ zero_extendqisi2
-	ldr	r2, .L292+196
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrh	r3, [r5, #124]
-	ldr	r2, .L292+200
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrb	r3, [r5, #132]	@ zero_extendqisi2
-	ldr	r2, .L292+204
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrh	r3, [r5, #128]
-	ldr	r2, .L292+208
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrh	r3, [r5, #174]
-	ldr	r2, .L292+212
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrb	r3, [r5, #178]	@ zero_extendqisi2
-	ldr	r2, .L292+216
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrh	r3, [r5, #172]
-	ldr	r2, .L292+220
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrb	r3, [r5, #180]	@ zero_extendqisi2
-	ldr	r2, .L292+224
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldrh	r3, [r5, #176]
-	ldr	r2, .L292+228
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	ldr	r3, [r5, #2716]
-	add	r4, r4, r0
-	ldr	r2, .L292+232
-	mov	r1, #64
-	mov	r0, r4
-	str	r3, [sp, #4]
-	ldr	r3, [r5, #2724]
-	str	r3, [sp]
-	ldr	r3, [r5, #2720]
-	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #2712]
-	ldr	r2, .L292+236
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r4, r4, r0
-	ldr	r3, [r5, #2736]
-	ldr	r2, .L292+240
-	mov	r1, #64
-	mov	r0, r4
-	bl	snprintf
-	add	r3, r5, #3152
-	add	r4, r4, r0
 	ldrh	r3, [r3]
-	mov	r1, #64
-	ldr	r2, .L292+244
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r8]
 	mov	r0, r4
+	ldr	r2, .L265+140
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #26]
+	mov	r0, r4
+	ldr	r2, .L265+144
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrb	r3, [r6, #30]	@ zero_extendqisi2
+	mov	r0, r4
+	ldr	r2, .L265+148
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #24]
+	mov	r0, r4
+	ldr	r2, .L265+152
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrb	r3, [r6, #32]	@ zero_extendqisi2
+	mov	r0, r4
+	ldr	r2, .L265+156
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #28]
+	mov	r0, r4
+	ldr	r2, .L265+160
+	mov	r1, #64
+	bl	snprintf
+	ldrh	r3, [r6, #24]
+	ldr	r2, [r6, #72]
+	add	r4, r4, r0
+	mov	r0, r4
+	mov	r1, #64
+	lsl	r3, r3, #1
+	ldrh	r3, [r2, r3]
+	ldr	r2, .L265+164
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #78]
+	mov	r0, r4
+	ldr	r2, .L265+168
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrb	r3, [r6, #82]	@ zero_extendqisi2
+	mov	r0, r4
+	ldr	r2, .L265+172
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #76]
+	mov	r0, r4
+	ldr	r2, .L265+176
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrb	r3, [r6, #84]	@ zero_extendqisi2
+	mov	r0, r4
+	ldr	r2, .L265+180
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #80]
+	mov	r0, r4
+	ldr	r2, .L265+184
+	mov	r1, #64
+	bl	snprintf
+	ldrh	r3, [r6, #76]
+	ldr	r2, [r6, #72]
+	add	r4, r4, r0
+	mov	r0, r4
+	mov	r1, #64
+	lsl	r3, r3, #1
+	ldrh	r3, [r2, r3]
+	ldr	r2, .L265+188
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #126]
+	mov	r0, r4
+	ldr	r2, .L265+192
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrb	r3, [r6, #130]	@ zero_extendqisi2
+	mov	r0, r4
+	ldr	r2, .L265+196
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #124]
+	mov	r0, r4
+	ldr	r2, .L265+200
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrb	r3, [r6, #132]	@ zero_extendqisi2
+	mov	r0, r4
+	ldr	r2, .L265+204
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #128]
+	mov	r0, r4
+	ldr	r2, .L265+208
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #174]
+	mov	r0, r4
+	ldr	r2, .L265+212
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrb	r3, [r6, #178]	@ zero_extendqisi2
+	mov	r0, r4
+	ldr	r2, .L265+216
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #172]
+	mov	r0, r4
+	ldr	r2, .L265+220
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrb	r3, [r6, #180]	@ zero_extendqisi2
+	mov	r0, r4
+	ldr	r2, .L265+224
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldrh	r3, [r6, #176]
+	mov	r0, r4
+	ldr	r2, .L265+228
+	mov	r1, #64
+	bl	snprintf
+	ldr	r3, [r6, #2716]
+	add	r4, r4, r0
+	str	r3, [sp, #4]
+	ldr	r3, [r6, #2724]
+	mov	r0, r4
+	ldr	r2, .L265+232
+	mov	r1, #64
+	str	r3, [sp]
+	ldr	r3, [r6, #2720]
+	bl	snprintf
+	add	r4, r4, r0
+	ldr	r3, [r6, #2712]
+	mov	r0, r4
+	ldr	r2, .L265+236
+	mov	r1, #64
+	bl	snprintf
+	add	r4, r4, r0
+	ldr	r3, [r6, #2736]
+	mov	r0, r4
+	ldr	r2, .L265+240
+	mov	r1, #64
+	bl	snprintf
+	add	r3, r6, #3152
+	add	r4, r4, r0
+	ldr	r2, .L265+244
+	mov	r0, r4
+	mov	r1, #64
+	ldrh	r3, [r3]
 	bl	snprintf
 	movw	r3, #3154
 	add	r4, r4, r0
-	ldrh	r3, [r5, r3]
-	mov	r1, #64
-	ldr	r2, .L292+248
+	ldr	r2, .L265+248
+	ldrh	r3, [r6, r3]
 	mov	r0, r4
+	mov	r1, #64
 	bl	snprintf
 	add	r4, r4, r0
-	ldr	r3, [r5, #3156]
-	ldr	r2, .L292+252
-	mov	r1, #64
+	ldr	r3, [r6, #3156]
 	mov	r0, r4
+	ldr	r2, .L265+252
+	mov	r1, #64
 	bl	snprintf
 	movw	r3, #3160
 	add	r4, r4, r0
-	ldrh	r3, [r5, r3]
+	ldr	r2, .L265+256
+	ldrh	r3, [r6, r3]
 	mov	r1, #64
-	ldr	r2, .L292+256
 	mov	r0, r4
 	bl	snprintf
 	add	r4, r4, r0
 	bl	GetFreeBlockMinEraseCount
-	ldr	r2, .L292+260
+	ldr	r2, .L265+260
 	mov	r3, r0
 	mov	r1, #64
 	mov	r0, r4
 	bl	snprintf
 	add	r4, r4, r0
-	ldrh	r0, [r5, #224]
+	ldrh	r0, [r6, #224]
 	bl	GetFreeBlockMaxEraseCount
-	ldr	r2, .L292+264
+	ldr	r2, .L265+264
 	mov	r3, r0
 	mov	r1, #64
 	mov	r0, r4
 	bl	snprintf
-	ldr	r3, .L292+268
+	ldr	r3, .L265+268
 	add	r4, r4, r0
 	ldr	r3, [r3]
 	cmp	r3, #1
-	beq	.L280
-.L285:
-	sub	r0, r4, r6
-	add	sp, sp, #20
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L280:
-	ldrh	r3, [r5, #172]
+	beq	.L254
+.L259:
+	sub	r0, r4, r7
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L254:
+	ldrh	r3, [r6, #172]
 	movw	r2, #65535
 	cmp	r3, r2
-	beq	.L282
-	ldr	r2, [r5, #72]
+	beq	.L256
+	ldr	r2, [r6, #72]
 	lsl	r3, r3, #1
 	mov	r0, r4
 	mov	r1, #64
 	ldrh	r3, [r2, r3]
-	ldr	r2, .L292+272
+	ldr	r2, .L265+272
 	bl	snprintf
 	add	r4, r4, r0
-.L282:
+.L256:
 	mov	r0, #0
-	ldr	r9, .L292+276
+	ldr	r10, .L265+276
 	bl	List_get_gc_head_node
 	uxth	r0, r0
-	mov	r7, #0
-	movw	fp, #65535
-	mov	r10, #6
-.L284:
-	cmp	r0, fp
-	beq	.L283
-	ldr	r3, [r5, #2536]
+	mov	r5, #0
+	movw	r9, #65535
+.L258:
+	ldr	r3, [r6, #2516]
+	cmp	r0, r9
+	beq	.L257
+	mov	r8, #6
 	lsl	r2, r0, #1
-	mul	r8, r10, r0
-	mov	r1, #64
-	ldrh	r3, [r3, r2]
-	str	r3, [sp, #12]
-	ldr	r3, [r5, #2516]
+	ldr	r1, [r6, #2536]
+	mul	r8, r8, r0
+	ldrh	r1, [r1, r2]
 	add	r3, r3, r8
+	str	r1, [sp, #12]
+	mov	r1, #64
 	ldrh	r3, [r3, #4]
 	str	r3, [sp, #8]
-	ldr	r3, [r5, #72]
+	ldr	r3, [r6, #72]
 	ldrh	r3, [r3, r2]
-	mov	r2, r9
+	mov	r2, r10
 	stm	sp, {r0, r3}
-	mov	r3, r7
+	mov	r3, r5
 	mov	r0, r4
-	add	r7, r7, #1
+	add	r5, r5, #1
 	bl	snprintf
-	ldr	r3, [r5, #2516]
-	cmp	r7, #16
+	ldr	r3, [r6, #2516]
 	add	r4, r4, r0
+	cmp	r5, #16
 	ldrh	r0, [r3, r8]
-	bne	.L284
-.L283:
-	ldr	r2, [r5, #2516]
-	mov	r7, #0
-	ldr	r3, [r5, #2532]
+	bne	.L258
+.L257:
+	ldr	r3, [r6, #2516]
+	mov	r8, #0
+	ldr	r1, [r6, #2532]
 	movw	r9, #65535
-	ldr	fp, .L292+280
-	mov	r10, #6
-	sub	r3, r3, r2
-	ldr	r2, .L292+284
-	asr	r3, r3, #1
-	mul	r3, r2, r3
-	uxth	r3, r3
-.L286:
-	cmp	r3, r9
-	beq	.L285
-	ldr	r1, [r5, #2536]
-	lsl	r2, r3, #1
-	mul	r8, r10, r3
+	ldr	r10, .L265+280
+	sub	r1, r1, r3
+	ldr	r3, .L265+284
+	asr	r1, r1, #1
+	mul	r1, r3, r1
+	uxth	r1, r1
+.L260:
+	cmp	r1, r9
+	beq	.L259
+	ldr	r2, [r6, #2536]
+	lsl	r3, r1, #1
+	mov	r5, #6
 	mov	r0, r4
-	ldrh	r2, [r1, r2]
+	ldrh	r3, [r2, r3]
+	mul	r5, r5, r1
+	str	r3, [sp, #8]
+	mov	r2, r10
+	ldr	r3, [r6, #2516]
+	add	r3, r3, r5
+	ldrh	r3, [r3, #4]
+	stm	sp, {r1, r3}
+	mov	r3, r8
 	mov	r1, #64
-	str	r2, [sp, #8]
-	ldr	r2, [r5, #2516]
-	add	r2, r2, r8
-	ldrh	r2, [r2, #4]
-	str	r3, [sp]
-	mov	r3, r7
-	add	r7, r7, #1
-	str	r2, [sp, #4]
-	mov	r2, fp
+	add	r8, r8, #1
 	bl	snprintf
-	cmp	r7, #4
+	cmp	r8, #4
 	add	r4, r4, r0
-	beq	.L285
-	ldr	r3, [r5, #2516]
-	ldrh	r3, [r3, r8]
-	b	.L286
-.L293:
+	beq	.L259
+	ldr	r3, [r6, #2516]
+	ldrh	r1, [r3, r5]
+	b	.L260
+.L266:
 	.align	2
-.L292:
+.L265:
 	.word	.LANCHOR0
 	.word	.LC9
 	.word	.LC10
@@ -2407,7 +2680,6 @@
 	.word	.LC12
 	.word	.LC13
 	.word	.LC14
-	.word	.LANCHOR0+2468
 	.word	.LC15
 	.word	.LC16
 	.word	.LC17
@@ -2424,6 +2696,7 @@
 	.word	.LC28
 	.word	.LC29
 	.word	.LC30
+	.word	.LANCHOR0+2468
 	.word	.LC31
 	.word	.LC32
 	.word	.LC33
@@ -2472,8 +2745,11 @@
 	.word	.LC75
 	.word	.LC76
 	.word	-1431655765
-	.fnend
 	.size	FtlPrintInfo2buf, .-FtlPrintInfo2buf
+	.section	.rodata.str1.1
+.LC77:
+	.ascii	"%s\012\000"
+	.text
 	.align	2
 	.global	rknand_proc_ftlread
 	.syntax unified
@@ -2481,35 +2757,41 @@
 	.fpu softvfp
 	.type	rknand_proc_ftlread, %function
 rknand_proc_ftlread:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	cmp	r0, #2048
-	blt	.L296
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	mov	r5, r1
-	ldr	r3, .L301
+	cmp	r0, #2048
+	blt	.L269
+	ldr	r3, .L270
+	add	r4, r5, #30
+	ldr	r2, .L270+4
 	mov	r1, #64
 	mov	r0, r5
-	ldr	r2, .L301+4
 	bl	snprintf
-	add	r4, r5, r0
 	mov	r0, r4
 	bl	FtlPrintInfo2buf
 	add	r0, r4, r0
 	sub	r0, r0, r5
-	pop	{r4, r5, r6, pc}
-.L296:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L269:
 	mov	r0, #0
-	bx	lr
-.L302:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L271:
 	.align	2
-.L301:
+.L270:
 	.word	.LC0
 	.word	.LC77
-	.fnend
 	.size	rknand_proc_ftlread, .-rknand_proc_ftlread
+	.section	.rodata.str1.1
+.LC78:
+	.ascii	"swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x"
+	.ascii	"\012\000"
+	.text
 	.align	2
 	.global	GetSwlReplaceBlock
 	.syntax unified
@@ -2517,175 +2799,176 @@
 	.fpu softvfp
 	.type	GetSwlReplaceBlock, %function
 GetSwlReplaceBlock:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 8
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #28
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #28
-	ldr	r4, .L328
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L296
 	ldr	r2, [r4, #2604]
 	ldr	r3, [r4, #2616]
 	cmp	r2, r3
-	bcs	.L304
+	bcs	.L273
 	ldr	r2, [r4, #2536]
 	mov	r3, #0
 	ldrh	r1, [r4, #240]
-	str	r3, [r4, #2596]
 	sub	r2, r2, #2
-.L305:
-	cmp	r3, r1
-	bcc	.L306
+	str	r3, [r4, #2596]
+.L274:
 	ldr	r5, [r4, #2596]
+	cmp	r1, r3
+	bhi	.L275
 	mov	r0, r5
 	bl	__aeabi_uidiv
-	ldr	r3, .L328+4
+	ldr	r3, .L296+4
 	str	r0, [r4, #2604]
 	ldr	r0, [r4, #2600]
 	ldrh	r1, [r3]
 	sub	r0, r5, r0
 	bl	__aeabi_uidiv
 	str	r0, [r4, #2596]
-.L307:
+.L276:
 	ldr	r6, [r4, #2616]
-	ldr	r7, [r4, #2604]
+	ldr	r9, [r4, #2604]
 	add	r3, r6, #256
-	cmp	r3, r7
-	bls	.L312
+	cmp	r3, r9
+	bls	.L281
 	ldr	r2, [r4, #2612]
 	add	r3, r6, #768
 	cmp	r3, r2
-	bls	.L312
-.L314:
+	bls	.L281
+.L283:
 	movw	r5, #65535
-.L313:
+.L282:
 	mov	r0, r5
-	add	sp, sp, #28
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L306:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L275:
 	ldrh	r0, [r2, #2]!
 	add	r3, r3, #1
-	ldr	ip, [r4, #2596]
-	add	r0, r0, ip
-	str	r0, [r4, #2596]
-	b	.L305
-.L304:
+	add	r5, r0, r5
+	str	r5, [r4, #2596]
+	b	.L274
+.L273:
 	ldr	r3, [r4, #2612]
 	cmp	r2, r3
 	addhi	r3, r3, #1
 	strhi	r3, [r4, #2612]
 	movhi	r3, #0
-	bls	.L307
-.L309:
+	bls	.L276
+.L278:
 	ldrh	r2, [r4, #240]
-	cmp	r3, r2
-	bcs	.L307
-	ldr	r0, [r4, #2536]
+	cmp	r2, r3
+	bls	.L276
 	lsl	r1, r3, #1
+	ldr	r0, [r4, #2536]
 	add	r3, r3, #1
 	ldrh	r2, [r0, r1]
 	add	r2, r2, #1
 	strh	r2, [r0, r1]	@ movhi
-	b	.L309
-.L312:
+	b	.L278
+.L281:
 	ldrh	r0, [r4, #224]
 	add	r0, r0, r0, lsl #1
-	ubfx	r0, r0, #2, #16
+	lsr	r0, r0, #2
 	bl	GetFreeBlockMaxEraseCount
 	add	r3, r6, #64
-	mov	r9, r0
+	mov	r7, r0
 	cmp	r0, r3
-	bcc	.L314
+	bcc	.L283
 	ldr	r3, [r4, #2520]
 	cmp	r3, #0
-	beq	.L314
+	beq	.L283
 	ldrh	r2, [r4, #240]
-	movw	r1, #65535
-	ldr	lr, [r4, #2516]
-	mov	r0, #0
-	ldr	r8, [r4, #2536]
-	mov	fp, #6
-	ldr	r10, .L328+8
-	str	r2, [sp, #20]
-	mov	r2, r1
-.L315:
-	ldrh	ip, [r3]
+	movw	r8, #65535
+	ldr	ip, [r4, #2516]
+	mov	r1, #0
+	ldr	r10, [r4, #2536]
+	mov	lr, #6
+	str	r2, [fp, #-48]
+	mov	r2, r8
+.L284:
+	ldrh	r0, [r3]
 	movw	r5, #65535
-	cmp	ip, r5
-	bne	.L318
+	cmp	r0, r5
+	bne	.L287
 	mov	r5, r2
-.L317:
+.L286:
 	movw	r3, #65535
 	cmp	r5, r3
-	beq	.L314
-	lsl	fp, r5, #1
-	ldrh	r10, [r8, fp]
-	cmp	r6, r10
-	bcs	.L319
+	beq	.L283
+	lsl	r1, r5, #1
+	ldrh	r2, [r10, r1]
+	cmp	r6, r2
+	bcs	.L288
+	str	r2, [fp, #-52]
+	str	r1, [fp, #-48]
 	bl	GetFreeBlockMinEraseCount
+	ldr	r1, [fp, #-48]
 	cmp	r6, r0
-	strcc	r1, [r4, #2616]
-.L319:
-	cmp	r7, r10
-	bls	.L314
-	add	r3, r10, #128
-	cmp	r9, r3
-	ble	.L314
-	add	r3, r10, #256
+	ldr	r2, [fp, #-52]
+	strcc	r8, [r4, #2616]
+.L288:
+	cmp	r9, r2
+	bls	.L283
+	add	r3, r2, #128
 	cmp	r7, r3
-	bhi	.L320
+	ble	.L283
+	add	r0, r2, #256
 	ldr	r3, [r4, #2612]
-	add	r10, r10, #768
-	cmp	r10, r3
-	bcs	.L314
-.L320:
-	str	r9, [sp, #8]
-	mov	r2, r7
-	ldrh	r3, [r8, fp]
+	cmp	r9, r0
+	bhi	.L289
+	add	r2, r2, #768
+	cmp	r2, r3
+	bcs	.L283
+.L289:
+	str	r7, [sp, #8]
+	ldr	r0, .L296+8
+	ldrh	r2, [r10, r1]
+	str	r2, [sp, #4]
+	ldr	r2, [r4, #72]
+	ldrh	r2, [r2, r1]
 	mov	r1, r5
-	ldr	r0, .L328+12
-	str	r3, [sp, #4]
-	ldr	r3, [r4, #72]
-	ldrh	r3, [r3, fp]
-	str	r3, [sp]
-	ldr	r3, [r4, #2612]
+	str	r2, [sp]
+	mov	r2, r9
 	bl	sftl_printk
 	mov	r3, #1
 	str	r3, [r4, #3164]
-	b	.L313
-.L318:
-	add	r0, r0, #1
-	ldr	r5, [sp, #20]
-	uxth	r0, r0
-	cmp	r0, r5
-	bhi	.L314
+	b	.L282
+.L287:
+	add	r1, r1, #1
+	ldr	r5, [fp, #-48]
+	uxth	r1, r1
+	cmp	r5, r1
+	bcc	.L283
 	ldrh	r5, [r3, #4]
 	cmp	r5, #0
-	beq	.L316
-	sub	r3, r3, lr
+	beq	.L285
+	sub	r3, r3, ip
+	ldr	r5, .L296+12
 	asr	r3, r3, #1
-	mul	r3, r10, r3
+	mul	r3, r5, r3
 	uxth	r5, r3
 	lsl	r3, r5, #1
-	ldrh	r3, [r8, r3]
+	ldrh	r3, [r10, r3]
 	cmp	r6, r3
-	bcs	.L317
-	cmp	r1, r3
-	movhi	r1, r3
-	movhi	r2, r5
-.L316:
-	mla	r3, fp, ip, lr
-	b	.L315
-.L329:
+	bcs	.L286
+	cmp	r3, r8
+	movcc	r8, r3
+	movcc	r2, r5
+.L285:
+	mla	r3, lr, r0, ip
+	b	.L284
+.L297:
 	.align	2
-.L328:
+.L296:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+292
-	.word	-1431655765
 	.word	.LC78
-	.fnend
+	.word	-1431655765
 	.size	GetSwlReplaceBlock, .-GetSwlReplaceBlock
 	.align	2
 	.global	free_data_superblock
@@ -2694,30 +2977,29 @@
 	.fpu softvfp
 	.type	free_data_superblock, %function
 free_data_superblock:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	movw	r2, #65535
 	cmp	r0, r2
-	beq	.L333
-	ldr	r2, .L336
+	beq	.L299
+	ldr	r2, .L300
 	lsl	r3, r0, #1
-	push	{r4, lr}
-	.save {r4, lr}
 	mov	r1, #0
 	ldr	r2, [r2, #72]
 	strh	r1, [r2, r3]	@ movhi
 	bl	INSERT_FREE_LIST
+.L299:
 	mov	r0, #0
-	pop	{r4, pc}
-.L333:
-	mov	r0, #0
-	bx	lr
-.L337:
+	ldmfd	sp, {fp, sp, pc}
+.L301:
 	.align	2
-.L336:
+.L300:
 	.word	.LANCHOR0
-	.fnend
 	.size	free_data_superblock, .-free_data_superblock
 	.align	2
 	.global	get_new_active_ppa
@@ -2726,113 +3008,113 @@
 	.fpu softvfp
 	.type	get_new_active_ppa, %function
 get_new_active_ppa:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	movw	r3, #65535
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	ldrh	r2, [r0]
+	movw	r3, #65535
 	mov	r4, r0
 	cmp	r2, r3
-	bne	.L339
+	bne	.L303
+	ldr	r1, .L317
 	movw	r2, #2792
-	ldr	r1, .L354
-	ldr	r0, .L354+4
+	ldr	r0, .L317+4
 	bl	sftl_printk
-.L339:
-	ldr	r6, .L354+8
+.L303:
+	ldr	r6, .L317+8
 	movw	r3, #302
 	ldrh	r2, [r4, #2]
 	ldrh	r3, [r6, r3]
 	cmp	r2, r3
-	bne	.L340
+	bne	.L304
+	ldr	r1, .L317
 	movw	r2, #2793
-	ldr	r1, .L354
-	ldr	r0, .L354+4
+	ldr	r0, .L317+4
 	bl	sftl_printk
-.L340:
+.L304:
 	ldrh	r3, [r4, #4]
 	cmp	r3, #0
-	bne	.L341
+	bne	.L305
+	ldr	r1, .L317
 	movw	r2, #2794
-	ldr	r1, .L354
-	ldr	r0, .L354+4
+	ldr	r0, .L317+4
 	bl	sftl_printk
-.L341:
-	ldrb	r2, [r4, #6]	@ zero_extendqisi2
-	mov	r3, #0
-	ldrh	r1, [r6, #232]
+.L305:
+	ldrb	r3, [r4, #6]	@ zero_extendqisi2
+	mov	r1, #0
+	strb	r1, [r4, #10]
 	movw	ip, #65535
-	strb	r3, [r4, #10]
-	add	r2, r4, r2, lsl #1
-	ldrh	r0, [r2, #16]
-	mov	r2, r3
-.L342:
-	cmp	r0, ip
-	beq	.L344
-	movw	r3, #302
-	ldrh	r5, [r4, #2]
-	ldrh	ip, [r6, r3]
+	ldrh	r0, [r6, #232]
+	add	r3, r4, r3, lsl #1
+	ldrh	r5, [r3, #16]
+.L306:
+	ldrh	r2, [r4, #2]
 	cmp	r5, ip
-	movwcs	r5, #65535
-	bcs	.L338
-	ldrh	r2, [r4, #4]
-	orr	r5, r5, r0, lsl #10
-	ldrb	r3, [r4, #6]	@ zero_extendqisi2
+	beq	.L308
+	movw	r3, #302
+	ldrh	ip, [r6, r3]
+	cmp	ip, r2
+	movwls	r5, #65535
+	bls	.L302
+	ldrh	r3, [r4, #4]
+	orr	r5, r2, r5, lsl #10
+	ldrb	r2, [r4, #6]	@ zero_extendqisi2
 	movw	lr, #65535
-	sub	r2, r2, #1
-	uxth	r2, r2
-	strh	r2, [r4, #4]	@ movhi
-.L347:
-	add	r3, r3, #1
-	uxtb	r3, r3
-	cmp	r1, r3
-	ldrheq	r0, [r4, #2]
-	moveq	r3, #0
-	addeq	r0, r0, #1
-	strheq	r0, [r4, #2]	@ movhi
-	add	r0, r4, r3, lsl #1
-	ldrh	r0, [r0, #16]
-	cmp	r0, lr
-	beq	.L347
-	strb	r3, [r4, #6]
-	cmp	r2, #0
-	ldrh	r3, [r4, #2]
-	sub	r3, r3, ip
-	clz	r3, r3
-	lsr	r3, r3, #5
-	moveq	r3, #0
+	sub	r3, r3, #1
+	uxth	r3, r3
+	strh	r3, [r4, #4]	@ movhi
+.L311:
+	add	r1, r2, #1
+	uxtb	r2, r1
+	cmp	r0, r2
+	mov	r1, r2
+	moveq	r2, #0
+	ldrheq	r1, [r4, #2]
+	addeq	r1, r1, #1
+	strheq	r1, [r4, #2]	@ movhi
+	add	r1, r4, r2, lsl #1
+	ldrh	r1, [r1, #16]
+	cmp	r1, lr
+	beq	.L311
+	strb	r2, [r4, #6]
 	cmp	r3, #0
-	beq	.L338
+	ldrh	r2, [r4, #2]
+	sub	r2, r2, ip
+	clz	r2, r2
+	lsr	r2, r2, #5
+	moveq	r2, #0
+	cmp	r2, #0
+	beq	.L302
+	ldr	r1, .L317
 	movw	r2, #2817
-	ldr	r1, .L354
-	ldr	r0, .L354+4
+	ldr	r0, .L317+4
 	bl	sftl_printk
-.L338:
+.L302:
 	mov	r0, r5
-	pop	{r4, r5, r6, pc}
-.L344:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L308:
 	ldrb	r3, [r4, #6]	@ zero_extendqisi2
 	add	r3, r3, #1
 	uxtb	r3, r3
-	cmp	r3, r1
 	strb	r3, [r4, #6]
-	ldrheq	r3, [r4, #2]
-	strbeq	r2, [r4, #6]
-	addeq	r3, r3, #1
-	strheq	r3, [r4, #2]	@ movhi
+	cmp	r3, r0
+	strbeq	r1, [r4, #6]
+	addeq	r2, r2, #1
+	strheq	r2, [r4, #2]	@ movhi
 	ldrb	r3, [r4, #6]	@ zero_extendqisi2
 	add	r3, r4, r3, lsl #1
-	ldrh	r0, [r3, #16]
-	b	.L342
-.L355:
+	ldrh	r5, [r3, #16]
+	b	.L306
+.L318:
 	.align	2
-.L354:
+.L317:
 	.word	.LANCHOR1+111
 	.word	.LC8
 	.word	.LANCHOR0
-	.fnend
 	.size	get_new_active_ppa, .-get_new_active_ppa
 	.align	2
 	.global	FtlGcBufInit
@@ -2841,103 +3123,101 @@
 	.fpu softvfp
 	.type	FtlGcBufInit, %function
 FtlGcBufInit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, lr}
-	.save {r4, r5, r6, r7, r8, r9, lr}
-	mov	lr, #12
-	ldr	r5, .L362
-	mov	r4, #1
-	mov	r6, #20
-	mov	r3, #0
-	ldr	r2, .L362+4
-	str	r3, [r2, #3168]
-.L357:
-	ldrh	r1, [r2, #232]
-	uxth	r0, r3
-	add	ip, r3, #1
-	cmp	r0, r1
-	bcc	.L358
-	ldr	r4, .L362
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L325
+	mov	r1, #0
+	ldr	r6, .L325+4
+	mov	r4, #12
+	mov	r5, #1
+	mov	r7, #20
+	str	r1, [r3, #3168]
+.L320:
+	ldrh	r2, [r3, #232]
+	uxth	r0, r1
+	cmp	r2, r0
+	bhi	.L321
+	ldr	r4, .L325+4
 	mov	ip, #12
 	mov	lr, #0
-.L359:
-	ldr	r3, [r2, #3188]
-	cmp	r1, r3
-	bcc	.L360
-	pop	{r4, r5, r6, r7, r8, r9, pc}
-.L358:
-	uxth	r3, r3
-	ldr	r7, [r2, #3172]
-	mul	r0, lr, r3
-	add	r1, r7, r0
-	str	r4, [r1, #8]
-	ldrh	r1, [r5]
-	mul	r1, r3, r1
-	add	r8, r1, #3
-	cmp	r1, #0
-	movlt	r1, r8
-	ldr	r8, [r2, #3176]
+.L322:
+	ldr	r1, [r3, #3188]
+	cmp	r2, r1
+	ldmfdcs	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+	ldrh	r0, [r4]
+	mul	r5, ip, r2
+	ldr	r6, [r3, #3172]
+	add	r1, r6, r5
+	mul	r0, r2, r0
+	cmp	r0, #0
+	str	lr, [r1, #8]
+	add	r1, r0, #3
+	movge	r1, r0
+	ldr	r0, [r3, #3176]
 	bic	r1, r1, #3
-	add	r1, r8, r1
-	str	r1, [r7, r0]
-	ldr	r1, .L362+8
-	ldr	r8, [r2, #3172]
-	ldrh	r1, [r1]
-	add	r7, r8, r0
-	mul	r1, r3, r1
-	add	r9, r1, #3
-	cmp	r1, #0
-	movlt	r1, r9
-	ldr	r9, [r2, #3180]
+	add	r1, r0, r1
+	str	r1, [r6, r5]
+	ldr	r1, [r3, #3172]
+	add	r5, r1, r5
+	ldr	r1, .L325+8
+	ldrh	r0, [r1]
+	mul	r0, r2, r0
+	add	r2, r2, #1
+	cmp	r0, #0
+	add	r1, r0, #3
+	movge	r1, r0
+	ldr	r0, [r3, #3180]
 	bic	r1, r1, #3
-	add	r1, r9, r1
-	str	r1, [r7, #4]
-	ldr	r1, [r2, #3184]
-	mla	r3, r6, r3, r1
-	ldr	r1, [r8, r0]
-	str	r1, [r3, #8]
-	ldr	r1, [r7, #4]
-	str	r1, [r3, #12]
-	mov	r3, ip
-	b	.L357
-.L360:
-	mul	r5, ip, r1
-	ldr	r6, [r2, #3172]
-	add	r3, r6, r5
-	str	lr, [r3, #8]
-	ldrh	r3, [r4]
-	mul	r3, r1, r3
-	add	r0, r3, #3
-	cmp	r3, #0
-	movlt	r3, r0
-	ldr	r0, [r2, #3176]
-	bic	r3, r3, #3
-	add	r3, r0, r3
-	str	r3, [r6, r5]
-	ldr	r3, .L362+8
-	ldr	r0, [r2, #3172]
-	ldrh	r3, [r3]
-	add	r0, r0, r5
-	mul	r3, r1, r3
+	uxth	r2, r2
+	add	r1, r0, r1
+	str	r1, [r5, #4]
+	b	.L322
+.L321:
+	uxth	ip, r1
+	ldrh	lr, [r6]
+	ldr	r8, [r3, #3172]
 	add	r1, r1, #1
-	uxth	r1, r1
-	add	r5, r3, #3
-	cmp	r3, #0
-	movlt	r3, r5
-	ldr	r5, [r2, #3180]
-	bic	r3, r3, #3
-	add	r3, r5, r3
-	str	r3, [r0, #4]
-	b	.L359
-.L363:
+	mul	r0, r4, ip
+	mul	lr, ip, lr
+	add	r2, r8, r0
+	cmp	lr, #0
+	str	r5, [r2, #8]
+	add	r2, lr, #3
+	movge	r2, lr
+	ldr	lr, [r3, #3176]
+	bic	r2, r2, #3
+	add	r2, lr, r2
+	str	r2, [r8, r0]
+	ldr	r2, .L325+8
+	ldr	r8, [r3, #3172]
+	add	lr, r8, r0
+	ldrh	r9, [r2]
+	mul	r9, ip, r9
+	cmp	r9, #0
+	add	r2, r9, #3
+	movge	r2, r9
+	ldr	r9, [r3, #3180]
+	bic	r2, r2, #3
+	add	r2, r9, r2
+	str	r2, [lr, #4]
+	ldr	r2, [r3, #3184]
+	mla	ip, r7, ip, r2
+	ldr	r2, [r8, r0]
+	str	r2, [ip, #8]
+	ldr	r2, [lr, #4]
+	str	r2, [ip, #12]
+	b	.L320
+.L326:
 	.align	2
-.L362:
-	.word	.LANCHOR0+310
+.L325:
 	.word	.LANCHOR0
+	.word	.LANCHOR0+310
 	.word	.LANCHOR0+312
-	.fnend
 	.size	FtlGcBufInit, .-FtlGcBufInit
 	.align	2
 	.global	FtlGcBufFree
@@ -2946,44 +3226,45 @@
 	.fpu softvfp
 	.type	FtlGcBufFree, %function
 FtlGcBufFree:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L372
-	push	{r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L334
 	mov	lr, #0
+	mov	r8, lr
 	mov	r5, #20
 	mov	r7, #12
-	mov	r8, lr
 	ldr	r6, [r3, #3188]
 	ldr	r4, [r3, #3172]
-.L365:
+.L328:
 	uxth	r3, lr
 	cmp	r1, r3
-	popls	{r4, r5, r6, r7, r8, r9, r10, pc}
+	ldmfdls	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
 	mla	ip, r5, r3, r0
 	mov	r2, #0
-.L366:
+.L329:
 	uxth	r3, r2
 	cmp	r6, r3
-	bls	.L367
+	bls	.L330
 	mul	r3, r7, r3
 	add	r2, r2, #1
-	ldr	r10, [r4, r3]
 	add	r9, r4, r3
+	ldr	r10, [r4, r3]
 	ldr	r3, [ip, #8]
 	cmp	r10, r3
-	bne	.L366
+	bne	.L329
 	str	r8, [r9, #8]
-.L367:
+.L330:
 	add	lr, lr, #1
-	b	.L365
-.L373:
+	b	.L328
+.L335:
 	.align	2
-.L372:
+.L334:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlGcBufFree, .-FtlGcBufFree
 	.align	2
 	.global	FtlGcBufAlloc
@@ -2992,48 +3273,47 @@
 	.fpu softvfp
 	.type	FtlGcBufAlloc, %function
 FtlGcBufAlloc:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L382
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L344
 	mov	ip, #0
-	push	{r4, r5, r6, r7, r8, r9, lr}
-	.save {r4, r5, r6, r7, r8, r9, lr}
 	mov	r6, #12
 	mov	r7, #1
 	mov	r8, #20
-	ldr	r4, [r3, #3188]
-	ldr	r5, [r3, #3172]
-.L375:
+	ldr	r5, [r3, #3188]
+	ldr	r4, [r3, #3172]
+.L337:
 	uxth	r2, ip
 	cmp	r1, r2
-	bhi	.L379
-	pop	{r4, r5, r6, r7, r8, r9, pc}
-.L379:
+	ldmfdls	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
 	mov	lr, #0
-.L376:
+.L338:
 	uxth	r3, lr
-	cmp	r4, r3
-	bls	.L377
-	mla	r3, r6, r3, r5
+	cmp	r5, r3
+	bls	.L339
+	mla	r3, r6, r3, r4
 	add	lr, lr, #1
 	ldr	r9, [r3, #8]
 	cmp	r9, #0
-	bne	.L376
+	bne	.L338
 	mla	r2, r8, r2, r0
 	ldr	lr, [r3]
 	str	r7, [r3, #8]
 	str	lr, [r2, #8]
 	ldr	r3, [r3, #4]
 	str	r3, [r2, #12]
-.L377:
+.L339:
 	add	ip, ip, #1
-	b	.L375
-.L383:
+	b	.L337
+.L345:
 	.align	2
-.L382:
+.L344:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlGcBufAlloc, .-FtlGcBufAlloc
 	.align	2
 	.global	IsBlkInGcList
@@ -3042,31 +3322,33 @@
 	.fpu softvfp
 	.type	IsBlkInGcList, %function
 IsBlkInGcList:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r2, .L389
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r2, .L351
 	movw	r1, #3196
 	ldr	r3, [r2, #3192]
 	ldrh	r2, [r2, r1]
 	add	r2, r3, r2, lsl #1
-.L385:
+.L347:
 	cmp	r3, r2
-	bne	.L387
+	bne	.L349
 	mov	r0, #0
-	bx	lr
-.L387:
+	ldmfd	sp, {fp, sp, pc}
+.L349:
 	ldrh	r1, [r3], #2
 	cmp	r1, r0
-	bne	.L385
+	bne	.L347
 	mov	r0, #1
-	bx	lr
-.L390:
+	ldmfd	sp, {fp, sp, pc}
+.L352:
 	.align	2
-.L389:
+.L351:
 	.word	.LANCHOR0
-	.fnend
 	.size	IsBlkInGcList, .-IsBlkInGcList
 	.align	2
 	.global	FtlGcUpdatePage
@@ -3075,58 +3357,63 @@
 	.fpu softvfp
 	.type	FtlGcUpdatePage, %function
 FtlGcUpdatePage:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	mov	r4, r0
 	ubfx	r0, r0, #10, #16
 	mov	r5, r1
 	mov	r6, r2
 	bl	P2V_block_in_plane
-	ldr	r3, .L396
+	ldr	r3, .L357
 	movw	r2, #3196
 	mov	ip, #0
-	ldrh	lr, [r3, r2]
+	ldrh	r7, [r3, r2]
 	ldr	r2, [r3, #3192]
 	sub	r1, r2, #2
-.L392:
-	uxth	r7, ip
+.L354:
+	uxth	lr, ip
 	cmp	r7, lr
-	bcc	.L394
-	bne	.L393
-	lsl	ip, r7, #1
+	bhi	.L356
+	bne	.L355
+	lsl	ip, ip, #1
+	movw	r1, #3196
 	strh	r0, [r2, ip]	@ movhi
-	movw	r2, #3196
-	ldrh	r0, [r3, r2]
-	add	r0, r0, #1
-	strh	r0, [r3, r2]	@ movhi
-	b	.L393
-.L394:
-	ldrh	r7, [r1, #2]!
-	add	ip, ip, #1
-	cmp	r7, r0
-	bne	.L392
-.L393:
-	movw	ip, #3204
-	mov	r0, #12
-	ldrh	r2, [r3, ip]
-	mul	r0, r0, r2
-	ldr	r2, [r3, #3200]
-	add	r1, r2, r0
-	stmib	r1, {r5, r6}
-	str	r4, [r2, r0]
-	ldrh	r2, [r3, ip]
+	ldrh	r2, [r3, r1]
 	add	r2, r2, #1
-	strh	r2, [r3, ip]	@ movhi
-	pop	{r4, r5, r6, r7, r8, pc}
-.L397:
+	strh	r2, [r3, r1]	@ movhi
+	b	.L355
+.L356:
+	ldrh	lr, [r1, #2]!
+	add	ip, ip, #1
+	cmp	lr, r0
+	bne	.L354
+.L355:
+	movw	r2, #3204
+	mov	r1, #12
+	ldrh	ip, [r3, r2]
+	mul	ip, r1, ip
+	ldr	r1, [r3, #3200]
+	add	r0, r1, ip
+	stmib	r0, {r5, r6}
+	str	r4, [r1, ip]
+	ldrh	r1, [r3, r2]
+	add	r1, r1, #1
+	strh	r1, [r3, r2]	@ movhi
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L358:
 	.align	2
-.L396:
+.L357:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlGcUpdatePage, .-FtlGcUpdatePage
+	.section	.rodata.str1.1
+.LC79:
+	.ascii	"FtlGcRefreshBlock  0x%x\012\000"
+	.text
 	.align	2
 	.global	FtlGcRefreshBlock
 	.syntax unified
@@ -3134,38 +3421,43 @@
 	.fpu softvfp
 	.type	FtlGcRefreshBlock, %function
 FtlGcRefreshBlock:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, lr}
-	.save {r4, lr}
-	mov	r1, r0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	mov	r4, r0
-	ldr	r0, .L402
+	mov	r1, r0
+	ldr	r0, .L362
 	bl	sftl_printk
-	ldr	r3, .L402+4
+	ldr	r3, .L362+4
 	ldrh	r0, [r3, #222]
-	cmp	r4, r0
-	beq	.L399
+	cmp	r0, r4
+	beq	.L360
 	ldrh	r1, [r3, #220]
-	cmp	r4, r1
-	beq	.L399
+	cmp	r1, r4
+	beq	.L360
 	movw	r2, #65535
 	cmp	r0, r2
 	strheq	r4, [r3, #222]	@ movhi
-	beq	.L399
+	beq	.L360
 	cmp	r1, r2
 	strheq	r4, [r3, #220]	@ movhi
-.L399:
+.L360:
 	mov	r0, #0
-	pop	{r4, pc}
-.L403:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L363:
 	.align	2
-.L402:
+.L362:
 	.word	.LC79
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlGcRefreshBlock, .-FtlGcRefreshBlock
+	.section	.rodata.str1.1
+.LC80:
+	.ascii	"FtlGcMarkBadPhyBlk %d 0x%x\012\000"
+	.text
 	.align	2
 	.global	FtlGcMarkBadPhyBlk
 	.syntax unified
@@ -3173,53 +3465,54 @@
 	.fpu softvfp
 	.type	FtlGcMarkBadPhyBlk, %function
 FtlGcMarkBadPhyBlk:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
-	mov	r5, r0
-	ldr	r4, .L409
-	movw	r6, #3206
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r5, .L368
+	movw	r7, #3206
+	mov	r4, r0
 	bl	P2V_block_in_plane
-	mov	r2, r5
-	mov	r7, r0
-	ldrh	r1, [r4, r6]
-	ldr	r0, .L409+4
+	mov	r2, r4
+	mov	r6, r0
+	ldr	r0, .L368+4
+	ldrh	r1, [r5, r7]
 	bl	sftl_printk
-	mov	r0, r7
+	mov	r0, r6
 	bl	FtlGcRefreshBlock
-	ldrh	r3, [r4, r6]
+	ldr	r1, .L368+8
+	ldrh	r3, [r5, r7]
 	mov	r2, #0
-	ldr	r0, .L409+8
-.L405:
-	uxth	r1, r2
-	cmp	r3, r1
-	bhi	.L407
+	mov	r0, r1
+.L365:
+	uxth	ip, r2
+	cmp	r3, ip
+	bhi	.L367
 	cmp	r3, #15
-	movwls	r2, #3206
-	addls	r1, r3, #1
-	strhls	r1, [r4, r2]	@ movhi
-	lslls	r3, r3, #1
-	ldrls	r2, .L409+8
-	strhls	r5, [r2, r3]	@ movhi
-	b	.L406
-.L407:
+	bhi	.L366
+	add	r1, r3, #1
+	lsl	r3, r3, #1
+	movw	r2, #3206
+	strh	r4, [r0, r3]	@ movhi
+	strh	r1, [r5, r2]	@ movhi
+	b	.L366
+.L367:
+	ldrh	ip, [r1], #2
 	add	r2, r2, #1
-	add	r1, r0, r2, lsl #1
-	ldrh	r1, [r1, #-2]
-	cmp	r1, r5
-	bne	.L405
-.L406:
+	cmp	ip, r4
+	bne	.L365
+.L366:
 	mov	r0, #0
-	pop	{r4, r5, r6, r7, r8, pc}
-.L410:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L369:
 	.align	2
-.L409:
+.L368:
 	.word	.LANCHOR0
 	.word	.LC80
 	.word	.LANCHOR0+3208
-	.fnend
 	.size	FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
 	.align	2
 	.global	FtlGcReFreshBadBlk
@@ -3228,28 +3521,30 @@
 	.fpu softvfp
 	.type	FtlGcReFreshBadBlk, %function
 FtlGcReFreshBadBlk:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L376
 	movw	r3, #3206
-	ldr	r4, .L418
 	ldrh	r2, [r4, r3]
 	cmp	r2, #0
-	beq	.L412
+	beq	.L371
 	ldrh	r1, [r4, #222]
 	movw	r3, #65535
 	cmp	r1, r3
-	bne	.L412
+	bne	.L371
 	movw	r3, #3242
 	movw	r5, #3242
 	ldrh	r1, [r4, r3]
 	cmp	r1, r2
 	movcs	r2, #0
 	strhcs	r2, [r4, r3]	@ movhi
+	ldr	r2, .L376+4
 	ldrh	r3, [r4, r5]
-	ldr	r2, .L418+4
 	lsl	r3, r3, #1
 	ldrh	r0, [r2, r3]
 	bl	P2V_block_in_plane
@@ -3257,15 +3552,14 @@
 	ldrh	r3, [r4, r5]
 	add	r3, r3, #1
 	strh	r3, [r4, r5]	@ movhi
-.L412:
+.L371:
 	mov	r0, #0
-	pop	{r4, r5, r6, pc}
-.L419:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L377:
 	.align	2
-.L418:
+.L376:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+3208
-	.fnend
 	.size	FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
 	.align	2
 	.global	ftl_malloc
@@ -3274,17 +3568,16 @@
 	.fpu softvfp
 	.type	ftl_malloc, %function
 ftl_malloc:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r1, .L421
-	b	__kmalloc
-.L422:
-	.align	2
-.L421:
-	.word	6291649
-	.fnend
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	movw	r1, #3265
+	bl	__kmalloc
+	ldmfd	sp, {fp, sp, pc}
 	.size	ftl_malloc, .-ftl_malloc
 	.align	2
 	.global	ftl_free
@@ -3293,13 +3586,28 @@
 	.fpu softvfp
 	.type	ftl_free, %function
 ftl_free:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	b	kfree
-	.fnend
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	bl	kfree
+	ldmfd	sp, {fp, sp, pc}
 	.size	ftl_free, .-ftl_free
+	.section	.rodata.str1.1
+.LC81:
+	.ascii	"%s %p + 0x%x:\000"
+.LC82:
+	.ascii	"0x%08x,\000"
+.LC83:
+	.ascii	"0x%04x,\000"
+.LC84:
+	.ascii	"0x%02x,\000"
+.LC85:
+	.ascii	"\012\000"
+	.text
 	.align	2
 	.global	rknand_print_hex
 	.syntax unified
@@ -3307,66 +3615,78 @@
 	.fpu softvfp
 	.type	rknand_print_hex, %function
 rknand_print_hex:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r6, #0
-	ldr	fp, .L434
-	mov	r10, r0
-	mov	r7, r1
+	@ args = 0, pretend = 0, frame = 8
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r10, .L389
+	mov	r7, #0
+	mov	r9, r0
+	mov	r5, r1
 	mov	r8, r2
-	mov	r9, r3
-	mov	r5, r6
-	mov	r4, r6
-.L425:
-	cmp	r4, r9
-	bcc	.L431
-	ldr	r0, .L434+4
-	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	b	sftl_printk
-.L431:
-	cmp	r5, #0
-	bne	.L426
-	mov	r3, r6
-	mov	r2, r7
-	mov	r1, r10
-	ldr	r0, .L434+8
+	mov	r6, r7
+	mov	r4, r7
+	str	r3, [fp, #-48]
+.L381:
+	ldr	r3, [fp, #-48]
+	cmp	r3, r4
+	bhi	.L387
+	ldr	r0, .L389+4
 	bl	sftl_printk
-.L426:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L387:
+	cmp	r6, #0
+	bne	.L382
+	ldr	r0, .L389+8
+	mov	r3, r7
+	mov	r2, r5
+	mov	r1, r9
+	bl	sftl_printk
+.L382:
 	cmp	r8, #4
-	ldreq	r1, [r7, r4, lsl #2]
-	ldreq	r0, .L434+12
-	beq	.L433
+	ldreq	r1, [r5, r4, lsl #2]
+	ldreq	r0, .L389+12
+	beq	.L388
 	cmp	r8, #2
 	lsleq	r3, r4, #1
-	ldrbne	r1, [r7, r4]	@ zero_extendqisi2
-	ldrne	r0, .L434+16
-	moveq	r0, fp
-	ldrheq	r1, [r7, r3]
-.L433:
-	add	r5, r5, #1
+	movne	r0, r10
+	ldreq	r0, .L389+16
+	ldrheq	r1, [r5, r3]
+	ldrbne	r1, [r5, r4]	@ zero_extendqisi2
+.L388:
+	add	r6, r6, #1
 	bl	sftl_printk
-	cmp	r5, #15
-	bls	.L430
-	mov	r5, #0
-	ldr	r0, .L434+4
+	cmp	r6, #15
+	bls	.L386
+	mov	r6, #0
+	ldr	r0, .L389+4
 	bl	sftl_printk
-.L430:
+.L386:
 	add	r4, r4, #1
-	add	r6, r6, r8
-	b	.L425
-.L435:
+	add	r7, r7, r8
+	b	.L381
+.L390:
 	.align	2
-.L434:
-	.word	.LC83
+.L389:
+	.word	.LC84
 	.word	.LC85
 	.word	.LC81
 	.word	.LC82
-	.word	.LC84
-	.fnend
+	.word	.LC83
 	.size	rknand_print_hex, .-rknand_print_hex
+	.section	.rodata.str1.1
+.LC86:
+	.ascii	"%s: addr: %x is in id block!!!!!!!!!!\012\000"
+.LC87:
+	.ascii	"not free: w: d:\000"
+.LC88:
+	.ascii	"not free: w: s:\000"
+	.text
 	.align	2
 	.global	FlashEraseBlocks
 	.syntax unified
@@ -3374,111 +3694,111 @@
 	.fpu softvfp
 	.type	FlashEraseBlocks, %function
 FlashEraseBlocks:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 24
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r8, r2
-	ldr	r5, .L454
-	.pad #28
-	sub	sp, sp, #28
-	mov	r4, r0
-	mov	fp, r0
-	ldr	r2, .L454+4
-	mov	r7, #0
-	ldrh	r9, [r5, #12]
-	mvn	r10, #0
-	ldr	r3, [r2]
-	str	r2, [sp, #4]
-	str	r3, [sp, #20]
-	lsl	r3, r9, #3
-	str	r3, [sp]
-.L437:
-	cmp	r7, r8
-	beq	.L441
-	add	r2, sp, #12
-	add	r1, sp, #16
-	mov	r0, fp
+	@ args = 0, pretend = 0, frame = 32
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #36
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	ldr	r10, .L407
+	bic	r9, r3, #8128
+	mov	r5, r0
+	bic	r9, r9, #63
+	mov	r7, r2
+	mov	r4, #0
+	ldr	r3, [r9, #24]
+	str	r3, [fp, #-48]
+	ldrh	r3, [r10, #12]
+	str	r3, [fp, #-64]
+	lsl	r3, r3, #3
+	str	r3, [fp, #-68]
+	add	r3, r2, r2, lsl #2
+	str	r3, [fp, #-72]
+.L392:
+	ldr	r3, [fp, #-72]
+	cmp	r4, r3
+	beq	.L395
+	sub	r2, fp, #56
+	sub	r1, fp, #52
+	add	r0, r5, r4, lsl #2
+	mov	r6, r5
 	bl	l2p_addr_tran
-	ldr	r6, [sp, #12]
-	cmp	r6, #0
-	bne	.L438
-	ldr	r2, [sp, #16]
-	ldr	r3, [sp]
+	ldr	r8, [fp, #-56]
+	cmp	r8, #0
+	bne	.L393
+	ldr	r2, [fp, #-52]
+	ldr	r3, [fp, #-68]
 	cmp	r3, r2
-	bls	.L438
-	ldr	r5, .L454+8
-	ldr	r7, .L454+12
-	ldr	r9, .L454+16
-	b	.L452
-.L440:
+	bls	.L393
+	ldr	r5, .L407+4
+	ldr	r4, .L407+8
+.L394:
 	mvn	r3, #0
-	ldr	r2, [sp, #16]
-	str	r3, [r4, #-20]
+	ldr	r2, [fp, #-52]
+	str	r3, [r6]
 	mov	r1, r5
-	mov	r0, r7
-	add	r6, r6, #1
+	mov	r0, r4
+	add	r8, r8, #1
 	bl	sftl_printk
+	ldr	r1, [r6, #8]
+	ldr	r0, .L407+12
 	mov	r3, #16
 	mov	r2, #4
-	ldr	r1, [r4, #-12]
-	mov	r0, r9
+	add	r6, r6, #20
 	bl	rknand_print_hex
 	mov	r3, #4
-	ldr	r1, [r4, #-8]
+	ldr	r1, [r6, #-8]
 	mov	r2, r3
-	ldr	r0, .L454+20
+	ldr	r0, .L407+16
 	bl	rknand_print_hex
-.L452:
-	cmp	r6, r8
-	add	r4, r4, #20
-	bne	.L440
+	cmp	r7, r8
+	bne	.L394
 	bl	dump_stack
-.L441:
-	ldr	r3, [sp, #4]
-	mov	r0, #0
-	ldr	r2, [sp, #20]
-	ldr	r3, [r3]
+.L395:
+	ldr	r2, [fp, #-48]
+	ldr	r3, [r9, #24]
 	cmp	r2, r3
-	beq	.L448
+	beq	.L402
 	bl	__stack_chk_fail
-.L438:
-	ldr	r2, [r5, #3248]
-	uxtb	r0, r6
-	ldr	r1, [sp, #16]
-	blx	r2
-	subs	r2, r0, #0
-	movne	r2, r10
-	str	r2, [fp]
-	ldrh	r2, [r5, #14]
-	cmp	r2, #4
-	bne	.L445
-	ldr	r1, [sp, #16]
-	ldr	r2, [r5, #3248]
-	ldrb	r0, [sp, #12]	@ zero_extendqisi2
-	add	r1, r9, r1
+.L393:
+	ldr	r2, [r10, #3248]
+	uxtb	r0, r8
+	ldr	r1, [fp, #-52]
 	blx	r2
 	cmp	r0, #0
-	strne	r10, [fp]
-.L445:
-	add	r7, r7, #1
-	add	fp, fp, #20
-	b	.L437
-.L448:
-	add	sp, sp, #28
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L455:
+	streq	r0, [r5, r4, lsl #2]
+	mvnne	r2, #0
+	strne	r2, [r5, r4, lsl #2]
+	ldrh	r2, [r10, #14]
+	cmp	r2, #4
+	bne	.L399
+	ldr	r1, [fp, #-52]
+	ldr	r3, [fp, #-64]
+	ldr	r2, [r10, #3248]
+	ldrb	r0, [fp, #-56]	@ zero_extendqisi2
+	add	r1, r3, r1
+	blx	r2
+	cmp	r0, #0
+	mvnne	r2, #0
+	strne	r2, [r5, r4, lsl #2]
+.L399:
+	add	r4, r4, #5
+	b	.L392
+.L402:
+	mov	r0, #0
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L408:
 	.align	2
-.L454:
+.L407:
 	.word	.LANCHOR0
-	.word	__stack_chk_guard
 	.word	.LANCHOR1+130
 	.word	.LC86
 	.word	.LC87
 	.word	.LC88
-	.fnend
 	.size	FlashEraseBlocks, .-FlashEraseBlocks
 	.align	2
 	.global	FtlFreeSysBlkQueueIn
@@ -3487,41 +3807,43 @@
 	.fpu softvfp
 	.type	FtlFreeSysBlkQueueIn, %function
 FtlFreeSysBlkQueueIn:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	sub	r3, r0, #1
 	movw	r2, #65533
+	mov	r6, r0
 	uxth	r3, r3
 	cmp	r3, r2
-	bxhi	lr
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
-	ldr	r6, .L469
-	add	r4, r6, #412
+	ldmfdhi	sp, {r4, r5, r6, r7, fp, sp, pc}
+	ldr	r7, .L418
+	add	r4, r7, #412
 	ldrh	r3, [r4, #6]
 	cmp	r3, #1024
-	popeq	{r4, r5, r6, r7, r8, pc}
+	ldmfdeq	sp, {r4, r5, r6, r7, fp, sp, pc}
 	cmp	r1, #0
-	mov	r5, r0
-	beq	.L458
+	beq	.L411
 	bl	P2V_block_in_plane
-	mov	r7, r0
-	ldr	r0, [r6, #3268]
-	lsl	r3, r5, #10
+	mov	r5, r0
+	ldr	r0, [r7, #3268]
+	lsl	r3, r6, #10
 	mov	r2, #1
 	mov	r1, r2
 	str	r3, [r0, #4]
 	bl	FlashEraseBlocks
-	ldr	r2, [r6, #2536]
-	lsl	r0, r7, #1
-	ldrh	r3, [r2, r0]
+	lsl	r3, r5, #1
+	ldr	r1, [r7, #2536]
+	ldrh	r2, [r1, r3]
+	add	r2, r2, #1
+	strh	r2, [r1, r3]	@ movhi
+	ldr	r3, [r7, #2608]
 	add	r3, r3, #1
-	strh	r3, [r2, r0]	@ movhi
-	ldr	r3, [r6, #2608]
-	add	r3, r3, #1
-	str	r3, [r6, #2608]
-.L458:
+	str	r3, [r7, #2608]
+.L411:
 	ldrh	r3, [r4, #6]
 	add	r3, r3, #1
 	strh	r3, [r4, #6]	@ movhi
@@ -3529,15 +3851,19 @@
 	add	r2, r4, r3, lsl #1
 	add	r3, r3, #1
 	ubfx	r3, r3, #0, #10
-	strh	r5, [r2, #8]	@ movhi
 	strh	r3, [r4, #4]	@ movhi
-	pop	{r4, r5, r6, r7, r8, pc}
-.L470:
+	strh	r6, [r2, #8]	@ movhi
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L419:
 	.align	2
-.L469:
+.L418:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
+	.section	.rodata.str1.1
+.LC89:
+	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d, error\012"
+	.ascii	"\000"
+	.text
 	.align	2
 	.global	FtlFreeSysBlkQueueOut
 	.syntax unified
@@ -3545,17 +3871,19 @@
 	.fpu softvfp
 	.type	FtlFreeSysBlkQueueOut, %function
 FtlFreeSysBlkQueueOut:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	ldr	r6, .L477
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r6, .L425
 	add	r4, r6, #412
 	ldrh	r2, [r4, #6]
 	cmp	r2, #0
 	movweq	r5, #65535
-	beq	.L472
+	beq	.L421
 	ldrh	r3, [r4, #2]
 	sub	r2, r2, #1
 	ldr	r0, [r6, #3268]
@@ -3564,37 +3892,40 @@
 	add	r1, r4, r3, lsl #1
 	add	r3, r3, #1
 	ubfx	r3, r3, #0, #10
+	strh	r3, [r4, #2]	@ movhi
 	ldrh	r5, [r1, #8]
 	mov	r1, r2
-	strh	r3, [r4, #2]	@ movhi
 	lsl	r3, r5, #10
 	str	r3, [r0, #4]
 	bl	FlashEraseBlocks
 	ldr	r3, [r6, #2608]
+	movw	r2, #65533
 	add	r3, r3, #1
 	str	r3, [r6, #2608]
-.L472:
 	sub	r3, r5, #1
-	movw	r2, #65533
 	uxth	r3, r3
 	cmp	r3, r2
-	bls	.L473
+	bls	.L422
+.L421:
 	ldrh	r2, [r4, #6]
 	mov	r1, r5
-	ldr	r0, .L477+4
+	ldr	r0, .L425+4
 	bl	sftl_printk
-.L474:
-	b	.L474
-.L473:
+.L423:
+	b	.L423
+.L422:
 	mov	r0, r5
-	pop	{r4, r5, r6, pc}
-.L478:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L426:
 	.align	2
-.L477:
+.L425:
 	.word	.LANCHOR0
 	.word	.LC89
-	.fnend
 	.size	FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
+	.section	.rodata.str1.1
+.LC90:
+	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d\012\000"
+	.text
 	.align	2
 	.global	ftl_map_blk_alloc_new_blk
 	.syntax unified
@@ -3602,67 +3933,68 @@
 	.fpu softvfp
 	.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
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
-	mov	r3, #0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	ldrh	r1, [r0, #10]
 	mov	r4, r0
 	ldr	r2, [r0, #12]
-.L480:
+	mov	r3, #0
+.L428:
 	uxth	r5, r3
-	cmp	r5, r1
-	bcs	.L483
+	cmp	r1, r5
+	bls	.L433
 	mov	r7, r2
 	add	r3, r3, #1
-	ldrh	r6, [r7]
 	add	r2, r2, #2
+	ldrh	r6, [r7]
 	cmp	r6, #0
-	bne	.L480
+	bne	.L428
 	bl	FtlFreeSysBlkQueueOut
 	sub	r3, r0, #1
 	movw	r2, #65533
-	uxth	r3, r3
 	mov	r1, r0
+	uxth	r3, r3
 	strh	r0, [r7]	@ movhi
 	cmp	r3, r2
-	bls	.L481
-	ldr	r3, .L488
-	ldr	r0, .L488+4
+	bls	.L429
+	ldr	r3, .L435
+	ldr	r0, .L435+4
 	ldrh	r2, [r3, #6]
 	bl	sftl_printk
-.L482:
-	b	.L482
-.L481:
+.L430:
+	b	.L430
+.L429:
 	ldr	r3, [r4, #28]
 	strh	r6, [r4, #2]	@ movhi
-	strh	r5, [r4]	@ movhi
 	add	r3, r3, #1
 	str	r3, [r4, #28]
 	ldrh	r3, [r4, #8]
+	strh	r5, [r4]	@ movhi
 	add	r3, r3, #1
 	strh	r3, [r4, #8]	@ movhi
-.L483:
 	ldrh	r3, [r4, #10]
 	cmp	r3, r5
-	bhi	.L485
+	bhi	.L431
+.L433:
+	ldr	r1, .L435+8
 	movw	r2, #578
-	ldr	r1, .L488+8
-	ldr	r0, .L488+12
+	ldr	r0, .L435+12
 	bl	sftl_printk
-.L485:
+.L431:
 	mov	r0, #0
-	pop	{r4, r5, r6, r7, r8, pc}
-.L489:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L436:
 	.align	2
-.L488:
+.L435:
 	.word	.LANCHOR0+412
 	.word	.LC90
 	.word	.LANCHOR1+147
 	.word	.LC8
-	.fnend
 	.size	ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
 	.align	2
 	.global	ftl_memset
@@ -3671,13 +4003,20 @@
 	.fpu softvfp
 	.type	ftl_memset, %function
 ftl_memset:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	b	memset
-	.fnend
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	bl	memset
+	ldmfd	sp, {fp, sp, pc}
 	.size	ftl_memset, .-ftl_memset
+	.section	.rodata.str1.1
+.LC91:
+	.ascii	"%s error allocating memory. return -1\012\000"
+	.text
 	.align	2
 	.global	FtlMemInit
 	.syntax unified
@@ -3685,39 +4024,42 @@
 	.fpu softvfp
 	.type	FtlMemInit, %function
 FtlMemInit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L537
 	movw	r3, #65535
-	ldr	r4, .L593
-	movw	r6, #306
 	mov	r2, #32
+	movw	r6, #306
 	mov	r5, #0
 	mov	r7, #12
+	mov	r8, #80
+	add	r9, r4, #312
 	str	r3, [r4, #3276]
 	mvn	r3, #0
-	ldrh	r0, [r4, r6]
-	add	r9, r4, #312
 	strh	r3, [r4, #222]	@ movhi
 	strh	r3, [r4, #220]	@ movhi
 	add	r3, r4, #3152
+	ldrh	r0, [r4, r6]
+	str	r5, [r4, #2588]
 	strh	r2, [r3]	@ movhi
-	mov	r2, #128
 	movw	r3, #3154
+	mov	r2, #128
 	lsl	r0, r0, #1
 	strh	r2, [r4, r3]	@ movhi
 	movw	r3, #3160
+	str	r5, [r4, #2592]
 	strh	r5, [r4, r3]	@ movhi
 	movw	r3, #3206
+	str	r5, [r4, #2576]
 	strh	r5, [r4, r3]	@ movhi
 	movw	r3, #3242
-	strh	r5, [r4, r3]	@ movhi
-	str	r5, [r4, #2588]
-	str	r5, [r4, #2592]
-	str	r5, [r4, #2576]
 	str	r5, [r4, #2564]
+	strh	r5, [r4, r3]	@ movhi
 	str	r5, [r4, #2560]
 	str	r5, [r4, #2568]
 	str	r5, [r4, #2572]
@@ -3735,20 +4077,21 @@
 	bl	ftl_malloc
 	str	r0, [r4, #3192]
 	ldrh	r0, [r4, r6]
-	mov	r6, #20
 	mul	r0, r7, r0
 	bl	ftl_malloc
-	ldrh	r3, [r4, #232]
+	ldrh	r6, [r4, #232]
 	str	r0, [r4, #3200]
-	mul	r6, r6, r3
-	lsl	r8, r6, #2
+	mul	r8, r8, r6
 	mov	r0, r8
 	bl	ftl_malloc
+	mov	r3, #20
 	str	r0, [r4, #3288]
+	mul	r6, r3, r6
 	mov	r0, r6
 	bl	ftl_malloc
 	str	r0, [r4, #3292]
 	mov	r0, r8
+	movw	r8, #310
 	bl	ftl_malloc
 	str	r0, [r4, #3296]
 	mov	r0, r6
@@ -3757,7 +4100,6 @@
 	mov	r0, r6
 	bl	ftl_malloc
 	ldrh	r3, [r4, #232]
-	movw	r8, #310
 	ldrh	r6, [r4, r8]
 	str	r0, [r4, #3184]
 	lsl	r3, r3, #1
@@ -3796,10 +4138,10 @@
 	ldrh	r0, [r4, r3]
 	lsl	r0, r0, #2
 	bl	ftl_malloc
-	ldrh	r3, [r9]
-	ldrh	r6, [r4, #232]
+	ldrh	r3, [r4, #232]
+	ldrh	r6, [r9]
 	str	r0, [r4, #3328]
-	mul	r6, r6, r3
+	mul	r6, r3, r6
 	mov	r0, r6
 	bl	ftl_malloc
 	str	r0, [r4, #3332]
@@ -3819,12 +4161,12 @@
 	bl	ftl_malloc
 	str	r0, [r4, #3344]
 	ldrh	r0, [r4, r6]
-	ldr	r3, .L593+4
 	add	r0, r0, #544
 	add	r0, r0, #3
-	lsr	r0, r0, #9
-	strh	r0, [r4, r6]	@ movhi
-	and	r0, r3, r0, lsl #9
+	lsr	r3, r0, #9
+	bic	r0, r0, #508
+	bic	r0, r0, #3
+	strh	r3, [r4, r6]	@ movhi
 	bl	ftl_malloc
 	ldrh	r6, [r4, #242]
 	str	r0, [r4, #3348]
@@ -3866,6 +4208,7 @@
 	mov	r1, r5
 	str	r0, [r4, #3372]
 	movw	r5, #338
+	movw	r6, #3388
 	lsl	r2, r2, #2
 	bl	ftl_memset
 	add	r3, r4, #336
@@ -3881,7 +4224,6 @@
 	mul	r0, r7, r0
 	bl	ftl_malloc
 	ldrh	r3, [r4, r5]
-	movw	r5, #3388
 	str	r0, [r4, #2540]
 	ldrh	r0, [r4, r8]
 	mul	r0, r0, r3
@@ -3897,153 +4239,147 @@
 	ldrh	r3, [r4, #254]
 	add	r0, r0, #31
 	asr	r0, r0, #5
-	strh	r0, [r4, r5]	@ movhi
+	strh	r0, [r4, r6]	@ movhi
 	mul	r0, r0, r3
 	lsl	r0, r0, #2
 	bl	ftl_malloc
-	ldrh	r2, [r4, r5]
-	add	ip, r4, #380
-	ldrh	lr, [r4, #254]
-	mov	r3, #1
+	ldrh	r2, [r4, r6]
+	ldrh	r3, [r4, #254]
+	mov	r5, r0
 	str	r0, [r4, #380]
-	lsl	r2, r2, #2
-	mov	r1, r2
-.L492:
-	cmp	r3, lr
-	bcc	.L493
-	ldr	r2, .L593+8
+	mov	r1, #1
+	lsl	ip, r2, #2
+	add	r2, r0, r2, lsl #2
+	add	r0, r4, #384
+.L439:
+	cmp	r3, r1
+	bhi	.L440
+	cmp	r3, #0
+	ldr	r0, .L537+4
 	mov	r1, #0
-	add	r3, r2, r3, lsl #2
-	add	r2, r2, #56
-	add	r3, r3, #24
-.L494:
-	cmp	r2, r3
-	bne	.L495
+	moveq	r3, #1
+	rsb	r2, r3, #8
+	add	r3, r3, #7
+	lsl	r2, r2, #2
+	add	r0, r0, r3, lsl #2
+	bl	memset
 	ldr	r3, [r4, #3356]
 	cmp	r3, #0
-	bne	.L496
-.L498:
-	ldr	r1, .L593+12
-	ldr	r0, .L593+16
+	bne	.L441
+.L443:
+	ldr	r1, .L537+8
+	ldr	r0, .L537+12
 	bl	sftl_printk
 	mvn	r0, #0
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L493:
-	ldr	r0, [r4, #380]
-	add	r3, r3, #1
-	add	r0, r0, r1
-	add	r1, r1, r2
-	str	r0, [ip, #4]!
-	b	.L492
-.L495:
-	str	r1, [r3, #4]!
-	b	.L494
-.L496:
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L440:
+	str	r2, [r0], #4
+	add	r1, r1, #1
+	add	r2, r2, ip
+	b	.L439
+.L441:
 	ldr	r3, [r4, #3360]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3376]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3380]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #2540]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3384]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #2516]
 	cmp	r3, #0
-	beq	.L498
-	ldr	r3, [r4, #380]
-	cmp	r3, #0
-	beq	.L498
+	beq	.L443
+	cmp	r5, #0
+	beq	.L443
 	ldr	r3, [r4, #72]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3192]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3200]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3288]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3296]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3268]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3184]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3292]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3300]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3304]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3308]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3176]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3312]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3316]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3172]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3332]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3336]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3180]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #2536]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #3344]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r4, #348]
 	cmp	r3, #0
-	beq	.L498
-	ldr	r3, .L593
+	beq	.L443
+	ldr	r3, .L537
 	ldr	r2, [r3, #3364]
 	cmp	r2, #0
-	beq	.L498
+	beq	.L443
 	ldr	r2, [r3, #3368]
 	cmp	r2, #0
-	beq	.L498
+	beq	.L443
 	ldr	r3, [r3, #3372]
 	cmp	r3, #0
-	beq	.L498
+	beq	.L443
 	mov	r0, #0
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L594:
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L538:
 	.align	2
-.L593:
+.L537:
 	.word	.LANCHOR0
-	.word	33553920
 	.word	.LANCHOR0+352
 	.word	.LANCHOR1+173
 	.word	.LC91
-	.fnend
 	.size	FtlMemInit, .-FtlMemInit
 	.align	2
 	.global	FtlBbt2Bitmap
@@ -4052,57 +4388,57 @@
 	.fpu softvfp
 	.type	FtlBbt2Bitmap, %function
 FtlBbt2Bitmap:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r2, .L602
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r2, .L544
 	movw	r3, #3388
-	push	{r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	mov	r4, r0
-	ldr	r7, .L602+4
-	sub	r5, r4, #2
+	ldr	r7, .L544+4
+	sub	r6, r4, #2
+	ldr	r8, .L544+8
 	add	r4, r4, #1020
-	mov	r6, r1
+	mov	r5, r1
 	ldrh	r2, [r2, r3]
 	add	r4, r4, #2
-	ldr	r8, .L602+8
+	mov	r0, r5
 	mov	r1, #0
-	ldr	r9, .L602+12
-	mov	r0, r6
 	lsl	r2, r2, #2
 	bl	ftl_memset
-.L598:
-	ldrh	r3, [r5, #2]
+.L542:
+	ldrh	r3, [r6, #2]!
 	movw	r2, #65535
 	cmp	r3, r2
-	popeq	{r4, r5, r6, r7, r8, r9, r10, pc}
+	ldmfdeq	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
 	ldrh	r2, [r7]
 	cmp	r2, r3
-	bhi	.L597
-	mov	r2, #74
+	bhi	.L541
+	ldr	r0, .L544+12
 	mov	r1, r8
-	mov	r0, r9
+	mov	r2, #74
 	bl	sftl_printk
-.L597:
-	ldrh	r3, [r5, #2]!
+.L541:
+	ldrh	r3, [r6]
 	mov	r0, #1
-	cmp	r4, r5
+	cmp	r4, r6
 	lsr	r1, r3, #5
 	and	r3, r3, #31
-	ldr	r2, [r6, r1, lsl #2]
+	ldr	r2, [r5, r1, lsl #2]
 	orr	r3, r2, r0, lsl r3
-	str	r3, [r6, r1, lsl #2]
-	bne	.L598
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L603:
+	str	r3, [r5, r1, lsl #2]
+	bne	.L542
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L545:
 	.align	2
-.L602:
+.L544:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+298
 	.word	.LANCHOR1+184
 	.word	.LC8
-	.fnend
 	.size	FtlBbt2Bitmap, .-FtlBbt2Bitmap
 	.align	2
 	.global	FtlBbtMemInit
@@ -4111,11 +4447,14 @@
 	.fpu softvfp
 	.type	FtlBbtMemInit, %function
 FtlBbtMemInit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r0, .L605
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r0, .L547
 	mvn	r2, #0
 	mov	r1, #255
 	add	r3, r0, #352
@@ -4124,12 +4463,12 @@
 	mov	r2, #0
 	strh	r2, [r3, #6]	@ movhi
 	mov	r2, #16
-	b	ftl_memset
-.L606:
+	bl	ftl_memset
+	ldmfd	sp, {fp, sp, pc}
+.L548:
 	.align	2
-.L605:
+.L547:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlBbtMemInit, .-FtlBbtMemInit
 	.align	2
 	.global	FtlFreeSysBlkQueueInit
@@ -4138,14 +4477,16 @@
 	.fpu softvfp
 	.type	FtlFreeSysBlkQueueInit, %function
 FtlFreeSysBlkQueueInit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	ip, .L609
-	mov	r2, #2048
-	push	{r4, lr}
-	.save {r4, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	ip, .L550
 	mov	r4, #0
+	mov	r2, #2048
 	mov	r1, r4
 	add	r3, ip, #412
 	strh	r0, [r3]	@ movhi
@@ -4155,12 +4496,11 @@
 	strh	r4, [r3, #6]	@ movhi
 	bl	ftl_memset
 	mov	r0, r4
-	pop	{r4, pc}
-.L610:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L551:
 	.align	2
-.L609:
+.L550:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
 	.align	2
 	.global	ftl_free_no_use_map_blk
@@ -4169,105 +4509,101 @@
 	.fpu softvfp
 	.type	ftl_free_no_use_map_blk, %function
 ftl_free_no_use_map_blk:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r1, #0
+	@ args = 0, pretend = 0, frame = 8
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
 	ldrh	r2, [r0, #10]
 	mov	r4, r0
 	ldr	r5, [r0, #20]
-	ldr	r7, [r0, #12]
+	mov	r1, #0
+	ldr	r8, [r0, #12]
 	ldr	r6, [r0, #24]
 	lsl	r2, r2, #1
 	mov	r0, r5
 	bl	ftl_memset
 	mov	r2, #0
-.L612:
+.L553:
 	ldrh	r1, [r4, #6]
 	uxth	r3, r2
 	cmp	r1, r3
-	bhi	.L616
-	ldr	r3, .L632
-	mov	r6, #0
-	mov	r8, r6
-	mov	r10, r6
+	bhi	.L557
+	ldr	r3, .L570
+	mov	r7, #0
+	mov	r10, r7
 	ldrh	r2, [r3]
 	ldrh	r3, [r4]
 	lsl	r3, r3, #1
 	strh	r2, [r5, r3]	@ movhi
-	ldrh	r9, [r5]
-.L617:
-	ldrh	r3, [r4, #10]
-	uxth	r1, r6
-	cmp	r3, r1
-	bhi	.L621
-	mov	r0, r8
-	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L616:
+	ldrh	r3, [r5]
+.L558:
+	ldrh	r1, [r4, #10]
+	uxth	r2, r7
+	cmp	r1, r2
+	bhi	.L561
+	mov	r0, r10
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L557:
 	uxth	r3, r2
 	mov	r1, #0
 	ldr	r0, [r6, r3, lsl #2]
 	ubfx	r0, r0, #10, #16
-.L613:
+.L554:
 	ldrh	ip, [r4, #10]
 	uxth	r3, r1
 	cmp	ip, r3
 	addls	r2, r2, #1
-	bls	.L612
-.L615:
+	bls	.L553
+.L556:
 	uxth	r3, r1
 	add	r1, r1, #1
 	lsl	r3, r3, #1
-	ldrh	ip, [r7, r3]
-	adds	lr, ip, #0
+	ldrh	ip, [r8, r3]
+	subs	lr, ip, #0
 	movne	lr, #1
-	cmp	r0, ip
+	cmp	ip, r0
 	movne	lr, #0
 	cmp	lr, #0
 	ldrhne	ip, [r5, r3]
 	addne	ip, ip, #1
 	strhne	ip, [r5, r3]	@ movhi
-	b	.L613
-.L621:
-	uxth	r3, r6
-	lsl	r3, r3, #1
-	ldrh	r2, [r5, r3]
-	cmp	r9, r2
-	bls	.L618
-	ldrh	r0, [r7, r3]
-	add	fp, r7, r3
+	b	.L554
+.L561:
+	uxth	r6, r7
+	lsl	r6, r6, #1
+	ldrh	r9, [r5, r6]
+	cmp	r9, r3
+	bcs	.L559
+	ldrh	r1, [r8, r6]
+	cmp	r1, #0
+	movne	r10, r2
+	movne	r3, r9
+.L559:
+	cmp	r9, #0
+	bne	.L560
+	ldrh	r0, [r8, r6]
 	cmp	r0, #0
-	bne	.L619
-.L620:
-	add	r6, r6, #1
-	b	.L617
-.L618:
-	cmp	r2, #0
-	bne	.L620
-	ldrh	r0, [r7, r3]
-	add	fp, r7, r3
-	cmp	r0, #0
-	beq	.L620
-.L622:
+	beq	.L560
 	mov	r1, #1
+	str	r3, [fp, #-48]
 	bl	FtlFreeSysBlkQueueIn
-	strh	r10, [fp]	@ movhi
-	ldrh	r3, [r4, #8]
-	sub	r3, r3, #1
-	strh	r3, [r4, #8]	@ movhi
-	b	.L620
-.L619:
-	subs	r9, r2, #0
-	mov	r8, r1
-	beq	.L622
-	b	.L620
-.L633:
+	strh	r9, [r8, r6]	@ movhi
+	ldr	r3, [fp, #-48]
+	ldrh	r2, [r4, #8]
+	sub	r2, r2, #1
+	strh	r2, [r4, #8]	@ movhi
+.L560:
+	add	r7, r7, #1
+	b	.L558
+.L571:
 	.align	2
-.L632:
+.L570:
 	.word	.LANCHOR0+304
-	.fnend
 	.size	ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
 	.align	2
 	.global	FtlL2PDataInit
@@ -4276,86 +4612,84 @@
 	.fpu softvfp
 	.type	FtlL2PDataInit, %function
 FtlL2PDataInit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L575
 	mov	r1, #0
-	ldr	r4, .L638
-	mvn	r5, #0
+	mvn	r6, #0
 	ldr	r2, [r4, #328]
 	ldr	r0, [r4, #3360]
 	lsl	r2, r2, #1
 	bl	ftl_memset
 	movw	r3, #310
 	movw	r2, #338
+	ldr	r0, [r4, #3384]
 	ldrh	r3, [r4, r3]
 	mov	r1, #255
 	ldrh	r2, [r4, r2]
-	ldr	r0, [r4, #3384]
 	mul	r2, r2, r3
 	bl	ftl_memset
-	ldr	r0, .L638+4
-	mov	r2, #0
-	mov	r3, r4
+	ldr	ip, .L575+4
+	mov	r3, #0
+	mov	r5, r3
+	sub	r7, ip, #28
 	mov	lr, #12
-	mov	r4, r2
-	sub	r6, r0, #28
-.L635:
-	ldrh	r7, [r0]
-	uxth	r1, r2
-	add	ip, r2, #1
-	cmp	r7, r1
-	bhi	.L636
-	ldr	r2, .L638+8
-	mvn	r1, #0
-	strh	r1, [r2, #2]	@ movhi
-	strh	r1, [r2]	@ movhi
-	ldr	r1, [r3, #328]
-	strh	r1, [r2, #10]	@ movhi
-	ldr	r1, .L638+12
-	strh	r1, [r2, #4]	@ movhi
-	movw	r1, #3436
-	ldrh	r1, [r3, r1]
-	strh	r1, [r2, #8]	@ movhi
-	sub	r1, r2, #3056
-	ldrh	r1, [r1]
-	strh	r1, [r2, #6]	@ movhi
-	ldr	r2, [r3, #3356]
-	str	r2, [r3, #3404]
-	ldr	r2, [r3, #3380]
-	str	r2, [r3, #3408]
-	ldr	r2, [r3, #3360]
-	str	r2, [r3, #3412]
-	ldr	r2, [r3, #3376]
-	str	r2, [r3, #3416]
-	pop	{r4, r5, r6, r7, r8, pc}
-.L636:
-	uxth	r2, r2
-	ldr	r1, [r3, #2540]
-	mul	r7, lr, r2
-	add	r8, r1, r7
-	str	r4, [r8, #4]
-	strh	r5, [r1, r7]	@ movhi
-	ldr	r1, [r3, #2540]
-	add	r1, r1, r7
-	ldrh	r7, [r6]
-	mul	r2, r2, r7
-	ldr	r7, [r3, #3384]
+.L573:
+	ldrh	r1, [ip]
+	uxth	r2, r3
+	cmp	r1, r2
+	bhi	.L574
+	ldr	r3, .L575+8
+	ldr	r2, [r4, #328]
+	strh	r2, [r3, #10]	@ movhi
+	mvn	r2, #0
+	str	r2, [r4, #3392]
+	ldr	r2, .L575+12
+	strh	r2, [r3, #4]	@ movhi
+	movw	r2, #3436
+	ldrh	r2, [r4, r2]
+	strh	r2, [r3, #8]	@ movhi
+	sub	r2, r3, #3056
+	ldrh	r2, [r2]
+	strh	r2, [r3, #6]	@ movhi
+	ldr	r3, [r4, #3356]
+	str	r3, [r4, #3404]
+	ldr	r3, [r4, #3380]
+	str	r3, [r4, #3408]
+	ldr	r3, [r4, #3360]
+	str	r3, [r4, #3412]
+	ldr	r3, [r4, #3376]
+	str	r3, [r4, #3416]
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L574:
+	uxth	r0, r3
+	ldr	r2, [r4, #2540]
+	add	r3, r3, #1
+	mul	r1, lr, r0
+	add	r8, r2, r1
+	str	r5, [r8, #4]
+	strh	r6, [r2, r1]	@ movhi
+	ldr	r2, [r4, #2540]
+	add	r1, r2, r1
+	ldrh	r2, [r7]
+	mul	r2, r0, r2
+	ldr	r0, [r4, #3384]
 	bic	r2, r2, #3
-	add	r2, r7, r2
+	add	r2, r0, r2
 	str	r2, [r1, #8]
-	mov	r2, ip
-	b	.L635
-.L639:
+	b	.L573
+.L576:
 	.align	2
-.L638:
+.L575:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+338
 	.word	.LANCHOR0+3392
 	.word	-3902
-	.fnend
 	.size	FtlL2PDataInit, .-FtlL2PDataInit
 	.align	2
 	.global	FtlVariablesInit
@@ -4364,25 +4698,27 @@
 	.fpu softvfp
 	.type	FtlVariablesInit, %function
 FtlVariablesInit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	mvn	r3, #0
-	ldr	r4, .L642
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L578
 	movw	r2, #3438
+	mvn	r3, #0
 	mov	r5, #0
 	mov	r1, r5
 	strh	r3, [r4, r2]	@ movhi
 	str	r3, [r4, #3448]
 	add	r3, r4, #344
-	strh	r5, [r3]	@ movhi
-	add	r3, r4, #320
-	ldrh	r2, [r3]
 	ldr	r0, [r4, #348]
 	str	r5, [r4, #3440]
+	strh	r5, [r3]	@ movhi
+	add	r3, r4, #320
 	str	r5, [r4, #3444]
+	ldrh	r2, [r3]
 	lsl	r2, r2, #1
 	bl	ftl_memset
 	ldrh	r2, [r4, #242]
@@ -4400,19 +4736,18 @@
 	mov	r2, #48
 	add	r0, r0, #4
 	bl	ftl_memset
-	mov	r2, #512
 	mov	r1, r5
+	mov	r2, #512
 	add	r0, r4, #2640
 	bl	ftl_memset
 	bl	FtlGcBufInit
 	bl	FtlL2PDataInit
 	mov	r0, r5
-	pop	{r4, r5, r6, pc}
-.L643:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L579:
 	.align	2
-.L642:
+.L578:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlVariablesInit, .-FtlVariablesInit
 	.align	2
 	.global	SupperBlkListInit
@@ -4421,132 +4756,132 @@
 	.fpu softvfp
 	.type	SupperBlkListInit, %function
 SupperBlkListInit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 16
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r2, #6
-	ldr	r4, .L656
-	mov	r5, #0
-	.pad #20
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #20
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L591
+	mov	r2, #6
+	mov	r5, #0
 	mov	r1, #0
-	ldr	r10, .L656+4
+	add	r10, r4, #2528
 	mov	r9, r5
+	mov	r7, r5
 	ldrh	r3, [r4, #242]
-	mov	r6, r5
 	ldr	r0, [r4, #2516]
-	add	fp, r4, #260
 	mul	r2, r2, r3
 	bl	ftl_memset
-	add	r3, r4, #2528
 	str	r5, [r4, #2532]
 	str	r5, [r4, #2520]
 	str	r5, [r4, #2524]
-	strh	r5, [r3]	@ movhi
+	strh	r5, [r10]	@ movhi
 	strh	r5, [r4, #224]	@ movhi
-	str	r3, [sp, #4]
-.L645:
+.L581:
 	ldrh	r3, [r4, #240]
 	uxth	r8, r5
 	cmp	r8, r3
-	bcs	.L652
-	ldrh	r3, [r10]
-	ldrh	r2, [r4, #232]
-	str	r3, [sp]
+	bcs	.L588
+	ldrh	r3, [r4, #232]
+	str	r3, [fp, #-52]
+	ldr	r3, .L591+4
+	ldr	r2, .L591+8
+	ldrh	r3, [r3]
+	str	r3, [fp, #-48]
 	mov	r3, #0
-	mov	r7, r3
-	b	.L653
-.L647:
+	mov	r6, r3
+	b	.L589
+.L583:
+	ldrb	r0, [r2], #1	@ zero_extendqisi2
 	mov	r1, r8
-	ldrb	r0, [fp, r3]	@ zero_extendqisi2
-	str	r2, [sp, #12]
-	str	r3, [sp, #8]
+	str	r3, [fp, #-60]
+	str	r2, [fp, #-56]
 	bl	V2P_block
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #0
-	ldr	r3, [sp, #8]
-	ldreq	r1, [sp]
-	ldr	r2, [sp, #12]
+	ldr	r3, [fp, #-60]
+	ldr	r2, [fp, #-56]
+	ldreq	r1, [fp, #-48]
 	add	r3, r3, #1
-	addeq	r7, r7, r1
-	uxtheq	r7, r7
-.L653:
+	addeq	r6, r1, r6
+	uxtheq	r6, r6
+.L589:
+	ldr	r0, [fp, #-52]
 	uxth	r1, r3
-	cmp	r2, r1
-	bhi	.L647
-	cmp	r7, #0
+	cmp	r0, r1
+	bhi	.L583
 	uxth	r3, r5
-	beq	.L648
-	mov	r1, r7
+	cmp	r6, #0
+	beq	.L584
+	mov	r1, r6
 	mov	r0, #32768
-	str	r3, [sp]
+	str	r3, [fp, #-48]
 	bl	__aeabi_idiv
-	ldr	r3, [sp]
-	uxth	r7, r0
-.L649:
-	ldr	r1, [r4, #2516]
-	mov	r2, #6
-	mla	r2, r2, r3, r1
-	strh	r7, [r2, #4]	@ movhi
+	ldr	r3, [fp, #-48]
+	uxth	r6, r0
+.L585:
+	ldr	r2, [r4, #2516]
+	mov	r1, #6
+	mla	r2, r1, r3, r2
+	strh	r6, [r2, #4]	@ movhi
 	ldrh	r2, [r4, #24]
 	cmp	r2, r8
-	beq	.L650
+	beq	.L586
 	ldrh	r2, [r4, #76]
 	cmp	r2, r8
-	beq	.L650
+	beq	.L586
 	ldrh	r2, [r4, #124]
 	cmp	r2, r8
-	beq	.L650
+	beq	.L586
 	ldr	r2, [r4, #72]
 	lsl	r3, r3, #1
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	bne	.L651
+	bne	.L587
 	add	r9, r9, #1
 	mov	r0, r8
 	uxth	r9, r9
 	bl	INSERT_FREE_LIST
-.L650:
+.L586:
 	add	r5, r5, #1
-	b	.L645
-.L648:
+	b	.L581
+.L584:
 	ldr	r1, [r4, #72]
 	lsl	r2, r3, #1
-	mvn	r0, #0
+	mvn	r0, #0	@ movhi
 	strh	r0, [r1, r2]	@ movhi
-	b	.L649
-.L651:
-	add	r6, r6, #1
+	b	.L585
+.L587:
+	add	r7, r7, #1
 	mov	r0, r8
-	uxth	r6, r6
+	uxth	r7, r7
 	bl	INSERT_DATA_LIST
-	b	.L650
-.L652:
-	ldr	r2, [sp, #4]
+	b	.L586
+.L588:
+	strh	r7, [r10]	@ movhi
+	add	r7, r7, r9
+	cmp	r7, r3
 	strh	r9, [r4, #224]	@ movhi
-	strh	r6, [r2]	@ movhi
-	add	r6, r6, r9
-	cmp	r6, r3
-	ble	.L654
+	ble	.L590
+	ldr	r1, .L591+12
 	movw	r2, #2219
-	ldr	r1, .L656+8
-	ldr	r0, .L656+12
+	ldr	r0, .L591+16
 	bl	sftl_printk
-.L654:
+.L590:
 	mov	r0, #0
-	add	sp, sp, #20
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L657:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L592:
 	.align	2
-.L656:
+.L591:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+302
+	.word	.LANCHOR0+260
 	.word	.LANCHOR1+198
 	.word	.LC8
-	.fnend
 	.size	SupperBlkListInit, .-SupperBlkListInit
 	.align	2
 	.global	FtlGcPageVarInit
@@ -4555,36 +4890,37 @@
 	.fpu softvfp
 	.type	FtlGcPageVarInit, %function
 FtlGcPageVarInit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	mov	r3, #0
-	ldr	r4, .L660
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L594
 	movw	r2, #3196
+	mov	r3, #0
 	movw	r5, #306
 	mov	r1, #255
 	strh	r3, [r4, r2]	@ movhi
 	movw	r2, #3204
+	ldr	r0, [r4, #3192]
 	strh	r3, [r4, r2]	@ movhi
 	ldrh	r2, [r4, r5]
-	ldr	r0, [r4, #3192]
 	lsl	r2, r2, #1
 	bl	ftl_memset
 	ldrh	r3, [r4, r5]
 	mov	r2, #12
-	ldr	r0, [r4, #3200]
 	mov	r1, #255
+	ldr	r0, [r4, #3200]
 	mul	r2, r2, r3
 	bl	ftl_memset
-	pop	{r4, r5, r6, lr}
-	b	FtlGcBufInit
-.L661:
+	bl	FtlGcBufInit
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L595:
 	.align	2
-.L660:
+.L594:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlGcPageVarInit, .-FtlGcPageVarInit
 	.align	2
 	.global	FlashGetBadBlockList
@@ -4593,49 +4929,48 @@
 	.fpu softvfp
 	.type	FlashGetBadBlockList, %function
 FlashGetBadBlockList:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	mov	r2, #256
-	ldr	r5, .L670
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r6, .L603
 	mov	r4, r0
-	mov	r6, r1
+	mov	r5, r1
+	mov	r2, #256
 	mov	r1, #255
 	bl	ftl_memset
-	ldr	r3, [r5, #3244]
-	mov	r1, r6
+	mov	r1, r5
+	ldr	r3, [r6, #3244]
 	mov	r0, r4
 	blx	r3
 	uxth	r0, r0
 	cmp	r0, #50
-	bls	.L663
+	bls	.L597
+	mov	r0, r4
 	mov	r2, #256
 	mov	r1, #255
-	mov	r0, r4
 	bl	ftl_memset
 	mov	r0, #0
-.L663:
-	ldrh	r3, [r5, #14]
+.L597:
+	ldrh	r3, [r6, #14]
 	cmp	r3, #4
 	moveq	r3, r4
 	addeq	r1, r3, r0, lsl #1
-	beq	.L665
-	pop	{r4, r5, r6, pc}
-.L666:
+	ldmfdne	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L599:
+	cmp	r3, r1
+	ldmfdeq	sp, {r4, r5, r6, r7, fp, sp, pc}
 	ldrh	r2, [r3]
 	lsr	r2, r2, #1
 	strh	r2, [r3], #2	@ movhi
-.L665:
-	cmp	r3, r1
-	bne	.L666
-	pop	{r4, r5, r6, pc}
-.L671:
+	b	.L599
+.L604:
 	.align	2
-.L670:
+.L603:
 	.word	.LANCHOR0
-	.fnend
 	.size	FlashGetBadBlockList, .-FlashGetBadBlockList
 	.align	2
 	.global	ftl_memcpy
@@ -4644,13 +4979,24 @@
 	.fpu softvfp
 	.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
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	bl	memcpy
+	ldmfd	sp, {fp, sp, pc}
 	.size	ftl_memcpy, .-ftl_memcpy
+	.section	.rodata.str1.1
+.LC92:
+	.ascii	"FlashReadPages %x %x error_ecc_bits %d\012\000"
+.LC93:
+	.ascii	"data:\000"
+.LC94:
+	.ascii	"spare:\000"
+	.text
 	.align	2
 	.global	FlashReadPages
 	.syntax unified
@@ -4658,158 +5004,161 @@
 	.fpu softvfp
 	.type	FlashReadPages, %function
 FlashReadPages:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 24
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L714
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #28
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #28
-	ldr	r5, .L714+4
-	mov	r8, r1
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	ldr	r6, .L647
+	bic	r7, r3, #8128
+	ldr	r10, .L647+4
+	bic	r7, r7, #63
+	ldr	r9, .L647+8
 	mov	r4, r0
-	mov	r7, #0
-	ldr	r2, [r3]
-	mov	fp, r3
-	ldr	r9, .L714+8
-	ldr	r10, .L714+12
-	str	r2, [sp, #20]
-	ldrh	r2, [r5, #12]
-	str	r2, [sp, #4]
-.L674:
-	cmp	r7, r8
-	bne	.L687
-	ldr	r2, [sp, #20]
-	mov	r0, #0
-	ldr	r3, [fp]
+	str	r1, [fp, #-68]
+	mov	r8, #0
+	ldr	r3, [r7, #24]
+	str	r3, [fp, #-48]
+	ldrh	r3, [r6, #12]
+	str	r3, [fp, #-64]
+.L607:
+	ldr	r3, [fp, #-68]
+	cmp	r8, r3
+	bne	.L620
+	ldr	r2, [fp, #-48]
+	ldr	r3, [r7, #24]
 	cmp	r2, r3
-	beq	.L688
+	beq	.L621
 	bl	__stack_chk_fail
-.L687:
+.L620:
 	ldr	r3, [r4, #8]
 	cmp	r3, #0
-	beq	.L675
+	beq	.L608
 	ldr	r3, [r4, #12]
 	cmp	r3, #0
-	bne	.L676
-.L675:
-	mov	r2, #96
-	ldr	r1, .L714+16
+	bne	.L609
+.L608:
+	mov	r1, r10
 	mov	r0, r9
+	mov	r2, #96
 	bl	sftl_printk
-.L676:
-	add	r2, sp, #12
-	add	r1, sp, #16
+.L609:
+	sub	r2, fp, #56
+	sub	r1, fp, #52
 	mov	r0, r4
 	bl	l2p_addr_tran
-	ldr	r0, [sp, #12]
+	ldr	r0, [fp, #-56]
 	cmp	r0, #3
 	mvnhi	r3, #0
 	strhi	r3, [r4]
-	bhi	.L678
-	ldr	r6, [r4, #8]
+	bhi	.L611
+	ldr	r5, [r4, #8]
 	uxtb	r0, r0
 	ldr	r3, [r4, #12]
-	ldr	r1, [sp, #16]
-	tst	r6, #63
-	ldr	ip, [r5, #3256]
-	ldrne	r6, [r5, #3320]
-	mov	r2, r6
+	tst	r5, #63
+	ldr	r1, [fp, #-52]
+	ldr	ip, [r6, #3256]
+	ldrne	r5, [r6, #3320]
+	mov	r2, r5
 	blx	ip
 	str	r0, [r4]
-	ldrh	r3, [r5, #14]
+	ldrh	r3, [r6, #14]
 	cmp	r3, #4
-	bne	.L681
-	ldr	r0, [sp, #4]
-	add	r2, r6, #2048
+	bne	.L614
+	ldr	r0, [fp, #-64]
+	add	r2, r5, #2048
 	ldr	r3, [r4, #12]
-	ldr	r1, [sp, #16]
-	ldr	ip, [r5, #3256]
+	ldr	r1, [fp, #-52]
+	ldr	ip, [r6, #3256]
 	add	r3, r3, #8
 	add	r1, r0, r1
-	ldrb	r0, [sp, #12]	@ zero_extendqisi2
+	ldrb	r0, [fp, #-56]	@ zero_extendqisi2
 	blx	ip
 	cmn	r0, #1
-	mov	r1, r0
-	beq	.L682
+	beq	.L615
 	ldr	r3, [r4, #12]
 	ldr	r2, [r3, #12]
 	cmn	r2, #1
-	bne	.L683
+	bne	.L616
 	ldr	r2, [r3, #8]
 	cmn	r2, #1
-	bne	.L683
+	bne	.L616
 	ldr	r3, [r3]
 	cmn	r3, #1
-	beq	.L683
-.L682:
+	beq	.L616
+.L615:
 	mvn	r3, #0
+.L646:
 	str	r3, [r4]
-.L683:
-	ldr	r3, [r4]
-	sub	r0, r1, #256
-	clz	r0, r0
-	lsr	r0, r0, #5
-	cmn	r3, #1
-	moveq	r0, #0
-	cmp	r0, #0
-	movne	r3, #256
-	strne	r3, [r4]
+.L617:
 	ldr	r3, [r4]
 	cmn	r3, #1
 	cmpne	r3, #256
-	bne	.L681
+	bne	.L614
 	ldr	r1, [r4, #4]
-	ldr	r2, [sp, #16]
-	ldr	r0, .L714+20
+	ldr	r2, [fp, #-52]
+	ldr	r0, .L647+12
 	bl	sftl_printk
 	ldr	r1, [r4, #8]
 	cmp	r1, #0
-	beq	.L686
+	beq	.L619
 	mov	r3, #4
-	ldr	r0, .L714+24
+	ldr	r0, .L647+16
 	mov	r2, r3
 	bl	rknand_print_hex
-.L686:
+.L619:
 	ldr	r1, [r4, #12]
 	cmp	r1, #0
-	beq	.L681
+	beq	.L614
 	mov	r3, #4
-	ldr	r0, .L714+28
+	ldr	r0, .L647+20
 	mov	r2, r3
 	bl	rknand_print_hex
-.L681:
-	ldr	r3, [r5, #3320]
-	cmp	r6, r3
-	bne	.L678
+.L614:
+	ldr	r3, [r6, #3320]
+	cmp	r3, r5
+	bne	.L611
 	ldr	r0, [r4, #8]
-	cmp	r6, r0
-	beq	.L678
-	ldrh	r2, [r10]
-	mov	r1, r6
+	cmp	r0, r5
+	beq	.L611
+	ldr	r3, .L647+24
+	mov	r1, r5
+	ldrh	r2, [r3]
 	lsl	r2, r2, #9
 	bl	ftl_memcpy
-.L678:
-	add	r7, r7, #1
+.L611:
+	add	r8, r8, #1
 	add	r4, r4, #20
-	b	.L674
-.L688:
-	add	sp, sp, #28
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L715:
+	b	.L607
+.L616:
+	ldr	r3, [r4]
+	sub	r0, r0, #256
+	clz	r0, r0
+	cmn	r3, #1
+	lsr	r0, r0, #5
+	moveq	r0, #0
+	cmp	r0, #0
+	beq	.L617
+	mov	r3, #256
+	b	.L646
+.L621:
+	mov	r0, #0
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L648:
 	.align	2
-.L714:
-	.word	__stack_chk_guard
+.L647:
 	.word	.LANCHOR0
-	.word	.LC8
-	.word	.LANCHOR0+258
 	.word	.LANCHOR1+216
+	.word	.LC8
 	.word	.LC92
 	.word	.LC93
 	.word	.LC94
-	.fnend
+	.word	.LANCHOR0+258
 	.size	FlashReadPages, .-FlashReadPages
 	.align	2
 	.global	FtlLoadFactoryBbt
@@ -4818,66 +5167,67 @@
 	.fpu softvfp
 	.type	FtlLoadFactoryBbt, %function
 FtlLoadFactoryBbt:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r7, #0
-	ldr	r5, .L727
-	ldr	r10, .L727+4
-	add	r6, r5, #360
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r5, .L659
+	mov	r6, #0
+	add	r7, r5, #364
+	sub	r9, r7, #66
 	ldr	r3, [r5, #3300]
 	ldr	r8, [r5, #3332]
-	add	r6, r6, #2
-	sub	r9, r6, #64
 	str	r3, [r5, #3460]
 	str	r8, [r5, #3464]
-.L717:
+.L650:
 	ldrh	r3, [r5, #254]
-	cmp	r7, r3
-	bcc	.L722
+	cmp	r3, r6
+	bhi	.L655
 	mov	r0, #0
-	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L722:
+	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L655:
 	ldrh	r4, [r9]
 	mvn	r3, #0
-	movw	fp, #61664
-	strh	r3, [r6, #2]!	@ movhi
+	ldr	r10, .L659+4
 	add	r4, r4, r3
+	strh	r3, [r7]	@ movhi
 	uxth	r4, r4
-.L718:
+.L651:
 	ldrh	r3, [r9]
 	sub	r2, r3, #16
 	cmp	r4, r2
-	ble	.L720
-	mla	r3, r7, r3, r4
+	ble	.L653
+	mla	r3, r6, r3, r4
 	mov	r2, #1
-	mov	r1, r2
 	mov	r0, r10
+	mov	r1, r2
 	lsl	r3, r3, #10
 	str	r3, [r5, #3456]
 	bl	FlashReadPages
 	ldr	r3, [r5, #3452]
 	cmn	r3, #1
-	beq	.L719
-	ldrh	r3, [r8]
-	cmp	r3, fp
-	bne	.L719
-	strh	r4, [r6]	@ movhi
-.L720:
-	add	r7, r7, #1
-	b	.L717
-.L719:
+	beq	.L652
+	ldrh	r2, [r8]
+	movw	r3, #61664
+	cmp	r2, r3
+	bne	.L652
+	strh	r4, [r7]	@ movhi
+.L653:
+	add	r6, r6, #1
+	add	r7, r7, #2
+	b	.L650
+.L652:
 	sub	r4, r4, #1
 	uxth	r4, r4
-	b	.L718
-.L728:
+	b	.L651
+.L660:
 	.align	2
-.L727:
+.L659:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+3452
-	.fnend
 	.size	FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
 	.align	2
 	.global	FtlGetLastWrittenPage
@@ -4886,86 +5236,83 @@
 	.fpu softvfp
 	.type	FtlGetLastWrittenPage, %function
 FtlGetLastWrittenPage:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 88
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, lr}
-	.save {r4, r5, r6, r7, r8, r9, lr}
-	.pad #92
-	sub	sp, sp, #92
-	ldr	r6, .L742
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #88
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
 	cmp	r1, #1
+	bic	r6, r3, #8128
+	mov	r9, r1
+	bic	r6, r6, #63
 	movwne	r2, #302
-	lsl	r8, r0, #10
-	mov	r7, r1
-	ldr	r3, [r6]
-	mov	r0, sp
-	str	r3, [sp, #84]
-	ldr	r3, .L742+4
+	lsl	r7, r0, #10
+	ldr	r3, [r6, #24]
+	str	r3, [fp, #-40]
+	ldr	r3, .L674
 	addeq	r2, r3, #304
-	ldrhne	r5, [r3, r2]
-	ldrheq	r5, [r2]
+	ldrhne	r4, [r3, r2]
+	ldrheq	r4, [r2]
 	mov	r2, r1
 	ldr	r3, [r3, #3324]
 	mov	r1, #1
-	sub	r5, r5, #1
-	sxth	r5, r5
-	str	r3, [sp, #8]
-	add	r3, sp, #20
-	str	r3, [sp, #12]
-	orr	r3, r5, r8
-	str	r3, [sp, #4]
+	sub	r4, r4, #1
+	str	r3, [fp, #-116]
+	sub	r3, fp, #104
+	str	r3, [fp, #-112]
+	sxth	r4, r4
+	orr	r0, r4, r0, lsl #10
+	str	r0, [fp, #-120]
+	sub	r0, fp, #124
 	bl	FlashReadPages
-	ldr	r3, [sp, #20]
+	ldr	r3, [fp, #-104]
 	cmn	r3, #1
-	moveq	r9, #0
-	beq	.L733
-.L732:
-	ldr	r2, [sp, #84]
-	mov	r0, r5
-	ldr	r3, [r6]
-	cmp	r2, r3
-	beq	.L737
-	bl	__stack_chk_fail
-.L736:
-	add	r3, r9, r5
-	mov	r2, r7
-	add	r3, r3, r3, lsr #31
+	bne	.L665
+	mov	r8, #0
+	b	.L664
+.L668:
+	add	r3, r8, r4
+	mov	r2, r9
+	sub	r0, fp, #124
 	mov	r1, #1
-	mov	r0, sp
-	asr	r4, r3, #1
-	sxth	r3, r4
-	orr	r3, r3, r8
-	str	r3, [sp, #4]
+	add	r3, r3, r3, lsr #31
+	sbfx	r5, r3, #1, #16
+	orr	r3, r7, r3, asr #1
+	str	r3, [fp, #-120]
 	bl	FlashReadPages
-	ldr	r3, [sp, #20]
+	ldrd	r2, [fp, #-104]
+	and	r3, r3, r2
 	cmn	r3, #1
-	bne	.L734
-	ldr	r3, [sp, #24]
+	bne	.L666
+	ldr	r3, [fp, #-124]
 	cmn	r3, #1
-	bne	.L734
-	ldr	r3, [sp]
-	cmn	r3, #1
-	subne	r4, r4, #1
-	sxthne	r5, r4
-	bne	.L733
-.L734:
-	add	r4, r4, #1
-	sxth	r9, r4
-.L733:
-	cmp	r9, r5
-	ble	.L736
-	b	.L732
-.L737:
-	add	sp, sp, #92
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, pc}
-.L743:
+	subne	r4, r5, #1
+	sxthne	r4, r4
+	bne	.L664
+.L666:
+	add	r5, r5, #1
+	sxth	r8, r5
+.L664:
+	cmp	r8, r4
+	ble	.L668
+.L665:
+	ldr	r2, [fp, #-40]
+	ldr	r3, [r6, #24]
+	cmp	r2, r3
+	beq	.L669
+	bl	__stack_chk_fail
+.L669:
+	mov	r0, r4
+	sub	sp, fp, #36
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L675:
 	.align	2
-.L742:
-	.word	__stack_chk_guard
+.L674:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
 	.align	2
 	.global	FtlScanSysBlk
@@ -4974,24 +5321,25 @@
 	.fpu softvfp
 	.type	FtlScanSysBlk, %function
 FtlScanSysBlk:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 32
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r5, #0
-	ldr	r4, .L826
+	@ args = 0, pretend = 0, frame = 24
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #28
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L756
 	movw	r3, #3436
+	mov	r5, #0
 	mov	r1, r5
-	.pad #36
-	sub	sp, sp, #36
-	ldr	r2, [r4, #328]
-	add	r7, r4, #344
-	ldr	r0, [r4, #3380]
 	add	r6, r4, #320
+	ldr	r2, [r4, #328]
 	strh	r5, [r4, r3]	@ movhi
-	strh	r5, [r7]	@ movhi
+	add	r3, r4, #344
+	ldr	r0, [r4, #3380]
 	lsl	r2, r2, #2
+	strh	r5, [r3]	@ movhi
 	bl	ftl_memset
 	ldr	r2, [r4, #328]
 	mov	r1, r5
@@ -5006,470 +5354,462 @@
 	ldrh	r2, [r6]
 	mov	r1, r5
 	ldr	r0, [r4, #348]
-	add	r5, r4, #2624
 	lsl	r2, r2, #1
 	bl	ftl_memset
+	add	r0, r4, #2624
 	mov	r2, #16
 	mov	r1, #255
-	add	r0, r4, #2624
 	bl	ftl_memset
 	ldrh	r3, [r4, #240]
-	str	r7, [sp, #20]
-	str	r6, [sp, #12]
-	str	r3, [sp, #4]
-.L745:
+.L755:
+	str	r3, [fp, #-48]
+	ldr	r2, [fp, #-48]
 	ldrh	r3, [r4, #242]
-	ldr	r2, [sp, #4]
 	cmp	r3, r2
-	bls	.L786
-	ldr	r1, [r4, #3180]
-	mov	r6, #0
-	ldr	r7, .L826+4
-	mov	fp, r6
-	ldrh	r2, [r4, #232]
+	bls	.L716
+	ldr	r5, .L756+4
+	mov	r7, #0
+	ldrh	r6, [r4, #232]
 	mov	r9, #20
 	ldr	r8, [r4, #3288]
-	ldr	r3, [r4, #3176]
-	str	r1, [sp, #8]
-	ldrh	r10, [r7], #-52
-	b	.L787
-.L747:
-	ldr	r1, [sp, #4]
-	ldrb	r0, [r7, r6]	@ zero_extendqisi2
-	str	r3, [sp, #28]
-	str	r2, [sp, #24]
+	ldr	r2, [r4, #3176]
+	ldrh	r10, [r5], #-52
+	ldr	r3, [r4, #3180]
+	add	r6, r6, r5
+	b	.L717
+.L679:
+	ldr	r1, [fp, #-48]
+	ldrb	r0, [r5], #1	@ zero_extendqisi2
+	str	r3, [fp, #-60]
+	str	r2, [fp, #-56]
 	bl	V2P_block
-	str	r0, [sp, #16]
+	str	r0, [fp, #-52]
 	bl	FtlBbmIsBadBlock
+	ldr	r2, [fp, #-56]
 	cmp	r0, #0
-	ldr	r2, [sp, #24]
-	ldr	r3, [sp, #28]
-	bne	.L746
-	ldr	r1, [sp, #16]
-	mla	r0, r9, fp, r8
+	ldr	r3, [fp, #-60]
+	bne	.L717
+	mla	ip, r9, r7, r8
+	ldr	r1, [fp, #-52]
+	mul	r0, r10, r7
+	add	r7, r7, #1
+	cmp	r0, #0
 	lsl	r1, r1, #10
-	stmib	r0, {r1, r3}
-	mul	r1, r10, fp
-	add	ip, r1, #3
-	cmp	r1, #0
-	movlt	r1, ip
-	ldr	ip, [sp, #8]
+	stmib	ip, {r1, r2}
+	add	r1, r0, #3
+	movge	r1, r0
+	uxth	r7, r7
 	bic	r1, r1, #3
-	add	r1, ip, r1
-	str	r1, [r0, #12]
-	add	r1, fp, #1
-	uxth	fp, r1
-.L746:
-	add	r6, r6, #1
-.L787:
-	uxth	r1, r6
-	cmp	r2, r1
-	bhi	.L747
-	cmp	fp, #0
-	bne	.L748
-.L785:
-	ldr	r3, [sp, #4]
+	add	r1, r3, r1
+	str	r1, [ip, #12]
+.L717:
+	cmp	r6, r5
+	bne	.L679
+	cmp	r7, #0
+	bne	.L680
+.L715:
+	ldr	r3, [fp, #-48]
 	add	r3, r3, #1
 	uxth	r3, r3
-	str	r3, [sp, #4]
-	b	.L745
-.L748:
+	b	.L755
+.L680:
+	mov	r1, r7
 	mov	r0, r8
-	ldr	r8, .L826+8
 	mov	r2, #1
-	mov	r1, fp
 	bl	FlashReadPages
 	mov	r3, #0
-	str	r3, [sp, #8]
-.L749:
-	ldrh	r3, [sp, #8]
-	cmp	fp, r3
-	bls	.L785
-	ldr	r3, [sp, #8]
-	mov	r9, #20
-	mul	r9, r9, r3
+	str	r3, [fp, #-52]
+.L714:
+	ldr	r3, [fp, #-52]
+	mov	r8, #20
+	mul	r8, r8, r3
 	ldr	r3, [r4, #3288]
-	add	r2, r3, r9
-	ldr	r3, [r3, r9]
-	ldr	r6, [r2, #4]
-	ldr	r7, [r2, #12]
+	add	r2, r3, r8
+	ldr	r3, [r3, r8]
+	ldr	r5, [r2, #4]
+	ldr	r6, [r2, #12]
 	cmn	r3, #1
-	ubfx	r6, r6, #10, #16
-	bne	.L752
-	mov	r10, #16
-.L754:
+	ubfx	r5, r5, #10, #16
+	bne	.L683
+	mov	r9, #16
+	movw	r10, #65535
+.L685:
 	ldr	r0, [r4, #3288]
 	mov	r2, #1
 	mov	r1, r2
-	add	r0, r0, r9
+	add	r0, r0, r8
 	ldr	r3, [r0, #4]
 	add	r3, r3, #1
 	str	r3, [r0, #4]
 	bl	FlashReadPages
-	ldrh	r3, [r7]
-	movw	r2, #65535
-	cmp	r3, r2
+	ldrh	r3, [r6]
+	cmp	r3, r10
 	ldr	r3, [r4, #3288]
-	bne	.L751
+	bne	.L682
 	mvn	r2, #0
-	str	r2, [r3, r9]
+	str	r2, [r3, r8]
 	ldr	r3, [r4, #3288]
-	ldr	r3, [r3, r9]
+	ldr	r3, [r3, r8]
 	cmp	r3, r2
-	bne	.L752
-.L753:
-	mov	r1, #1
-	b	.L825
-.L751:
-	ldr	r3, [r3, r9]
-	cmn	r3, #1
-	bne	.L752
-	sub	r10, r10, #1
-	uxth	r10, r10
-	cmp	r10, #0
-	bne	.L754
-	b	.L753
-.L752:
+	beq	.L684
+.L683:
 	ldr	r2, [r4, #2588]
-	ldr	r3, [r7, #4]
+	ldr	r3, [r6, #4]
 	cmn	r2, #1
-	beq	.L755
+	beq	.L732
 	cmp	r2, r3
-	bhi	.L756
-.L755:
+	bhi	.L686
+.L732:
 	cmn	r3, #1
 	addne	r2, r3, #1
 	strne	r2, [r4, #2588]
-.L756:
-	ldrh	r2, [r7]
+.L686:
+	ldrh	r2, [r6]
+	movw	r1, #61634
+	cmp	r2, r1
+	beq	.L687
+	bhi	.L688
+	movw	r1, #61574
+	cmp	r2, r1
+	beq	.L689
 	movw	r1, #61604
 	cmp	r2, r1
-	beq	.L758
-	bhi	.L759
-	movw	r3, #61574
-	cmp	r2, r3
-	beq	.L760
-.L757:
-	ldr	r3, [sp, #8]
+	beq	.L690
+.L691:
+	ldr	r3, [fp, #-52]
 	add	r3, r3, #1
-	str	r3, [sp, #8]
-	b	.L749
-.L759:
-	movw	r3, #61634
-	cmp	r2, r3
-	beq	.L761
+	str	r3, [fp, #-52]
+	ldrh	r3, [fp, #-52]
+	cmp	r7, r3
+	bhi	.L714
+	b	.L715
+.L682:
+	ldr	r3, [r3, r8]
+	cmn	r3, #1
+	bne	.L683
+	sub	r9, r9, #1
+	uxth	r9, r9
+	cmp	r9, #0
+	bne	.L685
+.L684:
+	mov	r1, #1
+	b	.L753
+.L688:
 	movw	r3, #65535
 	cmp	r2, r3
 	moveq	r1, #0
-	bne	.L757
-.L825:
-	mov	r0, r6
+	bne	.L691
+.L753:
+	mov	r0, r5
 	bl	FtlFreeSysBlkQueueIn
-	b	.L757
-.L761:
-	ldrh	r2, [r8]
+	b	.L691
+.L687:
+	ldr	r8, .L756+8
 	ldr	r3, [r4, #328]
+	ldrh	r2, [r8]
 	cmp	r2, r3
-	bls	.L763
+	bls	.L693
+	ldr	r1, .L756+12
 	mov	r2, #1232
-	ldr	r1, .L826+12
-	ldr	r0, .L826+16
+	ldr	r0, .L756+16
 	bl	sftl_printk
-.L763:
-	ldr	r0, [r4, #328]
-	ldrh	r2, [r8]
-	ldr	ip, [r4, #3380]
-	uxth	r1, r0
-	sub	r3, r1, #1
-	sub	r1, r1, r2
-	sub	r1, r1, #1
+.L693:
+	ldr	lr, [r4, #328]
+	ldrh	r1, [r8]
+	uxth	r2, lr
+	sub	r3, r2, #1
+	sub	r2, r2, r1
+	sub	r2, r2, #1
 	sxth	r3, r3
-	sxth	r1, r1
-.L764:
-	cmp	r3, r1
-	bgt	.L770
-	cmp	r3, #0
-	bge	.L802
-	b	.L757
-.L770:
-	ldr	r10, [r7, #4]
-	lsl	lr, r3, #2
-	ldr	r9, [ip, r3, lsl #2]
-	cmp	r10, r9
-	bls	.L765
-	ldr	r1, [ip]
-	cmp	r1, #0
-	bne	.L766
-	cmp	r0, r2
-	addne	r2, r2, #1
-	strhne	r2, [r8]	@ movhi
-.L766:
-	uxth	ip, r3
-	mov	r1, #0
-.L767:
-	uxth	r0, r1
-	sxth	r2, r1
-	cmp	ip, r0
-	bhi	.L768
-	ldr	r1, [r7, #4]
-	cmp	r3, #0
+	sxth	r2, r2
+	str	r2, [fp, #-60]
 	ldr	r2, [r4, #3380]
-	str	r1, [r2, lr]
-	lsl	r2, r3, #1
+	str	r2, [fp, #-56]
+	mov	r2, r3
+	ldr	r0, [fp, #-56]
+	add	r10, r0, #4
+.L694:
+	ldr	r0, [fp, #-60]
+	cmp	r0, r3
+	bge	.L699
+	lsl	r0, r2, #2
+	str	r0, [fp, #-64]
+	sub	r0, r2, #1
+	ldr	r9, [r6, #4]
+	ldr	ip, [r10, r0, lsl #2]
+	cmp	r9, ip
+	bls	.L695
+	ldr	r0, [fp, #-56]
+	ldr	r0, [r0]
+	cmp	r0, #0
+	bne	.L696
+	cmp	lr, r1
+	addne	r1, r1, #1
+	strhne	r1, [r8]	@ movhi
+.L696:
+	uxth	lr, r3
+	mov	ip, #0
+.L697:
+	uxth	r8, ip
+	ldr	r0, [r4, #3380]
+	sxth	r1, ip
+	cmp	lr, r8
+	bhi	.L698
+	ldr	ip, [fp, #-64]
+	lsl	r2, r2, #1
+	ldr	r1, [r6, #4]
+	str	r1, [r0, ip]
 	ldr	r1, [r4, #3356]
-	strh	r6, [r1, r2]	@ movhi
-	blt	.L757
-	ldrh	r2, [r8]
-	ldr	r1, [r4, #328]
-	sub	r1, r1, r2
-	sub	r1, r1, #1
-	sxth	r1, r1
-	cmp	r3, r1
-	bgt	.L757
-.L802:
-	add	r2, r2, #1
-	ldr	r1, [r7, #4]
-	strh	r2, [r8]	@ movhi
+	strh	r5, [r1, r2]	@ movhi
+.L699:
+	cmp	r3, #0
+	blt	.L691
+	ldr	r0, .L756+8
+	ldr	r2, [r4, #328]
+	ldrh	r1, [r0]
+	sub	r2, r2, r1
+	sub	r2, r2, #1
+	sxth	r2, r2
+	cmp	r2, r3
+	blt	.L691
 	ldr	r2, [r4, #3380]
+	add	r1, r1, #1
+	strh	r1, [r0]	@ movhi
+	ldr	r1, [r6, #4]
 	str	r1, [r2, r3, lsl #2]
 	lsl	r3, r3, #1
 	ldr	r2, [r4, #3356]
-.L823:
-	strh	r6, [r2, r3]	@ movhi
-	b	.L757
-.L768:
-	ldr	r0, [r4, #3380]
+.L752:
+	strh	r5, [r2, r3]	@ movhi
+	b	.L691
+.L698:
 	add	r1, r1, #1
-	add	r9, r0, r2, lsl #2
-	ldr	r9, [r9, #4]
-	str	r9, [r0, r2, lsl #2]
-	lsl	r2, r2, #1
+	add	ip, ip, #1
+	ldr	r8, [r0, r1, lsl #2]
+	add	r0, r0, r1, lsl #2
+	lsl	r1, r1, #1
+	str	r8, [r0, #-4]
 	ldr	r0, [r4, #3356]
-	add	r9, r0, r2
-	ldrh	r9, [r9, #2]
-	strh	r9, [r0, r2]	@ movhi
-	b	.L767
-.L765:
+	ldrh	r1, [r0, r1]!
+	strh	r1, [r0, #-2]	@ movhi
+	b	.L697
+.L695:
 	sub	r3, r3, #1
+	mov	r2, r0
 	sxth	r3, r3
-	b	.L764
-.L760:
-	ldr	r3, [sp, #20]
-	ldrh	r2, [r3]
-	ldr	r3, [sp, #12]
-	ldrh	r3, [r3]
+	b	.L694
+.L689:
+	ldr	r8, .L756+20
+	ldrh	r2, [r8]
+	ldrh	r3, [r8, #-24]
 	cmp	r2, r3
-	bls	.L773
+	bls	.L703
+	ldr	r1, .L756+12
 	movw	r2, #1273
-	ldr	r1, .L826+12
-	ldr	r0, .L826+16
+	ldr	r0, .L756+16
 	bl	sftl_printk
-.L773:
-	ldr	r3, [sp, #12]
-	ldr	lr, .L826+20
-	ldr	ip, [r4, #3368]
-	ldrh	r2, [r3]
-	ldrh	r1, [lr]
+.L703:
+	ldrh	r2, [r8, #-24]
+	ldrh	r1, [r8]
 	sub	r0, r2, #1
+	ldr	ip, [r4, #3368]
 	sxth	r3, r0
 	sub	r0, r0, r1
-	str	r0, [sp, #16]
-.L774:
-	ldr	r0, [sp, #16]
+.L704:
 	cmp	r3, r0
-	ble	.L779
-	ldr	r10, [r7, #4]
-	lsl	r9, r3, #2
-	ldr	r0, [ip, r3, lsl #2]
-	cmp	r10, r0
-	bls	.L775
+	ble	.L709
+	ldr	r10, [r6, #4]
+	lsl	lr, r3, #2
+	ldr	r9, [ip, r3, lsl #2]
+	cmp	r10, r9
+	bls	.L705
 	sub	r2, r2, r1
 	ldr	r0, [ip]
 	clz	r2, r2
-	uxth	ip, r3
 	lsr	r2, r2, #5
 	cmp	r0, #0
 	orrne	r2, r2, #1
+	uxth	r0, r3
 	cmp	r2, #0
 	addeq	r1, r1, #1
-	strheq	r1, [lr]	@ movhi
+	strheq	r1, [r8]	@ movhi
 	mov	r1, #0
-.L777:
-	uxth	r0, r1
+.L707:
+	uxth	r8, r1
+	ldr	ip, [r4, #3368]
 	sxth	r2, r1
-	cmp	ip, r0
-	bhi	.L778
-	ldr	r1, [r7, #4]
-	ldr	r2, [r4, #3368]
-	str	r1, [r2, r9]
+	cmp	r0, r8
+	bhi	.L708
+	ldr	r2, [r6, #4]
+	str	r2, [ip, lr]
 	lsl	r2, r3, #1
 	ldr	r1, [r4, #348]
-	strh	r6, [r1, r2]	@ movhi
-.L779:
+	strh	r5, [r1, r2]	@ movhi
+.L709:
 	cmp	r3, #0
-	blt	.L757
-	ldr	r0, .L826+20
+	blt	.L691
+	ldr	r0, .L756+20
 	ldrh	r2, [r0, #-24]
 	ldrh	r1, [r0]
 	sub	r2, r2, #1
 	sub	r2, r2, r1
 	sxth	r2, r2
-	cmp	r3, r2
-	bgt	.L757
-	add	r1, r1, #1
+	cmp	r2, r3
+	blt	.L691
 	ldr	r2, [r4, #3368]
+	add	r1, r1, #1
 	strh	r1, [r0]	@ movhi
-	ldr	r1, [r7, #4]
+	ldr	r1, [r6, #4]
 	str	r1, [r2, r3, lsl #2]
 	lsl	r3, r3, #1
 	ldr	r2, [r4, #348]
-	b	.L823
-.L778:
-	ldr	r0, [r4, #3368]
+	b	.L752
+.L708:
+	add	r2, r2, #1
 	add	r1, r1, #1
-	add	lr, r0, r2, lsl #2
-	ldr	lr, [lr, #4]
-	str	lr, [r0, r2, lsl #2]
+	ldr	r8, [ip, r2, lsl #2]
+	add	ip, ip, r2, lsl #2
 	lsl	r2, r2, #1
-	ldr	r0, [r4, #348]
-	add	lr, r0, r2
-	ldrh	lr, [lr, #2]
-	strh	lr, [r0, r2]	@ movhi
-	b	.L777
-.L775:
+	str	r8, [ip, #-4]
+	ldr	ip, [r4, #348]
+	ldrh	r2, [ip, r2]!
+	strh	r2, [ip, #-2]	@ movhi
+	b	.L707
+.L705:
 	sub	r3, r3, #1
 	sxth	r3, r3
-	b	.L774
-.L758:
-	ldrh	r1, [r5]
+	b	.L704
+.L690:
+	ldr	r8, .L756+24
 	movw	r2, #65535
+	ldrh	r1, [r8]
 	cmp	r1, r2
-	strheq	r6, [r5]	@ movhi
-	beq	.L824
-	ldrh	r0, [r5, #4]
+	strheq	r5, [r8]	@ movhi
+	beq	.L754
+	ldrh	r0, [r8, #4]
 	cmp	r0, r2
-	beq	.L782
+	beq	.L712
 	mov	r1, #1
 	bl	FtlFreeSysBlkQueueIn
-.L782:
-	ldr	r3, [r7, #4]
+.L712:
+	ldr	r3, [r6, #4]
 	ldr	r2, [r4, #2632]
 	cmp	r2, r3
-	strhcs	r6, [r5, #4]	@ movhi
-	bcs	.L757
-	ldrh	r3, [r5]
-	strh	r6, [r5]	@ movhi
-	strh	r3, [r5, #4]	@ movhi
-	ldr	r3, [r7, #4]
-.L824:
+	strhcs	r5, [r8, #4]	@ movhi
+	bcs	.L691
+	ldrh	r3, [r8]
+	strh	r3, [r8, #4]	@ movhi
+	strh	r5, [r8]	@ movhi
+	ldr	r3, [r6, #4]
+.L754:
 	str	r3, [r4, #2632]
-	b	.L757
-.L786:
+	b	.L691
+.L716:
 	ldr	r1, [r4, #3356]
 	ldrh	r3, [r1]
 	cmp	r3, #0
-	beq	.L788
-.L791:
-	ldr	r1, [r4, #348]
-	ldrh	r2, [r1]
+	beq	.L718
+.L721:
+	ldr	r0, [r4, #348]
+	ldrh	r2, [r0]
 	cmp	r2, #0
-	beq	.L789
-.L790:
+	beq	.L719
+.L720:
 	movw	r3, #3436
 	ldrh	r2, [r4, r3]
 	ldr	r3, [r4, #328]
 	cmp	r2, r3
-	bls	.L821
+	bls	.L750
+	ldr	r1, .L756+12
 	movw	r2, #1398
-	ldr	r1, .L826+12
-	ldr	r0, .L826+16
+	ldr	r0, .L756+16
 	bl	sftl_printk
-.L821:
+.L750:
 	mov	r0, #0
-	add	sp, sp, #36
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L788:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L718:
 	movw	r2, #3436
 	ldrh	r2, [r4, r2]
 	cmp	r2, #0
 	ldrne	r0, [r4, #328]
-	beq	.L791
-.L792:
+	beq	.L721
+.L722:
 	sxth	r2, r3
 	cmp	r2, r0
-	bcs	.L791
+	bcs	.L721
 	lsl	ip, r2, #1
 	add	r3, r3, #1
 	ldrh	ip, [r1, ip]
 	cmp	ip, #0
-	beq	.L792
+	beq	.L722
 	mov	r3, r2
 	mov	lr, #0
-.L793:
-	ldr	r1, [r4, #328]
-	cmp	r3, r1
-	bcs	.L791
+	b	.L723
+.L724:
+	sub	ip, r3, r2
 	ldr	r0, [r4, #3356]
 	lsl	r1, r3, #1
-	sub	ip, r3, r2
 	lsl	r5, ip, #1
 	ldrh	r6, [r0, r1]
 	strh	r6, [r0, r5]	@ movhi
 	ldr	r0, [r4, #3380]
 	ldr	r5, [r0, r3, lsl #2]
 	add	r3, r3, #1
-	sxth	r3, r3
 	str	r5, [r0, ip, lsl #2]
+	sxth	r3, r3
 	ldr	r0, [r4, #3356]
 	strh	lr, [r0, r1]	@ movhi
-	b	.L793
-.L789:
-	ldr	r3, .L826+20
-	ldrh	r0, [r3]
-	cmp	r0, #0
-	ldrhne	r0, [r3, #-24]!
-	movne	lr, r3
-	beq	.L790
-.L798:
+.L723:
+	ldr	r1, [r4, #328]
+	cmp	r3, r1
+	bcc	.L724
+	b	.L721
+.L719:
+	ldr	r1, .L756+20
+	ldrh	r3, [r1]
+	cmp	r3, #0
+	ldrhne	ip, [r1, #-24]!
+	beq	.L720
+.L728:
 	sxth	r3, r2
-	cmp	r3, r0
-	mov	r5, r3
-	bge	.L790
-	lsl	ip, r3, #1
+	mov	lr, r3
+	cmp	r3, ip
+	bge	.L720
+	lsl	r5, r3, #1
 	add	r2, r2, #1
-	ldrh	ip, [r1, ip]
-	cmp	ip, #0
-	beq	.L798
-	mov	ip, #0
-.L799:
-	ldrh	r2, [lr]
+	ldrh	r5, [r0, r5]
+	cmp	r5, #0
+	beq	.L728
+	mov	r5, #0
+.L729:
+	ldrh	r2, [r1]
 	cmp	r3, r2
-	bge	.L790
-	ldr	r1, [r4, #348]
+	bge	.L720
+	sub	ip, r3, lr
+	ldr	r0, [r4, #348]
 	lsl	r2, r3, #1
-	sub	r0, r3, r5
-	lsl	r6, r0, #1
-	ldrh	r7, [r1, r2]
-	strh	r7, [r1, r6]	@ movhi
-	ldr	r1, [r4, #3368]
-	ldr	r6, [r1, r3, lsl #2]
-	str	r6, [r1, r0, lsl #2]
-	ldr	r1, [r4, #348]
-	strh	ip, [r1, r2]	@ movhi
-	add	r2, r3, #1
-	sxth	r3, r2
-	b	.L799
-.L827:
+	lsl	r6, ip, #1
+	ldrh	r7, [r0, r2]
+	strh	r7, [r0, r6]	@ movhi
+	ldr	r0, [r4, #3368]
+	ldr	r6, [r0, r3, lsl #2]
+	add	r3, r3, #1
+	str	r6, [r0, ip, lsl #2]
+	sxth	r3, r3
+	ldr	r0, [r4, #348]
+	strh	r5, [r0, r2]	@ movhi
+	b	.L729
+.L757:
 	.align	2
-.L826:
+.L756:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+312
 	.word	.LANCHOR0+3436
 	.word	.LANCHOR1+231
 	.word	.LC8
 	.word	.LANCHOR0+344
-	.fnend
+	.word	.LANCHOR0+2624
 	.size	FtlScanSysBlk, .-FtlScanSysBlk
 	.align	2
 	.global	FtlLoadBbt
@@ -5478,16 +5818,18 @@
 	.fpu softvfp
 	.type	FtlLoadBbt, %function
 FtlLoadBbt:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	ldr	r4, .L861
-	ldr	r8, .L861+4
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L792
+	ldr	r7, .L792+4
+	ldr	r8, .L792+8
 	ldr	r3, [r4, #3300]
 	ldr	r6, [r4, #3332]
-	ldr	r7, .L861+8
 	str	r3, [r4, #3460]
 	str	r6, [r4, #3464]
 	bl	FtlBbtMemInit
@@ -5495,162 +5837,180 @@
 	ldrh	r5, [r4, r3]
 	sub	r5, r5, #1
 	uxth	r5, r5
-.L829:
-	ldrh	r3, [r8]
+.L759:
+	ldrh	r3, [r7]
 	sub	r3, r3, #16
 	cmp	r5, r3
-	ble	.L832
+	ble	.L764
+	mov	r2, #1
+	mov	r0, r8
+	mov	r1, r2
 	lsl	r3, r5, #10
-	mov	r2, #1
-	mov	r1, r2
-	mov	r0, r7
 	str	r3, [r4, #3456]
 	bl	FlashReadPages
 	ldr	r3, [r4, #3452]
 	cmn	r3, #1
-	bne	.L830
-	ldr	r3, [r4, #3456]
-	mov	r2, #1
-	mov	r1, r2
-	mov	r0, r7
-	add	r3, r3, #1
-	str	r3, [r4, #3456]
-	bl	FlashReadPages
-.L830:
-	ldr	r3, [r4, #3452]
-	cmn	r3, #1
-	beq	.L831
+	beq	.L760
+.L763:
 	ldrh	r2, [r6]
 	movw	r3, #61649
 	cmp	r2, r3
-	bne	.L831
+	bne	.L762
 	ldr	r2, [r6, #4]
-	ldr	r3, .L861+12
+	ldr	r3, .L792+12
 	str	r2, [r4, #360]
 	ldrh	r2, [r6, #8]
 	strh	r5, [r3]	@ movhi
 	strh	r2, [r3, #4]	@ movhi
-.L832:
-	ldr	r5, .L861+12
+.L764:
+	ldr	r5, .L792+12
 	movw	r2, #65535
 	ldrh	r3, [r5]
 	cmp	r3, r2
-	beq	.L846
+	beq	.L778
 	ldrh	r3, [r5, #4]
 	cmp	r3, r2
-	beq	.L836
-	lsl	r3, r3, #10
+	beq	.L768
 	mov	r2, #1
+	ldr	r0, .L792+8
 	mov	r1, r2
-	ldr	r0, .L861+8
+	lsl	r3, r3, #10
 	str	r3, [r4, #3456]
 	bl	FlashReadPages
 	ldr	r3, [r4, #3452]
 	cmn	r3, #1
-	beq	.L836
+	beq	.L768
 	ldrh	r2, [r6]
 	movw	r3, #61649
 	cmp	r2, r3
-	bne	.L836
+	bne	.L768
 	ldr	r3, [r6, #4]
 	ldr	r2, [r4, #360]
 	cmp	r3, r2
-	ldrhhi	r2, [r5, #4]
-	strhi	r3, [r4, #360]
-	ldrhhi	r3, [r6, #8]
-	strhhi	r2, [r5]	@ movhi
-	strhhi	r3, [r5, #4]	@ movhi
-.L836:
-	ldr	r8, .L861+8
-	mov	r1, #1
+	bls	.L768
+	str	r3, [r4, #360]
+	ldrh	r2, [r5, #4]
+	ldrh	r3, [r6, #8]
+	strh	r2, [r5]	@ movhi
+	strh	r3, [r5, #4]	@ movhi
+.L768:
 	ldrh	r0, [r5]
-	movw	r9, #61649
+	mov	r1, #1
+	ldr	r10, .L792+8
 	bl	FtlGetLastWrittenPage
-	sxth	r7, r0
-	add	r0, r0, #1
-	strh	r0, [r5, #2]	@ movhi
-.L838:
-	cmp	r7, #0
-	bge	.L841
+	sxth	r9, r0
+	mov	r8, r0
+	add	r3, r9, #1
+	mov	r7, #0
+	strh	r3, [r5, #2]	@ movhi
+.L770:
+	sub	r3, r8, r7
+	tst	r3, #32768
+	beq	.L773
+	ldr	r1, .L792+16
 	mov	r2, #251
-	ldr	r1, .L861+16
-	ldr	r0, .L861+20
+	ldr	r0, .L792+20
 	bl	sftl_printk
-.L840:
-	ldrh	r3, [r6, #10]
+.L772:
 	ldrh	r0, [r6, #12]
+	ldrh	r3, [r6, #10]
 	strh	r3, [r5, #6]	@ movhi
 	movw	r3, #65535
 	cmp	r0, r3
-	beq	.L843
+	beq	.L775
 	ldr	r2, [r4, #228]
 	cmp	r0, r2
-	beq	.L843
-	ldrh	r3, [r4, #242]
-	lsr	r3, r3, #2
-	cmp	r0, r3
-	cmpcc	r2, r3
-	bcs	.L843
+	beq	.L775
+	ldrh	r1, [r4, #242]
+	cmp	r0, r1, lsr #2
+	movcc	r3, #1
+	movcs	r3, #0
+	cmp	r2, r1, lsr #2
+	andcc	r3, r3, #1
+	movcs	r3, #0
+	cmp	r3, #0
+	beq	.L775
 	bl	FtlSysBlkNumInit
-.L843:
-	ldr	r6, .L861+24
+.L775:
+	ldr	r6, .L792+24
 	mov	r5, #0
-	ldr	r7, .L861+28
-.L844:
+	add	r7, r6, #3008
+.L776:
 	ldrh	r3, [r4, #254]
-	cmp	r5, r3
-	bcc	.L845
+	cmp	r3, r5
+	bhi	.L777
 	mov	r0, #0
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L831:
+	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L760:
+	ldr	r3, [r4, #3456]
+	mov	r2, #1
+	mov	r0, r8
+	mov	r1, r2
+	add	r3, r3, #1
+	str	r3, [r4, #3456]
+	bl	FlashReadPages
+	ldr	r3, [r4, #3452]
+	cmn	r3, #1
+	bne	.L763
+.L762:
 	sub	r5, r5, #1
 	uxth	r5, r5
-	b	.L829
-.L841:
-	ldrh	r3, [r5]
+	b	.L759
+.L773:
+	ldrh	r2, [r5]
+	sub	r3, r9, r7
+	mov	r0, r10
+	orr	r3, r3, r2, lsl #10
 	mov	r2, #1
-	mov	r1, r2
-	mov	r0, r8
-	orr	r3, r7, r3, lsl #10
 	str	r3, [r4, #3456]
+	mov	r1, r2
 	ldr	r3, [r4, #3300]
 	str	r3, [r4, #3460]
 	bl	FlashReadPages
 	ldr	r3, [r4, #3452]
 	cmn	r3, #1
-	beq	.L839
-	ldrh	r3, [r6]
-	cmp	r3, r9
-	beq	.L840
-.L839:
-	sub	r7, r7, #1
-	sxth	r7, r7
-	b	.L838
-.L845:
+	beq	.L771
+	ldrh	r2, [r6]
+	movw	r3, #61649
+	cmp	r2, r3
+	beq	.L772
+.L771:
+	add	r7, r7, #1
+	b	.L770
+.L777:
 	ldrh	r2, [r7]
-	ldr	r1, [r4, #3460]
-	ldr	r0, [r6, #4]!
+	ldr	r3, [r4, #3460]
+	ldr	r0, [r6], #4
+	mul	r1, r5, r2
 	lsl	r2, r2, #2
-	mla	r1, r5, r2, r1
 	add	r5, r5, #1
+	add	r1, r3, r1, lsl #2
 	bl	ftl_memcpy
-	b	.L844
-.L846:
+	b	.L776
+.L778:
 	mvn	r0, #0
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L862:
+	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L793:
 	.align	2
-.L861:
+.L792:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+298
 	.word	.LANCHOR0+3452
 	.word	.LANCHOR0+352
 	.word	.LANCHOR1+245
 	.word	.LC8
-	.word	.LANCHOR0+376
-	.word	.LANCHOR0+3388
-	.fnend
+	.word	.LANCHOR0+380
 	.size	FtlLoadBbt, .-FtlLoadBbt
+	.section	.rodata.str1.1
+.LC95:
+	.ascii	"prog read error: = %x\012\000"
+.LC96:
+	.ascii	"prog read REFRESH: = %x\012\000"
+.LC97:
+	.ascii	"prog read s error: = %x %x %x %x %x\012\000"
+.LC98:
+	.ascii	"prog read d error: = %x %x %x %x %x\012\000"
+	.text
 	.align	2
 	.global	FlashProgPages
 	.syntax unified
@@ -5658,231 +6018,233 @@
 	.fpu softvfp
 	.type	FlashProgPages, %function
 FlashProgPages:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 48
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #60
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #60
-	ldr	r6, .L904
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	ldr	r6, .L833
+	bic	r3, r3, #8128
+	mov	r7, r0
+	bic	r3, r3, #63
 	mov	r10, r1
 	mov	r4, r0
 	mov	r5, r0
-	ldr	r3, .L904+4
-	mov	r8, #0
-	ldrh	fp, [r6, #12]
-	mov	r9, r6
-	str	r2, [sp, #16]
-	ldr	r2, [r3]
-	str	r3, [sp, #20]
-	str	r2, [sp, #52]
-	lsl	r2, fp, #3
-	str	r2, [sp, #12]
-.L864:
-	cmp	r8, r10
-	bne	.L878
-	ldr	r7, .L904+8
-	mov	r5, #0
-	ldr	r9, .L904+12
-	ldr	r10, .L904+16
-.L879:
-	cmp	r8, r5
-	beq	.L872
+	str	r2, [fp, #-88]
+	mov	r9, #0
+	ldr	r3, [r3, #24]
+	str	r3, [fp, #-48]
+	ldrh	r3, [r6, #12]
+	str	r3, [fp, #-80]
+	lsl	r3, r3, #3
+	str	r3, [fp, #-84]
+.L795:
+	cmp	r9, r10
+	bne	.L808
+	mov	r0, #20
+	ldr	r5, .L833+4
+	ldr	r8, .L833+8
+	mla	r7, r0, r9, r7
+.L809:
+	cmp	r7, r4
+	beq	.L802
 	ldr	r2, [r6, #3320]
 	mov	r3, #0
+	sub	r0, fp, #68
 	mov	r1, #1
-	add	r0, sp, #32
 	str	r3, [r2]
 	ldr	r2, [r6, #3328]
 	str	r3, [r2]
+	ldr	r2, [fp, #-88]
 	ldr	r3, [r4, #4]
-	ldr	r2, [sp, #16]
-	str	r3, [sp, #36]
+	str	r3, [fp, #-64]
 	ldr	r3, [r6, #3320]
-	str	r3, [sp, #40]
+	str	r3, [fp, #-60]
 	ldr	r3, [r6, #3328]
-	str	r3, [sp, #44]
+	str	r3, [fp, #-56]
 	bl	FlashReadPages
-	ldr	fp, [sp, #32]
-	cmn	fp, #1
-	bne	.L880
+	ldr	r9, [fp, #-68]
+	cmn	r9, #1
+	bne	.L810
 	ldr	r1, [r4, #4]
-	mov	r0, r7
+	mov	r0, r5
 	bl	sftl_printk
-	str	fp, [r4]
-.L880:
-	ldr	fp, [sp, #32]
-	cmp	fp, #256
-	bne	.L881
+	str	r9, [r4]
+.L810:
+	ldr	r9, [fp, #-68]
+	cmp	r9, #256
+	bne	.L811
 	ldr	r1, [r4, #4]
-	mov	r0, r9
+	mov	r0, r8
 	bl	sftl_printk
-	str	fp, [r4]
-.L881:
+	str	r9, [r4]
+.L811:
 	ldr	r3, [r4, #12]
 	cmp	r3, #0
-	beq	.L882
-	ldr	r1, [r6, #3328]
+	beq	.L812
+	ldr	r1, .L833
 	ldr	r2, [r3]
+	ldr	r1, [r1, #3328]
 	ldr	r0, [r1]
 	cmp	r2, r0
-	bne	.L883
+	bne	.L813
 	ldr	lr, [r3, #8]
 	ldr	ip, [r1, #8]
 	cmp	lr, ip
-	beq	.L882
-.L883:
+	beq	.L812
+.L813:
 	ldr	r1, [r1, #4]
-	stm	sp, {r0, r1}
-	mov	r0, r10
+	strd	r0, [sp]
+	ldr	r0, .L833+12
 	ldr	r3, [r3, #4]
 	ldr	r1, [r4, #4]
 	bl	sftl_printk
 	mvn	r3, #0
 	str	r3, [r4]
-.L882:
+.L812:
 	ldr	r3, [r4, #8]
 	cmp	r3, #0
-	beq	.L884
-	ldr	r1, [r6, #3320]
+	beq	.L814
+	ldr	r1, .L833
 	ldr	r2, [r3]
+	ldr	r1, [r1, #3320]
 	ldr	r0, [r1]
 	cmp	r2, r0
-	bne	.L885
+	bne	.L815
 	ldr	lr, [r3, #2048]
 	ldr	ip, [r1, #2048]
 	cmp	lr, ip
-	beq	.L884
-.L885:
+	beq	.L814
+.L815:
 	ldr	r1, [r1, #4]
-	stm	sp, {r0, r1}
-	ldr	r0, .L904+20
+	strd	r0, [sp]
+	ldr	r0, .L833+16
 	ldr	r3, [r3, #4]
 	ldr	r1, [r4, #4]
 	bl	sftl_printk
 	mvn	r3, #0
 	str	r3, [r4]
-.L884:
-	add	r5, r5, #1
+.L814:
 	add	r4, r4, #20
-	b	.L879
-.L878:
+	b	.L809
+.L808:
 	ldr	r3, [r5, #8]
 	cmp	r3, #0
-	beq	.L865
+	beq	.L796
 	ldr	r3, [r5, #12]
 	cmp	r3, #0
-	bne	.L866
-.L865:
+	bne	.L797
+.L796:
+	ldr	r1, .L833+20
 	mov	r2, #148
-	ldr	r1, .L904+24
-	ldr	r0, .L904+28
+	ldr	r0, .L833+24
 	bl	sftl_printk
-.L866:
-	add	r2, sp, #24
-	add	r1, sp, #28
+.L797:
+	sub	r2, fp, #76
+	sub	r1, fp, #72
 	mov	r0, r5
 	bl	l2p_addr_tran
-	ldr	r7, [sp, #24]
-	cmp	r7, #3
-	bls	.L867
-.L903:
+	ldr	r8, [fp, #-76]
+	cmp	r8, #3
+	bls	.L798
+.L832:
 	mvn	r3, #0
 	str	r3, [r5]
-	b	.L868
-.L867:
-	cmp	r7, #0
-	bne	.L869
-	ldr	r3, [sp, #28]
-	ldr	r2, [sp, #12]
+	b	.L799
+.L798:
+	cmp	r8, #0
+	bne	.L800
+	ldr	r3, [fp, #-72]
+	ldr	r2, [fp, #-84]
 	cmp	r2, r3
-	bls	.L869
-	ldr	r5, .L904+24
-	ldr	r6, .L904+32
-	ldr	r8, .L904+36
-	b	.L901
-.L871:
+	bls	.L800
+	ldr	r6, .L833+20
+	ldr	r5, .L833+28
+.L801:
+	ldr	r2, [r4, #4]
 	mvn	r3, #0
-	ldr	r2, [r4, #-16]
-	str	r3, [r4, #-20]
-	mov	r1, r5
-	mov	r0, r6
-	add	r7, r7, #1
+	mov	r1, r6
+	str	r3, [r4]
+	mov	r0, r5
+	add	r8, r8, #1
 	bl	sftl_printk
+	ldr	r1, [r4, #8]
+	ldr	r0, .L833+32
 	mov	r3, #16
 	mov	r2, #4
-	ldr	r1, [r4, #-12]
-	mov	r0, r8
+	add	r4, r4, #20
 	bl	rknand_print_hex
 	mov	r3, #4
 	ldr	r1, [r4, #-8]
 	mov	r2, r3
-	ldr	r0, .L904+40
+	ldr	r0, .L833+36
 	bl	rknand_print_hex
-.L901:
-	cmp	r7, r10
-	add	r4, r4, #20
-	bne	.L871
+	cmp	r10, r8
+	bne	.L801
 	bl	dump_stack
-.L872:
-	ldr	r3, [sp, #20]
-	mov	r0, #0
-	ldr	r2, [sp, #52]
-	ldr	r3, [r3]
+.L802:
+	mov	r3, sp
+	ldr	r2, [fp, #-48]
+	bic	r3, r3, #8128
+	bic	r3, r3, #63
+	ldr	r3, [r3, #24]
 	cmp	r2, r3
-	beq	.L887
+	beq	.L817
 	bl	__stack_chk_fail
-.L869:
+.L800:
 	ldr	r1, [r5, #8]
 	tst	r1, #63
-	moveq	r7, r1
-	beq	.L873
-	ldr	r7, [r9, #3320]
-	cmp	r1, r7
-	beq	.L873
-	ldr	r3, .L904+44
-	mov	r0, r7
+	moveq	r8, r1
+	beq	.L803
+	ldr	r8, [r6, #3320]
+	cmp	r8, r1
+	beq	.L803
+	ldr	r3, .L833+40
+	mov	r0, r8
 	ldrh	r2, [r3]
 	lsl	r2, r2, #9
 	bl	ftl_memcpy
-.L873:
+.L803:
 	ldr	r3, [r5, #12]
-	mov	r2, r7
-	ldr	r1, [sp, #28]
-	ldrb	r0, [sp, #24]	@ zero_extendqisi2
-	ldr	ip, [r9, #3252]
+	mov	r2, r8
+	ldr	r1, [fp, #-72]
+	ldrb	r0, [fp, #-76]	@ zero_extendqisi2
+	ldr	ip, [r6, #3252]
 	blx	ip
 	cmp	r0, #0
-	mvnne	r3, #0
 	streq	r0, [r5]
+	mvnne	r3, #0
 	strne	r3, [r5]
-	ldrh	r3, [r9, #14]
+	ldrh	r3, [r6, #14]
 	cmp	r3, #4
-	bne	.L868
+	bne	.L799
+	ldr	r0, [fp, #-80]
+	add	r2, r8, #2048
 	ldr	r3, [r5, #12]
-	add	r2, r7, #2048
-	ldr	r1, [sp, #28]
-	ldrb	r0, [sp, #24]	@ zero_extendqisi2
+	ldr	r1, [fp, #-72]
+	ldr	ip, [r6, #3252]
 	add	r3, r3, #8
-	ldr	ip, [r9, #3252]
-	add	r1, fp, r1
+	add	r1, r0, r1
+	ldrb	r0, [fp, #-76]	@ zero_extendqisi2
 	blx	ip
 	cmp	r0, #0
-	bne	.L903
-.L868:
-	add	r8, r8, #1
+	bne	.L832
+.L799:
+	add	r9, r9, #1
 	add	r5, r5, #20
-	b	.L864
-.L887:
-	add	sp, sp, #60
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L905:
+	b	.L795
+.L817:
+	mov	r0, #0
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L834:
 	.align	2
-.L904:
+.L833:
 	.word	.LANCHOR0
-	.word	__stack_chk_guard
 	.word	.LC95
 	.word	.LC96
 	.word	.LC97
@@ -5893,7 +6255,6 @@
 	.word	.LC87
 	.word	.LC88
 	.word	.LANCHOR0+258
-	.fnend
 	.size	FlashProgPages, .-FlashProgPages
 	.align	2
 	.global	FtlLowFormatEraseBlock
@@ -5902,236 +6263,234 @@
 	.fpu softvfp
 	.type	FtlLowFormatEraseBlock, %function
 FtlLowFormatEraseBlock:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 16
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r10, #0
-	ldr	r4, .L949
-	mov	r6, r1
-	mov	r7, r10
-	mov	r5, r10
-	mov	r9, #20
-	.pad #20
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #20
-	add	fp, r4, #312
-	str	r0, [sp, #4]
-	str	r0, [r4, #3284]
-.L907:
-	ldrh	r1, [r4, #232]
-	uxth	r3, r10
-	cmp	r1, r3
-	bhi	.L911
-	cmp	r7, #0
-	beq	.L906
-	mov	r8, #0
-	mov	r9, #20
-	mov	r2, r7
-	mov	r1, #0
-	ldr	r0, [r4, #3268]
-	bl	FlashEraseBlocks
-.L914:
-	uxth	r3, r8
-	cmp	r7, r3
-	bhi	.L916
-.L917:
-	cmp	r6, #0
-	mov	r8, #0
-	ldrne	r3, .L949+4
-	mov	fp, #20
-	moveq	r3, #2
-	streq	r6, [sp, #8]
-	streq	r3, [sp, #12]
-	ldrhne	r3, [r3]
-	strne	r3, [sp, #12]
-	movne	r3, #1
-	strne	r3, [sp, #8]
-.L926:
-	mov	r10, #0
-	mov	r7, r10
-.L918:
-	ldrh	r1, [r4, #232]
-	uxth	r3, r10
-	cmp	r1, r3
-	bhi	.L921
-	cmp	r7, #0
-	beq	.L906
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L877
 	mov	r9, #0
-	mov	r3, #1
-	ldr	r2, [sp, #8]
-	mov	r1, r7
-	ldr	r0, [r4, #3268]
-	bl	FlashProgPages
-.L923:
-	uxth	r3, r9
-	cmp	r7, r3
-	bhi	.L925
-	add	r8, r8, #1
-	ldr	r2, [sp, #12]
-	uxth	r3, r8
-	cmp	r2, r3
-	bhi	.L926
-	mov	r8, #0
-	mov	r9, #20
-.L927:
-	uxth	r3, r8
-	cmp	r7, r3
-	bhi	.L929
-	ldr	r3, [sp, #4]
-	adds	r6, r6, #0
-	movne	r6, #1
-	cmp	r3, #63
-	orrls	r6, r6, #1
+	mov	r6, r9
+	mov	r5, r9
+	add	r10, r4, #312
+	strd	r0, [fp, #-52]
+	mov	r8, #20
+	str	r0, [r4, #3284]
+.L836:
+	ldrh	r1, [r4, #232]
+	uxth	r2, r9
+	cmp	r1, r2
+	bhi	.L840
 	cmp	r6, #0
-	beq	.L906
-	mov	r2, r7
-	ldr	r1, [sp, #8]
+	beq	.L835
+	mov	r7, #0
+	mov	r8, #20
 	ldr	r0, [r4, #3268]
+	mov	r2, r6
+	mov	r1, #0
 	bl	FlashEraseBlocks
-.L906:
-	mov	r0, r5
-	add	sp, sp, #20
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L911:
-	uxth	r3, r10
-	ldr	r0, [r4, #3268]
-	mov	r2, #0
-	mul	r1, r9, r3
-	add	r3, r4, r3
-	str	r2, [r0, r1]
-	ldr	r1, [sp, #4]
-	ldrb	r0, [r3, #260]	@ zero_extendqisi2
-	bl	V2P_block
-	cmp	r6, #0
-	mov	r8, r0
-	beq	.L908
-	bl	IsBlkInVendorPart
-	cmp	r0, #0
-	bne	.L909
-.L908:
-	mov	r0, r8
-	bl	FtlBbmIsBadBlock
-	cmp	r0, #0
-	addne	r5, r5, #1
-	uxthne	r5, r5
-	bne	.L909
-	ldr	r1, [r4, #3268]
-	lsl	r8, r8, #10
-	ldr	r3, [r4, #3316]
-	mla	r1, r9, r7, r1
-	str	r3, [r1, #8]
-	ldrh	r3, [fp]
-	str	r8, [r1, #4]
-	mul	r3, r7, r3
-	add	r7, r7, #1
-	uxth	r7, r7
-	add	r0, r3, #3
-	cmp	r3, #0
-	movlt	r3, r0
-	ldr	r0, [r4, #3336]
-	bic	r3, r3, #3
-	add	r3, r0, r3
-	str	r3, [r1, #12]
-.L909:
-	add	r10, r10, #1
-	b	.L907
-.L916:
-	mul	r3, r9, r8
+.L844:
+	mul	r3, r8, r7
 	ldr	r2, [r4, #3268]
 	add	r1, r2, r3
 	ldr	r3, [r2, r3]
 	cmn	r3, #1
-	bne	.L915
+	bne	.L843
 	ldr	r0, [r1, #4]
 	add	r5, r5, #1
 	uxth	r5, r5
 	ubfx	r0, r0, #10, #16
 	bl	FtlBbmMapBadBlock
-.L915:
-	add	r8, r8, #1
-	b	.L914
-.L921:
-	uxth	r3, r10
-	ldr	r0, [r4, #3268]
-	mov	r2, #0
-	mul	r1, fp, r3
-	add	r3, r4, r3
-	str	r2, [r0, r1]
-	ldr	r1, [sp, #4]
-	ldrb	r0, [r3, #260]	@ zero_extendqisi2
-	bl	V2P_block
-	cmp	r6, #0
-	mov	r9, r0
-	beq	.L919
-	bl	IsBlkInVendorPart
-	cmp	r0, #0
-	bne	.L920
-.L919:
-	mov	r0, r9
-	bl	FtlBbmIsBadBlock
-	cmp	r0, #0
-	bne	.L920
-	ldr	r1, [r4, #3268]
-	add	r9, r8, r9, lsl #10
-	ldr	r3, [r4, #3312]
-	mla	r1, fp, r7, r1
-	str	r3, [r1, #8]
-	ldr	r3, .L949+8
-	str	r9, [r1, #4]
-	ldrh	r3, [r3]
-	mul	r3, r7, r3
+.L843:
 	add	r7, r7, #1
-	uxth	r7, r7
-	add	r0, r3, #3
+	uxth	r3, r7
+	cmp	r6, r3
+	bhi	.L844
+.L845:
+	ldr	r3, [fp, #-48]
+	mov	r9, #0
 	cmp	r3, #0
-	movlt	r3, r0
-	ldr	r0, [r4, #3316]
-	bic	r3, r3, #3
-	add	r3, r0, r3
-	str	r3, [r1, #12]
-.L920:
-	add	r10, r10, #1
-	b	.L918
-.L925:
-	mul	r3, fp, r9
+	moveq	r3, #2
+	movne	r8, #1
+	ldrne	r3, .L877+4
+	ldreq	r8, [fp, #-48]
+	streq	r3, [fp, #-56]
+	ldrhne	r3, [r3]
+	strne	r3, [fp, #-56]
+.L853:
+	mov	r10, #0
+	mov	r6, r10
+.L846:
+	ldrh	r1, [r4, #232]
+	uxth	r2, r10
+	cmp	r1, r2
+	bhi	.L849
+	cmp	r6, #0
+	beq	.L835
+	mov	r7, #0
+	mov	r10, #20
+	ldr	r0, [r4, #3268]
+	mov	r2, r8
+	mov	r1, r6
+	mov	r3, #1
+	bl	FlashProgPages
+.L852:
+	mul	r3, r10, r7
 	ldr	r2, [r4, #3268]
 	add	r1, r2, r3
 	ldr	r3, [r2, r3]
 	cmp	r3, #0
-	beq	.L924
+	beq	.L851
 	ldr	r0, [r1, #4]
 	add	r5, r5, #1
 	uxth	r5, r5
 	ubfx	r0, r0, #10, #16
 	bl	FtlBbmMapBadBlock
-.L924:
+.L851:
+	add	r7, r7, #1
+	uxth	r3, r7
+	cmp	r6, r3
+	bhi	.L852
 	add	r9, r9, #1
-	b	.L923
-.L929:
-	cmp	r6, #0
-	beq	.L928
-	mul	r3, r9, r8
+	ldr	r2, [fp, #-56]
+	uxth	r3, r9
+	cmp	r2, r3
+	bhi	.L853
+	mov	r7, #0
+	mov	r9, #20
+.L855:
+	ldr	r3, [fp, #-48]
+	cmp	r3, #0
+	beq	.L854
+	mul	r3, r9, r7
 	ldr	r2, [r4, #3268]
 	add	r1, r2, r3
 	ldr	r3, [r2, r3]
 	cmp	r3, #0
-	bne	.L928
+	bne	.L854
 	ldr	r0, [r1, #4]
 	mov	r1, #1
 	ubfx	r0, r0, #10, #16
 	bl	FtlFreeSysBlkQueueIn
-.L928:
-	add	r8, r8, #1
-	b	.L927
-.L950:
+.L854:
+	add	r7, r7, #1
+	uxth	r3, r7
+	cmp	r6, r3
+	bhi	.L855
+	ldr	r3, [fp, #-48]
+	subs	r1, r3, #0
+	ldr	r3, [fp, #-52]
+	movne	r1, #1
+	cmp	r3, #63
+	orrls	r1, r1, #1
+	cmp	r1, #0
+	beq	.L835
+	ldr	r0, [r4, #3268]
+	mov	r2, r6
+	mov	r1, r8
+	bl	FlashEraseBlocks
+.L835:
+	mov	r0, r5
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L840:
+	uxth	r2, r9
+	ldr	r0, [r4, #3268]
+	mov	r3, #0
+	mul	r1, r8, r2
+	add	r2, r4, r2
+	str	r3, [r0, r1]
+	ldr	r1, [fp, #-52]
+	ldrb	r0, [r2, #260]	@ zero_extendqisi2
+	bl	V2P_block
+	ldr	r3, [fp, #-48]
+	mov	r7, r0
+	cmp	r3, #0
+	beq	.L837
+	bl	IsBlkInVendorPart
+	cmp	r0, #0
+	bne	.L838
+.L837:
+	mov	r0, r7
+	bl	FtlBbmIsBadBlock
+	cmp	r0, #0
+	addne	r5, r5, #1
+	uxthne	r5, r5
+	bne	.L838
+	ldr	r2, [r4, #3268]
+	lsl	r7, r7, #10
+	ldrh	r0, [r10]
+	ldr	r1, [r4, #3316]
+	mla	r2, r8, r6, r2
+	mul	r0, r6, r0
+	add	r6, r6, #1
+	cmp	r0, #0
+	uxth	r6, r6
+	str	r1, [r2, #8]
+	add	r1, r0, #3
+	movge	r1, r0
+	ldr	r0, [r4, #3336]
+	bic	r1, r1, #3
+	str	r7, [r2, #4]
+	add	r1, r0, r1
+	str	r1, [r2, #12]
+.L838:
+	add	r9, r9, #1
+	b	.L836
+.L849:
+	uxth	r2, r10
+	mov	r3, #20
+	ldr	r0, [r4, #3268]
+	mul	r1, r3, r2
+	add	r2, r4, r2
+	mov	r3, #0
+	str	r3, [r0, r1]
+	ldr	r1, [fp, #-52]
+	ldrb	r0, [r2, #260]	@ zero_extendqisi2
+	bl	V2P_block
+	ldr	r3, [fp, #-48]
+	mov	r7, r0
+	cmp	r3, #0
+	beq	.L847
+	bl	IsBlkInVendorPart
+	cmp	r0, #0
+	bne	.L848
+.L847:
+	mov	r0, r7
+	bl	FtlBbmIsBadBlock
+	cmp	r0, #0
+	bne	.L848
+	ldr	r2, [r4, #3268]
+	mov	r3, #20
+	ldr	r1, [r4, #3312]
+	add	r7, r9, r7, lsl #10
+	mla	r2, r3, r6, r2
+	ldr	r3, .L877+8
+	ldrh	r0, [r3]
+	str	r1, [r2, #8]
+	str	r7, [r2, #4]
+	mul	r0, r6, r0
+	add	r6, r6, #1
+	cmp	r0, #0
+	add	r1, r0, #3
+	movge	r1, r0
+	ldr	r0, [r4, #3316]
+	bic	r1, r1, #3
+	uxth	r6, r6
+	add	r1, r0, r1
+	str	r1, [r2, #12]
+.L848:
+	add	r10, r10, #1
+	b	.L846
+.L878:
 	.align	2
-.L949:
+.L877:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+304
 	.word	.LANCHOR0+312
-	.fnend
 	.size	FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
 	.align	2
 	.global	FlashTestBlk
@@ -6140,83 +6499,90 @@
 	.fpu softvfp
 	.type	FlashTestBlk, %function
 FlashTestBlk:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 88
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L958
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #92
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
 	cmp	r0, #11
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	.pad #88
-	sub	sp, sp, #88
-	movls	r4, #0
-	mov	r6, r3
-	ldr	r2, [r3]
-	str	r2, [sp, #84]
-	bls	.L951
-	ldr	r4, .L958+4
-	mov	r5, r0
+	bic	r6, r3, #8128
+	mov	r4, r0
+	bic	r6, r6, #63
+	movls	r5, #0
+	ldr	r3, [r6, #24]
+	str	r3, [fp, #-32]
+	bls	.L879
+	ldr	r5, .L885
+	sub	r0, fp, #96
 	mov	r2, #32
-	add	r0, sp, #20
 	mov	r1, #165
-	str	r0, [sp, #12]
-	ldr	r3, [r4, #3324]
-	lsl	r5, r5, #10
-	str	r3, [sp, #8]
+	str	r0, [fp, #-104]
+	lsl	r4, r4, #10
+	ldr	r3, [r5, #3324]
+	str	r3, [fp, #-108]
 	bl	ftl_memset
+	ldr	r0, [r5, #3324]
 	mov	r2, #8
 	mov	r1, #90
-	ldr	r0, [r4, #3324]
 	bl	ftl_memset
 	mov	r2, #1
-	mov	r0, sp
+	sub	r0, fp, #116
 	mov	r1, r2
-	str	r5, [sp, #4]
+	str	r4, [fp, #-112]
 	bl	FlashEraseBlocks
 	mov	r3, #1
-	mov	r0, sp
+	sub	r0, fp, #116
 	mov	r2, r3
 	mov	r1, r3
 	bl	FlashProgPages
-	ldr	r3, [sp]
+	ldr	r3, [fp, #-116]
 	cmp	r3, #0
-	mvnne	r4, #0
-	bne	.L953
-	add	r3, r5, #1
-	mov	r0, sp
-	str	r3, [sp, #4]
+	mvnne	r5, #0
+	bne	.L881
+	add	r3, r4, #1
+	sub	r0, fp, #116
+	str	r3, [fp, #-112]
 	mov	r3, #1
 	mov	r2, r3
 	mov	r1, r3
 	bl	FlashProgPages
-	ldr	r4, [sp]
-	adds	r4, r4, #0
-	movne	r4, #1
-	rsb	r4, r4, #0
-.L953:
+	ldr	r5, [fp, #-116]
+	subs	r5, r5, #0
+	movne	r5, #1
+	rsb	r5, r5, #0
+.L881:
+	sub	r0, fp, #116
 	mov	r2, #1
 	mov	r1, #0
-	mov	r0, sp
-	str	r5, [sp, #4]
+	str	r4, [fp, #-112]
 	bl	FlashEraseBlocks
-.L951:
-	ldr	r2, [sp, #84]
-	mov	r0, r4
-	ldr	r3, [r6]
+.L879:
+	ldr	r2, [fp, #-32]
+	ldr	r3, [r6, #24]
 	cmp	r2, r3
-	beq	.L954
+	beq	.L882
 	bl	__stack_chk_fail
-.L954:
-	add	sp, sp, #88
-	@ sp needed
-	pop	{r4, r5, r6, pc}
-.L959:
+.L882:
+	mov	r0, r5
+	sub	sp, fp, #24
+	ldmfd	sp, {r4, r5, r6, fp, sp, pc}
+.L886:
 	.align	2
-.L958:
-	.word	__stack_chk_guard
+.L885:
 	.word	.LANCHOR0
-	.fnend
 	.size	FlashTestBlk, .-FlashTestBlk
+	.section	.rodata.str1.1
+.LC99:
+	.ascii	"FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
+.LC100:
+	.ascii	"FtlBbmTblFlush error:%x\012\000"
+.LC101:
+	.ascii	"FtlBbmTblFlush error = %x error count = %d\012\000"
+	.text
 	.align	2
 	.global	FtlBbmTblFlush
 	.syntax unified
@@ -6224,150 +6590,143 @@
 	.fpu softvfp
 	.type	FtlBbmTblFlush, %function
 FtlBbmTblFlush:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #12
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L895
 	mov	r5, #0
-	ldr	r4, .L973
 	mov	r1, #0
-	ldr	r7, .L973+4
+	add	r6, r4, #380
+	add	r7, r6, #3008
 	ldr	r3, [r4, #3332]
-	add	r6, r4, #376
-	ldr	r0, [r4, #3300]
 	str	r3, [r4, #3464]
 	movw	r3, #310
+	ldr	r0, [r4, #3300]
 	ldrh	r2, [r4, r3]
 	str	r0, [r4, #3460]
 	bl	ftl_memset
-.L961:
+.L888:
 	ldrh	r3, [r4, #254]
-	cmp	r5, r3
-	blt	.L962
-	ldr	r7, [r4, #3464]
+	cmp	r3, r5
+	bgt	.L889
+	ldr	r6, [r4, #3464]
 	mov	r2, #16
+	ldr	r5, .L895+4
 	mov	r1, #255
-	ldr	r6, .L973+8
-	ldr	r10, .L973+12
-	mov	r5, #0
-	mov	r0, r7
-	mov	r8, r5
+	mov	r0, r6
+	mov	r7, #0
 	bl	ftl_memset
-	ldr	r3, .L973+16
-	sub	r9, r6, #48
-	strh	r3, [r7]	@ movhi
+	ldr	r3, .L895+8
+	strh	r3, [r6]	@ movhi
+	mov	r9, r5
+	mov	r8, r7
 	ldr	r3, [r4, #360]
-	str	r3, [r7, #4]
-	ldrh	r3, [r6]
-	strh	r3, [r7, #2]	@ movhi
-	ldrh	r3, [r6, #4]
-	strh	r3, [r7, #8]	@ movhi
-	ldrh	r3, [r6, #6]
-	strh	r3, [r7, #10]	@ movhi
+	str	r3, [r6, #4]
+	ldrh	r3, [r9], #-48
+	strh	r3, [r6, #2]	@ movhi
+	ldr	r3, [r4, #356]
+	str	r3, [r6, #8]
 	ldr	r3, [r4, #228]
-	strh	r3, [r7, #12]	@ movhi
+	strh	r3, [r6, #12]	@ movhi
 	ldr	r3, [r4, #2604]
-	strh	r3, [r7, #14]	@ movhi
-.L963:
+	strh	r3, [r6, #14]	@ movhi
+.L890:
 	ldr	r3, [r4, #3300]
-	mov	fp, #0
-	ldrh	r2, [r6, #2]
-	ldrh	r1, [r6]
+	mov	r10, #0
+	ldrh	r2, [r5, #2]
+	ldrh	r1, [r5]
 	str	r3, [r4, #3460]
 	ldr	r3, [r4, #3332]
-	str	fp, [r4, #3452]
 	str	r3, [r4, #3464]
 	orr	r3, r2, r1, lsl #10
-	ldrh	r0, [r7, #10]
 	str	r3, [r4, #3456]
-	ldrh	r3, [r6, #4]
-	str	r0, [sp]
-	mov	r0, r10
+	ldrh	r3, [r6, #10]
+	str	r3, [sp]
+	ldr	r0, .L895+12
+	ldrh	r3, [r5, #4]
+	str	r10, [r4, #3452]
 	bl	sftl_printk
 	ldrh	r3, [r9]
-	ldrh	r2, [r6, #2]
+	ldrh	r2, [r5, #2]
 	sub	r3, r3, #1
 	cmp	r2, r3
-	blt	.L964
+	blt	.L891
 	ldr	r3, [r4, #360]
-	ldrh	r2, [r6]
 	ldr	r0, [r4, #3268]
 	add	r3, r3, #1
-	strh	fp, [r6, #2]	@ movhi
 	str	r3, [r4, #360]
-	str	r3, [r7, #4]
-	ldrh	r3, [r6, #4]
-	strh	r2, [r7, #8]	@ movhi
-	strh	r2, [r6, #4]	@ movhi
+	str	r3, [r6, #4]
+	ldrh	r2, [r5]
+	ldrh	r3, [r5, #4]
+	strh	r2, [r6, #8]	@ movhi
+	strh	r2, [r5, #4]	@ movhi
 	mov	r2, #1
-	strh	r3, [r6]	@ movhi
+	strh	r3, [r5]	@ movhi
 	mov	r1, r2
 	lsl	r3, r3, #10
 	str	r3, [r4, #3456]
 	str	r3, [r0, #4]
+	strh	r10, [r5, #2]	@ movhi
 	bl	FlashEraseBlocks
-.L964:
+.L891:
 	mov	r3, #1
-	ldr	r0, .L973+20
+	ldr	r0, .L895+16
 	mov	r2, r3
 	mov	r1, r3
 	bl	FlashProgPages
-	ldrh	r3, [r6, #2]
+	ldrh	r3, [r5, #2]
+	ldr	r0, [r4, #3452]
 	add	r3, r3, #1
-	strh	r3, [r6, #2]	@ movhi
-	ldr	r3, [r4, #3452]
-	cmn	r3, #1
-	bne	.L965
-	add	r5, r5, #1
+	strh	r3, [r5, #2]	@ movhi
+	cmn	r0, #1
+	bne	.L892
+	add	r7, r7, #1
 	ldr	r1, [r4, #3456]
-	uxth	r5, r5
-	ldr	r0, .L973+24
+	ldr	r0, .L895+20
+	uxth	r7, r7
 	bl	sftl_printk
-	cmp	r5, #3
-	bls	.L963
-	mov	r2, r5
+	cmp	r7, #3
+	bls	.L890
 	ldr	r1, [r4, #3456]
-	ldr	r0, .L973+28
+	mov	r2, r7
+	ldr	r0, .L895+24
 	bl	sftl_printk
-.L967:
-	b	.L967
-.L962:
+.L894:
+	b	.L894
+.L889:
 	ldrh	r2, [r7]
 	ldr	r3, [r4, #3460]
-	ldr	r1, [r6, #4]!
-	mul	r0, r2, r5
+	ldr	r1, [r6], #4
+	mul	r0, r5, r2
 	lsl	r2, r2, #2
 	add	r5, r5, #1
 	add	r0, r3, r0, lsl #2
 	bl	ftl_memcpy
-	b	.L961
-.L968:
-	mov	r8, #1
-	b	.L963
-.L965:
+	b	.L888
+.L892:
 	add	r8, r8, #1
-	cmp	r8, #1
-	ble	.L968
-	cmp	r3, #256
-	beq	.L963
-	mov	r0, #0
-	add	sp, sp, #12
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L974:
+	cmp	r0, #256
+	cmpne	r8, #1
+	movle	r0, #1
+	movgt	r0, #0
+	ble	.L890
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L896:
 	.align	2
-.L973:
+.L895:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+3388
 	.word	.LANCHOR0+352
-	.word	.LC99
 	.word	-3887
+	.word	.LC99
 	.word	.LANCHOR0+3452
 	.word	.LC100
 	.word	.LC101
-	.fnend
 	.size	FtlBbmTblFlush, .-FtlBbmTblFlush
 	.align	2
 	.global	allocate_data_superblock
@@ -6376,246 +6735,250 @@
 	.fpu softvfp
 	.type	allocate_data_superblock, %function
 allocate_data_superblock:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 16
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	@ args = 0, pretend = 0, frame = 8
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L929
 	mov	r5, r0
-	ldr	r4, .L1012
-	.pad #20
-	sub	sp, sp, #20
-	add	fp, r4, #2528
-.L976:
-	ldr	r2, .L1012+4
+.L898:
+	ldr	r2, .L929+4
 	ldrh	r3, [r4, #224]
 	ldrh	r2, [r2]
 	add	r3, r3, r2
 	ldrh	r2, [r4, #240]
 	cmp	r3, r2
-	ble	.L977
+	ble	.L899
+	ldr	r1, .L929+8
 	movw	r2, #2667
-	ldr	r1, .L1012+8
-	ldr	r0, .L1012+12
+	ldr	r0, .L929+12
 	bl	sftl_printk
-.L977:
-	ldr	r3, .L1012+16
+.L899:
+	ldr	r3, .L929+16
 	cmp	r5, r3
 	movne	r1, #0
-	bne	.L978
+	bne	.L900
 	ldrh	r3, [r4, #224]
 	ldr	r1, [r4, #3164]
 	mul	r2, r1, r3
 	lsr	r1, r3, #1
-	add	r1, r1, #1
+	movw	r3, #65535
 	add	r1, r1, r2, lsr #2
 	uxth	r1, r1
-	cmp	r1, #0
-	subne	r1, r1, #1
-	uxthne	r1, r1
-.L978:
-	ldr	r0, .L1012+20
+	cmp	r1, r3
+	moveq	r1, #0
+.L900:
+	ldr	r0, .L929+20
 	bl	List_pop_index_node
 	ldrh	r3, [r4, #224]
 	mov	r6, r0
 	uxth	r8, r0
 	cmp	r3, #0
-	bne	.L979
+	bne	.L901
+	ldr	r1, .L929+8
 	movw	r2, #2676
-	ldr	r1, .L1012+8
-	ldr	r0, .L1012+12
+	ldr	r0, .L929+12
 	bl	sftl_printk
-.L979:
+.L901:
 	ldrh	r3, [r4, #224]
 	sub	r3, r3, #1
 	strh	r3, [r4, #224]	@ movhi
 	ldrh	r3, [r4, #240]
 	cmp	r3, r8
-	bls	.L976
+	bls	.L898
 	uxth	r6, r6
 	ldr	r3, [r4, #72]
 	lsl	r6, r6, #1
 	ldrh	r7, [r3, r6]
 	cmp	r7, #0
-	bne	.L976
-	strh	r8, [r5]	@ movhi
+	bne	.L898
 	mov	r0, r5
+	strh	r8, [r5]	@ movhi
 	bl	make_superblock
 	ldrb	r3, [r5, #7]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L981
+	bne	.L903
 	ldr	r3, [r4, #72]
 	mvn	r2, #0
 	mov	r0, r8
 	strh	r2, [r3, r6]	@ movhi
 	bl	INSERT_DATA_LIST
-	ldrh	r2, [fp]
+	ldr	r2, .L929+4
 	ldrh	r3, [r4, #224]
+	ldrh	r2, [r2]
 	add	r3, r3, r2
 	ldrh	r2, [r4, #240]
 	cmp	r3, r2
-	ble	.L976
+	ble	.L898
+	ldr	r1, .L929+8
 	movw	r2, #2690
-	ldr	r1, .L1012+8
-	ldr	r0, .L1012+12
+	ldr	r0, .L929+12
 	bl	sftl_printk
-	b	.L976
-.L981:
-	ldrh	r2, [fp]
+	b	.L898
+.L903:
+	ldr	r2, .L929+4
 	ldrh	r3, [r4, #224]
+	ldrh	r2, [r2]
 	add	r3, r3, r2
 	ldrh	r2, [r4, #240]
 	cmp	r3, r2
-	ble	.L983
+	ble	.L905
+	ldr	r1, .L929+8
 	movw	r2, #2693
-	ldr	r1, .L1012+8
-	ldr	r0, .L1012+12
+	ldr	r0, .L929+12
 	bl	sftl_printk
-.L983:
-	ldr	r1, [r4, #3268]
-	mov	r9, #20
-	ldrh	r2, [r4, #232]
+.L905:
+	ldr	r0, [r4, #3268]
 	add	r10, r5, #16
-	mov	r0, r10
-	mov	ip, #0
-	mov	r3, r1
-	mla	r2, r9, r2, r1
-	str	r2, [sp, #4]
-.L984:
-	ldr	r2, [sp, #4]
-	cmp	r2, r3
-	bne	.L986
+	ldrh	r3, [r4, #232]
+	mov	r9, r10
+	str	r3, [fp, #-48]
+	mov	r2, r0
+	mov	r3, #0
+	mov	ip, r3
+.L906:
+	ldr	lr, [fp, #-48]
+	uxth	r1, r3
+	cmp	lr, r1
+	bhi	.L908
 	cmp	r7, #0
-	bne	.L987
+	bne	.L909
+	ldr	r1, .L929+8
 	mov	r2, #2704
-	ldr	r1, .L1012+8
-	ldr	r0, .L1012+12
+	ldr	r0, .L929+12
 	bl	sftl_printk
-.L987:
+.L909:
 	ldrh	r3, [r4, #172]
 	cmp	r3, r8
-	bne	.L988
+	bne	.L910
+	ldr	r1, .L929+8
 	movw	r2, #2706
-	ldr	r1, .L1012+8
-	ldr	r0, .L1012+12
+	ldr	r0, .L929+12
 	bl	sftl_printk
-.L988:
-	ldrb	r3, [r5, #8]	@ zero_extendqisi2
+.L910:
 	ldr	r1, [r4, #2536]
-	ldr	r2, .L1012+24
-	cmp	r3, #0
+	ldrb	r2, [r5, #8]	@ zero_extendqisi2
 	ldrh	r3, [r1, r6]
-	bne	.L989
+	cmp	r2, #0
+	ldr	r2, .L929+24
+	bne	.L911
 	cmp	r3, #0
-	ldrhne	r0, [r2]
 	moveq	r3, #2
+	ldrhne	r0, [r2]
 	addne	r3, r3, r0
+	uxthne	r3, r3
 	strh	r3, [r1, r6]	@ movhi
 	ldr	r3, [r4, #2596]
 	add	r3, r3, #1
 	str	r3, [r4, #2596]
-.L992:
+.L913:
 	ldr	r3, [r4, #2536]
 	ldr	r1, [r4, #2612]
 	ldrh	r2, [r2]
 	ldrh	r3, [r3, r6]
 	ldr	r0, [r4, #2596]
 	cmp	r3, r1
-	ldrh	r1, [r4, #240]
 	strhi	r3, [r4, #2612]
 	ldr	r3, [r4, #2600]
+	ldrh	r1, [r4, #240]
 	mla	r0, r0, r2, r3
 	bl	__aeabi_uidiv
 	ldr	r2, [r4, #3348]
-	ldr	r1, [r4, #3268]
 	str	r0, [r4, #2604]
+	ldr	r0, [r4, #3268]
 	ldr	r3, [r2, #16]
-	ldr	r0, .L1012+28
+	ldr	ip, .L929+28
 	add	r3, r3, #1
 	str	r3, [r2, #16]
-	mov	r2, #20
-	mla	r2, r2, r7, r1
-	add	r3, r1, #4
-	add	r2, r2, #24
-.L994:
+	add	r3, r0, #4
+	mov	r2, #0
+.L915:
+	uxth	r1, r2
 	add	r3, r3, #20
-	cmp	r2, r3
-	bne	.L995
+	cmp	r7, r1
+	bhi	.L916
 	ldrb	r1, [r5, #8]	@ zero_extendqisi2
 	mov	r2, r7
-	ldr	r0, [r4, #3268]
-	mov	r9, #0
 	bl	FlashEraseBlocks
+	mov	r9, #0
 	mov	r3, r9
 	mov	r1, #20
-.L996:
+.L917:
 	uxth	r2, r9
 	cmp	r7, r2
-	bhi	.L998
+	bhi	.L919
 	cmp	r3, #0
-	ble	.L999
+	ble	.L920
 	mov	r0, r8
 	bl	update_multiplier_value
 	bl	FtlBbmTblFlush
-.L999:
+.L920:
 	ldrb	r2, [r5, #7]	@ zero_extendqisi2
 	cmp	r2, #0
-	bne	.L1000
+	bne	.L921
 	ldr	r3, [r4, #72]
 	mvn	r2, #0
 	strh	r2, [r3, r6]	@ movhi
-	b	.L976
-.L986:
-	str	ip, [r3, #8]
+	b	.L898
+.L908:
+	str	ip, [r2, #8]
 	movw	lr, #65535
-	str	ip, [r3, #12]
-	add	r3, r3, #20
-	ldrh	r2, [r0], #2
-	cmp	r2, lr
-	mlane	lr, r9, r7, r1
-	lslne	r2, r2, #10
-	addne	r7, r7, #1
-	uxthne	r7, r7
-	strne	r2, [lr, #4]
-	b	.L984
-.L989:
+	str	ip, [r2, #12]
+	ldrh	r1, [r9], #2
+	cmp	r1, lr
+	beq	.L907
+	mov	lr, #20
+	lsl	r1, r1, #10
+	mla	lr, lr, r7, r0
+	add	r7, r7, #1
+	uxth	r7, r7
+	str	r1, [lr, #4]
+.L907:
+	add	r3, r3, #1
+	add	r2, r2, #20
+	b	.L906
+.L911:
 	add	r3, r3, #1
 	strh	r3, [r1, r6]	@ movhi
 	ldr	r3, [r4, #2600]
 	add	r3, r3, #1
 	str	r3, [r4, #2600]
-	b	.L992
-.L995:
+	b	.L913
+.L916:
 	ldr	r1, [r3, #-20]
-	and	r1, r1, r0
+	add	r2, r2, #1
+	and	r1, r1, ip
 	str	r1, [r3, #-20]
-	b	.L994
-.L998:
+	b	.L915
+.L919:
 	mul	r2, r1, r9
 	ldr	r0, [r4, #3268]
 	add	ip, r0, r2
 	ldr	r2, [r0, r2]
 	cmn	r2, #1
-	bne	.L997
+	bne	.L918
 	ldr	r0, [ip, #4]
 	add	r3, r3, #1
-	str	r1, [sp, #12]
-	str	r2, [sp, #8]
+	str	r2, [fp, #-52]
+	str	r3, [fp, #-48]
 	ubfx	r0, r0, #10, #16
-	str	r3, [sp, #4]
 	bl	FtlBbmMapBadBlock
-	ldr	r2, [sp, #8]
-	ldr	r1, [sp, #12]
-	ldr	r3, [sp, #4]
+	ldr	r2, [fp, #-52]
 	strh	r2, [r10]	@ movhi
+	mov	r1, #20
+	ldr	r3, [fp, #-48]
 	ldrb	r2, [r5, #7]	@ zero_extendqisi2
 	sub	r2, r2, #1
 	strb	r2, [r5, #7]
-.L997:
+.L918:
 	add	r9, r9, #1
 	add	r10, r10, #2
-	b	.L996
-.L1000:
+	b	.L917
+.L921:
 	movw	r3, #302
 	ldrh	r3, [r4, r3]
 	strh	r8, [r5]	@ movhi
@@ -6625,33 +6988,32 @@
 	strb	r2, [r5, #6]
 	ldr	r2, [r4, #2588]
 	uxth	r3, r3
-	ldr	r1, [r4, #72]
-	strh	r3, [r5, #4]	@ movhi
 	str	r2, [r5, #12]
 	add	r2, r2, #1
 	str	r2, [r4, #2588]
+	ldr	r1, [r4, #72]
 	ldrh	r2, [r5]
+	strh	r3, [r5, #4]	@ movhi
 	lsl	r2, r2, #1
 	strh	r3, [r1, r2]	@ movhi
 	ldrh	r3, [r5, #4]
 	cmp	r3, #0
-	beq	.L1001
+	beq	.L922
 	ldrb	r3, [r5, #7]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L1002
-.L1001:
+	bne	.L923
+.L922:
+	ldr	r1, .L929+8
 	movw	r2, #2759
-	ldr	r1, .L1012+8
-	ldr	r0, .L1012+12
+	ldr	r0, .L929+12
 	bl	sftl_printk
-.L1002:
+.L923:
 	mov	r0, #0
-	add	sp, sp, #20
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1013:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L930:
 	.align	2
-.L1012:
+.L929:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+2528
 	.word	.LANCHOR1+271
@@ -6660,8 +7022,11 @@
 	.word	.LANCHOR0+2532
 	.word	.LANCHOR0+292
 	.word	-1024
-	.fnend
 	.size	allocate_data_superblock, .-allocate_data_superblock
+	.section	.rodata.str1.1
+.LC102:
+	.ascii	"FtlGcFreeBadSuperBlk 0x%x\012\000"
+	.text
 	.align	2
 	.global	FtlGcFreeBadSuperBlk
 	.syntax unified
@@ -6669,80 +7034,90 @@
 	.fpu softvfp
 	.type	FtlGcFreeBadSuperBlk, %function
 FtlGcFreeBadSuperBlk:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 8
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #12
+	@ args = 0, pretend = 0, frame = 16
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #20
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r9, .L939
 	movw	r3, #3206
-	ldr	r6, .L1027
-	ldrh	r3, [r6, r3]
+	str	r0, [fp, #-48]
+	ldrh	r3, [r9, r3]
 	cmp	r3, #0
-	beq	.L1015
-	ldr	fp, .L1027+4
-	mov	r7, #0
-	str	r0, [sp, #4]
-	add	r10, fp, #2
-.L1016:
-	ldrh	r2, [r6, #232]
-	uxth	r3, r7
-	cmp	r2, r3
-	bhi	.L1022
-	bl	FtlGcReFreshBadBlk
-.L1015:
+	bne	.L938
+.L933:
 	mov	r0, #0
-	add	sp, sp, #12
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1022:
-	uxtah	r3, r6, r7
-	ldr	r1, [sp, #4]
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L937:
+	uxtah	r3, r9, r7
+	ldr	r1, [fp, #-48]
 	mov	r8, #0
 	ldrb	r0, [r3, #260]	@ zero_extendqisi2
 	bl	V2P_block
-	mov	r9, r0
-.L1017:
-	ldrh	r3, [fp]
-	uxth	r4, r8
-	cmp	r3, r4
-	addls	r7, r7, #1
-	bls	.L1016
-.L1021:
-	uxth	r5, r8
-	lsl	r3, r5, #1
-	ldrh	r3, [r10, r3]
-	cmp	r3, r9
-	bne	.L1018
-	mov	r1, r9
-	ldr	r0, .L1027+8
+	mov	r4, r0
+.L934:
+	ldr	r3, .L939+4
+	uxth	r2, r8
+	ldrh	r1, [r3]
+	cmp	r1, r2
+	bhi	.L936
+	add	r7, r7, #1
+.L932:
+	ldrh	r2, [r9, #232]
+	uxth	r3, r7
+	cmp	r2, r3
+	bhi	.L937
+	bl	FtlGcReFreshBadBlk
+	b	.L933
+.L936:
+	uxth	r6, r8
+	lsl	r1, r6, #1
+	add	r3, r10, r6, lsl #1
+	ldrh	r1, [r10, r1]
+	cmp	r1, r4
+	bne	.L935
+	mov	r1, r4
+	ldr	r0, .L939+8
+	str	r3, [fp, #-56]
+	str	r2, [fp, #-52]
 	bl	sftl_printk
-	mov	r0, r9
+	mov	r0, r4
 	bl	FtlBbmMapBadBlock
 	bl	FtlBbmTblFlush
-	ldrh	r1, [fp]
-	add	r3, r10, r5, lsl #1
-.L1019:
-	cmp	r4, r1
-	bcc	.L1020
-	sub	r1, r1, #1
-	strh	r1, [fp]	@ movhi
-.L1018:
+	ldr	r3, .L939+4
+	ldr	r2, [fp, #-52]
+	add	r1, r6, #1
+	add	r1, r10, r1, lsl #1
+	ldrh	r5, [r3]
+	ldr	r3, [fp, #-56]
+	sub	r0, r5, r2
+	cmp	r2, r5
+	sub	r5, r5, #1
+	uxth	r0, r0
+	movhi	r2, #0
+	lslls	r2, r0, #1
+	mov	r0, r3
+	bl	memmove
+	ldr	r3, .L939+4
+	strh	r5, [r3]	@ movhi
+.L935:
 	add	r8, r8, #1
-	b	.L1017
-.L1020:
-	ldrh	r0, [r3, #2]!
-	add	r4, r4, #1
-	uxth	r4, r4
-	strh	r0, [r3, #-2]	@ movhi
-	b	.L1019
-.L1028:
+	b	.L934
+.L938:
+	ldr	r10, .L939+12
+	mov	r7, #0
+	b	.L932
+.L940:
 	.align	2
-.L1027:
+.L939:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+3206
 	.word	.LC102
-	.fnend
+	.word	.LANCHOR0+3208
 	.size	FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
 	.align	2
 	.global	update_vpc_list
@@ -6751,19 +7126,21 @@
 	.fpu softvfp
 	.type	update_vpc_list, %function
 update_vpc_list:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L953
 	lsl	r3, r0, #1
-	ldr	r4, .L1042
+	mov	r5, r0
 	ldr	r2, [r4, #72]
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	bne	.L1030
+	bne	.L942
 	ldrh	r3, [r4, #222]
-	mov	r5, r0
 	cmp	r3, r0
 	mvneq	r3, #0
 	strheq	r3, [r4, #222]	@ movhi
@@ -6775,29 +7152,29 @@
 	cmp	r3, r0
 	mvneq	r3, #0
 	strheq	r3, [r4, #172]	@ movhi
-	beq	.L1034
+	beq	.L946
 	ldrh	r3, [r4, #24]
 	cmp	r3, r0
-	beq	.L1039
+	beq	.L951
 	ldrh	r3, [r4, #76]
 	cmp	r3, r0
-	beq	.L1039
+	beq	.L951
 	ldrh	r3, [r4, #124]
 	cmp	r3, r0
-	beq	.L1039
-.L1034:
-	ldr	r6, .L1042+4
+	beq	.L951
+.L946:
+	ldr	r6, .L953+4
 	mov	r1, r5
-	ldr	r0, .L1042+8
+	ldr	r0, .L953+8
 	bl	List_remove_node
 	ldrh	r3, [r6]
 	cmp	r3, #0
-	bne	.L1036
+	bne	.L948
+	ldr	r1, .L953+12
 	movw	r2, #2835
-	ldr	r1, .L1042+12
-	ldr	r0, .L1042+16
+	ldr	r0, .L953+16
 	bl	sftl_printk
-.L1036:
+.L948:
 	ldrh	r3, [r6]
 	mov	r0, r5
 	sub	r3, r3, #1
@@ -6810,29 +7187,32 @@
 	add	r3, r3, r2
 	ldrh	r2, [r4, #240]
 	cmp	r3, r2
-	ble	.L1040
+	ble	.L952
+	ldr	r1, .L953+12
 	movw	r2, #2838
-	ldr	r1, .L1042+12
-	ldr	r0, .L1042+16
+	ldr	r0, .L953+16
 	bl	sftl_printk
-.L1040:
+.L952:
 	mov	r0, #1
-	pop	{r4, r5, r6, pc}
-.L1030:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L942:
 	bl	List_update_data_list
-.L1039:
+.L951:
 	mov	r0, #0
-	pop	{r4, r5, r6, pc}
-.L1043:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L954:
 	.align	2
-.L1042:
+.L953:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+2528
 	.word	.LANCHOR0+2520
 	.word	.LANCHOR1+296
 	.word	.LC8
-	.fnend
 	.size	update_vpc_list, .-update_vpc_list
+	.section	.rodata.str1.1
+.LC103:
+	.ascii	"decrement_vpc_count %x = %d\012\000"
+	.text
 	.align	2
 	.global	decrement_vpc_count
 	.syntax unified
@@ -6840,84 +7220,85 @@
 	.fpu softvfp
 	.type	decrement_vpc_count, %function
 decrement_vpc_count:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	movw	r3, #65535
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
+	ldr	r6, .L967
+	mov	r5, r0
 	cmp	r0, r3
-	mov	r6, r0
-	ldr	r4, .L1057
-	beq	.L1045
-	ldr	r3, [r4, #72]
-	lsl	r5, r0, #1
-	ldrh	r2, [r3, r5]
+	beq	.L956
+	ldr	r3, [r6, #72]
+	lsl	r4, r0, #1
+	ldrh	r2, [r3, r4]
 	cmp	r2, #0
 	subne	r2, r2, #1
-	strhne	r2, [r3, r5]	@ movhi
-	bne	.L1045
+	strhne	r2, [r3, r4]	@ movhi
+	bne	.L956
 	mov	r1, r0
-	ldr	r0, .L1057+4
+	ldr	r0, .L967+4
 	bl	sftl_printk
-	ldr	r3, [r4, #72]
-	ldrh	r5, [r3, r5]
-	cmp	r5, #0
-	beq	.L1047
-.L1055:
-	mov	r5, #0
-.L1044:
-	mov	r0, r5
-	pop	{r4, r5, r6, r7, r8, pc}
-.L1047:
+	ldr	r3, [r6, #72]
+	ldrh	r4, [r3, r4]
+	cmp	r4, #0
+	beq	.L958
+.L965:
+	mov	r4, #0
+.L955:
+	mov	r0, r4
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L958:
 	movw	r2, #2853
-.L1056:
-	ldr	r1, .L1057+8
-	ldr	r0, .L1057+12
+.L966:
+	ldr	r1, .L967+8
+	ldr	r0, .L967+12
 	bl	sftl_printk
-	b	.L1044
-.L1045:
+	b	.L955
+.L956:
 	movw	r7, #3438
 	movw	r3, #65535
-	ldrh	r0, [r4, r7]
+	ldrh	r0, [r6, r7]
 	cmp	r0, r3
-	strheq	r6, [r4, r7]	@ movhi
-	beq	.L1055
-.L1049:
-	cmp	r6, r0
-	beq	.L1055
+	strheq	r5, [r6, r7]	@ movhi
+	beq	.L965
+.L960:
+	cmp	r0, r5
+	beq	.L965
 	bl	update_vpc_list
-	ldr	r2, [r4, #2516]
-	adds	r5, r0, #0
-	ldr	r3, [r4, #2520]
-	movne	r5, #1
-	ldr	r1, [r4, #72]
-	strh	r6, [r4, r7]	@ movhi
+	ldr	r2, [r6, #2516]
+	ldr	r3, [r6, #2520]
+	subs	r4, r0, #0
+	ldr	r1, [r6, #72]
 	sub	r3, r3, r2
-	asr	r2, r3, #1
-	ldr	r3, .L1057+16
-	mul	r3, r3, r2
+	ldr	r2, .L967+16
+	strh	r5, [r6, r7]	@ movhi
+	movne	r4, #1
+	asr	r3, r3, #1
+	mul	r3, r2, r3
 	uxth	r2, r3
 	uxth	r3, r3
+	cmp	r3, r5
 	lsl	r2, r2, #1
-	cmp	r3, r6
 	ldrh	r2, [r1, r2]
 	clz	r2, r2
 	lsr	r2, r2, #5
 	moveq	r2, #0
 	cmp	r2, #0
-	beq	.L1044
+	beq	.L955
 	movw	r2, #2869
-	b	.L1056
-.L1058:
+	b	.L966
+.L968:
 	.align	2
-.L1057:
+.L967:
 	.word	.LANCHOR0
 	.word	.LC103
 	.word	.LANCHOR1+312
 	.word	.LC8
 	.word	-1431655765
-	.fnend
 	.size	decrement_vpc_count, .-decrement_vpc_count
 	.align	2
 	.global	FtlSuperblockPowerLostFix
@@ -6926,47 +7307,50 @@
 	.fpu softvfp
 	.type	FtlSuperblockPowerLostFix, %function
 FtlSuperblockPowerLostFix:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 24
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, lr}
-	.save {r4, r5, r6, r7, r8, r9, lr}
-	.pad #28
-	sub	sp, sp, #28
-	ldr	r7, .L1074
-	mov	r8, #0
-	movw	r2, #61589
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #24
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r5, .L981
+	mov	r3, sp
+	bic	r8, r3, #8128
 	mov	r4, r0
-	ldr	r5, .L1074+4
-	ldr	r3, [r7]
-	ldr	r6, [r5, #3332]
-	str	r3, [sp, #20]
+	bic	r8, r8, #63
+	mvn	r0, #2
+	mvn	r1, #1
+	mov	r9, #0
+	ldr	r7, [r5, #3332]
+	movw	r2, #61589
+	ldr	r3, [r8, #24]
+	str	r3, [fp, #-40]
 	mvn	r3, #0
-	str	r3, [sp, #16]
+	str	r3, [fp, #-44]
 	ldr	r3, [r5, #3300]
-	str	r6, [sp, #12]
-	str	r3, [sp, #8]
-	mvn	r3, #2
-	str	r3, [r6, #8]
-	mvn	r3, #1
-	str	r3, [r6, #12]
-	ldrh	r3, [r0]
-	strh	r8, [r6]	@ movhi
-	strh	r3, [r6, #2]	@ movhi
+	str	r3, [fp, #-52]
+	str	r7, [fp, #-48]
+	strd	r0, [r7, #8]
+	ldrh	r3, [r4]
+	strh	r3, [r7, #2]	@ movhi
+	strh	r9, [r7]	@ movhi
 	ldr	r3, [r5, #3300]
 	str	r2, [r3]
-	ldr	r2, .L1074+8
+	ldr	r2, .L981+4
 	ldr	r3, [r5, #3300]
 	str	r2, [r3, #4]
-	ldrh	r3, [r0, #4]
-	tst	r3, #1
-	moveq	r9, #6
-	movne	r9, #7
-.L1065:
+	ldrh	r6, [r4, #4]
+	and	r6, r6, #1
+	add	r6, r6, #6
+.L970:
 	ldrh	r3, [r4, #4]
+	cmp	r6, #0
+	beq	.L972
 	cmp	r3, #0
-	bne	.L1061
-.L1062:
+	bne	.L971
+.L972:
 	ldrh	r3, [r4]
 	ldr	r1, [r5, #72]
 	ldrh	r0, [r4, #4]
@@ -6975,49 +7359,46 @@
 	sub	r2, r2, r0
 	strh	r2, [r1, r3]	@ movhi
 	movw	r3, #302
+	ldr	r2, [fp, #-40]
 	ldrh	r3, [r5, r3]
-	ldr	r2, [sp, #20]
 	strh	r3, [r4, #2]	@ movhi
 	mov	r3, #0
 	strb	r3, [r4, #6]
 	strh	r3, [r4, #4]	@ movhi
-	ldr	r3, [r7]
+	ldr	r3, [r8, #24]
 	cmp	r2, r3
-	beq	.L1066
+	beq	.L976
 	bl	__stack_chk_fail
-.L1061:
+.L971:
 	mov	r0, r4
 	bl	get_new_active_ppa
 	cmn	r0, #1
-	str	r0, [sp, #4]
-	beq	.L1062
+	str	r0, [fp, #-56]
+	beq	.L972
 	ldr	r3, [r5, #2592]
 	mov	r1, #1
-	mov	r0, sp
-	str	r3, [r6, #4]
-	add	r3, r3, #1
-	cmn	r3, #1
-	moveq	r3, r8
+	str	r3, [r7, #4]
+	sub	r0, fp, #60
+	cmn	r3, #2
+	add	r2, r3, #1
+	movne	r3, r2
+	moveq	r3, r9
 	str	r3, [r5, #2592]
 	mov	r3, #0
 	mov	r2, r3
+	sub	r6, r6, #1
 	bl	FlashProgPages
 	ldrh	r0, [r4]
 	bl	decrement_vpc_count
-	subs	r9, r9, #1
-	bne	.L1065
-	b	.L1062
-.L1066:
-	add	sp, sp, #28
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, pc}
-.L1075:
+	b	.L970
+.L976:
+	sub	sp, fp, #36
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L982:
 	.align	2
-.L1074:
-	.word	__stack_chk_guard
+.L981:
 	.word	.LANCHOR0
 	.word	305419896
-	.fnend
 	.size	FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
 	.align	2
 	.global	FtlMakeBbt
@@ -7026,202 +7407,197 @@
 	.fpu softvfp
 	.type	FtlMakeBbt, %function
 FtlMakeBbt:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 8
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #12
-	mov	r9, #0
-	ldr	r8, .L1097
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r8, .L1002
+	mov	r7, #0
 	bl	FtlBbtMemInit
-	sub	r4, r8, #28
-	sub	r6, r8, #380
-	sub	r10, r8, #18
-	mov	r5, r6
-	sub	fp, r4, #54
+	sub	r9, r8, #16
+	sub	r4, r8, #380
 	bl	FtlLoadFactoryBbt
-.L1077:
-	ldrh	r3, [r6, #254]
-	cmp	r9, r3
-	bcc	.L1083
-	ldr	r7, .L1097+4
-	mov	r6, #0
-.L1084:
-	ldrh	r3, [r7]
-	uxth	r0, r6
-	add	r6, r6, #1
+.L984:
+	ldrh	r3, [r4, #254]
+	cmp	r3, r7
+	bhi	.L990
+	ldr	r6, .L1002+4
+	mov	r5, #0
+.L991:
+	ldrh	r3, [r6]
+	uxth	r0, r5
 	cmp	r3, r0
-	bhi	.L1085
-	ldrh	r6, [r4, #12]
+	bhi	.L992
+	ldr	r5, .L1002+8
 	movw	r7, #65535
+	ldrh	r6, [r5, #12]
 	sub	r6, r6, #1
 	uxth	r6, r6
-.L1086:
-	ldrh	r3, [r4, #12]
+.L993:
+	ldrh	r3, [r5, #12]
 	sub	r3, r3, #48
 	cmp	r6, r3
-	ble	.L1090
+	ble	.L997
 	mov	r0, r6
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #1
-	beq	.L1087
+	beq	.L994
 	mov	r0, r6
 	bl	FlashTestBlk
 	cmp	r0, #0
-	beq	.L1088
+	beq	.L995
 	mov	r0, r6
 	bl	FtlBbmMapBadBlock
-.L1087:
+.L994:
 	sub	r6, r6, #1
 	uxth	r6, r6
-	b	.L1086
-.L1083:
-	ldr	r3, [r6, #3332]
-	movw	r2, #65535
-	ldr	r0, [r6, #3300]
-	str	r3, [sp, #4]
-	str	r3, [r6, #3464]
-	ldrh	r3, [r10, #2]!
-	str	r0, [r6, #3460]
-	cmp	r3, r2
-	beq	.L1078
-	ldrh	r7, [fp]
+	b	.L993
+.L990:
+	ldrh	r5, [r9]
+	ldr	r3, [r4, #3332]
+	ldr	r0, [r4, #3300]
+	str	r3, [fp, #-48]
+	str	r3, [r4, #3464]
+	movw	r3, #65535
+	ldr	r10, .L1002+12
+	cmp	r5, r3
+	str	r0, [r4, #3460]
+	beq	.L985
+	ldrh	r3, [r10]
 	mov	r2, #1
+	ldr	r0, .L1002+16
 	mov	r1, r2
-	ldr	r0, .L1097+8
-	mla	r7, r9, r7, r3
-	lsl	r3, r7, #10
-	str	r3, [r6, #3456]
+	mla	r5, r7, r3, r5
+	lsl	r3, r5, #10
+	str	r3, [r4, #3456]
 	bl	FlashReadPages
-	ldrh	r2, [fp]
-	ldr	r1, [r6, #3460]
-	ldr	r0, [r8]
+	ldrh	r2, [r10]
+	ldr	r1, [r4, #3460]
 	add	r2, r2, #7
-	asr	r2, r2, #3
+	ldr	r0, [r8]
+	lsr	r2, r2, #3
 	bl	ftl_memcpy
-.L1079:
-	uxth	r0, r7
-	add	r9, r9, #1
+.L986:
+	uxth	r0, r5
+	add	r7, r7, #1
 	add	r8, r8, #4
+	add	r9, r9, #2
 	bl	FtlBbmMapBadBlock
-	b	.L1077
-.L1078:
-	mov	r1, r9
+	b	.L984
+.L985:
+	mov	r1, r7
 	bl	FlashGetBadBlockList
 	ldr	r1, [r8]
-	ldr	r0, [r6, #3460]
+	ldr	r0, [r4, #3460]
 	bl	FtlBbt2Bitmap
-	ldrh	r3, [fp]
-.L1096:
-	sub	r3, r3, #1
-	uxth	r3, r3
-	str	r3, [sp]
-.L1080:
-	ldr	r3, [sp]
-	ldrh	r0, [fp]
-	smlabb	r0, r0, r9, r3
+	ldrh	r6, [r10]
+.L988:
+	sub	r6, r6, #1
+	uxth	r6, r6
+.L987:
+	ldrh	r0, [r10]
+	smlabb	r0, r0, r7, r6
 	uxth	r0, r0
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #1
-	beq	.L1081
-	ldrh	r3, [sp]
+	beq	.L988
 	mov	r2, #16
 	mov	r1, #0
-	ldr	r0, [r5, #3332]
-	strh	r3, [r10]	@ movhi
+	ldr	r0, [r4, #3332]
+	strh	r6, [r9]	@ movhi
 	bl	ftl_memset
 	mov	r2, #4096
 	mov	r1, #0
-	ldr	r0, [r5, #3300]
+	ldr	r0, [r4, #3300]
 	bl	ftl_memset
-	ldr	r3, [sp, #4]
-	movw	r2, 61664	@ movhi
-	strh	r2, [r3]	@ movhi
+	ldr	r2, [fp, #-48]
+	ldr	r3, .L1002+20
+	strh	r3, [r2]	@ movhi
 	mov	r3, #0
-	ldr	r2, [sp, #4]
-	ldrh	r7, [fp]
 	str	r3, [r2, #4]
 	ldrh	r3, [r10]
-	strh	r3, [r2, #2]	@ movhi
-	ldrh	r3, [r10]
+	ldrh	r5, [r9]
+	strh	r5, [r2, #2]	@ movhi
 	ldr	r1, [r8]
-	ldr	r0, [r5, #3460]
-	mla	r7, r9, r7, r3
-	lsl	r3, r7, #10
-	str	r3, [r5, #3456]
-	ldr	r3, .L1097+12
+	mla	r5, r7, r3, r5
+	ldr	r0, [r4, #3460]
+	lsl	r3, r5, #10
+	str	r3, [r4, #3456]
+	ldr	r3, .L1002+24
 	ldrh	r2, [r3]
 	lsl	r2, r2, #2
 	bl	ftl_memcpy
 	mov	r2, #1
-	ldr	r0, .L1097+8
+	ldr	r0, .L1002+16
 	mov	r1, r2
 	bl	FlashEraseBlocks
 	mov	r3, #1
-	ldr	r0, .L1097+8
+	ldr	r0, .L1002+16
 	mov	r2, r3
 	mov	r1, r3
 	bl	FlashProgPages
-	ldr	r3, [r5, #3452]
+	ldr	r3, [r4, #3452]
+	uxth	r0, r5
 	cmn	r3, #1
-	bne	.L1079
-	uxth	r0, r7
+	bne	.L986
 	bl	FtlBbmMapBadBlock
-	b	.L1080
-.L1081:
-	ldr	r3, [sp]
-	b	.L1096
-.L1085:
+	b	.L987
+.L992:
+	add	r5, r5, #1
 	bl	FtlBbmMapBadBlock
-	b	.L1084
-.L1088:
-	ldrh	r3, [r4]
+	b	.L991
+.L995:
+	ldrh	r3, [r5]
 	cmp	r3, r7
-	strheq	r6, [r4]	@ movhi
-	beq	.L1087
-.L1089:
-	strh	r6, [r4, #4]	@ movhi
-.L1090:
-	ldrh	r3, [r4]
+	strheq	r6, [r5]	@ movhi
+	beq	.L994
+.L996:
+	strh	r6, [r5, #4]	@ movhi
+.L997:
+	ldr	r0, [r4, #3268]
 	mov	r6, #0
-	ldr	r0, [r5, #3268]
+	ldrh	r3, [r5]
 	mov	r1, #1
-	str	r6, [r5, #360]
+	str	r6, [r4, #360]
 	mov	r2, #2
-	strh	r6, [r4, #2]	@ movhi
+	strh	r6, [r5, #2]	@ movhi
 	lsl	r3, r3, #10
 	str	r3, [r0, #4]
-	ldrh	r3, [r4, #4]
+	ldrh	r3, [r5, #4]
 	lsl	r3, r3, #10
 	str	r3, [r0, #24]
 	bl	FlashEraseBlocks
-	ldrh	r0, [r4]
+	ldrh	r0, [r5]
 	bl	FtlBbmMapBadBlock
-	ldrh	r0, [r4, #4]
+	ldrh	r0, [r5, #4]
 	bl	FtlBbmMapBadBlock
 	bl	FtlBbmTblFlush
-	ldr	r3, [r5, #360]
-	ldrh	r2, [r4, #4]
-	strh	r6, [r4, #2]	@ movhi
+	ldr	r3, [r4, #360]
+	ldrh	r2, [r5, #4]
 	add	r3, r3, #1
-	str	r3, [r5, #360]
-	ldrh	r3, [r4]
-	strh	r2, [r4]	@ movhi
-	strh	r3, [r4, #4]	@ movhi
+	str	r3, [r4, #360]
+	ldrh	r3, [r5]
+	strh	r6, [r5, #2]	@ movhi
+	strh	r2, [r5]	@ movhi
+	strh	r3, [r5, #4]	@ movhi
 	bl	FtlBbmTblFlush
 	mov	r0, r6
-	add	sp, sp, #12
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1098:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1003:
 	.align	2
-.L1097:
+.L1002:
 	.word	.LANCHOR0+380
 	.word	.LANCHOR0+314
+	.word	.LANCHOR0+352
+	.word	.LANCHOR0+298
 	.word	.LANCHOR0+3452
+	.word	-3872
 	.word	.LANCHOR0+3388
-	.fnend
 	.size	FtlMakeBbt, .-FtlMakeBbt
 	.align	2
 	.global	ftl_memcmp
@@ -7230,12 +7606,15 @@
 	.fpu softvfp
 	.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
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	bl	memcmp
+	ldmfd	sp, {fp, sp, pc}
 	.size	ftl_memcmp, .-ftl_memcmp
 	.align	2
 	.global	js_hash
@@ -7244,144 +7623,36 @@
 	.fpu softvfp
 	.type	js_hash, %function
 js_hash:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r3, .L1103
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, r0
 	add	r1, r0, r1
-.L1101:
-	cmp	r0, r1
-	bne	.L1102
-	mov	r0, r3
-	bx	lr
-.L1102:
-	lsr	r2, r3, #2
-	ldrb	ip, [r0], #1	@ zero_extendqisi2
-	add	r2, r2, r3, lsl #5
+	ldr	r0, .L1009
+.L1006:
+	cmp	r3, r1
+	ldmfdeq	sp, {fp, sp, pc}
+	lsr	r2, r0, #2
+	ldrb	ip, [r3], #1	@ zero_extendqisi2
+	add	r2, r2, r0, lsl #5
 	add	r2, r2, ip
-	eor	r3, r3, r2
-	b	.L1101
-.L1104:
+	eor	r0, r0, r2
+	b	.L1006
+.L1010:
 	.align	2
-.L1103:
+.L1009:
 	.word	1204201446
-	.fnend
 	.size	js_hash, .-js_hash
-	.align	2
-	.global	Ftl_write_map_blk_to_last_page
-	.syntax unified
-	.arm
-	.fpu softvfp
-	.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
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
-	movw	r2, #65535
-	ldrh	r3, [r0]
-	mov	r4, r0
-	ldr	r5, [r0, #12]
-	cmp	r3, r2
-	bne	.L1106
-	ldrh	r3, [r0, #8]
-	cmp	r3, #0
-	beq	.L1107
-	movw	r2, #641
-	ldr	r1, .L1116
-	ldr	r0, .L1116+4
-	bl	sftl_printk
-.L1107:
-	ldrh	r3, [r4, #8]
-	add	r3, r3, #1
-	strh	r3, [r4, #8]	@ movhi
-	bl	FtlFreeSysBlkQueueOut
-	mov	r3, #0
-	strh	r0, [r5]	@ movhi
-	strh	r3, [r4, #2]	@ movhi
-	strh	r3, [r4]	@ movhi
-	ldr	r3, [r4, #28]
-	add	r3, r3, #1
-	str	r3, [r4, #28]
-.L1108:
-	mov	r0, #0
-	pop	{r4, r5, r6, r7, r8, pc}
-.L1106:
-	lsl	r3, r3, #1
-	ldr	r7, [r0, #24]
-	mov	r1, #255
-	ldrh	r8, [r5, r3]
-	ldrh	r3, [r0, #2]
-	ldr	r5, .L1116+8
-	orr	r3, r3, r8, lsl #10
-	ldr	r6, [r5, #3332]
-	str	r3, [r5, #3456]
-	ldr	r3, [r5, #3300]
-	str	r6, [r5, #3464]
-	str	r3, [r5, #3460]
-	ldr	r3, [r0, #28]
-	str	r3, [r6, #4]
-	ldr	r3, .L1116+12
-	strh	r3, [r6, #8]	@ movhi
-	ldrh	r3, [r0, #4]
-	strh	r8, [r6, #2]	@ movhi
-	strh	r3, [r6]	@ movhi
-	add	r3, r5, #304
-	ldrh	r2, [r3]
-	ldr	r0, [r5, #3300]
-	lsl	r2, r2, #3
-	bl	ftl_memset
-	mov	r2, #0
-	mov	r3, r2
-.L1109:
-	ldrh	r0, [r4, #6]
-	uxth	r1, r2
-	cmp	r0, r1
-	bhi	.L1111
-	movw	r3, #310
-	ldr	r0, [r5, #3460]
-	ldrh	r1, [r5, r3]
-	bl	js_hash
-	mov	r2, #1
-	str	r0, [r6, #12]
-	mov	r3, #0
-	mov	r1, r2
-	ldr	r0, .L1116+16
-	bl	FlashProgPages
-	ldrh	r3, [r4, #2]
-	mov	r0, r4
-	add	r3, r3, #1
-	strh	r3, [r4, #2]	@ movhi
-	bl	ftl_map_blk_gc
-	b	.L1108
-.L1111:
-	uxth	r1, r2
-	ldr	r0, [r7, r1, lsl #2]
-	cmp	r8, r0, lsr #10
-	bne	.L1110
-	ldr	r0, [r5, #3300]
-	add	r3, r3, #1
-	uxth	r3, r3
-	str	r1, [r0, r3, lsl #3]
-	ldr	r0, [r7, r1, lsl #2]
-	ldr	r1, [r5, #3300]
-	add	r1, r1, r3, lsl #3
-	str	r0, [r1, #4]
-.L1110:
-	add	r2, r2, #1
-	b	.L1109
-.L1117:
-	.align	2
-.L1116:
-	.word	.LANCHOR1+332
-	.word	.LC8
-	.word	.LANCHOR0
-	.word	-1291
-	.word	.LANCHOR0+3452
-	.fnend
-	.size	Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
+	.section	.rodata.str1.1
+.LC104:
+	.ascii	"FtlMapWritePage error = %x \012\000"
+.LC105:
+	.ascii	"FtlMapWritePage error = %x error count = %d\012\000"
+	.text
 	.align	2
 	.global	FtlMapWritePage
 	.syntax unified
@@ -7389,57 +7660,58 @@
 	.fpu softvfp
 	.type	FtlMapWritePage, %function
 FtlMapWritePage:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 8
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #12
-	lsl	r9, r1, #2
-	ldr	r5, .L1144
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r5, .L1035
 	mov	r4, r0
 	mov	r7, r1
-	mov	r10, r2
+	mov	r8, r2
+	lsl	r10, r1, #2
+	add	r9, r5, #304
 	mov	r6, #0
-	add	r8, r5, #304
-	mov	fp, r8
-.L1119:
+.L1012:
 	ldr	r3, [r5, #2572]
 	add	r3, r3, #1
 	str	r3, [r5, #2572]
-	ldrh	r3, [r8]
+	ldrh	r3, [r9]
 	ldrh	r2, [r4, #2]
 	sub	r3, r3, #1
 	cmp	r2, r3
-	bge	.L1120
+	bge	.L1013
 	ldrh	r2, [r4]
 	movw	r3, #65535
 	cmp	r2, r3
-	bne	.L1121
-.L1120:
+	bne	.L1014
+.L1013:
 	mov	r0, r4
 	bl	Ftl_write_map_blk_to_last_page
-.L1121:
+.L1014:
 	ldrh	r3, [r4]
 	ldr	r2, [r4, #12]
 	lsl	r3, r3, #1
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	bne	.L1122
+	bne	.L1015
+	ldr	r1, .L1035+4
 	mov	r2, #700
-	ldr	r1, .L1144+4
-	ldr	r0, .L1144+8
+	ldr	r0, .L1035+8
 	bl	sftl_printk
-.L1122:
+.L1015:
 	ldrh	r2, [r4]
 	ldrh	r3, [r4, #10]
 	cmp	r2, r3
-	bcc	.L1123
+	bcc	.L1016
+	ldr	r1, .L1035+4
 	movw	r2, #701
-	ldr	r1, .L1144+4
-	ldr	r0, .L1144+8
+	ldr	r0, .L1035+8
 	bl	sftl_printk
-.L1123:
+.L1016:
 	ldrh	r3, [r4]
 	mov	r1, #0
 	ldr	r2, [r4, #12]
@@ -7447,104 +7719,110 @@
 	lsl	r3, r3, #1
 	ldrh	r3, [r2, r3]
 	ldrh	r2, [r4, #2]
-	str	r10, [r5, #3460]
-	str	r3, [sp, #4]
-	str	r0, [r5, #3464]
+	str	r3, [fp, #-48]
+	str	r8, [r5, #3460]
 	orr	r2, r2, r3, lsl #10
 	str	r2, [r5, #3456]
 	mov	r2, #16
+	str	r0, [r5, #3464]
 	bl	ftl_memset
 	ldr	r2, [r5, #3464]
 	ldr	r1, [r4, #28]
-	ldr	r3, [sp, #4]
-	strh	r7, [r2, #8]	@ movhi
+	ldr	r3, [fp, #-48]
 	str	r1, [r2, #4]
+	strh	r7, [r2, #8]	@ movhi
+	str	r2, [fp, #-48]
 	ldrh	r1, [r4, #4]
 	strh	r3, [r2, #2]	@ movhi
-	ldr	r3, .L1144+12
+	ldr	r3, .L1035+12
 	strh	r1, [r2]	@ movhi
 	ldr	r0, [r5, #3460]
 	ldrh	r1, [r3]
-	str	r2, [sp, #4]
 	bl	js_hash
-	ldr	r2, [sp, #4]
+	ldr	r2, [fp, #-48]
 	mov	r3, #1
 	mov	r1, r3
 	str	r0, [r2, #12]
 	mov	r2, r3
-	ldr	r0, .L1144+16
+	ldr	r0, .L1035+16
 	bl	FlashProgPages
 	ldrh	r3, [r4, #2]
 	add	r3, r3, #1
 	strh	r3, [r4, #2]	@ movhi
 	ldr	r3, [r5, #3452]
 	cmn	r3, #1
-	bne	.L1124
+	bne	.L1017
 	ldr	r1, [r5, #3456]
 	add	r6, r6, #1
-	ldr	r0, .L1144+20
-	uxth	r6, r6
+	ldr	r0, .L1035+20
 	bl	sftl_printk
 	ldrh	r3, [r4, #2]
+	uxth	r6, r6
 	cmp	r3, #2
-	ldrhls	r3, [fp]
+	ldrhls	r3, [r9]
 	subls	r3, r3, #1
 	strhls	r3, [r4, #2]	@ movhi
 	cmp	r6, #3
-	bls	.L1126
-	mov	r2, r6
+	bls	.L1019
 	ldr	r1, [r5, #3456]
-	ldr	r0, .L1144+24
+	mov	r2, r6
+	ldr	r0, .L1035+24
 	bl	sftl_printk
-.L1127:
-	b	.L1127
-.L1126:
+.L1020:
+	b	.L1020
+.L1019:
 	ldr	r3, [r4, #32]
 	cmp	r3, #0
-	beq	.L1119
-.L1142:
-	b	.L1142
-.L1124:
+	beq	.L1012
+.L1022:
+	b	.L1022
+.L1017:
 	ldr	r3, [r4, #24]
 	ldr	r2, [r5, #3456]
-	str	r2, [r3, r9]
+	str	r2, [r3, r10]
 	ldrh	r3, [r4, #2]
 	cmp	r3, #1
-	beq	.L1130
+	beq	.L1023
 	ldr	r3, [r5, #3452]
 	cmp	r3, #256
-	beq	.L1130
+	beq	.L1023
 	ldr	r2, [r4, #36]
 	cmp	r2, #0
-	beq	.L1131
-.L1130:
+	beq	.L1024
+.L1023:
 	mov	r3, #0
 	str	r3, [r4, #36]
-	b	.L1119
-.L1131:
+	b	.L1012
+.L1024:
 	cmn	r3, #1
-	bne	.L1132
+	bne	.L1025
+	ldr	r1, .L1035+4
 	movw	r2, #745
-	ldr	r1, .L1144+4
-	ldr	r0, .L1144+8
+	ldr	r0, .L1035+8
 	bl	sftl_printk
-.L1132:
+.L1025:
 	mov	r0, #0
-	add	sp, sp, #12
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1145:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1036:
 	.align	2
-.L1144:
+.L1035:
 	.word	.LANCHOR0
-	.word	.LANCHOR1+363
+	.word	.LANCHOR1+332
 	.word	.LC8
 	.word	.LANCHOR0+310
 	.word	.LANCHOR0+3452
 	.word	.LC104
 	.word	.LC105
-	.fnend
 	.size	FtlMapWritePage, .-FtlMapWritePage
+	.section	.rodata.str1.1
+.LC106:
+	.ascii	"region_id = %x phyAddr = %x\012\000"
+.LC107:
+	.ascii	"map_ppn:\000"
+.LC108:
+	.ascii	"load_l2p_region refresh = %x phyAddr = %x\012\000"
+	.text
 	.align	2
 	.global	load_l2p_region
 	.syntax unified
@@ -7552,111 +7830,108 @@
 	.fpu softvfp
 	.type	load_l2p_region, %function
 load_l2p_region:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	mov	r6, r0
-	ldr	r9, .L1154
-	mov	r10, r1
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r9, .L1046
+	mov	r5, r0
+	mov	r6, r1
 	ldrh	r3, [r9]
 	cmp	r3, r0
-	bcs	.L1147
+	bcs	.L1038
+	ldr	r1, .L1046+4
 	movw	r2, #485
-	ldr	r1, .L1154+4
-	ldr	r0, .L1154+8
+	ldr	r0, .L1046+8
 	bl	sftl_printk
-.L1147:
-	ldr	r7, .L1154+12
-	mov	r5, #12
-	ldr	r3, [r7, #3376]
-	mov	r4, r7
-	ldr	r8, [r3, r6, lsl #2]
-	cmp	r8, #0
-	bne	.L1148
-	mul	r5, r5, r10
-	ldr	r3, [r7, #2540]
-	movw	r2, #310
-	mov	r1, #255
-	ldrh	r2, [r7, r2]
-	add	r3, r3, r5
+.L1038:
+	ldr	r4, .L1046+12
+	mov	r1, #12
+	mul	r6, r1, r6
+	ldr	r3, [r4, #3376]
+	ldr	r7, [r3, r5, lsl #2]
+	ldr	r3, [r4, #2540]
+	cmp	r7, #0
+	add	r3, r3, r6
 	ldr	r0, [r3, #8]
+	bne	.L1039
+	movw	r3, #310
+	mov	r1, #255
+	ldrh	r2, [r4, r3]
 	bl	ftl_memset
-	ldr	r3, [r7, #2540]
-	strh	r6, [r3, r5]	@ movhi
-	ldr	r3, [r7, #2540]
-	add	r5, r3, r5
-	str	r8, [r5, #4]
-.L1149:
+	ldr	r3, [r4, #2540]
+	strh	r5, [r3, r6]	@ movhi
+	ldr	r1, [r4, #2540]
+	add	r6, r1, r6
+	str	r7, [r6, #4]
+.L1040:
 	mov	r0, #0
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L1148:
-	mul	r5, r5, r10
-	ldr	r3, [r7, #2540]
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L1039:
+	ldr	r3, [r4, #3332]
 	mov	r2, #1
-	ldr	r0, .L1154+16
+	str	r0, [r4, #3460]
 	mov	r1, r2
-	str	r8, [r7, #3456]
-	add	r3, r3, r5
-	ldr	r3, [r3, #8]
-	str	r3, [r7, #3460]
-	ldr	r3, [r7, #3332]
-	str	r3, [r7, #3464]
+	ldr	r0, .L1046+16
+	str	r3, [r4, #3464]
+	str	r7, [r4, #3456]
 	bl	FlashReadPages
-	ldr	r7, [r7, #3464]
-	ldrh	r3, [r7, #8]
-	cmp	r3, r6
-	beq	.L1150
-	mov	r2, r8
-	mov	r1, r6
-	ldr	r0, .L1154+20
+	ldr	r8, [r4, #3464]
+	ldrh	r3, [r8, #8]
+	cmp	r3, r5
+	beq	.L1041
+	ldr	r0, .L1046+20
+	mov	r2, r7
+	mov	r1, r5
 	bl	sftl_printk
 	mov	r3, #4
 	ldr	r1, [r4, #3464]
 	mov	r2, r3
-	ldr	r0, .L1154+24
+	ldr	r0, .L1046+24
 	bl	rknand_print_hex
 	ldrh	r3, [r9]
-	mov	r2, #4
 	ldr	r1, [r4, #3376]
-	ldr	r0, .L1154+28
+	mov	r2, #4
+	ldr	r0, .L1046+28
 	bl	rknand_print_hex
-.L1151:
-	ldrh	r3, [r7, #8]
-	cmp	r3, r6
-	beq	.L1152
+.L1042:
+	ldrh	r3, [r8, #8]
+	cmp	r3, r5
+	beq	.L1044
+	ldr	r1, .L1046+4
 	mov	r2, #508
-	ldr	r1, .L1154+4
-	ldr	r0, .L1154+8
+	ldr	r0, .L1046+8
 	bl	sftl_printk
-.L1152:
+.L1044:
 	ldr	r3, [r4, #2540]
 	mov	r1, #0
-	add	r2, r3, r5
+	add	r2, r3, r6
 	str	r1, [r2, #4]
-	strh	r6, [r3, r5]	@ movhi
-	b	.L1149
-.L1150:
+	strh	r5, [r3, r6]	@ movhi
+	b	.L1040
+.L1041:
 	ldr	r3, [r4, #3452]
 	cmp	r3, #256
-	bne	.L1151
-	mov	r2, r8
-	mov	r1, r6
-	ldr	r0, .L1154+32
+	bne	.L1044
+	mov	r2, r7
+	mov	r1, r5
+	ldr	r0, .L1046+32
 	bl	sftl_printk
 	ldr	r3, [r4, #2540]
-	mov	r1, r6
+	mov	r1, r5
 	add	r0, r4, #3392
-	add	r3, r3, r5
+	add	r3, r3, r6
 	ldr	r2, [r3, #8]
 	bl	FtlMapWritePage
-	b	.L1151
-.L1155:
+	b	.L1042
+.L1047:
 	.align	2
-.L1154:
+.L1046:
 	.word	.LANCHOR0+336
-	.word	.LANCHOR1+379
+	.word	.LANCHOR1+348
 	.word	.LC8
 	.word	.LANCHOR0
 	.word	.LANCHOR0+3452
@@ -7664,7 +7939,6 @@
 	.word	.LC94
 	.word	.LC107
 	.word	.LC108
-	.fnend
 	.size	load_l2p_region, .-load_l2p_region
 	.align	2
 	.global	ftl_map_blk_gc
@@ -7673,12 +7947,14 @@
 	.fpu softvfp
 	.type	ftl_map_blk_gc, %function
 ftl_map_blk_gc:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 8
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #12
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
 	mov	r4, r0
 	ldr	r5, [r0, #12]
 	ldr	r10, [r0, #24]
@@ -7687,113 +7963,227 @@
 	ldrh	r2, [r4, #8]
 	sub	r3, r3, #5
 	cmp	r2, r3
-	blt	.L1157
+	blt	.L1049
 	uxth	r0, r0
 	lsl	r0, r0, #1
 	ldrh	r9, [r5, r0]
 	cmp	r9, #0
-	beq	.L1157
-	ldr	r3, [r4, #32]
-	cmp	r3, #0
-	bne	.L1157
-	mov	r2, #1
-	str	r2, [r4, #32]
-	strh	r3, [r5, r0]	@ movhi
+	beq	.L1049
+	ldr	r6, [r4, #32]
+	cmp	r6, #0
+	bne	.L1049
+	mov	r3, #1
+	str	r3, [r4, #32]
+	strh	r6, [r5, r0]	@ movhi
 	ldrh	r3, [r4, #8]
 	ldrh	r2, [r4, #2]
 	sub	r3, r3, #1
 	strh	r3, [r4, #8]	@ movhi
-	ldr	r3, .L1173
+	ldr	r3, .L1064
 	ldrh	r3, [r3]
 	cmp	r2, r3
-	bcc	.L1158
+	bcc	.L1050
 	mov	r0, r4
 	bl	ftl_map_blk_alloc_new_blk
-.L1158:
-	ldr	r5, .L1173+4
-	mov	r6, #0
-.L1159:
+.L1050:
+	ldr	r5, .L1064+4
+.L1051:
 	ldrh	r2, [r4, #6]
-	uxth	fp, r6
-	cmp	r2, fp
-	bhi	.L1166
-	mov	r1, #1
+	uxth	r3, r6
+	cmp	r2, r3
+	bhi	.L1058
 	mov	r0, r9
+	mov	r1, #1
 	bl	FtlFreeSysBlkQueueIn
 	mov	r3, #0
 	str	r3, [r4, #32]
-.L1157:
-	ldr	r3, .L1173
+.L1049:
+	ldr	r3, .L1064
 	ldrh	r2, [r4, #2]
 	ldrh	r3, [r3]
 	cmp	r2, r3
-	bcc	.L1167
+	bcc	.L1059
 	mov	r0, r4
 	bl	ftl_map_blk_alloc_new_blk
-.L1167:
+.L1059:
 	mov	r0, #0
-	add	sp, sp, #12
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1166:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1058:
 	uxth	r7, r6
+	add	r2, r10, r7, lsl #2
+	str	r2, [fp, #-48]
 	ldr	r2, [r10, r7, lsl #2]
-	add	r3, r10, r7, lsl #2
-	str	r3, [sp, #4]
 	cmp	r9, r2, lsr #10
-	bne	.L1160
+	bne	.L1052
 	ldr	r2, [r5, #3304]
 	ldr	r8, [r5, #3332]
-	ldr	r0, .L1173+8
 	str	r2, [r5, #3460]
 	str	r8, [r5, #3464]
+	ldr	r0, .L1064+8
 	ldr	r2, [r10, r7, lsl #2]
 	str	r2, [r5, #3456]
 	mov	r2, #1
 	mov	r1, r2
+	str	r3, [fp, #-52]
 	bl	FlashReadPages
 	ldrh	r2, [r8, #8]
-	cmp	r2, fp
-	beq	.L1161
+	ldr	r3, [fp, #-52]
+	cmp	r2, r3
+	beq	.L1053
+	ldr	r1, .L1064+12
 	movw	r2, #611
-	ldr	r1, .L1173+12
-	ldr	r0, .L1173+16
+	ldr	r0, .L1064+16
 	bl	sftl_printk
-.L1161:
+	ldr	r3, [fp, #-52]
+.L1053:
 	ldr	r2, [r5, #3452]
 	cmn	r2, #1
-	bne	.L1162
-.L1164:
-	ldr	r2, [sp, #4]
+	bne	.L1054
+.L1056:
+	ldr	r2, [fp, #-48]
 	mov	r3, #0
 	str	r3, [r2]
-.L1163:
-	b	.L1163
-.L1162:
+.L1055:
+	b	.L1055
+.L1054:
 	ldrh	r2, [r8, #8]
-	cmp	r2, fp
-	bne	.L1164
+	cmp	r2, r3
+	bne	.L1056
 	ldrh	r2, [r8]
 	ldrh	r3, [r4, #4]
 	cmp	r2, r3
-	bne	.L1164
+	bne	.L1056
 	ldr	r2, [r5, #3460]
 	mov	r1, r7
 	mov	r0, r4
 	bl	FtlMapWritePage
-.L1160:
+.L1052:
 	add	r6, r6, #1
-	b	.L1159
-.L1174:
+	b	.L1051
+.L1065:
 	.align	2
-.L1173:
+.L1064:
 	.word	.LANCHOR0+304
 	.word	.LANCHOR0
 	.word	.LANCHOR0+3452
-	.word	.LANCHOR1+395
+	.word	.LANCHOR1+364
 	.word	.LC8
-	.fnend
 	.size	ftl_map_blk_gc, .-ftl_map_blk_gc
+	.align	2
+	.global	Ftl_write_map_blk_to_last_page
+	.syntax unified
+	.arm
+	.fpu softvfp
+	.type	Ftl_write_map_blk_to_last_page, %function
+Ftl_write_map_blk_to_last_page:
+	@ args = 0, pretend = 0, frame = 0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldrh	r3, [r0]
+	movw	r2, #65535
+	ldr	r5, [r0, #12]
+	mov	r4, r0
+	cmp	r3, r2
+	bne	.L1067
+	ldrh	r3, [r0, #8]
+	cmp	r3, #0
+	beq	.L1068
+	ldr	r1, .L1076
+	movw	r2, #641
+	ldr	r0, .L1076+4
+	bl	sftl_printk
+.L1068:
+	ldrh	r3, [r4, #8]
+	add	r3, r3, #1
+	strh	r3, [r4, #8]	@ movhi
+	bl	FtlFreeSysBlkQueueOut
+	strh	r0, [r5]	@ movhi
+	mov	r3, #0
+	str	r3, [r4]
+	ldr	r3, [r4, #28]
+	add	r3, r3, #1
+	str	r3, [r4, #28]
+.L1069:
+	mov	r0, #0
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L1067:
+	lsl	r3, r3, #1
+	ldr	r7, [r0, #24]
+	mov	r1, #255
+	ldrh	r8, [r5, r3]
+	ldr	r5, .L1076+8
+	ldrh	r3, [r0, #2]
+	ldr	r6, [r5, #3332]
+	orr	r3, r3, r8, lsl #10
+	str	r3, [r5, #3456]
+	ldr	r3, [r5, #3300]
+	str	r3, [r5, #3460]
+	ldr	r3, [r0, #28]
+	str	r6, [r5, #3464]
+	str	r3, [r6, #4]
+	ldr	r3, .L1076+12
+	strh	r3, [r6, #8]	@ movhi
+	ldrh	r3, [r0, #4]
+	strh	r3, [r6]	@ movhi
+	add	r3, r5, #304
+	strh	r8, [r6, #2]	@ movhi
+	ldrh	r2, [r3]
+	ldr	r0, [r5, #3300]
+	lsl	r2, r2, #3
+	bl	ftl_memset
+	mov	r2, #0
+	mov	r3, r2
+.L1070:
+	ldrh	r0, [r4, #6]
+	uxth	r1, r2
+	cmp	r0, r1
+	bhi	.L1072
+	movw	r3, #310
+	ldr	r0, [r5, #3460]
+	ldrh	r1, [r5, r3]
+	bl	js_hash
+	mov	r2, #1
+	str	r0, [r6, #12]
+	mov	r1, r2
+	mov	r3, #0
+	ldr	r0, .L1076+16
+	bl	FlashProgPages
+	ldrh	r3, [r4, #2]
+	mov	r0, r4
+	add	r3, r3, #1
+	strh	r3, [r4, #2]	@ movhi
+	bl	ftl_map_blk_gc
+	b	.L1069
+.L1072:
+	uxth	r1, r2
+	ldr	r0, [r7, r1, lsl #2]
+	cmp	r8, r0, lsr #10
+	bne	.L1071
+	add	r3, r3, #1
+	ldr	r0, [r5, #3300]
+	uxth	r3, r3
+	str	r1, [r0, r3, lsl #3]
+	ldr	r0, [r7, r1, lsl #2]
+	ldr	r1, [r5, #3300]
+	add	r1, r1, r3, lsl #3
+	str	r0, [r1, #4]
+.L1071:
+	add	r2, r2, #1
+	b	.L1070
+.L1077:
+	.align	2
+.L1076:
+	.word	.LANCHOR1+379
+	.word	.LC8
+	.word	.LANCHOR0
+	.word	-1291
+	.word	.LANCHOR0+3452
+	.size	Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
 	.align	2
 	.global	flush_l2p_region
 	.syntax unified
@@ -7801,32 +8191,33 @@
 	.fpu softvfp
 	.type	flush_l2p_region, %function
 flush_l2p_region:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r5, .L1079
 	mov	r4, #12
-	ldr	r5, .L1177
 	mul	r4, r4, r0
-	ldr	r3, [r5, #2540]
 	add	r0, r5, #3392
+	ldr	r3, [r5, #2540]
 	add	r2, r3, r4
 	ldrh	r1, [r3, r4]
 	ldr	r2, [r2, #8]
 	bl	FtlMapWritePage
-	ldr	r3, [r5, #2540]
+	ldr	r0, [r5, #2540]
+	add	r4, r0, r4
 	mov	r0, #0
-	add	r4, r3, r4
 	ldr	r3, [r4, #4]
 	bic	r3, r3, #-2147483648
 	str	r3, [r4, #4]
-	pop	{r4, r5, r6, pc}
-.L1178:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L1080:
 	.align	2
-.L1177:
+.L1079:
 	.word	.LANCHOR0
-	.fnend
 	.size	flush_l2p_region, .-flush_l2p_region
 	.align	2
 	.global	log2phys
@@ -7835,114 +8226,109 @@
 	.fpu softvfp
 	.type	log2phys, %function
 log2phys:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	fp, r0
-	ldr	r4, .L1193
-	mov	r6, r1
-	mov	r10, r2
-	add	r3, r4, #308
-	ldrh	r9, [r3]
-	ldr	r3, [r4, #2552]
-	cmp	r0, r3
-	bcc	.L1180
-	mov	r2, #820
-	ldr	r1, .L1193+4
-	ldr	r0, .L1193+8
-	bl	sftl_printk
-.L1180:
-	ldr	r3, [r4, #2552]
-	cmp	fp, r3
-	bcs	.L1181
-	add	r9, r9, #7
-	ldr	r1, [r4, #2540]
-	lsr	r7, fp, r9
-	movw	r3, #338
-	ldrh	r2, [r4, r3]
-	mov	r8, #12
-	uxth	r7, r7
-	mov	r3, #0
-.L1182:
-	uxth	r5, r3
-	cmp	r5, r2
-	bcc	.L1187
-	bl	select_l2p_ram_region
-	mul	r8, r8, r0
-	ldr	r3, [r4, #2540]
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1093
+	mvn	r6, #0
 	mov	r5, r0
-	ldrh	r1, [r3, r8]
-	add	r2, r3, r8
-	movw	r3, #65535
-	cmp	r1, r3
-	beq	.L1188
-	ldr	r3, [r2, #4]
-	cmp	r3, #0
-	bge	.L1188
-	bl	flush_l2p_region
-.L1188:
-	mov	r1, r5
-	mov	r0, r7
-	bl	load_l2p_region
-	b	.L1184
-.L1181:
+	mov	r8, r1
+	add	r3, r4, #308
+	mov	r9, r2
+	ldrh	r3, [r3]
+	add	r3, r3, #7
+	lsr	r7, r0, r3
+	bic	r6, r0, r6, lsl r3
+	ldr	r3, [r4, #2552]
+	uxth	r7, r7
+	uxth	r6, r6
+	cmp	r3, r0
+	bhi	.L1082
+	ldr	r1, .L1093+4
+	mov	r2, #820
+	ldr	r0, .L1093+8
+	bl	sftl_printk
+	ldr	r3, [r4, #2552]
+	cmp	r3, r5
+	bhi	.L1082
 	mvn	r0, #0
-	cmp	r10, #0
-	streq	r0, [r6]
-	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1187:
+	cmp	r9, #0
+	streq	r0, [r8]
+	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1088:
 	add	r3, r3, #1
-	mla	r0, r8, r3, r1
-	ldrh	r0, [r0, #-12]
+	mul	r0, r10, r3
+	ldrh	r0, [r2, r0]
 	cmp	r0, r7
-	bne	.L1182
-.L1184:
-	mvn	r0, #0
-	cmp	r10, #0
-	bic	r0, fp, r0, lsl r9
-	mov	r3, #12
-	uxth	r0, r0
-	bne	.L1185
-	ldr	r2, [r4, #2540]
-	mla	r3, r3, r5, r2
+	bne	.L1084
+.L1085:
+	mov	r1, #12
+	ldr	r3, [r4, #2540]
+	cmp	r9, #0
+	mul	r5, r1, r5
+	add	r3, r3, r5
 	ldr	r3, [r3, #8]
-	ldr	r3, [r3, r0, lsl #2]
-	str	r3, [r6]
-.L1186:
-	ldr	r2, [r4, #2540]
-	mov	r3, #12
+	ldreq	r3, [r3, r6, lsl #2]
+	streq	r3, [r8]
+	beq	.L1087
+	ldr	r2, [r8]
+	str	r2, [r3, r6, lsl #2]
+	ldr	r3, [r4, #2540]
+	add	r3, r3, r5
+	ldr	r2, [r3, #4]
+	orr	r2, r2, #-2147483648
+	str	r2, [r3, #4]
+	ldr	r3, .L1093+12
+	strh	r7, [r3]	@ movhi
+.L1087:
+	ldr	r1, [r4, #2540]
 	mov	r0, #0
-	mla	r5, r3, r5, r2
+	add	r5, r1, r5
 	ldr	r3, [r5, #4]
 	cmn	r3, #1
 	addne	r3, r3, #1
 	strne	r3, [r5, #4]
-	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1185:
-	mul	r3, r3, r5
+	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1082:
 	ldr	r2, [r4, #2540]
-	ldr	r1, [r6]
-	add	r2, r2, r3
-	ldr	r2, [r2, #8]
-	str	r1, [r2, r0, lsl #2]
-	ldr	r2, [r4, #2540]
-	add	r3, r2, r3
-	ldr	r2, [r3, #4]
-	orr	r2, r2, #-2147483648
-	str	r2, [r3, #4]
-	ldr	r3, .L1193+12
-	strh	r7, [r3]	@ movhi
-	b	.L1186
-.L1194:
+	movw	r3, #338
+	mov	r10, #12
+	sub	r2, r2, #12
+	ldrh	r1, [r4, r3]
+	mov	r3, #0
+.L1084:
+	uxth	r5, r3
+	cmp	r1, r5
+	bhi	.L1088
+	bl	select_l2p_ram_region
+	mul	r10, r10, r0
+	ldr	r3, [r4, #2540]
+	mov	r5, r0
+	add	r2, r3, r10
+	ldrh	r1, [r3, r10]
+	movw	r3, #65535
+	cmp	r1, r3
+	beq	.L1089
+	ldr	r3, [r2, #4]
+	cmp	r3, #0
+	bge	.L1089
+	bl	flush_l2p_region
+.L1089:
+	mov	r1, r5
+	mov	r0, r7
+	bl	load_l2p_region
+	b	.L1085
+.L1094:
 	.align	2
-.L1193:
+.L1093:
 	.word	.LANCHOR0
 	.word	.LANCHOR1+410
 	.word	.LC8
 	.word	.LANCHOR0+2544
-	.fnend
 	.size	log2phys, .-log2phys
 	.align	2
 	.global	FtlWriteDump_data
@@ -7951,121 +8337,121 @@
 	.fpu softvfp
 	.type	FtlWriteDump_data, %function
 FtlWriteDump_data:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 32
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #36
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #36
-	ldr	r4, .L1215
-	ldr	r7, .L1215+4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1114
+	mov	r3, sp
+	bic	r8, r3, #8128
+	bic	r8, r8, #63
 	ldrh	r2, [r4, #28]
-	ldr	r3, [r7]
+	ldr	r3, [r8, #24]
 	cmp	r2, #0
-	str	r3, [sp, #28]
-	beq	.L1196
+	str	r3, [fp, #-48]
+	beq	.L1096
 	ldrb	r3, [r4, #32]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L1196
-	movw	r3, #302
-	ldrb	r1, [r4, #31]	@ zero_extendqisi2
-	ldrh	r3, [r4, r3]
-	mul	r3, r3, r1
+	bne	.L1096
+	movw	r1, #302
+	ldrb	r3, [r4, #31]	@ zero_extendqisi2
+	ldrh	r1, [r4, r1]
+	mul	r3, r1, r3
 	cmp	r2, r3
-	beq	.L1196
-	ldrb	r8, [r4, #34]	@ zero_extendqisi2
-	cmp	r8, #0
-	bne	.L1195
-	ldr	r6, [r4, #2552]
-	mov	r2, r8
-	add	r1, sp, #4
-	ldrh	r9, [r4, #232]
-	sub	r6, r6, #1
-	mov	r0, r6
+	beq	.L1096
+	ldrb	r9, [r4, #34]	@ zero_extendqisi2
+	cmp	r9, #0
+	bne	.L1095
+	ldr	r7, [r4, #2552]
+	mov	r2, r9
+	sub	r1, fp, #72
+	ldrh	r6, [r4, #232]
+	sub	r7, r7, #1
+	mov	r0, r7
 	bl	log2phys
-	ldr	r3, [sp, #4]
 	ldr	r5, [r4, #3332]
+	ldr	r3, [fp, #-72]
 	ldr	r0, [r4, #3300]
+	str	r3, [fp, #-64]
 	cmn	r3, #1
-	str	r3, [sp, #12]
-	str	r6, [sp, #24]
-	str	r0, [sp, #16]
-	str	r5, [sp, #20]
-	str	r8, [r5, #4]
-	beq	.L1198
-	mov	r2, r8
+	str	r7, [fp, #-52]
+	str	r0, [fp, #-60]
+	str	r5, [fp, #-56]
+	str	r9, [r5, #4]
+	beq	.L1098
+	mov	r2, r9
+	sub	r0, fp, #68
 	mov	r1, #1
-	add	r0, sp, #8
 	bl	FlashReadPages
-.L1199:
-	ldr	r10, .L1215+8
-	mov	r8, #0
-	ldr	r3, .L1215+12
-	lsl	r9, r9, #2
-	mov	fp, r8
+.L1099:
+	ldr	r9, .L1114+4
+	lsl	r6, r6, #2
+	ldr	r3, .L1114+8
+	mov	r10, #0
 	strh	r3, [r5]	@ movhi
-.L1200:
-	cmp	r9, r8
-	bne	.L1204
-.L1201:
+.L1100:
+	cmp	r6, #0
+	bne	.L1104
+.L1101:
 	mov	r3, #1
-.L1214:
+.L1113:
 	strb	r3, [r4, #34]
-.L1195:
-	ldr	r2, [sp, #28]
-	ldr	r3, [r7]
+.L1095:
+	ldr	r2, [fp, #-48]
+	ldr	r3, [r8, #24]
 	cmp	r2, r3
-	beq	.L1206
+	beq	.L1106
 	bl	__stack_chk_fail
-.L1198:
+.L1098:
 	movw	r3, #310
 	mov	r1, #255
 	ldrh	r2, [r4, r3]
 	bl	ftl_memset
-	b	.L1199
-.L1204:
+	b	.L1099
+.L1104:
 	ldrh	r3, [r4, #28]
 	cmp	r3, #0
-	beq	.L1201
-	ldr	r3, [sp, #12]
-	mov	r0, r10
-	str	r6, [r5, #8]
-	add	r8, r8, #1
+	beq	.L1101
+	ldr	r3, [fp, #-64]
+	mov	r0, r9
 	str	r3, [r5, #12]
+	sub	r6, r6, #1
 	ldrh	r3, [r4, #24]
 	strh	r3, [r5, #2]	@ movhi
+	str	r7, [r5, #8]
 	bl	get_new_active_ppa
 	ldr	r3, [r4, #2592]
+	str	r0, [fp, #-64]
 	mov	r1, #1
-	str	r0, [sp, #12]
-	add	r0, sp, #8
+	cmn	r3, #2
+	add	r2, r3, #1
 	str	r3, [r5, #4]
-	add	r3, r3, #1
-	cmn	r3, #1
-	moveq	r3, fp
+	sub	r0, fp, #68
+	movne	r3, r2
+	moveq	r3, r10
 	str	r3, [r4, #2592]
 	mov	r3, #0
 	mov	r2, r3
 	bl	FlashProgPages
 	ldrh	r0, [r4, #24]
 	bl	decrement_vpc_count
-	b	.L1200
-.L1196:
+	b	.L1100
+.L1096:
 	mov	r3, #0
-	b	.L1214
-.L1206:
-	add	sp, sp, #36
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1216:
+	b	.L1113
+.L1106:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1115:
 	.align	2
-.L1215:
+.L1114:
 	.word	.LANCHOR0
-	.word	__stack_chk_guard
 	.word	.LANCHOR0+24
 	.word	-3947
-	.fnend
 	.size	FtlWriteDump_data, .-FtlWriteDump_data
 	.align	2
 	.global	FtlReUsePrevPpa
@@ -8074,86 +8460,94 @@
 	.fpu softvfp
 	.type	FtlReUsePrevPpa, %function
 FtlReUsePrevPpa:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 8
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r0, r1, r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
-	.pad #8
-	mov	r7, r0
-	ldr	r5, .L1228
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1126
+	mov	r6, r0
 	ubfx	r0, r1, #10, #16
-	str	r1, [sp, #4]
+	str	r1, [fp, #-40]
 	bl	P2V_block_in_plane
-	ldr	r2, [r5, #72]
-	lsl	r6, r0, #1
-	ldrh	r3, [r2, r6]
+	lsl	r5, r0, #1
+	mov	r7, r0
+	ldr	r3, [r4, #72]
+	ldrh	r2, [r3, r5]
+	cmp	r2, #0
+	addne	r2, r2, #1
+	strhne	r2, [r3, r5]	@ movhi
+	bne	.L1118
+	ldr	r3, [r4, #2532]
 	cmp	r3, #0
-	bne	.L1218
-	ldr	r4, [r5, #2532]
-	cmp	r4, #0
-	beq	.L1219
-	ldr	r1, [r5, #2516]
+	beq	.L1118
+	ldr	r1, [r4, #2516]
 	mov	lr, #6
-	ldr	r2, .L1228+4
+	ldr	ip, .L1126+4
 	movw	r8, #65535
-	ldrh	ip, [r5, #224]
-	sub	r4, r4, r1
-	asr	r4, r4, #1
-	mul	r4, r2, r4
-	uxth	r4, r4
-.L1220:
-	uxth	r2, r3
-	cmp	ip, r2
-	bls	.L1219
-	cmp	r4, r0
-	bne	.L1221
-	mov	r1, r4
-	ldr	r0, .L1228+8
+	sub	r3, r3, r1
+	ldrh	r0, [r4, #224]
+	asr	r3, r3, #1
+	mul	r3, ip, r3
+	uxth	r3, r3
+.L1119:
+	uxth	ip, r2
+	cmp	r0, ip
+	bls	.L1118
+	cmp	r3, r7
+	bne	.L1120
+	ldr	r0, .L1126+8
+	mov	r1, r7
 	bl	List_remove_node
-	ldrh	r3, [r5, #224]
+	ldrh	r3, [r4, #224]
 	cmp	r3, #0
-	bne	.L1222
+	bne	.L1121
+	ldr	r1, .L1126+12
 	movw	r2, #1742
-	ldr	r1, .L1228+12
-	ldr	r0, .L1228+16
+	ldr	r0, .L1126+16
 	bl	sftl_printk
-.L1222:
-	ldrh	r3, [r5, #224]
-	mov	r0, r4
-	sub	r3, r3, #1
-	strh	r3, [r5, #224]	@ movhi
-	bl	INSERT_DATA_LIST
-	ldr	r2, [r5, #72]
-	ldrh	r3, [r2, r6]
-.L1218:
-	add	r3, r3, #1
-	strh	r3, [r2, r6]	@ movhi
-	b	.L1219
-.L1221:
-	mul	r4, lr, r4
-	add	r3, r3, #1
-	ldrh	r4, [r1, r4]
-	cmp	r4, r8
-	bne	.L1220
-.L1219:
-	mov	r2, #1
-	add	r1, sp, #4
+.L1121:
+	ldrh	r3, [r4, #224]
 	mov	r0, r7
+	sub	r3, r3, #1
+	strh	r3, [r4, #224]	@ movhi
+	bl	INSERT_DATA_LIST
+	ldr	r2, [r4, #72]
+	ldrh	r3, [r2, r5]
+	add	r3, r3, #1
+	strh	r3, [r2, r5]	@ movhi
+.L1118:
+	sub	r1, fp, #40
+	mov	r0, r6
+	mov	r2, #1
 	bl	log2phys
-	add	sp, sp, #8
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, pc}
-.L1229:
+	sub	sp, fp, #32
+	ldmfd	sp, {r4, r5, r6, r7, r8, fp, sp, pc}
+.L1120:
+	mul	r3, lr, r3
+	add	r2, r2, #1
+	ldrh	r3, [r1, r3]
+	cmp	r3, r8
+	bne	.L1119
+	b	.L1118
+.L1127:
 	.align	2
-.L1228:
+.L1126:
 	.word	.LANCHOR0
 	.word	-1431655765
 	.word	.LANCHOR0+2532
 	.word	.LANCHOR1+419
 	.word	.LC8
-	.fnend
 	.size	FtlReUsePrevPpa, .-FtlReUsePrevPpa
+	.section	.rodata.str1.1
+.LC109:
+	.ascii	"data prev_ppa = %x error...................\012\000"
+.LC110:
+	.ascii	"spuer block %x vpn is 0\012 \000"
+	.text
 	.align	2
 	.global	FtlRecoverySuperblock
 	.syntax unified
@@ -8161,619 +8555,645 @@
 	.fpu softvfp
 	.type	FtlRecoverySuperblock, %function
 FtlRecoverySuperblock:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 48
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1364
-	movw	r2, #65535
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #52
-	sub	sp, sp, #52
-	ldr	r3, [r3]
-	str	r3, [sp, #44]
+	@ args = 0, pretend = 0, frame = 64
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #68
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	movw	r1, #65535
+	bic	r3, r3, #8128
+	mov	r10, r0
+	bic	r3, r3, #63
+	ldr	r3, [r3, #24]
+	str	r3, [fp, #-48]
 	ldrh	r3, [r0]
-	cmp	r3, r2
-	beq	.L1232
-	ldrh	r3, [r0, #2]
-	mov	fp, r0
-	ldr	r5, .L1364+4
-	str	r3, [sp, #8]
-	ldrb	r3, [r0, #6]	@ zero_extendqisi2
-	ldr	r1, [sp, #8]
-	str	r3, [sp, #28]
-	movw	r3, #302
-	ldrh	r3, [r5, r3]
 	cmp	r3, r1
+	beq	.L1130
+	ldrh	r3, [r0, #2]
+	ldr	r5, .L1257
+	str	r3, [fp, #-72]
+	ldrb	r3, [r0, #6]	@ zero_extendqisi2
+	str	r3, [fp, #-92]
+	movw	r3, #302
+	ldrh	r2, [r5, r3]
+	ldr	r3, [fp, #-72]
+	cmp	r2, r3
 	mov	r3, #0
+	strheq	r2, [r0, #2]	@ movhi
 	strheq	r3, [r0, #4]	@ movhi
 	ldrhne	r0, [r0, #16]
-	bne	.L1234
-.L1362:
-	strb	r3, [fp, #6]
-.L1232:
-	ldr	r3, .L1364
-	mov	r0, #0
-	ldr	r2, [sp, #44]
-	ldr	r3, [r3]
+	bne	.L1132
+.L1255:
+	strb	r3, [r10, #6]
+.L1130:
+	mov	r3, sp
+	ldr	r2, [fp, #-48]
+	bic	r3, r3, #8128
+	bic	r3, r3, #63
+	ldr	r3, [r3, #24]
 	cmp	r2, r3
-	beq	.L1300
+	beq	.L1196
 	bl	__stack_chk_fail
-.L1235:
-	uxth	r1, r3
-	add	r1, fp, r1, lsl #1
-	ldrh	r0, [r1, #16]
-.L1234:
-	cmp	r0, r2
+.L1133:
+	uxth	r2, r3
+	add	r2, r10, r2, lsl #1
+	ldrh	r0, [r2, #16]
+.L1132:
 	uxth	r6, r3
+	cmp	r0, r1
 	add	r3, r3, #1
-	beq	.L1235
+	beq	.L1133
 	mov	r1, #1
 	bl	FtlGetLastWrittenPage
-	cmn	r0, #1
 	mov	r4, r0
-	beq	.L1236
-	ldrh	r3, [r5, #232]
-	mov	r2, #0
-	ldr	r0, [r5, #3288]
-	mov	r6, r2
-	movw	r8, #65535
-	mov	r9, #20
-	str	r3, [sp, #4]
+	cmn	r0, #1
+	beq	.L1134
 	ldr	r3, [r5, #3176]
-	str	r3, [sp, #12]
+	add	r2, r10, #16
+	str	r3, [fp, #-64]
 	movw	r3, #310
+	ldr	r0, [r5, #3288]
+	movw	r8, #65535
 	ldrh	lr, [r5, r3]
-	ldr	r3, .L1364+8
-	ldr	r5, [r5, #3180]
+	mov	r9, #20
+	ldr	r3, .L1257+4
+	ldr	r6, [r5, #3180]
 	ldrh	r7, [r3]
-	add	r3, fp, #16
-	mov	ip, r3
-	str	r3, [sp, #24]
-.L1237:
-	ldr	r1, [sp, #4]
-	uxth	r3, r2
-	cmp	r3, r1
-	bcc	.L1241
-	ldr	r5, .L1364+4
+	add	r3, r10, #16
+	str	r3, [fp, #-84]
+	ldrh	r3, [r5, #232]
+	mov	r5, #0
+	add	r3, r10, r3, lsl #1
+	add	r3, r3, #16
+	str	r3, [fp, #-68]
+.L1135:
+	ldr	r3, [fp, #-68]
+	cmp	r3, r2
+	bne	.L1139
 	mov	r2, #0
-	mov	r1, r6
-	movw	r9, #65535
+	mov	r1, r5
 	bl	FlashReadPages
-	ldr	r3, [r5, #2592]
+	ldr	r3, .L1257
+	mov	r8, #0
+	ldr	r6, [r3, #3288]
+	ldr	r2, [r3, #2592]
+	mov	r9, r6
+	sub	r2, r2, #1
+	str	r2, [fp, #-64]
+	movw	r2, #65535
+	str	r2, [fp, #-80]
 	uxth	r2, r4
-	ldr	r8, [r5, #3288]
-	str	r2, [sp, #12]
-	sub	r3, r3, #1
-	str	r3, [sp, #4]
-	mov	r7, r8
-	mov	r3, #0
-.L1242:
-	uxth	r2, r3
-	cmp	r6, r2
-	bhi	.L1247
-	addeq	r10, r4, #1
-	uxtheq	r10, r10
-	bne	.L1245
-.L1357:
-	ldr	r0, [r8, #4]
+	str	r2, [fp, #-68]
+.L1140:
+	uxth	r2, r8
+	cmp	r5, r2
+	bhi	.L1145
+	addeq	r3, r4, #1
+	uxtheq	r3, r3
+	streq	r3, [fp, #-68]
+	bne	.L1143
+.L1249:
+	ldr	r0, [r6, #4]
 	ubfx	r0, r0, #10, #16
 	bl	P2V_plane
-	movw	r3, #302
-	str	r0, [sp, #12]
-	ldrh	r3, [r5, r3]
-	ldr	r2, [sp, #12]
-	ldr	r1, [sp, #28]
-	cmp	r3, r10
-	moveq	r3, #0
-	strheq	r10, [fp, #2]	@ movhi
-	strbeq	r3, [fp, #6]
-	strheq	r3, [fp, #4]	@ movhi
-	ldr	r3, [sp, #8]
-	cmp	r10, r3
-	cmpeq	r2, r1
-	bne	.L1250
-.L1363:
-	mov	r1, r10
-	mov	r0, fp
-	bl	ftl_sb_update_avl_pages
-	b	.L1232
-.L1236:
-	ldr	r3, [sp, #8]
-	cmp	r3, #0
-	beq	.L1238
-	movw	r2, #1809
-	ldr	r1, .L1364+12
-	ldr	r0, .L1364+16
-	bl	sftl_printk
-.L1238:
-	ldr	r3, [sp, #28]
-	cmp	r3, #0
-	cmpne	r6, r3
-	beq	.L1239
-	movw	r2, #1810
-	ldr	r1, .L1364+12
-	ldr	r0, .L1364+16
-	bl	sftl_printk
-.L1239:
-	mov	r3, #0
-	strh	r3, [fp, #2]	@ movhi
-	b	.L1362
-.L1241:
-	ldrh	r3, [ip], #2
-	cmp	r3, r8
-	beq	.L1240
-	mla	r1, r9, r6, r0
-	orr	r3, r4, r3, lsl #10
-	str	r3, [r1, #4]
-	mul	r3, lr, r6
-	add	r10, r3, #3
-	cmp	r3, #0
-	movlt	r3, r10
-	ldr	r10, [sp, #12]
-	bic	r3, r3, #3
-	add	r3, r10, r3
-	str	r3, [r1, #8]
-	mul	r3, r7, r6
-	add	r6, r6, #1
-	uxth	r6, r6
-	add	r10, r3, #3
-	cmp	r3, #0
-	movlt	r3, r10
-	bic	r3, r3, #3
-	add	r3, r5, r3
-	str	r3, [r1, #12]
-.L1240:
-	add	r2, r2, #1
-	b	.L1237
-.L1247:
-	ldr	r2, [r7]
+	ldr	r3, .L1257
+	movw	r2, #302
+	ldr	r1, [fp, #-68]
+	str	r0, [fp, #-76]
+	ldrh	r2, [r3, r2]
+	cmp	r2, r1
+	bne	.L1147
+	mov	r2, #0
+	strh	r1, [r10, #2]	@ movhi
+	strb	r2, [r10, #6]
+	strh	r2, [r10, #4]	@ movhi
+.L1147:
+	sub	r0, fp, #76
+	ldr	ip, [fp, #-92]
+	ldm	r0, {r0, r1, r2}
+	cmp	r2, r1
+	cmpeq	r0, ip
+	moveq	r2, r0
+	ldreq	r1, [fp, #-68]
+	beq	.L1256
+	ldr	r1, [fp, #-80]
+	movw	r2, #65535
+	cmp	r1, r2
+	bne	.L1149
+	ldrb	r2, [r10, #8]	@ zero_extendqisi2
 	cmp	r2, #0
-	bne	.L1243
-	ldr	r10, [r7, #12]
-	ldr	r2, [r10, #4]
+	bne	.L1150
+.L1149:
+	ldr	r2, [r3, #3448]
+	uxth	r9, r4
+	ldr	r6, .L1257
 	cmn	r2, #1
-	beq	.L1244
-	ldr	r1, [r5, #2592]
-	mov	r0, r2
-	bl	ftl_cmp_data_ver
-	cmp	r0, #0
-	addne	r2, r2, #1
-	strne	r2, [r5, #2592]
-.L1244:
-	ldr	r2, [r10]
-	cmn	r2, #1
-	bne	.L1246
-.L1245:
-	uxth	r3, r3
-	mov	r2, #20
-	uxth	r10, r4
-	mla	r8, r2, r3, r8
-	b	.L1357
-.L1243:
-	ldr	r9, [sp, #12]
-.L1246:
-	add	r3, r3, #1
-	add	r7, r7, #20
-	b	.L1242
-.L1250:
-	movw	r3, #65535
-	cmp	r9, r3
-	bne	.L1251
-	ldrb	r3, [fp, #8]	@ zero_extendqisi2
-	cmp	r3, #0
-	bne	.L1252
-.L1251:
-	ldr	r3, [r5, #3448]
-	uxth	r7, r4
-	uxth	r4, r4
-	ldr	r6, .L1364+4
-	movw	r8, #65535
-	cmn	r3, #1
-	ldreq	r3, [sp, #4]
-	streq	r3, [r5, #3448]
-	ldr	r3, [sp, #8]
+	ldreq	r2, [fp, #-64]
+	streq	r2, [r3, #3448]
+	uxth	r2, r4
+	ldr	r3, [fp, #-72]
 	add	r3, r3, #7
-	cmp	r4, r3
-	subgt	r4, r7, #7
-	ldrle	r4, [sp, #8]
-	uxthgt	r4, r4
-.L1255:
-	cmp	r4, r7
-	bhi	.L1262
-	mov	r3, #0
-	ldrh	lr, [r6, #232]
+	cmp	r3, r2
+	sublt	r4, r4, #7
+	ldrge	r4, [fp, #-72]
+	uxthlt	r4, r4
+.L1153:
 	ldr	r0, [r6, #3288]
-	mov	r5, r3
-	ldr	r1, [sp, #24]
-	mov	ip, #20
-	b	.L1263
-.L1257:
-	ldrh	r2, [r1], #2
-	add	r3, r3, #1
-	cmp	r2, r8
-	mlane	r9, ip, r5, r0
-	addne	r5, r5, #1
-	orrne	r2, r4, r2, lsl #10
-	uxthne	r5, r5
-	strne	r2, [r9, #4]
-.L1263:
+	cmp	r4, r9
+	ldrh	ip, [r6, #232]
+	bls	.L1198
+	mvn	r3, #0
+	str	r3, [r6, #3448]
+.L1150:
+	ldr	r4, .L1257+8
+	mov	r3, #1
+	ldr	r9, [fp, #-72]
+	strh	r3, [r4]	@ movhi
+	sub	r4, r4, #3472
+.L1161:
+	ldrh	ip, [r4, #232]
+	mov	r3, #0
+	ldr	r0, [r4, #3288]
+	movw	lr, #65535
+	ldr	r1, [fp, #-84]
+	mov	r5, #20
+	str	r3, [fp, #-80]
+.L1162:
 	uxth	r2, r3
-	cmp	lr, r2
-	bhi	.L1257
+	cmp	ip, r2
+	bhi	.L1164
+	ldr	r1, [fp, #-80]
+	mov	r2, #0
+	bl	FlashReadPages
+	mov	r3, #0
+.L1254:
+	str	r3, [fp, #-88]
+	ldr	r2, [fp, #-80]
+	ldrh	r3, [fp, #-88]
+	cmp	r3, r2
+	bcc	.L1192
+	add	r3, r9, #1
+	uxth	r9, r3
+	ldr	r3, .L1257+12
+	ldrh	r3, [r3]
+	cmp	r3, r9
+	bne	.L1161
+	ldrh	r1, [r4, #232]
+	mov	r3, #0
+	strh	r9, [r10, #2]	@ movhi
+	movw	r0, #65535
+	strh	r3, [r10, #4]	@ movhi
+.L1193:
+	uxth	r2, r3
+	cmp	r1, r2
+	bls	.L1130
+	ldr	r2, [fp, #-84]
+	ldrh	ip, [r2], #2
+	str	r2, [fp, #-84]
+	add	r2, r3, #1
+	cmp	ip, r0
+	bne	.L1255
+	mov	r3, r2
+	b	.L1193
+.L1134:
+	ldr	r3, [fp, #-72]
+	cmp	r3, #0
+	beq	.L1136
+	ldr	r1, .L1257+16
+	movw	r2, #1809
+	ldr	r0, .L1257+20
+	bl	sftl_printk
+.L1136:
+	ldr	r3, [fp, #-92]
+	cmp	r3, #0
+	cmpne	r3, r6
+	beq	.L1137
+	ldr	r1, .L1257+16
+	movw	r2, #1810
+	ldr	r0, .L1257+20
+	bl	sftl_printk
+.L1137:
+	mov	r3, #0
+	strh	r3, [r10, #2]	@ movhi
+	b	.L1255
+.L1139:
+	ldrh	r3, [r2], #2
+	cmp	r3, r8
+	beq	.L1135
+	mla	r1, r9, r5, r0
+	orr	r3, r4, r3, lsl #10
+	mul	ip, lr, r5
+	cmp	ip, #0
+	str	r3, [r1, #4]
+	add	r3, ip, #3
+	movge	r3, ip
+	ldr	ip, [fp, #-64]
+	bic	r3, r3, #3
+	add	r3, ip, r3
+	mul	ip, r7, r5
+	str	r3, [r1, #8]
+	add	r5, r5, #1
+	cmp	ip, #0
+	add	r3, ip, #3
+	movge	r3, ip
+	uxth	r5, r5
+	bic	r3, r3, #3
+	add	r3, r6, r3
+	str	r3, [r1, #12]
+	b	.L1135
+.L1145:
+	ldr	r2, [r9]
+	cmp	r2, #0
+	bne	.L1141
+	ldr	r2, [r9, #12]
+	ldr	r7, [r2, #4]
+	cmn	r7, #1
+	beq	.L1142
+	ldr	r1, [r3, #2592]
+	mov	r0, r7
+	str	r2, [fp, #-76]
+	bl	ftl_cmp_data_ver
+	ldr	r3, .L1257
+	cmp	r0, #0
+	ldr	r2, [fp, #-76]
+	addne	r7, r7, #1
+	strne	r7, [r3, #2592]
+.L1142:
+	ldr	r2, [r2]
+	cmn	r2, #1
+	bne	.L1144
+.L1143:
+	uxth	r3, r4
+	str	r3, [fp, #-68]
+	mov	r3, #20
+	mla	r6, r3, r8, r6
+	b	.L1249
+.L1141:
+	ldr	r2, [fp, #-68]
+	str	r2, [fp, #-80]
+.L1144:
+	add	r8, r8, #1
+	add	r9, r9, #20
+	b	.L1140
+.L1155:
+	ldrh	r2, [r1], #2
+	cmp	r2, lr
+	beq	.L1154
+	mla	r8, r7, r5, r0
+	add	r5, r5, #1
+	orr	r2, r4, r2, lsl #10
+	uxth	r5, r5
+	str	r2, [r8, #4]
+.L1154:
+	add	r3, r3, #1
+.L1160:
+	uxth	r2, r3
+	cmp	ip, r2
+	bhi	.L1155
 	mov	r2, #0
 	mov	r1, r5
 	bl	FlashReadPages
 	ldr	r3, [r6, #3288]
-	mov	r2, #20
-	mla	r5, r2, r5, r3
-.L1258:
-	cmp	r5, r3
-	addeq	r4, r4, #1
-	uxtheq	r4, r4
-	beq	.L1255
-.L1261:
-	ldr	r2, [r3]
-	cmp	r2, #0
-	bne	.L1252
-	ldr	r2, [r3, #12]
-	ldrh	r1, [r2]
-	cmp	r1, r8
-	beq	.L1260
-	ldr	r2, [r2, #4]
-	cmn	r2, #1
-	strne	r2, [r6, #3448]
-.L1260:
-	add	r3, r3, #20
-	b	.L1258
-.L1262:
-	mvn	r3, #0
-	str	r3, [r6, #3448]
-.L1252:
-	ldr	r4, .L1364+20
-	mov	r3, #1
-	ldr	r9, [sp, #8]
-	strh	r3, [r4]	@ movhi
-	sub	r4, r4, #3472
-.L1264:
-	ldrh	ip, [r4, #232]
-	movw	lr, #65535
-	ldr	r0, [r4, #3288]
-	mov	r5, #20
-	ldr	r1, [sp, #24]
-	mov	r3, #0
-	str	r3, [sp, #16]
-.L1265:
-	uxth	r2, r3
-	cmp	ip, r2
-	bhi	.L1267
 	mov	r2, #0
-	ldr	r1, [sp, #16]
-	bl	FlashReadPages
-	mov	r3, #0
-.L1361:
-	str	r3, [sp, #20]
-	ldr	r2, [sp, #16]
-	ldrh	r3, [sp, #20]
-	cmp	r2, r3
-	bhi	.L1295
-	ldr	r3, .L1364+24
-	add	r9, r9, #1
-	uxth	r9, r9
-	ldrh	r3, [r3]
-	cmp	r3, r9
-	bne	.L1264
-	ldrh	r2, [r4, #232]
 	movw	r0, #65535
+.L1156:
+	uxth	r1, r2
+	cmp	r5, r1
+	bhi	.L1159
+	add	r4, r4, #1
+	uxth	r4, r4
+	b	.L1153
+.L1198:
 	mov	r3, #0
-	strh	r9, [fp, #2]	@ movhi
-	strh	r3, [fp, #4]	@ movhi
-.L1296:
-	uxth	r1, r3
-	cmp	r1, r2
-	bcs	.L1232
-	ldr	r1, [sp, #24]
-	ldrh	ip, [r1], #2
+	ldr	r1, [fp, #-84]
+	mov	r5, r3
+	movw	lr, #65535
+	mov	r7, #20
+	b	.L1160
+.L1159:
+	ldr	r1, [r3]
+	cmp	r1, #0
+	bne	.L1150
+	ldr	r1, [r3, #12]
+	ldrh	ip, [r1]
 	cmp	ip, r0
-	str	r1, [sp, #24]
-	add	r1, r3, #1
-	bne	.L1362
-	mov	r3, r1
-	b	.L1296
-.L1267:
+	beq	.L1158
+	ldr	r1, [r1, #4]
+	cmn	r1, #1
+	strne	r1, [r6, #3448]
+.L1158:
+	add	r2, r2, #1
+	add	r3, r3, #20
+	b	.L1156
+.L1164:
 	ldrh	r2, [r1], #2
 	cmp	r2, lr
-	beq	.L1266
-	ldr	r6, [sp, #16]
+	beq	.L1163
+	ldr	r6, [fp, #-80]
 	orr	r2, r9, r2, lsl #10
 	mla	r6, r5, r6, r0
 	str	r2, [r6, #4]
-	ldr	r2, [sp, #16]
+	ldr	r2, [fp, #-80]
 	add	r2, r2, #1
 	uxth	r2, r2
-	str	r2, [sp, #16]
-.L1266:
+	str	r2, [fp, #-80]
+.L1163:
 	add	r3, r3, #1
-	b	.L1265
-.L1295:
-	ldr	r3, [sp, #20]
-	mov	r6, #20
+	b	.L1162
+.L1192:
+	ldr	r3, [fp, #-88]
+	mov	r5, #20
 	ldr	r8, [r4, #3288]
-	mul	r6, r6, r3
-	add	r7, r8, r6
-	ldr	r5, [r7, #4]
-	ubfx	r0, r5, #10, #16
-	str	r5, [sp, #40]
-	bl	P2V_plane
-	ldr	r3, [sp, #8]
+	mul	r5, r5, r3
+	ldr	r3, [fp, #-72]
+	add	r7, r8, r5
 	cmp	r9, r3
-	bcc	.L1269
-	ldr	r2, [sp, #28]
-	moveq	r3, #1
-	movne	r3, #0
+	ldr	r6, [r7, #4]
+	str	r6, [fp, #-52]
+	bcc	.L1166
+	ubfx	r0, r6, #10, #16
+	bl	P2V_plane
+	ldr	r3, [fp, #-72]
+	ldr	r2, [fp, #-92]
+	sub	r3, r9, r3
+	clz	r3, r3
 	cmp	r2, r0
+	lsr	r3, r3, #5
 	movls	r3, #0
-	andhi	r3, r3, #1
 	cmp	r3, #0
-	bne	.L1269
-	ldr	r3, [sp, #12]
-	cmp	r9, r10
-	cmpeq	r3, r0
-	beq	.L1270
-	ldr	r3, [r8, r6]
+	bne	.L1166
+	ldr	r3, [fp, #-68]
+	ldr	r2, [fp, #-76]
+	cmp	r9, r3
+	cmpeq	r2, r0
+	bne	.L1167
+	ldr	r3, [fp, #-68]
+	strb	r2, [r10, #6]
+	mov	r1, r3
+	strh	r3, [r10, #2]	@ movhi
+.L1256:
+	mov	r0, r10
+	bl	ftl_sb_update_avl_pages
+	b	.L1130
+.L1167:
+	ldr	r3, [r8, r5]
 	cmn	r3, #1
-	beq	.L1271
+	beq	.L1168
 	ldr	r7, [r7, #12]
 	movw	r3, #61589
-	ldrh	r2, [r7]
-	cmp	r2, r3
-	ldrhne	r0, [fp]
-	bne	.L1358
+	ldrh	r6, [r7]
+	cmp	r6, r3
+	ldrhne	r0, [r10]
+	bne	.L1251
 	ldr	r3, [r7, #4]
+	str	r3, [fp, #-64]
 	cmn	r3, #1
-	str	r3, [sp, #4]
-	beq	.L1273
-	mov	r0, r3
+	beq	.L1171
 	ldr	r1, [r4, #2592]
+	mov	r0, r3
 	bl	ftl_cmp_data_ver
 	cmp	r0, #0
-	ldrne	r3, [sp, #4]
-	addne	r3, r3, #1
-	strne	r3, [r4, #2592]
-.L1273:
-	ldrh	r2, [r7]
-	movw	r3, #61589
-	cmp	r2, r3
-	beq	.L1274
+	beq	.L1171
+	ldr	r3, [fp, #-64]
+	add	r3, r3, #1
+	str	r3, [r4, #2592]
+	ldrh	r3, [r7]
+	cmp	r3, r6
+	beq	.L1171
+	ldr	r1, .L1257+16
 	movw	r2, #1961
-	ldr	r1, .L1364+12
-	ldr	r0, .L1364+16
+	ldr	r0, .L1257+20
 	bl	sftl_printk
-.L1274:
-	ldr	r5, [r7, #8]
-	add	r1, sp, #36
+.L1171:
+	ldr	r6, [r7, #8]
+	sub	r1, fp, #56
 	ldr	r3, [r7, #12]
 	mov	r2, #0
-	mov	r0, r5
-	str	r3, [sp, #32]
+	mov	r0, r6
+	str	r3, [fp, #-60]
 	bl	log2phys
 	ldr	r1, [r4, #3448]
 	cmn	r1, #1
-	beq	.L1275
-	ldr	r0, [sp, #4]
+	beq	.L1173
+	ldr	r0, [fp, #-64]
 	bl	ftl_cmp_data_ver
 	cmp	r0, #0
-	beq	.L1275
-	ldr	r3, [sp, #32]
+	beq	.L1173
+	ldr	r3, [fp, #-60]
 	cmn	r3, #1
-	beq	.L1276
+	beq	.L1174
 	ldr	r0, [r4, #3288]
 	mov	r2, #0
 	mov	r1, #1
-	add	r0, r0, r6
+	add	r0, r0, r5
 	str	r3, [r0, #4]
 	ldr	r7, [r0, #12]
 	bl	FlashReadPages
-	ldr	r2, [r4, #3288]
-	ldr	r1, [r2, r6]
-	add	r3, r2, r6
-	cmn	r1, #1
-	bne	.L1277
-.L1278:
+	ldr	r8, [r4, #3288]
+	add	r3, r8, r5
+	ldr	r2, [r8, r5]
+	cmn	r2, #1
+	bne	.L1175
+.L1176:
 	mvn	r3, #0
-	str	r3, [sp, #32]
-.L1285:
-	ldr	r7, [sp, #32]
-	cmn	r7, #1
-	beq	.L1269
-.L1299:
-	ubfx	r0, r7, #10, #16
+	str	r3, [fp, #-60]
+.L1183:
+	ldr	r0, [fp, #-60]
+	cmn	r0, #1
+	beq	.L1166
+	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
 	ldrh	r3, [r4, #240]
 	mov	r5, r0
 	cmp	r3, r0
-	bhi	.L1291
+	bhi	.L1188
+	ldr	r1, .L1257+16
 	movw	r2, #2066
-	ldr	r1, .L1364+12
-	ldr	r0, .L1364+16
+	ldr	r0, .L1257+20
 	bl	sftl_printk
-.L1291:
+.L1188:
 	ldr	r2, [r4, #72]
 	lsl	r3, r5, #1
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	beq	.L1292
+	beq	.L1189
 	mov	r0, r5
-.L1358:
+.L1251:
 	bl	decrement_vpc_count
-	b	.L1269
-.L1276:
-	ldr	r3, [sp, #40]
-	ldr	r2, [sp, #36]
+	b	.L1166
+.L1174:
+	ldrd	r2, [fp, #-56]
 	cmp	r2, r3
-	bne	.L1269
+	bne	.L1166
+	sub	r1, fp, #60
+	mov	r0, r6
 	mov	r2, #1
-	add	r1, sp, #32
-	mov	r0, r5
 	bl	log2phys
-.L1269:
-	ldr	r3, [sp, #20]
+.L1166:
+	ldr	r3, [fp, #-88]
 	add	r3, r3, #1
-	b	.L1361
-.L1277:
-	ldr	r1, [r7, #8]
-	cmp	r5, r1
-	bne	.L1278
-	ldr	r8, [r7, #4]
-	ldr	r0, [r4, #3448]
-	mov	r1, r8
-	bl	ftl_cmp_data_ver
-	cmp	r0, #0
-	beq	.L1278
-	ldr	r1, [sp, #36]
-	ldr	r0, [sp, #40]
-	cmp	r1, r0
-	bne	.L1280
-.L1283:
-	ldr	r1, [sp, #32]
-	mov	r0, r5
-	bl	FtlReUsePrevPpa
-	b	.L1278
-.L1280:
-	ldr	r0, [sp, #32]
-	cmp	r1, r0
-	beq	.L1278
-	cmn	r1, #1
-	streq	r1, [r2, r6]
-	beq	.L1282
-	str	r1, [r3, #4]
-	mov	r2, #0
-	mov	r1, #1
-	mov	r0, r3
-	ldr	r7, [r3, #12]
-	bl	FlashReadPages
-.L1282:
-	ldr	r3, [r4, #3288]
-	ldr	r3, [r3, r6]
-	cmn	r3, #1
-	beq	.L1283
+	b	.L1254
+.L1175:
+	ldr	r2, [r7, #8]
+	str	r2, [fp, #-100]
+	cmp	r2, r6
+	bne	.L1176
+	str	r3, [fp, #-104]
 	ldr	r3, [r7, #4]
 	ldr	r0, [r4, #3448]
 	mov	r1, r3
+	str	r3, [fp, #-96]
 	bl	ftl_cmp_data_ver
 	cmp	r0, #0
-	beq	.L1283
-	mov	r1, r3
-	mov	r0, r8
+	beq	.L1176
+	ldr	r0, [fp, #-52]
+	ldr	r2, [fp, #-56]
+	ldr	r1, [fp, #-60]
+	cmp	r2, r0
+	ldr	r3, [fp, #-104]
+	ldreq	r0, [fp, #-100]
+	beq	.L1250
+	cmp	r2, r1
+	beq	.L1176
+	cmn	r2, #1
+	streq	r2, [r8, r5]
+	beq	.L1180
+	str	r2, [r3, #4]
+	mov	r0, r3
+	mov	r2, #0
+	mov	r1, #1
+	ldr	r7, [r3, #12]
+	bl	FlashReadPages
+.L1180:
+	ldr	r3, [r4, #3288]
+	ldr	r3, [r3, r5]
+	cmn	r3, #1
+	beq	.L1181
+	ldr	r5, [r7, #4]
+	ldr	r0, [r4, #3448]
+	mov	r1, r5
 	bl	ftl_cmp_data_ver
 	cmp	r0, #0
-	beq	.L1278
-	b	.L1283
-.L1275:
-	ldr	r3, [sp, #40]
-	ldr	r2, [sp, #36]
+	beq	.L1181
+	ldr	r0, [fp, #-96]
+	mov	r1, r5
+	bl	ftl_cmp_data_ver
+	cmp	r0, #0
+	beq	.L1176
+.L1181:
+	ldr	r1, [fp, #-60]
+	mov	r0, r6
+.L1250:
+	bl	FtlReUsePrevPpa
+	b	.L1176
+.L1173:
+	ldrd	r2, [fp, #-56]
 	cmp	r2, r3
-	beq	.L1285
-	ldr	r1, [sp, #32]
+	beq	.L1183
+	ldr	r1, [fp, #-60]
 	cmn	r1, #1
-	beq	.L1287
+	beq	.L1185
 	ldr	r3, [r4, #248]
 	cmp	r3, r1, lsr #10
-	ldrls	r0, .L1364+28
-	bls	.L1360
-.L1287:
+	ldrls	r0, .L1257+24
+	bls	.L1253
+.L1185:
+	sub	r1, fp, #52
+	mov	r0, r6
 	mov	r2, #1
-	add	r1, sp, #40
-	mov	r0, r5
 	bl	log2phys
-	ldr	r7, [sp, #36]
+	ldr	r7, [fp, #-56]
 	cmn	r7, #1
-	beq	.L1285
-	ldr	r3, [sp, #32]
+	beq	.L1183
+	ldr	r3, [fp, #-60]
 	cmp	r7, r3
-	beq	.L1299
+	beq	.L1183
 	ubfx	r0, r7, #10, #16
 	bl	P2V_block_in_plane
 	ldrh	r3, [r4, #24]
 	cmp	r3, r0
-	beq	.L1290
+	beq	.L1187
 	ldrh	r3, [r4, #76]
 	cmp	r3, r0
-	beq	.L1290
+	beq	.L1187
 	ldrh	r3, [r4, #124]
 	cmp	r3, r0
-	bne	.L1285
-.L1290:
+	bne	.L1183
+.L1187:
 	ldr	r0, [r4, #3288]
 	mov	r2, #0
 	mov	r1, #1
 	str	r7, [r0, #4]
-	ldr	r6, [r0, #12]
+	ldr	r5, [r0, #12]
 	bl	FlashReadPages
 	ldr	r3, [r4, #3288]
 	ldr	r3, [r3]
 	cmn	r3, #1
-	beq	.L1285
-	ldr	r1, [r6, #4]
-	ldr	r0, [sp, #4]
+	beq	.L1183
+	ldr	r1, [r5, #4]
+	ldr	r0, [fp, #-64]
 	bl	ftl_cmp_data_ver
 	cmp	r0, #0
-	bne	.L1285
+	bne	.L1183
+	sub	r1, fp, #56
+	mov	r0, r6
 	mov	r2, #1
-	add	r1, sp, #36
-	mov	r0, r5
 	bl	log2phys
-	b	.L1285
-.L1292:
-	ldr	r0, .L1364+32
+	b	.L1183
+.L1189:
+	ldr	r0, .L1257+28
 	mov	r1, r5
-.L1360:
+.L1253:
 	bl	sftl_printk
-	b	.L1269
-.L1271:
+	b	.L1166
+.L1168:
 	ldr	r3, [r4, #3476]
 	cmp	r3, #31
 	addls	r2, r4, r3, lsl #2
 	addls	r3, r3, #1
 	strls	r3, [r4, #3476]
-	strls	r5, [r2, #3480]
-	ldrh	r0, [fp]
+	strls	r6, [r2, #3480]
+	ldrh	r0, [r10]
 	bl	decrement_vpc_count
 	ldr	r3, [r4, #3448]
 	cmn	r3, #1
-	ldreq	r3, [sp, #4]
-	beq	.L1359
-	ldr	r2, [sp, #4]
-	cmp	r2, r3
-	bcs	.L1269
+	ldreq	r3, [fp, #-64]
+	beq	.L1252
+	ldr	r2, [fp, #-64]
+	cmp	r3, r2
+	bls	.L1166
 	mov	r3, r2
-.L1359:
+.L1252:
 	str	r3, [r4, #3448]
-	b	.L1269
-.L1270:
-	ldrb	r3, [sp, #12]	@ zero_extendqisi2
-	strh	r10, [fp, #2]	@ movhi
-	ldr	r2, [sp, #12]
-	strb	r3, [fp, #6]
-	b	.L1363
-.L1300:
-	add	sp, sp, #52
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1365:
+	b	.L1166
+.L1196:
+	mov	r0, #0
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1258:
 	.align	2
-.L1364:
-	.word	__stack_chk_guard
+.L1257:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+312
-	.word	.LANCHOR1+435
-	.word	.LC8
 	.word	.LANCHOR0+3472
 	.word	.LANCHOR0+302
+	.word	.LANCHOR1+435
+	.word	.LC8
 	.word	.LC109
 	.word	.LC110
-	.fnend
 	.size	FtlRecoverySuperblock, .-FtlRecoverySuperblock
+	.section	.rodata.str1.1
+.LC111:
+	.ascii	"...%s enter...\012\000"
+.LC112:
+	.ascii	"FtlCheckVpc2 %x = %x  %x\012\000"
+.LC113:
+	.ascii	"free blk vpc error %x = %x  %x\012\000"
+	.text
 	.align	2
 	.global	ftl_check_vpc
 	.syntax unified
@@ -8781,137 +9201,135 @@
 	.fpu softvfp
 	.type	ftl_check_vpc, %function
 ftl_check_vpc:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 16
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #20
-	sub	sp, sp, #20
-	ldr	r5, .L1392
+	@ args = 0, pretend = 0, frame = 8
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	ldr	r5, .L1284
+	bic	r6, r3, #8128
+	ldr	r1, .L1284+4
+	bic	r6, r6, #63
+	ldr	r0, .L1284+8
 	mov	r4, #0
-	ldr	r6, .L1392+4
-	ldr	r3, [r5]
-	ldr	r1, .L1392+8
-	ldr	r0, .L1392+12
-	ldr	r7, .L1392+16
-	str	r3, [sp, #12]
+	ldr	r3, [r6, #24]
+	str	r3, [fp, #-48]
 	bl	sftl_printk
+	ldr	r0, .L1284+12
 	mov	r2, #8192
 	mov	r1, #0
-	ldr	r0, .L1392+16
 	bl	ftl_memset
-	str	r5, [sp, #4]
-	mov	r5, r6
-.L1367:
-	ldr	r3, [r6, #2552]
-	cmp	r4, r3
-	bcc	.L1369
-	ldr	r8, .L1392+16
+.L1260:
+	ldr	r3, [r5, #2552]
+	cmp	r3, r4
+	bhi	.L1262
+	ldr	r9, .L1284+12
 	mov	r4, #0
-	ldr	r10, .L1392+20
-	mov	r6, r4
-	movw	r9, #65535
-.L1370:
+	ldr	r10, .L1284+16
+	mov	r7, r4
+.L1263:
 	ldrh	r2, [r5, #240]
 	uxth	r3, r4
 	cmp	r2, r3
-	bhi	.L1372
+	bhi	.L1265
 	ldr	r4, [r5, #2532]
 	cmp	r4, #0
-	beq	.L1373
-	ldr	r3, [r5, #2516]
-	mov	r7, #0
+	beq	.L1266
+	ldr	r1, [r5, #2516]
+	mov	r9, #0
 	ldrh	r8, [r5, #224]
-	mov	fp, #6
-	ldr	r9, .L1392+16
-	sub	r4, r4, r3
-	ldr	r3, .L1392+24
+	sub	r4, r4, r1
+	ldr	r1, .L1284+20
+	ldr	r10, .L1284+12
 	asr	r4, r4, #1
-	ldr	r10, .L1392+28
-	mul	r4, r3, r4
+	ldr	r0, .L1284+24
+	mul	r4, r1, r4
 	uxth	r4, r4
-.L1374:
-	uxth	r3, r7
+.L1267:
+	uxth	r3, r9
 	cmp	r8, r3
-	bls	.L1373
+	bls	.L1266
 	ldr	r2, [r5, #72]
 	lsl	r3, r4, #1
 	ldrh	r2, [r2, r3]
 	cmp	r2, #0
-	beq	.L1375
-	mov	r6, #1
-	ldrh	r3, [r9, r3]
+	beq	.L1268
+	ldrh	r3, [r10, r3]
 	mov	r1, r4
-	mov	r0, r10
 	bl	sftl_printk
-.L1375:
-	mul	r4, fp, r4
-	ldr	r3, [r5, #2516]
-	add	r7, r7, #1
-	ldrh	r4, [r3, r4]
+	ldr	r0, .L1284+24
+	mov	r7, #1
+.L1268:
+	mov	r3, #6
+	ldr	r2, [r5, #2516]
+	add	r9, r9, #1
+	mul	r3, r3, r4
+	ldrh	r4, [r2, r3]
 	movw	r3, #65535
 	cmp	r4, r3
-	bne	.L1374
-.L1373:
-	cmp	r6, #0
-	beq	.L1366
+	bne	.L1267
+.L1266:
+	cmp	r7, #0
+	beq	.L1259
+	ldr	r1, .L1284+4
 	movw	r2, #2394
-	ldr	r1, .L1392+8
-	ldr	r0, .L1392+32
+	ldr	r0, .L1284+28
 	bl	sftl_printk
-.L1366:
-	ldr	r3, [sp, #4]
-	ldr	r2, [sp, #12]
-	ldr	r3, [r3]
+.L1259:
+	ldr	r2, [fp, #-48]
+	ldr	r3, [r6, #24]
 	cmp	r2, r3
-	beq	.L1378
+	beq	.L1271
 	bl	__stack_chk_fail
-.L1369:
-	mov	r2, #0
-	add	r1, sp, #8
+.L1262:
+	sub	r1, fp, #52
 	mov	r0, r4
+	mov	r2, #0
 	bl	log2phys
-	ldr	r0, [sp, #8]
+	ldr	r0, [fp, #-52]
 	cmn	r0, #1
-	beq	.L1368
+	beq	.L1261
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
+	ldr	r2, .L1284+12
 	lsl	r0, r0, #1
-	ldrh	r3, [r7, r0]
+	ldrh	r3, [r2, r0]
 	add	r3, r3, #1
-	strh	r3, [r7, r0]	@ movhi
-.L1368:
+	strh	r3, [r2, r0]	@ movhi
+.L1261:
 	add	r4, r4, #1
-	b	.L1367
-.L1372:
+	b	.L1260
+.L1265:
 	uxth	r1, r4
 	ldr	r3, [r5, #72]
-	lsl	r7, r1, #1
-	ldrh	r2, [r3, r7]
-	ldrh	r3, [r8, r7]
+	lsl	r8, r1, #1
+	ldrh	r2, [r3, r8]
+	ldrh	r3, [r9, r8]
 	cmp	r2, r3
-	beq	.L1371
+	beq	.L1264
 	mov	r0, r10
 	bl	sftl_printk
 	ldr	r3, [r5, #72]
-	ldrh	r3, [r3, r7]
-	cmp	r3, r9
-	beq	.L1371
-	ldrh	r2, [r8, r7]
+	movw	r2, #65535
+	ldrh	r3, [r3, r8]
+	cmp	r3, r2
+	beq	.L1264
+	ldrh	r2, [r9, r8]
 	cmp	r2, r3
-	movhi	r6, #1
-.L1371:
+	movhi	r7, #1
+.L1264:
 	add	r4, r4, #1
-	b	.L1370
-.L1378:
-	add	sp, sp, #20
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1393:
+	b	.L1263
+.L1271:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1285:
 	.align	2
-.L1392:
-	.word	__stack_chk_guard
+.L1284:
 	.word	.LANCHOR0
 	.word	.LANCHOR1+457
 	.word	.LC111
@@ -8920,8 +9338,16 @@
 	.word	-1431655765
 	.word	.LC113
 	.word	.LC8
-	.fnend
 	.size	ftl_check_vpc, .-ftl_check_vpc
+	.section	.rodata.str1.1
+.LC114:
+	.ascii	"ftl_scan_all_data = %x\012\000"
+.LC115:
+	.ascii	"scan lpa = %x ppa= %x\012\000"
+.LC116:
+	.ascii	"lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
+	.ascii	"\000"
+	.text
 	.align	2
 	.global	ftl_scan_all_data
 	.syntax unified
@@ -8929,70 +9355,71 @@
 	.fpu softvfp
 	.type	ftl_scan_all_data, %function
 ftl_scan_all_data:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 8
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, lr}
-	.save {r4, r5, r6, r7, r8, r9, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #32
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	ldr	r4, .L1295
+	bic	r6, r3, #8128
 	mov	r5, #0
-	ldr	r6, .L1404
-	.pad #36
-	sub	sp, sp, #36
+	bic	r6, r6, #63
+	ldr	r0, .L1295+4
 	mov	r1, #0
-	ldr	r7, .L1404+4
-	ldr	r9, .L1404+8
-	ldr	r3, [r6]
-	mov	r4, r7
-	ldr	r0, .L1404+12
-	str	r3, [sp, #28]
+	ldr	r3, [r6, #24]
+	str	r3, [fp, #-32]
 	bl	sftl_printk
-.L1395:
-	ldr	r3, [r7, #2552]
-	cmp	r5, r3
-	bcc	.L1401
-	ldr	r2, [sp, #28]
-	ldr	r3, [r6]
+.L1287:
+	ldr	r3, [r4, #2552]
+	cmp	r3, r5
+	bhi	.L1293
+	ldr	r2, [fp, #-32]
+	ldr	r3, [r6, #24]
 	cmp	r2, r3
-	beq	.L1402
+	beq	.L1294
 	bl	__stack_chk_fail
-.L1401:
-	mov	r2, #0
-	add	r1, sp, #24
+.L1293:
+	sub	r1, fp, #36
 	mov	r0, r5
+	mov	r2, #0
 	bl	log2phys
 	ubfx	r3, r5, #0, #11
 	cmp	r3, #0
-	bne	.L1396
-	ldr	r2, [sp, #24]
+	bne	.L1288
+	ldr	r2, [fp, #-36]
 	mov	r1, r5
-	mov	r0, r9
+	ldr	r0, .L1295+8
 	bl	sftl_printk
-.L1396:
-	ldr	r3, [sp, #24]
+.L1288:
+	ldr	r3, [fp, #-36]
 	cmn	r3, #1
-	beq	.L1398
-	str	r3, [r4, #3456]
+	beq	.L1290
+	ldr	r7, [r4, #3332]
 	mov	r2, #0
-	ldr	r3, [r4, #3300]
+	str	r3, [r4, #3456]
 	mov	r1, #1
-	ldr	r8, [r4, #3332]
-	ldr	r0, .L1404+16
+	ldr	r3, [r4, #3300]
+	ldr	r0, .L1295+12
 	str	r3, [r4, #3460]
 	str	r5, [r4, #3468]
-	str	r8, [r4, #3464]
+	str	r7, [r4, #3464]
 	str	r2, [r4, #3452]
 	bl	FlashReadPages
 	ldr	r3, [r4, #3452]
 	cmn	r3, #1
 	cmpne	r3, #256
-	beq	.L1399
-	ldr	r3, [r8, #8]
-	cmp	r5, r3
-	beq	.L1398
-.L1399:
+	beq	.L1291
+	ldr	r3, [r7, #8]
+	cmp	r3, r5
+	beq	.L1290
+.L1291:
 	ldr	r2, [r4, #3460]
 	ldr	r3, [r4, #3464]
-	ldr	r0, .L1404+20
+	ldr	r0, .L1295+16
 	ldr	r1, [r2, #4]
 	str	r1, [sp, #16]
 	mov	r1, r5
@@ -9004,27 +9431,28 @@
 	str	r2, [sp, #4]
 	ldr	r2, [r3, #4]
 	str	r2, [sp]
-	ldr	r3, [r3]
 	ldr	r2, [r4, #3456]
+	ldr	r3, [r3]
 	bl	sftl_printk
-.L1398:
+.L1290:
 	add	r5, r5, #1
-	b	.L1395
-.L1402:
-	add	sp, sp, #36
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, pc}
-.L1405:
+	b	.L1287
+.L1294:
+	sub	sp, fp, #28
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L1296:
 	.align	2
-.L1404:
-	.word	__stack_chk_guard
+.L1295:
 	.word	.LANCHOR0
-	.word	.LC115
 	.word	.LC114
+	.word	.LC115
 	.word	.LANCHOR0+3452
 	.word	.LC116
-	.fnend
 	.size	ftl_scan_all_data, .-ftl_scan_all_data
+	.section	.rodata.str1.1
+.LC117:
+	.ascii	"FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000"
+	.text
 	.align	2
 	.global	FtlGcScanTempBlk
 	.syntax unified
@@ -9032,147 +9460,156 @@
 	.fpu softvfp
 	.type	FtlGcScanTempBlk, %function
 FtlGcScanTempBlk:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 56
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1440
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #60
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #60
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
 	mov	r4, r0
-	str	r1, [sp, #12]
-	ldr	r3, [r3]
-	str	r3, [sp, #52]
-	ldr	r3, .L1440+4
+	bic	r3, r3, #8128
+	str	r1, [fp, #-84]
+	bic	r3, r3, #63
+	ldr	r3, [r3, #24]
+	str	r3, [fp, #-48]
+	ldr	r3, .L1329
 	ldrh	r5, [r3, #4]
 	movw	r3, #65535
 	cmp	r5, r3
-	beq	.L1432
+	beq	.L1322
 	cmp	r5, #0
-	bne	.L1407
-.L1408:
-	bl	FtlGcPageVarInit
-	b	.L1409
-.L1432:
-	mov	r5, #0
-.L1407:
-	ldr	r2, .L1440+8
+	beq	.L1299
+.L1298:
+	ldr	r2, .L1329+4
 	movw	r3, #302
 	ldrh	r3, [r2, r3]
-	ldr	r2, [sp, #12]
+	ldr	r2, [fp, #-84]
 	cmp	r3, r2
-	beq	.L1408
-.L1409:
-	ldr	r6, .L1440+8
+	bne	.L1300
+.L1299:
+	bl	FtlGcPageVarInit
+.L1300:
+	ldr	r6, .L1329+4
 	mov	r3, #0
-	str	r3, [sp, #4]
-.L1425:
+	str	r3, [fp, #-80]
+.L1317:
 	ldrh	r2, [r4]
 	mov	r3, #0
 	strb	r3, [r4, #8]
 	movw	r3, #65535
 	cmp	r2, r3
-	beq	.L1410
-.L1428:
-	ldrh	r3, [r6, #232]
-	mov	r2, #0
-	ldr	r0, [r6, #3288]
-	add	ip, r4, #16
-	ldr	fp, [r6, #3180]
-	mov	r8, r2
-	str	r3, [sp, #8]
-	movw	r7, #65535
+	beq	.L1301
+.L1302:
 	ldr	r3, [r6, #3176]
-	mov	r9, #20
-	str	r3, [sp, #16]
-	ldr	r3, .L1440+12
-	ldrh	r3, [r3]
-	str	r3, [sp, #20]
-	ldr	r3, .L1440+16
-	ldrh	lr, [r3]
-.L1411:
-	ldr	r1, [sp, #8]
-	uxth	r3, r2
-	cmp	r1, r3
-	bhi	.L1413
-	mov	r10, #0
-	mov	r2, #0
-	mov	r1, r8
-	bl	FlashReadPages
-.L1414:
-	uxth	r3, r10
-	cmp	r8, r3
-	bhi	.L1426
-	ldr	r3, [sp, #4]
-	add	r5, r5, #1
-	uxth	r5, r5
-	add	r3, r3, #1
-	str	r3, [sp, #4]
-	ldr	r2, [sp, #4]
-	ldr	r3, [sp, #12]
+	mov	r7, #0
+	str	r3, [fp, #-88]
+	movw	lr, #65535
+	ldr	r3, .L1329+8
+	mov	r8, #20
+	ldr	r0, [r6, #3288]
+	ldr	r10, [r6, #3180]
+	ldrh	r2, [r3]
+	ldrh	r9, [r3, #2]
+	ldrh	r3, [r6, #232]
+	str	r2, [fp, #-92]
+	add	r2, r4, #16
+	add	r3, r4, r3, lsl #1
+	add	r3, r3, #16
+	str	r3, [fp, #-96]
+.L1303:
+	ldr	r3, [fp, #-96]
 	cmp	r3, r2
-	ldr	r2, .L1440+20
-	bls	.L1427
-.L1429:
-	ldrh	r3, [r2]
-	cmp	r3, r5
-	bhi	.L1428
-.L1410:
-	ldr	r3, .L1440+4
-	mvn	r2, #0
-	strh	r5, [r4, #2]	@ movhi
-	mov	r1, r5
-	mov	r0, r4
-	strh	r2, [r3, #4]	@ movhi
+	bne	.L1305
+	mov	r10, #0
+	mov	r1, r7
 	mov	r2, #0
-	strb	r2, [r4, #6]
-	bl	ftl_sb_update_avl_pages
-	b	.L1430
-.L1413:
-	ldrh	r3, [ip], #2
-	cmp	r3, r7
-	beq	.L1412
-	mla	r1, r9, r8, r0
+	bl	FlashReadPages
+.L1306:
+	uxth	r3, r10
+	cmp	r7, r3
+	bhi	.L1318
+	ldr	r3, [fp, #-80]
+	add	r5, r5, #1
+	add	r3, r3, #1
+	str	r3, [fp, #-80]
+	ldr	r2, [fp, #-80]
+	uxth	r5, r5
+	ldr	r3, [fp, #-84]
+	cmp	r3, r2
+	bhi	.L1319
+	ldr	r2, .L1329
+	movw	r1, #65535
+	ldrh	r3, [r2, #4]
+	cmp	r3, r1
+	beq	.L1319
+	ldr	r1, [fp, #-80]
+	add	r3, r3, r1
+	strh	r3, [r2, #4]	@ movhi
+	ldr	r2, .L1329+4
+	movw	r3, #302
+	ldrh	r3, [r2, r3]
+	cmp	r3, r5
+	bls	.L1301
+.L1320:
+	mov	r3, sp
+	ldr	r2, [fp, #-48]
+	bic	r3, r3, #8128
+	bic	r3, r3, #63
+	ldr	r3, [r3, #24]
+	cmp	r2, r3
+	beq	.L1321
+	bl	__stack_chk_fail
+.L1322:
+	mov	r5, #0
+	b	.L1298
+.L1305:
+	ldrh	r3, [r2], #2
+	cmp	r3, lr
+	beq	.L1303
+	mla	r1, r8, r7, r0
 	orr	r3, r5, r3, lsl #10
 	str	r3, [r1, #4]
-	ldr	r3, [sp, #20]
-	mul	r3, r3, r8
-	add	r10, r3, #3
-	cmp	r3, #0
-	movlt	r3, r10
-	ldr	r10, [sp, #16]
+	ldr	r3, [fp, #-92]
+	mul	ip, r3, r7
+	cmp	ip, #0
+	add	r3, ip, #3
+	movge	r3, ip
+	ldr	ip, [fp, #-88]
+	bic	r3, r3, #3
+	add	r3, ip, r3
+	mul	ip, r9, r7
+	str	r3, [r1, #8]
+	add	r7, r7, #1
+	cmp	ip, #0
+	add	r3, ip, #3
+	movge	r3, ip
+	uxth	r7, r7
 	bic	r3, r3, #3
 	add	r3, r10, r3
-	str	r3, [r1, #8]
-	mul	r3, lr, r8
-	add	r8, r8, #1
-	uxth	r8, r8
-	add	r10, r3, #3
-	cmp	r3, #0
-	movlt	r3, r10
-	bic	r3, r3, #3
-	add	r3, fp, r3
 	str	r3, [r1, #12]
-.L1412:
-	add	r2, r2, #1
-	b	.L1411
-.L1426:
-	mov	r3, #20
+	b	.L1303
+.L1318:
+	mov	r9, #20
 	ldr	r2, [r6, #3288]
-	mul	fp, r3, r10
-	ldr	r7, [r2, fp]
-	add	r1, r2, fp
+	mul	r9, r9, r10
+	add	r1, r2, r9
+	ldr	r2, [r2, r9]
 	ldr	r3, [r1, #4]
-	ldr	r9, [r1, #12]
-	cmp	r7, #0
-	str	r3, [sp, #8]
-	bne	.L1415
-	ldrh	r1, [r9]
-	movw	r2, #65535
-	cmp	r1, r2
-	bne	.L1416
-.L1438:
+	ldr	r8, [r1, #12]
+	cmp	r2, #0
+	bne	.L1307
+	ldrh	r0, [r8]
+	movw	r1, #65535
+	cmp	r0, r1
+	beq	.L1327
+	ldr	r0, [r8, #8]
+	ldr	r1, [r6, #2552]
+	cmp	r0, r1
+	bls	.L1309
+.L1327:
 	ldrh	r3, [r4]
 	mov	r1, #0
 	ldr	r2, [r6, #72]
@@ -9185,103 +9622,98 @@
 	strh	r3, [r4]	@ movhi
 	strh	r3, [r6, #172]	@ movhi
 	bl	FtlGcPageVarInit
-	b	.L1425
-.L1416:
-	ldr	r0, [r9, #8]
-	ldr	r2, [r6, #2552]
-	cmp	r0, r2
-	bhi	.L1438
-	mov	r2, r7
-	add	r1, sp, #28
+	b	.L1317
+.L1309:
+	sub	r1, fp, #72
+	str	r3, [fp, #-92]
+	str	r2, [fp, #-88]
 	bl	log2phys
-	ldr	r2, [r9, #12]
-	ldr	r1, [sp, #28]
-	sub	r0, r2, r1
-	cmn	r1, #1
-	clz	r0, r0
-	lsr	r0, r0, #5
-	moveq	r0, #0
-	cmp	r0, #0
-	bne	.L1419
-.L1424:
-	ldr	r2, [r9, #8]
-.L1439:
-	ldr	r1, [sp, #8]
+	ldr	r0, [fp, #-72]
+	ldr	r1, [r8, #12]
+	cmn	r0, #1
+	ldr	r2, [fp, #-88]
+	sub	ip, r1, r0
+	ldr	r3, [fp, #-92]
+	clz	ip, ip
+	lsr	ip, ip, #5
+	moveq	ip, #0
+	cmp	ip, #0
+	bne	.L1311
+.L1316:
+	ldr	r2, [r8, #8]
+.L1328:
+	ldr	r0, [r8, #12]
+	mov	r1, r3
 	add	r10, r10, #1
-	ldr	r0, [r9, #12]
 	bl	FtlGcUpdatePage
-	b	.L1414
-.L1419:
-	str	r2, [sp, #36]
+	b	.L1306
+.L1311:
+	str	r1, [fp, #-64]
+	sub	r0, fp, #68
+	ldr	r1, [r6, #3316]
+	str	r1, [fp, #-60]
+	ldr	r1, [r6, #3336]
+	str	r1, [fp, #-56]
 	mov	r1, #1
-	ldr	r2, [r6, #3316]
-	add	r0, sp, #32
-	str	r2, [sp, #40]
-	ldr	r2, [r6, #3336]
-	str	r2, [sp, #44]
-	mov	r2, r7
+	str	r3, [fp, #-92]
+	str	r2, [fp, #-88]
 	bl	FlashReadPages
-	ldr	r3, .L1440+24
-	ldr	r1, [r6, #3288]
-	ldrh	r2, [r3]
-	add	r3, r1, fp
-	ldr	r1, [sp, #40]
-	lsl	r2, r2, #7
-.L1421:
-	cmp	r7, r2
-	beq	.L1424
-	ldr	r0, [r3, #8]
-	ldr	ip, [r0, r7, lsl #2]
-	ldr	r0, [r1, r7, lsl #2]
-	cmp	ip, r0
-	beq	.L1422
-	ldr	r2, [sp, #36]
+	ldr	r1, .L1329+12
+	ldr	r0, [r6, #3288]
+	ldr	r2, [fp, #-88]
+	add	r9, r0, r9
+	ldr	r3, [fp, #-92]
+	ldrh	r1, [r1]
+	ldr	r0, [fp, #-60]
+	lsl	r1, r1, #7
+.L1313:
+	cmp	r1, r2
+	beq	.L1316
+	ldr	ip, [r9, #8]
+	ldr	lr, [ip, r2, lsl #2]
+	ldr	ip, [r0, r2, lsl #2]
+	cmp	lr, ip
+	beq	.L1314
+	ldr	r2, [fp, #-64]
 	ldrh	r1, [r4]
-	ldr	r0, .L1440+28
+	ldr	r0, .L1329+16
 	bl	sftl_printk
-	b	.L1438
-.L1422:
-	add	r7, r7, #1
-	b	.L1421
-.L1415:
+	b	.L1327
+.L1314:
+	add	r2, r2, #1
+	b	.L1313
+.L1307:
 	mvn	r2, #0
-	b	.L1439
-.L1427:
-	ldr	r1, .L1440+4
-	movw	r0, #65535
-	ldrh	r3, [r1, #4]
-	cmp	r3, r0
-	beq	.L1429
-	ldr	r0, [sp, #4]
-	add	r3, r3, r0
-	strh	r3, [r1, #4]	@ movhi
-	ldrh	r3, [r2]
+	b	.L1328
+.L1319:
+	ldr	r3, .L1329+20
+	ldrh	r3, [r3]
 	cmp	r3, r5
-	bls	.L1429
-.L1430:
-	ldr	r3, .L1440
+	bhi	.L1302
+.L1301:
+	ldr	r3, .L1329
+	mvn	r2, #0
+	mov	r1, r5
+	mov	r0, r4
+	strh	r5, [r4, #2]	@ movhi
+	strh	r2, [r3, #4]	@ movhi
+	mov	r2, #0
+	strb	r2, [r4, #6]
+	bl	ftl_sb_update_avl_pages
+	b	.L1320
+.L1321:
 	mvn	r0, #0
-	ldr	r2, [sp, #52]
-	ldr	r3, [r3]
-	cmp	r2, r3
-	beq	.L1431
-	bl	__stack_chk_fail
-.L1431:
-	add	sp, sp, #60
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1441:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1330:
 	.align	2
-.L1440:
-	.word	__stack_chk_guard
+.L1329:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.word	.LANCHOR0+310
-	.word	.LANCHOR0+312
-	.word	.LANCHOR0+302
 	.word	.LANCHOR0+258
 	.word	.LC117
-	.fnend
+	.word	.LANCHOR0+302
 	.size	FtlGcScanTempBlk, .-FtlGcScanTempBlk
 	.align	2
 	.global	FtlReadRefresh
@@ -9290,127 +9722,124 @@
 	.fpu softvfp
 	.type	FtlReadRefresh, %function
 FtlReadRefresh:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 96
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #100
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #100
-	ldr	r6, .L1460
-	ldr	r7, .L1460+4
-	ldr	r10, [r6, #2720]
-	mov	r5, r6
-	ldr	r3, [r7]
-	cmp	r10, #0
-	str	r3, [sp, #92]
-	beq	.L1443
-	ldr	r2, [r6, #2724]
-	ldr	r3, [r6, #2552]
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r5, .L1347
+	mov	r3, sp
+	bic	r6, r3, #8128
+	bic	r6, r6, #63
+	ldr	r9, [r5, #2720]
+	ldr	r3, [r6, #24]
+	str	r3, [fp, #-48]
+	cmp	r9, #0
+	ldr	r3, [r5, #2552]
+	beq	.L1332
+	ldr	r2, [r5, #2724]
 	cmp	r2, r3
-	bcs	.L1444
+	bcs	.L1333
 	mov	r4, #2048
-.L1449:
+.L1338:
 	ldr	r0, [r5, #2724]
 	ldr	r3, [r5, #2552]
 	cmp	r0, r3
-	bcc	.L1445
-.L1448:
+	bcc	.L1334
+.L1337:
 	mvn	r0, #0
-.L1442:
-	ldr	r2, [sp, #92]
-	ldr	r3, [r7]
+.L1331:
+	ldr	r2, [fp, #-48]
+	ldr	r3, [r6, #24]
 	cmp	r2, r3
-	beq	.L1454
+	beq	.L1342
 	bl	__stack_chk_fail
-.L1445:
+.L1334:
 	mov	r2, #0
-	add	r1, sp, #4
+	sub	r1, fp, #136
 	bl	log2phys
-	ldr	r2, [sp, #4]
 	ldr	r3, [r5, #2724]
-	cmn	r2, #1
+	ldr	r2, [fp, #-136]
 	add	r3, r3, #1
 	str	r3, [r5, #2724]
-	beq	.L1447
-	str	r3, [sp, #24]
-	add	r0, sp, #96
+	cmn	r2, #1
+	beq	.L1336
+	str	r2, [fp, #-128]
+	sub	r0, fp, #132
+	str	r3, [fp, #-116]
+	mov	r2, #0
 	ldr	r3, [r5, #3324]
 	mov	r1, #1
-	str	r2, [sp, #12]
-	mov	r2, #0
-	str	r2, [r0, #-88]!
-	str	r3, [sp, #16]
-	add	r3, sp, #28
-	str	r3, [sp, #20]
+	str	r3, [fp, #-124]
+	sub	r3, fp, #112
+	str	r2, [fp, #-132]
+	str	r3, [fp, #-120]
 	bl	FlashReadPages
-	ldr	r3, [sp, #8]
+	ldr	r3, [fp, #-132]
 	cmp	r3, #256
-	bne	.L1448
-	ldr	r0, [sp, #4]
+	bne	.L1337
+	ldr	r0, [fp, #-136]
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
 	bl	FtlGcRefreshBlock
-	b	.L1448
-.L1447:
+	b	.L1337
+.L1336:
 	subs	r4, r4, #1
-	bne	.L1449
-	b	.L1448
-.L1444:
-	ldr	r3, [r6, #2556]
+	bne	.L1338
+	b	.L1337
+.L1333:
+	ldr	r3, [r5, #2556]
 	mov	r0, #0
-	str	r0, [r6, #2720]
-	str	r0, [r6, #2724]
-	str	r3, [r6, #2716]
-	b	.L1442
-.L1443:
-	ldr	r1, [r6, #2612]
+	str	r3, [r5, #2716]
+	str	r0, [r5, #2720]
+	str	r0, [r5, #2724]
+	b	.L1331
+.L1332:
+	ldr	r2, .L1347+4
 	movw	r4, #10000
-	ldr	r9, [r6, #2556]
-	ldr	r8, [r6, #2716]
+	ldr	r1, [r5, #2612]
+	ldr	r8, [r5, #2556]
 	cmp	r1, r4
-	ldr	fp, .L1460+8
-	add	r3, r9, #1048576
+	ldr	r10, [r5, #2716]
+	ldrh	r7, [r2, #28]
+	add	r2, r8, #1048576
 	movhi	r4, #31
 	movls	r4, #63
-	cmp	r8, r3
-	bhi	.L1453
-	ldr	r3, [r6, #2552]
-	lsr	r1, r1, #10
+	cmp	r10, r2
+	bhi	.L1341
 	mov	r0, #1000
+	lsr	r1, r1, #10
 	add	r1, r1, #1
 	mul	r0, r0, r3
 	bl	__aeabi_uidiv
-	add	r0, r0, r8
-	cmp	r9, r0
-	bhi	.L1453
-	ldrh	r3, [fp, #28]
-	ands	r0, r4, r3
-	movne	r0, r10
-	bne	.L1442
-	ldr	r2, [r6, #2740]
-	cmp	r3, r2
-	beq	.L1442
-.L1453:
-	ldrh	r3, [fp, #28]
-	mov	r0, #0
-	str	r0, [r5, #2724]
-	str	r9, [r5, #2716]
-	str	r3, [r5, #2740]
+	add	r0, r0, r10
+	cmp	r8, r0
+	bhi	.L1341
+	ands	r0, r4, r7
+	movne	r0, r9
+	bne	.L1331
+	ldr	r3, [r5, #2740]
+	cmp	r3, r7
+	beq	.L1331
+.L1341:
 	mov	r3, #1
+	mov	r0, #0
+	str	r7, [r5, #2740]
 	str	r3, [r5, #2720]
-	b	.L1442
-.L1454:
-	add	sp, sp, #100
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1461:
+	str	r0, [r5, #2724]
+	str	r8, [r5, #2716]
+	b	.L1331
+.L1342:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1348:
 	.align	2
-.L1460:
+.L1347:
 	.word	.LANCHOR0
-	.word	__stack_chk_guard
 	.word	.LANCHOR0+2468
-	.fnend
 	.size	FtlReadRefresh, .-FtlReadRefresh
 	.align	2
 	.global	l2p_flush
@@ -9419,40 +9848,41 @@
 	.fpu softvfp
 	.type	l2p_flush, %function
 l2p_flush:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r6, .L1353
 	mov	r4, #0
-	ldr	r6, .L1467
-	mov	r7, #12
-	ldr	r5, .L1467+4
+	ldr	r5, .L1353+4
 	bl	FtlWriteDump_data
-.L1463:
+.L1350:
 	ldrh	r3, [r5]
 	uxth	r0, r4
 	cmp	r3, r0
-	bhi	.L1465
+	bhi	.L1352
 	mov	r0, #0
-	pop	{r4, r5, r6, r7, r8, pc}
-.L1465:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L1352:
 	ldr	r2, [r6, #2540]
 	uxth	r3, r4
-	mla	r3, r7, r3, r2
+	mov	r1, #12
+	mla	r3, r1, r3, r2
 	ldr	r3, [r3, #4]
 	cmp	r3, #0
-	bge	.L1464
+	bge	.L1351
 	bl	flush_l2p_region
-.L1464:
+.L1351:
 	add	r4, r4, #1
-	b	.L1463
-.L1468:
+	b	.L1350
+.L1354:
 	.align	2
-.L1467:
+.L1353:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+338
-	.fnend
 	.size	l2p_flush, .-l2p_flush
 	.align	2
 	.global	FtlVendorPartWrite
@@ -9461,115 +9891,112 @@
 	.fpu softvfp
 	.type	FtlVendorPartWrite, %function
 FtlVendorPartWrite:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 104
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1480
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r10, r2
-	ldr	r4, .L1480+4
-	.pad #108
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #108
-	mov	r6, r1
-	add	r1, r0, r1
-	ldr	r2, [r3]
-	str	r3, [sp, #4]
-	str	r2, [sp, #100]
-	ldrh	r2, [r4]
-	cmp	r1, r2
-	mvnhi	r9, #0
-	bhi	.L1469
-	sub	r4, r4, #296
-	mov	r8, r0
-	add	r3, r4, #308
-	mov	r9, #0
-	ldrh	r7, [r3]
-	lsr	r7, r0, r7
-	lsl	fp, r7, #2
-.L1471:
-	cmp	r6, #0
-	bne	.L1476
-.L1469:
-	ldr	r3, [sp, #4]
-	mov	r0, r9
-	ldr	r2, [sp, #100]
-	ldr	r3, [r3]
-	cmp	r2, r3
-	beq	.L1477
-	bl	__stack_chk_fail
-.L1476:
-	ldr	r3, [r4, #3372]
-	mov	r0, r8
-	ldr	r2, [r3, fp]
-	ldr	r3, .L1480+8
-	str	r2, [sp, #12]
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	ldr	r7, .L1365
+	bic	r10, r3, #8128
+	str	r2, [fp, #-136]
+	bic	r10, r10, #63
+	add	r2, r0, r1
+	mov	r6, r0
+	mov	r5, r1
+	ldr	r3, [r10, #24]
+	str	r3, [fp, #-48]
+	mov	r3, r7
+	ldrh	r8, [r3], #-12
+	lsr	r8, r0, r8
 	ldrh	r3, [r3]
+	cmp	r2, r3
+	subls	r7, r7, #308
+	movls	r9, #0
+	bls	.L1357
+	mvn	r9, #0
+	b	.L1355
+.L1362:
+	ldr	r3, [r7, #3372]
+	mov	r0, r6
+	ldr	r2, [r3, r8, lsl #2]
+	ldr	r3, .L1365+4
+	str	r2, [fp, #-148]
+	ldrh	r3, [r3]
+	str	r3, [fp, #-144]
 	mov	r1, r3
-	str	r3, [sp, #8]
 	bl	__aeabi_uidivmod
-	ldr	r3, [sp, #8]
-	ldr	r2, [sp, #12]
-	str	r1, [sp]
-	sub	r5, r3, r1
-	uxth	r5, r5
-	cmp	r6, r5
-	uxthcc	r5, r6
+	ldr	r3, [fp, #-144]
+	ldr	r2, [fp, #-148]
+	sub	r4, r3, r1
+	str	r1, [fp, #-140]
+	ldr	r0, [r7, #3308]
+	uxth	r4, r4
+	cmp	r4, r5
+	uxthhi	r4, r5
 	cmp	r2, #0
-	cmpne	r5, r3
+	cmpne	r3, r4
 	movne	r1, #1
 	moveq	r1, #0
-	beq	.L1473
-	ldr	r3, [r4, #3308]
-	add	r0, sp, #16
-	str	r2, [sp, #20]
+	beq	.L1359
+	str	r2, [fp, #-128]
 	mov	r2, #1
+	str	r0, [fp, #-124]
 	mov	r1, r2
-	str	r3, [sp, #24]
-	add	r3, sp, #36
-	str	r3, [sp, #28]
+	sub	r0, fp, #132
+	sub	r3, fp, #112
+	str	r3, [fp, #-120]
 	bl	FlashReadPages
-.L1474:
-	lsl	r3, r5, #9
-	ldr	r0, [r4, #3308]
-	mov	r1, r10
+.L1360:
+	lsl	r3, r4, #9
+	ldr	r0, [r7, #3308]
 	mov	r2, r3
-	str	r3, [sp, #8]
-	ldr	r3, [sp]
-	sub	r6, r6, r5
-	add	r8, r8, r5
-	add	fp, fp, #4
+	str	r3, [fp, #-144]
+	ldr	r3, [fp, #-140]
+	sub	r5, r5, r4
+	ldr	r1, [fp, #-136]
+	add	r6, r6, r4
 	add	r0, r0, r3, lsl #9
 	bl	ftl_memcpy
-	mov	r1, r7
-	ldr	r2, [r4, #3308]
-	ldr	r0, .L1480+12
-	add	r7, r7, #1
+	ldr	r2, [r7, #3308]
+	mov	r1, r8
+	ldr	r0, .L1365+8
 	bl	FtlMapWritePage
-	ldr	r3, [sp, #8]
+	ldr	r2, [fp, #-136]
+	ldr	r3, [fp, #-144]
 	cmn	r0, #1
+	add	r8, r8, #1
+	add	r3, r2, r3
 	mvneq	r9, #0
-	add	r10, r10, r3
-	b	.L1471
-.L1473:
-	ldr	r3, .L1480+16
-	ldr	r0, [r4, #3308]
+	str	r3, [fp, #-136]
+.L1357:
+	cmp	r5, #0
+	bne	.L1362
+.L1355:
+	ldr	r2, [fp, #-48]
+	ldr	r3, [r10, #24]
+	cmp	r2, r3
+	beq	.L1363
+	bl	__stack_chk_fail
+.L1359:
+	ldr	r3, .L1365+12
 	ldrh	r2, [r3]
 	bl	ftl_memset
-	b	.L1474
-.L1477:
-	add	sp, sp, #108
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1481:
+	b	.L1360
+.L1363:
+	mov	r0, r9
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1366:
 	.align	2
-.L1480:
-	.word	__stack_chk_guard
-	.word	.LANCHOR0+296
+.L1365:
+	.word	.LANCHOR0+308
 	.word	.LANCHOR0+258
 	.word	.LANCHOR0+3608
 	.word	.LANCHOR0+310
-	.fnend
 	.size	FtlVendorPartWrite, .-FtlVendorPartWrite
 	.align	2
 	.global	Ftl_save_ext_data
@@ -9578,21 +10005,24 @@
 	.fpu softvfp
 	.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	r2, .L1484
-	ldr	r3, .L1484+4
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r2, .L1369
+	ldr	r3, .L1369+4
 	ldr	r1, [r2, #2640]
 	cmp	r1, r3
-	bxne	lr
-	ldr	r3, .L1484+8
+	ldmfdne	sp, {fp, sp, pc}
+	ldr	r3, .L1369+8
 	add	r2, r2, #2640
-	mov	r1, #1
-	mov	r0, #0
 	str	r3, [r2, #4]
+	mov	r1, #1
 	ldr	r3, [r2, #-60]
+	mov	r0, #0
 	str	r3, [r2, #88]
 	ldr	r3, [r2, #-56]
 	str	r3, [r2, #92]
@@ -9616,14 +10046,14 @@
 	str	r3, [r2, #44]
 	ldr	r3, [r2, #-24]
 	str	r3, [r2, #48]
-	b	FtlVendorPartWrite
-.L1485:
+	bl	FtlVendorPartWrite
+	ldmfd	sp, {fp, sp, pc}
+.L1370:
 	.align	2
-.L1484:
+.L1369:
 	.word	.LANCHOR0
 	.word	1179929683
-	.word	1342177367
-	.fnend
+	.word	1342177369
 	.size	Ftl_save_ext_data, .-Ftl_save_ext_data
 	.align	2
 	.global	FtlEctTblFlush
@@ -9632,36 +10062,36 @@
 	.fpu softvfp
 	.type	FtlEctTblFlush, %function
 FtlEctTblFlush:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1494
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L1376
 	movw	r1, #3652
 	ldrh	r2, [r3, r1]
 	cmp	r2, #31
 	addls	r2, r2, #1
-	movhi	r2, #32
 	strhls	r2, [r3, r1]	@ movhi
-	movls	r2, #1
-	cmp	r0, #0
-	bne	.L1488
-	ldr	r1, [r3, #3348]
-	ldr	r0, [r1, #20]
-	ldr	r1, [r1, #16]
-	add	r2, r2, r0
-	cmp	r1, r2
-	bcc	.L1492
-.L1488:
-	push	{r4, lr}
-	.save {r4, lr}
-	mov	r0, #64
 	ldr	r2, [r3, #3348]
-	ldr	r1, [r2, #16]
-	str	r1, [r2, #20]
-	ldr	r1, .L1494+4
+	movls	r1, #1
+	movhi	r1, #32
+	cmp	r0, #0
+	ldr	ip, [r2, #16]
+	bne	.L1373
+	ldr	r0, [r2, #20]
+	add	r1, r1, r0
+	cmp	r1, ip
+	bhi	.L1374
+.L1373:
+	ldr	r1, .L1376+4
+	mov	r0, #64
 	str	r1, [r2]
-	movw	r1, #3340
-	ldrh	r1, [r3, r1]
+	str	ip, [r2, #20]
+	movw	r2, #3340
+	ldrh	r1, [r3, r2]
 	ldr	r2, [r3, #3348]
 	lsl	r3, r1, #9
 	str	r3, [r2, #12]
@@ -9672,17 +10102,14 @@
 	str	r3, [r2, #4]
 	bl	FtlVendorPartWrite
 	bl	Ftl_save_ext_data
+.L1374:
 	mov	r0, #0
-	pop	{r4, pc}
-.L1492:
-	mov	r0, #0
-	bx	lr
-.L1495:
+	ldmfd	sp, {fp, sp, pc}
+.L1377:
 	.align	2
-.L1494:
+.L1376:
 	.word	.LANCHOR0
 	.word	1112818501
-	.fnend
 	.size	FtlEctTblFlush, .-FtlEctTblFlush
 	.align	2
 	.global	sftl_vendor_write
@@ -9691,14 +10118,21 @@
 	.fpu softvfp
 	.type	sftl_vendor_write, %function
 sftl_vendor_write:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	add	r0, r0, #256
-	b	FtlVendorPartWrite
-	.fnend
+	bl	FtlVendorPartWrite
+	ldmfd	sp, {fp, sp, pc}
 	.size	sftl_vendor_write, .-sftl_vendor_write
+	.section	.rodata.str1.1
+.LC118:
+	.ascii	"FtlVendorPartRead refresh = %x phyAddr = %x\012\000"
+	.text
 	.align	2
 	.global	FtlVendorPartRead
 	.syntax unified
@@ -9706,121 +10140,124 @@
 	.fpu softvfp
 	.type	FtlVendorPartRead, %function
 FtlVendorPartRead:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 104
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1509
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r10, r2
-	ldr	r5, .L1509+4
-	.pad #108
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #108
-	mov	r7, r1
-	add	r1, r0, r1
-	ldr	r2, [r3]
-	str	r3, [sp, #8]
-	str	r2, [sp, #100]
-	ldrh	r2, [r5]
-	cmp	r1, r2
-	mvnhi	r9, #0
-	bhi	.L1497
-	sub	r5, r5, #296
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	ldr	r6, .L1390
+	bic	r3, r3, #8128
+	mov	r9, r2
+	bic	r3, r3, #63
+	str	r3, [fp, #-136]
+	add	r2, r0, r1
 	mov	r8, r0
-	add	r3, r5, #308
-	mov	r9, #0
-	ldrh	r6, [r3]
-	lsr	r6, r0, r6
-	lsl	fp, r6, #2
-.L1499:
-	cmp	r7, #0
-	bne	.L1505
-.L1497:
-	ldr	r3, [sp, #8]
-	mov	r0, r9
-	ldr	r2, [sp, #100]
-	ldr	r3, [r3]
+	mov	r5, r1
+	ldr	r3, [r3, #24]
+	str	r3, [fp, #-48]
+	mov	r3, r6
+	ldrh	r7, [r3], #-12
+	lsr	r7, r0, r7
+	ldrh	r3, [r3]
 	cmp	r2, r3
-	beq	.L1506
-	bl	__stack_chk_fail
-.L1505:
-	ldr	r3, [r5, #3372]
+	subls	r6, r6, #308
+	movls	r10, #0
+	bls	.L1381
+	mvn	r10, #0
+	b	.L1379
+.L1387:
+	ldr	r2, .L1390+4
 	mov	r0, r8
-	ldr	r3, [r3, fp]
-	str	r3, [sp, #12]
-	ldr	r3, .L1509+8
-	ldrh	r4, [r3]
+	ldr	r3, [r6, #3372]
+	ldrh	r4, [r2]
+	ldr	r3, [r3, r7, lsl #2]
 	mov	r1, r4
+	str	r3, [fp, #-144]
 	bl	__aeabi_uidivmod
 	sub	r4, r4, r1
-	ldr	r3, [sp, #12]
+	ldr	r3, [fp, #-144]
 	uxth	r4, r4
-	str	r1, [sp, #4]
-	cmp	r7, r4
-	uxthcc	r4, r7
+	str	r1, [fp, #-140]
+	cmp	r4, r5
+	uxthhi	r4, r5
 	cmp	r3, #0
 	lsl	r2, r4, #9
-	str	r2, [sp, #12]
-	beq	.L1501
-	ldr	r2, [r5, #3308]
-	add	r0, sp, #16
-	str	r3, [sp, #20]
-	str	r3, [sp, #12]
-	str	r2, [sp, #24]
-	add	r2, sp, #36
-	str	r2, [sp, #28]
+	str	r2, [fp, #-144]
+	beq	.L1383
+	ldr	r2, [r6, #3308]
+	sub	r0, fp, #132
+	str	r2, [fp, #-124]
+	sub	r2, fp, #112
+	str	r2, [fp, #-120]
 	mov	r2, #1
 	mov	r1, r2
+	str	r3, [fp, #-128]
+	str	r3, [fp, #-148]
 	bl	FlashReadPages
-	ldr	r2, [sp, #16]
-	ldr	r3, [sp, #12]
+	ldr	r2, [fp, #-132]
+	ldr	r3, [fp, #-148]
 	cmn	r2, #1
-	ldr	r2, [r5, #3452]
-	mvneq	r9, #0
+	ldr	r2, [r6, #3452]
+	mvneq	r10, #0
 	cmp	r2, #256
-	bne	.L1503
+	bne	.L1385
+	ldr	r0, .L1390+8
 	mov	r2, r3
-	mov	r1, r6
-	ldr	r0, .L1509+12
+	mov	r1, r7
 	bl	sftl_printk
-	ldr	r2, [r5, #3308]
-	mov	r1, r6
-	ldr	r0, .L1509+16
+	ldr	r2, [r6, #3308]
+	ldr	r0, .L1390+12
+	mov	r1, r7
 	bl	FtlMapWritePage
-.L1503:
-	ldr	r1, [r5, #3308]
+.L1385:
+	ldr	r1, [r6, #3308]
 	lsl	r2, r4, #9
-	ldr	r3, [sp, #4]
-	mov	r0, r10
+	ldr	r3, [fp, #-140]
+	mov	r0, r9
 	add	r1, r1, r3, lsl #9
 	bl	ftl_memcpy
-.L1504:
-	add	r6, r6, #1
-	sub	r7, r7, r4
+.L1386:
+	ldr	r3, [fp, #-144]
+	add	r7, r7, #1
+	sub	r5, r5, r4
 	add	r8, r8, r4
-	add	r10, r10, r4, lsl #9
-	add	fp, fp, #4
-	b	.L1499
-.L1501:
+	add	r9, r9, r3
+.L1381:
+	cmp	r5, #0
+	bne	.L1387
+.L1379:
+	ldr	r3, [fp, #-136]
+	ldr	r2, [fp, #-48]
+	ldr	r3, [r3, #24]
+	cmp	r2, r3
+	beq	.L1388
+	bl	__stack_chk_fail
+.L1383:
 	lsl	r2, r4, #9
 	mov	r1, r3
-	mov	r0, r10
+	mov	r0, r9
 	bl	ftl_memset
-	b	.L1504
-.L1506:
-	add	sp, sp, #108
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1510:
+	b	.L1386
+.L1388:
+	mov	r0, r10
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1391:
 	.align	2
-.L1509:
-	.word	__stack_chk_guard
-	.word	.LANCHOR0+296
+.L1390:
+	.word	.LANCHOR0+308
 	.word	.LANCHOR0+258
 	.word	.LC118
 	.word	.LANCHOR0+3608
-	.fnend
 	.size	FtlVendorPartRead, .-FtlVendorPartRead
+	.section	.rodata.str1.1
+.LC119:
+	.ascii	"no ect\000"
+	.text
 	.align	2
 	.global	FtlLoadEctTbl
 	.syntax unified
@@ -9828,41 +10265,42 @@
 	.fpu softvfp
 	.type	FtlLoadEctTbl, %function
 FtlLoadEctTbl:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1394
 	movw	r5, #3340
-	ldr	r4, .L1514
 	mov	r0, #64
 	ldr	r2, [r4, #3348]
 	ldrh	r1, [r4, r5]
 	bl	FtlVendorPartRead
 	ldr	r3, [r4, #3348]
 	ldr	r2, [r3]
-	ldr	r3, .L1514+4
+	ldr	r3, .L1394+4
 	cmp	r2, r3
-	beq	.L1512
-	ldr	r1, .L1514+8
-	ldr	r0, .L1514+12
+	beq	.L1393
+	ldr	r1, .L1394+8
+	ldr	r0, .L1394+12
 	bl	sftl_printk
 	ldrh	r2, [r4, r5]
-	mov	r1, #0
 	ldr	r0, [r4, #3348]
+	mov	r1, #0
 	lsl	r2, r2, #9
 	bl	ftl_memset
-.L1512:
+.L1393:
 	mov	r0, #0
-	pop	{r4, r5, r6, pc}
-.L1515:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L1395:
 	.align	2
-.L1514:
+.L1394:
 	.word	.LANCHOR0
 	.word	1112818501
 	.word	.LC119
 	.word	.LC77
-	.fnend
 	.size	FtlLoadEctTbl, .-FtlLoadEctTbl
 	.align	2
 	.global	Ftl_load_ext_data
@@ -9871,70 +10309,66 @@
 	.fpu softvfp
 	.type	Ftl_load_ext_data, %function
 Ftl_load_ext_data:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1398
 	mov	r1, #1
-	ldr	r4, .L1520
 	mov	r0, #0
-	ldr	r5, .L1520+4
+	ldr	r5, .L1398+4
 	add	r2, r4, #2640
 	bl	FtlVendorPartRead
 	ldr	r3, [r4, #2640]
 	cmp	r3, r5
-	beq	.L1517
+	beq	.L1397
+	add	r0, r4, #2640
 	mov	r2, #512
 	mov	r1, #0
-	add	r0, r4, #2640
 	bl	ftl_memset
 	str	r5, [r4, #2640]
-.L1517:
-	ldr	r3, [r4, #2640]
-	cmp	r3, r5
-	bne	.L1518
+.L1397:
+	ldr	r2, [r4, #2672]
+	str	r2, [r4, #2608]
+	ldr	r2, [r4, #2676]
+	str	r2, [r4, #2560]
+	ldr	r2, [r4, #2680]
 	ldr	r3, [r4, #2728]
+	str	r2, [r4, #2568]
+	ldr	r2, [r4, #2684]
 	str	r3, [r4, #2580]
+	str	r2, [r4, #2612]
 	ldr	r3, [r4, #2732]
+	ldr	r2, [r4, #2688]
 	str	r3, [r4, #2584]
+	str	r2, [r4, #2616]
 	ldr	r3, [r4, #2648]
+	ldr	r2, .L1398+8
 	str	r3, [r4, #2576]
 	ldr	r3, [r4, #2652]
 	str	r3, [r4, #2564]
 	ldr	r3, [r4, #2656]
 	str	r3, [r4, #2556]
 	ldr	r3, [r4, #2660]
+	ldrh	r2, [r2]
 	str	r3, [r4, #2572]
-	ldr	r3, [r4, #2668]
-	str	r3, [r4, #2600]
-	ldr	r3, [r4, #2672]
-	str	r3, [r4, #2608]
-	ldr	r3, [r4, #2676]
-	str	r3, [r4, #2560]
-	ldr	r3, [r4, #2680]
-	str	r3, [r4, #2568]
-	ldr	r3, [r4, #2684]
-	str	r3, [r4, #2612]
-	ldr	r3, [r4, #2688]
-	str	r3, [r4, #2616]
-.L1518:
-	ldr	r3, .L1520+8
 	ldr	r0, [r4, #2596]
+	ldr	r3, [r4, #2668]
 	ldrh	r1, [r4, #240]
-	ldrh	r2, [r3]
-	ldr	r3, [r4, #2600]
+	str	r3, [r4, #2600]
 	mla	r0, r0, r2, r3
 	bl	__aeabi_uidiv
 	str	r0, [r4, #2604]
-	pop	{r4, r5, r6, pc}
-.L1521:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L1399:
 	.align	2
-.L1520:
+.L1398:
 	.word	.LANCHOR0
 	.word	1179929683
 	.word	.LANCHOR0+292
-	.fnend
 	.size	Ftl_load_ext_data, .-Ftl_load_ext_data
 	.align	2
 	.global	sftl_vendor_read
@@ -9943,13 +10377,16 @@
 	.fpu softvfp
 	.type	sftl_vendor_read, %function
 sftl_vendor_read:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	add	r0, r0, #256
-	b	FtlVendorPartRead
-	.fnend
+	bl	FtlVendorPartRead
+	ldmfd	sp, {fp, sp, pc}
 	.size	sftl_vendor_read, .-sftl_vendor_read
 	.align	2
 	.global	FtlMapBlkWriteDump_data
@@ -9958,54 +10395,58 @@
 	.fpu softvfp
 	.type	FtlMapBlkWriteDump_data, %function
 FtlMapBlkWriteDump_data:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	ldr	r3, [r0, #36]
+	mov	r4, r0
 	cmp	r3, #0
-	bxeq	lr
-	mov	r3, #0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	str	r3, [r0, #36]
-	mov	r5, r0
-	ldr	r3, .L1530
+	ldmfdeq	sp, {r4, r5, r6, r7, fp, sp, pc}
 	ldrh	r6, [r0, #6]
-	ldr	r2, [r0, #24]
-	ldr	r1, [r3, #3332]
-	mov	r4, r3
-	ldr	r0, [r3, #3304]
+	mov	r2, #0
+	ldr	r5, .L1408
 	sub	r6, r6, #1
+	str	r2, [r0, #36]
+	ldr	r3, [r0, #24]
 	uxth	r6, r6
-	str	r1, [r3, #3464]
-	str	r0, [r3, #3460]
-	ldr	r2, [r2, r6, lsl #2]
-	cmp	r2, #0
-	str	r2, [r3, #3456]
-	beq	.L1525
+	ldr	r0, [r5, #3304]
+	ldr	r2, [r5, #3332]
+	str	r0, [r5, #3460]
+	str	r2, [r5, #3464]
+	ldr	r3, [r3, r6, lsl #2]
+	str	r3, [r5, #3456]
+	cmp	r3, #0
+	beq	.L1403
 	mov	r2, #1
-	ldr	r0, .L1530+4
+	ldr	r0, .L1408+4
 	mov	r1, r2
 	bl	FlashReadPages
-.L1526:
-	ldr	r2, [r4, #3460]
+.L1404:
+	ldr	r2, [r5, #3460]
 	mov	r1, r6
-	mov	r0, r5
-	pop	{r4, r5, r6, lr}
-	b	FtlMapWritePage
-.L1525:
+	mov	r0, r4
+	bl	FtlMapWritePage
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L1403:
 	movw	r3, #310
 	mov	r1, #255
-	ldrh	r2, [r4, r3]
+	ldrh	r2, [r5, r3]
 	bl	ftl_memset
-	b	.L1526
-.L1531:
+	b	.L1404
+.L1409:
 	.align	2
-.L1530:
+.L1408:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+3452
-	.fnend
 	.size	FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data
+	.section	.rodata.str1.1
+.LC120:
+	.ascii	"FtlVpcTblFlush error = %x error count = %d\012\000"
+	.text
 	.align	2
 	.global	FtlVpcTblFlush
 	.syntax unified
@@ -10013,49 +10454,49 @@
 	.fpu softvfp
 	.type	FtlVpcTblFlush, %function
 FtlVpcTblFlush:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1420
 	mov	r6, #0
-	ldr	r4, .L1542
 	mov	r1, #255
-	ldr	r3, [r4, #3300]
 	add	r5, r4, #2624
-	ldr	r7, [r4, #3332]
-	sub	r8, r5, #156
 	add	r9, r4, #304
+	sub	r8, r5, #156
+	ldr	r7, [r4, #3332]
+	ldr	r3, [r4, #3300]
 	str	r3, [r4, #3460]
-	mov	fp, r9
 	ldrh	r3, [r5]
-	add	r10, r9, #6
 	str	r7, [r4, #3464]
-	str	r6, [r7, #12]
 	strh	r3, [r7, #2]	@ movhi
-	ldr	r3, .L1542+4
+	ldr	r3, .L1420+4
 	strh	r3, [r7]	@ movhi
+	str	r6, [r7, #12]
 	ldr	r3, [r4, #2632]
-	str	r6, [r7, #8]
-	ldrh	r2, [r4, #26]
 	str	r3, [r7, #4]
-	ldr	r3, .L1542+8
+	ldr	r3, .L1420+8
 	str	r3, [r4, #2468]
-	ldr	r3, .L1542+12
+	ldr	r3, .L1420+12
 	str	r3, [r4, #2472]
 	ldrh	r3, [r5, #6]
+	str	r6, [r7, #8]
 	strh	r3, [r5, #-148]	@ movhi
 	ldrh	r3, [r4, #254]
 	strb	r3, [r4, #2478]
 	ldrh	r3, [r4, #24]
+	ldrh	r2, [r4, #26]
 	strh	r3, [r5, #-142]	@ movhi
 	ldrb	r3, [r4, #30]	@ zero_extendqisi2
 	orr	r3, r3, r2, lsl #6
-	ldrh	r2, [r4, #78]
 	strh	r3, [r5, #-140]	@ movhi
 	ldrb	r3, [r4, #32]	@ zero_extendqisi2
 	strb	r3, [r4, #2479]
 	ldrh	r3, [r4, #76]
+	ldrh	r2, [r4, #78]
 	strh	r3, [r5, #-138]	@ movhi
 	ldrb	r3, [r4, #82]	@ zero_extendqisi2
 	orr	r3, r3, r2, lsl #6
@@ -10063,10 +10504,10 @@
 	ldrb	r3, [r4, #84]	@ zero_extendqisi2
 	strb	r3, [r4, #2480]
 	ldrh	r3, [r4, #124]
-	ldrh	r2, [r4, #126]
-	ldr	r0, [r4, #3460]
 	strh	r3, [r5, #-134]	@ movhi
+	ldrh	r2, [r4, #126]
 	ldrb	r3, [r4, #130]	@ zero_extendqisi2
+	ldr	r0, [r4, #3460]
 	orr	r3, r3, r2, lsl #6
 	strh	r3, [r5, #-132]	@ movhi
 	ldrb	r3, [r4, #132]	@ zero_extendqisi2
@@ -10083,20 +10524,20 @@
 	mov	r1, r8
 	mov	r2, #48
 	ldr	r0, [r4, #3460]
-	movw	r8, #65535
 	bl	ftl_memcpy
 	ldrh	r2, [r4, #240]
 	ldr	r0, [r4, #3460]
+	movw	r8, #65535
 	ldr	r1, [r4, #72]
 	lsl	r2, r2, #1
 	add	r0, r0, #48
 	bl	ftl_memcpy
 	mov	r0, r6
 	bl	FtlUpdateVaildLpn
-.L1533:
-	ldr	r3, [r4, #3300]
+.L1411:
 	ldrh	r1, [r5, #2]
 	ldrh	r2, [r5]
+	ldr	r3, [r4, #3300]
 	str	r3, [r4, #3460]
 	ldr	r3, [r4, #3332]
 	str	r3, [r4, #3464]
@@ -10105,85 +10546,86 @@
 	ldrh	r3, [r9]
 	sub	r3, r3, #1
 	cmp	r1, r3
-	blt	.L1534
+	blt	.L1412
 	mov	r3, #0
 	ldrh	r8, [r5, #4]
 	strh	r3, [r5, #2]	@ movhi
 	strh	r2, [r5, #4]	@ movhi
 	bl	FtlFreeSysBlkQueueOut
 	ldr	r3, [r4, #2588]
-	strh	r0, [r5]	@ movhi
-	add	r2, r3, #1
 	str	r3, [r4, #2632]
+	add	r2, r3, #1
+	strh	r0, [r5]	@ movhi
 	str	r2, [r4, #2588]
 	lsl	r2, r0, #10
 	str	r2, [r4, #3456]
 	str	r3, [r7, #4]
 	strh	r0, [r7, #2]	@ movhi
-.L1534:
-	ldrh	r1, [r10]
+.L1412:
+	ldr	r3, .L1420+16
 	ldr	r0, [r4, #3300]
+	ldrh	r1, [r3]
 	bl	js_hash
 	mov	r3, #1
 	str	r0, [r7, #12]
 	mov	r2, r3
 	mov	r1, r3
-	ldr	r0, .L1542+16
+	ldr	r0, .L1420+20
 	bl	FlashProgPages
 	ldrh	r3, [r5, #2]
 	ldr	r2, [r4, #3452]
 	add	r3, r3, #1
-	uxth	r3, r3
 	cmn	r2, #1
+	uxth	r3, r3
 	strh	r3, [r5, #2]	@ movhi
-	bne	.L1535
+	bne	.L1413
 	cmp	r3, #1
-	bne	.L1536
+	bne	.L1415
+	ldr	r1, .L1420+24
 	movw	r2, #1145
-	ldr	r1, .L1542+20
-	ldr	r0, .L1542+24
+	ldr	r0, .L1420+28
 	bl	sftl_printk
-.L1536:
 	ldrh	r3, [r5, #2]
-	add	r6, r6, #1
-	uxth	r6, r6
 	cmp	r3, #1
-	ldrheq	r3, [fp]
+	ldrheq	r3, [r9]
 	subeq	r3, r3, #1
 	strheq	r3, [r5, #2]	@ movhi
+.L1415:
+	add	r6, r6, #1
+	uxth	r6, r6
 	cmp	r6, #3
-	bls	.L1533
-	mov	r2, r6
+	bls	.L1411
 	ldr	r1, [r4, #3456]
-	ldr	r0, .L1542+28
+	mov	r2, r6
+	ldr	r0, .L1420+32
 	bl	sftl_printk
-.L1539:
-	b	.L1539
-.L1535:
+.L1418:
+	b	.L1418
+.L1413:
 	cmp	r2, #256
 	cmpne	r3, #1
-	beq	.L1533
+	beq	.L1411
 	movw	r3, #65535
 	cmp	r8, r3
-	beq	.L1540
-	mov	r1, #1
+	beq	.L1419
 	mov	r0, r8
+	mov	r1, #1
 	bl	FtlFreeSysBlkQueueIn
-.L1540:
+.L1419:
 	mov	r0, #0
-	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1543:
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L1421:
 	.align	2
-.L1542:
+.L1420:
 	.word	.LANCHOR0
 	.word	-3932
 	.word	1179929683
-	.word	1342177367
+	.word	1342177369
+	.word	.LANCHOR0+310
 	.word	.LANCHOR0+3452
 	.word	.LANCHOR1+471
 	.word	.LC8
 	.word	.LC120
-	.fnend
 	.size	FtlVpcTblFlush, .-FtlVpcTblFlush
 	.align	2
 	.global	FtlSysFlush
@@ -10192,18 +10634,19 @@
 	.fpu softvfp
 	.type	FtlSysFlush, %function
 FtlSysFlush:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, lr}
-	.save {r4, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	bl	l2p_flush
 	mov	r0, #1
 	bl	FtlEctTblFlush
 	bl	FtlVpcTblFlush
 	mov	r0, #0
-	pop	{r4, pc}
-	.fnend
+	ldmfd	sp, {fp, sp, pc}
 	.size	FtlSysFlush, .-FtlSysFlush
 	.align	2
 	.global	sftl_deinit
@@ -10212,26 +10655,25 @@
 	.fpu softvfp
 	.type	sftl_deinit, %function
 sftl_deinit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1552
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L1425
 	ldr	r3, [r3]
 	cmp	r3, #1
-	bne	.L1549
-	push	{r4, lr}
-	.save {r4, lr}
+	bne	.L1424
 	bl	FtlSysFlush
+.L1424:
 	mov	r0, #0
-	pop	{r4, pc}
-.L1549:
-	mov	r0, #0
-	bx	lr
-.L1553:
+	ldmfd	sp, {fp, sp, pc}
+.L1426:
 	.align	2
-.L1552:
+.L1425:
 	.word	.LANCHOR2
-	.fnend
 	.size	sftl_deinit, .-sftl_deinit
 	.align	2
 	.global	sftl_discard
@@ -10240,112 +10682,115 @@
 	.fpu softvfp
 	.type	sftl_discard, %function
 sftl_discard:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 16
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, lr}
-	.save {r4, r5, r6, r7, r8, r9, lr}
-	.pad #20
-	sub	sp, sp, #20
-	ldr	r8, .L1572
-	ldr	r4, .L1572+4
-	ldr	r3, [r8]
-	str	r3, [sp, #12]
-	ldr	r3, [r4, #340]
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #16
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	ldr	r8, .L1444
+	bic	r7, r3, #8128
+	mov	r9, r0
+	bic	r7, r7, #63
+	mov	r4, r1
+	ldr	r3, [r7, #24]
+	str	r3, [fp, #-40]
+	ldr	r3, [r8, #340]
 	cmp	r3, r1
 	cmpcs	r3, r0
-	bls	.L1564
+	bls	.L1437
 	add	r2, r0, r1
-	mov	r7, r0
 	cmp	r3, r2
-	mov	r5, r1
-	bcc	.L1564
+	bcc	.L1437
 	cmp	r1, #31
-	bhi	.L1556
-.L1561:
+	bhi	.L1429
+.L1434:
 	mov	r0, #0
-.L1554:
-	ldr	r2, [sp, #12]
-	ldr	r3, [r8]
+.L1427:
+	ldr	r2, [fp, #-40]
+	ldr	r3, [r7, #24]
 	cmp	r2, r3
-	beq	.L1562
+	beq	.L1435
 	bl	__stack_chk_fail
-.L1556:
+.L1429:
 	movw	r3, #258
-	ldrh	r6, [r4, r3]
-	mov	r1, r6
+	ldrh	r5, [r8, r3]
+	mov	r1, r5
 	bl	__aeabi_uidiv
-	smulbb	r3, r0, r6
-	mov	r9, r0
-	sub	r7, r7, r3
-	uxth	r7, r7
-	cmp	r7, #0
-	beq	.L1557
-	sub	r6, r6, r7
-	add	r9, r0, #1
-	cmp	r6, r5
-	movcs	r6, r5
-	uxth	r6, r6
-	sub	r5, r5, r6
-.L1557:
-	ldr	r6, .L1572+8
+	mov	r6, r0
+	smulbb	r0, r0, r5
+	sub	r9, r9, r0
+	uxth	r9, r9
+	cmp	r9, #0
+	beq	.L1430
+	sub	r5, r5, r9
+	add	r6, r6, #1
+	cmp	r5, r4
+	movcs	r5, r4
+	uxth	r5, r5
+	sub	r4, r4, r5
+.L1430:
+	ldr	r5, .L1444+4
 	mvn	r3, #0
-	str	r3, [sp, #8]
-	mov	r7, r6
-.L1558:
-	ldrh	r3, [r6]
-	cmp	r5, r3
-	bcs	.L1560
-	ldr	r3, [r4, #3656]
+	str	r3, [fp, #-44]
+.L1431:
+	ldrh	r3, [r5]
+	cmp	r3, r4
+	bls	.L1433
+	ldr	r3, [r8, #3656]
 	cmp	r3, #32
-	bls	.L1561
-	mov	r5, #0
-	str	r5, [r4, #3656]
+	bls	.L1434
+	mov	r4, #0
+	str	r4, [r8, #3656]
 	bl	l2p_flush
 	bl	FtlVpcTblFlush
-	b	.L1561
-.L1560:
+	b	.L1434
+.L1433:
+	sub	r1, fp, #48
+	mov	r0, r6
 	mov	r2, #0
-	add	r1, sp, #4
-	mov	r0, r9
 	bl	log2phys
-	ldr	r3, [sp, #4]
+	ldr	r3, [fp, #-48]
 	cmn	r3, #1
-	beq	.L1559
-	ldr	r3, [r4, #3656]
+	beq	.L1432
+	ldr	r3, [r8, #3656]
+	sub	r1, fp, #44
 	mov	r2, #1
-	add	r1, sp, #8
-	mov	r0, r9
+	mov	r0, r6
 	add	r3, r3, #1
-	str	r3, [r4, #3656]
-	ldr	r3, [r4, #2560]
+	str	r3, [r8, #3656]
+	ldr	r3, [r8, #2560]
 	add	r3, r3, #1
-	str	r3, [r4, #2560]
+	str	r3, [r8, #2560]
 	bl	log2phys
-	ldr	r0, [sp, #4]
+	ldr	r0, [fp, #-48]
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
 	bl	decrement_vpc_count
-.L1559:
-	ldrh	r3, [r7]
-	add	r9, r9, #1
-	sub	r5, r5, r3
-	b	.L1558
-.L1564:
+.L1432:
+	ldrh	r3, [r5]
+	add	r6, r6, #1
+	sub	r4, r4, r3
+	b	.L1431
+.L1437:
 	mvn	r0, #0
-	b	.L1554
-.L1562:
-	add	sp, sp, #20
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, pc}
-.L1573:
+	b	.L1427
+.L1435:
+	sub	sp, fp, #36
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L1445:
 	.align	2
-.L1572:
-	.word	__stack_chk_guard
+.L1444:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+258
-	.fnend
 	.size	sftl_discard, .-sftl_discard
+	.section	.rodata.str1.1
+.LC121:
+	.ascii	"FtlCheckVpc %x = %x  %x\012\000"
+	.text
 	.align	2
 	.global	FtlVpcCheckAndModify
 	.syntax unified
@@ -10353,53 +10798,56 @@
 	.fpu softvfp
 	.type	FtlVpcCheckAndModify, %function
 FtlVpcCheckAndModify:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 8
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #12
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #12
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	ldr	r4, .L1461
+	bic	r7, r3, #8128
+	ldr	r1, .L1461+4
+	bic	r7, r7, #63
+	ldr	r0, .L1461+8
 	mov	r5, #0
-	ldr	r7, .L1590
-	ldr	r4, .L1590+4
-	ldr	r3, [r7]
-	ldr	r1, .L1590+8
-	ldr	r0, .L1590+12
-	str	r3, [sp, #4]
+	ldr	r3, [r7, #24]
+	str	r3, [fp, #-48]
 	bl	sftl_printk
 	ldrh	r2, [r4, #242]
 	mov	r1, #0
 	ldr	r0, [r4, #3352]
 	lsl	r2, r2, #1
 	bl	ftl_memset
-.L1575:
+.L1447:
 	ldr	r3, [r4, #2552]
-	cmp	r5, r3
-	bcc	.L1577
-	ldr	r9, .L1590+16
+	cmp	r3, r5
+	bhi	.L1449
+	ldr	r9, .L1461+12
 	mov	r8, #0
-	ldr	r10, .L1590+20
-	ldr	fp, .L1590+8
-.L1578:
+	ldr	r10, .L1461+16
+.L1450:
 	ldrh	r3, [r4, #240]
 	uxth	r5, r8
 	cmp	r3, r5
-	bhi	.L1584
+	bhi	.L1456
 	bl	l2p_flush
 	bl	FtlVpcTblFlush
-	ldr	r2, [sp, #4]
-	ldr	r3, [r7]
+	ldr	r2, [fp, #-48]
+	ldr	r3, [r7, #24]
 	cmp	r2, r3
-	beq	.L1585
+	beq	.L1457
 	bl	__stack_chk_fail
-.L1577:
-	mov	r2, #0
-	mov	r1, sp
+.L1449:
+	sub	r1, fp, #52
 	mov	r0, r5
+	mov	r2, #0
 	bl	log2phys
-	ldr	r0, [sp]
+	ldr	r0, [fp, #-52]
 	cmn	r0, #1
-	beq	.L1576
+	beq	.L1448
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
 	ldr	r2, [r4, #3352]
@@ -10407,10 +10855,10 @@
 	ldrh	r3, [r2, r0]
 	add	r3, r3, #1
 	strh	r3, [r2, r0]	@ movhi
-.L1576:
+.L1448:
 	add	r5, r5, #1
-	b	.L1575
-.L1584:
+	b	.L1447
+.L1456:
 	uxth	r1, r8
 	ldr	r3, [r4, #72]
 	movw	r0, #65535
@@ -10420,63 +10868,60 @@
 	ldrh	r3, [r3, r6]
 	cmp	r2, r0
 	cmpne	r2, r3
-	beq	.L1580
+	beq	.L1452
 	mov	r0, r9
 	bl	sftl_printk
 	ldrh	r3, [r4, #24]
 	cmp	r3, r5
-	beq	.L1580
+	beq	.L1452
 	ldrh	r3, [r4, #124]
 	cmp	r3, r5
-	beq	.L1580
+	beq	.L1452
 	ldrh	r3, [r4, #76]
 	cmp	r3, r5
-	beq	.L1580
+	beq	.L1452
 	ldr	r3, [r4, #72]
-	ldrh	r2, [r3, r6]
-	cmp	r2, #0
 	ldr	r2, [r4, #3352]
+	ldrh	r1, [r3, r6]
 	ldrh	r2, [r2, r6]
+	cmp	r1, #0
 	strh	r2, [r3, r6]	@ movhi
-	bne	.L1582
+	bne	.L1454
 	mov	r1, r5
 	mov	r0, r10
 	bl	List_remove_node
 	ldrh	r3, [r4, #224]
 	cmp	r3, #0
-	bne	.L1583
+	bne	.L1455
+	ldr	r1, .L1461+4
 	movw	r2, #2330
-	mov	r1, fp
-	ldr	r0, .L1590+24
+	ldr	r0, .L1461+20
 	bl	sftl_printk
-.L1583:
+.L1455:
 	ldrh	r3, [r4, #224]
 	mov	r0, r5
 	sub	r3, r3, #1
 	strh	r3, [r4, #224]	@ movhi
 	bl	INSERT_DATA_LIST
-.L1580:
+.L1452:
 	add	r8, r8, #1
-	b	.L1578
-.L1582:
+	b	.L1450
+.L1454:
 	mov	r0, r5
 	bl	update_vpc_list
-	b	.L1580
-.L1585:
-	add	sp, sp, #12
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1591:
+	b	.L1452
+.L1457:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1462:
 	.align	2
-.L1590:
-	.word	__stack_chk_guard
+.L1461:
 	.word	.LANCHOR0
 	.word	.LANCHOR1+486
 	.word	.LC111
 	.word	.LC121
 	.word	.LANCHOR0+2532
 	.word	.LC8
-	.fnend
 	.size	FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
 	.align	2
 	.global	allocate_new_data_superblock
@@ -10485,73 +10930,80 @@
 	.fpu softvfp
 	.type	allocate_new_data_superblock, %function
 allocate_new_data_superblock:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	mov	r6, r0
-	ldr	r4, .L1603
-	ldrh	r5, [r0]
-	ldrh	r3, [r4, #240]
-	cmp	r3, r5
-	bcs	.L1593
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r6, .L1473
+	mov	r5, r0
+	ldrh	r4, [r0]
+	ldrh	r3, [r6, #240]
+	cmp	r3, r4
+	bcs	.L1464
+	ldr	r1, .L1473+4
 	movw	r2, #2766
-	ldr	r1, .L1603+4
-	ldr	r0, .L1603+8
+	ldr	r0, .L1473+8
 	bl	sftl_printk
-.L1593:
+.L1464:
 	movw	r3, #65535
-	cmp	r5, r3
-	beq	.L1594
-	ldr	r2, [r4, #72]
-	lsl	r3, r5, #1
-	mov	r0, r5
+	cmp	r4, r3
+	beq	.L1465
+	ldr	r2, [r6, #72]
+	lsl	r3, r4, #1
+	mov	r0, r4
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	beq	.L1595
+	beq	.L1466
 	bl	INSERT_DATA_LIST
-.L1594:
+.L1465:
 	mov	r3, #1
-	strb	r3, [r6, #8]
+	strb	r3, [r5, #8]
 	movw	r3, #3438
-	ldrh	r0, [r4, r3]
+	ldrh	r0, [r6, r3]
 	movw	r3, #65535
 	cmp	r0, r3
-	beq	.L1596
-	cmp	r5, r0
-	bne	.L1597
-	ldr	r2, [r4, #72]
-	lsl	r3, r0, #1
-	ldrh	r3, [r2, r3]
+	beq	.L1467
+	cmp	r0, r4
+	bne	.L1468
+	ldr	r3, [r6, #72]
+	lsl	r4, r4, #1
+	ldrh	r3, [r3, r4]
 	cmp	r3, #0
-	beq	.L1598
-.L1597:
+	beq	.L1469
+.L1468:
 	bl	update_vpc_list
-.L1598:
-	mvn	r2, #0
+.L1469:
 	movw	r3, #3438
-	strh	r2, [r4, r3]	@ movhi
-.L1596:
-	mov	r0, r6
+	mvn	r2, #0
+	strh	r2, [r6, r3]	@ movhi
+.L1467:
+	mov	r0, r5
 	bl	allocate_data_superblock
 	bl	l2p_flush
 	mov	r0, #0
 	bl	FtlEctTblFlush
 	bl	FtlVpcTblFlush
 	mov	r0, #0
-	pop	{r4, r5, r6, pc}
-.L1595:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L1466:
 	bl	INSERT_FREE_LIST
-	b	.L1594
-.L1604:
+	b	.L1465
+.L1474:
 	.align	2
-.L1603:
+.L1473:
 	.word	.LANCHOR0
 	.word	.LANCHOR1+507
 	.word	.LC8
-	.fnend
 	.size	allocate_new_data_superblock, .-allocate_new_data_superblock
+	.section	.rodata.str1.1
+.LC122:
+	.ascii	"FtlProgPages error %x = %d\012\000"
+.LC123:
+	.ascii	"Ftlwrite decrement_vpc_count %x = %d\012\000"
+	.text
 	.align	2
 	.global	FtlProgPages
 	.syntax unified
@@ -10559,46 +11011,37 @@
 	.fpu softvfp
 	.type	FtlProgPages, %function
 FtlProgPages:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 16
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r5, r3
-	ldr	r6, .L1620
-	.pad #20
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #20
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r5, r3
+	mov	r3, sp
+	bic	r6, r3, #8128
+	ldr	r9, .L1493
+	bic	r6, r6, #63
 	mov	r7, #0
+	mov	r8, r7
 	mov	r2, #0
-	ldr	fp, .L1620+4
 	mov	r4, r0
-	ldr	r3, [r6]
-	mov	r10, r1
-	ldr	r9, .L1620+8
-	str	r3, [sp, #12]
+	str	r1, [fp, #-56]
+	ldr	r3, [r6, #24]
+	str	r3, [fp, #-48]
 	ldrb	r3, [r5, #9]	@ zero_extendqisi2
 	bl	FlashProgPages
-.L1606:
-	cmp	r7, r10
-	bne	.L1613
-	ldr	r3, .L1620+8
-	ldrb	r2, [r5, #6]	@ zero_extendqisi2
-	ldrh	r3, [r3, #232]
-	cmp	r2, r3
-	bcc	.L1605
-	mov	r2, #1000
-	ldr	r1, .L1620+12
-	ldr	r0, .L1620+16
-	bl	sftl_printk
-.L1605:
-	ldr	r2, [sp, #12]
-	ldr	r3, [r6]
-	cmp	r2, r3
-	beq	.L1615
-	bl	__stack_chk_fail
-.L1608:
+.L1476:
+	ldr	r3, [fp, #-56]
+	cmp	r8, r3
+	beq	.L1482
+	ldr	r10, .L1493+4
+	b	.L1483
+.L1478:
 	ldr	r1, [r4, #4]
-	mov	r0, fp
+	mov	r0, r10
 	bl	sftl_printk
 	ldr	r0, [r4, #4]
 	ubfx	r0, r0, #10, #16
@@ -10606,77 +11049,93 @@
 	bl	decrement_vpc_count
 	ldrh	r3, [r5, #4]
 	cmp	r3, #0
-	bne	.L1607
+	bne	.L1477
 	mov	r0, r5
 	bl	allocate_new_data_superblock
-.L1607:
+.L1477:
 	mov	r0, r5
+	mov	r7, #1
 	bl	get_new_active_ppa
-	mov	r2, #0
 	str	r0, [r4, #4]
-	str	r0, [sp, #8]
-	mov	r1, #1
+	str	r0, [fp, #-52]
+	mov	r2, #0
 	ldrb	r3, [r5, #9]	@ zero_extendqisi2
 	mov	r0, r4
+	mov	r1, #1
 	bl	FlashProgPages
-.L1613:
+.L1483:
 	ldr	r2, [r4]
 	cmn	r2, #1
 	cmpne	r2, #256
-	beq	.L1608
+	beq	.L1478
 	ldrb	r2, [r5, #6]	@ zero_extendqisi2
 	ldrh	r3, [r9, #232]
 	cmp	r2, r3
-	bcc	.L1609
-	movw	r2, #985
-	ldr	r1, .L1620+12
-	ldr	r0, .L1620+16
+	bcc	.L1479
+	ldr	r1, .L1493+8
+	movw	r2, #986
+	ldr	r0, .L1493+12
 	bl	sftl_printk
-.L1609:
+.L1479:
 	ldr	r3, [r4, #4]
-	add	r1, sp, #16
-	mov	r2, #1
+	sub	r1, fp, #52
 	ldr	r0, [r4, #16]
-	str	r3, [r1, #-8]!
+	mov	r2, #1
+	str	r3, [fp, #-52]
 	bl	log2phys
 	ldr	r3, [r4, #12]
-	ldr	r3, [r3, #12]
-	ubfx	r0, r3, #10, #16
-	str	r3, [sp, #4]
+	ldr	r0, [r3, #12]
+	cmn	r0, #1
+	beq	.L1480
+	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
-	ldr	r3, [sp, #4]
-	mov	r8, r0
-	cmn	r3, #1
-	beq	.L1610
 	ldr	r2, [r9, #72]
 	lsl	r3, r0, #1
+	mov	r10, r0
 	ldrh	r2, [r2, r3]
 	cmp	r2, #0
-	bne	.L1611
+	bne	.L1481
 	mov	r1, r0
-	ldr	r0, .L1620+20
+	ldr	r0, .L1493+16
 	bl	sftl_printk
-.L1611:
-	mov	r0, r8
+.L1481:
+	mov	r0, r10
 	bl	decrement_vpc_count
-.L1610:
-	add	r7, r7, #1
+.L1480:
+	add	r8, r8, #1
 	add	r4, r4, #20
-	b	.L1606
-.L1615:
-	add	sp, sp, #20
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1621:
+	b	.L1476
+.L1482:
+	cmp	r7, #0
+	beq	.L1484
+	bl	FtlSysFlush
+.L1484:
+	ldr	r3, .L1493
+	ldrb	r2, [r5, #6]	@ zero_extendqisi2
+	ldrh	r3, [r3, #232]
+	cmp	r2, r3
+	bcc	.L1475
+	ldr	r1, .L1493+8
+	movw	r2, #1005
+	ldr	r0, .L1493+12
+	bl	sftl_printk
+.L1475:
+	ldr	r2, [fp, #-48]
+	ldr	r3, [r6, #24]
+	cmp	r2, r3
+	beq	.L1486
+	bl	__stack_chk_fail
+.L1486:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1494:
 	.align	2
-.L1620:
-	.word	__stack_chk_guard
-	.word	.LC122
+.L1493:
 	.word	.LANCHOR0
+	.word	.LC122
 	.word	.LANCHOR1+536
 	.word	.LC8
 	.word	.LC123
-	.fnend
 	.size	FtlProgPages, .-FtlProgPages
 	.align	2
 	.global	FtlGcFreeTempBlock
@@ -10685,98 +11144,102 @@
 	.fpu softvfp
 	.type	FtlGcFreeTempBlock, %function
 FtlGcFreeTempBlock:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 8
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #12
-	ldr	r6, .L1648
-	ldr	r4, .L1648+4
-	ldr	r3, [r6]
+	@ args = 0, pretend = 0, frame = 16
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #20
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	ldr	r4, .L1520
+	bic	r6, r3, #8128
+	bic	r6, r6, #63
 	ldrh	r2, [r4, #124]
-	str	r3, [sp, #4]
+	ldr	r3, [r6, #24]
+	str	r3, [fp, #-48]
 	movw	r3, #302
 	ldrh	r1, [r4, r3]
 	movw	r3, #65535
 	cmp	r2, r3
-	bne	.L1623
-.L1630:
+	bne	.L1496
+.L1503:
 	ldrh	r2, [r4, #124]
 	mov	r3, #0
 	str	r3, [r4, #3444]
 	movw	r3, #65535
 	cmp	r2, r3
-	bne	.L1644
-.L1624:
+	bne	.L1517
+.L1497:
 	mov	r0, #0
-	b	.L1622
-.L1623:
+	b	.L1495
+.L1496:
+	ldr	r5, .L1520+4
 	cmp	r0, #0
-	ldr	r5, .L1648+8
-	beq	.L1626
+	beq	.L1499
 	ldrh	r2, [r5, #4]
 	cmp	r2, r3
-	beq	.L1627
-.L1628:
+	beq	.L1500
+.L1501:
 	mov	r1, #2
-.L1626:
-	ldr	r0, .L1648+12
+.L1499:
+	ldr	r0, .L1520+8
 	bl	FtlGcScanTempBlk
 	ldrh	r2, [r5, #4]
 	movw	r3, #65535
-	str	r0, [sp]
+	str	r0, [fp, #-52]
 	cmp	r2, r3
 	movne	r0, #1
-	beq	.L1630
-.L1622:
-	ldr	r2, [sp, #4]
-	ldr	r3, [r6]
+	beq	.L1503
+.L1495:
+	ldr	r2, [fp, #-48]
+	ldr	r3, [r6, #24]
 	cmp	r2, r3
-	beq	.L1639
+	beq	.L1512
 	bl	__stack_chk_fail
-.L1627:
+.L1500:
 	mov	r3, #0
 	strh	r3, [r5, #4]	@ movhi
 	ldrh	r3, [r4, #224]
 	cmp	r3, #17
-	bhi	.L1628
-	b	.L1626
-.L1644:
+	bhi	.L1501
+	b	.L1499
+.L1517:
 	movw	r3, #3204
-	ldrb	r1, [r4, #131]	@ zero_extendqisi2
+	movw	r1, #302
 	ldrh	r2, [r4, r3]
-	movw	r3, #302
-	ldrh	r3, [r4, r3]
-	mul	r3, r3, r1
+	ldrh	r1, [r4, r1]
+	ldrb	r3, [r4, #131]	@ zero_extendqisi2
+	mul	r3, r1, r3
 	cmp	r2, r3
-	beq	.L1631
+	beq	.L1504
+	ldr	r1, .L1520+12
 	mov	r2, #164
-	ldr	r1, .L1648+16
-	ldr	r0, .L1648+20
+	ldr	r0, .L1520+16
 	bl	sftl_printk
-.L1631:
+.L1504:
 	movw	r0, #302
-	ldrb	r2, [r4, #131]	@ zero_extendqisi2
-	ldrh	r0, [r4, r0]
-	mov	r5, #0
 	ldrh	r3, [r4, #124]
+	ldrb	r2, [r4, #131]	@ zero_extendqisi2
+	mov	r5, #0
+	ldrh	r0, [r4, r0]
 	mov	r10, #12
-	ldr	r1, [r4, #72]
-	ldr	r9, .L1648+24
-	smulbb	r2, r2, r0
 	lsl	r3, r3, #1
+	ldr	r1, [r4, #72]
+	ldr	r9, .L1520+20
+	smulbb	r2, r2, r0
 	strh	r2, [r1, r3]	@ movhi
 	movw	r3, #3204
 	ldr	r2, [r4, #2576]
 	ldrh	r3, [r4, r3]
 	add	r3, r3, r2
 	str	r3, [r4, #2576]
-.L1632:
+.L1505:
 	ldrh	r2, [r9]
 	uxth	r3, r5
 	cmp	r2, r3
-	bhi	.L1636
+	bhi	.L1509
 	movw	r0, #65535
 	bl	decrement_vpc_count
 	ldrh	r0, [r4, #124]
@@ -10784,15 +11247,15 @@
 	lsl	r3, r0, #1
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	beq	.L1637
+	beq	.L1510
 	bl	INSERT_DATA_LIST
-.L1638:
-	mov	r5, #0
+.L1511:
 	movw	r3, #3204
-	strh	r5, [r4, r3]	@ movhi
+	mov	r5, #0
 	mvn	r7, #0
-	movw	r3, #3196
 	strh	r7, [r4, #124]	@ movhi
+	strh	r5, [r4, r3]	@ movhi
+	movw	r3, #3196
 	strh	r5, [r4, r3]	@ movhi
 	bl	l2p_flush
 	bl	FtlVpcTblFlush
@@ -10801,60 +11264,60 @@
 	ldrh	r3, [r4, r3]
 	strh	r7, [r4, #172]	@ movhi
 	add	r3, r3, r3, lsl #1
-	cmp	r2, r3, asr #2
-	ldrgt	r3, .L1648+28
+	cmp	r2, r3, lsr #2
+	ldrgt	r3, .L1520+24
 	movgt	r2, #20
 	strhgt	r2, [r3]	@ movhi
-	b	.L1624
-.L1636:
+	b	.L1497
+.L1509:
 	uxth	r8, r5
-	ldr	fp, [r4, #3200]
-	ldr	r3, [r4, #2552]
+	ldr	r3, [r4, #3200]
+	ldr	r2, [r4, #2552]
 	mul	r8, r10, r8
-	add	r7, fp, r8
+	add	r7, r3, r8
 	ldr	r0, [r7, #8]
-	cmp	r0, r3
-	bcc	.L1633
-.L1646:
+	cmp	r0, r2
+	bcc	.L1506
+.L1518:
 	ldrh	r0, [r4, #124]
-	b	.L1647
-.L1633:
+	b	.L1519
+.L1506:
 	mov	r2, #0
-	mov	r1, sp
+	sub	r1, fp, #52
+	str	r3, [fp, #-56]
 	bl	log2phys
-	ldr	r0, [fp, r8]
-	ldr	r3, [sp]
-	cmp	r0, r3
-	bne	.L1635
+	ldr	r3, [fp, #-56]
+	ldr	r2, [fp, #-52]
+	ldr	r0, [r3, r8]
+	cmp	r0, r2
+	bne	.L1508
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
-	mov	r2, #1
-	mov	r8, r0
 	add	r1, r7, #4
+	mov	r8, r0
+	mov	r2, #1
 	ldr	r0, [r7, #8]
 	bl	log2phys
 	mov	r0, r8
-.L1647:
+.L1519:
 	bl	decrement_vpc_count
-	b	.L1634
-.L1635:
-	ldr	r2, [r7, #4]
-	cmp	r3, r2
-	bne	.L1646
-.L1634:
+	b	.L1507
+.L1508:
+	ldr	r3, [r7, #4]
+	cmp	r2, r3
+	bne	.L1518
+.L1507:
 	add	r5, r5, #1
-	b	.L1632
-.L1637:
+	b	.L1505
+.L1510:
 	bl	INSERT_FREE_LIST
-	b	.L1638
-.L1639:
-	add	sp, sp, #12
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1649:
+	b	.L1511
+.L1512:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1521:
 	.align	2
-.L1648:
-	.word	__stack_chk_guard
+.L1520:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.word	.LANCHOR0+124
@@ -10862,7 +11325,6 @@
 	.word	.LC8
 	.word	.LANCHOR0+3204
 	.word	.LANCHOR0+3152
-	.fnend
 	.size	FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
 	.align	2
 	.global	FtlGcPageRecovery
@@ -10871,32 +11333,33 @@
 	.fpu softvfp
 	.type	FtlGcPageRecovery, %function
 FtlGcPageRecovery:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1524
 	movw	r5, #302
-	ldr	r4, .L1653
-	ldrh	r1, [r4, r5]
 	add	r0, r4, #124
+	ldrh	r1, [r4, r5]
 	bl	FtlGcScanTempBlk
 	ldrh	r2, [r4, #126]
 	ldrh	r3, [r4, r5]
 	cmp	r2, r3
-	popcc	{r4, r5, r6, pc}
+	ldmfdcc	sp, {r4, r5, fp, sp, pc}
 	add	r0, r4, #3392
 	bl	FtlMapBlkWriteDump_data
 	mov	r0, #0
 	bl	FtlGcFreeTempBlock
 	mov	r3, #0
 	str	r3, [r4, #3444]
-	pop	{r4, r5, r6, pc}
-.L1654:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L1525:
 	.align	2
-.L1653:
+.L1524:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlGcPageRecovery, .-FtlGcPageRecovery
 	.align	2
 	.global	FtlPowerLostRecovery
@@ -10905,17 +11368,19 @@
 	.fpu softvfp
 	.type	FtlPowerLostRecovery, %function
 FtlPowerLostRecovery:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1527
 	mov	r5, #0
-	ldr	r4, .L1657
 	add	r6, r4, #24
-	str	r5, [r4, #3476]
-	mov	r0, r6
 	add	r4, r4, #76
+	mov	r0, r6
+	str	r5, [r4, #3400]
 	bl	FtlRecoverySuperblock
 	mov	r0, r6
 	bl	FtlSlcSuperblockCheck
@@ -10927,12 +11392,11 @@
 	movw	r0, #65535
 	bl	decrement_vpc_count
 	mov	r0, r5
-	pop	{r4, r5, r6, pc}
-.L1658:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L1528:
 	.align	2
-.L1657:
+.L1527:
 	.word	.LANCHOR0
-	.fnend
 	.size	FtlPowerLostRecovery, .-FtlPowerLostRecovery
 	.align	2
 	.global	Ftl_gc_temp_data_write_back
@@ -10941,53 +11405,54 @@
 	.fpu softvfp
 	.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
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	mov	r3, #0
-	ldr	r4, .L1668
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1537
 	mov	r5, #0
 	mov	r6, #20
+	mov	r3, #0
 	mov	r2, r3
 	ldr	r1, [r4, #3168]
 	ldr	r0, [r4, #3292]
 	bl	FlashProgPages
-.L1660:
+.L1530:
 	ldr	r1, [r4, #3168]
 	uxth	r3, r5
-	cmp	r1, r3
-	bhi	.L1663
-	ldr	r0, [r4, #3292]
+	ldr	r2, [r4, #3292]
+	cmp	r3, r1
+	bcc	.L1533
+	mov	r0, r2
 	bl	FtlGcBufFree
 	ldrh	r3, [r4, #128]
 	mov	r0, #0
 	str	r0, [r4, #3168]
 	cmp	r3, r0
-	popne	{r4, r5, r6, pc}
+	ldmfdne	sp, {r4, r5, r6, r7, fp, sp, pc}
 	mov	r0, #1
 	bl	FtlGcFreeTempBlock
 	mov	r0, #1
-	pop	{r4, r5, r6, pc}
-.L1663:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L1533:
 	mul	r3, r6, r3
-	ldr	r2, [r4, #3292]
 	add	r5, r5, #1
 	add	r1, r2, r3
 	ldr	r2, [r2, r3]
-	ldr	r0, [r1, #12]
-	ldr	r1, [r1, #4]
+	ldr	ip, [r1, #12]
 	cmn	r2, #1
-	ldrne	r2, [r0, #8]
-	ldr	r0, [r0, #12]
+	ldr	r1, [r1, #4]
+	ldr	r0, [ip, #12]
+	ldrne	r2, [ip, #8]
 	bl	FtlGcUpdatePage
-	b	.L1660
-.L1669:
+	b	.L1530
+.L1538:
 	.align	2
-.L1668:
+.L1537:
 	.word	.LANCHOR0
-	.fnend
 	.size	Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
 	.align	2
 	.global	Ftl_get_new_temp_ppa
@@ -10996,24 +11461,26 @@
 	.fpu softvfp
 	.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
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1542
 	movw	r3, #65535
-	ldr	r4, .L1674
 	ldrh	r2, [r4, #124]
 	cmp	r2, r3
-	beq	.L1671
+	beq	.L1540
 	ldrh	r3, [r4, #128]
 	cmp	r3, #0
-	bne	.L1672
-.L1671:
+	bne	.L1541
+.L1540:
 	mov	r0, #0
 	mov	r5, #0
 	bl	FtlGcFreeTempBlock
-	ldr	r0, .L1674+4
+	ldr	r0, .L1542+4
 	strb	r5, [r4, #132]
 	bl	allocate_data_superblock
 	movw	r3, #3196
@@ -11024,17 +11491,20 @@
 	mov	r0, r5
 	bl	FtlEctTblFlush
 	bl	FtlVpcTblFlush
-.L1672:
-	ldr	r0, .L1674+4
-	pop	{r4, r5, r6, lr}
-	b	get_new_active_ppa
-.L1675:
+.L1541:
+	ldr	r0, .L1542+4
+	bl	get_new_active_ppa
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L1543:
 	.align	2
-.L1674:
+.L1542:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+124
-	.fnend
 	.size	Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
+	.section	.rodata.str1.1
+.LC124:
+	.ascii	"SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000"
+	.text
 	.align	2
 	.global	rk_ftl_garbage_collect
 	.syntax unified
@@ -11042,226 +11512,219 @@
 	.fpu softvfp
 	.type	rk_ftl_garbage_collect, %function
 rk_ftl_garbage_collect:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 40
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1803
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #52
-	sub	sp, sp, #52
-	str	r0, [sp, #20]
-	ldr	r3, [r3]
-	str	r3, [sp, #44]
-	ldr	r3, .L1803+4
-	ldr	r0, [r3, #3272]
+	@ args = 0, pretend = 0, frame = 32
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #44
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1660
+	mov	r3, sp
+	bic	r3, r3, #8128
+	str	r0, [fp, #-72]
+	bic	r3, r3, #63
+	ldr	r0, [r4, #3272]
+	ldr	r3, [r3, #24]
 	cmp	r0, #0
+	str	r3, [fp, #-48]
 	movne	r0, #0
-	bne	.L1676
-	add	r2, r3, #2528
-	ldrh	r2, [r2]
-	cmp	r2, #47
-	bls	.L1676
-	ldr	r2, .L1803+8
-	mov	r4, r3
-	ldrh	r1, [r2, #4]
-	movw	r2, #65535
-	cmp	r1, r2
-	bne	.L1678
-.L1681:
+	bne	.L1544
+	add	r3, r4, #2528
+	ldrh	r3, [r3]
+	cmp	r3, #47
+	bls	.L1544
+	ldr	r3, .L1660+4
+	ldrh	r2, [r3, #4]
+	movw	r3, #65535
+	cmp	r2, r3
+	bne	.L1546
+.L1549:
 	ldrh	r3, [r4, #220]
 	movw	r2, #65535
 	cmp	r3, r2
-	bne	.L1679
-.L1680:
+	bne	.L1547
+.L1548:
 	bl	FtlReadRefresh
+	ldrh	r0, [r4, #124]
+	ldrh	r5, [r4, #172]
+	movw	r6, #65535
 	ldr	r3, [r4, #3156]
-	movw	r7, #65535
-	ldr	r2, [sp, #20]
+	and	r5, r5, r0
+	ldrh	r0, [r4, #222]
+	ldr	r2, [fp, #-72]
 	add	r3, r3, #1
+	and	r5, r5, r0
+	cmp	r5, r6
 	add	r3, r3, r2, lsl #7
-	ldrh	r2, [r4, #172]
+	movne	r5, r6
 	str	r3, [r4, #3156]
-	cmp	r2, r7
-	bne	.L1682
-	ldrh	r7, [r4, #124]
-	cmp	r7, r2
-	movne	r7, r2
-	bne	.L1682
-	ldrh	r5, [r4, #222]
-	cmp	r5, r7
-	bne	.L1682
+	bne	.L1550
 	ldrh	r2, [r4, #224]
 	cmp	r2, #24
 	movcc	r2, #5120
 	movcs	r2, #1024
 	cmp	r3, r2
-	movls	r7, r5
-	bls	.L1682
-	mov	r8, #0
+	bls	.L1550
 	movw	r3, #3660
-	str	r8, [r4, #3156]
-	strh	r8, [r4, r3]	@ movhi
+	mov	r7, #0
+	str	r7, [r4, #3156]
+	strh	r7, [r4, r3]	@ movhi
 	bl	GetSwlReplaceBlock
-	cmp	r0, r5
-	mov	r7, r0
-	movne	r5, r0
-	bne	.L1684
+	mov	r5, r0
+	cmp	r0, r6
+	bne	.L1552
 	movw	r6, #3154
 	ldrh	r2, [r4, #224]
 	ldrh	r3, [r4, r6]
 	cmp	r2, r3
-	bcs	.L1685
+	bcs	.L1553
 	mov	r0, #64
 	bl	List_get_gc_head_node
 	uxth	r3, r0
-	cmp	r3, r7
-	beq	.L1687
+	cmp	r3, r5
+	beq	.L1555
 	mov	r0, r3
 	ldr	r3, [r4, #72]
 	lsl	r0, r0, #1
 	ldrh	r3, [r3, r0]
 	cmp	r3, #7
-	bhi	.L1688
-	mov	r0, r8
+	bhi	.L1556
+	mov	r0, r7
 	bl	List_get_gc_head_node
-	uxth	r5, r0
+	uxth	r0, r0
 	mov	r3, #128
+	cmp	r0, r5
 	strh	r3, [r4, r6]	@ movhi
-	cmp	r5, r7
-	bne	.L1684
-.L1687:
-	bl	FtlGcReFreshBadBlk
-.L1682:
-	movw	r1, #65535
-	ldr	r2, [sp, #20]
-	sub	r3, r7, r1
-	clz	r3, r3
-	lsr	r3, r3, #5
-	cmp	r2, #0
-	movne	r2, #0
-	andeq	r2, r3, #1
-	cmp	r2, #0
-	beq	.L1690
-	ldrh	r3, [r4, #224]
-	cmp	r3, #24
-	movhi	r6, #1
-	bhi	.L1691
-	movw	r2, #302
-	cmp	r3, #16
-	ldrh	r6, [r4, r2]
-	lsrhi	r6, r6, #5
-	bhi	.L1691
-	cmp	r3, #12
-	lsrhi	r6, r6, #4
-	bhi	.L1691
-	cmp	r3, #8
-	lsrhi	r6, r6, #2
-.L1691:
-	ldr	r2, .L1803+12
-	ldrh	r1, [r2]
-	cmp	r1, r3
-	mov	r1, r2
-	bcs	.L1695
-	ldrh	r3, [r4, #124]
-	movw	r0, #65535
-	cmp	r3, r0
-	bne	.L1696
-	ldrh	r0, [r4, #222]
-	cmp	r0, r3
-	bne	.L1696
-	movw	r3, #3660
-	ldrh	r0, [r4, r3]
-	cmp	r0, #0
-	bne	.L1697
-	ldr	r3, [r4, #2552]
-	ldr	ip, [r4, #2548]
-	add	r3, r3, r3, lsl #1
-	cmp	ip, r3, lsr #2
-	movcs	r3, #18
-	strhcs	r3, [r2]	@ movhi
-	bcs	.L1699
-.L1697:
-	movw	r3, #2620
-	ldrh	r3, [r4, r3]
-	add	r3, r3, r3, lsl #1
-	asr	r3, r3, #2
-	strh	r3, [r1]	@ movhi
-.L1699:
-	mov	r3, #0
-	str	r3, [r4, #3164]
-.L1676:
-	ldr	r3, .L1803
-	ldr	r2, [sp, #44]
-	ldr	r3, [r3]
+	beq	.L1555
+	mov	r5, r0
+.L1552:
+	ldr	r1, .L1660+8
+	lsl	r2, r5, #1
+	ldr	r3, [r4, #72]
+	ldr	r0, .L1660+12
+	ldrh	r1, [r1]
+	ldrh	r3, [r3, r2]
+	str	r1, [sp, #4]
+	ldr	r1, [r4, #2536]
+	ldrh	r2, [r1, r2]
+	mov	r1, r5
+	str	r2, [sp]
+	ldrh	r2, [r4, #224]
+	bl	sftl_printk
+	b	.L1555
+.L1546:
+	ldrh	r2, [r4, #124]
 	cmp	r2, r3
-	beq	.L1754
-	bl	__stack_chk_fail
-.L1678:
-	ldrh	r3, [r3, #124]
-	cmp	r3, r2
-	beq	.L1681
+	beq	.L1549
 	mov	r0, #1
 	bl	FtlGcFreeTempBlock
 	cmp	r0, #0
-	beq	.L1681
+	beq	.L1549
 	mov	r0, #1
-	b	.L1676
-.L1679:
+	b	.L1544
+.L1547:
 	ldrh	r1, [r4, #222]
 	cmp	r1, r2
 	strheq	r3, [r4, #222]	@ movhi
 	mvneq	r3, #0
 	strheq	r3, [r4, #220]	@ movhi
-	b	.L1680
-.L1688:
+	b	.L1548
+.L1556:
 	mov	r3, #64
-.L1799:
+.L1656:
 	strh	r3, [r4, r6]	@ movhi
-	b	.L1687
-.L1685:
+.L1555:
+	bl	FtlGcReFreshBadBlk
+.L1550:
+	ldr	r2, [fp, #-72]
+	movw	r3, #65535
+	cmp	r2, #0
+	cmpeq	r5, r3
+	moveq	r2, #1
+	movne	r2, #0
+	bne	.L1558
+	ldrh	r3, [r4, #224]
+	cmp	r3, #24
+	movhi	r6, #1
+	bhi	.L1559
+	movw	r2, #302
+	cmp	r3, #16
+	ldrh	r6, [r4, r2]
+	lsrhi	r6, r6, #5
+	bhi	.L1559
+	cmp	r3, #12
+	lsrhi	r6, r6, #4
+	bhi	.L1559
+	cmp	r3, #8
+	lsrhi	r6, r6, #2
+.L1559:
+	ldr	r2, .L1660+8
+	ldrh	r1, [r2]
+	cmp	r1, r3
+	bcs	.L1562
+	ldrh	r1, [r4, #222]
+	ldrh	r3, [r4, #124]
+	and	r3, r3, r1
+	movw	r1, #65535
+	cmp	r3, r1
+	bne	.L1563
+	movw	r3, #3660
+	ldrh	r0, [r4, r3]
+	cmp	r0, #0
+	bne	.L1564
+	ldr	r3, [r4, #2552]
+	ldr	r1, [r4, #2548]
+	add	r3, r3, r3, lsl #1
+	cmp	r1, r3, lsr #2
+	movcs	r3, #18
+	bcs	.L1565
+.L1564:
+	movw	r3, #2620
+	ldrh	r3, [r4, r3]
+	add	r3, r3, r3, lsl #1
+	lsr	r3, r3, #2
+.L1565:
+	strh	r3, [r2]	@ movhi
+	mov	r3, #0
+	str	r3, [r4, #3164]
+.L1544:
+	mov	r3, sp
+	ldr	r2, [fp, #-48]
+	bic	r3, r3, #8128
+	bic	r3, r3, #63
+	ldr	r3, [r3, #24]
+	cmp	r2, r3
+	beq	.L1619
+	bl	__stack_chk_fail
+.L1553:
 	mov	r3, #80
-	b	.L1799
-.L1684:
-	ldr	r0, .L1803+12
-	lsl	r1, r5, #1
-	ldr	r3, [r4, #72]
-	mov	r7, r5
-	ldrh	r2, [r4, #224]
-	ldrh	r0, [r0]
-	ldrh	r3, [r3, r1]
-	str	r0, [sp, #4]
-	ldr	r0, [r4, #2536]
-	ldrh	r1, [r0, r1]
-	ldr	r0, .L1803+16
-	str	r1, [sp]
-	mov	r1, r5
-	bl	sftl_printk
-	b	.L1687
-.L1696:
+	b	.L1656
+.L1563:
 	movw	r3, #2620
 	ldrh	r3, [r4, r3]
 	add	r3, r3, r3, lsl #1
 	asr	r3, r3, #2
-	strh	r3, [r1]	@ movhi
-.L1695:
+	strh	r3, [r2]	@ movhi
+.L1562:
 	movw	r3, #3206
-	movw	r7, #65535
+	movw	r5, #65535
 	ldrh	r3, [r4, r3]
 	cmp	r3, #0
 	addne	r6, r6, #32
 	uxthne	r6, r6
-.L1701:
+.L1567:
 	ldrh	r3, [r4, #172]
 	movw	r2, #65535
 	cmp	r3, r2
-	bne	.L1710
-	cmp	r7, r3
-	strhne	r7, [r4, #172]	@ movhi
-	bne	.L1712
+	bne	.L1575
+	cmp	r5, r3
+	strhne	r5, [r4, #172]	@ movhi
+	bne	.L1577
 	ldrh	r3, [r4, #222]
-	cmp	r3, r7
-	beq	.L1712
+	cmp	r3, r5
+	beq	.L1577
 	ldr	r2, [r4, #72]
 	lsl	r3, r3, #1
 	ldrh	r3, [r2, r3]
@@ -11272,116 +11735,95 @@
 	strh	r3, [r4, #172]	@ movhi
 	mvn	r3, #0
 	strh	r3, [r4, #222]	@ movhi
-.L1712:
+.L1577:
 	ldrh	r0, [r4, #172]
 	mov	r3, #0
 	strb	r3, [r4, #180]
 	movw	r3, #65535
 	cmp	r0, r3
-	beq	.L1710
+	beq	.L1575
 	bl	IsBlkInGcList
-	cmp	r0, #0
-	mvnne	r3, #0
-	strhne	r3, [r4, #172]	@ movhi
-	movw	r3, #65535
-	ldrh	r2, [r4, #172]
-	cmp	r2, r3
-	beq	.L1710
-	ldr	r0, .L1803+20
-	bl	make_superblock
-	mov	r3, #0
-	movw	r2, #3662
-	strh	r3, [r4, r2]	@ movhi
-	strh	r3, [r4, #174]	@ movhi
-	strb	r3, [r4, #178]
-	ldrh	r3, [r4, #172]
-	ldr	r2, [r4, #72]
-	lsl	r3, r3, #1
-	ldrh	r2, [r2, r3]
-	ldr	r3, .L1803+24
-	strh	r2, [r3]	@ movhi
-.L1710:
+	subs	r7, r0, #0
+	beq	.L1580
+	mvn	r3, #0
+	strh	r3, [r4, #172]	@ movhi
+.L1575:
 	ldrh	r3, [r4, #172]
 	ldrh	r2, [r4, #24]
 	cmp	r2, r3
-	beq	.L1716
+	beq	.L1581
 	ldrh	r2, [r4, #76]
 	cmp	r2, r3
-	beq	.L1716
+	beq	.L1581
 	ldrh	r2, [r4, #124]
 	cmp	r2, r3
-	bne	.L1717
-.L1716:
+	bne	.L1582
+.L1581:
 	mvn	r3, #0
 	strh	r3, [r4, #172]	@ movhi
-.L1717:
-	ldr	r5, .L1803+4
-	mov	r4, r5
-.L1752:
-	ldrh	r2, [r5, #172]
+.L1582:
+	ldr	r4, .L1660
+.L1617:
+	ldrh	r2, [r4, #172]
 	movw	r3, #65535
 	cmp	r2, r3
-	bne	.L1718
-	ldr	fp, .L1803+28
+	bne	.L1583
+	ldr	r7, .L1660+16
 	mov	r3, #0
-	ldr	r10, .L1803+32
-	str	r3, [r5, #3164]
-	mov	r9, fp
-.L1719:
-	ldrh	r8, [fp]
-	mov	r0, r8
+	str	r3, [r4, #3164]
+.L1584:
+	ldrh	r9, [r7]
+	mov	r0, r9
 	bl	List_get_gc_head_node
-	uxth	r2, r0
-	movw	r1, #65535
-	cmp	r2, r1
-	strh	r2, [r4, #172]	@ movhi
-	bne	.L1720
+	uxth	r10, r0
+	movw	r3, #65535
+	mov	r8, r0
+	cmp	r10, r3
+	strh	r10, [r4, #172]	@ movhi
+	bne	.L1585
 	mov	r3, #0
 	mov	r0, #8
-	strh	r3, [fp]	@ movhi
-	b	.L1676
-.L1690:
+	strh	r3, [r7]	@ movhi
+	b	.L1544
+.L1558:
 	ldrh	r6, [r4, #124]
-	cmp	r6, r1
-	bne	.L1767
 	ldrh	r1, [r4, #222]
-	cmp	r1, r6
-	movne	r3, #0
-	andeq	r3, r3, #1
-	cmp	r3, #0
-	beq	.L1767
+	and	r6, r6, r1
+	and	r6, r6, r5
+	cmp	r6, r3
+	bne	.L1629
 	ldrh	r3, [r4, #172]
 	cmp	r3, r6
-	beq	.L1702
-.L1707:
-	mov	r7, r6
-.L1767:
+	beq	.L1568
+.L1572:
+	mov	r5, r6
+.L1629:
 	mov	r6, #1
-	b	.L1701
-.L1702:
-	ldr	r5, .L1803+12
+	b	.L1567
+.L1568:
+	ldr	r8, .L1660+8
 	str	r2, [r4, #3164]
 	ldrh	r2, [r4, #224]
-	ldrh	r3, [r5]
+	ldrh	r3, [r8]
 	cmp	r2, r3
-	bls	.L1703
+	bls	.L1569
 	movw	r3, #3660
 	ldrh	r3, [r4, r3]
 	cmp	r3, #0
-	bne	.L1704
+	bne	.L1570
 	ldr	r3, [r4, #2552]
 	ldr	r2, [r4, #2548]
 	add	r3, r3, r3, lsl #1
 	cmp	r2, r3, lsr #2
 	movcs	r3, #18
-	bcs	.L1800
-.L1704:
+	bcs	.L1571
+.L1570:
 	movw	r3, #2620
 	ldrh	r3, [r4, r3]
 	add	r3, r3, r3, lsl #1
-	asr	r3, r3, #2
-.L1800:
-	strh	r3, [r5]	@ movhi
+	lsr	r3, r3, #2
+.L1571:
+	strh	r3, [r8]	@ movhi
 	bl	FtlReadRefresh
 	mov	r0, #0
 	bl	List_get_gc_head_node
@@ -11390,154 +11832,154 @@
 	lsl	r0, r0, #1
 	ldrh	r3, [r3, r0]
 	cmp	r3, #4
-	bls	.L1703
-.L1802:
+	bls	.L1569
+.L1659:
 	movw	r3, #3660
 	ldrh	r0, [r4, r3]
-	b	.L1676
-.L1703:
-	movw	r7, #3660
-	ldrh	r0, [r4, r7]
+	b	.L1544
+.L1569:
+	movw	r5, #3660
+	ldrh	r0, [r4, r5]
 	cmp	r0, #0
-	bne	.L1707
+	bne	.L1572
 	movw	r3, #2620
-	ldrh	r8, [r4, r3]
-	add	r3, r8, r8, lsl #1
+	ldrh	r7, [r4, r3]
+	add	r3, r7, r7, lsl #1
 	asr	r3, r3, #2
-	strh	r3, [r5]	@ movhi
+	strh	r3, [r8]	@ movhi
 	bl	List_get_gc_head_node
 	uxth	r0, r0
 	ldr	r3, [r4, #72]
 	lsl	r0, r0, #1
+	ldrh	r1, [r4, #232]
 	ldrh	r2, [r3, r0]
-	ldr	r3, .L1803+36
-	ldrh	r1, [r3]
-	ldrh	r3, [r4, #232]
-	mul	r3, r3, r1
+	ldr	r3, .L1660+20
+	ldrh	r3, [r3]
+	mul	r3, r1, r3
 	add	r3, r3, r3, lsr #31
 	cmp	r2, r3, asr #1
-	ble	.L1708
+	ble	.L1573
 	ldrh	r3, [r4, #224]
-	sub	r8, r8, #1
-	cmp	r3, r8
-	blt	.L1708
+	sub	r7, r7, #1
+	cmp	r3, r7
+	blt	.L1573
 	bl	FtlReadRefresh
-	ldrh	r0, [r4, r7]
-	b	.L1676
-.L1708:
+	ldrh	r0, [r4, r5]
+	b	.L1544
+.L1573:
 	cmp	r2, #0
-	bne	.L1707
+	bne	.L1572
 	movw	r0, #65535
 	bl	decrement_vpc_count
 	ldrh	r0, [r4, #224]
 	add	r0, r0, #1
-	b	.L1676
-.L1720:
-	str	r0, [sp, #16]
-	mov	r0, r2
-	str	r2, [sp, #12]
-	add	r8, r8, #1
+	b	.L1544
+.L1585:
+	mov	r0, r10
 	bl	IsBlkInGcList
+	add	r3, r9, #1
 	cmp	r0, #0
-	ldr	r2, [sp, #12]
-	ldr	r3, [sp, #16]
-	strhne	r8, [fp]	@ movhi
-	bne	.L1719
 	uxth	r3, r3
-	ldrh	lr, [r4, #232]
-	ldr	r0, [r4, #72]
+	beq	.L1586
+.L1657:
+	strh	r3, [r7]	@ movhi
+	b	.L1584
+.L1586:
+	ldr	r2, .L1660+24
 	uxth	r8, r8
-	lsl	r1, r3, #1
-	ldrh	r3, [r10]
-	strh	r8, [fp]	@ movhi
-	ldrh	ip, [r0, r1]
-	mul	r3, lr, r3
-	add	lr, r3, r3, lsr #31
-	cmp	ip, lr, asr #1
-	bgt	.L1723
-	cmp	r8, #48
-	cmphi	ip, #8
-	bls	.L1724
-	ldr	ip, .L1803+40
-	ldrh	ip, [ip]
-	cmp	ip, #35
-	bhi	.L1724
-.L1723:
-	mov	ip, #0
-	strh	ip, [r9]	@ movhi
-.L1724:
-	ldrh	r1, [r0, r1]
-	movw	r0, #65535
-	cmp	r3, r1
-	cmple	r7, r0
-	bne	.L1725
-	ldrh	r3, [r9]
-	cmp	r3, #3
-	mvnls	r3, #0
-	strhls	r3, [r4, #172]	@ movhi
-	movls	r3, #0
-	strhls	r3, [r9]	@ movhi
-	bls	.L1802
-.L1725:
-	cmp	r1, #0
-	bne	.L1726
+	ldrh	ip, [r4, #232]
+	ldr	r1, [r4, #72]
+	lsl	r8, r8, #1
+	strh	r3, [r7]	@ movhi
+	ldrh	r2, [r2]
+	ldrh	r0, [r1, r8]
+	mul	r2, ip, r2
+	add	ip, r2, r2, lsr #31
+	cmp	r0, ip, asr #1
+	bgt	.L1588
+	cmp	r0, #8
+	cmphi	r3, #48
+	bls	.L1589
+	ldr	r3, .L1660+28
+	ldrh	r3, [r3]
+	cmp	r3, #35
+	bhi	.L1589
+.L1588:
+	mov	r3, #0
+	strh	r3, [r7]	@ movhi
+.L1589:
+	ldrh	r3, [r1, r8]
+	movw	r1, #65535
+	cmp	r2, r3
+	cmple	r5, r1
+	bne	.L1590
+	ldrh	r2, [r7]
+	cmp	r2, #3
+	bhi	.L1590
+	mvn	r3, #0
+	strh	r3, [r4, #172]	@ movhi
+	mov	r3, #0
+	strh	r3, [r7]	@ movhi
+	b	.L1659
+.L1590:
+	cmp	r3, #0
+	bne	.L1591
 	movw	r0, #65535
 	bl	decrement_vpc_count
-	ldrh	r3, [r9]
+	ldrh	r3, [r7]
 	add	r3, r3, #1
-	strh	r3, [r9]	@ movhi
-	b	.L1719
-.L1726:
+	b	.L1657
+.L1591:
 	mov	r3, #0
 	strb	r3, [r4, #180]
 	ldrh	r3, [r4, #24]
-	cmp	r3, r2
-	bne	.L1727
+	cmp	r3, r10
+	bne	.L1592
+	ldr	r1, .L1660+32
 	movw	r2, #717
-	ldr	r1, .L1803+44
-	ldr	r0, .L1803+48
+	ldr	r0, .L1660+36
 	bl	sftl_printk
-.L1727:
+.L1592:
 	ldrh	r2, [r4, #172]
 	ldrh	r3, [r4, #76]
 	cmp	r2, r3
-	bne	.L1728
+	bne	.L1593
+	ldr	r1, .L1660+32
 	movw	r2, #718
-	ldr	r1, .L1803+44
-	ldr	r0, .L1803+48
+	ldr	r0, .L1660+36
 	bl	sftl_printk
-.L1728:
+.L1593:
 	ldrh	r2, [r4, #172]
 	ldrh	r3, [r4, #124]
 	cmp	r2, r3
-	bne	.L1729
+	bne	.L1594
+	ldr	r1, .L1660+32
 	movw	r2, #719
-	ldr	r1, .L1803+44
-	ldr	r0, .L1803+48
+	ldr	r0, .L1660+36
 	bl	sftl_printk
-.L1729:
-	ldr	r0, .L1803+20
+.L1594:
+	ldr	r0, .L1660+40
 	bl	make_superblock
+	ldr	r1, .L1660+44
 	ldrh	r2, [r4, #172]
 	mov	r3, #0
-	ldr	r1, .L1803+52
 	ldr	r0, [r4, #72]
 	lsl	r2, r2, #1
 	strh	r3, [r1]	@ movhi
 	ldrh	r2, [r0, r2]
+	strh	r2, [r1, #2]	@ movhi
 	strh	r3, [r4, #174]	@ movhi
 	strb	r3, [r4, #178]
-	strh	r2, [r1, #2]	@ movhi
-.L1718:
+.L1583:
 	mov	r3, #1
 	str	r3, [r4, #3272]
-	ldr	r3, .L1803+32
+	ldr	r3, .L1660+24
 	ldrh	r3, [r3]
-	str	r3, [sp, #12]
-	ldr	r3, [sp, #20]
+	str	r3, [fp, #-64]
+	ldr	r3, [fp, #-72]
 	cmp	r3, #0
-	beq	.L1730
-	ldr	r2, [sp, #12]
+	beq	.L1595
+	ldr	r2, [fp, #-64]
 	ldrh	r3, [r4, #232]
 	ldr	r1, [r4, #72]
 	mul	r3, r2, r3
@@ -11545,120 +11987,120 @@
 	lsl	r2, r2, #1
 	ldrh	r2, [r1, r2]
 	sub	r3, r3, r2
-	add	r2, r3, #3
 	cmp	r3, #0
-	movlt	r3, r2
-	add	r6, r6, r3, asr #2
+	add	r2, r3, #3
+	movge	r2, r3
+	add	r6, r6, r2, asr #2
 	uxth	r6, r6
-.L1730:
+.L1595:
 	ldrh	r3, [r4, #174]
-	ldr	r1, [sp, #12]
+	ldr	r1, [fp, #-64]
 	add	r2, r3, r6
 	cmp	r2, r1
 	movgt	r2, r1
-	subgt	r6, r2, r3
+	subgt	r3, r2, r3
+	uxthgt	r6, r3
 	mov	r3, #0
-	uxthgt	r6, r6
-.L1801:
-	str	r3, [sp, #16]
-	ldrh	r3, [sp, #16]
+.L1658:
+	str	r3, [fp, #-68]
+	ldrh	r8, [r4, #174]
+	ldrh	r3, [fp, #-68]
 	cmp	r6, r3
-	bls	.L1740
-	ldr	r3, [sp, #16]
+	bls	.L1605
+	ldr	r3, [fp, #-68]
 	movw	r9, #65535
-	ldrh	r8, [r5, #174]
+	ldrh	ip, [r4, #232]
 	mov	r10, #20
-	ldrh	ip, [r5, #232]
-	ldr	r0, [r5, #3184]
 	add	r8, r8, r3
+	ldr	r0, [r4, #3184]
 	mov	r3, #0
-	ldr	r1, .L1803+56
-	mov	fp, r3
-	b	.L1741
-.L1734:
-	ldrh	r2, [r1, #2]!
-	add	r3, r3, #1
+	ldr	r1, .L1660+48
+	mov	r7, r3
+	b	.L1606
+.L1599:
+	ldrh	r2, [r1], #2
 	cmp	r2, r9
-	mlane	lr, r10, fp, r0
-	orrne	r2, r8, r2, lsl #10
-	strne	r2, [lr, #4]
-	addne	r2, fp, #1
-	uxthne	fp, r2
-.L1741:
+	beq	.L1598
+	mla	lr, r10, r7, r0
+	add	r7, r7, #1
+	orr	r2, r8, r2, lsl #10
+	uxth	r7, r7
+	str	r2, [lr, #4]
+.L1598:
+	add	r3, r3, #1
+.L1606:
 	uxth	r2, r3
 	cmp	ip, r2
-	bhi	.L1734
+	bhi	.L1599
 	mov	r10, #0
-	ldrb	r2, [r5, #180]	@ zero_extendqisi2
-	mov	r1, fp
+	ldrb	r2, [r4, #180]	@ zero_extendqisi2
+	mov	r1, r7
 	bl	FlashReadPages
-.L1735:
+.L1600:
 	uxth	r3, r10
-	cmp	fp, r3
-	ldrls	r3, [sp, #16]
+	cmp	r7, r3
+	ldrls	r3, [fp, #-68]
 	addls	r3, r3, #1
-	bls	.L1801
-.L1739:
+	bls	.L1658
+.L1604:
 	mov	r8, #20
-	ldr	r3, [r5, #3184]
+	ldr	r3, [r4, #3184]
 	mul	r8, r8, r10
 	add	r2, r3, r8
 	ldr	r3, [r3, r8]
 	cmn	r3, #1
-	beq	.L1736
+	beq	.L1601
 	ldr	r9, [r2, #12]
 	movw	r3, #61589
 	ldrh	r2, [r9]
 	cmp	r2, r3
-	bne	.L1736
+	bne	.L1601
 	ldr	r3, [r9, #8]
 	cmn	r3, #1
-	bne	.L1737
+	bne	.L1602
+	ldr	r1, .L1660+32
 	movw	r2, #753
-	ldr	r1, .L1803+44
-	ldr	r0, .L1803+48
-	str	r3, [sp, #24]
+	ldr	r0, .L1660+36
+	str	r3, [fp, #-76]
 	bl	sftl_printk
-	ldr	r3, [sp, #24]
-.L1737:
-	mov	r2, #0
-	add	r1, sp, #36
+	ldr	r3, [fp, #-76]
+.L1602:
+	sub	r1, fp, #56
 	mov	r0, r3
+	mov	r2, #0
 	bl	log2phys
 	ldr	r1, [r4, #3184]
-	ldr	r3, [sp, #36]
+	ldr	r3, [fp, #-56]
 	add	r1, r1, r8
 	ldr	r2, [r1, #4]
 	cmp	r2, r3
-	bne	.L1736
-	ldr	r3, .L1803+52
-	ldr	r2, .L1803+52
+	bne	.L1601
+	ldr	r2, .L1660+44
 	ldr	r0, [r4, #3168]
-	ldrh	r3, [r3]
 	ldr	r1, [r1, #16]
+	ldrh	r3, [r2]
 	add	r3, r3, #1
 	strh	r3, [r2]	@ movhi
-	mov	r2, #20
 	ldr	r3, [r4, #3292]
-	str	r2, [sp, #28]
+	mov	r2, #20
 	mla	r3, r2, r0, r3
+	str	r3, [fp, #-76]
 	str	r1, [r3, #16]
-	str	r3, [sp, #24]
 	bl	Ftl_get_new_temp_ppa
-	ldr	r3, [sp, #24]
-	ldr	r1, [r4, #3292]
-	ldr	r2, [sp, #28]
+	ldr	r3, [fp, #-76]
+	ldr	r1, [r4, #3184]
+	mov	r2, #20
 	str	r0, [r3, #4]
-	ldr	r3, [r4, #3168]
-	mla	r3, r2, r3, r1
-	ldr	r2, [r4, #3184]
-	add	r2, r2, r8
-	ldr	r1, [r2, #8]
-	str	r1, [r3, #8]
+	add	r1, r1, r8
+	ldr	r0, [r4, #3168]
+	ldr	r3, [r4, #3292]
+	mla	r3, r2, r0, r3
+	ldr	r2, [r1, #8]
+	str	r2, [r3, #8]
+	ldr	r2, [r1, #12]
 	mov	r1, #1
-	ldr	r2, [r2, #12]
 	str	r2, [r3, #12]
-	ldr	r3, [sp, #36]
+	ldr	r3, [fp, #-56]
 	str	r3, [r9, #12]
 	ldrh	r3, [r4, #124]
 	strh	r3, [r9, #2]	@ movhi
@@ -11673,128 +12115,138 @@
 	ldrb	r2, [r4, #131]	@ zero_extendqisi2
 	ldr	r3, [r4, #3168]
 	cmp	r2, r3
-	beq	.L1738
+	beq	.L1603
 	ldrh	r3, [r4, #128]
 	cmp	r3, #0
-	bne	.L1736
-.L1738:
+	bne	.L1601
+.L1603:
 	bl	Ftl_gc_temp_data_write_back
 	cmp	r0, #0
-	beq	.L1736
-	ldr	r3, .L1803+4
+	beq	.L1601
+	ldr	r3, .L1660
 	mov	r2, #0
-	mvn	r1, #0
 	str	r2, [r3, #3272]
-	strh	r2, [r3, #174]	@ movhi
+	movw	r2, #65535
+	str	r2, [r3, #172]
 	movw	r2, #3660
-	strh	r1, [r3, #172]	@ movhi
 	ldrh	r0, [r3, r2]
-	b	.L1676
-.L1736:
+	b	.L1544
+.L1601:
 	add	r10, r10, #1
-	b	.L1735
-.L1740:
-	ldrh	r3, [r5, #174]
-	add	r6, r6, r3
-	ldr	r3, [sp, #12]
+	b	.L1600
+.L1605:
+	add	r6, r6, r8
+	ldr	r3, [fp, #-64]
 	uxth	r6, r6
+	strh	r6, [r4, #174]	@ movhi
 	cmp	r3, r6
-	strh	r6, [r5, #174]	@ movhi
-	bhi	.L1742
-	ldr	r3, [r5, #3168]
+	bhi	.L1607
+	ldr	r3, [r4, #3168]
 	cmp	r3, #0
-	beq	.L1743
+	beq	.L1608
 	bl	Ftl_gc_temp_data_write_back
 	cmp	r0, #0
 	movne	r3, #0
-	strne	r3, [r5, #3272]
-	movwne	r3, #3660
-	ldrhne	r0, [r5, r3]
-	bne	.L1676
-.L1743:
-	ldr	r3, .L1803+52
+	strne	r3, [r4, #3272]
+	bne	.L1659
+.L1608:
+	ldr	r3, .L1660+44
 	ldrh	r6, [r3]
 	cmp	r6, #0
-	bne	.L1744
-	ldrh	r3, [r5, #172]
-	ldr	r2, [r5, #72]
+	bne	.L1609
+	ldrh	r3, [r4, #172]
+	ldr	r2, [r4, #72]
 	lsl	r3, r3, #1
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	beq	.L1744
-.L1745:
-	ldr	r3, [r5, #2552]
+	beq	.L1609
+.L1610:
+	ldr	r3, [r4, #2552]
 	cmp	r6, r3
-	bcs	.L1750
-	mov	r2, #0
-	add	r1, sp, #40
-	mov	r0, r6
-	bl	log2phys
-	ldr	r0, [sp, #40]
-	cmn	r0, #1
-	beq	.L1746
-	ubfx	r0, r0, #10, #16
-	bl	P2V_block_in_plane
-	ldrh	r3, [r5, #172]
-	cmp	r3, r0
-	bne	.L1746
-.L1750:
-	ldr	r3, [r5, #2552]
-	cmp	r6, r3
-	bcc	.L1744
-	ldrh	r3, [r5, #172]
+	bcc	.L1613
+.L1615:
+	ldrh	r3, [r4, #172]
 	mov	r1, #0
-	ldr	r2, [r5, #72]
+	ldr	r2, [r4, #72]
 	lsl	r3, r3, #1
 	strh	r1, [r2, r3]	@ movhi
-	ldrh	r0, [r5, #172]
+	ldrh	r0, [r4, #172]
 	bl	update_vpc_list
 	bl	l2p_flush
 	bl	FtlVpcTblFlush
-.L1744:
+.L1609:
 	mvn	r3, #0
-	strh	r3, [r5, #172]	@ movhi
-.L1742:
+	strh	r3, [r4, #172]	@ movhi
+.L1607:
 	mov	r3, #0
-	str	r3, [r5, #3272]
-	ldrh	r3, [r5, #224]
+	str	r3, [r4, #3272]
+	ldrh	r3, [r4, #224]
 	cmp	r3, #2
-	bhi	.L1751
-	ldr	r3, .L1803+32
+	bhi	.L1616
+	ldr	r3, .L1660+24
 	ldrh	r6, [r3]
-	b	.L1752
-.L1746:
+	b	.L1617
+.L1613:
+	sub	r1, fp, #52
+	mov	r0, r6
+	mov	r2, #0
+	bl	log2phys
+	ldr	r0, [fp, #-52]
+	cmn	r0, #1
+	beq	.L1611
+	ubfx	r0, r0, #10, #16
+	bl	P2V_block_in_plane
+	ldrh	r3, [r4, #172]
+	cmp	r3, r0
+	beq	.L1612
+.L1611:
 	add	r6, r6, #1
-	b	.L1745
-.L1751:
+	b	.L1610
+.L1612:
+	ldr	r3, [r4, #2552]
+	cmp	r6, r3
+	bcc	.L1609
+	b	.L1615
+.L1616:
 	movw	r2, #3660
-	ldrh	r0, [r5, r2]
+	ldrh	r0, [r4, r2]
 	cmp	r0, #0
 	addeq	r0, r3, #1
-	b	.L1676
-.L1754:
-	add	sp, sp, #52
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1804:
+	b	.L1544
+.L1580:
+	ldr	r0, .L1660+40
+	bl	make_superblock
+	movw	r3, #3662
+	ldr	r2, [r4, #72]
+	strh	r7, [r4, r3]	@ movhi
+	ldrh	r3, [r4, #172]
+	strh	r7, [r4, #174]	@ movhi
+	strb	r7, [r4, #178]
+	lsl	r3, r3, #1
+	ldrh	r2, [r2, r3]
+	ldr	r3, .L1660+52
+	strh	r2, [r3]	@ movhi
+	b	.L1575
+.L1619:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1661:
 	.align	2
-.L1803:
-	.word	__stack_chk_guard
+.L1660:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.word	.LANCHOR0+3152
 	.word	.LC124
-	.word	.LANCHOR0+172
-	.word	.LANCHOR0+3664
 	.word	.LANCHOR0+3160
-	.word	.LANCHOR0+302
 	.word	.LANCHOR0+304
+	.word	.LANCHOR0+302
 	.word	.LANCHOR0+3196
 	.word	.LANCHOR1+568
 	.word	.LC8
+	.word	.LANCHOR0+172
 	.word	.LANCHOR0+3662
-	.word	.LANCHOR0+186
-	.fnend
+	.word	.LANCHOR0+188
+	.word	.LANCHOR0+3664
 	.size	rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
 	.align	2
 	.global	FtlRead
@@ -11803,209 +12255,180 @@
 	.fpu softvfp
 	.type	FtlRead, %function
 FtlRead:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 56
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r10, r3
-	ldr	r3, .L1844
-	cmp	r0, #16
-	.pad #60
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #60
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r8, r3
+	mov	r3, sp
+	bic	r3, r3, #8128
 	mov	r5, r1
-	str	r2, [sp, #4]
-	ldr	r3, [r3]
-	str	r3, [sp, #52]
-	bne	.L1806
-	mov	r2, r10
-	ldr	r1, [sp, #4]
+	bic	r3, r3, #63
+	cmp	r0, #16
+	str	r2, [fp, #-60]
+	ldr	r3, [r3, #24]
+	str	r3, [fp, #-48]
+	bne	.L1663
+	ldr	r1, [fp, #-60]
+	mov	r2, r8
 	add	r0, r5, #256
 	bl	FtlVendorPartRead
 	mov	r6, r0
-.L1805:
-	ldr	r3, .L1844
-	mov	r0, r6
-	ldr	r2, [sp, #52]
-	ldr	r3, [r3]
+.L1662:
+	mov	r3, sp
+	ldr	r2, [fp, #-48]
+	bic	r3, r3, #8128
+	bic	r3, r3, #63
+	ldr	r3, [r3, #24]
 	cmp	r2, r3
-	beq	.L1827
+	beq	.L1685
 	bl	__stack_chk_fail
-.L1806:
-	ldr	r4, .L1844+4
-	ldr	r2, [sp, #4]
+.L1663:
+	ldr	r4, .L1703
+	ldr	r2, [fp, #-60]
 	ldr	r3, [r4, #340]
-	cmp	r2, r3
-	cmpls	r1, r3
-	movcs	r9, #1
-	movcc	r9, #0
-	bcs	.L1829
-	add	r2, r1, r2
 	cmp	r3, r2
-	str	r2, [sp, #12]
-	bcc	.L1829
-	ldr	r3, .L1844+8
+	cmpcs	r3, r1
+	movls	r7, #1
+	movhi	r7, #0
+	bls	.L1687
+	add	r2, r1, r2
+	str	r2, [fp, #-64]
+	cmp	r3, r2
+	bcc	.L1687
+	ldr	r3, .L1703+4
 	ldr	r6, [r3]
 	cmn	r6, #1
-	beq	.L1805
+	beq	.L1662
 	movw	r3, #258
 	mov	r0, r5
 	ldrh	r6, [r4, r3]
-	mov	r8, r9
 	mov	r1, r6
 	bl	__aeabi_uidiv
-	ldr	r3, [sp, #12]
+	ldr	r3, [fp, #-64]
 	mov	r1, r6
-	str	r0, [sp, #16]
-	mov	r6, r9
+	str	r0, [fp, #-72]
 	sub	r0, r3, #1
+	mov	r6, r7
 	bl	__aeabi_uidiv
-	ldr	r3, [sp, #16]
-	ldr	r2, [sp, #4]
-	ldr	r7, [sp, #16]
+	ldr	r3, [fp, #-72]
+	ldr	r2, [fp, #-60]
 	rsb	r3, r3, #1
-	str	r0, [sp, #20]
+	ldr	r9, [fp, #-72]
 	add	r3, r3, r0
-	str	r9, [sp, #28]
-	str	r3, [sp, #8]
+	str	r3, [fp, #-68]
 	ldr	r3, [r4, #2584]
-	str	r9, [sp, #24]
+	str	r0, [fp, #-76]
 	add	r3, r3, r2
-	ldr	r2, [sp, #8]
+	ldr	r2, [fp, #-68]
 	str	r3, [r4, #2584]
 	ldr	r3, [r4, #2556]
+	str	r7, [fp, #-56]
 	add	r3, r3, r2
+	str	r7, [fp, #-84]
 	str	r3, [r4, #2556]
-.L1808:
-	ldr	r3, [sp, #8]
+	str	r7, [fp, #-80]
+.L1665:
+	ldr	r3, [fp, #-68]
 	cmp	r3, #0
-	bne	.L1825
-	ldr	r3, .L1844+4
+	bne	.L1683
+	ldr	r3, .L1703
 	movw	r2, #3206
 	ldrh	r2, [r3, r2]
 	cmp	r2, #0
-	bne	.L1826
+	bne	.L1684
 	ldrh	r3, [r3, #224]
 	cmp	r3, #31
-	bhi	.L1805
-.L1826:
+	bhi	.L1662
+.L1684:
 	mov	r1, #1
 	mov	r0, #0
 	bl	rk_ftl_garbage_collect
-	b	.L1805
-.L1825:
+	b	.L1662
+.L1683:
+	sub	r1, fp, #52
+	mov	r0, r9
 	mov	r2, #0
-	add	r1, sp, #48
-	mov	r0, r7
 	bl	log2phys
-	ldr	r3, [sp, #48]
+	ldr	r3, [fp, #-52]
 	cmn	r3, #1
-	moveq	fp, #0
-	beq	.L1810
-	ldr	r2, [r4, #3288]
-	mov	fp, #20
-	mla	fp, fp, r8, r2
-	str	r3, [fp, #4]
-	ldr	r3, [sp, #16]
-	cmp	r7, r3
-	bne	.L1814
-	ldr	r3, [r4, #3312]
-	mov	r0, r5
-	str	r3, [fp, #8]
-	ldr	r3, .L1844+12
-	ldrh	r3, [r3]
-	mov	r1, r3
-	str	r3, [sp, #28]
-	bl	__aeabi_uidivmod
-	ldr	r3, [sp, #28]
-	str	r1, [sp, #24]
-	sub	r2, r3, r1
-	ldr	r1, [sp, #4]
-	cmp	r1, r2
-	movcc	r2, r1
-	cmp	r2, r3
-	str	r2, [sp, #28]
-	streq	r10, [fp, #8]
-.L1815:
-	ldr	r3, .L1844+16
-	ldr	r2, [r4, #3336]
-	str	r7, [fp, #16]
-	ldrh	r3, [r3]
-	mul	r3, r8, r3
-	add	r8, r8, #1
-	bic	r3, r3, #3
-	add	r3, r2, r3
-	str	r3, [fp, #12]
-	b	.L1813
-.L1812:
-	mla	r0, r0, r7, fp
-	ldr	r2, [sp, #12]
+	bne	.L1700
+	ldr	r3, .L1703+8
+	mov	r10, #0
+	b	.L1666
+.L1669:
+	mla	r0, r9, r0, r10
+	ldr	r1, [fp, #-64]
 	cmp	r5, r0
-	movls	r3, #1
-	movhi	r3, #0
-	cmp	r2, r0
-	movls	r3, #0
-	cmp	r3, #0
-	beq	.L1811
+	movls	r2, #1
+	movhi	r2, #0
+	cmp	r1, r0
+	movls	r2, #0
+	cmp	r2, #0
+	beq	.L1668
 	sub	r0, r0, r5
 	mov	r2, #512
 	mov	r1, #0
-	add	r0, r10, r0, lsl #9
+	add	r0, r8, r0, lsl #9
 	bl	ftl_memset
-.L1811:
-	add	fp, fp, #1
-.L1810:
-	ldr	r3, .L1844+12
+	ldr	r3, .L1703+8
+.L1668:
+	add	r10, r10, #1
+.L1666:
 	ldrh	r0, [r3]
-	cmp	fp, r0
-	bcc	.L1812
-.L1813:
-	ldr	r3, [sp, #8]
-	add	r7, r7, #1
+	cmp	r0, r10
+	bhi	.L1669
+.L1670:
+	ldr	r3, [fp, #-68]
+	add	r9, r9, #1
 	subs	r3, r3, #1
-	str	r3, [sp, #8]
-	beq	.L1817
+	str	r3, [fp, #-68]
+	beq	.L1675
 	ldrh	r3, [r4, #232]
-	cmp	r8, r3, lsl #2
-	bne	.L1808
-.L1817:
-	cmp	r8, #0
-	beq	.L1808
-	mov	r2, #0
-	mov	r1, r8
+	cmp	r7, r3, lsl #2
+	bne	.L1665
+.L1675:
+	cmp	r7, #0
+	beq	.L1665
 	ldr	r0, [r4, #3288]
-	mov	fp, #0
+	mov	r1, r7
+	mov	r2, #0
+	mov	r10, #0
 	bl	FlashReadPages
-	lsl	r3, r9, #9
-	str	r3, [sp, #40]
-	ldr	r3, [sp, #24]
+	ldr	r3, [fp, #-56]
 	lsl	r3, r3, #9
-	str	r3, [sp, #32]
-	ldr	r3, [sp, #28]
+	str	r3, [fp, #-96]
+	ldr	r3, [fp, #-80]
 	lsl	r3, r3, #9
-	str	r3, [sp, #36]
-.L1824:
+	str	r3, [fp, #-88]
+	ldr	r3, [fp, #-84]
+	lsl	r3, r3, #9
+	str	r3, [fp, #-92]
+.L1682:
 	mov	r3, #20
 	ldr	r2, [r4, #3288]
-	mul	r3, r3, fp
-	ldr	r0, [sp, #16]
+	ldr	r0, [fp, #-72]
+	mul	r3, r3, r10
 	add	r2, r2, r3
 	ldr	r1, [r2, #16]
-	cmp	r0, r1
-	bne	.L1819
+	cmp	r1, r0
+	bne	.L1677
 	ldr	r1, [r2, #8]
 	ldr	r2, [r4, #3312]
 	cmp	r1, r2
-	bne	.L1820
-	str	r3, [sp, #44]
-	mov	r0, r10
-	ldr	r3, [sp, #32]
-	ldr	r2, [sp, #36]
+	bne	.L1678
+	str	r3, [fp, #-100]
+	mov	r0, r8
+	ldrd	r2, [fp, #-92]
 	add	r1, r1, r3
-.L1843:
+.L1702:
 	bl	ftl_memcpy
-	ldr	r3, [sp, #44]
-.L1820:
+	ldr	r3, [fp, #-100]
+.L1678:
 	ldr	r1, [r4, #3288]
 	add	r2, r1, r3
 	ldr	r0, [r2, #12]
@@ -12017,79 +12440,108 @@
 	strne	r0, [r4, #2712]
 	ldr	ip, [r1, r3]
 	cmn	ip, #1
-	ldreq	r0, [r4, #2712]
 	moveq	r6, ip
+	ldreq	r0, [r4, #2712]
 	addeq	r0, r0, #1
 	streq	r0, [r4, #2712]
 	ldr	r3, [r1, r3]
 	cmp	r3, #256
-	bne	.L1823
+	bne	.L1681
 	ldr	r0, [r2, #4]
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
 	bl	FtlGcRefreshBlock
-.L1823:
-	add	fp, fp, #1
-	cmp	r8, fp
-	bne	.L1824
-	mov	r8, #0
-	b	.L1808
-.L1814:
-	ldr	r3, [sp, #20]
-	cmp	r7, r3
-	bne	.L1816
-	ldr	r3, [r4, #3316]
-	ldr	r1, [sp, #12]
-	str	r3, [fp, #8]
-	ldr	r3, .L1844+12
-	ldrh	r2, [r3]
-	mul	r3, r2, r7
-	sub	r9, r1, r3
-	cmp	r2, r9
-	bne	.L1815
-.L1842:
-	sub	r3, r3, r5
-	add	r3, r10, r3, lsl #9
-	str	r3, [fp, #8]
-	b	.L1815
-.L1816:
-	ldr	r3, .L1844+12
+.L1681:
+	add	r10, r10, #1
+	cmp	r7, r10
+	bne	.L1682
+	mov	r7, #0
+	b	.L1665
+.L1700:
+	ldr	r10, [r4, #3288]
+	mov	r2, #20
+	mla	r10, r2, r7, r10
+	str	r3, [r10, #4]
+	ldr	r3, [fp, #-72]
+	cmp	r9, r3
+	ldr	r3, .L1703+8
+	bne	.L1671
+	ldrh	r3, [r3]
+	mov	r0, r5
+	ldr	r2, [r4, #3312]
+	mov	r1, r3
+	str	r2, [r10, #8]
+	str	r3, [fp, #-84]
+	bl	__aeabi_uidivmod
+	ldr	r3, [fp, #-84]
+	str	r1, [fp, #-80]
+	sub	r2, r3, r1
+	ldr	r1, [fp, #-60]
+	cmp	r1, r2
+	movcc	r2, r1
+	str	r2, [fp, #-84]
+	cmp	r3, r2
+	streq	r8, [r10, #8]
+.L1672:
+	ldr	r3, .L1703+12
+	ldr	r2, [r4, #3336]
+	str	r9, [r10, #16]
 	ldrh	r3, [r3]
 	mul	r3, r7, r3
-	b	.L1842
-.L1819:
-	ldr	r0, [sp, #20]
-	cmp	r0, r1
-	bne	.L1820
+	add	r7, r7, #1
+	bic	r3, r3, #3
+	add	r3, r2, r3
+	str	r3, [r10, #12]
+	b	.L1670
+.L1671:
+	ldrh	r2, [r3]
+	ldr	r1, [fp, #-76]
+	cmp	r9, r1
+	mul	r3, r2, r9
+	bne	.L1673
+	ldr	r1, [fp, #-64]
+	sub	r1, r1, r3
+	str	r1, [fp, #-56]
+	cmp	r1, r2
+	ldrne	r3, [r4, #3316]
+	bne	.L1701
+.L1673:
+	sub	r3, r3, r5
+	add	r3, r8, r3, lsl #9
+.L1701:
+	str	r3, [r10, #8]
+	b	.L1672
+.L1677:
+	ldr	r0, [fp, #-76]
+	cmp	r1, r0
+	bne	.L1678
 	ldr	r1, [r2, #8]
 	ldr	r2, [r4, #3316]
 	cmp	r1, r2
-	bne	.L1820
-	str	r3, [sp, #44]
-	ldr	r3, .L1844+12
-	ldr	r2, [sp, #40]
-	ldrh	r0, [r3]
-	ldr	r3, [sp, #20]
+	bne	.L1678
+	ldr	r2, .L1703+8
+	str	r3, [fp, #-100]
+	ldr	r3, [fp, #-76]
+	ldrh	r0, [r2]
+	ldr	r2, [fp, #-96]
 	mul	r0, r3, r0
 	sub	r0, r0, r5
-	add	r0, r10, r0, lsl #9
-	b	.L1843
-.L1829:
+	add	r0, r8, r0, lsl #9
+	b	.L1702
+.L1687:
 	mvn	r6, #0
-	b	.L1805
-.L1827:
-	add	sp, sp, #60
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1845:
+	b	.L1662
+.L1685:
+	mov	r0, r6
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1704:
 	.align	2
-.L1844:
-	.word	__stack_chk_guard
+.L1703:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.word	.LANCHOR0+258
 	.word	.LANCHOR0+312
-	.fnend
 	.size	FtlRead, .-FtlRead
 	.align	2
 	.global	sftl_read
@@ -12098,17 +12550,26 @@
 	.fpu softvfp
 	.type	sftl_read, %function
 sftl_read:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	mov	r3, r2
 	mov	r2, r1
 	mov	r1, r0
 	mov	r0, #0
-	b	FtlRead
-	.fnend
+	bl	FtlRead
+	ldmfd	sp, {fp, sp, pc}
 	.size	sftl_read, .-sftl_read
+	.section	.rodata.str1.1
+.LC125:
+	.ascii	"FtlWrite: ecc error:%x %x %x\012\000"
+.LC126:
+	.ascii	"FtlWrite: lpa error:%x %x\012\000"
+	.text
 	.align	2
 	.global	FtlWrite
 	.syntax unified
@@ -12116,401 +12577,403 @@
 	.fpu softvfp
 	.type	FtlWrite, %function
 FtlWrite:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 72
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #76
-	sub	sp, sp, #76
-	str	r3, [sp, #12]
+	@ args = 0, pretend = 0, frame = 80
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #84
+	push	{lr}
+	bl	__gnu_mcount_nc
+	str	r3, [fp, #-92]
+	mov	r3, sp
+	bic	r3, r3, #8128
+	mov	r8, r1
+	bic	r3, r3, #63
 	cmp	r0, #16
-	mov	r10, r1
-	ldr	r3, .L1902
-	str	r2, [sp, #8]
-	ldr	r3, [r3]
-	str	r3, [sp, #68]
-	bne	.L1848
-	ldr	r2, [sp, #12]
-	add	r0, r10, #256
-	ldr	r1, [sp, #8]
+	str	r2, [fp, #-88]
+	ldr	r3, [r3, #24]
+	str	r3, [fp, #-48]
+	bne	.L1707
+	ldr	r2, [fp, #-92]
+	add	r0, r8, #256
+	ldr	r1, [fp, #-88]
 	bl	FtlVendorPartWrite
-.L1847:
-	ldr	r3, .L1902
-	ldr	r2, [sp, #68]
-	ldr	r3, [r3]
+.L1706:
+	mov	r3, sp
+	ldr	r2, [fp, #-48]
+	bic	r3, r3, #8128
+	bic	r3, r3, #63
+	ldr	r3, [r3, #24]
 	cmp	r2, r3
-	beq	.L1884
+	beq	.L1744
 	bl	__stack_chk_fail
-.L1848:
-	ldr	r4, .L1902+4
-	ldr	r2, [sp, #8]
+.L1707:
+	ldr	r4, .L1759
+	ldr	r2, [fp, #-88]
 	ldr	r3, [r4, #340]
-	cmp	r2, r3
-	cmpls	r1, r3
-	bcs	.L1886
+	cmp	r3, r2
+	cmpcs	r3, r1
+	bls	.L1746
 	add	r6, r1, r2
 	cmp	r3, r6
-	bcc	.L1886
-	ldr	r5, .L1902+8
+	bcc	.L1746
+	ldr	r5, .L1759+4
 	ldr	r0, [r5]
 	cmn	r0, #1
-	beq	.L1847
+	beq	.L1706
 	mov	r3, #2048
-	mov	r0, r10
 	str	r3, [r4, #3668]
 	movw	r3, #258
+	mov	r0, r8
 	ldrh	r7, [r4, r3]
 	mov	r1, r7
 	bl	__aeabi_uidiv
 	mov	r1, r7
-	str	r0, [sp, #4]
+	str	r0, [fp, #-84]
 	sub	r0, r6, #1
 	bl	__aeabi_uidiv
-	ldr	r2, [sp, #4]
-	str	r0, [sp, #20]
+	ldr	r2, [fp, #-84]
+	str	r0, [fp, #-108]
 	sub	r3, r0, r2
-	ldr	r2, [sp, #8]
-	add	fp, r3, #1
-	str	r3, [sp, #24]
+	ldr	r2, [fp, #-88]
+	str	r3, [fp, #-104]
+	add	r3, r3, #1
+	str	r3, [fp, #-80]
 	ldr	r3, [r4, #2580]
 	add	r3, r3, r2
+	ldr	r2, [fp, #-80]
 	str	r3, [r4, #2580]
 	ldr	r3, [r4, #2564]
-	add	r3, r3, fp
+	add	r3, r3, r2
 	str	r3, [r4, #2564]
 	ldr	r3, [r5, #8]
 	cmp	r3, #0
 	addeq	r4, r4, #24
-	beq	.L1850
+	beq	.L1709
 	ldrh	r3, [r4, #28]
 	cmp	r3, #0
 	addne	r4, r4, #24
 	addeq	r4, r4, #76
-.L1850:
-	ldr	r7, [sp, #4]
-	ldr	r5, .L1902+4
-.L1851:
-	cmp	fp, #0
-	bne	.L1879
-	ldr	r1, [sp, #24]
-	mov	r0, fp
+.L1709:
+	ldr	r6, [fp, #-84]
+	ldr	r5, .L1759
+.L1710:
+	ldr	r3, [fp, #-80]
+	cmp	r3, #0
+	bne	.L1740
+	mov	r0, r3
+	ldr	r1, [fp, #-104]
 	bl	rk_ftl_garbage_collect
 	ldrh	r3, [r5, #224]
 	cmp	r3, #5
-	movls	r4, #256
-	ldrls	r6, .L1902+12
-	bls	.L1883
-.L1882:
+	bls	.L1751
+.L1743:
 	mov	r0, #0
-	b	.L1847
-.L1879:
+	b	.L1706
+.L1740:
 	ldrb	r2, [r4, #6]	@ zero_extendqisi2
 	ldrh	r3, [r5, #232]
 	cmp	r2, r3
-	bcc	.L1852
-	movw	r2, #1041
-	ldr	r1, .L1902+16
-	ldr	r0, .L1902+20
+	bcc	.L1711
+	ldr	r1, .L1759+8
+	movw	r2, #1046
+	ldr	r0, .L1759+12
 	bl	sftl_printk
-.L1852:
-	ldrh	r2, [r4, #4]
-	cmp	r2, #0
-	bne	.L1853
-	ldr	r3, .L1902+24
-	ldr	r6, .L1902+8
-	cmp	r4, r3
-	bne	.L1854
-	ldrh	r8, [r5, #80]
-	cmp	r8, #0
-	bne	.L1855
-	add	r0, r4, #52
-	bl	allocate_new_data_superblock
-	str	r8, [r6, #8]
-.L1855:
-	ldr	r0, .L1902+24
-	bl	allocate_new_data_superblock
-	ldr	r4, .L1902+24
-	ldr	r2, [r6, #8]
-	add	r3, r4, #52
-	cmp	r2, #0
-	movne	r4, r3
-.L1856:
+.L1711:
 	ldrh	r3, [r4, #4]
 	cmp	r3, #0
-	bne	.L1853
+	bne	.L1712
+	ldr	r2, .L1759+16
+	ldr	r7, .L1759+4
+	cmp	r4, r2
+	bne	.L1713
+	ldrh	r9, [r5, #80]
+	cmp	r9, #0
+	bne	.L1714
+	add	r0, r4, #52
+	bl	allocate_new_data_superblock
+	str	r9, [r7, #8]
+.L1714:
+	ldr	r0, .L1759+16
+	bl	allocate_new_data_superblock
+	ldr	r3, [r7, #8]
+	cmp	r3, #0
+	ldrne	r4, .L1759+20
+	bne	.L1715
+.L1716:
+	ldr	r4, .L1759+16
+.L1715:
+	ldrh	r3, [r4, #4]
+	cmp	r3, #0
+	bne	.L1712
 	mov	r0, r4
 	bl	allocate_new_data_superblock
-.L1853:
-	ldrb	r2, [r4, #7]	@ zero_extendqisi2
+.L1712:
 	ldrh	r3, [r4, #4]
+	ldr	r1, [fp, #-80]
+	ldrb	r2, [r4, #7]	@ zero_extendqisi2
+	cmp	r3, r1
+	movcs	r3, r1
 	lsl	r2, r2, #2
-	cmp	r3, fp
-	movcs	r3, fp
 	cmp	r2, r3
 	movcc	r3, r2
 	ldrb	r2, [r4, #6]	@ zero_extendqisi2
-	str	r3, [sp, #36]
+	str	r3, [fp, #-120]
 	ldrh	r3, [r5, #232]
 	cmp	r2, r3
-	bcc	.L1857
-	movw	r2, #1074
-	ldr	r1, .L1902+16
-	ldr	r0, .L1902+20
+	bcc	.L1717
+	ldr	r1, .L1759+8
+	movw	r2, #1079
+	ldr	r0, .L1759+12
 	bl	sftl_printk
-.L1857:
-	mov	r3, #0
-.L1901:
-	str	r3, [sp]
-	ldr	r3, [sp]
-	ldr	r2, [sp, #36]
-	cmp	r3, r2
-	bne	.L1877
-.L1859:
+.L1717:
+	mov	r10, #0
+.L1718:
+	ldr	r3, [fp, #-120]
+	cmp	r3, r10
+	bne	.L1738
+.L1719:
 	mov	r3, r4
-	mov	r2, #0
-	ldr	r1, [sp]
 	ldr	r0, [r5, #3296]
+	mov	r1, r10
+	mov	r2, #0
 	bl	FtlProgPages
-	ldr	r3, [sp]
-	cmp	r3, fp
-	bls	.L1878
-	mov	r2, #1152
-	ldr	r1, .L1902+16
-	ldr	r0, .L1902+20
+	ldr	r3, [fp, #-80]
+	cmp	r3, r10
+	bcs	.L1739
+	ldr	r1, .L1759+8
+	movw	r2, #1157
+	ldr	r0, .L1759+12
 	bl	sftl_printk
-.L1878:
-	ldr	r3, [sp]
-	sub	fp, fp, r3
-	b	.L1851
-.L1854:
-	str	r2, [r6, #8]
-	ldrh	r2, [r5, #28]
-	cmp	r2, #0
-	movne	r4, r3
-	bne	.L1853
+.L1739:
+	ldr	r3, [fp, #-80]
+	sub	r3, r3, r10
+	str	r3, [fp, #-80]
+	b	.L1710
+.L1713:
+	str	r3, [r7, #8]
+	ldrh	r3, [r5, #28]
+	cmp	r3, #0
+	bne	.L1716
 	mov	r0, r4
 	bl	allocate_new_data_superblock
-	b	.L1856
-.L1877:
+	b	.L1715
+.L1738:
 	ldrh	r3, [r4, #4]
 	cmp	r3, #0
-	beq	.L1859
+	beq	.L1719
+	sub	r1, fp, #72
 	mov	r2, #0
-	add	r1, sp, #44
-	mov	r0, r7
-	mov	r8, #20
+	mov	r0, r6
 	bl	log2phys
 	mov	r0, r4
 	bl	get_new_active_ppa
-	ldr	r2, .L1902+28
-	ldr	r1, [sp]
-	ldr	r3, [sp]
-	ldrh	r2, [r2]
-	mul	r8, r8, r3
+	mov	r3, #20
+	mul	r3, r3, r10
+	str	r3, [fp, #-96]
+	ldr	r2, [fp, #-96]
 	ldr	r3, [r5, #3296]
-	mul	r1, r2, r1
-	add	r3, r3, r8
+	add	r3, r3, r2
+	ldr	r2, .L1759+24
 	str	r0, [r3, #4]
+	ldrh	r2, [r2]
+	str	r6, [r3, #16]
+	mul	r1, r10, r2
 	bic	r1, r1, #3
-	str	r7, [r3, #16]
-	str	r1, [sp, #28]
-	ldr	r0, [sp, #28]
+	str	r1, [fp, #-112]
+	ldr	r0, [fp, #-112]
 	ldr	r1, [r5, #3336]
+	str	r1, [fp, #-116]
 	add	r9, r1, r0
-	str	r1, [sp, #32]
-	str	r9, [r3, #12]
 	mov	r1, #0
+	str	r9, [r3, #12]
 	mov	r0, r9
 	bl	ftl_memset
-	ldr	r3, [sp, #4]
-	ldr	r2, [sp, #20]
-	cmp	r7, r2
-	cmpne	r7, r3
-	bne	.L1860
-	cmp	r7, r3
-	bne	.L1861
-	ldr	r3, .L1902+32
-	mov	r0, r10
-	ldrh	r6, [r3]
-	mov	r1, r6
-	bl	__aeabi_uidivmod
-	ldr	r3, [sp, #8]
-	sub	r6, r6, r1
-	str	r1, [sp, #16]
-	cmp	r6, r3
-	movcs	r6, r3
-.L1862:
-	ldr	r3, .L1902+32
+	ldr	r3, [fp, #-84]
+	ldr	r2, [fp, #-108]
+	cmp	r6, r2
+	cmpne	r6, r3
+	ldr	r3, .L1759+28
+	bne	.L1720
+	ldr	r2, [fp, #-84]
 	ldrh	r3, [r3]
-	cmp	r6, r3
-	ldr	r3, [sp, #4]
-	bne	.L1863
-	cmp	r7, r3
-	ldr	r3, [r5, #3296]
-	add	r8, r3, r8
-	ldreq	r3, [sp, #12]
-	beq	.L1898
-	mul	r6, r6, r7
-	ldr	r3, [sp, #12]
-	sub	r6, r6, r10
-	add	r6, r3, r6, lsl #9
-	str	r6, [r8, #8]
-.L1865:
+	cmp	r6, r2
+	bne	.L1721
+	mov	r1, r3
+	mov	r0, r8
+	str	r3, [fp, #-124]
+	bl	__aeabi_uidivmod
+	ldr	r3, [fp, #-124]
+	ldr	r2, [fp, #-88]
+	sub	r7, r3, r1
+	str	r1, [fp, #-100]
+	cmp	r7, r2
+	movcs	r7, r2
+.L1722:
+	ldr	r0, [r5, #3296]
+	cmp	r3, r7
+	ldr	r2, [fp, #-96]
+	add	r0, r0, r2
+	bne	.L1723
+	ldr	r2, [fp, #-84]
+	cmp	r6, r2
+	mulne	r3, r6, r3
+	ldrne	r2, [fp, #-92]
+	ldreq	r3, [fp, #-92]
+	subne	r3, r3, r8
+	addne	r3, r2, r3, lsl #9
+	str	r3, [r0, #8]
+.L1725:
 	ldrb	r2, [r4, #6]	@ zero_extendqisi2
 	ldrh	r3, [r5, #232]
 	cmp	r2, r3
-	bcc	.L1874
-	movw	r2, #1143
-	ldr	r1, .L1902+16
-	ldr	r0, .L1902+20
+	bcc	.L1735
+	ldr	r1, .L1759+8
+	movw	r2, #1148
+	ldr	r0, .L1759+12
 	bl	sftl_printk
-.L1874:
-	ldr	r3, .L1902+36
-	ldr	r2, [sp, #32]
-	ldr	r1, [sp, #28]
+.L1735:
+	ldr	r2, [fp, #-116]
+	add	r10, r10, #1
+	ldr	r1, [fp, #-112]
+	ldr	r3, .L1759+32
 	strh	r3, [r2, r1]	@ movhi
+	str	r6, [r9, #8]
+	add	r6, r6, #1
 	ldr	r3, [r5, #2592]
-	str	r7, [r9, #8]
-	add	r7, r7, #1
 	str	r3, [r9, #4]
-	add	r3, r3, #1
-	cmn	r3, #1
+	cmn	r3, #2
+	add	r2, r3, #1
+	strne	r2, [r5, #2592]
 	moveq	r3, #0
-	str	r3, [r5, #2592]
-	ldr	r3, [sp, #44]
+	streq	r3, [r5, #2592]
+	ldr	r3, [fp, #-72]
 	str	r3, [r9, #12]
 	ldrh	r3, [r4]
 	strh	r3, [r9, #2]	@ movhi
-	ldr	r3, [sp]
-	add	r3, r3, #1
-	b	.L1901
-.L1861:
-	ldr	r3, [sp, #8]
-	add	r6, r10, r3
-	ldr	r3, .L1902+32
-	ldrh	r2, [r3]
-	mov	r3, #0
-	str	r3, [sp, #16]
-	smulbb	r2, r2, r7
-	sub	r6, r6, r2
-	uxth	r6, r6
-	b	.L1862
-.L1863:
-	cmp	r7, r3
-	ldr	r3, [r5, #3296]
-	ldreq	r2, [r5, #3312]
-	ldrne	r2, [r5, #3316]
-	add	r3, r3, r8
-	str	r2, [r3, #8]
-	ldr	r3, [sp, #44]
-	cmn	r3, #1
-	beq	.L1868
-	str	r3, [sp, #52]
-	mov	r1, #1
-	ldr	r3, [r5, #3296]
-	add	r0, sp, #48
-	str	r7, [sp, #64]
-	add	r3, r3, r8
-	ldr	r2, [r3, #8]
-	ldr	r3, [r3, #12]
-	str	r2, [sp, #56]
+	b	.L1718
+.L1721:
+	ldr	r2, [fp, #-88]
+	add	r7, r8, r2
+	smulbb	r2, r6, r3
+	sub	r7, r7, r2
 	mov	r2, #0
-	str	r3, [sp, #60]
-	bl	FlashReadPages
-	ldr	r3, [sp, #48]
+	str	r2, [fp, #-100]
+	uxth	r7, r7
+	b	.L1722
+.L1723:
+	ldr	r3, [fp, #-84]
+	cmp	r6, r3
+	ldreq	r3, [r5, #3312]
+	ldrne	r3, [r5, #3316]
+	str	r3, [r0, #8]
+	ldr	r3, [fp, #-72]
 	cmn	r3, #1
-	bne	.L1869
+	beq	.L1728
+	str	r6, [fp, #-52]
+	mov	r2, #0
+	str	r3, [fp, #-64]
+	mov	r1, #1
+	ldr	r3, [r0, #8]
+	str	r3, [fp, #-60]
+	ldr	r3, [r0, #12]
+	sub	r0, fp, #68
+	str	r3, [fp, #-56]
+	bl	FlashReadPages
+	ldr	r3, [fp, #-68]
+	cmn	r3, #1
+	bne	.L1729
 	ldr	r2, [r5, #2712]
-	ldr	r0, .L1902+40
+	ldr	r0, .L1759+36
 	add	r2, r2, #1
 	str	r2, [r5, #2712]
-	mov	r2, r7
+	mov	r2, r6
 	ldr	r1, [r9, #8]
 	bl	sftl_printk
-.L1872:
-	ldr	r3, [sp, #4]
-	lsl	r2, r6, #9
-	cmp	r7, r3
-	bne	.L1873
+.L1733:
+	ldr	r3, [fp, #-84]
+	lsl	r2, r7, #9
+	cmp	r6, r3
+	bne	.L1734
+	ldr	r1, [fp, #-96]
 	ldr	r3, [r5, #3296]
-	ldr	r1, [sp, #12]
-	add	r8, r3, r8
-	ldr	r3, [sp, #16]
-	ldr	r0, [r8, #8]
+	add	r3, r3, r1
+	ldr	r1, [fp, #-92]
+	ldr	r0, [r3, #8]
+	ldr	r3, [fp, #-100]
 	add	r0, r0, r3, lsl #9
-.L1899:
+.L1758:
 	bl	ftl_memcpy
-	b	.L1865
-.L1869:
+	b	.L1725
+.L1729:
 	ldr	r3, [r9, #8]
-	cmp	r7, r3
-	beq	.L1871
+	cmp	r3, r6
+	beq	.L1733
 	ldr	r3, [r5, #2712]
-	mov	r2, r7
-	ldr	r0, .L1902+44
+	mov	r2, r6
+	ldr	r0, .L1759+40
 	add	r3, r3, #1
 	str	r3, [r5, #2712]
 	ldr	r1, [r9, #8]
 	bl	sftl_printk
-.L1871:
 	ldr	r3, [r9, #8]
-	cmp	r7, r3
-	beq	.L1872
-	movw	r2, #1128
-	ldr	r1, .L1902+16
-	ldr	r0, .L1902+20
+	cmp	r3, r6
+	beq	.L1733
+	ldr	r1, .L1759+8
+	movw	r2, #1133
+	ldr	r0, .L1759+12
 	bl	sftl_printk
-	b	.L1872
-.L1868:
-	ldr	r3, [r5, #3296]
+	b	.L1733
+.L1728:
+	ldr	r3, .L1759+44
 	mov	r1, #0
-	ldr	r2, .L1902+48
-	add	r3, r3, r8
-	ldrh	r2, [r2]
-	ldr	r0, [r3, #8]
+	ldr	r0, [r0, #8]
+	ldrh	r2, [r3]
 	bl	ftl_memset
-	b	.L1872
-.L1873:
-	ldr	r3, .L1902+32
+	b	.L1733
+.L1734:
+	ldr	r3, .L1759+28
+	ldr	r0, [fp, #-96]
 	ldrh	r1, [r3]
 	ldr	r3, [r5, #3296]
-	mul	r1, r7, r1
-	add	r8, r3, r8
-	ldr	r3, [sp, #12]
-	ldr	r0, [r8, #8]
-	sub	r1, r1, r10
-	add	r1, r3, r1, lsl #9
-	b	.L1899
-.L1860:
-	ldr	r3, [r5, #3296]
-	ldr	r2, [sp, #12]
-	add	r8, r3, r8
-	ldr	r3, .L1902+32
+	add	r3, r3, r0
+	ldr	r0, [fp, #-92]
+	mul	r1, r6, r1
+	sub	r1, r1, r8
+	add	r1, r0, r1, lsl #9
+	ldr	r0, [r3, #8]
+	b	.L1758
+.L1720:
 	ldrh	r3, [r3]
-	mul	r3, r7, r3
-	sub	r3, r3, r10
-	add	r3, r2, r3, lsl #9
-.L1898:
-	str	r3, [r8, #8]
-	b	.L1865
-.L1883:
+	ldr	r1, [fp, #-96]
+	ldr	r2, [r5, #3296]
+	mul	r3, r6, r3
+	add	r2, r2, r1
+	ldr	r1, [fp, #-92]
+	sub	r3, r3, r8
+	add	r3, r1, r3, lsl #9
+	str	r3, [r2, #8]
+	b	.L1725
+.L1751:
+	ldr	r6, .L1759+48
+	mov	r4, #256
+.L1741:
+	ldrh	r2, [r5, #222]
 	ldrh	r3, [r5, #172]
+	and	r3, r3, r2
 	movw	r2, #65535
 	cmp	r3, r2
-	bne	.L1881
-	ldrh	r2, [r5, #222]
-	cmp	r2, r3
-	bne	.L1881
+	bne	.L1742
 	mov	r0, #0
 	bl	List_get_gc_head_node
 	uxth	r0, r0
 	bl	FtlGcRefreshBlock
-.L1881:
-	ldr	r2, .L1902+52
+.L1742:
+	ldr	r2, .L1759+52
 	mov	r1, #1
-	mov	r3, #128
 	mov	r0, r1
+	mov	r3, #128
 	strh	r3, [r6]	@ movhi
 	strh	r3, [r2]	@ movhi
 	bl	rk_ftl_garbage_collect
@@ -12519,35 +12982,33 @@
 	bl	rk_ftl_garbage_collect
 	ldrh	r3, [r5, #224]
 	cmp	r3, #2
-	bhi	.L1882
+	bhi	.L1743
 	subs	r4, r4, #1
-	bne	.L1883
-	b	.L1882
-.L1886:
+	bne	.L1741
+	b	.L1743
+.L1746:
 	mvn	r0, #0
-	b	.L1847
-.L1884:
-	add	sp, sp, #76
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1903:
+	b	.L1706
+.L1744:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1760:
 	.align	2
-.L1902:
-	.word	__stack_chk_guard
+.L1759:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR0+3154
 	.word	.LANCHOR1+591
 	.word	.LC8
 	.word	.LANCHOR0+24
+	.word	.LANCHOR0+76
 	.word	.LANCHOR0+312
 	.word	.LANCHOR0+258
 	.word	-3947
 	.word	.LC125
 	.word	.LC126
 	.word	.LANCHOR0+310
+	.word	.LANCHOR0+3154
 	.word	.LANCHOR0+3152
-	.fnend
 	.size	FtlWrite, .-FtlWrite
 	.align	2
 	.global	sftl_gc
@@ -12556,15 +13017,23 @@
 	.fpu softvfp
 	.type	sftl_gc, %function
 sftl_gc:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	mov	r1, #1
 	mov	r0, r1
-	b	rk_ftl_garbage_collect
-	.fnend
+	bl	rk_ftl_garbage_collect
+	ldmfd	sp, {fp, sp, pc}
 	.size	sftl_gc, .-sftl_gc
+	.section	.rodata.str1.1
+.LC127:
+	.ascii	"%s hash error this.id =%x page =%x pre_id =%x hash "
+	.ascii	"=%x hash_r =%x\012\000"
+	.text
 	.align	2
 	.global	FtlLoadSysInfo
 	.syntax unified
@@ -12572,123 +13041,125 @@
 	.fpu softvfp
 	.type	FtlLoadSysInfo, %function
 FtlLoadSysInfo:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	@ args = 0, pretend = 0, frame = 8
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	sub	sp, sp, #28
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1790
 	mov	r1, #0
-	ldr	r4, .L1936
-	.pad #20
-	sub	sp, sp, #20
-	ldr	r3, [r4, #3300]
 	add	r6, r4, #2624
 	ldrh	r2, [r4, #240]
-	ldr	r0, [r4, #72]
+	ldr	r3, [r4, #3300]
 	str	r3, [r4, #3460]
-	ldr	r3, [r4, #3332]
+	ldr	r0, [r4, #72]
 	lsl	r2, r2, #1
+	ldr	r3, [r4, #3332]
 	str	r3, [r4, #3464]
 	bl	ftl_memset
 	ldrh	r0, [r6]
 	movw	r3, #65535
 	cmp	r0, r3
-	bne	.L1906
-.L1917:
+	bne	.L1763
+.L1775:
 	mvn	r0, #0
-.L1905:
-	add	sp, sp, #20
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1906:
+.L1762:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1763:
 	mov	r1, #1
-	ldr	r8, .L1936+4
+	ldr	r9, .L1790+4
 	bl	FtlGetLastWrittenPage
-	ldr	r9, .L1936+8
-	sxth	r5, r0
+	ldr	r10, .L1790+8
 	ldrsh	r7, [r6]
-	add	r0, r0, #1
-	ldr	r10, .L1936+12
-	strh	r0, [r6, #2]	@ movhi
-.L1908:
+	sxth	r5, r0
+	add	r3, r5, #1
+	strh	r3, [r6, #2]	@ movhi
+.L1765:
 	cmp	r5, #0
-	bge	.L1914
+	bge	.L1772
+	ldr	r1, .L1790+12
 	movw	r2, #1474
-	ldr	r1, .L1936+16
-	ldr	r0, .L1936+20
+	ldr	r0, .L1790+16
 	bl	sftl_printk
-	b	.L1913
-.L1914:
+	b	.L1771
+.L1772:
 	orr	r3, r5, r7, lsl #10
 	mov	r2, #1
-	mov	r1, r2
 	str	r3, [r4, #3456]
-	mov	r0, r8
+	mov	r1, r2
 	ldr	r3, [r4, #3300]
+	mov	r0, r9
 	str	r3, [r4, #3460]
 	bl	FlashReadPages
 	ldr	r3, [r4, #3464]
-	ldr	fp, [r3, #12]
-	cmp	fp, #0
-	beq	.L1909
-	ldr	r3, [r4, #3452]
-	cmn	r3, #1
-	beq	.L1909
-	ldrh	r1, [r10]
+	ldr	r3, [r3, #12]
+	str	r3, [fp, #-48]
+	cmp	r3, #0
+	beq	.L1766
+	ldr	r2, [r4, #3452]
+	cmn	r2, #1
+	beq	.L1767
+	ldr	r8, .L1790+20
 	ldr	r0, [r4, #3460]
+	ldrh	r1, [r8]
 	bl	js_hash
-	cmp	fp, r0
-	beq	.L1909
+	ldr	r3, [fp, #-48]
+	cmp	r3, r0
+	beq	.L1768
 	str	r0, [sp, #8]
 	mov	r2, r7
-	str	fp, [sp, #4]
+	str	r3, [sp, #4]
+	ldr	r1, .L1790+12
 	ldrh	r3, [r6, #4]
-	ldr	r1, .L1936+16
-	ldr	r0, .L1936+24
 	str	r3, [sp]
 	mov	r3, r5
+	ldr	r0, .L1790+24
 	bl	sftl_printk
 	cmp	r5, #0
-	bne	.L1910
+	bne	.L1769
 	ldrh	r3, [r6, #4]
 	cmp	r7, r3
-	beq	.L1910
-	sxth	r7, r3
-	ldr	r3, .L1936+28
-	ldrh	r5, [r3]
-.L1912:
-	sub	r5, r5, #1
-	sxth	r5, r5
-	b	.L1908
-.L1910:
+	sxthne	r7, r3
+	ldrhne	r5, [r8, #-6]
+	bne	.L1767
+.L1769:
 	mvn	r3, #0
 	str	r3, [r4, #3452]
-.L1909:
+.L1767:
+	sub	r5, r5, #1
+	sxth	r5, r5
+	b	.L1765
+.L1766:
 	ldr	r3, [r4, #3452]
 	cmn	r3, #1
-	beq	.L1912
+	beq	.L1767
+.L1768:
 	ldr	r3, [r4, #3300]
 	ldr	r3, [r3]
-	cmp	r3, r9
-	bne	.L1912
+	cmp	r3, r10
+	bne	.L1767
 	ldr	r3, [r4, #3332]
 	ldrh	r2, [r3]
 	movw	r3, #61604
 	cmp	r2, r3
-	bne	.L1912
-.L1913:
+	bne	.L1767
+.L1771:
 	movw	r2, #310
 	ldrh	r3, [r4, #240]
 	ldrh	r2, [r4, r2]
 	add	r3, r3, #24
 	cmp	r2, r3, lsl #1
-	bcs	.L1916
+	bcs	.L1774
+	ldr	r1, .L1790+12
 	movw	r2, #1476
-	ldr	r1, .L1936+16
-	ldr	r0, .L1936+20
+	ldr	r0, .L1790+16
 	bl	sftl_printk
-.L1916:
-	ldr	r5, .L1936+32
+.L1774:
+	ldr	r5, .L1790+28
 	mov	r2, #48
 	ldr	r1, [r4, #3460]
 	mov	r0, r5
@@ -12700,84 +13171,83 @@
 	add	r1, r1, #48
 	bl	ftl_memcpy
 	ldr	r2, [r4, #2468]
-	ldr	r3, .L1936+8
+	ldr	r3, .L1790+8
 	cmp	r2, r3
-	bne	.L1917
+	bne	.L1775
 	ldrb	r2, [r4, #2478]	@ zero_extendqisi2
 	ldrh	r3, [r4, #254]
 	ldrh	r7, [r5, #8]
 	cmp	r2, r3
 	strh	r7, [r6, #6]	@ movhi
-	bne	.L1917
+	bne	.L1775
 	movw	r3, #302
 	movw	r2, #258
+	ldr	r6, [r4, #244]
 	ldrh	r3, [r4, r3]
 	ldrh	r2, [r4, r2]
-	ldr	r6, [r4, #244]
+	ldrh	r1, [r4, #232]
 	str	r7, [r4, #3672]
 	mul	r3, r7, r3
-	ldrh	r1, [r4, #232]
 	str	r3, [r4, #2552]
 	mul	r3, r3, r2
 	str	r3, [r4, #340]
-	ldr	r3, .L1936+36
+	ldr	r3, .L1790+32
 	ldrh	r0, [r3, #6]
+	add	r0, r0, r7
 	sub	r0, r6, r0
-	sub	r0, r0, r7
 	bl	__aeabi_uidiv
-	cmp	r7, r6
 	movw	r3, #2620
+	cmp	r7, r6
 	strh	r0, [r4, r3]	@ movhi
-	bls	.L1918
+	bls	.L1776
+	ldr	r1, .L1790+12
 	movw	r2, #1498
-	ldr	r1, .L1936+16
-	ldr	r0, .L1936+20
+	ldr	r0, .L1790+16
 	bl	sftl_printk
-.L1918:
+.L1776:
 	ldrh	r3, [r5, #16]
 	ldrh	r1, [r5, #14]
+	strh	r1, [r4, #24]	@ movhi
 	lsr	r2, r3, #6
-	and	r3, r3, #63
-	strb	r3, [r4, #30]
 	strh	r2, [r4, #26]	@ movhi
 	ldrh	r2, [r5, #18]
-	ldrb	r3, [r4, #2479]	@ zero_extendqisi2
-	strh	r1, [r4, #24]	@ movhi
+	and	r3, r3, #63
 	strh	r2, [r4, #76]	@ movhi
 	ldrh	r2, [r5, #20]
-	strb	r3, [r4, #32]
-	mvn	r3, #0
-	strh	r3, [r4, #172]	@ movhi
-	mov	r3, #0
-	strh	r3, [r4, #174]	@ movhi
+	strb	r3, [r4, #30]
+	ldrb	r3, [r4, #2479]	@ zero_extendqisi2
 	lsr	r0, r2, #6
 	and	r2, r2, #63
 	strb	r2, [r4, #82]
 	ldrb	r2, [r4, #2480]	@ zero_extendqisi2
-	strh	r0, [r4, #78]	@ movhi
-	strb	r3, [r4, #178]
 	strb	r2, [r4, #84]
 	ldrh	r2, [r5, #22]
-	strb	r3, [r4, #180]
-	str	r3, [r4, #2576]
 	strh	r2, [r4, #124]	@ movhi
 	ldrh	r2, [r5, #24]
-	str	r3, [r4, #2564]
-	str	r3, [r4, #2556]
-	str	r3, [r4, #2572]
+	strh	r0, [r4, #78]	@ movhi
+	strb	r3, [r4, #32]
+	movw	r3, #65535
 	lsr	r0, r2, #6
 	and	r2, r2, #63
 	strb	r2, [r4, #130]
 	ldrb	r2, [r4, #2481]	@ zero_extendqisi2
-	str	r3, [r4, #2600]
-	strh	r0, [r4, #126]	@ movhi
 	strb	r2, [r4, #132]
 	ldr	r2, [r4, #2500]
+	str	r3, [r4, #172]
+	mov	r3, #0
 	str	r2, [r4, #2596]
+	strb	r3, [r4, #178]
+	strb	r3, [r4, #180]
+	str	r3, [r4, #2576]
+	str	r3, [r4, #2564]
+	str	r3, [r4, #2556]
+	str	r3, [r4, #2572]
+	str	r3, [r4, #2600]
 	str	r3, [r4, #2612]
-	ldr	r2, [r4, #2588]
+	strh	r0, [r4, #126]	@ movhi
 	str	r3, [r4, #2568]
 	ldr	r3, [r4, #2508]
+	ldr	r2, [r4, #2588]
 	cmp	r3, r2
 	ldr	r2, [r4, #2592]
 	strhi	r3, [r4, #2588]
@@ -12786,52 +13256,58 @@
 	strhi	r3, [r4, #2592]
 	movw	r3, #65535
 	cmp	r1, r3
-	beq	.L1921
-	ldr	r0, .L1936+40
+	beq	.L1779
+	ldr	r0, .L1790+36
 	bl	make_superblock
-.L1921:
+.L1779:
 	ldrh	r2, [r4, #76]
 	movw	r3, #65535
 	cmp	r2, r3
-	beq	.L1922
-	ldr	r0, .L1936+44
+	beq	.L1780
+	ldr	r0, .L1790+40
 	bl	make_superblock
-.L1922:
+.L1780:
 	ldrh	r2, [r4, #124]
 	movw	r3, #65535
 	cmp	r2, r3
-	beq	.L1923
-	ldr	r0, .L1936+48
+	beq	.L1781
+	ldr	r0, .L1790+44
 	bl	make_superblock
-.L1923:
+.L1781:
 	ldrh	r2, [r4, #172]
 	movw	r3, #65535
 	cmp	r2, r3
-	beq	.L1924
-	ldr	r0, .L1936+52
+	beq	.L1782
+	ldr	r0, .L1790+48
 	bl	make_superblock
-.L1924:
+.L1782:
 	mov	r0, #0
-	b	.L1905
-.L1937:
+	b	.L1762
+.L1791:
 	.align	2
-.L1936:
+.L1790:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+3452
 	.word	1179929683
-	.word	.LANCHOR0+310
 	.word	.LANCHOR1+600
 	.word	.LC8
+	.word	.LANCHOR0+310
 	.word	.LC127
-	.word	.LANCHOR0+304
 	.word	.LANCHOR0+2468
 	.word	.LANCHOR0+352
 	.word	.LANCHOR0+24
 	.word	.LANCHOR0+76
 	.word	.LANCHOR0+124
 	.word	.LANCHOR0+172
-	.fnend
 	.size	FtlLoadSysInfo, .-FtlLoadSysInfo
+	.section	.rodata.str1.1
+.LC128:
+	.ascii	"%s last blk_id =%x page =%x hash error hash =%x has"
+	.ascii	"h_r =%x\012\000"
+.LC129:
+	.ascii	"%s scan blk_id =%x page =%x hash error hash =%x has"
+	.ascii	"h_r =%x\012\000"
+	.text
 	.align	2
 	.global	FtlMapTblRecovery
 	.syntax unified
@@ -12839,259 +13315,265 @@
 	.fpu softvfp
 	.type	FtlMapTblRecovery, %function
 FtlMapTblRecovery:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 32
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #44
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #44
-	ldr	r3, [r0, #24]
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, [r0, #12]
 	mov	r4, r0
+	str	r3, [fp, #-56]
 	mov	r1, #0
-	mov	r8, #0
-	ldr	r6, .L1980
-	str	r3, [sp, #12]
 	ldr	r3, [r0, #16]
-	ldr	r9, [r0, #12]
-	add	fp, r6, #304
-	str	r3, [sp, #24]
+	mov	r6, #0
+	str	r3, [fp, #-64]
 	ldrh	r3, [r0, #6]
-	str	r3, [sp, #16]
+	str	r3, [fp, #-48]
 	ldrh	r3, [r0, #8]
-	ldr	r0, [sp, #12]
-	str	r3, [sp, #20]
-	ldr	r3, [sp, #16]
+	ldr	r5, .L1831
+	str	r3, [fp, #-60]
+	ldr	r3, [fp, #-48]
+	ldr	r9, [r0, #24]
 	lsl	r2, r3, #2
+	mov	r0, r9
 	bl	ftl_memset
-	ldr	r3, [r6, #3300]
-	ldr	r5, [r6, #3332]
-	str	r8, [r4, #32]
-	str	r3, [r6, #3460]
+	ldr	r3, [r5, #3300]
+	ldr	r8, [r5, #3332]
+	str	r3, [r5, #3460]
 	mvn	r3, #0
-	str	r5, [r6, #3464]
-	strh	r3, [r4]	@ movhi
-	strh	r3, [r4, #2]	@ movhi
+	str	r8, [r5, #3464]
+	str	r6, [r4, #32]
+	str	r3, [r4]
 	mov	r3, #1
-	str	r8, [r4, #28]
+	str	r6, [r4, #28]
 	str	r3, [r4, #36]
-.L1939:
-	ldr	r3, [sp, #20]
-	sxth	r7, r8
+.L1793:
+	ldr	r3, [fp, #-60]
+	sxth	r7, r6
+	uxth	r10, r6
 	cmp	r7, r3
-	bge	.L1958
-	ldr	r3, [sp, #20]
-	sub	r3, r3, #1
-	cmp	r7, r3
+	bge	.L1813
+	ldr	r2, [fp, #-56]
 	lsl	r3, r7, #1
-	bne	.L1940
-	ldrh	r0, [r9, r3]
+	add	r2, r2, r7, lsl #1
+	str	r2, [fp, #-52]
+	ldr	r2, [fp, #-60]
+	sub	r2, r2, #1
+	cmp	r2, r7
+	bne	.L1794
+	ldr	r3, [fp, #-52]
 	mov	r1, #1
-	add	r10, r9, r3
-	ldr	r6, .L1980
+	ldr	r5, .L1831
+	ldrh	r0, [r3]
 	bl	FtlGetLastWrittenPage
 	sxth	r3, r0
-	ldr	fp, .L1980+4
-	add	r0, r0, #1
-	strh	r8, [r4]	@ movhi
-	str	r3, [sp, #20]
-	mov	r8, #0
-	ldr	r3, [sp, #24]
-	strh	r0, [r4, #2]	@ movhi
+	str	r3, [fp, #-56]
+	add	r3, r3, #1
+	strh	r3, [r4, #2]	@ movhi
+	ldr	r3, [fp, #-64]
+	strh	r10, [r4]	@ movhi
+	mov	r10, #0
 	ldr	r3, [r3, r7, lsl #2]
 	str	r3, [r4, #28]
-.L1941:
-	ldr	r3, [sp, #20]
-	sxth	r9, r8
+.L1795:
+	ldr	r3, [fp, #-56]
+	sxth	r6, r10
 	add	r2, r3, #1
-	cmp	r9, r2
-	blt	.L1944
-.L1958:
+	cmp	r6, r2
+	blt	.L1799
+.L1813:
 	mov	r0, r4
 	bl	ftl_free_no_use_map_blk
-	ldr	r3, .L1980+8
+	ldr	r3, .L1831+4
 	ldrh	r2, [r4, #2]
 	ldrh	r3, [r3]
 	cmp	r2, r3
-	bne	.L1946
+	bne	.L1801
 	mov	r0, r4
 	bl	ftl_map_blk_alloc_new_blk
-.L1946:
+.L1801:
 	mov	r0, r4
 	bl	ftl_map_blk_gc
 	mov	r0, r4
 	bl	ftl_map_blk_gc
 	mov	r0, #0
-	add	sp, sp, #44
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1944:
-	ldrh	r2, [r10]
-	mov	r0, fp
-	orr	r2, r9, r2, lsl #10
-	str	r2, [r6, #3456]
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1799:
+	ldr	r3, [fp, #-52]
+	ldr	r0, .L1831+8
+	ldrh	r2, [r3]
+	orr	r2, r6, r2, lsl #10
+	str	r2, [r5, #3456]
 	mov	r2, #1
 	mov	r1, r2
 	bl	FlashReadPages
-	ldr	r2, [r6, #3464]
+	ldr	r2, [r5, #3464]
 	ldr	r2, [r2, #12]
+	str	r2, [fp, #-60]
 	cmp	r2, #0
-	str	r2, [sp, #24]
-	beq	.L1942
-	ldr	r1, [r6, #3452]
+	beq	.L1796
+	ldr	r1, [r5, #3452]
 	cmn	r1, #1
-	beq	.L1942
-	ldr	r1, .L1980+12
-	ldr	r0, [r6, #3460]
+	beq	.L1814
+	ldr	r1, .L1831+12
+	ldr	r0, [r5, #3460]
 	ldrh	r1, [r1]
 	bl	js_hash
-	ldr	r2, [sp, #24]
+	ldr	r2, [fp, #-60]
 	cmp	r2, r0
-	beq	.L1942
+	beq	.L1798
+	mov	r3, r6
 	str	r0, [sp, #4]
-	mov	r3, r9
 	str	r2, [sp]
 	mov	r2, r7
-	ldr	r1, .L1980+16
-	ldr	r0, .L1980+20
+	ldr	r1, .L1831+16
+	ldr	r0, .L1831+20
 	bl	sftl_printk
 	mvn	r3, #0
-	str	r3, [r6, #3452]
-.L1942:
-	ldr	r3, [r6, #3452]
+	str	r3, [r5, #3452]
+.L1814:
+	add	r10, r10, #1
+	b	.L1795
+.L1796:
+	ldr	r3, [r5, #3452]
 	cmn	r3, #1
-	beq	.L1943
-	ldrh	r3, [r5, #8]
-	ldr	r2, [sp, #16]
-	cmp	r2, r3
-	bls	.L1943
-	ldrh	r1, [r5]
+	beq	.L1814
+.L1798:
+	ldrh	r3, [r8, #8]
+	ldr	r2, [fp, #-48]
+	cmp	r3, r2
+	bcs	.L1814
 	ldrh	r2, [r4, #4]
+	ldrh	r1, [r8]
 	cmp	r1, r2
-	ldreq	r2, [r6, #3456]
-	ldreq	r1, [sp, #12]
-	streq	r2, [r1, r3, lsl #2]
-.L1943:
-	add	r8, r8, #1
-	b	.L1941
-.L1940:
-	ldr	r2, [r6, #3300]
-	ldr	r0, .L1980+4
-	str	r2, [r6, #3460]
-	add	r2, r9, r3
-	str	r2, [sp, #28]
-	ldrh	r2, [r9, r3]
-	ldrh	r3, [fp]
+	ldreq	r2, [r5, #3456]
+	streq	r2, [r9, r3, lsl #2]
+	b	.L1814
+.L1794:
+	ldr	r2, [r5, #3300]
+	str	r2, [r5, #3460]
+	ldr	r2, [fp, #-56]
+	ldr	r0, .L1831+8
+	ldrh	r2, [r2, r3]
+	ldr	r3, .L1831+4
+	ldrh	r3, [r3]
 	sub	r3, r3, #1
 	orr	r3, r3, r2, lsl #10
 	mov	r2, #1
 	mov	r1, r2
-	str	r3, [r6, #3456]
+	str	r3, [r5, #3456]
 	bl	FlashReadPages
-	ldr	r3, [r6, #3452]
+	ldr	r3, [r5, #3452]
 	cmn	r3, #1
-	beq	.L1960
-	ldrh	r2, [r5]
+	beq	.L1817
+	ldrh	r2, [r8]
 	ldrh	r3, [r4, #4]
 	cmp	r2, r3
-	bne	.L1960
-	ldrh	r2, [r5, #8]
+	bne	.L1817
+	ldrh	r2, [r8, #8]
 	movw	r3, #64245
 	cmp	r2, r3
-	beq	.L1948
-.L1960:
+	beq	.L1818
+.L1817:
 	mov	r10, #0
-.L1949:
-	ldrh	r2, [fp]
-	sxth	r3, r10
-	cmp	r3, r2
-	bge	.L1956
-	ldr	r2, [sp, #28]
-	ldr	r0, .L1980+4
-	str	r3, [sp, #36]
+	b	.L1809
+.L1805:
+	ldr	r2, [r5, #3300]
+	lsl	lr, ip, #3
+	ldr	r7, [fp, #-48]
+	add	r1, r1, #1
+	ldr	r3, [r2, ip, lsl #3]
+	uxth	ip, r3
+	cmp	r7, ip
+	addhi	r2, r2, lr
+	movhi	r3, ip
+	ldrhi	r2, [r2, #4]
+	strhi	r2, [r9, r3, lsl #2]
+.L1803:
+	ldrh	r3, [r0]
+	sxth	ip, r1
+	sub	r3, r3, #1
+	cmp	ip, r3
+	blt	.L1805
+.L1811:
+	add	r6, r6, #1
+	b	.L1793
+.L1818:
+	ldr	r0, .L1831+4
+	mov	r1, #0
+	b	.L1803
+.L1810:
+	ldr	r2, [fp, #-52]
+	ldr	r0, .L1831+8
+	str	r3, [fp, #-72]
 	ldrh	r2, [r2]
 	orr	r2, r3, r2, lsl #10
-	str	r2, [r6, #3456]
+	str	r2, [r5, #3456]
 	mov	r2, #1
 	mov	r1, r2
 	bl	FlashReadPages
-	ldr	r2, [r6, #3464]
+	ldr	r2, [r5, #3464]
 	ldr	r2, [r2, #12]
+	str	r2, [fp, #-68]
 	cmp	r2, #0
-	str	r2, [sp, #32]
-	beq	.L1953
-	ldr	r1, [r6, #3452]
+	beq	.L1806
+	ldr	r1, [r5, #3452]
 	cmn	r1, #1
-	beq	.L1953
-	ldr	r1, .L1980+12
-	ldr	r0, [r6, #3460]
+	beq	.L1815
+	ldr	r1, .L1831+12
+	ldr	r0, [r5, #3460]
 	ldrh	r1, [r1]
 	bl	js_hash
-	ldr	r2, [sp, #32]
+	ldr	r2, [fp, #-68]
 	cmp	r2, r0
-	beq	.L1953
+	beq	.L1808
+	ldr	r3, [fp, #-72]
 	str	r0, [sp, #4]
 	str	r2, [sp]
 	mov	r2, r7
-	ldr	r3, [sp, #36]
-	ldr	r1, .L1980+16
-	ldr	r0, .L1980+24
+	ldr	r1, .L1831+16
+	ldr	r0, .L1831+24
 	bl	sftl_printk
 	mvn	r3, #0
-	str	r3, [r6, #3452]
-.L1953:
-	ldr	r3, [r6, #3452]
-	cmn	r3, #1
-	beq	.L1954
-	ldrh	r3, [r5, #8]
-	ldr	r2, [sp, #16]
-	cmp	r2, r3
-	bls	.L1954
-	ldrh	r1, [r5]
-	ldrh	r2, [r4, #4]
-	cmp	r1, r2
-	ldreq	r2, [r6, #3456]
-	ldreq	r1, [sp, #12]
-	streq	r2, [r1, r3, lsl #2]
-.L1954:
+	str	r3, [r5, #3452]
+.L1815:
 	add	r10, r10, #1
-	b	.L1949
-.L1948:
-	mov	r1, #0
-	mov	r0, #4
-.L1950:
-	ldrh	r2, [fp]
-	sxth	r3, r1
-	sub	r2, r2, #1
+.L1809:
+	ldr	r2, .L1831+4
+	sxth	r3, r10
+	ldrh	r2, [r2]
 	cmp	r3, r2
-	blt	.L1952
-.L1956:
-	add	r8, r8, #1
-	b	.L1939
-.L1952:
-	ldr	ip, [r6, #3300]
-	add	r1, r1, #1
-	ldr	r7, [sp, #16]
-	ldr	r2, [ip, r3, lsl #3]
-	uxth	lr, r2
-	cmp	r7, lr
-	addhi	r3, r0, r3, lsl #3
-	movhi	r2, lr
-	ldrhi	r3, [ip, r3]
-	ldrhi	ip, [sp, #12]
-	strhi	r3, [ip, r2, lsl #2]
-	b	.L1950
-.L1981:
+	blt	.L1810
+	b	.L1811
+.L1806:
+	ldr	r3, [r5, #3452]
+	cmn	r3, #1
+	beq	.L1815
+.L1808:
+	ldrh	r3, [r8, #8]
+	ldr	r2, [fp, #-48]
+	cmp	r3, r2
+	bcs	.L1815
+	ldrh	r2, [r4, #4]
+	ldrh	r1, [r8]
+	cmp	r1, r2
+	ldreq	r2, [r5, #3456]
+	streq	r2, [r9, r3, lsl #2]
+	b	.L1815
+.L1832:
 	.align	2
-.L1980:
+.L1831:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+3452
 	.word	.LANCHOR0+304
+	.word	.LANCHOR0+3452
 	.word	.LANCHOR0+310
 	.word	.LANCHOR1+615
 	.word	.LC128
 	.word	.LC129
-	.fnend
 	.size	FtlMapTblRecovery, .-FtlMapTblRecovery
 	.align	2
 	.global	FtlLoadVonderInfo
@@ -13100,18 +13582,20 @@
 	.fpu softvfp
 	.type	FtlLoadVonderInfo, %function
 FtlLoadVonderInfo:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1984
-	push	{r4, lr}
-	.save {r4, lr}
-	add	r2, r3, #320
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L1834
 	add	r0, r3, #3600
-	ldrh	r2, [r2]
+	add	r2, r3, #320
 	add	r0, r0, #8
+	ldrh	r2, [r2]
 	strh	r2, [r0, #10]	@ movhi
-	ldr	r2, .L1984+4
+	ldr	r2, .L1834+4
 	strh	r2, [r0, #4]	@ movhi
 	add	r2, r3, #344
 	ldrh	r2, [r2]
@@ -13129,13 +13613,12 @@
 	str	r2, [r3, #3632]
 	bl	FtlMapTblRecovery
 	mov	r0, #0
-	pop	{r4, pc}
-.L1985:
+	ldmfd	sp, {fp, sp, pc}
+.L1835:
 	.align	2
-.L1984:
+.L1834:
 	.word	.LANCHOR0
 	.word	-3962
-	.fnend
 	.size	FtlLoadVonderInfo, .-FtlLoadVonderInfo
 	.align	2
 	.global	FtlLoadMapInfo
@@ -13144,21 +13627,22 @@
 	.fpu softvfp
 	.type	FtlLoadMapInfo, %function
 FtlLoadMapInfo:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, lr}
-	.save {r4, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	bl	FtlL2PDataInit
-	ldr	r0, .L1988
+	ldr	r0, .L1837
 	bl	FtlMapTblRecovery
 	mov	r0, #0
-	pop	{r4, pc}
-.L1989:
+	ldmfd	sp, {fp, sp, pc}
+.L1838:
 	.align	2
-.L1988:
+.L1837:
 	.word	.LANCHOR0+3392
-	.fnend
 	.size	FtlLoadMapInfo, .-FtlLoadMapInfo
 	.align	2
 	.global	FtlSysBlkInit
@@ -13167,13 +13651,15 @@
 	.fpu softvfp
 	.type	FtlSysBlkInit, %function
 FtlSysBlkInit:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1855
 	mov	r3, #0
-	ldr	r4, .L2007
 	add	r7, r4, #3472
 	ldrh	r0, [r4, #236]
 	strh	r3, [r7]	@ movhi
@@ -13183,16 +13669,16 @@
 	ldrh	r2, [r3]
 	movw	r3, #65535
 	cmp	r2, r3
-	bne	.L1991
-.L1993:
-	mvn	r6, #0
-.L1990:
-	mov	r0, r6
-	pop	{r4, r5, r6, r7, r8, pc}
-.L1991:
+	bne	.L1840
+.L1842:
+	mvn	r5, #0
+.L1839:
+	mov	r0, r5
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L1840:
 	bl	FtlLoadSysInfo
-	subs	r6, r0, #0
-	bne	.L1993
+	subs	r5, r0, #0
+	bne	.L1842
 	bl	FtlLoadMapInfo
 	bl	FtlLoadVonderInfo
 	bl	Ftl_load_ext_data
@@ -13202,29 +13688,30 @@
 	bl	FtlPowerLostRecovery
 	mov	r0, #1
 	bl	FtlUpdateVaildLpn
-	ldr	r2, [r4, #2540]
 	movw	r3, #338
-	ldrh	r1, [r4, r3]
+	ldr	r2, [r4, #2540]
 	mov	r0, #12
-	mov	r3, r6
-.L1994:
+	ldrh	r1, [r4, r3]
+	mov	r3, r5
+	add	r2, r2, #4
+.L1843:
 	cmp	r3, r1
-	bge	.L1999
-	mla	ip, r0, r3, r2
-	ldr	ip, [ip, #4]
+	bge	.L1848
+	mul	ip, r0, r3
+	ldr	ip, [r2, ip]
 	cmp	ip, #0
-	bge	.L1995
-.L1999:
-	ldr	r5, .L2007+4
+	bge	.L1844
+.L1848:
+	ldr	r6, .L1855+4
 	cmp	r3, r1
-	ldrh	r2, [r5, #28]
+	ldrh	r2, [r6, #28]
 	add	r2, r2, #1
-	strh	r2, [r5, #28]	@ movhi
-	bge	.L2005
-.L1996:
-	ldr	r0, .L2007+8
+	strh	r2, [r6, #28]	@ movhi
+	bge	.L1854
+.L1845:
+	ldr	r0, .L1855+8
 	bl	FtlSuperblockPowerLostFix
-	ldr	r0, .L2007+12
+	ldr	r0, .L1855+12
 	bl	FtlSuperblockPowerLostFix
 	ldrh	r3, [r4, #24]
 	ldr	r1, [r4, #72]
@@ -13232,68 +13719,65 @@
 	lsl	r3, r3, #1
 	ldrh	r2, [r1, r3]
 	sub	r2, r2, r0
-	movw	r0, #302
 	strh	r2, [r1, r3]	@ movhi
+	movw	r0, #302
 	ldrh	r2, [r4, #76]
-	ldrh	r3, [r4, r0]
 	ldr	ip, [r4, #72]
-	ldrh	lr, [r4, #80]
+	ldrh	r3, [r4, r0]
 	lsl	r2, r2, #1
 	strh	r3, [r4, #26]	@ movhi
 	mov	r3, #0
 	strb	r3, [r4, #30]
 	strh	r3, [r4, #28]	@ movhi
+	ldrh	lr, [r4, #80]
 	ldrh	r1, [ip, r2]
 	sub	r1, r1, lr
 	strh	r1, [ip, r2]	@ movhi
 	strb	r3, [r4, #82]
 	strh	r3, [r4, #80]	@ movhi
-	ldrh	r3, [r5, #30]
+	ldrh	r3, [r6, #30]
 	ldrh	r2, [r4, r0]
 	add	r3, r3, #1
 	strh	r2, [r4, #78]	@ movhi
-	strh	r3, [r5, #30]	@ movhi
+	strh	r3, [r6, #30]	@ movhi
 	bl	l2p_flush
 	bl	FtlVpcTblFlush
 	bl	FtlVpcTblFlush
-	b	.L2000
-.L1995:
+	b	.L1849
+.L1844:
 	add	r3, r3, #1
-	b	.L1994
-.L2005:
+	b	.L1843
+.L1854:
 	ldrh	r3, [r7]
 	cmp	r3, #0
-	bne	.L1996
-.L2000:
+	bne	.L1845
+.L1849:
 	ldrh	r0, [r4, #24]
 	movw	r3, #65535
 	cmp	r0, r3
-	beq	.L2001
-	ldrh	r3, [r4, #28]
-	cmp	r3, #0
-	bne	.L2001
+	beq	.L1850
+	ldrh	r2, [r4, #28]
 	ldrh	r3, [r4, #80]
-	cmp	r3, #0
-	bne	.L2001
+	orrs	r3, r2, r3
+	bne	.L1850
 	bl	FtlGcRefreshBlock
 	ldrh	r0, [r4, #76]
 	bl	FtlGcRefreshBlock
 	bl	FtlVpcTblFlush
-	ldr	r0, .L2007+8
+	ldr	r0, .L1855+8
 	bl	allocate_new_data_superblock
-	ldr	r0, .L2007+12
+	ldr	r0, .L1855+12
 	bl	allocate_new_data_superblock
-.L2001:
+.L1850:
 	bl	FtlVpcCheckAndModify
-	b	.L1990
-.L2008:
+	b	.L1839
+.L1856:
 	.align	2
-.L2007:
+.L1855:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+2468
 	.word	.LANCHOR0+24
 	.word	.LANCHOR0+76
-	.fnend
 	.size	FtlSysBlkInit, .-FtlSysBlkInit
 	.align	2
 	.global	ftl_low_format
@@ -13302,13 +13786,15 @@
 	.fpu softvfp
 	.type	ftl_low_format, %function
 ftl_low_format:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r4, .L1881
 	mov	r3, #0
-	ldr	r4, .L2034
 	ldrh	r0, [r4, #236]
 	str	r3, [r4, #2588]
 	str	r3, [r4, #2592]
@@ -13316,143 +13802,140 @@
 	bl	FtlFreeSysBlkQueueInit
 	bl	FtlLoadBbt
 	cmp	r0, #0
-	beq	.L2010
+	beq	.L1858
 	bl	FtlMakeBbt
-.L2010:
-	ldr	r0, .L2034+4
+.L1858:
+	ldr	r0, .L1881+4
 	mov	r2, #0
-	ldr	ip, .L2034+8
-.L2011:
+	ldr	ip, .L1881+8
+.L1859:
 	ldrh	r1, [r0]
 	uxth	r3, r2
 	add	r2, r2, #1
 	cmp	r3, r1, lsl #7
-	blt	.L2012
+	blt	.L1860
 	ldrh	r6, [r4, #240]
 	mov	r5, #0
-.L2013:
+.L1861:
 	ldrh	r3, [r4, #242]
 	cmp	r3, r6
-	bhi	.L2014
+	bhi	.L1862
 	ldrh	r1, [r4, #232]
 	sub	r3, r5, #3
 	cmp	r3, r1, lsl #1
-	bge	.L2015
-.L2019:
+	bge	.L1863
+.L1867:
 	mov	r5, #0
 	mov	r6, r5
-.L2016:
+.L1864:
 	ldrh	r3, [r4, #240]
 	uxth	r0, r5
-	add	r5, r5, #1
 	cmp	r3, r0
-	bhi	.L2020
-	ldrh	r3, [r4, #242]
-	movw	r9, #2620
-	ldrh	r5, [r4, #232]
+	bhi	.L1868
+	ldrh	r9, [r4, #232]
+	movw	r8, #2620
 	ldr	r10, [r4, #244]
-	str	r3, [r4, #3284]
-	mov	r1, r5
+	ldrh	r3, [r4, #242]
+	mov	r1, r9
 	mov	r0, r10
+	str	r3, [r4, #3284]
 	bl	__aeabi_uidiv
 	ubfx	r7, r0, #5, #16
-	mov	r8, r0
 	add	r3, r7, #36
-	str	r0, [r4, #2552]
-	strh	r3, [r4, r9]	@ movhi
+	strh	r3, [r4, r8]	@ movhi
 	mov	r3, #24
-	mul	r3, r3, r5
+	mov	r5, r0
+	str	r0, [r4, #2552]
+	mul	r3, r3, r9
 	cmp	r6, r3
-	ble	.L2021
-	mov	r1, r5
+	ble	.L1869
+	mov	r1, r9
 	sub	r0, r10, r6
 	bl	__aeabi_uidiv
+	lsr	r3, r0, #5
+	add	r3, r3, #24
 	str	r0, [r4, #2552]
-	lsr	r0, r0, #5
-	add	r0, r0, #24
-	strh	r0, [r4, r9]	@ movhi
-.L2021:
+	strh	r3, [r4, r8]	@ movhi
+.L1869:
 	movw	r3, #294
 	ldrh	r3, [r4, r3]
 	cmp	r3, #0
-	beq	.L2023
+	beq	.L1871
 	movw	r2, #2620
 	ldrh	r1, [r4, r2]
 	add	r1, r1, r3, lsr #1
 	strh	r1, [r4, r2]	@ movhi
-	mul	r1, r5, r3
+	mul	r1, r9, r3
 	cmp	r6, r1
+	strlt	r5, [r4, #2552]
 	addlt	r3, r3, #32
-	strlt	r8, [r4, #2552]
 	addlt	r3, r7, r3
 	strhlt	r3, [r4, r2]	@ movhi
-.L2023:
+.L1871:
 	movw	r3, #2620
-	ldr	r6, .L2034+12
-	ldrh	r2, [r4, r3]
-	ldr	r3, [r4, #2552]
-	sub	r3, r3, r2
-	mul	r5, r5, r3
+	ldr	r1, [r4, #2552]
+	ldr	r6, .L1881+12
+	mvn	r5, #0
+	ldrh	r3, [r4, r3]
+	sub	r1, r1, r3
 	movw	r3, #302
 	ldrh	r3, [r4, r3]
-	str	r5, [r4, #3672]
-	mul	r5, r5, r3
+	mul	r1, r9, r1
+	str	r1, [r4, #3672]
+	mul	r1, r1, r3
 	movw	r3, #258
+	str	r1, [r4, #2552]
 	ldrh	r3, [r4, r3]
-	str	r5, [r4, #2552]
-	mul	r5, r5, r3
-	str	r5, [r4, #340]
+	mul	r1, r1, r3
+	str	r1, [r4, #340]
 	bl	FtlBbmTblFlush
 	ldrh	r2, [r4, #242]
 	mov	r1, #0
 	ldr	r0, [r4, #72]
 	lsl	r2, r2, #1
 	bl	ftl_memset
-	mvn	r2, #0
 	mov	r3, #0
-	mov	r5, r2
+	movw	r2, #65535
 	str	r3, [r4, #2548]
-	strh	r3, [r4, #174]	@ movhi
 	strb	r3, [r4, #178]
 	strb	r3, [r4, #180]
-	strh	r3, [r4, #26]	@ movhi
 	strb	r3, [r4, #30]
-	strh	r3, [r4, #24]	@ movhi
+	str	r3, [r4, #24]
 	mov	r3, #1
-	strh	r2, [r4, #172]	@ movhi
+	str	r2, [r4, #172]
 	strb	r3, [r4, #32]
-.L2025:
+.L1873:
 	mov	r0, r6
 	bl	make_superblock
 	ldrb	r3, [r4, #31]	@ zero_extendqisi2
 	cmp	r3, #0
 	ldrh	r3, [r4, #24]
-	bne	.L2026
-	ldr	r2, [r4, #72]
+	bne	.L1874
 	lsl	r3, r3, #1
+	ldr	r2, [r4, #72]
 	strh	r5, [r2, r3]	@ movhi
 	ldrh	r3, [r4, #24]
 	add	r3, r3, #1
 	strh	r3, [r4, #24]	@ movhi
-	b	.L2025
-.L2012:
+	b	.L1873
+.L1860:
 	ldr	lr, [r4, #3312]
 	mvn	r1, r3
 	orr	r1, r3, r1, lsl #16
 	str	r1, [lr, r3, lsl #2]
 	ldr	r1, [r4, #3316]
 	str	ip, [r1, r3, lsl #2]
-	b	.L2011
-.L2014:
+	b	.L1859
+.L1862:
 	mov	r0, r6
 	mov	r1, #1
-	bl	FtlLowFormatEraseBlock
 	add	r6, r6, #1
-	add	r5, r5, r0
-	uxth	r5, r5
+	bl	FtlLowFormatEraseBlock
+	add	r5, r0, r5
 	uxth	r6, r6
-	b	.L2013
-.L2015:
+	uxth	r5, r5
+	b	.L1861
+.L1863:
 	mov	r0, r5
 	bl	__aeabi_uidiv
 	ldr	r3, [r4, #332]
@@ -13462,32 +13945,33 @@
 	ldrh	r0, [r4, #236]
 	bl	FtlFreeSysBlkQueueInit
 	ldrh	r5, [r4, #240]
-.L2017:
+.L1865:
 	ldrh	r3, [r4, #242]
 	cmp	r3, r5
-	bls	.L2019
+	bls	.L1867
 	mov	r0, r5
+	add	r5, r5, #1
 	mov	r1, #1
+	uxth	r5, r5
+	bl	FtlLowFormatEraseBlock
+	b	.L1865
+.L1868:
+	mov	r1, #0
 	add	r5, r5, #1
 	bl	FtlLowFormatEraseBlock
-	uxth	r5, r5
-	b	.L2017
-.L2020:
-	mov	r1, #0
-	bl	FtlLowFormatEraseBlock
-	add	r6, r6, r0
+	add	r6, r0, r6
 	uxth	r6, r6
-	b	.L2016
-.L2026:
+	b	.L1864
+.L1874:
 	ldr	r2, [r4, #2588]
 	lsl	r3, r3, #1
-	ldrh	r1, [r4, #28]
-	mvn	r5, #0
-	ldr	r6, .L2034+16
 	str	r2, [r4, #36]
+	mvn	r5, #0
 	add	r2, r2, #1
 	str	r2, [r4, #2588]
 	ldr	r2, [r4, #72]
+	ldrh	r1, [r4, #28]
+	ldr	r6, .L1881+16
 	strh	r1, [r2, r3]	@ movhi
 	mov	r3, #0
 	strh	r3, [r4, #78]	@ movhi
@@ -13497,39 +13981,39 @@
 	strh	r3, [r4, #76]	@ movhi
 	mov	r3, #1
 	strb	r3, [r4, #84]
-.L2027:
+.L1875:
 	mov	r0, r6
 	bl	make_superblock
 	ldrb	r3, [r4, #83]	@ zero_extendqisi2
 	cmp	r3, #0
 	ldrh	r3, [r4, #76]
-	bne	.L2028
-	ldr	r2, [r4, #72]
+	bne	.L1876
 	lsl	r3, r3, #1
+	ldr	r2, [r4, #72]
 	strh	r5, [r2, r3]	@ movhi
 	ldrh	r3, [r4, #76]
 	add	r3, r3, #1
 	strh	r3, [r4, #76]	@ movhi
-	b	.L2027
-.L2028:
+	b	.L1875
+.L1876:
 	ldr	r2, [r4, #2588]
 	lsl	r3, r3, #1
-	ldrh	r1, [r4, #80]
-	mvn	r5, #0
 	str	r2, [r4, #88]
+	mvn	r5, #0
 	add	r2, r2, #1
 	str	r2, [r4, #2588]
 	ldr	r2, [r4, #72]
+	ldrh	r1, [r4, #80]
 	strh	r1, [r2, r3]	@ movhi
 	strh	r5, [r4, #124]	@ movhi
 	bl	FtlFreeSysBlkQueueOut
-	ldr	r3, .L2034+20
+	ldr	r3, .L1881+20
 	mov	r2, #0
 	strh	r2, [r3, #2]	@ movhi
 	ldr	r2, [r4, #3672]
+	strh	r2, [r3, #6]	@ movhi
 	strh	r5, [r3, #4]	@ movhi
 	strh	r0, [r3]	@ movhi
-	strh	r2, [r3, #6]	@ movhi
 	ldr	r3, [r4, #2588]
 	str	r3, [r4, #2632]
 	add	r3, r3, #1
@@ -13538,13 +14022,13 @@
 	bl	FtlSysBlkInit
 	cmp	r0, #0
 	mov	r0, #0
-	ldreq	r3, .L2034+24
 	moveq	r2, #1
+	ldreq	r3, .L1881+24
 	streq	r2, [r3]
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L2035:
+	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1882:
 	.align	2
-.L2034:
+.L1881:
 	.word	.LANCHOR0
 	.word	.LANCHOR0+258
 	.word	168778952
@@ -13552,7 +14036,6 @@
 	.word	.LANCHOR0+76
 	.word	.LANCHOR0+2624
 	.word	.LANCHOR2
-	.fnend
 	.size	ftl_low_format, .-ftl_low_format
 	.align	2
 	.global	sftl_init
@@ -13561,16 +14044,18 @@
 	.fpu softvfp
 	.type	sftl_init, %function
 sftl_init:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r5, .L1887
 	mvn	r3, #0
-	ldr	r4, .L2043
-	ldr	r5, .L2043+4
-	ldr	r1, .L2043+8
-	ldr	r0, .L2043+12
+	ldr	r4, .L1887+4
+	ldr	r1, .L1887+8
+	ldr	r0, .L1887+12
 	str	r3, [r5]
 	bl	sftl_printk
 	mov	r0, r4
@@ -13581,34 +14066,41 @@
 	bl	FtlFreeSysBlkQueueInit
 	bl	FtlLoadBbt
 	cmp	r0, #0
-	bne	.L2040
+	bne	.L1884
 	bl	FtlSysBlkInit
 	cmp	r0, #0
-	bne	.L2040
+	bne	.L1884
 	mov	r3, #1
 	str	r3, [r5]
 	ldrh	r3, [r4, #224]
 	cmp	r3, #15
-	bhi	.L2040
+	bhi	.L1884
 	movw	r4, #8129
-.L2039:
+.L1885:
 	mov	r1, #1
 	mov	r0, #0
 	bl	rk_ftl_garbage_collect
 	subs	r4, r4, #1
-	bne	.L2039
-.L2040:
+	bne	.L1885
+.L1884:
 	mov	r0, #0
-	pop	{r4, r5, r6, pc}
-.L2044:
+	ldmfd	sp, {r4, r5, fp, sp, pc}
+.L1888:
 	.align	2
-.L2043:
-	.word	.LANCHOR0
+.L1887:
 	.word	.LANCHOR2
+	.word	.LANCHOR0
 	.word	.LC0
 	.word	.LC77
-	.fnend
 	.size	sftl_init, .-sftl_init
+	.section	.rodata.str1.1
+.LC130:
+	.ascii	"write_idblock %x %x\012\000"
+.LC131:
+	.ascii	"write_idblock fail! %x %x %x %x\012\000"
+.LC132:
+	.ascii	"%s idb buffer alloc fail\012\000"
+	.text
 	.align	2
 	.global	FtlWriteToIDB
 	.syntax unified
@@ -13616,382 +14108,388 @@
 	.fpu softvfp
 	.type	FtlWriteToIDB, %function
 FtlWriteToIDB:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 104
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	add	r8, r1, r0
-	ldr	r3, .L2106
-	sub	r10, r8, #1
-	cmp	r10, #63
-	.pad #116
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #116
-	movhi	r9, #0
-	movls	r9, #1
-	ldr	r3, [r3]
+	push	{lr}
+	bl	__gnu_mcount_nc
+	mov	r3, sp
+	add	r8, r1, r0
+	bic	r3, r3, #8128
+	sub	r9, r8, #1
+	bic	r3, r3, #63
+	cmp	r9, #63
+	ldr	r5, .L1948
+	mov	r4, r0
+	movhi	r10, #0
+	movls	r10, #1
+	ldr	r3, [r3, #24]
 	cmp	r0, #576
-	orrcs	r9, r9, #1
-	cmp	r9, #0
-	ldr	r5, .L2106+4
-	str	r3, [sp, #108]
-	beq	.L2046
+	orrcs	r10, r10, #1
+	mov	r6, r1
+	mov	r7, r2
+	cmp	r10, #0
+	str	r3, [fp, #-48]
+	beq	.L1890
 	ldr	r3, [r5, #3676]
 	cmp	r3, #0
-	bne	.L2047
-.L2105:
+	bne	.L1891
+.L1947:
 	mov	r4, #0
-	b	.L2045
-.L2047:
-	ldr	r7, [r5, #3680]
-	ldr	r3, .L2106+8
-	ldr	r2, [r7]
+	b	.L1889
+.L1891:
+	ldr	r8, [r5, #3680]
+	ldr	r3, .L1948+4
+	ldr	r2, [r8]
 	cmp	r2, r3
-	bne	.L2049
+	bne	.L1893
 	ldrh	r1, [r5, #10]
-	add	r0, r7, #260096
+	add	r0, r8, #260096
 	mov	r2, #0
 	movw	r3, #65023
-.L2053:
+.L1897:
 	ldr	ip, [r0, #-4]!
 	cmp	ip, #0
-	bne	.L2050
-	ldr	ip, [r7, r2, lsl #2]
+	bne	.L1894
+	ldr	ip, [r8, r2, lsl #2]
 	add	r2, r2, #1
 	cmp	r2, #4096
 	sub	r3, r3, #1
+	str	ip, [r0, #2048]
 	movhi	r2, #0
 	cmp	r3, #4096
-	str	ip, [r0, #2048]
-	bne	.L2053
-	mov	fp, #512
-	b	.L2052
-.L2050:
+	bne	.L1897
+	mov	r3, #512
+	b	.L1946
+.L1894:
 	add	r3, r3, #127
-	lsr	fp, r3, #7
-.L2052:
+	lsr	r3, r3, #7
+.L1946:
+	str	r3, [fp, #-120]
 	lsl	r1, r1, #2
-	add	r0, fp, #4
-	ldr	r4, .L2106+4
+	ldr	r3, [fp, #-120]
 	uxth	r1, r1
+	add	r0, r3, #4
 	bl	__aeabi_uidiv
 	add	r3, r0, #1
-	mov	r1, fp
 	mov	r2, r3
-	ldr	r0, .L2106+12
-	str	r3, [sp, #16]
+	ldr	r1, [fp, #-120]
+	ldr	r0, .L1948+8
+	str	r3, [fp, #-124]
 	bl	sftl_printk
-	lsl	r3, fp, #7
-	str	r3, [sp, #28]
+	ldr	r3, [fp, #-120]
+	lsl	r3, r3, #7
+	str	r3, [fp, #-140]
 	mov	r3, #0
-	str	r3, [sp, #20]
-	str	r3, [sp, #12]
-.L2054:
-	ldr	r3, [sp, #16]
-	ldr	r2, [sp, #12]
-	add	r3, r3, r2
+	mov	r10, r3
+	str	r3, [fp, #-128]
+.L1898:
+	ldr	r3, [fp, #-124]
+	add	r3, r3, r10
+	str	r3, [fp, #-132]
 	cmp	r3, #8
-	str	r3, [sp, #24]
-	bls	.L2076
-	ldr	r3, [sp, #20]
+	bls	.L1920
+	ldr	r3, [fp, #-128]
 	cmp	r3, #0
-	bne	.L2077
-.L2049:
-	mvn	fp, #0
-.L2077:
-	ldr	r5, .L2106+4
-	mov	r3, #0
-	mov	r4, fp
-	ldr	r0, [r5, #3680]
-	str	r3, [r5, #3676]
-	bl	kfree
-	ldr	r0, [r5, #3684]
-	bl	kfree
-.L2045:
-	ldr	r3, .L2106
-	mov	r0, r4
-	ldr	r2, [sp, #108]
-	ldr	r3, [r3]
-	cmp	r2, r3
-	beq	.L2084
-	bl	__stack_chk_fail
-.L2076:
+	bne	.L1919
+.L1893:
+	mvn	r3, #0
+	str	r3, [fp, #-120]
+	b	.L1919
+.L1920:
+	ldr	r4, .L1948
 	mov	r2, #512
 	mov	r1, #0
 	ldr	r0, [r4, #3684]
 	bl	memset
-	ldrh	r6, [r4, #10]
-	ldr	r3, [sp, #12]
-	mul	r9, r6, r3
+	ldrh	r5, [r4, #10]
+	mul	r3, r5, r10
+	str	r3, [fp, #-136]
 	ldr	r3, [r4, #3260]
 	cmp	r3, #0
-	moveq	r8, #6
-	beq	.L2055
+	moveq	r6, #6
+	beq	.L1899
 	ldr	r3, [r4, #3264]
 	cmp	r3, #0
-	moveq	r8, #6
-	movne	r8, #9
-.L2055:
-	mov	r10, r9
-	mov	r5, #0
-.L2056:
-	ldr	r3, [r4, #3248]
-	mov	r1, r10
+	moveq	r6, #6
+	movne	r6, #9
+.L1899:
+	mul	r9, r5, r10
+	ldr	r7, .L1948
+	mov	r4, #0
+.L1900:
+	ldr	r3, [r7, #3248]
+	mov	r1, r9
 	mov	r0, #0
-	add	r5, r5, #1
+	add	r4, r4, #1
 	blx	r3
-	ldr	r3, [sp, #16]
-	add	r10, r10, r6
-	cmp	r3, r5
-	bhi	.L2056
-	cmp	r8, #9
-	movne	r5, #0
-	bne	.L2057
-	ldr	r5, [r4, #3684]
+	ldr	r3, [fp, #-124]
+	add	r9, r9, r5
+	cmp	r3, r4
+	bhi	.L1900
+	cmp	r6, #9
+	movne	r4, #0
+	bne	.L1901
+	ldr	r4, [r7, #3684]
 	mov	r2, #1024
 	mov	r1, #0
-	mov	r0, r5
+	mov	r0, r4
 	bl	ftl_memset
-	ldr	r3, .L2106+16
+	ldr	r3, .L1948+12
+	str	r3, [r4]
 	mov	r1, #12
-	mov	r2, #4
-	str	r1, [r5, #4]
-	strb	r2, [r5, #17]
-	add	r0, r5, r1
-	str	r3, [r5]
+	str	r1, [r4, #4]
 	mov	r3, #0
-	ldrh	r2, [r4, #10]
-	str	r3, [r5, #12]
-	strb	r3, [r5, #16]
-	strh	r2, [r5, #18]	@ movhi
-	mov	r2, #16
-	strb	r3, [r5, #20]
-	strb	r2, [r5, #21]
-	strh	r3, [r5, #22]	@ movhi
+	str	r3, [r4, #12]
+	mov	r3, #1024
+	strh	r3, [r4, #16]	@ movhi
+	add	r0, r4, r1
+	ldrh	r3, [r7, #10]
+	strh	r3, [r4, #18]	@ movhi
+	mov	r3, #4096
+	str	r3, [r4, #20]
 	bl	js_hash
-	str	r0, [r5, #8]
-.L2057:
-	ldr	r3, [sp, #16]
-	mov	r10, r7
-	mul	r3, r6, r3
-	mov	r6, #0
-	str	r3, [sp, #32]
-.L2058:
-	ldr	r3, [sp, #32]
-	cmp	r6, r3
-	beq	.L2065
-	cmp	r8, #9
-	lslne	r3, r6, #2
-	addeq	r3, r6, #1
-	cmp	r6, #0
-	cmpeq	r8, #9
-	str	r3, [sp, #44]
+	str	r0, [r4, #8]
+.L1901:
+	ldr	r3, [fp, #-124]
+	mov	r9, r8
+	ldr	r7, .L1948
+	mul	r3, r5, r3
+	mov	r5, #0
+	str	r3, [fp, #-144]
+.L1902:
+	ldr	r3, [fp, #-144]
+	cmp	r5, r3
+	beq	.L1909
+	cmp	r6, #9
+	addeq	r3, r5, #1
+	lslne	r3, r5, #2
+	cmp	r5, #0
+	cmpeq	r6, #9
+	str	r3, [fp, #-112]
 	movw	r3, #61424
-	str	r3, [sp, #48]
+	str	r3, [fp, #-108]
 	moveq	r0, #1
 	movne	r0, #0
-	bne	.L2061
-	ldr	r3, [r4, #3260]
+	bne	.L1905
+	ldr	r3, [r7, #3260]
 	mov	r0, #70
 	blx	r3
-	mov	r2, r5
-	add	r3, sp, #44
-	mov	r1, r9
-	ldr	ip, [r4, #3252]
+	mov	r2, r4
+	ldr	r1, [fp, #-136]
+	sub	r3, fp, #112
+	ldr	ip, [r7, #3252]
 	mov	r0, #0
 	blx	ip
-	ldr	r3, [r4, #3260]
-	str	r0, [sp, #36]
-	ldrb	r0, [r4, #22]	@ zero_extendqisi2
+	ldr	r3, [r7, #3260]
+	str	r0, [fp, #-148]
+	ldrb	r0, [r7, #22]	@ zero_extendqisi2
 	blx	r3
-	ldr	r2, [sp, #36]
+	ldr	r2, [fp, #-148]
 	cmn	r2, #1
-	bne	.L2062
-.L2065:
-	ldrb	r3, [r4, #14]	@ zero_extendqisi2
-	ldr	r2, [sp, #12]
-	ldr	r6, [r4, #3684]
-	str	r3, [sp, #32]
-	ldrh	r3, [r4, #10]
-	mul	r9, r3, r2
-	ldr	r2, [r4, #3260]
-	cmp	r2, #0
-	moveq	r8, #6
-	beq	.L2064
-	ldr	r2, [r4, #3264]
-	cmp	r2, #0
-	moveq	r8, #6
-	movne	r8, #9
-.L2064:
-	ldr	r2, [sp, #16]
+	bne	.L1906
+.L1909:
+	ldr	r3, .L1948
+	ldrb	r2, [r3, #14]	@ zero_extendqisi2
+	ldr	r1, [r3, #3260]
+	str	r2, [fp, #-136]
+	ldrh	r2, [r3, #10]
+	cmp	r1, #0
+	ldr	r9, [r3, #3684]
+	moveq	r6, #6
+	mul	r7, r2, r10
+	beq	.L1908
+	ldr	r3, [r3, #3264]
+	cmp	r3, #0
+	moveq	r6, #6
+	movne	r6, #9
+.L1908:
+	ldr	r3, [fp, #-124]
 	mov	r5, #0
-	mul	r10, r3, r2
-.L2067:
-	cmp	r5, r10
-	beq	.L2071
+	ldr	r4, .L1948
+	mul	r3, r2, r3
+	str	r3, [fp, #-144]
+.L1911:
+	ldr	r3, [fp, #-144]
+	cmp	r5, r3
+	beq	.L1915
 	cmp	r5, #0
-	cmpeq	r8, #9
+	cmpeq	r6, #9
 	moveq	r0, #1
 	movne	r0, #0
-	bne	.L2068
+	bne	.L1912
 	ldr	r3, [r4, #3260]
 	mov	r0, #70
 	blx	r3
 	ldr	r3, [r4, #3264]
 	mov	r0, #2
 	blx	r3
-	mov	r2, r6
-	mov	r1, r9
+	mov	r2, r9
 	ldr	ip, [r4, #3256]
-	add	r3, sp, #44
+	mov	r1, r7
+	sub	r3, fp, #112
 	mov	r0, #0
 	blx	ip
 	ldr	r3, [r4, #3264]
-	ldr	r0, [sp, #32]
+	ldr	r0, [fp, #-136]
 	blx	r3
 	ldr	r3, [r4, #3260]
 	ldrb	r0, [r4, #22]	@ zero_extendqisi2
 	blx	r3
-	ldr	r3, [r6]
-	ldr	r2, .L2106+16
+	ldr	r3, [r9]
+	ldr	r2, .L1948+12
 	cmp	r3, r2
-	beq	.L2069
-.L2071:
-	ldr	r0, [r4, #3684]
-	mov	r3, r7
-	mov	r5, #0
+	beq	.L1913
+.L1915:
+	ldr	r3, .L1948
+	mov	r4, #0
+	ldr	r0, [r3, #3684]
+	mov	r3, r8
 	mov	r2, r0
-.L2070:
-	mov	r6, r2
-	mov	r8, r3
-	ldr	ip, [r6]
+.L1914:
+	mov	r5, r2
+	mov	r6, r3
 	add	r2, r2, #4
-	ldr	r1, [r8]
 	add	r3, r3, #4
+	ldr	ip, [r5]
+	ldr	r1, [r6]
 	cmp	ip, r1
-	beq	.L2073
+	beq	.L1917
 	mov	r2, #512
 	mov	r1, #0
 	bl	memset
-	ldr	r0, .L2106+20
-	str	r5, [sp]
-	ldr	r1, [sp, #12]
-	ldr	r3, [r8]
-	ldr	r2, [r6]
+	str	r4, [sp]
+	ldr	r0, .L1948+16
+	mov	r1, r10
+	ldr	r3, [r6]
+	ldr	r2, [r5]
 	bl	sftl_printk
-	ldrh	r1, [r4, #10]
+	ldr	r3, .L1948
 	mov	r0, #0
-	ldr	r2, [sp, #12]
-	ldr	r3, [r4, #3248]
-	mul	r1, r2, r1
+	ldrh	r1, [r3, #10]
+	ldr	r3, [r3, #3248]
+	mul	r1, r10, r1
 	blx	r3
-.L2074:
-	ldr	r3, [sp, #24]
-	str	r3, [sp, #12]
-	b	.L2054
-.L2061:
-	add	r3, sp, #44
-	mov	r2, r10
-	add	r1, r9, r6
-	ldr	ip, [r4, #3252]
+.L1918:
+	ldr	r10, [fp, #-132]
+	b	.L1898
+.L1905:
+	ldr	r1, [fp, #-136]
+	sub	r3, fp, #112
+	ldr	ip, [r7, #3252]
+	mov	r2, r9
+	add	r1, r1, r5
 	blx	ip
 	cmn	r0, #1
-	beq	.L2065
-	add	r10, r10, #2048
-.L2062:
-	add	r6, r6, #1
-	b	.L2058
-.L2068:
-	add	r3, sp, #44
-	mov	r2, r6
-	add	r1, r9, r5
+	beq	.L1909
+	add	r9, r9, #2048
+.L1906:
+	add	r5, r5, #1
+	b	.L1902
+.L1912:
 	ldr	ip, [r4, #3256]
+	sub	r3, fp, #112
+	mov	r2, r9
+	add	r1, r7, r5
 	blx	ip
 	cmn	r0, #1
-	beq	.L2071
-	ldr	r2, [sp, #48]
+	beq	.L1915
+	ldr	r1, [fp, #-108]
 	movw	r3, #61424
-	cmp	r2, r3
-	bne	.L2071
-	add	r6, r6, #2048
-.L2069:
+	cmp	r1, r3
+	bne	.L1915
+	add	r9, r9, #2048
+.L1913:
 	add	r5, r5, #1
-	b	.L2067
-.L2073:
-	ldr	r1, [sp, #28]
-	add	r5, r5, #1
-	cmp	r5, r1
-	bne	.L2070
-	ldr	r3, [sp, #20]
+	b	.L1911
+.L1917:
+	ldr	r1, [fp, #-140]
+	add	r4, r4, #1
+	cmp	r4, r1
+	bcc	.L1914
+	ldr	r3, [fp, #-128]
 	add	r3, r3, #1
+	str	r3, [fp, #-128]
 	cmp	r3, #5
-	str	r3, [sp, #20]
-	bls	.L2074
-	b	.L2077
-.L2046:
+	bls	.L1918
+.L1919:
+	ldr	r5, .L1948
+	mov	r3, #0
+	ldr	r4, [fp, #-120]
+	ldr	r0, [r5, #3680]
+	str	r3, [r5, #3676]
+	bl	kfree
+	ldr	r0, [r5, #3684]
+	bl	kfree
+.L1889:
+	mov	r3, sp
+	ldr	r2, [fp, #-48]
+	bic	r3, r3, #8128
+	bic	r3, r3, #63
+	ldr	r3, [r3, #24]
+	cmp	r2, r3
+	beq	.L1928
+	bl	__stack_chk_fail
+.L1890:
 	cmp	r0, #64
-	mov	r4, r0
-	mov	r6, r1
-	mov	r7, r2
-	bne	.L2078
+	bne	.L1921
 	mov	r0, #262144
 	bl	ftl_malloc
 	str	r0, [r5, #3680]
 	mov	r0, #262144
 	bl	ftl_malloc
-	ldr	r3, [r5, #3680]
+	mov	r3, r0
 	str	r0, [r5, #3684]
-	cmp	r3, #0
-	cmpne	r0, #0
-	beq	.L2079
-	mov	r2, #1
-	mov	r1, r9
-	str	r2, [r5, #3676]
-	mov	r0, r3
+	ldr	r0, [r5, #3680]
+	cmp	r0, #0
+	cmpne	r3, #0
+	beq	.L1922
+	mov	r1, r10
 	mov	r2, #262144
+	mov	r3, #1
+	str	r3, [r5, #3676]
 	bl	ftl_memset
-.L2078:
-	ldr	r3, [r5, #3676]
-	cmp	r3, #0
-	beq	.L2105
+.L1923:
 	cmp	r4, #63
 	ldr	r0, [r5, #3680]
-	ldrhi	r3, .L2106+24
-	rsbls	r1, r4, #64
-	subls	r6, r6, r1
-	movhi	r1, r7
-	addls	r1, r7, r1, lsl #9
-	addhi	r3, r4, r3
+	sub	r3, r4, #64
+	rsbls	r4, r4, #64
+	addls	r6, r6, r3
+	addls	r7, r7, r4, lsl #9
 	addhi	r0, r0, r3, lsl #9
-	cmp	r10, #576
-	subcs	r6, r6, r8
-	subcs	r6, r6, #444
-	subcs	r6, r6, #2
+	cmp	r9, #576
+	mov	r1, r7
+	rsbcs	r8, r8, #576
+	addcs	r6, r6, r8
 	lsl	r2, r6, #9
 	bl	ftl_memcpy
-	b	.L2105
-.L2079:
-	ldr	r1, .L2106+28
-	ldr	r0, .L2106+32
+	b	.L1947
+.L1922:
+	ldr	r1, .L1948+20
+	ldr	r0, .L1948+24
 	bl	sftl_printk
-	b	.L2078
-.L2084:
-	add	sp, sp, #116
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2107:
+.L1921:
+	ldr	r3, [r5, #3676]
+	cmp	r3, #0
+	bne	.L1923
+	b	.L1947
+.L1928:
+	mov	r0, r4
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1949:
 	.align	2
-.L2106:
-	.word	__stack_chk_guard
+.L1948:
 	.word	.LANCHOR0
 	.word	-52655045
 	.word	.LC130
 	.word	1179535694
 	.word	.LC131
-	.word	8388544
 	.word	.LANCHOR1+633
 	.word	.LC132
-	.fnend
 	.size	FtlWriteToIDB, .-FtlWriteToIDB
 	.align	2
 	.global	sftl_write
@@ -14000,11 +14498,13 @@
 	.fpu softvfp
 	.type	sftl_write, %function
 sftl_write:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	mov	r5, r1
 	mov	r6, r2
 	mov	r4, r0
@@ -14013,9 +14513,8 @@
 	mov	r2, r5
 	mov	r1, r4
 	mov	r0, #0
-	pop	{r4, r5, r6, lr}
-	b	FtlWrite
-	.fnend
+	bl	FtlWrite
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
 	.size	sftl_write, .-sftl_write
 	.align	2
 	.global	rk_sftl_vendor_dev_ops_register
@@ -14024,23 +14523,25 @@
 	.fpu softvfp
 	.type	rk_sftl_vendor_dev_ops_register, %function
 rk_sftl_vendor_dev_ops_register:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r2, .L2113
-	ldr	r3, [r2, #3688]
-	cmp	r3, #0
-	streq	r0, [r2, #3688]
-	moveq	r0, r3
-	streq	r1, [r2, #3692]
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L1954
+	mov	r2, r0
+	ldr	r0, [r3, #3688]
+	cmp	r0, #0
+	streq	r2, [r3, #3688]
+	streq	r1, [r3, #3692]
 	mvnne	r0, #0
-	bx	lr
-.L2114:
+	ldmfd	sp, {fp, sp, pc}
+.L1955:
 	.align	2
-.L2113:
+.L1954:
 	.word	.LANCHOR0
-	.fnend
 	.size	rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register
 	.align	2
 	.global	rk_sftl_vendor_storage_init
@@ -14049,88 +14550,89 @@
 	.fpu softvfp
 	.type	rk_sftl_vendor_storage_init, %function
 rk_sftl_vendor_storage_init:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r5, .L1965
 	mov	r0, #65536
-	ldr	r5, .L2125
 	bl	ftl_malloc
 	cmp	r0, #0
+	mvneq	r4, #11
 	str	r0, [r5, #3696]
-	mvneq	r9, #11
-	beq	.L2115
-	ldr	r10, .L2125+4
-	mov	r7, #0
-	mov	r6, r7
-	mov	r8, r7
-.L2119:
+	beq	.L1956
+	ldr	r9, .L1965+4
+	mov	r8, #0
+	mov	r7, r8
+	mov	r6, r8
+.L1960:
 	ldr	r3, [r5, #3688]
-	mov	r1, #128
+	lsl	r0, r6, #7
 	ldr	r2, [r5, #3696]
-	lsl	r0, r8, #7
-	blx	r3
-	subs	r9, r0, #0
-	bne	.L2117
-	ldr	r4, [r5, #3696]
-	ldr	r3, [r4]
-	cmp	r3, r10
-	bne	.L2118
-	add	r2, r4, #61440
-	ldr	r3, [r4, #4]
-	ldr	r2, [r2, #4092]
-	cmp	r3, r6
-	sub	r2, r2, r3
-	clz	r2, r2
-	lsr	r2, r2, #5
-	movls	r2, #0
-	cmp	r2, #0
-	movne	r7, r8
-	movne	r6, r3
-.L2118:
-	add	r8, r8, #1
-	cmp	r8, #2
-	bne	.L2119
-	cmp	r6, #0
-	beq	.L2120
-	ldr	r3, [r5, #3688]
-	mov	r2, r4
 	mov	r1, #128
-	lsl	r0, r7, #7
 	blx	r3
-	subs	r9, r0, #0
-	beq	.L2115
-.L2117:
+	subs	r4, r0, #0
+	bne	.L1958
+	ldr	r3, [r5, #3696]
+	ldr	r2, [r3]
+	cmp	r2, r9
+	bne	.L1959
+	add	r1, r3, #61440
+	ldr	r2, [r3, #4]
+	cmp	r2, r7
+	ldr	r1, [r1, #4092]
+	sub	r1, r1, r2
+	clz	r1, r1
+	lsr	r1, r1, #5
+	movls	r1, #0
+	cmp	r1, #0
+	movne	r8, r6
+	movne	r7, r2
+.L1959:
+	cmp	r6, #1
+	bne	.L1964
+	cmp	r7, #0
+	beq	.L1961
+	ldr	r4, [r5, #3688]
+	mov	r2, r3
+	lsl	r0, r8, #7
+	mov	r1, #128
+	blx	r4
+	subs	r4, r0, #0
+	beq	.L1956
+.L1958:
 	ldr	r0, [r5, #3696]
-	mvn	r9, #0
+	mvn	r4, #0
 	bl	kfree
 	mov	r3, #0
 	str	r3, [r5, #3696]
-	b	.L2115
-.L2120:
+	b	.L1956
+.L1964:
+	mov	r6, #1
+	b	.L1960
+.L1961:
 	mov	r2, #65536
-	mov	r1, r6
-	mov	r0, r4
+	mov	r1, r7
+	mov	r0, r3
 	bl	memset
-	mov	r3, #1
-	add	r2, r4, #61440
-	str	r3, [r4, #4]
-	str	r10, [r4]
-	str	r3, [r2, #4092]
-	ldr	r3, .L2125+8
-	strh	r6, [r4, #12]	@ movhi
-	strh	r3, [r4, #14]	@ movhi
-.L2115:
-	mov	r0, r9
-	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
-.L2126:
+	add	r2, r0, #61440
+	str	r6, [r0, #4]
+	str	r9, [r0]
+	str	r6, [r2, #4092]
+	ldr	r2, .L1965+8
+	strh	r2, [r0, #14]	@ movhi
+.L1956:
+	mov	r0, r4
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
+.L1966:
 	.align	2
-.L2125:
+.L1965:
 	.word	.LANCHOR0
 	.word	1380668996
 	.word	-1032
-	.fnend
 	.size	rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init
 	.align	2
 	.global	rk_sftl_vendor_read
@@ -14139,49 +14641,49 @@
 	.fpu softvfp
 	.type	rk_sftl_vendor_read, %function
 rk_sftl_vendor_read:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L2137
-	ldr	ip, [r3, #3696]
-	cmp	ip, #0
-	beq	.L2132
-	push	{r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	mov	r3, #0
-	ldrh	r4, [ip, #10]
-.L2129:
-	cmp	r3, r4
-	bcc	.L2131
-	mvn	r0, #0
-	pop	{r4, r5, r6, pc}
-.L2131:
-	add	lr, ip, r3, lsl #3
-	ldrh	r5, [lr, #16]
-	cmp	r5, r0
-	bne	.L2130
-	ldrh	r4, [lr, #20]
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r3, .L1973
+	mov	r4, r0
 	mov	r0, r1
-	ldrh	r1, [lr, #18]
+	ldr	r3, [r3, #3696]
+	cmp	r3, #0
+	addne	r5, r3, #16
+	movne	lr, #0
+	ldrhne	r1, [r3, #10]
+	bne	.L1969
+.L1972:
+	mvn	r0, #0
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L1970:
+	add	lr, lr, #1
+.L1969:
+	cmp	r1, lr
+	bls	.L1972
+	lsl	ip, lr, #3
+	ldrh	r6, [r5, ip]
+	cmp	r6, r4
+	bne	.L1970
+	add	ip, r3, ip
+	ldrh	r4, [ip, #20]
+	ldrh	r1, [ip, #18]
 	cmp	r4, r2
 	movcs	r4, r2
 	add	r1, r1, #1024
 	mov	r2, r4
-	add	r1, ip, r1
+	add	r1, r3, r1
 	bl	memcpy
 	mov	r0, r4
-	pop	{r4, r5, r6, pc}
-.L2130:
-	add	r3, r3, #1
-	b	.L2129
-.L2132:
-	mvn	r0, #0
-	bx	lr
-.L2138:
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L1974:
 	.align	2
-.L2137:
+.L1973:
 	.word	.LANCHOR0
-	.fnend
 	.size	rk_sftl_vendor_read, .-rk_sftl_vendor_read
 	.align	2
 	.global	rk_sftl_vendor_write
@@ -14190,45 +14692,50 @@
 	.fpu softvfp
 	.type	rk_sftl_vendor_write, %function
 rk_sftl_vendor_write:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 24
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #28
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
+	sub	fp, ip, #4
 	sub	sp, sp, #28
-	ldr	r9, .L2159
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r9, .L1994
+	mov	r8, r1
+	mov	r7, r2
+	str	r0, [fp, #-52]
 	ldr	r4, [r9, #3696]
 	cmp	r4, #0
-	beq	.L2154
-	mov	r8, r2
+	beq	.L1990
+	add	r3, r7, #63
 	ldrh	r2, [r4, #10]
-	add	r6, r8, #63
+	bic	r3, r3, #63
+	str	r3, [fp, #-48]
 	ldrh	r3, [r4, #8]
-	mov	fp, r1
-	bic	r6, r6, #63
-	mov	r7, #0
-	str	r3, [sp, #4]
-.L2141:
-	cmp	r7, r2
-	bcc	.L2149
+	mov	r6, #0
+	str	r3, [fp, #-56]
+	add	r3, r4, #16
+.L1977:
+	cmp	r6, r2
+	bcc	.L1985
 	ldrh	r1, [r4, #14]
-	cmp	r6, r1
-	bhi	.L2154
+	ldr	r3, [fp, #-48]
+	cmp	r1, r3
+	bcc	.L1990
 	add	r3, r4, r2, lsl #3
-	uxth	r6, r6
-	strh	r0, [r3, #16]	@ movhi
-	ldrh	r2, [r4, #12]
-	strh	r8, [r3, #20]	@ movhi
-	strh	r2, [r3, #18]	@ movhi
-	add	r2, r2, r6
-	sub	r6, r1, r6
-	strh	r2, [r4, #12]	@ movhi
-	strh	r6, [r4, #14]	@ movhi
-	mov	r2, r8
-	ldrh	r0, [r3, #18]
-	mov	r1, fp
+	ldr	r2, [fp, #-52]
+	strh	r2, [r3, #16]	@ movhi
+	ldrh	r0, [r4, #12]
+	strh	r0, [r3, #18]	@ movhi
+	strh	r7, [r3, #20]	@ movhi
+	ldrh	r3, [fp, #-48]
+	add	r2, r0, r3
 	add	r0, r0, #1024
+	sub	r3, r1, r3
+	strh	r2, [r4, #12]	@ movhi
+	strh	r3, [r4, #14]	@ movhi
+	mov	r2, r7
+	mov	r1, r8
 	add	r0, r4, r0
 	bl	memcpy
 	ldrh	r3, [r4, #10]
@@ -14246,72 +14753,74 @@
 	movhi	r3, #0
 	strh	r3, [r4, #8]	@ movhi
 	ldr	r3, [r9, #3692]
-	b	.L2158
-.L2149:
-	add	r5, r4, r7, lsl #3
-	ldrh	r3, [r5, #16]
-	cmp	r3, r0
-	str	r3, [sp, #8]
-	bne	.L2142
-	ldrh	r1, [r5, #20]
+	b	.L1993
+.L1985:
+	lsl	r5, r6, #3
+	ldr	r0, [fp, #-52]
+	ldrh	r1, [r3, r5]
+	cmp	r1, r0
+	bne	.L1978
+	add	r5, r4, r5
 	add	r3, r4, #1024
+	ldrh	r1, [r5, #20]
 	add	r1, r1, #63
 	bic	r1, r1, #63
-	cmp	r8, r1
-	str	r1, [sp, #12]
-	bls	.L2143
+	str	r1, [fp, #-60]
+	cmp	r7, r1
+	bls	.L1979
 	ldrh	r1, [r4, #14]
-	cmp	r6, r1
-	subls	r2, r2, #1
-	ldrhls	r10, [r5, #18]
-	strls	r2, [sp, #16]
-	bls	.L2144
-.L2154:
+	ldr	r0, [fp, #-48]
+	cmp	r1, r0
+	subcs	r2, r2, #1
+	strcs	r2, [fp, #-64]
+	ldrhcs	r10, [r5, #18]
+	bcs	.L1980
+.L1990:
 	mvn	r0, #0
-	b	.L2139
-.L2145:
-	ldrh	r9, [r5, #20]
-	add	r0, r3, r10
+	b	.L1975
+.L1981:
 	ldrh	r2, [r5, #16]
-	add	r7, r7, #1
-	ldrh	r1, [r5, #18]
-	strh	r9, [r5, #12]	@ movhi
-	add	r9, r9, #63
-	bic	r9, r9, #63
+	add	r0, r3, r10
 	strh	r2, [r5, #8]	@ movhi
-	strh	r10, [r5, #10]	@ movhi
+	add	r6, r6, #1
+	ldrh	r2, [r5, #20]
+	ldrh	r1, [r5, #18]
+	strh	r2, [r5, #12]	@ movhi
+	add	r2, r2, #63
+	strh	r9, [r5, #10]	@ movhi
+	bic	r9, r2, #63
 	add	r1, r3, r1
 	mov	r2, r9
-	str	r3, [sp, #20]
+	str	r3, [fp, #-68]
 	bl	memcpy
-	ldr	r3, [sp, #20]
+	ldr	r3, [fp, #-68]
 	add	r10, r10, r9
-.L2144:
-	ldr	r2, [sp, #16]
+.L1980:
+	ldr	r2, [fp, #-64]
+	uxth	r9, r10
 	add	r5, r5, #8
-	cmp	r7, r2
-	bcc	.L2145
-	ldrh	r2, [sp, #8]
-	add	r7, r4, r7, lsl #3
-	uxth	r5, r10
+	cmp	r2, r6
+	bhi	.L1981
+	add	r6, r4, r6, lsl #3
+	ldr	r2, [fp, #-52]
 	uxtah	r0, r3, r10
-	strh	r8, [r7, #20]	@ movhi
-	strh	r2, [r7, #16]	@ movhi
-	mov	r1, fp
-	strh	r5, [r7, #18]	@ movhi
-	mov	r2, r8
+	mov	r1, r8
+	strh	r2, [r6, #16]	@ movhi
+	mov	r2, r7
+	strh	r9, [r6, #18]	@ movhi
+	strh	r7, [r6, #20]	@ movhi
 	bl	memcpy
-	uxth	r3, r6
-	ldrh	r6, [r4, #14]
-	add	r5, r5, r3
-	sub	r6, r6, r3
-	ldr	r3, [sp, #12]
-	strh	r5, [r4, #12]	@ movhi
-	add	r6, r6, r3
-	strh	r6, [r4, #14]	@ movhi
-.L2146:
-	ldr	r3, [r4, #4]
+	ldrh	r2, [fp, #-48]
+	ldrh	r3, [r4, #14]
+	add	r9, r2, r9
+	strh	r9, [r4, #12]	@ movhi
+	sub	r3, r3, r2
+	ldr	r2, [fp, #-60]
+	add	r3, r3, r2
+	strh	r3, [r4, #14]	@ movhi
+.L1982:
 	add	r2, r4, #61440
+	ldr	r3, [r4, #4]
 	add	r3, r3, #1
 	str	r3, [r4, #4]
 	str	r3, [r2, #4092]
@@ -14321,36 +14830,38 @@
 	cmp	r3, #1
 	movhi	r3, #0
 	strh	r3, [r4, #8]	@ movhi
-	ldr	r3, .L2159
+	ldr	r3, .L1994
 	ldr	r3, [r3, #3692]
-.L2158:
-	ldr	r0, [sp, #4]
+.L1993:
+	ldr	r0, [fp, #-56]
 	mov	r2, r4
 	mov	r1, #128
 	lsl	r0, r0, #7
 	blx	r3
 	mov	r0, #0
-.L2139:
-	add	sp, sp, #28
-	@ sp needed
-	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2143:
+.L1975:
+	sub	sp, fp, #40
+	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
+.L1979:
 	ldrh	r0, [r5, #18]
-	mov	r2, r8
-	mov	r1, fp
+	mov	r2, r7
+	mov	r1, r8
 	add	r0, r3, r0
 	bl	memcpy
-	strh	r8, [r5, #20]	@ movhi
-	b	.L2146
-.L2142:
-	add	r7, r7, #1
-	b	.L2141
-.L2160:
+	strh	r7, [r5, #20]	@ movhi
+	b	.L1982
+.L1978:
+	add	r6, r6, #1
+	b	.L1977
+.L1995:
 	.align	2
-.L2159:
+.L1994:
 	.word	.LANCHOR0
-	.fnend
 	.size	rk_sftl_vendor_write, .-rk_sftl_vendor_write
+	.section	.rodata.str1.1
+.LC133:
+	.ascii	"copy_from_user error %d %p %p\012\000"
+	.text
 	.align	2
 	.global	rk_sftl_vendor_storage_ioctl
 	.syntax unified
@@ -14358,172 +14869,147 @@
 	.fpu softvfp
 	.type	rk_sftl_vendor_storage_ioctl, %function
 rk_sftl_vendor_storage_ioctl:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	push	{r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{r4, r5, r6, r7, fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
 	mov	r0, #4096
-	mov	r5, r2
+	mov	r4, r2
 	mov	r6, r1
 	bl	ftl_malloc
-	subs	r4, r0, #0
-	mvneq	r5, #0
-	beq	.L2161
-	ldr	r3, .L2186
+	subs	r5, r0, #0
+	mvneq	r4, #0
+	beq	.L1996
+	ldr	r3, .L2014
 	cmp	r6, r3
-	beq	.L2164
+	beq	.L1998
 	add	r3, r3, #1
 	cmp	r6, r3
-	beq	.L2165
-.L2183:
-	mvn	r5, #13
-	b	.L2163
-.L2164:
-	ldr	r6, .L2186+4
-	mov	r3, sp
-	and	r3, r3, r6
-	ldr	r3, [r3, #8]
-	.syntax divided
-@ 114 "./include/linux/uaccess.h" 1
-	adds r2, r5, #8; sbcccs r2, r2, r3; movcc r3, #0
-@ 0 "" 2
-	.arm
-	.syntax unified
-	cmp	r3, #0
-	mov	r2, #8
-	bne	.L2166
-	mov	r1, r5
-	bl	arm_copy_from_user
-	subs	r2, r0, #0
-	beq	.L2167
-.L2166:
-	rsb	r0, r2, #8
-	mov	r1, #0
-	add	r0, r4, r0
-	bl	memset
-	mov	r2, r5
-	mov	r1, #256
-.L2185:
-	ldr	r0, .L2186+8
-	bl	sftl_printk
-	b	.L2183
-.L2168:
-	mov	r3, sp
-	uxth	r2, r0
-	and	r6, r6, r3
-	strh	r0, [r4, #6]	@ movhi
-	add	r2, r2, #8
-	ldr	r3, [r6, #8]
-	.syntax divided
-@ 132 "./include/linux/uaccess.h" 1
-	adds r1, r5, r2; sbcccs r1, r1, r3; movcc r3, #0
-@ 0 "" 2
-	.arm
-	.syntax unified
-	cmp	r3, #0
-	bne	.L2183
+	beq	.L1999
+.L2012:
+	mvn	r4, #13
+.L2000:
 	mov	r0, r5
+	bl	kfree
+.L1996:
+	mov	r0, r4
+	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
+.L1998:
 	mov	r1, r4
-	bl	arm_copy_to_user
-	subs	r5, r0, #0
-	beq	.L2163
-	b	.L2183
-.L2165:
-	ldr	r7, .L2186+4
-	mov	r3, sp
-	and	r3, r3, r7
-	ldr	r3, [r3, #8]
-	.syntax divided
-@ 114 "./include/linux/uaccess.h" 1
-	adds r2, r5, #8; sbcccs r2, r2, r3; movcc r3, #0
-@ 0 "" 2
-	.arm
-	.syntax unified
-	cmp	r3, #0
 	mov	r2, #8
-	bne	.L2170
-	mov	r1, r5
-	bl	arm_copy_from_user
-	subs	r2, r0, #0
-	beq	.L2171
-.L2170:
-	rsb	r0, r2, #8
-	mov	r1, #0
-	add	r0, r4, r0
-	bl	memset
-	mov	r2, r5
-	mov	r1, #276
-	b	.L2185
-.L2167:
-	ldr	r2, [r4]
-	ldr	r3, .L2186+12
+	bl	_copy_from_user
+	cmp	r0, #0
+	beq	.L2001
+	mov	r2, r4
+	mov	r1, #256
+.L2013:
+	ldr	r0, .L2014+4
+	bl	sftl_printk
+	b	.L2012
+.L2001:
+	ldr	r2, [r5]
+	ldr	r3, .L2014+8
 	cmp	r2, r3
-	bne	.L2172
-	ldrh	r2, [r4, #6]
-	add	r1, r4, #8
-	ldrh	r0, [r4, #4]
+	beq	.L2002
+.L2003:
+	mvn	r4, #0
+	b	.L2000
+.L2002:
+	ldrh	r2, [r5, #6]
+	add	r1, r5, #8
+	ldrh	r0, [r5, #4]
 	bl	rk_sftl_vendor_read
 	cmn	r0, #1
-	bne	.L2168
-.L2172:
-	mvn	r5, #0
-.L2163:
-	mov	r0, r4
-	bl	kfree
-.L2161:
-	mov	r0, r5
-	pop	{r4, r5, r6, r7, r8, pc}
-.L2171:
-	ldr	r2, [r4]
-	ldr	r3, .L2186+12
-	cmp	r2, r3
-	bne	.L2172
-	ldrh	r6, [r4, #6]
-	movw	r3, #4087
-	cmp	r6, r3
-	bhi	.L2172
+	beq	.L2003
 	mov	r3, sp
-	add	r6, r6, #8
-	and	r7, r7, r3
-	ldr	r3, [r7, #8]
+	strh	r0, [r5, #6]	@ movhi
+	bic	r1, r3, #8128
+	uxth	r2, r0
+	bic	r1, r1, #63
+	add	r2, r2, #8
+	ldr	r3, [r1, #8]
 	.syntax divided
-@ 114 "./include/linux/uaccess.h" 1
-	adds r2, r5, r6; sbcccs r2, r2, r3; movcc r3, #0
+@ 177 "./include/linux/uaccess.h" 1
+	.syntax unified
+adds r0, r4, r2; sbcscc r0, r0, r3; movcc r3, #0
 @ 0 "" 2
 	.arm
 	.syntax unified
 	cmp	r3, #0
-	mov	r2, r6
-	bne	.L2173
+	bne	.L2012
+	.syntax divided
+@ 89 "./arch/arm/include/asm/domain.h" 1
+	mrc	p15, 0, r6, c3, c0	@ get domain
+@ 0 "" 2
+	.arm
+	.syntax unified
+	bic	r3, r6, #12
+	orr	r3, r3, #4
+	.syntax divided
+@ 99 "./arch/arm/include/asm/domain.h" 1
+	mcr	p15, 0, r3, c3, c0	@ set domain
+@ 0 "" 2
+@ 102 "./arch/arm/include/asm/domain.h" 1
+	isb 
+@ 0 "" 2
+	.arm
+	.syntax unified
 	mov	r1, r5
 	mov	r0, r4
-	bl	arm_copy_from_user
-	subs	r2, r0, #0
-	beq	.L2174
-.L2173:
-	sub	r6, r6, r2
-	mov	r1, #0
-	add	r0, r4, r6
-	bl	memset
-	mov	r2, r5
-	movw	r1, #283
-	b	.L2185
-.L2174:
-	ldrh	r2, [r4, #6]
-	add	r1, r4, #8
-	ldrh	r0, [r4, #4]
+	bl	arm_copy_to_user
+	mov	r4, r0
+	.syntax divided
+@ 99 "./arch/arm/include/asm/domain.h" 1
+	mcr	p15, 0, r6, c3, c0	@ set domain
+@ 0 "" 2
+@ 102 "./arch/arm/include/asm/domain.h" 1
+	isb 
+@ 0 "" 2
+	.arm
+	.syntax unified
+	cmp	r0, #0
+	beq	.L2000
+	b	.L2012
+.L1999:
+	mov	r1, r4
+	mov	r2, #8
+	bl	_copy_from_user
+	cmp	r0, #0
+	movne	r2, r4
+	movne	r1, #276
+	bne	.L2013
+	ldr	r2, [r5]
+	ldr	r3, .L2014+8
+	cmp	r2, r3
+	bne	.L2003
+	ldrh	r2, [r5, #6]
+	movw	r3, #4087
+	cmp	r2, r3
+	bhi	.L2003
+	add	r2, r2, #8
+	mov	r1, r4
+	mov	r0, r5
+	uxth	r2, r2
+	bl	_copy_from_user
+	cmp	r0, #0
+	movne	r2, r4
+	movwne	r1, #283
+	bne	.L2013
+	ldrh	r2, [r5, #6]
+	add	r1, r5, #8
+	ldrh	r0, [r5, #4]
 	bl	rk_sftl_vendor_write
-	mov	r5, r0
-	b	.L2163
-.L2187:
+	mov	r4, r0
+	b	.L2000
+.L2015:
 	.align	2
-.L2186:
+.L2014:
 	.word	1074034177
-	.word	-8192
 	.word	.LC133
 	.word	1448232273
-	.fnend
 	.size	rk_sftl_vendor_storage_ioctl, .-rk_sftl_vendor_storage_ioctl
 	.align	2
 	.global	rk_sftl_vendor_register
@@ -14532,18 +15018,24 @@
 	.fpu softvfp
 	.type	rk_sftl_vendor_register, %function
 rk_sftl_vendor_register:
-	.fnstart
 	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	r0, .L2189
-	b	misc_register
-.L2190:
+	@ frame_needed = 1, uses_anonymous_args = 0
+	mov	ip, sp
+	push	{fp, ip, lr, pc}
+	sub	fp, ip, #4
+	push	{lr}
+	bl	__gnu_mcount_nc
+	ldr	r0, .L2017
+	bl	misc_register
+	ldmfd	sp, {fp, sp, pc}
+.L2018:
 	.align	2
-.L2189:
+.L2017:
 	.word	.LANCHOR2+12
-	.fnend
 	.size	rk_sftl_vendor_register, .-rk_sftl_vendor_register
+	.section	.rodata.str1.1
+.LC134:
+	.ascii	"vendor_storage\000"
 	.global	g_nand_ops
 	.global	g_nand_phy_info
 	.global	gc_ink_free_return_value
@@ -14693,164 +15185,164 @@
 	.global	c_ftl_nand_die_num
 	.global	c_ftl_nand_type
 	.section	.rodata
-	.align	3
+	.align	2
 	.set	.LANCHOR1,. + 0
-	.type	__func__.7563, %object
-	.size	__func__.7563, 17
-__func__.7563:
+	.type	__func__.30, %object
+	.size	__func__.30, 17
+__func__.30:
 	.ascii	"INSERT_DATA_LIST\000"
-	.type	__func__.7558, %object
-	.size	__func__.7558, 17
-__func__.7558:
+	.type	__func__.31, %object
+	.size	__func__.31, 17
+__func__.31:
 	.ascii	"INSERT_FREE_LIST\000"
-	.type	__func__.7594, %object
-	.size	__func__.7594, 17
-__func__.7594:
+	.type	__func__.29, %object
+	.size	__func__.29, 17
+__func__.29:
 	.ascii	"List_remove_node\000"
-	.type	__func__.7626, %object
-	.size	__func__.7626, 22
-__func__.7626:
+	.type	__func__.28, %object
+	.size	__func__.28, 22
+__func__.28:
 	.ascii	"List_update_data_list\000"
-	.type	__func__.7733, %object
-	.size	__func__.7733, 22
-__func__.7733:
+	.type	__func__.22, %object
+	.size	__func__.22, 22
+__func__.22:
 	.ascii	"select_l2p_ram_region\000"
-	.type	__func__.8053, %object
-	.size	__func__.8053, 16
-__func__.8053:
+	.type	__func__.14, %object
+	.size	__func__.14, 16
+__func__.14:
 	.ascii	"make_superblock\000"
-	.type	__func__.8229, %object
-	.size	__func__.8229, 19
-__func__.8229:
+	.type	__func__.8, %object
+	.size	__func__.8, 19
+__func__.8:
 	.ascii	"get_new_active_ppa\000"
-	.type	__func__.13983, %object
-	.size	__func__.13983, 17
-__func__.13983:
+	.type	__func__.1, %object
+	.size	__func__.1, 17
+__func__.1:
 	.ascii	"FlashEraseBlocks\000"
-	.type	__func__.7668, %object
-	.size	__func__.7668, 26
-__func__.7668:
+	.type	__func__.26, %object
+	.size	__func__.26, 26
+__func__.26:
 	.ascii	"ftl_map_blk_alloc_new_blk\000"
-	.type	__func__.7173, %object
-	.size	__func__.7173, 11
-__func__.7173:
+	.type	__func__.37, %object
+	.size	__func__.37, 11
+__func__.37:
 	.ascii	"FtlMemInit\000"
-	.type	__func__.7400, %object
-	.size	__func__.7400, 14
-__func__.7400:
+	.type	__func__.34, %object
+	.size	__func__.34, 14
+__func__.34:
 	.ascii	"FtlBbt2Bitmap\000"
-	.type	__func__.8074, %object
-	.size	__func__.8074, 18
-__func__.8074:
+	.type	__func__.13, %object
+	.size	__func__.13, 18
+__func__.13:
 	.ascii	"SupperBlkListInit\000"
-	.type	__func__.13940, %object
-	.size	__func__.13940, 15
-__func__.13940:
+	.type	__func__.3, %object
+	.size	__func__.3, 15
+__func__.3:
 	.ascii	"FlashReadPages\000"
-	.type	__func__.7845, %object
-	.size	__func__.7845, 14
-__func__.7845:
+	.type	__func__.19, %object
+	.size	__func__.19, 14
+__func__.19:
 	.ascii	"FtlScanSysBlk\000"
-	.type	__func__.7443, %object
-	.size	__func__.7443, 11
-__func__.7443:
+	.type	__func__.32, %object
+	.size	__func__.32, 11
+__func__.32:
 	.ascii	"FtlLoadBbt\000"
-	.type	__func__.13959, %object
-	.size	__func__.13959, 15
-__func__.13959:
+	.type	__func__.2, %object
+	.size	__func__.2, 15
+__func__.2:
 	.ascii	"FlashProgPages\000"
-	.type	__func__.8201, %object
-	.size	__func__.8201, 25
-__func__.8201:
+	.type	__func__.10, %object
+	.size	__func__.10, 25
+__func__.10:
 	.ascii	"allocate_data_superblock\000"
-	.type	__func__.8242, %object
-	.size	__func__.8242, 16
-__func__.8242:
+	.type	__func__.7, %object
+	.size	__func__.7, 16
+__func__.7:
 	.ascii	"update_vpc_list\000"
-	.type	__func__.8249, %object
-	.size	__func__.8249, 20
-__func__.8249:
+	.type	__func__.6, %object
+	.size	__func__.6, 20
+__func__.6:
 	.ascii	"decrement_vpc_count\000"
-	.type	__func__.7694, %object
-	.size	__func__.7694, 31
-__func__.7694:
-	.ascii	"Ftl_write_map_blk_to_last_page\000"
-	.type	__func__.7708, %object
-	.size	__func__.7708, 16
-__func__.7708:
+	.type	__func__.23, %object
+	.size	__func__.23, 16
+__func__.23:
 	.ascii	"FtlMapWritePage\000"
-	.type	__func__.7635, %object
-	.size	__func__.7635, 16
-__func__.7635:
+	.type	__func__.27, %object
+	.size	__func__.27, 16
+__func__.27:
 	.ascii	"load_l2p_region\000"
-	.type	__func__.7679, %object
-	.size	__func__.7679, 15
-__func__.7679:
+	.type	__func__.25, %object
+	.size	__func__.25, 15
+__func__.25:
 	.ascii	"ftl_map_blk_gc\000"
-	.type	__func__.7750, %object
-	.size	__func__.7750, 9
-__func__.7750:
+	.type	__func__.24, %object
+	.size	__func__.24, 31
+__func__.24:
+	.ascii	"Ftl_write_map_blk_to_last_page\000"
+	.type	__func__.21, %object
+	.size	__func__.21, 9
+__func__.21:
 	.ascii	"log2phys\000"
-	.type	__func__.7962, %object
-	.size	__func__.7962, 16
-__func__.7962:
+	.type	__func__.16, %object
+	.size	__func__.16, 16
+__func__.16:
 	.ascii	"FtlReUsePrevPpa\000"
-	.type	__func__.7996, %object
-	.size	__func__.7996, 22
-__func__.7996:
+	.type	__func__.15, %object
+	.size	__func__.15, 22
+__func__.15:
 	.ascii	"FtlRecoverySuperblock\000"
-	.type	__func__.8116, %object
-	.size	__func__.8116, 14
-__func__.8116:
+	.type	__func__.11, %object
+	.size	__func__.11, 14
+__func__.11:
 	.ascii	"ftl_check_vpc\000"
-	.type	__func__.7823, %object
-	.size	__func__.7823, 15
-__func__.7823:
+	.type	__func__.20, %object
+	.size	__func__.20, 15
+__func__.20:
 	.ascii	"FtlVpcTblFlush\000"
-	.type	__func__.8099, %object
-	.size	__func__.8099, 21
-__func__.8099:
+	.type	__func__.12, %object
+	.size	__func__.12, 21
+__func__.12:
 	.ascii	"FtlVpcCheckAndModify\000"
-	.type	__func__.8222, %object
-	.size	__func__.8222, 29
-__func__.8222:
+	.type	__func__.9, %object
+	.size	__func__.9, 29
+__func__.9:
 	.ascii	"allocate_new_data_superblock\000"
-	.type	__func__.7297, %object
-	.size	__func__.7297, 13
-__func__.7297:
+	.type	__func__.36, %object
+	.size	__func__.36, 13
+__func__.36:
 	.ascii	"FtlProgPages\000"
-	.type	__func__.8319, %object
-	.size	__func__.8319, 19
-__func__.8319:
+	.type	__func__.5, %object
+	.size	__func__.5, 19
+__func__.5:
 	.ascii	"FtlGcFreeTempBlock\000"
-	.type	__func__.8432, %object
-	.size	__func__.8432, 23
-__func__.8432:
+	.type	__func__.4, %object
+	.size	__func__.4, 23
+__func__.4:
 	.ascii	"rk_ftl_garbage_collect\000"
-	.type	__func__.7325, %object
-	.size	__func__.7325, 9
-__func__.7325:
+	.type	__func__.35, %object
+	.size	__func__.35, 9
+__func__.35:
 	.ascii	"FtlWrite\000"
-	.type	__func__.7894, %object
-	.size	__func__.7894, 15
-__func__.7894:
+	.type	__func__.18, %object
+	.size	__func__.18, 15
+__func__.18:
 	.ascii	"FtlLoadSysInfo\000"
-	.type	__func__.7916, %object
-	.size	__func__.7916, 18
-__func__.7916:
+	.type	__func__.17, %object
+	.size	__func__.17, 18
+__func__.17:
 	.ascii	"FtlMapTblRecovery\000"
-	.type	__func__.14102, %object
-	.size	__func__.14102, 14
-__func__.14102:
+	.type	__func__.0, %object
+	.size	__func__.0, 14
+__func__.0:
 	.ascii	"FtlWriteToIDB\000"
 	.space	1
 	.type	rk_sftl_vendor_storage_fops, %object
-	.size	rk_sftl_vendor_storage_fops, 160
+	.size	rk_sftl_vendor_storage_fops, 128
 rk_sftl_vendor_storage_fops:
-	.space	36
+	.space	40
 	.word	rk_sftl_vendor_storage_ioctl
 	.word	rk_sftl_vendor_storage_ioctl
-	.space	116
+	.space	80
 	.data
 	.align	2
 	.set	.LANCHOR2,. + 0
@@ -15502,281 +15994,5 @@
 	.size	gp_last_act_superblock, 4
 gp_last_act_superblock:
 	.space	4
-	.section	.rodata.str1.1,"aMS",%progbits,1
-.LC0:
-	.ascii	"SFTL version: 5.0.58 20220814\000"
-.LC1:
-	.ascii	"\012%s\012\000"
-.LC2:
-	.ascii	"act blk: %x %x %x %x %x %x\012\000"
-.LC3:
-	.ascii	"buf blk: %x %x %x %x %x %x\012\000"
-.LC4:
-	.ascii	"tmp blk: %x %x %x %x %x %x\012\000"
-.LC5:
-	.ascii	"gc blk: %x %x %x %x %x %x\012\000"
-.LC6:
-	.ascii	"free blk: %x %x %x\012\000"
-.LC7:
-	.ascii	"phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
-	.ascii	"\000"
-.LC8:
-	.ascii	"\012!!!!! error @ func:%s - line:%d\012\000"
-.LC9:
-	.ascii	"FLASH INFO:\012\000"
-.LC10:
-	.ascii	"Device Capacity: %d MB\012\000"
-.LC11:
-	.ascii	"FTL INFO:\012\000"
-.LC12:
-	.ascii	"g_MaxLpn = 0x%x\012\000"
-.LC13:
-	.ascii	"g_VaildLpn = 0x%x\012\000"
-.LC14:
-	.ascii	"read_page_count = 0x%x\012\000"
-.LC15:
-	.ascii	"discard_page_count = 0x%x\012\000"
-.LC16:
-	.ascii	"write_page_count = 0x%x\012\000"
-.LC17:
-	.ascii	"cache_write_count = 0x%x\012\000"
-.LC18:
-	.ascii	"l2p_write_count = 0x%x\012\000"
-.LC19:
-	.ascii	"gc_page_count = 0x%x\012\000"
-.LC20:
-	.ascii	"totle_write = %d MB\012\000"
-.LC21:
-	.ascii	"totle_read = %d MB\012\000"
-.LC22:
-	.ascii	"GSV = 0x%x\012\000"
-.LC23:
-	.ascii	"GDV = 0x%x\012\000"
-.LC24:
-	.ascii	"bad blk num = %d\012\000"
-.LC25:
-	.ascii	"free_superblocks = 0x%x\012\000"
-.LC26:
-	.ascii	"mlc_EC = 0x%x\012\000"
-.LC27:
-	.ascii	"slc_EC = 0x%x\012\000"
-.LC28:
-	.ascii	"avg_EC = 0x%x\012\000"
-.LC29:
-	.ascii	"sys_EC = 0x%x\012\000"
-.LC30:
-	.ascii	"max_EC = 0x%x\012\000"
-.LC31:
-	.ascii	"min_EC = 0x%x\012\000"
-.LC32:
-	.ascii	"PLT = 0x%x\012\000"
-.LC33:
-	.ascii	"POT = 0x%x\012\000"
-.LC34:
-	.ascii	"MaxSector = 0x%x\012\000"
-.LC35:
-	.ascii	"init_sys_blks_pp = 0x%x\012\000"
-.LC36:
-	.ascii	"sys_blks_pp = 0x%x\012\000"
-.LC37:
-	.ascii	"free sysblock = 0x%x\012\000"
-.LC38:
-	.ascii	"data_blks_pp = 0x%x\012\000"
-.LC39:
-	.ascii	"data_op_blks_pp = 0x%x\012\000"
-.LC40:
-	.ascii	"max_data_blks = 0x%x\012\000"
-.LC41:
-	.ascii	"Sys.id = 0x%x\012\000"
-.LC42:
-	.ascii	"Bbt.id = 0x%x\012\000"
-.LC43:
-	.ascii	"ACT.page = 0x%x\012\000"
-.LC44:
-	.ascii	"ACT.plane = 0x%x\012\000"
-.LC45:
-	.ascii	"ACT.id = 0x%x\012\000"
-.LC46:
-	.ascii	"ACT.mode = 0x%x\012\000"
-.LC47:
-	.ascii	"ACT.a_pages = 0x%x\012\000"
-.LC48:
-	.ascii	"ACT VPC = 0x%x\012\000"
-.LC49:
-	.ascii	"BUF.page = 0x%x\012\000"
-.LC50:
-	.ascii	"BUF.plane = 0x%x\012\000"
-.LC51:
-	.ascii	"BUF.id = 0x%x\012\000"
-.LC52:
-	.ascii	"BUF.mode = 0x%x\012\000"
-.LC53:
-	.ascii	"BUF.a_pages = 0x%x\012\000"
-.LC54:
-	.ascii	"BUF VPC = 0x%x\012\000"
-.LC55:
-	.ascii	"TMP.page = 0x%x\012\000"
-.LC56:
-	.ascii	"TMP.plane = 0x%x\012\000"
-.LC57:
-	.ascii	"TMP.id = 0x%x\012\000"
-.LC58:
-	.ascii	"TMP.mode = 0x%x\012\000"
-.LC59:
-	.ascii	"TMP.a_pages = 0x%x\012\000"
-.LC60:
-	.ascii	"GC.page = 0x%x\012\000"
-.LC61:
-	.ascii	"GC.plane = 0x%x\012\000"
-.LC62:
-	.ascii	"GC.id = 0x%x\012\000"
-.LC63:
-	.ascii	"GC.mode = 0x%x\012\000"
-.LC64:
-	.ascii	"GC.a_pages = 0x%x\012\000"
-.LC65:
-	.ascii	"WR_CHK = %x %x %x\012\000"
-.LC66:
-	.ascii	"Read Err Cnt = 0x%x\012\000"
-.LC67:
-	.ascii	"Prog Err Cnt = 0x%x\012\000"
-.LC68:
-	.ascii	"gc_free_blk_th= 0x%x\012\000"
-.LC69:
-	.ascii	"gc_merge_free_blk_th= 0x%x\012\000"
-.LC70:
-	.ascii	"gc_skip_write_count= 0x%x\012\000"
-.LC71:
-	.ascii	"gc_blk_index= 0x%x\012\000"
-.LC72:
-	.ascii	"free min EC= 0x%x\012\000"
-.LC73:
-	.ascii	"free max EC= 0x%x\012\000"
-.LC74:
-	.ascii	"GC__SB VPC = 0x%x\012\000"
-.LC75:
-	.ascii	"%d. [0x%x]=0x%x 0x%x  0x%x\012\000"
-.LC76:
-	.ascii	"free %d. [0x%x] 0x%x  0x%x\012\000"
-.LC77:
-	.ascii	"%s\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 %p + 0x%x:\000"
-.LC82:
-	.ascii	"0x%08x,\000"
-.LC83:
-	.ascii	"0x%04x,\000"
-.LC84:
-	.ascii	"0x%02x,\000"
-.LC85:
-	.ascii	"\012\000"
-.LC86:
-	.ascii	"%s: addr: %x is in id block!!!!!!!!!!\012\000"
-.LC87:
-	.ascii	"not free: w: d:\000"
-.LC88:
-	.ascii	"not free: w: s:\000"
-.LC89:
-	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d, error\012"
-	.ascii	"\000"
-.LC90:
-	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d\012\000"
-.LC91:
-	.ascii	"%s error allocating memory. return -1\012\000"
-.LC92:
-	.ascii	"FlashReadPages %x %x error_ecc_bits %d\012\000"
-.LC93:
-	.ascii	"data:\000"
-.LC94:
-	.ascii	"spare:\000"
-.LC95:
-	.ascii	"prog read error: = %x\012\000"
-.LC96:
-	.ascii	"prog read REFRESH: = %x\012\000"
-.LC97:
-	.ascii	"prog read s error: = %x %x %x %x %x\012\000"
-.LC98:
-	.ascii	"prog read d error: = %x %x %x %x %x\012\000"
-.LC99:
-	.ascii	"FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
-.LC100:
-	.ascii	"FtlBbmTblFlush error:%x\012\000"
-.LC101:
-	.ascii	"FtlBbmTblFlush error = %x error count = %d\012\000"
-.LC102:
-	.ascii	"FtlGcFreeBadSuperBlk 0x%x\012\000"
-.LC103:
-	.ascii	"decrement_vpc_count %x = %d\012\000"
-.LC104:
-	.ascii	"FtlMapWritePage error = %x \012\000"
-.LC105:
-	.ascii	"FtlMapWritePage error = %x error count = %d\012\000"
-.LC106:
-	.ascii	"region_id = %x phyAddr = %x\012\000"
-.LC107:
-	.ascii	"map_ppn:\000"
-.LC108:
-	.ascii	"load_l2p_region refresh = %x phyAddr = %x\012\000"
-.LC109:
-	.ascii	"data prev_ppa = %x error...................\012\000"
-.LC110:
-	.ascii	"spuer block %x vpn is 0\012 \000"
-.LC111:
-	.ascii	"...%s enter...\012\000"
-.LC112:
-	.ascii	"FtlCheckVpc2 %x = %x  %x\012\000"
-.LC113:
-	.ascii	"free blk vpc error %x = %x  %x\012\000"
-.LC114:
-	.ascii	"ftl_scan_all_data = %x\012\000"
-.LC115:
-	.ascii	"scan lpa = %x ppa= %x\012\000"
-.LC116:
-	.ascii	"lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
-	.ascii	"\000"
-.LC117:
-	.ascii	"FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000"
-.LC118:
-	.ascii	"FtlVendorPartRead refresh = %x phyAddr = %x\012\000"
-.LC119:
-	.ascii	"no ect\000"
-.LC120:
-	.ascii	"FtlVpcTblFlush error = %x error count = %d\012\000"
-.LC121:
-	.ascii	"FtlCheckVpc %x = %x  %x\012\000"
-.LC122:
-	.ascii	"FtlProgPages error %x = %d\012\000"
-.LC123:
-	.ascii	"Ftlwrite decrement_vpc_count %x = %d\012\000"
-.LC124:
-	.ascii	"SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000"
-.LC125:
-	.ascii	"FtlWrite: ecc error:%x %x %x\012\000"
-.LC126:
-	.ascii	"FtlWrite: lpa error:%x %x\012\000"
-.LC127:
-	.ascii	"%s hash error this.id =%x page =%x pre_id =%x hash "
-	.ascii	"=%x hash_r =%x\012\000"
-.LC128:
-	.ascii	"%s last blk_id =%x page =%x hash error hash =%x has"
-	.ascii	"h_r =%x\012\000"
-.LC129:
-	.ascii	"%s scan blk_id =%x page =%x hash error hash =%x has"
-	.ascii	"h_r =%x\012\000"
-.LC130:
-	.ascii	"write_idblock %x %x\012\000"
-.LC131:
-	.ascii	"write_idblock fail! %x %x %x %x\012\000"
-.LC132:
-	.ascii	"%s idb buffer alloc fail\012\000"
-.LC133:
-	.ascii	"copy_from_user error %d %p %p\012\000"
-.LC134:
-	.ascii	"vendor_storage\000"
+	.ident	"GCC: (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621"
+	.section	.note.GNU-stack,"",%progbits

--
Gitblit v1.6.2