From f70575805708cabdedea7498aaa3f710fde4d920 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 31 Jan 2024 03:29:01 +0000
Subject: [PATCH] add lvds1024*800

---
 kernel/drivers/rk_nand/rk_ftl_arm_v7.S | 33712 ++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 17,122 insertions(+), 16,590 deletions(-)

diff --git a/kernel/drivers/rk_nand/rk_ftl_arm_v7.S b/kernel/drivers/rk_nand/rk_ftl_arm_v7.S
index 65ad9ed..da6f8a9 100644
--- a/kernel/drivers/rk_nand/rk_ftl_arm_v7.S
+++ b/kernel/drivers/rk_nand/rk_ftl_arm_v7.S
@@ -5,10 +5,9 @@
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * date: 2020-09-23
+ * date: 2021-07-26
  */
 	.arch armv7-a
-	.fpu softvfp
 	.eabi_attribute 20, 1
 	.eabi_attribute 21, 1
 	.eabi_attribute 23, 3
@@ -17,139 +16,246 @@
 	.eabi_attribute 26, 2
 	.eabi_attribute 30, 4
 	.eabi_attribute 34, 1
-	.eabi_attribute 18, 4
-	.file	"rk_ftl_arm_v7.S"
-#APP
+	.file	"rk_ftl_arm_v7.c"
 	.syntax unified
 	.text
 	.align	2
+	.fpu softvfp
+	.type	ndelay, %function
+ndelay:
+	.fnstart
+	@ args = 0, pretend = 0, frame = 0
+	@ frame_needed = 0, uses_anonymous_args = 0
+	@ link register save eliminated.
+	ldr	r3, .L2
+	add	r0, r0, #996
+	add	r0, r0, #3
+	umull	r0, r1, r0, r3
+	ldr	r3, .L2+4
+	ldr	r3, [r3, #8]
+	lsr	r0, r1, #6
+	bx	r3	@ indirect register sibling call
+.L3:
+	.align	2
+.L2:
+	.word	274877907
+	.word	arm_delay_ops
+	.fnend
+	.size	ndelay, .-ndelay
+	.align	2
+	.syntax unified
+	.arm
+	.fpu softvfp
+	.type	flash_read_ecc, %function
+flash_read_ecc:
+	.fnstart
+	@ args = 0, pretend = 0, frame = 0
+	@ frame_needed = 0, uses_anonymous_args = 0
+	ldr	r3, .L6
+	push	{r4, lr}
+	.save {r4, lr}
+	ldr	r4, [r3, r0, lsl #3]
+	add	r3, r3, r0, lsl #3
+	mov	r0, #80
+	ldrb	r3, [r3, #4]	@ zero_extendqisi2
+	add	r4, r4, r3, lsl #8
+	mov	r3, #122
+	str	r3, [r4, #2056]
+	bl	ndelay
+	ldr	r3, [r4, #2048]
+	ldr	r0, [r4, #2048]
+	and	r3, r3, #15
+	and	r0, r0, #15
+	cmp	r0, r3
+	movcc	r0, r3
+	ldr	r3, [r4, #2048]
+	and	r3, r3, #15
+	cmp	r3, r0
+	movcc	r3, r0
+	ldr	r0, [r4, #2048]
+	and	r0, r0, #15
+	cmp	r0, r3
+	movcc	r0, r3
+	pop	{r4, pc}
+.L7:
+	.align	2
+.L6:
+	.word	.LANCHOR0
+	.fnend
+	.size	flash_read_ecc, .-flash_read_ecc
+	.align	2
+	.syntax unified
+	.arm
+	.fpu softvfp
+	.type	ftl_set_blk_mode.part.9, %function
+ftl_set_blk_mode.part.9:
+	.fnstart
+	@ args = 0, pretend = 0, frame = 0
+	@ frame_needed = 0, uses_anonymous_args = 0
+	@ link register save eliminated.
+	ldr	r3, .L9
+	lsr	r1, r0, #5
+	mov	ip, #1
+	and	r0, r0, #31
+	ldr	r2, [r3, #32]
+	ldr	r3, [r2, r1, lsl #2]
+	orr	r0, r3, ip, lsl r0
+	str	r0, [r2, r1, lsl #2]
+	bx	lr
+.L10:
+	.align	2
+.L9:
+	.word	.LANCHOR0
+	.fnend
+	.size	ftl_set_blk_mode.part.9, .-ftl_set_blk_mode.part.9
+	.align	2
 	.global	FlashMemCmp8
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashMemCmp8, %function
 FlashMemCmp8:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L11
-	str	lr, [sp, #-4]!
-	.save {lr}
-	ldrb	r3, [r3]	@ zero_extendqisi2
+	ldr	r3, .L25
+	ldrb	r3, [r3, #36]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L4
+	beq	.L20
 	ldrb	r3, [r1, #1]	@ zero_extendqisi2
 	ldrb	ip, [r0, #1]	@ zero_extendqisi2
 	cmp	ip, r3
 	movne	r3, #0
-	beq	.L8
-.L4:
+	bne	.L20
+.L24:
+	mov	r0, #0
+	bx	lr
+.L14:
 	cmp	r3, r2
-	beq	.L8
+	bne	.L16
+	mov	r0, #0
+	ldr	pc, [sp], #4
+.L20:
+	cmp	r3, r2
+	beq	.L24
+	str	lr, [sp, #-4]!
+	.save {lr}
+.L16:
 	ldrb	lr, [r0, r3]	@ zero_extendqisi2
 	ldrb	ip, [r1, r3]	@ zero_extendqisi2
 	add	r3, r3, #1
 	cmp	lr, ip
-	beq	.L4
+	beq	.L14
 	mov	r0, r3
 	ldr	pc, [sp], #4
-.L8:
-	mov	r0, #0
-	ldr	pc, [sp], #4
-.L12:
+.L26:
 	.align	2
-.L11:
+.L25:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashMemCmp8, .-FlashMemCmp8
 	.align	2
 	.global	FlashRsvdBlkChk
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashRsvdBlkChk, %function
 FlashRsvdBlkChk:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L14
-	ldrb	r2, [r3, #1]	@ zero_extendqisi2
-	ldr	r3, [r3, #4]
-	mul	r3, r3, r2
-	cmp	r1, r3
-	movcs	r2, #0
-	movcc	r2, #1
+	ldr	r2, .L28
+	ldrb	ip, [r2, #37]	@ zero_extendqisi2
+	ldr	r3, [r2, #40]
+	mul	r3, r3, ip
+	cmp	r3, r1
+	movls	r2, #0
+	movhi	r2, #1
 	cmp	r0, #0
 	movne	r2, #0
 	eor	r0, r2, #1
 	bx	lr
-.L15:
+.L29:
 	.align	2
-.L14:
+.L28:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashRsvdBlkChk, .-FlashRsvdBlkChk
 	.align	2
 	.global	FlashGetRandomizer
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashGetRandomizer, %function
 FlashGetRandomizer:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	and	r3, r1, #127
-	ldr	r2, .L25
-	stmfd	sp!, {r4, lr}
+	ldr	r2, .L39
+	lsl	r3, r3, #1
+	push	{r4, lr}
 	.save {r4, lr}
-	mov	r3, r3, asl #1
 	ldrh	r4, [r2, r3]
-	ldr	r3, .L25+4
-	ldrb	r3, [r3, #8]	@ zero_extendqisi2
+	ldr	r3, .L39+4
+	ldrb	r3, [r3, #44]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L17
+	beq	.L30
 	bl	FlashRsvdBlkChk
 	cmp	r0, #0
 	orrne	r4, r4, #-1073741824
-.L17:
+.L30:
 	mov	r0, r4
-	ldmfd	sp!, {r4, pc}
-.L26:
+	pop	{r4, pc}
+.L40:
 	.align	2
-.L25:
+.L39:
 	.word	.LANCHOR1
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashGetRandomizer, .-FlashGetRandomizer
 	.align	2
 	.global	FlashSetRandomizer
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashSetRandomizer, %function
 FlashSetRandomizer:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
+	ldr	r2, .L50
 	and	r3, r1, #127
-	ldr	r2, .L36
-	stmfd	sp!, {r4, r5, r6, lr}
+	lsl	r3, r3, #1
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
-	mov	r3, r3, asl #1
 	mov	r6, r0
 	ldrh	r5, [r2, r3]
-	ldr	r3, .L36+4
-	ldrb	r2, [r3, #8]	@ zero_extendqisi2
+	ldr	r3, .L50+4
+	ldrb	r2, [r3, #44]	@ zero_extendqisi2
 	mov	r4, r3
 	cmp	r2, #0
-	beq	.L28
+	beq	.L42
 	bl	FlashRsvdBlkChk
 	cmp	r0, #0
 	orrne	r5, r5, #-1073741824
-.L28:
-	add	r4, r4, r6, asl #3
-	ldr	r3, [r4, #12]
+.L42:
+	ldr	r3, [r4, r6, lsl #3]
 	str	r5, [r3, #336]
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L37:
+	pop	{r4, r5, r6, pc}
+.L51:
 	.align	2
-.L36:
+.L50:
 	.word	.LANCHOR1
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashSetRandomizer, .-FlashSetRandomizer
 	.align	2
 	.global	FlashBlockAlignInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashBlockAlignInit, %function
 FlashBlockAlignInit:
 	.fnstart
@@ -157,45 +263,49 @@
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
 	cmp	r0, #512
-	ldr	r3, .L44
+	ldr	r3, .L58
 	movhi	r2, #1024
-	bhi	.L43
+	bhi	.L57
 	cmp	r0, #256
 	movhi	r2, #512
-	bhi	.L43
+	bhi	.L57
 	cmp	r0, #128
-	strls	r0, [r3, #4]
-	bxls	lr
-	mov	r2, #256
-.L43:
-	str	r2, [r3, #4]
+	movhi	r2, #256
+	bhi	.L57
+	str	r0, [r3, #40]
 	bx	lr
-.L45:
+.L57:
+	str	r2, [r3, #40]
+	bx	lr
+.L59:
 	.align	2
-.L44:
+.L58:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashBlockAlignInit, .-FlashBlockAlignInit
 	.align	2
 	.global	FlashReadCmd
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReadCmd, %function
 FlashReadCmd:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	ip, .L49
+	ldr	ip, .L63
 	str	lr, [sp, #-4]!
 	.save {lr}
-	add	r3, ip, r0, asl #3
-	ldr	ip, [ip, #44]
-	ldr	r2, [r3, #12]
-	ldrb	r3, [r3, #16]	@ zero_extendqisi2
+	add	r2, ip, r0, lsl #3
+	ldr	r3, [ip, r0, lsl #3]
+	ldr	ip, [ip, #48]
+	ldrb	r2, [r2, #4]	@ zero_extendqisi2
 	ldrb	ip, [ip, #7]	@ zero_extendqisi2
-	mov	r3, r3, asl #8
+	lsl	r2, r2, #8
 	cmp	ip, #1
-	addeq	ip, r2, r3
-	add	r3, r2, r3
+	addeq	ip, r3, r2
 	moveq	lr, #38
+	add	r3, r3, r2
 	mov	r2, #0
 	streq	lr, [ip, #2056]
 	str	r2, [r3, #2056]
@@ -203,41 +313,44 @@
 	str	r2, [r3, #2052]
 	uxtb	r2, r1
 	str	r2, [r3, #2052]
-	mov	r2, r1, lsr #8
+	lsr	r2, r1, #8
 	str	r2, [r3, #2052]
-	mov	r2, r1, lsr #16
+	lsr	r2, r1, #16
 	str	r2, [r3, #2052]
 	mov	r2, #48
 	str	r2, [r3, #2056]
 	ldr	lr, [sp], #4
 	b	FlashSetRandomizer
-.L50:
+.L64:
 	.align	2
-.L49:
+.L63:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashReadCmd, .-FlashReadCmd
 	.align	2
 	.global	FlashReadDpDataOutCmd
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReadDpDataOutCmd, %function
 FlashReadDpDataOutCmd:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	ip, .L56
-	stmfd	sp!, {r4, lr}
+	ldr	ip, .L70
+	push	{r4, lr}
 	.save {r4, lr}
-	add	r3, ip, r0, asl #3
-	ldrb	ip, [ip, #64]	@ zero_extendqisi2
 	uxtb	r4, r1
-	ldr	r2, [r3, #12]
-	mov	lr, r1, lsr #8
-	ldrb	r3, [r3, #16]	@ zero_extendqisi2
+	lsr	lr, r1, #8
+	add	r2, ip, r0, lsl #3
+	ldr	r3, [ip, r0, lsl #3]
+	ldrb	ip, [ip, #68]	@ zero_extendqisi2
+	ldrb	r2, [r2, #4]	@ zero_extendqisi2
 	cmp	ip, #1
-	mov	ip, r1, lsr #16
-	mov	r3, r3, asl #8
-	add	r3, r2, r3
-	bne	.L52
+	lsr	ip, r1, #16
+	lsl	r2, r2, #8
+	add	r3, r3, r2
+	bne	.L66
 	mov	r2, #6
 	str	r2, [r3, #2056]
 	mov	r2, #0
@@ -246,8 +359,12 @@
 	str	r4, [r3, #2052]
 	str	lr, [r3, #2052]
 	str	ip, [r3, #2052]
-	b	.L55
-.L52:
+.L69:
+	mov	r2, #224
+	str	r2, [r3, #2056]
+	pop	{r4, lr}
+	b	FlashSetRandomizer
+.L66:
 	mov	r2, #0
 	str	r2, [r3, #2056]
 	str	r2, [r3, #2052]
@@ -259,31 +376,31 @@
 	str	ip, [r3, #2056]
 	str	r2, [r3, #2052]
 	str	r2, [r3, #2052]
-.L55:
-	mov	r2, #224
-	str	r2, [r3, #2056]
-	ldmfd	sp!, {r4, lr}
-	b	FlashSetRandomizer
-.L57:
+	b	.L69
+.L71:
 	.align	2
-.L56:
+.L70:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd
 	.align	2
 	.global	FlashProgFirstCmd
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashProgFirstCmd, %function
 FlashProgFirstCmd:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	@ link register save eliminated.
-	ldr	ip, .L59
-	mov	r2, r1, lsr #16
-	add	ip, ip, r0, asl #3
-	ldr	r3, [ip, #12]
-	ldrb	ip, [ip, #16]	@ zero_extendqisi2
-	add	r3, r3, ip, asl #8
+	ldr	ip, .L74
+	lsr	r2, r1, #16
+	str	lr, [sp, #-4]!
+	.save {lr}
+	ldr	r3, [ip, r0, lsl #3]
+	add	ip, ip, r0, lsl #3
+	ldrb	ip, [ip, #4]	@ zero_extendqisi2
+	add	r3, r3, ip, lsl #8
 	mov	ip, #128
 	str	ip, [r3, #2056]
 	mov	ip, #0
@@ -291,176 +408,225 @@
 	str	ip, [r3, #2052]
 	uxtb	ip, r1
 	str	ip, [r3, #2052]
-	mov	ip, r1, lsr #8
+	lsr	ip, r1, #8
 	str	ip, [r3, #2052]
 	str	r2, [r3, #2052]
+	ldr	lr, [sp], #4
 	b	FlashSetRandomizer
-.L60:
+.L75:
 	.align	2
-.L59:
+.L74:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashProgFirstCmd, .-FlashProgFirstCmd
 	.align	2
 	.global	FlashEraseCmd
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashEraseCmd, %function
 FlashEraseCmd:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
+	ldr	ip, .L82
+	cmp	r2, #0
 	str	lr, [sp, #-4]!
 	.save {lr}
-	cmp	r2, #0
-	ldr	lr, .L67
-	add	r0, lr, r0, asl #3
-	ldrb	r3, [r0, #16]	@ zero_extendqisi2
-	ldr	ip, [r0, #12]
-	mov	r3, r3, asl #8
-	beq	.L62
-	add	r2, ip, r3
-	mov	r0, #96
-	str	r0, [r2, #2056]
-	uxtb	r0, r1
-	str	r0, [r2, #2052]
-	mov	r0, r1, lsr #8
-	str	r0, [r2, #2052]
-	mov	r0, r1, lsr #16
-	str	r0, [r2, #2052]
-	ldr	r2, [lr, #4]
+	ldr	r3, [ip, r0, lsl #3]
+	add	r0, ip, r0, lsl #3
+	ldrb	r0, [r0, #4]	@ zero_extendqisi2
+	lsl	r0, r0, #8
+	beq	.L77
+	add	r2, r3, r0
+	mov	lr, #96
+	str	lr, [r2, #2056]
+	uxtb	lr, r1
+	str	lr, [r2, #2052]
+	lsr	lr, r1, #8
+	str	lr, [r2, #2052]
+	lsr	lr, r1, #16
+	str	lr, [r2, #2052]
+	ldr	r2, [ip, #40]
 	add	r1, r1, r2
-.L62:
-	add	r3, ip, r3
+.L77:
+	add	r3, r3, r0
 	mov	r2, #96
 	str	r2, [r3, #2056]
 	uxtb	r2, r1
 	str	r2, [r3, #2052]
-	mov	r2, r1, lsr #8
-	mov	r1, r1, lsr #16
+	lsr	r2, r1, #8
+	lsr	r1, r1, #16
 	str	r2, [r3, #2052]
-	str	r1, [r3, #2052]
 	mov	r2, #208
+	str	r1, [r3, #2052]
 	str	r2, [r3, #2056]
 	ldr	pc, [sp], #4
-.L68:
+.L83:
 	.align	2
-.L67:
+.L82:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashEraseCmd, .-FlashEraseCmd
 	.align	2
 	.global	FlashProgDpSecondCmd
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashProgDpSecondCmd, %function
 FlashProgDpSecondCmd:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	ip, .L71
-	mov	r2, r1, lsr #16
-	str	lr, [sp, #-4]!
-	.save {lr}
-	add	lr, ip, r0, asl #3
-	ldrb	ip, [ip, #59]	@ zero_extendqisi2
-	ldr	r3, [lr, #12]
-	ldrb	lr, [lr, #16]	@ zero_extendqisi2
-	add	r3, r3, lr, asl #8
+	push	{r4, lr}
+	.save {r4, lr}
+	lsr	r2, r1, #16
+	ldr	lr, .L86
+	ldr	r3, [lr, r0, lsl #3]
+	add	ip, lr, r0, lsl #3
+	ldrb	r4, [ip, #4]	@ zero_extendqisi2
+	ldrb	ip, [lr, #63]	@ zero_extendqisi2
+	add	r3, r3, r4, lsl #8
 	str	ip, [r3, #2056]
 	mov	ip, #0
 	str	ip, [r3, #2052]
 	str	ip, [r3, #2052]
 	uxtb	ip, r1
 	str	ip, [r3, #2052]
-	mov	ip, r1, lsr #8
+	lsr	ip, r1, #8
 	str	ip, [r3, #2052]
 	str	r2, [r3, #2052]
-	ldr	lr, [sp], #4
+	pop	{r4, lr}
 	b	FlashSetRandomizer
-.L72:
+.L87:
 	.align	2
-.L71:
+.L86:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashProgDpSecondCmd, .-FlashProgDpSecondCmd
 	.align	2
 	.global	FlashProgSecondCmd
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashProgSecondCmd, %function
 FlashProgSecondCmd:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	ldr	r3, .L75
-	add	r0, r3, r0, asl #3
-	ldr	r3, .L75+4
-	ldrb	r5, [r0, #16]	@ zero_extendqisi2
-	ldr	r4, [r0, #12]
+	ldr	r3, .L90
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	ldr	r4, [r3, r0, lsl #3]
+	add	r3, r3, r0, lsl #3
+	ldr	r0, .L90+4
+	ldrb	r5, [r3, #4]	@ zero_extendqisi2
+	ldr	r3, .L90+8
+	add	r4, r4, r5, lsl #8
 	ldr	r3, [r3, #4]
-	add	r4, r4, r5, asl #8
-	ldr	r0, .L75+8
 	blx	r3
 	mov	r3, #16
 	str	r3, [r4, #2056]
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L76:
+	pop	{r4, r5, r6, pc}
+.L91:
 	.align	2
-.L75:
+.L90:
 	.word	.LANCHOR0
+	.word	64424500
 	.word	arm_delay_ops
-	.word	214748300
 	.fnend
 	.size	FlashProgSecondCmd, .-FlashProgSecondCmd
 	.align	2
 	.global	FlashProgDpFirstCmd
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashProgDpFirstCmd, %function
 FlashProgDpFirstCmd:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r2, .L78
-	add	r0, r2, r0, asl #3
-	ldrb	r2, [r2, #58]	@ zero_extendqisi2
-	ldrb	r1, [r0, #16]	@ zero_extendqisi2
-	ldr	r3, [r0, #12]
-	add	r3, r3, r1, asl #8
+	ldr	r2, .L93
+	ldr	r3, [r2, r0, lsl #3]
+	add	r0, r2, r0, lsl #3
+	ldrb	r2, [r2, #62]	@ zero_extendqisi2
+	ldrb	r1, [r0, #4]	@ zero_extendqisi2
+	add	r3, r3, r1, lsl #8
 	str	r2, [r3, #2056]
 	bx	lr
-.L79:
+.L94:
 	.align	2
-.L78:
+.L93:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashProgDpFirstCmd, .-FlashProgDpFirstCmd
 	.align	2
+	.global	FlashReadStatus
+	.syntax unified
+	.arm
+	.fpu softvfp
+	.type	FlashReadStatus, %function
+FlashReadStatus:
+	.fnstart
+	@ args = 0, pretend = 0, frame = 0
+	@ frame_needed = 0, uses_anonymous_args = 0
+	ldr	r3, .L97
+	mov	r2, #112
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	ldr	r5, [r3, r0, lsl #3]
+	add	r3, r3, r0, lsl #3
+	mov	r0, #80
+	ldrb	r4, [r3, #4]	@ zero_extendqisi2
+	add	r3, r5, r4, lsl #8
+	add	r4, r4, #8
+	str	r2, [r3, #2056]
+	bl	ndelay
+	ldr	r0, [r5, r4, lsl #8]
+	pop	{r4, r5, r6, pc}
+.L98:
+	.align	2
+.L97:
+	.word	.LANCHOR0
+	.fnend
+	.size	FlashReadStatus, .-FlashReadStatus
+	.align	2
 	.global	js_hash
+	.syntax unified
+	.arm
+	.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, .L84
+	ldr	r3, .L102
 	add	r1, r0, r1
-.L81:
+.L100:
 	cmp	r0, r1
-	beq	.L83
-	mov	r2, r3, asl #5
-	ldrb	ip, [r0], #1	@ zero_extendqisi2
-	add	r2, r2, r3, lsr #2
-	add	r2, r2, ip
-	eor	r3, r3, r2
-	b	.L81
-.L83:
+	bne	.L101
 	mov	r0, r3
 	bx	lr
-.L85:
+.L101:
+	lsr	r2, r3, #2
+	ldrb	ip, [r0], #1	@ zero_extendqisi2
+	add	r2, r2, r3, lsl #5
+	add	r2, r2, ip
+	eor	r3, r3, r2
+	b	.L100
+.L103:
 	.align	2
-.L84:
+.L102:
 	.word	1204201446
 	.fnend
 	.size	js_hash, .-js_hash
 	.align	2
 	.global	FlashLoadIdbInfo
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashLoadIdbInfo, %function
 FlashLoadIdbInfo:
 	.fnstart
@@ -473,6 +639,9 @@
 	.size	FlashLoadIdbInfo, .-FlashLoadIdbInfo
 	.align	2
 	.global	FlashPrintInfo
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashPrintInfo, %function
 FlashPrintInfo:
 	.fnstart
@@ -483,148 +652,350 @@
 	.fnend
 	.size	FlashPrintInfo, .-FlashPrintInfo
 	.align	2
+	.global	ToshibaSetRRPara
+	.syntax unified
+	.arm
+	.fpu softvfp
+	.type	ToshibaSetRRPara, %function
+ToshibaSetRRPara:
+	.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}
+	add	r9, r1, r1, lsl #2
+	ldr	r7, .L114
+	mov	r6, r0
+	mov	r5, #0
+	add	r7, r1, r7
+.L107:
+	ldr	r8, .L114+4
+	ldrb	r3, [r8, #85]	@ zero_extendqisi2
+	cmp	r5, r3
+	bcc	.L111
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L111:
+	ldr	r4, .L114+8
+	mov	r3, #85
+	str	r3, [r6, #8]
+	mov	r0, #200
+	ldrsb	r3, [r5, r4]
+	str	r3, [r6, #4]
+	bl	ndelay
+	ldrb	r3, [r8, #84]	@ zero_extendqisi2
+	cmp	r3, #34
+	addeq	r3, r5, r9
+	addeq	r4, r4, r3
+	ldrsbeq	r3, [r4, #5]
+	beq	.L113
+	cmp	r3, #35
+	addeq	r3, r5, r9
+	ldrsbne	r3, [r7]
+	addeq	r4, r4, r3
+	ldrsbeq	r3, [r4, #50]
+.L113:
+	str	r3, [r6]
+	add	r5, r5, #1
+	b	.L107
+.L115:
+	.align	2
+.L114:
+	.word	.LANCHOR1+396
+	.word	.LANCHOR0
+	.word	.LANCHOR1+256
+	.fnend
+	.size	ToshibaSetRRPara, .-ToshibaSetRRPara
+	.align	2
+	.global	SamsungSetRRPara
+	.syntax unified
+	.arm
+	.fpu softvfp
+	.type	SamsungSetRRPara, %function
+SamsungSetRRPara:
+	.fnstart
+	@ args = 0, pretend = 0, frame = 0
+	@ frame_needed = 0, uses_anonymous_args = 0
+	ldr	r3, .L120
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
+	mov	r4, #0
+	ldr	r8, .L120+4
+	mov	r6, r0
+	mov	r7, r3
+	mov	r9, #161
+	add	r1, r3, r1, lsl #2
+	mov	r10, r4
+	add	r5, r1, #3
+.L117:
+	ldrb	r3, [r8, #85]	@ zero_extendqisi2
+	cmp	r4, r3
+	bcc	.L118
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L118:
+	str	r9, [r6, #8]
+	mov	r0, #300
+	str	r10, [r6]
+	ldrsb	r3, [r7, r4]
+	add	r4, r4, #1
+	str	r3, [r6]
+	ldrsb	r3, [r5, #1]!
+	str	r3, [r6]
+	bl	ndelay
+	b	.L117
+.L121:
+	.align	2
+.L120:
+	.word	.LANCHOR1+404
+	.word	.LANCHOR0
+	.fnend
+	.size	SamsungSetRRPara, .-SamsungSetRRPara
+	.align	2
 	.global	ftl_flash_suspend
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_flash_suspend, %function
 ftl_flash_suspend:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L89
-	ldr	r2, [r3, #80]
+	ldr	r3, .L123
+	ldr	r2, [r3, #88]
 	ldr	r1, [r2]
-	str	r1, [r3, #84]
-	ldr	r1, [r2, #4]
-	str	r1, [r3, #88]
-	ldr	r1, [r2, #8]
 	str	r1, [r3, #92]
-	ldr	r1, [r2, #12]
+	ldr	r1, [r2, #4]
 	str	r1, [r3, #96]
-	ldr	r1, [r2, #304]
+	ldr	r1, [r2, #8]
 	str	r1, [r3, #100]
-	ldr	r1, [r2, #308]
+	ldr	r1, [r2, #12]
 	str	r1, [r3, #104]
+	ldr	r1, [r2, #304]
+	str	r1, [r3, #108]
+	ldr	r1, [r2, #308]
+	str	r1, [r3, #112]
 	ldr	r1, [r2, #336]
 	ldr	r2, [r2, #344]
-	str	r1, [r3, #108]
-	str	r2, [r3, #112]
+	str	r1, [r3, #116]
+	str	r2, [r3, #120]
 	bx	lr
-.L90:
+.L124:
 	.align	2
-.L89:
+.L123:
 	.word	.LANCHOR0
 	.fnend
 	.size	ftl_flash_suspend, .-ftl_flash_suspend
 	.global	__aeabi_uidiv
+	.global	__aeabi_uidivmod
 	.align	2
 	.global	LogAddr2PhyAddr
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	LogAddr2PhyAddr, %function
 LogAddr2PhyAddr:
 	.fnstart
 	@ args = 4, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r5, r0
-	ldr	r0, .L97
-	mov	r8, r3
-	ldr	ip, [r5, #4]
-	mov	r9, r1
-	mov	r7, r2
-	ldrh	r3, [r0, #130]
-	bic	ip, ip, #-2147483648
-	ldrh	r4, [r0, #128]
-	ubfx	r6, ip, #10, #16
-	ldrh	r10, [r0, #4]
-	mov	fp, r0
-	str	ip, [sp, #4]
-	smulbb	r4, r4, r3
-	ldrb	r3, [r0]	@ zero_extendqisi2
-	mov	r0, r6
-	cmp	r3, #1
-	moveq	r10, r10, asl #1
-	uxth	r4, r4
-	uxtheq	r10, r10
-	mov	r1, r4
+	mov	r9, r2
+	ldr	r4, .L131
+	mov	fp, r3
+	mov	r10, r1
+	mov	r7, r0
+	ldr	r5, [r0, #4]
+	ldrh	r2, [r4, #136]
+	ldrh	r3, [r4, #138]
+	ldrh	r6, [r4, #40]
+	smulbb	r3, r3, r2
+	ldrb	r2, [r4, #36]	@ zero_extendqisi2
+	uxth	r3, r3
+	cmp	r2, #1
+	lsleq	r6, r6, #1
+	ubfx	r2, r5, #10, #16
+	mov	r1, r3
+	str	r3, [sp, #4]
+	mov	r0, r2
+	uxtheq	r6, r6
+	str	r2, [sp]
 	bl	__aeabi_uidiv
-	cmp	r9, #1
-	uxth	r0, r0
-	ldr	ip, [sp, #4]
-	smulbb	r4, r0, r4
-	rsb	r6, r4, r6
-	ubfx	r4, ip, #0, #10
-	uxth	r6, r6
-	bne	.L93
-	ldrb	r3, [fp, #144]	@ zero_extendqisi2
+	ldr	r3, [sp, #4]
+	uxth	r8, r0
+	ldr	r2, [sp]
+	mov	r1, r3
+	mov	r0, r2
+	bl	__aeabi_uidivmod
+	cmp	r10, #1
+	uxth	r1, r1
+	ubfx	r0, r5, #0, #10
+	bne	.L127
+	ldrb	r3, [r4, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	ldreq	r3, .L97
-	addeq	r4, r3, r4, asl #1
-	ldreqh	r4, [r4, #148]
-.L93:
-	add	ip, fp, r0, asl #2
+	addeq	r0, r4, r0, lsl #1
+	ldrheq	r0, [r0, #156]
+.L127:
+	add	r4, r4, r8, lsl #2
+	ldr	r3, [r4, #1180]
+	mla	r6, r6, r1, r3
 	ldrb	r3, [sp, #48]	@ zero_extendqisi2
-	ldr	r1, [ip, #1172]
 	cmp	r3, #1
-	mla	r1, r10, r6, r1
-	add	r4, r1, r4
-	str	r4, [r7]
-	str	r0, [r8]
+	add	r0, r6, r0
+	str	r0, [r9]
 	movls	r0, #0
-	ldrhi	r0, [r5, #4]
-	ldrhi	r3, [r5, #40]
+	str	r8, [fp]
+	ldrhi	r0, [r7, #4]
+	ldrhi	r3, [r7, #40]
 	addhi	r0, r0, #1024
-	rsbhi	r0, r3, r0
+	subhi	r0, r0, r3
 	clzhi	r0, r0
-	movhi	r0, r0, lsr #5
+	lsrhi	r0, r0, #5
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L98:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L132:
 	.align	2
-.L97:
+.L131:
 	.word	.LANCHOR0
 	.fnend
 	.size	LogAddr2PhyAddr, .-LogAddr2PhyAddr
 	.align	2
+	.global	FlashReadStatusEN
+	.syntax unified
+	.arm
+	.fpu softvfp
+	.type	FlashReadStatusEN, %function
+FlashReadStatusEN:
+	.fnstart
+	@ args = 0, pretend = 0, frame = 0
+	@ frame_needed = 0, uses_anonymous_args = 0
+	ldr	r3, .L146
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	ldr	r4, [r3, r0, lsl #3]
+	add	r0, r3, r0, lsl #3
+	ldrb	r5, [r0, #4]	@ zero_extendqisi2
+	ldr	r0, [r3, #48]
+	ldrb	r0, [r0, #8]	@ zero_extendqisi2
+	cmp	r0, #2
+	mov	r0, r3
+	lsl	r3, r5, #8
+	movne	r2, #112
+	add	r5, r5, #8
+	addne	r3, r4, r3
+	strne	r2, [r3, #2056]
+	bne	.L139
+	cmp	r2, #0
+	add	r3, r4, r3
+	ldrbne	r2, [r0, #66]	@ zero_extendqisi2
+	ldrbeq	r2, [r0, #65]	@ zero_extendqisi2
+	str	r2, [r3, #2056]
+	ldrb	r0, [r0, #67]	@ zero_extendqisi2
+	cmp	r0, #0
+	movne	r2, #0
+	addne	ip, r4, r5, lsl #8
+	bne	.L138
+.L139:
+	mov	r0, #80
+	bl	ndelay
+	ldr	r0, [r4, r5, lsl #8]
+	uxtb	r0, r0
+	pop	{r4, r5, r6, pc}
+.L140:
+	lsl	r3, r2, #3
+	add	r2, r2, #1
+	lsr	r3, r1, r3
+	uxtb	r3, r3
+	str	r3, [ip, #4]
+.L138:
+	cmp	r2, r0
+	bcc	.L140
+	b	.L139
+.L147:
+	.align	2
+.L146:
+	.word	.LANCHOR0
+	.fnend
+	.size	FlashReadStatusEN, .-FlashReadStatusEN
+	.align	2
+	.global	FlashWaitReadyEN
+	.syntax unified
+	.arm
+	.fpu softvfp
+	.type	FlashWaitReadyEN, %function
+FlashWaitReadyEN:
+	.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	r4, r0
+	mov	r5, r1
+	mov	r6, r2
+.L149:
+	mov	r2, r6
+	mov	r1, r5
+	mov	r0, r4
+	bl	FlashReadStatusEN
+	cmp	r0, #255
+	beq	.L149
+	tst	r0, #64
+	popne	{r4, r5, r6, pc}
+	mov	r1, #3
+	mov	r0, #1
+	bl	usleep_range
+	b	.L149
+	.fnend
+	.size	FlashWaitReadyEN, .-FlashWaitReadyEN
+	.align	2
 	.global	FlashScheduleEnSet
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashScheduleEnSet, %function
 FlashScheduleEnSet:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L100
-	ldr	r2, [r3, #1204]
-	str	r0, [r3, #1204]
+	ldr	r3, .L156
+	ldr	r2, [r3, #1212]
+	str	r0, [r3, #1212]
 	mov	r0, r2
 	bx	lr
-.L101:
+.L157:
 	.align	2
-.L100:
+.L156:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashScheduleEnSet, .-FlashScheduleEnSet
 	.align	2
 	.global	FlashGetPageSize
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashGetPageSize, %function
 FlashGetPageSize:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L103
-	ldr	r3, [r3, #44]
+	ldr	r3, .L159
+	ldr	r3, [r3, #48]
 	ldrb	r0, [r3, #9]	@ zero_extendqisi2
 	bx	lr
-.L104:
+.L160:
 	.align	2
-.L103:
+.L159:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashGetPageSize, .-FlashGetPageSize
 	.align	2
 	.global	NandcReadDontCaseBusyEn
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcReadDontCaseBusyEn, %function
 NandcReadDontCaseBusyEn:
 	.fnstart
@@ -636,107 +1007,122 @@
 	.size	NandcReadDontCaseBusyEn, .-NandcReadDontCaseBusyEn
 	.align	2
 	.global	NandcGetChipIf
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcGetChipIf, %function
 NandcGetChipIf:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L107
-	add	r0, r3, r0, asl #3
-	ldrb	r2, [r0, #16]	@ zero_extendqisi2
-	ldr	r0, [r0, #12]
-	add	r2, r2, #8
-	add	r0, r0, r2, asl #8
+	ldr	r2, .L163
+	add	r3, r2, r0, lsl #3
+	ldr	r0, [r2, r0, lsl #3]
+	ldrb	r3, [r3, #4]	@ zero_extendqisi2
+	add	r3, r3, #8
+	add	r0, r0, r3, lsl #8
 	bx	lr
-.L108:
+.L164:
 	.align	2
-.L107:
+.L163:
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcGetChipIf, .-NandcGetChipIf
 	.align	2
 	.global	NandcSetDdrPara
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcSetDdrPara, %function
 NandcSetDdrPara:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L110
-	ldr	r2, [r3, #80]
-	mov	r3, r0, asl #8
-	orr	r0, r3, r0, asl #16
-	orr	r3, r0, #1
-	str	r3, [r2, #304]
+	ldr	r3, .L166
+	ldr	r2, [r3, #88]
+	lsl	r3, r0, #8
+	orr	r0, r3, r0, lsl #16
+	orr	r0, r0, #1
+	str	r0, [r2, #304]
 	bx	lr
-.L111:
+.L167:
 	.align	2
-.L110:
+.L166:
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcSetDdrPara, .-NandcSetDdrPara
 	.align	2
 	.global	NandcSetDdrDiv
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcSetDdrDiv, %function
 NandcSetDdrDiv:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L113
+	ldr	r3, .L169
 	orr	r0, r0, #16640
-	ldr	r3, [r3, #80]
+	ldr	r3, [r3, #88]
 	str	r0, [r3, #344]
 	bx	lr
-.L114:
+.L170:
 	.align	2
-.L113:
+.L169:
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcSetDdrDiv, .-NandcSetDdrDiv
 	.align	2
 	.global	NandcSetDdrMode
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcSetDdrMode, %function
 NandcSetDdrMode:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L118
+	ldr	r3, .L174
 	cmp	r0, #0
-	ldr	r2, [r3, #80]
+	ldr	r2, [r3, #88]
 	ldr	r3, [r2]
 	bfieq	r3, r0, #13, #1
 	orrne	r3, r3, #253952
 	str	r3, [r2]
 	bx	lr
-.L119:
+.L175:
 	.align	2
-.L118:
+.L174:
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcSetDdrMode, .-NandcSetDdrMode
 	.align	2
 	.global	NandcSetMode
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcSetMode, %function
 NandcSetMode:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L127
+	ldr	r3, .L183
 	ands	r1, r0, #6
-	ldr	r2, [r3, #80]
+	ldr	r2, [r3, #88]
 	ldr	r3, [r2]
 	bfieq	r3, r1, #13, #1
-	beq	.L123
-	orr	r3, r3, #24576
+	beq	.L179
 	movw	r1, #8322
-	bfc	r3, #15, #1
+	orr	r3, r3, #24576
 	str	r1, [r2, #344]
+	bfc	r3, #15, #1
+	ldr	r1, .L183+4
 	orr	r3, r3, #196608
-	ldr	r1, .L127+4
 	tst	r0, #4
 	orrne	r3, r3, #32768
 	str	r1, [r2, #304]
@@ -744,642 +1130,416 @@
 	str	r1, [r2, #308]
 	mov	r1, #39
 	str	r1, [r2, #308]
-.L123:
+.L179:
 	str	r3, [r2]
 	mov	r0, #0
 	bx	lr
-.L128:
+.L184:
 	.align	2
-.L127:
+.L183:
 	.word	.LANCHOR0
 	.word	1052675
 	.fnend
 	.size	NandcSetMode, .-NandcSetMode
 	.align	2
 	.global	NandcFlashCs
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcFlashCs, %function
 NandcFlashCs:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r2, .L130
-	add	r0, r2, r0, asl #3
+	ldr	r3, .L186
 	mov	r2, #1
-	ldr	r1, [r0, #12]
-	ldrb	r0, [r0, #16]	@ zero_extendqisi2
+	ldr	r1, [r3, r0, lsl #3]
+	add	r0, r3, r0, lsl #3
+	ldrb	r0, [r0, #4]	@ zero_extendqisi2
 	ldr	r3, [r1]
-	mov	r2, r2, asl r0
+	lsl	r2, r2, r0
 	bfi	r3, r2, #0, #8
 	str	r3, [r1]
 	bx	lr
-.L131:
+.L187:
 	.align	2
-.L130:
+.L186:
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcFlashCs, .-NandcFlashCs
 	.align	2
 	.global	NandcFlashDeCs
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcFlashDeCs, %function
 NandcFlashDeCs:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L133
-	add	r0, r3, r0, asl #3
-	ldr	r2, [r0, #12]
+	ldr	r3, .L189
+	ldr	r2, [r3, r0, lsl #3]
 	ldr	r3, [r2]
 	bfc	r3, #0, #8
 	bfc	r3, #17, #1
 	str	r3, [r2]
 	bx	lr
-.L134:
+.L190:
 	.align	2
-.L133:
+.L189:
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcFlashDeCs, .-NandcFlashDeCs
 	.align	2
-	.global	NandcDelayns
-	.type	NandcDelayns, %function
-NandcDelayns:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, lr}
-	.save {r3, lr}
-	add	r0, r0, #996
-	ldr	r3, .L137
-	add	r0, r0, #3
-	umull	r0, r1, r0, r3
-	ldr	r3, .L137+4
-	ldr	r3, [r3, #8]
-	mov	r0, r1, lsr #6
-	blx	r3
-	mov	r0, #0
-	ldmfd	sp!, {r3, pc}
-.L138:
-	.align	2
-.L137:
-	.word	274877907
-	.word	arm_delay_ops
-	.fnend
-	.size	NandcDelayns, .-NandcDelayns
-	.align	2
-	.global	FlashReadStatus
-	.type	FlashReadStatus, %function
-FlashReadStatus:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	mov	r2, #112
-	ldr	r3, .L141
-	add	r0, r3, r0, asl #3
-	ldrb	r4, [r0, #16]	@ zero_extendqisi2
-	ldr	r5, [r0, #12]
-	mov	r0, #80
-	add	r3, r5, r4, asl #8
-	add	r4, r4, #8
-	str	r2, [r3, #2056]
-	bl	NandcDelayns
-	ldr	r0, [r5, r4, asl #8]
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L142:
-	.align	2
-.L141:
-	.word	.LANCHOR0
-	.fnend
-	.size	FlashReadStatus, .-FlashReadStatus
-	.align	2
-	.global	ToshibaSetRRPara
-	.type	ToshibaSetRRPara, %function
-ToshibaSetRRPara:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	add	r8, r1, r1, asl #2
-	ldr	r9, .L153
-	mov	r5, r0
-	ldr	r7, .L153+4
-	mov	r6, r1
-	add	r10, r9, #256
-	mov	r4, #0
-.L144:
-	ldrb	r3, [r7, #1209]	@ zero_extendqisi2
-	cmp	r4, r3
-	bcs	.L152
-	mov	r3, #85
-	str	r3, [r5, #8]
-	ldrsb	r3, [r4, r10]
-	mov	r0, #200
-	str	r3, [r5, #4]
-	bl	NandcDelayns
-	ldrb	r3, [r7, #1208]	@ zero_extendqisi2
-	cmp	r3, #34
-	addeq	r3, r4, r8
-	addeq	r3, r10, r3
-	beq	.L151
-	cmp	r3, #35
-	addne	r3, r9, r6
-	addne	r3, r3, #400
-	ldrnesb	r3, [r3]
-	bne	.L150
-	ldr	r3, .L153+8
-	add	r2, r4, r8
-	add	r3, r3, r2
-.L151:
-	ldrsb	r3, [r3, #5]
-.L150:
-	str	r3, [r5]
-	add	r4, r4, #1
-	b	.L144
-.L152:
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L154:
-	.align	2
-.L153:
-	.word	.LANCHOR1
-	.word	.LANCHOR0
-	.word	.LANCHOR1+304
-	.fnend
-	.size	ToshibaSetRRPara, .-ToshibaSetRRPara
-	.align	2
-	.global	SamsungSetRRPara
-	.type	SamsungSetRRPara, %function
-SamsungSetRRPara:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L160
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	add	r1, r3, r1, asl #2
-	ldr	r8, .L160+4
-	mov	r4, #0
-	add	r5, r1, #3
-	mov	r6, r0
-	mov	r7, r3
-	mov	r9, #161
-	mov	r10, r4
-.L156:
-	ldrb	r3, [r8, #1209]	@ zero_extendqisi2
-	cmp	r4, r3
-	bcs	.L159
-	str	r9, [r6, #8]
-	mov	r0, #300
-	str	r10, [r6]
-	ldrsb	r3, [r7, r4]
-	add	r4, r4, #1
-	str	r3, [r6]
-	ldrsb	r3, [r5, #1]!
-	str	r3, [r6]
-	bl	NandcDelayns
-	b	.L156
-.L159:
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L161:
-	.align	2
-.L160:
-	.word	.LANCHOR1+408
-	.word	.LANCHOR0
-	.fnend
-	.size	SamsungSetRRPara, .-SamsungSetRRPara
-	.align	2
 	.global	HynixSetRRPara
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	HynixSetRRPara, %function
 HynixSetRRPara:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r6, r3
-	ldr	r5, .L171
-	mov	r9, r2
-	ldr	r4, .L171+4
-	mov	r7, r0
+	mov	r6, r0
+	ldr	r0, .L200
+	mov	r7, r3
 	mov	r8, r1
-	ldr	r3, [r5, #44]
-	ldrb	r2, [r3, #19]	@ zero_extendqisi2
-	mov	r3, r0, asl #3
-	cmp	r2, #6
-	addeq	r4, r4, r0, asl #6
-	addeq	r4, r4, #20
-	addeq	r4, r4, r6, asl #2
-	beq	.L164
-	cmp	r2, #7
-	bne	.L165
-	mov	r2, #160
-	mla	r4, r2, r0, r4
-	add	r2, r6, r6, asl #2
-	add	r4, r4, #28
-	add	r4, r4, r2, asl #1
-	b	.L164
-.L165:
-	cmp	r2, #8
-	addne	r2, r6, r3
-	addeq	r2, r6, r6, asl #2
-	ldreq	r4, .L171+8
-	addne	r4, r4, r2, asl #3
-	addeq	r4, r4, r2
-	addne	r4, r4, #20
-.L164:
-	add	r3, r5, r3
-	mov	r0, r7
+	mov	r10, r2
+	ldr	r3, [r0, #48]
+	mov	r5, r0
+	add	r4, r0, #1216
+	ldrb	r3, [r3, #19]	@ zero_extendqisi2
+	cmp	r3, #6
+	moveq	r3, #20
+	addeq	r3, r3, r6, lsl #6
+	addeq	r3, r3, r7, lsl #2
+	beq	.L199
+	cmp	r3, #7
+	bne	.L194
+	mov	r3, #160
+	mov	r2, #28
+	smlabb	r2, r3, r6, r2
+	mov	r3, #10
+	smlabb	r3, r3, r7, r2
+.L199:
+	add	r4, r4, r3
+.L193:
+	add	r3, r5, r6, lsl #3
+	ldr	r9, [r5, r6, lsl #3]
+	mov	r0, r6
+	ldrb	fp, [r3, #4]	@ zero_extendqisi2
 	sub	r8, r8, #1
-	sub	r4, r4, #1
-	ldrb	fp, [r3, #16]	@ zero_extendqisi2
-	ldr	r10, [r3, #12]
 	bl	NandcFlashCs
-	sub	ip, r9, #1
-	add	r9, r9, r8
-	mov	r3, fp, asl #8
-	mov	r2, #54
-	add	fp, r10, r3
-	str	r2, [fp, #2056]
-.L167:
-	cmp	ip, r9
-	beq	.L170
-	ldrb	r2, [ip, #1]!	@ zero_extendqisi2
-	mov	r0, #200
-	str	r3, [sp, #4]
-	str	r2, [fp, #2052]
-	str	ip, [sp]
-	bl	NandcDelayns
-	ldrsb	r2, [r4, #1]!
-	str	r2, [fp, #2048]
-	ldr	r3, [sp, #4]
-	ldr	ip, [sp]
-	b	.L167
-.L170:
-	add	r10, r10, r3
-	mov	r0, r7
+	mov	r3, #54
+	add	r8, r10, r8
+	sub	r4, r4, #1
+	lsl	fp, fp, #8
+	add	r0, r9, fp
+	str	r3, [r0, #2056]
+	sub	r3, r10, #1
+	mov	r10, r0
+.L196:
+	cmp	r3, r8
+	bne	.L197
 	mov	r3, #22
-	add	r5, r5, r7
-	str	r3, [r10, #2056]
+	add	r9, r9, fp
+	mov	r0, r6
+	str	r3, [r9, #2056]
 	bl	NandcFlashDeCs
-	strb	r6, [r5, #2064]
+	add	r0, r5, r6
+	strb	r7, [r0, #2068]
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L172:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L194:
+	cmp	r3, #8
+	addeq	r4, r4, #28
+	addeq	r3, r7, r7, lsl #2
+	beq	.L199
+	add	r3, r7, #2
+	add	r3, r3, r6, lsl #3
+	add	r4, r4, r3, lsl #3
+	add	r4, r4, #4
+	b	.L193
+.L197:
+	ldrb	r2, [r3, #1]!	@ zero_extendqisi2
+	mov	r0, #200
+	str	r2, [r10, #2052]
+	str	r3, [sp, #4]
+	bl	ndelay
+	ldrsb	r2, [r4, #1]!
+	ldr	r3, [sp, #4]
+	str	r2, [r10, #2048]
+	b	.L196
+.L201:
 	.align	2
-.L171:
+.L200:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+1210
-	.word	.LANCHOR0+1238
 	.fnend
 	.size	HynixSetRRPara, .-HynixSetRRPara
 	.align	2
 	.global	FlashSetReadRetryDefault
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashSetReadRetryDefault, %function
 FlashSetReadRetryDefault:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L181
-	ldr	r2, [r3, #44]
-	ldrb	r2, [r2, #19]	@ zero_extendqisi2
-	sub	r2, r2, #1
-	cmp	r2, #7
-	bxhi	lr
-	stmfd	sp!, {r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
+	ldr	r5, .L209
+	ldr	r3, [r5, #48]
+	ldrb	r3, [r3, #19]	@ zero_extendqisi2
+	sub	r3, r3, #1
+	cmp	r3, #7
+	pophi	{r4, r5, r6, r7, r8, pc}
+	ldr	r7, .L209+4
+	add	r6, r5, #1216
 	mov	r4, #0
-	ldr	r6, .L181+4
-	mov	r5, r3
-.L174:
-	ldrb	r3, [r6, r4, asl #3]	@ zero_extendqisi2
+	add	r6, r6, #4
+.L205:
+	ldrb	r3, [r7, r4, lsl #3]	@ zero_extendqisi2
 	uxtb	r0, r4
 	cmp	r3, #173
-	bne	.L175
-	ldrb	r1, [r5, #1211]	@ zero_extendqisi2
+	bne	.L204
 	mov	r3, #0
-	ldr	r2, .L181+8
+	mov	r2, r6
+	ldrb	r1, [r5, #1217]	@ zero_extendqisi2
 	bl	HynixSetRRPara
-.L175:
+.L204:
 	add	r4, r4, #1
 	cmp	r4, #4
-	bne	.L174
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L182:
+	bne	.L205
+	pop	{r4, r5, r6, r7, r8, pc}
+.L210:
 	.align	2
-.L181:
+.L209:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2068
-	.word	.LANCHOR0+1214
+	.word	.LANCHOR0+2072
 	.fnend
 	.size	FlashSetReadRetryDefault, .-FlashSetReadRetryDefault
 	.align	2
-	.global	FlashReadStatusEN
-	.type	FlashReadStatusEN, %function
-FlashReadStatusEN:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	ip, .L194
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	add	r0, ip, r0, asl #3
-	ldr	r3, [ip, #44]
-	ldrb	r5, [r0, #16]	@ zero_extendqisi2
-	ldr	r4, [r0, #12]
-	ldrb	r3, [r3, #8]	@ zero_extendqisi2
-	cmp	r3, #2
-	mov	r3, r5, asl #8
-	addne	r3, r4, r3
-	add	r5, r5, #8
-	movne	r2, #112
-	strne	r2, [r3, #2056]
-	bne	.L188
-	cmp	r2, #0
-	add	r3, r4, r3
-	ldrneb	r2, [ip, #62]	@ zero_extendqisi2
-	ldreqb	r2, [ip, #61]	@ zero_extendqisi2
-	str	r2, [r3, #2056]
-	ldrb	r0, [ip, #63]	@ zero_extendqisi2
-	cmp	r0, #0
-	addne	ip, r4, r5, asl #8
-	movne	r2, #0
-	beq	.L188
-.L187:
-	cmp	r2, r0
-	bcs	.L188
-	mov	r3, r2, asl #3
-	add	r2, r2, #1
-	mov	r3, r1, lsr r3
-	uxtb	r3, r3
-	str	r3, [ip, #4]
-	b	.L187
-.L188:
-	mov	r0, #80
-	bl	NandcDelayns
-	ldr	r0, [r4, r5, asl #8]
-	uxtb	r0, r0
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L195:
-	.align	2
-.L194:
-	.word	.LANCHOR0
-	.fnend
-	.size	FlashReadStatusEN, .-FlashReadStatusEN
-	.align	2
-	.global	FlashWaitReadyEN
-	.type	FlashWaitReadyEN, %function
-FlashWaitReadyEN:
-	.fnstart
-	@ args = 0, pretend = 0, frame = 0
-	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	mov	r4, r0
-	mov	r5, r1
-	mov	r6, r2
-.L197:
-	mov	r0, r4
-	mov	r1, r5
-	mov	r2, r6
-	bl	FlashReadStatusEN
-	cmp	r0, #255
-	beq	.L197
-	tst	r0, #64
-	ldmnefd	sp!, {r4, r5, r6, pc}
-	mov	r0, #1
-	mov	r1, #3
-	bl	usleep_range
-	b	.L197
-	.fnend
-	.size	FlashWaitReadyEN, .-FlashWaitReadyEN
-	.align	2
 	.global	FlashWaitCmdDone
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashWaitCmdDone, %function
 FlashWaitCmdDone:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
-	ldr	r5, .L211
-	add	r4, r5, r0, asl #4
-	ldr	r3, [r4, #2108]
-	ldrb	r7, [r4, #2100]	@ zero_extendqisi2
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
+	ldr	r5, .L219
+	add	r4, r5, r0, lsl #4
+	ldr	r3, [r4, #2112]
 	cmp	r3, #0
-	beq	.L205
+	beq	.L213
+	ldrb	r7, [r4, #2104]	@ zero_extendqisi2
 	mov	r6, r0
+	add	r5, r5, r6, lsl #2
 	mov	r0, r7
-	add	r5, r5, r6, asl #2
 	bl	NandcFlashCs
-	ldr	r1, [r4, #2104]
+	ldr	r2, [r5, #1180]
 	mov	r0, r7
-	ldr	r2, [r5, #1172]
+	ldr	r1, [r4, #2108]
 	adds	r2, r2, #0
 	movne	r2, #1
 	bl	FlashWaitReadyEN
-	mov	r5, r0
+	mov	r1, r0
 	mov	r0, r7
 	bl	NandcFlashDeCs
-	ldr	r2, [r4, #2108]
-	sbfx	r3, r5, #0, #1
-	str	r3, [r2]
-	mov	r2, #0
-	ldr	r1, [r4, #2112]
-	str	r2, [r4, #2108]
-	cmp	r1, r2
-	strne	r3, [r1]
-	strne	r2, [r4, #2112]
-.L205:
+	ldr	r3, [r4, #2112]
+	sbfx	r0, r1, #0, #1
+	str	r0, [r3]
+	mov	r3, #0
+	ldr	r2, [r4, #2116]
+	str	r3, [r4, #2112]
+	cmp	r2, r3
+	strne	r0, [r2]
+	strne	r3, [r4, #2116]
+.L213:
 	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L212:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L220:
 	.align	2
-.L211:
+.L219:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashWaitCmdDone, .-FlashWaitCmdDone
 	.align	2
-	.type	flash_read_ecc, %function
-flash_read_ecc:
+	.global	NandcDelayns
+	.syntax unified
+	.arm
+	.fpu softvfp
+	.type	NandcDelayns, %function
+NandcDelayns:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r2, .L215
-	stmfd	sp!, {r4, lr}
+	push	{r4, lr}
 	.save {r4, lr}
-	add	r0, r2, r0, asl #3
-	ldrb	r4, [r0, #16]	@ zero_extendqisi2
-	ldr	r3, [r0, #12]
-	mov	r0, #80
-	add	r4, r3, r4, asl #8
-	mov	r3, #122
-	str	r3, [r4, #2056]
-	bl	NandcDelayns
-	ldr	r3, [r4, #2048]
-	ldr	r0, [r4, #2048]
-	and	r3, r3, #15
-	and	r0, r0, #15
-	cmp	r0, r3
-	movcc	r0, r3
-	ldr	r3, [r4, #2048]
-	and	r3, r3, #15
-	cmp	r0, r3
-	movcc	r0, r3
-	ldr	r3, [r4, #2048]
-	and	r3, r3, #15
-	cmp	r0, r3
-	movcc	r0, r3
-	ldmfd	sp!, {r4, pc}
-.L216:
-	.align	2
-.L215:
-	.word	.LANCHOR0
+	bl	ndelay
+	mov	r0, #0
+	pop	{r4, pc}
 	.fnend
-	.size	flash_read_ecc, .-flash_read_ecc
+	.size	NandcDelayns, .-NandcDelayns
 	.align	2
 	.global	NandcWaitFlashReadyNoDelay
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcWaitFlashReadyNoDelay, %function
 NandcWaitFlashReadyNoDelay:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L223
-	stmfd	sp!, {r0, r1, r2, r4, r5, lr}
+	ldr	r3, .L229
+	push	{r0, r1, r2, r4, r5, lr}
 	.save {r4, r5, lr}
 	.pad #12
-	add	r0, r3, r0, asl #3
-	ldr	r4, .L223+4
-	ldr	r5, [r0, #12]
-.L219:
+	ldr	r4, .L229+4
+	ldr	r5, [r3, r0, lsl #3]
+.L225:
 	ldr	r3, [r5]
 	str	r3, [sp, #4]
 	ldr	r3, [sp, #4]
 	tst	r3, #512
-	bne	.L220
+	bne	.L226
 	mov	r0, #10
-	bl	NandcDelayns
+	bl	ndelay
 	subs	r4, r4, #1
-	bne	.L219
+	bne	.L225
 	mvn	r0, #0
-	b	.L218
-.L220:
-	mov	r0, #0
-.L218:
+.L223:
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, pc}
-.L224:
+	pop	{r4, r5, pc}
+.L226:
+	mov	r0, #0
+	b	.L223
+.L230:
 	.align	2
-.L223:
+.L229:
 	.word	.LANCHOR0
 	.word	100000
 	.fnend
 	.size	NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay
 	.align	2
 	.global	NandcWaitFlashReady
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcWaitFlashReady, %function
 NandcWaitFlashReady:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L231
-	stmfd	sp!, {r0, r1, r2, r4, r5, lr}
+	push	{r0, r1, r2, r4, r5, lr}
 	.save {r4, r5, lr}
 	.pad #12
-	add	r0, r3, r0, asl #3
-	ldr	r4, .L231+4
-	ldr	r5, [r0, #12]
+	ldr	r3, .L237
+	ldr	r4, .L237+4
+	ldr	r5, [r3, r0, lsl #3]
 	mov	r0, #130
-	bl	NandcDelayns
-.L227:
+	bl	ndelay
+.L233:
 	ldr	r3, [r5]
 	str	r3, [sp, #4]
 	ldr	r3, [sp, #4]
 	tst	r3, #512
-	bne	.L228
-	mov	r0, #1
+	bne	.L234
 	mov	r1, #2
+	mov	r0, #1
 	bl	usleep_range
 	subs	r4, r4, #1
-	bne	.L227
+	bne	.L233
 	mvn	r0, #0
-	b	.L226
-.L228:
-	mov	r0, #0
-.L226:
+.L231:
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, pc}
-.L232:
+	pop	{r4, r5, pc}
+.L234:
+	mov	r0, #0
+	b	.L231
+.L238:
 	.align	2
-.L231:
+.L237:
 	.word	.LANCHOR0
 	.word	100000
 	.fnend
 	.size	NandcWaitFlashReady, .-NandcWaitFlashReady
 	.align	2
 	.global	FlashReset
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReset, %function
 FlashReset:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L235
-	stmfd	sp!, {r4, r5, r6, lr}
+	ldr	r3, .L241
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
-	add	r3, r3, r0, asl #3
 	mov	r4, r0
-	ldrb	r6, [r3, #16]	@ zero_extendqisi2
-	ldr	r5, [r3, #12]
+	ldr	r5, [r3, r0, lsl #3]
+	add	r3, r3, r0, lsl #3
+	ldrb	r6, [r3, #4]	@ zero_extendqisi2
 	bl	NandcFlashCs
 	mov	r3, #255
 	mov	r0, r4
-	add	r5, r5, r6, asl #8
+	add	r5, r5, r6, lsl #8
 	str	r3, [r5, #2056]
 	bl	NandcWaitFlashReady
 	mov	r0, r4
-	ldmfd	sp!, {r4, r5, r6, lr}
+	pop	{r4, r5, r6, lr}
 	b	NandcFlashDeCs
-.L236:
+.L242:
 	.align	2
-.L235:
+.L241:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashReset, .-FlashReset
 	.align	2
 	.global	flash_enter_slc_mode
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	flash_enter_slc_mode, %function
 flash_enter_slc_mode:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, lr}
+	push	{r4, r5, r6, r7, r8, lr}
 	.save {r4, r5, r6, r7, r8, lr}
-	ldr	r5, .L244
-	ldrb	r3, [r5, #144]	@ zero_extendqisi2
+	ldr	r5, .L250
+	ldrb	r3, [r5, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	ldmeqfd	sp!, {r4, r5, r6, r7, r8, pc}
+	popeq	{r4, r5, r6, r7, r8, pc}
 	mov	r6, r0
 	bl	NandcFlashCs
-	add	r4, r5, r6, asl #3
-	ldrb	r3, [r4, #2068]	@ zero_extendqisi2
-	ldrb	r8, [r4, #16]	@ zero_extendqisi2
+	add	r3, r5, r6, lsl #3
+	ldr	r7, [r5, r6, lsl #3]
+	ldrb	r8, [r3, #4]	@ zero_extendqisi2
+	ldrb	r3, [r3, #2072]	@ zero_extendqisi2
 	cmp	r3, #44
-	ldr	r7, [r4, #12]
-	mov	r8, r8, asl #8
-	bne	.L239
+	lsl	r8, r8, #8
+	bne	.L245
 	add	r4, r7, r8
 	mov	r3, #239
-	mov	r0, #50
 	str	r3, [r4, #2056]
 	mov	r3, #145
 	str	r3, [r4, #2052]
-	bl	NandcDelayns
+	mov	r0, #50
+	bl	ndelay
 	mov	r3, #0
 	mov	r2, #1
 	str	r3, [r4, #2048]
@@ -1387,53 +1547,56 @@
 	str	r2, [r4, #2048]
 	str	r3, [r4, #2048]
 	str	r3, [r4, #2048]
-	bl	NandcDelayns
-.L239:
-	add	r7, r7, r8
+	bl	ndelay
+.L245:
 	mov	r0, r6
+	add	r7, r7, r8
 	bl	NandcWaitFlashReadyNoDelay
 	mov	r3, #218
 	mov	r0, r6
 	str	r3, [r7, #2056]
 	bl	NandcWaitFlashReady
 	mov	r3, #2
-	strb	r3, [r5, #2228]
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L245:
+	strb	r3, [r5, #2232]
+	pop	{r4, r5, r6, r7, r8, pc}
+.L251:
 	.align	2
-.L244:
+.L250:
 	.word	.LANCHOR0
 	.fnend
 	.size	flash_enter_slc_mode, .-flash_enter_slc_mode
 	.align	2
 	.global	flash_exit_slc_mode
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	flash_exit_slc_mode, %function
 flash_exit_slc_mode:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, lr}
+	push	{r4, r5, r6, r7, r8, lr}
 	.save {r4, r5, r6, r7, r8, lr}
-	ldr	r5, .L253
-	ldrb	r3, [r5, #144]	@ zero_extendqisi2
+	ldr	r5, .L259
+	ldrb	r3, [r5, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	ldmeqfd	sp!, {r4, r5, r6, r7, r8, pc}
+	popeq	{r4, r5, r6, r7, r8, pc}
 	mov	r6, r0
 	bl	NandcFlashCs
-	add	r4, r5, r6, asl #3
-	ldrb	r3, [r4, #2068]	@ zero_extendqisi2
-	ldrb	r8, [r4, #16]	@ zero_extendqisi2
+	add	r3, r5, r6, lsl #3
+	ldr	r7, [r5, r6, lsl #3]
+	ldrb	r8, [r3, #4]	@ zero_extendqisi2
+	ldrb	r3, [r3, #2072]	@ zero_extendqisi2
 	cmp	r3, #44
-	ldr	r7, [r4, #12]
-	mov	r8, r8, asl #8
-	bne	.L248
+	lsl	r8, r8, #8
+	bne	.L254
 	add	r4, r7, r8
 	mov	r3, #239
-	mov	r0, #50
 	str	r3, [r4, #2056]
 	mov	r3, #145
 	str	r3, [r4, #2052]
-	bl	NandcDelayns
+	mov	r0, #50
+	bl	ndelay
 	mov	r3, #2
 	mov	r0, #100
 	str	r3, [r4, #2048]
@@ -1442,32 +1605,35 @@
 	mov	r3, #0
 	str	r3, [r4, #2048]
 	str	r3, [r4, #2048]
-	bl	NandcDelayns
-.L248:
-	add	r7, r7, r8
+	bl	ndelay
+.L254:
 	mov	r0, r6
+	add	r7, r7, r8
 	bl	NandcWaitFlashReadyNoDelay
 	mov	r3, #223
 	mov	r0, r6
 	str	r3, [r7, #2056]
 	bl	NandcWaitFlashReady
 	mov	r3, #0
-	strb	r3, [r5, #2228]
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L254:
+	strb	r3, [r5, #2232]
+	pop	{r4, r5, r6, r7, r8, pc}
+.L260:
 	.align	2
-.L253:
+.L259:
 	.word	.LANCHOR0
 	.fnend
 	.size	flash_exit_slc_mode, .-flash_exit_slc_mode
 	.align	2
 	.global	FlashEraseBlock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashEraseBlock, %function
 FlashEraseBlock:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, lr}
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
 	mov	r4, r0
 	mov	r5, r1
@@ -1484,138 +1650,140 @@
 	mov	r1, r5
 	mov	r0, r4
 	bl	FlashReadStatus
-	mov	r5, r0
+	mov	r1, r0
 	mov	r0, r4
 	bl	NandcFlashDeCs
-	and	r0, r5, #1
-	ldmfd	sp!, {r4, r5, r6, pc}
+	and	r0, r1, #1
+	pop	{r4, r5, r6, pc}
 	.fnend
 	.size	FlashEraseBlock, .-FlashEraseBlock
 	.align	2
 	.global	FlashSetInterfaceMode
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashSetInterfaceMode, %function
 FlashSetInterfaceMode:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 16
+	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r1, .L280
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r0, r1, r2, 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
-	ldrb	fp, [r1, #2229]	@ zero_extendqisi2
+	.pad #12
 	mov	lr, #0
-	ldr	r7, .L280+4
-	mov	r4, #239
-	and	r2, fp, #4
-	and	r3, fp, #1
-	mov	r5, #128
-	str	r3, [sp, #8]
-	mov	r6, #1
-	uxtb	r3, r2
+	ldr	r4, .L286
+	mov	r5, #239
+	mov	r6, #128
+	mov	r7, #1
 	mov	r8, #35
-	mov	r2, lr
 	mov	r9, #32
+	ldrb	r3, [r4, #2233]	@ zero_extendqisi2
 	mov	r10, #5
-	str	r3, [sp, #4]
-	add	r3, r1, #12
-	str	r3, [sp, #12]
-.L267:
-	ldr	r3, [sp, #12]
-	ldrb	ip, [lr, r7]	@ zero_extendqisi2
-	ldr	r1, [r3, lr]!
+	and	r2, r3, #4
+	and	r3, r3, #1
+	str	r2, [sp, #4]
+	mov	r2, lr
+	str	r3, [sp]
+.L273:
+	ldr	r1, .L286+4
+	add	r3, r4, lr
+	ldrb	r3, [r3, #4]	@ zero_extendqisi2
+	ldrb	ip, [lr, r1]	@ zero_extendqisi2
 	cmp	ip, #69
 	cmpne	ip, #152
-	ldrb	r3, [r3, #4]	@ zero_extendqisi2
-	beq	.L258
+	beq	.L264
 	cmp	ip, #44
 	cmpne	ip, #173
-	bne	.L259
-.L258:
+	bne	.L265
+.L264:
 	cmp	r0, #1
-	bne	.L260
-	ldr	fp, [sp, #8]
+	ldr	r1, [r4, lr]
+	bne	.L266
+	ldr	fp, [sp]
 	cmp	fp, #0
-	beq	.L259
-	mov	r3, r3, asl #8
+	beq	.L265
+	lsl	r3, r3, #8
 	cmp	ip, #173
 	add	fp, r1, r3
-	str	r4, [fp, #2056]
+	str	r5, [fp, #2056]
 	streq	r0, [fp, #2052]
-	beq	.L279
+	beq	.L285
 	cmp	ip, #44
 	streq	r0, [fp, #2052]
-	strne	r5, [fp, #2052]
+	strne	r6, [fp, #2052]
 	streq	r10, [fp, #2048]
 	strne	r0, [fp, #2048]
-	b	.L265
-.L260:
-	ldr	fp, [sp, #4]
-	cmp	fp, #0
-	beq	.L259
-	mov	r3, r3, asl #8
-	cmp	ip, #173
-	add	fp, r1, r3
-	str	r4, [fp, #2056]
-	streq	r6, [fp, #2052]
-	streq	r9, [fp, #2048]
-	beq	.L265
-	cmp	ip, #44
-	streq	r6, [fp, #2052]
-	streq	r8, [fp, #2048]
-	beq	.L265
-	str	r5, [fp, #2052]
-.L279:
-	str	r2, [fp, #2048]
-.L265:
+.L271:
 	add	r3, r1, r3
 	str	r2, [r3, #2048]
 	str	r2, [r3, #2048]
 	str	r2, [r3, #2048]
-.L259:
+.L265:
 	add	lr, lr, #8
 	cmp	lr, #32
-	bne	.L267
+	bne	.L273
 	mov	r0, #0
 	bl	NandcWaitFlashReady
 	mov	r0, #0
-	add	sp, sp, #20
+	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L281:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L266:
+	ldr	fp, [sp, #4]
+	cmp	fp, #0
+	beq	.L265
+	lsl	r3, r3, #8
+	cmp	ip, #173
+	add	fp, r1, r3
+	str	r5, [fp, #2056]
+	streq	r7, [fp, #2052]
+	streq	r9, [fp, #2048]
+	beq	.L271
+	cmp	ip, #44
+	streq	r7, [fp, #2052]
+	streq	r8, [fp, #2048]
+	beq	.L271
+	str	r6, [fp, #2052]
+.L285:
+	str	r2, [fp, #2048]
+	b	.L271
+.L287:
 	.align	2
-.L280:
+.L286:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2068
+	.word	.LANCHOR0+2072
 	.fnend
 	.size	FlashSetInterfaceMode, .-FlashSetInterfaceMode
 	.align	2
 	.global	FlashReadSpare
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReadSpare, %function
 FlashReadSpare:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	ip, .L284
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	add	ip, ip, r0, asl #3
-	ldr	r3, .L284+4
+	ldr	ip, .L290
+	ldr	r3, .L290+4
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
 	mov	r5, r2
-	ldrb	r2, [ip, #16]	@ zero_extendqisi2
-	ldr	r4, [ip, #12]
-	ldrb	r3, [r3, #481]	@ zero_extendqisi2
-	add	r4, r4, r2, asl #8
+	ldr	r4, [ip, r0, lsl #3]
+	add	ip, ip, r0, lsl #3
+	ldrb	r3, [r3, #477]	@ zero_extendqisi2
+	ldrb	r2, [ip, #4]	@ zero_extendqisi2
+	lsl	r3, r3, #9
+	add	r4, r4, r2, lsl #8
 	mov	r2, #0
-	mov	r3, r3, asl #9
 	str	r2, [r4, #2056]
 	str	r3, [r4, #2052]
-	mov	r3, r3, lsr #8
+	lsr	r3, r3, #8
 	str	r3, [r4, #2052]
 	uxtb	r3, r1
 	str	r3, [r4, #2052]
-	mov	r3, r1, lsr #8
-	mov	r1, r1, lsr #16
+	lsr	r3, r1, #8
+	lsr	r1, r1, #16
 	str	r3, [r4, #2052]
 	mov	r3, #48
 	str	r1, [r4, #2052]
@@ -1623,28 +1791,31 @@
 	bl	NandcWaitFlashReady
 	ldr	r3, [r4, #2048]
 	strb	r3, [r5]
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L285:
+	pop	{r4, r5, r6, pc}
+.L291:
 	.align	2
-.L284:
+.L290:
 	.word	.LANCHOR0
 	.word	.LANCHOR1
 	.fnend
 	.size	FlashReadSpare, .-FlashReadSpare
 	.align	2
 	.global	SandiskProgTestBadBlock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	SandiskProgTestBadBlock, %function
 SandiskProgTestBadBlock:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r2, .L288
-	stmfd	sp!, {r4, lr}
+	ldr	r3, .L294
+	push	{r4, lr}
 	.save {r4, lr}
-	add	r2, r2, r0, asl #3
-	ldrb	r4, [r2, #16]	@ zero_extendqisi2
-	ldr	r3, [r2, #12]
-	add	r4, r3, r4, asl #8
+	ldr	r4, [r3, r0, lsl #3]
+	add	r3, r3, r0, lsl #3
+	ldrb	r3, [r3, #4]	@ zero_extendqisi2
+	add	r4, r4, r3, lsl #8
 	mov	r3, #162
 	str	r3, [r4, #2056]
 	mov	r3, #128
@@ -1654,163 +1825,177 @@
 	str	r3, [r4, #2052]
 	uxtb	r3, r1
 	str	r3, [r4, #2052]
-	mov	r3, r1, lsr #8
-	mov	r1, r1, lsr #16
+	lsr	r3, r1, #8
+	lsr	r1, r1, #16
 	str	r3, [r4, #2052]
-	str	r1, [r4, #2052]
 	mov	r3, #16
+	str	r1, [r4, #2052]
 	str	r3, [r4, #2056]
 	bl	NandcWaitFlashReady
 	mov	r3, #112
 	mov	r0, #80
 	str	r3, [r4, #2056]
-	bl	NandcDelayns
+	bl	ndelay
 	ldr	r0, [r4, #2048]
 	and	r0, r0, #1
-	ldmfd	sp!, {r4, pc}
-.L289:
+	pop	{r4, pc}
+.L295:
 	.align	2
-.L288:
+.L294:
 	.word	.LANCHOR0
 	.fnend
 	.size	SandiskProgTestBadBlock, .-SandiskProgTestBadBlock
 	.align	2
 	.global	SandiskSetRRPara
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	SandiskSetRRPara, %function
 SandiskSetRRPara:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
 	mov	r3, #239
-	mov	r5, r0
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
 	str	r3, [r0, #8]
 	mov	r3, #17
+	mov	r5, r0
+	mov	r4, r1
 	str	r3, [r0, #4]
 	mov	r0, #200
-	mov	r4, r1
-	bl	NandcDelayns
-	ldr	r0, .L298
-	ldr	r1, .L298+4
-	add	r4, r4, r4, asl #2
-	sub	ip, r0, #48
+	bl	ndelay
+	ldr	r0, .L303
+	add	r4, r4, r4, lsl #2
+	ldr	r1, .L303+4
 	mov	r2, #0
-.L291:
-	ldrb	r3, [r1, #1209]	@ zero_extendqisi2
+	sub	ip, r0, #45
+.L297:
+	ldrb	r3, [r1, #85]	@ zero_extendqisi2
 	cmp	r2, r3
-	bcs	.L297
-	ldrb	r3, [r1, #1208]	@ zero_extendqisi2
+	bcc	.L300
+	mov	r0, #0
+	pop	{r4, r5, r6, lr}
+	b	NandcWaitFlashReady
+.L300:
+	ldrb	r3, [r1, #84]	@ zero_extendqisi2
 	cmp	r3, #67
 	add	r3, r2, r4
 	addeq	r3, ip, r3
 	addne	r3, r0, r3
-	add	r2, r2, #1
 	ldrsb	r3, [r3, #5]
+	add	r2, r2, #1
 	str	r3, [r5]
-	b	.L291
-.L297:
-	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, lr}
-	b	NandcWaitFlashReady
-.L299:
+	b	.L297
+.L304:
 	.align	2
-.L298:
-	.word	.LANCHOR1+304
+.L303:
+	.word	.LANCHOR1+301
 	.word	.LANCHOR0
 	.fnend
 	.size	SandiskSetRRPara, .-SandiskSetRRPara
 	.align	2
 	.global	micron_auto_read_calibration_config
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	micron_auto_read_calibration_config, %function
 micron_auto_read_calibration_config:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	mov	r4, r0
-	mov	r5, r1
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	mov	r5, r0
+	mov	r6, r1
 	bl	NandcWaitFlashReady
-	ldr	r3, .L302
+	ldr	r0, .L307
+	ldr	r4, [r0, r5, lsl #3]
+	add	r0, r0, r5, lsl #3
+	ldrb	r3, [r0, #4]	@ zero_extendqisi2
 	mov	r0, #200
-	add	r2, r3, r4, asl #3
-	ldrb	r4, [r2, #16]	@ zero_extendqisi2
-	ldr	r3, [r2, #12]
-	add	r4, r3, r4, asl #8
+	add	r4, r4, r3, lsl #8
 	mov	r3, #239
 	str	r3, [r4, #2056]
 	mov	r3, #150
 	str	r3, [r4, #2052]
-	bl	NandcDelayns
-	str	r5, [r4, #2048]
+	bl	ndelay
 	mov	r3, #0
+	str	r6, [r4, #2048]
 	str	r3, [r4, #2048]
 	str	r3, [r4, #2048]
 	str	r3, [r4, #2048]
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L303:
+	pop	{r4, r5, r6, pc}
+.L308:
 	.align	2
-.L302:
+.L307:
 	.word	.LANCHOR0
 	.fnend
 	.size	micron_auto_read_calibration_config, .-micron_auto_read_calibration_config
 	.align	2
 	.global	FlashEraseSLc2KBlocks
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashEraseSLc2KBlocks, %function
 FlashEraseSLc2KBlocks:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, lr}
-	.save {r4, r5, r6, r7, r8, r9, lr}
+	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
+	.pad #16
 	mov	r5, #0
-	ldr	r8, .L316
-	.pad #20
-	sub	sp, sp, #20
+	ldr	r8, .L320
 	mov	r6, r0
 	mov	r9, r1
 	mov	r7, r5
-.L305:
+	ldr	r10, .L320+4
+.L310:
 	cmp	r7, r9
-	beq	.L315
-	rsb	r3, r7, r9
+	bne	.L315
+	mov	r0, #0
+	add	sp, sp, #16
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L315:
+	sub	r3, r9, r7
 	add	r2, sp, #8
-	add	r0, r6, r5
-	mov	r1, #0
 	uxtb	r3, r3
+	mov	r1, #0
+	add	r0, r6, r5
 	str	r3, [sp]
 	add	r3, sp, #12
 	bl	LogAddr2PhyAddr
-	ldrb	r2, [r8, #2230]	@ zero_extendqisi2
+	ldrb	r2, [r8, #2234]	@ zero_extendqisi2
 	ldr	r3, [sp, #12]
-	cmp	r3, r2
-	mvncs	r3, #0
-	strcs	r3, [r6, r5]
-	bcs	.L307
+	cmp	r2, r3
+	mvnls	r3, #0
+	strls	r3, [r6, r5]
+	bls	.L312
 	add	r2, r8, r3
-	add	r3, r8, r3, asl #4
-	ldrb	r4, [r2, #2232]	@ zero_extendqisi2
-	strb	r4, [r3, #2100]
+	add	r3, r8, r3, lsl #4
+	ldrb	r4, [r2, #2236]	@ zero_extendqisi2
+	strb	r4, [r3, #2104]
 	mov	r0, r4
 	bl	NandcWaitFlashReady
 	mov	r0, r4
 	bl	NandcFlashCs
 	mov	r2, #0
-	mov	r0, r4
 	ldr	r1, [sp, #8]
+	mov	r0, r4
 	bl	FlashEraseCmd
 	mov	r0, r4
 	bl	NandcWaitFlashReady
 	mov	r0, r4
 	ldr	r1, [sp, #8]
 	bl	FlashReadStatus
-	mov	r2, #0
-	ldr	r3, [sp, #8]
 	sbfx	r0, r0, #0, #1
+	ldr	r1, [sp, #8]
 	str	r0, [r6, r5]
+	mov	r2, #0
+	ldr	r3, [r8, #40]
 	mov	r0, r4
-	ldr	r1, [r8, #4]
 	add	r1, r1, r3
 	bl	FlashEraseCmd
 	mov	r0, r4
@@ -1823,249 +2008,244 @@
 	strne	r3, [r6, r5]
 	ldr	r3, [r6, r5]
 	cmn	r3, #1
-	bne	.L309
-	ldr	r0, .L316+4
+	bne	.L314
 	ldr	r1, [sp, #8]
+	mov	r0, r10
 	bl	printk
-.L309:
+.L314:
 	mov	r0, r4
 	bl	NandcFlashDeCs
-.L307:
+.L312:
 	add	r7, r7, #1
 	add	r5, r5, #36
-	b	.L305
-.L315:
-	mov	r0, #0
-	add	sp, sp, #20
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, pc}
-.L317:
+	b	.L310
+.L321:
 	.align	2
-.L316:
+.L320:
 	.word	.LANCHOR0
 	.word	.LC1
 	.fnend
 	.size	FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks
 	.align	2
 	.global	FlashEraseBlocks
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashEraseBlocks, %function
 FlashEraseBlocks:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 16
+	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	mov	r8, r2
-	ldr	r4, .L354
-	.pad #28
-	sub	sp, sp, #28
-	ldrb	r5, [r4]	@ zero_extendqisi2
+	ldr	r4, .L355
+	.pad #20
+	sub	sp, sp, #20
+	ldrb	r5, [r4, #36]	@ zero_extendqisi2
 	cmp	r5, #0
 	moveq	r9, r0
 	moveq	r10, r1
-	moveq	fp, r4
-	beq	.L319
+	beq	.L324
 	mov	r1, r2
 	bl	FlashEraseSLc2KBlocks
-	b	.L320
-.L328:
-	mov	r3, #36
-	mov	r1, #0
-	mul	r6, r3, r5
-	add	r2, sp, #16
-	add	r3, r9, r6
-	str	r3, [sp, #12]
-	rsb	r3, r5, r8
-	ldr	r0, [sp, #12]
-	uxtb	r3, r3
-	str	r3, [sp]
-	add	r3, sp, #20
-	bl	LogAddr2PhyAddr
-	ldrb	r3, [r4, #2230]	@ zero_extendqisi2
-	mov	r7, r0
-	ldr	r0, [sp, #20]
-	cmp	r0, r3
-	mvncs	r3, #0
-	strcs	r3, [r9, r6]
-	bcc	.L351
 .L322:
-	add	r5, r5, #1
-.L319:
-	cmp	r5, r8
-	bcc	.L328
-	b	.L352
-.L351:
-	ldrb	r3, [fp, #2240]	@ zero_extendqisi2
+	add	sp, sp, #20
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L333:
+	mov	r3, #36
+	add	r2, sp, #8
+	mul	r6, r3, r5
+	sub	r3, r8, r5
+	uxtb	r3, r3
+	mov	r1, #0
+	str	r3, [sp]
+	add	r3, sp, #12
+	add	fp, r9, r6
+	mov	r0, fp
+	bl	LogAddr2PhyAddr
+	ldrb	r3, [r4, #2234]	@ zero_extendqisi2
+	mov	r7, r0
+	ldr	r0, [sp, #12]
+	cmp	r3, r0
+	mvnls	r3, #0
+	strls	r3, [r9, r6]
+	bls	.L327
+	ldrb	r3, [r4, #2244]	@ zero_extendqisi2
 	cmp	r3, #0
-	add	r3, r4, r0, asl #4
-	ldr	r3, [r3, #2108]
+	add	r3, r4, r0, lsl #4
 	moveq	r7, #0
+	ldr	r3, [r3, #2112]
 	cmp	r3, #0
-	beq	.L324
+	beq	.L329
 	uxtb	r0, r0
 	bl	FlashWaitCmdDone
-.L324:
-	ldr	r2, [sp, #20]
+.L329:
+	ldr	r2, [sp, #12]
 	cmp	r7, #0
-	ldr	r0, [sp, #12]
-	addne	ip, r6, #36
-	addne	ip, r9, ip
-	mov	r3, r2, asl #4
+	addne	r6, r6, #36
+	mov	r0, #0
+	addne	r6, r9, r6
+	lsl	r3, r2, #4
 	add	r2, r4, r2
 	add	r1, r4, r3
 	add	r3, r4, r3
-	ldrb	r6, [r2, #2232]	@ zero_extendqisi2
+	str	r0, [r1, #2116]
+	ldr	r0, [sp, #8]
+	strne	r6, [r1, #2116]
+	ldrb	r6, [r2, #2236]	@ zero_extendqisi2
 	str	r0, [r1, #2108]
-	mov	r0, #0
-	str	r0, [r1, #2112]
-	ldr	r0, [sp, #16]
-	strne	ip, [r1, #2112]
-	strb	r6, [r3, #2100]
-	str	r0, [r1, #2104]
+	str	fp, [r1, #2112]
 	mov	r0, r6
+	strb	r6, [r3, #2104]
 	bl	NandcFlashCs
 	cmp	r10, #1
 	mov	r0, r6
-	bne	.L326
-	ldrb	r3, [fp, #144]	@ zero_extendqisi2
+	bne	.L331
+	ldrb	r3, [r4, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L326
+	beq	.L331
 	bl	flash_enter_slc_mode
-	b	.L327
-.L326:
-	bl	flash_exit_slc_mode
-.L327:
-	ldr	r3, [sp, #20]
+.L332:
+	ldr	r3, [sp, #12]
 	mov	r0, r6
-	ldr	r1, [sp, #16]
+	ldr	r1, [sp, #8]
 	add	r5, r5, r7
-	add	r3, r4, r3, asl #2
-	ldr	r2, [r3, #1172]
+	add	r3, r4, r3, lsl #2
+	ldr	r2, [r3, #1180]
 	adds	r2, r2, #0
 	movne	r2, #1
 	bl	FlashWaitReadyEN
-	mov	r0, r6
 	mov	r2, r7
-	ldr	r1, [sp, #16]
+	ldr	r1, [sp, #8]
+	mov	r0, r6
 	bl	FlashEraseCmd
 	mov	r0, r6
 	bl	NandcFlashDeCs
-	b	.L322
-.L352:
-	ldr	r6, .L354
+.L327:
+	add	r5, r5, #1
+.L324:
+	cmp	r5, r8
+	bcc	.L333
+	ldr	r6, .L355+4
 	mov	r5, #0
-	ldr	r7, .L354+4
-.L329:
-	ldrb	r2, [r4, #2230]	@ zero_extendqisi2
-	ldr	r3, .L354
-	cmp	r5, r2
-	bcs	.L353
+.L334:
+	ldrb	r3, [r4, #2234]	@ zero_extendqisi2
+	cmp	r5, r3
+	bcc	.L336
+	ldr	r3, [r4, #2248]
+	cmp	r3, #0
+	bne	.L337
+.L338:
+	mov	r0, #0
+	b	.L322
+.L331:
+	bl	flash_exit_slc_mode
+	b	.L332
+.L336:
 	uxtb	r0, r5
 	bl	FlashWaitCmdDone
 	cmp	r10, #1
-	bne	.L330
-	ldrb	r3, [r6, #144]	@ zero_extendqisi2
+	bne	.L335
+	ldrb	r3, [r4, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L330
-	ldrb	r0, [r7, r5, asl #4]	@ zero_extendqisi2
+	beq	.L335
+	ldrb	r0, [r6, r5, lsl #4]	@ zero_extendqisi2
 	bl	flash_exit_slc_mode
-.L330:
+.L335:
 	add	r5, r5, #1
-	b	.L329
-.L353:
-	ldr	r2, [r3, #2244]
-	cmp	r2, #0
-	bne	.L332
-.L334:
-	mov	r0, #0
-	b	.L320
-.L332:
-	ldrb	r3, [r3, #2068]	@ zero_extendqisi2
+	b	.L334
+.L337:
+	ldrb	r3, [r4, #2072]	@ zero_extendqisi2
 	cmp	r3, #69
-	bne	.L334
-	mov	r3, #0
-	mov	r2, #36
-	mov	r1, r3
-.L333:
+	moveq	r3, #0
+	moveq	r2, #36
+	moveq	r1, r3
+	bne	.L338
+.L339:
 	cmp	r3, r8
-	beq	.L334
+	beq	.L338
 	mul	r0, r2, r3
 	add	r3, r3, #1
 	str	r1, [r9, r0]
-	b	.L333
-.L320:
-	add	sp, sp, #28
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L355:
+	b	.L339
+.L356:
 	.align	2
-.L354:
+.L355:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2100
+	.word	.LANCHOR0+2104
 	.fnend
 	.size	FlashEraseBlocks, .-FlashEraseBlocks
 	.align	2
 	.global	FlashReadDpCmd
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReadDpCmd, %function
 FlashReadDpCmd:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	mov	r8, r0
-	ldr	r0, .L362
-	mov	r7, r1
+	mov	r7, r0
+	ldr	r0, .L363
+	mov	r8, r1
 	uxtb	r10, r2
-	mov	r9, r2, lsr #8
-	add	r3, r0, r8, asl #3
-	mov	r5, r2, lsr #16
-	ldrb	r1, [r0, #64]	@ zero_extendqisi2
-	uxtb	lr, r7
-	ldr	r4, [r3, #12]
-	mov	ip, r7, lsr #8
-	ldrb	r3, [r3, #16]	@ zero_extendqisi2
-	cmp	r1, #1
-	ldr	r2, [r0, #44]
-	mov	r1, r7, lsr #16
-	mov	r3, r3, asl #8
+	lsr	r9, r2, #8
+	lsr	r6, r2, #16
+	uxtb	lr, r8
+	ldr	r2, [r0, #48]
+	lsr	ip, r8, #8
+	add	r1, r0, r7, lsl #3
+	ldr	r3, [r0, r7, lsl #3]
+	ldrb	r4, [r1, #4]	@ zero_extendqisi2
+	ldrb	r1, [r0, #68]	@ zero_extendqisi2
 	ldrb	r2, [r2, #7]	@ zero_extendqisi2
-	bne	.L357
+	cmp	r1, #1
+	lsl	r4, r4, #8
+	lsr	r1, r8, #16
+	bne	.L358
 	cmp	r2, #1
-	addeq	r2, r4, r3
-	add	r4, r4, r3
-	moveq	r6, #38
-	streq	r6, [r2, #2056]
-	mov	r6, #0
-	ldrb	r3, [r0, #57]	@ zero_extendqisi2
-	ldrb	r2, [r0, #56]	@ zero_extendqisi2
-	mov	r0, r8
+	addeq	r2, r3, r4
+	moveq	r5, #38
+	add	r4, r3, r4
+	streq	r5, [r2, #2056]
+	ldrb	r3, [r0, #61]	@ zero_extendqisi2
+	mov	r5, #0
+	ldrb	r2, [r0, #60]	@ zero_extendqisi2
+	mov	r0, r7
 	str	r2, [r4, #2056]
-	str	r6, [r4, #2052]
-	str	r6, [r4, #2052]
+	str	r5, [r4, #2052]
+	str	r5, [r4, #2052]
 	str	lr, [r4, #2052]
 	str	ip, [r4, #2052]
 	str	r1, [r4, #2052]
 	str	r3, [r4, #2056]
 	bl	NandcWaitFlashReady
-	str	r6, [r4, #2056]
 	mov	r3, #48
-	str	r6, [r4, #2052]
-	str	r6, [r4, #2052]
+	str	r5, [r4, #2056]
+	str	r5, [r4, #2052]
+	str	r5, [r4, #2052]
 	str	r10, [r4, #2052]
 	str	r9, [r4, #2052]
-	str	r5, [r4, #2052]
+	str	r6, [r4, #2052]
 	str	r3, [r4, #2056]
-	b	.L359
-.L357:
+.L360:
+	mov	r1, r8
+	mov	r0, r7
+	pop	{r4, r5, r6, r7, r8, r9, r10, lr}
+	b	FlashSetRandomizer
+.L358:
 	cmp	r2, #1
-	addeq	r2, r4, r3
-	add	r3, r4, r3
-	moveq	r6, #38
-	streq	r6, [r2, #2056]
-	ldrb	r2, [r0, #56]	@ zero_extendqisi2
+	addeq	r2, r3, r4
+	moveq	r5, #38
+	streq	r5, [r2, #2056]
+	add	r3, r3, r4
+	ldrb	r2, [r0, #60]	@ zero_extendqisi2
 	str	r2, [r3, #2056]
-	ldrb	r2, [r0, #57]	@ zero_extendqisi2
+	ldrb	r2, [r0, #61]	@ zero_extendqisi2
 	str	lr, [r3, #2052]
 	str	ip, [r3, #2052]
 	str	r1, [r3, #2052]
@@ -2073,132 +2253,140 @@
 	mov	r2, #48
 	str	r10, [r3, #2052]
 	str	r9, [r3, #2052]
-	str	r5, [r3, #2052]
+	str	r6, [r3, #2052]
 	str	r2, [r3, #2056]
-.L359:
-	mov	r0, r8
-	mov	r1, r7
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
-	b	FlashSetRandomizer
-.L363:
+	b	.L360
+.L364:
 	.align	2
-.L362:
+.L363:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashReadDpCmd, .-FlashReadDpCmd
 	.align	2
 	.global	ftl_flash_de_init
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_flash_de_init, %function
 ftl_flash_de_init:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
+	push	{r4, lr}
+	.save {r4, lr}
 	mov	r0, #0
-	ldr	r4, .L375
+	ldr	r4, .L376
 	bl	NandcWaitFlashReady
 	bl	FlashSetReadRetryDefault
-	ldr	r0, [r4, #2248]
+	ldr	r0, [r4, #2252]
 	cmp	r0, #0
-	beq	.L365
+	beq	.L366
 	mov	r0, #0
 	bl	flash_enter_slc_mode
-	b	.L366
-.L365:
-	bl	flash_exit_slc_mode
-.L366:
-	ldrb	r3, [r4, #2252]	@ zero_extendqisi2
-	ldr	r5, .L375
+.L367:
+	ldrb	r3, [r4, #2256]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L367
-	ldrb	r3, [r5, #2229]	@ zero_extendqisi2
+	beq	.L368
+	ldrb	r3, [r4, #2233]	@ zero_extendqisi2
 	tst	r3, #1
-	beq	.L367
+	beq	.L368
 	mov	r0, #1
 	bl	FlashSetInterfaceMode
 	mov	r0, #1
 	bl	NandcSetMode
 	mov	r3, #0
-	strb	r3, [r5, #2252]
-.L367:
-	ldr	r3, [r4, #12]
+	strb	r3, [r4, #2256]
+.L368:
+	ldr	r3, [r4]
 	mov	r0, #0
 	str	r0, [r3, #336]
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L376:
+	pop	{r4, pc}
+.L366:
+	bl	flash_exit_slc_mode
+	b	.L367
+.L377:
 	.align	2
-.L375:
+.L376:
 	.word	.LANCHOR0
 	.fnend
 	.size	ftl_flash_de_init, .-ftl_flash_de_init
 	.align	2
 	.global	NandcRandmzSel
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcRandmzSel, %function
 NandcRandmzSel:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L378
-	add	r0, r3, r0, asl #3
-	ldr	r3, [r0, #12]
+	ldr	r3, .L379
+	ldr	r3, [r3, r0, lsl #3]
 	str	r1, [r3, #336]
 	bx	lr
-.L379:
+.L380:
 	.align	2
-.L378:
+.L379:
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcRandmzSel, .-NandcRandmzSel
 	.global	__aeabi_idiv
 	.align	2
 	.global	NandcTimeCfg
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcTimeCfg, %function
 NandcTimeCfg:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, lr}
+	push	{r4, lr}
 	.save {r4, lr}
 	mov	r4, r0
 	mov	r0, #0
 	bl	rknand_get_clk_rate
-	ldr	r1, .L391
+	ldr	r1, .L392
 	bl	__aeabi_idiv
-	ldr	r3, .L391+4
-	ldr	r3, [r3, #80]
+	ldr	r3, .L392+4
 	cmp	r0, #250
 	movwgt	r2, #8354
-	bgt	.L389
-	cmp	r0, #220
+	ldr	r3, [r3, #88]
 	bgt	.L390
+	cmp	r0, #220
+	ble	.L384
+.L391:
+	movw	r2, #8322
+	b	.L390
+.L384:
 	cmp	r0, #185
 	movwgt	r2, #4226
-	bgt	.L389
+	bgt	.L390
 	cmp	r0, #160
 	movwgt	r2, #4194
-	bgt	.L389
+	bgt	.L390
 	cmp	r4, #35
 	movwls	r2, #4193
-	bls	.L389
+	bls	.L390
 	cmp	r4, #99
 	movwls	r2, #4225
-	bls	.L389
+	bhi	.L391
 .L390:
-	movw	r2, #8322
-.L389:
 	str	r2, [r3, #4]
-	ldmfd	sp!, {r4, pc}
-.L392:
+	pop	{r4, pc}
+.L393:
 	.align	2
-.L391:
+.L392:
 	.word	1000000
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcTimeCfg, .-NandcTimeCfg
 	.align	2
 	.global	FlashTimingCfg
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashTimingCfg, %function
 FlashTimingCfg:
 	.fnstart
@@ -2209,249 +2397,266 @@
 	sub	r3, r3, #33
 	bic	r3, r3, #32
 	cmp	r3, #1
-	bls	.L394
+	bls	.L395
 	movw	r3, #8322
 	cmp	r0, r3
-	bne	.L395
-.L394:
-	ldr	r3, .L396
-	ldr	r3, [r3, #80]
-	str	r0, [r3, #4]
+	bne	.L396
 .L395:
-	ldr	r3, .L396+4
-	ldrb	r0, [r3, #493]	@ zero_extendqisi2
-	b	NandcTimeCfg
-.L397:
-	.align	2
+	ldr	r3, .L397
+	ldr	r3, [r3, #88]
+	str	r0, [r3, #4]
 .L396:
+	ldr	r3, .L397+4
+	ldrb	r0, [r3, #489]	@ zero_extendqisi2
+	b	NandcTimeCfg
+.L398:
+	.align	2
+.L397:
 	.word	.LANCHOR0
 	.word	.LANCHOR1
 	.fnend
 	.size	FlashTimingCfg, .-FlashTimingCfg
 	.align	2
 	.global	NandcInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcInit, %function
 NandcInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	mov	r1, #0
-	ldr	r3, .L401
+	ldr	r3, .L402
 	mov	r2, #1
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	mov	r1, #0
 	mov	r5, #0
-	str	r1, [r3, #16]
 	mov	r4, r3
-	str	r0, [r3, #12]
-	str	r2, [r3, #24]
+	str	r2, [r3, #12]
 	mov	r2, #2
-	str	r0, [r3, #20]
-	str	r2, [r3, #32]
+	str	r2, [r3, #20]
 	mov	r2, #3
-	str	r0, [r3, #28]
-	str	r0, [r3, #36]
-	str	r0, [r3, #80]
-	str	r2, [r3, #40]
+	stm	r3, {r0, r1}
+	str	r0, [r3, #8]
+	str	r0, [r3, #16]
+	str	r0, [r3, #24]
+	str	r0, [r3, #88]
+	str	r2, [r3, #28]
 	ldr	r2, [r0]
 	and	r2, r2, #253952
 	ubfx	ip, r2, #13, #1
 	bfi	r2, r1, #13, #1
 	ldr	r1, [r0, #352]
 	orr	r2, r2, #256
-	str	ip, [r3, #2256]
+	str	ip, [r3, #2260]
 	movw	ip, #2049
 	ubfx	r1, r1, #16, #4
-	str	r1, [r3, #2260]
+	str	r1, [r3, #2264]
 	ldr	r1, [r0, #352]
 	cmp	r1, ip
-	str	r1, [r3, #2264]
+	str	r1, [r3, #2268]
 	moveq	r3, #8
-	streq	r3, [r4, #2260]
+	streq	r3, [r4, #2264]
 	str	r2, [r0]
 	mov	r0, #40
-	ldr	r3, [r4, #80]
+	ldr	r3, [r4, #88]
 	str	r5, [r3, #336]
 	bl	NandcTimeCfg
-	ldr	r3, [r4, #80]
+	ldr	r3, [r4, #88]
 	movw	r2, #8322
 	mov	r0, #36864
 	str	r2, [r3, #344]
-	ldr	r2, .L401+4
+	ldr	r2, .L402+4
 	str	r2, [r3, #304]
 	bl	ftl_malloc
-	str	r5, [r4, #2296]
-	str	r5, [r4, #2304]
-	str	r0, [r4, #2268]
 	str	r0, [r4, #2272]
-	add	r0, r0, #32768
 	str	r0, [r4, #2276]
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L402:
+	add	r0, r0, #32768
+	str	r0, [r4, #2280]
+	str	r5, [r4, #2300]
+	str	r5, [r4, #2308]
+	pop	{r4, r5, r6, pc}
+.L403:
 	.align	2
-.L401:
+.L402:
 	.word	.LANCHOR0
 	.word	1579009
 	.fnend
 	.size	NandcInit, .-NandcInit
 	.align	2
 	.global	NandcGetTimeCfg
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcGetTimeCfg, %function
 NandcGetTimeCfg:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	ip, .L405
+	ldr	ip, .L406
 	str	lr, [sp, #-4]!
 	.save {lr}
-	ldr	lr, [ip, #80]
+	ldr	lr, [ip, #88]
 	ldr	lr, [lr, #4]
 	str	lr, [r0]
-	ldr	r0, [ip, #80]
+	ldr	r0, [ip, #88]
 	ldr	r0, [r0]
 	str	r0, [r1]
-	ldr	r1, [ip, #80]
+	ldr	r1, [ip, #88]
 	ldr	r1, [r1, #304]
 	str	r1, [r2]
-	ldr	r1, [ip, #80]
+	ldr	r1, [ip, #88]
 	ldr	r2, [r1, #308]
 	ldr	r1, [r1, #344]
 	uxtb	r2, r2
-	orr	r2, r2, r1, asl #16
+	orr	r2, r2, r1, lsl #16
 	str	r2, [r3]
 	ldr	pc, [sp], #4
-.L406:
+.L407:
 	.align	2
-.L405:
+.L406:
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcGetTimeCfg, .-NandcGetTimeCfg
 	.align	2
 	.global	NandcBchSel
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcBchSel, %function
 NandcBchSel:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L415
-	mov	r1, #1
-	ldr	r2, [r3, #80]
-	str	r0, [r3, #2308]
-	mov	r3, #0
-	str	r1, [r2, #8]
-	mov	r1, #16
-	cmp	r0, r1
-	bfi	r3, r1, #8, #8
-	bfc	r3, #18, #1
-	bne	.L408
-.L411:
+	ldr	r3, .L416
+	mov	ip, #1
+	mov	r1, #0
+	ldr	r2, [r3, #88]
+	str	r0, [r3, #2312]
+	mov	r3, r1
+	str	ip, [r2, #8]
+	mov	ip, #16
+	cmp	r0, ip
+	bfi	r3, ip, #8, #8
+	bfi	r3, r1, #18, #1
+	bne	.L409
+.L412:
 	bfc	r3, #4, #1
-	b	.L409
-.L408:
-	cmp	r0, #24
-	orreq	r3, r3, #16
-	beq	.L409
-	cmp	r0, #40
-	orr	r3, r3, #262144
-	orr	r3, r3, #16
-	beq	.L411
-.L409:
+.L410:
 	orr	r3, r3, #1
 	str	r3, [r2, #12]
 	bx	lr
-.L416:
+.L409:
+	cmp	r0, #24
+	orreq	r3, r3, #16
+	beq	.L410
+	cmp	r0, #40
+	orr	r3, r3, #262144
+	orr	r3, r3, #16
+	bne	.L410
+	b	.L412
+.L417:
 	.align	2
-.L415:
+.L416:
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcBchSel, .-NandcBchSel
 	.align	2
 	.global	FlashBchSel
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashBchSel, %function
 FlashBchSel:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L418
-	strb	r0, [r3, #2312]
+	ldr	r3, .L419
+	strb	r0, [r3, #2316]
 	b	NandcBchSel
-.L419:
+.L420:
 	.align	2
-.L418:
+.L419:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashBchSel, .-FlashBchSel
 	.align	2
 	.global	ftl_flash_resume
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_flash_resume, %function
 ftl_flash_resume:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L429
-	stmfd	sp!, {r4, r5, r6, lr}
+	ldr	r3, .L430
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
 	mov	r5, #0
-	ldr	r2, [r3, #80]
+	ldr	r6, .L430+4
 	mov	r4, r3
-	ldr	r1, [r3, #84]
-	ldr	r6, .L429+4
-	str	r1, [r2]
-	ldr	r1, [r3, #88]
-	ldr	r2, [r3, #80]
-	str	r1, [r2, #4]
+	ldr	r2, [r3, #88]
 	ldr	r1, [r3, #92]
-	str	r1, [r2, #8]
+	str	r1, [r2]
 	ldr	r1, [r3, #96]
-	str	r1, [r2, #12]
+	ldr	r2, [r3, #88]
+	str	r1, [r2, #4]
 	ldr	r1, [r3, #100]
-	str	r1, [r2, #304]
+	str	r1, [r2, #8]
 	ldr	r1, [r3, #104]
-	str	r1, [r2, #308]
+	str	r1, [r2, #12]
 	ldr	r1, [r3, #108]
-	str	r1, [r2, #336]
+	str	r1, [r2, #304]
 	ldr	r1, [r3, #112]
+	str	r1, [r2, #308]
+	ldr	r1, [r3, #116]
+	str	r1, [r2, #336]
+	ldr	r1, [r3, #120]
 	str	r1, [r2, #344]
-.L422:
-	ldrb	r3, [r6, r5, asl #3]	@ zero_extendqisi2
+.L423:
+	ldrb	r3, [r6, r5, lsl #3]	@ zero_extendqisi2
 	sub	r3, r3, #1
 	uxtb	r3, r3
 	cmp	r3, #253
-	bhi	.L421
+	bhi	.L422
 	uxtb	r0, r5
 	bl	FlashReset
-.L421:
+.L422:
 	add	r5, r5, #1
 	cmp	r5, #4
-	bne	.L422
-	ldrb	r3, [r4, #2252]	@ zero_extendqisi2
-	ldr	r5, .L429
+	bne	.L423
+	ldrb	r3, [r4, #2256]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L423
+	beq	.L424
 	mov	r0, #1
 	bl	NandcSetMode
-	ldrb	r0, [r5, #2229]	@ zero_extendqisi2
+	ldrb	r0, [r4, #2233]	@ zero_extendqisi2
 	bl	FlashSetInterfaceMode
-	ldrb	r0, [r5, #2229]	@ zero_extendqisi2
+	ldrb	r0, [r4, #2233]	@ zero_extendqisi2
 	bl	NandcSetMode
-	ldrb	r0, [r5, #101]	@ zero_extendqisi2
+	ldrb	r0, [r4, #109]	@ zero_extendqisi2
 	bl	NandcSetDdrPara
-.L423:
-	ldr	r3, [r4, #44]
-	ldmfd	sp!, {r4, r5, r6, lr}
+.L424:
+	ldr	r3, [r4, #48]
+	pop	{r4, r5, r6, lr}
 	ldrb	r0, [r3, #20]	@ zero_extendqisi2
 	b	FlashBchSel
-.L430:
+.L431:
 	.align	2
-.L429:
+.L430:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2068
+	.word	.LANCHOR0+2072
 	.fnend
 	.size	ftl_flash_resume, .-ftl_flash_resume
 	.align	2
 	.global	ftl_nandc_get_irq_status
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_nandc_get_irq_status, %function
 ftl_nandc_get_irq_status:
 	.fnstart
@@ -2464,6 +2669,9 @@
 	.size	ftl_nandc_get_irq_status, .-ftl_nandc_get_irq_status
 	.align	2
 	.global	rk_nandc_flash_ready
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_nandc_flash_ready, %function
 rk_nandc_flash_ready:
 	.fnstart
@@ -2481,6 +2689,9 @@
 	.size	rk_nandc_flash_ready, .-rk_nandc_flash_ready
 	.align	2
 	.global	NandcIqrWaitFlashReady
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcIqrWaitFlashReady, %function
 NandcIqrWaitFlashReady:
 	.fnstart
@@ -2492,6 +2703,9 @@
 	.size	NandcIqrWaitFlashReady, .-NandcIqrWaitFlashReady
 	.align	2
 	.global	rk_nandc_flash_xfer_completed
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_nandc_flash_xfer_completed, %function
 rk_nandc_flash_xfer_completed:
 	.fnstart
@@ -2509,6 +2723,9 @@
 	.size	rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed
 	.align	2
 	.global	NandcSendDumpDataStart
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcSendDumpDataStart, %function
 NandcSendDumpDataStart:
 	.fnstart
@@ -2518,10 +2735,10 @@
 	ldr	r2, [r0, #16]
 	.pad #8
 	sub	sp, sp, #8
-	ldr	r3, .L437
+	ldr	r3, .L438
 	str	r2, [sp, #4]
 	ldr	r2, [sp, #4]
-	bic	r2, r2, #4
+	bfc	r2, #2, #1
 	str	r2, [sp, #4]
 	ldr	r2, [sp, #4]
 	str	r2, [r0, #16]
@@ -2531,14 +2748,17 @@
 	add	sp, sp, #8
 	@ sp needed
 	bx	lr
-.L438:
+.L439:
 	.align	2
-.L437:
+.L438:
 	.word	538969130
 	.fnend
 	.size	NandcSendDumpDataStart, .-NandcSendDumpDataStart
 	.align	2
 	.global	NandcSendDumpDataDone
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcSendDumpDataDone, %function
 NandcSendDumpDataDone:
 	.fnstart
@@ -2547,12 +2767,12 @@
 	@ link register save eliminated.
 	.pad #8
 	sub	sp, sp, #8
-.L440:
+.L441:
 	ldr	r3, [r0, #8]
 	str	r3, [sp, #4]
 	ldr	r3, [sp, #4]
 	tst	r3, #1048576
-	beq	.L440
+	beq	.L441
 	add	sp, sp, #8
 	@ sp needed
 	bx	lr
@@ -2560,155 +2780,152 @@
 	.size	NandcSendDumpDataDone, .-NandcSendDumpDataDone
 	.align	2
 	.global	NandcXferStart
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcXferStart, %function
 NandcXferStart:
 	.fnstart
-	@ args = 8, pretend = 0, frame = 24
+	@ args = 8, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	lr, #16
-	ldr	r5, .L462
-	mov	r4, #0
-	.pad #28
-	sub	sp, sp, #28
-	add	r0, r5, r0, asl #3
-	ldr	r8, [sp, #64]
-	ldr	r6, [r0, #12]
-	ldrb	r0, [r0, #16]	@ zero_extendqisi2
-	ldr	ip, [sp, #68]
+	mov	ip, #16
+	ldr	r4, .L463
+	mov	r5, #0
+	.pad #20
+	sub	sp, sp, #20
+	ldr	r8, [sp, #56]
+	ldr	r6, [r4, r0, lsl #3]
+	add	r0, r4, r0, lsl #3
 	ldr	r7, [r6, #12]
-	bfi	r7, lr, #8, #8
-	bfi	r7, r4, #3, #1
-	bfi	r4, r1, #1, #1
-	orr	r4, r4, #8
+	ldrb	r0, [r0, #4]	@ zero_extendqisi2
+	bfi	r7, ip, #8, #8
+	bfi	r7, r5, #3, #1
+	bfi	r5, r1, #1, #1
 	bfi	r7, r0, #5, #3
+	orr	r5, r5, #8
 	mov	r0, #1
-	bfi	r4, r0, #5, #2
-	orr	r4, r4, #536870912
-	mov	r3, r3, lsr r0
-	orr	r4, r4, #1024
-	bfi	r4, r3, #4, #1
-	ldr	r3, [r5, #2260]
+	bfi	r5, r0, #5, #2
+	lsr	r3, r3, r0
+	orr	r5, r5, #536870912
+	orr	r5, r5, #1024
+	bfi	r5, r3, #4, #1
+	ldr	r3, [r4, #2264]
 	cmp	r3, #3
-	bls	.L445
+	bls	.L446
 	ldr	r3, [r6, #16]
-	str	r3, [sp, #20]
-	ldr	r3, [sp, #20]
-	bic	r3, r3, #4
-	str	r3, [sp, #20]
-	adds	r3, ip, #0
-	movne	r3, #1
-	cmp	ip, #0
-	cmpeq	r8, #0
-	str	r3, [sp, #8]
-	beq	.L446
+	str	r3, [sp, #12]
+	ldr	r3, [sp, #12]
+	bfc	r3, #2, #1
+	str	r3, [sp, #12]
+	ldr	r3, [sp, #60]
+	cmp	r8, #0
+	cmpeq	r3, #0
+	beq	.L447
 	cmp	r1, #0
-	bne	.L447
-.L455:
+	bne	.L448
+.L456:
 	add	r2, r2, #1
 	cmp	r8, #0
-	mov	r2, r2, asr #1
+	asr	r2, r2, #1
 	movne	r0, r8
-	bfi	r4, r2, #22, #6
-	ldreq	r0, [r5, #2272]
-	b	.L449
+	bfi	r5, r2, #22, #6
+	ldreq	r0, [r4, #2276]
+.L450:
+	ldr	r3, [r4, #2280]
+	ubfx	r10, r5, #22, #5
+	mov	r9, r1
+	mov	r2, r1
+	lsl	r1, r10, #10
+	str	r0, [r4, #2284]
+	str	r3, [r4, #2288]
+	bl	rknand_dma_map_single
+	mov	r2, r9
+	str	r0, [r4, #2292]
+	lsl	r1, r10, #7
+	ldr	r0, [r4, #2288]
+	bl	rknand_dma_map_single
+	mov	r3, #1
+	str	r0, [r4, #2296]
+	str	r3, [r4, #2300]
+	mov	r2, #16
+	ldr	r3, [r4, #2292]
+	tst	r8, #3
+	clz	r1, r9
+	lsr	r1, r1, #5
+	str	r3, [r6, #20]
+	ldr	r3, [r4, #2296]
+	str	r3, [r6, #24]
+	mov	r3, #0
+	str	r3, [sp, #12]
+	ldr	r3, [sp, #12]
+	bfi	r3, r2, #9, #5
+	moveq	r2, #2
+	str	r3, [sp, #12]
+	ldr	r3, [sp, #12]
+	orr	r3, r3, #448
+	str	r3, [sp, #12]
+	ldreq	r3, [sp, #12]
+	bfieq	r3, r2, #3, #3
+	streq	r3, [sp, #12]
+	ldr	r3, [sp, #12]
+	orr	r3, r3, #4
+	str	r3, [sp, #12]
+	ldr	r3, [sp, #12]
+	bfi	r3, r1, #1, #1
+	str	r3, [sp, #12]
+	ldr	r3, [sp, #12]
+	orr	r3, r3, #1
+	str	r3, [sp, #12]
 .L447:
-	ldr	r3, [r5, #2308]
-	mov	r9, r5
+	ldr	r3, [sp, #12]
+	str	r3, [r6, #16]
+.L446:
+	str	r7, [r6, #12]
+	str	r5, [r6, #8]
+	orr	r5, r5, #4
+	str	r5, [r6, #8]
+	add	sp, sp, #20
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L448:
+	ldr	r3, [r4, #2312]
+	lsr	r10, r2, #1
+	ldr	ip, [sp, #60]
 	cmp	r3, #25
 	movcc	r3, #64
 	movcs	r3, #128
 	str	r3, [sp, #4]
-	mov	r3, r2, lsr #1
-	str	r3, [sp, #12]
 	mov	r3, #0
 	mov	r0, r3
-.L451:
-	ldr	lr, [sp, #12]
-	cmp	r0, lr
-	bcs	.L455
-	ldr	lr, [sp, #8]
-	mov	r10, r3, lsr #2
+.L452:
+	cmp	r0, r10
+	bcs	.L456
+	ldr	lr, [sp, #60]
 	add	r0, r0, #1
 	cmp	lr, #0
-	ldrneh	fp, [ip, #2]
-	mvneq	fp, #0
-	ldrneh	lr, [ip], #4
-	ldreq	lr, [r9, #2276]
-	orrne	lr, lr, fp, asl #16
-	ldrne	fp, [r9, #2276]
-	streq	fp, [lr, r10, asl #2]
-	strne	lr, [fp, r10, asl #2]
+	bic	lr, r3, #3
+	ldrne	fp, [ip], #4	@ unaligned
+	mvneq	r9, #0
+	ldrne	r9, [r4, #2280]
+	ldreq	fp, [r4, #2280]
+	strne	fp, [r9, lr]
+	streq	r9, [fp, lr]
 	ldr	lr, [sp, #4]
 	add	r3, r3, lr
-	b	.L451
-.L449:
-	ldr	r3, [r5, #2276]
-	ubfx	r10, r4, #22, #5
-	mov	r9, r1
-	str	r0, [r5, #2280]
-	mov	r2, r9
-	mov	r1, r10, asl #10
-	str	r3, [r5, #2284]
-	bl	rknand_dma_map_single
-	mov	r2, r9
-	mov	r1, r10, asl #7
-	clz	r9, r9
-	mov	r9, r9, lsr #5
-	str	r0, [r5, #2288]
-	ldr	r0, [r5, #2284]
-	bl	rknand_dma_map_single
-	mov	r3, #1
-	str	r3, [r5, #2296]
-	tst	r8, #3
-	ldr	r3, [r5, #2288]
-	str	r0, [r5, #2292]
-	str	r3, [r6, #20]
-	ldr	r3, [r5, #2292]
-	str	r3, [r6, #24]
-	mov	r3, #0
-	str	r3, [sp, #20]
-	ldr	r3, [sp, #20]
-	bic	r3, r3, #15872
-	orr	r3, r3, #8192
-	str	r3, [sp, #20]
-	ldr	r3, [sp, #20]
-	orr	r3, r3, #448
-	str	r3, [sp, #20]
-	ldreq	r3, [sp, #20]
-	biceq	r3, r3, #56
-	orreq	r3, r3, #16
-	streq	r3, [sp, #20]
-	ldr	r3, [sp, #20]
-	orr	r3, r3, #4
-	str	r3, [sp, #20]
-	ldr	r3, [sp, #20]
-	bic	r3, r3, #2
-	orr	r9, r3, r9, asl #1
-	str	r9, [sp, #20]
-	ldr	r3, [sp, #20]
-	orr	r3, r3, #1
-	str	r3, [sp, #20]
-.L446:
-	ldr	r3, [sp, #20]
-	str	r3, [r6, #16]
-.L445:
-	str	r7, [r6, #12]
-	str	r4, [r6, #8]
-	orr	r4, r4, #4
-	str	r4, [r6, #8]
-	add	sp, sp, #28
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L463:
+	b	.L452
+.L464:
 	.align	2
-.L462:
+.L463:
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcXferStart, .-NandcXferStart
 	.align	2
 	.global	Ftl_log2
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	Ftl_log2, %function
 Ftl_log2:
 	.fnstart
@@ -2717,20 +2934,24 @@
 	@ link register save eliminated.
 	mov	r1, #0
 	mov	r2, #1
-.L465:
+.L466:
 	cmp	r2, r0
 	uxth	r3, r1
 	add	r1, r1, #1
-	movls	r2, r2, asl #1
-	bls	.L465
-.L467:
+	bls	.L467
 	sub	r0, r3, #1
 	uxth	r0, r0
 	bx	lr
+.L467:
+	lsl	r2, r2, #1
+	b	.L466
 	.fnend
 	.size	Ftl_log2, .-Ftl_log2
 	.align	2
 	.global	FtlPrintInfo
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlPrintInfo, %function
 FtlPrintInfo:
 	.fnstart
@@ -2742,507 +2963,534 @@
 	.size	FtlPrintInfo, .-FtlPrintInfo
 	.align	2
 	.global	FtlSysBlkNumInit
+	.syntax unified
+	.arm
+	.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, .L471
-	cmp	r0, #23
-	movw	r1, #2330
-	add	r2, r3, #2320
-	movls	r0, #24
+	ldr	r3, .L470
+	movw	r2, #2324
+	movw	r1, #2334
+	cmp	r0, #24
+	movcc	r0, #24
+	ldrh	r2, [r3, r2]
 	ldrh	r1, [r3, r1]
-	ldrh	r2, [r2]
-	str	r0, [r3, #2316]
-	mul	r2, r2, r0
-	rsb	r0, r0, r1
-	movw	r1, #2328
+	str	r0, [r3, #2320]
+	mul	r2, r0, r2
+	sub	r0, r1, r0
+	movw	r1, #2332
 	strh	r0, [r3, r1]	@ movhi
 	mov	r0, #0
-	ldr	r1, [r3, #2336]
-	str	r2, [r3, #2324]
-	rsb	r2, r2, r1
-	str	r2, [r3, #2332]
+	ldr	r1, [r3, #2340]
+	str	r2, [r3, #2328]
+	sub	r2, r1, r2
+	str	r2, [r3, #2336]
 	bx	lr
-.L472:
-	.align	2
 .L471:
+	.align	2
+.L470:
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlSysBlkNumInit, .-FtlSysBlkNumInit
 	.align	2
 	.global	FtlConstantsInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlConstantsInit, %function
 FtlConstantsInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	movw	r3, #2340
-	ldr	r4, .L502
-	movw	r1, #2344
-	ldrh	r6, [r0, #8]
+	movw	r3, #2344
+	ldr	r4, .L500
+	movw	r1, #2348
 	mov	r5, r0
-	ldrh	r2, [r0, #10]
 	.pad #20
 	sub	sp, sp, #20
+	ldrh	r6, [r0, #8]
+	ldrh	r2, [r0, #10]
 	ldrh	lr, [r0, #14]
 	strh	r6, [r4, r3]	@ movhi
-	movw	r3, #2342
+	movw	r3, #2346
 	strh	r2, [r4, r3]	@ movhi
 	ldrh	r3, [r0, #12]
-	ldr	r0, .L502+4
+	ldr	r0, .L500+4
 	strh	r3, [r4, r1]	@ movhi
-	movw	r1, #2330
+	movw	r1, #2334
 	strh	lr, [r4, r1]	@ movhi
 	mov	r1, #0
-.L474:
+.L473:
 	strb	r1, [r1, r0]
 	add	r1, r1, #1
 	cmp	r1, #32
-	bne	.L474
+	bne	.L473
 	ldrh	r0, [r5, #14]
 	ldrh	r1, [r5, #20]
 	cmp	r1, r0, lsr #8
-	bcs	.L475
+	bcs	.L474
 	uxtb	r10, r3
-	ldr	r9, .L502+4
-	mov	r1, r10, asl #1
+	ldr	r9, .L500+4
+	lsl	r1, r10, #1
 	uxtb	r1, r1
-	str	r1, [sp, #4]
+	str	r1, [sp]
 	sub	r1, r2, #1
 	mul	r1, r3, r1
-	str	r1, [sp]
+	str	r1, [sp, #8]
 	mov	r1, #0
-.L476:
+.L475:
 	cmp	r1, r3
-	bcs	.L478
-	ldr	ip, [sp]
-	uxtb	r0, r1
-	rsb	r7, r3, r1
-	add	ip, r1, ip
+	bcs	.L477
+	ldr	ip, [sp, #8]
+	sub	r7, r1, r3
 	add	r7, r9, r7
-	add	ip, r9, ip
-	str	ip, [sp, #8]
-	mov	ip, #0
+	uxtb	r0, r1
 	str	r7, [sp, #12]
+	add	ip, r1, ip
+	add	ip, r9, ip
+	str	ip, [sp, #4]
+	mov	ip, #0
 	mov	r8, ip
-.L479:
-	cmp	r8, r2
-	add	ip, ip, r3
-	bcs	.L501
+	b	.L478
+.L476:
 	ldr	r7, [sp, #12]
-	add	fp, r0, r10
+	add	fp, r10, r0
 	add	r8, r8, #1
 	strb	r0, [r7, ip]
-	ldr	r7, [sp, #8]
-	strb	fp, [r7, ip]
 	ldr	r7, [sp, #4]
-	add	r0, r0, r7
+	strb	fp, [r7, ip]
+	ldr	r7, [sp]
+	add	r0, r7, r0
 	uxtb	r0, r0
-	b	.L479
-.L501:
-	add	r1, r1, #1
-	b	.L476
 .L478:
-	movw	r1, #2342
-	mov	r2, r2, asl #1
+	cmp	r8, r2
+	add	ip, ip, r3
+	bcc	.L476
+	add	r1, r1, #1
+	b	.L475
+.L477:
+	lsl	r2, r2, #1
+	movw	r1, #2346
+	lsr	lr, lr, #1
 	strh	r2, [r4, r1]	@ movhi
-	movw	r2, #2330
-	mov	lr, lr, lsr #1
+	movw	r2, #2334
 	strh	lr, [r4, r2]	@ movhi
-.L475:
-	cmp	r6, #1
-	movw	r2, #2380
+.L474:
+	ldr	fp, .L500+8
+	movw	r2, #2382
+	ldrb	r9, [r4, #36]	@ zero_extendqisi2
 	mov	r1, #5
 	strh	r1, [r4, r2]	@ movhi
-	movw	r1, #2382
-	mov	r0, #0
-	strh	r0, [r4, r1]	@ movhi
-	ldreq	r1, .L502
-	ldrb	r9, [r4]	@ zero_extendqisi2
-	ldr	r8, .L502+8
-	streqh	r6, [r1, r2]	@ movhi
-	movw	r1, #2342
-	ldrh	r7, [r4, r1]
+	cmp	r6, #1
+	mov	r1, #0
+	strheq	r6, [r4, r2]	@ movhi
+	strh	r1, [fp]	@ movhi
 	cmp	r9, #0
-	mov	r2, #4352
-	strh	r2, [r8]	@ movhi
-	movne	r2, #384
-	strneh	r2, [r8]	@ movhi
-	smulbb	r7, r7, r3
-	ldr	r2, .L502
-	ldrh	r10, [r5, #16]
-	add	r1, r2, #2320
-	str	r2, [sp, #8]
-	uxth	r7, r7
-	strh	r7, [r1]	@ movhi
-	movw	r1, #2330
-	ldrh	r6, [r4, r1]
-	movw	r1, #2386
-	smulbb	r0, r7, r10
-	smulbb	r3, r6, r3
-	strh	r3, [r4, r1]	@ movhi
-	movw	r3, #2388
+	mov	r1, #4352
+	movw	r2, #2386
+	strh	r1, [r4, r2]	@ movhi
+	movne	r1, #384
+	strhne	r1, [r4, r2]	@ movhi
+	movw	r2, #2346
+	ldrh	r7, [r4, r2]
+	movw	r2, #2324
+	ldrh	r8, [r5, #16]
 	ldrh	r1, [r5, #18]
-	strh	r10, [r4, r3]	@ movhi
-	movw	r3, #2390
-	strh	r1, [r4, r3]	@ movhi
-	movw	r3, #2392
-	strh	r0, [r4, r3]	@ movhi
-	movw	r0, #2394
-	ldrh	r3, [r5, #20]
+	smulbb	r7, r7, r3
 	str	r1, [sp, #4]
-	strh	r3, [r4, r0]	@ movhi
+	uxth	r7, r7
+	strh	r7, [r4, r2]	@ movhi
+	movw	r2, #2334
+	ldrh	r6, [r4, r2]
+	movw	r2, #2388
+	smulbb	r3, r3, r6
+	strh	r3, [r4, r2]	@ movhi
+	smulbb	r2, r7, r8
+	movw	r3, #2390
+	strh	r8, [r4, r3]	@ movhi
+	movw	r3, #2392
+	strh	r1, [r4, r3]	@ movhi
+	movw	r3, #2394
+	strh	r2, [r4, r3]	@ movhi
+	movw	r2, #2396
+	ldrh	r3, [r5, #20]
 	mov	r0, r3
+	strh	r3, [r4, r2]	@ movhi
 	str	r3, [sp]
 	bl	Ftl_log2
-	movw	ip, #2398
-	cmp	r6, #1024
 	ldr	r3, [sp]
-	mov	fp, r0
-	movw	r0, #2396
-	ldr	r2, [sp, #8]
-	strh	fp, [r4, r0]	@ movhi
-	mov	r0, r3, asl #9
+	movw	r2, #2398
+	strh	r0, [r4, r2]	@ movhi
+	mov	r10, r0
+	ldr	r0, .L500+12
+	cmp	r6, #1024
 	ldr	r1, [sp, #4]
-	uxth	r0, r0
-	strh	r0, [r4, ip]	@ movhi
-	add	ip, r2, #2400
-	mov	r0, r0, lsr #8
-	strh	r0, [ip]	@ movhi
+	lsl	r2, r3, #9
+	uxth	r2, r2
+	mul	r1, r3, r1
+	strh	r2, [r0]	@ movhi
+	lsr	r2, r2, #8
 	movw	r0, #2402
-	ldrh	ip, [r5, #26]
-	mul	r1, r1, r3
-	ldr	r5, .L502
-	strh	ip, [r4, r0]	@ movhi
-	movwhi	ip, #2382
-	mul	r0, r6, r7
-	str	r0, [r4, #2336]
-	uxtbhi	r0, r6
-	strhih	r0, [r2, ip]	@ movhi
-	movw	r2, #2382
-	ldrh	r2, [r4, r2]
-	ldrh	r0, [r8]
-	rsb	r2, r2, r6
-	mov	r6, r6, asl #6
-	mul	r2, r2, r7
-	mov	r0, r0, asl #3
+	strh	r2, [r4, r0]	@ movhi
+	movw	r2, #2404
+	ldrh	r0, [r5, #26]
+	strh	r0, [r4, r2]	@ movhi
+	mul	r2, r6, r7
+	str	r2, [r4, #2340]
+	uxtbhi	r2, r6
+	strhhi	r2, [fp]	@ movhi
+	ldrh	r2, [fp]
+	sub	r2, r6, r2
+	lsl	r6, r6, #6
+	mul	r2, r7, r2
 	mul	r2, r3, r2
-	mul	r10, r10, r2
-	mov	r10, r10, asr #11
-	str	r10, [r4, #2404]
+	mul	r8, r8, r2
+	movw	r2, #2386
+	ldrh	r0, [r4, r2]
+	asr	r8, r8, #11
+	lsl	r0, r0, #3
+	str	r8, [r4, #2408]
 	bl	__aeabi_idiv
-	movw	r3, #2408
-	mov	r1, r7
-	ldr	r10, .L502
 	uxth	r0, r0
+	movw	r3, #2412
+	mov	r1, r7
 	cmp	r0, #4
-	strhih	r0, [r5, r3]	@ movhi
 	movls	r2, #4
-	strlsh	r2, [r5, r3]	@ movhi
+	strhhi	r0, [r4, r3]	@ movhi
+	strhls	r2, [r4, r3]	@ movhi
 	cmp	r9, #0
-	movw	r2, #2410
-	movne	r3, #640
-	strneh	r3, [r8]	@ movhi
-	ldrh	r3, [r8]
-	mov	r3, r3, asr fp
-	add	fp, fp, #9
-	mov	r0, r6, asr fp
+	movne	r2, #640
+	movwne	r3, #2386
+	strhne	r2, [r4, r3]	@ movhi
+	movw	r3, #2386
+	ldrh	r3, [r4, r3]
+	movw	r2, #2414
+	asr	r3, r3, r10
+	add	r10, r10, #9
+	asr	r6, r6, r10
 	add	r3, r3, #2
 	strh	r3, [r4, r2]	@ movhi
+	ldr	r3, .L500+16
+	strh	r6, [r3]	@ movhi
+	uxth	r6, r6
+	mul	r3, r6, r7
+	add	r6, r6, #8
+	str	r3, [r4, #2420]
 	movw	r3, #2412
-	strh	r0, [r4, r3]	@ movhi
-	uxth	r0, r0
-	add	r6, r0, #8
-	mul	r3, r7, r0
-	str	r3, [r4, #2416]
-	movw	r3, #2408
 	ldrh	r0, [r4, r3]
 	bl	__aeabi_uidiv
-	cmp	r7, #1
 	uxtah	r0, r6, r0
-	ldr	r6, .L502
+	cmp	r7, #1
+	add	r3, r4, #2320
 	addeq	r0, r0, #4
-	str	r0, [r10, #2316]
-	ldr	r3, [r4, #2316]
-	uxth	r0, r3
+	str	r0, [r4, #2320]
+	ldrh	r0, [r3]
 	bl	FtlSysBlkNumInit
-	ldr	r3, [r4, #2316]
-	ldr	r2, [r4, #2332]
+	ldr	r5, [r4, #2336]
+	movw	r2, #2390
+	ldr	r3, [r4, #2320]
 	mov	r0, #2048
-	str	r3, [r4, #2420]
-	movw	r3, #2388
-	ldrh	r3, [r4, r3]
-	mov	r2, r2, asl #2
-	mul	r3, r3, r2
-	movw	r2, #2396
+	str	r3, [r4, #2424]
+	lsl	r3, r5, #2
 	ldrh	r5, [r4, r2]
-	add	r5, r5, #9
-	mov	r5, r3, lsr r5
-	movw	r3, #2424
+	mul	r5, r5, r3
+	movw	r3, #2398
+	ldrh	r3, [r4, r3]
+	add	r3, r3, #9
+	lsr	r5, r5, r3
+	movw	r3, #2428
 	add	r5, r5, #2
 	uxth	r5, r5
 	strh	r5, [r4, r3]	@ movhi
-	movw	r3, #2394
-	ldrh	r7, [r4, r3]
-	mov	r1, r7
+	movw	r3, #2396
+	ldrh	r6, [r4, r3]
+	mov	r1, r6
 	bl	__aeabi_idiv
-	movw	r1, #2408
+	movw	r1, #2412
+	movw	r3, #2430
 	ldrh	r2, [r4, r1]
-	movw	r3, #2426
-	ldrb	ip, [r4, #144]	@ zero_extendqisi2
-	cmp	ip, #0
 	strh	r0, [r4, r3]	@ movhi
 	mov	r3, #0
-	str	r3, [r4, #2428]
+	str	r3, [r4, #2432]
+	ldrb	ip, [r4, #152]	@ zero_extendqisi2
 	add	r3, r2, #3
 	strh	r3, [r4, r1]	@ movhi
+	ldr	r3, [r4, #2420]
+	cmp	ip, #0
 	addne	r2, r2, #4
-	ldr	r3, [r4, #2416]
-	strneh	r2, [r6, r1]	@ movhi
 	add	r0, r3, #3
+	strhne	r2, [r4, r1]	@ movhi
+	str	r0, [r4, #2420]
 	addne	r3, r3, #5
-	str	r0, [r4, #2416]
-	bne	.L500
+	bne	.L499
 	cmp	r0, #7
-	bhi	.L489
+	bhi	.L488
 	mov	r3, #8
-.L500:
-	str	r3, [r6, #2416]
-.L489:
-	ldr	r2, .L502+12
+.L499:
+	str	r3, [r4, #2420]
+.L488:
+	movw	r2, #2436
 	mov	r3, #0
-	mov	r0, #0
-	strh	r3, [r2]	@ movhi
-	movw	r3, #2328
+	strh	r3, [r4, r2]	@ movhi
+	movw	r3, #2332
 	ldrh	r1, [r4, r3]
-	mov	r3, r1, lsr #3
-	add	r3, r3, r1, asl #1
+	mov	r0, #0
+	lsr	r3, r1, #3
+	add	r3, r3, r1, lsl #1
 	add	r3, r3, #52
-	add	r5, r3, r5, asl #2
-	cmp	r5, r7, asl #9
+	add	r5, r3, r5, lsl #2
+	cmp	r5, r6, lsl #9
 	movcc	r3, #1
-	strcch	r3, [r2]	@ movhi
+	strhcc	r3, [r4, r2]	@ movhi
 	add	sp, sp, #20
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L503:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L501:
 	.align	2
-.L502:
+.L500:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2348
+	.word	.LANCHOR0+2350
 	.word	.LANCHOR0+2384
-	.word	.LANCHOR0+2432
+	.word	.LANCHOR0+2400
+	.word	.LANCHOR0+2416
 	.fnend
 	.size	FtlConstantsInit, .-FtlConstantsInit
 	.align	2
 	.global	IsBlkInVendorPart
+	.syntax unified
+	.arm
+	.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, .L511
-	movw	r3, #2434
+	ldr	r2, .L509
+	movw	r3, #2438
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	beq	.L510
-	movw	r1, #2408
-	ldr	r3, [r2, #2436]
+	beq	.L508
+	movw	r1, #2412
+	ldr	r3, [r2, #2440]
 	ldrh	r2, [r2, r1]
-	add	r2, r3, r2, asl #1
-.L506:
+	add	r2, r3, r2, lsl #1
+.L504:
 	cmp	r3, r2
-	beq	.L510
+	bne	.L505
+.L508:
+	mov	r0, #0
+	bx	lr
+.L505:
 	ldrh	r1, [r3], #2
-	cmp	r1, r0
-	bne	.L506
+	cmp	r0, r1
+	bne	.L504
 	mov	r0, #1
 	bx	lr
 .L510:
-	mov	r0, #0
-	bx	lr
-.L512:
 	.align	2
-.L511:
+.L509:
 	.word	.LANCHOR0
 	.fnend
 	.size	IsBlkInVendorPart, .-IsBlkInVendorPart
 	.align	2
 	.global	FtlCacheMetchLpa
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlCacheMetchLpa, %function
 FtlCacheMetchLpa:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r2, .L520
-	ldr	r3, [r2, #2440]
+	ldr	r2, .L521
+	ldr	r3, [r2, #2444]
 	cmp	r3, #0
-	beq	.L516
-	stmfd	sp!, {r4, r5, lr}
+	beq	.L514
+	push	{r4, r5, lr}
 	.save {r4, r5, lr}
 	mov	r5, #36
-	ldr	r4, [r2, #2444]
+	ldr	r4, [r2, #2448]
 	mov	r2, #0
-.L515:
+.L513:
 	mla	ip, r5, r2, r4
 	ldr	lr, [ip, #16]
-	cmp	lr, r0
-	movcc	ip, #0
-	movcs	ip, #1
 	cmp	lr, r1
 	movhi	ip, #0
+	movls	ip, #1
+	cmp	lr, r0
+	movcc	ip, #0
 	cmp	ip, #0
-	bne	.L517
-	add	r2, r2, #1
-	cmp	r2, r3
 	bne	.L515
+	add	r2, r2, #1
+	cmp	r3, r2
+	bne	.L513
 	mov	r0, ip
-	ldmfd	sp!, {r4, r5, pc}
-.L516:
+	pop	{r4, r5, pc}
+.L514:
 	mov	r0, r3
 	bx	lr
-.L517:
+.L515:
 	mov	r0, #1
-	ldmfd	sp!, {r4, r5, pc}
-.L521:
+	pop	{r4, r5, pc}
+.L522:
 	.align	2
-.L520:
+.L521:
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlCacheMetchLpa, .-FtlCacheMetchLpa
 	.align	2
 	.global	FtlGetCap
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGetCap, %function
 FtlGetCap:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L523
-	ldr	r0, [r3, #2428]
+	ldr	r3, .L524
+	ldr	r0, [r3, #2432]
 	bx	lr
-.L524:
+.L525:
 	.align	2
-.L523:
+.L524:
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlGetCap, .-FtlGetCap
 	.align	2
 	.global	FtlGetCapacity
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGetCapacity, %function
 FtlGetCapacity:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L526
-	ldr	r0, [r3, #2428]
+	ldr	r3, .L527
+	ldr	r0, [r3, #2432]
 	bx	lr
-.L527:
+.L528:
 	.align	2
-.L526:
+.L527:
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlGetCapacity, .-FtlGetCapacity
 	.align	2
 	.global	ftl_get_density
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_get_density, %function
 ftl_get_density:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L529
-	ldr	r0, [r3, #2428]
+	ldr	r3, .L530
+	ldr	r0, [r3, #2432]
 	bx	lr
-.L530:
+.L531:
 	.align	2
-.L529:
+.L530:
 	.word	.LANCHOR0
 	.fnend
 	.size	ftl_get_density, .-ftl_get_density
 	.align	2
 	.global	FtlGetLpn
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGetLpn, %function
 FtlGetLpn:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L532
-	ldr	r0, [r3, #2448]
+	ldr	r3, .L533
+	ldr	r0, [r3, #2452]
 	bx	lr
-.L533:
+.L534:
 	.align	2
-.L532:
+.L533:
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlGetLpn, .-FtlGetLpn
 	.align	2
 	.global	FtlBbmMapBadBlock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlBbmMapBadBlock, %function
 FtlBbmMapBadBlock:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	.pad #8
-	movw	r3, #2386
-	ldr	r5, .L536
-	mov	r6, r0
-	ldrh	r4, [r5, r3]
-	mov	r1, r4
+	push	{r0, r1, r2, r4, r5, r6, r7, lr}
+	.save {r4, r5, r6, r7, lr}
+	.pad #12
+	movw	r3, #2388
+	ldr	r4, .L537
+	mov	r5, r0
+	ldrh	r7, [r4, r3]
+	mov	r1, r7
 	bl	__aeabi_uidiv
-	uxth	r2, r0
-	smulbb	r3, r2, r4
-	add	r1, r5, r2, asl #2
-	mov	r4, #1
-	ldr	ip, [r1, #2480]
-	rsb	r3, r3, r6
-	uxth	r3, r3
-	and	r1, r3, #31
-	mov	lr, r3, lsr #5
-	ldr	r0, [ip, lr, asl #2]
-	orr	r1, r0, r4, asl r1
-	ldr	r0, .L536+4
-	str	r1, [ip, lr, asl #2]
-	str	r1, [sp]
-	mov	r1, r6
+	uxth	r6, r0
+	mov	r1, r7
+	mov	r0, r5
+	bl	__aeabi_uidivmod
+	add	r2, r4, r6, lsl #2
+	uxth	r3, r1
+	ldr	r2, [r2, #2484]
+	lsr	r1, r3, #5
+	and	ip, r3, #31
+	mov	lr, #1
+	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	r1, r5
+	ldr	r0, .L537+4
 	bl	printk
-	add	r2, r5, #2448
+	add	r3, r4, #2448
 	mov	r0, #0
-	ldrh	r3, [r2, #10]
-	add	r3, r3, r4
-	strh	r3, [r2, #10]	@ movhi
-	add	sp, sp, #8
+	ldrh	r2, [r3, #14]
+	add	r2, r2, #1
+	strh	r2, [r3, #14]	@ movhi
+	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L537:
+	pop	{r4, r5, r6, r7, pc}
+.L538:
 	.align	2
-.L536:
+.L537:
 	.word	.LANCHOR0
 	.word	.LC2
 	.fnend
 	.size	FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
-	.global	__aeabi_uidivmod
 	.align	2
 	.global	FtlBbmIsBadBlock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlBbmIsBadBlock, %function
 FtlBbmIsBadBlock:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
-	movw	r3, #2386
-	ldr	r5, .L540
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
+	movw	r3, #2388
+	ldr	r5, .L541
 	mov	r7, r0
 	ldrh	r6, [r5, r3]
 	mov	r1, r6
@@ -3251,23 +3499,26 @@
 	uxth	r4, r1
 	mov	r1, r6
 	bl	__aeabi_uidiv
-	mov	r2, r4, lsr #5
-	and	r4, r4, #31
 	uxth	r0, r0
-	add	r5, r5, r0, asl #2
-	ldr	r3, [r5, #2480]
-	ldr	r0, [r3, r2, asl #2]
-	mov	r0, r0, lsr r4
+	lsr	r2, r4, #5
+	add	r5, r5, r0, lsl #2
+	and	r4, r4, #31
+	ldr	r3, [r5, #2484]
+	ldr	r0, [r3, r2, lsl #2]
+	lsr	r0, r0, r4
 	and	r0, r0, #1
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L541:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L542:
 	.align	2
-.L540:
+.L541:
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
 	.align	2
 	.global	FtlBbtInfoPrint
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlBbtInfoPrint, %function
 FtlBbtInfoPrint:
 	.fnstart
@@ -3279,34 +3530,37 @@
 	.size	FtlBbtInfoPrint, .-FtlBbtInfoPrint
 	.align	2
 	.global	FtlBbtCalcTotleCnt
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlBbtCalcTotleCnt, %function
 FtlBbtCalcTotleCnt:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, lr}
+	ldr	r3, .L552
+	movw	r2, #2388
+	movw	r1, #2346
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
-	movw	r3, #2386
-	ldr	r4, .L552
 	mov	r5, #0
-	ldrh	r6, [r4, r3]
-	movw	r3, #2342
-	ldrh	r3, [r4, r3]
 	mov	r4, r5
-	mul	r6, r3, r6
-.L544:
+	ldrh	r2, [r3, r2]
+	ldrh	r6, [r3, r1]
+	mul	r6, r6, r2
+.L545:
 	uxth	r0, r5
 	cmp	r0, r6
-	bge	.L551
+	blt	.L547
+	mov	r0, r4
+	pop	{r4, r5, r6, pc}
+.L547:
 	bl	FtlBbmIsBadBlock
-	add	r5, r5, #1
 	cmp	r0, #0
+	add	r5, r5, #1
 	addne	r4, r4, #1
 	uxthne	r4, r4
-	b	.L544
-.L551:
-	mov	r0, r4
-	ldmfd	sp!, {r4, r5, r6, pc}
+	b	.L545
 .L553:
 	.align	2
 .L552:
@@ -3315,29 +3569,34 @@
 	.size	FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
 	.align	2
 	.global	V2P_block
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	V2P_block, %function
 V2P_block:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
-	movw	r3, #2344
-	ldr	r6, .L556
-	mov	r4, r1
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
+	movw	r3, #2348
+	ldr	r4, .L556
+	mov	r5, r1
 	mov	r7, r0
-	ldrh	r5, [r6, r3]
-	mov	r1, r5
-	bl	__aeabi_uidivmod
-	mov	r0, r7
-	smlabb	r4, r4, r5, r1
-	mov	r1, r5
+	ldrh	r6, [r4, r3]
+	mov	r1, r6
 	bl	__aeabi_uidiv
-	movw	r3, #2386
-	ldrh	r3, [r6, r3]
-	smlabb	r0, r3, r0, r4
+	movw	r3, #2388
+	smulbb	r5, r6, r5
+	ldrh	r4, [r4, r3]
+	mov	r1, r6
+	smulbb	r4, r4, r0
+	mov	r0, r7
+	bl	__aeabi_uidivmod
+	add	r0, r5, r1
+	add	r0, r4, r0
 	uxth	r0, r0
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
+	pop	{r4, r5, r6, r7, r8, pc}
 .L557:
 	.align	2
 .L556:
@@ -3346,18 +3605,21 @@
 	.size	V2P_block, .-V2P_block
 	.align	2
 	.global	P2V_plane
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	P2V_plane, %function
 P2V_plane:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	ldr	r3, .L560
-	movw	r2, #2344
-	stmfd	sp!, {r4, r5, r6, lr}
+	movw	r2, #2348
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
 	mov	r6, r0
 	ldrh	r5, [r3, r2]
-	movw	r2, #2386
+	movw	r2, #2388
 	ldrh	r1, [r3, r2]
 	bl	__aeabi_uidiv
 	mov	r1, r5
@@ -3366,7 +3628,7 @@
 	bl	__aeabi_uidivmod
 	add	r1, r4, r1
 	uxth	r0, r1
-	ldmfd	sp!, {r4, r5, r6, pc}
+	pop	{r4, r5, r6, pc}
 .L561:
 	.align	2
 .L560:
@@ -3375,23 +3637,26 @@
 	.size	P2V_plane, .-P2V_plane
 	.align	2
 	.global	P2V_block_in_plane
+	.syntax unified
+	.arm
+	.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
-	stmfd	sp!, {r4, lr}
+	push	{r4, lr}
 	.save {r4, lr}
-	movw	r3, #2386
+	movw	r3, #2388
 	ldr	r4, .L564
 	ldrh	r1, [r4, r3]
 	bl	__aeabi_uidivmod
-	movw	r3, #2344
+	movw	r3, #2348
 	uxth	r0, r1
 	ldrh	r1, [r4, r3]
 	bl	__aeabi_uidiv
 	uxth	r0, r0
-	ldmfd	sp!, {r4, pc}
+	pop	{r4, pc}
 .L565:
 	.align	2
 .L564:
@@ -3400,6 +3665,9 @@
 	.size	P2V_block_in_plane, .-P2V_block_in_plane
 	.align	2
 	.global	ftl_cmp_data_ver
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_cmp_data_ver, %function
 ftl_cmp_data_ver:
 	.fnstart
@@ -3408,13 +3676,13 @@
 	@ link register save eliminated.
 	cmp	r0, r1
 	bls	.L567
-	rsb	r0, r1, r0
+	sub	r0, r0, r1
 	cmp	r0, #-2147483648
 	movhi	r0, #0
 	movls	r0, #1
 	bx	lr
 .L567:
-	rsb	r0, r0, r1
+	sub	r0, r1, r0
 	cmp	r0, #-2147483648
 	movls	r0, #0
 	movhi	r0, #1
@@ -3423,6 +3691,9 @@
 	.size	ftl_cmp_data_ver, .-ftl_cmp_data_ver
 	.align	2
 	.global	FtlFreeSysBlkQueueEmpty
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlFreeSysBlkQueueEmpty, %function
 FtlFreeSysBlkQueueEmpty:
 	.fnstart
@@ -3432,16 +3703,19 @@
 	ldr	r3, .L570
 	ldrh	r0, [r3, #6]
 	clz	r0, r0
-	mov	r0, r0, lsr #5
+	lsr	r0, r0, #5
 	bx	lr
 .L571:
 	.align	2
 .L570:
-	.word	.LANCHOR0+2512
+	.word	.LANCHOR0+2516
 	.fnend
 	.size	FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
 	.align	2
 	.global	FtlFreeSysBlkQueueFull
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlFreeSysBlkQueueFull, %function
 FtlFreeSysBlkQueueFull:
 	.fnstart
@@ -3452,291 +3726,307 @@
 	ldrh	r0, [r3, #6]
 	sub	r0, r0, #1024
 	clz	r0, r0
-	mov	r0, r0, lsr #5
+	lsr	r0, r0, #5
 	bx	lr
 .L574:
 	.align	2
 .L573:
-	.word	.LANCHOR0+2512
+	.word	.LANCHOR0+2516
 	.fnend
 	.size	FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
 	.align	2
 	.global	FtlFreeSysBlkQueueIn
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlFreeSysBlkQueueIn, %function
 FtlFreeSysBlkQueueIn:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
 	sub	r3, r0, #1
 	movw	r2, #65533
-	mov	r7, r0
 	uxth	r3, r3
 	cmp	r3, r2
-	ldmhifd	sp!, {r3, r4, r5, r6, r7, pc}
-	ldr	r4, .L585
+	bxhi	lr
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
+	ldr	r4, .L588
 	ldrh	r3, [r4, #6]
 	cmp	r3, #1024
-	ldmeqfd	sp!, {r3, r4, r5, r6, r7, pc}
+	popeq	{r4, r5, r6, r7, r8, pc}
 	cmp	r1, #0
+	mov	r5, r0
 	beq	.L577
-	ldr	r5, .L585+4
-	ldr	r3, [r5, #-3616]
+	ldr	r6, .L588+4
+	ldr	r3, [r6, #-3612]
 	cmp	r3, #0
 	bne	.L577
 	bl	P2V_block_in_plane
-	mov	r1, #1
-	mov	r3, r7, asl #10
-	mov	r2, r1
-	mov	r6, r0
-	ldr	r0, [r5, #-3612]
+	mov	r7, r0
+	ldr	r0, [r6, #-3608]
+	lsl	r3, r5, #10
+	mov	r2, #1
+	mov	r1, r2
 	str	r3, [r0, #4]
 	bl	FlashEraseBlocks
-	ldr	r1, [r5, #-3608]
-	mov	r3, r6, asl #1
-	ldrh	r2, [r1, r3]
-	add	r2, r2, #1
-	strh	r2, [r1, r3]	@ movhi
-	ldr	r3, [r5, #-3604]
+	ldr	r2, [r6, #-3604]
+	lsl	r0, r7, #1
+	ldrh	r3, [r2, r0]
 	add	r3, r3, #1
-	str	r3, [r5, #-3604]
+	strh	r3, [r2, r0]	@ movhi
+	ldr	r3, [r6, #-3600]
+	add	r3, r3, #1
+	str	r3, [r6, #-3600]
 .L577:
 	ldrh	r3, [r4, #6]
 	add	r3, r3, #1
 	strh	r3, [r4, #6]	@ movhi
 	ldrh	r3, [r4, #4]
-	add	r2, r4, r3, asl #1
+	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
-	strh	r7, [r2, #8]	@ movhi
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L586:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L589:
 	.align	2
-.L585:
-	.word	.LANCHOR0+2512
+.L588:
+	.word	.LANCHOR0+2516
 	.word	.LANCHOR2
 	.fnend
 	.size	FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
 	.align	2
 	.global	FtlFreeSysBLkSort
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlFreeSysBLkSort, %function
 FtlFreeSysBLkSort:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L600
-	ldrh	ip, [r3, #28]
-	ldr	r3, .L600+4
+	ldr	r3, .L603
 	ldrh	r2, [r3, #6]
 	cmp	r2, #0
 	bxeq	lr
-	stmfd	sp!, {r4, lr}
-	.save {r4, lr}
+	ldr	r2, .L603+4
 	mov	r0, #0
-	ldrh	r1, [r3, #2]
-	and	ip, ip, #31
-	ldrh	r2, [r3, #4]
+	push	{r4, lr}
+	.save {r4, lr}
 	mov	r4, r0
-.L589:
-	uxth	lr, r0
+	ldrh	r1, [r3, #2]
+	ldrh	lr, [r2, #28]
+	ldrh	r2, [r3, #4]
+	and	lr, lr, #31
+.L592:
+	uxth	ip, r0
 	add	r0, r0, #1
 	cmp	lr, ip
-	bge	.L599
-	add	lr, r3, r1, asl #1
+	bgt	.L593
+	cmp	r4, #0
+	strhne	r1, [r3, #2]	@ movhi
+	strhne	r2, [r3, #4]	@ movhi
+	pop	{r4, pc}
+.L593:
+	add	ip, r3, r1, lsl #1
 	add	r1, r1, #1
 	ubfx	r1, r1, #0, #10
-	ldrh	r4, [lr, #8]
-	add	lr, r3, r2, asl #1
-	strh	r4, [lr, #8]	@ movhi
+	ldrh	r4, [ip, #8]
+	add	ip, r3, r2, lsl #1
+	strh	r4, [ip, #8]	@ movhi
 	mov	r4, #1
 	add	r2, r2, r4
 	ubfx	r2, r2, #0, #10
-	b	.L589
-.L599:
-	cmp	r4, #0
-	strneh	r1, [r3, #2]	@ movhi
-	strneh	r2, [r3, #4]	@ movhi
-	ldmfd	sp!, {r4, pc}
-.L601:
+	b	.L592
+.L604:
 	.align	2
-.L600:
-	.word	.LANCHOR2-3600
-	.word	.LANCHOR0+2512
+.L603:
+	.word	.LANCHOR0+2516
+	.word	.LANCHOR2-3596
 	.fnend
 	.size	FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
 	.align	2
 	.global	FtlFreeSysBlkQueueOut
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlFreeSysBlkQueueOut, %function
 FtlFreeSysBlkQueueOut:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	ldr	r7, .L613
-	add	r4, r7, #2512
-	mov	r8, r4
-.L603:
+	ldr	r4, .L616
+	ldr	r8, .L616+4
+	mov	r7, r4
+.L606:
 	ldrh	r1, [r4, #6]
 	cmp	r1, #0
-	beq	.L604
-	ldr	r5, .L613+4
+	beq	.L607
+	ldr	r5, .L616+8
 	sub	r1, r1, #1
 	ldrh	r3, [r4, #2]
 	strh	r1, [r4, #6]	@ movhi
-	ldr	r10, [r5, #-3616]
-	add	r2, r4, r3, asl #1
+	ldr	r10, [r5, #-3612]
+	add	r2, r4, r3, lsl #1
 	add	r3, r3, #1
 	cmp	r10, #0
 	ubfx	r3, r3, #0, #10
 	ldrh	r6, [r2, #8]
 	strh	r3, [r4, #2]	@ movhi
-	bne	.L605
+	bne	.L608
 	mov	r0, r6
 	bl	P2V_block_in_plane
-	mov	r3, r6, asl #10
 	mov	r9, r0
-	ldr	r0, [r5, #-3612]
+	ldr	r0, [r5, #-3608]
+	lsl	r3, r6, #10
 	str	r3, [r0, #4]
-	ldrb	r3, [r7, #144]	@ zero_extendqisi2
+	ldrb	r3, [r8, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L606
-	mov	r1, r10
+	beq	.L609
 	mov	r2, #1
+	mov	r1, r10
 	bl	FlashEraseBlocks
-.L606:
-	mov	r1, #1
-	ldr	r0, [r5, #-3612]
-	mov	r2, r1
+.L609:
+	mov	r2, #1
+	ldr	r0, [r5, #-3608]
+	mov	r1, r2
 	bl	FlashEraseBlocks
-	ldr	r1, [r5, #-3608]
-	mov	r3, r9, asl #1
-	ldrh	r2, [r1, r3]
-	add	r2, r2, #1
-	strh	r2, [r1, r3]	@ movhi
-	ldr	r3, [r5, #-3604]
+	ldr	r2, [r5, #-3604]
+	lsl	r0, r9, #1
+	ldrh	r3, [r2, r0]
 	add	r3, r3, #1
-	str	r3, [r5, #-3604]
-	b	.L605
-.L604:
-	ldr	r0, .L613+8
-	bl	printk
-.L607:
-	b	.L607
-.L605:
+	strh	r3, [r2, r0]	@ movhi
+	ldr	r3, [r5, #-3600]
+	add	r3, r3, #1
+	str	r3, [r5, #-3600]
+.L608:
 	sub	r3, r6, #1
 	movw	r2, #65533
 	uxth	r3, r3
 	cmp	r3, r2
-	bls	.L608
+	bls	.L611
+	ldrh	r2, [r7, #6]
 	mov	r1, r6
-	ldrh	r2, [r8, #6]
-	ldr	r0, .L613+12
+	ldr	r0, .L616+12
 	bl	printk
-	b	.L603
-.L608:
+	b	.L606
+.L607:
+	ldr	r0, .L616+16
+	bl	printk
+.L610:
+	b	.L610
+.L611:
 	mov	r0, r6
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L614:
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L617:
 	.align	2
-.L613:
+.L616:
+	.word	.LANCHOR0+2516
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LC3
 	.word	.LC4
+	.word	.LC3
 	.fnend
 	.size	FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
 	.align	2
 	.global	test_node_in_list
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	test_node_in_list, %function
 test_node_in_list:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L621
+	ldr	r3, .L624
 	str	lr, [sp, #-4]!
 	.save {lr}
 	movw	lr, #65535
-	ldr	ip, [r3, #-3552]
 	ldr	r2, [r0]
-	ldr	r3, .L621+4
-	rsb	r0, ip, r2
-	mov	r0, r0, asr #1
+	ldr	ip, [r3, #-3548]
+	sub	r3, r2, ip
+	asr	r0, r3, #1
+	ldr	r3, .L624+4
 	mul	r3, r3, r0
 	mov	r0, #6
 	uxth	r3, r3
-.L617:
-	cmp	r1, r3
-	beq	.L618
+.L620:
+	cmp	r3, r1
+	beq	.L621
 	ldrh	r3, [r2]
 	cmp	r3, lr
-	beq	.L619
+	beq	.L622
 	mla	r2, r0, r3, ip
-	b	.L617
-.L618:
+	b	.L620
+.L621:
 	mov	r0, #1
 	ldr	pc, [sp], #4
-.L619:
+.L622:
 	mov	r0, #0
 	ldr	pc, [sp], #4
-.L622:
+.L625:
 	.align	2
-.L621:
+.L624:
 	.word	.LANCHOR2
 	.word	-1431655765
 	.fnend
 	.size	test_node_in_list, .-test_node_in_list
 	.align	2
 	.global	insert_data_list
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	insert_data_list, %function
 insert_data_list:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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
-	movw	r3, #2328
-	ldr	r5, .L640
-	ldrh	r3, [r5, r3]
+	movw	r3, #2332
+	ldr	r4, .L642
+	ldrh	r3, [r4, r3]
 	cmp	r3, r0
-	bls	.L625
-	ldr	r2, .L640+4
+	bls	.L628
+	ldr	r2, .L642+4
 	mov	lr, #6
 	mul	lr, lr, r0
 	mvn	ip, #0
-	ldr	r6, [r2, #-3552]
-	mov	r10, r2
+	ldr	r6, [r2, #-3548]
+	mov	r5, r2
 	add	r1, r6, lr
 	strh	ip, [r1, #2]	@ movhi
 	strh	ip, [r6, lr]	@ movhi
-	ldr	r3, [r2, #-3548]
+	ldr	r3, [r2, #-3544]
 	cmp	r3, #0
-	beq	.L639
-	ldr	r8, [r2, #-3544]
-	mov	r4, r0, asl #1
+	streq	r1, [r2, #-3544]
+	beq	.L628
+	ldr	r8, [r2, #-3540]
+	lsl	r10, r0, #1
 	ldrh	r2, [r1, #4]
-	ldrh	r7, [r8, r4]
+	ldrh	r7, [r8, r10]
 	cmp	r2, #0
 	mulne	ip, r2, r7
-	ldr	r7, [r10, #-3552]
-	ldr	r2, .L640+8
-	rsb	r9, r7, r3
-	mov	r9, r9, asr #1
+	ldr	r7, [r5, #-3548]
+	sub	r2, r3, r7
+	asr	r9, r2, #1
+	ldr	r2, .L642+8
 	mul	r2, r2, r9
-	movw	r9, #2328
-	ldrh	r5, [r5, r9]
-	ldr	r9, [r10, #-3608]
-	add	r4, r9, r4
-	str	r4, [sp, #4]
+	movw	r9, #2332
+	ldrh	r4, [r4, r9]
+	ldr	r9, [r5, #-3604]
+	str	r4, [sp]
 	uxth	r2, r2
+	add	r4, r9, r10
+	str	r4, [sp, #4]
 	mov	r4, #0
-	str	r5, [sp]
-.L634:
-	add	r4, r4, #1
+.L637:
 	ldr	r5, [sp]
+	add	r4, r4, #1
 	uxth	r4, r4
 	cmp	r4, r5
 	movls	r5, #0
@@ -3744,64 +4034,60 @@
 	cmp	r0, r2
 	orreq	r5, r5, #1
 	cmp	r5, #0
-	bne	.L625
-	mov	r10, r2, asl #1
+	bne	.L628
+	lsl	r10, r2, #1
 	ldrh	r5, [r3, #4]
 	ldrh	fp, [r8, r10]
 	cmp	r5, #0
 	mvneq	r5, #0
 	mulne	r5, r5, fp
-	cmp	r5, ip
-	bne	.L630
+	cmp	ip, r5
+	bne	.L633
 	ldr	r5, [sp, #4]
 	ldrh	r10, [r9, r10]
 	ldrh	r5, [r5]
 	cmp	r10, r5
-	bcc	.L632
-	b	.L631
-.L630:
-	bhi	.L631
-.L632:
+	bcc	.L635
+.L634:
+	strh	r2, [r6, lr]	@ movhi
+	ldr	ip, .L642+4
+	ldrh	r2, [r3, #2]
+	strh	r2, [r1, #2]	@ movhi
+	ldr	r2, [ip, #-3544]
+	cmp	r3, r2
+	ldrhne	lr, [r3, #2]
+	movne	r2, #6
+	ldrne	r1, [ip, #-3548]
+	strheq	r0, [r3, #2]	@ movhi
+	streq	r1, [ip, #-3544]
+	mulne	r2, r2, lr
+	strhne	r0, [r1, r2]	@ movhi
+	strhne	r0, [r3, #2]	@ movhi
+	b	.L628
+.L633:
+	bcc	.L634
+.L635:
 	ldrh	r5, [r3]
 	movw	r10, #65535
 	cmp	r5, r10
-	streqh	r2, [r1, #2]	@ movhi
-	streqh	r0, [r3]	@ movhi
-	ldreq	r3, .L640+4
-	streq	r1, [r3, #-3540]
-	beq	.L625
-.L633:
-	mov	r3, #6
-	mov	r2, r5
-	mla	r3, r3, r5, r7
-	b	.L634
-.L631:
-	strh	r2, [r6, lr]	@ movhi
-	ldrh	r2, [r3, #2]
+	bne	.L636
 	strh	r2, [r1, #2]	@ movhi
-	ldr	r2, .L640+4
-	ldr	ip, [r2, #-3548]
-	cmp	r3, ip
-	bne	.L635
-	strh	r0, [r3, #2]	@ movhi
-.L639:
-	str	r1, [r2, #-3548]
-	b	.L625
-.L635:
-	ldrh	ip, [r3, #2]
-	ldr	r1, [r2, #-3552]
-	mov	r2, #6
-	mul	r2, r2, ip
-	strh	r0, [r1, r2]	@ movhi
-	strh	r0, [r3, #2]	@ movhi
-.L625:
+	strh	r0, [r3]	@ movhi
+	ldr	r3, .L642+4
+	str	r1, [r3, #-3536]
+.L628:
 	mov	r0, #0
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L641:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L636:
+	mov	r3, #6
+	mov	r2, r5
+	mla	r3, r3, r5, r7
+	b	.L637
+.L643:
 	.align	2
-.L640:
+.L642:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.word	-1431655765
@@ -3809,180 +4095,193 @@
 	.size	insert_data_list, .-insert_data_list
 	.align	2
 	.global	INSERT_DATA_LIST
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	INSERT_DATA_LIST, %function
 INSERT_DATA_LIST:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, lr}
-	.save {r3, lr}
+	push	{r4, lr}
+	.save {r4, lr}
 	bl	insert_data_list
-	ldr	r2, .L644
-	ldrh	r3, [r2]
+	ldr	r2, .L646
+	ldrh	r3, [r2, #-12]
 	add	r3, r3, #1
-	strh	r3, [r2]	@ movhi
-	ldmfd	sp!, {r3, pc}
-.L645:
+	strh	r3, [r2, #-12]	@ movhi
+	pop	{r4, pc}
+.L647:
 	.align	2
-.L644:
-	.word	.LANCHOR2-3536
+.L646:
+	.word	.LANCHOR2-3520
 	.fnend
 	.size	INSERT_DATA_LIST, .-INSERT_DATA_LIST
 	.align	2
 	.global	insert_free_list
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	insert_free_list, %function
 insert_free_list:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
+	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	.L647
-	ldr	r2, .L655
-	mov	lr, #6
-	mul	r6, lr, r0
+	beq	.L649
+	ldr	r2, .L656
+	mov	r1, #6
+	mul	r5, r1, r0
 	mvn	r3, #0
-	ldr	r7, [r2, #-3552]
-	mov	r5, r2
-	add	ip, r7, r6
-	strh	r3, [ip, #2]	@ movhi
-	strh	r3, [r7, r6]	@ movhi
-	ldr	r3, [r2, #-3532]
+	ldr	r6, [r2, #-3548]
+	mov	ip, r2
+	add	lr, r6, r5
+	strh	r3, [lr, #2]	@ movhi
+	strh	r3, [r6, r5]	@ movhi
+	ldr	r3, [r2, #-3528]
 	cmp	r3, #0
-	beq	.L654
-	ldr	r9, [r2, #-3608]
-	mov	r2, r0, asl #1
-	ldr	r8, [r5, #-3552]
-	rsb	r1, r8, r3
-	ldrh	r10, [r9, r2]
-	ldr	r2, .L655+4
-	mov	r1, r1, asr #1
-	mul	r1, r2, r1
-	uxth	r2, r1
-.L651:
-	mov	r1, r2, asl #1
-	ldrh	r1, [r9, r1]
-	cmp	r1, r10
-	bcs	.L649
+	streq	lr, [r2, #-3528]
+	beq	.L649
+	ldr	r8, [r2, #-3604]
+	lsl	r2, r0, #1
+	ldr	r7, [ip, #-3548]
+	ldrh	r9, [r8, r2]
+	sub	r2, r3, r7
+	asr	r10, r2, #1
+	ldr	r2, .L656+4
+	mul	r2, r2, r10
+	mov	r10, r1
+	uxth	r2, r2
+.L653:
+	lsl	r1, r2, #1
+	ldrh	r1, [r8, r1]
+	cmp	r1, r9
+	bcs	.L651
 	ldrh	r1, [r3]
 	cmp	r1, r4
-	streqh	r2, [ip, #2]	@ movhi
-	streqh	r0, [r3]	@ movhi
-	beq	.L647
-.L650:
-	mla	r3, lr, r1, r8
-	mov	r2, r1
-	b	.L651
-.L649:
-	ldrh	r1, [r3, #2]
-	strh	r1, [ip, #2]	@ movhi
-	strh	r2, [r7, r6]	@ movhi
-	ldr	r1, [r5, #-3532]
-	ldr	r2, .L655
-	cmp	r3, r1
 	bne	.L652
-	strh	r0, [r3, #2]	@ movhi
-.L654:
-	str	ip, [r2, #-3532]
-	b	.L647
-.L652:
-	ldrh	ip, [r3, #2]
-	ldr	r1, [r2, #-3552]
-	mov	r2, #6
-	mul	r2, r2, ip
-	strh	r0, [r1, r2]	@ movhi
-	strh	r0, [r3, #2]	@ movhi
-.L647:
+	strh	r2, [lr, #2]	@ movhi
+	strh	r0, [r3]	@ movhi
+.L649:
 	mov	r0, #0
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L656:
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L652:
+	mla	r3, r10, r1, r7
+	mov	r2, r1
+	b	.L653
+.L651:
+	ldrh	r1, [r3, #2]
+	strh	r1, [lr, #2]	@ movhi
+	strh	r2, [r6, r5]	@ movhi
+	ldr	r2, [ip, #-3528]
+	cmp	r3, r2
+	ldrhne	lr, [r3, #2]
+	movne	r2, #6
+	ldrne	r1, [ip, #-3548]
+	strheq	r0, [r3, #2]	@ movhi
+	streq	lr, [ip, #-3528]
+	mulne	r2, r2, lr
+	strhne	r0, [r1, r2]	@ movhi
+	strhne	r0, [r3, #2]	@ movhi
+	b	.L649
+.L657:
 	.align	2
-.L655:
+.L656:
 	.word	.LANCHOR2
 	.word	-1431655765
 	.fnend
 	.size	insert_free_list, .-insert_free_list
 	.align	2
 	.global	INSERT_FREE_LIST
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	INSERT_FREE_LIST, %function
 INSERT_FREE_LIST:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, lr}
-	.save {r3, lr}
+	push	{r4, lr}
+	.save {r4, lr}
 	bl	insert_free_list
-	ldr	r2, .L659
-	ldrh	r3, [r2, #-8]
+	ldr	r2, .L660
+	ldrh	r3, [r2, #-4]
 	add	r3, r3, #1
-	strh	r3, [r2, #-8]	@ movhi
-	ldmfd	sp!, {r3, pc}
-.L660:
+	strh	r3, [r2, #-4]	@ movhi
+	pop	{r4, pc}
+.L661:
 	.align	2
-.L659:
+.L660:
 	.word	.LANCHOR2-3520
 	.fnend
 	.size	INSERT_FREE_LIST, .-INSERT_FREE_LIST
 	.align	2
 	.global	List_remove_node
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	List_remove_node, %function
 List_remove_node:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, lr}
+	push	{r4, r5, lr}
 	.save {r4, r5, lr}
 	mov	ip, #6
-	ldr	r4, .L667
-	movw	r5, #65535
+	ldr	r4, .L668
 	mul	r1, ip, r1
+	movw	r5, #65535
 	ldr	r3, [r0]
-	ldr	r2, [r4, #-3552]
+	ldr	r2, [r4, #-3548]
 	add	lr, r2, r1
 	cmp	lr, r3
 	ldrh	r3, [r2, r1]
-	bne	.L662
+	bne	.L663
 	cmp	r3, r5
 	mlane	r3, ip, r3, r2
 	moveq	r3, #0
 	streq	r3, [r0]
 	strne	r3, [r0]
 	mvnne	r0, #0
-	strneh	r0, [r3, #2]	@ movhi
-	b	.L664
-.L662:
-	cmp	r3, r5
-	ldrh	r0, [lr, #2]
-	bne	.L665
-	cmp	r0, r3
-	mulne	r0, ip, r0
-	mvnne	r3, #0
-	strneh	r3, [r2, r0]	@ movhi
-	b	.L664
+	strhne	r0, [r3, #2]	@ movhi
 .L665:
-	mla	r3, ip, r3, r2
-	strh	r0, [r3, #2]	@ movhi
-	ldrh	r5, [lr, #2]
-	ldrh	r0, [r2, r1]
-	ldr	r3, [r4, #-3552]
-	mul	ip, ip, r5
-	strh	r0, [r3, ip]	@ movhi
-.L664:
 	mvn	r3, #0
 	mov	r0, #0
 	strh	r3, [r2, r1]	@ movhi
 	strh	r3, [lr, #2]	@ movhi
-	ldmfd	sp!, {r4, r5, pc}
-.L668:
+	pop	{r4, r5, pc}
+.L663:
+	cmp	r3, r5
+	ldrh	r0, [lr, #2]
+	bne	.L666
+	cmp	r0, r3
+	mulne	r3, ip, r0
+	mvnne	r0, #0
+	strhne	r0, [r2, r3]	@ movhi
+	b	.L665
+.L666:
+	mla	r3, ip, r3, r2
+	strh	r0, [r3, #2]	@ movhi
+	ldrh	r3, [lr, #2]
+	ldrh	r5, [r2, r1]
+	ldr	r0, [r4, #-3548]
+	mul	r3, ip, r3
+	strh	r5, [r0, r3]	@ movhi
+	b	.L665
+.L669:
 	.align	2
-.L667:
+.L668:
 	.word	.LANCHOR2
 	.fnend
 	.size	List_remove_node, .-List_remove_node
 	.align	2
 	.global	List_pop_index_node
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	List_pop_index_node, %function
 List_pop_index_node:
 	.fnstart
@@ -3990,1133 +4289,1182 @@
 	@ frame_needed = 0, uses_anonymous_args = 0
 	ldr	r3, [r0]
 	cmp	r3, #0
-	beq	.L675
-	ldr	r2, .L678
-	movw	ip, #65535
-	stmfd	sp!, {r4, lr}
+	beq	.L676
+	ldr	r2, .L681
+	push	{r4, lr}
 	.save {r4, lr}
-	mov	lr, #6
-	ldr	r4, [r2, #-3552]
-.L671:
-	cmp	r1, #0
-	bne	.L672
-.L674:
-	rsb	r4, r4, r3
-	ldr	r3, .L678+4
-	mov	r4, r4, asr #1
-	mul	r4, r3, r4
-	uxth	r4, r4
-	mov	r1, r4
-	bl	List_remove_node
-	mov	r0, r4
-	ldmfd	sp!, {r4, pc}
+	movw	lr, #65535
+	mov	r4, #6
+	ldr	r2, [r2, #-3548]
 .L672:
-	ldrh	r2, [r3]
-	cmp	r2, ip
-	beq	.L674
-	sub	r1, r1, #1
-	mla	r3, lr, r2, r4
-	uxth	r1, r1
-	b	.L671
+	cmp	r1, #0
+	bne	.L673
 .L675:
+	ldr	r4, .L681+4
+	sub	r3, r3, r2
+	asr	r3, r3, #1
+	mul	r4, r4, r3
+	uxth	r1, r4
+	bl	List_remove_node
+	uxth	r0, r4
+	pop	{r4, pc}
+.L673:
+	ldrh	ip, [r3]
+	cmp	ip, lr
+	beq	.L675
+	sub	r1, r1, #1
+	mla	r3, r4, ip, r2
+	uxth	r1, r1
+	b	.L672
+.L676:
 	movw	r0, #65535
 	bx	lr
-.L679:
+.L682:
 	.align	2
-.L678:
+.L681:
 	.word	.LANCHOR2
 	.word	-1431655765
 	.fnend
 	.size	List_pop_index_node, .-List_pop_index_node
 	.align	2
 	.global	List_get_gc_head_node
+	.syntax unified
+	.arm
+	.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, .L687
-	ldr	r3, [r2, #-3548]
+	ldr	r2, .L689
+	ldr	r3, [r2, #-3544]
 	cmp	r3, #0
-	ldrne	r1, [r2, #-3552]
+	ldrne	r1, [r2, #-3548]
 	movne	ip, #6
 	movwne	r2, #65535
-	beq	.L685
-.L682:
-	cmp	r0, #0
-	beq	.L683
-	ldrh	r3, [r3]
-	cmp	r3, r2
-	subne	r0, r0, #1
-	mlane	r3, ip, r3, r1
-	uxthne	r0, r0
-	bne	.L682
-.L685:
+	bne	.L685
+.L688:
 	movw	r0, #65535
 	bx	lr
-.L683:
-	rsb	r3, r1, r3
-	ldr	r0, .L687+4
-	mov	r3, r3, asr #1
-	mul	r0, r0, r3
-	uxth	r0, r0
-	bx	lr
-.L688:
-	.align	2
 .L687:
+	sub	r0, r0, #1
+	mla	r3, ip, r3, r1
+	uxth	r0, r0
+.L685:
+	cmp	r0, #0
+	beq	.L686
+	ldrh	r3, [r3]
+	cmp	r3, r2
+	bne	.L687
+	b	.L688
+.L686:
+	ldr	r0, .L689+4
+	sub	r3, r3, r1
+	asr	r3, r3, #1
+	mul	r3, r0, r3
+	uxth	r0, r3
+	bx	lr
+.L690:
+	.align	2
+.L689:
 	.word	.LANCHOR2
 	.word	-1431655765
 	.fnend
 	.size	List_get_gc_head_node, .-List_get_gc_head_node
 	.align	2
 	.global	List_update_data_list
+	.syntax unified
+	.arm
+	.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
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	ldr	r3, .L697
-	sub	r2, r3, #3520
-	ldrh	r2, [r2, #-4]
+	ldr	r3, .L699
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	sub	r5, r3, #3520
+	ldrh	r2, [r5]
 	cmp	r2, r0
-	beq	.L690
+	beq	.L692
 	sub	r2, r3, #3472
-	ldrh	r2, [r2, #-4]
+	ldrh	r2, [r2]
 	cmp	r2, r0
-	beq	.L690
+	beq	.L692
 	sub	r2, r3, #3424
-	ldrh	r2, [r2, #-4]
+	ldrh	r2, [r2]
 	cmp	r2, r0
-	beq	.L690
+	beq	.L692
 	mov	lr, #6
-	ldr	r1, [r3, #-3552]
+	ldr	r1, [r3, #-3548]
 	mul	lr, lr, r0
-	ldr	r2, [r3, #-3548]
+	ldr	r2, [r3, #-3544]
 	add	ip, r1, lr
 	cmp	ip, r2
-	beq	.L690
-	ldr	r4, [r3, #-3544]
-	mov	r3, r0, asl #1
-	ldrh	r2, [r4, r3]
-	ldrh	r3, [ip, #4]
-	ldrh	ip, [ip, #2]
-	cmp	r3, #0
-	mulne	r2, r3, r2
+	beq	.L692
+	ldr	r4, [r3, #-3540]
+	lsl	r3, r0, #1
+	ldrh	r2, [ip, #4]
+	ldrh	r3, [r4, r3]
+	cmp	r2, #0
 	mvneq	r2, #0
-	movw	r3, #65535
-	cmp	ip, r3
-	bne	.L692
-	ldrh	r3, [r1, lr]
+	mulne	r2, r2, r3
+	ldrh	r3, [ip, #2]
+	movw	ip, #65535
 	cmp	r3, ip
-	beq	.L690
-.L692:
-	mov	r3, #6
-	mul	ip, r3, ip
-	ldr	r3, .L697+4
+	bne	.L694
+	ldrh	ip, [r1, lr]
+	cmp	ip, r3
+	beq	.L692
+.L694:
+	mov	ip, #6
+	mul	ip, ip, r3
+	ldr	r3, .L699+4
+	asr	lr, ip, #1
 	add	r1, r1, ip
-	mov	lr, ip, asr #1
 	mul	r3, r3, lr
-	mov	r3, r3, asl #1
+	lsl	r3, r3, #1
 	ldrh	lr, [r4, r3]
 	ldrh	r3, [r1, #4]
 	cmp	r3, #0
 	mulne	r3, r3, lr
 	mvneq	r3, #0
 	cmp	r2, r3
-	bcs	.L690
-	ldr	r5, .L697+8
+	bcs	.L692
 	mov	r4, r0
-	mov	r1, r4
-	sub	r0, r5, #12
+	mov	r1, r0
+	ldr	r0, .L699+8
 	bl	List_remove_node
-	ldrh	r3, [r5]
+	ldrh	r3, [r5, #-12]
 	mov	r0, r4
 	sub	r3, r3, #1
-	strh	r3, [r5]	@ movhi
+	strh	r3, [r5, #-12]	@ movhi
 	bl	INSERT_DATA_LIST
-.L690:
+.L692:
 	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L698:
+	pop	{r4, r5, r6, pc}
+.L700:
 	.align	2
-.L697:
+.L699:
 	.word	.LANCHOR2
 	.word	-1431655765
-	.word	.LANCHOR2-3536
+	.word	.LANCHOR2-3544
 	.fnend
 	.size	List_update_data_list, .-List_update_data_list
 	.align	2
 	.global	ftl_map_blk_alloc_new_blk
+	.syntax unified
+	.arm
+	.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
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
 	mov	r3, #0
 	ldrh	r1, [r0, #10]
 	ldr	r2, [r0, #12]
-.L700:
+.L702:
 	uxth	r5, r3
 	cmp	r5, r1
-	bcs	.L703
+	bcs	.L705
 	mov	r7, r2
 	add	r3, r3, #1
 	ldrh	r6, [r7]
 	add	r2, r2, #2
 	cmp	r6, #0
-	bne	.L700
+	bne	.L702
 	mov	r4, r0
 	bl	FtlFreeSysBlkQueueOut
-	movw	r2, #65533
 	sub	r3, r0, #1
+	movw	r2, #65533
+	uxth	r3, r3
 	mov	r1, r0
 	strh	r0, [r7]	@ movhi
-	uxth	r3, r3
 	cmp	r3, r2
-	bls	.L701
-	ldr	r3, .L707
-	ldr	r0, .L707+4
+	bls	.L703
+	ldr	r3, .L709
+	ldr	r0, .L709+4
 	ldrh	r2, [r3, #6]
 	bl	printk
-.L702:
-	b	.L702
-.L701:
+.L704:
+	b	.L704
+.L703:
 	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
-.L703:
+.L705:
 	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L708:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L710:
 	.align	2
-.L707:
-	.word	.LANCHOR0+2512
+.L709:
+	.word	.LANCHOR0+2516
 	.word	.LC5
 	.fnend
 	.size	ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
 	.align	2
 	.global	select_l2p_ram_region
+	.syntax unified
+	.arm
+	.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	r2, .L725
-	movw	r3, #2426
-	stmfd	sp!, {r4, r5, r6, lr}
+	ldr	r2, .L722
+	movw	r3, #2430
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
 	mov	r1, #0
-	ldrh	r2, [r2, r3]
 	mov	ip, #12
-	ldr	r3, .L725+4
 	movw	lr, #65535
-	ldr	r3, [r3, #-3380]
-.L710:
+	ldrh	r2, [r2, r3]
+	ldr	r3, .L722+4
+	ldr	r3, [r3, #-3376]
+.L712:
 	uxth	r0, r1
 	cmp	r0, r2
-	bcs	.L722
-	add	r1, r1, #1
-	mla	r4, ip, r1, r3
-	ldrh	r4, [r4, #-12]
-	cmp	r4, lr
-	bne	.L710
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L722:
+	bcc	.L714
 	mov	r0, r2
 	mov	r1, #0
 	mov	ip, #-2147483648
 	mov	r5, #12
-.L713:
+.L715:
 	uxth	r4, r1
 	cmp	r4, r2
-	bcs	.L723
+	bcc	.L717
+	cmp	r0, r2
+	popcc	{r4, r5, r6, pc}
+	ldr	r1, .L722+8
+	mov	r0, r2
+	mvn	ip, #0
+	ldrh	r5, [r1, #-12]
+	mov	r1, #0
+.L718:
+	uxth	lr, r1
+	cmp	lr, r2
+	bcc	.L720
+	pop	{r4, r5, r6, pc}
+.L714:
+	add	r1, r1, #1
+	mla	r4, ip, r1, r3
+	ldrh	r4, [r4, #-12]
+	cmp	r4, lr
+	bne	.L712
+	pop	{r4, r5, r6, pc}
+.L717:
 	mla	lr, r5, r1, r3
 	add	r1, r1, #1
 	ldr	lr, [lr, #4]
-	cmp	lr, ip
-	mvn	r6, lr
-	mov	r6, r6, lsr #31
-	movcs	r6, #0
+	cmp	ip, lr
+	movls	r6, #0
+	movhi	r6, #1
+	cmp	lr, #0
+	movlt	r6, #0
 	cmp	r6, #0
 	movne	ip, lr
 	movne	r0, r4
-	b	.L713
-.L723:
-	cmp	r0, r2
-	ldmccfd	sp!, {r4, r5, r6, pc}
-	ldr	r1, .L725+8
-	mov	r0, r2
-	mvn	ip, #0
-	ldrh	r5, [r1]
-	mov	r1, #0
-.L716:
-	uxth	lr, r1
-	cmp	lr, r2
-	bcs	.L724
+	b	.L715
+.L720:
 	ldr	r4, [r3, #4]
-	cmp	r4, ip
-	bcs	.L717
+	cmp	ip, r4
+	bls	.L719
 	ldrh	r6, [r3]
 	cmp	r6, r5
 	movne	ip, r4
 	movne	r0, lr
-.L717:
+.L719:
 	add	r1, r1, #1
 	add	r3, r3, #12
-	b	.L716
-.L724:
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L726:
+	b	.L718
+.L723:
 	.align	2
-.L725:
+.L722:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR2-3376
+	.word	.LANCHOR2-3360
 	.fnend
 	.size	select_l2p_ram_region, .-select_l2p_ram_region
 	.align	2
 	.global	FtlUpdateVaildLpn
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlUpdateVaildLpn, %function
 FtlUpdateVaildLpn:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L735
+	ldr	r3, .L733
 	sub	r1, r3, #3360
-	ldrh	r2, [r1, #-14]
+	ldrh	r2, [r1, #-10]
 	cmp	r2, #4
 	cmpls	r0, #0
-	addeq	r2, r2, #1
-	streqh	r2, [r1, #-14]	@ movhi
-	bxeq	lr
-	ldr	r0, .L735+4
+	bne	.L725
+	add	r2, r2, #1
+	strh	r2, [r1, #-10]	@ movhi
+	bx	lr
+.L725:
+	ldr	r0, .L733+4
 	mov	r2, #0
 	str	lr, [sp, #-4]!
 	.save {lr}
-	movw	ip, #65535
-	strh	r2, [r1, #-14]	@ movhi
-	movw	r1, #2328
-	ldrh	r0, [r0, r1]
-	str	r2, [r3, #-3372]
-	ldr	r2, [r3, #-3544]
-	add	r0, r2, r0, asl #1
-.L729:
-	cmp	r2, r0
-	beq	.L734
-	ldrh	r1, [r2], #2
-	cmp	r1, ip
-	ldrne	lr, [r3, #-3372]
-	addne	r1, r1, lr
-	strne	r1, [r3, #-3372]
-	b	.L729
-.L734:
+	movw	lr, #65535
+	strh	r2, [r1, #-10]	@ movhi
+	movw	r1, #2332
+	str	r2, [r3, #-3368]
+	ldrh	r1, [r0, r1]
+	ldr	r2, [r3, #-3540]
+	add	r1, r2, r1, lsl #1
+.L726:
+	cmp	r2, r1
+	bne	.L728
 	ldr	pc, [sp], #4
-.L736:
+.L728:
+	ldrh	ip, [r2], #2
+	cmp	ip, lr
+	ldrne	r0, [r3, #-3368]
+	addne	r0, r0, ip
+	strne	r0, [r3, #-3368]
+	b	.L726
+.L734:
 	.align	2
-.L735:
+.L733:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
 	.align	2
 	.global	ftl_set_blk_mode
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_set_blk_mode, %function
 ftl_set_blk_mode:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r2, .L741
-	mov	r3, r0, lsr #5
 	cmp	r1, #0
-	and	r0, r0, #31
-	uxth	r3, r3
+	mov	r3, r0
+	beq	.L736
+	b	ftl_set_blk_mode.part.9
+.L736:
+	ldr	r2, .L737
+	lsr	r0, r0, #5
+	and	r3, r3, #31
 	mov	ip, #1
-	ldr	r1, [r2, #-3368]
-	ldr	r2, [r1, r3, asl #2]
-	orrne	r0, r2, ip, asl r0
-	biceq	r0, r2, ip, asl r0
-	str	r0, [r1, r3, asl #2]
+	ldr	r1, [r2, #32]
+	ldr	r2, [r1, r0, lsl #2]
+	bic	r3, r2, ip, lsl r3
+	str	r3, [r1, r0, lsl #2]
 	bx	lr
-.L742:
+.L738:
 	.align	2
-.L741:
-	.word	.LANCHOR2
+.L737:
+	.word	.LANCHOR0
 	.fnend
 	.size	ftl_set_blk_mode, .-ftl_set_blk_mode
 	.align	2
 	.global	ftl_get_blk_mode
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_get_blk_mode, %function
 ftl_get_blk_mode:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L744
-	mov	r2, r0, lsr #5
+	ldr	r3, .L740
+	lsr	r2, r0, #5
 	and	r0, r0, #31
-	ldr	r3, [r3, #-3368]
-	ldr	r3, [r3, r2, asl #2]
-	mov	r0, r3, lsr r0
+	ldr	r3, [r3, #32]
+	ldr	r3, [r3, r2, lsl #2]
+	lsr	r0, r3, r0
 	and	r0, r0, #1
 	bx	lr
-.L745:
+.L741:
 	.align	2
-.L744:
-	.word	.LANCHOR2
+.L740:
+	.word	.LANCHOR0
 	.fnend
 	.size	ftl_get_blk_mode, .-ftl_get_blk_mode
 	.align	2
 	.global	ftl_sb_update_avl_pages
+	.syntax unified
+	.arm
+	.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
 	mov	r3, #0
+	movw	ip, #2324
 	strh	r3, [r0, #4]	@ movhi
-	ldr	r3, .L756
-	stmfd	sp!, {r4, r5, lr}
+	ldr	r3, .L750
+	push	{r4, r5, lr}
 	.save {r4, r5, lr}
-	movw	r4, #65535
-	ldrh	lr, [r3]
-	add	r3, r2, #7
-	add	r3, r0, r3, asl #1
-.L747:
-	cmp	r2, lr
-	bcs	.L754
-	ldrh	ip, [r3, #2]!
-	add	r2, r2, #1
-	cmp	ip, r4
-	uxth	r2, r2
-	ldrneh	ip, [r0, #4]
-	addne	ip, ip, #1
-	strneh	ip, [r0, #4]	@ movhi
-	b	.L747
-.L754:
-	ldr	r2, .L756+4
-	movw	r3, #2388
-	add	ip, r0, #14
 	movw	r5, #65535
-	ldrh	r4, [r2, r3]
-	mov	r2, #0
-.L750:
-	uxth	r3, r2
-	cmp	r3, lr
-	bcs	.L755
-	ldrh	r3, [ip, #2]!
+	ldrh	lr, [r3, ip]
+	add	ip, r0, r2, lsl #1
+	add	ip, ip, #14
+.L743:
+	cmp	r2, lr
+	bcc	.L745
+	movw	r2, #2390
+	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
+.L746:
+	uxth	r2, r3
+	cmp	lr, r2
+	bhi	.L748
+	pop	{r4, r5, pc}
+.L745:
+	ldrh	r4, [ip, #2]!
 	add	r2, r2, #1
-	cmp	r3, r5
-	ldrneh	r3, [r0, #4]
-	addne	r3, r4, r3
-	subne	r3, r3, #1
-	rsbne	r3, r1, r3
-	strneh	r3, [r0, #4]	@ movhi
-	b	.L750
-.L755:
-	ldmfd	sp!, {r4, r5, pc}
-.L757:
+	uxth	r2, r2
+	cmp	r4, r5
+	ldrhne	r4, [r0, #4]
+	addne	r4, r4, #1
+	strhne	r4, [r0, #4]	@ movhi
+	b	.L743
+.L748:
+	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	.L746
+.L751:
 	.align	2
-.L756:
-	.word	.LANCHOR0+2320
+.L750:
 	.word	.LANCHOR0
 	.fnend
 	.size	ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
 	.align	2
 	.global	make_superblock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	make_superblock, %function
 make_superblock:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	add	r6, r0, #16
-	ldr	r7, .L772
+	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	movw	r3, #2324
+	ldr	r6, .L765
 	mov	r4, r0
+	add	r7, r0, #16
 	mvn	r9, #0
+	ldr	r10, .L765+4
 	mov	r5, #0
+	ldrh	r8, [r6, r3]
 	strh	r5, [r0, #4]	@ movhi
-	ldrh	r8, [r7], #28
 	strb	r5, [r0, #7]
-.L759:
+.L753:
 	uxth	r3, r5
-	cmp	r3, r8
-	bcs	.L771
-	ldrb	r0, [r7, r5]	@ zero_extendqisi2
-	add	r6, r6, #2
-	ldrh	r1, [r4]
-	add	r5, r5, #1
-	bl	V2P_block
-	strh	r9, [r6, #-2]	@ movhi
-	mov	r10, r0
-	bl	FtlBbmIsBadBlock
-	cmp	r0, #0
-	streqh	r10, [r6, #-2]	@ movhi
-	ldreqb	r3, [r4, #7]	@ zero_extendqisi2
-	addeq	r3, r3, #1
-	streqb	r3, [r4, #7]
-	b	.L759
-.L771:
-	ldr	r3, .L772+4
-	movw	r2, #2388
-	ldrb	r1, [r4, #7]	@ zero_extendqisi2
-	ldrh	r2, [r3, r2]
-	smulbb	r2, r1, r2
-	strh	r2, [r4, #4]	@ movhi
-	mov	r2, #0
-	strb	r2, [r4, #9]
-	ldr	r2, [r3, #2244]
-	cmp	r2, #0
-	beq	.L762
-	ldr	r1, .L772+8
-	ldrh	r2, [r4]
-	ldr	r1, [r1, #-3608]
-	mov	r2, r2, asl #1
-	ldrh	r2, [r1, r2]
-	cmp	r2, #79
-	movls	r2, #1
-	strlsb	r2, [r4, #9]
-.L762:
-	ldrb	r3, [r3]	@ zero_extendqisi2
+	cmp	r8, r3
+	bhi	.L755
+	movw	r2, #2390
+	ldrb	r3, [r4, #7]	@ zero_extendqisi2
+	ldrh	r2, [r6, r2]
+	smulbb	r3, r3, r2
+	strh	r3, [r4, #4]	@ movhi
+	mov	r3, #0
+	strb	r3, [r4, #9]
+	ldr	r3, [r6, #2248]
+	cmp	r3, #0
+	beq	.L756
+	ldrh	r3, [r4]
+	ldr	r2, .L765+8
+	ldr	r2, [r2, #-3604]
+	lsl	r3, r3, #1
+	ldrh	r3, [r2, r3]
+	cmp	r3, #79
+	movls	r3, #1
+	strbls	r3, [r4, #9]
+.L756:
+	ldrb	r3, [r6, #36]	@ zero_extendqisi2
 	mov	r0, #0
 	cmp	r3, #0
 	movne	r3, #1
-	strneb	r3, [r4, #9]
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L773:
+	strbne	r3, [r4, #9]
+	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L755:
+	ldrb	r0, [r10, r5]	@ zero_extendqisi2
+	add	r7, r7, #2
+	ldrh	r1, [r4]
+	add	r5, r5, #1
+	bl	V2P_block
+	strh	r9, [r7, #-2]	@ movhi
+	mov	fp, r0
+	bl	FtlBbmIsBadBlock
+	cmp	r0, #0
+	strheq	fp, [r7, #-2]	@ movhi
+	ldrbeq	r3, [r4, #7]	@ zero_extendqisi2
+	addeq	r3, r3, #1
+	strbeq	r3, [r4, #7]
+	b	.L753
+.L766:
 	.align	2
-.L772:
-	.word	.LANCHOR0+2320
+.L765:
 	.word	.LANCHOR0
+	.word	.LANCHOR0+2350
 	.word	.LANCHOR2
 	.fnend
 	.size	make_superblock, .-make_superblock
 	.align	2
 	.global	update_multiplier_value
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	update_multiplier_value, %function
 update_multiplier_value:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, lr}
+	ldr	r3, .L774
+	movw	r2, #2324
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	mov	r5, #0
-	ldr	r3, .L784
+	ldr	r9, .L774+4
 	mov	r6, r0
-	ldr	r9, .L784+4
 	mov	r4, r5
-	add	r2, r3, #2320
-	ldrh	r7, [r2]
-	movw	r2, #2388
+	ldrh	r7, [r3, r2]
+	movw	r2, #2390
 	ldrh	r8, [r3, r2]
-.L775:
+.L768:
 	uxth	r3, r5
-	cmp	r3, r7
-	bcs	.L783
-	ldrb	r0, [r9, r5]	@ zero_extendqisi2
-	mov	r1, r6
-	bl	V2P_block
-	add	r5, r5, #1
-	bl	FtlBbmIsBadBlock
-	cmp	r0, #0
-	addeq	r4, r4, r8
-	uxtheq	r4, r4
-	b	.L775
-.L783:
+	cmp	r7, r3
+	bhi	.L770
 	cmp	r4, #0
-	beq	.L778
+	moveq	r0, r4
+	beq	.L771
 	mov	r1, r4
 	mov	r0, #32768
 	bl	__aeabi_idiv
-	uxth	r4, r0
-.L778:
-	ldr	r3, .L784+8
+.L771:
+	ldr	r3, .L774+8
 	mov	r2, #6
-	mov	r0, #0
-	ldr	r3, [r3, #-3552]
+	ldr	r3, [r3, #-3548]
 	mla	r6, r2, r6, r3
-	strh	r4, [r6, #4]	@ movhi
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
-.L785:
+	strh	r0, [r6, #4]	@ movhi
+	mov	r0, #0
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L770:
+	mov	r1, r6
+	ldrb	r0, [r9, r5]	@ zero_extendqisi2
+	bl	V2P_block
+	bl	FtlBbmIsBadBlock
+	cmp	r0, #0
+	add	r5, r5, #1
+	addeq	r4, r4, r8
+	uxtheq	r4, r4
+	b	.L768
+.L775:
 	.align	2
-.L784:
+.L774:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2348
+	.word	.LANCHOR0+2350
 	.word	.LANCHOR2
 	.fnend
 	.size	update_multiplier_value, .-update_multiplier_value
 	.align	2
 	.global	GetFreeBlockMinEraseCount
+	.syntax unified
+	.arm
+	.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, .L789
-	ldr	r0, [r2, #-3532]
+	ldr	r2, .L779
+	ldr	r0, [r2, #-3528]
 	cmp	r0, #0
 	bxeq	lr
-	ldr	r3, [r2, #-3552]
-	rsb	r0, r3, r0
-	ldr	r3, .L789+4
-	mov	r0, r0, asr #1
+	ldr	r3, [r2, #-3548]
+	sub	r0, r0, r3
+	ldr	r3, .L779+4
+	asr	r0, r0, #1
 	mul	r0, r3, r0
-	ldr	r3, [r2, #-3608]
+	ldr	r3, [r2, #-3604]
 	uxth	r0, r0
-	mov	r0, r0, asl #1
+	lsl	r0, r0, #1
 	ldrh	r0, [r3, r0]
 	bx	lr
-.L790:
+.L780:
 	.align	2
-.L789:
+.L779:
 	.word	.LANCHOR2
 	.word	-1431655765
 	.fnend
 	.size	GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
 	.align	2
 	.global	GetFreeBlockMaxEraseCount
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	GetFreeBlockMaxEraseCount, %function
 GetFreeBlockMaxEraseCount:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r1, .L801
-	ldr	r3, [r1, #-3532]
+	ldr	r1, .L793
+	ldr	r3, [r1, #-3528]
 	cmp	r3, #0
-	beq	.L797
+	beq	.L787
 	sub	r2, r1, #3520
-	stmfd	sp!, {r4, r5, lr}
+	push	{r4, r5, lr}
 	.save {r4, r5, lr}
+	ldrh	r2, [r2, #-4]
 	mov	r4, #6
-	ldrh	r2, [r2, #-8]
 	movw	r5, #65535
-	ldr	ip, [r1, #-3552]
-	rsb	r2, r2, r2, asl #3
-	rsb	r3, ip, r3
-	mov	r2, r2, asr #3
-	mov	r3, r3, asr #1
+	ldr	ip, [r1, #-3548]
+	rsb	r2, r2, r2, lsl #3
+	sub	r3, r3, ip
+	asr	r2, r2, #3
+	asr	r3, r3, #1
 	cmp	r0, r2
 	uxthgt	r0, r2
-	ldr	r2, .L801+4
+	ldr	r2, .L793+4
 	mul	r3, r2, r3
 	mov	r2, #0
 	uxth	r3, r3
-.L794:
+.L784:
 	uxth	lr, r2
-	cmp	lr, r0
-	bcs	.L796
+	cmp	r0, lr
+	bls	.L786
 	mul	lr, r4, r3
 	add	r2, r2, #1
 	ldrh	lr, [ip, lr]
 	cmp	lr, r5
-	bne	.L798
-.L796:
-	ldr	r2, [r1, #-3608]
-	mov	r3, r3, asl #1
+	bne	.L788
+.L786:
+	ldr	r2, [r1, #-3604]
+	lsl	r3, r3, #1
 	ldrh	r0, [r2, r3]
-	ldmfd	sp!, {r4, r5, pc}
-.L798:
+	pop	{r4, r5, pc}
+.L788:
 	mov	r3, lr
-	b	.L794
-.L797:
+	b	.L784
+.L787:
 	mov	r0, r3
 	bx	lr
-.L802:
+.L794:
 	.align	2
-.L801:
+.L793:
 	.word	.LANCHOR2
 	.word	-1431655765
 	.fnend
 	.size	GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
 	.align	2
 	.global	FtlPrintInfo2buf
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlPrintInfo2buf, %function
 FtlPrintInfo2buf:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	mov	r7, r0
-	ldr	r8, .L814
-	add	r4, r7, #12
-	ldr	r1, .L814+4
-	.pad #32
-	sub	sp, sp, #32
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	mov	r8, r0
+	ldr	r9, .L808
+	add	r5, r8, #12
+	.pad #36
+	sub	sp, sp, #36
+	ldr	r1, .L808+4
 	bl	strcpy
-	mov	r0, r4
-	ldr	r1, .L814+8
-	ldr	r2, [r8, #116]
+	ldr	r2, [r9, #124]
+	mov	r0, r5
+	ldr	r1, .L808+8
 	bl	sprintf
-	ldr	r1, .L814+12
-	ldr	r2, [r8, #2404]
-	add	r4, r4, r0
-	mov	r0, r4
+	add	r5, r5, r0
+	ldr	r2, [r9, #2408]
+	mov	r0, r5
+	ldr	r1, .L808+12
 	bl	sprintf
-	ldr	r3, .L814+16
-	ldr	r3, [r3, #504]
+	ldr	r3, .L808+16
+	add	r5, r5, r0
+	ldr	r3, [r3, #500]
 	cmp	r3, #1
-	add	r4, r4, r0
-	bne	.L809
-	add	r0, sp, #16
-	add	r1, sp, #20
-	add	r2, sp, #24
+	subne	r0, r5, r8
+	bne	.L795
 	add	r3, sp, #28
+	add	r2, sp, #24
+	add	r1, sp, #20
+	add	r0, sp, #16
 	bl	NandcGetTimeCfg
-	mov	r0, r4
-	ldr	r1, .L814+20
-	ldr	r6, .L814+24
-	sub	r10, r6, #3520
-	ldr	r3, [sp, #24]
-	ldr	r2, [sp, #16]
-	str	r3, [sp]
 	ldr	r3, [sp, #28]
+	mov	r0, r5
+	ldr	r2, [sp, #16]
+	ldr	r1, .L808+20
 	str	r3, [sp, #4]
+	ldr	r3, [sp, #24]
+	ldr	r7, .L808+24
+	str	r3, [sp]
 	ldr	r3, [sp, #20]
+	sub	r10, r7, #3520
 	bl	sprintf
-	ldr	r1, .L814+28
-	add	r4, r4, r0
-	add	r5, r4, #10
-	mov	r0, r4
-	sub	r4, r6, #3600
+	add	r6, r5, r0
+	ldr	r1, .L808+28
+	mov	r0, r6
+	add	r6, r6, #10
 	bl	strcpy
-	mov	r0, r5
-	ldr	r1, .L814+32
-	ldr	r2, [r8, #2448]
+	ldr	r2, [r9, #2452]
+	mov	r0, r6
+	ldr	r1, .L808+32
+	sub	r4, r7, #3584
 	bl	sprintf
-	ldr	r1, .L814+36
-	ldr	r2, [r6, #-3372]
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3368]
+	ldr	r1, .L808+36
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+40
-	ldr	r2, [r6, #-3364]
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3364]
+	ldr	r1, .L808+40
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+44
-	ldr	r2, [r6, #-3360]
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3360]
+	ldr	r1, .L808+44
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+48
-	ldr	r2, [r6, #-3356]
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3356]
+	ldr	r1, .L808+48
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+52
-	ldr	r2, [r6, #-3352]
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3352]
+	ldr	r1, .L808+52
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+56
-	ldr	r2, [r6, #-3348]
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3348]
+	ldr	r1, .L808+56
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+60
-	ldr	r2, [r6, #-3344]
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3344]
+	ldr	r1, .L808+60
+	mov	r0, r6
 	bl	sprintf
-	ldr	r2, [r6, #-3340]
-	ldr	r1, .L814+64
-	mov	r2, r2, lsr #11
-	add	r5, r5, r0
-	mov	r0, r5
+	ldr	r2, [r7, #-3340]
+	add	r6, r6, r0
+	ldr	r1, .L808+64
+	mov	r0, r6
+	sub	r5, r7, #3280
+	lsr	r2, r2, #11
 	bl	sprintf
-	ldr	r2, [r6, #-3336]
-	ldr	r1, .L814+68
-	mov	r2, r2, lsr #11
-	add	r5, r5, r0
-	mov	r0, r5
+	ldr	r2, [r7, #-3336]
+	add	r6, r6, r0
+	ldr	r1, .L808+68
+	mov	r0, r6
+	lsr	r2, r2, #11
 	bl	sprintf
-	ldr	r1, .L814+72
-	ldr	r2, [r6, #-3332]
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3332]
+	ldr	r1, .L808+72
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+76
-	ldr	r2, [r6, #-3328]
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3328]
+	ldr	r1, .L808+76
+	mov	r0, r6
 	bl	sprintf
-	add	r5, r5, r0
+	add	r6, r6, r0
 	bl	FtlBbtCalcTotleCnt
-	ldr	r2, .L814+80
-	ldr	r1, .L814+84
-	ldrh	r2, [r2, #6]
+	ldr	r2, .L808+80
 	mov	r3, r0
-	mov	r0, r5
+	ldr	r1, .L808+84
+	mov	r0, r6
+	ldrh	r2, [r2, #6]
 	bl	sprintf
-	ldr	r1, .L814+88
-	ldrh	r2, [r10, #-8]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+92
-	ldr	r2, [r6, #-3324]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+96
-	ldr	r2, [r6, #-3320]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+100
-	ldr	r2, [r6, #-3316]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+104
-	ldr	r2, [r6, #-3604]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+108
-	ldr	r2, [r6, #-3312]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+112
-	ldr	r2, [r6, #-3308]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldrh	r2, [r4, #30]
-	ldr	r1, .L814+116
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldrh	r2, [r4, #28]
-	ldr	r1, .L814+120
-	sub	r4, r6, #3296
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+124
-	ldr	r2, [r8, #2428]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+128
-	ldr	r2, [r8, #2420]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+132
-	ldr	r2, [r8, #2316]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	add	r3, r8, #2512
-	ldr	r1, .L814+136
-	ldrh	r2, [r3, #6]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	movw	r3, #2328
-	ldrh	r2, [r8, r3]
-	ldr	r1, .L814+140
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldrh	r2, [r4, #-8]
-	ldr	r1, .L814+144
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+148
-	ldr	r2, [r8, #2332]
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldrh	r2, [r4, #-4]
-	ldr	r1, .L814+152
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	movw	r3, #2452
-	ldrh	r2, [r8, r3]
-	ldr	r1, .L814+156
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldrh	r2, [r4, #-226]
-	ldr	r1, .L814+160
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+164
-	ldrb	r2, [r6, #-3518]	@ zero_extendqisi2
-	add	r5, r5, r0
-	mov	r0, r5
-	bl	sprintf
-	ldr	r1, .L814+168
+	add	r6, r6, r0
 	ldrh	r2, [r10, #-4]
-	add	r5, r5, r0
-	mov	r0, r5
+	ldr	r1, .L808+88
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+172
-	ldrb	r2, [r6, #-3516]	@ zero_extendqisi2
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3324]
+	ldr	r1, .L808+92
+	mov	r0, r6
 	bl	sprintf
-	ldrh	r2, [r4, #-224]
-	ldr	r1, .L814+176
-	sub	r4, r6, #3472
-	sub	r9, r4, #4
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3320]
+	ldr	r1, .L808+96
+	mov	r0, r6
 	bl	sprintf
-	ldrh	r3, [r10, #-4]
-	ldr	r2, [r6, #-3544]
-	ldr	r1, .L814+180
-	mov	r3, r3, asl #1
-	ldrh	r2, [r2, r3]
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3316]
+	ldr	r1, .L808+100
+	mov	r0, r6
 	bl	sprintf
-	ldrh	r2, [r4, #-2]
-	ldr	r1, .L814+184
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3600]
+	ldr	r1, .L808+104
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+188
-	ldrb	r2, [r6, #-3470]	@ zero_extendqisi2
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3312]
+	ldr	r1, .L808+108
+	mov	r0, r6
 	bl	sprintf
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3308]
+	ldr	r1, .L808+112
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldrh	r2, [r4, #18]
+	ldr	r1, .L808+116
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldrh	r2, [r4, #16]
+	ldr	r1, .L808+120
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldr	r2, [r9, #2432]
+	ldr	r1, .L808+124
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldr	r2, [r9, #2424]
+	ldr	r1, .L808+128
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldr	r2, [r9, #2320]
+	ldr	r1, .L808+132
+	mov	r0, r6
+	bl	sprintf
+	ldr	r3, .L808+136
+	add	r6, r6, r0
+	ldr	r1, .L808+140
+	mov	r0, r6
+	sub	r4, r7, #3296
+	ldrh	r2, [r3, #6]
+	bl	sprintf
+	movw	r3, #2332
+	add	r6, r6, r0
+	ldrh	r2, [r9, r3]
+	mov	r0, r6
+	ldr	r1, .L808+144
+	bl	sprintf
+	add	r6, r6, r0
+	ldrh	r2, [r4, #-8]
+	ldr	r1, .L808+148
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldr	r2, [r9, #2336]
+	ldr	r1, .L808+152
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
 	ldrh	r2, [r4, #-4]
-	ldr	r1, .L814+192
-	add	r5, r5, r0
-	mov	r0, r5
+	ldr	r1, .L808+156
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+196
-	ldrb	r2, [r6, #-3468]	@ zero_extendqisi2
-	add	r5, r5, r0
-	mov	r0, r5
+	movw	r3, #2456
+	add	r6, r6, r0
+	ldrh	r2, [r9, r3]
+	mov	r0, r6
+	ldr	r1, .L808+160
+	sub	r4, r7, #3472
 	bl	sprintf
-	ldrh	r2, [r9, #4]
-	ldr	r1, .L814+200
-	sub	r9, r6, #3424
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldrh	r2, [r10, #2]
+	ldr	r1, .L808+164
+	mov	r0, r6
 	bl	sprintf
-	ldrh	r3, [r4, #-4]
-	ldr	r2, [r6, #-3544]
-	ldr	r1, .L814+204
-	mov	r3, r3, asl #1
+	add	r6, r6, r0
+	ldrb	r2, [r7, #-3514]	@ zero_extendqisi2
+	ldr	r1, .L808+168
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldrh	r2, [r10]
+	ldr	r1, .L808+172
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldrb	r2, [r7, #-3512]	@ zero_extendqisi2
+	ldr	r1, .L808+176
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldrh	r2, [r10, #4]
+	ldr	r1, .L808+180
+	mov	r0, r6
+	bl	sprintf
+	ldrh	r3, [r10]
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3540]
+	mov	r0, r6
+	ldr	r1, .L808+184
+	lsl	r3, r3, #1
 	ldrh	r2, [r2, r3]
-	add	r5, r5, r0
-	mov	r0, r5
 	bl	sprintf
-	ldrh	r2, [r4, #46]
-	ldr	r1, .L814+208
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldrh	r2, [r4, #2]
+	ldr	r1, .L808+188
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+212
-	ldrb	r2, [r6, #-3422]	@ zero_extendqisi2
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldrb	r2, [r7, #-3466]	@ zero_extendqisi2
+	ldr	r1, .L808+192
+	mov	r0, r6
 	bl	sprintf
-	ldrh	r2, [r9, #-4]
-	ldr	r1, .L814+216
-	sub	r9, r6, #3280
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldrh	r2, [r4]
+	ldr	r1, .L808+196
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+220
-	ldrb	r2, [r6, #-3420]	@ zero_extendqisi2
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldrb	r2, [r7, #-3464]	@ zero_extendqisi2
+	ldr	r1, .L808+200
+	mov	r0, r6
 	bl	sprintf
-	ldrh	r2, [r4, #48]
-	ldr	r1, .L814+224
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldrh	r2, [r4, #4]
+	ldr	r1, .L808+204
+	mov	r0, r6
 	bl	sprintf
-	ldrh	r2, [r4, #190]
-	ldr	r1, .L814+228
-	add	r5, r5, r0
-	mov	r0, r5
+	ldrh	r3, [r4]
+	add	r6, r6, r0
+	ldr	r2, [r7, #-3540]
+	mov	r0, r6
+	ldr	r1, .L808+208
+	sub	r4, r7, #3424
+	lsl	r3, r3, #1
+	ldrh	r2, [r2, r3]
 	bl	sprintf
-	ldr	r1, .L814+232
-	ldrb	r2, [r6, #-3278]	@ zero_extendqisi2
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldrh	r2, [r4, #2]
+	ldr	r1, .L808+212
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+236
-	ldrh	r2, [r9, #-4]
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldrb	r2, [r7, #-3418]	@ zero_extendqisi2
+	ldr	r1, .L808+216
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+240
-	ldrb	r2, [r6, #-3276]	@ zero_extendqisi2
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldrh	r2, [r4]
+	ldr	r1, .L808+220
+	mov	r0, r6
 	bl	sprintf
-	ldrh	r2, [r4, #192]
-	ldr	r1, .L814+244
-	add	r5, r5, r0
-	mov	r0, r5
+	add	r6, r6, r0
+	ldrb	r2, [r7, #-3416]	@ zero_extendqisi2
+	ldr	r1, .L808+224
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, [r6, #-3148]
-	ldr	r3, [r8, #2244]
-	ldr	r2, [r6, #-3236]
-	orr	r2, r3, r2, asl #8
-	ldr	r3, [r6, #-3152]
-	str	r1, [sp]
-	add	r5, r5, r0
-	ldr	r1, [r6, #-3156]
-	mov	r0, r5
-	str	r1, [sp, #4]
-	ldr	r1, .L814+248
+	add	r6, r6, r0
+	ldrh	r2, [r4, #4]
+	ldr	r1, .L808+228
+	mov	r0, r6
 	bl	sprintf
-	ldr	r1, .L814+252
-	ldr	r2, [r6, #-3160]
-	add	r4, r5, r0
-	sub	r5, r6, #2704
+	add	r6, r6, r0
+	ldrh	r2, [r5, #-2]
+	ldr	r1, .L808+232
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldrb	r2, [r7, #-3278]	@ zero_extendqisi2
+	ldr	r1, .L808+236
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldrh	r2, [r5, #-4]
+	ldr	r1, .L808+240
+	mov	r0, r6
+	bl	sprintf
+	add	r6, r6, r0
+	ldrb	r2, [r7, #-3276]	@ zero_extendqisi2
+	ldr	r1, .L808+244
+	mov	r0, r6
+	bl	sprintf
+	sub	r4, r5, #4
+	add	r6, r6, r0
+	ldrh	r2, [r4, #4]
+	mov	r0, r6
+	ldr	r1, .L808+248
+	bl	sprintf
+	ldr	r3, [r7, #-3160]
+	add	r6, r6, r0
+	ldr	r2, [r9, #2248]
+	mov	r0, r6
+	ldr	r1, [r7, #-2724]
+	str	r3, [sp, #4]
+	ldr	r3, [r7, #-3152]
+	orr	r2, r2, r1, lsl #8
+	ldr	r1, .L808+252
+	str	r3, [sp]
+	ldr	r3, [r7, #-3156]
+	bl	sprintf
+	add	r4, r6, r0
+	ldr	r2, [r7, #-3164]
+	ldr	r1, .L808+256
 	mov	r0, r4
 	bl	sprintf
-	ldr	r1, .L814+256
-	ldr	r2, [r6, #-3136]
 	add	r4, r4, r0
+	ldr	r2, [r7, #-3140]
+	ldr	r1, .L808+260
 	mov	r0, r4
 	bl	sprintf
-	sub	r3, r6, #2720
-	ldr	r1, .L814+260
+	sub	r3, r7, #2720
+	add	r4, r4, r0
 	ldrh	r2, [r3]
+	mov	r0, r4
+	ldr	r1, .L808+264
+	sub	r6, r7, #2704
+	bl	sprintf
 	add	r4, r4, r0
+	ldrh	r2, [r6, #-14]
+	ldr	r1, .L808+268
 	mov	r0, r4
 	bl	sprintf
-	ldr	r1, .L814+264
-	ldrh	r2, [r5, #-14]
 	add	r4, r4, r0
+	ldr	r2, [r7, #-2716]
+	ldr	r1, .L808+272
 	mov	r0, r4
 	bl	sprintf
-	ldr	r1, .L814+268
-	ldr	r2, [r6, #-2716]
 	add	r4, r4, r0
-	mov	r0, r4
-	bl	sprintf
-	ldr	r1, .L814+272
-	ldrh	r2, [r5, #-8]
-	add	r4, r4, r0
+	ldrh	r2, [r6, #-8]
+	ldr	r1, .L808+276
 	mov	r0, r4
 	bl	sprintf
 	add	r4, r4, r0
 	bl	GetFreeBlockMinEraseCount
-	ldr	r1, .L814+276
+	ldr	r1, .L808+280
 	mov	r2, r0
 	mov	r0, r4
 	bl	sprintf
 	add	r4, r4, r0
-	ldrh	r0, [r10, #-8]
+	ldrh	r0, [r10, #-4]
 	bl	GetFreeBlockMaxEraseCount
-	ldr	r1, .L814+280
+	ldr	r1, .L808+284
 	mov	r2, r0
 	mov	r0, r4
 	bl	sprintf
-	ldrh	r3, [r9, #-4]
+	ldrh	r3, [r5, #-4]
 	movw	r2, #65535
-	cmp	r3, r2
 	add	r4, r4, r0
-	beq	.L806
-	ldr	r2, [r6, #-3544]
-	mov	r3, r3, asl #1
+	cmp	r3, r2
+	beq	.L798
+	ldr	r2, [r7, #-3540]
+	lsl	r3, r3, #1
 	mov	r0, r4
-	ldr	r1, .L814+284
+	ldr	r1, .L808+288
 	ldrh	r2, [r2, r3]
 	bl	sprintf
 	add	r4, r4, r0
-.L806:
+.L798:
 	mov	r0, #0
-	mov	r5, #0
+	ldr	r9, .L808+292
 	bl	List_get_gc_head_node
-	movw	r10, #65535
-	mov	r9, #6
 	uxth	r3, r0
-.L808:
-	cmp	r3, r10
-	beq	.L807
-	ldr	r2, [r6, #-3544]
-	mov	r1, r3, asl #1
-	mul	r8, r9, r3
+	mov	r5, #0
+	movw	fp, #65535
+	mov	r10, #6
+.L800:
+	cmp	r3, fp
+	beq	.L799
+	ldr	r2, [r7, #-3604]
+	lsl	r1, r3, #1
+	mul	r6, r10, r3
 	mov	r0, r4
 	ldrh	r2, [r2, r1]
-	str	r2, [sp]
-	ldr	r2, [r6, #-3552]
-	add	r2, r2, r8
+	str	r2, [sp, #8]
+	ldr	r2, [r7, #-3548]
+	add	r2, r2, r6
 	ldrh	r2, [r2, #4]
 	str	r2, [sp, #4]
-	ldr	r2, [r6, #-3608]
+	ldr	r2, [r7, #-3540]
 	ldrh	r2, [r2, r1]
-	ldr	r1, .L814+288
-	str	r2, [sp, #8]
+	mov	r1, r9
+	str	r2, [sp]
 	mov	r2, r5
 	bl	sprintf
 	add	r5, r5, #1
-	ldr	r3, [r6, #-3552]
+	ldr	r3, [r7, #-3548]
 	cmp	r5, #16
-	ldrh	r3, [r3, r8]
 	add	r4, r4, r0
-	bne	.L808
-.L807:
-	ldr	r2, [r6, #-3552]
+	ldrh	r3, [r3, r6]
+	bne	.L800
+.L799:
+	ldr	r2, [r7, #-3548]
 	mov	r5, #0
-	ldr	r3, [r6, #-3532]
-	movw	r10, #65535
-	mov	r9, #6
-	rsb	r3, r2, r3
-	ldr	r2, .L814+292
-	mov	r3, r3, asr #1
+	ldr	r3, [r7, #-3528]
+	movw	r9, #65535
+	ldr	fp, .L808+296
+	mov	r10, #6
+	sub	r3, r3, r2
+	ldr	r2, .L808+300
+	asr	r3, r3, #1
 	mul	r3, r2, r3
 	uxth	r3, r3
-.L810:
-	cmp	r3, r10
-	beq	.L809
-	mul	r8, r9, r3
-	ldr	r2, [r6, #-3552]
-	ldr	r1, [r6, #-3608]
+.L802:
+	cmp	r3, r9
+	beq	.L801
+	ldr	r1, [r7, #-3604]
+	lsl	r2, r3, #1
+	mul	r6, r10, r3
 	mov	r0, r4
-	add	r2, r2, r8
+	ldrh	r2, [r1, r2]
+	mov	r1, fp
+	str	r2, [sp, #4]
+	ldr	r2, [r7, #-3548]
+	add	r2, r2, r6
 	ldrh	r2, [r2, #4]
 	str	r2, [sp]
-	mov	r2, r3, asl #1
-	ldrh	r2, [r1, r2]
-	ldr	r1, .L814+296
-	str	r2, [sp, #4]
 	mov	r2, r5
-	bl	sprintf
 	add	r5, r5, #1
-	ldr	r3, [r6, #-3552]
+	bl	sprintf
 	cmp	r5, #4
-	ldrh	r3, [r3, r8]
 	add	r4, r4, r0
-	bne	.L810
-.L809:
-	rsb	r0, r7, r4
-	add	sp, sp, #32
+	ldrne	r3, [r7, #-3548]
+	ldrhne	r3, [r3, r6]
+	bne	.L802
+.L801:
+	sub	r0, r4, r8
+.L795:
+	add	sp, sp, #36
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L815:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L809:
 	.align	2
-.L814:
+.L808:
 	.word	.LANCHOR0
 	.word	.LC6
 	.word	.LC7
@@ -5137,7 +5485,7 @@
 	.word	.LC20
 	.word	.LC21
 	.word	.LC22
-	.word	.LANCHOR0+2452
+	.word	.LANCHOR0+2456
 	.word	.LC23
 	.word	.LC24
 	.word	.LC25
@@ -5151,6 +5499,7 @@
 	.word	.LC33
 	.word	.LC34
 	.word	.LC35
+	.word	.LANCHOR0+2516
 	.word	.LC36
 	.word	.LC37
 	.word	.LC38
@@ -5190,237 +5539,243 @@
 	.word	.LC72
 	.word	.LC73
 	.word	.LC74
-	.word	-1431655765
 	.word	.LC75
+	.word	-1431655765
 	.fnend
 	.size	FtlPrintInfo2buf, .-FtlPrintInfo2buf
 	.align	2
 	.global	ftl_proc_ftl_read
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_proc_ftl_read, %function
 ftl_proc_ftl_read:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
 	mov	r5, r0
-	ldr	r1, .L818
-	ldr	r2, .L818+4
+	ldr	r2, .L812
+	ldr	r1, .L812+4
 	bl	sprintf
 	add	r4, r5, r0
 	mov	r0, r4
 	bl	FtlPrintInfo2buf
 	add	r0, r4, r0
-	rsb	r0, r5, r0
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L819:
+	sub	r0, r0, r5
+	pop	{r4, r5, r6, pc}
+.L813:
 	.align	2
-.L818:
+.L812:
 	.word	.LC76
 	.word	.LC77
 	.fnend
 	.size	ftl_proc_ftl_read, .-ftl_proc_ftl_read
 	.align	2
 	.global	GetSwlReplaceBlock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	GetSwlReplaceBlock, %function
 GetSwlReplaceBlock:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.pad #28
 	sub	sp, sp, #28
-	ldr	r4, .L850
+	ldr	r4, .L842
 	ldr	r2, [r4, #-3316]
 	ldr	r3, [r4, #-3308]
 	cmp	r2, r3
-	bcs	.L821
-	ldr	r2, .L850+4
-	movw	r1, #2328
-	ldr	r0, [r4, #-3608]
+	bcs	.L815
+	ldr	r0, .L842+4
+	movw	r2, #2332
 	mov	r3, #0
 	str	r3, [r4, #-3324]
-	ldrh	r1, [r2, r1]
-	sub	r0, r0, #2
-	mov	r5, r2
-.L822:
+	ldrh	r1, [r0, r2]
+	mov	r6, r0
+	ldr	r2, [r4, #-3604]
+	sub	r2, r2, #2
+.L816:
 	cmp	r3, r1
-	bcs	.L849
-	ldrh	r2, [r0, #2]!
-	add	r3, r3, #1
-	ldr	ip, [r4, #-3324]
-	add	r2, r2, ip
-	str	r2, [r4, #-3324]
-	b	.L822
-.L849:
-	ldr	r6, [r4, #-3324]
-	mov	r0, r6
+	bcc	.L817
+	ldr	r5, [r4, #-3324]
+	mov	r0, r5
 	bl	__aeabi_uidiv
-	movw	r3, #2380
-	ldrh	r1, [r5, r3]
 	str	r0, [r4, #-3316]
+	movw	r3, #2382
 	ldr	r0, [r4, #-3320]
-	rsb	r0, r0, r6
+	ldrh	r1, [r6, r3]
+	sub	r0, r5, r0
 	bl	__aeabi_uidiv
 	str	r0, [r4, #-3324]
-	b	.L824
-.L821:
-	ldr	r3, [r4, #-3312]
-	cmp	r2, r3
-	bls	.L824
-	ldr	ip, .L850+8
-	add	r3, r3, #1
-	str	r3, [r4, #-3312]
-	mov	r3, #0
-.L826:
-	ldrh	r2, [ip]
-	cmp	r3, r2
-	bcs	.L824
-	ldr	r0, [r4, #-3608]
-	mov	r1, r3, asl #1
-	add	r3, r3, #1
-	ldrh	r2, [r0, r1]
-	add	r2, r2, #1
-	strh	r2, [r0, r1]	@ movhi
-	b	.L826
-.L824:
-	ldr	r6, [r4, #-3308]
+.L818:
+	ldr	r5, [r4, #-3308]
 	ldr	r8, [r4, #-3316]
-	add	r3, r6, #256
+	add	r3, r5, #256
 	cmp	r3, r8
-	bls	.L829
-	ldr	r2, .L850
-	add	r3, r6, #768
-	ldr	r2, [r2, #-3312]
+	bls	.L823
+	ldr	r2, [r4, #-3312]
+	add	r3, r5, #768
 	cmp	r3, r2
-	bls	.L829
-	ldr	r3, .L850+4
-	cmp	r6, #40
-	ldr	r2, [r3, #2244]
+	bls	.L823
+	ldr	r3, .L842+4
+	cmp	r5, #40
+	ldr	r2, [r3, #2248]
 	movls	r3, #0
 	movhi	r3, #1
 	cmp	r2, #0
 	orreq	r3, r3, #1
 	cmp	r3, #0
-	beq	.L829
-.L831:
-	movw	r0, #65535
-	b	.L830
-.L829:
-	ldr	r5, .L850
-	sub	r3, r5, #3520
-	ldrh	r0, [r3, #-8]
-	add	r0, r0, r0, asl #1
-	ubfx	r0, r0, #2, #16
-	bl	GetFreeBlockMaxEraseCount
-	add	r1, r6, #64
-	cmp	r0, r1
-	mov	r9, r0
-	movcs	r1, #0
-	movcc	r1, #1
-	cmp	r6, #40
-	movls	r1, #0
-	cmp	r1, #0
-	bne	.L831
-	ldr	r3, [r5, #-3548]
-	cmp	r3, #0
-	beq	.L831
-	ldr	r0, .L850+4
-	movw	r2, #2328
-	ldr	ip, .L850+12
-	movw	r7, #65535
-	ldr	r10, [r5, #-3608]
-	mov	lr, #6
-	ldrh	r2, [r0, r2]
-	ldr	r0, [r5, #-3552]
-	mov	r5, r7
-	str	r2, [sp, #20]
-.L832:
-	ldrh	r2, [r3]
-	movw	fp, #65535
-	cmp	r2, fp
-	beq	.L834
-	add	r1, r1, #1
-	ldr	fp, [sp, #20]
-	uxth	r1, r1
-	cmp	r1, fp
-	bhi	.L831
-	ldrh	fp, [r3, #4]
-	cmp	fp, #0
-	beq	.L833
-	rsb	r3, r0, r3
-	mov	r3, r3, asr #1
-	mul	r3, ip, r3
-	uxth	r3, r3
-	mov	fp, r3, asl #1
-	ldrh	fp, [r10, fp]
-	cmp	fp, r6
-	bls	.L838
-	cmp	fp, r7
-	movcc	r7, fp
-	movcc	r5, r3
-.L833:
-	mla	r3, lr, r2, r0
-	b	.L832
-.L838:
-	mov	r5, r3
-.L834:
-	movw	r3, #65535
-	cmp	r5, r3
-	beq	.L831
-	mov	r3, r5, asl #1
-	ldrh	fp, [r10, r3]
-	cmp	fp, r6
-	bls	.L836
-	str	r3, [sp, #20]
-	bl	GetFreeBlockMinEraseCount
-	ldr	r3, [sp, #20]
-	cmp	r0, r6
-	strhi	r7, [r4, #-3308]
-.L836:
-	cmp	fp, r8
-	bcs	.L831
-	add	r2, fp, #128
-	cmp	r9, r2
-	ble	.L831
-	add	r2, fp, #256
-	cmp	r2, r8
-	bcc	.L837
-	ldr	r2, [r4, #-3312]
-	add	fp, fp, #768
-	cmp	fp, r2
-	bcs	.L831
-.L837:
-	ldr	r2, [r4, #-3544]
-	mov	r1, r5
-	ldr	r0, .L850+16
-	ldrh	r2, [r2, r3]
-	str	r2, [sp]
-	mov	r2, r8
-	ldrh	r3, [r10, r3]
-	stmib	sp, {r3, r9}
-	ldr	r3, [r4, #-3312]
-	bl	printk
-	mov	r0, r5
-	mov	r3, #1
-	str	r3, [r4, #-2708]
-.L830:
+	beq	.L823
+.L825:
+	movw	r6, #65535
+.L824:
+	mov	r0, r6
 	add	sp, sp, #28
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L851:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L817:
+	ldrh	r0, [r2, #2]!
+	add	r3, r3, #1
+	ldr	ip, [r4, #-3324]
+	add	r0, r0, ip
+	str	r0, [r4, #-3324]
+	b	.L816
+.L815:
+	ldr	r3, [r4, #-3312]
+	cmp	r2, r3
+	bls	.L818
+	ldr	ip, .L842+8
+	add	r3, r3, #1
+	str	r3, [r4, #-3312]
+	mov	r3, #0
+.L820:
+	ldrh	r2, [ip]
+	cmp	r3, r2
+	bcs	.L818
+	ldr	r0, [r4, #-3604]
+	lsl	r1, r3, #1
+	add	r3, r3, #1
+	ldrh	r2, [r0, r1]
+	add	r2, r2, #1
+	strh	r2, [r0, r1]	@ movhi
+	b	.L820
+.L823:
+	ldr	r3, .L842+12
+	ldrh	r0, [r3, #-4]
+	add	r0, r0, r0, lsl #1
+	ubfx	r0, r0, #2, #16
+	bl	GetFreeBlockMaxEraseCount
+	add	r1, r5, #64
+	mov	r10, r0
+	cmp	r0, r1
+	movcs	r1, #0
+	movcc	r1, #1
+	cmp	r5, #40
+	movls	r1, #0
+	cmp	r1, #0
+	bne	.L825
+	ldr	r3, [r4, #-3544]
+	cmp	r3, #0
+	beq	.L825
+	ldr	r0, .L842+4
+	movw	r2, #2332
+	ldr	ip, [r4, #-3548]
+	movw	r7, #65535
+	ldr	r9, [r4, #-3604]
+	mov	fp, #6
+	ldrh	r2, [r0, r2]
+	ldr	lr, .L842+16
+	str	r2, [sp, #20]
+	mov	r2, r7
+.L826:
+	ldrh	r0, [r3]
+	movw	r6, #65535
+	cmp	r0, r6
+	bne	.L829
+	mov	r6, r2
+.L828:
+	movw	r3, #65535
+	cmp	r6, r3
+	beq	.L825
+	lsl	fp, r6, #1
+	ldrh	r1, [r9, fp]
+	cmp	r5, r1
+	bcs	.L830
+	bl	GetFreeBlockMinEraseCount
+	cmp	r5, r0
+	strcc	r7, [r4, #-3308]
+.L830:
+	cmp	r8, r1
+	bls	.L825
+	add	r3, r1, #128
+	cmp	r10, r3
+	ble	.L825
+	add	r3, r1, #256
+	cmp	r8, r3
+	bhi	.L831
+	ldr	r3, [r4, #-3312]
+	add	r1, r1, #768
+	cmp	r1, r3
+	bcs	.L825
+.L831:
+	str	r10, [sp, #8]
+	mov	r2, r8
+	ldrh	r3, [r9, fp]
+	mov	r1, r6
+	ldr	r0, .L842+20
+	str	r3, [sp, #4]
+	ldr	r3, [r4, #-3540]
+	ldrh	r3, [r3, fp]
+	str	r3, [sp]
+	ldr	r3, [r4, #-3312]
+	bl	printk
+	mov	r3, #1
+	str	r3, [r4, #-2708]
+	b	.L824
+.L829:
+	add	r1, r1, #1
+	ldr	r6, [sp, #20]
+	uxth	r1, r1
+	cmp	r1, r6
+	bhi	.L825
+	ldrh	r6, [r3, #4]
+	cmp	r6, #0
+	beq	.L827
+	sub	r3, r3, ip
+	asr	r3, r3, #1
+	mul	r3, lr, r3
+	uxth	r6, r3
+	lsl	r3, r6, #1
+	ldrh	r3, [r9, r3]
+	cmp	r5, r3
+	bcs	.L828
+	cmp	r7, r3
+	movhi	r7, r3
+	movhi	r2, r6
+.L827:
+	mla	r3, fp, r0, ip
+	b	.L826
+.L843:
 	.align	2
-.L850:
+.L842:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2328
+	.word	.LANCHOR0+2332
+	.word	.LANCHOR2-3520
 	.word	-1431655765
 	.word	.LC78
 	.fnend
 	.size	GetSwlReplaceBlock, .-GetSwlReplaceBlock
 	.align	2
 	.global	free_data_superblock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	free_data_superblock, %function
 free_data_superblock:
 	.fnstart
@@ -5428,467 +5783,494 @@
 	@ frame_needed = 0, uses_anonymous_args = 0
 	movw	r2, #65535
 	cmp	r0, r2
-	stmfd	sp!, {r3, lr}
-	.save {r3, lr}
-	beq	.L853
-	ldr	r2, .L855
-	mov	r3, r0, asl #1
+	beq	.L847
+	ldr	r2, .L850
+	lsl	r3, r0, #1
+	push	{r4, lr}
+	.save {r4, lr}
 	mov	r1, #0
-	ldr	r2, [r2, #-3544]
+	ldr	r2, [r2, #-3540]
 	strh	r1, [r2, r3]	@ movhi
 	bl	INSERT_FREE_LIST
-.L853:
 	mov	r0, #0
-	ldmfd	sp!, {r3, pc}
-.L856:
+	pop	{r4, pc}
+.L847:
+	mov	r0, #0
+	bx	lr
+.L851:
 	.align	2
-.L855:
+.L850:
 	.word	.LANCHOR2
 	.fnend
 	.size	free_data_superblock, .-free_data_superblock
 	.align	2
 	.global	FtlGcBufInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcBufInit, %function
 FtlGcBufInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	ip, .L865
+	ldr	ip, .L858
 	mov	r3, #0
-	ldr	r1, .L865+4
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
+	ldr	r2, .L858+4
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	add	r7, ip, #78
-	mov	r5, #12
-	mov	r6, #1
-	mov	r8, #36
-	str	r3, [r1, #-2704]
-.L858:
-	ldrh	r2, [ip]
-	add	r4, r3, #1
-	uxth	r3, r3
-	cmp	r3, r2
-	bcs	.L863
-	mul	r0, r5, r3
-	ldr	lr, [r1, #-2700]
-	add	r2, lr, r0
-	str	r6, [r2, #8]
-	ldrh	r2, [r7]
-	mul	r2, r2, r3
-	add	r9, r2, #3
-	cmp	r2, #0
-	movlt	r2, r9
-	ldr	r9, [r1, #-2696]
-	bic	r2, r2, #3
-	add	r2, r9, r2
-	str	r2, [lr, r0]
-	ldr	r2, .L865+8
-	ldr	r9, [r1, #-2700]
-	ldrh	r2, [r2]
-	add	lr, r9, r0
-	mul	r2, r2, r3
-	add	r10, r2, #3
-	cmp	r2, #0
-	movlt	r2, r10
-	ldr	r10, [r1, #-2692]
-	bic	r2, r2, #3
-	add	r2, r10, r2
-	str	r2, [lr, #4]
-	ldr	r2, [r1, #-2688]
-	mla	r3, r8, r3, r2
-	ldr	r2, [r9, r0]
-	str	r2, [r3, #8]
-	ldr	r2, [lr, #4]
-	str	r2, [r3, #12]
-	mov	r3, r4
-	b	.L858
-.L863:
-	ldr	r0, .L865+4
+	mov	r4, #12
+	mov	r5, #1
+	add	r6, ip, #76
+	mov	r7, #36
+	str	r3, [r2, #-2704]
+.L853:
+	ldrh	r1, [ip]
+	uxth	r0, r3
+	add	lr, r3, #1
+	cmp	r0, r1
+	bcc	.L854
+	ldr	r4, .L858+8
 	mov	ip, #12
-	ldr	r4, .L865+12
 	mov	lr, #0
-.L860:
-	ldr	r3, [r1, #-2684]
-	cmp	r2, r3
-	bcs	.L864
-	mul	r5, ip, r2
-	ldr	r7, [r0, #-2700]
-	add	r3, r7, r5
+.L855:
+	ldr	r3, [r2, #-2684]
+	cmp	r1, r3
+	bcc	.L856
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L854:
+	uxth	r3, r3
+	ldr	r8, [r2, #-2700]
+	mul	r0, r4, r3
+	add	r1, r8, r0
+	str	r5, [r1, #8]
+	ldrh	r1, [r6]
+	mul	r1, r3, r1
+	add	r9, r1, #3
+	cmp	r1, #0
+	movlt	r1, r9
+	ldr	r9, [r2, #-2696]
+	bic	r1, r1, #3
+	add	r1, r9, r1
+	str	r1, [r8, r0]
+	ldr	r1, .L858+12
+	ldr	r9, [r2, #-2700]
+	ldrh	r1, [r1]
+	add	r8, r9, r0
+	mul	r1, r3, r1
+	add	r10, r1, #3
+	cmp	r1, #0
+	movlt	r1, r10
+	ldr	r10, [r2, #-2692]
+	bic	r1, r1, #3
+	add	r1, r10, r1
+	str	r1, [r8, #4]
+	ldr	r1, [r2, #-2688]
+	mla	r3, r7, r3, r1
+	ldr	r1, [r9, r0]
+	str	r1, [r3, #8]
+	ldr	r1, [r8, #4]
+	str	r1, [r3, #12]
+	mov	r3, lr
+	b	.L853
+.L856:
+	mul	r5, ip, r1
+	ldr	r6, [r2, #-2700]
+	add	r3, r6, r5
 	str	lr, [r3, #8]
 	ldrh	r3, [r4]
-	mul	r3, r3, r2
-	add	r6, r3, #3
+	mul	r3, r1, r3
+	add	r0, r3, #3
 	cmp	r3, #0
-	movlt	r3, r6
-	ldr	r6, [r0, #-2696]
+	movlt	r3, r0
+	ldr	r0, [r2, #-2696]
 	bic	r3, r3, #3
-	add	r3, r6, r3
-	str	r3, [r7, r5]
-	ldr	r3, .L865+8
-	ldr	r6, [r0, #-2700]
+	add	r3, r0, r3
+	str	r3, [r6, r5]
+	ldr	r3, .L858+12
+	ldr	r0, [r2, #-2700]
 	ldrh	r3, [r3]
-	add	r5, r6, r5
-	mul	r3, r3, r2
-	add	r2, r2, #1
-	uxth	r2, r2
-	add	r6, r3, #3
+	add	r0, r0, r5
+	mul	r3, r1, r3
+	add	r1, r1, #1
+	uxth	r1, r1
+	add	r5, r3, #3
 	cmp	r3, #0
-	movlt	r3, r6
-	ldr	r6, [r0, #-2692]
+	movlt	r3, r5
+	ldr	r5, [r2, #-2692]
 	bic	r3, r3, #3
-	add	r3, r6, r3
-	str	r3, [r5, #4]
-	b	.L860
-.L864:
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L866:
+	add	r3, r5, r3
+	str	r3, [r0, #4]
+	b	.L855
+.L859:
 	.align	2
-.L865:
-	.word	.LANCHOR0+2320
+.L858:
+	.word	.LANCHOR0+2324
 	.word	.LANCHOR2
 	.word	.LANCHOR0+2400
-	.word	.LANCHOR0+2398
+	.word	.LANCHOR0+2402
 	.fnend
 	.size	FtlGcBufInit, .-FtlGcBufInit
 	.align	2
 	.global	FtlGcBufFree
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcBufFree, %function
 FtlGcBufFree:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L875
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
+	ldr	r3, .L868
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	mov	lr, #0
-	ldr	r6, [r3, #-2684]
 	mov	r5, #36
+	mov	r7, #12
+	mov	r8, lr
+	ldr	r6, [r3, #-2684]
 	ldr	r4, [r3, #-2700]
-	mov	r7, lr
-	mov	r8, #12
-.L868:
-	uxth	ip, lr
-	cmp	ip, r1
-	ldmcsfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-	mla	ip, r5, ip, r0
+.L861:
+	uxth	r3, lr
+	cmp	r1, r3
+	popls	{r4, r5, r6, r7, r8, r9, r10, pc}
+	mla	ip, r5, r3, r0
 	mov	r2, #0
-.L869:
+.L862:
 	uxth	r3, r2
-	cmp	r3, r6
-	bcs	.L870
-	mul	r3, r8, r3
+	cmp	r6, r3
+	bls	.L863
+	mul	r3, r7, r3
 	add	r2, r2, #1
-	add	r9, r4, r3
 	ldr	r10, [r4, r3]
+	add	r9, r4, r3
 	ldr	r3, [ip, #8]
 	cmp	r10, r3
-	bne	.L869
-	str	r7, [r9, #8]
-.L870:
+	bne	.L862
+	str	r8, [r9, #8]
+.L863:
 	add	lr, lr, #1
-	b	.L868
-.L876:
+	b	.L861
+.L869:
 	.align	2
-.L875:
+.L868:
 	.word	.LANCHOR2
 	.fnend
 	.size	FtlGcBufFree, .-FtlGcBufFree
 	.align	2
 	.global	FtlGcBufAlloc
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcBufAlloc, %function
 FtlGcBufAlloc:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L886
+	ldr	r3, .L878
 	mov	ip, #0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, lr}
+	push	{r4, r5, r6, r7, r8, r9, lr}
 	.save {r4, r5, r6, r7, r8, r9, lr}
 	mov	r6, #12
-	ldr	r4, [r3, #-2684]
 	mov	r7, #1
-	ldr	r5, [r3, #-2700]
 	mov	r8, #36
-.L878:
+	ldr	r4, [r3, #-2684]
+	ldr	r5, [r3, #-2700]
+.L871:
 	uxth	r2, ip
-	cmp	r2, r1
-	bcs	.L885
+	cmp	r1, r2
+	bhi	.L875
+	pop	{r4, r5, r6, r7, r8, r9, pc}
+.L875:
 	mov	lr, #0
-.L879:
+.L872:
 	uxth	r3, lr
-	cmp	r3, r4
-	bcs	.L880
+	cmp	r4, r3
+	bls	.L873
 	mla	r3, r6, r3, r5
 	add	lr, lr, #1
 	ldr	r9, [r3, #8]
 	cmp	r9, #0
-	bne	.L879
+	bne	.L872
 	mla	r2, r8, r2, r0
 	ldr	lr, [r3]
 	str	r7, [r3, #8]
 	str	lr, [r2, #8]
 	ldr	r3, [r3, #4]
 	str	r3, [r2, #12]
-.L880:
+.L873:
 	add	ip, ip, #1
-	b	.L878
-.L885:
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, pc}
-.L887:
+	b	.L871
+.L879:
 	.align	2
-.L886:
+.L878:
 	.word	.LANCHOR2
 	.fnend
 	.size	FtlGcBufAlloc, .-FtlGcBufAlloc
 	.align	2
 	.global	IsBlkInGcList
+	.syntax unified
+	.arm
+	.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, .L894
+	ldr	r2, .L885
+	ldr	r3, [r2, #-2680]
 	sub	r2, r2, #2672
-	ldr	r3, [r2, #-8]
 	ldrh	r2, [r2, #-4]
-	add	r2, r3, r2, asl #1
-.L889:
+	add	r2, r3, r2, lsl #1
+.L881:
 	cmp	r3, r2
-	beq	.L893
-	ldrh	r1, [r3], #2
-	cmp	r1, r0
-	bne	.L889
-	mov	r0, #1
-	bx	lr
-.L893:
+	bne	.L883
 	mov	r0, #0
 	bx	lr
-.L895:
+.L883:
+	ldrh	r1, [r3], #2
+	cmp	r1, r0
+	bne	.L881
+	mov	r0, #1
+	bx	lr
+.L886:
 	.align	2
-.L894:
+.L885:
 	.word	.LANCHOR2
 	.fnend
 	.size	IsBlkInGcList, .-IsBlkInGcList
 	.align	2
 	.global	FtlGcUpdatePage
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcUpdatePage, %function
 FtlGcUpdatePage:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, lr}
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
 	mov	r4, r0
 	ubfx	r0, r0, #10, #16
 	mov	r5, r1
 	mov	r6, r2
 	bl	P2V_block_in_plane
-	ldr	r2, .L904
-	mov	lr, #0
-	sub	r3, r2, #2672
-	ldr	r8, [r2, #-2680]
-	ldrh	r1, [r3, #-4]
-	sub	r7, r8, #2
-.L897:
-	uxth	ip, lr
-	cmp	ip, r1
-	bcs	.L901
-	ldrh	r9, [r7, #2]!
-	add	lr, lr, #1
-	cmp	r9, r0
-	bne	.L897
-.L901:
-	cmp	ip, r1
-	moveq	ip, ip, asl #1
-	streqh	r0, [r8, ip]	@ movhi
-	ldreqh	ip, [r3, #-4]
-	addeq	ip, ip, #1
-	streqh	ip, [r3, #-4]	@ movhi
-.L899:
-	ldr	r3, .L904+4
-	mov	ip, #12
+	ldr	r2, .L892
+	mov	r3, #0
+	sub	ip, r2, #2672
+	ldr	lr, [r2, #-2680]
+	ldrh	r7, [ip, #-4]
+	sub	r1, lr, #2
+.L888:
+	uxth	r8, r3
+	cmp	r8, r7
+	bcc	.L890
+	moveq	r3, r8
+	lsleq	r3, r3, #1
+	strheq	r0, [lr, r3]	@ movhi
+	ldrheq	r3, [ip, #-4]
+	addeq	r3, r3, #1
+	strheq	r3, [ip, #-4]	@ movhi
+	b	.L889
+.L890:
+	ldrh	r8, [r1, #2]!
+	add	r3, r3, #1
+	cmp	r8, r0
+	bne	.L888
+.L889:
+	ldr	r0, .L892+4
+	mov	r3, #12
 	ldr	r2, [r2, #-2672]
-	ldrh	r1, [r3, #-12]
-	mul	ip, ip, r1
-	add	r1, r2, ip
+	ldrh	r1, [r0, #-12]
+	mul	r3, r3, r1
+	add	r1, r2, r3
 	stmib	r1, {r5, r6}
-	str	r4, [r2, ip]
-	ldrh	r2, [r3, #-12]
-	add	r2, r2, #1
-	strh	r2, [r3, #-12]	@ movhi
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
-.L905:
+	str	r4, [r2, r3]
+	ldrh	r3, [r0, #-12]
+	add	r3, r3, #1
+	strh	r3, [r0, #-12]	@ movhi
+	pop	{r4, r5, r6, r7, r8, pc}
+.L893:
 	.align	2
-.L904:
+.L892:
 	.word	.LANCHOR2
 	.word	.LANCHOR2-2656
 	.fnend
 	.size	FtlGcUpdatePage, .-FtlGcUpdatePage
 	.align	2
 	.global	FtlGcRefreshOpenBlock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcRefreshOpenBlock, %function
 FtlGcRefreshOpenBlock:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	mov	r5, r0
-	ldr	r4, .L914
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	ldr	r4, .L902
 	ldrh	r3, [r4, #-10]
 	cmp	r3, r0
-	beq	.L908
+	beq	.L896
 	ldrh	r3, [r4, #-8]
 	cmp	r3, r0
-	beq	.L908
+	beq	.L896
 	ldrh	r3, [r4, #-6]
 	cmp	r3, r0
-	beq	.L908
+	beq	.L896
 	ldrh	r3, [r4, #-4]
 	cmp	r3, r0
-	beq	.L908
-	ldr	r0, .L914+4
-	mov	r1, r5
+	beq	.L896
+	mov	r5, r0
+	mov	r1, r0
+	ldr	r0, .L902+4
 	bl	printk
 	ldrh	r2, [r4, #-10]
 	movw	r3, #65535
 	cmp	r2, r3
-	streqh	r5, [r4, #-10]	@ movhi
-	beq	.L908
+	strheq	r5, [r4, #-10]	@ movhi
+	beq	.L896
 	ldrh	r2, [r4, #-8]
 	cmp	r2, r3
-	streqh	r5, [r4, #-8]	@ movhi
-	beq	.L908
+	strheq	r5, [r4, #-8]	@ movhi
+	beq	.L896
 	ldrh	r2, [r4, #-6]
 	cmp	r2, r3
-	streqh	r5, [r4, #-6]	@ movhi
-	beq	.L908
+	strheq	r5, [r4, #-6]	@ movhi
+	beq	.L896
 	ldrh	r2, [r4, #-4]
 	cmp	r2, r3
-	streqh	r5, [r4, #-4]	@ movhi
-.L908:
+	strheq	r5, [r4, #-4]	@ movhi
+.L896:
 	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L915:
+	pop	{r4, r5, r6, pc}
+.L903:
 	.align	2
-.L914:
+.L902:
 	.word	.LANCHOR2-2656
 	.word	.LC79
 	.fnend
 	.size	FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock
 	.align	2
 	.global	FtlGcRefreshBlock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcRefreshBlock, %function
 FtlGcRefreshBlock:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	mov	r5, r0
-	ldr	r4, .L927
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	ldr	r4, .L915
 	ldrh	r3, [r4, #-10]
 	cmp	r3, r0
-	beq	.L924
+	beq	.L912
 	ldrh	r3, [r4, #-8]
 	cmp	r3, r0
-	beq	.L924
+	beq	.L912
 	ldrh	r3, [r4, #-6]
 	cmp	r3, r0
-	beq	.L924
+	beq	.L912
 	ldrh	r3, [r4, #-4]
 	cmp	r3, r0
-	beq	.L924
-	ldr	r0, .L927+4
-	mov	r1, r5
+	beq	.L912
+	mov	r5, r0
+	mov	r1, r0
+	ldr	r0, .L915+4
 	bl	printk
 	ldrh	r2, [r4, #-10]
 	movw	r3, #65535
 	cmp	r2, r3
-	streqh	r5, [r4, #-10]	@ movhi
-	beq	.L924
+	strheq	r5, [r4, #-10]	@ movhi
+	beq	.L912
 	ldrh	r2, [r4, #-8]
 	cmp	r2, r3
-	streqh	r5, [r4, #-8]	@ movhi
-	beq	.L924
+	strheq	r5, [r4, #-8]	@ movhi
+	beq	.L912
 	ldrh	r2, [r4, #-6]
 	cmp	r2, r3
-	streqh	r5, [r4, #-6]	@ movhi
-	beq	.L924
+	strheq	r5, [r4, #-6]	@ movhi
+	beq	.L912
 	ldrh	r2, [r4, #-4]
 	cmp	r2, r3
-	bne	.L925
+	bne	.L913
 	strh	r5, [r4, #-4]	@ movhi
-.L924:
+.L912:
 	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L925:
+	pop	{r4, r5, r6, pc}
+.L913:
 	mvn	r0, #0
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L928:
+	pop	{r4, r5, r6, pc}
+.L916:
 	.align	2
-.L927:
+.L915:
 	.word	.LANCHOR2-2656
 	.word	.LC79
 	.fnend
 	.size	FtlGcRefreshBlock, .-FtlGcRefreshBlock
 	.align	2
 	.global	FtlGcMarkBadPhyBlk
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcMarkBadPhyBlk, %function
 FtlGcMarkBadPhyBlk:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
 	mov	r5, r0
+	ldr	r6, .L926
 	bl	P2V_block_in_plane
-	ldr	r6, .L939
-	mov	r2, r5
 	sub	r7, r6, #2656
-	ldrh	r1, [r7, #-2]
 	mov	r4, r0
-	ldr	r0, .L939+4
+	mov	r2, r5
+	ldrh	r1, [r7, #-2]
+	ldr	r0, .L926+4
 	bl	printk
 	mov	r0, r4
 	bl	FtlGcRefreshBlock
-	ldr	r3, .L939+8
-	ldr	r3, [r3, #2244]
+	ldr	r3, .L926+8
+	ldr	r3, [r3, #2248]
 	cmp	r3, #0
 	mov	r3, r7
-	beq	.L930
-	ldr	r1, [r6, #-3608]
-	mov	r4, r4, asl #1
+	beq	.L918
+	ldr	r1, [r6, #-3604]
+	lsl	r4, r4, #1
 	ldrh	r2, [r1, r4]
 	cmp	r2, #39
 	subhi	r2, r2, #40
-	strhih	r2, [r1, r4]	@ movhi
-.L930:
+	strhhi	r2, [r1, r4]	@ movhi
+.L918:
 	ldrh	r2, [r3, #-2]
 	mov	r1, #0
-.L931:
+.L919:
 	uxth	r0, r1
-	cmp	r0, r2
-	bcs	.L938
-	add	r1, r1, #1
-	add	r0, r3, r1, asl #1
-	ldrh	r0, [r0, #-2]
-	cmp	r0, r5
-	bne	.L931
-	b	.L932
-.L938:
+	cmp	r2, r0
+	bhi	.L921
 	cmp	r2, #15
 	addls	r1, r2, #1
-	movls	r2, r2, asl #1
-	strlsh	r1, [r3, #-2]	@ movhi
-	strlsh	r5, [r3, r2]	@ movhi
-.L932:
+	lslls	r2, r2, #1
+	strhls	r1, [r3, #-2]	@ movhi
+	strhls	r5, [r3, r2]	@ movhi
+	b	.L920
+.L921:
+	add	r1, r1, #1
+	add	r0, r3, r1, lsl #1
+	ldrh	r0, [r0, #-2]
+	cmp	r0, r5
+	bne	.L919
+.L920:
 	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L940:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L927:
 	.align	2
-.L939:
+.L926:
 	.word	.LANCHOR2
 	.word	.LC80
 	.word	.LANCHOR0
@@ -5896,28 +6278,31 @@
 	.size	FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
 	.align	2
 	.global	FtlGcReFreshBadBlk
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcReFreshBadBlk, %function
 FtlGcReFreshBadBlk:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L949
+	ldr	r3, .L938
 	ldrh	r2, [r3, #-2]
 	cmp	r2, #0
-	beq	.L948
+	beq	.L935
 	ldrh	r0, [r3, #-10]
 	movw	r1, #65535
 	cmp	r0, r1
-	bne	.L948
-	stmfd	sp!, {r4, lr}
+	bne	.L935
+	push	{r4, lr}
 	.save {r4, lr}
 	add	r4, r3, #48
 	ldrh	r1, [r4, #-14]
 	cmp	r1, r2
 	movcs	r2, #0
-	strcsh	r2, [r4, #-14]	@ movhi
+	strhcs	r2, [r4, #-14]	@ movhi
 	ldrh	r2, [r4, #-14]
-	mov	r2, r2, asl #1
+	lsl	r2, r2, #1
 	ldrh	r0, [r3, r2]
 	bl	P2V_block_in_plane
 	bl	FtlGcRefreshBlock
@@ -5925,18 +6310,21 @@
 	mov	r0, #0
 	add	r3, r3, #1
 	strh	r3, [r4, #-14]	@ movhi
-	ldmfd	sp!, {r4, pc}
-.L948:
+	pop	{r4, pc}
+.L935:
 	mov	r0, #0
 	bx	lr
-.L950:
+.L939:
 	.align	2
-.L949:
+.L938:
 	.word	.LANCHOR2-2656
 	.fnend
 	.size	FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
 	.align	2
 	.global	ftl_memset
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_memset, %function
 ftl_memset:
 	.fnstart
@@ -5948,459 +6336,470 @@
 	.size	ftl_memset, .-ftl_memset
 	.align	2
 	.global	BuildFlashLsbPageTable
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	BuildFlashLsbPageTable, %function
 BuildFlashLsbPageTable:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	cmp	r0, #0
-	stmfd	sp!, {r4, lr}
-	.save {r4, lr}
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
 	mov	r4, r1
-	bne	.L953
-	ldr	r3, .L996
-.L954:
-	mov	r2, r0, asl #1
+	bne	.L942
+	ldr	r3, .L998
+.L943:
+	lsl	r2, r0, #1
 	strh	r0, [r2, r3]	@ movhi
 	add	r0, r0, #1
 	cmp	r0, #512
-	bne	.L954
-.L958:
+	bne	.L943
+.L949:
+	ldr	r5, .L998+4
 	mov	r1, #255
-	ldr	r0, .L996+4
 	mov	r2, #2048
 	uxth	r4, r4
+	sub	r0, r5, #12
+	sub	r5, r5, #12
 	bl	ftl_memset
+	ldr	r1, .L998
 	mov	r3, #0
-	ldr	r1, .L996
-	ldr	r0, .L996+4
-	b	.L955
-.L953:
+.L944:
+	uxth	r2, r3
+	cmp	r4, r2
+	bhi	.L977
+	pop	{r4, r5, r6, pc}
+.L942:
 	cmp	r0, #1
-	bne	.L956
-	ldr	ip, .L996
+	bne	.L945
+	ldr	r1, .L998
 	mov	r3, #0
-.L957:
+.L948:
+	cmp	r3, #3
 	uxth	r2, r3
-	mov	lr, r3, asl #1
-	cmp	r2, #3
-	movls	r0, #0
-	movhi	r0, #1
-	bics	r1, r0, r3
+	bls	.L946
+	tst	r2, #1
+	movne	r0, #3
+	moveq	r0, #2
+	rsb	r2, r0, r2, lsl #1
+	uxth	r2, r2
+.L946:
+	lsl	r0, r3, #1
 	add	r3, r3, #1
-	movne	r1, #2
-	moveq	r1, #3
-	cmp	r0, #0
-	rsb	r1, r1, r2, asl #1
-	movne	r2, r1
-	cmp	r3, #512
-	strh	r2, [lr, ip]	@ movhi
-	bne	.L957
-	b	.L958
-.L956:
-	cmp	r0, #2
-	bne	.L959
-	ldr	r1, .L996
-	mov	r3, #0
-.L960:
-	uxth	r2, r3
-	mov	r0, r3, asl #1
-	cmp	r2, #1
-	add	r3, r3, #1
-	mov	ip, r2, asl #1
-	subhi	r2, ip, #1
 	cmp	r3, #512
 	strh	r2, [r0, r1]	@ movhi
-	bne	.L960
-	b	.L958
-.L959:
+	bne	.L948
+	b	.L949
+.L945:
+	cmp	r0, #2
+	bne	.L950
+	ldr	r1, .L998
+	mov	r2, #0
+.L952:
+	uxth	r3, r2
+	cmp	r2, #1
+	lsl	r0, r2, #1
+	add	r2, r2, #1
+	lslhi	r3, r3, #1
+	subhi	r3, r3, #1
+	uxthhi	r3, r3
+	cmp	r2, #512
+	strh	r3, [r0, r1]	@ movhi
+	bne	.L952
+	b	.L949
+.L950:
 	cmp	r0, #3
-	bne	.L961
-	ldr	ip, .L996
+	bne	.L953
+	ldr	r1, .L998
 	mov	r3, #0
-.L962:
+.L956:
+	cmp	r3, #5
 	uxth	r2, r3
-	mov	lr, r3, asl #1
-	cmp	r2, #5
-	movls	r0, #0
-	movhi	r0, #1
-	bics	r1, r0, r3
+	bls	.L954
+	tst	r2, #1
+	movne	r0, #5
+	moveq	r0, #4
+	rsb	r2, r0, r2, lsl #1
+	uxth	r2, r2
+.L954:
+	lsl	r0, r3, #1
 	add	r3, r3, #1
-	movne	r1, #4
-	moveq	r1, #5
-	cmp	r0, #0
-	rsb	r1, r1, r2, asl #1
-	movne	r2, r1
 	cmp	r3, #512
-	strh	r2, [lr, ip]	@ movhi
-	bne	.L962
-	b	.L958
-.L961:
+	strh	r2, [r0, r1]	@ movhi
+	bne	.L956
+	b	.L949
+.L953:
 	cmp	r0, #4
 	mov	r3, #0
-	bne	.L963
-	ldr	r2, .L996+8
-	strh	r3, [r2, #148]	@ movhi
+	bne	.L957
+	ldr	r2, .L998+8
+	strh	r3, [r2, #156]	@ movhi
 	mov	r3, #1
-	strh	r0, [r2, #156]	@ movhi
-	strh	r3, [r2, #150]	@ movhi
-	mov	r3, #2
-	strh	r3, [r2, #152]	@ movhi
-	mov	r3, #3
-	strh	r3, [r2, #154]	@ movhi
-	mov	r3, #5
 	strh	r3, [r2, #158]	@ movhi
-	mov	r3, #7
+	mov	r3, #2
 	strh	r3, [r2, #160]	@ movhi
+	mov	r3, #3
+	strh	r3, [r2, #162]	@ movhi
+	mov	r3, #5
+	strh	r3, [r2, #166]	@ movhi
+	mov	r3, #7
+	strh	r3, [r2, #168]	@ movhi
 	mov	r3, #8
-	strh	r3, [r2, #162]!	@ movhi
-.L964:
+	strh	r0, [r2, #164]	@ movhi
+	strh	r3, [r2, #170]!	@ movhi
+.L959:
 	tst	r3, #1
 	movne	r1, #7
 	moveq	r1, #6
-	rsb	r1, r1, r3, asl #1
+	rsb	r1, r1, r3, lsl #1
 	add	r3, r3, #1
-	strh	r1, [r2, #2]!	@ movhi
 	uxth	r3, r3
+	strh	r1, [r2, #2]!	@ movhi
 	cmp	r3, #512
-	bne	.L964
-	b	.L958
-.L963:
+	bne	.L959
+	b	.L949
+.L957:
 	cmp	r0, #5
-	bne	.L965
-	ldr	r2, .L996
-.L966:
-	mov	r1, r3, asl #1
-	strh	r3, [r1, r2]	@ movhi
+	bne	.L960
+	ldr	r2, .L998+8
+	add	r1, r2, #156
+.L961:
+	lsl	r0, r3, #1
+	strh	r3, [r0, r1]	@ movhi
 	add	r3, r3, #1
 	cmp	r3, #16
-	bne	.L966
-	ldr	r2, .L996+12
-.L967:
+	bne	.L961
+	add	r2, r2, #186
+.L962:
 	strh	r3, [r2, #2]!	@ movhi
 	add	r3, r3, #2
 	uxth	r3, r3
 	cmp	r3, #1008
-	bne	.L967
-	b	.L958
-.L965:
+	bne	.L962
+	b	.L949
+.L960:
 	cmp	r0, #6
-	bne	.L968
-	ldr	r1, .L996+16
-.L969:
-	cmp	r3, #5
-	add	r2, r3, r3, asl #1
-	movls	r0, #0
-	movhi	r0, #1
-	bics	ip, r0, r3
-	movne	ip, #10
-	moveq	ip, #12
-	cmp	r0, #0
-	subne	r2, r2, ip
-	moveq	r2, r3
-	add	r3, r3, #1
-	strh	r2, [r1, #2]!	@ movhi
+	bne	.L963
+	ldr	r0, .L998
+	mov	r1, r3
+.L966:
+	cmp	r1, #5
+	uxth	r2, r1
+	bls	.L964
+	tst	r2, #1
+	movne	r2, #12
+	moveq	r2, #10
+	sub	r2, r3, r2
+	uxth	r2, r2
+.L964:
+	lsl	ip, r1, #1
+	add	r1, r1, #1
+	cmp	r1, #512
+	add	r3, r3, #3
+	strh	r2, [ip, r0]	@ movhi
 	uxth	r3, r3
-	cmp	r3, #512
-	bne	.L969
-	b	.L958
-.L968:
+	bne	.L966
+	b	.L949
+.L963:
 	cmp	r0, #9
-	bne	.L970
-	ldr	r2, .L996+8
+	bne	.L967
+	ldr	r2, .L998+8
 	movw	r1, #1021
-	strh	r3, [r2, #148]	@ movhi
+	strh	r3, [r2, #156]	@ movhi
 	mov	r3, #1
-	strh	r3, [r2, #150]	@ movhi
-	mov	r3, #2
-	strh	r3, [r2, #152]!	@ movhi
-	mov	r3, #3
+	strh	r3, [r2, #158]	@ movhi
+	mov	r3, r2
+	mov	r2, #2
+	strh	r2, [r3, #160]!	@ movhi
+	mov	r2, #3
+.L968:
+	strh	r2, [r3, #2]!	@ movhi
+	add	r2, r2, #2
+	uxth	r2, r2
+	cmp	r2, r1
+	bne	.L968
+	b	.L949
+.L967:
+	cmp	r0, #10
+	bne	.L969
+	ldr	r2, .L998+8
+	add	r1, r2, #156
+.L970:
+	lsl	r0, r3, #1
+	strh	r3, [r0, r1]	@ movhi
+	add	r3, r3, #1
+	cmp	r3, #63
+	bne	.L970
+	add	r2, r2, #280
+	movw	r1, #961
 .L971:
 	strh	r3, [r2, #2]!	@ movhi
 	add	r3, r3, #2
 	uxth	r3, r3
 	cmp	r3, r1
 	bne	.L971
-	b	.L958
-.L970:
-	cmp	r0, #10
-	bne	.L972
-	ldr	r2, .L996
-.L973:
-	mov	r1, r3, asl #1
-	strh	r3, [r1, r2]	@ movhi
-	add	r3, r3, #1
-	cmp	r3, #63
-	bne	.L973
-	ldr	r2, .L996+20
-	movw	r1, #961
-.L974:
-	strh	r3, [r2, #2]!	@ movhi
-	add	r3, r3, #2
-	uxth	r3, r3
-	cmp	r3, r1
-	bne	.L974
-	b	.L958
-.L972:
+	b	.L949
+.L969:
 	cmp	r0, #11
-	bne	.L975
-	ldr	r2, .L996
+	bne	.L972
+	ldr	r2, .L998+8
 	mov	r3, #0
-.L976:
-	mov	r1, r3, asl #1
-	strh	r3, [r1, r2]	@ movhi
+	add	r1, r2, #156
+.L973:
+	lsl	r0, r3, #1
+	strh	r3, [r0, r1]	@ movhi
 	add	r3, r3, #1
 	cmp	r3, #8
-	bne	.L976
-	ldr	r1, .L996+24
-.L977:
-	tst	r3, #1
-	movne	r2, #7
-	moveq	r2, #6
-	rsb	r2, r2, r3, asl #1
-	add	r3, r3, #1
-	strh	r2, [r1, #2]!	@ movhi
-	uxth	r3, r3
-	cmp	r3, #512
-	bne	.L977
-	b	.L958
+	bne	.L973
+	add	r2, r2, #170
 .L975:
+	tst	r3, #1
+	movne	r1, #7
+	moveq	r1, #6
+	rsb	r1, r1, r3, lsl #1
+	add	r3, r3, #1
+	uxth	r3, r3
+	strh	r1, [r2, #2]!	@ movhi
+	cmp	r3, #512
+	bne	.L975
+	b	.L949
+.L972:
 	cmp	r0, #12
-	bne	.L958
-	ldr	r3, .L996+8
+	bne	.L949
+	ldr	r3, .L998+8
 	mov	r2, #0
-	strh	r2, [r3, #148]	@ movhi
+	strh	r2, [r3, #156]	@ movhi
 	mov	r2, #1
-	strh	r2, [r3, #150]	@ movhi
+	strh	r2, [r3, #158]	@ movhi
 	mov	r2, #2
-	strh	r2, [r3, #152]	@ movhi
+	strh	r2, [r3, #160]	@ movhi
 	mov	r2, #3
-	strh	r2, [r3, #154]!	@ movhi
+	strh	r2, [r3, #162]!	@ movhi
 	mov	r2, #4
-.L978:
+.L976:
 	sub	r1, r2, #1
 	add	r1, r1, r2, lsr #1
 	add	r2, r2, #1
-	strh	r1, [r3, #2]!	@ movhi
 	uxth	r2, r2
+	strh	r1, [r3, #2]!	@ movhi
 	cmp	r2, #512
-	bne	.L978
-	b	.L958
-.L955:
-	uxth	r2, r3
-	cmp	r2, r4
-	bcs	.L995
-	mov	r2, r3, asl #1
+	bne	.L976
+	b	.L949
+.L977:
+	lsl	r2, r3, #1
 	add	r3, r3, #1
 	ldrh	r2, [r2, r1]
-	mov	ip, r2, asl #1
-	strh	r2, [r0, ip]	@ movhi
-	b	.L955
-.L995:
-	ldmfd	sp!, {r4, pc}
-.L997:
+	lsl	r0, r2, #1
+	strh	r2, [r5, r0]	@ movhi
+	b	.L944
+.L999:
 	.align	2
-.L996:
-	.word	.LANCHOR0+148
-	.word	.LANCHOR2-2620
+.L998:
+	.word	.LANCHOR0+156
+	.word	.LANCHOR2-2608
 	.word	.LANCHOR0
-	.word	.LANCHOR0+178
-	.word	.LANCHOR0+146
-	.word	.LANCHOR0+272
-	.word	.LANCHOR0+162
 	.fnend
 	.size	BuildFlashLsbPageTable, .-BuildFlashLsbPageTable
 	.align	2
 	.global	FlashDieInfoInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashDieInfoInit, %function
 FlashDieInfoInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	r3, .L1015
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	mov	r6, #0
-	ldr	r3, .L1013
-	ldr	r5, .L1013+4
-	ldr	r9, .L1013+8
+	ldr	r4, .L1015+4
+	ldr	r10, .L1015+8
 	ldrh	r0, [r3, #10]
-	strb	r6, [r5, #2230]
-	mov	r7, r5
-	strb	r6, [r9, #-572]
+	strb	r6, [r4, #2234]
+	strb	r6, [r10, #-572]
 	bl	FlashBlockAlignInit
-	mov	r1, r6
 	mov	r2, #8
-	ldr	r0, .L1013+12
-	bl	ftl_memset
 	mov	r1, r6
+	ldr	r0, .L1015+12
+	bl	ftl_memset
 	mov	r2, #32
-	ldr	r0, .L1013+16
-	bl	ftl_memset
-	ldr	r0, .L1013+20
 	mov	r1, r6
-	mov	r2, #128
+	ldr	r0, .L1015+16
 	bl	ftl_memset
-	ldr	r4, [r5, #44]
-	ldr	fp, .L1013+24
-	add	r8, r4, #1
-.L1000:
-	mov	r0, r8
-	add	r1, fp, r6, asl #3
-	ldrb	r2, [r4]	@ zero_extendqisi2
-	bl	FlashMemCmp8
-	ldr	r10, .L1013+24
-	cmp	r0, #0
-	bne	.L999
-	ldrb	r3, [r7, #2230]	@ zero_extendqisi2
-	add	r2, r7, r3, asl #2
-	str	r0, [r2, #1172]
-	add	r2, r3, #1
-	add	r3, r7, r3
-	strb	r2, [r7, #2230]
-	strb	r6, [r3, #2232]
-.L999:
-	add	r6, r6, #1
-	cmp	r6, #4
-	bne	.L1000
-	ldrb	r3, [r5, #2230]	@ zero_extendqisi2
-	ldr	r7, .L1013+4
-	strb	r3, [r9, #-572]
-	ldrb	r3, [r4, #8]	@ zero_extendqisi2
-	cmp	r3, #2
-	beq	.L1001
-.L1005:
-	ldrb	r3, [r4, #13]	@ zero_extendqisi2
-	ldrb	r2, [r5, #2230]	@ zero_extendqisi2
-	smulbb	r2, r2, r3
-	ldrh	r3, [r4, #14]
-	smulbb	r3, r2, r3
-	ldr	r2, .L1013+28
-	strh	r3, [r2, #-2]	@ movhi
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1001:
-	ldr	r9, [r7, #4]
-	mov	r6, #0
-.L1004:
-	mov	r0, r8
-	add	r1, r10, r6, asl #3
-	ldrb	r2, [r4]	@ zero_extendqisi2
-	bl	FlashMemCmp8
-	cmp	r0, #0
-	bne	.L1002
-	ldrb	r1, [r4, #13]	@ zero_extendqisi2
-	ldrh	r3, [r4, #14]
-	ldrb	r2, [r7, #2230]	@ zero_extendqisi2
-	mul	r1, r9, r1
-	and	r3, r3, #65280
-	add	r0, r7, r2, asl #2
-	mul	r3, r3, r1
-	str	r3, [r0, #1172]
-	ldrb	r1, [r4, #23]	@ zero_extendqisi2
-	cmp	r1, #0
-	movne	r3, r3, asl #1
-	strne	r3, [r0, #1172]
-	add	r3, r2, #1
-	add	r2, r5, r2
-	strb	r3, [r5, #2230]
-	strb	r6, [r2, #2232]
+	mov	r2, #128
+	mov	r1, r6
+	ldr	r0, .L1015+20
+	bl	ftl_memset
+	ldr	r9, .L1015+24
+	ldr	r5, [r4, #48]
+	mov	r8, r9
+	add	r7, r5, #1
 .L1002:
+	ldrb	r2, [r5]	@ zero_extendqisi2
+	add	r1, r9, r6, lsl #3
+	mov	r0, r7
+	bl	FlashMemCmp8
+	cmp	r0, #0
+	bne	.L1001
+	ldrb	r3, [r4, #2234]	@ zero_extendqisi2
+	add	r2, r4, r3, lsl #2
+	str	r0, [r2, #1180]
+	add	r2, r3, #1
+	add	r3, r4, r3
+	strb	r2, [r4, #2234]
+	strb	r6, [r3, #2236]
+.L1001:
 	add	r6, r6, #1
 	cmp	r6, #4
+	bne	.L1002
+	ldrb	r3, [r4, #2234]	@ zero_extendqisi2
+	strb	r3, [r10, #-572]
+	ldrb	r3, [r5, #8]	@ zero_extendqisi2
+	cmp	r3, #2
+	beq	.L1003
+.L1007:
+	ldrh	r2, [r5, #14]
+	ldrb	r3, [r4, #2234]	@ zero_extendqisi2
+	smulbb	r3, r3, r2
+	ldrb	r2, [r5, #13]	@ zero_extendqisi2
+	smulbb	r3, r3, r2
+	ldr	r2, .L1015+28
+	strh	r3, [r2, #-2]	@ movhi
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L1003:
+	ldr	r9, [r4, #40]
+	mov	r6, #0
+.L1006:
+	ldrb	r2, [r5]	@ zero_extendqisi2
+	add	r1, r8, r6, lsl #3
+	mov	r0, r7
+	bl	FlashMemCmp8
+	cmp	r0, #0
 	bne	.L1004
-	b	.L1005
-.L1014:
+	ldrh	r3, [r5, #14]
+	ldrb	r2, [r4, #2234]	@ zero_extendqisi2
+	and	r1, r3, #65280
+	ldrb	r3, [r5, #13]	@ zero_extendqisi2
+	mul	r3, r9, r3
+	mul	r3, r3, r1
+	add	r1, r4, r2, lsl #2
+	str	r3, [r1, #1180]
+	ldrb	r0, [r5, #23]	@ zero_extendqisi2
+	cmp	r0, #0
+	lslne	r3, r3, #1
+	strne	r3, [r1, #1180]
+	add	r3, r2, #1
+	add	r2, r4, r2
+	strb	r3, [r4, #2234]
+	strb	r6, [r2, #2236]
+.L1004:
+	add	r6, r6, #1
+	cmp	r6, #4
+	bne	.L1006
+	b	.L1007
+.L1016:
 	.align	2
-.L1013:
-	.word	.LANCHOR1+472
+.L1015:
+	.word	.LANCHOR1+468
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2232
-	.word	.LANCHOR0+1172
-	.word	.LANCHOR0+2100
-	.word	.LANCHOR0+2068
+	.word	.LANCHOR0+2236
+	.word	.LANCHOR0+1180
+	.word	.LANCHOR0+2104
+	.word	.LANCHOR0+2072
 	.word	.LANCHOR2-568
 	.fnend
 	.size	FlashDieInfoInit, .-FlashDieInfoInit
 	.align	2
 	.global	ftl_read_flash_info
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_read_flash_info, %function
 ftl_read_flash_info:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, lr}
+	push	{r4, lr}
 	.save {r4, lr}
-	mov	r1, #0
 	mov	r2, #11
+	mov	r1, #0
 	mov	r4, r0
 	bl	ftl_memset
-	ldr	r2, .L1020
-	ldr	r0, .L1020+4
+	ldr	r2, .L1021
 	mov	ip, #1
-	ldr	r3, [r2, #44]
-	ldrb	r1, [r3, #9]	@ zero_extendqisi2
-	ldr	r3, [r2, #4]
-	smulbb	r3, r1, r3
+	ldr	r0, .L1021+4
+	ldr	r3, [r2, #48]
+	ldr	r1, [r2, #40]
+	ldrb	r3, [r3, #9]	@ zero_extendqisi2
+	smulbb	r3, r3, r1
 	strh	r3, [r4, #4]	@ unaligned
-	ldrb	r3, [r2, #2312]	@ zero_extendqisi2
+	ldrb	r3, [r2, #2316]	@ zero_extendqisi2
 	strb	r3, [r4, #7]
-	ldr	r3, [r2, #2428]
+	ldr	r3, [r2, #2432]
 	str	r3, [r4]	@ unaligned
-	ldr	r3, [r2, #44]
+	ldr	r3, [r2, #48]
 	ldrb	r1, [r3, #9]	@ zero_extendqisi2
 	strb	r1, [r4, #6]
 	mov	r1, #32
 	strb	r1, [r4, #8]
-	ldrb	r1, [r2, #2230]	@ zero_extendqisi2
+	ldrb	r1, [r2, #2234]	@ zero_extendqisi2
 	ldrb	r3, [r3, #7]	@ zero_extendqisi2
 	strb	r3, [r4, #9]
 	mov	r3, #0
 	strb	r3, [r4, #10]
-.L1016:
+.L1018:
 	uxtb	r2, r3
-	cmp	r2, r1
-	bcs	.L1019
+	cmp	r1, r2
+	bhi	.L1019
+	pop	{r4, pc}
+.L1019:
 	ldrb	lr, [r3, r0]	@ zero_extendqisi2
 	add	r3, r3, #1
 	ldrb	r2, [r4, #10]	@ zero_extendqisi2
-	orr	r2, r2, ip, asl lr
+	orr	r2, r2, ip, lsl lr
 	strb	r2, [r4, #10]
-	b	.L1016
-.L1019:
-	ldmfd	sp!, {r4, pc}
-.L1021:
+	b	.L1018
+.L1022:
 	.align	2
-.L1020:
+.L1021:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2232
+	.word	.LANCHOR0+2236
 	.fnend
 	.size	ftl_read_flash_info, .-ftl_read_flash_info
 	.align	2
 	.global	FtlMemInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlMemInit, %function
 FtlMemInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	mov	r6, #0
-	ldr	r4, .L1127
+	ldr	r4, .L1126
 	mvn	r2, #0
-	ldr	r5, .L1127+4
 	mov	r1, #32
-	sub	r3, r4, #568
 	mov	r0, #1024
+	ldr	r5, .L1126+4
+	mov	r8, #12
+	sub	r3, r4, #568
 	str	r6, [r4, #-564]
-	add	r7, r5, #2320
 	strh	r6, [r3]	@ movhi
 	movw	r3, #65535
 	str	r3, [r4, #-556]
 	sub	r3, r4, #2656
-	str	r6, [r4, #-3236]
-	mov	r8, #36
 	strh	r2, [r3, #-10]	@ movhi
+	movw	r9, #2324
 	strh	r2, [r3, #-8]	@ movhi
+	mov	r7, #36
 	strh	r2, [r3, #-6]	@ movhi
 	strh	r2, [r3, #-4]	@ movhi
 	sub	r2, r4, #2720
@@ -6409,12 +6808,11 @@
 	strh	r1, [r2]	@ movhi
 	sub	r2, r4, #2704
 	strh	r6, [r3]	@ movhi
-	sub	r3, r4, #2608
-	strh	r6, [r2, #-8]	@ movhi
 	mov	r1, #128
-	strh	r6, [r3, #-14]	@ movhi
-	movw	r3, #2394
+	sub	r3, r4, #2608
 	strh	r1, [r2, #-14]	@ movhi
+	strh	r6, [r2, #-8]	@ movhi
+	str	r6, [r4, #-2724]
 	str	r6, [r4, #-3332]
 	str	r6, [r4, #-3328]
 	str	r6, [r4, #-3344]
@@ -6425,7 +6823,7 @@
 	str	r6, [r4, #-3364]
 	str	r6, [r4, #-3324]
 	str	r6, [r4, #-3320]
-	str	r6, [r4, #-3604]
+	str	r6, [r4, #-3600]
 	str	r6, [r4, #-3312]
 	str	r6, [r4, #-3308]
 	str	r6, [r4, #-560]
@@ -6433,27 +6831,29 @@
 	str	r6, [r4, #-552]
 	str	r6, [r4, #-2716]
 	str	r6, [r4, #-548]
+	strh	r6, [r3, #-14]	@ movhi
+	movw	r3, #2396
 	ldrh	r1, [r5, r3]
 	bl	__aeabi_idiv
-	ldrh	r10, [r7]
-	str	r6, [r5, #2440]
-	movw	r6, #2392
-	mov	r9, r10, asl #2
-	cmp	r0, r9
+	movw	r3, #2324
+	str	r6, [r5, #2444]
+	ldrh	r3, [r5, r3]
+	movw	r6, #2394
 	str	r0, [r4, #-540]
+	lsl	r3, r3, #2
+	cmp	r0, r3
 	ldrh	r0, [r5, r6]
-	strhi	r9, [r4, #-540]
-	mov	r9, #12
-	mov	r0, r0, asl #1
+	strhi	r3, [r4, #-540]
+	lsl	r0, r0, #1
 	bl	ftl_malloc
 	str	r0, [r4, #-2680]
 	ldrh	r0, [r5, r6]
-	mul	r0, r9, r0
+	mul	r0, r8, r0
 	bl	ftl_malloc
-	ldrh	r6, [r7]
-	mul	r6, r8, r6
-	mov	r10, r6, asl #3
+	ldrh	r6, [r5, r9]
 	str	r0, [r4, #-2672]
+	mul	r6, r7, r6
+	lsl	r10, r6, #3
 	mov	r0, r10
 	bl	ftl_malloc
 	str	r0, [r4, #-536]
@@ -6462,421 +6862,437 @@
 	str	r0, [r4, #-532]
 	mov	r0, r10
 	bl	ftl_malloc
-	movw	r10, #2398
 	str	r0, [r4, #-528]
 	mov	r0, r6
 	bl	ftl_malloc
-	str	r0, [r4, #-3612]
+	str	r0, [r4, #-3608]
 	mov	r0, r6
 	bl	ftl_malloc
 	str	r0, [r4, #-2688]
+	movw	r10, #2402
 	ldr	r0, [r4, #-540]
-	mul	r0, r8, r0
+	ldr	r6, .L1126+8
+	mul	r0, r7, r0
 	bl	ftl_malloc
-	ldrh	r6, [r5, r10]
-	ldrh	r3, [r7]
-	movw	r8, #2330
-	mov	r3, r3, asl #1
+	ldrh	r3, [r5, r9]
+	ldrh	r7, [r6]
+	str	r0, [r5, #2448]
+	lsl	r3, r3, #1
+	mov	r0, r7
 	add	r3, r3, #1
 	str	r3, [r4, #-2684]
-	str	r0, [r5, #2444]
-	mov	r0, r6
 	bl	ftl_malloc
 	str	r0, [r4, #-524]
-	mov	r0, r6
+	mov	r0, r7
 	bl	ftl_malloc
 	str	r0, [r4, #-520]
-	mov	r0, r6
+	mov	r0, r7
 	bl	ftl_malloc
 	str	r0, [r4, #-516]
 	ldr	r0, [r4, #-2684]
-	mul	r0, r0, r6
+	mul	r0, r0, r7
 	bl	ftl_malloc
 	str	r0, [r4, #-2696]
 	ldr	r0, [r4, #-540]
-	mul	r0, r0, r6
+	mul	r0, r0, r7
 	bl	ftl_malloc
 	str	r0, [r4, #-512]
-	mov	r0, r6
+	mov	r0, r7
 	bl	ftl_malloc
 	str	r0, [r4, #-508]
-	mov	r0, r6
+	mov	r0, r7
 	bl	ftl_malloc
-	ldr	r6, .L1127+8
 	str	r0, [r4, #-504]
 	ldr	r0, [r4, #-2684]
-	mul	r0, r9, r0
+	mul	r0, r8, r0
 	bl	ftl_malloc
-	ldrh	r3, [r6]
-	ldrh	r7, [r7]
-	mul	r7, r7, r3
+	ldrh	r3, [r5, r10]
+	ldrh	r7, [r5, r9]
+	movw	r9, #2334
 	str	r0, [r4, #-2700]
+	mul	r7, r7, r3
 	mov	r0, r7
 	bl	ftl_malloc
 	str	r0, [r4, #-500]
-	mov	r0, r7, asl #3
+	lsl	r0, r7, #3
+	ldr	r7, .L1126+12
 	bl	ftl_malloc
-	ldrh	r3, [r6]
-	ldr	r7, .L1127+12
+	ldrh	r3, [r5, r10]
 	str	r0, [r4, #-496]
 	ldr	r0, [r4, #-2684]
 	mul	r0, r0, r3
 	bl	ftl_malloc
-	ldrh	r3, [r6], #80
+	ldrh	r3, [r5, r10]
 	str	r0, [r4, #-2692]
 	ldr	r0, [r4, #-540]
 	mul	r0, r0, r3
 	bl	ftl_malloc
 	str	r0, [r4, #-492]
-	ldrh	r0, [r5, r8]
-	mov	r0, r0, asl #1
+	ldrh	r0, [r5, r9]
+	lsl	r0, r0, #1
 	uxth	r0, r0
 	strh	r0, [r7]	@ movhi
 	bl	ftl_malloc
 	str	r0, [r4, #-484]
 	ldrh	r0, [r7]
+	ldr	r3, .L1126+16
 	add	r0, r0, #544
 	add	r0, r0, #3
-	mov	r0, r0, lsr #9
+	lsr	r0, r0, #9
 	strh	r0, [r7]	@ movhi
-	mov	r0, r0, asl #9
+	and	r0, r3, r0, lsl #9
 	bl	ftl_malloc
-	ldrh	fp, [r5, r8]
-	mov	fp, fp, asl #1
+	ldrh	r10, [r5, r9]
 	str	r0, [r4, #-480]
 	add	r0, r0, #32
-	str	r0, [r4, #-3608]
-	mov	r0, fp
+	str	r0, [r4, #-3604]
+	lsl	r10, r10, #1
+	mov	r0, r10
 	bl	ftl_malloc
 	str	r0, [r4, #-476]
-	mov	r0, fp
+	mov	r0, r10
 	bl	ftl_malloc
-	ldr	fp, [r5, #2416]
-	mov	fp, fp, asl #1
-	str	r0, [r4, #-3544]
-	mov	r0, fp
+	ldr	r10, [r5, #2420]
+	str	r0, [r4, #-3540]
+	lsl	r10, r10, #1
+	mov	r0, r10
 	bl	ftl_malloc
 	str	r0, [r4, #-472]
-	mov	r0, fp
+	mov	r0, r10
 	bl	ftl_malloc
-	movw	fp, #2408
 	str	r0, [r4, #-468]
-	ldrh	r0, [r5, r8]
-	mov	r0, r0, lsr #3
+	movw	r10, #2412
+	ldrh	r0, [r5, r9]
+	lsr	r0, r0, #3
 	add	r0, r0, #4
 	bl	ftl_malloc
-	str	r0, [r4, #-3368]
-	ldrh	r0, [r5, fp]
-	mov	r0, r0, asl #1
+	str	r0, [r5, #32]
+	ldrh	r0, [r5, r10]
+	lsl	r0, r0, #1
 	bl	ftl_malloc
-	str	r0, [r5, #2436]
-	ldrh	r0, [r5, fp]
-	mov	r0, r0, asl #1
+	str	r0, [r5, #2440]
+	ldrh	r0, [r5, r10]
+	lsl	r0, r0, #1
 	bl	ftl_malloc
 	str	r0, [r4, #-464]
-	ldrh	r0, [r5, fp]
-	movw	fp, #2410
-	mov	r0, r0, asl #2
+	ldrh	r0, [r5, r10]
+	movw	r10, #2414
+	lsl	r0, r0, #2
 	bl	ftl_malloc
 	str	r0, [r4, #-460]
-	ldrh	r0, [r5, fp]
-	mov	r0, r0, asl #2
+	ldrh	r0, [r5, r10]
+	lsl	r0, r0, #2
 	bl	ftl_malloc
-	ldrh	r2, [r5, fp]
+	ldrh	r2, [r5, r10]
 	mov	r1, #0
-	mov	r2, r2, asl #2
 	str	r0, [r4, #-456]
+	lsl	r2, r2, #2
 	bl	ftl_memset
-	movw	r3, #2424
-	ldrh	fp, [r5, r3]
-	mov	fp, fp, asl #2
-	mov	r0, fp
+	movw	r3, #2428
+	ldrh	r10, [r5, r3]
+	lsl	r10, r10, #2
+	mov	r0, r10
 	bl	ftl_malloc
 	str	r0, [r4, #-452]
-	mov	r0, fp
+	mov	r0, r10
 	bl	ftl_malloc
-	movw	fp, #2426
 	str	r0, [r4, #-448]
-	ldr	r0, [r5, #2416]
-	mov	r0, r0, asl #2
+	movw	r10, #2430
+	ldr	r0, [r5, #2420]
+	lsl	r0, r0, #2
 	bl	ftl_malloc
 	str	r0, [r4, #-444]
-	ldrh	r0, [r5, fp]
-	mul	r0, r9, r0
-	bl	ftl_malloc
-	ldrh	r3, [r5, fp]
-	str	r0, [r4, #-3380]
 	ldrh	r0, [r5, r10]
+	mul	r0, r8, r0
+	mov	r8, r6
+	add	r6, r6, #56
+	bl	ftl_malloc
+	ldrh	r3, [r5, r10]
+	str	r0, [r4, #-3376]
+	ldrh	r0, [r8], #84
 	mul	r0, r0, r3
 	bl	ftl_malloc
-	ldrh	r3, [r5, r8]
-	movw	r8, #2342
+	ldrh	r3, [r5, r9]
+	movw	r9, #2346
 	str	r0, [r4, #-440]
 	mov	r0, #6
 	mul	r0, r0, r3
 	bl	ftl_malloc
-	movw	r3, #2386
-	ldrh	r3, [r5, r3]
-	add	r3, r3, #31
-	mov	r3, r3, asr #5
-	strh	r3, [r7, #52]!	@ movhi
-	str	r0, [r4, #-3552]
-	ldrh	r0, [r5, r8]
+	movw	r3, #2388
+	str	r0, [r4, #-3548]
+	ldrh	r0, [r5, r3]
+	ldrh	r3, [r5, r9]
+	add	r0, r0, #31
+	asr	r0, r0, #5
+	strh	r0, [r7, #52]!	@ movhi
 	mul	r0, r0, r3
-	mov	r0, r0, asl #2
+	lsl	r0, r0, #2
 	bl	ftl_malloc
 	ldrh	r2, [r7]
-	ldrh	ip, [r5, r8]
 	mov	r3, #1
-	mov	r2, r2, asl #2
+	ldrh	ip, [r5, r9]
+	str	r0, [r5, #2484]
+	lsl	r2, r2, #2
 	mov	r1, r2
-	str	r0, [r5, #2480]
-.L1024:
+.L1025:
 	cmp	r3, ip
-	bcs	.L1125
-	ldr	r0, [r5, #2480]
+	bcc	.L1026
+	add	r6, r6, r3, lsl #2
+	ldr	r3, .L1126+20
+	mov	r2, #0
+	add	r6, r6, #24
+.L1027:
+	cmp	r3, r6
+	bne	.L1028
+	ldr	r3, [r4, #-472]
+	cmp	r3, #0
+	bne	.L1029
+.L1031:
+	ldr	r1, .L1126+24
+	ldr	r0, .L1126+28
+	bl	printk
+	mvn	r0, #0
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L1026:
+	ldr	r0, [r5, #2484]
 	add	r3, r3, #1
 	add	r0, r0, r1
 	add	r1, r1, r2
-	str	r0, [r6, #4]!
-	b	.L1024
-.L1125:
-	ldr	r2, .L1127+16
-	mov	r1, #0
-.L1026:
-	cmp	r3, #8
-	addne	r0, r2, r3, asl #2
-	addne	r3, r3, #1
-	strne	r1, [r0, #28]
-	bne	.L1026
-.L1126:
-	ldr	r2, [r4, #-472]
-	ldr	r3, .L1127
-	cmp	r2, #0
-	bne	.L1028
-.L1030:
-	ldr	r1, .L1127+20
-	ldr	r0, .L1127+24
-	bl	printk
-	mvn	r0, #0
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
+	str	r0, [r8, #4]!
+	b	.L1025
 .L1028:
-	ldr	r2, [r3, #-468]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-452]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-444]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-3380]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-440]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-3552]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r5, #2480]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r3, [r3, #-3544]
+	str	r2, [r6, #4]!
+	b	.L1027
+.L1029:
+	ldr	r3, [r4, #-468]
 	cmp	r3, #0
-	beq	.L1030
-	ldr	r2, [r4, #-2680]
-	ldr	r3, .L1127
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-2672]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-536]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-528]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-3612]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-2688]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-532]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-524]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-520]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r3, [r3, #-516]
+	beq	.L1031
+	ldr	r3, [r4, #-452]
 	cmp	r3, #0
-	beq	.L1030
-	ldr	r2, [r4, #-2696]
-	ldr	r3, .L1127
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-508]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-504]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-2700]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-500]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-496]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-2692]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r2, [r3, #-3608]
-	cmp	r2, #0
-	beq	.L1030
-	ldr	r3, [r3, #-484]
+	beq	.L1031
+	ldr	r3, [r4, #-444]
 	cmp	r3, #0
-	beq	.L1030
-	ldr	r3, .L1127+4
-	ldr	r3, [r3, #2436]
+	beq	.L1031
+	ldr	r3, [r4, #-3376]
 	cmp	r3, #0
-	beq	.L1030
-	ldr	r3, .L1127
+	beq	.L1031
+	ldr	r3, [r4, #-440]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-3548]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r5, #2484]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-3540]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-2680]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-2672]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-536]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-528]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-3608]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-2688]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-532]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-524]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-520]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-516]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-2696]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-508]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-504]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-2700]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-500]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-496]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-2692]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-3604]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, [r4, #-484]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, .L1126+4
+	ldr	r3, [r3, #2440]
+	cmp	r3, #0
+	beq	.L1031
+	ldr	r3, .L1126
 	ldr	r2, [r3, #-464]
 	cmp	r2, #0
-	beq	.L1030
+	beq	.L1031
 	ldr	r2, [r3, #-460]
 	cmp	r2, #0
-	beq	.L1030
+	beq	.L1031
 	ldr	r3, [r3, #-456]
 	cmp	r3, #0
-	beq	.L1030
+	beq	.L1031
 	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1128:
-	.align	2
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
 .L1127:
+	.align	2
+.L1126:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.word	.LANCHOR0+2400
 	.word	.LANCHOR2-488
-	.word	.LANCHOR0+2452
+	.word	33553920
+	.word	.LANCHOR0+2512
 	.word	.LANCHOR3
 	.word	.LC81
 	.fnend
 	.size	FtlMemInit, .-FtlMemInit
 	.align	2
 	.global	FtlBbt2Bitmap
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlBbt2Bitmap, %function
 FtlBbt2Bitmap:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1135
-	stmfd	sp!, {r4, r5, r6, lr}
+	ldr	r3, .L1134
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
-	mov	r4, r0
-	ldrh	r2, [r3]
-	mov	r0, r1
 	mov	r5, r1
+	mov	r4, r0
 	mov	r1, #0
+	mov	r0, r5
 	movw	r6, #65535
-	mov	r2, r2, asl #2
+	ldrh	r2, [r3]
+	lsl	r2, r2, #2
 	bl	ftl_memset
-	add	r3, r4, #1020
-	ldr	ip, .L1135+4
-	add	r3, r3, #2
-	sub	r1, r4, #2
+	ldr	ip, .L1134+4
+	add	r0, r4, #1020
+	sub	r2, r4, #2
+	add	r0, r0, #2
 	mov	r4, #1
-.L1131:
-	ldrh	r2, [r1, #2]!
-	cmp	r2, r6
-	ldmeqfd	sp!, {r4, r5, r6, pc}
-	mov	lr, r2, lsr #5
-	and	r2, r2, #31
-	cmp	r1, r3
-	ldr	r0, [r5, lr, asl #2]
-	orr	r2, r0, r4, asl r2
-	str	r2, [r5, lr, asl #2]
-	ldrh	r2, [ip, #6]
-	add	r2, r2, #1
-	strh	r2, [ip, #6]	@ movhi
-	bne	.L1131
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L1136:
-	.align	2
+.L1130:
+	ldrh	r3, [r2, #2]!
+	cmp	r3, r6
+	popeq	{r4, r5, r6, pc}
+	lsr	lr, r3, #5
+	and	r3, r3, #31
+	cmp	r2, r0
+	ldr	r1, [r5, lr, lsl #2]
+	orr	r3, r1, r4, lsl r3
+	str	r3, [r5, lr, lsl #2]
+	ldrh	r3, [ip, #6]
+	add	r3, r3, #1
+	strh	r3, [ip, #6]	@ movhi
+	bne	.L1130
+	pop	{r4, r5, r6, pc}
 .L1135:
+	.align	2
+.L1134:
 	.word	.LANCHOR2-436
-	.word	.LANCHOR0+2452
+	.word	.LANCHOR0+2456
 	.fnend
 	.size	FtlBbt2Bitmap, .-FtlBbt2Bitmap
 	.align	2
 	.global	FtlBbtMemInit
+	.syntax unified
+	.arm
+	.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, .L1138
-	movw	r3, #2452
+	ldr	r2, .L1137
+	movw	r3, #2456
 	mvn	r1, #0
-	add	r2, r0, r3
-	strh	r1, [r0, r3]	@ movhi
+	add	r0, r2, r3
+	strh	r1, [r2, r3]	@ movhi
 	mov	r3, #0
-	add	r0, r0, #2464
-	strh	r3, [r2, #6]	@ movhi
-	mov	r1, #255
 	mov	r2, #16
+	strh	r3, [r0, #6]	@ movhi
+	mov	r1, #255
+	add	r0, r0, #12
 	b	ftl_memset
-.L1139:
-	.align	2
 .L1138:
+	.align	2
+.L1137:
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlBbtMemInit, .-FtlBbtMemInit
 	.align	2
 	.global	FtlFreeSysBlkQueueInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlFreeSysBlkQueueInit, %function
 FtlFreeSysBlkQueueInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1142
-	mov	r2, #2048
-	stmfd	sp!, {r4, lr}
+	ldr	r1, .L1141
+	movw	r2, #2516
+	push	{r4, lr}
 	.save {r4, lr}
 	mov	r4, #0
+	add	r3, r1, r2
+	strh	r0, [r1, r2]	@ movhi
+	mov	r2, #2048
 	mov	r1, r4
+	add	r0, r3, #8
 	strh	r4, [r3, #2]	@ movhi
 	strh	r4, [r3, #4]	@ movhi
 	strh	r4, [r3, #6]	@ movhi
-	strh	r0, [r3], #8	@ movhi
-	mov	r0, r3
 	bl	ftl_memset
 	mov	r0, r4
-	ldmfd	sp!, {r4, pc}
-.L1143:
-	.align	2
+	pop	{r4, pc}
 .L1142:
-	.word	.LANCHOR0+2512
+	.align	2
+.L1141:
+	.word	.LANCHOR0
 	.fnend
 	.size	FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
 	.align	2
 	.global	ftl_free_no_use_map_blk
+	.syntax unified
+	.arm
+	.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
-	stmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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
 	ldrh	r2, [r0, #10]
@@ -6884,165 +7300,148 @@
 	ldr	r5, [r0, #20]
 	ldr	r7, [r0, #12]
 	ldr	r6, [r0, #24]
-	mov	r2, r2, asl #1
+	lsl	r2, r2, #1
 	mov	r0, r5
 	bl	ftl_memset
 	mov	r2, #0
-.L1145:
+.L1144:
 	ldrh	r1, [r4, #6]
 	uxth	r3, r2
 	cmp	r1, r3
-	bls	.L1165
-	ldr	r0, [r6, r3, asl #2]
+	bhi	.L1148
+	ldr	r2, .L1164
+	movw	r3, #2392
+	mov	r6, #0
+	mov	r8, r6
+	mov	r10, r6
+	ldrh	r2, [r2, r3]
+	ldrh	r3, [r4]
+	lsl	r3, r3, #1
+	strh	r2, [r5, r3]	@ movhi
+	ldrh	r9, [r5]
+.L1149:
+	ldrh	r3, [r4, #10]
+	uxth	r1, r6
+	cmp	r3, r1
+	bhi	.L1153
+	mov	r0, r8
+	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1148:
+	uxth	r3, r2
 	mov	r1, #0
+	ldr	r0, [r6, r3, lsl #2]
 	ubfx	r0, r0, #10, #16
-.L1146:
+.L1145:
 	ldrh	ip, [r4, #10]
 	uxth	r3, r1
 	cmp	ip, r3
-	bls	.L1166
-	mov	r3, r3, asl #1
+	addls	r2, r2, #1
+	bls	.L1144
+.L1147:
+	uxth	r3, r1
 	add	r1, r1, #1
+	lsl	r3, r3, #1
 	ldrh	ip, [r7, r3]
-	rsb	lr, ip, r0
-	cmp	ip, #0
-	clz	lr, lr
-	mov	lr, lr, lsr #5
-	moveq	lr, #0
+	adds	lr, ip, #0
+	movne	lr, #1
+	cmp	r0, ip
+	movne	lr, #0
 	cmp	lr, #0
-	ldrneh	ip, [r5, r3]
+	ldrhne	ip, [r5, r3]
 	addne	ip, ip, #1
-	strneh	ip, [r5, r3]	@ movhi
-	b	.L1146
-.L1166:
-	add	r2, r2, #1
+	strhne	ip, [r5, r3]	@ movhi
 	b	.L1145
-.L1165:
-	ldr	r2, .L1168
-	movw	r3, #2390
-	mov	r8, #0
-	mov	r1, r8
-	mov	fp, r8
-	ldrh	r2, [r2, r3]
-	ldrh	r3, [r4]
-	mov	r3, r3, asl #1
-	strh	r2, [r5, r3]	@ movhi
-	ldrh	r9, [r5]
-.L1150:
-	ldrh	r3, [r4, #10]
-	uxth	r6, r8
-	cmp	r3, r6
-	bls	.L1167
-	mov	r2, r6, asl #1
-	ldrh	r3, [r5, r2]
-	cmp	r9, r3
-	bls	.L1151
-	ldrh	r0, [r7, r2]
-	add	r10, r7, r2
+.L1153:
+	uxth	r3, r6
+	lsl	r3, r3, #1
+	ldrh	r2, [r5, r3]
+	cmp	r9, r2
+	bls	.L1150
+	ldrh	r0, [r7, r3]
+	add	fp, r7, r3
 	cmp	r0, #0
-	bne	.L1152
-	b	.L1153
-.L1151:
-	cmp	r3, #0
-	bne	.L1153
-	ldrh	r0, [r7, r2]
-	add	r10, r7, r2
-	cmp	r0, #0
-	movne	r6, r1
-	beq	.L1153
-	b	.L1155
+	bne	.L1151
 .L1152:
-	cmp	r3, #0
-	movne	r1, r6
-	movne	r9, r3
-	bne	.L1153
-	mov	r9, r3
-.L1155:
+	add	r6, r6, #1
+	b	.L1149
+.L1150:
+	cmp	r2, #0
+	bne	.L1152
+	ldrh	r0, [r7, r3]
+	add	fp, r7, r3
+	cmp	r0, #0
+	beq	.L1152
+.L1154:
 	mov	r1, #1
 	bl	FtlFreeSysBlkQueueIn
-	strh	fp, [r10]	@ movhi
+	strh	r10, [fp]	@ movhi
 	ldrh	r3, [r4, #8]
-	mov	r1, r6
 	sub	r3, r3, #1
 	strh	r3, [r4, #8]	@ movhi
-.L1153:
-	add	r8, r8, #1
-	b	.L1150
-.L1167:
-	mov	r0, r1
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1169:
+	b	.L1152
+.L1151:
+	subs	r9, r2, #0
+	mov	r8, r1
+	beq	.L1154
+	b	.L1152
+.L1165:
 	.align	2
-.L1168:
+.L1164:
 	.word	.LANCHOR0
 	.fnend
 	.size	ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
 	.align	2
 	.global	FtlL2PDataInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlL2PDataInit, %function
 FtlL2PDataInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	mov	r1, #0
-	ldr	r5, .L1175
-	mvn	r6, #0
-	ldr	r4, .L1175+4
-	ldr	r2, [r5, #2416]
-	ldr	r0, [r4, #-468]
-	mov	r2, r2, asl #1
+	ldr	r4, .L1170
+	mvn	r7, #0
+	ldr	r5, .L1170+4
+	ldr	r2, [r4, #2420]
+	add	r6, r4, #2400
+	ldr	r0, [r5, #-468]
+	lsl	r2, r2, #1
 	bl	ftl_memset
-	movw	r3, #2398
-	movw	r2, #2426
-	ldrh	r3, [r5, r3]
-	ldrh	r2, [r5, r2]
+	movw	r2, #2430
+	ldrh	r3, [r6]
+	ldrh	r2, [r4, r2]
 	mov	r1, #255
-	ldr	r0, [r4, #-440]
+	ldr	r0, [r5, #-440]
 	mul	r2, r2, r3
 	bl	ftl_memset
-	ldr	ip, .L1175+8
-	mov	r1, #0
-	mov	r3, r4
-	sub	r7, ip, #28
-	mov	r4, #12
-	mov	r5, r1
-.L1171:
-	ldrh	r2, [ip]
-	add	lr, r1, #1
-	uxth	r1, r1
-	ldr	r0, .L1175
-	cmp	r2, r1
-	bls	.L1174
-	mul	r0, r4, r1
-	ldr	r2, [r3, #-3380]
-	add	r8, r2, r0
-	str	r5, [r8, #4]
-	strh	r6, [r2, r0]	@ movhi
-	ldr	r2, [r3, #-3380]
-	add	r0, r2, r0
-	ldrh	r2, [r7]
-	mul	r2, r1, r2
-	ldr	r1, [r3, #-440]
-	bic	r2, r2, #3
-	add	r2, r1, r2
-	mov	r1, lr
-	str	r2, [r0, #8]
-	b	.L1171
-.L1174:
-	ldr	r2, .L1175+12
+	mov	r2, #0
+	mov	r3, r5
+	mov	r1, r6
+	add	ip, r6, #30
+	mov	r5, #12
+	mov	r6, r2
+.L1167:
+	ldrh	r8, [ip]
+	uxth	r0, r2
+	add	lr, r2, #1
+	cmp	r8, r0
+	bhi	.L1168
+	ldr	r2, .L1170+8
 	mvn	r1, #0
 	strh	r1, [r2, #2]	@ movhi
 	strh	r1, [r2]	@ movhi
-	ldr	r1, [r0, #2416]
+	ldr	r1, [r4, #2420]
 	strh	r1, [r2, #10]	@ movhi
-	ldr	r1, .L1175+16
+	ldr	r1, .L1170+12
 	strh	r1, [r2, #4]	@ movhi
 	ldrh	r1, [r2, #44]
 	strh	r1, [r2, #8]	@ movhi
-	movw	r1, #2424
-	ldrh	r1, [r0, r1]
+	movw	r1, #2428
+	ldrh	r1, [r4, r1]
 	strh	r1, [r2, #6]	@ movhi
 	ldr	r2, [r3, #-472]
 	str	r2, [r3, #-420]
@@ -7052,236 +7451,249 @@
 	str	r2, [r3, #-412]
 	ldr	r2, [r3, #-452]
 	str	r2, [r3, #-408]
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L1176:
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L1168:
+	uxth	r2, r2
+	ldr	r8, [r3, #-3376]
+	mul	r0, r5, r2
+	add	r9, r8, r0
+	str	r6, [r9, #4]
+	strh	r7, [r8, r0]	@ movhi
+	ldr	r8, [r3, #-3376]
+	add	r0, r8, r0
+	ldrh	r8, [r1]
+	mul	r2, r2, r8
+	ldr	r8, [r3, #-440]
+	bic	r2, r2, #3
+	add	r2, r8, r2
+	str	r2, [r0, #8]
+	mov	r2, lr
+	b	.L1167
+.L1171:
 	.align	2
-.L1175:
+.L1170:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2426
 	.word	.LANCHOR2-432
 	.word	-3902
 	.fnend
 	.size	FtlL2PDataInit, .-FtlL2PDataInit
 	.align	2
 	.global	FtlVariablesInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlVariablesInit, %function
 FtlVariablesInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
 	mvn	r3, #0
-	ldr	r5, .L1179
+	ldr	r5, .L1174
 	mov	r4, #0
-	ldr	r6, .L1179+4
 	mov	r1, r4
+	movw	r7, #2334
+	ldr	r6, .L1174+4
 	sub	r2, r5, #380
-	movw	r7, #2330
 	str	r3, [r5, #-368]
 	strh	r3, [r2]	@ movhi
-	movw	r3, #2434
+	movw	r3, #2438
 	strh	r4, [r6, r3]	@ movhi
-	movw	r3, #2408
+	movw	r3, #2412
 	ldrh	r2, [r6, r3]
-	ldr	r0, [r6, #2436]
+	ldr	r0, [r6, #2440]
 	str	r4, [r5, #-384]
-	mov	r2, r2, asl #1
 	str	r4, [r5, #-376]
+	lsl	r2, r2, #1
 	str	r4, [r5, #-372]
-	str	r4, [r6, #2244]
+	str	r4, [r6, #2248]
 	bl	ftl_memset
 	ldrh	r2, [r6, r7]
 	mov	r1, r4
-	ldr	r0, [r5, #-3608]
-	mov	r2, r2, asl #1
+	ldr	r0, [r5, #-3604]
+	lsl	r2, r2, #1
 	bl	ftl_memset
 	ldrh	r2, [r6, r7]
 	mov	r1, r4
 	ldr	r0, [r5, #-484]
-	mov	r2, r2, asl #1
+	lsl	r2, r2, #1
 	bl	ftl_memset
+	sub	r0, r5, #3584
 	mov	r1, r4
-	sub	r0, r5, #3600
 	mov	r2, #48
+	sub	r0, r0, #12
 	bl	ftl_memset
-	mov	r1, r4
-	mov	r2, #512
 	sub	r0, r5, #3232
+	mov	r2, #512
+	mov	r1, r4
+	sub	r0, r0, #4
 	bl	ftl_memset
 	bl	FtlGcBufInit
 	bl	FtlL2PDataInit
 	mov	r0, r4
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L1180:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L1175:
 	.align	2
-.L1179:
+.L1174:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlVariablesInit, .-FtlVariablesInit
 	.align	2
 	.global	SupperBlkListInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	SupperBlkListInit, %function
 SupperBlkListInit:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 24
+	@ args = 0, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	movw	r3, #2330
-	ldr	r10, .L1193
+	movw	r3, #2334
+	ldr	r6, .L1187
+	mov	r4, #0
 	mov	r2, #6
-	ldr	r6, .L1193+4
+	.pad #20
+	sub	sp, sp, #20
+	ldr	r5, .L1187+4
 	mov	r1, #0
-	.pad #28
-	sub	sp, sp, #28
-	mov	r7, #0
-	ldrh	r3, [r10, r3]
-	mov	r4, r7
-	ldr	r0, [r6, #-3552]
-	mov	r8, r7
-	mov	r9, r7
-	mov	r5, r6
+	ldrh	r3, [r6, r3]
+	mov	r9, r4
+	mov	r10, r4
+	ldr	r0, [r5, #-3548]
+	sub	r7, r5, #3520
 	mul	r2, r2, r3
 	bl	ftl_memset
-	sub	r3, r6, #3520
-	sub	r1, r6, #3536
-	mov	fp, r6
-	strh	r7, [r3, #-8]	@ movhi
-	sub	r3, r6, #568
-	str	r7, [r6, #-3532]
-	str	r7, [r6, #-3548]
-	str	r7, [r6, #-3540]
-	strh	r7, [r1]	@ movhi
-	strh	r7, [r3]	@ movhi
-	str	r10, [sp, #8]
-	str	r1, [sp, #12]
-.L1182:
-	ldr	r3, .L1193+8
-	uxth	r7, r4
-	sxth	r10, r7
-	ldrh	r2, [r3]
-	cmp	r10, r2
-	bge	.L1189
-	sub	r3, r3, #8
-	ldr	r2, .L1193+12
-	mov	ip, r7
+	sub	r3, r5, #568
+	str	r4, [r5, #-3528]
+	str	r4, [r5, #-3544]
+	str	r4, [r5, #-3536]
+	strh	r4, [r7, #-12]	@ movhi
+	strh	r4, [r7, #-4]	@ movhi
+	strh	r4, [r3]	@ movhi
+	str	r6, [sp]
+.L1177:
+	ldr	r3, .L1187+8
+	sxth	r8, r4
 	ldrh	r3, [r3]
-	str	r3, [sp]
-	ldrh	r3, [r2]
-	mov	r2, #0
-	mov	r6, r2
-	str	r3, [sp, #4]
-.L1190:
+	cmp	r8, r3
+	bge	.L1184
+	ldr	r3, .L1187+12
+	uxth	r1, r4
+	mov	fp, #0
+	mov	r6, fp
+	str	r1, [sp, #4]
+	ldrh	r2, [r3]
+	add	r3, r3, #66
+	ldrh	r3, [r3]
+	b	.L1185
+.L1179:
+	str	r3, [sp, #12]
+	add	fp, fp, #1
 	ldr	r3, [sp]
-	sxth	r1, r2
-	cmp	r1, r3
-	bge	.L1192
-	ldr	r3, [sp, #8]
-	str	r2, [sp, #20]
-	add	r1, r3, r1
-	str	ip, [sp, #16]
-	ldrb	r0, [r1, #2348]	@ zero_extendqisi2
-	mov	r1, ip
+	str	r2, [sp, #8]
+	add	r0, r3, r1
+	ldr	r1, [sp, #4]
+	ldrb	r0, [r0, #2350]	@ zero_extendqisi2
 	bl	V2P_block
 	bl	FtlBbmIsBadBlock
+	ldr	r3, [sp, #12]
 	cmp	r0, #0
-	ldr	r2, [sp, #20]
-	ldr	ip, [sp, #16]
-	ldreq	r3, [sp, #4]
-	add	r2, r2, #1
+	ldr	r2, [sp, #8]
 	addeq	r6, r3, r6
-	uxtheq	r6, r6
-	b	.L1190
-.L1192:
+	sxtheq	r6, r6
+.L1185:
+	sxth	r1, fp
+	cmp	r1, r2
+	blt	.L1179
 	cmp	r6, #0
-	beq	.L1185
-	sxth	r1, r6
+	lsl	fp, r8, #1
+	ldreq	r3, [r5, #-3540]
+	mvneq	r2, #0
+	strheq	r2, [r3, fp]	@ movhi
+	beq	.L1181
+	mov	r1, r6
 	mov	r0, #32768
 	bl	__aeabi_idiv
-	uxth	r6, r0
-	b	.L1186
-.L1185:
-	sxth	r7, r7
-	ldr	r2, [r5, #-3544]
-	mvn	r1, #0
-	mov	r7, r7, asl #1
-	strh	r1, [r2, r7]	@ movhi
-.L1186:
-	mov	r1, r10, asl #1
-	ldr	r2, [r5, #-3552]
-	add	r0, r1, r10
-	add	r2, r2, r0, asl #1
-	strh	r6, [r2, #4]	@ movhi
-	ldr	r2, .L1193+16
-	ldrh	r0, [r2]
-	cmp	r10, r0
-	beq	.L1187
-	ldrh	r0, [r2, #48]
-	cmp	r10, r0
-	beq	.L1187
-	ldrh	r2, [r2, #96]
-	cmp	r10, r2
-	beq	.L1187
-	ldr	r3, [fp, #-3544]
+	sxth	r6, r0
+.L1181:
+	ldr	r2, [r5, #-3548]
+	add	r3, fp, r8
+	add	r3, r2, r3, lsl #1
+	strh	r6, [r3, #4]	@ movhi
+	ldrh	r3, [r7]
+	cmp	r8, r3
+	beq	.L1182
+	ldr	r3, .L1187+16
+	ldrh	r3, [r3]
+	cmp	r8, r3
+	beq	.L1182
+	ldr	r3, .L1187+20
+	ldrh	r3, [r3]
+	cmp	r8, r3
+	beq	.L1182
+	ldr	r3, [r5, #-3540]
 	uxth	r0, r4
-	ldrh	r3, [r3, r1]
+	ldrh	r3, [r3, fp]
 	cmp	r3, #0
-	bne	.L1188
-	add	r8, r8, #1
-	uxth	r8, r8
-	bl	INSERT_FREE_LIST
-	b	.L1187
-.L1188:
+	bne	.L1183
 	add	r9, r9, #1
 	uxth	r9, r9
-	bl	INSERT_DATA_LIST
-.L1187:
+	bl	INSERT_FREE_LIST
+.L1182:
 	add	r4, r4, #1
+	b	.L1177
+.L1183:
+	add	r10, r10, #1
+	uxth	r10, r10
+	bl	INSERT_DATA_LIST
 	b	.L1182
-.L1189:
-	ldr	r3, [sp, #12]
+.L1184:
 	mov	r0, #0
-	strh	r9, [r3]	@ movhi
-	ldr	r3, .L1193+20
-	strh	r8, [r3, #-8]	@ movhi
-	add	sp, sp, #28
+	strh	r10, [r7, #-12]	@ movhi
+	strh	r9, [r7, #-4]	@ movhi
+	add	sp, sp, #20
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1194:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1188:
 	.align	2
-.L1193:
+.L1187:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2328
-	.word	.LANCHOR0+2388
-	.word	.LANCHOR2-3524
-	.word	.LANCHOR2-3520
+	.word	.LANCHOR0+2332
+	.word	.LANCHOR0+2324
+	.word	.LANCHOR2-3472
+	.word	.LANCHOR2-3424
 	.fnend
 	.size	SupperBlkListInit, .-SupperBlkListInit
 	.align	2
 	.global	FtlGcPageVarInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcPageVarInit, %function
 FtlGcPageVarInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, lr}
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
 	mov	r3, #0
-	ldr	r4, .L1197
-	movw	r5, #2392
-	ldr	r6, .L1197+4
+	ldr	r4, .L1191
+	movw	r5, #2394
 	mov	r1, #255
+	ldr	r6, .L1191+4
 	sub	r2, r4, #2672
 	ldr	r0, [r4, #-2680]
 	strh	r3, [r2, #-4]	@ movhi
 	sub	r2, r4, #2656
 	strh	r3, [r2, #-12]	@ movhi
 	ldrh	r2, [r6, r5]
-	mov	r2, r2, asl #1
+	lsl	r2, r2, #1
 	bl	ftl_memset
 	ldrh	r3, [r6, r5]
 	mov	r2, #12
@@ -7289,17 +7701,20 @@
 	mov	r1, #255
 	mul	r2, r2, r3
 	bl	ftl_memset
-	ldmfd	sp!, {r4, r5, r6, lr}
+	pop	{r4, r5, r6, lr}
 	b	FtlGcBufInit
-.L1198:
+.L1192:
 	.align	2
-.L1197:
+.L1191:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlGcPageVarInit, .-FtlGcPageVarInit
 	.align	2
 	.global	ftl_memcpy
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_memcpy, %function
 ftl_memcpy:
 	.fnstart
@@ -7311,158 +7726,155 @@
 	.size	ftl_memcpy, .-ftl_memcpy
 	.align	2
 	.global	FlashReadIdbData
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReadIdbData, %function
 FlashReadIdbData:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, lr}
-	.save {r3, lr}
+	push	{r4, lr}
+	.save {r4, lr}
 	mov	r2, #2048
-	ldr	r1, .L1202
+	ldr	r1, .L1196
 	bl	ftl_memcpy
 	mov	r0, #0
-	ldmfd	sp!, {r3, pc}
-.L1203:
+	pop	{r4, pc}
+.L1197:
 	.align	2
-.L1202:
+.L1196:
 	.word	.LANCHOR2-364
 	.fnend
 	.size	FlashReadIdbData, .-FlashReadIdbData
 	.align	2
 	.global	FlashLoadPhyInfoInRam
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashLoadPhyInfoInRam, %function
 FlashLoadPhyInfoInRam:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	mov	r4, #0
-	ldr	r8, .L1217
-.L1208:
-	mov	r7, r4, asl #5
-	ldr	r1, .L1217+4
-	add	r0, r7, #1
-	ldrb	r2, [r8, r4, asl #5]	@ zero_extendqisi2
-	add	r0, r8, r0
-	ldr	r6, .L1217+8
+	ldr	r5, .L1207
+	ldr	r9, .L1207+4
+	add	r6, r5, #504
+.L1201:
+	lsl	r8, r4, #5
+	ldrb	r2, [r6, r4, lsl #5]	@ zero_extendqisi2
+	mov	r1, r9
+	add	r0, r8, #1
+	add	r0, r6, r0
 	bl	FlashMemCmp8
-	add	r9, r6, #508
-	subs	r5, r0, #0
-	bne	.L1205
-	adds	r9, r9, r7
-	beq	.L1211
-	add	r4, r6, r7
-	mov	r3, r5
-	ldr	r1, .L1217+12
-	ldrb	r2, [r4, #530]	@ zero_extendqisi2
-	b	.L1210
-.L1205:
-	add	r4, r4, #1
-	cmp	r4, #86
-	bne	.L1208
-	b	.L1211
-.L1216:
+	subs	r7, r0, #0
+	bne	.L1199
+	add	r5, r5, r8
+	ldr	r2, .L1207+8
+	ldrb	r0, [r5, #526]	@ zero_extendqisi2
+	add	r6, r6, r8
+	mov	r3, r7
+	mov	r1, r2
+.L1200:
+	ldrb	ip, [r2, r3, lsl #5]	@ zero_extendqisi2
+	cmp	ip, r0
+	beq	.L1203
 	add	r3, r3, #1
 	cmp	r3, #4
-	beq	.L1209
-.L1210:
-	ldrb	r0, [r1, r3, asl #5]	@ zero_extendqisi2
-	cmp	r0, r2
-	bne	.L1216
-.L1209:
-	ldr	r4, .L1217+16
+	bne	.L1200
+.L1203:
+	ldr	r4, .L1207+12
+	add	r1, r1, r3, lsl #5
 	mov	r2, #32
-	ldr	r1, .L1217+12
-	ldr	r0, .L1217+20
-	add	r1, r1, r3, asl #5
+	ldr	r0, .L1207+16
 	bl	ftl_memcpy
-	mov	r0, r4
-	mov	r1, r9
 	mov	r2, #32
+	mov	r1, r6
+	mov	r0, r4
 	bl	ftl_memcpy
 	ldrh	r0, [r4, #10]
 	bl	FlashBlockAlignInit
-	b	.L1206
-.L1211:
-	mvn	r5, #0
-.L1206:
-	mov	r0, r5
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
-.L1218:
+	b	.L1198
+.L1199:
+	add	r4, r4, #1
+	cmp	r4, #86
+	bne	.L1201
+	mvn	r7, #0
+.L1198:
+	mov	r0, r7
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L1208:
 	.align	2
-.L1217:
-	.word	.LANCHOR1+508
-	.word	.LANCHOR0+2068
+.L1207:
 	.word	.LANCHOR1
-	.word	.LANCHOR1+3260
-	.word	.LANCHOR1+472
-	.word	.LANCHOR0+48
+	.word	.LANCHOR0+2072
+	.word	.LANCHOR1+3256
+	.word	.LANCHOR1+468
+	.word	.LANCHOR0+52
 	.fnend
 	.size	FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam
 	.align	2
 	.global	NandcCopy1KB
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcCopy1KB, %function
 NandcCopy1KB:
 	.fnstart
 	@ args = 4, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	cmp	r1, #1
-	stmfd	sp!, {r4, r5, r6, lr}
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
 	mov	r4, r2
 	add	r2, r0, #4096
-	ldr	r5, [sp, #16]
 	add	r6, r0, #512
-	add	r2, r2, r4, asl #9
-	bne	.L1220
+	add	r0, r2, r4, lsl #9
+	ldr	r5, [sp, #16]
+	bne	.L1210
 	cmp	r3, #0
-	beq	.L1221
-	mov	r0, r2
+	beq	.L1211
+	mov	r2, #1024
 	mov	r1, r3
-	mov	r2, #1024
 	bl	ftl_memcpy
-.L1221:
+.L1211:
 	cmp	r5, #0
-	ldmeqfd	sp!, {r4, r5, r6, pc}
-	ldrb	r3, [r5, #2]	@ zero_extendqisi2
-	mov	r4, r4, lsr #1
-	ldrb	r2, [r5, #1]	@ zero_extendqisi2
-	add	r4, r4, r4, asl #1
-	mov	r3, r3, asl #16
-	orr	r2, r3, r2, asl #8
-	ldrb	r3, [r5]	@ zero_extendqisi2
-	orr	r3, r2, r3
-	ldrb	r2, [r5, #3]	@ zero_extendqisi2
-	orr	r3, r3, r2, asl #24
-	str	r3, [r6, r4, asl #4]
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L1220:
+	lsrne	r4, r4, #1
+	ldrne	r3, [r5]	@ unaligned
+	addne	r4, r4, r4, lsl #1
+	strne	r3, [r6, r4, lsl #4]
+	pop	{r4, r5, r6, pc}
+.L1210:
 	cmp	r3, #0
-	beq	.L1224
-	mov	r1, r2
-	mov	r0, r3
+	beq	.L1214
+	mov	r1, r0
 	mov	r2, #1024
+	mov	r0, r3
 	bl	ftl_memcpy
-.L1224:
+.L1214:
 	cmp	r5, #0
-	ldmeqfd	sp!, {r4, r5, r6, pc}
-	mov	r4, r4, lsr #1
-	add	r4, r4, r4, asl #1
-	ldr	r3, [r6, r4, asl #4]
-	mov	r2, r3, lsr #8
+	popeq	{r4, r5, r6, pc}
+	lsr	r4, r4, #1
+	add	r4, r4, r4, lsl #1
+	ldr	r3, [r6, r4, lsl #4]
 	strb	r3, [r5]
+	lsr	r2, r3, #8
 	strb	r2, [r5, #1]
-	mov	r2, r3, lsr #16
-	mov	r3, r3, lsr #24
+	lsr	r2, r3, #16
+	lsr	r3, r3, #24
 	strb	r2, [r5, #2]
 	strb	r3, [r5, #3]
-	ldmfd	sp!, {r4, r5, r6, pc}
+	pop	{r4, r5, r6, pc}
 	.fnend
 	.size	NandcCopy1KB, .-NandcCopy1KB
 	.align	2
 	.global	ftl_memcpy32
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_memcpy32, %function
 ftl_memcpy32:
 	.fnstart
@@ -7470,18 +7882,22 @@
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
 	mov	r3, #0
-.L1237:
+.L1227:
 	cmp	r3, r2
-	ldrne	ip, [r1, r3, asl #2]
-	strne	ip, [r0, r3, asl #2]
-	addne	r3, r3, #1
-	bne	.L1237
-.L1239:
+	bne	.L1228
 	bx	lr
+.L1228:
+	ldr	ip, [r1, r3, lsl #2]
+	str	ip, [r0, r3, lsl #2]
+	add	r3, r3, #1
+	b	.L1227
 	.fnend
 	.size	ftl_memcpy32, .-ftl_memcpy32
 	.align	2
 	.global	ftl_memcmp
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_memcmp, %function
 ftl_memcmp:
 	.fnstart
@@ -7493,52 +7909,60 @@
 	.size	ftl_memcmp, .-ftl_memcmp
 	.align	2
 	.global	timer_get_time
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	timer_get_time, %function
 timer_get_time:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L1242
+	ldr	r3, .L1231
 	ldr	r0, [r3]
 	b	jiffies_to_msecs
-.L1243:
+.L1232:
 	.align	2
-.L1242:
+.L1231:
 	.word	jiffies
 	.fnend
 	.size	timer_get_time, .-timer_get_time
 	.align	2
 	.global	FlashSramLoadStore
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashSramLoadStore, %function
 FlashSramLoadStore:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	ip, .L1248
+	ldr	ip, .L1238
 	cmp	r2, #0
 	moveq	r2, r3
 	ldr	ip, [ip, #1684]
 	add	ip, ip, #4096
-	add	r1, ip, r1
-	beq	.L1247
-	str	lr, [sp, #-4]!
+	add	ip, ip, r1
+	moveq	r1, ip
+	strne	lr, [sp, #-4]!
 	.save {lr}
-	mov	lr, r0
-	mov	r0, r1
-	mov	r1, lr
-	ldr	lr, [sp], #4
-	mov	r2, r3
-.L1247:
+	movne	r1, r0
+	ldrne	lr, [sp], #4
+	movne	r2, r3
+	movne	r0, ip
+.L1237:
 	b	ftl_memcpy
-.L1249:
+.L1239:
 	.align	2
-.L1248:
+.L1238:
 	.word	.LANCHOR2
 	.fnend
 	.size	FlashSramLoadStore, .-FlashSramLoadStore
 	.align	2
 	.global	FlashCs123Init
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashCs123Init, %function
 FlashCs123Init:
 	.fnstart
@@ -7549,7 +7973,51 @@
 	.fnend
 	.size	FlashCs123Init, .-FlashCs123Init
 	.align	2
+	.global	ftl_dma32_malloc
+	.syntax unified
+	.arm
+	.fpu softvfp
+	.type	ftl_dma32_malloc, %function
+ftl_dma32_malloc:
+	.fnstart
+	@ args = 0, pretend = 0, frame = 0
+	@ frame_needed = 0, uses_anonymous_args = 0
+	cmp	r0, #8192
+	ble	.L1242
+	b	ftl_malloc
+.L1242:
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	add	r4, r0, #63
+	ldr	r5, .L1246
+	bic	r4, r4, #63
+	ldr	r3, [r5, #1688]
+	cmp	r4, r3
+	ble	.L1243
+	mov	r0, #16384
+	bl	ftl_malloc
+	mov	r3, #16384
+	str	r0, [r5, #1692]
+	str	r3, [r5, #1688]
+.L1243:
+	ldr	r3, [r5, #1688]
+	ldr	r0, [r5, #1692]
+	sub	r3, r3, r4
+	add	r4, r0, r4
+	str	r3, [r5, #1688]
+	str	r4, [r5, #1692]
+	pop	{r4, r5, r6, pc}
+.L1247:
+	.align	2
+.L1246:
+	.word	.LANCHOR2
+	.fnend
+	.size	ftl_dma32_malloc, .-ftl_dma32_malloc
+	.align	2
 	.global	rk_nand_suspend
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_nand_suspend, %function
 rk_nand_suspend:
 	.fnstart
@@ -7561,6 +8029,9 @@
 	.size	rk_nand_suspend, .-rk_nand_suspend
 	.align	2
 	.global	rk_nand_resume
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_nand_resume, %function
 rk_nand_resume:
 	.fnstart
@@ -7572,23 +8043,29 @@
 	.size	rk_nand_resume, .-rk_nand_resume
 	.align	2
 	.global	rk_ftl_get_capacity
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_ftl_get_capacity, %function
 rk_ftl_get_capacity:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L1254
-	ldr	r0, [r3, #2428]
+	ldr	r3, .L1251
+	ldr	r0, [r3, #2432]
 	bx	lr
-.L1255:
+.L1252:
 	.align	2
-.L1254:
+.L1251:
 	.word	.LANCHOR0
 	.fnend
 	.size	rk_ftl_get_capacity, .-rk_ftl_get_capacity
 	.align	2
 	.global	rk_nandc_get_irq_status
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_nandc_get_irq_status, %function
 rk_nandc_get_irq_status:
 	.fnstart
@@ -7601,6 +8078,9 @@
 	.size	rk_nandc_get_irq_status, .-rk_nandc_get_irq_status
 	.align	2
 	.global	rknand_proc_ftlread
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rknand_proc_ftlread, %function
 rknand_proc_ftlread:
 	.fnstart
@@ -7612,6 +8092,9 @@
 	.size	rknand_proc_ftlread, .-rknand_proc_ftlread
 	.align	2
 	.global	ReadFlashInfo
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ReadFlashInfo, %function
 ReadFlashInfo:
 	.fnstart
@@ -7623,266 +8106,275 @@
 	.size	ReadFlashInfo, .-ReadFlashInfo
 	.align	2
 	.global	rknand_print_hex
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rknand_print_hex, %function
 rknand_print_hex:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, lr}
+	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	mov	r5, #0
-	mov	r9, r0
+	ldr	r7, .L1266
+	mov	r10, r0
 	mov	r6, r1
-	mov	r7, r2
-	mov	r8, r3
+	mov	r8, r2
+	ldr	fp, .L1266+4
+	mov	r9, r3
 	mov	r4, r5
-.L1260:
-	cmp	r4, r8
-	beq	.L1269
+.L1257:
+	cmp	r4, r9
+	bne	.L1263
+	ldr	r1, .L1266+4
+	ldr	r0, .L1266+8
+	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	b	printk
+.L1263:
 	cmp	r5, #0
-	bne	.L1261
-	ldr	r0, .L1270
-	mov	r1, r9
-	mov	r2, r6
+	bne	.L1258
 	mov	r3, r4
+	mov	r2, r6
+	mov	r1, r10
+	ldr	r0, .L1266+12
 	bl	printk
-.L1261:
-	cmp	r7, #4
-	ldreq	r0, .L1270+4
-	ldreq	r1, [r6, r4, asl #2]
-	beq	.L1268
-	cmp	r7, #2
-	moveq	r3, r4, asl #1
-	ldreq	r0, .L1270+4
-	ldreqsh	r1, [r6, r3]
-	ldrne	r0, .L1270+4
-	ldrneb	r1, [r6, r4]	@ zero_extendqisi2
-.L1268:
+.L1258:
+	cmp	r8, #4
+	ldreq	r1, [r6, r4, lsl #2]
+	beq	.L1265
+	cmp	r8, #2
+	lsleq	r3, r4, #1
+	ldrbne	r1, [r6, r4]	@ zero_extendqisi2
+	ldrsheq	r1, [r6, r3]
+.L1265:
+	mov	r0, r7
 	add	r5, r5, #1
 	bl	printk
 	cmp	r5, #15
-	bls	.L1265
-	ldr	r0, .L1270+8
+	bls	.L1262
 	mov	r5, #0
-	ldr	r1, .L1270+12
+	mov	r1, fp
+	ldr	r0, .L1266+8
 	bl	printk
-.L1265:
+.L1262:
 	add	r4, r4, #1
-	b	.L1260
-.L1269:
-	ldr	r0, .L1270+8
-	ldr	r1, .L1270+12
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
-	b	printk
-.L1271:
+	b	.L1257
+.L1267:
 	.align	2
-.L1270:
-	.word	.LC82
+.L1266:
 	.word	.LC83
-	.word	.LC76
 	.word	.LC84
+	.word	.LC77
+	.word	.LC82
 	.fnend
 	.size	rknand_print_hex, .-rknand_print_hex
 	.align	2
 	.global	HynixGetReadRetryDefault
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	HynixGetReadRetryDefault, %function
 HynixGetReadRetryDefault:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 40
+	@ args = 0, pretend = 0, frame = 56
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	cmp	r0, #2
-	ldr	r7, .L1381
 	mvn	r3, #83
+	ldr	r7, .L1384
+	cmp	r0, #2
 	mvn	r1, #82
 	mvn	r2, #81
-	.pad #44
-	sub	sp, sp, #44
+	.pad #60
+	sub	sp, sp, #60
 	mov	r4, r0
-	strb	r3, [r7, #1214]
-	mvn	r3, #80
-	strb	r0, [r7, #1210]
-	strb	r1, [r7, #1215]
-	strb	r2, [r7, #1216]
-	strb	r3, [r7, #1217]
-	bne	.L1273
-	mvn	r3, #88
-	strb	r3, [r7, #1214]
-	ldr	r3, .L1381+4
-	mvn	r2, #8
-	mov	r5, #7
-	strb	r2, [r3, #3405]
-	b	.L1334
-.L1273:
-	cmp	r0, #3
-	bne	.L1275
-	mvn	r3, #79
-	strb	r3, [r7, #1214]
-	mvn	r3, #78
-	strb	r3, [r7, #1215]
-	mvn	r3, #77
-	strb	r3, [r7, #1216]
-	mvn	r3, #76
-	strb	r3, [r7, #1217]
-	mvn	r3, #75
-	strb	r3, [r7, #1218]
-	mvn	r3, #74
-	strb	r3, [r7, #1219]
-	mvn	r3, #73
 	strb	r3, [r7, #1220]
-	mvn	r3, #72
-	b	.L1375
-.L1275:
-	cmp	r0, #4
-	bne	.L1276
-	mvn	r0, #51
-	strb	r1, [r7, #1219]
-	strb	r0, [r7, #1214]
-	mvn	r0, #64
-	strb	r2, [r7, #1220]
-	strb	r0, [r7, #1215]
-	mvn	r0, #85
+	mvn	r3, #80
 	strb	r0, [r7, #1216]
-	mvn	r0, #84
-	strb	r0, [r7, #1217]
-	mvn	r0, #50
-	strb	r0, [r7, #1218]
-.L1375:
-	mov	r5, #8
+	strb	r1, [r7, #1221]
+	strb	r2, [r7, #1222]
+	strb	r3, [r7, #1223]
+	bne	.L1269
+	mvn	r3, #88
+	mov	r5, #7
+	strb	r3, [r7, #1220]
+	mvn	r2, #8
+	ldr	r3, .L1384+4
+	strb	r2, [r3, #3401]
+.L1334:
+	mov	r6, #4
+	b	.L1270
+.L1269:
+	cmp	r0, #3
+	bne	.L1271
+	mvn	r3, #79
+	strb	r3, [r7, #1220]
+	mvn	r3, #78
 	strb	r3, [r7, #1221]
+	mvn	r3, #77
+	strb	r3, [r7, #1222]
+	mvn	r3, #76
+	strb	r3, [r7, #1223]
+	mvn	r3, #75
+	strb	r3, [r7, #1224]
+	mvn	r3, #74
+	strb	r3, [r7, #1225]
+	mvn	r3, #73
+	strb	r3, [r7, #1226]
+	mvn	r3, #72
+.L1379:
+	mov	r5, #8
+	strb	r3, [r7, #1227]
 	mov	r6, r5
-	b	.L1274
-.L1276:
+.L1270:
+	sub	r3, r4, #1
+	cmp	r3, #1
+	bhi	.L1276
+	ldr	fp, .L1384+8
+	mov	r10, #0
+	ldr	r2, .L1384+12
+.L1277:
+	ldrb	r1, [r7, #2234]	@ zero_extendqisi2
+	uxtb	r3, r10
+	cmp	r1, r3
+	bhi	.L1283
+.L1284:
+	ldr	r3, .L1384
+	strb	r6, [r3, #1217]
+	strb	r5, [r3, #1218]
+	add	sp, sp, #60
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1271:
+	cmp	r0, #4
+	bne	.L1272
+	mvn	r0, #51
+	strb	r1, [r7, #1225]
+	strb	r0, [r7, #1220]
+	mvn	r0, #64
+	strb	r0, [r7, #1221]
+	mvn	r0, #85
+	strb	r0, [r7, #1222]
+	mvn	r0, #84
+	strb	r0, [r7, #1223]
+	mvn	r0, #50
+	strb	r0, [r7, #1224]
+	strb	r2, [r7, #1226]
+	b	.L1379
+.L1272:
 	cmp	r0, #5
-	bne	.L1277
+	bne	.L1273
 	mov	r3, #56
 	mov	r5, #8
-	strb	r3, [r7, #1214]
+	strb	r3, [r7, #1220]
 	mov	r3, #57
-	strb	r3, [r7, #1215]
+	strb	r3, [r7, #1221]
 	mov	r3, #58
-	strb	r3, [r7, #1216]
+	strb	r3, [r7, #1222]
 	mov	r3, #59
-	strb	r3, [r7, #1217]
+	strb	r3, [r7, #1223]
 	b	.L1334
-.L1277:
+.L1273:
 	cmp	r0, #6
-	bne	.L1278
+	bne	.L1274
 	mov	r3, #14
 	mov	r5, #12
-	strb	r3, [r7, #1214]
+	strb	r3, [r7, #1220]
 	mov	r3, #15
-	strb	r3, [r7, #1215]
+	strb	r3, [r7, #1221]
 	mov	r3, #16
-	strb	r3, [r7, #1216]
+	strb	r3, [r7, #1222]
 	mov	r3, #17
-	strb	r3, [r7, #1217]
+	strb	r3, [r7, #1223]
 	b	.L1334
-.L1278:
+.L1274:
 	cmp	r0, #7
-	bne	.L1279
+	bne	.L1275
 	mvn	r3, #79
 	mov	r5, #12
-	strb	r3, [r7, #1214]
-	mov	r6, #10
-	mvn	r3, #78
-	strb	r3, [r7, #1215]
-	mvn	r3, #77
-	strb	r3, [r7, #1216]
-	mvn	r3, #76
-	strb	r3, [r7, #1217]
-	mvn	r3, #75
-	strb	r3, [r7, #1218]
-	mvn	r3, #74
-	strb	r3, [r7, #1219]
-	mvn	r3, #73
 	strb	r3, [r7, #1220]
-	mvn	r3, #72
+	mvn	r3, #78
 	strb	r3, [r7, #1221]
-	mvn	r3, #43
+	mvn	r3, #77
 	strb	r3, [r7, #1222]
-	mvn	r3, #42
+	mvn	r3, #76
 	strb	r3, [r7, #1223]
-	b	.L1274
-.L1279:
+	mvn	r3, #75
+	strb	r3, [r7, #1224]
+	mvn	r3, #74
+	strb	r3, [r7, #1225]
+	mvn	r3, #73
+	strb	r3, [r7, #1226]
+	mvn	r3, #72
+	strb	r3, [r7, #1227]
+	mvn	r3, #43
+	strb	r3, [r7, #1228]
+	mvn	r3, #42
+	strb	r3, [r7, #1229]
+	mov	r6, #10
+	b	.L1270
+.L1275:
 	cmp	r0, #8
 	mov	r5, #7
 	bne	.L1334
 	mov	r3, #6
-	strb	r5, [r7, #1215]
-	strb	r3, [r7, #1214]
-	mov	r5, #50
+	strb	r5, [r7, #1221]
+	strb	r3, [r7, #1220]
 	mov	r3, #9
-	strb	r0, [r7, #1216]
-	strb	r3, [r7, #1217]
-	mov	r6, #5
+	strb	r3, [r7, #1223]
 	mov	r3, #10
-	strb	r3, [r7, #1218]
-	b	.L1274
-.L1334:
-	mov	r6, #4
-.L1274:
-	sub	r3, r4, #1
-	cmp	r3, #1
-	bhi	.L1371
-	ldr	r10, .L1381+8
-	mov	r9, #0
-.L1280:
-	ldrb	r1, [r7, #2230]	@ zero_extendqisi2
-	uxtb	r2, r9
-	ldr	r3, .L1381
-	cmp	r1, r2
-	bls	.L1287
-	add	r2, r3, r2
-	ldr	r4, .L1381+12
-	ldr	r1, .L1381+16
-	mov	ip, #55
-	ldrb	r2, [r2, #2232]	@ zero_extendqisi2
-	add	r3, r3, r2, asl #3
-	add	r4, r4, r2, asl #6
-	add	r4, r4, #20
-	ldrb	r8, [r3, #16]	@ zero_extendqisi2
-	ldr	r0, [r3, #12]
-	mov	fp, r4
-	mov	r2, r4
-	add	r8, r0, r8, asl #8
-.L1282:
-	str	ip, [r8, #2056]
-	mov	r0, #80
-	ldrb	r3, [r1, #1]!	@ zero_extendqisi2
-	str	r2, [sp, #12]
-	str	ip, [sp, #8]
-	str	r3, [r8, #2052]
-	str	r1, [sp, #4]
-	str	r1, [sp, #16]
-	bl	NandcDelayns
-	ldr	r3, [r8, #2048]
-	ldr	r2, [sp, #12]
-	ldmib	sp, {r1, ip}
-	strb	r3, [r2], #1
-	rsb	r3, r4, r2
-	uxtb	r3, r3
-	cmp	r3, r6
-	bcc	.L1282
-	mov	r2, #0
+	strb	r0, [r7, #1222]
+	mov	r5, #50
+	strb	r3, [r7, #1224]
+	mov	r6, #5
+	b	.L1270
 .L1283:
-	add	r0, r10, r2
+	add	r3, r7, r3
+	mov	r8, #0
+	ldrb	r3, [r3, #2236]	@ zero_extendqisi2
+	mov	r1, #55
+	ldr	r9, [r7, r3, lsl #3]
+	add	r4, fp, r3, lsl #6
+	add	r3, r7, r3, lsl #3
+	ldrb	r3, [r3, #4]	@ zero_extendqisi2
+	add	r4, r4, #20
+	add	r9, r9, r3, lsl #8
+.L1278:
+	add	r3, fp, r8
+	str	r1, [r9, #2056]
+	ldrb	r3, [r3, #4]	@ zero_extendqisi2
+	mov	r0, #80
+	str	r2, [sp, #4]
+	str	r1, [sp]
+	str	r3, [r9, #2052]
+	bl	ndelay
+	ldr	r3, [r9, #2048]
+	ldm	sp, {r1, r2}
+	strb	r3, [r4, r8]
+	add	r8, r8, #1
+	uxtb	r3, r8
+	cmp	r6, r3
+	bhi	.L1278
+	mov	r0, r4
+	mov	r1, #0
+.L1281:
 	mov	r3, #1
-.L1284:
-	ldrb	r1, [r0, r3, asl #2]	@ zero_extendqisi2
-	ldrb	ip, [fp]	@ zero_extendqisi2
-	add	r1, r1, ip
-	strb	r1, [fp, r3, asl #3]
+	add	lr, r2, r1
+.L1280:
+	ldrb	ip, [lr, r3, lsl #2]	@ zero_extendqisi2
+	ldrb	r8, [r0]	@ zero_extendqisi2
+	add	ip, ip, r8
+	strb	ip, [r0, r3, lsl #3]
 	add	r3, r3, #1
 	cmp	r3, #7
-	bne	.L1284
-	add	r2, r2, #1
-	add	fp, fp, #1
-	cmp	r2, #4
-	bne	.L1283
+	bne	.L1280
+	add	r1, r1, #1
+	add	r0, r0, #1
+	cmp	r1, #4
+	bne	.L1281
 	mov	r3, #0
-	add	r9, r9, #1
+	add	r10, r10, #1
 	strb	r3, [r4, #16]
 	strb	r3, [r4, #24]
 	strb	r3, [r4, #32]
@@ -7890,102 +8382,71 @@
 	strb	r3, [r4, #48]
 	strb	r3, [r4, #41]
 	strb	r3, [r4, #49]
-	b	.L1280
-.L1371:
+	b	.L1277
+.L1276:
 	sub	r3, r4, #3
 	cmp	r3, #5
-	bhi	.L1287
-	smulbb	r2, r6, r5
-	mov	r3, r2, asl #4
-	mov	r2, r2, asr #1
-	str	r3, [sp, #36]
-	mov	r3, r2, asl #1
-	str	r3, [sp, #8]
+	bhi	.L1284
+	smulbb	r3, r6, r5
+	ldr	r8, .L1384
+	asr	r2, r3, #1
+	lsl	r3, r3, #4
+	str	r3, [sp, #48]
+	lsl	r3, r2, #2
+	str	r2, [sp, #4]
+	str	r3, [sp, #40]
+	lsl	r3, r2, #1
+	str	r3, [sp, #28]
 	mov	r3, #0
-.L1379:
-	str	r3, [sp, #16]
-	ldrb	r3, [sp, #16]	@ zero_extendqisi2
-	str	r3, [sp, #12]
-	ldr	r3, .L1381
-	ldr	r2, [sp, #12]
-	ldrb	r3, [r3, #2230]	@ zero_extendqisi2
+	str	r3, [sp, #24]
+	add	r3, r8, #1216
+	add	r3, r3, #28
+	str	r3, [sp, #52]
+.L1285:
+	ldrb	r3, [sp, #24]	@ zero_extendqisi2
+	str	r3, [sp, #8]
+	ldr	r2, [sp, #8]
+	ldrb	r3, [r8, #2234]	@ zero_extendqisi2
 	cmp	r3, r2
-	bhi	.L1332
-.L1287:
-	ldr	r3, .L1381
-	strb	r6, [r3, #1211]
-	strb	r5, [r3, #1212]
-	add	sp, sp, #44
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1332:
-	ldr	r2, [sp, #12]
-	ldr	r3, .L1381
-	add	r3, r3, r2
-	ldrb	r10, [r3, #2232]	@ zero_extendqisi2
-	ldr	r3, .L1381
-	add	r3, r3, r10, asl #3
-	mov	r0, r10
-	ldrb	fp, [r3, #16]	@ zero_extendqisi2
-	ldr	r8, [r3, #12]
+	bls	.L1284
+	ldr	r3, [sp, #8]
+	add	r3, r8, r3
+	ldrb	r9, [r3, #2236]	@ zero_extendqisi2
+	ldr	fp, [r8, r9, lsl #3]
+	mov	r0, r9
+	add	r3, r8, r9, lsl #3
+	ldrb	r10, [r3, #4]	@ zero_extendqisi2
 	mov	r3, #255
-	mov	r9, fp, asl #8
-	add	r7, r8, r9
+	add	r7, fp, r10, lsl #8
 	str	r3, [r7, #2056]
 	bl	NandcWaitFlashReady
 	cmp	r4, #7
-	ldreq	r3, .L1381+12
-	moveq	r7, #160
-	mlaeq	r7, r7, r10, r3
-	addeq	r3, r7, #28
-	beq	.L1376
-.L1289:
-	cmp	r4, #8
-	beq	.L1291
-	ldr	r3, .L1381+12
-	add	r7, r3, r10, asl #6
-	add	r3, r7, #20
-.L1376:
+	bne	.L1286
+	ldr	r3, .L1384+8
+	mov	r0, #160
+	mla	r0, r0, r9, r3
+	add	r3, r0, #28
+.L1380:
 	str	r3, [sp, #20]
 	cmp	r4, #4
-	add	r3, r8, fp, asl #8
+	add	r3, fp, r10, lsl #8
 	mov	r2, #54
 	str	r2, [r3, #2056]
-	bne	.L1292
-	add	r9, r8, r9
-	mov	r3, #255
-	str	r3, [r9, #2052]
-	mov	r3, #64
-	str	r3, [r9, #2048]
-	mov	r3, #204
-	b	.L1377
-.L1292:
-	sub	r2, r4, #5
-	cmp	r2, #1
-	bhi	.L1294
-	ldr	r2, .L1381
-	ldrb	r2, [r2, #1214]	@ zero_extendqisi2
+	bne	.L1289
+	mov	r2, #255
 	str	r2, [r3, #2052]
-	mov	r2, #82
+	mov	r2, #64
 	str	r2, [r3, #2048]
-	b	.L1293
-.L1294:
-	cmp	r4, #7
-	bne	.L1293
-	add	r9, r8, r9
-	mov	r3, #174
-	str	r3, [r9, #2052]
-	mov	r3, #0
-	str	r3, [r9, #2048]
-	mov	r3, #176
-.L1377:
-	str	r3, [r9, #2052]
-	mov	r3, #77
-	str	r3, [r9, #2048]
-.L1293:
-	add	r3, r8, fp, asl #8
-	cmp	r4, #6
+	mov	r2, #204
+.L1381:
+	str	r2, [r3, #2052]
+	mov	r2, #77
+.L1382:
+	str	r2, [r3, #2048]
+.L1290:
+	add	r3, fp, r10, lsl #8
 	mov	r2, #22
+	cmp	r4, #6
 	str	r2, [r3, #2056]
 	mov	r2, #23
 	str	r2, [r3, #2056]
@@ -8004,174 +8465,153 @@
 	mov	r2, #0
 	str	r2, [r3, #2052]
 .L1333:
-	add	r3, r8, fp, asl #8
+	add	r3, fp, r10, lsl #8
 	mov	r2, #48
-	mov	r0, r10
+	mov	r0, r9
 	str	r2, [r3, #2056]
 	bl	NandcWaitFlashReady
 	sub	r3, r4, #5
-	cmp	r3, #1
-	movhi	r3, #0
-	movls	r3, #1
-	str	r3, [sp, #24]
-	sub	r3, r4, #8
-	clz	r3, r3
-	mov	r3, r3, lsr #5
-	str	r3, [sp, #4]
-	ldr	r2, [sp, #4]
-	ldr	r3, [sp, #24]
-	orrs	r3, r3, r2
-	movne	ip, #16
-	bne	.L1297
+	cmp	r4, #8
+	cmpne	r3, #1
+	str	r3, [sp, #44]
+	movls	r2, #16
+	bls	.L1294
 	cmp	r4, #7
-	movne	ip, #2
-	moveq	ip, #32
-.L1297:
-	ldr	r3, .L1381+20
-	add	r0, r8, fp, asl #8
-	ldr	r3, [r3, #1688]
-	mov	r1, r3
-.L1298:
-	ldr	r2, [r0, #2048]
-	strb	r2, [r1], #1
-	rsb	r2, r3, r1
-	uxtb	r2, r2
-	cmp	r2, ip
-	bcc	.L1298
-	ldr	r2, [sp, #4]
-	cmp	r2, #0
-	beq	.L1299
+	moveq	r2, #32
+	movne	r2, #2
+.L1294:
+	ldr	r3, .L1384+16
+	sub	r2, r2, #1
+	add	ip, fp, r10, lsl #8
+	ldr	r3, [r3, #1696]
+	str	ip, [sp]
+	sub	r1, r3, #1
+	uxtab	r2, r3, r2
+	mov	r0, r1
+.L1295:
+	ldr	ip, [sp]
+	ldr	ip, [ip, #2048]
+	strb	ip, [r0, #1]!
+	cmp	r2, r0
+	bne	.L1295
+	cmp	r4, #8
+	bne	.L1296
 	mov	r2, #0
-.L1301:
-	ldrb	ip, [r3, r2, asl #2]	@ zero_extendqisi2
+.L1298:
+	ldrb	r0, [r3, r2, lsl #2]	@ zero_extendqisi2
 	uxtb	r1, r2
-	cmp	ip, #50
-	beq	.L1300
-	add	ip, r3, r2, asl #2
-	ldrb	ip, [ip, #1]	@ zero_extendqisi2
-	cmp	ip, #5
-	beq	.L1300
+	cmp	r0, #50
+	beq	.L1297
+	add	r0, r3, r2, lsl #2
+	ldrb	r0, [r0, #1]	@ zero_extendqisi2
+	cmp	r0, #5
+	beq	.L1297
 	add	r2, r2, #1
 	cmp	r2, #8
-	bne	.L1301
-	b	.L1302
-.L1300:
-	cmp	r1, #6
-	bls	.L1303
-.L1302:
-	ldr	r0, .L1381+24
-	mov	r1, #0
-	bl	printk
-.L1304:
-	b	.L1304
+	bne	.L1298
 .L1299:
+	mov	r1, #0
+	ldr	r0, .L1384+20
+	bl	printk
+.L1301:
+	b	.L1301
+.L1286:
+	cmp	r4, #8
+	beq	.L1288
+	ldr	r3, .L1384+8
+	add	r0, r3, r9, lsl #6
+	add	r3, r0, #20
+	b	.L1380
+.L1289:
+	sub	r2, r4, #5
+	cmp	r2, #1
+	ldrbls	r2, [r8, #1220]	@ zero_extendqisi2
+	strls	r2, [r3, #2052]
+	movls	r2, #82
+	bls	.L1382
 	cmp	r4, #7
-	bne	.L1305
-	ldr	r2, [sp, #4]
-.L1307:
-	ldrb	ip, [r3, r2, asl #2]	@ zero_extendqisi2
-	uxtb	r1, r2
-	cmp	ip, #12
-	beq	.L1306
-	add	ip, r3, r2, asl #2
-	ldrb	ip, [ip, #1]	@ zero_extendqisi2
-	cmp	ip, #10
-	beq	.L1306
-	add	r2, r2, #1
-	cmp	r2, #8
-	bne	.L1307
-	b	.L1308
-.L1306:
-	cmp	r1, #7
-	bne	.L1303
-.L1308:
-	ldr	r0, .L1381+24
-	mov	r1, #0
-	bl	printk
-.L1309:
-	b	.L1309
-.L1305:
-	cmp	r4, #6
-	bne	.L1303
-	sub	r2, r3, #1
-	add	r3, r3, #7
-.L1310:
-	ldrb	r1, [r2, #1]!	@ zero_extendqisi2
-	cmp	r1, #12
-	beq	.L1303
-	ldrb	r1, [r2, #8]	@ zero_extendqisi2
-	cmp	r1, #4
-	beq	.L1303
-	cmp	r2, r3
-	bne	.L1310
-	ldr	r0, .L1381+24
-	mov	r1, #0
-	bl	printk
-.L1312:
-	b	.L1312
-.L1303:
-	ldr	r1, .L1381+20
-	ldr	ip, [sp, #36]
-	ldr	r2, [r1, #1688]
-	add	ip, r2, ip
+	bne	.L1290
+	mov	r2, #174
+	str	r2, [r3, #2052]
+	mov	r2, #0
+	str	r2, [r3, #2048]
+	mov	r2, #176
+	b	.L1381
+.L1297:
+	cmp	r1, #6
+	bhi	.L1299
+.L1300:
+	ldr	r1, .L1384+16
+	ldr	r2, [r1, #1696]
 	mov	r3, r2
+.L1310:
+	ldr	ip, [sp, #48]
+	sub	r0, r3, r2
+	cmp	r0, ip
+	blt	.L1311
+	ldr	r3, [sp, #28]
+	ldr	r1, [r1, #1696]
+	add	r0, r1, r3
+	mov	r3, #8
 .L1313:
-	cmp	r3, ip
-	ldrne	lr, [r0, #2048]
-	strneb	lr, [r3], #1
+	mov	lr, r0
+	mov	ip, #0
+.L1312:
+	ldrh	r7, [lr]
+	add	ip, ip, #1
+	mvn	r7, r7
+	strh	r7, [lr], #2	@ movhi
+	ldr	r7, [sp, #4]
+	cmp	r7, ip
+	bgt	.L1312
+	ldr	ip, [sp, #40]
+	subs	r3, r3, #1
+	add	r0, r0, ip
 	bne	.L1313
-.L1380:
-	ldr	r3, [r1, #1688]
-	mov	r0, #8
-	ldr	r1, [sp, #8]
-	add	r1, r3, r1
-	str	r1, [sp, #28]
-.L1316:
-	ldr	ip, [sp, #8]
-	add	lr, r1, ip
-.L1315:
-	ldrh	ip, [r1]
-	mvn	ip, ip
-	strh	ip, [r1], #2	@ movhi
-	cmp	r1, lr
-	bne	.L1315
-	ldr	ip, [sp, #8]
-	subs	r0, r0, #1
-	add	r1, r1, ip
-	bne	.L1316
-.L1317:
+	str	r1, [sp, #12]
+	str	r3, [sp, #16]
+.L1319:
 	mov	ip, #0
 	mov	r0, ip
-.L1320:
-	mov	r1, #1
-	mov	lr, #0
-	mov	r1, r1, asl r0
-	mov	r7, #16
-	str	r7, [sp, #32]
-	mov	r7, lr
 .L1318:
-	ldrh	r9, [r3, lr]
-	and	r9, r9, r1
-	cmp	r9, r1
+	mov	lr, #1
+	mov	r7, #16
+	lsl	lr, lr, r0
+	str	r7, [sp, #36]
+	mov	r7, #0
+	str	lr, [sp, #32]
+	ldr	lr, [sp, #12]
+.L1316:
+	ldrh	r3, [lr]
+	mov	r1, r3
+	ldr	r3, [sp, #32]
+	bics	r3, r3, r1
+	ldr	r3, [sp, #28]
 	addeq	r7, r7, #1
-	ldr	r9, [sp, #8]
-	add	lr, lr, r9
-	ldr	r9, [sp, #32]
-	subs	r9, r9, #1
-	str	r9, [sp, #32]
-	bne	.L1318
+	add	lr, lr, r3
+	ldr	r3, [sp, #36]
+	subs	r3, r3, #1
+	str	r3, [sp, #36]
+	bne	.L1316
 	cmp	r7, #8
 	add	r0, r0, #1
-	orrhi	ip, ip, r1
+	ldrhi	r3, [sp, #32]
+	orrhi	ip, ip, r3
 	uxthhi	ip, ip
 	cmp	r0, #16
-	bne	.L1320
-	ldr	r1, [sp, #28]
+	bne	.L1318
+	ldr	r3, [sp, #12]
 	strh	ip, [r3], #2	@ movhi
+	str	r3, [sp, #12]
+	ldr	r3, [sp, #16]
+	add	r3, r3, #1
+	str	r3, [sp, #16]
+	ldr	r1, [sp, #16]
+	ldr	r3, [sp, #4]
 	cmp	r3, r1
-	bne	.L1317
-	ldr	r3, .L1381+20
-	ldr	r1, [r3, #1688]
+	bgt	.L1319
+	ldr	r3, .L1384+16
+	ldr	r1, [r3, #1696]
 	mov	r3, #0
 	sub	r0, r1, #4
 	add	ip, r1, #28
@@ -8179,91 +8619,141 @@
 	ldr	lr, [r0, #4]!
 	cmp	lr, #0
 	addeq	r3, r3, #1
-	cmp	r0, ip
+	cmp	ip, r0
 	bne	.L1322
 	cmp	r3, #7
 	ble	.L1323
-	ldr	r0, .L1381+28
-	mov	r2, #1
+	ldr	r0, .L1384+24
 	mov	r3, #1024
+	mov	r2, #1
 	bl	rknand_print_hex
-	ldr	r0, .L1381+24
 	mov	r1, #0
+	ldr	r0, .L1384+20
 	bl	printk
 .L1324:
 	b	.L1324
+.L1296:
+	cmp	r4, #7
+	bne	.L1302
+	mov	r2, #0
+.L1304:
+	ldrb	r0, [r3, r2, lsl #2]	@ zero_extendqisi2
+	uxtb	r1, r2
+	cmp	r0, #12
+	beq	.L1303
+	add	r0, r3, r2, lsl #2
+	ldrb	r0, [r0, #1]	@ zero_extendqisi2
+	cmp	r0, #10
+	beq	.L1303
+	add	r2, r2, #1
+	cmp	r2, #8
+	bne	.L1304
+.L1305:
+	mov	r1, #0
+	ldr	r0, .L1384+20
+	bl	printk
+.L1306:
+	b	.L1306
+.L1303:
+	cmp	r1, #6
+	bls	.L1300
+	b	.L1305
+.L1302:
+	cmp	r4, #6
+	bne	.L1300
+	add	r3, r3, #7
+.L1307:
+	ldrb	r2, [r1, #1]!	@ zero_extendqisi2
+	cmp	r2, #12
+	beq	.L1300
+	ldrb	r2, [r1, #8]	@ zero_extendqisi2
+	cmp	r2, #4
+	beq	.L1300
+	cmp	r3, r1
+	bne	.L1307
+	mov	r1, #0
+	ldr	r0, .L1384+20
+	bl	printk
+.L1309:
+	b	.L1309
+.L1311:
+	ldr	r0, [sp]
+	ldr	r0, [r0, #2048]
+	strb	r0, [r3], #1
+	b	.L1310
 .L1323:
 	cmp	r4, #6
-	moveq	r0, #4
+	moveq	ip, #4
 	beq	.L1325
 	cmp	r4, #7
-	moveq	r0, #10
+	moveq	ip, #10
 	beq	.L1325
-	ldr	r3, [sp, #4]
-	cmp	r3, #0
-	moveq	r0, #8
-	movne	r0, #5
+	cmp	r4, #8
+	moveq	ip, #5
+	movne	ip, #8
 .L1325:
-	sub	r9, r6, #1
-	ldr	r1, [sp, #20]
-	mov	ip, #0
-	uxtb	r9, r9
-	add	r9, r9, #1
+	sub	r3, r6, #1
+	ldr	r0, [sp, #20]
+	uxtb	r3, r3
+	mov	lr, #0
+	add	r3, r3, #1
+	str	r3, [sp, #12]
 .L1326:
-	mov	r7, r1
-	mov	r3, r2
+	mov	r3, r0
+	mov	r1, r2
 .L1327:
-	ldrb	lr, [r3], #1	@ zero_extendqisi2
-	strb	lr, [r7], #1
-	rsb	lr, r2, r3
-	uxtb	lr, lr
-	cmp	lr, r6
-	bcc	.L1327
-	add	ip, ip, #1
-	add	r2, r2, r9
-	cmp	ip, r5
-	add	r1, r1, r0
-	blt	.L1326
-	add	r7, r8, fp, asl #8
+	ldrb	r7, [r1], #1	@ zero_extendqisi2
+	strb	r7, [r3], #1
+	sub	r7, r1, r2
+	uxtb	r7, r7
+	cmp	r6, r7
+	bhi	.L1327
+	ldr	r3, [sp, #12]
+	add	lr, lr, #1
+	cmp	r5, lr
+	add	r0, r0, ip
+	add	r2, r2, r3
+	bgt	.L1326
+	add	r10, fp, r10, lsl #8
 	mov	r3, #255
-	mov	r0, r10
-	str	r3, [r7, #2056]
+	mov	r0, r9
+	str	r3, [r10, #2056]
+	bl	NandcWaitFlashReady
+	ldr	r3, [sp, #44]
+	cmp	r3, #1
+	bhi	.L1329
+	mov	r3, #54
+	ldr	r2, [sp]
+	str	r3, [r10, #2056]
+	mvn	r1, #0
+	ldrb	r3, [r8, #1220]	@ zero_extendqisi2
+	ldr	r0, [sp, #8]
+	str	r3, [r2, #2052]
+	mov	r3, #0
+	str	r3, [r2, #2048]
+	mov	r3, #22
+	str	r3, [r10, #2056]
+	bl	FlashReadCmd
+.L1330:
+	mov	r0, r9
 	bl	NandcWaitFlashReady
 	ldr	r3, [sp, #24]
-	cmp	r3, #0
-	beq	.L1329
-	mov	r3, #54
-	str	r3, [r7, #2056]
-	ldr	r3, .L1381
-	mvn	r1, #0
-	ldr	r0, [sp, #12]
-	ldrb	r3, [r3, #1214]	@ zero_extendqisi2
-	str	r3, [r7, #2052]
-	mov	r3, #0
-	str	r3, [r7, #2048]
-	mov	r3, #22
-	str	r3, [r7, #2056]
-	bl	FlashReadCmd
-	b	.L1330
-.L1329:
-	ldr	r3, [sp, #4]
-	cmp	r3, #0
-	movne	r3, #190
-	moveq	r3, #56
-	str	r3, [r7, #2056]
-.L1330:
-	mov	r0, r10
-	bl	NandcWaitFlashReady
-	ldr	r3, [sp, #16]
 	add	r3, r3, #1
-	b	.L1379
-.L1291:
+	str	r3, [sp, #24]
+	b	.L1285
+.L1329:
+	cmp	r4, #8
+	moveq	r3, #190
+	movne	r3, #56
+	str	r3, [r10, #2056]
+	b	.L1330
+.L1288:
 	mov	r3, #120
 	mov	r2, #23
 	str	r3, [r7, #2056]
-	mov	r1, #25
 	mov	r3, #0
 	str	r3, [r7, #2052]
+	mov	r1, #25
 	str	r3, [r7, #2052]
 	str	r3, [r7, #2052]
 	str	r2, [r7, #2056]
@@ -8279,25 +8769,26 @@
 	str	r1, [r7, #2052]
 	str	r2, [r7, #2052]
 	str	r3, [r7, #2052]
-	ldr	r3, .L1381+32
+	ldr	r3, [sp, #52]
 	str	r3, [sp, #20]
 	b	.L1333
-.L1382:
+.L1385:
 	.align	2
-.L1381:
+.L1384:
 	.word	.LANCHOR0
 	.word	.LANCHOR1
-	.word	.LANCHOR1+3388
-	.word	.LANCHOR0+1210
-	.word	.LANCHOR0+1213
+	.word	.LANCHOR0+1216
+	.word	.LANCHOR1+3384
 	.word	.LANCHOR2
 	.word	.LC85
 	.word	.LC86
-	.word	.LANCHOR0+1238
 	.fnend
 	.size	HynixGetReadRetryDefault, .-HynixGetReadRetryDefault
 	.align	2
 	.global	FlashGetReadRetryDefault
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashGetReadRetryDefault, %function
 FlashGetReadRetryDefault:
 	.fnstart
@@ -8308,226 +8799,227 @@
 	bxeq	lr
 	sub	r2, r3, #1
 	cmp	r2, #7
-	bhi	.L1385
+	bhi	.L1388
 	b	HynixGetReadRetryDefault
-.L1385:
+.L1388:
 	cmp	r3, #49
-	bne	.L1386
-	ldr	r2, .L1397
-	ldr	r0, .L1397+4
-	ldr	r1, .L1397+8
-	strb	r3, [r2, #1210]
+	bne	.L1389
+	ldr	r2, .L1400
+	ldr	r1, .L1400+4
+	strb	r3, [r2, #1216]
 	mov	r3, #4
-	strb	r3, [r2, #1211]
+	strb	r3, [r2, #1217]
 	mov	r3, #15
-	strb	r3, [r2, #1212]
+	strb	r3, [r2, #1218]
 	mov	r2, #64
-	b	.L1395
-.L1386:
+.L1398:
+	ldr	r0, .L1400+8
+	b	ftl_memcpy
+.L1389:
 	sub	r2, r3, #65
 	cmp	r3, #33
 	cmpne	r2, #1
-	ldrls	r2, .L1397
-	strlsb	r3, [r2, #1210]
-	movls	r3, #4
-	bls	.L1396
-.L1387:
-	cmp	r3, #34
-	cmpne	r3, #67
-	bne	.L1388
-	ldr	r2, .L1397
-	strb	r3, [r2, #1210]
-	mov	r3, #5
-.L1396:
-	strb	r3, [r2, #1211]
+	bhi	.L1390
+	ldr	r2, .L1400
+	strb	r3, [r2, #1216]
+	mov	r3, #4
+.L1399:
+	strb	r3, [r2, #1217]
 	mov	r3, #7
-	ldr	r0, .L1397+4
-	strb	r3, [r2, #1212]
+	strb	r3, [r2, #1218]
 	mov	r2, #45
-	ldr	r1, .L1397+12
-	b	.L1395
-.L1388:
-	cmp	r3, #35
-	cmpne	r3, #68
+	ldr	r1, .L1400+12
+	b	.L1398
+.L1390:
+	cmp	r3, #67
+	cmpne	r3, #34
+	ldreq	r2, .L1400
+	strbeq	r3, [r2, #1216]
+	moveq	r3, #5
+	beq	.L1399
+.L1391:
+	cmp	r3, #68
+	cmpne	r3, #35
 	bxne	lr
-	ldr	r2, .L1397
-	ldr	r0, .L1397+4
-	ldr	r1, .L1397+16
-	strb	r3, [r2, #1210]
+	ldr	r2, .L1400
+	ldr	r1, .L1400+16
+	strb	r3, [r2, #1216]
 	mov	r3, #5
-	strb	r3, [r2, #1211]
+	strb	r3, [r2, #1217]
 	mov	r3, #17
-	strb	r3, [r2, #1212]
+	strb	r3, [r2, #1218]
 	mov	r2, #95
-.L1395:
-	b	ftl_memcpy
-.L1398:
+	b	.L1398
+.L1401:
 	.align	2
-.L1397:
+.L1400:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+1214
-	.word	.LANCHOR1+408
+	.word	.LANCHOR1+404
+	.word	.LANCHOR0+1220
 	.word	.LANCHOR1+256
-	.word	.LANCHOR1+304
+	.word	.LANCHOR1+301
 	.fnend
 	.size	FlashGetReadRetryDefault, .-FlashGetReadRetryDefault
 	.align	2
 	.global	NandcXferComp
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcXferComp, %function
 NandcXferComp:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
+	push	{r0, r1, r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
 	.pad #8
-	ldr	r5, .L1439
-	add	r0, r5, r0, asl #3
-	ldr	r3, [r5, #2260]
-	ldr	r4, [r0, #12]
+	ldr	r5, .L1442
+	ldr	r3, [r5, #2264]
+	ldr	r4, [r5, r0, lsl #3]
 	cmp	r3, #3
-	bls	.L1430
+	bls	.L1433
 	ldr	r3, [r4, #16]
 	tst	r3, #4
-	beq	.L1430
+	beq	.L1433
 	ldr	r6, [r4, #16]
 	ldr	r3, [r4, #8]
 	ubfx	r6, r6, #1, #1
 	cmp	r6, #0
 	str	r3, [sp]
-	movne	r6, #0
-	beq	.L1412
-.L1402:
+	beq	.L1404
+	ldr	r7, .L1442+4
+	mov	r6, #0
+	ldr	r8, .L1442+8
+.L1405:
 	ldr	r2, [r4, #28]
 	ldr	r3, [sp]
 	ubfx	r2, r2, #16, #5
 	ubfx	r3, r3, #22, #6
 	cmp	r2, r3
-	bge	.L1410
-	ldr	r3, [r5, #2260]
+	bge	.L1413
+	ldr	r3, [r5, #2264]
 	cmp	r3, #5
-	bhi	.L1403
-.L1406:
+	bhi	.L1406
+.L1409:
 	add	r6, r6, #1
-	bic	r3, r6, #-16777216
-	cmp	r3, #0
-	bne	.L1405
+	bics	r3, r6, #-16777216
+	bne	.L1408
 	ldr	r2, [r4, #28]
 	mov	r1, r6
 	ldr	r3, [sp]
+	mov	r0, r7
 	ubfx	r2, r2, #16, #5
-	ldr	r0, .L1439+4
 	ubfx	r3, r3, #22, #6
 	bl	printk
-	ldr	r0, .L1439+8
-	mov	r1, r4
-	mov	r2, #4
 	mov	r3, #512
+	mov	r2, #4
+	mov	r1, r4
+	mov	r0, r8
 	bl	rknand_print_hex
+.L1408:
+	mov	r1, #5
+	mov	r0, #1
+	bl	usleep_range
 	b	.L1405
-.L1403:
+.L1406:
 	ldr	r3, [r4]
 	str	r3, [sp, #4]
 	ldr	r3, [sp, #4]
 	tst	r3, #8192
-	beq	.L1406
+	beq	.L1409
 	ldr	r3, [sp, #4]
 	tst	r3, #131072
-	beq	.L1406
-.L1410:
-	ldr	r3, [r5, #2296]
-	ldr	r4, .L1439
+	beq	.L1409
+.L1413:
+	ldr	r3, [r5, #2300]
 	cmp	r3, #0
-	beq	.L1411
+	beq	.L1414
 	ldr	r1, [sp]
 	mov	r2, #0
-	ldr	r0, [r4, #2288]
+	ldr	r0, [r5, #2292]
 	ubfx	r1, r1, #22, #5
-	mov	r1, r1, asl #10
+	lsl	r1, r1, #10
 	bl	rknand_dma_unmap_single
-	ldr	r0, [r4, #2292]
-	mov	r2, #0
 	ldr	r1, [sp]
+	mov	r2, #0
+	ldr	r0, [r5, #2296]
 	ubfx	r1, r1, #22, #5
-	mov	r1, r1, asl #7
+	lsl	r1, r1, #7
 	bl	rknand_dma_unmap_single
-	b	.L1411
-.L1405:
-	mov	r0, #1
-	mov	r1, #5
-	bl	usleep_range
-	b	.L1402
 .L1414:
+	mov	r3, #0
+	str	r3, [r5, #2300]
+.L1402:
+	add	sp, sp, #8
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, pc}
+.L1404:
+	ldr	r7, .L1442+12
+	ldr	r8, .L1442+8
+.L1415:
+	ldr	r3, [sp]
+	tst	r3, #1048576
+	beq	.L1417
+	ldr	r3, [r5, #2308]
+	cmp	r3, #0
+	beq	.L1418
+	mov	r0, r4
+	bl	NandcSendDumpDataStart
+.L1418:
+	ldr	r3, [r5, #2300]
+	cmp	r3, #0
+	beq	.L1419
+	ldr	r1, [sp]
+	mov	r2, #1
+	ldr	r0, [r5, #2292]
+	ubfx	r1, r1, #22, #5
+	lsl	r1, r1, #10
+	bl	rknand_dma_unmap_single
+	ldr	r1, [sp]
+	mov	r2, #1
+	ldr	r0, [r5, #2296]
+	ubfx	r1, r1, #22, #5
+	lsl	r1, r1, #7
+	bl	rknand_dma_unmap_single
+.L1419:
+	ldr	r3, [r5, #2308]
+	cmp	r3, #0
+	beq	.L1414
+	mov	r0, r4
+	bl	NandcSendDumpDataDone
+	b	.L1414
+.L1417:
 	ldr	r3, [r4, #8]
 	add	r6, r6, #1
 	str	r3, [sp]
-	bic	r3, r6, #-16777216
-	cmp	r3, #0
-	bne	.L1413
+	bics	r3, r6, #-16777216
+	bne	.L1416
 	ldr	r2, [sp]
 	mov	r1, r6
 	ldr	r3, [r4, #28]
-	ldr	r0, .L1439+12
+	mov	r0, r7
 	ubfx	r3, r3, #16, #5
 	bl	printk
-	ldr	r0, .L1439+8
-	mov	r1, r4
-	mov	r2, #4
 	mov	r3, #512
+	mov	r2, #4
+	mov	r1, r4
+	mov	r0, r8
 	bl	rknand_print_hex
-.L1413:
-	mov	r0, #1
-	mov	r1, #5
-	bl	usleep_range
-.L1412:
-	ldr	r3, [sp]
-	tst	r3, #1048576
-	beq	.L1414
-	ldr	r3, [r5, #2304]
-	cmp	r3, #0
-	beq	.L1415
-	mov	r0, r4
-	bl	NandcSendDumpDataStart
-.L1415:
-	ldr	r3, [r5, #2296]
-	ldr	r6, .L1439
-	cmp	r3, #0
-	beq	.L1416
-	ldr	r1, [sp]
-	mov	r2, #1
-	ldr	r0, [r6, #2288]
-	ubfx	r1, r1, #22, #5
-	mov	r1, r1, asl #10
-	bl	rknand_dma_unmap_single
-	ldr	r0, [r6, #2292]
-	mov	r2, #1
-	ldr	r1, [sp]
-	ubfx	r1, r1, #22, #5
-	mov	r1, r1, asl #7
-	bl	rknand_dma_unmap_single
 .L1416:
-	ldr	r3, [r5, #2304]
-	cmp	r3, #0
-	beq	.L1411
-	mov	r0, r4
-	bl	NandcSendDumpDataDone
-.L1411:
-	mov	r3, #0
-	str	r3, [r5, #2296]
-	b	.L1399
-.L1430:
+	mov	r1, #5
+	mov	r0, #1
+	bl	usleep_range
+	b	.L1415
+.L1433:
 	ldr	r3, [r4, #8]
 	str	r3, [sp]
 	ldr	r3, [sp]
 	tst	r3, #1048576
-	beq	.L1430
-.L1399:
-	add	sp, sp, #8
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L1440:
+	beq	.L1433
+	b	.L1402
+.L1443:
 	.align	2
-.L1439:
+.L1442:
 	.word	.LANCHOR0
 	.word	.LC87
 	.word	.LC88
@@ -8536,306 +9028,306 @@
 	.size	NandcXferComp, .-NandcXferComp
 	.align	2
 	.global	NandcXferData
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	NandcXferData, %function
 NandcXferData:
 	.fnstart
 	@ args = 4, pretend = 0, frame = 80
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r10, r3
-	ldr	r6, .L1489
-	tst	r10, #63
+	tst	r3, #63
+	ldr	r9, .L1484
 	.pad #92
 	sub	sp, sp, #92
-	mov	r9, r0
-	add	r3, r6, r0, asl #3
+	mov	r7, r0
 	mov	r5, r1
-	mov	r7, r2
-	ldr	r8, [r3, #12]
-	bne	.L1442
-	ldr	r3, [sp, #128]
-	cmp	r3, #0
-	bne	.L1443
-	add	r0, sp, #24
-	mov	r1, #255
-	mov	r2, #64
-	bl	ftl_memset
-	add	r3, sp, #24
-	str	r3, [sp, #128]
-.L1443:
-	ldr	r3, [sp, #128]
-	mov	r0, r9
-	mov	r1, r5
-	mov	r2, r7
-	str	r10, [sp]
-	str	r3, [sp, #4]
-	mov	r3, #0
-	bl	NandcXferStart
-	mov	r0, r9
-	mov	r1, r5
-	bl	NandcXferComp
-	cmp	r5, #0
-	movne	fp, #0
-	bne	.L1444
-	ldr	r3, [r6, #2308]
-	mov	r0, r7, lsr #1
-	mov	r2, r5
-	mov	r1, r5
-	cmp	r3, #25
-	ldr	r3, [sp, #128]
-	movcc	lr, #64
-	movcs	lr, #128
-.L1446:
-	cmp	r1, r0
-	add	r3, r3, #4
-	add	ip, r2, lr
-	bcs	.L1487
-	ldr	r4, [r6, #2276]
-	mov	r2, r2, lsr #2
-	add	r1, r1, #1
-	ldr	r2, [r4, r2, asl #2]
-	mov	r4, r2, lsr #8
-	strb	r2, [r3, #-4]
-	strb	r4, [r3, #-3]
-	mov	r4, r2, lsr #16
-	mov	r2, r2, lsr #24
-	strb	r4, [r3, #-2]
-	strb	r2, [r3, #-1]
-	mov	r2, ip
-	b	.L1446
-.L1487:
-	ldr	r0, [r6, #2308]
-	mov	r2, #0
-	ldr	r1, [r6, #2260]
-	mov	r7, r7, lsr #2
-	mov	fp, r2
-.L1448:
-	cmp	r2, r7
-	bcs	.L1444
-	cmp	r0, #0
-	beq	.L1444
-	add	r3, r2, #8
-	ldr	r3, [r8, r3, asl #2]
-	str	r3, [sp, #20]
-	ldr	r3, [sp, #20]
-	tst	r3, #4
-	bne	.L1472
-	ldr	r4, [sp, #20]
-	ubfx	r4, r4, #15, #1
+	str	r2, [sp, #8]
+	mov	r8, r3
+	ldr	r4, [sp, #128]
+	ldr	r6, [r9, r0, lsl #3]
+	bne	.L1445
 	cmp	r4, #0
-	bne	.L1472
-	cmp	r1, #5
-	bls	.L1450
-	ldr	ip, [sp, #20]
-	ldr	r4, [sp, #20]
-	ldr	r3, [sp, #20]
-	ubfx	ip, ip, #3, #5
-	ldr	lr, [sp, #20]
-	ubfx	r4, r4, #27, #1
-	ubfx	r3, r3, #16, #5
-	ubfx	lr, lr, #29, #1
-	orr	ip, ip, r4, asl #5
-	orr	r3, r3, lr, asl #5
-	cmp	ip, r3
-	ldr	r3, [sp, #20]
-	ldrhi	r4, [sp, #20]
-	ubfxhi	r3, r3, #3, #5
-	ldrls	r4, [sp, #20]
-	ubfxls	r3, r3, #16, #5
-	ubfxhi	r4, r4, #27, #1
-	ubfxls	r4, r4, #29, #1
-	b	.L1486
-.L1450:
-	cmp	r1, #3
-	bls	.L1452
-	ldr	ip, [sp, #20]
-	ldr	r4, [sp, #20]
-	ldr	r3, [sp, #20]
-	ubfx	ip, ip, #3, #5
-	ldr	lr, [sp, #20]
-	ubfx	r4, r4, #28, #1
-	ubfx	r3, r3, #16, #5
-	ubfx	lr, lr, #30, #1
-	orr	ip, ip, r4, asl #5
-	orr	r3, r3, lr, asl #5
-	cmp	ip, r3
-	ldr	r3, [sp, #20]
-	ldrhi	r4, [sp, #20]
-	ubfxhi	r3, r3, #3, #5
-	ldrls	r4, [sp, #20]
-	ubfxls	r3, r3, #16, #5
-	ubfxhi	r4, r4, #28, #1
-	ubfxls	r4, r4, #30, #1
-.L1486:
-	orr	r4, r3, r4, asl #5
-.L1452:
-	cmp	fp, r4
-	movcc	fp, r4
-	b	.L1449
-.L1472:
-	mvn	fp, #0
-.L1449:
-	add	r2, r2, #1
-	b	.L1448
-.L1444:
+	bne	.L1446
+	mov	r2, #64
+	mov	r1, #255
+	add	r0, sp, #24
+	bl	ftl_memset
+	add	r4, sp, #24
+.L1446:
 	mov	r3, #0
-	str	r3, [r8, #16]
-	b	.L1455
-.L1442:
-	cmp	r1, #1
-	mov	r4, #0
-	bne	.L1484
-	mov	fp, r4
-.L1456:
-	cmp	r4, r7
-	bcs	.L1488
-	ldr	r2, [sp, #128]
-	cmp	r10, #0
-	addne	r3, r10, r4, asl #9
-	ldr	r1, [sp, #128]
-	moveq	r3, r10
-	cmp	r2, #0
-	and	ip, r4, #3
-	mov	r0, r8
-	movne	r2, #2
-	moveq	r2, #0
-	mla	r2, r4, r2, r1
-	mov	r1, #1
-	str	ip, [sp, #8]
-	add	r4, r4, #2
-	str	r2, [sp]
-	mov	r2, ip
-	bl	NandcCopy1KB
-	mov	r0, r9
-	mov	r1, #1
-	mov	r2, #2
-	ldr	ip, [sp, #8]
-	str	fp, [sp]
-	str	fp, [sp, #4]
-	mov	r3, ip
-	bl	NandcXferStart
-	mov	r0, r9
-	mov	r1, #1
-	bl	NandcXferComp
-	b	.L1456
-.L1488:
-	mov	fp, #0
-	b	.L1455
-.L1484:
-	str	r4, [sp]
-	mov	r1, r4
-	str	r4, [sp, #4]
-	mov	r2, #2
-	mov	r3, r4
-	mov	fp, r4
-	bl	NandcXferStart
-	str	r10, [sp, #8]
-.L1461:
-	cmp	r4, r7
-	bcs	.L1455
-	mov	r0, r9
+	ldr	r2, [sp, #8]
 	mov	r1, r5
-	bl	NandcXferComp
-	ldr	r3, [r8, #32]
-	add	ip, r4, #2
-	cmp	ip, r7
-	str	r3, [sp, #20]
-	bcs	.L1462
-	mov	r3, #0
-	mov	r0, r9
-	str	r3, [sp]
-	mov	r1, r3
-	str	r3, [sp, #4]
-	mov	r2, #2
-	and	r3, ip, #3
-	str	ip, [sp, #12]
+	mov	r0, r7
+	str	r4, [sp, #4]
+	str	r8, [sp]
 	bl	NandcXferStart
-	ldr	ip, [sp, #12]
-.L1462:
-	ldr	r3, [sp, #20]
-	tst	r3, #4
-	mvnne	fp, #0
-	bne	.L1463
-	ldr	r2, [sp, #20]
-	ldr	r3, [sp, #20]
-	ubfx	r2, r2, #3, #5
-	ubfx	r3, r3, #27, #1
-	orr	r3, r2, r3, asl #5
-	cmp	fp, r3
-	movcc	fp, r3
-.L1463:
-	ldr	r1, [sp, #128]
-	cmp	r10, #0
-	ldr	r3, [sp, #8]
-	sub	r2, ip, #2
-	moveq	r3, #0
-	ldr	r0, [sp, #128]
-	cmp	r1, #0
-	and	r2, r2, #3
-	str	ip, [sp, #12]
-	movne	r1, #2
-	moveq	r1, #0
-	mla	r4, r4, r1, r0
-	mov	r0, r8
-	mov	r1, #0
-	str	r4, [sp]
-	bl	NandcCopy1KB
-	ldr	ip, [sp, #12]
-	ldr	r3, [sp, #8]
-	mov	r4, ip
-	add	r3, r3, #1024
-	str	r3, [sp, #8]
-	b	.L1461
-.L1455:
-	ldr	r3, [r6, #2260]
-	clz	r5, r5
-	cmp	r3, #5
-	mov	r5, r5, lsr #5
-	movls	r5, #0
+	mov	r1, r5
+	mov	r0, r7
+	bl	NandcXferComp
 	cmp	r5, #0
-	beq	.L1467
-	ldr	r3, [r8]
+	movne	r9, #0
+	bne	.L1447
+	ldr	r3, [r9, #2312]
+	mov	r2, r5
+	cmp	r3, #25
+	ldr	r3, [sp, #8]
+	movcc	ip, #64
+	movcs	ip, #128
+	lsr	r1, r3, #1
+	mov	r3, r5
+.L1449:
+	cmp	r2, r1
+	add	r4, r4, #4
+	add	r0, ip, r3
+	bcc	.L1450
+	ldr	r3, [sp, #8]
+	mov	r2, #0
+	ldr	r1, [r9, #2312]
+	ldr	ip, [r9, #2264]
+	mov	r9, r2
+	lsr	r0, r3, #2
+.L1451:
+	cmp	r2, r0
+	bcs	.L1447
+	cmp	r1, #0
+	bne	.L1457
+.L1447:
+	mov	r3, #0
+	str	r3, [r6, #16]
+.L1458:
+	ldr	r3, .L1484
+	ldr	r3, [r3, #2264]
+	cmp	r3, #5
+	movls	r3, #0
+	movhi	r3, #1
+	cmp	r5, #0
+	movne	r3, #0
+	cmp	r3, #0
+	beq	.L1444
+	ldr	r3, [r6]
 	and	r2, r3, #139264
 	cmp	r2, #139264
+	mvneq	r9, #0
 	orreq	r3, r3, #131072
-	streq	r3, [r8]
-	mvneq	fp, #0
-.L1467:
-	mov	r0, fp
+	streq	r3, [r6]
+.L1444:
+	mov	r0, r9
 	add	sp, sp, #92
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1490:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1450:
+	ldr	lr, [r9, #2280]
+	bic	r3, r3, #3
+	add	r2, r2, #1
+	ldr	r3, [lr, r3]
+	strb	r3, [r4, #-4]
+	lsr	lr, r3, #8
+	strb	lr, [r4, #-3]
+	lsr	lr, r3, #16
+	lsr	r3, r3, #24
+	strb	lr, [r4, #-2]
+	strb	r3, [r4, #-1]
+	mov	r3, r0
+	b	.L1449
+.L1457:
+	add	r3, r2, #8
+	ldr	r3, [r6, r3, lsl #2]
+	str	r3, [sp, #20]
+	ldr	r3, [sp, #20]
+	tst	r3, #4
+	bne	.L1473
+	ldr	r3, [sp, #20]
+	ubfx	r3, r3, #15, #1
+	cmp	r3, #0
+	bne	.L1473
+	cmp	ip, #5
+	bls	.L1453
+	ldr	lr, [sp, #20]
+	ldr	r7, [sp, #20]
+	ldr	r3, [sp, #20]
+	ldr	r4, [sp, #20]
+	ubfx	lr, lr, #3, #5
+	ubfx	r7, r7, #27, #1
+	ubfx	r3, r3, #16, #5
+	orr	lr, lr, r7, lsl #5
+	ubfx	r4, r4, #29, #1
+	orr	r3, r3, r4, lsl #5
+	cmp	lr, r3
+	ldr	r3, [sp, #20]
+	ldrhi	lr, [sp, #20]
+	ldrls	lr, [sp, #20]
+	ubfxhi	r3, r3, #3, #5
+	ubfxls	r3, r3, #16, #5
+	ubfxhi	lr, lr, #27, #1
+	ubfxls	lr, lr, #29, #1
+.L1483:
+	orr	r3, r3, lr, lsl #5
+.L1455:
+	cmp	r9, r3
+	movcc	r9, r3
+.L1452:
+	add	r2, r2, #1
+	b	.L1451
+.L1453:
+	cmp	ip, #3
+	bls	.L1455
+	ldr	lr, [sp, #20]
+	ldr	r7, [sp, #20]
+	ldr	r3, [sp, #20]
+	ldr	r4, [sp, #20]
+	ubfx	lr, lr, #3, #5
+	ubfx	r7, r7, #28, #1
+	ubfx	r3, r3, #16, #5
+	orr	lr, lr, r7, lsl #5
+	ubfx	r4, r4, #30, #1
+	orr	r3, r3, r4, lsl #5
+	cmp	lr, r3
+	ldr	r3, [sp, #20]
+	ldrhi	lr, [sp, #20]
+	ldrls	lr, [sp, #20]
+	ubfxhi	r3, r3, #3, #5
+	ubfxls	r3, r3, #16, #5
+	ubfxhi	lr, lr, #28, #1
+	ubfxls	lr, lr, #30, #1
+	b	.L1483
+.L1473:
+	mvn	r9, #0
+	b	.L1452
+.L1445:
+	cmp	r1, #1
+	bne	.L1459
+	mov	r9, #0
+	cmp	r4, #0
+	mov	r10, r9
+	movne	r3, #4
+	moveq	r3, #0
+	str	r3, [sp, #12]
+.L1460:
+	ldr	r3, [sp, #8]
+	cmp	r9, r3
+	movcs	r9, #0
+	bcs	.L1458
+.L1462:
+	cmp	r8, #0
+	and	fp, r9, #3
+	addne	r3, r8, r9, lsl #9
+	moveq	r3, r8
+	str	r4, [sp]
+	mov	r2, fp
+	mov	r1, #1
+	mov	r0, r6
+	bl	NandcCopy1KB
+	mov	r3, fp
+	mov	r2, #2
+	mov	r1, #1
+	mov	r0, r7
+	str	r10, [sp, #4]
+	add	r9, r9, #2
+	str	r10, [sp]
+	bl	NandcXferStart
+	mov	r1, #1
+	mov	r0, r7
+	bl	NandcXferComp
+	ldr	r3, [sp, #12]
+	add	r4, r4, r3
+	b	.L1460
+.L1459:
+	mov	r10, #0
+	mov	r2, #2
+	mov	r3, r10
+	str	r10, [sp, #4]
+	str	r10, [sp]
+	mov	r1, r10
+	bl	NandcXferStart
+	mov	fp, r8
+	cmp	r4, r10
+	mov	r9, r10
+	movne	r3, #4
+	moveq	r3, r10
+	str	r3, [sp, #12]
+.L1463:
+	ldr	r3, [sp, #8]
+	cmp	r10, r3
+	bcs	.L1458
+	mov	r1, r5
+	mov	r0, r7
+	bl	NandcXferComp
+	ldr	r3, [r6, #32]
+	add	r10, r10, #2
+	str	r3, [sp, #20]
+	ldr	r3, [sp, #8]
+	cmp	r3, r10
+	bls	.L1464
+	mov	r3, #0
+	mov	r2, #2
+	str	r3, [sp, #4]
+	mov	r1, #0
+	str	r3, [sp]
+	mov	r0, r7
+	and	r3, r10, #3
+	bl	NandcXferStart
+.L1464:
+	ldr	r3, [sp, #20]
+	tst	r3, #4
+	mvnne	r9, #0
+	bne	.L1465
+	ldr	r3, [sp, #20]
+	ldr	r2, [sp, #20]
+	ubfx	r3, r3, #3, #5
+	ubfx	r2, r2, #27, #1
+	orr	r3, r3, r2, lsl #5
+	cmp	r9, r3
+	movcc	r9, r3
+.L1465:
+	cmp	r8, #0
+	sub	r2, r10, #2
+	movne	r3, fp
+	str	r4, [sp]
+	moveq	r3, #0
+	and	r2, r2, #3
+	mov	r1, #0
+	mov	r0, r6
+	bl	NandcCopy1KB
+	ldr	r3, [sp, #12]
+	add	fp, fp, #1024
+	add	r4, r4, r3
+	b	.L1463
+.L1485:
 	.align	2
-.L1489:
+.L1484:
 	.word	.LANCHOR0
 	.fnend
 	.size	NandcXferData, .-NandcXferData
 	.align	2
 	.global	FlashReadRawPage
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReadRawPage, %function
 FlashReadRawPage:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r4, r5, r6, r7, r8, lr}
+	push	{r0, r1, r4, r5, r6, r7, r8, lr}
 	.save {r4, r5, r6, r7, r8, lr}
 	.pad #8
 	mov	r8, r3
-	ldr	r3, .L1494
+	ldr	r3, .L1489
 	subs	r4, r0, #0
 	mov	r6, r1
 	mov	r7, r2
-	ldrb	r5, [r3, #481]	@ zero_extendqisi2
-	bne	.L1492
-	ldr	r2, .L1494+4
-	ldrb	r3, [r2, #1]	@ zero_extendqisi2
-	ldr	r2, [r2, #4]
-	mul	r2, r2, r3
-	cmp	r1, r2
-	movcc	r5, #4
-.L1492:
+	ldrb	r5, [r3, #477]	@ zero_extendqisi2
+	bne	.L1487
+	ldr	r1, .L1489+4
+	ldrb	r3, [r1, #37]	@ zero_extendqisi2
+	ldr	r0, [r1, #40]
+	mul	r0, r0, r3
+	cmp	r0, r6
+	movhi	r5, #4
+.L1487:
 	mov	r0, r4
 	bl	NandcWaitFlashReady
 	mov	r0, r4
@@ -8845,181 +9337,177 @@
 	bl	FlashReadCmd
 	mov	r0, r4
 	bl	NandcWaitFlashReady
-	mov	r2, r5
-	mov	r1, #0
 	mov	r3, r7
-	mov	r0, r4
+	mov	r2, r5
 	str	r8, [sp]
+	mov	r1, #0
+	mov	r0, r4
 	bl	NandcXferData
-	mov	r5, r0
+	mov	r1, r0
 	mov	r0, r4
 	bl	NandcFlashDeCs
-	mov	r0, r5
+	mov	r0, r1
 	add	sp, sp, #8
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L1495:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L1490:
 	.align	2
-.L1494:
+.L1489:
 	.word	.LANCHOR1
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashReadRawPage, .-FlashReadRawPage
 	.align	2
 	.global	FlashDdrTunningRead
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashDdrTunningRead, %function
 FlashDdrTunningRead:
 	.fnstart
 	@ args = 4, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	mov	r7, r3
-	ldr	r4, .L1523
+	ldr	r4, .L1517
 	.pad #20
 	sub	sp, sp, #20
-	mov	r10, r0
 	mov	fp, r2
-	str	r1, [sp]
-	ldr	r3, [r4, #80]
+	stm	sp, {r0, r1}
+	ldr	r3, [r4, #88]
 	ldr	r3, [r3, #304]
-	str	r3, [sp, #8]
-	ldr	r3, [r4, #2260]
+	str	r3, [sp, #12]
+	ldr	r3, [r4, #2264]
 	cmp	r3, #8
 	ldr	r3, [sp, #56]
-	movcc	r9, #6
-	movcs	r9, #12
+	movcc	r10, #6
+	movcs	r10, #12
 	cmp	r3, #0
-	moveq	r6, #1024
-	beq	.L1498
+	moveq	r5, #1024
+	beq	.L1493
 	mov	r0, #1
 	bl	FlashSetInterfaceMode
 	mov	r0, #1
 	bl	NandcSetMode
-	mov	r0, r10
+	ldr	r0, [sp]
 	bl	FlashReset
-	mov	r2, fp
 	mov	r3, r7
-	mov	r0, r10
-	ldr	r1, [sp]
+	mov	r2, fp
+	ldm	sp, {r0, r1}
 	bl	FlashReadRawPage
-	mov	r6, r0
-	ldrb	r0, [r4, #2229]	@ zero_extendqisi2
+	mov	r5, r0
+	ldrb	r0, [r4, #2233]	@ zero_extendqisi2
 	bl	FlashSetInterfaceMode
-	ldrb	r0, [r4, #2229]	@ zero_extendqisi2
+	ldrb	r0, [r4, #2233]	@ zero_extendqisi2
 	bl	NandcSetMode
-	cmn	r6, #1
-	bne	.L1499
-.L1508:
-	mvn	r6, #0
-	b	.L1500
-.L1499:
-	mov	r2, r6
-	ldr	r0, .L1523+4
-	ldr	r1, [sp]
+	cmn	r5, #1
+	bne	.L1494
+.L1503:
+	mvn	r5, #0
+.L1491:
+	mov	r0, r5
+	add	sp, sp, #20
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1494:
+	mov	r2, r5
+	ldr	r1, [sp, #4]
+	ldr	r0, .L1517+4
 	bl	printk
-	cmp	r6, #9
-	addls	r4, r4, r10, asl #3
-	ldrls	r3, [r4, #12]
-	ldr	r4, .L1523+8
+	cmp	r5, #9
+	ldrls	r3, [sp]
+	ldrls	r3, [r4, r3, lsl #3]
 	ldrls	r2, [r3, #3840]
 	ldrls	r2, [r3]
 	orrls	r2, r2, #131072
 	strls	r2, [r3]
-	ldr	r3, [r4, #1692]
+	ldr	r2, .L1517+8
+	ldr	r3, [r2, #1700]
 	add	r3, r3, #1
-	str	r3, [r4, #1692]
 	cmp	r3, #2048
+	str	r3, [r2, #1700]
 	movcs	r7, #0
-	strcs	r7, [r4, #1692]
+	strcs	r7, [r2, #1700]
 	movcs	fp, r7
-	bcc	.L1500
-.L1498:
-	mov	r4, #0
+	bcc	.L1491
+.L1493:
+	mov	r9, #0
 	mvn	r8, #0
-	mov	ip, r4
-	mov	r5, r4
-	str	r4, [sp, #4]
-.L1506:
-	uxtb	r0, r9
-	str	ip, [sp, #12]
+	mov	r6, r9
+	mov	r4, r9
+	str	r9, [sp, #8]
+.L1501:
+	uxtb	r0, r10
 	bl	NandcSetDdrPara
 	mov	r3, r7
-	mov	r0, r10
 	mov	r2, fp
-	ldr	r1, [sp]
+	ldm	sp, {r0, r1}
 	bl	FlashReadRawPage
-	add	r3, r6, #1
+	add	r3, r5, #1
 	cmp	r0, r3
-	ldr	ip, [sp, #12]
-	bhi	.L1502
+	bhi	.L1497
 	cmp	r0, #2
-	bhi	.L1512
-	add	r5, r5, #1
-	cmp	r5, #9
-	bls	.L1512
-	rsb	r4, r5, r9
-	mov	r6, r0
+	bhi	.L1507
+	add	r4, r4, #1
+	cmp	r4, #9
+	bls	.L1507
+	mov	r3, r6
+	mov	r5, r0
+	sub	r6, r10, r4
 	mov	r8, #0
-	b	.L1504
-.L1502:
-	ldr	r3, [sp, #4]
-	cmp	r3, r5
-	bcs	.L1513
-	cmp	r5, #7
-	rsb	ip, r5, r4
-	bhi	.L1514
-	str	r5, [sp, #4]
-	b	.L1513
-.L1512:
-	mov	r8, #0
-	mov	r4, r9
-	mov	r6, r0
-	mov	r7, r8
-	mov	fp, r8
-	b	.L1503
-.L1513:
-	mov	r5, #0
-.L1503:
-	add	r9, r9, #2
-	cmp	r9, #69
-	bls	.L1506
-.L1504:
-	ldr	r3, [sp, #4]
-	cmp	r3, r5
-	movcs	r4, ip
-	b	.L1505
-.L1514:
-	mov	r4, ip
-.L1505:
-	cmp	r4, #0
-	beq	.L1507
-	ldr	r0, .L1523+12
-	mov	r1, r4
+.L1499:
+	ldr	r2, [sp, #8]
+	cmp	r4, r2
+	movls	r6, r3
+.L1500:
+	cmp	r6, #0
+	beq	.L1502
+	mov	r1, r6
+	ldr	r0, .L1517+12
 	bl	printk
-	uxtb	r0, r4
+	uxtb	r0, r6
 	bl	NandcSetDdrPara
-.L1507:
+.L1502:
 	cmn	r8, #1
-	bne	.L1500
-	ldr	r0, .L1523+16
-	mov	r1, r10
-	ldr	r2, [sp]
+	bne	.L1491
+	ldm	sp, {r1, r2}
+	ldr	r0, .L1517+16
 	bl	printk
 	ldr	r3, [sp, #56]
 	cmp	r3, #0
-	beq	.L1508
-	ldr	r3, [sp, #8]
+	beq	.L1503
+	ldr	r3, [sp, #12]
 	ubfx	r0, r3, #8, #8
 	bl	NandcSetDdrPara
-.L1500:
-	mov	r0, r6
-	add	sp, sp, #20
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1524:
+	b	.L1491
+.L1497:
+	ldr	r3, [sp, #8]
+	cmp	r4, r3
+	bls	.L1508
+	cmp	r4, #7
+	sub	r6, r9, r4
+	bhi	.L1500
+	str	r4, [sp, #8]
+.L1508:
+	mov	r4, #0
+	b	.L1498
+.L1507:
+	mov	r8, #0
+	mov	r9, r10
+	mov	r5, r0
+	mov	r7, r8
+	mov	fp, r8
+.L1498:
+	add	r10, r10, #2
+	cmp	r10, #69
+	bls	.L1501
+	mov	r3, r6
+	mov	r6, r9
+	b	.L1499
+.L1518:
 	.align	2
-.L1523:
+.L1517:
 	.word	.LANCHOR0
 	.word	.LC90
 	.word	.LANCHOR2
@@ -9029,110 +9517,110 @@
 	.size	FlashDdrTunningRead, .-FlashDdrTunningRead
 	.align	2
 	.global	FlashReadPage
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReadPage, %function
 FlashReadPage:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r5, r0
 	mov	r6, r1
-	mov	r8, r2
-	mov	r7, r3
+	mov	r7, r2
+	mov	r8, r3
 	bl	FlashReadRawPage
 	cmn	r0, #1
 	mov	r4, r0
-	bne	.L1526
-	ldr	r9, .L1546
-	ldrb	fp, [r9, #8]	@ zero_extendqisi2
+	bne	.L1520
+	ldr	r9, .L1539
+	ldrb	fp, [r9, #44]	@ zero_extendqisi2
 	mov	r10, r9
 	cmp	fp, #0
-	bne	.L1527
-.L1529:
-	ldrb	r3, [r10, #2252]	@ zero_extendqisi2
-	ldr	r9, .L1546
+	bne	.L1521
+.L1523:
+	ldrb	r3, [r10, #2256]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L1526
-	b	.L1545
-.L1527:
-	mov	r3, #0
-	mov	r0, r5
-	strb	r3, [r9, #8]
+	beq	.L1520
+	ldr	r3, [r10, #88]
+	mov	r2, r7
 	mov	r1, r6
-	mov	r2, r8
-	mov	r3, r7
-	bl	FlashReadRawPage
-	strb	fp, [r9, #8]
-	cmn	r0, #1
-	movne	r4, r0
-	beq	.L1529
-	b	.L1526
-.L1545:
-	ldr	r3, [r9, #80]
 	mov	r0, r5
-	mov	r1, r6
-	mov	r2, r8
-	ldr	r10, [r3, #304]
+	ldr	r9, [r3, #304]
 	mov	r3, #1
 	str	r3, [sp]
-	mov	r3, r7
+	mov	r3, r8
 	bl	FlashDdrTunningRead
 	cmn	r0, #1
 	mov	r4, r0
-	beq	.L1530
-	ldrb	r3, [r9, #2312]	@ zero_extendqisi2
+	beq	.L1524
+	ldrb	r3, [r10, #2316]	@ zero_extendqisi2
 	cmp	r0, r3, lsr #1
-	bls	.L1526
-.L1530:
-	ubfx	r0, r10, #8, #8
+	bls	.L1520
+.L1524:
+	ubfx	r0, r9, #8, #8
 	bl	NandcSetDdrPara
-.L1526:
-	ldr	r9, .L1546+4
-	ldr	ip, [r9, #1696]
-	adds	r3, ip, #0
+	b	.L1520
+.L1521:
+	mov	r3, #0
+	mov	r2, r7
+	strb	r3, [r9, #44]
+	mov	r1, r6
+	mov	r3, r8
+	mov	r0, r5
+	bl	FlashReadRawPage
+	cmn	r0, #1
+	strb	fp, [r9, #44]
+	movne	r4, r0
+	beq	.L1523
+.L1520:
+	ldr	r9, .L1539+4
+	ldr	r10, [r9, #1704]
+	adds	r3, r10, #0
 	movne	r3, #1
 	cmn	r4, #1
 	movne	r3, #0
 	cmp	r3, #0
-	beq	.L1531
+	beq	.L1519
+	mov	r3, r8
+	mov	r2, r7
 	mov	r1, r6
-	mov	r2, r8
-	mov	r3, r7
 	mov	r0, r5
-	blx	ip
-	mov	r2, r5
+	blx	r10
 	mov	r3, r6
 	mov	r4, r0
-	ldr	r0, .L1546+8
-	mov	r1, r4
+	mov	r1, r0
+	mov	r2, r5
+	ldr	r0, .L1539+8
 	bl	printk
 	cmn	r4, #1
-	bne	.L1531
-	ldr	r3, .L1546
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
+	bne	.L1519
+	ldr	r3, .L1539
+	ldrb	r3, [r3, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L1531
+	beq	.L1519
 	mov	r0, r5
 	bl	flash_enter_slc_mode
-	ldr	ip, [r9, #1696]
-	mov	r0, r5
+	ldr	r4, [r9, #1704]
+	mov	r3, r8
+	mov	r2, r7
 	mov	r1, r6
-	mov	r2, r8
-	mov	r3, r7
-	blx	ip
+	mov	r0, r5
+	blx	r4
 	mov	r4, r0
 	mov	r0, r5
 	bl	flash_exit_slc_mode
-.L1531:
+.L1519:
 	mov	r0, r4
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1547:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1540:
 	.align	2
-.L1546:
+.L1539:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.word	.LC93
@@ -9140,587 +9628,601 @@
 	.size	FlashReadPage, .-FlashReadPage
 	.align	2
 	.global	FlashDdrParaScan
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashDdrParaScan, %function
 FlashDdrParaScan:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r4, r5, r6, r7, r8, lr}
+	push	{r0, r1, r4, r5, r6, r7, r8, lr}
 	.save {r4, r5, r6, r7, r8, lr}
 	.pad #8
-	mov	r7, r0
-	ldr	r5, .L1558
-	mov	r6, r1
+	mov	r6, r0
+	ldr	r5, .L1551
 	mov	r4, #0
-	ldrb	r0, [r5, #2229]	@ zero_extendqisi2
+	mov	r7, r1
+	ldrb	r0, [r5, #2233]	@ zero_extendqisi2
 	bl	FlashSetInterfaceMode
-	ldrb	r0, [r5, #2229]	@ zero_extendqisi2
+	ldrb	r0, [r5, #2233]	@ zero_extendqisi2
 	bl	NandcSetMode
-	mov	r1, r6
-	mov	r2, r4
 	mov	r3, r4
-	mov	r0, r7
+	mov	r2, r4
+	mov	r1, r7
 	str	r4, [sp]
+	mov	r0, r6
 	bl	FlashDdrTunningRead
 	mov	r3, r4
-	mov	r1, r6
-	mov	r2, r4
 	mov	r8, r0
-	mov	r0, r7
+	mov	r2, r4
+	mov	r1, r7
+	mov	r0, r6
 	bl	FlashReadRawPage
+	cmn	r8, #1
+	cmnne	r0, #1
 	mov	r3, r5
-	cmn	r0, #1
-	cmnne	r8, #1
-	bne	.L1549
-	ldrb	r2, [r5, #2229]	@ zero_extendqisi2
+	bne	.L1542
+	ldrb	r2, [r5, #2233]	@ zero_extendqisi2
 	tst	r2, #1
-	beq	.L1549
+	beq	.L1542
 	mov	r0, #1
 	bl	FlashSetInterfaceMode
 	mov	r0, #1
 	bl	NandcSetMode
-	strb	r4, [r5, #2252]
-	b	.L1550
-.L1549:
-	mov	r2, #1
-	strb	r2, [r3, #2252]
-.L1550:
+	strb	r4, [r5, #2256]
+.L1543:
 	mov	r0, #0
 	add	sp, sp, #8
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L1559:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L1542:
+	mov	r2, #1
+	strb	r2, [r3, #2256]
+	b	.L1543
+.L1552:
 	.align	2
-.L1558:
+.L1551:
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashDdrParaScan, .-FlashDdrParaScan
 	.align	2
 	.global	FlashLoadPhyInfo
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashLoadPhyInfo, %function
 FlashLoadPhyInfo:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	mov	r3, #60
 	.pad #20
 	sub	sp, sp, #20
-	ldr	r3, .L1576
-	mov	r4, #0
-	ldr	r7, .L1576+4
-	mov	r9, #4
-	ldr	r5, .L1576+8
-	mvn	r8, #0
-	ldr	r0, [r3]	@ unaligned
-	ldr	r3, [r7, #4]
-	str	r4, [r5, #1704]
-	mov	r6, r5
-	str	r0, [sp, #12]	@ unaligned
-	mov	r0, r4
+	ldr	r6, .L1568
+	mov	r5, #0
+	mov	r8, #4
+	strb	r3, [sp, #12]
+	mov	r3, #40
+	strb	r3, [sp, #13]
+	mov	r3, #24
+	strb	r3, [sp, #14]
+	mov	r3, #16
+	ldr	r4, .L1568+4
+	mvn	r7, #0
+	strb	r3, [sp, #15]
+	mov	r0, r5
+	ldr	r3, [r6, #40]
+	str	r5, [r4, #1712]
 	str	r3, [sp, #4]
-	ldr	r3, [r5, #1688]
-	str	r3, [r5, #1700]
+	ldr	r3, [r4, #1696]
+	str	r3, [r4, #1708]
 	bl	flash_enter_slc_mode
-.L1561:
-	add	fp, r4, #1
-	mov	r10, #0
-.L1563:
-	add	r3, sp, #12
-	ldrb	r0, [r3, r10]	@ zero_extendqisi2
+.L1554:
+	add	fp, r5, #1
+	mov	r9, #0
+	add	r10, sp, #12
+.L1556:
+	ldrb	r0, [r10, r9]	@ zero_extendqisi2
 	bl	FlashBchSel
-	mov	r0, #0
-	mov	r1, r4
-	ldr	r2, [r5, #1688]
-	mov	r3, r0
+	mov	r3, #0
+	ldr	r2, [r4, #1696]
+	mov	r1, r5
+	mov	r0, r3
 	bl	FlashReadRawPage
 	cmn	r0, #1
-	bne	.L1562
-	mov	r0, #0
+	bne	.L1555
+	mov	r3, #0
+	ldr	r2, [r4, #1696]
 	mov	r1, fp
-	ldr	r2, [r6, #1688]
-	mov	r3, r0
+	mov	r0, r3
 	bl	FlashReadRawPage
 	cmn	r0, #1
-	bne	.L1562
-	add	r10, r10, #1
-	cmp	r10, #4
-	beq	.L1564
-	b	.L1563
-.L1565:
-	add	r0, fp, #12
-	movw	r1, #2036
-	bl	js_hash
-	ldr	r3, [fp, #8]
-	cmp	r3, r0
-	mvnne	r8, #0
-	bne	.L1564
-	ldr	r8, .L1576+12
-	add	r1, fp, #160
-	mov	r2, #32
+	bne	.L1555
+	add	r9, r9, #1
+	cmp	r9, #4
+	bne	.L1556
+.L1557:
+	ldr	r3, [sp, #4]
+	subs	r8, r8, #1
+	add	r5, r5, r3
+	bne	.L1554
 	mov	r0, r8
-	bl	ftl_memcpy
-	ldr	r1, [r6, #1700]
+	b	.L1567
+.L1558:
+	movw	r1, #2036
+	add	r0, r9, #12
+	bl	js_hash
+	ldr	r3, [r9, #8]
+	cmp	r3, r0
+	mvnne	r7, #0
+	bne	.L1557
 	mov	r2, #32
-	ldr	r0, .L1576+16
+	add	r1, r9, #160
+	ldr	r0, .L1568+8
+	bl	ftl_memcpy
+	ldr	r1, [r4, #1708]
+	mov	r2, #32
+	ldr	r0, .L1568+12
 	add	r1, r1, #192
 	bl	ftl_memcpy
-	ldr	r1, [r6, #1700]
+	ldr	r1, [r4, #1708]
 	mov	r2, #852
-	ldr	r0, .L1576+20
+	ldr	r0, .L1568+16
 	add	r1, r1, #224
 	bl	ftl_memcpy
-	ldrh	r0, [r8, #10]
+	ldr	r3, .L1568+8
+	ldrh	r0, [r3, #10]
 	bl	FlashBlockAlignInit
-	ldr	r8, [r6, #1700]
-	str	r4, [r6, #1704]
-	mov	r0, r4
-	ldr	r1, [r7, #4]
-	ldr	r3, [r8, #1076]
-	strb	r3, [r7, #2252]
+	ldr	r7, [r4, #1708]
+	mov	r0, r5
+	str	r5, [r4, #1712]
+	ldr	r1, [r6, #40]
+	ldr	r3, [r7, #1076]
+	strb	r3, [r6, #2256]
 	bl	__aeabi_uidiv
 	add	r0, r0, #1
 	cmp	r0, #1
-	strhi	r0, [r6, #1708]
 	movls	r3, #2
-	strls	r3, [r6, #1708]
-	ldrh	r3, [r8, #14]
-	mov	r8, #0
-	strb	r3, [r5, #1712]
-.L1564:
-	ldr	r3, [sp, #4]
-	subs	r9, r9, #1
-	add	r4, r4, r3
-	bne	.L1561
-	mov	r0, r9
-.L1575:
+	strhi	r0, [r4, #1716]
+	strls	r3, [r4, #1716]
+	ldrh	r3, [r7, #14]
+	mov	r7, #0
+	strb	r3, [r4, #1720]
+	b	.L1557
+.L1555:
+	ldr	r9, [r4, #1708]
+	ldr	r2, .L1568+20
+	ldr	r3, [r9]
+	cmp	r3, r2
+	bne	.L1557
+	cmp	r7, #0
+	bne	.L1558
+	ldr	r1, [r6, #40]
+	mov	r0, r5
+	bl	__aeabi_uidiv
+	add	r0, r0, #1
+	str	r0, [r4, #1716]
+	mov	r0, r7
+.L1567:
 	bl	flash_exit_slc_mode
-	mov	r0, r8
+	mov	r0, r7
 	add	sp, sp, #20
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1562:
-	ldr	fp, [r5, #1700]
-	ldr	r2, .L1576+24
-	ldr	r3, [fp]
-	cmp	r3, r2
-	bne	.L1564
-	cmp	r8, #0
-	bne	.L1565
-	mov	r0, r4
-	ldr	r1, [r7, #4]
-	bl	__aeabi_uidiv
-	ldr	r3, .L1576+8
-	add	r0, r0, #1
-	str	r0, [r3, #1708]
-	mov	r0, r8
-	b	.L1575
-.L1577:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1569:
 	.align	2
-.L1576:
-	.word	.LANCHOR3+11
+.L1568:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR1+472
-	.word	.LANCHOR0+48
-	.word	.LANCHOR0+1210
+	.word	.LANCHOR1+468
+	.word	.LANCHOR0+52
+	.word	.LANCHOR0+1216
 	.word	1312902724
 	.fnend
 	.size	FlashLoadPhyInfo, .-FlashLoadPhyInfo
 	.align	2
 	.global	ToshibaReadRetrial
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ToshibaReadRetrial, %function
 ToshibaReadRetrial:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 24
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	mov	r8, r0
+	ldr	r4, .L1598
 	.pad #28
 	sub	sp, sp, #28
-	mov	r9, r0
 	mov	fp, r3
+	str	r1, [sp, #12]
 	str	r2, [sp, #8]
-	str	r1, [sp, #16]
 	bl	NandcWaitFlashReady
-	ldr	r4, .L1607
-	add	r3, r4, r9, asl #3
-	ldrb	r2, [r3, #16]	@ zero_extendqisi2
-	ldr	r6, [r3, #12]
-	ldrb	r3, [r4, #1208]	@ zero_extendqisi2
-	add	r7, r2, #8
+	add	r3, r4, r8, lsl #3
+	ldr	r6, [r4, r8, lsl #3]
+	ldrb	r1, [r3, #4]	@ zero_extendqisi2
+	ldrb	r3, [r4, #84]	@ zero_extendqisi2
+	add	r7, r1, #8
 	sub	r3, r3, #67
-	add	r7, r6, r7, asl #8
+	add	r7, r6, r7, lsl #8
 	cmp	r3, #1
-	mov	r3, r2, asl #8
-	str	r3, [sp, #12]
-	movls	r3, #0
-	strls	r3, [sp, #4]
-	bls	.L1579
-	ldrb	r5, [r4, #2252]	@ zero_extendqisi2
+	lsl	r3, r1, #8
+	movls	r5, #0
+	str	r3, [sp, #16]
+	bls	.L1571
+	ldrb	r5, [r4, #2256]	@ zero_extendqisi2
 	cmp	r5, #0
-	streq	r5, [sp, #4]
-	beq	.L1580
+	beq	.L1572
+	mov	r5, #1
 	mov	r0, #0
-	str	r2, [sp, #20]
 	bl	NandcSetDdrMode
-	mov	r3, #1
-	ldr	r2, [sp, #20]
-	str	r3, [sp, #4]
-.L1580:
-	ldr	r3, [sp, #12]
-	mov	r1, #92
+.L1572:
+	lsl	r3, r1, #8
+	mov	r2, #92
 	add	r3, r6, r3
-	str	r1, [r3, #2056]
-	mov	r1, #197
-	str	r1, [r3, #2056]
-.L1579:
-	mov	r8, #1
-	mvn	r10, #0
-	mov	r3, r2, asl #8
+	str	r2, [r3, #2056]
+	mov	r2, #197
+	str	r2, [r3, #2056]
+.L1571:
+	mvn	r3, #0
+	mov	r9, #1
+	str	r3, [sp, #4]
+	lsl	r3, r1, #8
 	str	r3, [sp, #20]
-.L1581:
-	ldr	r3, .L1607+4
-	ldrb	r3, [r3, #1713]	@ zero_extendqisi2
+.L1573:
+	ldr	r3, .L1598+4
+	ldrb	r3, [r3, #1721]	@ zero_extendqisi2
 	add	r3, r3, #1
-	cmp	r8, r3
-	bcs	.L1606
-	ldrb	r3, [r4, #1208]	@ zero_extendqisi2
+	cmp	r9, r3
+	bcc	.L1582
+	ldr	r10, [sp, #4]
+.L1581:
+	ldrb	r2, [r4, #84]	@ zero_extendqisi2
+	mov	r1, #0
 	mov	r0, r7
-	uxtb	r1, r8
+	sub	r2, r2, #67
+	cmp	r2, #1
+	bhi	.L1583
+	bl	SandiskSetRRPara
+.L1584:
+	ldr	r3, [sp, #16]
+	mov	r2, #255
+	add	r6, r6, r3
+	str	r2, [r6, #2056]
+	ldrb	r2, [r4, #2316]	@ zero_extendqisi2
+	add	r2, r2, r2, lsl #1
+	cmp	r10, r2, asr #2
+	bcc	.L1585
+	cmn	r10, #1
+	movne	r10, #256
+.L1585:
+	mov	r0, r8
+	bl	NandcWaitFlashReady
+	cmp	r5, #0
+	beq	.L1570
+	mov	r0, #4
+	bl	NandcSetDdrMode
+.L1570:
+	mov	r0, r10
+	add	sp, sp, #28
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1582:
+	ldrb	r3, [r4, #84]	@ zero_extendqisi2
+	mov	r0, r7
+	uxtb	r1, r9
 	sub	r3, r3, #67
 	cmp	r3, #1
-	bhi	.L1582
+	bhi	.L1574
 	bl	SandiskSetRRPara
-	b	.L1583
-.L1582:
-	bl	ToshibaSetRRPara
-.L1583:
-	ldrb	r3, [r4, #1208]	@ zero_extendqisi2
+.L1575:
+	ldrb	r3, [r4, #84]	@ zero_extendqisi2
 	cmp	r3, #34
-	bne	.L1584
-	ldr	r3, .L1607+4
-	ldrb	r3, [r3, #1713]	@ zero_extendqisi2
+	bne	.L1576
+	ldr	r3, .L1598+4
+	ldrb	r3, [r3, #1721]	@ zero_extendqisi2
 	sub	r3, r3, #3
-	cmp	r8, r3
+	cmp	r9, r3
 	ldreq	r3, [sp, #20]
 	moveq	r2, #179
 	addeq	r3, r6, r3
 	streq	r2, [r3, #2056]
-.L1584:
-	ldr	r3, [sp, #12]
+.L1576:
+	ldr	r3, [sp, #16]
 	mov	r2, #38
+	cmp	r5, #0
 	add	r3, r6, r3
 	str	r2, [r3, #2056]
 	mov	r2, #93
 	str	r2, [r3, #2056]
-	ldr	r3, [sp, #4]
-	cmp	r3, #0
-	beq	.L1585
+	beq	.L1577
 	mov	r0, #4
 	bl	NandcSetDdrMode
-	mov	r0, r9
 	mov	r3, fp
-	ldr	r1, [sp, #16]
 	ldr	r2, [sp, #8]
+	ldr	r1, [sp, #12]
+	mov	r0, r8
 	bl	FlashReadRawPage
-	mov	r5, r0
+	mov	r10, r0
 	mov	r0, #0
 	bl	NandcSetDdrMode
-	b	.L1586
-.L1585:
-	mov	r0, r9
-	ldr	r1, [sp, #16]
-	ldr	r2, [sp, #8]
-	mov	r3, fp
-	bl	FlashReadRawPage
-	mov	r5, r0
-.L1586:
-	cmn	r5, #1
-	beq	.L1587
-	ldrb	r2, [r4, #2312]	@ zero_extendqisi2
+.L1578:
 	cmn	r10, #1
-	moveq	r10, r5
-	add	r2, r2, r2, asl #1
-	cmp	r5, r2, asr #2
-	bcc	.L1589
+	beq	.L1579
+	ldrb	r2, [r4, #2316]	@ zero_extendqisi2
+	ldr	r3, [sp, #4]
+	add	r2, r2, r2, lsl #1
+	cmn	r3, #1
+	moveq	r3, r10
+	cmp	r10, r2, asr #2
+	str	r3, [sp, #4]
+	bcc	.L1581
 	mov	fp, #0
 	str	fp, [sp, #8]
-.L1587:
-	add	r8, r8, #1
-	b	.L1581
-.L1606:
-	mov	r5, r10
-.L1589:
-	ldrb	r2, [r4, #1208]	@ zero_extendqisi2
-	mov	r0, r7
-	mov	r1, #0
-	sub	r2, r2, #67
-	cmp	r2, #1
-	bhi	.L1591
-	bl	SandiskSetRRPara
-	b	.L1592
-.L1591:
+.L1579:
+	add	r9, r9, #1
+	b	.L1573
+.L1574:
 	bl	ToshibaSetRRPara
-.L1592:
-	ldr	r3, [sp, #12]
-	mov	r2, #255
-	add	r6, r6, r3
-	str	r2, [r6, #2056]
-	ldrb	r2, [r4, #2312]	@ zero_extendqisi2
-	add	r2, r2, r2, asl #1
-	cmp	r5, r2, asr #2
-	bcc	.L1593
-	cmn	r5, #1
-	movne	r5, #256
-.L1593:
-	mov	r0, r9
-	bl	NandcWaitFlashReady
-	ldr	r3, [sp, #4]
-	cmp	r3, #0
-	beq	.L1594
-	mov	r0, #4
-	bl	NandcSetDdrMode
-.L1594:
-	mov	r0, r5
-	add	sp, sp, #28
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1608:
+	b	.L1575
+.L1577:
+	mov	r3, fp
+	ldr	r2, [sp, #8]
+	ldr	r1, [sp, #12]
+	mov	r0, r8
+	bl	FlashReadRawPage
+	mov	r10, r0
+	b	.L1578
+.L1583:
+	bl	ToshibaSetRRPara
+	b	.L1584
+.L1599:
 	.align	2
-.L1607:
+.L1598:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.fnend
 	.size	ToshibaReadRetrial, .-ToshibaReadRetrial
 	.align	2
 	.global	SamsungReadRetrial
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	SamsungReadRetrial, %function
 SamsungReadRetrial:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 8
+	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {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, r0
-	ldr	r5, .L1623
-	mov	r10, r2
-	mov	r8, r3
+	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	mov	r8, r0
+	ldr	r5, .L1614
+	mov	r9, r3
 	mov	fp, r1
+	mov	r10, r2
 	bl	NandcWaitFlashReady
-	add	r2, r5, r9, asl #3
-	ldr	ip, .L1623+4
 	mov	r7, #1
-	ldrb	r3, [r2, #16]	@ zero_extendqisi2
 	mvn	r4, #0
-	ldr	r6, [r2, #12]
-	add	r3, r3, #8
-	add	r6, r6, r3, asl #8
-.L1610:
-	ldrb	r3, [ip, #1713]	@ zero_extendqisi2
+	add	r3, r5, r8, lsl #3
+	ldrb	r6, [r3, #4]	@ zero_extendqisi2
+	add	r3, r6, #8
+	ldr	r6, [r5, r8, lsl #3]
+	add	r6, r6, r3, lsl #8
+.L1601:
+	ldr	r3, .L1614+4
+	ldrb	r3, [r3, #1721]	@ zero_extendqisi2
 	add	r3, r3, #1
 	cmp	r7, r3
-	bcs	.L1613
-	mov	r0, r6
-	uxtb	r1, r7
-	str	ip, [sp, #4]
-	bl	SamsungSetRRPara
-	mov	r0, r9
-	mov	r1, fp
-	mov	r2, r10
-	mov	r3, r8
-	bl	FlashReadRawPage
-	cmn	r0, #1
-	ldr	ip, [sp, #4]
-	beq	.L1611
-	ldrb	r3, [r5, #2312]	@ zero_extendqisi2
-	cmn	r4, #1
-	moveq	r4, r0
-	add	r3, r3, r3, asl #1
-	cmp	r0, r3, asr #2
-	bcc	.L1616
-	mov	r8, #0
-	mov	r10, r8
-.L1611:
-	add	r7, r7, #1
-	b	.L1610
-.L1616:
-	mov	r4, r0
-.L1613:
-	mov	r0, r6
+	bcc	.L1605
+.L1604:
 	mov	r1, #0
+	mov	r0, r6
 	bl	SamsungSetRRPara
-	ldrb	r3, [r5, #2312]	@ zero_extendqisi2
-	add	r3, r3, r3, asl #1
+	ldrb	r3, [r5, #2316]	@ zero_extendqisi2
+	add	r3, r3, r3, lsl #1
 	cmp	r4, r3, asr #2
-	bcc	.L1615
+	bcc	.L1600
 	cmn	r4, #1
 	movne	r4, #256
-.L1615:
+.L1600:
 	mov	r0, r4
-	add	sp, sp, #12
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1624:
+	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1605:
+	uxtb	r1, r7
+	mov	r0, r6
+	bl	SamsungSetRRPara
+	mov	r3, r9
+	mov	r2, r10
+	mov	r1, fp
+	mov	r0, r8
+	bl	FlashReadRawPage
+	cmn	r0, #1
+	beq	.L1602
+	ldrb	r3, [r5, #2316]	@ zero_extendqisi2
+	cmn	r4, #1
+	moveq	r4, r0
+	add	r3, r3, r3, lsl #1
+	cmp	r0, r3, asr #2
+	bcc	.L1608
+	mov	r9, #0
+	mov	r10, r9
+.L1602:
+	add	r7, r7, #1
+	b	.L1601
+.L1608:
+	mov	r4, r0
+	b	.L1604
+.L1615:
 	.align	2
-.L1623:
+.L1614:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.fnend
 	.size	SamsungReadRetrial, .-SamsungReadRetrial
 	.align	2
 	.global	MicronReadRetrial
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	MicronReadRetrial, %function
 MicronReadRetrial:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 24
+	@ args = 0, pretend = 0, frame = 32
 	@ frame_needed = 0, uses_anonymous_args = 0
-.L1627:
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+.L1618:
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r8, r3
-	ldr	r3, .L1651
-	mov	fp, r2
-	.pad #36
-	sub	sp, sp, #36
-	mov	r6, r0
-	mov	r10, #0
-	ldrb	r5, [r3, #2312]	@ zero_extendqisi2
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
-	str	r1, [sp, #20]
+	mov	r7, r3
+	ldr	r3, .L1642
+	mov	r10, r2
+	.pad #44
+	sub	sp, sp, #44
+	mov	r5, r0
+	ldr	fp, .L1642
+	ldrb	r2, [r3, #2316]	@ zero_extendqisi2
+	ldrb	r3, [r3, #152]	@ zero_extendqisi2
+	str	r1, [sp, #28]
 	cmp	r3, #0
-	addeq	r5, r5, r5, asl #1
-	ldrne	r2, .L1651+4
-	ubfxeq	r5, r5, #2, #8
-	smullne	r2, r3, r5, r2
-	uxtbne	r5, r3
-	ldr	r3, .L1651
-	add	r3, r3, r0, asl #3
-	str	r3, [sp, #24]
-.L1637:
-	mov	r0, r6
+	ldrne	r3, .L1642+4
+	addeq	r2, r2, r2, lsl #1
+	asreq	r3, r2, #2
+	smullne	r2, r3, r2, r3
+	str	r3, [sp, #12]
+	mov	r3, #0
+	str	r3, [sp, #16]
+	add	r3, fp, r0, lsl #3
+	str	r3, [sp, #36]
+.L1628:
+	mov	r0, r5
 	mov	r9, #0
 	bl	NandcWaitFlashReady
+	ldr	r3, [fp, r5, lsl #3]
 	mvn	r4, #0
-	ldr	r3, [sp, #24]
-	ldr	r3, [r3, #12]
-	str	r3, [sp, #12]
-	ldr	r3, [sp, #24]
-	ldrb	r3, [r3, #16]	@ zero_extendqisi2
-	str	r3, [sp, #16]
-	ldr	r2, [sp, #16]
-	ldr	r3, [sp, #12]
-	add	r7, r3, r2, asl #8
-.L1628:
-	ldr	r3, .L1651+8
-	ldrb	r3, [r3, #1713]	@ zero_extendqisi2
+	str	r3, [sp, #20]
+	ldr	r3, [sp, #36]
+	ldrb	r3, [r3, #4]	@ zero_extendqisi2
+	str	r3, [sp, #24]
+	ldr	r2, [sp, #24]
+	ldr	r3, [sp, #20]
+	add	r6, r3, r2, lsl #8
+.L1619:
+	ldr	r3, .L1642+8
+	ldrb	r3, [r3, #1721]	@ zero_extendqisi2
 	cmp	r9, r3
-	bcs	.L1631
+	bcc	.L1623
+.L1622:
+	ldr	r3, [sp, #20]
+	mov	r0, #200
+	ldr	r2, [sp, #24]
+	add	r6, r3, r2, lsl #8
+	mov	r3, #239
+	str	r3, [r6, #2056]
+	mov	r3, #137
+	str	r3, [r6, #2052]
+	bl	ndelay
+	mov	r3, #0
+	str	r3, [r6, #2048]
+	str	r3, [r6, #2048]
+	str	r3, [r6, #2048]
+	str	r3, [r6, #2048]
+	ldr	r3, [sp, #12]
+	cmp	r4, r3
+	bcc	.L1624
+	cmn	r4, #1
+	movne	r4, #256
+.L1624:
+	cmn	r4, #1
+	movne	r6, #0
+	moveq	r6, #1
+	cmp	r4, #256
+	movne	r1, r6
+	orreq	r1, r6, #1
+	cmp	r1, #0
+	beq	.L1625
+	mov	r3, r9
+	str	r4, [sp]
+	ldr	r2, [sp, #28]
+	mov	r1, r9
+	ldr	r0, .L1642+12
+	bl	printk
+	ldr	r3, [sp, #16]
+	cmp	r3, #0
+	bne	.L1626
+	ldrb	r3, [fp, #152]	@ zero_extendqisi2
+	cmp	r3, #0
+	moveq	r6, #0
+	andne	r6, r6, #1
+	cmp	r6, #0
+	beq	.L1616
+	mov	r1, #3
+	mov	r0, r5
+	bl	micron_auto_read_calibration_config
+	mov	r3, #1
+	str	r3, [sp, #16]
+	b	.L1628
+.L1623:
 	mov	r3, #239
 	mov	r0, #200
-	str	r3, [r7, #2056]
+	str	r3, [r6, #2056]
 	mov	r3, #137
-	str	r3, [r7, #2052]
-	bl	NandcDelayns
-	mov	ip, #0
+	str	r3, [r6, #2052]
+	mov	r8, #0
+	bl	ndelay
 	add	r3, r9, #1
-	mov	r0, r6
-	str	r3, [r7, #2048]
-	mov	r2, fp
-	str	ip, [r7, #2048]
-	str	ip, [r7, #2048]
-	str	ip, [r7, #2048]
-	str	r3, [sp, #8]
-	mov	r3, r8
-	ldr	r1, [sp, #20]
-	str	ip, [sp, #28]
+	mov	r2, r10
+	str	r3, [r6, #2048]
+	mov	r0, r5
+	str	r8, [r6, #2048]
+	str	r3, [sp, #32]
+	mov	r3, r7
+	str	r8, [r6, #2048]
+	ldr	r1, [sp, #28]
+	str	r8, [r6, #2048]
 	bl	FlashReadRawPage
 	cmn	r0, #1
-	beq	.L1629
-	cmn	r4, #1
-	ldr	ip, [sp, #28]
-	moveq	r4, r0
-	cmp	r0, r5
-	bcc	.L1639
-	mov	r8, ip
-	mov	fp, ip
-.L1629:
-	ldr	r9, [sp, #8]
-	b	.L1628
-.L1639:
-	mov	r4, r0
-	mov	r8, ip
-	mov	fp, ip
-.L1631:
-	ldr	r2, [sp, #16]
-	mov	r0, #200
+	beq	.L1620
 	ldr	r3, [sp, #12]
-	add	r7, r3, r2, asl #8
-	mov	r3, #239
-	str	r3, [r7, #2056]
-	mov	r3, #137
-	str	r3, [r7, #2052]
-	bl	NandcDelayns
-	cmp	r4, r5
-	mov	r3, #0
-	str	r3, [r7, #2048]
-	str	r3, [r7, #2048]
-	str	r3, [r7, #2048]
-	str	r3, [r7, #2048]
-	bcc	.L1633
 	cmn	r4, #1
-	movne	r4, #256
-.L1633:
-	cmn	r4, #1
-	movne	r7, #0
-	moveq	r7, #1
-	cmp	r4, #256
-	movne	r1, r7
-	orreq	r1, r7, #1
-	cmp	r1, #0
-	beq	.L1634
-	str	r4, [sp]
-	mov	r1, r9
-	ldr	r0, .L1651+12
-	mov	r3, r9
-	ldr	r2, [sp, #20]
-	bl	printk
-	cmp	r10, #0
-	bne	.L1635
-	ldr	r3, .L1651
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
-	cmp	r3, #0
-	moveq	r7, #0
-	andne	r7, r7, #1
-	cmp	r7, #0
-	beq	.L1644
-	mov	r0, r6
-	mov	r1, #3
-	bl	micron_auto_read_calibration_config
-	mov	r10, #1
-	b	.L1637
-.L1635:
-	mov	r0, r6
+	moveq	r4, r0
+	cmp	r0, r3
+	bcc	.L1630
+	mov	r7, r8
+	mov	r10, r8
+.L1620:
+	ldr	r9, [sp, #32]
+	b	.L1619
+.L1630:
+	mov	r4, r0
+	mov	r7, r8
+	mov	r10, r8
+	b	.L1622
+.L1626:
 	mov	r1, #0
+	mov	r0, r5
 	bl	micron_auto_read_calibration_config
 	cmn	r4, #1
 	movne	r4, #256
-	b	.L1644
-.L1634:
-	cmp	r10, #0
-	beq	.L1644
-	mov	r0, r6
+.L1616:
+	mov	r0, r4
+	add	sp, sp, #44
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1625:
+	ldr	r3, [sp, #16]
+	cmp	r3, #0
+	beq	.L1616
+	mov	r0, r5
 	mov	r4, #256
 	bl	micron_auto_read_calibration_config
-.L1644:
-	mov	r0, r4
-	add	sp, sp, #36
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1652:
+	b	.L1616
+.L1643:
 	.align	2
-.L1651:
+.L1642:
 	.word	.LANCHOR0
 	.word	1431655766
 	.word	.LANCHOR2
@@ -9729,296 +10231,299 @@
 	.size	MicronReadRetrial, .-MicronReadRetrial
 	.align	2
 	.global	HynixReadRetrial
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	HynixReadRetrial, %function
 HynixReadRetrial:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r8, r3
-	ldr	r5, .L1671
-	mov	r10, r2
-	mov	r7, r0
-	mov	fp, r1
-	add	r2, r5, r0
+	mov	r9, r3
+	ldr	r5, .L1662
+	mov	r8, #0
 	mvn	r6, #0
-	ldr	r3, [r5, #44]
-	ldrb	r4, [r2, #1222]	@ zero_extendqisi2
-	ldrb	r9, [r5, #1212]	@ zero_extendqisi2
+	mov	fp, r2
+	mov	r7, r0
+	str	r1, [sp, #4]
+	ldr	r3, [r5, #48]
+	add	r2, r5, r0
+	ldrb	r4, [r2, #1228]	@ zero_extendqisi2
+	ldrb	r10, [r5, #1218]	@ zero_extendqisi2
 	ldrb	r3, [r3, #19]	@ zero_extendqisi2
 	sub	r3, r3, #7
 	cmp	r3, #1
-	ldrlsb	r4, [r2, #1230]	@ zero_extendqisi2
+	ldrbls	r4, [r2, #1236]	@ zero_extendqisi2
 	bl	NandcWaitFlashReady
-	mov	ip, #0
-.L1655:
-	cmp	ip, r9
-	bcs	.L1659
-	add	r4, r4, #1
-	mov	r0, r7
-	ldrb	r1, [r5, #1211]	@ zero_extendqisi2
-	uxtb	r4, r4
-	ldr	r2, .L1671+4
-	cmp	r4, r9
-	str	ip, [sp, #4]
-	movcs	r4, #0
-	mov	r3, r4
-	bl	HynixSetRRPara
-	mov	r0, r7
-	mov	r1, fp
-	mov	r2, r10
-	mov	r3, r8
-	bl	FlashReadRawPage
-	cmn	r0, #1
-	ldr	ip, [sp, #4]
-	beq	.L1657
-	ldrb	r3, [r5, #2312]	@ zero_extendqisi2
-	cmn	r6, #1
-	moveq	r6, r0
-	add	r3, r3, r3, asl #1
-	cmp	r0, r3, asr #2
-	bcc	.L1664
-	mov	r8, #0
-	mov	r10, r8
-.L1657:
-	add	ip, ip, #1
-	b	.L1655
-.L1664:
-	mov	r6, r0
-.L1659:
-	ldr	r3, [r5, #44]
+.L1646:
+	cmp	r8, r10
+	bcc	.L1651
+.L1650:
+	ldr	r3, [r5, #48]
 	add	r7, r5, r7
 	ldrb	r3, [r3, #19]	@ zero_extendqisi2
 	sub	r3, r3, #7
 	cmp	r3, #1
-	ldrb	r3, [r5, #2312]	@ zero_extendqisi2
-	strlsb	r4, [r7, #1230]
-	strhib	r4, [r7, #1222]
-	add	r3, r3, r3, asl #1
+	ldrb	r3, [r5, #2316]	@ zero_extendqisi2
+	strbls	r4, [r7, #1236]
+	strbhi	r4, [r7, #1228]
+	add	r3, r3, r3, lsl #1
 	cmp	r6, r3, asr #2
-	bcc	.L1663
+	bcc	.L1644
 	cmn	r6, #1
 	movne	r6, #256
-.L1663:
+.L1644:
 	mov	r0, r6
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1672:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1651:
+	add	r4, r4, #1
+	ldr	r2, .L1662+4
+	uxtb	r4, r4
+	ldrb	r1, [r5, #1217]	@ zero_extendqisi2
+	mov	r0, r7
+	cmp	r10, r4
+	movls	r4, #0
+	mov	r3, r4
+	bl	HynixSetRRPara
+	mov	r3, r9
+	mov	r2, fp
+	ldr	r1, [sp, #4]
+	mov	r0, r7
+	bl	FlashReadRawPage
+	cmn	r0, #1
+	beq	.L1648
+	ldrb	r3, [r5, #2316]	@ zero_extendqisi2
+	cmn	r6, #1
+	moveq	r6, r0
+	add	r3, r3, r3, lsl #1
+	cmp	r0, r3, asr #2
+	bcc	.L1655
+	mov	r9, #0
+	mov	fp, r9
+.L1648:
+	add	r8, r8, #1
+	b	.L1646
+.L1655:
+	mov	r6, r0
+	b	.L1650
+.L1663:
 	.align	2
-.L1671:
+.L1662:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+1214
+	.word	.LANCHOR0+1220
 	.fnend
 	.size	HynixReadRetrial, .-HynixReadRetrial
 	.align	2
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	samsung_read_retrial, %function
 samsung_read_retrial:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.pad #28
 	sub	sp, sp, #28
 	mov	r10, r0
 	mov	fp, r2
-	mov	r8, r3
-	str	r1, [sp, #12]
+	mov	r9, r3
+	str	r1, [sp, #16]
 	bl	NandcWaitFlashReady
-	ldr	r3, .L1703
-	add	r2, r3, r10, asl #3
-	ldr	r4, [r2, #12]
-	ldrb	r2, [r2, #16]	@ zero_extendqisi2
-	str	r2, [sp, #8]
-	ldrb	r2, [r3, #2228]	@ zero_extendqisi2
-	str	r3, [sp, #16]
+	ldr	r3, .L1694
+	ldr	r2, [r3, r10, lsl #3]
+	str	r3, [sp, #20]
+	str	r2, [sp, #12]
+	add	r2, r3, r10, lsl #3
+	ldrb	r6, [r2, #4]	@ zero_extendqisi2
+	ldrb	r2, [r3, #2232]	@ zero_extendqisi2
 	cmp	r2, #0
-	bne	.L1674
-	ldr	r3, [sp, #8]
-	mvn	r5, #0
-	mov	r6, #1
-	mov	r9, r3, asl #8
-	add	r7, r4, r9
-.L1678:
+	bne	.L1665
+	ldr	r3, [sp, #12]
+	lsl	r8, r6, #8
+	mvn	r4, #0
+	mov	r7, #1
+	add	r5, r3, r8
+.L1669:
 	mov	r3, #239
-	str	r3, [r7, #2056]
+	mov	r6, #0
+	str	r3, [r5, #2056]
 	mov	r3, #141
-	str	r3, [r7, #2052]
-	ldr	r3, .L1703+4
-	mov	ip, #0
-	mov	r0, r10
-	ldr	r1, [sp, #12]
+	str	r3, [r5, #2052]
 	mov	r2, fp
-	str	ip, [sp, #20]
-	ldrsb	r3, [r6, r3]
-	str	r3, [r7, #2048]
-	mov	r3, r8
-	str	ip, [r7, #2048]
-	str	ip, [r7, #2048]
-	str	ip, [r7, #2048]
+	ldr	r3, .L1694+4
+	mov	r0, r10
+	ldr	r1, [sp, #16]
+	ldrsb	r3, [r7, r3]
+	str	r3, [r5, #2048]
+	mov	r3, r9
+	str	r6, [r5, #2048]
+	str	r6, [r5, #2048]
+	str	r6, [r5, #2048]
 	bl	FlashReadRawPage
 	cmn	r0, #1
-	beq	.L1675
-	ldr	r3, [sp, #16]
-	cmn	r5, #1
-	moveq	r5, r0
-	ldrb	r3, [r3, #2312]	@ zero_extendqisi2
-	add	r3, r3, r3, asl #1
+	beq	.L1666
+	ldr	r3, [sp, #20]
+	cmn	r4, #1
+	moveq	r4, r0
+	ldrb	r3, [r3, #2316]	@ zero_extendqisi2
+	add	r3, r3, r3, lsl #1
 	cmp	r0, r3, asr #2
-	bcc	.L1686
-	ldr	ip, [sp, #20]
-	mov	r8, ip
-	mov	fp, ip
-.L1675:
-	add	r6, r6, #1
-	cmp	r6, #26
-	bne	.L1678
-	b	.L1677
-.L1686:
-	mov	r5, r0
-.L1677:
-	add	r9, r4, r9
+	bcc	.L1677
+	mov	r9, r6
+	mov	fp, r6
+.L1666:
+	add	r7, r7, #1
+	cmp	r7, #26
+	bne	.L1669
+.L1668:
+	ldr	r3, [sp, #12]
+	add	r8, r3, r8
 	mov	r3, #239
-	str	r3, [r9, #2056]
-	ldr	r3, [sp, #8]
-	add	r4, r4, r3, asl #8
+	str	r3, [r8, #2056]
 	mov	r3, #141
-	b	.L1702
-.L1674:
-	ldr	r3, [sp, #8]
-	mvn	r5, #0
-	ldr	r7, .L1703+8
-	mov	r6, #1
-	mov	ip, r3, asl #8
-	add	r9, r4, ip
-.L1683:
-	mov	r3, #239
-	str	r3, [r9, #2056]
-	mov	r3, #137
-	str	r3, [r9, #2052]
-	ldrb	r3, [r7, #4]	@ zero_extendqisi2
-	mov	r0, r10
-	ldr	r1, [sp, #12]
-	mov	r2, fp
-	str	ip, [sp, #20]
-	str	r3, [r9, #2048]
-	ldrb	r3, [r7, #5]	@ zero_extendqisi2
-	str	r3, [r9, #2048]
-	ldrb	r3, [r7, #6]	@ zero_extendqisi2
-	str	r3, [r9, #2048]
-	ldrb	r3, [r7, #7]	@ zero_extendqisi2
-	str	r3, [r9, #2048]
-	mov	r3, r8
-	bl	FlashReadRawPage
-	cmn	r0, #1
-	ldr	ip, [sp, #20]
-	beq	.L1680
-	ldr	r3, [sp, #16]
-	cmn	r5, #1
-	moveq	r5, r0
-	ldrb	r3, [r3, #2312]	@ zero_extendqisi2
-	add	r3, r3, r3, asl #1
-	cmp	r0, r3, asr #2
-	bcc	.L1687
-	mov	r8, #0
-	mov	fp, r8
-.L1680:
-	add	r6, r6, #1
-	add	r7, r7, #4
-	cmp	r6, #26
-	bne	.L1683
-	b	.L1682
-.L1687:
-	mov	r5, r0
-.L1682:
-	add	ip, r4, ip
-	mov	r3, #239
-	str	r3, [ip, #2056]
-	ldr	r3, [sp, #8]
-	add	r4, r4, r3, asl #8
-	mov	r3, #137
-.L1702:
-	str	r3, [r4, #2052]
+.L1693:
+	str	r3, [r5, #2052]
 	mov	r3, #0
-	str	r3, [r4, #2048]
-	str	r3, [r4, #2048]
-	str	r3, [r4, #2048]
-	str	r3, [r4, #2048]
-	ldr	r3, [sp, #16]
-	ldrb	r3, [r3, #2312]	@ zero_extendqisi2
-	add	r3, r3, r3, asl #1
-	cmp	r5, r3, asr #2
-	bcc	.L1684
-	cmn	r5, #1
-	movne	r5, #256
-.L1684:
-	cmn	r5, #1
-	cmpne	r5, #256
-	bne	.L1685
-	str	r5, [sp]
-	mov	r1, r6
-	ldr	r0, .L1703+12
-	mov	r3, r6
-	ldr	r2, [sp, #12]
+	str	r3, [r5, #2048]
+	str	r3, [r5, #2048]
+	str	r3, [r5, #2048]
+	str	r3, [r5, #2048]
+	ldr	r3, .L1694
+	ldrb	r3, [r3, #2316]	@ zero_extendqisi2
+	add	r3, r3, r3, lsl #1
+	cmp	r4, r3, asr #2
+	bcc	.L1675
+	cmn	r4, #1
+	movne	r4, #256
+.L1675:
+	cmn	r4, #1
+	cmpne	r4, #256
+	bne	.L1676
+	str	r4, [sp]
+	mov	r3, r7
+	ldr	r2, [sp, #16]
+	mov	r1, r7
+	ldr	r0, .L1694+8
 	bl	printk
-.L1685:
+.L1676:
 	mov	r0, r10
 	bl	NandcWaitFlashReady
-	mov	r0, r5
+	mov	r0, r4
 	add	sp, sp, #28
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1704:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1677:
+	mov	r4, r0
+	b	.L1668
+.L1665:
+	ldr	r3, [sp, #12]
+	lsl	r6, r6, #8
+	ldr	r8, .L1694+12
+	mvn	r4, #0
+	mov	r7, #1
+	add	r5, r3, r6
+.L1674:
+	mov	r3, #239
+	mov	r2, fp
+	str	r3, [r5, #2056]
+	mov	r3, #137
+	str	r3, [r5, #2052]
+	mov	r0, r10
+	ldrb	r3, [r8, #4]	@ zero_extendqisi2
+	ldr	r1, [sp, #16]
+	str	r3, [r5, #2048]
+	ldrb	r3, [r8, #5]	@ zero_extendqisi2
+	str	r3, [r5, #2048]
+	ldrb	r3, [r8, #6]	@ zero_extendqisi2
+	str	r3, [r5, #2048]
+	ldrb	r3, [r8, #7]	@ zero_extendqisi2
+	str	r3, [r5, #2048]
+	mov	r3, r9
+	bl	FlashReadRawPage
+	cmn	r0, #1
+	beq	.L1671
+	ldr	r3, .L1694
+	cmn	r4, #1
+	moveq	r4, r0
+	ldrb	r3, [r3, #2316]	@ zero_extendqisi2
+	add	r3, r3, r3, lsl #1
+	cmp	r0, r3, asr #2
+	bcc	.L1678
+	mov	r9, #0
+	mov	fp, r9
+.L1671:
+	add	r7, r7, #1
+	add	r8, r8, #4
+	cmp	r7, #26
+	bne	.L1674
+.L1673:
+	ldr	r3, [sp, #12]
+	add	r6, r3, r6
+	mov	r3, #239
+	str	r3, [r6, #2056]
+	mov	r3, #137
+	b	.L1693
+.L1678:
+	mov	r4, r0
+	b	.L1673
+.L1695:
 	.align	2
-.L1703:
+.L1694:
 	.word	.LANCHOR0
-	.word	.LANCHOR3+16
-	.word	.LANCHOR3+44
+	.word	.LANCHOR3+11
 	.word	.LC95
+	.word	.LANCHOR3+37
 	.fnend
 	.size	samsung_read_retrial, .-samsung_read_retrial
 	.align	2
 	.global	FlashProgPage
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashProgPage, %function
 FlashProgPage:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r4, r5, r6, r7, r8, lr}
+	push	{r0, r1, r4, r5, r6, r7, r8, lr}
 	.save {r4, r5, r6, r7, r8, lr}
 	.pad #8
 	mov	r8, r3
-	ldr	r3, .L1709
+	ldr	r3, .L1700
 	subs	r4, r0, #0
 	mov	r5, r1
 	mov	r7, r2
-	ldrb	r6, [r3, #481]	@ zero_extendqisi2
-	bne	.L1706
-	ldr	r2, .L1709+4
-	ldrb	r3, [r2, #1]	@ zero_extendqisi2
-	ldr	r1, [r2, #4]
-	mul	r1, r1, r3
-	cmp	r5, r1
-	bcs	.L1706
-	ldrb	r3, [r2]	@ zero_extendqisi2
+	ldrb	r6, [r3, #477]	@ zero_extendqisi2
+	bne	.L1697
+	ldr	r1, .L1700+4
+	ldrb	r3, [r1, #37]	@ zero_extendqisi2
+	ldr	r0, [r1, #40]
+	mul	r0, r0, r3
+	cmp	r0, r5
+	bls	.L1697
+	ldrb	r3, [r1, #36]	@ zero_extendqisi2
 	cmp	r3, #0
 	movne	r6, #4
-.L1706:
+.L1697:
 	mov	r0, r4
 	bl	NandcWaitFlashReady
 	mov	r0, r4
 	bl	NandcFlashCs
-	mov	r0, r4
 	mov	r1, r5
-	bl	FlashProgFirstCmd
-	mov	r2, r6
-	mov	r3, r7
 	mov	r0, r4
-	mov	r1, #1
+	bl	FlashProgFirstCmd
+	mov	r3, r7
+	mov	r2, r6
 	str	r8, [sp]
+	mov	r1, #1
+	mov	r0, r4
 	bl	NandcXferData
 	mov	r1, r5
 	mov	r0, r4
@@ -10028,287 +10533,288 @@
 	mov	r1, r5
 	mov	r0, r4
 	bl	FlashReadStatus
-	mov	r5, r0
+	mov	r1, r0
 	mov	r0, r4
 	bl	NandcFlashDeCs
-	and	r0, r5, #1
+	and	r0, r1, #1
 	add	sp, sp, #8
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L1710:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L1701:
 	.align	2
-.L1709:
+.L1700:
 	.word	.LANCHOR1
 	.word	.LANCHOR0
 	.fnend
 	.size	FlashProgPage, .-FlashProgPage
 	.align	2
 	.global	FlashSavePhyInfo
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashSavePhyInfo, %function
 FlashSavePhyInfo:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 8
+	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {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	r4, .L1725
-	ldr	r5, .L1725+4
-	ldr	r8, .L1725+8
-	ldr	r3, [r4, #1688]
-	mov	fp, r4
-	ldrb	r0, [r4, #1714]	@ zero_extendqisi2
-	mov	r10, r5
-	str	r3, [r4, #1700]
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
+	ldr	r4, .L1716
+	ldr	r5, .L1716+4
+	ldr	r3, [r4, #1696]
+	ldrb	r0, [r4, #1722]	@ zero_extendqisi2
+	ldr	r8, .L1716+8
+	str	r3, [r4, #1708]
 	bl	FlashBchSel
-	mov	r1, #0
 	mov	r2, #2048
-	ldr	r0, [r4, #1688]
+	mov	r1, #0
+	ldr	r0, [r4, #1696]
 	bl	ftl_memset
-	ldr	r3, [r4, #1700]
-	ldr	r1, .L1725+12
+	ldr	r3, [r4, #1708]
 	mov	r2, #32
+	ldr	r1, .L1716+12
 	str	r8, [r3]
-	ldr	r0, [r4, #1700]
-	ldrb	r3, [r5, #2230]	@ zero_extendqisi2
+	ldr	r0, [r4, #1708]
+	ldrb	r3, [r5, #2234]	@ zero_extendqisi2
 	add	r0, r0, #16
 	strh	r3, [r0, #-4]	@ movhi
-	ldrb	r3, [r5, #1]	@ zero_extendqisi2
+	ldrb	r3, [r5, #37]	@ zero_extendqisi2
 	strh	r3, [r0, #-2]	@ movhi
-	ldrb	r3, [r5, #2252]	@ zero_extendqisi2
+	ldrb	r3, [r5, #2256]	@ zero_extendqisi2
 	str	r3, [r0, #1060]
 	bl	ftl_memcpy
-	ldr	r0, [r4, #1700]
-	ldr	r1, .L1725+16
+	ldr	r0, [r4, #1708]
 	mov	r2, #8
+	ldr	r1, .L1716+16
 	add	r0, r0, #80
 	bl	ftl_memcpy
-	ldr	r0, [r4, #1700]
-	ldr	r1, .L1725+20
+	ldr	r0, [r4, #1708]
 	mov	r2, #32
+	ldr	r1, .L1716+20
 	add	r0, r0, #96
 	bl	ftl_memcpy
-	ldr	r0, [r4, #1700]
-	ldr	r1, .L1725+24
+	ldr	r0, [r4, #1708]
 	mov	r2, #32
+	ldr	r1, .L1716+24
 	add	r0, r0, #160
 	bl	ftl_memcpy
-	ldr	r0, [r4, #1700]
-	add	r1, r5, #48
+	ldr	r0, [r4, #1708]
 	mov	r2, #32
+	add	r1, r5, #52
 	add	r0, r0, #192
 	bl	ftl_memcpy
-	ldr	r0, [r4, #1700]
+	ldr	r0, [r4, #1708]
 	mov	r2, #852
-	ldr	r1, .L1725+28
+	add	r1, r5, #1216
 	add	r0, r0, #224
 	bl	ftl_memcpy
-	ldr	r6, [r4, #1700]
+	ldr	r6, [r4, #1708]
 	movw	r1, #2036
 	add	r0, r6, #12
 	bl	js_hash
 	movw	r3, #1592
-	str	r3, [r6, #4]
-	ldr	r3, [r4, #1716]
-	str	r3, [r4, #1700]
 	str	r0, [r6, #8]
-	mov	r0, #0
-	bl	flash_enter_slc_mode
+	str	r3, [r6, #4]
 	mov	r6, #0
+	ldr	r3, [r4, #1724]
 	mov	r7, r6
-.L1717:
-	ldr	r1, [r5, #4]
 	mov	r0, #0
-	mov	r2, r0
+	str	r3, [r4, #1708]
+	bl	flash_enter_slc_mode
+.L1708:
+	ldr	r1, [r5, #40]
+	mov	r2, #0
+	mov	r0, r2
 	mul	r1, r1, r7
 	bl	FlashEraseBlock
-	ldrb	r9, [r5, #144]	@ zero_extendqisi2
+	ldrb	r9, [r5, #152]	@ zero_extendqisi2
 	cmp	r9, #0
-	beq	.L1712
+	beq	.L1703
 	mov	r9, #0
-.L1713:
-	ldr	r1, [r5, #4]
-	mov	r0, #0
-	ldr	r2, [r4, #1688]
-	mov	r3, r0
+.L1704:
+	ldr	r1, [r5, #40]
+	mov	r3, #0
+	ldr	r2, [r4, #1696]
+	mov	r0, r3
 	mla	r1, r1, r7, r9
 	add	r9, r9, #1
 	bl	FlashProgPage
 	cmp	r9, #10
-	bne	.L1713
-	b	.L1714
-.L1712:
-	ldr	r1, [r10, #4]
-	mov	r3, r9
-	ldr	r2, [r4, #1688]
-	mov	r0, r9
-	mul	r1, r1, r7
-	bl	FlashProgPage
-	ldr	r1, [r10, #4]
-	mov	r0, r9
-	ldr	r2, [r4, #1688]
-	mov	r3, r9
-	mul	r1, r1, r7
-	add	r1, r1, #1
-	bl	FlashProgPage
-.L1714:
-	ldr	r1, [r5, #4]
-	mov	r0, #0
-	ldr	r2, [r4, #1716]
-	mov	r3, r0
+	bne	.L1704
+.L1705:
+	ldr	r1, [r5, #40]
+	mov	r3, #0
+	ldr	r2, [r4, #1724]
+	mov	r0, r3
+	add	r10, r7, #1
 	mul	r1, r1, r7
 	bl	FlashReadRawPage
-	add	r2, r7, #1
 	cmn	r0, #1
-	beq	.L1715
-	ldr	r9, [fp, #1700]
+	beq	.L1706
+	ldr	r9, [r4, #1708]
 	ldr	r3, [r9]
 	cmp	r3, r8
-	bne	.L1715
-	add	r0, r9, #12
+	bne	.L1706
 	movw	r1, #2036
-	str	r2, [sp, #4]
+	add	r0, r9, #12
 	bl	js_hash
 	ldr	r3, [r9, #8]
 	cmp	r3, r0
-	ldr	r2, [sp, #4]
-	bne	.L1715
-	ldr	r3, [r10, #4]
+	bne	.L1706
+	ldr	r3, [r5, #40]
 	cmp	r6, #1
-	str	r2, [fp, #1708]
-	mul	r7, r3, r7
-	str	r7, [fp, #1704]
-	beq	.L1718
+	str	r10, [r4, #1716]
+	mul	r7, r7, r3
+	str	r7, [r4, #1712]
+	beq	.L1709
 	mov	r6, #1
-.L1715:
-	cmp	r2, #4
-	mov	r7, r2
-	bne	.L1717
-	b	.L1716
-.L1718:
-	mov	r6, #2
-.L1716:
+.L1706:
+	cmp	r10, #4
+	mov	r7, r10
+	bne	.L1708
+.L1707:
 	mov	r0, #0
 	bl	flash_exit_slc_mode
 	clz	r0, r6
-	mov	r0, r0, lsr #5
+	lsr	r0, r0, #5
 	rsb	r0, r0, #0
-	add	sp, sp, #12
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1726:
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L1703:
+	ldr	r1, [r5, #40]
+	mov	r3, r9
+	ldr	r2, [r4, #1696]
+	mov	r0, r9
+	mul	r1, r1, r7
+	bl	FlashProgPage
+	ldr	r1, [r5, #40]
+	mov	r3, r9
+	ldr	r2, [r4, #1696]
+	mov	r0, r9
+	mul	r1, r1, r7
+	add	r1, r1, #1
+	bl	FlashProgPage
+	b	.L1705
+.L1709:
+	mov	r6, #2
+	b	.L1707
+.L1717:
 	.align	2
-.L1725:
+.L1716:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.word	1312902724
-	.word	.LANCHOR0+2068
-	.word	.LANCHOR0+2232
-	.word	.LANCHOR0+1172
-	.word	.LANCHOR1+472
-	.word	.LANCHOR0+1210
+	.word	.LANCHOR0+2072
+	.word	.LANCHOR0+2236
+	.word	.LANCHOR0+1180
+	.word	.LANCHOR1+468
 	.fnend
 	.size	FlashSavePhyInfo, .-FlashSavePhyInfo
 	.align	2
 	.global	FlashReadIdbDataRaw
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReadIdbDataRaw, %function
 FlashReadIdbDataRaw:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r9, r0
-	ldr	r3, .L1747
+	mov	r3, #60
 	.pad #20
 	sub	sp, sp, #20
-	ldr	r4, .L1747+4
-	ldr	r0, [r3]	@ unaligned
-	ldr	r3, [r4, #2248]
-	ldrb	r10, [r4, #2312]	@ zero_extendqisi2
+	ldr	r4, .L1737
+	mov	r10, r0
+	strb	r3, [sp, #12]
+	mov	r3, #40
+	strb	r3, [sp, #13]
+	mov	r3, #24
+	strb	r3, [sp, #14]
+	mov	r3, #16
+	strb	r3, [sp, #15]
+	ldrb	r3, [r4, #2316]	@ zero_extendqisi2
+	str	r3, [sp, #4]
+	ldr	r3, [r4, #2252]
 	cmp	r3, #0
-	str	r0, [sp, #12]	@ unaligned
-	beq	.L1728
+	beq	.L1719
 	mov	r0, #0
 	bl	flash_enter_slc_mode
-.L1728:
-	mov	r0, r9
-	mov	r1, #0
-	mov	r2, #2048
+.L1719:
+	ldr	r6, .L1737+4
 	mvn	r8, #0
-	bl	ftl_memset
 	mov	r5, #2
-.L1729:
-	ldrb	r3, [r4, #1]	@ zero_extendqisi2
-	cmp	r5, r3
-	bcs	.L1733
-	ldr	fp, .L1747+8
-	mov	r7, #0
-.L1731:
-	add	r3, sp, #12
-	ldr	r6, .L1747+8
-	ldrb	ip, [r7, r3]	@ zero_extendqisi2
-	mov	r0, ip
-	str	ip, [sp, #4]
-	bl	FlashBchSel
-	ldr	r1, [r4, #4]
-	mov	r0, #0
-	ldr	r2, [fp, #1688]
-	mov	r3, r0
-	mul	r1, r1, r5
-	bl	FlashReadRawPage
-	cmn	r0, #1
-	ldr	ip, [sp, #4]
-	bne	.L1730
-	add	r7, r7, #1
-	cmp	r7, #4
-	bne	.L1731
-	b	.L1732
-.L1730:
-	ldr	r3, [r6, #1688]
-	ldr	r2, .L1747+12
-	ldr	r3, [r3]
-	cmp	r3, r2
-	bne	.L1732
-	mov	r1, ip
-	ldr	r0, .L1747+16
-	bl	printk
 	mov	r2, #2048
-	mov	r0, r9
-	ldr	r1, [r6, #1688]
-	bl	ftl_memcpy
-	ldr	r3, [r6, #1688]
-	ldr	r2, .L1747+4
-	ldr	r3, [r3, #512]
-	strb	r3, [r2, #1]
-	ldr	r3, [r6, #1708]
-	cmp	r3, r5
-	bls	.L1736
-	str	r5, [r6, #1708]
-	bl	FlashSavePhyInfo
-	mov	r8, #0
-.L1732:
-	add	r5, r5, #1
-	b	.L1729
-.L1736:
-	mov	r8, #0
-.L1733:
+	mov	r1, #0
 	mov	r0, r10
+	bl	ftl_memset
+.L1720:
+	ldrb	r3, [r4, #37]	@ zero_extendqisi2
+	cmp	r5, r3
+	bcc	.L1725
+.L1724:
+	ldr	r0, [sp, #4]
 	bl	FlashBchSel
-	ldr	r3, [r4, #2248]
+	ldr	r3, [r4, #2252]
 	cmp	r3, #0
-	beq	.L1740
+	beq	.L1718
 	mov	r0, #0
 	bl	flash_exit_slc_mode
-.L1740:
+.L1718:
 	mov	r0, r8
 	add	sp, sp, #20
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1748:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1725:
+	mov	r7, #0
+	add	fp, sp, #12
+.L1722:
+	ldrb	r9, [r7, fp]	@ zero_extendqisi2
+	mov	r0, r9
+	bl	FlashBchSel
+	ldr	r1, [r4, #40]
+	mov	r3, #0
+	ldr	r2, [r6, #1696]
+	mov	r0, r3
+	mul	r1, r1, r5
+	bl	FlashReadRawPage
+	cmn	r0, #1
+	bne	.L1721
+	add	r7, r7, #1
+	cmp	r7, #4
+	bne	.L1722
+.L1723:
+	add	r5, r5, #1
+	b	.L1720
+.L1728:
+	mov	r8, #0
+	b	.L1724
+.L1721:
+	ldr	r3, [r6, #1696]
+	ldr	r2, .L1737+8
+	ldr	r3, [r3]
+	cmp	r3, r2
+	bne	.L1723
+	mov	r1, r9
+	ldr	r0, .L1737+12
+	bl	printk
+	mov	r2, #2048
+	ldr	r1, [r6, #1696]
+	mov	r0, r10
+	bl	ftl_memcpy
+	ldr	r3, [r6, #1696]
+	ldr	r3, [r3, #512]
+	strb	r3, [r4, #37]
+	ldr	r3, [r6, #1716]
+	cmp	r5, r3
+	bcs	.L1728
+	str	r5, [r6, #1716]
+	mov	r8, #0
+	bl	FlashSavePhyInfo
+	b	.L1723
+.L1738:
 	.align	2
-.L1747:
-	.word	.LANCHOR3+11
+.L1737:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.word	-52655045
@@ -10317,846 +10823,823 @@
 	.size	FlashReadIdbDataRaw, .-FlashReadIdbDataRaw
 	.align	2
 	.global	FlashInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashInit, %function
 FlashInit:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 0
+	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r5, r0
-	.pad #20
-	sub	sp, sp, #20
+	mov	r7, r0
+	ldr	r5, .L1837
+	.pad #28
+	sub	sp, sp, #28
+	mov	r0, #32768
+	mov	r6, #0
+	bl	ftl_malloc
+	str	r0, [r5, #1696]
 	mov	r0, #32768
 	bl	ftl_malloc
-	ldr	r8, .L1848
-	ldr	r4, .L1848+4
-	mov	r7, #0
-	add	r9, r4, #12
-	str	r0, [r8, #1688]
-	mov	r0, #32768
-	bl	ftl_malloc
-	str	r0, [r8, #1716]
+	str	r0, [r5, #1724]
 	mov	r0, #4096
-	bl	ftl_malloc
-	str	r0, [r8, #1720]
+	bl	ftl_dma32_malloc
+	str	r0, [r5, #1728]
 	mov	r0, #32768
 	bl	ftl_malloc
-	str	r0, [r8, #1724]
+	ldr	r4, .L1837+4
+	mov	r8, r6
+	str	r0, [r5, #1732]
 	mov	r0, #4096
-	bl	ftl_malloc
+	bl	ftl_dma32_malloc
+	ldr	fp, .L1837+8
 	mov	r3, #50
-	str	r7, [r8, #1708]
-	strb	r3, [r4, #1]
-	strb	r3, [r8, #1712]
+	str	r0, [r5, #1736]
+	mov	r0, r7
+	ldr	r7, .L1837+12
+	strb	r3, [r4, #37]
+	strb	r3, [r5, #1720]
 	mov	r3, #128
-	strb	r7, [r4, #2252]
-	str	r3, [r4, #4]
+	str	r3, [r4, #40]
 	mov	r3, #60
-	str	r7, [r8, #1692]
-	strb	r7, [r4]
-	strb	r7, [r8, #1732]
-	strb	r3, [r8, #1714]
-	str	r0, [r8, #1728]
-	mov	r0, r5
+	str	r6, [r5, #1716]
+	strb	r6, [r4, #2256]
+	str	r6, [r5, #1700]
+	strb	r6, [r4, #36]
+	strb	r6, [r5, #1740]
+	strb	r3, [r5, #1722]
 	bl	NandcInit
-	ldr	r5, .L1848+8
-.L1755:
-	add	r3, r9, r7, asl #3
-	uxtb	fp, r7
-	ldr	r6, [r9, r7, asl #3]
-	ldrb	r10, [r3, #4]	@ zero_extendqisi2
-	mov	r0, fp
+.L1745:
+	add	r2, r4, r6, lsl #3
+	uxtb	r9, r6
+	ldr	r10, [r4, r6, lsl #3]
+	ldrb	r2, [r2, #4]	@ zero_extendqisi2
+	mov	r0, r9
+	str	r2, [sp, #20]
 	bl	FlashReset
-	mov	r0, fp
+	mov	r0, r9
 	bl	NandcFlashCs
+	ldr	r2, [sp, #20]
 	mov	r3, #144
-	add	r6, r6, r10, asl #8
 	mov	r0, #200
-	mov	r10, #0
-	str	r3, [r6, #2056]
-	str	r10, [r6, #2052]
-	bl	NandcDelayns
-	ldr	r2, [r6, #2048]
+	add	r10, r10, r2, lsl #8
+	str	r3, [r10, #2056]
+	str	r8, [r10, #2052]
+	bl	ndelay
+	ldr	r2, [r10, #2048]
 	uxtb	r2, r2
-	strb	r2, [r5]
-	ldr	r1, [r6, #2048]
+	strb	r2, [r7]
 	cmp	r2, #44
-	strb	r1, [r5, #1]
-	ldr	r1, [r6, #2048]
-	strb	r1, [r5, #2]
-	ldr	r1, [r6, #2048]
-	strb	r1, [r5, #3]
-	ldr	r1, [r6, #2048]
-	strb	r1, [r5, #4]
-	ldr	r1, [r6, #2048]
-	strb	r1, [r5, #5]
-	bne	.L1750
+	ldr	r1, [r10, #2048]
+	strb	r1, [r7, #1]
+	ldr	r1, [r10, #2048]
+	strb	r1, [r7, #2]
+	ldr	r1, [r10, #2048]
+	strb	r1, [r7, #3]
+	ldr	r1, [r10, #2048]
+	strb	r1, [r7, #4]
+	ldr	r1, [r10, #2048]
+	strb	r1, [r7, #5]
+	bne	.L1740
 	mov	r2, #239
 	mov	r0, #200
-	str	r2, [r6, #2056]
+	str	r2, [r10, #2056]
 	mov	r2, #1
-	str	r2, [r6, #2052]
-	bl	NandcDelayns
+	str	r2, [r10, #2052]
+	bl	ndelay
 	mov	r2, #4
-	str	r2, [r6, #2048]
-	str	r10, [r6, #2048]
-	str	r10, [r6, #2048]
-	str	r10, [r6, #2048]
-.L1750:
-	mov	r0, fp
+	str	r2, [r10, #2048]
+	str	r8, [r10, #2048]
+	str	r8, [r10, #2048]
+	str	r8, [r10, #2048]
+.L1740:
+	mov	r0, r9
 	bl	NandcFlashDeCs
-	ldrb	r2, [r5]	@ zero_extendqisi2
+	ldrb	r2, [r7]	@ zero_extendqisi2
 	sub	r3, r2, #1
 	uxtb	r3, r3
 	cmp	r3, #253
-	bhi	.L1751
-	ldrb	r1, [r5, #2]	@ zero_extendqisi2
-	ldrb	r3, [r5, #1]	@ zero_extendqisi2
-	ldr	r0, .L1848+12
-	str	r1, [sp]
-	ldrb	r1, [r5, #3]	@ zero_extendqisi2
-	str	r1, [sp, #4]
-	ldrb	r1, [r5, #4]	@ zero_extendqisi2
-	str	r1, [sp, #8]
-	ldrb	r1, [r5, #5]	@ zero_extendqisi2
+	bhi	.L1741
+	ldrb	r1, [r7, #5]	@ zero_extendqisi2
+	mov	r0, fp
+	ldrb	r3, [r7, #1]	@ zero_extendqisi2
 	str	r1, [sp, #12]
-	add	r1, r7, #1
+	ldrb	r1, [r7, #4]	@ zero_extendqisi2
+	str	r1, [sp, #8]
+	ldrb	r1, [r7, #3]	@ zero_extendqisi2
+	str	r1, [sp, #4]
+	ldrb	r1, [r7, #2]	@ zero_extendqisi2
+	str	r1, [sp]
+	add	r1, r6, #1
 	bl	printk
-.L1751:
-	cmp	r7, #0
-	bne	.L1752
-	ldrb	r3, [r4, #2068]	@ zero_extendqisi2
+.L1741:
+	cmp	r6, #0
+	bne	.L1742
+	ldrb	r3, [r4, #2072]	@ zero_extendqisi2
 	sub	r3, r3, #1
 	uxtb	r3, r3
 	cmp	r3, #253
-	bhi	.L1802
-	ldr	r3, .L1848+4
-	ldrb	r3, [r3, #2069]	@ zero_extendqisi2
+	bhi	.L1792
+	ldrb	r3, [r4, #2073]	@ zero_extendqisi2
 	cmp	r3, #255
-	beq	.L1802
-.L1752:
-	ldrb	r3, [r5]	@ zero_extendqisi2
-	add	r7, r7, #1
-	add	r5, r5, #8
+	beq	.L1792
+.L1742:
+	ldrb	r3, [r7]	@ zero_extendqisi2
+	add	r6, r6, #1
+	add	r7, r7, #8
 	cmp	r3, #181
 	moveq	r3, #44
-	streqb	r3, [r5, #-8]
-	cmp	r7, #4
-	bne	.L1755
-	ldrb	r3, [r4, #2068]	@ zero_extendqisi2
+	strbeq	r3, [r7, #-8]
+	cmp	r6, #4
+	bne	.L1745
+	ldrb	r3, [r4, #2072]	@ zero_extendqisi2
 	cmp	r3, #173
-	beq	.L1756
-	ldr	r3, .L1848+4
-	ldr	r0, [r3, #2256]
+	beq	.L1746
+	ldr	r0, [r4, #2260]
 	bl	NandcSetDdrMode
-.L1756:
+.L1746:
 	mov	r2, #852
-	ldr	r0, .L1848+16
 	mov	r1, #0
-	ldr	r5, .L1848+20
+	ldr	r0, .L1837+16
 	bl	ftl_memset
-	ldr	r2, [r4, #2264]
-	ldr	r0, .L1848+24
-	cmp	r2, r5
-	add	r3, r0, #472
-	str	r3, [r4, #44]
+	ldr	r6, .L1837+20
+	ldr	r2, .L1837+24
+	ldr	r0, [r4, #2268]
+	add	r3, r2, #468
+	cmp	r0, r6
+	str	r3, [r4, #48]
 	mov	r3, #0
-	strb	r3, [r4, #8]
-	bne	.L1757
-	ldrb	r3, [r0, #491]	@ zero_extendqisi2
+	strb	r3, [r4, #44]
+	bne	.L1747
+	ldrb	r3, [r2, #487]	@ zero_extendqisi2
 	cmp	r3, #50
-	ldrne	r3, .L1848+4
-	movne	r1, #1
-	strne	r1, [r3, #2248]
-.L1757:
-	ldrb	r6, [r4, #2069]	@ zero_extendqisi2
-	sub	ip, r6, #218
-	cmp	r6, #161
-	cmpne	r6, #241
-	clz	ip, ip
-	and	r1, r6, #253
-	moveq	r3, #1
-	movne	r3, #0
-	mov	ip, ip, lsr #5
-	orr	r3, ip, r3
-	cmp	r1, #209
-	orreq	r3, r3, #1
-	cmp	r3, #0
-	bne	.L1758
-	cmp	r6, #220
-	bne	.L1759
-	ldr	r3, .L1848+4
-	ldrb	r3, [r3, #2071]	@ zero_extendqisi2
-	cmp	r3, #149
-	bne	.L1759
-.L1758:
-	mov	lr, #16
-	strb	lr, [r4, #1]
-	strb	lr, [r8, #1714]
+	movne	r3, #1
+	strne	r3, [r4, #2252]
+.L1747:
+	ldrb	r3, [r4, #2073]	@ zero_extendqisi2
+	cmp	r3, #241
+	cmpne	r3, #161
+	and	ip, r3, #253
+	moveq	r1, #1
+	movne	r1, #0
+	cmp	r3, #218
+	orreq	r1, r1, #1
+	cmp	ip, #209
+	orreq	r1, r1, #1
+	cmp	r1, #0
+	bne	.L1748
+	cmp	r3, #220
+	bne	.L1749
+	ldrb	r1, [r4, #2075]	@ zero_extendqisi2
+	cmp	r1, #149
+	bne	.L1749
+.L1748:
+	mov	ip, #16
 	mov	r1, #1
-	ldrb	lr, [r4, #2068]	@ zero_extendqisi2
-	strb	r1, [r4]
-	cmp	lr, #152
-	ldr	r3, .L1848
-	strb	lr, [r0, #3417]
-	strb	r6, [r0, #3418]
-	bne	.L1761
-	ldr	r7, .L1848+4
-	movw	lr, #2072
-	ldrsb	lr, [r7, lr]
-	cmp	lr, #0
-	strltb	r1, [r3, #1732]
-	movge	r1, #24
-	strgeb	r1, [r3, #1714]
-.L1761:
-	movw	r3, #2049
-	cmp	r2, r5
-	cmpne	r2, r3
-	moveq	r3, #16
-	streqb	r3, [r8, #1714]
-	cmp	ip, #0
-	ldrne	r3, .L1848+28
-	movne	r2, #2048
-	strneh	r2, [r3, #14]	@ movhi
-	mvnne	r3, #37
-	bne	.L1842
-.L1765:
-	cmp	r6, #220
-	bne	.L1767
-	ldr	r3, .L1848+28
-	mov	r2, #4096
-	strh	r2, [r3, #14]	@ movhi
-	mvn	r3, #35
-.L1842:
-	strb	r3, [r0, #3418]
-	b	.L1766
-.L1767:
-	cmp	r6, #211
-	ldreq	r3, .L1848+28
-	moveq	r2, #4096
-	streqh	r2, [r3, #14]	@ movhi
-	moveq	r3, #2
-	streqb	r3, [r0, #3429]
-.L1766:
-	ldr	r1, .L1848+32
+	strb	ip, [r4, #37]
+	strb	ip, [r5, #1722]
+	ldrb	ip, [r4, #2072]	@ zero_extendqisi2
+	strb	r1, [r4, #36]
+	strb	r3, [r2, #3414]
+	cmp	ip, #152
+	strb	ip, [r2, #3413]
+	bne	.L1751
+	ldrb	ip, [r4, #2076]	@ zero_extendqisi2
+	lsrs	ip, ip, #7
+	moveq	r1, #24
+	strbne	r1, [r5, #1740]
+	strbeq	r1, [r5, #1722]
+.L1751:
+	movw	r1, #2049
+	cmp	r0, r1
+	cmpne	r0, r6
+	moveq	r1, #16
+	strbeq	r1, [r5, #1722]
+	cmp	r3, #218
+	bne	.L1755
+	ldr	r3, .L1837+28
+	mov	r1, #2048
+	strh	r1, [r3, #14]	@ movhi
+	mvn	r3, #37
+.L1831:
+	strb	r3, [r2, #3414]
+.L1756:
 	mov	r2, #32
-	ldr	r0, .L1848+36
+	ldr	r1, .L1837+32
+	ldr	r0, .L1837+36
 	bl	ftl_memcpy
-	ldr	r0, .L1848+40
+	ldr	r1, .L1837+28
 	mov	r2, #32
-	add	r1, r0, #2944
+	sub	r0, r1, #2944
 	bl	ftl_memcpy
-.L1759:
-	ldrb	r3, [r4]	@ zero_extendqisi2
-	ldr	r6, .L1848+4
+.L1749:
+	ldrb	r3, [r4, #36]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L1768
+	bne	.L1759
 	bl	FlashLoadPhyInfoInRam
 	cmp	r0, #0
-	bne	.L1770
-	ldr	r3, [r6, #44]
+	bne	.L1761
+	ldr	r3, [r4, #48]
 	ldrh	r3, [r3, #16]
-	mov	r3, r3, lsr #8
+	lsr	r3, r3, #8
 	tst	r3, #1
 	and	r0, r3, #7
-	strb	r0, [r6, #2229]
-	bne	.L1770
+	strb	r0, [r4, #2233]
+	bne	.L1761
 	mov	r3, #1
-	strb	r3, [r6, #2252]
+	strb	r3, [r4, #2256]
 	bl	FlashSetInterfaceMode
-	ldrb	r0, [r6, #2229]	@ zero_extendqisi2
+	ldrb	r0, [r4, #2233]	@ zero_extendqisi2
 	bl	NandcSetMode
-.L1770:
-	ldr	r3, [r4, #44]
-	ldr	r6, .L1848+4
+.L1761:
+	ldr	r3, [r4, #48]
 	ldrb	r3, [r3, #26]	@ zero_extendqisi2
-	strb	r3, [r4, #144]
+	strb	r3, [r4, #152]
 	bl	FlashLoadPhyInfo
 	cmp	r0, #0
-	beq	.L1768
-	ldr	r3, [r6, #2256]
+	beq	.L1759
+	ldr	r3, [r4, #2260]
 	cmp	r3, #0
-	beq	.L1773
+	beq	.L1764
 	mov	r0, #1
 	bl	FlashSetInterfaceMode
 	mov	r0, #1
-	b	.L1843
-.L1773:
-	ldrb	r0, [r6, #2229]	@ zero_extendqisi2
-	bl	FlashSetInterfaceMode
-	ldrb	r0, [r6, #2229]	@ zero_extendqisi2
-.L1843:
+.L1832:
 	bl	NandcSetMode
 	bl	FlashLoadPhyInfo
 	cmp	r0, #0
-	beq	.L1768
+	beq	.L1759
 	mov	r0, #1
-	ldr	r6, .L1848+4
 	bl	FlashSetInterfaceMode
 	mov	r0, #1
 	bl	NandcSetMode
-	ldr	r3, [r4, #44]
-	ldr	r0, .L1848+44
+	ldr	r3, [r4, #48]
+	ldr	r0, .L1837+40
 	ldrh	r1, [r3, #14]
 	bl	printk
 	bl	FlashLoadPhyInfoInRam
 	cmn	r0, #1
-	beq	.L1816
+	beq	.L1739
 	bl	FlashDieInfoInit
-	ldr	r3, [r6, #44]
+	ldr	r3, [r4, #48]
 	ldrb	r0, [r3, #19]	@ zero_extendqisi2
 	bl	FlashGetReadRetryDefault
-	ldr	r3, .L1848+48
-	ldr	r2, [r6, #44]
+	ldr	r3, .L1837+44
+	ldr	r2, [r4, #48]
 	ldrh	r3, [r3, #-2]
 	ldrb	r1, [r2, #9]	@ zero_extendqisi2
 	add	r3, r3, #4080
 	add	r3, r3, #15
 	cmp	r1, r3, asr #12
 	ldrh	r3, [r2, #14]
-	blt	.L1775
+	blt	.L1766
 	add	r0, r3, #255
 	cmp	r1, r0, asr #8
-	bge	.L1776
-.L1775:
+	bge	.L1767
+.L1766:
 	bic	r3, r3, #255
 	strh	r3, [r2, #14]	@ movhi
-.L1776:
-	ldrb	r3, [r4, #2229]	@ zero_extendqisi2
+.L1767:
+	ldrb	r3, [r4, #2233]	@ zero_extendqisi2
 	tst	r3, #6
-	beq	.L1777
+	beq	.L1768
 	bl	FlashSavePhyInfo
 	mov	r0, #0
 	bl	flash_enter_slc_mode
+	ldr	r1, [r5, #1712]
 	mov	r0, #0
-	ldr	r1, [r8, #1704]
 	bl	FlashDdrParaScan
 	mov	r0, #0
 	bl	flash_exit_slc_mode
-.L1777:
-	bl	FlashSavePhyInfo
 .L1768:
-	ldr	r2, [r4, #44]
-	ldr	r7, .L1848+4
-	ldr	r6, .L1848
-	ldrb	r3, [r2, #26]	@ zero_extendqisi2
-	ldrh	r0, [r2, #10]
-	ldrb	r9, [r2, #18]	@ zero_extendqisi2
-	strb	r3, [r4, #144]
-	ldrh	r3, [r2, #16]
-	ubfx	r1, r3, #7, #1
-	strb	r1, [r4, #8]
-	ubfx	r1, r3, #3, #1
-	strb	r1, [r8, #1733]
-	ubfx	r1, r3, #4, #1
+	bl	FlashSavePhyInfo
+.L1759:
+	ldr	r7, [r4, #48]
+	ldrb	r3, [r7, #26]	@ zero_extendqisi2
+	ldrb	r1, [r7, #12]	@ zero_extendqisi2
+	ldrh	r0, [r7, #10]
+	strb	r3, [r4, #152]
+	ldrh	r3, [r7, #16]
+	ubfx	r2, r3, #7, #1
+	strb	r2, [r4, #44]
+	ubfx	r2, r3, #3, #1
+	strb	r2, [r5, #1741]
+	ubfx	r2, r3, #4, #1
 	ubfx	r3, r3, #8, #3
-	strb	r1, [r4, #2240]
-	strb	r3, [r4, #2229]
+	strb	r2, [r4, #2244]
+	strb	r3, [r4, #2233]
 	mov	r3, #0
-	ldrb	r1, [r2, #12]	@ zero_extendqisi2
-	str	r3, [r8, #1696]
+	str	r3, [r5, #1704]
 	bl	__aeabi_idiv
 	mov	r1, r0
-	mov	r0, r9
+	ldrb	r0, [r7, #18]	@ zero_extendqisi2
 	bl	BuildFlashLsbPageTable
 	bl	FlashDieInfoInit
-	ldr	r3, [r4, #44]
+	ldr	r3, [r4, #48]
 	ldrh	r2, [r3, #16]
 	tst	r2, #64
-	beq	.L1779
+	beq	.L1770
 	ldrb	r0, [r3, #19]	@ zero_extendqisi2
-	ldrb	r3, [r7, #1211]	@ zero_extendqisi2
-	strb	r0, [r7, #1208]
-	strb	r3, [r7, #1209]
-	ldrb	r3, [r7, #1212]	@ zero_extendqisi2
-	strb	r3, [r6, #1713]
+	ldrb	r3, [r4, #1217]	@ zero_extendqisi2
+	strb	r0, [r4, #84]
+	strb	r3, [r4, #85]
+	ldrb	r3, [r4, #1218]	@ zero_extendqisi2
+	strb	r3, [r5, #1721]
 	sub	r3, r0, #1
 	cmp	r3, #7
-	bhi	.L1780
-	ldr	r3, .L1848+52
-	str	r3, [r6, #1696]
+	bhi	.L1771
+	ldr	r3, .L1837+48
+	str	r3, [r5, #1704]
 	sub	r3, r0, #5
 	cmp	r0, #8
 	cmpne	r3, #1
-	sub	r6, r0, #8
-	clz	r6, r6
 	movls	r3, #1
-	strls	r3, [r7, #2304]
+	strls	r3, [r4, #2308]
 	cmp	r0, #7
-	mov	r6, r6, lsr #5
-	ldreq	r6, .L1848+56
-	beq	.L1783
-	ldr	r3, .L1848+56
-	cmp	r6, #0
-	sub	r2, r3, #8
-	movne	r6, r3
-	moveq	r6, r2
-.L1783:
-	sub	r2, r6, #1
-	add	r6, r6, #31
-	mov	r3, #0
-.L1784:
-	ldrsb	r1, [r2, #1]!
-	cmp	r1, #0
-	addeq	r3, r3, #1
-	cmp	r2, r6
-	bne	.L1784
-	cmp	r3, #27
-	bls	.L1779
+	ldr	r3, .L1837+16
+	beq	.L1793
+	cmp	r0, #8
+	addne	r3, r3, #20
+	bne	.L1773
+.L1793:
+	add	r3, r3, #28
+.L1773:
+	sub	r1, r3, #1
+	mov	r2, #0
+	add	r3, r3, #31
+.L1775:
+	ldrsb	ip, [r1, #1]!
+	cmp	ip, #0
+	addeq	r2, r2, #1
+	cmp	r3, r1
+	bne	.L1775
+	cmp	r2, #27
+	bls	.L1770
 	bl	FlashGetReadRetryDefault
 	bl	FlashSavePhyInfo
-	b	.L1779
-.L1780:
-	sub	r3, r0, #17
-	cmp	r3, #2
-	bhi	.L1786
-	ldr	r3, .L1848+60
-	cmp	r0, #19
-	str	r3, [r6, #1696]
-	moveq	r3, #15
-	bne	.L1847
-	b	.L1845
-.L1786:
-	sub	r3, r0, #65
-	cmp	r0, #33
-	cmpne	r3, #1
-	bhi	.L1788
-	ldr	r3, .L1848+64
-	str	r3, [r6, #1696]
-	mov	r3, #4
-	strb	r3, [r7, #1209]
-.L1847:
-	mov	r3, #7
-.L1845:
-	strb	r3, [r6, #1713]
-	b	.L1779
-.L1788:
-	sub	r2, r0, #67
-	sub	r3, r0, #34
-	cmp	r2, #1
-	movhi	r2, #0
-	movls	r2, #1
-	cmp	r3, #1
-	movhi	r3, r2
-	orrls	r3, r2, #1
-	cmp	r3, #0
-	beq	.L1789
-	ldr	r3, .L1848+64
-	cmp	r0, #68
-	cmpne	r0, #35
-	str	r3, [r6, #1696]
-	movne	r3, #7
-	moveq	r3, #17
+.L1770:
+	ldr	r3, [r4, #2268]
+	cmp	r3, r6
+	bne	.L1785
+	ldrb	r2, [r4, #152]	@ zero_extendqisi2
 	cmp	r2, #0
-	strb	r3, [r6, #1713]
-	movne	r3, #4
-	moveq	r3, #5
-	strb	r3, [r4, #1209]
-	b	.L1779
-.L1789:
-	cmp	r0, #49
-	ldreq	r3, .L1848+68
-	streq	r3, [r6, #1696]
-	beq	.L1779
-	cmp	r0, #50
-	streq	r3, [r7, #2248]
-	ldreq	r2, .L1848+72
-	streq	r2, [r6, #1696]
-.L1779:
-	ldr	r2, [r4, #2264]
-	ldr	r3, .L1848+4
-	cmp	r2, r5
-	bne	.L1794
-	ldrb	r1, [r3, #144]	@ zero_extendqisi2
-	cmp	r1, #0
-	ldrne	r3, [r3, #44]
+	ldrne	r2, [r4, #48]
 	movne	r1, #0
-	strneb	r1, [r3, #18]
-.L1794:
-	ldrb	r1, [r4, #2068]	@ zero_extendqisi2
-	ldr	r3, .L1848+4
-	cmp	r1, #44
-	bne	.L1795
-	ldrb	r1, [r3, #2252]	@ zero_extendqisi2
-	cmp	r1, #0
-	beq	.L1795
-	cmp	r2, r5
-	bne	.L1796
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
+	strbne	r1, [r2, #18]
+.L1785:
+	ldrb	r2, [r4, #2072]	@ zero_extendqisi2
+	cmp	r2, #44
+	bne	.L1786
+	ldrb	r2, [r4, #2256]	@ zero_extendqisi2
+	cmp	r2, #0
+	beq	.L1786
+	cmp	r3, r6
+	bne	.L1787
+	ldrb	r3, [r4, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L1795
-.L1796:
-	mov	r0, #1
+	bne	.L1786
+.L1787:
 	mov	r3, #0
-	strb	r3, [r4, #2252]
+	mov	r0, #1
+	strb	r3, [r4, #2256]
 	bl	FlashSetInterfaceMode
 	mov	r0, #1
 	bl	NandcSetMode
-.L1795:
-	ldrb	r3, [r4, #2229]	@ zero_extendqisi2
+.L1786:
+	ldrb	r3, [r4, #2233]	@ zero_extendqisi2
 	tst	r3, #6
-	beq	.L1797
-	ldr	r2, .L1848+4
-	ldrb	r2, [r2, #2252]	@ zero_extendqisi2
+	beq	.L1788
+	ldrb	r2, [r4, #2256]	@ zero_extendqisi2
 	cmp	r2, #0
-	bne	.L1798
+	bne	.L1789
 	tst	r3, #1
-	bne	.L1797
-.L1798:
+	bne	.L1788
+.L1789:
 	mov	r0, #0
 	bl	flash_enter_slc_mode
+	ldr	r1, [r5, #1712]
 	mov	r0, #0
-	ldr	r1, [r8, #1704]
 	bl	FlashDdrParaScan
 	mov	r0, #0
 	bl	flash_exit_slc_mode
-.L1797:
-	ldr	r3, [r4, #44]
-	mov	r7, #16
-	ldr	r6, .L1848+4
+.L1788:
+	ldr	r3, [r4, #48]
+	mov	r6, #16
 	ldrb	r0, [r3, #20]	@ zero_extendqisi2
 	bl	FlashBchSel
-	ldr	r0, .L1848+76
+	ldr	r0, .L1837+52
 	bl	FlashReadIdbDataRaw
-	ldr	r0, .L1848+80
-	strb	r7, [r4, #1]
+	ldr	r0, .L1837+56
+	strb	r6, [r4, #37]
 	bl	FlashTimingCfg
-	ldr	r5, [r4, #44]
-	ldrb	r2, [r4, #2069]	@ zero_extendqisi2
+	ldr	r5, [r4, #48]
+	ldrb	r2, [r4, #2073]	@ zero_extendqisi2
 	ldrb	r3, [r5, #12]	@ zero_extendqisi2
-	ldrh	r8, [r5, #14]
-	strh	r3, [r4, #124]	@ movhi
-	ldrb	r3, [r5, #7]	@ zero_extendqisi2
-	str	r3, [r4, #120]
-	mov	r3, r2, asl r7
-	orr	r2, r3, r2, asl #8
-	ldrb	r3, [r4, #2068]	@ zero_extendqisi2
-	orr	r3, r2, r3
-	ldrb	r2, [r4, #2071]	@ zero_extendqisi2
-	orr	r3, r3, r2, asl #24
-	str	r3, [r4, #116]
-	ldrb	r3, [r4, #2230]	@ zero_extendqisi2
-	strh	r3, [r4, #126]	@ movhi
-	ldrb	r3, [r5, #13]	@ zero_extendqisi2
-	strh	r8, [r4, #130]	@ movhi
-	strh	r3, [r4, #128]	@ movhi
-	ldrh	r3, [r5, #10]
+	ldrh	r7, [r5, #14]
 	strh	r3, [r4, #132]	@ movhi
+	ldrb	r3, [r5, #7]	@ zero_extendqisi2
+	str	r3, [r4, #128]
+	lsl	r3, r2, r6
+	orr	r3, r3, r2, lsl #8
+	ldrb	r2, [r4, #2072]	@ zero_extendqisi2
+	orr	r3, r3, r2
+	ldrb	r2, [r4, #2075]	@ zero_extendqisi2
+	orr	r3, r3, r2, lsl #24
+	str	r3, [r4, #124]
+	ldrb	r3, [r4, #2234]	@ zero_extendqisi2
+	strh	r3, [r4, #134]	@ movhi
+	ldrb	r3, [r5, #13]	@ zero_extendqisi2
+	strh	r7, [r4, #138]	@ movhi
+	strh	r3, [r4, #136]	@ movhi
+	ldrh	r3, [r5, #10]
+	strh	r3, [r4, #140]	@ movhi
 	ldrb	r1, [r5, #12]	@ zero_extendqisi2
 	ldrh	r0, [r5, #10]
 	bl	__aeabi_idiv
-	strh	r0, [r4, #134]	@ movhi
+	strh	r0, [r4, #142]	@ movhi
 	ldrb	r2, [r5, #9]	@ zero_extendqisi2
-	strh	r2, [r4, #136]	@ movhi
-	ldrb	r1, [r5, #9]	@ zero_extendqisi2
-	ldrh	r3, [r5, #10]
-	smulbb	r3, r1, r3
+	strh	r2, [r4, #144]	@ movhi
+	ldrh	r1, [r5, #10]
+	ldrb	r3, [r5, #9]	@ zero_extendqisi2
+	smulbb	r3, r3, r1
 	mov	r1, #512
-	strh	r1, [r4, #140]	@ movhi
-	ldrb	r1, [r4, #1]	@ zero_extendqisi2
-	strh	r1, [r4, #142]	@ movhi
+	strh	r1, [r4, #148]	@ movhi
+	ldrb	r1, [r4, #37]	@ zero_extendqisi2
 	uxth	r3, r3
-	ldrb	r1, [r4]	@ zero_extendqisi2
-	strh	r3, [r4, #138]	@ movhi
+	strh	r1, [r4, #150]	@ movhi
+	ldrb	r1, [r4, #36]	@ zero_extendqisi2
+	strh	r3, [r4, #146]	@ movhi
 	cmp	r1, #1
-	bne	.L1800
-	mov	r3, r3, asl #1
-	mov	r8, r8, lsr #1
-	mov	r2, r2, asl #1
-	strh	r3, [r6, #138]	@ movhi
-	strb	r7, [r6, #1]
+	bne	.L1790
+	lsl	r3, r3, #1
+	lsr	r1, r7, #1
+	lsl	r2, r2, #1
+	strb	r6, [r4, #37]
+	strh	r3, [r4, #146]	@ movhi
 	mov	r3, #8
-	strh	r8, [r6, #130]	@ movhi
-	strh	r2, [r6, #136]	@ movhi
-	strh	r3, [r6, #142]	@ movhi
-.L1800:
+	strh	r1, [r4, #138]	@ movhi
+	strh	r2, [r4, #144]	@ movhi
+	strh	r3, [r4, #150]	@ movhi
+.L1790:
 	ldrb	r0, [r5, #20]	@ zero_extendqisi2
 	bl	FlashBchSel
 	bl	ftl_flash_suspend
 	mov	r0, #0
-	b	.L1816
-.L1802:
-	mvn	r0, #1
-.L1816:
-	add	sp, sp, #20
+.L1739:
+	add	sp, sp, #28
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1849:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1755:
+	cmp	r3, #220
+	ldreq	r3, .L1837+28
+	moveq	r1, #4096
+	strheq	r1, [r3, #14]	@ movhi
+	mvneq	r3, #35
+	beq	.L1831
+.L1757:
+	cmp	r3, #211
+	ldreq	r3, .L1837+28
+	moveq	r1, #4096
+	strheq	r1, [r3, #14]	@ movhi
+	moveq	r3, #2
+	strbeq	r3, [r2, #3425]
+	b	.L1756
+.L1764:
+	ldrb	r0, [r4, #2233]	@ zero_extendqisi2
+	bl	FlashSetInterfaceMode
+	ldrb	r0, [r4, #2233]	@ zero_extendqisi2
+	b	.L1832
+.L1771:
+	sub	r3, r0, #17
+	cmp	r3, #2
+	bhi	.L1777
+	ldr	r3, .L1837+60
+	cmp	r0, #19
+	str	r3, [r5, #1704]
+	moveq	r3, #15
+	beq	.L1834
+.L1836:
+	mov	r3, #7
+.L1834:
+	strb	r3, [r5, #1721]
+	b	.L1770
+.L1777:
+	sub	r3, r0, #65
+	cmp	r0, #33
+	cmpne	r3, #1
+	ldrls	r3, .L1837+64
+	strls	r3, [r5, #1704]
+	movls	r3, #4
+	strbls	r3, [r4, #85]
+	bls	.L1836
+.L1779:
+	sub	r3, r0, #67
+	sub	r2, r0, #34
+	uxtb	r3, r3
+	cmp	r3, #1
+	cmphi	r2, #1
+	movls	r2, #1
+	movhi	r2, #0
+	bhi	.L1780
+	ldr	r2, .L1837+64
+	cmp	r0, #68
+	cmpne	r0, #35
+	str	r2, [r5, #1704]
+	movne	r2, #7
+	moveq	r2, #17
+	cmp	r3, #1
+	movls	r3, #4
+	movhi	r3, #5
+	strb	r2, [r5, #1721]
+	strb	r3, [r4, #85]
+	b	.L1770
+.L1780:
+	cmp	r0, #49
+	ldreq	r3, .L1837+68
+	streq	r3, [r5, #1704]
+	beq	.L1770
+	cmp	r0, #50
+	ldreq	r3, .L1837+72
+	streq	r2, [r4, #2252]
+	streq	r3, [r5, #1704]
+	b	.L1770
+.L1792:
+	mvn	r0, #1
+	b	.L1739
+.L1838:
 	.align	2
-.L1848:
+.L1837:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2068
 	.word	.LC97
-	.word	.LANCHOR0+1210
+	.word	.LANCHOR0+2072
+	.word	.LANCHOR0+1216
 	.word	1446522928
 	.word	.LANCHOR1
-	.word	.LANCHOR1+3416
-	.word	.LANCHOR1+3292
-	.word	.LANCHOR0+48
-	.word	.LANCHOR1+472
+	.word	.LANCHOR1+3412
+	.word	.LANCHOR1+3288
+	.word	.LANCHOR0+52
 	.word	.LC98
 	.word	.LANCHOR2-568
 	.word	HynixReadRetrial
-	.word	.LANCHOR0+1238
+	.word	.LANCHOR2-364
+	.word	150000
 	.word	MicronReadRetrial
 	.word	ToshibaReadRetrial
 	.word	SamsungReadRetrial
 	.word	samsung_read_retrial
-	.word	.LANCHOR2-364
-	.word	150000
 	.fnend
 	.size	FlashInit, .-FlashInit
 	.align	2
 	.global	FlashPageProgMsbFFData
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashPageProgMsbFFData, %function
 FlashPageProgMsbFFData:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	mov	r7, r1
-	ldr	r1, .L1867
+	mov	r8, r0
+	ldr	r5, .L1855
+	mov	r9, r1
 	mov	r4, r2
-	mov	r6, r0
-	ldrb	r2, [r1, #144]	@ zero_extendqisi2
-	mov	r5, r1
-	ldr	r3, [r1, #44]
-	cmp	r2, #0
+	ldrb	r3, [r5, #152]	@ zero_extendqisi2
+	cmp	r3, #0
+	beq	.L1840
+	ldr	r3, [r5, #2252]
+	cmp	r3, #0
+	popne	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L1840:
+	ldr	r3, [r5, #48]
 	ldrb	r3, [r3, #19]	@ zero_extendqisi2
-	beq	.L1851
-	ldr	r2, [r1, #2248]
-	cmp	r2, #0
-	ldmnefd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L1851:
 	sub	r2, r3, #5
 	cmp	r3, #50
 	cmpne	r2, #2
-	bls	.L1852
+	bls	.L1841
 	sub	r2, r3, #19
-	tst	r2, #239
-	moveq	r2, #1
-	movne	r2, #0
-	cmp	r3, #68
-	movne	r3, r2
-	orreq	r3, r2, #1
-	cmp	r3, #0
-	ldmeqfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L1852:
-	ldr	r8, .L1867+4
-	movw	r10, #65535
-	ldr	r9, .L1867+8
-.L1854:
-	ldr	r3, [r5, #44]
+	and	r2, r2, #239
+	cmp	r2, #0
+	cmpne	r3, #68
+	popne	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L1841:
+	ldr	r6, .L1855+4
+	sub	r7, r6, #2608
+	sub	r7, r7, #12
+.L1843:
+	ldr	r3, [r5, #48]
 	ldrh	r3, [r3, #10]
 	cmp	r3, r4
-	bls	.L1866
-	mov	r3, r4, asl #1
-	ldrh	r3, [r9, r3]
-	cmp	r3, r10
-	ldmnefd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-	mov	r1, #255
+	bhi	.L1844
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L1844:
+	lsl	r3, r4, #1
+	ldrh	r2, [r7, r3]
+	movw	r3, #65535
+	cmp	r2, r3
+	popne	{r4, r5, r6, r7, r8, r9, r10, pc}
 	mov	r2, #32768
-	ldr	r0, [r8, #1716]
+	mov	r1, #255
+	ldr	r0, [r6, #1724]
 	bl	ftl_memset
-	ldr	r2, [r8, #1716]
-	add	r1, r4, r7
+	ldr	r3, [r6, #1724]
+	add	r1, r4, r9
+	mov	r0, r8
 	add	r4, r4, #1
-	mov	r0, r6
-	mov	r3, r2
 	uxth	r4, r4
+	mov	r2, r3
 	bl	FlashProgPage
-	b	.L1854
-.L1866:
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L1868:
+	b	.L1843
+.L1856:
 	.align	2
-.L1867:
+.L1855:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR2-2620
 	.fnend
 	.size	FlashPageProgMsbFFData, .-FlashPageProgMsbFFData
 	.align	2
 	.global	FlashReadSlc2KPages
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReadSlc2KPages, %function
 FlashReadSlc2KPages:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 24
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1920
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	r3, .L1906
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	mov	r4, r0
+	ldr	r8, .L1906+4
+	mov	r9, #0
 	.pad #36
 	sub	sp, sp, #36
-	ldrb	r3, [r3, #481]	@ zero_extendqisi2
-	mov	r4, r0
-	mov	r8, #0
+	ldr	fp, .L1906+8
+	ldrb	r3, [r3, #477]	@ zero_extendqisi2
 	str	r1, [sp, #16]
 	str	r2, [sp, #20]
 	str	r3, [sp, #12]
-.L1870:
+.L1858:
 	ldr	r3, [sp, #16]
-	cmp	r8, r3
-	beq	.L1919
+	cmp	r9, r3
+	bne	.L1878
+	mov	r0, #0
+	add	sp, sp, #36
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1878:
 	ldr	r3, [sp, #16]
 	add	r2, sp, #28
-	mov	r0, r4
 	ldr	r1, [sp, #20]
-	rsb	r3, r8, r3
-	ldr	r9, .L1920+4
+	mov	r0, r4
+	sub	r3, r3, r9
 	uxtb	r3, r3
 	str	r3, [sp]
 	add	r3, sp, #24
-	mov	fp, r9
 	bl	LogAddr2PhyAddr
-	ldrb	r2, [r9, #2230]	@ zero_extendqisi2
+	ldrb	r2, [r8, #2234]	@ zero_extendqisi2
 	ldr	r3, [sp, #24]
-	cmp	r3, r2
-	mvncs	r3, #0
-	strcs	r3, [r4]
-	bcs	.L1872
-	add	r3, r9, r3
+	cmp	r2, r3
+	mvnls	r3, #0
+	strls	r3, [r4]
+	bls	.L1860
+	add	r3, r8, r3
 	mov	r7, #0
-	ldrb	r5, [r3, #2232]	@ zero_extendqisi2
-	mov	r0, r5
+	ldrb	r6, [r3, #2236]	@ zero_extendqisi2
+	mov	r0, r6
 	bl	NandcWaitFlashReady
-	mov	r0, r5
+	mov	r0, r6
 	bl	NandcFlashCs
-.L1873:
+.L1861:
 	ldr	r1, [sp, #28]
-	mov	r0, r5
+	mov	r0, r6
 	bl	FlashReadCmd
-	mov	r0, r5
+	mov	r0, r6
 	bl	NandcWaitFlashReady
 	ldr	r3, [r4, #12]
-	mov	r0, r5
 	mov	r1, #0
-	str	r3, [sp]
 	ldr	r2, [sp, #12]
+	mov	r0, r6
+	str	r3, [sp]
 	ldr	r3, [r4, #8]
 	bl	NandcXferData
-	ldr	r3, .L1920+8
-	ldrb	r3, [r3, #1732]	@ zero_extendqisi2
+	ldrb	r3, [fp, #1740]	@ zero_extendqisi2
+	mov	r5, r0
 	cmp	r3, #0
-	mov	r6, r0
-	beq	.L1874
-	mov	r0, r5
+	beq	.L1862
+	mov	r0, r6
 	bl	flash_read_ecc
 	cmp	r0, #5
-	movhi	r6, #256
-.L1874:
+	movhi	r5, #256
+.L1862:
 	cmp	r7, #9
-	cmnls	r6, #1
+	cmnls	r5, #1
 	moveq	r3, #1
 	movne	r3, #0
 	addeq	r7, r7, #1
-	beq	.L1873
-.L1875:
+	beq	.L1861
+.L1863:
 	cmp	r7, #0
 	mov	r7, r3
-	movne	r6, #256
-.L1877:
-	ldr	r3, [sp, #28]
-	mov	r0, r5
-	ldr	r1, [fp, #4]
+	movne	r5, #256
+.L1865:
+	ldr	r3, [r8, #40]
+	mov	r0, r6
+	ldr	r1, [sp, #28]
 	add	r1, r1, r3
 	bl	FlashReadCmd
-	mov	r0, r5
+	mov	r0, r6
 	bl	NandcWaitFlashReady
 	ldr	r3, [r4, #8]
-	ldr	r2, [r4, #12]
-	mov	r0, r5
-	cmp	r3, #0
 	mov	r1, #0
+	ldr	r2, [r4, #12]
+	mov	r0, r6
+	cmp	r3, #0
 	addne	r3, r3, #2048
 	cmp	r2, #0
 	addne	r2, r2, #8
 	str	r2, [sp]
 	ldr	r2, [sp, #12]
 	bl	NandcXferData
-	ldr	r3, .L1920+8
-	ldrb	r2, [r3, #1732]	@ zero_extendqisi2
-	cmp	r2, #0
+	ldrb	r2, [fp, #1740]	@ zero_extendqisi2
 	mov	r10, r0
-	beq	.L1880
-	mov	r0, r5
+	cmp	r2, #0
+	beq	.L1868
+	mov	r0, r6
 	bl	flash_read_ecc
 	cmp	r0, #5
 	movhi	r10, #256
-.L1880:
+.L1868:
 	cmp	r7, #9
 	cmnls	r10, #1
 	addeq	r7, r7, #1
-	beq	.L1877
-.L1881:
+	beq	.L1865
+.L1869:
 	cmp	r7, #0
-	mov	r0, r5
+	mov	r0, r6
 	movne	r10, #256
 	bl	NandcFlashDeCs
-	ldrb	r2, [r9, #2312]	@ zero_extendqisi2
-	cmp	r10, r6
-	movcs	r3, r10
-	movcc	r3, r6
-	add	r2, r2, r2, asl #1
-	cmp	r3, r2, asr #2
-	bls	.L1883
-	cmn	r3, #1
-	movne	r3, #256
-.L1883:
-	cmp	r3, #256
-	cmnne	r3, #1
+	ldrb	r3, [r8, #2316]	@ zero_extendqisi2
+	cmp	r5, r10
+	movcc	r5, r10
+	add	r3, r3, r3, lsl #1
+	cmp	r5, r3, asr #2
+	bls	.L1871
+	cmn	r5, #1
+	movne	r5, #256
+.L1871:
+	cmp	r5, #256
+	cmnne	r5, #1
 	movne	r3, #0
-	str	r3, [r4]
+	streq	r5, [r4]
+	strne	r3, [r4]
 	ldr	r3, [r4, #12]
 	cmp	r3, #0
-	beq	.L1886
+	beq	.L1874
 	ldr	r2, [r3, #12]
 	cmn	r2, #1
-	bne	.L1886
+	bne	.L1874
 	ldr	r2, [r3, #8]
 	cmn	r2, #1
-	bne	.L1886
+	bne	.L1874
 	ldr	r3, [r3]
 	cmn	r3, #1
 	strne	r2, [r4]
-.L1886:
+.L1874:
 	ldr	r3, [r4]
 	cmn	r3, #1
-	bne	.L1872
+	bne	.L1860
 	ldr	r1, [r4, #4]
-	ldr	r0, .L1920+12
-	ldrb	r2, [r9, #2312]	@ zero_extendqisi2
+	ldrb	r2, [r8, #2316]	@ zero_extendqisi2
+	ldr	r0, .L1906+12
 	bl	printk
 	ldr	r1, [r4, #8]
 	cmp	r1, #0
-	beq	.L1888
-	ldr	r0, .L1920+16
-	mov	r2, #4
+	beq	.L1876
 	mov	r3, #8
+	mov	r2, #4
+	ldr	r0, .L1906+16
 	bl	rknand_print_hex
-.L1888:
+.L1876:
 	ldr	r1, [r4, #12]
 	cmp	r1, #0
-	beq	.L1872
-	mov	r2, #4
-	ldr	r0, .L1920+20
-	mov	r3, r2
+	beq	.L1860
+	mov	r3, #4
+	ldr	r0, .L1906+20
+	mov	r2, r3
 	bl	rknand_print_hex
-.L1872:
-	add	r8, r8, #1
+.L1860:
+	add	r9, r9, #1
 	add	r4, r4, #36
-	b	.L1870
-.L1919:
-	mov	r0, #0
-	add	sp, sp, #36
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1921:
+	b	.L1858
+.L1907:
 	.align	2
-.L1920:
+.L1906:
 	.word	.LANCHOR1
 	.word	.LANCHOR0
 	.word	.LANCHOR2
@@ -11167,2042 +11650,2030 @@
 	.size	FlashReadSlc2KPages, .-FlashReadSlc2KPages
 	.align	2
 	.global	FlashReadPages
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReadPages, %function
 FlashReadPages:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 40
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L1997
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r6, .L1997+4
-	ldrb	r3, [r3, #481]	@ zero_extendqisi2
-	str	r1, [sp, #20]
-	ldrb	r8, [r6]	@ zero_extendqisi2
-	str	r3, [sp, #16]
-	ldrb	r3, [r6, #8]	@ zero_extendqisi2
-	cmp	r8, #0
-	str	r2, [sp, #24]
-	str	r3, [sp, #28]
-	beq	.L1959
+	ldr	r4, .L1979
+	str	r1, [sp, #24]
+	ldrb	r9, [r4, #36]	@ zero_extendqisi2
+	str	r2, [sp, #28]
+	cmp	r9, #0
+	bne	.L1909
+	ldr	r3, .L1979+4
+	mov	fp, r0
+	ldr	r10, .L1979+8
+	str	r9, [sp, #8]
+	ldrb	r3, [r3, #477]	@ zero_extendqisi2
+	str	r3, [sp, #20]
+	ldrb	r3, [r4, #44]	@ zero_extendqisi2
+	str	r3, [sp, #36]
+.L1910:
+	ldr	r3, [sp, #8]
+	ldr	r2, [sp, #24]
+	cmp	r3, r2
+	bcc	.L1943
+	mov	r0, #0
+	b	.L1908
+.L1909:
 	bl	FlashReadSlc2KPages
-	b	.L1992
-.L1959:
-	ldr	r10, .L1997+8
-	mov	r9, r0
-	mov	fp, r8
-.L1923:
-	ldr	r3, [sp, #20]
-	cmp	fp, r3
-	bcs	.L1995
+.L1908:
+	add	sp, sp, #52
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1943:
+	ldr	r2, [sp, #8]
 	mov	r3, #36
-	add	r2, sp, #44
-	mul	r3, r3, fp
-	ldr	r1, [sp, #24]
-	add	r7, r9, r3
-	str	r3, [sp, #8]
-	mov	r0, r7
-	ldr	r3, [r7, #4]
+	ldr	r1, [sp, #28]
+	mul	r3, r3, r2
+	add	r8, fp, r3
 	str	r3, [sp, #12]
-	ldr	r3, [sp, #20]
-	rsb	r3, fp, r3
+	ldr	r3, [sp, #24]
+	mov	r0, r8
+	ldr	r7, [r8, #4]
+	sub	r3, r3, r2
+	add	r2, sp, #44
 	uxtb	r3, r3
 	str	r3, [sp]
 	add	r3, sp, #40
 	bl	LogAddr2PhyAddr
-	ldrb	r2, [r6, #2230]	@ zero_extendqisi2
+	ldrb	r2, [r4, #2234]	@ zero_extendqisi2
+	mov	r6, r0
 	ldr	r3, [sp, #40]
-	mov	r5, r0
-	cmp	r3, r2
-	ldrcs	r2, [sp, #8]
-	mvncs	r3, #0
-	strcs	r3, [r9, r2]
-	bcs	.L1926
-	add	r3, r6, r3
-	ldrb	r4, [r3, #2232]	@ zero_extendqisi2
-	ldrb	r3, [r10, #1733]	@ zero_extendqisi2
+	cmp	r2, r3
+	ldrls	r2, [sp, #12]
+	mvnls	r3, #0
+	strls	r3, [fp, r2]
+	bls	.L1913
+	add	r3, r4, r3
+	ldrb	r5, [r3, #2236]	@ zero_extendqisi2
+	ldrb	r3, [r10, #1741]	@ zero_extendqisi2
+	mov	r0, r5
 	cmp	r3, #0
-	mov	r0, r4
-	moveq	r5, #0
+	moveq	r6, #0
 	bl	NandcWaitFlashReady
-	ldr	r3, .L1997+4
-	ldr	r3, [r3, #44]
+	ldr	r3, [r4, #48]
 	ldrb	r2, [r3, #19]	@ zero_extendqisi2
 	sub	r3, r2, #1
 	cmp	r3, #7
-	bhi	.L1928
+	bhi	.L1915
 	sub	r2, r2, #7
-	add	r1, r6, r4
+	add	r1, r4, r5
 	cmp	r2, #1
-	ldr	r2, .L1997+4
-	ldrb	r3, [r1, #1222]	@ zero_extendqisi2
-	add	r2, r2, r4
-	ldrlsb	r3, [r1, #1230]	@ zero_extendqisi2
-	ldrb	r2, [r2, #2064]	@ zero_extendqisi2
+	add	r2, r4, r5
+	ldrb	r3, [r1, #1228]	@ zero_extendqisi2
+	ldrb	r2, [r2, #2068]	@ zero_extendqisi2
+	ldrbls	r3, [r1, #1236]	@ zero_extendqisi2
 	cmp	r2, r3
-	beq	.L1928
-	mov	r0, r4
-	ldrb	r1, [r6, #1211]	@ zero_extendqisi2
-	ldr	r2, .L1997+12
+	beq	.L1915
+	ldr	r2, .L1979+12
+	mov	r0, r5
+	ldrb	r1, [r4, #1217]	@ zero_extendqisi2
 	bl	HynixSetRRPara
-.L1928:
-	mov	r0, r4
+.L1915:
+	mov	r0, r5
+	lsr	r7, r7, #31
 	bl	NandcFlashCs
-	mov	r0, r4
-	ldr	r3, [sp, #12]
-	ldr	r2, [sp, #24]
-	mov	r3, r3, lsr #31
-	cmp	r2, #1
-	orreq	r3, r3, #1
-	str	r3, [sp, #12]
+	ldr	r3, [sp, #28]
+	mov	r0, r5
+	cmp	r3, #1
+	orreq	r7, r7, #1
+	cmp	r7, #0
+	str	r7, [sp, #16]
+	beq	.L1917
+	ldrb	r3, [r4, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L1930
-	ldr	r3, .L1997+4
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
-	cmp	r3, #0
-	beq	.L1930
+	beq	.L1917
 	bl	flash_enter_slc_mode
-	b	.L1931
-.L1930:
-	bl	flash_exit_slc_mode
-.L1931:
+.L1923:
 	ldr	r1, [sp, #44]
 	cmn	r1, #1
-	cmpeq	r4, #255
+	cmpeq	r5, #255
 	moveq	r3, #0
 	movne	r3, #1
-	moveq	r5, r3
-	beq	.L1933
-	cmp	r5, #0
-	beq	.L1934
-	ldr	r2, [r6, #4]
-	mov	r0, r4
+	moveq	r6, r3
+	beq	.L1919
+	cmp	r6, #0
+	beq	.L1920
+	ldr	r2, [r4, #40]
+	mov	r0, r5
 	add	r2, r1, r2
 	bl	FlashReadDpCmd
-	b	.L1935
-.L1934:
-	mov	r0, r4
-	bl	FlashReadCmd
-.L1935:
-	mov	r0, r4
+.L1921:
+	mov	r0, r5
 	bl	NandcWaitFlashReady
-	cmp	r5, #0
-	beq	.L1933
-	mov	r0, r4
+	cmp	r6, #0
+	beq	.L1919
 	ldr	r1, [sp, #44]
+	mov	r0, r5
 	bl	FlashReadDpDataOutCmd
-.L1933:
-	ldr	r3, [r7, #12]
-	mov	r0, r4
-	ldr	r2, [sp, #16]
+.L1919:
+	ldr	r3, [r8, #12]
 	mov	r1, #0
+	ldr	r2, [sp, #20]
+	mov	r0, r5
 	str	r3, [sp]
-	ldr	r3, [r7, #8]
+	ldr	r3, [r8, #8]
 	bl	NandcXferData
-	ldrb	r2, [r6, #8]	@ zero_extendqisi2
-	adds	r2, r2, #0
+	ldrb	r3, [r4, #44]	@ zero_extendqisi2
+	mov	r7, r0
+	adds	r2, r3, #0
 	movne	r2, #1
 	cmn	r0, #1
-	mov	ip, r0
 	movne	r2, #0
 	cmp	r2, #0
-	movne	r3, #0
-	strneb	r3, [r6, #8]
-	movne	r5, r3
-	bne	.L1931
-.L1936:
-	cmp	r5, #0
-	beq	.L1937
-	ldr	r3, .L1997+4
-	str	r0, [sp, #32]
-	mov	r0, r4
-	str	r2, [sp, #36]
-	ldr	r1, [r3, #4]
-	ldr	r3, [sp, #44]
+	str	r2, [sp, #32]
+	beq	.L1922
+	mov	r3, #0
+	mov	r6, #0
+	strb	r3, [r4, #44]
+	b	.L1923
+.L1917:
+	bl	flash_exit_slc_mode
+	b	.L1923
+.L1920:
+	mov	r0, r5
+	bl	FlashReadCmd
+	b	.L1921
+.L1922:
+	cmp	r6, #0
+	beq	.L1924
+	ldr	r3, [r4, #40]
+	mov	r0, r5
+	ldr	r1, [sp, #44]
 	add	r1, r1, r3
 	bl	FlashReadDpDataOutCmd
-	mov	r0, r4
-	ldr	r3, [sp, #8]
-	ldr	r2, [sp, #36]
+	ldr	r3, [sp, #12]
+	mov	r0, r5
+	ldr	r1, [sp, #32]
 	add	r3, r3, #36
-	add	r3, r9, r3
-	ldr	r1, [r3, #12]
-	str	r1, [sp]
-	mov	r1, r2
+	add	r3, fp, r3
+	ldr	r2, [r3, #12]
+	str	r2, [sp]
+	ldr	r2, [sp, #20]
 	ldr	r3, [r3, #8]
-	ldr	r2, [sp, #16]
 	bl	NandcXferData
 	cmn	r0, #1
-	ldr	ip, [sp, #32]
-	mov	r8, r0
-	moveq	r5, #0
-.L1937:
-	mov	r0, r4
-	str	ip, [sp, #32]
+	mov	r9, r0
+	moveq	r6, #0
+.L1924:
+	mov	r0, r5
 	bl	NandcFlashDeCs
-	ldr	ip, [sp, #32]
-	ldrb	r3, [sp, #28]	@ zero_extendqisi2
-	cmn	ip, #1
-	strb	r3, [r6, #8]
-	bne	.L1944
-	ldrb	r3, [r6, #2252]	@ zero_extendqisi2
+	ldrb	r3, [sp, #36]	@ zero_extendqisi2
+	cmn	r7, #1
+	strb	r3, [r4, #44]
+	bne	.L1925
+	ldrb	r3, [r4, #2256]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L1939
-.L1943:
-	ldr	r5, [r10, #1696]
-	cmp	r5, #0
-	bne	.L1940
-	b	.L1996
-.L1939:
-	ldr	r3, [r6, #80]
-	mov	r0, r4
+	bne	.L1926
+.L1930:
+	ldr	r6, [r10, #1704]
+	cmp	r6, #0
+	bne	.L1927
+	ldr	r3, [r8, #12]
+	mov	r0, r5
+	ldr	r2, [r8, #8]
 	ldr	r1, [sp, #44]
-	ldr	r5, [r3, #304]
+	bl	FlashReadRawPage
+	mov	r7, r0
+.L1931:
+	cmp	r7, #256
+	cmnne	r7, #1
+	ldreq	r3, [sp, #12]
+	movne	r3, #0
+	ldrne	r2, [sp, #12]
+	streq	r7, [fp, r3]
+	strne	r3, [fp, r2]
+	ldr	r3, [sp, #12]
+	ldr	r3, [fp, r3]
+	cmn	r3, #1
+	bne	.L1938
+	ldr	r1, [r8, #4]
+	ldrb	r2, [r4, #2316]	@ zero_extendqisi2
+	ldr	r0, .L1979+16
+	bl	printk
+	ldr	r1, [r8, #12]
+	cmp	r1, #0
+	beq	.L1938
+	mov	r3, #4
+	ldr	r0, .L1979+20
+	mov	r2, r3
+	bl	rknand_print_hex
+.L1938:
+	cmp	r6, #0
+	beq	.L1940
+	ldrb	r3, [r4, #2316]	@ zero_extendqisi2
+	add	r3, r3, r3, lsl #1
+	cmp	r9, r3, asr #2
+	bls	.L1941
+	ldr	r3, [r10, #1704]
+	cmp	r3, #0
+	moveq	r9, #256
+.L1941:
+	ldr	r3, [sp, #12]
+	cmp	r9, #256
+	cmnne	r9, #1
+	movne	r2, #0
+	add	r3, r3, #36
+	streq	r9, [fp, r3]
+	strne	r2, [fp, r3]
+.L1940:
+	ldr	r3, [sp, #8]
+	add	r3, r3, r6
+	str	r3, [sp, #8]
+	ldr	r3, [sp, #16]
+	cmp	r3, #0
+	beq	.L1913
+	ldrb	r3, [r4, #152]	@ zero_extendqisi2
+	cmp	r3, #0
+	beq	.L1913
+	mov	r0, r5
+	bl	flash_exit_slc_mode
+.L1913:
+	ldr	r3, [sp, #8]
+	add	r3, r3, #1
+	str	r3, [sp, #8]
+	b	.L1910
+.L1926:
+	ldr	r3, [r4, #88]
+	mov	r0, r5
+	ldr	r1, [sp, #44]
+	ldr	r6, [r3, #304]
 	mov	r3, #1
 	str	r3, [sp]
-	ldr	r2, [r7, #8]
-	ldr	r3, [r7, #12]
+	ldr	r3, [r8, #12]
+	ldr	r2, [r8, #8]
 	bl	FlashDdrTunningRead
 	cmn	r0, #1
-	mov	ip, r0
-	beq	.L1942
-	ldrb	r3, [r6, #2312]	@ zero_extendqisi2
+	mov	r7, r0
+	beq	.L1929
+	ldrb	r3, [r4, #2316]	@ zero_extendqisi2
 	cmp	r0, r3, lsr #1
-	bls	.L1962
-.L1942:
-	ubfx	r0, r5, #8, #8
-	str	ip, [sp, #32]
+	bls	.L1946
+.L1929:
+	ubfx	r0, r6, #8, #8
 	bl	NandcSetDdrPara
-	ldr	ip, [sp, #32]
-	cmn	ip, #1
-	beq	.L1943
-	b	.L1962
-.L1940:
-	mov	r0, r4
+	cmn	r7, #1
+	beq	.L1930
+.L1946:
+	mov	r6, #0
+.L1925:
+	ldrb	r3, [r4, #2316]	@ zero_extendqisi2
+	add	r3, r3, r3, lsl #1
+	cmp	r7, r3, asr #2
+	bls	.L1931
+	ldr	r3, [r10, #1704]
+	cmp	r3, #0
+	moveq	r7, #256
+	b	.L1931
+.L1927:
+	ldr	r3, [r8, #12]
+	mov	r0, r5
+	ldr	r2, [r8, #8]
 	ldr	r1, [sp, #44]
-	ldr	r2, [r7, #8]
-	ldr	r3, [r7, #12]
-	blx	r5
+	blx	r6
 	cmn	r0, #1
-	mov	ip, r0
-	bne	.L1964
-	ldr	r3, [r6, #44]
+	mov	r7, r0
+	bne	.L1948
+	ldr	r3, [r4, #48]
 	ldrb	r3, [r3, #19]	@ zero_extendqisi2
 	sub	r3, r3, #1
 	cmp	r3, #7
-	bhi	.L1946
-	mov	r0, r4
-	ldrb	r1, [r6, #1211]	@ zero_extendqisi2
-	ldr	r2, .L1997+12
+	bhi	.L1932
 	mov	r3, #0
+	ldr	r2, .L1979+12
+	ldrb	r1, [r4, #1217]	@ zero_extendqisi2
+	mov	r0, r5
 	bl	HynixSetRRPara
-.L1946:
+.L1932:
+	ldr	r3, [r8, #12]
+	mov	r0, r5
+	ldr	r2, [r8, #8]
 	ldr	r1, [sp, #44]
-	mov	r0, r4
-	ldr	r2, [r7, #8]
-	ldr	r3, [r7, #12]
 	bl	FlashReadRawPage
-	ldr	r1, [r7, #4]
-	ldrb	r2, [r6, #2312]	@ zero_extendqisi2
-	mov	ip, r0
-	ldr	r0, .L1997+16
-	mov	r3, ip
-	str	ip, [sp, #32]
+	ldrb	r2, [r4, #2316]	@ zero_extendqisi2
+	mov	r7, r0
+	mov	r3, r0
+	ldr	r1, [r8, #4]
+	ldr	r0, .L1979+24
 	bl	printk
-	ldr	ip, [sp, #32]
-	cmn	ip, #1
-	bne	.L1964
-	ldrb	r5, [r6, #144]	@ zero_extendqisi2
-	cmp	r5, #0
-	beq	.L1945
-	ldr	r3, [sp, #12]
-	mov	r0, r4
+	cmn	r7, #1
+	bne	.L1948
+	ldrb	r6, [r4, #152]	@ zero_extendqisi2
+	cmp	r6, #0
+	beq	.L1931
+	ldr	r3, [sp, #16]
+	mov	r0, r5
 	cmp	r3, #0
-	beq	.L1947
+	beq	.L1933
 	bl	flash_enter_slc_mode
-	b	.L1948
-.L1947:
-	bl	flash_exit_slc_mode
+.L1934:
+	ldr	r6, [r10, #1704]
+	mov	r0, r5
+	ldr	r3, [r8, #12]
+	ldr	r2, [r8, #8]
+	ldr	r1, [sp, #44]
+	blx	r6
+	mov	r7, r0
 .L1948:
-	ldr	ip, [r10, #1696]
-	mov	r0, r4
-	ldr	r1, [sp, #44]
-	ldr	r2, [r7, #8]
-	ldr	r3, [r7, #12]
-	blx	ip
-	mov	ip, r0
-	b	.L1964
-.L1996:
-	mov	r0, r4
-	ldr	r1, [sp, #44]
-	ldr	r2, [r7, #8]
-	ldr	r3, [r7, #12]
-	bl	FlashReadRawPage
-	mov	ip, r0
-	b	.L1945
-.L1962:
-	mov	r5, #0
-.L1944:
-	ldrb	r3, [r6, #2312]	@ zero_extendqisi2
-	add	r3, r3, r3, asl #1
-	cmp	ip, r3, asr #2
-	bls	.L1945
-	ldr	r3, [r10, #1696]
-	cmp	r3, #0
-	moveq	ip, #256
-	b	.L1945
-.L1964:
-	mov	r5, #0
-.L1945:
-	cmp	ip, #256
-	cmnne	ip, #1
-	ldreq	r3, [sp, #8]
-	movne	r3, #0
-	ldrne	r2, [sp, #8]
-	streq	ip, [r9, r3]
-	strne	r3, [r9, r2]
-	ldr	r3, [sp, #8]
-	ldr	r3, [r9, r3]
-	cmn	r3, #1
-	bne	.L1952
-	ldr	r1, [r7, #4]
-	ldr	r0, .L1997+20
-	ldrb	r2, [r6, #2312]	@ zero_extendqisi2
-	bl	printk
-	ldr	r1, [r7, #12]
-	cmp	r1, #0
-	beq	.L1952
-	mov	r2, #4
-	ldr	r0, .L1997+24
-	mov	r3, r2
-	bl	rknand_print_hex
-.L1952:
-	cmp	r5, #0
-	beq	.L1954
-	ldrb	r3, [r6, #2312]	@ zero_extendqisi2
-	add	r3, r3, r3, asl #1
-	cmp	r8, r3, asr #2
-	bls	.L1955
-	ldr	r3, [r10, #1696]
-	cmp	r3, #0
-	moveq	r8, #256
-.L1955:
-	ldr	r3, [sp, #8]
-	cmp	r8, #256
-	cmnne	r8, #1
-	add	r3, r3, #36
-	movne	r2, #0
-	streq	r8, [r9, r3]
-	strne	r2, [r9, r3]
-.L1954:
-	ldr	r3, [sp, #12]
-	add	fp, fp, r5
-	cmp	r3, #0
-	beq	.L1926
-	ldrb	r3, [r6, #144]	@ zero_extendqisi2
-	cmp	r3, #0
-	beq	.L1926
-	mov	r0, r4
+	mov	r6, #0
+	b	.L1931
+.L1933:
 	bl	flash_exit_slc_mode
-.L1926:
-	add	fp, fp, #1
-	b	.L1923
-.L1995:
-	mov	r0, #0
-.L1992:
-	add	sp, sp, #52
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L1998:
+	b	.L1934
+.L1980:
 	.align	2
-.L1997:
-	.word	.LANCHOR1
+.L1979:
 	.word	.LANCHOR0
+	.word	.LANCHOR1
 	.word	.LANCHOR2
-	.word	.LANCHOR0+1214
-	.word	.LC102
+	.word	.LANCHOR0+1220
 	.word	.LC99
 	.word	.LC101
+	.word	.LC102
 	.fnend
 	.size	FlashReadPages, .-FlashReadPages
 	.align	2
 	.global	FlashLoadFactorBbt
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashLoadFactorBbt, %function
 FlashLoadFactorBbt:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 56
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	mov	r2, #16
-	ldr	r4, .L2012
+	ldr	r8, .L1993
 	.pad #60
 	sub	sp, sp, #60
-	ldr	r0, .L2012+4
 	mov	r1, #0
-	ldr	r10, .L2012+8
-	mov	r5, #0
-	ldrh	r3, [r4, #130]
 	mvn	fp, #0
-	ldrh	r6, [r4, #128]
+	ldr	r10, .L1993+4
+	mov	r5, #0
+	ldrh	r3, [r8, #136]
 	mov	r9, r5
-	mov	r8, r4
+	ldrh	r6, [r8, #138]
+	ldr	r0, .L1993+8
 	smulbb	r6, r6, r3
 	bl	ftl_memset
-	ldr	r3, [r10, #1720]
+	ldr	r3, [r10, #1728]
 	uxth	r6, r6
-	add	r2, r6, fp
-	str	r3, [sp, #32]
-	uxth	r3, r2
 	str	r5, [sp, #28]
-	str	r3, [sp, #4]
-.L2000:
-	ldrb	r3, [r8, #2230]	@ zero_extendqisi2
+	str	r3, [sp, #32]
+	add	r3, r6, fp
+	uxth	r3, r3
+	str	r3, [sp, #8]
+.L1982:
+	ldrb	r3, [r8, #2234]	@ zero_extendqisi2
 	uxtb	r7, r5
 	cmp	r3, r7
-	bls	.L2011
-	mul	ip, r6, r7
-	ldr	r4, [sp, #4]
-	sub	r3, r6, #12
-.L2001:
-	cmp	r4, r3
-	ble	.L2003
-	add	r2, ip, r4
-	mov	r1, #1
-	add	r0, sp, #20
-	str	r3, [sp, #12]
-	mov	r2, r2, asl #10
-	str	r2, [sp, #24]
-	mov	r2, r1
-	str	ip, [sp, #8]
-	bl	FlashReadPages
-	ldr	r2, [sp, #20]
-	ldr	ip, [sp, #8]
-	cmn	r2, #1
-	ldr	r3, [sp, #12]
-	beq	.L2002
-	ldr	r2, [r10, #1720]
-	ldrh	r1, [r2]
-	movw	r2, #61664
-	cmp	r1, r2
-	bne	.L2002
-	mov	r1, r7
-	ldr	r0, .L2012+12
-	mov	r2, r4
-	mov	r7, r7, asl #1
-	bl	printk
-	ldr	r3, .L2012+4
-	add	r9, r9, #1
-	strh	r4, [r3, r7]	@ movhi
-	uxth	r9, r9
-	b	.L2003
-.L2002:
-	sub	r4, r4, #1
-	uxth	r4, r4
-	b	.L2001
-.L2003:
-	ldrb	r3, [r8, #2230]	@ zero_extendqisi2
-	add	r5, r5, #1
-	cmp	r3, r9
-	moveq	fp, #0
-	b	.L2000
-.L2011:
+	bhi	.L1988
 	mov	r0, fp
 	add	sp, sp, #60
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2013:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L1988:
+	ldr	r4, [sp, #8]
+	mul	r3, r7, r6
+	sub	r2, r6, #12
+	str	r2, [sp, #4]
+.L1983:
+	ldr	r2, [sp, #4]
+	cmp	r4, r2
+	ble	.L1985
+	add	r2, r4, r3
+	add	r0, sp, #20
+	lsl	r2, r2, #10
+	str	r3, [sp, #12]
+	str	r2, [sp, #24]
+	mov	r2, #1
+	mov	r1, r2
+	bl	FlashReadPages
+	ldr	r2, [sp, #20]
+	ldr	r3, [sp, #12]
+	cmn	r2, #1
+	beq	.L1984
+	ldr	r2, [r10, #1728]
+	ldrh	r1, [r2]
+	movw	r2, #61664
+	cmp	r1, r2
+	bne	.L1984
+	mov	r1, r7
+	mov	r2, r4
+	ldr	r0, .L1993+12
+	add	r9, r9, #1
+	bl	printk
+	uxth	r9, r9
+	ldr	r3, .L1993+8
+	lsl	r7, r7, #1
+	strh	r4, [r3, r7]	@ movhi
+.L1985:
+	ldrb	r3, [r8, #2234]	@ zero_extendqisi2
+	add	r5, r5, #1
+	cmp	r3, r9
+	moveq	fp, #0
+	b	.L1982
+.L1984:
+	sub	r4, r4, #1
+	uxth	r4, r4
+	b	.L1983
+.L1994:
 	.align	2
-.L2012:
+.L1993:
 	.word	.LANCHOR0
-	.word	.LANCHOR2+1736
 	.word	.LANCHOR2
+	.word	.LANCHOR2+1742
 	.word	.LC103
 	.fnend
 	.size	FlashLoadFactorBbt, .-FlashLoadFactorBbt
 	.align	2
 	.global	FlashProgSlc2KPages
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashProgSlc2KPages, %function
 FlashProgSlc2KPages:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 56
+	@ args = 0, pretend = 0, frame = 48
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L2044
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	r3, .L2023
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #68
-	sub	sp, sp, #68
-	ldr	r8, .L2044+4
-	mov	r6, r1
-	ldrb	r3, [r3, #481]	@ zero_extendqisi2
-	mov	r9, r2
+	mov	r10, r1
+	ldr	r9, .L2023+4
+	.pad #60
+	sub	sp, sp, #60
+	mov	r8, r2
 	mov	r4, r0
-	mov	r10, r0
+	ldrb	fp, [r3, #477]	@ zero_extendqisi2
+	mov	r6, r0
 	mov	r7, #0
-	mov	fp, r8
-	str	r3, [sp, #12]
-.L2015:
+.L1996:
+	cmp	r7, r10
+	bne	.L2002
+	ldr	r5, .L2023+8
+	mov	r6, #0
+	ldr	r9, .L2023+12
+.L2003:
 	cmp	r7, r6
-	beq	.L2042
-	rsb	r3, r7, r6
-	add	r2, sp, #20
-	mov	r0, r10
-	mov	r1, r9
+	bne	.L2010
+	mov	r0, #0
+	add	sp, sp, #60
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2002:
+	sub	r3, r10, r7
+	add	r2, sp, #12
 	uxtb	r3, r3
+	mov	r1, r8
+	mov	r0, r6
 	str	r3, [sp]
-	add	r3, sp, #24
+	add	r3, sp, #16
 	bl	LogAddr2PhyAddr
-	ldrb	r2, [r8, #2230]	@ zero_extendqisi2
-	ldr	r3, [sp, #24]
-	cmp	r3, r2
-	mvncs	r3, #0
-	strcs	r3, [r10]
-	bcs	.L2017
-	add	r3, r8, r3
-	ldrb	r5, [r3, #2232]	@ zero_extendqisi2
+	ldrb	r2, [r9, #2234]	@ zero_extendqisi2
+	ldr	r3, [sp, #16]
+	cmp	r2, r3
+	mvnls	r3, #0
+	strls	r3, [r6]
+	bls	.L1998
+	add	r3, r9, r3
+	ldrb	r5, [r3, #2236]	@ zero_extendqisi2
 	mov	r0, r5
 	bl	NandcWaitFlashReady
 	mov	r0, r5
 	bl	NandcFlashCs
 	mov	r0, r5
-	ldr	r1, [sp, #20]
+	ldr	r1, [sp, #12]
 	bl	FlashProgFirstCmd
-	ldr	r3, [r10, #12]
+	ldr	r3, [r6, #12]
+	mov	r2, fp
 	mov	r1, #1
 	mov	r0, r5
-	ldr	r2, [sp, #12]
 	str	r3, [sp]
-	ldr	r3, [r10, #8]
+	ldr	r3, [r6, #8]
 	bl	NandcXferData
 	mov	r0, r5
-	ldr	r1, [sp, #20]
+	ldr	r1, [sp, #12]
 	bl	FlashProgSecondCmd
 	mov	r0, r5
 	bl	NandcWaitFlashReady
 	mov	r0, r5
-	ldr	r1, [sp, #20]
+	ldr	r1, [sp, #12]
 	bl	FlashReadStatus
-	ldr	r3, [sp, #20]
 	sbfx	r0, r0, #0, #1
-	str	r0, [r10]
+	ldr	r1, [sp, #12]
+	str	r0, [r6]
 	mov	r0, r5
-	ldr	r1, [r8, #4]
+	ldr	r3, [r9, #40]
 	add	r1, r1, r3
 	bl	FlashProgFirstCmd
-	ldr	r3, [r10, #8]
-	ldr	r2, [r10, #12]
+	ldr	r3, [r6, #8]
 	mov	r1, #1
-	cmp	r3, #0
+	ldr	r2, [r6, #12]
 	mov	r0, r5
+	cmp	r3, #0
 	addne	r3, r3, #2048
 	cmp	r2, #0
 	addne	r2, r2, #8
 	str	r2, [sp]
-	ldr	r2, [sp, #12]
+	mov	r2, fp
 	bl	NandcXferData
-	ldr	r1, [fp, #4]
+	ldr	r3, [r9, #40]
 	mov	r0, r5
-	ldr	r3, [sp, #20]
+	ldr	r1, [sp, #12]
 	add	r1, r1, r3
 	bl	FlashProgSecondCmd
 	mov	r0, r5
 	bl	NandcWaitFlashReady
 	mov	r0, r5
-	ldr	r1, [sp, #20]
+	ldr	r1, [sp, #12]
 	bl	FlashReadStatus
 	tst	r0, #1
 	mov	r0, r5
 	mvnne	r3, #0
-	strne	r3, [r10]
+	strne	r3, [r6]
 	bl	NandcFlashDeCs
-.L2017:
+.L1998:
 	add	r7, r7, #1
-	add	r10, r10, #36
-	b	.L2015
-.L2042:
-	ldr	r5, .L2044+8
-	mov	r7, #0
-	mov	r8, r5
-.L2022:
-	cmp	r7, r6
-	beq	.L2043
+	add	r6, r6, #36
+	b	.L1996
+.L2010:
 	ldr	r3, [r4]
 	cmn	r3, #1
-	bne	.L2023
+	bne	.L2004
 	ldr	r1, [r4, #4]
-	ldr	r0, .L2044+12
+	ldr	r0, .L2023+16
 	bl	printk
-	b	.L2024
-.L2023:
-	rsb	r3, r7, r6
-	mov	r1, r9
-	add	r2, sp, #20
-	mov	r0, r4
+.L2005:
+	add	r6, r6, #1
+	add	r4, r4, #36
+	b	.L2003
+.L2004:
+	sub	r3, r7, r6
+	add	r2, sp, #12
 	uxtb	r3, r3
+	mov	r1, r8
+	mov	r0, r4
 	str	r3, [sp]
-	add	r3, sp, #24
+	add	r3, sp, #16
 	bl	LogAddr2PhyAddr
-	ldr	r2, [r5, #1724]
+	ldr	r2, [r5, #1732]
 	mov	r3, #0
 	mov	lr, r4
+	add	ip, sp, #20
 	str	r3, [r2]
-	ldr	r2, [r5, #1728]
+	ldr	r2, [r5, #1736]
 	str	r3, [r2]
 	ldmia	lr!, {r0, r1, r2, r3}
-	add	ip, sp, #28
 	stmia	ip!, {r0, r1, r2, r3}
 	ldmia	lr!, {r0, r1, r2, r3}
 	stmia	ip!, {r0, r1, r2, r3}
-	add	r0, sp, #28
+	mov	r2, r8
 	ldr	r3, [lr]
 	mov	r1, #1
-	mov	r2, r9
+	add	r0, sp, #20
 	str	r3, [ip]
-	ldr	r3, [r5, #1724]
-	str	r3, [sp, #36]
-	ldr	r3, [r5, #1728]
-	str	r3, [sp, #40]
+	ldr	r3, [r5, #1732]
+	str	r3, [sp, #28]
+	ldr	r3, [r5, #1736]
+	str	r3, [sp, #32]
 	bl	FlashReadPages
-	ldr	r10, [sp, #28]
+	ldr	r10, [sp, #20]
 	cmn	r10, #1
-	bne	.L2025
-	ldr	r0, .L2044+16
+	bne	.L2006
 	ldr	r1, [r4, #4]
+	ldr	r0, .L2023+20
 	bl	printk
 	str	r10, [r4]
-.L2025:
-	ldr	r10, [sp, #28]
+.L2006:
+	ldr	r10, [sp, #20]
 	cmp	r10, #256
-	bne	.L2026
-	ldr	r0, .L2044+20
+	bne	.L2007
 	ldr	r1, [r4, #4]
+	ldr	r0, .L2023+24
 	bl	printk
 	str	r10, [r4]
-.L2026:
+.L2007:
 	ldr	r3, [r4, #12]
 	cmp	r3, #0
-	beq	.L2027
+	beq	.L2008
 	ldr	r2, [r3]
-	ldr	r3, [r8, #1728]
+	ldr	r3, [r5, #1736]
 	ldr	r3, [r3]
 	cmp	r2, r3
-	beq	.L2027
-	ldr	r0, .L2044+24
+	beq	.L2008
 	ldr	r1, [r4, #4]
+	ldr	r0, .L2023+28
 	bl	printk
 	mvn	r3, #0
 	str	r3, [r4]
-.L2027:
+.L2008:
 	ldr	r3, [r4, #8]
 	cmp	r3, #0
-	beq	.L2024
+	beq	.L2005
 	ldr	r2, [r3]
-	ldr	r3, [r8, #1724]
+	ldr	r3, [r5, #1732]
 	ldr	r3, [r3]
 	cmp	r2, r3
-	beq	.L2024
-	ldr	r0, .L2044+28
+	beq	.L2005
 	ldr	r1, [r4, #4]
+	mov	r0, r9
 	bl	printk
 	mvn	r3, #0
 	str	r3, [r4]
+	b	.L2005
 .L2024:
-	add	r7, r7, #1
-	add	r4, r4, #36
-	b	.L2022
-.L2043:
-	mov	r0, #0
-	add	sp, sp, #68
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2045:
 	.align	2
-.L2044:
+.L2023:
 	.word	.LANCHOR1
 	.word	.LANCHOR0
 	.word	.LANCHOR2
+	.word	.LC108
 	.word	.LC104
 	.word	.LC105
 	.word	.LC106
 	.word	.LC107
-	.word	.LC108
 	.fnend
 	.size	FlashProgSlc2KPages, .-FlashProgSlc2KPages
 	.align	2
 	.global	FtlLoadFactoryBbt
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlLoadFactoryBbt, %function
 FtlLoadFactoryBbt:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r7, #0
-	ldr	r5, .L2058
-	ldr	r6, .L2058+4
+	ldr	r5, .L2036
+	ldr	r6, .L2036+4
 	ldr	r3, [r5, #-524]
-	sub	r9, r6, #76
 	ldr	r8, [r5, #-500]
 	sub	r10, r6, #120
-	mov	fp, r9
-	str	r3, [r5, #1760]
-	str	r8, [r5, #1764]
-.L2047:
+	sub	r9, r6, #78
+	str	r3, [r5, #1768]
+	str	r8, [r5, #1772]
+.L2026:
 	ldrh	r3, [r10]
 	cmp	r7, r3
-	bcs	.L2057
-	ldrh	r4, [r9]
-	mvn	r3, #0
-	movw	ip, #61664
-	strh	r3, [r6, #2]!	@ movhi
-	add	r4, r4, r3
-	uxth	r4, r4
-.L2048:
-	ldrh	r3, [fp]
-	sub	r2, r3, #16
-	cmp	r4, r2
-	ble	.L2050
-	mla	r3, r3, r7, r4
-	mov	r1, #1
-	ldr	r0, .L2058+8
-	mov	r2, r1
-	str	ip, [sp, #4]
-	mov	r3, r3, asl #10
-	str	r3, [r5, #1756]
-	bl	FlashReadPages
-	ldr	r3, [r5, #1752]
-	cmn	r3, #1
-	ldr	ip, [sp, #4]
-	beq	.L2049
-	ldrh	r3, [r8]
-	cmp	r3, ip
-	streqh	r4, [r6]	@ movhi
-	beq	.L2050
-.L2049:
-	sub	r4, r4, #1
-	uxth	r4, r4
-	b	.L2048
-.L2050:
-	add	r7, r7, #1
-	b	.L2047
-.L2057:
+	bcc	.L2031
 	mov	r0, #0
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2059:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2031:
+	ldrh	r4, [r9]
+	mvn	r3, #0
+	ldr	fp, .L2036+8
+	strh	r3, [r6, #2]!	@ movhi
+	add	r4, r4, r3
+	movw	r3, #61664
+	uxth	r4, r4
+.L2027:
+	ldrh	r2, [r9]
+	sub	r1, r2, #16
+	cmp	r4, r1
+	ble	.L2029
+	mla	r2, r7, r2, r4
+	str	r3, [sp, #4]
+	mov	r0, fp
+	lsl	r2, r2, #10
+	str	r2, [r5, #1764]
+	mov	r2, #1
+	mov	r1, r2
+	bl	FlashReadPages
+	ldr	r2, [r5, #1760]
+	ldr	r3, [sp, #4]
+	cmn	r2, #1
+	beq	.L2028
+	ldrh	r2, [r8]
+	cmp	r2, r3
+	bne	.L2028
+	strh	r4, [r6]	@ movhi
+.L2029:
+	add	r7, r7, #1
+	b	.L2026
+.L2028:
+	sub	r4, r4, #1
+	uxth	r4, r4
+	b	.L2027
+.L2037:
 	.align	2
-.L2058:
+.L2036:
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2462
-	.word	.LANCHOR2+1752
+	.word	.LANCHOR0+2466
+	.word	.LANCHOR2+1760
 	.fnend
 	.size	FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
 	.align	2
 	.global	FtlGetLastWrittenPage
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGetLastWrittenPage, %function
 FtlGetLastWrittenPage:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 104
 	@ frame_needed = 0, uses_anonymous_args = 0
+	ldr	r3, .L2051
 	cmp	r1, #1
-	ldr	r3, .L2073
-	stmfd	sp!, {r4, r5, r6, r7, r8, lr}
+	movweq	r2, #2392
+	movwne	r2, #2390
+	push	{r4, r5, r6, r7, r8, lr}
 	.save {r4, r5, r6, r7, r8, lr}
-	movweq	r2, #2390
-	movwne	r2, #2388
+	lsl	r8, r0, #10
+	ldrh	r5, [r3, r2]
 	.pad #104
 	sub	sp, sp, #104
-	ldrh	r4, [r3, r2]
-	mov	r8, r1
 	add	r3, sp, #40
-	mov	r6, r0, asl #10
-	sub	r5, r4, #1
+	mov	r2, r1
 	str	r3, [sp, #16]
-	add	r0, sp, #4
+	mov	r7, r1
+	sub	r5, r5, #1
+	mov	r6, #0
+	sxth	r5, r5
 	mov	r1, #1
-	uxth	r5, r5
-	mov	r2, r8
-	mov	r7, #0
-	str	r7, [sp, #12]
-	sxth	r3, r5
-	orr	r3, r3, r6
+	add	r0, sp, #4
+	str	r6, [sp, #12]
+	orr	r3, r5, r8
 	str	r3, [sp, #8]
 	bl	FlashReadPages
 	ldr	r3, [sp, #40]
 	cmn	r3, #1
-	bne	.L2063
-.L2064:
-	sxth	r4, r7
-	sxth	r3, r5
-	cmp	r4, r3
-	bgt	.L2063
-	add	r4, r4, r3
-	add	r0, sp, #4
+	bne	.L2041
+.L2042:
+	cmp	r6, r5
+	ble	.L2045
+.L2041:
+	mov	r0, r5
+	add	sp, sp, #104
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, pc}
+.L2045:
+	add	r3, r6, r5
+	mov	r2, r7
+	add	r3, r3, r3, lsr #31
 	mov	r1, #1
-	mov	r2, r8
-	add	r4, r4, r4, lsr #31
-	mov	r4, r4, asr #1
+	add	r0, sp, #4
+	asr	r4, r3, #1
 	sxth	r3, r4
-	orr	r3, r3, r6
+	orr	r3, r3, r8
 	str	r3, [sp, #8]
 	bl	FlashReadPages
 	ldr	r3, [sp, #40]
 	cmn	r3, #1
-	bne	.L2065
+	bne	.L2043
 	ldr	r3, [sp, #44]
 	cmn	r3, #1
-	bne	.L2065
+	bne	.L2043
 	ldr	r3, [sp, #4]
 	cmn	r3, #1
 	subne	r4, r4, #1
-	uxthne	r5, r4
-	bne	.L2064
-.L2065:
-	add	r3, r4, #1
-	uxth	r7, r3
-	b	.L2064
-.L2063:
-	sxth	r0, r5
-	add	sp, sp, #104
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L2074:
+	sxthne	r5, r4
+	bne	.L2042
+.L2043:
+	add	r4, r4, #1
+	sxth	r6, r4
+	b	.L2042
+.L2052:
 	.align	2
-.L2073:
+.L2051:
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
 	.align	2
 	.global	FtlLoadBbt
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlLoadBbt, %function
 FtlLoadBbt:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, lr}
-	ldr	r4, .L2108
-	ldr	r7, .L2108+4
-	ldr	r8, .L2108+8
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
+	ldr	r4, .L2085
+	ldr	r5, .L2085+4
 	ldr	r3, [r4, #-524]
-	mov	r9, r4
-	ldr	r6, [r4, #-500]
-	str	r3, [r4, #1760]
-	str	r6, [r4, #1764]
+	add	r8, r4, #1760
+	ldr	r7, [r4, #-500]
+	ldr	r9, .L2085+8
+	str	r3, [r4, #1768]
+	str	r7, [r4, #1772]
 	bl	FtlBbtMemInit
-	movw	r3, #2386
-	ldrh	r5, [r7, r3]
-	sub	r5, r5, #1
-	uxth	r5, r5
-.L2076:
-	ldrh	r3, [r8]
+	movw	r3, #2388
+	ldrh	r6, [r5, r3]
+	sub	r6, r6, #1
+	uxth	r6, r6
+.L2054:
+	ldrh	r3, [r9]
 	sub	r3, r3, #48
-	cmp	r5, r3
-	ble	.L2079
-	mov	r1, #1
-	ldr	r0, .L2108+12
-	mov	r2, r1
-	mov	r3, r5, asl #10
-	str	r3, [r4, #1756]
+	cmp	r6, r3
+	ble	.L2057
+	lsl	r3, r6, #10
+	mov	r2, #1
+	mov	r1, r2
+	mov	r0, r8
+	str	r3, [r4, #1764]
 	bl	FlashReadPages
-	ldr	r3, [r4, #1752]
+	ldr	r3, [r4, #1760]
 	cmn	r3, #1
-	bne	.L2077
-	ldr	r3, [r9, #1756]
-	mov	r1, #1
-	ldr	r0, .L2108+12
-	mov	r2, r1
+	bne	.L2055
+	ldr	r3, [r4, #1764]
+	mov	r2, #1
+	mov	r1, r2
+	mov	r0, r8
 	add	r3, r3, #1
-	str	r3, [r9, #1756]
+	str	r3, [r4, #1764]
 	bl	FlashReadPages
-.L2077:
-	ldr	r3, [r4, #1752]
+.L2055:
+	ldr	r3, [r4, #1760]
 	cmn	r3, #1
-	beq	.L2078
-	ldrh	r2, [r6]
+	beq	.L2056
+	ldrh	r2, [r7]
 	movw	r3, #61649
 	cmp	r2, r3
-	bne	.L2078
-	movw	r3, #2452
-	strh	r5, [r7, r3]	@ movhi
-	ldr	r3, [r6, #4]
-	str	r3, [r7, #2460]
-	ldr	r3, .L2108+16
-	ldrh	r2, [r6, #8]
+	bne	.L2056
+	movw	r3, #2456
+	strh	r6, [r5, r3]	@ movhi
+	ldr	r3, [r7, #4]
+	str	r3, [r5, #2464]
+	ldr	r3, .L2085+12
+	ldrh	r2, [r7, #8]
 	strh	r2, [r3, #4]	@ movhi
-	b	.L2079
-.L2078:
-	sub	r5, r5, #1
-	uxth	r5, r5
-	b	.L2076
-.L2079:
-	movw	r9, #2452
+.L2057:
+	movw	r8, #2456
 	movw	r2, #65535
-	ldrh	r3, [r7, r9]
-	ldr	r8, .L2108+4
+	ldrh	r3, [r5, r8]
+	ldr	r6, .L2085+12
 	cmp	r3, r2
-	ldr	r5, .L2108+16
-	beq	.L2093
-	ldrh	r3, [r5, #4]
+	beq	.L2071
+	ldrh	r3, [r6, #4]
 	cmp	r3, r2
-	beq	.L2083
-	mov	r1, #1
-	ldr	r0, .L2108+12
-	mov	r2, r1
-	mov	r3, r3, asl #10
-	str	r3, [r4, #1756]
+	beq	.L2061
+	lsl	r3, r3, #10
+	mov	r2, #1
+	mov	r1, r2
+	ldr	r0, .L2085+16
+	str	r3, [r4, #1764]
 	bl	FlashReadPages
-	ldr	r3, [r4, #1752]
+	ldr	r3, [r4, #1760]
 	cmn	r3, #1
-	beq	.L2083
-	ldrh	r2, [r6]
+	beq	.L2061
+	ldrh	r2, [r7]
 	movw	r3, #61649
 	cmp	r2, r3
-	bne	.L2083
-	ldr	r3, [r6, #4]
-	ldr	r2, [r8, #2460]
+	bne	.L2061
+	ldr	r3, [r7, #4]
+	ldr	r2, [r5, #2464]
 	cmp	r3, r2
-	strhi	r3, [r8, #2460]
-	ldrhih	r2, [r5, #4]
-	ldrhih	r3, [r6, #8]
-	strhih	r2, [r8, r9]	@ movhi
-	strhih	r3, [r5, #4]	@ movhi
-.L2083:
-	movw	r3, #2452
+	ldrhhi	r2, [r6, #4]
+	strhi	r3, [r5, #2464]
+	ldrhhi	r3, [r7, #8]
+	strhhi	r2, [r5, r8]	@ movhi
+	strhhi	r3, [r6, #4]	@ movhi
+.L2061:
+	ldr	r9, .L2085+16
+	movw	r3, #2456
 	mov	r1, #1
-	ldrh	r0, [r7, r3]
-	movw	r8, #61649
+	ldrh	r0, [r5, r3]
+	movw	r10, #61649
 	bl	FtlGetLastWrittenPage
-	uxth	r7, r0
+	sxth	r8, r0
 	add	r0, r0, #1
-	strh	r0, [r5, #2]	@ movhi
-.L2085:
-	sxth	r3, r7
-	cmp	r3, #0
-	blt	.L2090
-	ldrh	r2, [r5]
-	mov	r1, #1
-	ldr	r0, .L2108+12
-	orr	r3, r3, r2, asl #10
-	str	r3, [r4, #1756]
-	ldr	r3, [r4, #-524]
-	mov	r2, r1
-	str	r3, [r4, #1760]
-	bl	FlashReadPages
-	ldr	r3, [r4, #1752]
-	cmn	r3, #1
-	beq	.L2086
+	strh	r0, [r6, #2]	@ movhi
+.L2063:
+	cmp	r8, #0
+	blt	.L2068
 	ldrh	r3, [r6]
-	cmp	r3, r8
-	bne	.L2086
-.L2090:
-	ldrh	r2, [r6, #10]
-	ldrh	r0, [r6, #12]
-	ldr	r3, .L2108+4
-	strh	r2, [r5, #6]	@ movhi
-	movw	r2, #65535
-	cmp	r0, r2
-	bne	.L2087
-	b	.L2088
-.L2086:
-	sub	r7, r7, #1
-	uxth	r7, r7
-	b	.L2085
-.L2087:
-	ldr	r2, [r3, #2316]
-	cmp	r0, r2
-	beq	.L2088
-	movw	r1, #2330
-	ldrh	r3, [r3, r1]
-	mov	r3, r3, lsr #2
+	mov	r2, #1
+	mov	r1, r2
+	mov	r0, r9
+	orr	r3, r8, r3, lsl #10
+	str	r3, [r4, #1764]
+	ldr	r3, [r4, #-524]
+	str	r3, [r4, #1768]
+	bl	FlashReadPages
+	ldr	r3, [r4, #1760]
+	cmn	r3, #1
+	beq	.L2064
+	ldrh	r3, [r7]
+	cmp	r3, r10
+	bne	.L2064
+.L2068:
+	ldrh	r3, [r7, #10]
+	ldrh	r0, [r7, #12]
+	strh	r3, [r6, #6]	@ movhi
+	movw	r3, #65535
 	cmp	r0, r3
-	cmpcc	r2, r3
-	bcs	.L2088
-	bl	FtlSysBlkNumInit
-.L2088:
-	ldr	r6, .L2108+20
+	bne	.L2065
+.L2066:
+	ldr	r6, .L2085+20
 	mov	r5, #0
-	ldr	r8, .L2108+24
+	ldr	r8, .L2085+24
 	sub	r7, r6, #134
-.L2091:
+.L2069:
 	ldrh	r3, [r7]
 	cmp	r5, r3
-	bcs	.L2107
-	ldrh	r2, [r8]
-	ldr	r1, [r4, #1760]
-	ldr	r0, [r6, #4]!
-	mov	r2, r2, asl #2
-	mla	r1, r5, r2, r1
-	bl	ftl_memcpy
-	add	r5, r5, #1
-	b	.L2091
-.L2107:
+	bcc	.L2070
 	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
-.L2093:
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L2056:
+	sub	r6, r6, #1
+	uxth	r6, r6
+	b	.L2054
+.L2064:
+	sub	r8, r8, #1
+	sxth	r8, r8
+	b	.L2063
+.L2065:
+	ldr	r2, [r5, #2320]
+	cmp	r0, r2
+	beq	.L2066
+	movw	r3, #2334
+	ldrh	r3, [r5, r3]
+	lsr	r3, r3, #2
+	cmp	r2, r3
+	cmpcc	r0, r3
+	bcs	.L2066
+	bl	FtlSysBlkNumInit
+	b	.L2066
+.L2070:
+	ldrh	r2, [r8]
+	ldr	r1, [r4, #1768]
+	ldr	r0, [r6, #4]!
+	lsl	r2, r2, #2
+	mla	r1, r5, r2, r1
+	add	r5, r5, #1
+	bl	ftl_memcpy
+	b	.L2069
+.L2071:
 	mvn	r0, #0
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
-.L2109:
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L2086:
 	.align	2
-.L2108:
+.L2085:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2386
-	.word	.LANCHOR2+1752
-	.word	.LANCHOR0+2452
-	.word	.LANCHOR0+2476
+	.word	.LANCHOR0+2388
+	.word	.LANCHOR0+2456
+	.word	.LANCHOR2+1760
+	.word	.LANCHOR0+2480
 	.word	.LANCHOR2-436
 	.fnend
 	.size	FtlLoadBbt, .-FtlLoadBbt
 	.align	2
 	.global	FtlScanSysBlk
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlScanSysBlk, %function
 FtlScanSysBlk:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 32
+	@ args = 0, pretend = 0, frame = 24
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r5, #0
-	ldr	r7, .L2196
-	mov	r1, r5
-	ldr	r4, .L2196+4
-	.pad #36
-	sub	sp, sp, #36
-	movw	r6, #2408
-	ldr	r2, [r7, #2416]
-	sub	r3, r4, #388
+	mov	r6, #0
+	ldr	r5, .L2166
+	movw	r3, #2438
+	mov	r1, r6
+	.pad #28
+	sub	sp, sp, #28
+	ldr	r4, .L2166+4
+	movw	r8, #2412
+	ldr	r2, [r5, #2420]
+	strh	r6, [r5, r3]	@ movhi
+	sub	r7, r4, #388
 	ldr	r0, [r4, #-444]
-	mov	r8, r4
-	strh	r5, [r3]	@ movhi
-	movw	r3, #2434
-	mov	r2, r2, asl #2
-	strh	r5, [r7, r3]	@ movhi
+	strh	r6, [r7]	@ movhi
+	lsl	r2, r2, #2
 	bl	ftl_memset
-	ldr	r2, [r7, #2416]
-	mov	r1, r5
+	ldr	r2, [r5, #2420]
+	mov	r1, r6
 	ldr	r0, [r4, #-472]
-	mov	r2, r2, asl #1
+	lsl	r2, r2, #1
 	bl	ftl_memset
-	ldrh	r2, [r7, r6]
-	mov	r1, r5
+	ldrh	r2, [r5, r8]
+	mov	r1, r6
 	ldr	r0, [r4, #-460]
-	mov	r2, r2, asl #2
+	lsl	r2, r2, #2
 	bl	ftl_memset
-	ldrh	r2, [r7, r6]
-	ldr	r0, [r7, #2436]
-	mov	r1, r5
-	mov	r2, r2, asl #1
+	ldrh	r2, [r5, r8]
+	mov	r1, r6
+	ldr	r0, [r5, #2440]
+	lsl	r2, r2, #1
 	bl	ftl_memset
-	ldr	r0, .L2196+8
-	mov	r1, #255
+	sub	r0, r4, #3296
 	mov	r2, #16
+	mov	r1, #255
+	sub	r0, r0, #4
 	bl	ftl_memset
-	movw	r3, #2328
-	ldrh	r3, [r7, r3]
-	str	r7, [sp, #16]
-	mov	r7, r4
-	str	r3, [sp, #4]
-.L2111:
-	ldr	r3, .L2196+12
-	ldr	r2, [sp, #4]
-	ldr	r1, .L2196
+	movw	r3, #2332
+	str	r7, [sp]
+	ldrh	fp, [r5, r3]
+	str	r5, [sp, #4]
+.L2088:
+	ldr	r3, .L2166+8
+	ldr	r2, .L2166
 	ldrh	r3, [r3]
-	cmp	r3, r2
-	mov	r0, r1
-	bls	.L2152
-	add	r3, r1, #2320
-	add	r1, r1, #2400
-	ldr	r0, [r4, #-2692]
-	mov	r5, #0
-	ldrh	ip, [r3]
-	sub	r6, r1, #52
-	ldr	r3, [r4, #-536]
-	mov	fp, r5
-	ldr	r2, [r4, #-2696]
-	mov	r9, #36
+	cmp	r3, fp
+	bls	.L2128
+	ldr	r1, [r4, #-2692]
+	mov	r6, #0
+	ldr	r3, .L2166+12
+	mov	r5, r6
+	ldr	r7, [r4, #-536]
+	mov	r8, #36
+	str	r1, [sp, #8]
+	ldr	r1, .L2166+16
+	ldrh	r2, [r3]
+	ldr	r3, [r4, #-2696]
 	ldrh	r10, [r1]
-	str	r0, [sp, #8]
-.L2153:
-	uxth	r1, r5
-	cmp	r1, ip
-	bcs	.L2191
-	ldr	r1, [sp, #4]
-	ldrb	r0, [r6, r5]	@ zero_extendqisi2
-	str	r2, [sp, #28]
-	str	r3, [sp, #24]
-	str	ip, [sp, #20]
+	sub	r9, r1, #52
+	b	.L2129
+.L2090:
+	mov	r1, fp
+	ldrb	r0, [r9, r6]	@ zero_extendqisi2
+	str	r3, [sp, #20]
+	str	r2, [sp, #16]
 	bl	V2P_block
 	str	r0, [sp, #12]
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #0
+	ldr	r2, [sp, #16]
+	ldr	r3, [sp, #20]
+	bne	.L2089
 	ldr	r1, [sp, #12]
-	ldr	ip, [sp, #20]
-	ldr	r3, [sp, #24]
-	ldr	r2, [sp, #28]
-	bne	.L2112
-	mla	r0, r9, fp, r3
-	mov	r1, r1, asl #10
-	stmib	r0, {r1, r2}
-	mul	r1, r10, fp
-	add	lr, r1, #3
-	cmp	r1, #0
-	movlt	r1, lr
-	ldr	lr, [sp, #8]
-	bic	r1, r1, #3
-	add	r1, lr, r1
-	str	r1, [r0, #12]
-	add	r0, fp, #1
-	uxth	fp, r0
-.L2112:
+	mla	r0, r8, r5, r7
+	lsl	r1, r1, #10
+	stmib	r0, {r1, r3}
+	mul	r1, r10, r5
 	add	r5, r5, #1
-	b	.L2153
-.L2191:
-	cmp	fp, #0
-	beq	.L2115
-	ldr	r0, [r4, #-536]
-	mov	r1, fp
+	uxth	r5, r5
+	add	ip, r1, #3
+	cmp	r1, #0
+	movlt	r1, ip
+	ldr	ip, [sp, #8]
+	bic	r1, r1, #3
+	add	r1, ip, r1
+	str	r1, [r0, #12]
+.L2089:
+	add	r6, r6, #1
+.L2129:
+	uxth	r1, r6
+	cmp	r2, r1
+	bhi	.L2090
+	cmp	r5, #0
+	bne	.L2091
+.L2127:
+	add	r3, fp, #1
+	uxth	fp, r3
+	b	.L2088
+.L2091:
+	mov	r8, #0
 	mov	r2, #1
+	mov	r1, r5
+	mov	r0, r7
 	bl	FlashReadPages
-	mov	r3, #0
-.L2189:
-	str	r3, [sp, #8]
-	ldrh	r3, [sp, #8]
-	cmp	r3, fp
-	bcs	.L2115
-	ldr	r3, [sp, #8]
+.L2092:
+	uxth	r3, r8
+	cmp	r5, r3
+	bls	.L2127
 	mov	r9, #36
-	mul	r9, r9, r3
 	ldr	r3, [r4, #-536]
+	mul	r9, r9, r8
 	add	r2, r3, r9
 	ldr	r3, [r3, r9]
-	ldr	r5, [r2, #4]
+	ldr	r6, [r2, #4]
+	ldr	r7, [r2, #12]
 	cmn	r3, #1
-	ldr	r6, [r2, #12]
-	ubfx	r5, r5, #10, #16
-	bne	.L2118
+	ubfx	r6, r6, #10, #16
+	bne	.L2095
 	mov	r10, #16
-	movw	ip, #65535
-.L2117:
+.L2097:
 	ldr	r0, [r4, #-536]
-	mov	r1, #1
-	mov	r2, r1
-	str	ip, [sp, #12]
+	mov	r2, #1
+	mov	r1, r2
 	add	r0, r0, r9
 	ldr	r3, [r0, #4]
 	add	r3, r3, #1
 	str	r3, [r0, #4]
 	bl	FlashReadPages
-	ldrh	r3, [r6]
-	ldr	ip, [sp, #12]
-	cmp	r3, ip
-	ldreq	r3, [r8, #-536]
-	mvneq	r2, #0
-	streq	r2, [r3, r9]
-	beq	.L2118
-.L2119:
-	ldr	r3, [r7, #-536]
+	ldrh	r3, [r7]
+	movw	r2, #65535
+	cmp	r3, r2
+	ldr	r3, [r4, #-536]
+	bne	.L2094
+	mvn	r2, #0
+	str	r2, [r3, r9]
+	ldr	r3, [r4, #-536]
+	ldr	r3, [r3, r9]
+	cmp	r3, r2
+	beq	.L2096
+.L2095:
+	ldr	r2, [r4, #-3332]
+	ldr	r3, [r7, #4]
+	cmn	r2, #1
+	beq	.L2098
+	cmp	r2, r3
+	bhi	.L2099
+.L2098:
+	cmn	r3, #1
+	addne	r2, r3, #1
+	strne	r2, [r4, #-3332]
+.L2099:
+	ldrh	r2, [r7]
+	movw	r1, #61604
+	cmp	r2, r1
+	beq	.L2101
+	bhi	.L2102
+	movw	r3, #61574
+	cmp	r2, r3
+	beq	.L2103
+.L2100:
+	add	r8, r8, #1
+	b	.L2092
+.L2094:
 	ldr	r3, [r3, r9]
 	cmn	r3, #1
-	bne	.L2118
+	bne	.L2095
 	sub	r10, r10, #1
 	uxth	r10, r10
 	cmp	r10, #0
-	bne	.L2117
-.L2118:
-	ldr	r3, [r7, #-536]
-	ldr	r3, [r3, r9]
-	cmn	r3, #1
-	beq	.L2121
-	ldr	r2, [r7, #-3332]
-	ldr	r3, [r6, #4]
-	cmn	r2, #1
-	beq	.L2122
-	cmp	r2, r3
-	bhi	.L2123
-.L2122:
-	cmn	r3, #1
-	addne	r2, r3, #1
-	strne	r2, [r8, #-3332]
-.L2123:
-	ldrh	r2, [r6]
-	movw	r1, #61604
-	cmp	r2, r1
-	beq	.L2125
-	bhi	.L2126
-	movw	r3, #61574
-	cmp	r2, r3
-	bne	.L2124
-	ldr	r2, .L2196+16
-	ldr	lr, [r8, #-460]
-	ldrh	ip, [r2]
-	ldrh	r1, [r2, #26]
-	sub	r0, ip, #1
-	rsb	r2, r1, r0
-	str	r2, [sp, #12]
-	uxth	r3, r0
-	b	.L2139
-.L2126:
+	bne	.L2097
+.L2096:
+	ldr	r3, .L2166
+	ldrb	r1, [r3, #152]	@ zero_extendqisi2
+	cmp	r1, #0
+	bne	.L2165
+.L2125:
+	mov	r0, r6
+	bl	FtlFreeSysBlkQueueIn
+	b	.L2100
+.L2102:
 	movw	r3, #61634
 	cmp	r2, r3
-	beq	.L2128
+	beq	.L2104
 	movw	r3, #65535
 	cmp	r2, r3
-	moveq	r0, r5
-	beq	.L2190
-	b	.L2124
-.L2128:
-	ldr	r3, [sp, #16]
-	ldr	ip, .L2196+20
-	ldr	r9, [r4, #-444]
-	ldr	lr, [r3, #2416]
-	ldrh	r2, [ip]
-	uxth	r1, lr
-	sub	r3, r1, #1
-	rsb	r1, r2, r1
-	sub	r1, r1, #1
-	uxth	r3, r3
-	sxth	r1, r1
-	str	r1, [sp, #20]
-.L2130:
-	ldr	r1, [sp, #20]
-	sxth	r0, r3
-	cmp	r0, r1
-	ble	.L2192
-	mov	r10, r0, asl #2
-	ldr	r1, [r6, #4]
-	str	r10, [sp, #12]
-	ldr	r10, [r9, r0, asl #2]
-	cmp	r1, r10
-	bls	.L2131
-	ldr	r1, [r9]
-	cmp	r1, #0
-	bne	.L2132
-	cmp	r2, lr
-	addne	r2, r2, #1
-	strneh	r2, [ip]	@ movhi
-.L2132:
-	uxth	r9, r3
+	bne	.L2100
+.L2165:
 	mov	r1, #0
-.L2133:
-	uxth	r2, r1
-	cmp	r2, r9
-	bcs	.L2193
-	ldr	lr, [r7, #-444]
-	sxth	r2, r2
-	add	r1, r1, #1
-	add	r10, lr, r2, asl #2
-	ldr	r10, [r10, #4]
-	str	r10, [lr, r2, asl #2]
-	mov	r2, r2, asl #1
-	ldr	lr, [r7, #-472]
-	add	r10, lr, r2
-	ldrh	r10, [r10, #2]
-	strh	r10, [lr, r2]	@ movhi
-	b	.L2133
-.L2193:
+	b	.L2125
+.L2104:
+	ldr	r3, [sp, #4]
+	ldr	r2, [sp]
+	ldr	ip, [r4, #-444]
+	ldr	r0, [r3, #2420]
+	ldrh	r2, [r2]
+	uxth	r1, r0
+	sub	r3, r1, #1
+	sub	r1, r1, r2
+	sub	r1, r1, #1
+	sxth	r3, r3
+	sxth	r1, r1
+.L2106:
+	cmp	r3, r1
+	bgt	.L2112
+	cmp	r3, #0
+	bge	.L2142
+	b	.L2100
+.L2112:
+	ldr	r10, [r7, #4]
+	lsl	lr, r3, #2
+	ldr	r9, [ip, r3, lsl #2]
+	cmp	r10, r9
+	bls	.L2107
+	ldr	r1, [ip]
+	cmp	r1, #0
+	bne	.L2108
+	cmp	r0, r2
+	ldrne	r1, .L2166+20
+	addne	r2, r2, #1
+	strhne	r2, [r1]	@ movhi
+.L2108:
+	uxth	ip, r3
+	mov	r1, #0
+.L2109:
+	uxth	r0, r1
+	sxth	r2, r1
+	cmp	r0, ip
+	bcc	.L2110
+	ldr	r1, [r7, #4]
+	cmp	r3, #0
 	ldr	r2, [r4, #-444]
-	mov	r0, r0, asl #1
-	ldr	r1, [r6, #4]
-	ldr	lr, [sp, #12]
 	str	r1, [r2, lr]
-	ldr	r2, [r4, #-472]
-	strh	r5, [r2, r0]	@ movhi
-	sxth	r0, r3
-	cmp	r0, #0
-	bge	.L2135
-	b	.L2124
-.L2131:
-	sub	r3, r3, #1
-	uxth	r3, r3
-	b	.L2130
-.L2192:
-	cmp	r0, #0
-	bge	.L2166
-	b	.L2124
-.L2135:
-	ldr	r1, .L2196
-	ldrh	r2, [ip]
-	ldr	r1, [r1, #2416]
-	rsb	r1, r2, r1
+	lsl	r2, r3, #1
+	ldr	r1, [r4, #-472]
+	strh	r6, [r1, r2]	@ movhi
+	blt	.L2100
+	ldr	r2, [sp]
+	ldr	r1, .L2166
+	ldrh	r2, [r2]
+	ldr	r1, [r1, #2420]
+	sub	r1, r1, r2
 	sub	r1, r1, #1
 	sxth	r1, r1
-	cmp	r0, r1
-	bgt	.L2124
-.L2166:
-	add	r2, r2, #1
-	ldr	r1, [r6, #4]
-	strh	r2, [ip]	@ movhi
-	sxth	r3, r3
-	ldr	r2, [r4, #-444]
-	str	r1, [r2, r3, asl #2]
-	mov	r3, r3, asl #1
-	ldr	r2, [r4, #-472]
-	b	.L2187
-.L2145:
-	ldr	r9, [lr, r2, asl #2]
-	mov	r10, r2, asl #2
-	ldr	r0, [r6, #4]
-	cmp	r0, r9
-	bhi	.L2194
-	sub	r3, r3, #1
-	uxth	r3, r3
-.L2139:
-	ldr	r0, [sp, #12]
-	sxth	r2, r3
-	cmp	r2, r0
-	bgt	.L2145
-	b	.L2144
-.L2194:
-	ldr	r0, [lr]
-	cmp	r0, #0
-	bne	.L2141
-	cmp	r1, ip
-	addne	r1, r1, #1
-	ldrne	r0, .L2196+24
-	strneh	r1, [r0]	@ movhi
-.L2141:
-	uxth	lr, r3
-	mov	r0, #0
+	cmp	r3, r1
+	bgt	.L2100
 .L2142:
-	uxth	r1, r0
-	cmp	r1, lr
-	bcs	.L2195
-	ldr	ip, [r4, #-460]
-	sxth	r1, r1
-	add	r0, r0, #1
-	add	r9, ip, r1, asl #2
+	ldr	r1, [sp]
+	add	r2, r2, #1
+	strh	r2, [r1]	@ movhi
+	ldr	r2, [r4, #-444]
+	ldr	r1, [r7, #4]
+	str	r1, [r2, r3, lsl #2]
+	lsl	r3, r3, #1
+	ldr	r2, [r4, #-472]
+.L2163:
+	strh	r6, [r2, r3]	@ movhi
+	b	.L2100
+.L2110:
+	ldr	r0, [r4, #-444]
+	add	r1, r1, #1
+	add	r9, r0, r2, lsl #2
 	ldr	r9, [r9, #4]
-	str	r9, [ip, r1, asl #2]
-	mov	r1, r1, asl #1
-	ldr	ip, .L2196
-	ldr	ip, [ip, #2436]
-	add	r9, ip, r1
+	str	r9, [r0, r2, lsl #2]
+	lsl	r2, r2, #1
+	ldr	r0, [r4, #-472]
+	add	r9, r0, r2
 	ldrh	r9, [r9, #2]
-	strh	r9, [ip, r1]	@ movhi
-	b	.L2142
-.L2195:
-	ldr	r1, [r8, #-460]
-	mov	r2, r2, asl #1
-	ldr	r0, [r6, #4]
-	str	r0, [r1, r10]
-	ldr	r1, .L2196
-	ldr	r1, [r1, #2436]
-	strh	r5, [r1, r2]	@ movhi
-.L2144:
+	strh	r9, [r0, r2]	@ movhi
+	b	.L2109
+.L2107:
+	sub	r3, r3, #1
 	sxth	r3, r3
+	b	.L2106
+.L2103:
+	ldr	r3, .L2166+24
+	ldr	r1, .L2166+28
+	ldr	lr, [r4, #-460]
+	ldrh	r2, [r3]
+	ldrh	r1, [r1]
+	sub	r0, r2, #1
+	sxth	r3, r0
+	sub	r0, r0, r1
+.L2115:
+	cmp	r3, r0
+	ble	.L2120
+	ldr	r10, [r7, #4]
+	lsl	ip, r3, #2
+	ldr	r9, [lr, r3, lsl #2]
+	cmp	r10, r9
+	bls	.L2116
+	sub	r2, r2, r1
+	ldr	r0, [lr]
+	clz	r2, r2
+	uxth	r9, r3
+	lsr	r2, r2, #5
+	cmp	r0, #0
+	orrne	r2, r2, #1
+	ldr	r0, .L2166
+	cmp	r2, #0
+	ldreq	r2, .L2166+28
+	addeq	r1, r1, #1
+	strheq	r1, [r2]	@ movhi
+	mov	r1, #0
+.L2118:
+	uxth	lr, r1
+	sxth	r2, r1
+	cmp	lr, r9
+	bcc	.L2119
+	ldr	r1, [r7, #4]
+	ldr	r2, [r4, #-460]
+	str	r1, [r2, ip]
+	lsl	r2, r3, #1
+	ldr	r1, [r0, #2440]
+	strh	r6, [r1, r2]	@ movhi
+.L2120:
 	cmp	r3, #0
-	blt	.L2124
-	ldr	r0, .L2196+24
+	blt	.L2100
+	ldr	r0, .L2166+28
 	ldrh	r2, [r0, #-26]
 	ldrh	r1, [r0]
 	sub	r2, r2, #1
-	rsb	r2, r1, r2
+	sub	r2, r2, r1
 	sxth	r2, r2
 	cmp	r3, r2
-	bgt	.L2124
+	bgt	.L2100
 	add	r1, r1, #1
-	ldr	r2, [r8, #-460]
+	ldr	r2, [r4, #-460]
 	strh	r1, [r0]	@ movhi
-	ldr	r1, [r6, #4]
-	str	r1, [r2, r3, asl #2]
-	mov	r3, r3, asl #1
-	ldr	r2, .L2196
-	ldr	r2, [r2, #2436]
-.L2187:
-	strh	r5, [r2, r3]	@ movhi
-	b	.L2124
-.L2125:
-	ldr	r2, .L2196+8
+	ldr	r1, [r7, #4]
+	str	r1, [r2, r3, lsl #2]
+	lsl	r3, r3, #1
+	ldr	r2, [sp, #4]
+	ldr	r2, [r2, #2440]
+	b	.L2163
+.L2119:
+	ldr	lr, [r4, #-460]
+	add	r1, r1, #1
+	add	r10, lr, r2, lsl #2
+	ldr	r10, [r10, #4]
+	str	r10, [lr, r2, lsl #2]
+	lsl	r2, r2, #1
+	ldr	lr, [r0, #2440]
+	add	r10, lr, r2
+	ldrh	r10, [r10, #2]
+	strh	r10, [lr, r2]	@ movhi
+	b	.L2118
+.L2116:
+	sub	r3, r3, #1
+	sxth	r3, r3
+	b	.L2115
+.L2101:
+	ldr	r2, .L2166+32
 	movw	r1, #65535
-	ldrh	r0, [r2]
+	mov	r9, r2
+	ldrh	r0, [r9], #4
 	cmp	r0, r1
-	streqh	r5, [r2]	@ movhi
-	beq	.L2188
+	strheq	r6, [r2]	@ movhi
+	beq	.L2164
 	ldrh	r0, [r2, #4]
 	cmp	r0, r1
-	beq	.L2147
+	beq	.L2123
 	mov	r1, #1
 	bl	FtlFreeSysBlkQueueIn
-.L2147:
-	ldr	r3, [r6, #4]
-	ldr	r2, [r8, #-3292]
+.L2123:
+	ldr	r3, [r7, #4]
+	ldr	r2, [r4, #-3292]
 	cmp	r2, r3
-	ldr	r3, .L2196+8
-	strcsh	r5, [r3, #4]	@ movhi
-	bcs	.L2124
-	ldrh	r2, [r3]
-	strh	r5, [r3]	@ movhi
-	strh	r2, [r3, #4]	@ movhi
-	ldr	r3, [r6, #4]
-.L2188:
-	str	r3, [r7, #-3292]
-	b	.L2124
-.L2121:
-	ldr	r3, .L2196
-	mov	r0, r5
-	ldrb	r1, [r3, #144]	@ zero_extendqisi2
-	cmp	r1, #0
-	beq	.L2149
-.L2190:
-	mov	r1, #0
-.L2149:
-	bl	FtlFreeSysBlkQueueIn
-.L2124:
-	ldr	r3, [sp, #8]
-	add	r3, r3, #1
-	b	.L2189
-.L2115:
-	ldr	r3, [sp, #4]
-	add	r5, r3, #1
-	uxth	r3, r5
-	str	r3, [sp, #4]
-	b	.L2111
-.L2152:
-	ldr	r3, .L2196+4
-	ldr	ip, [r3, #-472]
-	ldrh	r2, [ip]
-	cmp	r2, #0
-	beq	.L2154
-.L2157:
-	ldr	r0, [r0, #2436]
-	ldr	r3, .L2196
-	ldrh	r2, [r0]
-	cmp	r2, #0
-	beq	.L2155
-	b	.L2178
-.L2154:
-	sub	r3, r3, #388
-	ldrh	r3, [r3]
+	strhcs	r6, [r9]	@ movhi
+	bcs	.L2100
+	ldrh	r3, [r9, #-4]
+	strh	r6, [r9, #-4]	@ movhi
+	strh	r3, [r9]	@ movhi
+	ldr	r3, [r7, #4]
+.L2164:
+	str	r3, [r4, #-3292]
+	b	.L2100
+.L2128:
+	ldr	r0, [r4, #-472]
+	ldrh	r3, [r0]
 	cmp	r3, #0
-	ldrne	lr, [r1, #2416]
-	beq	.L2157
-.L2158:
-	uxth	r3, r2
-	sxth	r1, r3
-	cmp	r1, lr
-	bcs	.L2157
-	mov	r5, r1, asl #1
-	add	r2, r2, #1
-	ldrh	r5, [ip, r5]
-	cmp	r5, #0
-	beq	.L2158
-	mov	r6, #0
-.L2159:
-	ldr	ip, [r0, #2416]
-	sxth	r2, r3
-	cmp	r2, ip
-	bcs	.L2157
-	ldr	lr, [r4, #-472]
-	mov	ip, r2, asl #1
-	rsb	r5, r1, r2
-	add	r3, r3, #1
-	ldrh	r8, [lr, ip]
-	mov	r7, r5, asl #1
-	uxth	r3, r3
-	strh	r8, [lr, r7]	@ movhi
-	ldr	lr, [r4, #-444]
-	ldr	r2, [lr, r2, asl #2]
-	str	r2, [lr, r5, asl #2]
-	ldr	r2, [r4, #-472]
-	strh	r6, [r2, ip]	@ movhi
-	b	.L2159
-.L2155:
-	movw	r1, #2434
-	ldrh	r1, [r3, r1]
+	beq	.L2130
+.L2133:
+	ldr	r0, [r2, #2440]
+	ldrh	r1, [r0]
 	cmp	r1, #0
-	movwne	r1, #2408
-	ldrneh	ip, [r3, r1]
-	beq	.L2178
-.L2162:
-	uxth	r3, r2
+	beq	.L2131
+.L2153:
+	mov	r0, #0
+	add	sp, sp, #28
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2130:
+	ldr	r1, .L2166+20
+	ldrh	r1, [r1]
+	cmp	r1, #0
+	ldrne	ip, [r2, #2420]
+	beq	.L2133
+.L2134:
 	sxth	r1, r3
 	cmp	r1, ip
-	bge	.L2178
-	mov	lr, r1, asl #1
-	add	r2, r2, #1
+	bcs	.L2133
+	lsl	lr, r1, #1
+	add	r3, r3, #1
 	ldrh	lr, [r0, lr]
 	cmp	lr, #0
-	beq	.L2162
-	ldr	r0, .L2196
-	mov	r7, #0
-	ldr	r6, .L2196+16
-.L2163:
-	ldrh	ip, [r6]
-	sxth	r2, r3
-	cmp	r2, ip
-	bge	.L2178
-	ldr	lr, [r0, #2436]
-	mov	ip, r2, asl #1
-	rsb	r5, r1, r2
+	beq	.L2134
+	mov	r3, r1
+	mov	r5, #0
+.L2135:
+	ldr	r0, [r2, #2420]
+	cmp	r3, r0
+	bcs	.L2133
+	ldr	ip, [r4, #-472]
+	lsl	r0, r3, #1
+	sub	lr, r3, r1
+	lsl	r6, lr, #1
+	ldrh	r7, [ip, r0]
+	strh	r7, [ip, r6]	@ movhi
+	ldr	ip, [r4, #-444]
+	ldr	r6, [ip, r3, lsl #2]
 	add	r3, r3, #1
-	ldrh	r9, [lr, ip]
-	mov	r8, r5, asl #1
-	uxth	r3, r3
-	strh	r9, [lr, r8]	@ movhi
-	ldr	lr, [r4, #-460]
-	ldr	r2, [lr, r2, asl #2]
-	str	r2, [lr, r5, asl #2]
-	ldr	r2, [r0, #2436]
-	strh	r7, [r2, ip]	@ movhi
-	b	.L2163
-.L2178:
-	mov	r0, #0
-	add	sp, sp, #36
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2197:
+	sxth	r3, r3
+	str	r6, [ip, lr, lsl #2]
+	ldr	ip, [r4, #-472]
+	strh	r5, [ip, r0]	@ movhi
+	b	.L2135
+.L2131:
+	movw	r3, #2438
+	ldrh	r3, [r2, r3]
+	cmp	r3, #0
+	movwne	r3, #2412
+	ldrhne	ip, [r2, r3]
+	beq	.L2153
+.L2138:
+	sxth	r3, r1
+	cmp	r3, ip
+	mov	lr, r3
+	bge	.L2153
+	lsl	r5, r3, #1
+	add	r1, r1, #1
+	ldrh	r5, [r0, r5]
+	cmp	r5, #0
+	beq	.L2138
+	ldr	r5, .L2166+24
+	mov	r6, #0
+.L2139:
+	ldrh	r1, [r5]
+	cmp	r3, r1
+	bge	.L2153
+	ldr	r0, [r2, #2440]
+	lsl	r1, r3, #1
+	sub	ip, r3, lr
+	lsl	r7, ip, #1
+	ldrh	r8, [r0, r1]
+	strh	r8, [r0, r7]	@ movhi
+	ldr	r0, [r4, #-460]
+	ldr	r7, [r0, r3, lsl #2]
+	add	r3, r3, #1
+	sxth	r3, r3
+	str	r7, [r0, ip, lsl #2]
+	ldr	r0, [r2, #2440]
+	strh	r6, [r0, r1]	@ movhi
+	b	.L2139
+.L2167:
 	.align	2
-.L2196:
+.L2166:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR2-3300
-	.word	.LANCHOR0+2330
-	.word	.LANCHOR0+2408
+	.word	.LANCHOR0+2334
+	.word	.LANCHOR0+2324
+	.word	.LANCHOR0+2402
 	.word	.LANCHOR2-388
-	.word	.LANCHOR0+2434
+	.word	.LANCHOR0+2412
+	.word	.LANCHOR0+2438
+	.word	.LANCHOR2-3300
 	.fnend
 	.size	FtlScanSysBlk, .-FtlScanSysBlk
 	.align	2
 	.global	FtlLoadSysInfo
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlLoadSysInfo, %function
 FtlLoadSysInfo:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	mov	r1, #0
-	ldr	r4, .L2227
+	ldr	r4, .L2197
 	.pad #36
 	sub	sp, sp, #36
-	ldr	r6, .L2227+4
-	sub	r7, r4, #3296
+	ldr	r5, .L2197+4
 	ldr	r3, [r4, #-524]
-	ldr	r0, [r4, #-3544]
-	str	r3, [r4, #1760]
+	sub	r7, r4, #3296
+	ldr	r0, [r4, #-3540]
+	str	r3, [r4, #1768]
 	ldr	r3, [r4, #-500]
-	str	r3, [r4, #1764]
-	movw	r3, #2328
-	ldrh	r2, [r6, r3]
-	mov	r2, r2, asl #1
+	str	r3, [r4, #1772]
+	movw	r3, #2332
+	ldrh	r2, [r5, r3]
+	lsl	r2, r2, #1
 	bl	ftl_memset
 	ldrh	r0, [r7, #-4]
 	movw	r3, #65535
 	cmp	r0, r3
-	bne	.L2199
-.L2210:
+	bne	.L2169
+.L2180:
 	mvn	r0, #0
-	b	.L2200
-.L2199:
+.L2168:
+	add	sp, sp, #36
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2169:
 	mov	r1, #1
+	add	fp, r5, #2400
 	bl	FtlGetLastWrittenPage
-	ldr	r3, .L2227+8
-	ldrh	r9, [r7, #-4]
-	mov	r7, r4
-	uxth	r5, r0
+	ldrsh	r9, [r7, #-4]
+	sub	r8, r7, #4
+	sxth	r6, r0
 	add	r0, r0, #1
-	strh	r0, [r3, #2]	@ movhi
-.L2201:
-	sxth	r3, r5
-	cmp	r3, #0
-	blt	.L2209
-	sxth	fp, r9
-	mov	r1, #1
-	ldr	r0, .L2227+12
-	mov	r2, r1
-	orr	r3, r3, fp, asl #10
-	str	r3, [r4, #1756]
+	strh	r0, [r8, #2]	@ movhi
+.L2171:
+	cmp	r6, #0
+	blt	.L2179
+	orr	r3, r6, r9, lsl #10
+	mov	r2, #1
+	mov	r1, r2
+	ldr	r0, .L2197+8
+	str	r3, [r4, #1764]
 	ldr	r3, [r4, #-524]
-	str	r3, [r4, #1760]
+	str	r3, [r4, #1768]
 	bl	FlashReadPages
-	ldrb	r3, [r6]	@ zero_extendqisi2
+	ldrb	r3, [r5, #36]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L2202
-	ldr	r8, [r7, #1764]
+	beq	.L2172
+	ldr	r8, [r4, #1772]
 	ldr	r3, [r8, #12]
 	cmp	r3, #0
-	beq	.L2202
-	ldr	r2, [r7, #1760]
-	ldr	r10, .L2227+16
 	str	r3, [sp, #28]
+	beq	.L2172
+	ldr	r2, [r4, #1768]
+	ldrh	r1, [fp]
 	mov	r0, r2
 	str	r2, [sp, #24]
-	ldrh	r1, [r10]
 	bl	js_hash
 	ldr	r3, [sp, #28]
 	cmp	r3, r0
-	beq	.L2202
-	cmp	r5, #0
+	beq	.L2172
+	cmp	r6, #0
+	bne	.L2173
+	mov	r10, r7
 	ldr	r2, [sp, #24]
-	bne	.L2203
-	ldr	ip, .L2227+8
-	ldrh	r1, [ip, #4]
-	cmp	fp, r1
-	beq	.L2203
-	ldr	r0, [r8]
-	ldrh	r1, [ip]
-	str	ip, [sp, #24]
-	str	r0, [sp]
-	ldr	r0, [r8, #4]
-	str	r0, [sp, #4]
-	ldr	r0, [r8, #8]
+	ldrh	r1, [r10], #-4
+	cmp	r9, r1
+	beq	.L2173
+	ldr	r2, [r2]
+	ldrh	r1, [r7, #-4]
 	str	r3, [sp, #12]
-	str	r0, [sp, #8]
-	ldr	r3, [r2]
-	ldr	r0, .L2227+20
-	str	r3, [sp, #16]
-	ldr	r2, [r7, #1752]
-	ldr	r3, [r7, #1756]
+	str	r2, [sp, #16]
+	ldr	r3, [r8, #8]
+	ldr	r2, [r4, #1760]
+	ldr	r0, .L2197+12
+	str	r3, [sp, #8]
+	ldr	r3, [r8, #4]
+	str	r3, [sp, #4]
+	ldr	r3, [r8]
+	str	r3, [sp]
+	ldr	r3, [r4, #1764]
 	bl	printk
-	ldrh	r5, [r10, #-8]
-	ldr	ip, [sp, #24]
-	ldrh	r9, [ip, #4]
-	b	.L2205
-.L2203:
+	ldr	r3, .L2197+16
+	ldrsh	r9, [r10, #4]
+	ldrh	r6, [r3]
+.L2175:
+	sub	r6, r6, #1
+	sxth	r6, r6
+	b	.L2171
+.L2173:
 	mvn	r3, #0
-	str	r3, [r4, #1752]
-.L2202:
-	ldr	r3, [r4, #1752]
+	str	r3, [r4, #1760]
+.L2172:
+	ldr	r3, [r4, #1760]
 	cmn	r3, #1
-	beq	.L2205
-	ldr	r3, [r7, #-524]
-	ldr	r2, .L2227+24
+	beq	.L2175
+	ldr	r3, [r4, #-524]
+	ldr	r2, .L2197+20
 	ldr	r3, [r3]
 	cmp	r3, r2
-	bne	.L2205
-	ldr	r3, [r7, #-500]
+	bne	.L2175
+	ldr	r3, [r4, #-500]
 	ldrh	r2, [r3]
 	movw	r3, #61604
 	cmp	r2, r3
-	bne	.L2205
-.L2209:
-	ldr	r5, .L2227
+	bne	.L2175
+.L2179:
 	mov	r2, #48
-	ldr	r1, [r4, #1760]
-	movw	r8, #2328
-	sub	r0, r5, #3600
-	ldr	r7, .L2227+4
+	ldr	r1, [r4, #1768]
+	movw	r6, #2332
+	ldr	r0, .L2197+24
 	bl	ftl_memcpy
-	ldrh	r2, [r6, r8]
-	ldr	r1, [r4, #1760]
-	ldr	r0, [r4, #-3544]
+	ldrh	r2, [r5, r6]
+	ldr	r1, [r4, #1768]
+	ldr	r0, [r4, #-3540]
+	lsl	r2, r2, #1
 	add	r1, r1, #48
-	mov	r2, r2, asl #1
 	bl	ftl_memcpy
-	ldrh	r2, [r6, r8]
-	ldr	r1, [r4, #1760]
-	ldr	r0, [r4, #-3368]
-	mov	r3, r2, asl #1
-	mov	r2, r2, lsr #3
-	add	r3, r3, #51
+	ldrh	r1, [r5, r6]
+	ldr	r3, [r4, #1768]
+	ldr	r0, [r5, #32]
+	lsr	r2, r1, #3
+	lsl	r1, r1, #1
+	add	r1, r1, #51
 	add	r2, r2, #4
-	bic	r3, r3, #3
-	add	r1, r1, r3
+	bic	r1, r1, #3
+	add	r1, r3, r1
 	bl	ftl_memcpy
-	add	r3, r7, #2432
-	ldrh	r3, [r3]
+	movw	r3, #2436
+	ldrh	r3, [r5, r3]
 	cmp	r3, #0
-	beq	.L2207
-	ldrh	r2, [r7, r8]
-	ldr	r1, [r5, #1760]
-	ldr	r0, [r5, #-448]
-	mov	r3, r2, lsr #3
-	add	r3, r3, r2, asl #1
-	movw	r2, #2424
-	ldrh	r2, [r7, r2]
+	beq	.L2177
+	ldrh	r1, [r5, r6]
+	movw	r3, #2428
+	ldrh	r2, [r5, r3]
+	ldr	r0, [r4, #-448]
+	lsr	r3, r1, #3
+	lsl	r2, r2, #2
+	add	r3, r3, r1, lsl #1
+	ldr	r1, [r4, #1768]
 	add	r3, r3, #52
 	ubfx	r3, r3, #2, #14
-	mov	r2, r2, asl #2
-	add	r1, r1, r3, asl #2
+	add	r1, r1, r3, lsl #2
 	bl	ftl_memcpy
-	b	.L2207
-.L2205:
-	sub	r5, r5, #1
-	uxth	r5, r5
-	b	.L2201
-.L2207:
-	ldr	r2, [r4, #-3600]
-	ldr	r3, .L2227+24
-	ldr	r5, .L2227
+.L2177:
+	ldr	r2, [r4, #-3596]
+	ldr	r3, .L2197+20
 	cmp	r2, r3
-	bne	.L2210
-	sub	r7, r5, #3600
-	movw	r1, #2342
-	ldrb	r0, [r5, #-3590]	@ zero_extendqisi2
-	add	r3, r7, #300
-	ldrh	r1, [r6, r1]
-	sub	r8, r5, #3296
-	ldrh	r2, [r7, #8]
-	cmp	r0, r1
-	strh	r2, [r3, #6]	@ movhi
-	ldr	r3, .L2227+4
-	bne	.L2210
-	movw	r1, #2388
-	movw	r0, #2394
-	ldrh	r1, [r3, r1]
-	ldrh	r0, [r3, r0]
-	add	r3, r3, #2320
-	str	r2, [r5, #1788]
-	mul	r1, r2, r1
-	str	r1, [r3, #128]
-	mul	r1, r0, r1
-	str	r1, [r3, #108]
-	ldr	r1, .L2227+28
-	ldrh	r0, [r1, #6]
-	ldr	r1, [r3, #12]
-	rsb	r0, r0, r1
-	ldrh	r1, [r3]
-	rsb	r0, r2, r0
+	bne	.L2180
+	ldr	r6, .L2197+24
+	movw	r3, #2346
+	ldrb	r1, [r4, #-3586]	@ zero_extendqisi2
+	ldrh	r3, [r5, r3]
+	ldrh	r2, [r6, #8]
+	cmp	r1, r3
+	strh	r2, [r7, #2]	@ movhi
+	bne	.L2180
+	movw	r3, #2390
+	movw	r1, #2396
+	ldrh	r3, [r5, r3]
+	ldrh	r1, [r5, r1]
+	ldr	r0, [r5, #2336]
+	str	r2, [r4, #1796]
+	mul	r3, r2, r3
+	str	r3, [r5, #2452]
+	mul	r3, r3, r1
+	str	r3, [r5, #2432]
+	ldr	r3, .L2197+28
+	ldrh	r3, [r3, #6]
+	sub	r0, r0, r3
+	movw	r3, #2324
+	ldrh	r1, [r5, r3]
+	sub	r0, r0, r2
 	bl	__aeabi_uidiv
-	sub	r3, r5, #3520
-	add	r2, r7, #76
-	sub	lr, r5, #3280
-	sub	ip, r5, #3424
-	strh	r0, [r8, #-8]	@ movhi
-	mov	r8, ip
-	ldrh	r0, [r7, #14]
-	strh	r0, [r3, #-4]	@ movhi
-	ldrh	r3, [r7, #16]
-	mov	r1, r3, lsr #6
+	ldrh	r3, [r6, #16]
+	add	r2, r6, #76
+	mov	r5, r2
+	strh	r0, [r7, #-8]	@ movhi
+	ldrh	r0, [r6, #14]
+	add	r7, r2, #240
+	lsr	r1, r3, #6
 	and	r3, r3, #63
-	strb	r3, [r5, #-3518]
-	ldrb	r3, [r5, #-3589]	@ zero_extendqisi2
-	strh	r1, [r7, #78]	@ movhi
-	ldrh	r1, [r7, #18]
-	strb	r3, [r5, #-3516]
+	strb	r3, [r4, #-3514]
+	strh	r1, [r2, #2]	@ movhi
+	ldrh	r1, [r6, #18]
+	ldrb	r3, [r4, #-3585]	@ zero_extendqisi2
+	strh	r0, [r2]	@ movhi
+	strh	r1, [r5, #48]!	@ movhi
+	ldrh	r1, [r6, #20]
+	strb	r3, [r4, #-3512]
 	mvn	r3, #0
-	strh	r3, [lr, #-4]	@ movhi
+	strh	r3, [r7, #-4]	@ movhi
 	mov	r3, #0
-	strh	r3, [r2, #242]	@ movhi
-	sub	r2, r5, #3472
-	strb	r3, [r5, #-3278]
-	strh	r1, [r2, #-4]	@ movhi
-	ldrh	r1, [r7, #20]
-	strb	r3, [r5, #-3276]
-	str	r3, [r5, #-3344]
-	mov	r6, r1, lsr #6
+	strh	r3, [r2, #238]	@ movhi
+	lsr	ip, r1, #6
 	and	r1, r1, #63
-	strb	r1, [r5, #-3470]
-	ldrb	r1, [r5, #-3588]	@ zero_extendqisi2
-	strh	r6, [r2, #-2]	@ movhi
+	strb	r1, [r4, #-3466]
+	ldrb	r1, [r4, #-3584]	@ zero_extendqisi2
+	strh	ip, [r5, #2]	@ movhi
+	strb	r3, [r4, #-3278]
+	strb	r1, [r4, #-3464]
+	ldrh	r1, [r6, #22]
+	strb	r3, [r4, #-3276]
+	strh	r1, [r2, #96]!	@ movhi
+	ldrh	r1, [r6, #24]
 	mov	r6, r2
-	strb	r1, [r5, #-3468]
-	ldrh	r1, [r7, #22]
-	strh	r1, [ip, #-4]	@ movhi
-	ldrh	r1, [r7, #24]
-	mov	r7, r1, lsr #6
+	lsr	ip, r1, #6
 	and	r1, r1, #63
-	strb	r1, [r5, #-3422]
-	ldrb	r1, [r5, #-3587]	@ zero_extendqisi2
-	strh	r7, [r2, #46]	@ movhi
-	mov	r7, lr
-	strb	r1, [r5, #-3420]
-	str	r3, [r5, #-3356]
-	ldr	r1, [r5, #-3568]
-	str	r3, [r5, #-3364]
-	str	r3, [r5, #-3348]
-	str	r3, [r5, #-3320]
-	str	r3, [r5, #-3312]
-	str	r3, [r5, #-3352]
-	ldr	r3, [r5, #-3560]
-	str	r1, [r5, #-3324]
-	ldr	r1, [r5, #-3332]
+	strb	r1, [r4, #-3418]
+	ldrb	r1, [r4, #-3583]	@ zero_extendqisi2
+	strh	ip, [r2, #2]	@ movhi
+	strb	r1, [r4, #-3416]
+	str	r3, [r4, #-3344]
+	ldr	r1, [r4, #-3564]
+	str	r3, [r4, #-3356]
+	str	r3, [r4, #-3364]
+	str	r3, [r4, #-3348]
+	str	r1, [r4, #-3324]
+	str	r3, [r4, #-3320]
+	ldr	r1, [r4, #-3332]
+	str	r3, [r4, #-3312]
+	str	r3, [r4, #-3352]
+	ldr	r3, [r4, #-3556]
 	ldr	r2, [r4, #-3328]
 	cmp	r3, r1
-	strhi	r3, [r5, #-3332]
-	ldr	r3, [r4, #-3564]
+	strhi	r3, [r4, #-3332]
+	ldr	r3, [r4, #-3560]
 	cmp	r3, r2
-	ldrhi	r2, .L2227
-	strhi	r3, [r2, #-3328]
+	strhi	r3, [r4, #-3328]
 	movw	r3, #65535
 	cmp	r0, r3
-	beq	.L2213
-	ldr	r0, .L2227+32
+	beq	.L2183
+	ldr	r0, .L2197+32
 	bl	make_superblock
-.L2213:
-	ldrh	r2, [r6, #-4]
+.L2183:
+	ldrh	r2, [r5]
 	movw	r3, #65535
 	cmp	r2, r3
-	beq	.L2214
-	ldr	r0, .L2227+36
+	beq	.L2184
+	ldr	r0, .L2197+36
 	bl	make_superblock
-.L2214:
-	ldrh	r2, [r8, #-4]
+.L2184:
+	ldrh	r2, [r6]
 	movw	r3, #65535
 	cmp	r2, r3
-	beq	.L2215
-	ldr	r0, .L2227+40
+	beq	.L2185
+	ldr	r0, .L2197+40
 	bl	make_superblock
-.L2215:
+.L2185:
 	ldrh	r2, [r7, #-4]
 	movw	r3, #65535
+	sub	r0, r7, #4
 	cmp	r2, r3
-	beq	.L2216
-	ldr	r0, .L2227+44
+	beq	.L2186
 	bl	make_superblock
-.L2216:
+.L2186:
 	mov	r0, #0
-.L2200:
-	add	sp, sp, #36
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2228:
+	b	.L2168
+.L2198:
 	.align	2
-.L2227:
+.L2197:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
-	.word	.LANCHOR2-3300
-	.word	.LANCHOR2+1752
-	.word	.LANCHOR0+2398
+	.word	.LANCHOR2+1760
 	.word	.LC109
+	.word	.LANCHOR0+2392
 	.word	1179929683
-	.word	.LANCHOR0+2452
-	.word	.LANCHOR2-3524
-	.word	.LANCHOR2-3476
-	.word	.LANCHOR2-3428
-	.word	.LANCHOR2-3284
+	.word	.LANCHOR2-3596
+	.word	.LANCHOR0+2456
+	.word	.LANCHOR2-3520
+	.word	.LANCHOR2-3472
+	.word	.LANCHOR2-3424
 	.fnend
 	.size	FtlLoadSysInfo, .-FtlLoadSysInfo
 	.align	2
 	.global	FtlDumpBlockInfo
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlDumpBlockInfo, %function
 FtlDumpBlockInfo:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 72
+	@ args = 0, pretend = 0, frame = 64
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	movw	r3, #2388
-	ldr	r5, .L2243
-	.pad #100
-	sub	sp, sp, #100
+	movw	r3, #2390
+	ldr	r5, .L2211
+	.pad #92
+	sub	sp, sp, #92
 	ubfx	r0, r0, #10, #16
-	mov	r4, r1
-	ldr	r7, .L2243+4
-	ldrh	r9, [r5, r3]
+	mov	r9, r1
+	ldr	r7, .L2211+4
+	ldrh	r8, [r5, r3]
 	bl	P2V_block_in_plane
-	ldr	r1, .L2243+8
+	ldr	r1, .L2211+8
 	mov	r6, r0
-	ldr	r0, .L2243+12
+	ldr	r0, .L2211+12
 	bl	printk
-	ldr	r2, [r7, #-3544]
-	mov	r3, r6, asl #1
+	ldr	r2, [r7, #-3540]
+	lsl	r3, r6, #1
 	mov	r1, r6
-	ldr	r0, .L2243+16
+	ldr	r0, .L2211+16
 	ldrh	r2, [r2, r3]
 	bl	printk
-	add	r0, sp, #96
+	add	r0, sp, #88
 	strh	r6, [r0, #-48]!	@ movhi
 	bl	make_superblock
-	ldrb	r2, [r5, #144]	@ zero_extendqisi2
-	clz	r3, r4
-	cmp	r2, #0
-	mov	r3, r3, lsr #5
-	moveq	r3, #0
+	ldrb	r4, [r5, #152]	@ zero_extendqisi2
+	str	r7, [sp, #36]
+	adds	r3, r4, #0
+	movne	r3, #1
+	cmp	r9, #0
+	movne	r3, #0
 	cmp	r3, #0
 	moveq	r4, r3
-	str	r7, [sp, #44]
-	beq	.L2230
+	beq	.L2200
 	mov	r0, r6
 	bl	ftl_get_blk_mode
 	cmp	r0, #1
 	mov	r4, r0
-	movweq	r3, #2390
-	ldreqh	r9, [r5, r3]
-.L2230:
-	movw	r3, #2388
-	ldr	r0, .L2243+20
-	mov	r1, r4
-	mov	r2, r9
-	ldrh	r3, [r5, r3]
+	movweq	r3, #2392
+	ldrheq	r8, [r5, r3]
+.L2200:
+	movw	r3, #2390
 	mov	r6, #0
+	mov	r9, #36
+	ldrh	r3, [r5, r3]
+	mov	r2, r8
+	mov	r1, r4
+	ldr	r0, .L2211+20
 	bl	printk
-	ldr	r8, .L2243+4
-.L2231:
-	ldr	r3, .L2243+24
-	add	r0, sp, #62
-	movw	lr, #65535
-	mov	r10, #36
+.L2201:
+	ldr	r3, .L2211+24
+	add	ip, sp, #54
+	movw	r10, #65535
 	ldrh	r3, [r3]
 	mov	r7, r3
-	ldr	r3, [r8, #-536]
-	str	r3, [sp, #28]
-	ldr	r3, [r8, #-2696]
+	ldr	r3, .L2211+4
+	ldr	r2, [r3, #-2696]
+	ldr	r0, [r3, #-536]
+	ldr	r3, [r3, #-2692]
+	str	r2, [sp, #24]
+	ldr	r2, .L2211+28
 	str	r3, [sp, #32]
-	ldr	r3, .L2243+28
-	ldrh	r2, [r3]
-	ldrh	ip, [r3, #2]
-	str	r2, [sp, #36]
-	ldr	r2, [r8, #-2692]
-	str	r2, [sp, #40]
+	ldrh	r1, [r2]
+	ldrh	lr, [r2, #2]
 	mov	r2, #0
 	mov	r5, r2
-.L2232:
+	str	r1, [sp, #28]
+.L2202:
 	uxth	r3, r2
-	cmp	r3, r7
-	bcs	.L2241
-	ldrh	r3, [r0, #2]!
-	cmp	r3, lr
-	beq	.L2233
-	ldr	r1, [sp, #28]
-	orr	r3, r6, r3, asl #10
-	mla	r1, r10, r5, r1
+	cmp	r7, r3
+	bhi	.L2204
+	ldr	fp, .L2211+32
+	mov	r10, #0
+	mov	r2, r4
+	mov	r1, r5
+	bl	FlashReadPages
+.L2205:
+	uxth	r3, r10
+	cmp	r5, r3
+	bhi	.L2206
+	add	r6, r6, #1
+	uxth	r6, r6
+	cmp	r8, r6
+	bne	.L2201
+.L2207:
+	mov	r0, #0
+	add	sp, sp, #92
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2204:
+	ldrh	r3, [ip, #2]!
+	cmp	r3, r10
+	beq	.L2203
+	mla	r1, r9, r5, r0
+	orr	r3, r6, r3, lsl #10
 	str	r3, [r1, #4]
-	ldr	r3, [sp, #36]
+	ldr	r3, [sp, #28]
 	mul	r3, r3, r5
+	add	fp, r3, #3
+	cmp	r3, #0
+	movlt	r3, fp
+	ldr	fp, [sp, #24]
+	bic	r3, r3, #3
+	add	r3, fp, r3
+	str	r3, [r1, #8]
+	mul	r3, lr, r5
+	add	r5, r5, #1
+	uxth	r5, r5
 	add	fp, r3, #3
 	cmp	r3, #0
 	movlt	r3, fp
 	ldr	fp, [sp, #32]
 	bic	r3, r3, #3
 	add	r3, fp, r3
-	str	r3, [r1, #8]
-	mul	r3, ip, r5
-	add	r5, r5, #1
-	uxth	r5, r5
-	add	fp, r3, #3
-	cmp	r3, #0
-	movlt	r3, fp
-	ldr	fp, [sp, #40]
-	bic	r3, r3, #3
-	add	r3, fp, r3
 	str	r3, [r1, #12]
-.L2233:
+.L2203:
 	add	r2, r2, #1
-	b	.L2232
-.L2241:
-	ldr	r0, [r8, #-536]
-	mov	r1, r5
-	mov	r2, r4
-	mov	r10, #0
-	bl	FlashReadPages
-	mov	fp, #36
-.L2235:
-	uxth	r3, r10
-	cmp	r3, r5
-	bcs	.L2242
-	ldr	r3, [sp, #44]
-	mul	r2, fp, r10
-	ldrh	r1, [sp, #48]
-	ldr	lr, [r3, #-536]
+	b	.L2202
+.L2206:
+	ldr	r3, [sp, #36]
+	mul	r0, r9, r10
+	ldrh	r1, [sp, #40]
 	add	r10, r10, #1
-	add	ip, lr, r2
-	ldr	r3, [ip, #12]
-	ldr	r0, [ip, #8]
-	ldr	r7, [r3]
-	str	r7, [sp]
-	ldr	r7, [r3, #4]
-	str	r7, [sp, #4]
-	ldr	r7, [r3, #8]
-	str	r7, [sp, #8]
-	ldr	r3, [r3, #12]
-	str	r3, [sp, #12]
-	ldr	r3, [r0]
-	str	r3, [sp, #16]
-	ldr	r3, [r0, #4]
-	ldr	r0, .L2243+32
-	str	r3, [sp, #20]
-	ldr	r2, [lr, r2]
-	ldr	r3, [ip, #4]
+	ldr	ip, [r3, #-536]
+	add	r2, ip, r0
+	ldr	lr, [r2, #8]
+	ldr	r3, [r2, #12]
+	ldr	r7, [lr, #4]
+	str	r7, [sp, #20]
+	ldr	lr, [lr]
+	str	lr, [sp, #16]
+	ldr	lr, [r3, #12]
+	str	lr, [sp, #12]
+	ldr	lr, [r3, #8]
+	str	lr, [sp, #8]
+	ldr	lr, [r3, #4]
+	str	lr, [sp, #4]
+	ldr	r3, [r3]
+	str	r3, [sp]
+	ldr	r3, [r2, #4]
+	ldr	r2, [ip, r0]
+	mov	r0, fp
 	bl	printk
-	b	.L2235
-.L2242:
-	add	r6, r6, #1
-	uxth	r6, r6
-	cmp	r6, r9
-	bne	.L2231
-.L2237:
-	mov	r0, #0
-	add	sp, sp, #100
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2244:
+	b	.L2205
+.L2212:
 	.align	2
-.L2243:
+.L2211:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR3+148
+	.word	.LANCHOR3+141
 	.word	.LC110
 	.word	.LC111
 	.word	.LC112
-	.word	.LANCHOR0+2320
-	.word	.LANCHOR0+2398
+	.word	.LANCHOR0+2324
+	.word	.LANCHOR0+2400
 	.word	.LC113
 	.fnend
 	.size	FtlDumpBlockInfo, .-FtlDumpBlockInfo
 	.align	2
 	.global	FtlScanAllBlock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlScanAllBlock, %function
 FtlScanAllBlock:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 64
+	@ args = 0, pretend = 0, frame = 56
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #92
-	sub	sp, sp, #92
-	ldr	r0, .L2260
-	mov	r7, #0
-	ldr	r1, .L2260+4
+	mov	r6, #0
+	ldr	r5, .L2224
+	.pad #84
+	sub	sp, sp, #84
+	ldr	r1, .L2224+4
+	ldr	r0, .L2224+8
 	bl	printk
-	ldr	r5, .L2260+8
-	mov	r6, r5
-.L2246:
-	ldr	r3, .L2260+12
-	uxth	r4, r7
+.L2214:
+	ldr	r3, .L2224+12
+	uxth	r0, r6
 	ldrh	r3, [r3]
-	cmp	r3, r4
-	bls	.L2256
-	add	r8, sp, #88
-	mov	r0, r4
+	cmp	r3, r0
+	bhi	.L2222
+	mov	r0, #0
+	add	sp, sp, #84
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2222:
+	add	r4, sp, #80
 	movw	r9, #65535
+	strh	r0, [r4, #-48]!	@ movhi
 	mov	r10, #36
-	strh	r4, [r8, #-48]!	@ movhi
 	bl	ftl_get_blk_mode
-	ldr	ip, [r5, #-3544]
-	mov	r2, r4, asl #1
-	mov	r1, r4
-	ldrh	r2, [ip, r2]
+	uxth	r1, r6
+	ldr	ip, [r5, #-3540]
 	mov	r3, r0
-	ldr	r0, .L2260+16
+	ldr	r0, .L2224+16
+	lsl	r2, r1, #1
+	ldrh	r2, [ip, r2]
 	bl	printk
-	mov	r0, r8
+	mov	r0, r4
 	bl	make_superblock
-	ldr	r3, .L2260+20
-	ldr	lr, [r5, #-2692]
+	ldr	r3, .L2224+20
+	add	ip, sp, #46
+	ldr	r0, [r5, #-536]
+	ldr	r7, [r5, #-2692]
 	ldrh	r2, [r3]
-	ldrh	ip, [r3, #78]
-	ldrh	r8, [r3, #80]
-	str	r2, [sp, #28]
-	add	r0, sp, #54
-	ldr	r2, [r5, #-536]
-	str	r2, [sp, #32]
+	ldrh	lr, [r3, #76]
+	ldrh	r8, [r3, #78]
+	str	r2, [sp, #24]
 	ldr	r2, [r5, #-2696]
-	str	r2, [sp, #36]
+	str	r2, [sp, #28]
 	mov	r2, #0
 	mov	r4, r2
-.L2247:
-	ldr	r1, [sp, #28]
+.L2215:
+	ldr	r1, [sp, #24]
 	uxth	r3, r2
-	cmp	r3, r1
-	bcs	.L2257
-	ldrh	r3, [r0, #2]!
+	cmp	r1, r3
+	bhi	.L2217
+	ldr	r9, .L2224+24
+	mov	r7, #0
+	mov	r8, #36
+	mov	r2, #0
+	mov	r1, r4
+	bl	FlashReadPages
+.L2218:
+	uxth	r3, r7
+	cmp	r4, r3
+	bhi	.L2219
+	ldr	r9, .L2224+28
+	mov	r7, #0
+	mov	r8, #36
+	mov	r2, #1
+	mov	r1, r4
+	ldr	r0, [r5, #-536]
+	bl	FlashReadPages
+.L2220:
+	uxth	r3, r7
+	cmp	r4, r3
+	bhi	.L2221
+	add	r6, r6, #1
+	b	.L2214
+.L2217:
+	ldrh	r3, [ip, #2]!
 	cmp	r3, r9
-	beq	.L2248
-	ldr	r1, [sp, #32]
-	mov	r3, r3, asl #10
-	mla	r1, r10, r4, r1
+	beq	.L2216
+	mla	r1, r10, r4, r0
+	lsl	r3, r3, #10
 	str	r3, [r1, #4]
-	mul	r3, ip, r4
+	mul	r3, lr, r4
 	add	fp, r3, #3
 	cmp	r3, #0
 	movlt	r3, fp
-	ldr	fp, [sp, #36]
+	ldr	fp, [sp, #28]
 	bic	r3, r3, #3
 	add	r3, fp, r3
 	str	r3, [r1, #8]
@@ -13213,673 +13684,764 @@
 	cmp	r3, #0
 	movlt	r3, fp
 	bic	r3, r3, #3
-	add	r3, lr, r3
+	add	r3, r7, r3
 	str	r3, [r1, #12]
-.L2248:
+.L2216:
 	add	r2, r2, #1
-	b	.L2247
-.L2257:
-	ldr	r0, [r6, #-536]
-	mov	r1, r4
-	mov	r2, #0
-	mov	r8, #0
-	bl	FlashReadPages
-	mov	r9, #36
-.L2250:
-	uxth	r3, r8
-	cmp	r3, r4
-	bcs	.L2258
-	mul	r2, r9, r8
-	ldr	lr, [r6, #-536]
-	ldrh	r1, [sp, #40]
-	add	r8, r8, #1
-	add	ip, lr, r2
-	ldr	r3, [ip, #12]
-	ldr	r0, [ip, #8]
-	ldr	r10, [r3]
-	str	r10, [sp]
-	ldr	r10, [r3, #4]
-	str	r10, [sp, #4]
-	ldr	r10, [r3, #8]
-	str	r10, [sp, #8]
-	ldr	r3, [r3, #12]
-	str	r3, [sp, #12]
-	ldr	r3, [r0]
-	str	r3, [sp, #16]
-	ldr	r3, [r0, #4]
-	ldr	r0, .L2260+24
-	str	r3, [sp, #20]
-	ldr	r2, [lr, r2]
-	ldr	r3, [ip, #4]
-	bl	printk
-	b	.L2250
-.L2258:
-	ldr	r0, [r6, #-536]
-	mov	r1, r4
-	mov	r2, #1
-	mov	r8, #0
-	bl	FlashReadPages
-	mov	r9, #36
-.L2252:
-	uxth	r3, r8
-	cmp	r3, r4
-	bcs	.L2259
-	mul	r2, r9, r8
-	ldr	lr, [r6, #-536]
-	ldrh	r1, [sp, #40]
-	add	r8, r8, #1
-	add	ip, lr, r2
-	ldr	r3, [ip, #12]
-	ldr	r0, [ip, #8]
-	ldr	r10, [r3]
-	str	r10, [sp]
-	ldr	r10, [r3, #4]
-	str	r10, [sp, #4]
-	ldr	r10, [r3, #8]
-	str	r10, [sp, #8]
-	ldr	r3, [r3, #12]
-	str	r3, [sp, #12]
-	ldr	r3, [r0]
-	str	r3, [sp, #16]
-	ldr	r3, [r0, #4]
-	ldr	r0, .L2260+28
-	str	r3, [sp, #20]
-	ldr	r2, [lr, r2]
-	ldr	r3, [ip, #4]
-	bl	printk
-	b	.L2252
-.L2259:
+	b	.L2215
+.L2219:
+	mul	r0, r8, r7
+	ldr	ip, [r5, #-536]
+	ldrh	r1, [sp, #32]
 	add	r7, r7, #1
-	b	.L2246
-.L2256:
-	mov	r0, #0
-	add	sp, sp, #92
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2261:
+	add	r2, ip, r0
+	ldr	lr, [r2, #8]
+	ldr	r3, [r2, #12]
+	ldr	r10, [lr, #4]
+	str	r10, [sp, #20]
+	ldr	lr, [lr]
+	str	lr, [sp, #16]
+	ldr	lr, [r3, #12]
+	str	lr, [sp, #12]
+	ldr	lr, [r3, #8]
+	str	lr, [sp, #8]
+	ldr	lr, [r3, #4]
+	str	lr, [sp, #4]
+	ldr	r3, [r3]
+	str	r3, [sp]
+	ldr	r3, [r2, #4]
+	ldr	r2, [ip, r0]
+	mov	r0, r9
+	bl	printk
+	b	.L2218
+.L2221:
+	mul	r0, r8, r7
+	ldr	ip, [r5, #-536]
+	ldrh	r1, [sp, #32]
+	add	r7, r7, #1
+	add	r2, ip, r0
+	ldr	lr, [r2, #8]
+	ldr	r3, [r2, #12]
+	ldr	r10, [lr, #4]
+	str	r10, [sp, #20]
+	ldr	lr, [lr]
+	str	lr, [sp, #16]
+	ldr	lr, [r3, #12]
+	str	lr, [sp, #12]
+	ldr	lr, [r3, #8]
+	str	lr, [sp, #8]
+	ldr	lr, [r3, #4]
+	str	lr, [sp, #4]
+	ldr	r3, [r3]
+	str	r3, [sp]
+	ldr	r3, [r2, #4]
+	ldr	r2, [ip, r0]
+	mov	r0, r9
+	bl	printk
+	b	.L2220
+.L2225:
 	.align	2
-.L2260:
-	.word	.LC110
-	.word	.LANCHOR3+168
+.L2224:
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2330
+	.word	.LANCHOR3+158
+	.word	.LC110
+	.word	.LANCHOR0+2334
 	.word	.LC114
-	.word	.LANCHOR0+2320
+	.word	.LANCHOR0+2324
 	.word	.LC115
 	.word	.LC116
 	.fnend
 	.size	FtlScanAllBlock, .-FtlScanAllBlock
 	.align	2
 	.global	ftl_scan_all_ppa
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_scan_all_ppa, %function
 ftl_scan_all_ppa:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 0
+	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	movw	r3, #2386
-	ldr	r6, .L2281
-	.pad #24
-	sub	sp, sp, #24
-	ldr	r5, .L2281+4
-	ldrh	r4, [r6, r3]
+	ldr	r3, .L2243
+	movw	r2, #2388
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	.pad #36
+	sub	sp, sp, #36
+	ldr	r5, .L2243+4
+	ldrh	r4, [r3, r2]
+	add	r10, r5, #1760
+	str	r3, [sp, #28]
 	sub	r4, r4, #16
-.L2263:
-	ldr	r7, .L2281+8
-	ldrh	r3, [r7]
+	lsl	r9, r4, #10
+.L2227:
+	ldr	r3, .L2243+8
+	ldrh	r3, [r3]
 	cmp	r4, r3
-	bge	.L2279
-	uxth	r8, r4
-	mov	r0, r8
+	blt	.L2235
+	ldr	r1, .L2243+12
+	ldr	r0, .L2243+16
+	add	sp, sp, #36
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	b	printk
+.L2235:
+	uxth	r7, r4
+	mov	r0, r7
 	bl	ftl_get_blk_mode
-	ldrb	r3, [r6, #144]	@ zero_extendqisi2
+	ldr	r3, [sp, #28]
+	ldrb	r3, [r3, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L2264
-	ldrh	r3, [r7, #-58]
+	beq	.L2228
+	ldr	r3, .L2243+20
+	ldrh	r2, [r3]
+	cmp	r4, r2
+	bge	.L2229
+	ldrh	r3, [r3, #72]
 	cmp	r4, r3
-	bge	.L2265
-	ldrh	r3, [r7, #16]
-	cmp	r4, r3
-	blt	.L2265
-.L2264:
+	blt	.L2229
+.L2228:
 	cmp	r0, #1
-	bne	.L2266
-.L2265:
-	ldr	r3, .L2281+12
-	mov	r9, #-2147483648
-	ldrh	r7, [r3]
-	b	.L2267
-.L2266:
-	ldr	r3, .L2281+16
-	mov	r9, #0
-	ldrh	r7, [r3]
-.L2267:
+	bne	.L2230
+.L2229:
+	ldr	r3, .L2243+24
+	mov	r8, #-2147483648
+	ldrh	r6, [r3]
+.L2231:
+	mov	r3, r8
+	mov	r2, r6
 	mov	r1, r4
-	mov	r2, r7
-	mov	r3, r9
-	ldr	r0, .L2281+20
+	ldr	r0, .L2243+28
 	bl	printk
-	mov	r0, r8
+	mov	r0, r7
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #0
-	beq	.L2268
-	ldr	r0, .L2281+24
+	beq	.L2232
+	mov	r3, r8
+	mov	r2, r6
 	mov	r1, r4
-	mov	r2, r7
-	mov	r3, r9
+	ldr	r0, .L2243+32
 	bl	printk
-.L2268:
-	mov	r10, r4, asl #10
+.L2232:
+	ldr	fp, .L2243+36
+	mov	r7, #0
+.L2233:
+	cmp	r7, r6
+	bne	.L2234
+	add	r4, r4, #1
+	add	r9, r9, #1024
+	b	.L2227
+.L2230:
+	ldr	r3, .L2243+40
 	mov	r8, #0
-.L2269:
-	cmp	r8, r7
-	beq	.L2280
-	add	r3, r9, r10
+	ldrh	r6, [r3]
+	b	.L2231
+.L2234:
+	add	r3, r8, r9
 	mov	r2, #0
-	add	r3, r3, r8
-	str	r3, [r5, #1756]
-	ldr	r3, [r5, #-524]
+	add	r3, r3, r7
 	mov	r1, #1
-	ldr	r0, .L2281+28
-	add	r8, r8, #1
-	str	r2, [r5, #1752]
-	str	r3, [r5, #1760]
-	ldr	r3, [r5, #-500]
 	str	r3, [r5, #1764]
+	mov	r0, r10
+	ldr	r3, [r5, #-524]
+	add	r7, r7, #1
+	str	r2, [r5, #1760]
+	str	r3, [r5, #1768]
+	ldr	r3, [r5, #-500]
+	str	r3, [r5, #1772]
 	bl	FlashReadPages
-	ldr	r3, [r5, #1764]
+	ldr	r2, [r5, #1768]
+	mov	r0, fp
+	ldr	r3, [r5, #1772]
+	ldr	r1, [r2, #4]
+	str	r1, [sp, #16]
+	ldr	r2, [r2]
+	ldr	r1, [r5, #1764]
+	str	r2, [sp, #12]
+	ldr	r2, [r3, #12]
+	str	r2, [sp, #8]
+	ldr	r2, [r3, #8]
+	str	r2, [sp, #4]
+	ldr	r2, [r3, #4]
+	str	r2, [sp]
 	ldr	r2, [r5, #1760]
-	ldr	r0, .L2281+32
-	ldr	r1, [r3, #4]
-	str	r1, [sp]
-	ldr	r1, [r3, #8]
-	str	r1, [sp, #4]
-	ldr	r1, [r3, #12]
-	str	r1, [sp, #8]
-	ldr	r1, [r2]
-	str	r1, [sp, #12]
-	ldr	r2, [r2, #4]
-	ldr	r1, [r5, #1756]
-	str	r2, [sp, #16]
-	ldr	r2, [r5, #1752]
 	ldr	r3, [r3]
 	bl	printk
-	b	.L2269
-.L2280:
-	add	r4, r4, #1
-	b	.L2263
-.L2279:
-	ldr	r0, .L2281+36
-	ldr	r1, .L2281+40
-	add	sp, sp, #24
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
-	b	printk
-.L2282:
+	b	.L2233
+.L2244:
 	.align	2
-.L2281:
+.L2243:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2386
-	.word	.LANCHOR0+2390
 	.word	.LANCHOR0+2388
+	.word	.LANCHOR3+174
+	.word	.LC120
+	.word	.LANCHOR0+2332
+	.word	.LANCHOR0+2392
 	.word	.LC117
 	.word	.LC118
-	.word	.LANCHOR2+1752
 	.word	.LC119
-	.word	.LC120
-	.word	.LANCHOR3+184
+	.word	.LANCHOR0+2390
 	.fnend
 	.size	ftl_scan_all_ppa, .-ftl_scan_all_ppa
 	.align	2
 	.global	FlashProgPages
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashProgPages, %function
 FlashProgPages:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 64
+	@ args = 0, pretend = 0, frame = 72
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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
-	ldr	r6, .L2339
-	mov	r4, r0
-	str	r1, [sp, #8]
-	mov	r9, r2
-	str	r3, [sp, #20]
-	ldr	ip, [r6, #44]
-	ldrb	r7, [r6]	@ zero_extendqisi2
+	.pad #84
+	sub	sp, sp, #84
+	ldr	r5, .L2298
+	str	r1, [sp, #12]
+	ldr	ip, [r5, #48]
+	ldrb	r8, [r5, #36]	@ zero_extendqisi2
+	str	r3, [sp, #24]
 	ldrb	ip, [ip, #19]	@ zero_extendqisi2
-	cmp	r7, #0
-	str	ip, [sp, #16]
-	ldr	ip, .L2339+4
-	ldrb	ip, [ip, #481]	@ zero_extendqisi2
-	str	ip, [sp, #12]
-	beq	.L2284
+	cmp	r8, #0
+	str	ip, [sp, #20]
+	bne	.L2246
+	ldr	r3, .L2298+4
+	mov	r4, r0
+	mov	r9, r2
+	ldrb	r3, [r3, #477]	@ zero_extendqisi2
+	str	r3, [sp, #16]
+	add	r3, r5, #1216
+	add	r3, r3, #4
+	str	r3, [sp, #28]
+.L2247:
+	ldr	r3, [sp, #12]
+	cmp	r8, r3
+	bcc	.L2260
+	ldr	r7, .L2298+8
+	mov	r6, #0
+.L2261:
+	ldrb	r3, [r5, #2234]	@ zero_extendqisi2
+	cmp	r6, r3
+	bcc	.L2263
+	ldr	r3, [sp, #24]
+	cmp	r3, #0
+	bne	.L2264
+.L2272:
+	mov	r0, #0
+	b	.L2245
+.L2246:
 	bl	FlashProgSlc2KPages
-	b	.L2285
-.L2297:
-	mov	r3, #36
+.L2245:
+	add	sp, sp, #84
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2260:
+	ldr	r3, [sp, #12]
+	mov	r7, #36
+	mul	r7, r7, r8
+	add	r2, sp, #36
 	mov	r1, r9
-	mul	r8, r3, r7
-	ldr	r3, [sp, #8]
-	add	r2, sp, #28
-	rsb	r3, r7, r3
-	add	fp, r4, r8
+	sub	r3, r3, r8
 	uxtb	r3, r3
+	add	fp, r4, r7
 	str	r3, [sp]
 	mov	r0, fp
-	add	r3, sp, #32
+	add	r3, sp, #40
 	bl	LogAddr2PhyAddr
-	ldrb	r3, [r6, #2230]	@ zero_extendqisi2
+	ldrb	r3, [r5, #2234]	@ zero_extendqisi2
 	mov	r10, r0
-	ldr	r0, [sp, #32]
-	cmp	r0, r3
-	mvncs	r3, #0
-	strcs	r3, [r4, r8]
-	bcc	.L2336
-.L2287:
-	add	r7, r7, #1
-.L2284:
-	ldr	r3, [sp, #8]
-	ldr	r5, .L2339
-	cmp	r7, r3
-	bcc	.L2297
-	b	.L2337
-.L2336:
-	ldrb	r3, [r6, #2240]	@ zero_extendqisi2
+	ldr	r0, [sp, #40]
+	cmp	r3, r0
+	mvnls	r3, #0
+	strls	r3, [r4, r7]
+	bls	.L2250
+	ldrb	r3, [r5, #2244]	@ zero_extendqisi2
 	cmp	r3, #0
-	add	r3, r6, r0, asl #4
-	ldr	r3, [r3, #2108]
+	add	r3, r5, r0, lsl #4
 	moveq	r10, #0
+	ldr	r3, [r3, #2112]
 	cmp	r3, #0
-	beq	.L2289
+	beq	.L2252
 	uxtb	r0, r0
 	bl	FlashWaitCmdDone
-.L2289:
-	ldr	r3, [sp, #32]
+.L2252:
+	ldr	r3, [sp, #40]
 	mov	r1, #0
 	cmp	r10, #0
-	add	r2, r6, r3, asl #4
-	str	r1, [r2, #2112]
-	ldr	r1, [sp, #28]
-	str	fp, [r2, #2108]
-	str	r1, [r2, #2104]
-	addne	r1, r8, #36
+	add	r2, r5, r3, lsl #4
+	str	r1, [r2, #2116]
+	ldr	r1, [sp, #36]
+	str	fp, [r2, #2112]
+	str	r1, [r2, #2108]
+	addne	r1, r7, #36
 	addne	r1, r4, r1
-	strne	r1, [r2, #2112]
-	add	r2, r6, r3
-	add	r3, r6, r3, asl #4
-	ldrb	r5, [r2, #2232]	@ zero_extendqisi2
-	strb	r5, [r3, #2100]
-	mov	r0, r5
-	ldrb	r3, [r6, #2230]	@ zero_extendqisi2
+	strne	r1, [r2, #2116]
+	add	r2, r5, r3
+	ldrb	r6, [r2, #2236]	@ zero_extendqisi2
+	add	r3, r5, r3, lsl #4
+	strb	r6, [r3, #2104]
+	mov	r0, r6
+	ldrb	r3, [r5, #2234]	@ zero_extendqisi2
 	cmp	r3, #1
-	bne	.L2291
+	bne	.L2254
 	bl	NandcWaitFlashReady
-	b	.L2292
-.L2291:
-	bl	NandcFlashCs
-	mov	r0, r5
-	ldr	r3, [sp, #32]
-	ldr	r1, [sp, #28]
-	add	r3, r6, r3, asl #2
-	ldr	r2, [r3, #1172]
-	adds	r2, r2, #0
-	movne	r2, #1
-	bl	FlashWaitReadyEN
-	mov	r0, r5
-	bl	NandcFlashDeCs
-.L2292:
-	ldr	r3, [sp, #16]
+.L2255:
+	ldr	r3, [sp, #20]
 	sub	r3, r3, #1
 	cmp	r3, #7
-	bhi	.L2293
-	add	r3, r6, r5
-	ldrb	r3, [r3, #2064]	@ zero_extendqisi2
+	bhi	.L2256
+	add	r3, r5, r6
+	ldrb	r3, [r3, #2068]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L2293
-	mov	r0, r5
-	ldrb	r1, [r6, #1211]	@ zero_extendqisi2
-	ldr	r2, .L2339+8
+	beq	.L2256
 	mov	r3, #0
+	ldr	r2, [sp, #28]
+	ldrb	r1, [r5, #1217]	@ zero_extendqisi2
+	mov	r0, r6
 	bl	HynixSetRRPara
-.L2293:
-	mov	r0, r5
+.L2256:
+	mov	r0, r6
 	bl	NandcFlashCs
 	cmp	r9, #1
-	mov	r0, r5
-	bne	.L2294
-	ldrb	r3, [r6, #144]	@ zero_extendqisi2
+	mov	r0, r6
+	bne	.L2257
+	ldrb	r3, [r5, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L2294
+	beq	.L2257
 	bl	flash_enter_slc_mode
-	b	.L2295
-.L2294:
-	bl	flash_exit_slc_mode
-.L2295:
-	mov	r0, r5
-	ldr	r1, [sp, #28]
+.L2258:
+	ldr	r1, [sp, #36]
+	mov	r0, r6
 	bl	FlashProgFirstCmd
 	ldr	r3, [fp, #12]
-	mov	r0, r5
 	mov	r1, #1
+	ldr	r2, [sp, #16]
+	mov	r0, r6
 	str	r3, [sp]
-	ldr	r2, [sp, #12]
 	ldr	r3, [fp, #8]
 	bl	NandcXferData
 	cmp	r10, #0
-	beq	.L2296
-	mov	r0, r5
-	ldr	r1, [sp, #28]
+	beq	.L2259
+	ldr	r1, [sp, #36]
+	mov	r0, r6
 	bl	FlashProgDpFirstCmd
-	mov	r0, r5
-	add	r8, r8, #36
-	add	r8, r4, r8
-	ldr	r3, [sp, #32]
-	ldr	r1, [sp, #28]
-	add	r3, r6, r3, asl #2
-	ldr	r2, [r3, #1172]
+	ldr	r3, [sp, #40]
+	mov	r0, r6
+	ldr	r1, [sp, #36]
+	add	r7, r7, #36
+	add	r7, r4, r7
+	add	r3, r5, r3, lsl #2
+	ldr	r2, [r3, #1180]
 	adds	r2, r2, #0
 	movne	r2, #1
 	bl	FlashWaitReadyEN
-	ldr	r1, [r6, #4]
-	mov	r0, r5
-	ldr	r3, [sp, #28]
+	ldr	r3, [r5, #40]
+	mov	r0, r6
+	ldr	r1, [sp, #36]
 	add	r1, r1, r3
 	bl	FlashProgDpSecondCmd
-	ldr	r3, [r8, #12]
-	mov	r0, r5
+	ldr	r3, [r7, #12]
 	mov	r1, #1
+	ldr	r2, [sp, #16]
+	mov	r0, r6
 	str	r3, [sp]
-	ldr	r2, [sp, #12]
-	ldr	r3, [r8, #8]
+	ldr	r3, [r7, #8]
 	bl	NandcXferData
-.L2296:
-	mov	r0, r5
-	ldr	r1, [sp, #28]
+.L2259:
+	ldr	r1, [sp, #36]
+	mov	r0, r6
+	add	r8, r8, r10
 	bl	FlashProgSecondCmd
-	mov	r0, r5
+	mov	r0, r6
 	bl	NandcFlashDeCs
-	add	r7, r7, r10
-	b	.L2287
-.L2337:
-	ldr	r8, .L2339+12
-	mov	r6, #0
-	mov	r7, r5
-.L2298:
-	ldrb	r3, [r5, #2230]	@ zero_extendqisi2
-	cmp	r6, r3
-	bcs	.L2338
+.L2250:
+	add	r8, r8, #1
+	b	.L2247
+.L2254:
+	bl	NandcFlashCs
+	ldr	r3, [sp, #40]
+	mov	r0, r6
+	ldr	r1, [sp, #36]
+	add	r3, r5, r3, lsl #2
+	ldr	r2, [r3, #1180]
+	adds	r2, r2, #0
+	movne	r2, #1
+	bl	FlashWaitReadyEN
+	mov	r0, r6
+	bl	NandcFlashDeCs
+	b	.L2255
+.L2257:
+	bl	flash_exit_slc_mode
+	b	.L2258
+.L2263:
 	uxtb	r0, r6
 	bl	FlashWaitCmdDone
 	cmp	r9, #1
-	bne	.L2299
-	ldrb	r3, [r7, #144]	@ zero_extendqisi2
+	bne	.L2262
+	ldrb	r3, [r5, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L2299
-	ldrb	r0, [r8, r6, asl #4]	@ zero_extendqisi2
+	beq	.L2262
+	ldrb	r0, [r7, r6, lsl #4]	@ zero_extendqisi2
 	bl	flash_exit_slc_mode
-.L2299:
+.L2262:
 	add	r6, r6, #1
-	b	.L2298
-.L2338:
-	ldr	r3, [sp, #20]
-	cmp	r3, #0
-	bne	.L2301
-.L2309:
-	mov	r0, #0
-	b	.L2285
-.L2301:
-	ldr	r5, .L2339+16
+	b	.L2261
+.L2264:
+	ldr	r5, .L2298+12
 	mov	r6, #0
-	mov	r7, r5
-.L2302:
-	ldr	r3, [sp, #8]
+	ldr	r7, .L2298+16
+.L2265:
+	ldr	r3, [sp, #12]
 	cmp	r6, r3
-	beq	.L2309
+	beq	.L2272
 	ldr	r3, [r4]
 	cmn	r3, #1
-	bne	.L2303
+	bne	.L2266
 	ldr	r1, [r4, #4]
-	ldr	r0, .L2339+20
+	ldr	r0, .L2298+20
 	bl	printk
-	b	.L2304
-.L2303:
-	ldr	r3, [sp, #8]
-	mov	r1, r9
-	add	r2, sp, #28
-	mov	r0, r4
-	rsb	r3, r6, r3
-	uxtb	r3, r3
-	str	r3, [sp]
-	add	r3, sp, #32
-	bl	LogAddr2PhyAddr
-	ldr	r2, [r5, #1724]
-	mov	r3, #0
-	mov	lr, r4
-	str	r3, [r2]
-	ldr	r2, [r5, #1728]
-	str	r3, [r2]
-	ldmia	lr!, {r0, r1, r2, r3}
-	add	ip, sp, #36
-	stmia	ip!, {r0, r1, r2, r3}
-	ldmia	lr!, {r0, r1, r2, r3}
-	stmia	ip!, {r0, r1, r2, r3}
-	add	r0, sp, #36
-	ldr	r3, [lr]
-	mov	r1, #1
-	mov	r2, r9
-	str	r3, [ip]
-	ldr	r3, [r5, #1724]
-	str	r3, [sp, #44]
-	ldr	r3, [r5, #1728]
-	str	r3, [sp, #48]
-	bl	FlashReadPages
-	ldr	r8, [sp, #36]
-	cmn	r8, #1
-	bne	.L2305
-	ldr	r0, .L2339+24
-	ldr	r1, [r4, #4]
-	bl	printk
-	str	r8, [r4]
-.L2305:
-	ldr	r3, [r4, #12]
-	cmp	r3, #0
-	beq	.L2306
-	ldr	r2, [r3]
-	ldr	r3, [r7, #1728]
-	ldr	r3, [r3]
-	cmp	r2, r3
-	beq	.L2306
-	ldr	r0, .L2339+28
-	ldr	r1, [r4, #4]
-	bl	printk
-	mvn	r3, #0
-	str	r3, [r4]
-.L2306:
-	ldr	r3, [r4, #8]
-	cmp	r3, #0
-	beq	.L2304
-	ldr	r2, [r3]
-	ldr	r3, [r7, #1724]
-	ldr	r3, [r3]
-	cmp	r2, r3
-	beq	.L2304
-	ldr	r0, .L2339+32
-	ldr	r1, [r4, #4]
-	bl	printk
-	mvn	r3, #0
-	str	r3, [r4]
-.L2304:
+.L2267:
 	add	r6, r6, #1
 	add	r4, r4, #36
-	b	.L2302
-.L2285:
-	add	sp, sp, #76
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2340:
+	b	.L2265
+.L2266:
+	ldr	r3, [sp, #12]
+	add	r2, sp, #36
+	mov	r1, r9
+	mov	r0, r4
+	sub	r3, r3, r6
+	uxtb	r3, r3
+	str	r3, [sp]
+	add	r3, sp, #40
+	bl	LogAddr2PhyAddr
+	ldr	r2, [r5, #1732]
+	mov	r3, #0
+	mov	lr, r4
+	add	ip, sp, #44
+	str	r3, [r2]
+	ldr	r2, [r5, #1736]
+	str	r3, [r2]
+	ldmia	lr!, {r0, r1, r2, r3}
+	stmia	ip!, {r0, r1, r2, r3}
+	ldmia	lr!, {r0, r1, r2, r3}
+	stmia	ip!, {r0, r1, r2, r3}
+	mov	r2, r9
+	ldr	r3, [lr]
+	mov	r1, #1
+	add	r0, sp, #44
+	str	r3, [ip]
+	ldr	r3, [r5, #1732]
+	str	r3, [sp, #52]
+	ldr	r3, [r5, #1736]
+	str	r3, [sp, #56]
+	bl	FlashReadPages
+	ldr	r8, [sp, #44]
+	cmn	r8, #1
+	bne	.L2268
+	ldr	r1, [r4, #4]
+	ldr	r0, .L2298+24
+	bl	printk
+	str	r8, [r4]
+.L2268:
+	ldr	r3, [r4, #12]
+	cmp	r3, #0
+	beq	.L2269
+	ldr	r2, [r3]
+	ldr	r3, [r5, #1736]
+	ldr	r3, [r3]
+	cmp	r2, r3
+	beq	.L2269
+	ldr	r1, [r4, #4]
+	ldr	r0, .L2298+28
+	bl	printk
+	mvn	r3, #0
+	str	r3, [r4]
+.L2269:
+	ldr	r3, [r4, #8]
+	cmp	r3, #0
+	beq	.L2267
+	ldr	r2, [r3]
+	ldr	r3, [r5, #1732]
+	ldr	r3, [r3]
+	cmp	r2, r3
+	beq	.L2267
+	ldr	r1, [r4, #4]
+	mov	r0, r7
+	bl	printk
+	mvn	r3, #0
+	str	r3, [r4]
+	b	.L2267
+.L2299:
 	.align	2
-.L2339:
+.L2298:
 	.word	.LANCHOR0
 	.word	.LANCHOR1
-	.word	.LANCHOR0+1214
-	.word	.LANCHOR0+2100
+	.word	.LANCHOR0+2104
 	.word	.LANCHOR2
+	.word	.LC108
 	.word	.LC104
 	.word	.LC105
 	.word	.LC107
-	.word	.LC108
 	.fnend
 	.size	FlashProgPages, .-FlashProgPages
 	.align	2
 	.global	FlashTestBlk
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashTestBlk, %function
 FlashTestBlk:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 104
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, lr}
+	push	{r4, r5, lr}
 	.save {r4, r5, lr}
 	.pad #108
 	sub	sp, sp, #108
-	ldr	r5, .L2345
-	ldr	r3, [r5, #1708]
+	ldr	r5, .L2304
+	ldr	r3, [r5, #1716]
 	cmp	r0, r3
 	movcc	r4, #0
-	bcc	.L2342
-	ldr	r3, [r5, #1716]
+	bcc	.L2300
+	ldr	r3, [r5, #1724]
 	mov	r4, r0
-	mov	r1, #165
-	add	r0, sp, #40
 	mov	r2, #32
+	add	r0, sp, #40
+	mov	r1, #165
 	str	r0, [sp, #16]
 	str	r3, [sp, #12]
 	bl	ftl_memset
-	mov	r1, #90
 	mov	r2, #8
-	ldr	r0, [r5, #1716]
-	mov	r4, r4, asl #10
+	mov	r1, #90
+	ldr	r0, [r5, #1724]
 	bl	ftl_memset
-	mov	r1, #1
-	mov	r2, r1
-	add	r0, sp, #4
-	str	r4, [sp, #8]
-	bl	FlashEraseBlocks
-	mov	r1, #1
-	mov	r2, r1
-	mov	r3, r1
-	add	r0, sp, #4
-	bl	FlashProgPages
-	mov	r1, #0
+	lsl	r0, r4, #10
 	mov	r2, #1
+	mov	r1, r2
+	str	r0, [sp, #8]
+	add	r0, sp, #4
+	bl	FlashEraseBlocks
+	mov	r3, #1
+	add	r0, sp, #4
+	mov	r2, r3
+	mov	r1, r3
+	bl	FlashProgPages
 	ldr	r4, [sp, #4]
+	mov	r2, #1
+	mov	r1, #0
 	add	r0, sp, #4
 	adds	r4, r4, #0
 	movne	r4, #1
 	rsb	r4, r4, #0
 	bl	FlashEraseBlocks
-.L2342:
+.L2300:
 	mov	r0, r4
 	add	sp, sp, #108
 	@ sp needed
-	ldmfd	sp!, {r4, r5, pc}
-.L2346:
+	pop	{r4, r5, pc}
+.L2305:
 	.align	2
-.L2345:
+.L2304:
 	.word	.LANCHOR2
 	.fnend
 	.size	FlashTestBlk, .-FlashTestBlk
 	.align	2
 	.global	FlashMakeFactorBbt
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashMakeFactorBbt, %function
 FlashMakeFactorBbt:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 80
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	r2, .L2357
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.pad #84
 	sub	sp, sp, #84
-	ldr	r5, .L2403
-	mov	r1, #1
-	ldr	r4, .L2403+4
-	ldr	r0, .L2403+8
-	ldr	r3, [r5, #1720]
-	ldrh	r8, [r4, #128]
-	str	r3, [sp, #20]
-	ldrh	r3, [r4, #130]
-	smulbb	r8, r8, r3
-	ldr	r3, [r4, #44]
-	ldrb	r3, [r3, #24]	@ zero_extendqisi2
-	uxth	r8, r8
+	ldr	r5, .L2357
+	mov	r4, r2
+	ldr	r3, [r2, #1728]
 	str	r3, [sp, #24]
-	ldrh	r3, [r4, #4]
-	str	r3, [sp, #16]
-	ldrb	r3, [r4]	@ zero_extendqisi2
-	ldr	r4, .L2403+4
+	ldr	r3, .L2357+4
+	ldrh	r0, [r3, #136]
+	ldrh	r1, [r3, #138]
+	smulbb	r1, r1, r0
+	ldr	r0, .L2357+8
+	uxth	r1, r1
+	str	r1, [sp, #4]
+	ldr	r1, [r3, #48]
+	ldrb	r1, [r1, #24]	@ zero_extendqisi2
+	str	r1, [sp, #28]
+	ldrh	r1, [r3, #40]
+	ldrb	r3, [r3, #36]	@ zero_extendqisi2
+	str	r1, [sp, #20]
 	cmp	r3, #1
-	ldreq	r3, [sp, #16]
-	moveq	r3, r3, asl #1
+	moveq	r3, r1
+	mov	r1, #1
+	lsleq	r3, r3, #1
 	uxtheq	r3, r3
-	streq	r3, [sp, #16]
+	streq	r3, [sp, #20]
 	bl	printk
-	ldr	r0, [r5, #1720]
-	mov	r1, #0
+	ldr	r0, [r4, #1728]
 	mov	r2, #4096
+	mov	r1, #0
+	ldr	r4, .L2357+4
 	bl	ftl_memset
-	ldr	r5, .L2403
-	mov	r3, r8, lsr #4
-	str	r3, [sp, #28]
+	ldr	r3, [sp, #4]
+	lsr	r3, r3, #4
+	str	r3, [sp, #32]
 	mov	r3, #0
-	str	r3, [sp, #8]
-.L2349:
-	ldrb	r7, [sp, #8]	@ zero_extendqisi2
-	ldrb	r3, [r4, #2230]	@ zero_extendqisi2
+	str	r3, [sp, #12]
+.L2308:
+	ldrb	r7, [sp, #12]	@ zero_extendqisi2
+	ldrb	r3, [r4, #2234]	@ zero_extendqisi2
 	cmp	r3, r7
-	bls	.L2399
-	ldr	r2, .L2403+12
-	mov	r3, r7, asl #1
+	bhi	.L2335
+	add	sp, sp, #84
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2335:
+	ldr	r2, .L2357+12
+	lsl	r3, r7, #1
 	ldrh	r6, [r2, r3]
 	cmp	r6, #0
-	bne	.L2379
-	ldrh	r2, [r4, #136]
+	bne	.L2309
+	ldrh	r2, [r4, #144]
 	mov	r1, r6
-	ldr	r0, [r5, #1688]
+	ldr	r0, [r5, #1696]
+	add	fp, r4, r7, lsl #2
+	mov	r8, r6
 	mov	r9, r6
-	mov	r2, r2, asl #9
+	lsl	r2, r2, #9
 	bl	ftl_memset
 	add	r3, r4, r7
-	ldrb	r10, [r3, #2232]	@ zero_extendqisi2
-	mov	r3, r7, asl #2
-	add	fp, r4, r3
-	str	r6, [sp, #4]
-	str	r3, [sp, #32]
-.L2351:
-	ldrh	r3, [sp, #4]
-	cmp	r3, r8
-	str	r3, [sp, #12]
-	bcs	.L2361
+	str	r6, [sp, #8]
+	ldrb	r10, [r3, #2236]	@ zero_extendqisi2
+.L2310:
+	ldrh	r3, [sp, #8]
+	ldr	r2, [sp, #4]
+	str	r3, [sp, #16]
+	cmp	r3, r2
+	bcc	.L2321
+.L2320:
+	mov	r2, r8
+	mov	r1, r7
+	ldr	r0, .L2357+16
+	bl	printk
+	ldrb	r3, [r4, #2234]	@ zero_extendqisi2
+	ldr	r2, [sp, #32]
+	mul	r3, r2, r3
+	cmp	r8, r3
+	blt	.L2322
+	ldrh	r2, [r4, #144]
+	mov	r1, #0
+	ldr	r0, [r5, #1696]
+	lsl	r2, r2, #9
+	bl	ftl_memset
+.L2322:
+	cmp	r7, #0
+	bne	.L2324
+	add	r3, r5, #1712
+	ldr	r8, .L2357+20
+	add	r3, r3, #4
+	ldrh	r10, [r3]
+	mov	r9, #1
+.L2325:
+	ldrb	r3, [r4, #37]	@ zero_extendqisi2
+	cmp	r3, r10
+	bhi	.L2327
+	ldr	r3, [sp, #4]
+	mov	r10, #1
+	ldr	r9, .L2357+20
+	sub	fp, r3, #1
+	sub	r8, r3, #50
+	uxth	fp, fp
+.L2328:
+	cmp	fp, r8
+	bgt	.L2330
+	ldrb	r3, [r4, #37]	@ zero_extendqisi2
+	ldr	r2, [r5, #1716]
+	sub	r3, r3, r2
+	cmp	r6, r3
+	bcc	.L2324
+	ldrh	r2, [r4, #144]
+	mov	r1, #0
+	ldr	r0, [r5, #1696]
+	lsl	r2, r2, #9
+	bl	ftl_memset
+.L2324:
+	ldr	r3, [sp, #4]
+	ldrb	r8, [sp, #12]	@ zero_extendqisi2
+	ldr	r9, .L2357+12
+	sub	r6, r3, #1
+	ldr	fp, .L2357+24
+	ldr	r10, .L2357+28
+	uxth	r6, r6
+	mul	r8, r3, r8
+	add	r9, r9, r7, lsl #1
+.L2332:
+	mov	r1, r7
+	mov	r2, r6
+	mov	r0, fp
+	bl	printk
+	ldr	r1, [r5, #1696]
+.L2333:
+	lsr	r2, r6, #5
+	and	r3, r6, #31
+	ldr	r2, [r1, r2, lsl #2]
+	lsr	r3, r2, r3
+	ands	r3, r3, #1
+	bne	.L2334
+	ldr	r2, [sp, #24]
+	add	r0, sp, #44
+	strh	r6, [r9]	@ movhi
+	strh	r10, [r2]	@ movhi
+	strh	r6, [r2, #2]	@ movhi
+	strh	r3, [r2, #8]	@ movhi
+	mov	r2, #1
+	ldr	r3, [r5, #1696]
+	mov	r1, r2
+	str	r3, [sp, #52]
+	ldr	r3, [r5, #1728]
+	str	r3, [sp, #56]
+	add	r3, r6, r8
+	lsl	r3, r3, #10
+	str	r3, [sp, #48]
+	bl	FlashEraseBlocks
+	mov	r3, #1
+	add	r0, sp, #44
+	mov	r2, r3
+	mov	r1, r3
+	bl	FlashProgPages
+	ldr	r3, [sp, #44]
+	cmp	r3, #0
+	beq	.L2309
+	sub	r6, r6, #1
+	uxth	r6, r6
+	b	.L2332
+.L2321:
 	mvn	r3, #0
 	strb	r3, [sp, #42]
 	strb	r3, [sp, #43]
-	ldr	r3, [sp, #24]
+	ldr	r3, [sp, #28]
 	tst	r3, #1
-	beq	.L2353
-	ldr	r3, [fp, #1172]
+	beq	.L2312
+	ldr	r3, [fp, #1180]
 	add	r2, sp, #42
 	mov	r0, r10
-	add	r3, r6, r3
-	str	r3, [sp, #36]
+	add	r3, r9, r3
 	mov	r1, r3
+	str	r3, [sp, #36]
 	bl	FlashReadSpare
-	ldrb	r2, [r4]	@ zero_extendqisi2
-	cmp	r2, #1
+	ldrb	r2, [r4, #36]	@ zero_extendqisi2
 	ldr	r3, [sp, #36]
-	bne	.L2353
-	ldr	r1, [r4, #4]
+	cmp	r2, #1
+	bne	.L2312
+	ldr	r1, [r4, #40]
 	add	r2, sp, #43
 	mov	r0, r10
 	add	r1, r3, r1
@@ -13888,1198 +14450,1097 @@
 	ldrb	r2, [sp, #43]	@ zero_extendqisi2
 	and	r3, r3, r2
 	strb	r3, [sp, #42]
-.L2353:
-	ldr	r3, [sp, #24]
+.L2312:
+	ldr	r3, [sp, #28]
 	tst	r3, #2
-	beq	.L2355
-	ldr	r3, [r4, #44]
-	mov	r0, r10
+	beq	.L2314
+	ldr	r3, [r4, #48]
 	add	r2, sp, #43
+	mov	r0, r10
 	ldrh	r1, [r3, #10]
-	ldr	r3, [fp, #1172]
+	ldr	r3, [fp, #1180]
 	sub	r1, r1, #1
 	add	r1, r1, r3
-	add	r1, r1, r6
+	add	r1, r1, r9
 	bl	FlashReadSpare
-.L2355:
-	ldr	r2, [r4, #44]
+.L2314:
+	ldr	r2, [r4, #48]
 	ldrb	r3, [r2, #7]	@ zero_extendqisi2
-	cmp	r3, #1
-	cmpne	r3, #8
+	cmp	r3, #8
+	cmpne	r3, #1
 	ldrb	r3, [sp, #42]	@ zero_extendqisi2
-	beq	.L2356
+	beq	.L2315
 	ldrb	r2, [r2, #18]	@ zero_extendqisi2
 	cmp	r2, #12
-	bne	.L2357
-.L2356:
+	bne	.L2316
+.L2315:
 	cmp	r3, #0
-	ldrneb	r0, [sp, #43]	@ zero_extendqisi2
+	ldrbne	r0, [sp, #43]	@ zero_extendqisi2
 	clzne	r0, r0
-	movne	r0, r0, lsr #5
-	bne	.L2358
-	b	.L2378
-.L2357:
+	lsrne	r0, r0, #5
+	bne	.L2317
+.L2337:
+	mov	r0, #1
+	b	.L2317
+.L2316:
 	cmp	r3, #255
-	bne	.L2378
+	bne	.L2337
 	ldrb	r0, [sp, #43]	@ zero_extendqisi2
 	subs	r0, r0, #255
 	movne	r0, #1
-	b	.L2358
-.L2378:
-	mov	r0, #1
-.L2358:
-	ldr	r3, [sp, #24]
+.L2317:
+	ldr	r3, [sp, #28]
 	tst	r3, #4
-	beq	.L2359
-	ldr	r3, .L2403+4
+	beq	.L2318
+	ldr	r1, [fp, #1180]
 	mov	r0, r10
-	ldr	r2, [sp, #32]
-	add	r3, r3, r2
-	ldr	r1, [r3, #1172]
-	add	r1, r6, r1
+	add	r1, r9, r1
 	bl	SandiskProgTestBadBlock
-.L2359:
+.L2318:
 	cmp	r0, #0
-	beq	.L2360
+	beq	.L2319
+	ldr	r2, [sp, #8]
 	mov	r1, r7
-	ldr	r2, [sp, #4]
-	ldr	r0, .L2403+16
-	add	r9, r9, #1
+	ldr	r0, .L2357+32
+	add	r8, r8, #1
 	bl	printk
-	ldr	r1, [r5, #1688]
-	mov	ip, #1
-	uxth	r9, r9
-	ldr	r3, [sp, #12]
-	mov	r0, r3, lsr #5
-	and	r3, r3, #31
-	ldr	r2, [r1, r0, asl #2]
-	orr	r3, r2, ip, asl r3
-	ldr	r2, [sp, #28]
-	str	r3, [r1, r0, asl #2]
-	ldrb	r3, [r4, #2230]	@ zero_extendqisi2
-	mul	r3, r3, r2
-	cmp	r9, r3
-	bgt	.L2361
-.L2360:
-	ldr	r3, [sp, #4]
-	add	r3, r3, #1
-	str	r3, [sp, #4]
 	ldr	r3, [sp, #16]
-	add	r6, r6, r3
-	b	.L2351
-.L2361:
-	mov	r2, r9
-	ldr	r0, .L2403+20
-	mov	r1, r7
-	bl	printk
-	ldrb	r3, [r4, #2230]	@ zero_extendqisi2
-	ldr	r2, [sp, #28]
-	mul	r3, r3, r2
-	cmp	r9, r3
-	blt	.L2363
-	ldrh	r2, [r4, #136]
-	mov	r1, #0
-	ldr	r0, [r5, #1688]
-	mov	r2, r2, asl #9
-	bl	ftl_memset
-.L2363:
-	cmp	r7, #0
-	bne	.L2365
-	ldr	r3, [r5, #1708]
-	mov	r6, r7
-	mov	r9, #1
-	uxth	r10, r3
-.L2366:
-	ldr	r3, .L2403+4
-	ldrb	r3, [r3, #1]	@ zero_extendqisi2
-	cmp	r3, r10
-	bls	.L2400
-	mov	r0, r10
-	bl	FlashTestBlk
-	cmp	r0, #0
-	beq	.L2367
-	mov	r1, r10
-	ldr	r0, .L2403+24
-	bl	printk
-	ldr	r1, [r5, #1688]
-	mov	r0, r10, lsr #5
-	add	r6, r6, #1
-	and	r3, r10, #31
-	ldr	r2, [r1, r0, asl #2]
-	uxth	r6, r6
-	orr	r3, r2, r9, asl r3
-	str	r3, [r1, r0, asl #2]
-.L2367:
-	add	r10, r10, #1
-	uxth	r10, r10
-	b	.L2366
-.L2400:
-	sub	fp, r8, #1
-	sub	r9, r8, #50
-	mov	r10, #1
-	uxth	fp, fp
-.L2369:
-	cmp	fp, r9
-	ble	.L2401
-	mov	r0, fp
-	bl	FlashTestBlk
-	cmp	r0, #0
-	beq	.L2370
-	mov	r1, fp
-	ldr	r0, .L2403+24
-	bl	printk
-	ldr	r1, [r5, #1688]
-	mov	r0, fp, lsr #5
-	and	r3, fp, #31
-	ldr	r2, [r1, r0, asl #2]
-	orr	r3, r2, r10, asl r3
-	str	r3, [r1, r0, asl #2]
-.L2370:
-	sub	fp, fp, #1
-	uxth	fp, fp
-	b	.L2369
-.L2401:
-	ldr	r3, .L2403+4
-	ldr	r2, [r5, #1708]
-	ldrb	r3, [r3, #1]	@ zero_extendqisi2
-	rsb	r3, r2, r3
-	cmp	r6, r3
-	bcc	.L2365
-	ldrh	r2, [r4, #136]
-	mov	r1, #0
-	ldr	r0, [r5, #1688]
-	mov	r2, r2, asl #9
-	bl	ftl_memset
-.L2365:
-	ldrb	r6, [sp, #8]	@ zero_extendqisi2
-	sub	r10, r8, #1
-	ldr	r9, .L2403+12
-	uxth	r10, r10
-	mul	r6, r8, r6
-	add	r9, r9, r7, asl #1
-.L2373:
-	mov	r1, r7
-	ldr	r0, .L2403+28
-	mov	r2, r10
-	bl	printk
-	ldr	r1, [r5, #1688]
-.L2374:
-	mov	r2, r10, lsr #5
-	and	r3, r10, #31
-	ldr	r2, [r1, r2, asl #2]
-	mov	r3, r2, lsr r3
-	ands	r3, r3, #1
-	subne	r10, r10, #1
-	uxthne	r10, r10
-	bne	.L2374
-.L2402:
-	ldr	r1, [sp, #20]
-	add	r0, sp, #44
-	ldr	r2, .L2403+32
-	strh	r10, [r9]	@ movhi
-	strh	r10, [r1, #2]	@ movhi
-	strh	r2, [r1]	@ movhi
-	strh	r3, [r1, #8]	@ movhi
-	mov	r1, #1
-	ldr	r3, [r5, #1688]
-	mov	r2, r1
-	str	r3, [sp, #52]
-	ldr	r3, [r5, #1720]
-	str	r3, [sp, #56]
-	add	r3, r10, r6
-	mov	r3, r3, asl #10
-	str	r3, [sp, #48]
-	bl	FlashEraseBlocks
-	mov	r1, #1
-	mov	r3, r1
-	mov	r2, r1
-	add	r0, sp, #44
-	bl	FlashProgPages
-	ldr	r3, [sp, #44]
-	cmp	r3, #0
-	subne	r10, r10, #1
-	uxthne	r10, r10
-	bne	.L2373
-.L2379:
+	mov	ip, #1
+	ldr	r2, [r5, #1696]
+	uxth	r8, r8
+	and	r0, r3, #31
+	lsr	r1, r3, #5
+	ldr	r3, [r2, r1, lsl #2]
+	orr	r3, r3, ip, lsl r0
+	str	r3, [r2, r1, lsl #2]
+	ldr	r2, [sp, #32]
+	ldrb	r3, [r4, #2234]	@ zero_extendqisi2
+	mul	r3, r2, r3
+	cmp	r8, r3
+	bgt	.L2320
+.L2319:
 	ldr	r3, [sp, #8]
 	add	r3, r3, #1
 	str	r3, [sp, #8]
-	b	.L2349
-.L2399:
-	add	sp, sp, #84
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2404:
+	ldr	r3, [sp, #20]
+	add	r9, r9, r3
+	b	.L2310
+.L2327:
+	mov	r0, r10
+	bl	FlashTestBlk
+	cmp	r0, #0
+	beq	.L2326
+	mov	r1, r10
+	mov	r0, r8
+	bl	printk
+	ldr	r1, [r5, #1696]
+	lsr	r0, r10, #5
+	add	r6, r6, #1
+	and	r3, r10, #31
+	uxth	r6, r6
+	ldr	r2, [r1, r0, lsl #2]
+	orr	r3, r2, r9, lsl r3
+	str	r3, [r1, r0, lsl #2]
+.L2326:
+	add	r10, r10, #1
+	uxth	r10, r10
+	b	.L2325
+.L2330:
+	mov	r0, fp
+	bl	FlashTestBlk
+	cmp	r0, #0
+	beq	.L2329
+	mov	r1, fp
+	mov	r0, r9
+	bl	printk
+	ldr	r1, [r5, #1696]
+	lsr	r0, fp, #5
+	and	r3, fp, #31
+	ldr	r2, [r1, r0, lsl #2]
+	orr	r3, r2, r10, lsl r3
+	str	r3, [r1, r0, lsl #2]
+.L2329:
+	sub	fp, fp, #1
+	uxth	fp, fp
+	b	.L2328
+.L2334:
+	sub	r6, r6, #1
+	uxth	r6, r6
+	b	.L2333
+.L2309:
+	ldr	r3, [sp, #12]
+	add	r3, r3, #1
+	str	r3, [sp, #12]
+	b	.L2308
+.L2358:
 	.align	2
-.L2403:
+.L2357:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.word	.LC121
-	.word	.LANCHOR2+1736
-	.word	.LC122
+	.word	.LANCHOR2+1742
 	.word	.LC123
 	.word	.LC124
 	.word	.LC125
 	.word	-3872
+	.word	.LC122
 	.fnend
 	.size	FlashMakeFactorBbt, .-FlashMakeFactorBbt
 	.align	2
 	.global	FtlLowFormatEraseBlock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlLowFormatEraseBlock, %function
 FtlLowFormatEraseBlock:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 24
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	r3, .L2404
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.pad #28
 	sub	sp, sp, #28
-	ldr	r9, .L2455
-	ldr	fp, .L2455+4
-	ldr	r5, [r9, #-3616]
-	ldrb	r3, [fp, #2240]	@ zero_extendqisi2
-	cmp	r5, #0
-	str	r3, [sp, #16]
-	movne	r0, #0
-	bne	.L2406
-	ldrb	r3, [fp, #144]	@ zero_extendqisi2
-	mov	r6, fp
-	add	fp, fp, #2400
-	mov	r10, r9
-	mov	r4, r5
-	mov	r9, r5
+	ldr	r2, [r3, #-3612]
+	cmp	r2, #0
+	movne	r4, #0
+	bne	.L2359
+	ldr	r5, .L2404+4
+	mov	r10, r3
+	ldr	fp, .L2404+8
+	mov	r9, r2
+	mov	r6, r2
+	mov	r4, r2
+	ldrb	r3, [r5, #2244]	@ zero_extendqisi2
 	mov	r8, #36
-	str	r1, [sp]
-	str	r0, [sp, #4]
-	str	r3, [sp, #8]
+	str	r1, [sp, #4]
+	str	r0, [sp, #8]
+	str	r3, [sp, #20]
+	ldrb	r3, [r5, #152]	@ zero_extendqisi2
 	str	r0, [r10, #-548]
-.L2407:
-	ldr	ip, .L2455+4
-	add	r1, ip, #2320
-	ldrh	r0, [r1]
+	str	r3, [sp, #12]
+.L2361:
+	ldrh	r0, [fp]
 	uxth	r1, r9
 	cmp	r0, r1
-	bls	.L2450
-	mul	r0, r8, r1
-	ldr	ip, [r10, #-3612]
+	bhi	.L2365
+	cmp	r6, #0
+	beq	.L2359
+	ldr	r3, [sp, #12]
+	mov	r8, #0
+	mov	r2, r6
+	ldr	r0, [r10, #-3608]
+	strb	r8, [r5, #2244]
+	mov	r9, #36
+	adds	r7, r3, #0
+	movne	r7, #1
+	mov	r1, r7
+	bl	FlashEraseBlocks
+	ldrb	r3, [sp, #20]	@ zero_extendqisi2
+	strb	r3, [r5, #2244]
+.L2367:
+	uxth	r2, r8
+	cmp	r6, r2
+	bhi	.L2369
+	ldr	r3, [sp, #4]
+	cmp	r3, #0
+	bne	.L2370
+	uxth	r7, r7
+	mov	r3, #6
+	str	r3, [sp, #16]
+	mov	r3, #1
+	str	r3, [sp, #12]
+.L2371:
+	ldr	r6, .L2404
+	mov	r9, #0
+.L2380:
+	ldr	fp, .L2404+4
+	mov	r10, #0
+	mov	r5, r10
+.L2372:
+	ldr	r3, .L2404+8
+	ldrh	r1, [r3]
+	uxth	r3, r10
+	cmp	r1, r3
+	bhi	.L2375
+	cmp	r5, #0
+	beq	.L2359
+	mov	r3, #1
+	mov	r8, #0
+	mov	r2, r7
+	mov	r1, r5
+	ldr	r0, [r6, #-3608]
+	strb	r8, [fp, #2244]
+	bl	FlashProgPages
+	ldrb	r3, [sp, #20]	@ zero_extendqisi2
+	strb	r3, [fp, #2244]
+	mov	fp, #36
+.L2377:
+	uxth	r3, r8
+	cmp	r5, r3
+	bhi	.L2379
+	ldr	r3, [sp, #16]
+	add	r9, r9, r3
+	ldr	r3, [sp, #12]
+	uxth	r9, r9
+	cmp	r3, r9
+	bhi	.L2380
+	mov	r8, #0
+	mov	r9, #36
+.L2381:
+	uxth	r3, r8
+	cmp	r5, r3
+	ldr	r3, [sp, #4]
+	bhi	.L2383
+	adds	r0, r3, #0
+	ldr	r3, [sp, #8]
+	movne	r0, #1
+	cmp	r3, #63
+	orrls	r0, r0, #1
+	cmp	r0, #0
+	beq	.L2359
+	mov	r2, r5
+	mov	r1, r7
+	ldr	r0, [r6, #-3608]
+	bl	FlashEraseBlocks
+.L2359:
+	mov	r0, r4
+	add	sp, sp, #28
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2365:
+	uxth	r1, r9
+	ldr	ip, [r10, #-3608]
 	mov	r3, #0
+	mul	r0, r8, r1
 	str	r3, [ip, r0]
-	ldr	r3, .L2455+4
-	add	r1, r3, r1
-	ldrb	r0, [r1, #2348]	@ zero_extendqisi2
-	ldr	r1, [sp, #4]
+	add	r0, r5, r1
+	ldrb	r0, [r0, #2350]	@ zero_extendqisi2
+	ldr	r1, [sp, #8]
 	bl	V2P_block
-	ldr	r3, [sp]
+	ldr	r3, [sp, #4]
 	mov	r7, r0
 	cmp	r3, #0
-	beq	.L2408
+	beq	.L2362
 	bl	IsBlkInVendorPart
 	cmp	r0, #0
-	bne	.L2409
-.L2408:
+	bne	.L2363
+.L2362:
 	mov	r0, r7
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #0
 	addne	r4, r4, #1
 	uxthne	r4, r4
-	bne	.L2409
-	ldr	ip, [r10, #-3612]
-	mov	r7, r7, asl #10
-	ldrh	r1, [fp]
-	mla	ip, r8, r5, ip
-	mul	r1, r1, r5
-	add	r5, r5, #1
-	uxth	r5, r5
-	cmp	r1, #0
+	bne	.L2363
+	ldr	r3, .L2404+12
+	lsl	r7, r7, #10
+	ldr	ip, [r10, #-3608]
+	ldrh	r1, [r3]
+	mla	ip, r8, r6, ip
+	mul	r1, r6, r1
+	add	r6, r6, #1
+	uxth	r6, r6
 	str	r0, [ip, #8]
-	add	r0, r1, #3
 	str	r7, [ip, #4]
+	add	r0, r1, #3
+	cmp	r1, #0
 	movlt	r1, r0
 	ldr	r0, [r10, #-496]
 	bic	r1, r1, #3
 	add	r1, r0, r1
 	str	r1, [ip, #12]
-.L2409:
+.L2363:
 	add	r9, r9, #1
-	b	.L2407
-.L2450:
-	cmp	r5, #0
-	beq	.L2430
-	ldr	r3, [sp, #8]
-	mov	r2, r5
-	ldr	r0, [r10, #-3612]
-	mov	r8, #0
-	adds	r7, r3, #0
-	strb	r8, [ip, #2240]
-	str	ip, [sp, #8]
-	mov	r9, #36
-	movne	r7, #1
-	mov	r1, r7
-	bl	FlashEraseBlocks
-	ldrb	r3, [sp, #16]	@ zero_extendqisi2
-	ldr	ip, [sp, #8]
-	strb	r3, [ip, #2240]
-.L2413:
-	uxth	r2, r8
-	cmp	r2, r5
-	bcs	.L2451
+	b	.L2361
+.L2369:
 	mul	r2, r9, r8
-	ldr	r1, [r10, #-3612]
-	add	r0, r1, r2
+	ldr	r1, [r10, #-3608]
+	add	ip, r1, r2
 	ldr	r2, [r1, r2]
 	cmn	r2, #1
-	bne	.L2414
-	ldr	r0, [r0, #4]
+	bne	.L2368
+	ldr	r0, [ip, #4]
 	add	r4, r4, #1
-	ubfx	r0, r0, #10, #16
 	uxth	r4, r4
+	ubfx	r0, r0, #10, #16
 	bl	FtlBbmMapBadBlock
-.L2414:
+.L2368:
 	add	r8, r8, #1
-	b	.L2413
-.L2451:
-	ldr	r3, [sp]
-	cmp	r3, #0
-	bne	.L2416
-	mov	r3, #6
-	uxth	r7, r7
+	b	.L2367
+.L2370:
+	movw	r3, #2392
+	ldrh	r3, [r5, r3]
 	str	r3, [sp, #12]
-	mov	r3, #1
-	str	r3, [sp, #8]
-	b	.L2417
-.L2416:
-	movw	r3, #2390
-	ldrh	r3, [r6, r3]
-	str	r3, [sp, #8]
-	ldrb	r3, [r6, #144]	@ zero_extendqisi2
+	ldrb	r3, [r5, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	ldreq	r3, [sp, #8]
-	moveq	r7, #1
+	ldreq	r3, [sp, #12]
 	movne	r7, #1
-	strne	r7, [sp, #12]
-	moveq	r3, r3, lsr #2
-	streq	r3, [sp, #12]
-.L2417:
-	ldr	r10, .L2455
-	mov	r5, #0
-	mov	r8, r10
-.L2426:
-	mov	fp, #0
-	mov	r6, fp
-.L2418:
-	ldr	r9, .L2455+4
-	add	r3, r9, #2320
-	ldrh	r1, [r3]
-	uxth	r3, fp
-	cmp	r1, r3
-	bls	.L2452
+	moveq	r7, #1
+	strne	r7, [sp, #16]
+	lsreq	r3, r3, #2
+	streq	r3, [sp, #16]
+	b	.L2371
+.L2375:
+	uxth	r3, r10
 	mov	r2, #36
-	ldr	r0, [r10, #-3612]
+	ldr	r0, [r6, #-3608]
 	mul	r1, r2, r3
+	add	r3, fp, r3
 	mov	r2, #0
 	str	r2, [r0, r1]
-	ldr	r2, .L2455+4
-	ldr	r1, [sp, #4]
-	add	r3, r2, r3
-	ldrb	r0, [r3, #2348]	@ zero_extendqisi2
+	ldr	r1, [sp, #8]
+	ldrb	r0, [r3, #2350]	@ zero_extendqisi2
 	bl	V2P_block
-	ldr	r3, [sp]
-	mov	r9, r0
+	ldr	r3, [sp, #4]
+	mov	r8, r0
 	cmp	r3, #0
-	beq	.L2419
+	beq	.L2373
 	bl	IsBlkInVendorPart
 	cmp	r0, #0
-	bne	.L2420
-.L2419:
-	mov	r0, r9
+	bne	.L2374
+.L2373:
+	mov	r0, r8
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #0
-	bne	.L2420
-	ldr	r1, [r8, #-3612]
+	bne	.L2374
+	ldr	r1, [r6, #-3608]
 	mov	r3, #36
-	add	r9, r5, r9, asl #10
-	mla	r1, r3, r6, r1
-	ldr	r3, [r8, #-508]
+	add	r8, r9, r8, lsl #10
+	mla	r1, r3, r5, r1
+	ldr	r3, [r6, #-508]
 	str	r3, [r1, #8]
-	ldr	r3, .L2455+8
-	str	r9, [r1, #4]
+	ldr	r3, .L2404+12
+	str	r8, [r1, #4]
 	ldrh	r3, [r3]
-	mul	r3, r3, r6
-	add	r6, r6, #1
-	uxth	r6, r6
+	mul	r3, r5, r3
+	add	r5, r5, #1
+	uxth	r5, r5
 	add	r0, r3, #3
 	cmp	r3, #0
 	movlt	r3, r0
-	ldr	r0, [r8, #-504]
+	ldr	r0, [r6, #-504]
 	bic	r3, r3, #3
 	add	r3, r0, r3
 	str	r3, [r1, #12]
-.L2420:
-	add	fp, fp, #1
-	b	.L2418
-.L2452:
-	cmp	r6, #0
-	beq	.L2430
-	mov	r2, r7
-	mov	r3, #1
-	ldr	r0, [r10, #-3612]
-	mov	r1, r6
-	mov	fp, #0
-	strb	fp, [r9, #2240]
-	bl	FlashProgPages
-	mov	r2, #36
-	ldrb	r3, [sp, #16]	@ zero_extendqisi2
-	strb	r3, [r9, #2240]
-	ldr	r9, .L2455
-.L2423:
-	uxth	r3, fp
-	cmp	r3, r6
-	bcs	.L2453
-	mul	r3, r2, fp
-	ldr	r1, [r8, #-3612]
-	add	r0, r1, r3
-	ldr	r3, [r1, r3]
-	cmp	r3, #0
-	beq	.L2424
-	ldr	r0, [r0, #4]
-	add	r4, r4, #1
-	str	r2, [sp, #20]
-	ubfx	r0, r0, #10, #16
-	uxth	r4, r4
-	bl	FtlBbmMapBadBlock
-	ldr	r2, [sp, #20]
-.L2424:
-	add	fp, fp, #1
-	b	.L2423
-.L2453:
-	ldr	r3, [sp, #12]
-	add	r5, r5, r3
-	ldr	r3, [sp, #8]
-	uxth	r5, r5
-	cmp	r5, r3
-	bcc	.L2426
-	mov	r5, #0
-	mov	r8, #36
-.L2427:
-	uxth	r3, r5
-	cmp	r3, r6
-	ldr	r3, [sp]
-	bcs	.L2454
-	cmp	r3, #0
-	beq	.L2428
-	mul	r3, r8, r5
-	ldr	r2, [r9, #-3612]
+.L2374:
+	add	r10, r10, #1
+	b	.L2372
+.L2379:
+	mul	r3, fp, r8
+	ldr	r2, [r6, #-3608]
 	add	r1, r2, r3
 	ldr	r3, [r2, r3]
 	cmp	r3, #0
-	bne	.L2428
+	beq	.L2378
+	ldr	r0, [r1, #4]
+	add	r4, r4, #1
+	uxth	r4, r4
+	ubfx	r0, r0, #10, #16
+	bl	FtlBbmMapBadBlock
+.L2378:
+	add	r8, r8, #1
+	b	.L2377
+.L2383:
+	cmp	r3, #0
+	beq	.L2382
+	mul	r3, r9, r8
+	ldr	r2, [r6, #-3608]
+	add	r1, r2, r3
+	ldr	r3, [r2, r3]
+	cmp	r3, #0
+	bne	.L2382
 	ldr	r0, [r1, #4]
 	mov	r1, #1
 	ubfx	r0, r0, #10, #16
 	bl	FtlFreeSysBlkQueueIn
-.L2428:
-	add	r5, r5, #1
-	b	.L2427
-.L2454:
-	adds	r1, r3, #0
-	ldr	r3, [sp, #4]
-	movne	r1, #1
-	cmp	r3, #63
-	orrls	r1, r1, #1
-	cmp	r1, #0
-	beq	.L2430
-	ldr	r0, [r9, #-3612]
-	mov	r1, r7
-	mov	r2, r6
-	bl	FlashEraseBlocks
-.L2430:
-	mov	r0, r4
-.L2406:
-	add	sp, sp, #28
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2456:
+.L2382:
+	add	r8, r8, #1
+	b	.L2381
+.L2405:
 	.align	2
-.L2455:
+.L2404:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2400
+	.word	.LANCHOR0+2324
+	.word	.LANCHOR0+2402
 	.fnend
 	.size	FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
 	.align	2
 	.global	FtlBbmTblFlush
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlBbmTblFlush, %function
 FtlBbmTblFlush:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 8
+	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r0, r1, r2, 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	r4, .L2475
-	ldr	r5, [r4, #-3616]
+	.pad #12
+	ldr	r4, .L2421
+	ldr	r5, [r4, #-3612]
 	cmp	r5, #0
-	bne	.L2459
-	ldr	r3, [r4, #-500]
+	bne	.L2408
+	ldr	r7, .L2421+4
+	sub	r10, r4, #436
+	ldr	r8, .L2421+8
 	mov	r1, r5
-	ldr	r2, .L2475+4
-	sub	r9, r4, #436
 	ldr	r0, [r4, #-524]
-	str	r3, [r4, #1764]
-	movw	r3, #2398
-	ldrh	r2, [r2, r3]
-	str	r0, [r4, #1760]
-	bl	ftl_memset
-	ldr	r6, .L2475+8
-	sub	r8, r6, #134
-.L2460:
-	ldrh	r3, [r8]
-	ldr	r7, .L2475+4
-	cmp	r5, r3
-	bge	.L2474
-	ldrh	r2, [r9]
-	ldr	r3, [r4, #1760]
-	ldr	r1, [r6, #4]!
-	mul	r0, r2, r5
-	mov	r2, r2, asl #2
-	add	r5, r5, #1
-	add	r0, r3, r0, asl #2
-	bl	ftl_memcpy
-	b	.L2460
-.L2474:
-	ldr	r9, [r4, #1764]
-	mov	r1, #255
-	mov	r2, #16
-	ldr	r5, .L2475+12
-	ldr	r10, .L2475
-	mov	r6, #0
-	mov	r0, r9
-	bl	ftl_memset
-	ldr	r3, .L2475+16
-	mov	r8, r5
-	strh	r3, [r9]	@ movhi
-	ldr	r3, [r7, #2460]
-	str	r3, [r9, #4]
-	movw	r3, #2452
-	ldrh	r3, [r7, r3]
-	strh	r3, [r9, #2]	@ movhi
-	ldrh	r3, [r5, #4]
-	strh	r3, [r9, #8]	@ movhi
-	ldrh	r3, [r5, #6]
-	strh	r3, [r9, #10]	@ movhi
-	ldr	r3, [r7, #2316]
-	strh	r3, [r9, #12]	@ movhi
-	str	r6, [sp, #12]
-.L2462:
-	ldr	r3, [r4, #-524]
-	mov	fp, #0
-	ldrh	r1, [r5]
-	ldrh	r2, [r5, #2]
-	str	r3, [r4, #1760]
 	ldr	r3, [r4, #-500]
-	str	fp, [r4, #1752]
+	mov	r6, r7
+	sub	r7, r7, #2400
+	ldrh	r2, [r6], #80
+	mov	r9, r7
+	str	r0, [r4, #1768]
+	str	r3, [r4, #1772]
+	bl	ftl_memset
+.L2409:
+	ldrh	r3, [r8]
+	cmp	r5, r3
+	blt	.L2410
+	ldr	r6, [r4, #1772]
+	mov	r2, #16
+	mov	r1, #255
+	ldr	r5, .L2421+12
+	ldr	fp, .L2421+16
+	mov	r0, r6
+	bl	ftl_memset
+	ldr	r3, .L2421+20
+	strh	r3, [r6]	@ movhi
+	ldr	r3, [r7, #2464]
+	str	r3, [r6, #4]
+	movw	r3, #2456
+	ldrh	r3, [r7, r3]
+	strh	r3, [r6, #2]	@ movhi
+	ldrh	r3, [r5, #4]
+	strh	r3, [r6, #8]	@ movhi
+	ldrh	r3, [r5, #6]
+	strh	r3, [r6, #10]	@ movhi
+	ldr	r3, [r7, #2320]
+	mov	r7, #0
+	mov	r8, r7
+	strh	r3, [r6, #12]	@ movhi
+.L2411:
+	ldr	r3, [r4, #-524]
+	mov	r10, #0
+	ldrh	r2, [r5, #2]
+	ldrh	r1, [r5]
+	str	r3, [r4, #1768]
+	ldr	r3, [r4, #-500]
+	str	r10, [r4, #1760]
+	str	r3, [r4, #1772]
+	orr	r3, r2, r1, lsl #10
+	ldrh	r0, [r6, #10]
 	str	r3, [r4, #1764]
-	orr	r3, r2, r1, asl #10
-	ldrh	r0, [r9, #10]
-	str	r3, [r4, #1756]
 	ldrh	r3, [r5, #4]
 	str	r0, [sp]
-	ldr	r0, .L2475+20
+	mov	r0, fp
 	bl	printk
-	ldr	r3, .L2475+24
+	ldr	r3, .L2421+24
 	ldrh	r2, [r5, #2]
 	ldrh	r3, [r3]
 	sub	r3, r3, #1
 	cmp	r2, r3
-	blt	.L2463
-	ldr	r3, [r7, #2460]
-	mov	r1, #1
-	ldrh	r2, [r8]
+	blt	.L2412
+	ldr	r3, [r9, #2464]
+	ldrh	r2, [r5]
+	ldr	r0, [r4, #-3608]
 	add	r3, r3, #1
-	ldr	r0, [r10, #-3612]
-	str	r3, [r7, #2460]
-	str	r3, [r9, #4]
-	ldrh	r3, [r8, #4]
-	strh	r2, [r9, #8]	@ movhi
-	strh	r2, [r8, #4]	@ movhi
-	mov	r2, r1
-	strh	r3, [r8]	@ movhi
-	mov	r3, r3, asl #10
-	str	r3, [r10, #1756]
+	strh	r10, [r5, #2]	@ movhi
+	str	r3, [r9, #2464]
+	str	r3, [r6, #4]
+	ldrh	r3, [r5, #4]
+	strh	r2, [r6, #8]	@ movhi
+	strh	r2, [r5, #4]	@ movhi
+	mov	r2, #1
+	strh	r3, [r5]	@ movhi
+	mov	r1, r2
+	lsl	r3, r3, #10
+	str	r3, [r4, #1764]
 	str	r3, [r0, #4]
-	strh	fp, [r8, #2]	@ movhi
 	bl	FlashEraseBlocks
-.L2463:
-	mov	r1, #1
-	ldr	r0, .L2475+28
-	mov	r3, r1
-	mov	r2, r1
+.L2412:
+	mov	r3, #1
+	ldr	r0, .L2421+28
+	mov	r2, r3
+	mov	r1, r3
 	bl	FlashProgPages
 	ldrh	r3, [r5, #2]
-	ldr	fp, .L2475
 	add	r3, r3, #1
 	strh	r3, [r5, #2]	@ movhi
-	ldr	r3, [r4, #1752]
+	ldr	r3, [r4, #1760]
 	cmn	r3, #1
-	bne	.L2464
-	add	r6, r6, #1
-	ldr	r0, .L2475+32
-	ldr	r1, [r10, #1756]
-	uxth	r6, r6
+	bne	.L2413
+	add	r7, r7, #1
+	ldr	r1, [r4, #1764]
+	uxth	r7, r7
+	ldr	r0, .L2421+32
 	bl	printk
-	cmp	r6, #3
-	bls	.L2462
-	ldr	r0, .L2475+36
-	mov	r2, r6
-	ldr	r1, [fp, #1756]
+	cmp	r7, #3
+	bls	.L2411
+	mov	r2, r7
+	ldr	r1, [r4, #1764]
+	ldr	r0, .L2421+36
 	bl	printk
 	mov	r3, #1
-	str	r3, [fp, #-3616]
-	b	.L2459
-.L2464:
-	ldr	r2, [sp, #12]
-	add	r2, r2, #1
-	str	r2, [sp, #12]
-	cmp	r2, #1
-	beq	.L2462
-	cmp	r3, #256
-	beq	.L2462
-.L2459:
+	str	r3, [r4, #-3612]
+.L2408:
 	mov	r0, #0
-	add	sp, sp, #20
+	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2476:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2410:
+	ldrh	r2, [r10]
+	ldr	r3, [r4, #1768]
+	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	.L2409
+.L2416:
+	mov	r8, #1
+	b	.L2411
+.L2413:
+	add	r8, r8, #1
+	cmp	r8, #1
+	ble	.L2416
+	cmp	r3, #256
+	bne	.L2408
+	b	.L2411
+.L2422:
 	.align	2
-.L2475:
+.L2421:
 	.word	.LANCHOR2
-	.word	.LANCHOR0
-	.word	.LANCHOR0+2476
-	.word	.LANCHOR0+2452
-	.word	-3887
+	.word	.LANCHOR0+2400
+	.word	.LANCHOR0+2346
+	.word	.LANCHOR0+2456
 	.word	.LC126
-	.word	.LANCHOR0+2390
-	.word	.LANCHOR2+1752
+	.word	-3887
+	.word	.LANCHOR0+2392
+	.word	.LANCHOR2+1760
 	.word	.LC127
 	.word	.LC128
 	.fnend
 	.size	FtlBbmTblFlush, .-FtlBbmTblFlush
 	.align	2
 	.global	allocate_data_superblock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	allocate_data_superblock, %function
 allocate_data_superblock:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 16
+	@ args = 0, pretend = 0, frame = 24
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r4, .L2532
-	ldr	r3, [r4, #-3616]
+	.pad #28
+	sub	sp, sp, #28
+	ldr	r4, .L2473
+	ldr	r3, [r4, #-3612]
 	cmp	r3, #0
-	bne	.L2478
-	mov	r5, r0
-	mov	r8, r4
-.L2479:
-	ldr	r3, .L2532+4
-	ldr	r10, .L2532+8
-	cmp	r5, r3
-	ldrb	r2, [r5, #8]	@ zero_extendqisi2
-	bne	.L2480
-	ldrh	r3, [r5, #-100]
-	ldr	ip, [r8, #-2708]
-	mov	r0, r3, lsr #1
-	mul	lr, ip, r3
-	add	r1, r0, #1
-	add	r1, r1, lr, lsr #2
-	ldr	lr, [r10, #2244]
-	cmp	lr, #0
+	bne	.L2424
+	sub	r9, r4, #3520
+	mov	r7, r0
+	sub	r3, r9, #8
+	str	r3, [sp, #12]
+.L2425:
+	ldr	r3, .L2473+4
+	ldr	r8, .L2473+8
+	ldrb	r2, [r7, #8]	@ zero_extendqisi2
+	cmp	r7, r3
+	bne	.L2426
+	ldrh	r0, [r9, #-4]
+	ldr	lr, [r4, #-2708]
+	lsr	ip, r0, #1
+	mul	r5, lr, r0
+	add	r1, ip, #1
+	add	r1, r1, r5, lsr #2
+	ldr	r5, [r8, #2248]
 	uxth	r1, r1
-	beq	.L2481
-	ldr	lr, [r8, #-3308]
-	cmp	lr, #39
-	bhi	.L2481
-	cmp	lr, #2
-	bls	.L2506
-	cmp	ip, #0
-	movne	r3, #0
-	andeq	r3, r3, #1
-	cmp	r3, #0
-	moveq	r1, r0
-	beq	.L2481
-	b	.L2506
-.L2480:
+	cmp	r5, #0
+	beq	.L2427
+	ldr	r5, [r4, #-3308]
+	cmp	r5, #39
+	bhi	.L2427
+	cmp	r5, #2
+	bls	.L2453
+	cmp	lr, #0
+	movne	r0, #0
+	andeq	r0, r0, #1
+	cmp	r0, #0
+	moveq	r1, ip
+	beq	.L2427
+.L2453:
+	mov	r1, #0
+	b	.L2428
+.L2426:
 	cmp	r2, #1
-	bne	.L2506
-	ldr	r1, .L2532+12
+	bne	.L2453
+	ldr	r1, .L2473+12
 	ldrh	r1, [r1]
 	cmp	r1, #1
-	beq	.L2506
-	ldrb	r1, [r10, #144]	@ zero_extendqisi2
+	beq	.L2453
+	ldrb	r1, [r8, #152]	@ zero_extendqisi2
 	cmp	r1, #0
-	bne	.L2506
-	ldr	r0, [r10, #2244]
-	ldrh	r3, [r3, #-100]
-	cmp	r0, #0
-	mov	r1, r3, lsr #3
-	beq	.L2481
-	ldr	r0, [r8, #-3308]
-	cmp	r0, #1
-	rsbls	r3, r3, r3, asl #3
-	ubfxls	r1, r3, #3, #16
-.L2481:
+	bne	.L2453
+	ldr	ip, [r8, #2248]
+	ldrh	r0, [r9, #-4]
+	cmp	ip, #0
+	lsr	r1, r0, #3
+	beq	.L2427
+	ldr	ip, [r4, #-3308]
+	cmp	ip, #1
+	rsbls	r0, r0, r0, lsl #3
+	ubfxls	r1, r0, #3, #16
+.L2427:
 	cmp	r1, #0
 	subne	r1, r1, #1
 	uxthne	r1, r1
-	b	.L2482
-.L2506:
-	mov	r1, #0
-.L2482:
-	ldr	r0, .L2532+16
+.L2428:
+	ldr	r0, [sp, #12]
 	bl	List_pop_index_node
-	ldr	r2, .L2532+20
-	ldrh	r3, [r2]
-	sub	r3, r3, #1
-	strh	r3, [r2]	@ movhi
-	ldr	r3, .L2532+24
-	ldrh	r3, [r3]
-	uxth	r9, r0
-	cmp	r3, r9
-	bls	.L2479
-	ldr	r3, [r8, #-3544]
-	mov	r7, r9, asl #1
-	ldrh	r6, [r3, r7]
-	cmp	r6, #0
-	bne	.L2479
-	strh	r9, [r5]	@ movhi
-	mov	r0, r5
-	bl	make_superblock
-	ldrb	r3, [r5, #7]	@ zero_extendqisi2
-	cmp	r3, #0
-	beq	.L2484
-	ldr	r2, .L2532+28
-	add	ip, r5, #14
-	ldr	r0, [r8, #-3612]
-	ldrh	lr, [r2]
-	mov	r2, #36
-	mov	r3, r0
-	mla	r1, r2, lr, r0
-	mov	lr, r6
-	str	r1, [sp]
-	b	.L2485
-.L2484:
-	ldr	r3, [r8, #-3544]
-	b	.L2527
-.L2485:
-	ldr	r1, [sp]
-	cmp	r3, r1
-	beq	.L2529
-	str	lr, [r3, #8]
-	movw	fp, #65535
-	str	lr, [r3, #12]
-	add	r3, r3, #36
-	ldrh	r1, [ip, #2]!
-	cmp	r1, fp
-	movne	r1, r1, asl #10
-	mlane	fp, r2, r6, r0
-	addne	r6, r6, #1
-	uxthne	r6, r6
-	strne	r1, [fp, #4]
-	b	.L2485
-.L2529:
-	ldr	r3, .L2532+32
-	ldr	r2, [r10, #2244]
-	rsb	r3, r3, r5
-	clz	r3, r3
-	cmp	r2, #0
-	mov	r3, r3, lsr #5
-	moveq	r3, #0
-	cmp	r3, #0
-	beq	.L2488
-	ldr	r3, [r8, #-3608]
-	ldrh	r3, [r3, r7]
-	cmp	r3, #40
-	movhi	r3, #0
-	strhib	r3, [r8, #-3516]
-.L2488:
-	ldrb	r3, [r5, #8]	@ zero_extendqisi2
-	ldr	r2, [r4, #-3608]
-	cmp	r3, #0
-	ldr	fp, .L2532+36
-	ldrh	r3, [r2, r7]
-	bne	.L2489
-	cmp	r3, #0
-	mov	r0, r9
-	ldrneh	r1, [fp]
-	moveq	r3, #2
-	addne	r3, r3, r1
-	mov	r1, #0
-	uxthne	r3, r3
-	strh	r3, [r2, r7]	@ movhi
-	ldr	r3, [r4, #-3324]
-	add	r3, r3, #1
-	str	r3, [r4, #-3324]
-	bl	ftl_set_blk_mode
-	b	.L2491
-.L2489:
-	add	r3, r3, #1
-	strh	r3, [r2, r7]	@ movhi
-	ldr	r2, [r4, #-3368]
-	mov	r1, r9, lsr #5
-	ldr	r3, [r4, #-3320]
-	mov	r0, #1
-	add	r3, r3, #1
-	str	r3, [r4, #-3320]
-	ldr	ip, [r2, r1, asl #2]
-	and	r3, r9, #31
-	orr	r3, ip, r0, asl r3
-	str	r3, [r2, r1, asl #2]
-.L2491:
-	ldr	r3, [r4, #-3608]
-	ldr	r2, [r4, #-3312]
-	ldr	r0, [r4, #-3324]
-	ldrh	r3, [r3, r7]
-	cmp	r3, r2
-	ldrh	r2, [fp]
-	strhi	r3, [r8, #-3312]
-	ldr	r3, [r4, #-3320]
-	mla	r0, r0, r2, r3
-	ldr	r3, .L2532+24
-	ldrh	r1, [r3]
-	bl	__aeabi_uidiv
-	ldr	r2, [r4, #-480]
-	ldr	r1, [r4, #-3612]
-	ldr	r3, [r2, #16]
-	add	r3, r3, #1
-	str	r3, [r2, #16]
-	mov	r3, #36
-	add	r2, r1, #4
-	mla	r3, r3, r6, r1
-	add	r3, r3, #40
-	str	r0, [r4, #-3316]
-.L2493:
-	add	r2, r2, #36
+	ldrh	r2, [r9, #-4]
+	uxth	r3, r0
+	ldr	r10, .L2473+16
+	str	r3, [sp, #4]
+	sub	r2, r2, #1
+	strh	r2, [r9, #-4]	@ movhi
+	ldrh	r2, [r10]
 	cmp	r2, r3
-	ldrne	r1, [r2, #-36]
-	bicne	r1, r1, #1020
-	bicne	r1, r1, #3
-	strne	r1, [r2, #-36]
-	bne	.L2493
-.L2530:
-	ldrb	r3, [r10, #144]	@ zero_extendqisi2
-	cmp	r3, #0
-	beq	.L2495
-	ldrb	r3, [r5, #8]	@ zero_extendqisi2
+	bls	.L2425
+	ldr	r2, [r4, #-3540]
+	lsl	r5, r3, #1
+	ldrh	r6, [r2, r5]
+	cmp	r6, #0
+	bne	.L2425
+	ldrh	r3, [sp, #4]
+	mov	r0, r7
+	strh	r3, [r7]	@ movhi
+	bl	make_superblock
+	ldrb	r2, [r7, #7]	@ zero_extendqisi2
+	cmp	r2, #0
+	beq	.L2470
+	ldr	r0, [r4, #-3608]
+	add	r3, r7, #16
+	ldrh	ip, [r10, #-8]
+	mov	r1, #36
+	str	r3, [sp, #8]
+	add	fp, r7, #16
+	mov	r2, r0
+	str	r1, [sp, #16]
+	mla	r3, r1, ip, r0
+	mov	ip, r6
+.L2431:
+	cmp	r3, r2
+	bne	.L2433
+	ldr	r2, [r8, #2248]
+	adds	r2, r2, #0
+	movne	r2, #1
+	cmp	r7, r9
+	movne	r2, #0
+	cmp	r2, #0
+	beq	.L2434
+	ldr	r2, [r4, #-3604]
+	ldrh	r2, [r2, r5]
+	cmp	r2, #40
+	movhi	r2, #0
+	strbhi	r2, [r4, #-3512]
+.L2434:
+	ldrb	r2, [r7, #8]	@ zero_extendqisi2
+	ldr	r1, [r4, #-3604]
+	ldr	fp, .L2473+20
+	cmp	r2, #0
+	ldrh	r2, [r1, r5]
+	bne	.L2435
+	cmp	r2, #0
+	ldrhne	r0, [fp]
+	moveq	r2, #2
+	addne	r2, r2, r0
+	ldr	r0, [sp, #4]
+	strh	r2, [r1, r5]	@ movhi
+	mov	r1, #0
+	ldr	r2, [r4, #-3324]
+	add	r2, r2, #1
+	str	r2, [r4, #-3324]
+	bl	ftl_set_blk_mode
+.L2438:
+	ldr	r2, [r4, #-3604]
+	ldr	r1, [r4, #-3312]
+	ldr	ip, [r4, #-3324]
+	ldrh	r2, [r2, r5]
+	ldrh	r0, [fp]
+	cmp	r2, r1
+	ldrh	r1, [r10]
+	strhi	r2, [r4, #-3312]
+	ldr	r2, [r4, #-3320]
+	mla	r0, ip, r0, r2
+	bl	__aeabi_uidiv
+	ldr	r1, [r4, #-480]
+	str	r0, [r4, #-3316]
+	ldr	r0, [r4, #-3608]
+	ldr	r2, [r1, #16]
+	ldr	ip, .L2473+24
+	add	r2, r2, #1
+	str	r2, [r1, #16]
+	mov	r1, #36
+	mla	r1, r1, r6, r0
+	add	r2, r0, #4
+	add	r1, r1, #40
+.L2440:
+	add	r2, r2, #36
+	cmp	r1, r2
+	bne	.L2441
+	ldrb	r2, [r8, #152]	@ zero_extendqisi2
+	cmp	r2, #0
+	beq	.L2442
+	ldrb	r2, [r7, #8]	@ zero_extendqisi2
+	ldr	r0, [r4, #-3608]
+	cmp	r2, #1
 	mov	r2, r6
-	ldr	r0, [r4, #-3612]
-	cmp	r3, #1
 	moveq	r1, #0
 	movne	r1, #1
 	bl	FlashEraseBlocks
-.L2495:
-	ldrb	r1, [r5, #8]	@ zero_extendqisi2
+.L2442:
+	ldrb	r1, [r7, #8]	@ zero_extendqisi2
 	mov	r2, r6
-	ldr	r0, [r4, #-3612]
-	mov	fp, #0
+	ldr	r0, [r4, #-3608]
+	mov	r10, #0
 	bl	FlashEraseBlocks
-	add	r1, r5, #16
-	mov	r2, fp
-	mov	ip, #36
-.L2497:
-	uxth	r3, fp
-	cmp	r3, r6
-	bcs	.L2531
-	mul	r3, ip, fp
-	ldr	lr, [r4, #-3612]
-	add	r0, lr, r3
-	ldr	r3, [lr, r3]
-	cmn	r3, #1
-	bne	.L2498
-	ldr	r0, [r0, #4]
-	add	r2, r2, #1
-	stmib	sp, {r1, r3, ip}
-	ubfx	r0, r0, #10, #16
-	str	r2, [sp]
-	bl	FtlBbmMapBadBlock
-	ldmib	sp, {r1, r3}
-	ldr	ip, [sp, #12]
-	ldr	r2, [sp]
-	strh	r3, [r1]	@ movhi
-	ldrb	r3, [r5, #7]	@ zero_extendqisi2
-	sub	r3, r3, #1
-	strb	r3, [r5, #7]
-.L2498:
-	add	fp, fp, #1
-	add	r1, r1, #2
-	b	.L2497
-.L2531:
-	cmp	r2, #0
-	beq	.L2500
-	mov	r0, r9
+	mov	fp, r10
+	mov	r1, #36
+.L2444:
+	uxth	r2, r10
+	cmp	r6, r2
+	bhi	.L2446
+	cmp	fp, #0
+	ble	.L2447
+	ldr	r0, [sp, #4]
 	bl	update_multiplier_value
 	bl	FtlBbmTblFlush
-.L2500:
-	ldrb	r3, [r5, #7]	@ zero_extendqisi2
-	cmp	r3, #0
-	bne	.L2501
-	ldr	r3, [r4, #-3544]
-.L2527:
-	mvn	r2, #0
-	strh	r2, [r3, r7]	@ movhi
-	b	.L2479
-.L2501:
-	movw	r2, #2388
-	ldrh	r2, [r10, r2]
-	strh	r9, [r5]	@ movhi
-	smulbb	r3, r2, r3
-	mov	r2, #0
-	strh	r2, [r5, #2]	@ movhi
-	strb	r2, [r5, #6]
-	ldr	r2, [r4, #-3332]
-	ldr	r1, [r4, #-3544]
-	uxth	r3, r3
-	strh	r3, [r5, #4]	@ movhi
-	str	r2, [r5, #12]
+.L2447:
+	ldrb	r1, [r7, #7]	@ zero_extendqisi2
+	cmp	r1, #0
+	bne	.L2448
+.L2470:
+	ldr	r2, [r4, #-3540]
+	mvn	r1, #0
+	strh	r1, [r2, r5]	@ movhi
+	b	.L2425
+.L2433:
+	str	ip, [r2, #8]
+	movw	lr, #65535
+	str	ip, [r2, #12]
+	add	r2, r2, #36
+	ldrh	r1, [fp], #2
+	cmp	r1, lr
+	ldrne	lr, [sp, #16]
+	lslne	r1, r1, #10
+	mlane	lr, lr, r6, r0
+	addne	r6, r6, #1
+	uxthne	r6, r6
+	strne	r1, [lr, #4]
+	b	.L2431
+.L2435:
 	add	r2, r2, #1
-	str	r2, [r4, #-3332]
-	ldrh	r2, [r5]
-	mov	r2, r2, asl #1
-	strh	r3, [r1, r2]	@ movhi
-.L2478:
+	ldr	r0, [sp, #4]
+	strh	r2, [r1, r5]	@ movhi
+	ldr	r2, [r4, #-3320]
+	add	r2, r2, #1
+	str	r2, [r4, #-3320]
+	bl	ftl_set_blk_mode.part.9
+	b	.L2438
+.L2441:
+	ldr	r0, [r2, #-36]
+	and	r0, r0, ip
+	str	r0, [r2, #-36]
+	b	.L2440
+.L2446:
+	mul	r2, r1, r10
+	ldr	r0, [r4, #-3608]
+	add	ip, r0, r2
+	ldr	r2, [r0, r2]
+	cmn	r2, #1
+	bne	.L2445
+	ldr	r0, [ip, #4]
+	add	fp, fp, #1
+	str	r1, [sp, #20]
+	str	r2, [sp, #16]
+	ubfx	r0, r0, #10, #16
+	bl	FtlBbmMapBadBlock
+	ldr	r2, [sp, #16]
+	ldr	r3, [sp, #8]
+	ldr	r1, [sp, #20]
+	strh	r2, [r3]	@ movhi
+	ldrb	r2, [r7, #7]	@ zero_extendqisi2
+	sub	r2, r2, #1
+	strb	r2, [r7, #7]
+.L2445:
+	ldr	r3, [sp, #8]
+	add	r10, r10, #1
+	add	r3, r3, #2
+	str	r3, [sp, #8]
+	b	.L2444
+.L2448:
+	movw	r2, #2390
+	ldrh	r3, [sp, #4]
+	ldrh	r2, [r8, r2]
+	strh	r3, [r7]	@ movhi
+	smulbb	r2, r2, r1
+	mov	r1, #0
+	strh	r1, [r7, #2]	@ movhi
+	strb	r1, [r7, #6]
+	ldr	r1, [r4, #-3332]
+	uxth	r2, r2
+	strh	r2, [r7, #4]	@ movhi
+	str	r1, [r7, #12]
+	add	r1, r1, #1
+	str	r1, [r4, #-3332]
+	ldrh	r3, [r7]
+	ldr	r1, [r4, #-3540]
+	lsl	r3, r3, #1
+	strh	r2, [r1, r3]	@ movhi
+.L2424:
 	mov	r0, #0
-	add	sp, sp, #20
+	add	sp, sp, #28
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2533:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2474:
 	.align	2
-.L2532:
+.L2473:
 	.word	.LANCHOR2
-	.word	.LANCHOR2-3428
+	.word	.LANCHOR2-3424
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2340
-	.word	.LANCHOR2-3532
-	.word	.LANCHOR2-3528
-	.word	.LANCHOR0+2328
-	.word	.LANCHOR0+2320
-	.word	.LANCHOR2-3524
-	.word	.LANCHOR0+2380
+	.word	.LANCHOR0+2344
+	.word	.LANCHOR0+2332
+	.word	.LANCHOR0+2382
+	.word	-1024
 	.fnend
 	.size	allocate_data_superblock, .-allocate_data_superblock
 	.align	2
 	.global	FtlGcFreeBadSuperBlk
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcFreeBadSuperBlk, %function
 FtlGcFreeBadSuperBlk:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L2548
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r2, [r3, #-2]
-	cmp	r2, #0
-	beq	.L2536
-	sub	r10, r3, #2
-	mov	r7, r0
-	mov	r9, #0
-	mov	r5, r3
-	mov	r8, r10
-.L2535:
-	ldr	r3, .L2548+4
-	add	r2, r3, #2320
-	ldrh	r1, [r2]
-	uxth	r2, r9
-	cmp	r1, r2
-	bls	.L2545
-	add	r3, r3, r2
-	mov	r1, r7
-	mov	fp, #0
-	ldrb	r0, [r3, #2348]	@ zero_extendqisi2
-	bl	V2P_block
-	mov	r6, r0
-.L2537:
-	ldrh	r3, [r10]
-	uxth	r4, fp
-	cmp	r3, r4
-	bls	.L2546
-	mov	r3, r4, asl #1
-	add	ip, r5, r3
-	ldrh	r3, [r5, r3]
-	cmp	r3, r6
-	bne	.L2538
-	mov	r1, r6
-	ldr	r0, .L2548+8
-	str	ip, [sp, #4]
-	bl	printk
-	mov	r0, r6
-	bl	FtlBbmMapBadBlock
-	bl	FtlBbmTblFlush
-	ldrh	r2, [r10]
-	ldr	ip, [sp, #4]
-	mov	r3, ip
-.L2539:
-	cmp	r4, r2
-	ldrcch	r1, [r3, #2]
-	addcc	r4, r4, #1
-	uxthcc	r4, r4
-	strcch	r1, [r3], #2	@ movhi
-	bcc	.L2539
-.L2547:
-	sub	r2, r2, #1
-	strh	r2, [r8]	@ movhi
-.L2538:
-	add	fp, fp, #1
-	b	.L2537
-.L2546:
-	add	r9, r9, #1
-	b	.L2535
-.L2545:
+	ldr	r4, .L2488
+	ldrh	r3, [r4, #-2]
+	cmp	r3, #0
+	beq	.L2476
+	ldr	r9, .L2488+4
+	mov	r6, #0
+	ldr	r8, .L2488+8
+	ldr	r10, .L2488+12
+	str	r0, [sp]
+.L2477:
+	ldrh	r2, [r8]
+	uxth	r3, r6
+	cmp	r2, r3
+	bhi	.L2483
 	bl	FtlGcReFreshBadBlk
-.L2536:
+.L2476:
 	mov	r0, #0
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2549:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2483:
+	uxtah	r3, r9, r6
+	ldr	r1, [sp]
+	mov	fp, #0
+	ldrb	r0, [r3, #2350]	@ zero_extendqisi2
+	bl	V2P_block
+	mov	r7, r0
+.L2478:
+	ldrh	r3, [r4, #-2]
+	uxth	r5, fp
+	cmp	r3, r5
+	addls	r6, r6, #1
+	bls	.L2477
+.L2482:
+	uxth	r3, fp
+	lsl	r1, r3, #1
+	ldrh	r1, [r4, r1]
+	cmp	r1, r7
+	bne	.L2479
+	mov	r1, r7
+	mov	r0, r10
+	str	r3, [sp, #4]
+	bl	printk
+	mov	r0, r7
+	bl	FtlBbmMapBadBlock
+	bl	FtlBbmTblFlush
+	ldr	r3, [sp, #4]
+	ldrh	r1, [r4, #-2]
+	add	r3, r4, r3, lsl #1
+.L2480:
+	cmp	r5, r1
+	bcc	.L2481
+	sub	r1, r1, #1
+	strh	r1, [r4, #-2]	@ movhi
+.L2479:
+	add	fp, fp, #1
+	b	.L2478
+.L2481:
+	ldrh	r0, [r3, #2]!
+	add	r5, r5, #1
+	uxth	r5, r5
+	strh	r0, [r3, #-2]	@ movhi
+	b	.L2480
+.L2489:
 	.align	2
-.L2548:
+.L2488:
 	.word	.LANCHOR2-2656
 	.word	.LANCHOR0
+	.word	.LANCHOR0+2324
 	.word	.LC129
 	.fnend
 	.size	FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
 	.align	2
 	.global	update_vpc_list
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	update_vpc_list, %function
 update_vpc_list:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r2, .L2560
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	mov	r3, r0, asl #1
-	ldr	r1, [r2, #-3544]
-	mov	r4, r0
+	ldr	r2, .L2499
+	lsl	r3, r0, #1
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	ldr	r1, [r2, #-3540]
 	ldrh	r3, [r1, r3]
 	cmp	r3, #0
-	bne	.L2551
+	bne	.L2491
 	sub	r1, r2, #3280
+	mov	r4, r0
 	ldrh	r0, [r1, #-4]
+	sub	r5, r2, #3520
 	cmp	r0, r4
 	mvneq	r3, #0
-	streqh	r3, [r1, #-4]	@ movhi
-	beq	.L2553
-	sub	r1, r2, #3520
-	ldrh	r1, [r1, #-4]
+	strheq	r3, [r1, #-4]	@ movhi
+	beq	.L2493
+	ldrh	r1, [r5]
 	cmp	r1, r4
-	beq	.L2559
+	beq	.L2490
 	sub	r1, r2, #3472
-	ldrh	r1, [r1, #-4]
+	ldrh	r1, [r1]
 	cmp	r1, r4
-	beq	.L2559
+	beq	.L2490
 	sub	r2, r2, #3424
-	ldrh	r2, [r2, #-4]
+	ldrh	r2, [r2]
 	cmp	r2, r4
-	beq	.L2559
-.L2553:
-	ldr	r5, .L2560+4
+	beq	.L2490
+.L2493:
 	mov	r1, r4
-	sub	r0, r5, #12
+	ldr	r0, .L2499+4
 	bl	List_remove_node
-	ldrh	r3, [r5]
+	ldrh	r3, [r5, #-12]
 	mov	r0, r4
 	sub	r3, r3, #1
-	strh	r3, [r5]	@ movhi
+	strh	r3, [r5, #-12]	@ movhi
 	bl	free_data_superblock
 	mov	r0, r4
 	bl	FtlGcFreeBadSuperBlk
-	mov	r0, #1
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L2551:
+	mov	r3, #1
+.L2490:
+	mov	r0, r3
+	pop	{r4, r5, r6, pc}
+.L2491:
 	bl	List_update_data_list
-.L2559:
-	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L2561:
+	mov	r3, #0
+	b	.L2490
+.L2500:
 	.align	2
-.L2560:
+.L2499:
 	.word	.LANCHOR2
-	.word	.LANCHOR2-3536
+	.word	.LANCHOR2-3544
 	.fnend
 	.size	update_vpc_list, .-update_vpc_list
 	.align	2
 	.global	decrement_vpc_count
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	decrement_vpc_count, %function
 decrement_vpc_count:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
 	movw	r3, #65535
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
 	cmp	r0, r3
 	mov	r4, r0
-	beq	.L2563
-	ldr	r6, .L2573
-	mov	r5, r0, asl #1
-	ldr	r3, [r6, #-3544]
+	beq	.L2502
+	ldr	r6, .L2512
+	lsl	r5, r0, #1
+	ldr	r3, [r6, #-3540]
 	ldrh	r2, [r3, r5]
 	cmp	r2, #0
 	subne	r2, r2, #1
-	strneh	r2, [r3, r5]	@ movhi
-	bne	.L2563
-	mov	r1, r4
-	ldr	r0, .L2573+4
+	strhne	r2, [r3, r5]	@ movhi
+	bne	.L2502
+	mov	r1, r0
+	ldr	r0, .L2512+4
 	bl	printk
-	ldr	r3, [r6, #-3544]
+	ldr	r3, [r6, #-3540]
 	sub	r7, r6, #3520
 	mov	r2, #32
-	sub	r0, r7, #12
+	sub	r8, r7, #8
 	mov	r1, r4
+	mov	r0, r8
 	strh	r2, [r3, r5]	@ movhi
 	bl	test_node_in_list
 	cmp	r0, #0
-	beq	.L2565
+	beq	.L2504
 	mov	r1, r4
-	sub	r0, r7, #12
+	mov	r0, r8
 	bl	List_remove_node
-	ldrh	r3, [r7, #-8]
+	ldrh	r3, [r7, #-4]
 	mov	r0, r4
 	sub	r3, r3, #1
-	strh	r3, [r7, #-8]	@ movhi
+	strh	r3, [r7, #-4]	@ movhi
 	bl	INSERT_DATA_LIST
-	ldr	r3, [r6, #-3544]
-	ldr	r0, .L2573+8
+	ldr	r3, [r6, #-3540]
 	mov	r1, r4
+	ldr	r0, .L2512+8
 	ldrh	r2, [r3, r5]
 	bl	printk
-.L2565:
+.L2504:
 	mov	r0, r4
 	bl	FtlGcRefreshBlock
-	b	.L2568
-.L2563:
-	ldr	r5, .L2573+12
+.L2507:
+	mov	r0, #0
+	pop	{r4, r5, r6, r7, r8, pc}
+.L2502:
+	ldr	r5, .L2512+12
 	movw	r3, #65535
 	ldrh	r0, [r5]
 	cmp	r0, r3
-	streqh	r4, [r5]	@ movhi
-	beq	.L2568
-	cmp	r0, r4
-	beq	.L2568
+	strheq	r4, [r5]	@ movhi
+	beq	.L2507
+	cmp	r4, r0
+	beq	.L2507
 	bl	update_vpc_list
-	strh	r4, [r5]	@ movhi
 	adds	r0, r0, #0
+	strh	r4, [r5]	@ movhi
 	movne	r0, #1
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L2568:
-	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L2574:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L2513:
 	.align	2
-.L2573:
+.L2512:
 	.word	.LANCHOR2
 	.word	.LC130
 	.word	.LC131
@@ -15088,59 +15549,44 @@
 	.size	decrement_vpc_count, .-decrement_vpc_count
 	.align	2
 	.global	FtlSlcSuperblockCheck
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlSlcSuperblockCheck, %function
 FtlSlcSuperblockCheck:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
 	ldrh	r3, [r0, #4]
 	cmp	r3, #0
-	ldmeqfd	sp!, {r3, r4, r5, r6, r7, pc}
+	bxeq	lr
 	ldrh	r2, [r0]
 	movw	r3, #65535
 	cmp	r2, r3
-	ldmeqfd	sp!, {r3, r4, r5, r6, r7, pc}
-	ldrb	r3, [r0, #6]	@ zero_extendqisi2
+	bxeq	lr
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
 	mov	r4, r0
-	ldr	r5, .L2588
-	ldr	r6, .L2588+4
-	add	r3, r0, r3, asl #1
-	add	r7, r5, #2320
+	ldrb	r3, [r0, #6]	@ zero_extendqisi2
+	ldr	r5, .L2529
+	ldr	r6, .L2529+4
+	add	r3, r0, r3, lsl #1
 	ldrh	r3, [r3, #16]
-.L2579:
+.L2518:
 	movw	r1, #65535
 	cmp	r3, r1
-	bne	.L2587
-.L2581:
-	ldrb	r3, [r4, #6]	@ zero_extendqisi2
-	ldrh	r2, [r7]
-	add	r3, r3, #1
-	uxtb	r3, r3
-	strb	r3, [r4, #6]
-	cmp	r2, r3
-	ldreqh	r3, [r4, #2]
-	addeq	r3, r3, #1
-	streqh	r3, [r4, #2]	@ movhi
-	moveq	r3, #0
-	streqb	r3, [r4, #6]
-	ldrb	r3, [r4, #6]	@ zero_extendqisi2
-	add	r3, r4, r3, asl #1
-	ldrh	r3, [r3, #16]
-	b	.L2579
-.L2587:
+	beq	.L2520
 	ldrb	r2, [r4, #8]	@ zero_extendqisi2
 	cmp	r2, #1
-	bne	.L2582
-	ldrb	r3, [r5, #144]	@ zero_extendqisi2
+	bne	.L2521
+	ldrb	r3, [r5, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L2582
+	bne	.L2521
 	ldrh	r3, [r4, #2]
-	mov	r3, r3, asl #1
+	lsl	r3, r3, #1
 	ldrh	r3, [r6, r3]
 	cmp	r3, r1
-	bne	.L2582
+	bne	.L2521
 	ldrh	r3, [r4, #4]
 	ldrh	r0, [r4]
 	sub	r3, r3, #1
@@ -15148,178 +15594,191 @@
 	bl	decrement_vpc_count
 	ldrh	r2, [r4, #4]
 	cmp	r2, #0
-	bne	.L2581
+	bne	.L2520
 	ldrh	r3, [r4, #2]
 	strb	r2, [r4, #6]
 	add	r3, r3, #1
 	strh	r3, [r4, #2]	@ movhi
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L2582:
-	ldr	r1, .L2588
-	ldrb	r3, [r1, #144]	@ zero_extendqisi2
-	cmp	r3, #0
-	ldmeqfd	sp!, {r3, r4, r5, r6, r7, pc}
-	cmp	r2, #1
-	ldmnefd	sp!, {r3, r4, r5, r6, r7, pc}
-	movw	r3, #2390
-	ldrh	r2, [r4, #2]
-	ldrh	r3, [r1, r3]
+	pop	{r4, r5, r6, pc}
+.L2520:
+	ldrb	r3, [r4, #6]	@ zero_extendqisi2
+	ldr	r2, .L2529+8
+	add	r3, r3, #1
+	ldrh	r2, [r2]
+	uxtb	r3, r3
+	strb	r3, [r4, #6]
 	cmp	r2, r3
-	ldmccfd	sp!, {r3, r4, r5, r6, r7, pc}
-	ldr	r2, .L2588+8
+	ldrheq	r3, [r4, #2]
+	addeq	r3, r3, #1
+	strheq	r3, [r4, #2]	@ movhi
+	moveq	r3, #0
+	strbeq	r3, [r4, #6]
+	ldrb	r3, [r4, #6]	@ zero_extendqisi2
+	add	r3, r4, r3, lsl #1
+	ldrh	r3, [r3, #16]
+	b	.L2518
+.L2521:
+	ldrb	r3, [r5, #152]	@ zero_extendqisi2
+	adds	r3, r3, #0
+	movne	r3, #1
+	cmp	r2, #1
+	movne	r3, #0
+	cmp	r3, #0
+	popeq	{r4, r5, r6, pc}
+	movw	r3, #2392
+	ldrh	r2, [r4, #2]
+	ldrh	r3, [r5, r3]
+	cmp	r2, r3
+	popcc	{r4, r5, r6, pc}
 	ldrh	r3, [r4]
-	ldrh	ip, [r4, #4]
-	ldr	r0, [r2, #-3544]
-	mov	r3, r3, asl #1
-	ldrh	r2, [r0, r3]
-	rsb	r2, ip, r2
-	strh	r2, [r0, r3]	@ movhi
-	movw	r2, #2388
+	ldr	r2, .L2529+12
+	ldrh	r0, [r4, #4]
+	ldr	r1, [r2, #-3540]
+	lsl	r3, r3, #1
+	ldrh	r2, [r1, r3]
+	sub	r2, r2, r0
+	strh	r2, [r1, r3]	@ movhi
+	movw	r2, #2390
+	ldrh	r2, [r5, r2]
 	mov	r3, #0
-	ldrh	r2, [r1, r2]
 	strh	r3, [r4, #4]	@ movhi
 	strb	r3, [r4, #6]
 	strh	r2, [r4, #2]	@ movhi
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L2589:
+	pop	{r4, r5, r6, pc}
+.L2530:
 	.align	2
-.L2588:
+.L2529:
 	.word	.LANCHOR0
 	.word	.LANCHOR2-2620
+	.word	.LANCHOR0+2324
 	.word	.LANCHOR2
 	.fnend
 	.size	FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
 	.align	2
 	.global	get_new_active_ppa
+	.syntax unified
+	.arm
+	.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
-	stmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, lr}
 	mov	r3, #0
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
 	strb	r3, [r0, #10]
 	mov	r4, r0
 	ldrb	r3, [r0, #6]	@ zero_extendqisi2
-	ldr	r7, .L2608
-	ldr	r9, .L2608+4
-	add	r3, r0, r3, asl #1
-	sub	r8, r7, #2320
+	ldr	r5, .L2547
+	ldr	r7, .L2547+4
+	add	r3, r0, r3, lsl #1
 	ldrh	r2, [r3, #16]
-.L2591:
+.L2532:
 	movw	r1, #65535
 	cmp	r2, r1
-	ldr	r6, .L2608
-	bne	.L2607
-.L2592:
-	ldrb	r3, [r4, #6]	@ zero_extendqisi2
-	ldrh	r2, [r7]
-	add	r3, r3, #1
-	uxtb	r3, r3
-	strb	r3, [r4, #6]
-	cmp	r2, r3
-	ldreqh	r3, [r4, #2]
-	addeq	r3, r3, #1
-	streqh	r3, [r4, #2]	@ movhi
-	moveq	r3, #0
-	streqb	r3, [r4, #6]
-	ldrb	r3, [r4, #6]	@ zero_extendqisi2
-	add	r3, r4, r3, asl #1
-	ldrh	r2, [r3, #16]
-	b	.L2591
-.L2607:
+	beq	.L2533
 	ldrb	r3, [r4, #8]	@ zero_extendqisi2
-	ldrh	r5, [r4, #2]
+	ldrh	r6, [r4, #2]
 	cmp	r3, #1
 	ldrh	r3, [r4, #4]
-	bne	.L2594
-	ldrb	r0, [r8, #144]	@ zero_extendqisi2
+	bne	.L2535
+	ldr	r0, .L2547+8
+	ldrb	r0, [r0, #152]	@ zero_extendqisi2
 	cmp	r0, #0
-	bne	.L2594
-	mov	r0, r5, asl #1
-	ldrh	r0, [r9, r0]
+	bne	.L2535
+	lsl	r0, r6, #1
+	ldrh	r0, [r7, r0]
 	cmp	r0, r1
-	bne	.L2594
+	bne	.L2535
 	sub	r3, r3, #1
 	ldrh	r0, [r4]
 	strh	r3, [r4, #4]	@ movhi
 	bl	decrement_vpc_count
-	b	.L2592
-.L2594:
-	ldr	r7, .L2608+8
-	orr	r5, r5, r2, asl #10
+.L2533:
+	ldrb	r3, [r4, #6]	@ zero_extendqisi2
+	ldrh	r2, [r5]
+	add	r3, r3, #1
+	uxtb	r3, r3
+	cmp	r2, r3
+	strb	r3, [r4, #6]
+	ldrheq	r3, [r4, #2]
+	addeq	r3, r3, #1
+	strheq	r3, [r4, #2]	@ movhi
+	moveq	r3, #0
+	strbeq	r3, [r4, #6]
+	ldrb	r3, [r4, #6]	@ zero_extendqisi2
+	add	r3, r4, r3, lsl #1
+	ldrh	r2, [r3, #16]
+	b	.L2532
+.L2535:
+	ldr	r7, .L2547+4
+	orr	r6, r6, r2, lsl #10
 	sub	r3, r3, #1
 	strh	r3, [r4, #4]	@ movhi
-.L2595:
+.L2536:
 	ldrb	r3, [r4, #6]	@ zero_extendqisi2
-	movw	r2, #65535
-	ldrh	r0, [r6]
-.L2597:
+	movw	r1, #65535
+	ldrh	r0, [r5]
+.L2538:
 	add	r3, r3, #1
 	uxtb	r3, r3
 	cmp	r3, r0
-	ldreqh	r3, [r4, #2]
+	ldrheq	r3, [r4, #2]
 	addeq	r3, r3, #1
-	streqh	r3, [r4, #2]	@ movhi
+	strheq	r3, [r4, #2]	@ movhi
 	moveq	r3, #0
-	add	r1, r4, r3, asl #1
-	ldrh	r1, [r1, #16]
-	cmp	r1, r2
-	beq	.L2597
+	add	r2, r4, r3, lsl #1
+	ldrh	r2, [r2, #16]
+	cmp	r2, r1
+	beq	.L2538
 	strb	r3, [r4, #6]
 	ldrb	r3, [r4, #8]	@ zero_extendqisi2
 	cmp	r3, #1
-	bne	.L2602
-	ldrb	r3, [r7, #144]	@ zero_extendqisi2
+	bne	.L2531
+	ldr	r2, .L2547+8
+	ldrb	r3, [r2, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L2599
 	ldrh	r3, [r4, #2]
-	ldr	r2, .L2608+4
-	mov	r3, r3, asl #1
-	ldrh	r2, [r2, r3]
-	movw	r3, #65535
-	cmp	r2, r3
-	bne	.L2599
+	bne	.L2540
+	lsl	r3, r3, #1
+	ldrh	r3, [r7, r3]
+	cmp	r3, r1
+	bne	.L2531
 	ldrh	r3, [r4, #4]
 	cmp	r3, #0
-	beq	.L2599
+	beq	.L2531
 	sub	r3, r3, #1
 	ldrh	r0, [r4]
 	strh	r3, [r4, #4]	@ movhi
 	bl	decrement_vpc_count
-	b	.L2595
-.L2599:
-	ldr	r1, .L2608+8
-	ldrb	r3, [r1, #144]	@ zero_extendqisi2
-	cmp	r3, #0
-	beq	.L2602
-	movw	r3, #2390
-	ldrh	r2, [r4, #2]
-	ldrh	r3, [r1, r3]
-	cmp	r2, r3
-	bcc	.L2602
-	ldr	r2, .L2608+12
+	b	.L2536
+.L2540:
+	movw	r1, #2392
+	ldrh	r1, [r2, r1]
+	cmp	r3, r1
+	bcc	.L2531
 	ldrh	r3, [r4]
+	ldr	r1, .L2547+12
 	ldrh	ip, [r4, #4]
-	ldr	r0, [r2, #-3544]
-	mov	r3, r3, asl #1
-	ldrh	r2, [r0, r3]
-	rsb	r2, ip, r2
-	strh	r2, [r0, r3]	@ movhi
-	movw	r2, #2388
+	ldr	r0, [r1, #-3540]
+	lsl	r3, r3, #1
+	ldrh	r1, [r0, r3]
+	sub	r1, r1, ip
+	strh	r1, [r0, r3]	@ movhi
+	movw	r1, #2390
+	ldrh	r2, [r2, r1]
 	mov	r3, #0
-	ldrh	r2, [r1, r2]
 	strh	r3, [r4, #4]	@ movhi
 	strb	r3, [r4, #6]
 	strh	r2, [r4, #2]	@ movhi
-.L2602:
-	mov	r0, r5
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
-.L2609:
+.L2531:
+	mov	r0, r6
+	pop	{r4, r5, r6, r7, r8, pc}
+.L2548:
 	.align	2
-.L2608:
-	.word	.LANCHOR0+2320
+.L2547:
+	.word	.LANCHOR0+2324
 	.word	.LANCHOR2-2620
 	.word	.LANCHOR0
 	.word	.LANCHOR2
@@ -15327,320 +15786,323 @@
 	.size	get_new_active_ppa, .-get_new_active_ppa
 	.align	2
 	.global	FtlVpcTblFlush
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlVpcTblFlush, %function
 FtlVpcTblFlush:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 0
+	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	ldr	r4, .L2628
-	ldr	r3, [r4, #-3616]
+	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	r4, .L2567
+	ldr	r3, [r4, #-3612]
 	cmp	r3, #0
-	bne	.L2612
+	bne	.L2551
 	ldr	r2, [r4, #-524]
-	sub	r6, r4, #3600
+	sub	r5, r4, #3296
 	ldr	r7, [r4, #-500]
+	sub	r8, r5, #300
+	ldr	r6, .L2567+4
 	mov	r1, #255
-	ldr	r5, .L2628+4
-	str	r2, [r4, #1760]
-	sub	r2, r4, #3296
-	str	r7, [r4, #1764]
-	ldrh	r2, [r2, #-4]
+	str	r2, [r4, #1768]
+	ldrh	r2, [r5, #-4]
+	str	r7, [r4, #1772]
+	add	r9, r6, #2400
 	str	r3, [r7, #12]
 	strh	r2, [r7, #2]	@ movhi
-	ldr	r2, .L2628+8
+	ldr	r2, .L2567+8
 	strh	r2, [r7]	@ movhi
 	ldr	r2, [r4, #-3292]
 	stmib	r7, {r2, r3}
-	ldr	r3, .L2628+12
-	ldrh	r2, [r6, #78]
-	str	r3, [r4, #-3600]
-	ldr	r3, .L2628+16
+	ldr	r3, .L2567+12
 	str	r3, [r4, #-3596]
-	add	r3, r6, #300
-	ldrh	r3, [r3, #6]
-	strh	r3, [r6, #8]	@ movhi
-	movw	r3, #2342
-	ldrh	r3, [r5, r3]
-	strb	r3, [r4, #-3590]
+	ldr	r3, .L2567+16
+	str	r3, [r4, #-3592]
+	ldrh	r3, [r5, #2]
+	strh	r3, [r8, #8]	@ movhi
+	movw	r3, #2346
+	ldrh	r3, [r6, r3]
+	strb	r3, [r4, #-3586]
 	sub	r3, r4, #3520
-	ldrh	r3, [r3, #-4]
-	strh	r3, [r6, #14]	@ movhi
-	ldrb	r3, [r4, #-3518]	@ zero_extendqisi2
-	orr	r3, r3, r2, asl #6
-	strh	r3, [r6, #16]	@ movhi
-	ldrb	r3, [r4, #-3516]	@ zero_extendqisi2
-	ldrh	r2, [r6, #126]
-	strb	r3, [r4, #-3589]
+	ldrh	r2, [r3]
+	strh	r2, [r8, #14]	@ movhi
+	ldrh	r2, [r3, #2]
+	ldrb	r3, [r4, #-3514]	@ zero_extendqisi2
+	orr	r3, r3, r2, lsl #6
+	strh	r3, [r8, #16]	@ movhi
+	ldrb	r3, [r4, #-3512]	@ zero_extendqisi2
+	strb	r3, [r4, #-3585]
 	sub	r3, r4, #3472
-	ldrh	r3, [r3, #-4]
-	strh	r3, [r6, #18]	@ movhi
-	ldrb	r3, [r4, #-3470]	@ zero_extendqisi2
-	orr	r3, r3, r2, asl #6
-	strh	r3, [r6, #20]	@ movhi
-	ldrb	r3, [r4, #-3468]	@ zero_extendqisi2
-	strb	r3, [r4, #-3588]
+	ldrh	r2, [r3]
+	strh	r2, [r8, #18]	@ movhi
+	ldrh	r2, [r3, #2]
+	ldrb	r3, [r4, #-3466]	@ zero_extendqisi2
+	orr	r3, r3, r2, lsl #6
+	strh	r3, [r8, #20]	@ movhi
+	ldrb	r3, [r4, #-3464]	@ zero_extendqisi2
+	strb	r3, [r4, #-3584]
 	sub	r3, r4, #3424
-	ldrh	r3, [r3, #-4]
-	strh	r3, [r6, #22]	@ movhi
-	ldrh	r2, [r6, #174]
-	ldrb	r3, [r4, #-3422]	@ zero_extendqisi2
-	ldr	r0, [r4, #1760]
-	orr	r3, r3, r2, asl #6
-	strh	r3, [r6, #24]	@ movhi
-	ldrb	r3, [r4, #-3420]	@ zero_extendqisi2
-	strb	r3, [r4, #-3587]
+	ldrh	r2, [r3]
+	strh	r2, [r8, #22]	@ movhi
+	ldrh	r2, [r3, #2]
+	ldrb	r3, [r4, #-3418]	@ zero_extendqisi2
+	ldr	r0, [r4, #1768]
+	orr	r3, r3, r2, lsl #6
+	strh	r3, [r8, #24]	@ movhi
+	ldrb	r3, [r4, #-3416]	@ zero_extendqisi2
+	strb	r3, [r4, #-3583]
 	ldr	r3, [r4, #-3324]
-	str	r3, [r4, #-3568]
-	ldr	r3, [r4, #-3332]
-	str	r3, [r4, #-3560]
-	ldr	r3, [r4, #-3328]
 	str	r3, [r4, #-3564]
+	ldr	r3, [r4, #-3332]
+	str	r3, [r4, #-3556]
+	ldr	r3, [r4, #-3328]
+	str	r3, [r4, #-3560]
 	sub	r3, r4, #2656
 	ldrh	r2, [r3, #-10]
 	ldrh	r3, [r3, #-8]
-	strh	r2, [r6, #44]	@ movhi
-	strh	r3, [r6, #46]	@ movhi
-	movw	r3, #2398
-	ldrh	r2, [r5, r3]
+	strh	r2, [r8, #44]	@ movhi
+	ldrh	r2, [r9]
+	strh	r3, [r5, #-254]	@ movhi
 	bl	ftl_memset
-	mov	r1, r6
+	mov	r1, r8
 	mov	r2, #48
-	movw	r6, #2328
-	ldr	r0, [r4, #1760]
+	movw	r8, #2332
+	ldr	r0, [r4, #1768]
 	bl	ftl_memcpy
-	ldrh	r2, [r5, r6]
-	ldr	r0, [r4, #1760]
-	ldr	r1, [r4, #-3544]
-	mov	r2, r2, asl #1
+	ldrh	r2, [r6, r8]
+	ldr	r0, [r4, #1768]
+	ldr	r1, [r4, #-3540]
+	lsl	r2, r2, #1
 	add	r0, r0, #48
 	bl	ftl_memcpy
-	ldrh	r2, [r5, r6]
-	ldr	r0, [r4, #1760]
-	ldr	r1, [r4, #-3368]
-	mov	r3, r2, asl #1
-	mov	r2, r2, lsr #3
-	add	r3, r3, #51
+	ldrh	r0, [r6, r8]
+	ldr	r3, [r4, #1768]
+	ldr	r1, [r6, #32]
+	lsr	r2, r0, #3
+	lsl	r0, r0, #1
+	add	r0, r0, #51
 	add	r2, r2, #4
-	bic	r3, r3, #3
-	add	r0, r0, r3
+	bic	r0, r0, #3
+	add	r0, r3, r0
 	bl	ftl_memcpy
-	add	r3, r5, #2432
-	ldrh	r3, [r3]
+	movw	r3, #2436
+	str	r9, [sp, #4]
+	ldrh	r3, [r6, r3]
 	cmp	r3, #0
-	beq	.L2613
-	ldrh	r2, [r5, r6]
-	ldr	r0, [r4, #1760]
+	beq	.L2552
+	ldrh	r0, [r6, r8]
+	movw	r3, #2428
+	ldrh	r2, [r6, r3]
 	ldr	r1, [r4, #-452]
-	mov	r3, r2, lsr #3
-	add	r3, r3, r2, asl #1
-	movw	r2, #2424
+	lsr	r3, r0, #3
+	lsl	r2, r2, #2
+	add	r3, r3, r0, lsl #1
+	ldr	r0, [r4, #1768]
 	add	r3, r3, #52
-	ldrh	r2, [r5, r2]
 	ubfx	r3, r3, #2, #14
-	mov	r2, r2, asl #2
-	add	r0, r0, r3, asl #2
+	add	r0, r0, r3, lsl #2
 	bl	ftl_memcpy
-.L2613:
-	mov	r0, #0
-	ldr	r8, .L2628
-	bl	FtlUpdateVaildLpn
-	ldr	r10, .L2628+20
-	mov	r6, #0
+.L2552:
+	ldr	r10, .L2567+20
+	mov	r8, #0
 	movw	r9, #65535
-.L2614:
+	sub	r5, r5, #4
+	mov	r0, #0
+	mov	fp, r10
+	bl	FtlUpdateVaildLpn
+.L2553:
 	ldr	r3, [r4, #-524]
-	ldrh	r2, [r10]
-	ldr	fp, .L2628+24
-	str	r3, [r4, #1760]
+	ldrh	r1, [r5, #2]
+	ldrh	r2, [r5]
+	str	r3, [r4, #1768]
 	ldr	r3, [r4, #-500]
-	ldrh	r1, [r10, #2]
+	str	r3, [r4, #1772]
+	orr	r3, r1, r2, lsl #10
 	str	r3, [r4, #1764]
-	orr	r3, r1, r2, asl #10
-	str	r3, [r4, #1756]
-	ldrh	r3, [fp]
+	ldrh	r3, [r10]
 	sub	r3, r3, #1
 	cmp	r1, r3
-	blt	.L2615
+	blt	.L2554
 	mov	r3, #0
-	ldrh	r9, [r10, #4]
-	strh	r3, [r10, #2]	@ movhi
-	strh	r2, [r10, #4]	@ movhi
+	ldrh	r9, [r5, #4]
+	strh	r3, [r5, #2]	@ movhi
+	strh	r2, [r5, #4]	@ movhi
 	bl	FtlFreeSysBlkQueueOut
-	ldr	r3, [r8, #-3332]
+	ldr	r3, [r4, #-3332]
+	strh	r0, [r5]	@ movhi
 	add	r2, r3, #1
-	str	r2, [r8, #-3332]
-	str	r3, [r8, #-3292]
-	mov	r2, r0, asl #10
-	strh	r0, [r10]	@ movhi
-	str	r2, [r8, #1756]
+	str	r3, [r4, #-3292]
+	str	r2, [r4, #-3332]
+	lsl	r2, r0, #10
+	str	r2, [r4, #1764]
 	str	r3, [r7, #4]
 	strh	r0, [r7, #2]	@ movhi
-.L2615:
-	ldrb	r3, [r5]	@ zero_extendqisi2
+.L2554:
+	ldrb	r3, [r6, #36]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L2616
-	ldr	r3, .L2628+28
+	beq	.L2555
+	ldr	r3, [sp, #4]
 	ldr	r0, [r4, #-524]
 	ldrh	r1, [r3]
 	bl	js_hash
 	str	r0, [r7, #12]
-.L2616:
-	mov	r1, #1
-	ldr	r0, .L2628+32
-	mov	r2, r1
-	mov	r3, r1
+.L2555:
+	mov	r3, #1
+	ldr	r0, .L2567+24
+	mov	r2, r3
+	mov	r1, r3
 	bl	FlashProgPages
-	ldr	r3, .L2628+20
-	ldr	r2, .L2628+20
-	ldrh	r3, [r3, #2]
+	ldrh	r3, [r5, #2]
+	ldr	r2, [r4, #1760]
 	add	r3, r3, #1
 	uxth	r3, r3
-	strh	r3, [r2, #2]	@ movhi
-	ldr	r2, [r4, #1752]
 	cmn	r2, #1
-	bne	.L2617
+	strh	r3, [r5, #2]	@ movhi
+	bne	.L2556
 	cmp	r3, #1
-	add	r6, r6, #1
-	ldreqh	r3, [fp]
-	uxth	r6, r6
+	add	r8, r8, #1
+	ldrheq	r3, [fp]
+	uxth	r8, r8
 	subeq	r3, r3, #1
-	streqh	r3, [r10, #2]	@ movhi
-	cmp	r6, #3
-	bls	.L2614
-	ldr	r0, .L2628+36
-	mov	r2, r6
-	ldr	r1, [r4, #1756]
+	strheq	r3, [r5, #2]	@ movhi
+	cmp	r8, #3
+	bls	.L2553
+	mov	r2, r8
+	ldr	r1, [r4, #1764]
+	ldr	r0, .L2567+28
 	bl	printk
 	mov	r3, #1
-	str	r3, [r4, #-3616]
-	b	.L2612
-.L2617:
-	cmp	r2, #256
-	cmpne	r3, #1
-	beq	.L2614
+	str	r3, [r4, #-3612]
+.L2551:
+	mov	r0, #0
+	add	sp, sp, #12
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2556:
+	cmp	r3, #1
+	cmpne	r2, #256
+	beq	.L2553
 	movw	r3, #65535
 	cmp	r9, r3
-	beq	.L2612
-	mov	r0, r9
+	beq	.L2551
 	mov	r1, #1
+	mov	r0, r9
 	bl	FtlFreeSysBlkQueueIn
-.L2612:
-	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2629:
+	b	.L2551
+.L2568:
 	.align	2
-.L2628:
+.L2567:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.word	-3932
 	.word	1179929683
 	.word	1342177379
-	.word	.LANCHOR2-3300
-	.word	.LANCHOR0+2390
-	.word	.LANCHOR0+2398
-	.word	.LANCHOR2+1752
+	.word	.LANCHOR0+2392
+	.word	.LANCHOR2+1760
 	.word	.LC132
 	.fnend
 	.size	FtlVpcTblFlush, .-FtlVpcTblFlush
 	.align	2
 	.global	FtlSuperblockPowerLostFix
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlSuperblockPowerLostFix, %function
 FtlSuperblockPowerLostFix:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 40
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #44
-	sub	sp, sp, #44
-	ldr	r5, .L2647
-	ldr	r3, [r5, #-3616]
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
+	.pad #40
+	sub	sp, sp, #40
+	ldr	r5, .L2585
+	ldr	r10, [r5, #-3612]
+	cmp	r10, #0
+	bne	.L2569
+	ldr	r8, .L2585+4
+	ldrb	r3, [r8, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L2630
-	ldr	r8, .L2647+4
-	ldrb	r6, [r8, #144]	@ zero_extendqisi2
-	cmp	r6, #0
-	beq	.L2646
-	ldrb	r6, [r0, #8]	@ zero_extendqisi2
-	cmp	r6, #1
-	ldreqh	fp, [r0, #4]
-	beq	.L2632
-	mov	r6, r3
-.L2646:
-	mov	fp, #12
-.L2632:
-	ldr	r7, [r5, #-500]
+	beq	.L2580
+	ldrb	r3, [r0, #8]	@ zero_extendqisi2
+	cmp	r3, #1
+	ldrheq	r7, [r0, #4]
+	moveq	r10, r3
+	beq	.L2571
+.L2580:
+	mov	r7, #12
+.L2571:
 	mvn	r3, #0
+	ldr	r6, [r5, #-500]
 	str	r3, [sp, #20]
 	mov	r9, #0
 	ldr	r3, [r5, #-524]
 	movw	r2, #61589
-	str	r7, [sp, #16]
+	str	r6, [sp, #16]
 	mov	r4, r0
-	ldr	r10, .L2647
 	str	r3, [sp, #12]
 	mvn	r3, #2
-	str	r3, [r7, #8]
+	str	r3, [r6, #8]
 	mvn	r3, #1
-	str	r3, [r7, #12]
+	str	r3, [r6, #12]
 	ldrh	r3, [r0]
-	strh	r9, [r7]	@ movhi
-	strh	r3, [r7, #2]	@ movhi
+	strh	r9, [r6]	@ movhi
+	strh	r3, [r6, #2]	@ movhi
 	ldr	r3, [r5, #-524]
 	str	r2, [r3]
-	ldr	r2, .L2647+8
+	ldr	r2, .L2585+8
 	ldr	r3, [r5, #-524]
 	str	r2, [r3, #4]
-.L2633:
-	subs	fp, fp, #1
-	bcc	.L2636
+.L2572:
+	subs	r7, r7, #1
+	bcc	.L2575
 	ldrh	r3, [r4, #4]
 	cmp	r3, #0
-	bne	.L2634
-.L2636:
+	bne	.L2573
+.L2575:
 	ldrh	r3, [r4]
-	ldr	r1, [r5, #-3544]
+	ldr	r1, [r5, #-3540]
 	ldrh	r0, [r4, #4]
-	mov	r3, r3, asl #1
+	lsl	r3, r3, #1
 	ldrh	r2, [r1, r3]
-	rsb	r2, r0, r2
+	sub	r2, r2, r0
 	strh	r2, [r1, r3]	@ movhi
-	movw	r3, #2388
+	movw	r3, #2390
 	ldrh	r3, [r8, r3]
 	strh	r3, [r4, #2]	@ movhi
 	mov	r3, #0
 	strb	r3, [r4, #6]
 	strh	r3, [r4, #4]	@ movhi
-	b	.L2630
-.L2634:
+.L2569:
+	add	sp, sp, #40
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L2573:
 	mov	r0, r4
 	bl	get_new_active_ppa
 	cmn	r0, #1
 	str	r0, [sp, #8]
-	beq	.L2636
+	beq	.L2575
 	ldr	r3, [r5, #-3328]
+	mov	r2, r10
 	mov	r1, #1
-	mov	r2, r6
 	add	r0, sp, #4
-	str	r3, [r7, #4]
+	str	r3, [r6, #4]
 	add	r3, r3, #1
 	cmn	r3, #1
 	moveq	r3, r9
-	str	r3, [r10, #-3328]
+	str	r3, [r5, #-3328]
 	mov	r3, #0
 	bl	FlashProgPages
 	ldrh	r0, [r4]
 	bl	decrement_vpc_count
-	b	.L2633
-.L2630:
-	add	sp, sp, #44
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2648:
+	b	.L2572
+.L2586:
 	.align	2
-.L2647:
+.L2585:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.word	305419896
@@ -15648,32 +16110,35 @@
 	.size	FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
 	.align	2
 	.global	ftl_map_blk_gc
+	.syntax unified
+	.arm
+	.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
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r4, r0
 	ldr	r5, [r0, #12]
-	ldr	r7, [r0, #24]
+	ldr	r10, [r0, #24]
 	bl	ftl_free_no_use_map_blk
 	ldrh	r3, [r4, #10]
 	ldrh	r2, [r4, #8]
+	ldr	fp, .L2600
 	sub	r3, r3, #4
-	ldr	r8, .L2663
 	cmp	r2, r3
-	blt	.L2650
+	blt	.L2588
 	uxth	r0, r0
-	mov	r0, r0, asl #1
-	ldrh	r10, [r5, r0]
-	cmp	r10, #0
-	beq	.L2650
+	lsl	r0, r0, #1
+	ldrh	r9, [r5, r0]
+	cmp	r9, #0
+	beq	.L2588
 	ldr	r3, [r4, #32]
 	cmp	r3, #0
-	bne	.L2650
+	bne	.L2588
 	mov	r2, #1
 	str	r2, [r4, #32]
 	strh	r3, [r5, r0]	@ movhi
@@ -15681,114 +16146,117 @@
 	ldrh	r2, [r4, #2]
 	sub	r3, r3, #1
 	strh	r3, [r4, #8]	@ movhi
-	movw	r3, #2390
-	ldrh	r3, [r8, r3]
+	movw	r3, #2392
+	ldrh	r3, [fp, r3]
 	cmp	r2, r3
-	bcc	.L2651
+	bcc	.L2589
 	mov	r0, r4
 	bl	ftl_map_blk_alloc_new_blk
-.L2651:
-	ldr	r5, .L2663+4
-	mov	fp, #0
-.L2652:
-	ldrh	r3, [r4, #6]
-	uxth	r6, fp
-	cmp	r3, r6
-	bls	.L2662
-	ldr	r3, [r7, r6, asl #2]
-	add	ip, r7, r6, asl #2
-	cmp	r10, r3, lsr #10
-	bne	.L2653
-	ldr	r3, [r5, #-520]
+.L2589:
+	ldr	r5, .L2600+4
+	mov	r6, #0
+.L2590:
+	ldrh	r2, [r4, #6]
+	uxth	r3, r6
+	cmp	r2, r3
+	bhi	.L2595
 	mov	r1, #1
-	ldr	r9, [r5, #-500]
-	mov	r2, r1
-	ldr	r0, .L2663+8
-	str	r3, [r5, #1760]
-	str	r9, [r5, #1764]
-	ldr	r3, [r7, r6, asl #2]
-	str	ip, [sp, #4]
-	str	r3, [r5, #1756]
-	bl	FlashReadPages
-	ldr	r3, [r5, #1752]
-	cmn	r3, #1
-	ldr	r3, .L2663+4
-	ldr	ip, [sp, #4]
-	bne	.L2654
-.L2656:
-	mov	r2, #0
-	ldr	r0, .L2663+12
-	str	r2, [ip]
-	ldr	r1, [r3, #1756]
-	ldrh	r2, [r9, #8]
-	str	r3, [sp, #4]
-	bl	printk
-	mov	r2, #1
-	ldr	r3, [sp, #4]
-	str	r2, [r3, #-3616]
-	b	.L2655
-.L2654:
-	ldrh	r1, [r9, #8]
-	cmp	r1, r6
-	bne	.L2656
-	ldrh	r0, [r9]
-	ldrh	r2, [r4, #4]
-	cmp	r0, r2
-	bne	.L2656
-	mov	r0, r4
-	ldr	r2, [r5, #1760]
-	bl	FtlMapWritePage
-.L2653:
-	add	fp, fp, #1
-	b	.L2652
-.L2662:
-	mov	r0, r10
-	mov	r1, #1
+	mov	r0, r9
 	bl	FtlFreeSysBlkQueueIn
 	mov	r3, #0
 	str	r3, [r4, #32]
-.L2650:
-	movw	r3, #2390
+.L2588:
+	movw	r3, #2392
 	ldrh	r2, [r4, #2]
-	ldrh	r3, [r8, r3]
+	ldrh	r3, [fp, r3]
 	cmp	r2, r3
-	bcc	.L2655
+	bcc	.L2593
 	mov	r0, r4
 	bl	ftl_map_blk_alloc_new_blk
-.L2655:
+	b	.L2593
+.L2595:
+	uxth	r7, r6
+	add	r2, r10, r7, lsl #2
+	str	r2, [sp]
+	ldr	r2, [r10, r7, lsl #2]
+	cmp	r9, r2, lsr #10
+	bne	.L2591
+	ldr	r2, [r5, #-520]
+	ldr	r8, [r5, #-500]
+	ldr	r0, .L2600+8
+	str	r2, [r5, #1768]
+	str	r8, [r5, #1772]
+	ldr	r2, [r10, r7, lsl #2]
+	str	r3, [sp, #4]
+	str	r2, [r5, #1764]
+	mov	r2, #1
+	mov	r1, r2
+	bl	FlashReadPages
+	ldr	r2, [r5, #1760]
+	ldr	r3, [sp, #4]
+	cmn	r2, #1
+	bne	.L2592
+.L2594:
+	ldr	r2, [sp]
+	mov	r3, #0
+	ldr	r0, .L2600+12
+	str	r3, [r2]
+	ldrh	r2, [r8, #8]
+	ldr	r1, [r5, #1764]
+	bl	printk
+	mov	r3, #1
+	str	r3, [r5, #-3612]
+.L2593:
 	mov	r0, #0
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2664:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2592:
+	ldrh	r2, [r8, #8]
+	cmp	r2, r3
+	bne	.L2594
+	ldrh	r2, [r8]
+	ldrh	r3, [r4, #4]
+	cmp	r2, r3
+	bne	.L2594
+	ldr	r2, [r5, #1768]
+	mov	r1, r7
+	mov	r0, r4
+	bl	FtlMapWritePage
+.L2591:
+	add	r6, r6, #1
+	b	.L2590
+.L2601:
 	.align	2
-.L2663:
+.L2600:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR2+1752
+	.word	.LANCHOR2+1760
 	.word	.LC133
 	.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:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, lr}
-	ldr	r5, .L2677
-	ldr	r7, [r0, #12]
-	ldr	r9, [r0, #24]
-	ldr	r6, [r5, #-3616]
+	ldr	r5, .L2613
+	ldr	r6, [r5, #-3612]
 	cmp	r6, #0
-	bne	.L2666
+	bne	.L2603
 	ldrh	r3, [r0]
 	movw	r2, #65535
 	mov	r4, r0
+	ldr	r7, [r0, #12]
 	cmp	r3, r2
-	bne	.L2667
+	bne	.L2604
 	ldrh	r3, [r0, #8]
 	add	r3, r3, #1
 	strh	r3, [r0, #8]	@ movhi
@@ -15796,479 +16264,346 @@
 	strh	r0, [r7]	@ movhi
 	ldr	r3, [r4, #28]
 	strh	r6, [r4, #2]	@ movhi
-	add	r3, r3, #1
 	strh	r6, [r4]	@ movhi
+	add	r3, r3, #1
 	str	r3, [r4, #28]
-	b	.L2666
-.L2667:
-	mov	r3, r3, asl #1
-	ldr	r10, .L2677+4
+.L2603:
+	mov	r0, #0
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L2604:
+	lsl	r3, r3, #1
+	ldr	r8, [r0, #24]
+	ldr	r10, .L2613+4
 	mov	r1, #255
-	ldrh	r8, [r7, r3]
+	ldrh	r9, [r7, r3]
 	ldrh	r3, [r0, #2]
 	ldr	r7, [r5, #-500]
-	orr	r3, r3, r8, asl #10
-	str	r3, [r5, #1756]
+	orr	r3, r3, r9, lsl #10
+	str	r7, [r5, #1772]
+	str	r3, [r5, #1764]
 	ldr	r3, [r5, #-524]
-	str	r7, [r5, #1764]
-	str	r3, [r5, #1760]
+	str	r3, [r5, #1768]
 	ldr	r3, [r0, #28]
 	str	r3, [r7, #4]
-	ldr	r3, .L2677+8
+	ldr	r3, .L2613+8
 	strh	r3, [r7, #8]	@ movhi
 	ldrh	r3, [r0, #4]
-	strh	r8, [r7, #2]	@ movhi
+	strh	r9, [r7, #2]	@ movhi
 	strh	r3, [r7]	@ movhi
-	movw	r3, #2390
+	movw	r3, #2392
 	ldrh	r2, [r10, r3]
 	ldr	r0, [r5, #-524]
-	mov	r2, r2, asl #3
+	lsl	r2, r2, #3
 	bl	ftl_memset
 	mov	r2, r6
-.L2668:
-	ldrh	r1, [r4, #6]
-	uxth	r3, r2
-	cmp	r1, r3
-	bls	.L2676
-	ldr	r1, [r9, r3, asl #2]
-	cmp	r8, r1, lsr #10
-	bne	.L2669
-	add	r6, r6, #1
-	ldr	r1, [r5, #-524]
-	uxth	r6, r6
-	str	r3, [r1, r6, asl #3]
-	ldr	r1, [r9, r3, asl #2]
-	ldr	r3, [r5, #-524]
-	add	r3, r3, r6, asl #3
-	str	r1, [r3, #4]
-.L2669:
-	add	r2, r2, #1
-	b	.L2668
-.L2676:
-	ldrb	r3, [r10]	@ zero_extendqisi2
+	mov	r3, r6
+.L2605:
+	ldrh	r0, [r4, #6]
+	uxth	r1, r2
+	cmp	r0, r1
+	bhi	.L2607
+	ldrb	r3, [r10, #36]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L2671
-	ldr	r2, .L2677+4
-	movw	r3, #2398
-	ldr	r0, [r5, #1760]
-	ldrh	r1, [r2, r3]
+	beq	.L2608
+	ldr	r3, .L2613+12
+	ldr	r0, [r5, #1768]
+	ldrh	r1, [r3]
 	bl	js_hash
 	str	r0, [r7, #12]
-.L2671:
-	mov	r1, #1
+.L2608:
+	mov	r2, #1
 	mov	r3, #0
-	ldr	r0, .L2677+12
-	mov	r2, r1
+	mov	r1, r2
+	ldr	r0, .L2613+16
 	bl	FlashProgPages
 	ldrh	r3, [r4, #2]
 	mov	r0, r4
 	add	r3, r3, #1
 	strh	r3, [r4, #2]	@ movhi
 	bl	ftl_map_blk_gc
-.L2666:
-	mov	r0, #0
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L2678:
+	b	.L2603
+.L2607:
+	uxth	r1, r2
+	ldr	r0, [r8, r1, lsl #2]
+	cmp	r9, r0, lsr #10
+	bne	.L2606
+	ldr	r0, [r5, #-524]
+	add	r3, r3, #1
+	uxth	r3, r3
+	str	r1, [r0, r3, lsl #3]
+	ldr	r0, [r8, r1, lsl #2]
+	ldr	r1, [r5, #-524]
+	add	r1, r1, r3, lsl #3
+	str	r0, [r1, #4]
+.L2606:
+	add	r2, r2, #1
+	b	.L2605
+.L2614:
 	.align	2
-.L2677:
+.L2613:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.word	-1291
-	.word	.LANCHOR2+1752
+	.word	.LANCHOR0+2400
+	.word	.LANCHOR2+1760
 	.fnend
 	.size	Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
 	.align	2
 	.global	FtlMapWritePage
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlMapWritePage, %function
 FtlMapWritePage:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r4, r0
-	ldr	r10, .L2698
-	mov	r8, r1
-	ldr	fp, .L2698+4
-	mov	r5, #0
-	str	r2, [sp]
-	mov	r9, r10
-.L2680:
-	ldr	r3, [r10, #-3348]
-	ldr	r6, .L2698
+	ldr	r7, .L2634
+	mov	r9, r1
+	mov	fp, r2
+	mov	r6, #0
+	ldr	r10, .L2634+4
+	mov	r5, r7
+.L2616:
+	ldr	r3, [r7, #-3348]
 	add	r3, r3, #1
-	str	r3, [r10, #-3348]
-	ldrh	r3, [fp]
+	str	r3, [r7, #-3348]
+	ldrh	r3, [r10]
 	ldrh	r2, [r4, #2]
 	sub	r3, r3, #1
 	cmp	r2, r3
-	bge	.L2681
+	bge	.L2617
 	ldrh	r2, [r4]
 	movw	r3, #65535
 	cmp	r2, r3
-	bne	.L2682
-.L2681:
+	bne	.L2618
+.L2617:
 	mov	r0, r4
 	bl	Ftl_write_map_blk_to_last_page
-.L2682:
-	ldr	r1, [r9, #-3616]
+.L2618:
+	ldr	r1, [r5, #-3612]
 	cmp	r1, #0
-	bne	.L2683
+	bne	.L2619
 	ldrh	r3, [r4]
 	ldr	r2, [r4, #12]
-	ldr	r0, [r10, #-500]
-	mov	r3, r3, asl #1
-	ldrh	r7, [r2, r3]
+	ldr	r0, [r5, #-500]
+	lsl	r3, r3, #1
+	ldrh	r8, [r2, r3]
 	mov	r2, #16
 	ldrh	r3, [r4, #2]
-	str	r0, [r10, #1764]
-	orr	r3, r3, r7, asl #10
-	str	r3, [r10, #1756]
-	ldr	r3, [sp]
-	str	r3, [r10, #1760]
+	str	fp, [r5, #1768]
+	str	r0, [r5, #1772]
+	orr	r3, r3, r8, lsl #10
+	str	r3, [r5, #1764]
 	bl	ftl_memset
+	ldr	r3, [r5, #1772]
 	ldr	r2, [r4, #28]
-	ldr	r3, [r10, #1764]
+	strh	r9, [r3, #8]	@ movhi
 	str	r2, [r3, #4]
-	strh	r8, [r3, #8]	@ movhi
 	ldrh	r2, [r4, #4]
-	strh	r7, [r3, #2]	@ movhi
-	strh	r2, [r3]	@ movhi
-	ldr	r2, .L2698+8
-	ldrb	r2, [r2]	@ zero_extendqisi2
-	cmp	r2, #0
-	beq	.L2684
-	ldr	r2, .L2698+12
-	ldr	r0, [r10, #1760]
 	str	r3, [sp, #4]
+	strh	r8, [r3, #2]	@ movhi
+	strh	r2, [r3]	@ movhi
+	ldr	r2, .L2634+8
+	ldrb	r1, [r2, #36]	@ zero_extendqisi2
+	cmp	r1, #0
+	beq	.L2620
+	add	r2, r2, #2400
+	ldr	r0, [r5, #1768]
 	ldrh	r1, [r2]
 	bl	js_hash
 	ldr	r3, [sp, #4]
 	str	r0, [r3, #12]
-.L2684:
-	mov	r1, #1
-	ldr	r0, .L2698+16
-	mov	r2, r1
-	mov	r3, r1
+.L2620:
+	mov	r3, #1
+	ldr	r0, .L2634+12
+	mov	r2, r3
+	mov	r1, r3
 	bl	FlashProgPages
 	ldrh	r3, [r4, #2]
 	add	r3, r3, #1
 	uxth	r3, r3
 	strh	r3, [r4, #2]	@ movhi
-	ldr	r2, [r9, #1752]
+	ldr	r2, [r5, #1760]
 	cmn	r2, #1
-	bne	.L2685
-	ldr	r0, .L2698+20
-	add	r5, r5, #1
-	ldr	r1, [r10, #1756]
+	bne	.L2621
+	ldr	r1, [r5, #1764]
+	add	r6, r6, #1
+	ldr	r0, .L2634+16
+	uxth	r6, r6
 	bl	printk
 	ldrh	r3, [r4, #2]
-	uxth	r5, r5
 	cmp	r3, #2
-	ldrls	r3, .L2698+4
-	ldrlsh	r3, [r3]
+	ldrhls	r3, [r10]
 	subls	r3, r3, #1
-	strlsh	r3, [r4, #2]	@ movhi
-	cmp	r5, #3
-	bls	.L2680
-	ldr	r0, .L2698+24
-	mov	r2, r5
-	ldr	r1, [r6, #1756]
+	strhls	r3, [r4, #2]	@ movhi
+	cmp	r6, #3
+	bls	.L2616
+	mov	r2, r6
+	ldr	r1, [r5, #1764]
+	ldr	r0, .L2634+20
 	bl	printk
 	mov	r3, #1
-	str	r3, [r6, #-3616]
-	b	.L2683
-.L2685:
-	cmp	r2, #0
-	strneh	r7, [r4, #40]	@ movhi
-	cmp	r2, #256
-	cmpne	r3, #1
-	beq	.L2689
-	ldr	r3, [r4, #36]
-	cmp	r3, #0
-	beq	.L2690
-.L2689:
-	mov	r3, #0
-	str	r3, [r4, #36]
-	b	.L2680
-.L2690:
-	ldr	r2, [r6, #1756]
-	ldr	r3, [r4, #24]
-	str	r2, [r3, r8, asl #2]
-.L2683:
+	str	r3, [r5, #-3612]
+.L2619:
 	mov	r0, #0
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2699:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2621:
+	cmp	r2, #0
+	strhne	r8, [r4, #40]	@ movhi
+	cmp	r3, #1
+	cmpne	r2, #256
+	beq	.L2625
+	ldr	r3, [r4, #36]
+	cmp	r3, #0
+	beq	.L2626
+.L2625:
+	mov	r3, #0
+	str	r3, [r4, #36]
+	b	.L2616
+.L2626:
+	ldr	r2, [r5, #1764]
+	ldr	r3, [r4, #24]
+	str	r2, [r3, r9, lsl #2]
+	b	.L2619
+.L2635:
 	.align	2
-.L2698:
+.L2634:
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2390
+	.word	.LANCHOR0+2392
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2398
-	.word	.LANCHOR2+1752
+	.word	.LANCHOR2+1760
 	.word	.LC134
 	.word	.LC135
 	.fnend
 	.size	FtlMapWritePage, .-FtlMapWritePage
 	.align	2
 	.global	flush_l2p_region
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	flush_l2p_region, %function
 flush_l2p_region:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
 	mov	r4, #12
-	ldr	r5, .L2702
+	ldr	r5, .L2638
 	mul	r4, r4, r0
+	ldr	r3, [r5, #-3376]
 	sub	r0, r5, #432
-	ldr	r3, [r5, #-3380]
 	add	r2, r3, r4
 	ldrh	r1, [r3, r4]
 	ldr	r2, [r2, #8]
 	bl	FtlMapWritePage
-	ldr	r3, [r5, #-3380]
+	ldr	r3, [r5, #-3376]
 	mov	r0, #0
 	add	r4, r3, r4
 	ldr	r3, [r4, #4]
 	bic	r3, r3, #-2147483648
 	str	r3, [r4, #4]
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L2703:
+	pop	{r4, r5, r6, pc}
+.L2639:
 	.align	2
-.L2702:
+.L2638:
 	.word	.LANCHOR2
 	.fnend
 	.size	flush_l2p_region, .-flush_l2p_region
 	.align	2
 	.global	FtlMapTblRecovery
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlMapTblRecovery, %function
 FtlMapTblRecovery:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 24
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.pad #28
 	sub	sp, sp, #28
-	ldr	r3, [r0, #16]
+	ldr	r3, [r0, #24]
 	mov	r4, r0
-	ldrh	r10, [r0, #6]
 	mov	r1, #0
-	ldr	r8, [r0, #24]
+	mov	r7, #0
+	ldr	r5, .L2682
+	str	r3, [sp]
+	ldr	r3, [r0, #16]
+	ldr	r8, [r0, #12]
+	ldr	fp, .L2682+4
 	str	r3, [sp, #12]
+	ldrh	r3, [r0, #6]
+	str	r3, [sp, #4]
 	ldrh	r3, [r0, #8]
-	mov	r2, r10, asl #2
-	ldr	r9, [r0, #12]
-	mov	r0, r8
+	ldr	r0, [sp]
 	str	r3, [sp, #8]
+	ldr	r3, [sp, #4]
+	lsl	r2, r3, #2
 	bl	ftl_memset
-	ldr	r1, .L2747
-	mov	r2, #1
-	str	r2, [r4, #36]
-	ldr	r3, [r1, #-524]
-	mov	r5, r1
-	ldr	r6, [r1, #-500]
-	mov	r7, r1
-	str	r3, [r1, #1760]
+	ldr	r3, [r5, #-524]
+	ldr	r6, [r5, #-500]
+	str	r7, [r4, #32]
+	str	r3, [r5, #1768]
 	mvn	r3, #0
-	str	r6, [r1, #1764]
+	str	r6, [r5, #1772]
 	strh	r3, [r4]	@ movhi
 	strh	r3, [r4, #2]	@ movhi
-	mov	r3, #0
-	str	r3, [r4, #32]
-	str	r3, [r4, #28]
-	str	r3, [sp, #4]
-.L2705:
-	ldrh	r3, [sp, #4]
-	ldr	r2, [sp, #8]
-	sxth	fp, r3
-	cmp	fp, r2
-	bge	.L2723
-	ldr	r2, [sp, #8]
-	sub	r2, r2, #1
-	cmp	fp, r2
-	mov	r2, fp, asl #1
-	bne	.L2706
-	ldrh	r0, [r9, r2]
+	mov	r3, #1
+	str	r7, [r4, #28]
+	str	r3, [r4, #36]
+.L2641:
+	ldr	r3, [sp, #8]
+	sxth	r10, r7
+	cmp	r10, r3
+	bge	.L2660
+	ldr	r3, [sp, #8]
+	sub	r3, r3, #1
+	cmp	r10, r3
+	lsl	r3, r10, #1
+	bne	.L2642
+	ldrh	r0, [r8, r3]
 	mov	r1, #1
-	str	r3, [sp, #8]
-	add	r3, r9, r2
-	str	r3, [sp, #4]
+	add	r9, r8, r3
+	mov	r8, #0
 	bl	FtlGetLastWrittenPage
-	mov	r7, #0
-	ldr	r3, [sp, #8]
-	add	r2, r0, #1
-	strh	r2, [r4, #2]	@ movhi
-	sxth	r0, r0
-	add	r9, r0, #1
-	strh	r3, [r4]	@ movhi
-	ldr	r3, [sp, #12]
-	ldr	r3, [r3, fp, asl #2]
-	ldr	fp, .L2747
-	str	r3, [r4, #28]
-.L2707:
-	sxth	r3, r7
-	cmp	r3, r9
-	bge	.L2723
-	ldr	r2, [sp, #4]
-	mov	r1, #1
-	ldr	r0, .L2747+4
-	ldrh	r2, [r2]
-	orr	r3, r3, r2, asl #10
-	mov	r2, r1
-	str	r3, [r5, #1756]
-	bl	FlashReadPages
-	ldr	r3, .L2747+8
-	ldrb	r3, [r3]	@ zero_extendqisi2
-	cmp	r3, #0
-	beq	.L2708
-	ldr	r3, [fp, #1764]
-	ldr	r3, [r3, #12]
-	cmp	r3, #0
-	beq	.L2708
-	ldr	r2, .L2747+12
-	ldr	r0, [fp, #1760]
+	sxth	r3, r0
+	strh	r7, [r4]	@ movhi
+	add	r0, r0, #1
+	ldr	r7, .L2682+8
 	str	r3, [sp, #8]
-	ldrh	r1, [r2]
-	bl	js_hash
+	ldr	r3, [sp, #12]
+	strh	r0, [r4, #2]	@ movhi
+	add	fp, r7, #2400
+	ldr	r3, [r3, r10, lsl #2]
+	ldr	r10, .L2682+12
+	str	r3, [r4, #28]
+.L2643:
 	ldr	r3, [sp, #8]
-	cmp	r3, r0
-	mvnne	r3, #0
-	strne	r3, [fp, #1752]
-.L2708:
-	ldr	r3, [fp, #1752]
-	cmn	r3, #1
-	beq	.L2709
-	ldrh	r3, [r6, #8]
-	cmp	r3, r10
-	bcs	.L2709
-	ldrh	r2, [r4, #4]
-	ldrh	r1, [r6]
-	cmp	r1, r2
-	ldreq	r2, [fp, #1756]
-	streq	r2, [r8, r3, asl #2]
-.L2709:
-	add	r7, r7, #1
-	b	.L2707
-.L2723:
+	sxth	r2, r8
+	add	r1, r3, #1
+	cmp	r2, r1
+	blt	.L2646
+.L2660:
 	mov	r0, r4
 	bl	ftl_free_no_use_map_blk
-	ldr	r1, .L2747+8
-	movw	r3, #2390
+	ldr	r1, .L2682+8
+	movw	r3, #2392
 	ldrh	r2, [r4, #2]
 	ldrh	r3, [r1, r3]
 	cmp	r2, r3
-	bne	.L2712
+	bne	.L2648
 	mov	r0, r4
 	bl	ftl_map_blk_alloc_new_blk
-	b	.L2712
-.L2706:
-	ldr	r3, [r5, #-524]
-	mov	r1, #1
-	ldr	fp, .L2747+16
-	ldr	r0, .L2747+4
-	str	r3, [r5, #1760]
-	add	r3, r9, r2
-	ldrh	r2, [r9, r2]
-	str	r3, [sp, #16]
-	ldrh	r3, [fp]
-	sub	r3, r3, #1
-	orr	r3, r3, r2, asl #10
-	mov	r2, r1
-	str	r3, [r5, #1756]
-	bl	FlashReadPages
-	ldr	r3, [r5, #1752]
-	cmn	r3, #1
-	mov	r3, fp
-	beq	.L2725
-	ldrh	r1, [r6]
-	ldrh	r2, [r4, #4]
-	cmp	r1, r2
-	bne	.L2725
-	ldrh	r1, [r6, #8]
-	movw	r2, #64245
-	cmp	r1, r2
-	bne	.L2725
-	mov	r0, #0
-	mov	lr, #8
-	mov	fp, #4
-.L2714:
-	uxth	r2, r0
-	ldrh	ip, [r3]
-	sxth	r1, r2
-	sub	ip, ip, #1
-	cmp	r1, ip
-	bge	.L2717
-	ldr	ip, [r5, #-524]
-	add	r0, r0, #1
-	ldr	r1, [ip, r1, asl #3]
-	uxth	r1, r1
-	cmp	r1, r10
-	smlabbcc	r2, r2, lr, fp
-	ldrcc	r2, [ip, r2]
-	strcc	r2, [r8, r1, asl #2]
-	b	.L2714
-.L2725:
-	mov	fp, #0
-.L2745:
-	ldr	r3, .L2747+16
-	sxth	r2, fp
-	ldrh	r1, [r3]
-	cmp	r2, r1
-	bge	.L2717
-	str	r3, [sp, #20]
-	ldr	r3, [sp, #16]
-	ldr	r0, .L2747+4
-	ldrh	r1, [r3]
-	orr	r2, r2, r1, asl #10
-	mov	r1, #1
-	str	r2, [r7, #1756]
-	mov	r2, r1
-	bl	FlashReadPages
-	ldr	r3, .L2747+8
-	ldrb	r2, [r3]	@ zero_extendqisi2
-	cmp	r2, #0
-	ldr	r3, [sp, #20]
-	beq	.L2718
-	ldr	r2, [r7, #1764]
-	ldr	r2, [r2, #12]
-	cmp	r2, #0
-	beq	.L2718
-	ldrh	r1, [r3, #8]
-	ldr	r0, [r7, #1760]
-	str	r2, [sp, #20]
-	bl	js_hash
-	ldr	r2, [sp, #20]
-	cmp	r2, r0
-	mvnne	r3, #0
-	strne	r3, [r7, #1752]
-.L2718:
-	ldr	r3, .L2747
-	ldr	r3, [r3, #1752]
-	cmn	r3, #1
-	beq	.L2719
-	ldrh	r3, [r6, #8]
-	cmp	r3, r10
-	bcs	.L2719
-	ldrh	r2, [r4, #4]
-	ldrh	r1, [r6]
-	cmp	r1, r2
-	ldreq	r2, [r7, #1756]
-	streq	r2, [r8, r3, asl #2]
-.L2719:
-	add	fp, fp, #1
-	b	.L2745
-.L2717:
-	ldr	r3, [sp, #4]
-	add	r3, r3, #1
-	str	r3, [sp, #4]
-	b	.L2705
-.L2712:
+.L2648:
 	mov	r0, r4
 	bl	ftl_map_blk_gc
 	mov	r0, r4
@@ -16276,54 +16611,199 @@
 	mov	r0, #0
 	add	sp, sp, #28
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2748:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2646:
+	ldrh	r1, [r9]
+	mov	r0, r10
+	orr	r2, r2, r1, lsl #10
+	str	r2, [r5, #1764]
+	mov	r2, #1
+	mov	r1, r2
+	bl	FlashReadPages
+	ldrb	r2, [r7, #36]	@ zero_extendqisi2
+	cmp	r2, #0
+	beq	.L2644
+	ldr	r2, [r5, #1772]
+	ldr	r2, [r2, #12]
+	cmp	r2, #0
+	str	r2, [sp, #12]
+	beq	.L2644
+	ldrh	r1, [fp]
+	ldr	r0, [r5, #1768]
+	bl	js_hash
+	ldr	r2, [sp, #12]
+	cmp	r2, r0
+	mvnne	r2, #0
+	strne	r2, [r5, #1760]
+.L2644:
+	ldr	r1, .L2682
+	ldr	r2, [r1, #1760]
+	cmn	r2, #1
+	beq	.L2645
+	ldrh	r2, [r6, #8]
+	ldr	r3, [sp, #4]
+	cmp	r3, r2
+	bls	.L2645
+	ldrh	ip, [r6]
+	ldrh	r0, [r4, #4]
+	cmp	ip, r0
+	ldreq	r1, [r1, #1764]
+	ldreq	r3, [sp]
+	streq	r1, [r3, r2, lsl #2]
+.L2645:
+	add	r8, r8, #1
+	b	.L2643
+.L2642:
+	ldr	r2, [r5, #-524]
+	ldr	r0, .L2682+12
+	str	r2, [r5, #1768]
+	add	r2, r8, r3
+	str	r2, [sp, #16]
+	ldrh	r2, [r8, r3]
+	ldrh	r3, [fp]
+	sub	r3, r3, #1
+	orr	r3, r3, r2, lsl #10
+	mov	r2, #1
+	mov	r1, r2
+	str	r3, [r5, #1764]
+	bl	FlashReadPages
+	ldr	r3, [r5, #1760]
+	cmn	r3, #1
+	beq	.L2662
+	ldrh	r2, [r6]
+	ldrh	r3, [r4, #4]
+	cmp	r2, r3
+	bne	.L2662
+	ldrh	r2, [r6, #8]
+	movw	r3, #64245
+	cmp	r2, r3
+	beq	.L2650
+.L2662:
+	ldr	r9, .L2682
+	mov	r10, #0
+.L2651:
+	ldrh	r2, [fp]
+	sxth	r3, r10
+	cmp	r3, r2
+	bge	.L2658
+	ldr	r2, [sp, #16]
+	ldr	r0, .L2682+12
+	ldrh	r2, [r2]
+	orr	r3, r3, r2, lsl #10
+	mov	r2, #1
+	mov	r1, r2
+	str	r3, [r9, #1764]
+	bl	FlashReadPages
+	ldr	r3, .L2682+8
+	ldrb	r3, [r3, #36]	@ zero_extendqisi2
+	cmp	r3, #0
+	beq	.L2655
+	ldr	r3, [r9, #1772]
+	ldr	r3, [r3, #12]
+	cmp	r3, #0
+	str	r3, [sp, #20]
+	beq	.L2655
+	ldr	r2, .L2682+16
+	ldr	r0, [r9, #1768]
+	ldrh	r1, [r2]
+	bl	js_hash
+	ldr	r3, [sp, #20]
+	cmp	r3, r0
+	mvnne	r3, #0
+	strne	r3, [r9, #1760]
+.L2655:
+	ldr	r3, [r9, #1760]
+	cmn	r3, #1
+	beq	.L2656
+	ldrh	r3, [r6, #8]
+	ldr	r2, [sp, #4]
+	cmp	r2, r3
+	bls	.L2656
+	ldrh	r1, [r6]
+	ldrh	r2, [r4, #4]
+	cmp	r1, r2
+	ldreq	r2, [r9, #1764]
+	ldreq	r1, [sp]
+	streq	r2, [r1, r3, lsl #2]
+.L2656:
+	add	r10, r10, #1
+	b	.L2651
+.L2650:
+	mov	r1, #0
+	mov	ip, #4
+.L2652:
+	ldrh	r2, [fp]
+	sxth	r3, r1
+	sub	r2, r2, #1
+	cmp	r3, r2
+	blt	.L2654
+.L2658:
+	add	r7, r7, #1
+	b	.L2641
+.L2654:
+	ldr	r0, [r5, #-524]
+	add	r1, r1, #1
+	ldr	r9, [sp, #4]
+	ldr	r2, [r0, r3, lsl #3]
+	uxth	lr, r2
+	cmp	r9, lr
+	addhi	r3, ip, r3, lsl #3
+	movhi	r2, lr
+	ldrhi	r3, [r0, r3]
+	ldrhi	r0, [sp]
+	strhi	r3, [r0, r2, lsl #2]
+	b	.L2652
+.L2683:
 	.align	2
-.L2747:
+.L2682:
 	.word	.LANCHOR2
-	.word	.LANCHOR2+1752
+	.word	.LANCHOR0+2392
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2398
-	.word	.LANCHOR0+2390
+	.word	.LANCHOR2+1760
+	.word	.LANCHOR0+2400
 	.fnend
 	.size	FtlMapTblRecovery, .-FtlMapTblRecovery
 	.align	2
 	.global	FtlLoadVonderInfo
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlLoadVonderInfo, %function
 FtlLoadVonderInfo:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r2, .L2751
-	movw	r1, #2408
-	stmfd	sp!, {r3, lr}
-	.save {r3, lr}
-	ldr	r3, .L2751+4
+	ldr	r2, .L2686
+	movw	r1, #2412
+	ldr	r3, .L2686+4
+	push	{r4, lr}
+	.save {r4, lr}
 	ldrh	r1, [r2, r1]
 	add	r0, r3, #1792
+	add	r0, r0, #8
 	strh	r1, [r0, #10]	@ movhi
-	ldr	r1, .L2751+8
+	ldr	r1, .L2686+8
 	strh	r1, [r0, #4]	@ movhi
-	movw	r1, #2434
+	movw	r1, #2438
 	ldrh	r1, [r2, r1]
 	strh	r1, [r0, #8]	@ movhi
-	movw	r1, #2410
+	movw	r1, #2414
 	ldrh	r1, [r2, r1]
-	ldr	r2, [r2, #2436]
+	ldr	r2, [r2, #2440]
 	strh	r1, [r0, #6]	@ movhi
-	str	r2, [r3, #1804]
-	ldr	r2, [r3, #-460]
-	str	r2, [r3, #1808]
-	ldr	r2, [r3, #-464]
 	str	r2, [r3, #1812]
-	ldr	r2, [r3, #-456]
+	ldr	r2, [r3, #-460]
 	str	r2, [r3, #1816]
+	ldr	r2, [r3, #-464]
+	str	r2, [r3, #1820]
+	ldr	r2, [r3, #-456]
+	str	r2, [r3, #1824]
 	bl	FtlMapTblRecovery
 	mov	r0, #0
-	ldmfd	sp!, {r3, pc}
-.L2752:
+	pop	{r4, pc}
+.L2687:
 	.align	2
-.L2751:
+.L2686:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.word	-3962
@@ -16331,237 +16811,241 @@
 	.size	FtlLoadVonderInfo, .-FtlLoadVonderInfo
 	.align	2
 	.global	FtlLoadMapInfo
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlLoadMapInfo, %function
 FtlLoadMapInfo:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, lr}
-	.save {r3, lr}
+	push	{r4, lr}
+	.save {r4, lr}
 	bl	FtlL2PDataInit
-	ldr	r0, .L2755
+	ldr	r0, .L2690
 	bl	FtlMapTblRecovery
 	mov	r0, #0
-	ldmfd	sp!, {r3, pc}
-.L2756:
+	pop	{r4, pc}
+.L2691:
 	.align	2
-.L2755:
+.L2690:
 	.word	.LANCHOR2-432
 	.fnend
 	.size	FtlLoadMapInfo, .-FtlLoadMapInfo
 	.align	2
 	.global	FtlVendorPartWrite
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlVendorPartWrite, %function
 FtlVendorPartWrite:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 56
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L2768
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	r3, .L2702
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	mov	r10, r2
-	movw	r2, #2396
-	mov	r6, r0
-	ldrh	r5, [r3, r2]
-	add	r3, r3, #2384
-	add	r2, r0, r1
+	movw	r2, #2386
+	mov	r5, r1
+	add	r1, r0, r1
 	.pad #60
 	sub	sp, sp, #60
-	ldrh	r3, [r3]
-	mov	r4, r1
-	cmp	r2, r3
-	mvnhi	r0, #0
-	bhi	.L2758
-	ldr	fp, .L2768+4
-	mov	r5, r6, lsr r5
-	mov	r3, r5, asl #2
-	str	r3, [sp, #4]
-	mov	r7, fp
-	mov	r3, #0
-	str	r3, [sp]
-.L2759:
-	cmp	r4, #0
-	beq	.L2767
-	ldr	r2, [sp, #4]
-	mov	r0, r6
-	ldr	r3, [fp, #-456]
-	ldr	ip, [r3, r2]
-	ldr	r3, .L2768+8
-	str	ip, [sp, #12]
-	ldrh	r2, [r3]
-	mov	r1, r2
-	str	r2, [sp, #8]
-	bl	__aeabi_uidivmod
-	ldr	r2, [sp, #8]
-	mov	r8, r1
-	ldr	ip, [sp, #12]
-	rsb	r3, r1, r2
-	uxth	r9, r3
-	cmp	r9, r4
-	uxthhi	r9, r4
-	cmp	r9, r2
-	cmpne	ip, #0
-	movne	r1, #1
-	moveq	r1, #0
-	beq	.L2761
-	ldr	r2, [r7, #-516]
-	mov	r1, #1
-	add	r0, sp, #20
-	str	ip, [sp, #24]
-	str	r2, [sp, #28]
-	mov	r2, #0
-	str	r2, [sp, #32]
-	mov	r2, r1
-	bl	FlashReadPages
-	b	.L2762
-.L2761:
-	ldr	r2, .L2768+12
-	ldr	r0, [r7, #-516]
-	ldrh	r2, [r2]
-	bl	ftl_memset
-.L2762:
-	mov	ip, r9, asl #9
-	ldr	r0, [r7, #-516]
-	uxth	r8, r8
-	mov	r1, r10
-	mov	r2, ip
-	str	ip, [sp, #8]
-	add	r0, r0, r8, asl #9
-	rsb	r4, r9, r4
-	bl	ftl_memcpy
-	mov	r1, r5
-	ldr	r0, .L2768+16
-	add	r5, r5, #1
-	ldr	r2, [r7, #-516]
-	add	r6, r6, r9
-	bl	FtlMapWritePage
-	ldr	r3, [sp]
-	cmn	r0, #1
-	ldr	ip, [sp, #8]
-	mvneq	r3, #0
-	str	r3, [sp]
-	add	r10, r10, ip
-	ldr	r3, [sp, #4]
-	add	r3, r3, #4
-	str	r3, [sp, #4]
-	b	.L2759
-.L2767:
-	ldr	r0, [sp]
-.L2758:
+	ldrh	r2, [r3, r2]
+	cmp	r1, r2
+	mvnhi	r9, #0
+	bhi	.L2692
+	movw	r2, #2398
+	ldr	r8, .L2702+4
+	ldrh	r6, [r3, r2]
+	mov	r7, r0
+	mov	r9, #0
+	lsr	r6, r0, r6
+	lsl	fp, r6, #2
+.L2694:
+	cmp	r5, #0
+	bne	.L2699
+.L2692:
+	mov	r0, r9
 	add	sp, sp, #60
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2769:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2699:
+	ldr	r3, [r8, #-456]
+	mov	r0, r7
+	ldr	r2, [r3, fp]
+	ldr	r3, .L2702+8
+	str	r2, [sp, #12]
+	ldrh	r3, [r3]
+	mov	r1, r3
+	str	r3, [sp, #8]
+	bl	__aeabi_uidivmod
+	ldr	r3, [sp, #8]
+	ldr	r2, [sp, #12]
+	str	r1, [sp, #4]
+	sub	r4, r3, r1
+	uxth	r4, r4
+	cmp	r5, r4
+	uxthcc	r4, r5
+	cmp	r2, #0
+	cmpne	r4, r3
+	movne	r1, #1
+	moveq	r1, #0
+	beq	.L2696
+	ldr	r3, [r8, #-516]
+	add	r0, sp, #20
+	str	r2, [sp, #24]
+	mov	r2, #1
+	mov	r1, r2
+	str	r3, [sp, #28]
+	mov	r3, #0
+	str	r3, [sp, #32]
+	bl	FlashReadPages
+.L2697:
+	lsl	r3, r4, #9
+	ldr	r0, [r8, #-516]
+	mov	r1, r10
+	mov	r2, r3
+	str	r3, [sp, #8]
+	ldr	r3, [sp, #4]
+	sub	r5, r5, r4
+	add	r7, r7, r4
+	add	fp, fp, #4
+	add	r0, r0, r3, lsl #9
+	bl	ftl_memcpy
+	mov	r1, r6
+	ldr	r2, [r8, #-516]
+	ldr	r0, .L2702+12
+	add	r6, r6, #1
+	bl	FtlMapWritePage
+	ldr	r3, [sp, #8]
+	cmn	r0, #1
+	mvneq	r9, #0
+	add	r10, r10, r3
+	b	.L2694
+.L2696:
+	ldr	r3, .L2702+16
+	ldr	r0, [r8, #-516]
+	ldrh	r2, [r3]
+	bl	ftl_memset
+	b	.L2697
+.L2703:
 	.align	2
-.L2768:
+.L2702:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2394
-	.word	.LANCHOR0+2398
-	.word	.LANCHOR2+1792
+	.word	.LANCHOR0+2396
+	.word	.LANCHOR2+1800
+	.word	.LANCHOR0+2400
 	.fnend
 	.size	FtlVendorPartWrite, .-FtlVendorPartWrite
 	.align	2
 	.global	Ftl_save_ext_data
+	.syntax unified
+	.arm
+	.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, .L2772
-	ldr	r3, .L2772+4
-	ldr	r1, [r2, #-3232]
-	cmp	r1, r3
+	ldr	r3, .L2706
+	ldr	r2, .L2706+4
+	ldr	r1, [r3, #-3236]
+	cmp	r1, r2
 	bxne	lr
-	ldr	r3, .L2772+8
-	mov	r0, #0
+	ldr	r2, .L2706+8
 	mov	r1, #1
-	sub	r2, r2, #3232
-	str	r3, [r2, #4]
-	ldr	r3, [r2, #-108]
-	str	r3, [r2, #88]
-	ldr	r3, [r2, #-104]
-	str	r3, [r2, #92]
-	ldr	r3, [r2, #-112]
-	str	r3, [r2, #8]
-	ldr	r3, [r2, #-124]
-	str	r3, [r2, #12]
-	ldr	r3, [r2, #-132]
-	str	r3, [r2, #16]
-	ldr	r3, [r2, #-116]
-	str	r3, [r2, #20]
-	ldr	r3, [r2, #-88]
-	str	r3, [r2, #28]
-	ldr	r3, [r2, #-372]
-	str	r3, [r2, #32]
-	ldr	r3, [r2, #-128]
-	str	r3, [r2, #36]
-	ldr	r3, [r2, #-120]
-	str	r3, [r2, #40]
-	ldr	r3, [r2, #-80]
-	str	r3, [r2, #44]
-	ldr	r3, [r2, #-76]
-	str	r3, [r2, #48]
-	ldr	r3, [r2, #-4]
-	str	r3, [r2, #60]
-	ldr	r3, [r2, #2668]
-	str	r3, [r2, #64]
+	mov	r0, #0
+	str	r2, [r3, #-3232]
+	ldr	r2, [r3, #-3340]
+	str	r2, [r3, #-3148]
+	ldr	r2, [r3, #-3336]
+	str	r2, [r3, #-3144]
+	ldr	r2, [r3, #-3344]
+	str	r2, [r3, #-3228]
+	ldr	r2, [r3, #-3356]
+	str	r2, [r3, #-3224]
+	ldr	r2, [r3, #-3364]
+	str	r2, [r3, #-3220]
+	ldr	r2, [r3, #-3348]
+	str	r2, [r3, #-3216]
+	ldr	r2, [r3, #-3320]
+	str	r2, [r3, #-3208]
+	ldr	r2, [r3, #-3600]
+	str	r2, [r3, #-3204]
+	ldr	r2, [r3, #-3360]
+	str	r2, [r3, #-3200]
+	ldr	r2, [r3, #-3352]
+	str	r2, [r3, #-3196]
+	ldr	r2, [r3, #-3312]
+	str	r2, [r3, #-3192]
+	ldr	r2, [r3, #-3308]
+	str	r2, [r3, #-3188]
+	ldr	r2, [r3, #-2724]
+	str	r2, [r3, #-3176]
+	ldr	r2, [r3, #-564]
+	str	r2, [r3, #-3172]
+	ldr	r2, .L2706+12
 	b	FtlVendorPartWrite
-.L2773:
+.L2707:
 	.align	2
-.L2772:
+.L2706:
 	.word	.LANCHOR2
 	.word	1179929683
 	.word	1342177379
+	.word	.LANCHOR2-3236
 	.fnend
 	.size	Ftl_save_ext_data, .-Ftl_save_ext_data
 	.align	2
 	.global	FtlEctTblFlush
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlEctTblFlush, %function
 FtlEctTblFlush:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, lr}
-	.save {r3, lr}
-	ldr	r3, .L2782
-	ldr	r3, [r3, #2244]
+	ldr	r3, .L2718
+	ldr	r3, [r3, #2248]
 	cmp	r3, #0
-	ldr	r3, .L2782+4
+	ldr	r3, .L2718+4
 	moveq	r2, #32
-	beq	.L2775
+	beq	.L2709
 	ldr	r2, [r3, #-3308]
 	cmp	r2, #39
 	movhi	r2, #32
 	movls	r2, #4
-.L2775:
-	movw	ip, #1836
+.L2709:
+	movw	ip, #1844
 	ldrh	r1, [r3, ip]
 	cmp	r1, #31
 	addls	r1, r1, #1
-	ldrls	r2, .L2782+4
-	strlsh	r1, [r2, ip]	@ movhi
 	movls	r2, #1
+	strhls	r1, [r3, ip]	@ movhi
 	cmp	r0, #0
-	bne	.L2777
+	bne	.L2711
 	ldr	r1, [r3, #-480]
 	ldr	r0, [r1, #20]
 	ldr	r1, [r1, #16]
 	add	r2, r2, r0
 	cmp	r1, r2
-	bcc	.L2778
-.L2777:
-	ldr	r2, [r3, #-480]
+	bcc	.L2716
+.L2711:
+	push	{r4, lr}
+	.save {r4, lr}
 	mov	r0, #64
+	ldr	r2, [r3, #-480]
 	ldr	r1, [r2, #16]
 	str	r1, [r2, #20]
-	ldr	r1, .L2782+8
+	ldr	r1, .L2718+8
 	str	r1, [r2]
 	ldr	r2, [r3, #-480]
-	ldr	r3, .L2782+12
+	ldr	r3, .L2718+12
 	ldrh	r1, [r3]
-	mov	r3, r1, asl #9
+	lsl	r3, r1, #9
 	str	r3, [r2, #12]
 	ldr	r3, [r2, #8]
 	add	r3, r3, #1
@@ -16570,12 +17054,14 @@
 	str	r3, [r2, #4]
 	bl	FtlVendorPartWrite
 	bl	Ftl_save_ext_data
-.L2778:
 	mov	r0, #0
-	ldmfd	sp!, {r3, pc}
-.L2783:
+	pop	{r4, pc}
+.L2716:
+	mov	r0, #0
+	bx	lr
+.L2719:
 	.align	2
-.L2782:
+.L2718:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.word	1112818501
@@ -16584,404 +17070,411 @@
 	.size	FtlEctTblFlush, .-FtlEctTblFlush
 	.align	2
 	.global	FtlVendorPartRead
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlVendorPartRead, %function
 FtlVendorPartRead:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 56
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	r3, .L2731
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	movw	r3, #2396
-	ldr	r4, .L2796
-	mov	r8, r2
-	add	r2, r0, r1
-	mov	r7, r0
+	mov	r10, r2
+	movw	r2, #2386
+	mov	r6, r1
+	add	r1, r0, r1
 	.pad #60
 	sub	sp, sp, #60
-	mov	r6, r1
-	ldrh	r5, [r4, r3]
-	add	r4, r4, #2384
-	ldrh	r3, [r4]
-	cmp	r2, r3
-	mvnhi	r0, #0
-	bhi	.L2785
-	ldr	r9, .L2796+4
-	mov	r5, r7, lsr r5
-	mov	r3, r5, asl #2
-	str	r3, [sp, #4]
-	mov	r10, r9
-	mov	r3, #0
-	str	r3, [sp]
-.L2786:
+	ldrh	r2, [r3, r2]
+	cmp	r1, r2
+	mvnhi	r9, #0
+	bhi	.L2720
+	movw	r2, #2398
+	ldr	r8, .L2731+4
+	ldrh	r5, [r3, r2]
+	mov	r7, r0
+	mov	r9, #0
+	lsr	r5, r0, r5
+	lsl	fp, r5, #2
+.L2722:
 	cmp	r6, #0
-	beq	.L2795
-	ldr	r2, [sp, #4]
+	bne	.L2728
+.L2720:
+	mov	r0, r9
+	add	sp, sp, #60
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2728:
+	ldr	r3, [r8, #-456]
 	mov	r0, r7
-	ldr	r3, [r9, #-456]
-	ldr	r3, [r3, r2]
-	str	r3, [sp, #12]
-	ldr	r3, .L2796+8
+	ldr	r3, [r3, fp]
+	str	r3, [sp, #8]
+	ldr	r3, .L2731+8
 	ldrh	r4, [r3]
 	mov	r1, r4
 	bl	__aeabi_uidivmod
-	rsb	r4, r1, r4
-	ldr	r3, [sp, #12]
-	str	r1, [sp, #8]
+	sub	r4, r4, r1
+	ldr	r3, [sp, #8]
 	uxth	r4, r4
-	cmp	r4, r6
-	uxthhi	r4, r6
+	str	r1, [sp, #4]
+	cmp	r6, r4
+	uxthcc	r4, r6
 	cmp	r3, #0
-	mov	fp, r4, asl #9
-	beq	.L2788
-	ldr	r2, [r10, #-516]
-	mov	r1, #1
+	lsl	r2, r4, #9
+	str	r2, [sp, #8]
+	beq	.L2724
+	ldr	r2, [r8, #-516]
 	add	r0, sp, #20
 	str	r3, [sp, #24]
 	str	r3, [sp, #12]
 	str	r2, [sp, #28]
 	mov	r2, #0
 	str	r2, [sp, #32]
-	mov	r2, r1
+	mov	r2, #1
+	mov	r1, r2
 	bl	FlashReadPages
 	ldr	r2, [sp, #20]
-	ldr	r3, [sp]
-	cmn	r2, #1
-	ldr	r2, [r10, #1752]
-	mvneq	r3, #0
-	cmp	r2, #256
-	str	r3, [sp]
 	ldr	r3, [sp, #12]
-	bne	.L2790
-	mov	r1, r5
+	cmn	r2, #1
+	ldr	r2, [r8, #1760]
+	mvneq	r9, #0
+	cmp	r2, #256
+	bne	.L2726
 	mov	r2, r3
-	ldr	r0, .L2796+12
-	bl	printk
-	ldr	r0, .L2796+16
 	mov	r1, r5
-	ldr	r2, [r9, #-516]
+	ldr	r0, .L2731+12
+	bl	printk
+	ldr	r2, [r8, #-516]
+	mov	r1, r5
+	ldr	r0, .L2731+16
 	bl	FtlMapWritePage
-.L2790:
-	ldrh	r3, [sp, #8]
-	mov	r0, r8
-	ldr	r1, [r10, #-516]
-	mov	r2, fp
-	add	r1, r1, r3, asl #9
-	bl	ftl_memcpy
-	b	.L2791
-.L2788:
-	mov	r0, r8
-	mov	r1, r3
-	mov	r2, fp
-	bl	ftl_memset
-.L2791:
+.L2726:
+	ldr	r1, [r8, #-516]
+	lsl	r2, r4, #9
 	ldr	r3, [sp, #4]
+	mov	r0, r10
+	add	r1, r1, r3, lsl #9
+	bl	ftl_memcpy
+.L2727:
+	ldr	r3, [sp, #8]
 	add	r5, r5, #1
-	rsb	r6, r4, r6
+	sub	r6, r6, r4
 	add	r7, r7, r4
-	add	r3, r3, #4
-	add	r8, r8, fp
-	str	r3, [sp, #4]
-	b	.L2786
-.L2795:
-	ldr	r0, [sp]
-.L2785:
-	add	sp, sp, #60
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2797:
+	add	fp, fp, #4
+	add	r10, r10, r3
+	b	.L2722
+.L2724:
+	lsl	r2, r4, #9
+	mov	r1, r3
+	mov	r0, r10
+	bl	ftl_memset
+	b	.L2727
+.L2732:
 	.align	2
-.L2796:
+.L2731:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2394
+	.word	.LANCHOR0+2396
 	.word	.LC136
-	.word	.LANCHOR2+1792
+	.word	.LANCHOR2+1800
 	.fnend
 	.size	FtlVendorPartRead, .-FtlVendorPartRead
 	.align	2
 	.global	FtlLoadEctTbl
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlLoadEctTbl, %function
 FtlLoadEctTbl:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
 	mov	r0, #64
-	ldr	r4, .L2801
+	ldr	r4, .L2736
 	sub	r5, r4, #488
 	ldr	r2, [r4, #-480]
 	ldrh	r1, [r5]
 	bl	FtlVendorPartRead
 	ldr	r3, [r4, #-480]
 	ldr	r2, [r3]
-	ldr	r3, .L2801+4
+	ldr	r3, .L2736+4
 	cmp	r2, r3
-	beq	.L2799
-	ldr	r1, .L2801+8
-	ldr	r0, .L2801+12
+	beq	.L2734
+	ldr	r1, .L2736+8
+	ldr	r0, .L2736+12
 	bl	printk
 	ldrh	r2, [r5]
-	ldr	r0, [r4, #-480]
 	mov	r1, #0
-	mov	r2, r2, asl #9
+	ldr	r0, [r4, #-480]
+	lsl	r2, r2, #9
 	bl	ftl_memset
-.L2799:
+.L2734:
 	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L2802:
+	pop	{r4, r5, r6, pc}
+.L2737:
 	.align	2
-.L2801:
+.L2736:
 	.word	.LANCHOR2
 	.word	1112818501
 	.word	.LC137
-	.word	.LC76
+	.word	.LC77
 	.fnend
 	.size	FtlLoadEctTbl, .-FtlLoadEctTbl
 	.align	2
 	.global	Ftl_load_ext_data
+	.syntax unified
+	.arm
+	.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
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	mov	r0, #0
-	ldr	r4, .L2809
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
 	mov	r1, #1
-	ldr	r5, .L2809+4
-	sub	r2, r4, #3232
+	ldr	r4, .L2744
+	mov	r0, #0
+	ldr	r5, .L2744+4
+	sub	r6, r4, #3232
+	sub	r6, r6, #4
+	mov	r2, r6
 	bl	FtlVendorPartRead
-	ldr	r3, [r4, #-3232]
+	ldr	r3, [r4, #-3236]
 	cmp	r3, r5
-	beq	.L2804
-	sub	r0, r4, #3232
-	mov	r1, #0
+	beq	.L2739
 	mov	r2, #512
+	mov	r1, #0
+	mov	r0, r6
 	bl	ftl_memset
-	str	r5, [r4, #-3232]
-.L2804:
-	ldr	r2, [r4, #-3232]
-	ldr	r3, .L2809
-	cmp	r2, r5
-	bne	.L2805
-	ldr	r2, [r3, #-3144]
-	str	r2, [r3, #-3340]
-	ldr	r2, [r3, #-3140]
-	str	r2, [r3, #-3336]
-	ldr	r2, [r3, #-3224]
-	str	r2, [r3, #-3344]
-	ldr	r2, [r3, #-3220]
-	str	r2, [r3, #-3356]
-	ldr	r2, [r3, #-3216]
-	str	r2, [r3, #-3364]
-	ldr	r2, [r3, #-3212]
-	str	r2, [r3, #-3348]
-	ldr	r2, [r3, #-3204]
-	str	r2, [r3, #-3320]
-	ldr	r2, [r3, #-3200]
-	str	r2, [r3, #-3604]
-	ldr	r2, [r3, #-3196]
-	str	r2, [r3, #-3360]
-	ldr	r2, [r3, #-3192]
-	str	r2, [r3, #-3352]
-	ldr	r2, [r3, #-3188]
-	str	r2, [r3, #-3312]
-	ldr	r2, [r3, #-3184]
-	str	r2, [r3, #-3308]
-	ldr	r2, [r3, #-3172]
-	str	r2, [r3, #-3236]
-.L2805:
-	ldr	r1, [r4, #-3164]
+	str	r5, [r4, #-3236]
+.L2739:
+	ldr	r3, [r4, #-3236]
+	cmp	r3, r5
+	bne	.L2740
+	ldr	r3, [r4, #-3148]
+	str	r3, [r4, #-3340]
+	ldr	r3, [r4, #-3144]
+	str	r3, [r4, #-3336]
+	ldr	r3, [r4, #-3228]
+	str	r3, [r4, #-3344]
+	ldr	r3, [r4, #-3224]
+	str	r3, [r4, #-3356]
+	ldr	r3, [r4, #-3220]
+	str	r3, [r4, #-3364]
+	ldr	r3, [r4, #-3216]
+	str	r3, [r4, #-3348]
+	ldr	r3, [r4, #-3208]
+	str	r3, [r4, #-3320]
+	ldr	r3, [r4, #-3204]
+	str	r3, [r4, #-3600]
+	ldr	r3, [r4, #-3200]
+	str	r3, [r4, #-3360]
+	ldr	r3, [r4, #-3196]
+	str	r3, [r4, #-3352]
+	ldr	r3, [r4, #-3192]
+	str	r3, [r4, #-3312]
+	ldr	r3, [r4, #-3188]
+	str	r3, [r4, #-3308]
+	ldr	r3, [r4, #-3176]
+	str	r3, [r4, #-2724]
+.L2740:
+	ldr	r1, [r4, #-3168]
 	mov	r3, #0
-	ldr	r2, .L2809+8
+	ldr	r2, .L2744+8
 	str	r3, [r4, #-564]
+	ldr	r5, .L2744+12
 	cmp	r1, r2
-	ldr	r5, .L2809+12
-	bne	.L2806
-	ldrb	r2, [r5, #144]	@ zero_extendqisi2
+	bne	.L2741
+	ldrb	r2, [r5, #152]	@ zero_extendqisi2
 	cmp	r2, r3
-	beq	.L2807
-	ldr	r2, .L2809
-	str	r3, [r2, #-3164]
+	beq	.L2742
+	str	r3, [r4, #-3168]
 	bl	Ftl_save_ext_data
-	b	.L2806
-.L2807:
-	ldr	r0, .L2809+16
-	mov	r3, #1
-	ldr	r1, .L2809+20
-	str	r3, [r5, #2244]
-	bl	printk
-.L2806:
-	movw	r3, #2380
+.L2741:
+	movw	r3, #2382
 	ldr	r0, [r4, #-3324]
 	ldrh	r2, [r5, r3]
+	movw	r1, #2332
 	ldr	r3, [r4, #-3320]
+	ldrh	r1, [r5, r1]
 	mla	r0, r0, r2, r3
-	movw	r3, #2328
-	ldrh	r1, [r5, r3]
 	bl	__aeabi_uidiv
 	str	r0, [r4, #-3316]
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L2810:
+	pop	{r4, r5, r6, pc}
+.L2742:
+	mov	r3, #1
+	ldr	r1, .L2744+16
+	ldr	r0, .L2744+20
+	str	r3, [r5, #2248]
+	bl	printk
+	b	.L2741
+.L2745:
 	.align	2
-.L2809:
+.L2744:
 	.word	.LANCHOR2
 	.word	1179929683
 	.word	305432421
 	.word	.LANCHOR0
-	.word	.LC76
 	.word	.LC138
+	.word	.LC77
 	.fnend
 	.size	Ftl_load_ext_data, .-Ftl_load_ext_data
 	.align	2
 	.global	FtlMapBlkWriteDumpData
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlMapBlkWriteDumpData, %function
 FtlMapBlkWriteDumpData:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, lr}
+	ldr	r3, [r0, #36]
+	cmp	r3, #0
+	bxeq	lr
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
-	ldr	r2, [r0, #36]
-	ldrh	r5, [r0, #6]
-	cmp	r2, #0
-	ldr	r3, [r0, #24]
-	ldmeqfd	sp!, {r4, r5, r6, pc}
-	ldr	r4, .L2818
 	mov	r2, #0
+	ldr	r4, .L2756
 	str	r2, [r0, #36]
-	ldr	r2, [r4, #-3616]
+	ldr	r2, [r4, #-3612]
+	ldrh	r5, [r0, #6]
+	ldr	r3, [r0, #24]
 	cmp	r2, #0
-	ldmnefd	sp!, {r4, r5, r6, pc}
-	sub	r5, r5, #1
+	popne	{r4, r5, r6, pc}
 	mov	r6, r0
 	ldr	r2, [r4, #-500]
 	ldr	r0, [r4, #-520]
+	sub	r5, r5, #1
 	uxth	r5, r5
-	str	r2, [r4, #1764]
-	str	r0, [r4, #1760]
-	ldr	r3, [r3, r5, asl #2]
+	str	r2, [r4, #1772]
+	str	r0, [r4, #1768]
+	ldr	r3, [r3, r5, lsl #2]
 	cmp	r3, #0
-	str	r3, [r4, #1756]
-	beq	.L2815
-	mov	r1, #1
-	ldr	r0, .L2818+4
-	mov	r2, r1
+	str	r3, [r4, #1764]
+	beq	.L2750
+	mov	r2, #1
+	add	r0, r4, #1760
+	mov	r1, r2
 	bl	FlashReadPages
-	b	.L2816
-.L2815:
-	ldr	r2, .L2818+8
-	movw	r3, #2398
-	mov	r1, #255
-	ldrh	r2, [r2, r3]
-	bl	ftl_memset
-.L2816:
-	mov	r0, r6
+.L2751:
+	ldr	r2, [r4, #1768]
 	mov	r1, r5
-	ldr	r2, [r4, #1760]
-	ldmfd	sp!, {r4, r5, r6, lr}
+	mov	r0, r6
+	pop	{r4, r5, r6, lr}
 	b	FtlMapWritePage
-.L2819:
+.L2750:
+	ldr	r3, .L2756+4
+	mov	r1, #255
+	ldrh	r2, [r3]
+	bl	ftl_memset
+	b	.L2751
+.L2757:
 	.align	2
-.L2818:
+.L2756:
 	.word	.LANCHOR2
-	.word	.LANCHOR2+1752
-	.word	.LANCHOR0
+	.word	.LANCHOR0+2400
 	.fnend
 	.size	FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData
 	.align	2
 	.global	FlashReadFacBbtData
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashReadFacBbtData, %function
 FlashReadFacBbtData:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 40
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L2835
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	mov	r8, r2
-	ldrh	r2, [r3, #128]
+	ldr	r2, .L2771
 	.pad #40
 	sub	sp, sp, #40
-	ldrh	r3, [r3, #130]
 	mov	r5, r0
-	ldr	r9, .L2835+4
 	mov	r7, r1
-	smulbb	r3, r2, r3
-	ldr	r2, [r9, #1688]
-	str	r2, [sp, #12]
-	ldr	r2, [r9, #1720]
+	ldr	r9, .L2771+4
+	ldrh	r3, [r2, #138]
+	ldrh	r2, [r2, #136]
+	smulbb	r3, r3, r2
+	ldr	r2, [r9, #1696]
 	uxth	r3, r3
+	str	r2, [sp, #12]
+	ldr	r2, [r9, #1728]
 	sub	r6, r3, #1
-	sub	r4, r3, #16
-	mul	r10, r3, r1
+	mul	r10, r1, r3
 	uxth	r6, r6
+	sub	r4, r3, #16
 	str	r2, [sp, #16]
-.L2821:
+.L2759:
 	cmp	r6, r4
-	ble	.L2834
-	mov	r1, #1
+	mvnle	r0, #0
+	ble	.L2758
+.L2765:
 	add	r3, r6, r10
+	mov	r2, #1
+	lsl	r3, r3, #10
+	mov	r1, r2
 	add	r0, sp, #4
-	mov	r2, r1
-	mov	r3, r3, asl #10
 	str	r3, [sp, #8]
 	bl	FlashReadPages
 	ldr	r3, [sp, #4]
 	cmn	r3, #1
-	beq	.L2822
-	ldr	r3, [r9, #1720]
+	beq	.L2760
+	ldr	r3, [r9, #1728]
 	ldrh	r2, [r3]
 	movw	r3, #61664
 	cmp	r2, r3
-	bne	.L2822
+	bne	.L2760
 	cmp	r5, #0
 	moveq	r0, r5
-	beq	.L2823
+	beq	.L2758
 	cmp	r7, #0
-	ldreq	ip, .L2835+4
+	moveq	r1, r7
 	moveq	lr, #1
-	beq	.L2824
-.L2826:
-	ldr	r1, [r9, #1688]
+	beq	.L2763
+.L2762:
 	mov	r2, r8
+	ldr	r1, [r9, #1696]
 	mov	r0, r5
 	bl	ftl_memcpy
-	mov	r2, #4
-	ldr	r0, .L2835+8
+	mov	r3, #4
+	ldr	r0, .L2771+8
+	mov	r2, r3
 	mov	r1, r5
-	mov	r3, r2
 	bl	rknand_print_hex
 	mov	r0, #0
-	b	.L2823
-.L2824:
-	ldr	r2, [r9, #1708]
-	uxth	r3, r7
-	add	r7, r7, #1
-	cmp	r3, r2
-	bcs	.L2826
-	ldr	r1, [ip, #1688]
-	mov	r0, r3, lsr #5
-	and	r4, r3, #31
-	ldr	r2, [r1, r0, asl #2]
-	orr	r4, r2, lr, asl r4
-	str	r4, [r1, r0, asl #2]
-	b	.L2824
-.L2822:
-	sub	r6, r6, #1
-	uxth	r6, r6
-	b	.L2821
-.L2834:
-	mvn	r0, #0
-.L2823:
+.L2758:
 	add	sp, sp, #40
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L2836:
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L2764:
+	ldr	r0, [r9, #1696]
+	lsr	ip, r3, #5
+	and	r3, r3, #31
+	ldr	r2, [r0, ip, lsl #2]
+	orr	r3, r2, lr, lsl r3
+	str	r3, [r0, ip, lsl #2]
+.L2763:
+	ldr	r0, [r9, #1716]
+	uxth	r3, r1
+	add	r1, r1, #1
+	cmp	r3, r0
+	bcc	.L2764
+	b	.L2762
+.L2760:
+	sub	r6, r6, #1
+	uxth	r6, r6
+	b	.L2759
+.L2772:
 	.align	2
-.L2835:
+.L2771:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.word	.LC139
@@ -16989,378 +17482,371 @@
 	.size	FlashReadFacBbtData, .-FlashReadFacBbtData
 	.align	2
 	.global	FlashGetBadBlockList
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashGetBadBlockList, %function
 FlashGetBadBlockList:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L2848
-	stmfd	sp!, {r4, r5, r6, r7, r8, lr}
+	ldr	r3, .L2784
+	push	{r4, r5, r6, r7, r8, lr}
 	.save {r4, r5, r6, r7, r8, lr}
 	mov	r5, r0
-	ldr	r3, [r3, #44]
-	ldr	r6, .L2848+4
+	ldr	r6, .L2784+4
+	ldr	r3, [r3, #48]
+	ldr	r0, [r6, #1724]
 	ldrb	r4, [r3, #13]	@ zero_extendqisi2
 	ldrh	r3, [r3, #14]
-	ldr	r0, [r6, #1716]
 	smulbb	r4, r4, r3
 	uxth	r4, r4
 	add	r2, r4, #7
-	mov	r2, r2, asr #3
+	asr	r2, r2, #3
 	bl	FlashReadFacBbtData
 	cmn	r0, #1
-	bne	.L2838
-.L2842:
+	bne	.L2774
+.L2778:
 	mov	r3, #0
-	b	.L2839
-.L2838:
-	mov	lr, r4, lsr #4
-	mov	ip, #0
-	sub	r4, r4, #1
-	mov	r3, ip
-	mov	r7, #1
-.L2840:
-	uxth	r0, ip
-	cmp	r0, r4
-	bge	.L2839
-	ldr	r8, [r6, #1716]
-	mov	r1, r0, lsr #5
-	and	r2, r0, #31
-	add	ip, ip, #1
-	ldr	r1, [r8, r1, asl #2]
-	ands	r2, r1, r7, asl r2
-	addne	r2, r3, #1
-	movne	r3, r3, asl #1
-	strneh	r0, [r5, r3]	@ movhi
-	uxthne	r3, r2
-	cmp	r3, lr
-	bcc	.L2840
-	b	.L2842
-.L2839:
-	mov	r3, r3, asl #1
+.L2775:
+	lsl	r3, r3, #1
 	mvn	r2, #0
 	mov	r0, #0
 	strh	r2, [r5, r3]	@ movhi
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L2849:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L2774:
+	mov	r2, #0
+	lsr	lr, r4, #4
+	mov	r3, r2
+	sub	r4, r4, #1
+	mov	r7, #1
+.L2776:
+	uxth	r1, r2
+	cmp	r1, r4
+	bge	.L2775
+	ldr	r8, [r6, #1724]
+	lsr	ip, r1, #5
+	and	r0, r1, #31
+	add	r2, r2, #1
+	ldr	ip, [r8, ip, lsl #2]
+	ands	r0, ip, r7, lsl r0
+	addne	r0, r3, #1
+	lslne	r3, r3, #1
+	strhne	r1, [r5, r3]	@ movhi
+	uxthne	r3, r0
+	cmp	r3, lr
+	bcc	.L2776
+	b	.L2778
+.L2785:
 	.align	2
-.L2848:
+.L2784:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
 	.fnend
 	.size	FlashGetBadBlockList, .-FlashGetBadBlockList
 	.align	2
 	.global	FtlMakeBbt
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlMakeBbt, %function
 FtlMakeBbt:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r4, .L2874
-	ldr	r5, [r4, #-3616]
-	cmp	r5, #0
-	bne	.L2851
+	ldr	r4, .L2807
+	ldr	r8, [r4, #-3612]
+	cmp	r8, #0
+	bne	.L2787
+	ldr	r9, .L2807+4
 	bl	FtlBbtMemInit
-	ldr	r7, .L2874+4
 	bl	FtlLoadFactoryBbt
-	sub	r9, r7, #18
-	sub	r10, r7, #94
-.L2852:
-	ldr	r3, .L2874+8
-	ldr	r6, .L2874+12
+	sub	r10, r9, #18
+	sub	r5, r9, #28
+.L2788:
+	ldr	r3, .L2807+8
+	ldr	r6, .L2807+12
 	ldrh	r3, [r3]
-	cmp	r5, r3
-	bcs	.L2871
-	ldrh	r3, [r9, #2]!
+	cmp	r8, r3
+	bcc	.L2794
+	ldr	r8, .L2807+16
+	mov	r7, #0
+.L2795:
+	ldrh	r3, [r8]
+	uxth	r0, r7
+	add	r7, r7, #1
+	cmp	r3, r0
+	bhi	.L2796
+	ldrh	r7, [r5, #12]
+	movw	r8, #65535
+	sub	r7, r7, #1
+	uxth	r7, r7
+.L2797:
+	ldrh	r3, [r5, #12]
+	sub	r3, r3, #48
+	cmp	r7, r3
+	ble	.L2801
+	mov	r0, r7
+	bl	FtlBbmIsBadBlock
+	cmp	r0, #1
+	beq	.L2798
+	mov	r0, r7
+	bl	FlashTestBlk
+	cmp	r0, #0
+	beq	.L2799
+	mov	r0, r7
+	bl	FtlBbmMapBadBlock
+.L2798:
+	sub	r7, r7, #1
+	uxth	r7, r7
+	b	.L2797
+.L2794:
+	ldr	r3, [r4, #-500]
 	movw	r2, #65535
 	ldr	r0, [r4, #-524]
-	ldr	fp, [r4, #-500]
+	ldr	fp, .L2807+20
+	str	r3, [sp, #4]
+	str	r3, [r4, #1772]
+	ldrh	r3, [r10, #2]!
+	str	r0, [r4, #1768]
 	cmp	r3, r2
-	ldr	r8, .L2874
-	str	r0, [r4, #1760]
-	str	fp, [r4, #1764]
-	beq	.L2853
-	ldrh	ip, [r10]
-	mov	r1, #1
-	mov	r2, r1
-	ldr	r0, .L2874+16
-	mla	ip, ip, r5, r3
-	mov	r3, ip, asl #10
-	str	ip, [sp, #4]
-	str	r3, [r8, #1756]
+	beq	.L2789
+	ldrh	r7, [fp]
+	mov	r2, #1
+	mov	r1, r2
+	ldr	r0, .L2807+24
+	mla	r7, r8, r7, r3
+	lsl	r3, r7, #10
+	str	r3, [r4, #1764]
 	bl	FlashReadPages
-	ldrh	r2, [r10]
-	ldr	r0, [r7]
+	ldrh	r2, [fp]
+	ldr	r1, [r4, #1768]
+	ldr	r0, [r9]
 	add	r2, r2, #7
-	ldr	r1, [r8, #1760]
-	mov	r2, r2, asr #3
+	asr	r2, r2, #3
 	bl	ftl_memcpy
-	ldr	ip, [sp, #4]
-	b	.L2854
-.L2853:
-	mov	r1, r5
-	sub	r8, r8, #436
+.L2790:
+	uxth	r0, r7
+	add	r8, r8, #1
+	add	r9, r9, #4
+	bl	FtlBbmMapBadBlock
+	b	.L2788
+.L2789:
+	mov	r1, r8
 	bl	FlashGetBadBlockList
-	ldr	r0, [r8, #2196]
-	ldr	r1, [r7]
+	ldr	r1, [r9]
+	ldr	r0, [r4, #1768]
 	bl	FtlBbt2Bitmap
-	ldrh	r6, [r10]
+	ldrh	r6, [fp]
+.L2792:
 	sub	r6, r6, #1
 	uxth	r6, r6
-.L2855:
-	ldrh	r0, [r10]
-	smlabb	r0, r0, r5, r6
+.L2791:
+	ldrh	r0, [fp]
+	smlabb	r0, r0, r8, r6
 	uxth	r0, r0
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #1
-	subeq	r6, r6, #1
-	uxtheq	r6, r6
-	beq	.L2855
-.L2872:
-	mov	r1, #0
+	beq	.L2792
 	mov	r2, #16
-	strh	r6, [r9]	@ movhi
+	mov	r1, #0
+	strh	r6, [r10]	@ movhi
 	ldr	r0, [r4, #-500]
 	bl	ftl_memset
-	ldr	r3, .L2874+20
-	strh	r3, [fp]	@ movhi
+	ldr	r3, [sp, #4]
+	movw	r2, 61664	@ movhi
+	strh	r2, [r3]	@ movhi
 	mov	r3, #0
-	str	r3, [fp, #4]
-	ldrh	r3, [r9]
-	ldrh	ip, [r10]
-	ldrh	r2, [r8]
-	strh	r3, [fp, #2]	@ movhi
-	ldrh	r3, [r9]
-	ldr	r1, [r7]
-	mov	r2, r2, asl #2
-	ldr	r0, [r4, #1760]
-	mla	ip, ip, r5, r3
-	mov	r3, ip, asl #10
-	str	r3, [r4, #1756]
-	str	ip, [sp, #4]
+	ldr	r2, [sp, #4]
+	ldrh	r7, [fp]
+	str	r3, [r2, #4]
+	ldrh	r3, [r10]
+	strh	r3, [r2, #2]	@ movhi
+	ldrh	r3, [r10]
+	ldr	r1, [r9]
+	ldr	r0, [r4, #1768]
+	mla	r7, r8, r7, r3
+	lsl	r3, r7, #10
+	str	r3, [r4, #1764]
+	ldr	r3, .L2807+28
+	ldrh	r2, [r3]
+	lsl	r2, r2, #2
 	bl	ftl_memcpy
-	mov	r1, #1
-	ldr	r0, .L2874+16
-	mov	r2, r1
+	mov	r2, #1
+	ldr	r0, .L2807+24
+	mov	r1, r2
 	bl	FlashEraseBlocks
-	mov	r1, #1
-	mov	r3, r1
-	ldr	r0, .L2874+16
-	mov	r2, r1
+	mov	r3, #1
+	ldr	r0, .L2807+24
+	mov	r2, r3
+	mov	r1, r3
 	bl	FlashProgPages
-	ldr	r3, [r4, #1752]
+	ldr	r3, [r4, #1760]
 	cmn	r3, #1
-	ldr	ip, [sp, #4]
-	bne	.L2854
-	uxth	r0, ip
+	bne	.L2790
+	uxth	r0, r7
 	bl	FtlBbmMapBadBlock
-	b	.L2855
-.L2854:
-	uxth	r0, ip
-	add	r5, r5, #1
+	b	.L2791
+.L2796:
 	bl	FtlBbmMapBadBlock
-	add	r7, r7, #4
-	b	.L2852
-.L2871:
-	ldr	r7, .L2874+24
-	mov	r5, #0
-.L2859:
-	ldrh	r3, [r7]
-	uxth	r0, r5
-	add	r5, r5, #1
-	cmp	r3, r0
-	bls	.L2873
-	bl	FtlBbmMapBadBlock
-	b	.L2859
-.L2873:
-	ldr	r7, .L2874+28
-	movw	r9, #65535
-	ldrh	r5, [r7, #12]
-	mov	r8, r7
-	sub	r5, r5, #1
-	uxth	r5, r5
-.L2861:
-	ldrh	r3, [r7, #12]
-	sub	r3, r3, #48
-	cmp	r5, r3
-	ble	.L2865
-	mov	r0, r5
-	bl	FtlBbmIsBadBlock
-	cmp	r0, #1
-	beq	.L2862
-	mov	r0, r5
-	bl	FlashTestBlk
-	cmp	r0, #0
-	beq	.L2863
-	mov	r0, r5
-	bl	FtlBbmMapBadBlock
-	b	.L2862
-.L2863:
-	ldrh	r3, [r8]
-	cmp	r3, r9
-	streqh	r5, [r8]	@ movhi
-.L2864:
-	ldrne	r3, .L2874+28
-	strneh	r5, [r3, #4]	@ movhi
-	bne	.L2865
-.L2862:
-	sub	r5, r5, #1
-	uxth	r5, r5
-	b	.L2861
-.L2865:
-	movw	r5, #2452
-	ldr	r0, [r4, #-3612]
-	ldrh	r3, [r6, r5]
+	b	.L2795
+.L2799:
+	ldrh	r3, [r5]
+	cmp	r3, r8
+	strheq	r7, [r5]	@ movhi
+	beq	.L2798
+.L2800:
+	strh	r7, [r5, #4]	@ movhi
+.L2801:
+	movw	r7, #2456
+	ldr	r0, [r4, #-3608]
+	ldrh	r3, [r6, r7]
 	mov	r8, #0
-	str	r8, [r6, #2460]
+	str	r8, [r6, #2464]
 	mov	r2, #2
 	mov	r1, #1
-	strh	r8, [r7, #2]	@ movhi
-	mov	r3, r3, asl #10
+	strh	r8, [r5, #2]	@ movhi
+	lsl	r3, r3, #10
 	str	r3, [r0, #4]
-	ldrh	r3, [r7, #4]
-	mov	r3, r3, asl #10
+	ldrh	r3, [r5, #4]
+	lsl	r3, r3, #10
 	str	r3, [r0, #40]
 	bl	FlashEraseBlocks
-	ldrh	r0, [r6, r5]
+	ldrh	r0, [r6, r7]
 	bl	FtlBbmMapBadBlock
-	ldrh	r0, [r7, #4]
+	ldrh	r0, [r5, #4]
 	bl	FtlBbmMapBadBlock
 	bl	FtlBbmTblFlush
-	ldr	r3, [r6, #2460]
-	ldrh	r2, [r7, #4]
+	ldr	r3, [r6, #2464]
+	ldrh	r2, [r5, #4]
+	strh	r8, [r5, #2]	@ movhi
 	add	r3, r3, #1
-	str	r3, [r6, #2460]
-	ldrh	r3, [r6, r5]
-	strh	r8, [r7, #2]	@ movhi
-	strh	r2, [r6, r5]	@ movhi
-	strh	r3, [r7, #4]	@ movhi
+	str	r3, [r6, #2464]
+	ldrh	r3, [r6, r7]
+	strh	r2, [r6, r7]	@ movhi
+	strh	r3, [r5, #4]	@ movhi
 	bl	FtlBbmTblFlush
-.L2851:
+.L2787:
 	mov	r0, #0
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2875:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2808:
 	.align	2
-.L2874:
+.L2807:
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2480
-	.word	.LANCHOR0+2342
+	.word	.LANCHOR0+2484
+	.word	.LANCHOR0+2346
 	.word	.LANCHOR0
-	.word	.LANCHOR2+1752
-	.word	-3872
-	.word	.LANCHOR0+2402
-	.word	.LANCHOR0+2452
+	.word	.LANCHOR0+2404
+	.word	.LANCHOR0+2388
+	.word	.LANCHOR2+1760
+	.word	.LANCHOR2-436
 	.fnend
 	.size	FtlMakeBbt, .-FtlMakeBbt
 	.align	2
 	.global	log2phys
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	log2phys, %function
 log2phys:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 8
+	@ args = 0, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #12
-	movw	r3, #2396
-	ldr	r7, .L2893
-	ldrh	r10, [r7, r3]
-	ldr	r3, [r7, #2448]
+	.pad #20
+	sub	sp, sp, #20
+	ldr	r8, .L2825
+	ldr	r3, [r8, #2452]
 	cmp	r0, r3
-	bcs	.L2877
-	add	r10, r10, #7
-	ldr	fp, .L2893+4
-	mov	r5, r0, lsr r10
-	movw	r3, #2426
-	str	r2, [sp, #4]
-	mov	r9, r1
-	mov	r6, r7
-	str	r0, [sp]
-	uxth	r5, r5
-	ldrh	r2, [r7, r3]
-	ldr	r8, [fp, #-3380]
-	mov	r4, #0
-	mov	r1, #12
-	b	.L2878
-.L2877:
+	bcs	.L2810
+	movw	r3, #2398
+	mov	r10, r0
+	ldrh	r0, [r8, r3]
+	mov	r5, #12
+	ldr	r4, .L2825+4
+	str	r1, [sp, #8]
+	add	r3, r0, #7
+	str	r2, [sp, #12]
+	lsr	r6, r10, r3
+	ldr	fp, [r4, #-3376]
+	str	r3, [sp, #4]
+	movw	r3, #2430
+	uxth	r9, r6
+	ldrh	r1, [r8, r3]
+	mov	r3, #0
+.L2811:
+	uxth	r7, r3
+	cmp	r7, r1
+	bcc	.L2816
+	bl	select_l2p_ram_region
+	mul	r5, r5, r0
+	movw	r2, #65535
+	mov	r7, r0
+	ldrh	r1, [fp, r5]
+	add	r3, fp, r5
+	cmp	r1, r2
+	beq	.L2817
+	ldr	r3, [r3, #4]
+	cmp	r3, #0
+	bge	.L2817
+	bl	flush_l2p_region
+.L2817:
+	ldr	r3, [r4, #-452]
+	uxth	r6, r6
+	ldr	fp, [r3, r6, lsl #2]
+	cmp	fp, #0
+	bne	.L2818
+	ldr	r0, [r4, #-3376]
+	mov	r1, #255
+	ldr	r2, .L2825+8
+	add	r0, r0, r5
+	ldrh	r2, [r2]
+	ldr	r0, [r0, #8]
+	bl	ftl_memset
+	ldr	r2, [r4, #-3376]
+	strh	r9, [r2, r5]	@ movhi
+	ldr	r2, [r4, #-3376]
+	add	r5, r2, r5
+	str	fp, [r5, #4]
+	b	.L2813
+.L2810:
 	cmp	r2, #0
 	mvn	r0, #0
 	streq	r0, [r1]
-	b	.L2879
-.L2883:
-	add	r4, r4, #1
-	mla	r0, r1, r4, r8
+.L2809:
+	add	sp, sp, #20
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2816:
+	add	r3, r3, #1
+	mla	r0, r5, r3, fp
 	ldrh	r0, [r0, #-12]
-	cmp	r0, r5
-	beq	.L2880
-.L2878:
-	uxth	r7, r4
-	cmp	r7, r2
-	bcc	.L2883
-	bl	select_l2p_ram_region
-	mov	r4, #12
-	movw	r3, #65535
-	mul	r4, r4, r0
-	mov	r7, r0
-	add	r2, r8, r4
-	ldrh	r1, [r8, r4]
-	cmp	r1, r3
-	bne	.L2892
-.L2884:
-	ldr	r3, [fp, #-452]
-	ldr	r8, .L2893+4
-	ldr	fp, [r3, r5, asl #2]
-	cmp	fp, #0
-	bne	.L2885
-	ldr	r3, [r8, #-3380]
-	mov	r1, #255
-	add	r3, r3, r4
-	ldr	r0, [r3, #8]
-	movw	r3, #2398
-	ldrh	r2, [r6, r3]
-	bl	ftl_memset
-	ldr	r3, [r8, #-3380]
-	strh	r5, [r3, r4]	@ movhi
-	ldr	r3, [r8, #-3380]
-	add	r4, r3, r4
-	str	fp, [r4, #4]
-.L2880:
-	ldr	r2, [sp]
-	mvn	r3, #0
-	mov	r6, #12
-	bic	r10, r2, r3, asl r10
+	cmp	r0, r9
+	bne	.L2811
+.L2813:
 	ldr	r3, [sp, #4]
-	ldr	r2, .L2893+4
-	cmp	r3, #0
+	mvn	r0, #0
+	ldr	r1, .L2825+4
+	bic	r10, r10, r0, lsl r3
+	ldr	r3, [sp, #12]
 	uxth	r10, r10
-	bne	.L2881
-	ldr	r3, [r2, #-3380]
-	mla	r6, r6, r7, r3
-	ldr	r3, [r6, #8]
-	ldr	r3, [r3, r10, asl #2]
-	str	r3, [r9]
-	b	.L2882
-.L2881:
-	mul	r6, r6, r7
-	ldr	r3, [r2, #-3380]
-	ldr	r1, [r9]
-	add	r3, r3, r6
+	cmp	r3, #0
+	mov	r3, #12
+	bne	.L2814
+	ldr	r2, [r1, #-3376]
+	mla	r3, r3, r7, r2
+	ldr	r2, [sp, #8]
 	ldr	r3, [r3, #8]
-	str	r1, [r3, r10, asl #2]
-	ldr	r3, [r2, #-3380]
-	add	r6, r3, r6
-	ldr	r3, [r6, #4]
-	orr	r3, r3, #-2147483648
-	str	r3, [r6, #4]
-	sub	r3, r2, #3376
-	strh	r5, [r3]	@ movhi
-.L2882:
-	ldr	r2, [r2, #-3380]
+	ldr	r3, [r3, r10, lsl #2]
+	str	r3, [r2]
+.L2815:
+	ldr	r2, [r1, #-3376]
 	mov	r3, #12
 	mov	r0, #0
 	mla	r7, r3, r7, r2
@@ -17368,1841 +17854,1868 @@
 	cmn	r3, #1
 	addne	r3, r3, #1
 	strne	r3, [r7, #4]
-	b	.L2879
-.L2892:
-	ldr	r3, [r2, #4]
-	cmp	r3, #0
-	bge	.L2884
-	bl	flush_l2p_region
-	b	.L2884
-.L2885:
-	ldr	r3, [r8, #-3380]
-	mov	r1, #1
-	ldr	r0, .L2893+8
-	mov	r2, r1
-	add	r3, r3, r4
-	str	fp, [r8, #1756]
-	ldr	r3, [r3, #8]
-	str	r3, [r8, #1760]
-	ldr	r3, [r8, #-500]
-	str	r3, [r8, #1764]
+	b	.L2809
+.L2814:
+	ldr	r2, [sp, #8]
+	mul	r3, r3, r7
+	ldr	r0, [r2]
+	ldr	r2, [r4, #-3376]
+	add	r2, r2, r3
+	ldr	r2, [r2, #8]
+	str	r0, [r2, r10, lsl #2]
+	ldr	r2, [r4, #-3376]
+	add	r3, r2, r3
+	ldr	r2, [r3, #4]
+	orr	r2, r2, #-2147483648
+	str	r2, [r3, #4]
+	sub	r3, r1, #3360
+	strh	r9, [r3, #-12]	@ movhi
+	b	.L2815
+.L2818:
+	ldr	r2, [r4, #-3376]
+	ldr	r0, .L2825+12
+	str	fp, [r4, #1764]
+	add	r2, r2, r5
+	ldr	r2, [r2, #8]
+	str	r2, [r4, #1768]
+	ldr	r2, [r4, #-500]
+	str	r2, [r4, #1772]
+	mov	r2, #1
+	mov	r1, r2
 	bl	FlashReadPages
-	ldr	r3, [r8, #1764]
-	ldrh	r3, [r3, #8]
-	cmp	r3, r5
-	beq	.L2886
-	mov	r1, r5
+	ldr	r2, [r4, #1772]
+	ldrh	r2, [r2, #8]
+	cmp	r2, r9
+	beq	.L2819
 	mov	r2, fp
-	ldr	r0, .L2893+12
+	mov	r1, r6
+	ldr	r0, .L2825+16
 	bl	printk
-	mov	r2, #4
-	mov	r3, r2
-	ldr	r0, .L2893+16
-	ldr	r1, [r8, #1764]
+	mov	r3, #4
+	ldr	r1, [r4, #1772]
+	mov	r2, r3
+	ldr	r0, .L2825+20
 	bl	rknand_print_hex
-	movw	r3, #2424
-	ldrh	r3, [r6, r3]
+	movw	r3, #2428
 	mov	r2, #4
-	ldr	r0, .L2893+20
-	ldr	r1, [r8, #-452]
+	ldrh	r3, [r8, r3]
+	ldr	r1, [r4, #-452]
+	ldr	r0, .L2825+24
 	bl	rknand_print_hex
 	mov	r3, #1
-	str	r3, [r8, #-3616]
-	b	.L2887
-.L2886:
-	ldr	r3, [r8, #1752]
-	cmp	r3, #256
-	bne	.L2887
-	mov	r1, r5
+	str	r3, [r4, #-3612]
+.L2820:
+	ldr	r3, .L2825+4
+	mov	r1, #0
+	ldr	r3, [r3, #-3376]
+	add	r2, r3, r5
+	str	r1, [r2, #4]
+	strh	r9, [r3, r5]	@ movhi
+	b	.L2813
+.L2819:
+	ldr	r2, [r4, #1760]
+	cmp	r2, #256
+	bne	.L2820
 	mov	r2, fp
-	ldr	r0, .L2893+24
+	mov	r1, r6
+	ldr	r0, .L2825+28
 	bl	printk
-	ldr	r3, [r8, #-3380]
-	sub	r0, r8, #432
-	mov	r1, r5
-	add	r3, r3, r4
+	ldr	r3, [r4, #-3376]
+	mov	r1, r6
+	ldr	r0, .L2825+32
+	add	r3, r3, r5
 	ldr	r2, [r3, #8]
 	bl	FtlMapWritePage
-.L2887:
-	ldr	r3, .L2893+4
-	mov	r1, #0
-	ldr	r3, [r3, #-3380]
-	add	r2, r3, r4
-	str	r1, [r2, #4]
-	strh	r5, [r3, r4]	@ movhi
-	b	.L2880
-.L2879:
-	add	sp, sp, #12
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2894:
+	b	.L2820
+.L2826:
 	.align	2
-.L2893:
+.L2825:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR2+1752
+	.word	.LANCHOR0+2400
+	.word	.LANCHOR2+1760
 	.word	.LC140
 	.word	.LC101
 	.word	.LC141
 	.word	.LC142
+	.word	.LANCHOR2-432
 	.fnend
 	.size	log2phys, .-log2phys
 	.align	2
 	.global	FtlWriteDumpData
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlWriteDumpData, %function
 FtlWriteDumpData:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 40
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.pad #44
 	sub	sp, sp, #44
-	ldr	r4, .L2915
-	ldr	r3, [r4, #-3616]
+	ldr	r4, .L2846
+	ldr	r3, [r4, #-3612]
 	cmp	r3, #0
-	bne	.L2895
-	ldr	r3, .L2915+4
-	ldrh	r2, [r3, #4]
+	bne	.L2827
+	sub	r6, r4, #3520
+	ldrh	r2, [r6, #4]
 	cmp	r2, #0
-	beq	.L2897
-	ldrb	r3, [r4, #-3516]	@ zero_extendqisi2
+	beq	.L2829
+	ldrb	r3, [r4, #-3512]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L2897
-	ldr	r8, .L2915+8
-	movw	r3, #2388
-	ldrb	r1, [r4, #-3517]	@ zero_extendqisi2
+	bne	.L2829
+	ldr	r8, .L2846+4
+	movw	r3, #2390
+	ldrb	r1, [r4, #-3513]	@ zero_extendqisi2
 	ldrh	r3, [r8, r3]
 	mul	r3, r3, r1
 	cmp	r2, r3
-	beq	.L2897
-	ldrb	r9, [r4, #-3514]	@ zero_extendqisi2
-	add	r3, r8, #2320
-	ldr	r6, [r8, #2448]
-	cmp	r9, #0
-	ldrh	r7, [r3]
-	bne	.L2895
-	sub	r6, r6, #1
+	beq	.L2829
+	ldrb	r10, [r4, #-3510]	@ zero_extendqisi2
+	cmp	r10, #0
+	bne	.L2827
+	ldr	r7, [r8, #2452]
+	movw	r3, #2324
+	mov	r2, r10
 	mov	r1, sp
-	mov	r2, r9
-	mov	r0, r6
+	ldrh	r9, [r8, r3]
+	sub	r7, r7, #1
+	mov	r0, r7
 	bl	log2phys
+	ldr	r3, [sp]
 	ldr	r5, [r4, #-500]
 	ldr	r0, [r4, #-524]
-	ldr	r3, [sp]
-	str	r6, [sp, #20]
 	cmn	r3, #1
-	str	r0, [sp, #12]
 	str	r3, [sp, #8]
+	str	r7, [sp, #20]
+	str	r0, [sp, #12]
 	str	r5, [sp, #16]
-	str	r9, [r5, #4]
-	beq	.L2899
+	str	r10, [r5, #4]
+	beq	.L2831
+	mov	r2, r10
 	mov	r1, #1
-	mov	r2, r9
 	add	r0, sp, #4
 	bl	FlashReadPages
-	b	.L2900
-.L2899:
-	movw	r3, #2398
-	mov	r1, #255
-	ldrh	r2, [r8, r3]
-	bl	ftl_memset
-.L2900:
-	ldr	fp, .L2915+4
-	mov	r7, r7, asl #2
-	ldr	r3, .L2915+12
+.L2832:
+	ldr	r10, .L2846+8
 	mov	r8, #0
-	ldr	r9, .L2915
-	mov	r10, fp
+	ldr	r3, .L2846+12
+	lsl	r9, r9, #2
+	mov	fp, r8
 	strh	r3, [r5]	@ movhi
-.L2901:
-	cmp	r8, r7
-	beq	.L2902
-	ldrh	r3, [fp, #4]
+.L2833:
+	cmp	r9, r8
+	bne	.L2837
+.L2834:
+	mov	r3, #1
+.L2845:
+	strb	r3, [r4, #-3510]
+.L2827:
+	add	sp, sp, #44
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2831:
+	add	r8, r8, #2400
+	mov	r1, #255
+	ldrh	r2, [r8]
+	bl	ftl_memset
+	b	.L2832
+.L2837:
+	ldrh	r3, [r6, #4]
 	cmp	r3, #0
-	beq	.L2902
+	beq	.L2834
 	ldr	r3, [sp, #8]
+	mov	r0, r10
+	str	r7, [r5, #8]
 	add	r8, r8, #1
-	str	r6, [r5, #8]
-	ldr	r0, .L2915+4
 	str	r3, [r5, #12]
-	ldrh	r3, [fp]
+	ldrh	r3, [r6]
 	strh	r3, [r5, #2]	@ movhi
 	bl	get_new_active_ppa
-	ldr	r3, [r9, #-3328]
-	mov	r2, #0
+	ldr	r3, [r4, #-3328]
 	mov	r1, #1
 	str	r0, [sp, #8]
 	add	r0, sp, #4
 	str	r3, [r5, #4]
 	add	r3, r3, #1
 	cmn	r3, #1
-	moveq	r3, #0
-	str	r3, [r9, #-3328]
-	mov	r3, r2
-	bl	FlashProgPages
-	ldrh	r0, [r10]
-	bl	decrement_vpc_count
-	b	.L2901
-.L2902:
-	mov	r3, #1
-	b	.L2914
-.L2897:
+	moveq	r3, fp
+	str	r3, [r4, #-3328]
 	mov	r3, #0
-.L2914:
-	strb	r3, [r4, #-3514]
-.L2895:
-	add	sp, sp, #44
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L2916:
+	mov	r2, r3
+	bl	FlashProgPages
+	ldrh	r0, [r6]
+	bl	decrement_vpc_count
+	b	.L2833
+.L2829:
+	mov	r3, #0
+	b	.L2845
+.L2847:
 	.align	2
-.L2915:
+.L2846:
 	.word	.LANCHOR2
-	.word	.LANCHOR2-3524
 	.word	.LANCHOR0
+	.word	.LANCHOR2-3520
 	.word	-3947
 	.fnend
 	.size	FtlWriteDumpData, .-FtlWriteDumpData
 	.align	2
 	.global	l2p_flush
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	l2p_flush, %function
 l2p_flush:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
-	bl	FtlWriteDumpData
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
 	mov	r4, #0
-	ldr	r5, .L2923
+	ldr	r5, .L2853
 	mov	r7, #12
-	ldr	r6, .L2923+4
-.L2918:
+	ldr	r6, .L2853+4
+	bl	FtlWriteDumpData
+.L2849:
 	ldrh	r3, [r5]
 	uxth	r0, r4
 	cmp	r3, r0
-	bls	.L2922
-	ldr	r3, [r6, #-3380]
-	mla	r3, r7, r0, r3
+	bhi	.L2851
+	mov	r0, #0
+	pop	{r4, r5, r6, r7, r8, pc}
+.L2851:
+	ldr	r2, [r6, #-3376]
+	uxth	r3, r4
+	mla	r3, r7, r3, r2
 	ldr	r3, [r3, #4]
 	cmp	r3, #0
-	bge	.L2919
+	bge	.L2850
 	bl	flush_l2p_region
-.L2919:
+.L2850:
 	add	r4, r4, #1
-	b	.L2918
-.L2922:
-	mov	r0, #0
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L2924:
+	b	.L2849
+.L2854:
 	.align	2
-.L2923:
-	.word	.LANCHOR0+2426
+.L2853:
+	.word	.LANCHOR0+2430
 	.word	.LANCHOR2
 	.fnend
 	.size	l2p_flush, .-l2p_flush
 	.align	2
 	.global	allocate_new_data_superblock
+	.syntax unified
+	.arm
+	.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
-	stmfd	sp!, {r4, r5, r6, lr}
-	.save {r4, r5, r6, lr}
-	ldr	r5, .L2952
-	ldrh	r6, [r0]
-	ldr	r3, [r5, #-3616]
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
+	ldr	r4, .L2882
+	ldr	r3, [r4, #-3612]
 	cmp	r3, #0
-	bne	.L2926
+	bne	.L2856
+	ldrh	r5, [r0]
 	movw	r3, #65535
-	cmp	r6, r3
-	mov	r4, r0
-	beq	.L2927
-	ldr	r2, [r5, #-3544]
-	mov	r3, r6, asl #1
-	mov	r0, r6
+	mov	r7, r0
+	cmp	r5, r3
+	beq	.L2857
+	ldr	r2, [r4, #-3540]
+	lsl	r3, r5, #1
+	mov	r0, r5
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	beq	.L2928
+	beq	.L2858
 	bl	INSERT_DATA_LIST
-	b	.L2927
-.L2928:
-	bl	INSERT_FREE_LIST
-.L2927:
+.L2857:
+	ldr	r2, .L2882+4
 	mov	r3, #0
-	strb	r3, [r4, #8]
-	ldr	r3, .L2952+4
-	cmp	r4, r3
-	beq	.L2929
-	ldr	r3, .L2952+8
-	movw	r2, #2340
-	ldrh	r2, [r3, r2]
-	cmp	r2, #1
-	beq	.L2929
-	ldrb	r1, [r3, #144]	@ zero_extendqisi2
-	cmp	r1, #0
-	beq	.L2930
-.L2929:
+	strb	r3, [r7, #8]
+	cmp	r7, r2
+	beq	.L2859
+	ldr	r3, .L2882+8
+	movw	r1, #2344
+	ldrh	r1, [r3, r1]
+	cmp	r1, #1
+	beq	.L2859
+	ldrb	r0, [r3, #152]	@ zero_extendqisi2
+	cmp	r0, #0
+	beq	.L2860
+.L2859:
 	mov	r3, #1
-	strb	r3, [r4, #8]
-	b	.L2931
-.L2930:
-	ldr	r1, .L2952+12
-	cmp	r4, r1
-	bne	.L2931
-	cmp	r2, #3
-	beq	.L2933
-	ldr	r2, .L2952
-	ldr	r2, [r2, #-3236]
-	cmp	r2, #1
-	bne	.L2934
-.L2933:
-	mov	r2, #1
-	strb	r2, [r5, #-3516]
-.L2934:
-	ldr	r3, [r3, #2244]
-	cmp	r3, #0
-	beq	.L2931
-	ldr	r3, [r5, #-3308]
-	cmp	r3, #39
-	ldrls	r3, .L2952
-	movls	r2, #1
-	strlsb	r2, [r3, #-3516]
-.L2931:
-	ldr	r2, .L2952
-	movw	r1, #65535
-	sub	r3, r2, #380
+	strb	r3, [r7, #8]
+.L2861:
+	ldr	r3, .L2882+12
+	movw	r2, #65535
 	ldrh	r0, [r3]
-	mov	r5, r3
-	cmp	r0, r1
-	beq	.L2936
-	cmp	r6, r0
-	bne	.L2937
-	ldr	r2, [r2, #-3544]
-	mov	r3, r0, asl #1
+	mov	r6, r3
+	cmp	r0, r2
+	beq	.L2866
+	cmp	r5, r0
+	bne	.L2867
+	ldr	r2, [r4, #-3540]
+	lsl	r3, r0, #1
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	beq	.L2938
-.L2937:
+	beq	.L2868
+.L2867:
 	bl	update_vpc_list
-.L2938:
+.L2868:
 	mvn	r3, #0
-	strh	r3, [r5]	@ movhi
-.L2936:
-	mov	r0, r4
+	strh	r3, [r6]	@ movhi
+.L2866:
+	mov	r0, r7
 	bl	allocate_data_superblock
 	bl	l2p_flush
 	mov	r0, #0
 	bl	FtlEctTblFlush
 	bl	FtlVpcTblFlush
-.L2926:
+.L2856:
 	mov	r0, #0
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L2953:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L2858:
+	bl	INSERT_FREE_LIST
+	b	.L2857
+.L2860:
+	sub	r2, r2, #48
+	cmp	r7, r2
+	bne	.L2861
+	cmp	r1, #3
+	beq	.L2863
+	ldr	r2, [r4, #-2724]
+	cmp	r2, #1
+	bne	.L2864
+.L2863:
+	mov	r2, #1
+	strb	r2, [r4, #-3512]
+.L2864:
+	ldr	r3, [r3, #2248]
+	cmp	r3, #0
+	beq	.L2861
+	ldr	r3, [r4, #-3308]
+	cmp	r3, #39
+	movls	r3, #1
+	strbls	r3, [r4, #-3512]
+	b	.L2861
+.L2883:
 	.align	2
-.L2952:
+.L2882:
 	.word	.LANCHOR2
-	.word	.LANCHOR2-3476
+	.word	.LANCHOR2-3472
 	.word	.LANCHOR0
-	.word	.LANCHOR2-3524
+	.word	.LANCHOR2-380
 	.fnend
 	.size	allocate_new_data_superblock, .-allocate_new_data_superblock
 	.align	2
 	.global	FtlCheckVpc
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlCheckVpc, %function
 FtlCheckVpc:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr}
-	.save {r4, r5, r6, r7, r8, r9, lr}
+	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	r4, #0
-	ldr	r1, .L2977
-	ldr	r0, .L2977+4
+	ldr	r6, .L2905
+	ldr	r5, .L2905+4
+	ldr	r1, .L2905+8
+	ldr	r0, .L2905+12
 	bl	printk
-	ldr	r0, .L2977+8
-	mov	r1, #0
 	mov	r2, #8192
+	mov	r1, #0
+	ldr	r0, .L2905+4
 	bl	memset
-	ldr	r6, .L2977+12
-	ldr	r5, .L2977+8
-.L2955:
-	ldr	r3, [r6, #2448]
+.L2885:
+	ldr	r3, [r6, #2452]
 	cmp	r4, r3
-	bcs	.L2975
-	mov	r0, r4
-	add	r1, sp, #4
-	mov	r2, #0
-	bl	log2phys
-	ldr	r0, [sp, #4]
-	cmn	r0, #1
-	beq	.L2956
-	ubfx	r0, r0, #10, #16
-	bl	P2V_block_in_plane
-	mov	r0, r0, asl #1
-	ldrh	r3, [r5, r0]
-	add	r3, r3, #1
-	strh	r3, [r5, r0]	@ movhi
-.L2956:
-	add	r4, r4, #1
-	b	.L2955
-.L2975:
-	ldr	r7, .L2977+16
+	bcc	.L2887
+	ldr	r9, .L2905+16
 	mov	r4, #0
-	ldr	r9, .L2977+20
+	ldr	r5, .L2905+20
 	mov	r6, r4
-	add	r8, r7, #1840
-.L2958:
-	ldrh	r3, [r9]
-	uxth	r1, r4
-	ldr	r5, .L2977+16
-	cmp	r3, r1
-	bls	.L2976
-	ldr	r3, [r7, #-3544]
-	mov	r5, r1, asl #1
-	ldrh	r2, [r3, r5]
-	ldrh	r3, [r8, r5]
+	ldr	r8, .L2905+4
+.L2888:
+	ldrh	r2, [r9]
+	uxth	r3, r4
 	cmp	r2, r3
-	beq	.L2959
-	ldr	r0, .L2977+24
-	bl	printk
-	ldr	r3, [r7, #-3544]
-	movw	r2, #65535
-	ldrh	r3, [r3, r5]
-	cmp	r3, r2
-	beq	.L2959
-	ldrh	r2, [r8, r5]
-	cmp	r2, r3
-	movhi	r6, #1
-.L2959:
-	add	r4, r4, #1
-	b	.L2958
-.L2976:
-	ldr	r3, [r5, #-3532]
-	cmp	r3, #0
-	beq	.L2961
-	sub	r2, r5, #3520
-	add	r9, r5, #1840
-	mov	r8, #0
-	ldrh	r7, [r2, #-8]
-	ldr	r2, [r5, #-3552]
-	rsb	r3, r2, r3
-	ldr	r2, .L2977+28
-	mov	r3, r3, asr #1
-	mul	r3, r2, r3
-	uxth	r4, r3
-.L2962:
-	uxth	r3, r8
-	cmp	r3, r7
-	bcs	.L2961
-	ldr	r2, [r5, #-3544]
-	mov	r3, r4, asl #1
+	bhi	.L2890
+	ldr	r4, [r5, #-3528]
+	cmp	r4, #0
+	beq	.L2891
+	ldr	r3, .L2905+24
+	mov	r7, #0
+	ldr	r9, .L2905+4
+	mov	fp, #6
+	ldr	r10, .L2905+28
+	ldrh	r8, [r3, #-4]
+	ldr	r3, [r5, #-3548]
+	sub	r4, r4, r3
+	ldr	r3, .L2905+32
+	asr	r4, r4, #1
+	mul	r4, r3, r4
+	uxth	r4, r4
+.L2892:
+	uxth	r3, r7
+	cmp	r8, r3
+	bls	.L2891
+	ldr	r2, [r5, #-3540]
+	lsl	r3, r4, #1
 	ldrh	r2, [r2, r3]
 	cmp	r2, #0
-	beq	.L2963
-	ldr	r0, .L2977+32
-	mov	r1, r4
-	ldrh	r3, [r9, r3]
+	beq	.L2893
 	mov	r6, #1
+	ldrh	r3, [r9, r3]
+	mov	r1, r4
+	mov	r0, r10
 	bl	printk
-.L2963:
-	mov	r3, #6
-	ldr	r2, [r5, #-3552]
-	mul	r4, r3, r4
+.L2893:
+	mul	r4, fp, r4
+	ldr	r3, [r5, #-3548]
+	add	r7, r7, #1
+	ldrh	r4, [r3, r4]
 	movw	r3, #65535
-	add	r8, r8, #1
-	ldrh	r4, [r2, r4]
 	cmp	r4, r3
-	bne	.L2962
-.L2961:
+	bne	.L2892
+.L2891:
 	mov	r1, r6
-	ldr	r0, .L2977+36
+	ldr	r0, .L2905+36
 	bl	printk
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, pc}
-.L2978:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2887:
+	mov	r2, #0
+	add	r1, sp, #4
+	mov	r0, r4
+	bl	log2phys
+	ldr	r0, [sp, #4]
+	cmn	r0, #1
+	beq	.L2886
+	ubfx	r0, r0, #10, #16
+	bl	P2V_block_in_plane
+	lsl	r0, r0, #1
+	ldrh	r3, [r5, r0]
+	add	r3, r3, #1
+	strh	r3, [r5, r0]	@ movhi
+.L2886:
+	add	r4, r4, #1
+	b	.L2885
+.L2890:
+	uxth	r1, r4
+	ldr	r3, [r5, #-3540]
+	lsl	r7, r1, #1
+	ldrh	r2, [r3, r7]
+	ldrh	r3, [r8, r7]
+	cmp	r2, r3
+	beq	.L2889
+	ldr	r0, .L2905+40
+	bl	printk
+	ldr	r3, [r5, #-3540]
+	movw	r2, #65535
+	ldrh	r3, [r3, r7]
+	cmp	r3, r2
+	beq	.L2889
+	ldrh	r2, [r8, r7]
+	cmp	r2, r3
+	movhi	r6, #1
+.L2889:
+	add	r4, r4, #1
+	b	.L2888
+.L2906:
 	.align	2
-.L2977:
-	.word	.LANCHOR3+204
-	.word	.LC110
-	.word	.LANCHOR2+1840
+.L2905:
 	.word	.LANCHOR0
+	.word	check_valid_page_count_table
+	.word	.LANCHOR3+191
+	.word	.LC110
+	.word	.LANCHOR0+2332
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2328
-	.word	.LC143
-	.word	-1431655765
+	.word	.LANCHOR2-3520
 	.word	.LC144
+	.word	-1431655765
 	.word	.LC145
+	.word	.LC143
 	.fnend
 	.size	FtlCheckVpc, .-FtlCheckVpc
 	.align	2
 	.global	Ftlscanalldata
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	Ftlscanalldata, %function
 Ftlscanalldata:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, lr}
+	push	{r4, r5, r6, r7, r8, lr}
 	.save {r4, r5, r6, r7, r8, lr}
-	mov	r1, #0
+	mov	r5, #0
+	ldr	r4, .L2916
 	.pad #32
 	sub	sp, sp, #32
-	ldr	r0, .L2989
+	mov	r1, #0
+	ldr	r7, .L2916+4
+	add	r8, r4, #1760
+	ldr	r0, .L2916+8
 	bl	printk
-	ldr	r5, .L2989+4
-	ldr	r8, .L2989+8
-	mov	r4, #0
-	mov	r6, r5
-.L2980:
-	ldr	r3, [r8, #2448]
-	cmp	r4, r3
-	bcs	.L2988
-	mov	r0, r4
-	add	r1, sp, #28
-	mov	r2, #0
-	bl	log2phys
-	ubfx	r3, r4, #0, #11
-	cmp	r3, #0
-	bne	.L2981
-	ldr	r0, .L2989+12
-	mov	r1, r4
-	ldr	r2, [sp, #28]
-	bl	printk
-.L2981:
-	ldr	r3, [sp, #28]
-	cmn	r3, #1
-	beq	.L2983
-	str	r3, [r5, #1756]
-	mov	r2, #0
-	ldr	r3, [r5, #-524]
-	mov	r1, #1
-	ldr	r7, [r5, #-500]
-	ldr	r0, .L2989+16
-	str	r3, [r5, #1760]
-	str	r4, [r5, #1768]
-	str	r7, [r5, #1764]
-	str	r2, [r5, #1752]
-	bl	FlashReadPages
-	ldr	r3, [r5, #1752]
-	cmn	r3, #1
-	cmpne	r3, #256
-	beq	.L2984
-	ldr	r3, [r7, #8]
-	cmp	r3, r4
-	beq	.L2983
-.L2984:
-	ldr	r3, [r6, #1764]
-	ldr	r2, [r6, #1760]
-	ldr	r0, .L2989+20
-	ldr	r1, [r3, #4]
-	str	r1, [sp]
-	ldr	r1, [r3, #8]
-	str	r1, [sp, #4]
-	ldr	r1, [r3, #12]
-	str	r1, [sp, #8]
-	ldr	r1, [r2]
-	str	r1, [sp, #12]
-	mov	r1, r4
-	ldr	r2, [r2, #4]
-	str	r2, [sp, #16]
-	ldr	r2, [r6, #1756]
-	ldr	r3, [r3]
-	bl	printk
-.L2983:
-	add	r4, r4, #1
-	b	.L2980
-.L2988:
+.L2908:
+	ldr	r3, [r7, #2452]
+	cmp	r5, r3
+	bcc	.L2914
 	add	sp, sp, #32
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L2990:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L2914:
+	mov	r2, #0
+	add	r1, sp, #28
+	mov	r0, r5
+	bl	log2phys
+	ubfx	r3, r5, #0, #11
+	cmp	r3, #0
+	bne	.L2909
+	ldr	r2, [sp, #28]
+	mov	r1, r5
+	ldr	r0, .L2916+12
+	bl	printk
+.L2909:
+	ldr	r3, [sp, #28]
+	cmn	r3, #1
+	beq	.L2911
+	str	r3, [r4, #1764]
+	mov	r2, #0
+	ldr	r3, [r4, #-524]
+	mov	r1, #1
+	ldr	r6, [r4, #-500]
+	mov	r0, r8
+	str	r5, [r4, #1776]
+	str	r3, [r4, #1768]
+	str	r6, [r4, #1772]
+	str	r2, [r4, #1760]
+	bl	FlashReadPages
+	ldr	r3, [r4, #1760]
+	cmn	r3, #1
+	cmpne	r3, #256
+	beq	.L2912
+	ldr	r3, [r6, #8]
+	cmp	r5, r3
+	beq	.L2911
+.L2912:
+	ldr	r2, [r4, #1768]
+	ldr	r3, [r4, #1772]
+	ldr	r0, .L2916+16
+	ldr	r1, [r2, #4]
+	str	r1, [sp, #16]
+	mov	r1, r5
+	ldr	r2, [r2]
+	str	r2, [sp, #12]
+	ldr	r2, [r3, #12]
+	str	r2, [sp, #8]
+	ldr	r2, [r3, #8]
+	str	r2, [sp, #4]
+	ldr	r2, [r3, #4]
+	str	r2, [sp]
+	ldr	r2, [r4, #1764]
+	ldr	r3, [r3]
+	bl	printk
+.L2911:
+	add	r5, r5, #1
+	b	.L2908
+.L2917:
 	.align	2
-.L2989:
-	.word	.LC146
+.L2916:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
+	.word	.LC146
 	.word	.LC147
-	.word	.LANCHOR2+1752
 	.word	.LC148
 	.fnend
 	.size	Ftlscanalldata, .-Ftlscanalldata
 	.align	2
 	.global	FtlReUsePrevPpa
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlReUsePrevPpa, %function
 FtlReUsePrevPpa:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr}
+	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, lr}
 	.save {r4, r5, r6, r7, r8, r9, lr}
 	.pad #12
 	mov	r5, r0
+	ldr	r6, .L2928
 	ubfx	r0, r1, #10, #16
 	str	r1, [sp, #4]
 	bl	P2V_block_in_plane
-	ldr	r6, .L3001
-	ldr	r4, [r6, #-3544]
-	mov	r7, r0, asl #1
-	ldrh	r3, [r4, r7]
+	ldr	r2, [r6, #-3540]
+	lsl	r7, r0, #1
+	ldrh	r3, [r2, r7]
 	cmp	r3, #0
-	addne	r3, r3, #1
-	strneh	r3, [r4, r7]	@ movhi
-	bne	.L2993
-	ldr	r4, [r6, #-3532]
+	bne	.L2919
+	ldr	r4, [r6, #-3528]
 	cmp	r4, #0
-	beq	.L2993
-	ldr	r1, [r6, #-3552]
-	sub	r2, r6, #3520
-	ldr	lr, .L3001+4
-	movw	r9, #65535
-	rsb	r4, r1, r4
-	ldrh	ip, [r2, #-8]
-	mov	r8, r2
-	mov	r4, r4, asr #1
-	mul	r4, lr, r4
+	beq	.L2920
+	ldr	r2, [r6, #-3548]
+	sub	r8, r6, #3520
+	ldr	ip, .L2928+4
 	mov	lr, #6
+	ldrh	r1, [r8, #-4]
+	movw	r9, #65535
+	sub	r4, r4, r2
+	asr	r4, r4, #1
+	mul	r4, ip, r4
 	uxth	r4, r4
-.L2994:
-	uxth	r2, r3
-	cmp	r2, ip
-	bcs	.L2993
+.L2921:
+	uxth	ip, r3
+	cmp	r1, ip
+	bls	.L2920
 	cmp	r4, r0
-	bne	.L2995
+	bne	.L2922
 	mov	r1, r4
-	ldr	r0, .L3001+8
+	sub	r0, r8, #8
 	bl	List_remove_node
-	ldrh	r3, [r8, #-8]
+	ldrh	r3, [r8, #-4]
 	mov	r0, r4
 	sub	r3, r3, #1
-	strh	r3, [r8, #-8]	@ movhi
+	strh	r3, [r8, #-4]	@ movhi
 	bl	INSERT_DATA_LIST
-	ldr	r2, [r6, #-3544]
+	ldr	r2, [r6, #-3540]
 	ldrh	r3, [r2, r7]
+.L2919:
 	add	r3, r3, #1
 	strh	r3, [r2, r7]	@ movhi
-	b	.L2993
-.L2995:
+	b	.L2920
+.L2922:
 	mul	r4, lr, r4
 	add	r3, r3, #1
-	ldrh	r4, [r1, r4]
+	ldrh	r4, [r2, r4]
 	cmp	r4, r9
-	bne	.L2994
-.L2993:
-	mov	r0, r5
-	add	r1, sp, #4
+	bne	.L2921
+.L2920:
 	mov	r2, #1
+	add	r1, sp, #4
+	mov	r0, r5
 	bl	log2phys
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, pc}
-.L3002:
+	pop	{r4, r5, r6, r7, r8, r9, pc}
+.L2929:
 	.align	2
-.L3001:
+.L2928:
 	.word	.LANCHOR2
 	.word	-1431655765
-	.word	.LANCHOR2-3532
 	.fnend
 	.size	FtlReUsePrevPpa, .-FtlReUsePrevPpa
 	.align	2
 	.global	FtlRecoverySuperblock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlRecoverySuperblock, %function
 FtlRecoverySuperblock:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 64
+	@ args = 0, pretend = 0, frame = 48
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldrh	r2, [r0]
+	movw	r1, #65535
+	cmp	r2, r1
+	beq	.L3075
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	movw	r2, #65535
-	ldrh	r3, [r0]
-	.pad #68
-	sub	sp, sp, #68
-	mov	r4, r0
-	cmp	r3, r2
-	beq	.L3144
+	movw	r2, #2390
+	ldr	r6, .L3087
+	.pad #52
+	sub	sp, sp, #52
+	mov	r10, r0
 	ldrh	r3, [r0, #2]
-	ldr	r5, .L3161
+	ldrh	r2, [r6, r2]
 	str	r3, [sp, #8]
-	ldrb	r3, [r0, #6]	@ zero_extendqisi2
-	ldr	r1, [sp, #8]
-	str	r3, [sp, #16]
-	movw	r3, #2388
-	ldrh	r3, [r5, r3]
-	cmp	r3, r1
-	mov	r3, #0
-	streqh	r3, [r0, #4]	@ movhi
-	streqb	r3, [r0, #6]
-	ldrneh	r0, [r0, #16]
-	beq	.L3144
-.L3007:
-	cmp	r0, r2
-	add	r3, r3, #1
-	uxtheq	r1, r3
-	addeq	r1, r4, r1, asl #1
-	ldreqh	r0, [r1, #16]
-	beq	.L3007
-.L3156:
-	ldrb	r1, [r4, #8]	@ zero_extendqisi2
-	mov	r9, r4
+	cmp	r2, r3
+	mov	r2, #0
+	strheq	r2, [r0, #4]	@ movhi
+	strbeq	r2, [r0, #6]
+	ldrhne	r0, [r0, #16]
+	bne	.L2934
+.L3073:
+	mov	r0, #0
+	add	sp, sp, #52
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L2935:
+	uxth	r0, r2
+	add	r0, r10, r0, lsl #1
+	ldrh	r0, [r0, #16]
+.L2934:
+	cmp	r0, r1
+	add	r2, r2, #1
+	beq	.L2935
+	ldrb	r1, [r10, #8]	@ zero_extendqisi2
+	ldrb	r3, [r10, #6]	@ zero_extendqisi2
 	cmp	r1, #1
-	bne	.L3009
+	str	r3, [sp, #12]
+	bne	.L2936
 	bl	FtlGetLastWrittenPage
 	cmn	r0, #1
 	mov	r4, r0
-	beq	.L3010
-	ldrb	r3, [r5, #144]	@ zero_extendqisi2
+	beq	.L2937
+	ldrb	r3, [r6, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L3147
-	ldr	r3, .L3161
-	add	r3, r3, r0, asl #1
-	ldrh	r6, [r3, #148]
-	b	.L3081
-.L3009:
+	addeq	r3, r6, r0, lsl #1
+	ldrheq	r5, [r3, #156]
+	beq	.L2938
+.L3008:
+	mov	r5, r4
+.L2938:
+	movw	r3, #2324
+	mov	r2, #0
+	ldrh	r3, [r6, r3]
+	movw	r8, #65535
+	mov	r9, #36
+	str	r3, [sp]
+	ldr	r3, .L3087+4
+	ldr	r0, [r3, #-536]
+	ldr	lr, [r3, #-2692]
+	movw	r3, #2402
+	ldrh	r7, [r6, r3]
+	add	r3, r10, #16
+	mov	ip, r3
+	mov	r6, r2
+	str	r3, [sp, #20]
+.L2939:
+	ldr	r1, [sp]
+	uxth	r3, r2
+	cmp	r1, r3
+	bhi	.L2941
+	ldrb	r3, [r10, #8]	@ zero_extendqisi2
+	cmp	r3, #1
+	movne	r3, #0
+	bne	.L3078
+	ldr	r3, .L3087
+	ldrb	r3, [r3, #152]	@ zero_extendqisi2
+	adds	r3, r3, #0
+	movne	r3, #1
+.L3078:
+	ldr	r7, .L3087+4
+	mov	r1, r6
+	str	r3, [sp, #24]
+	mov	r8, #0
+	ldr	r2, [sp, #24]
+	movw	r9, #65535
+	bl	FlashReadPages
+	ldr	r3, [r7, #-3328]
+	mov	fp, r7
+	str	r3, [sp, #16]
+.L2943:
+	uxth	r3, r8
+	cmp	r6, r3
+	bhi	.L2948
+	bne	.L2946
+	add	r4, r4, #1
+	uxth	r3, r4
+	str	r3, [sp]
+	ldr	r3, [r7, #-536]
+	ldr	r0, [r3, #4]
+.L3079:
+	ubfx	r0, r0, #10, #16
+	bl	P2V_plane
+	ldrb	r2, [r10, #8]	@ zero_extendqisi2
+	str	r0, [sp, #4]
+	ldr	r3, .L3087
+	cmp	r2, #1
+	bne	.L2950
+	ldrb	r1, [r3, #152]	@ zero_extendqisi2
+	cmp	r1, #0
+	ldreq	r1, [sp]
+	addeq	r4, r3, r1, lsl #1
+	ldrheq	r1, [r4, #156]
+	streq	r1, [sp]
+.L2950:
+	movw	r1, #2390
+	ldrh	r3, [r3, r1]
+	ldr	r1, [sp]
+	cmp	r3, r1
+	ldmib	sp, {r0, r1}
+	ldrheq	r3, [sp]
+	strheq	r3, [r10, #2]	@ movhi
+	moveq	r3, #0
+	strbeq	r3, [r10, #6]
+	strheq	r3, [r10, #4]	@ movhi
+	ldrh	r3, [sp, #12]
+	str	r3, [sp, #28]
+	ldr	ip, [sp, #28]
+	ldr	r3, [sp]
+	cmp	r3, r1
+	cmpeq	r0, ip
+	moveq	r2, r0
+	moveq	r1, r3
+	beq	.L3085
+	ldr	r3, [sp, #16]
+	sub	fp, r3, #1
+	movw	r3, #65535
+	subs	r9, r9, r3
+	movne	r9, #1
+	cmp	r2, #0
+	orreq	r9, r9, #1
+	cmp	r9, #0
+	beq	.L2954
+	ldr	r3, [r7, #-368]
+	uxth	r8, r5
+	uxth	r5, r5
+	cmn	r3, #1
+	streq	fp, [r7, #-368]
+	ldr	r3, [r7, #-368]
+	mvn	r7, #0
+	mov	r6, r7
+	str	r3, [sp, #12]
+	ldr	r3, [sp, #8]
+	add	r3, r3, #7
+	cmp	r5, r3
+	subgt	r4, r8, #7
+	ldrle	r4, [sp, #8]
+	uxthgt	r4, r4
+.L2957:
+	cmp	r4, r8
+	ldr	r3, .L3087+4
+	bhi	.L2970
+	ldr	r2, .L3087+8
+	mov	ip, #36
+	ldr	r0, [r3, #-536]
+	mov	r3, #0
+	ldr	r1, [sp, #20]
+	mov	r5, r3
+	ldrh	r9, [r2]
+	b	.L2971
+.L2936:
 	mov	r1, #0
 	bl	FtlGetLastWrittenPage
 	cmn	r0, #1
 	mov	r4, r0
-	beq	.L3010
-.L3147:
-	mov	r6, r4
-.L3081:
-	ldr	r3, .L3161+4
-	movw	r8, #65535
-	ldrh	r2, [r3], #80
-	str	r2, [sp, #4]
-	ldr	r2, .L3161+8
-	ldrh	r7, [r3]
-	add	r3, r9, #14
-	str	r3, [sp, #20]
-	ldr	ip, [r2, #-536]
-	mov	r0, r3
-	ldr	lr, [r2, #-2692]
-	mov	r2, #0
-	mov	r5, r2
-	mov	r10, r2
-	b	.L3012
-.L3010:
+	bne	.L3008
+.L2937:
 	mov	r3, #0
-	strh	r3, [r9, #2]	@ movhi
-	strb	r3, [r9, #6]
-	b	.L3144
-.L3014:
-	ldrh	r3, [r0, #2]!
+	strh	r3, [r10, #2]	@ movhi
+.L3084:
+	strb	r3, [r10, #6]
+	b	.L3073
+.L2941:
+	ldrh	r3, [ip], #2
 	cmp	r3, r8
-	beq	.L3013
-	mov	r1, #36
-	orr	r3, r6, r3, asl #10
-	mla	r1, r1, r5, ip
-	stmib	r1, {r3, r10}
-	mul	r3, r7, r5
-	add	r5, r5, #1
-	uxth	r5, r5
+	beq	.L2940
+	mla	r1, r9, r6, r0
+	orr	r3, r5, r3, lsl #10
+	str	r3, [r1, #4]
+	mov	r3, #0
+	str	r3, [r1, #8]
+	mul	r3, r7, r6
+	add	r6, r6, #1
+	uxth	r6, r6
 	add	fp, r3, #3
 	cmp	r3, #0
 	movlt	r3, fp
 	bic	r3, r3, #3
 	add	r3, lr, r3
 	str	r3, [r1, #12]
-.L3013:
+.L2940:
 	add	r2, r2, #1
-.L3012:
-	ldr	r1, [sp, #4]
-	uxth	r3, r2
-	cmp	r3, r1
-	bcc	.L3014
-	ldrb	r3, [r9, #8]	@ zero_extendqisi2
-	cmp	r3, #1
-	movne	r3, #0
-	bne	.L3148
-	ldr	r3, .L3161
-	ldrb	lr, [r3, #144]	@ zero_extendqisi2
-	adds	r3, lr, #0
-	movne	r3, #1
-.L3148:
-	ldr	r7, .L3161+8
-	mov	r1, r5
-	str	r3, [sp, #24]
-	mov	fp, #0
-	ldr	r2, [sp, #24]
-	movw	r10, #65535
-	ldr	r0, [r7, #-536]
-	bl	FlashReadPages
-	ldr	r3, [r7, #-3328]
-	str	r7, [sp, #12]
-	str	r3, [sp, #28]
-.L3016:
-	uxth	r8, fp
-	cmp	r8, r5
-	bcs	.L3023
-	mov	r1, #36
-	ldr	r0, [r7, #-536]
-	mul	r1, r1, fp
-	add	ip, r0, r1
-	ldr	r1, [r0, r1]
-	cmp	r1, #0
-	bne	.L3017
-	ldr	ip, [ip, #12]
-	ldr	r3, [ip, #4]
+	b	.L2939
+.L2948:
+	mov	r3, #36
+	ldr	r1, [fp, #-536]
+	mul	r3, r3, r8
+	add	r2, r1, r3
+	ldr	r3, [r1, r3]
+	cmp	r3, #0
+	bne	.L2944
+	ldr	r2, [r2, #12]
+	ldr	r3, [r2, #4]
 	cmn	r3, #1
-	beq	.L3018
+	beq	.L2945
+	ldr	r1, [fp, #-3328]
 	mov	r0, r3
-	ldr	r1, [r7, #-3328]
-	str	ip, [sp, #32]
-	str	r3, [sp, #4]
 	bl	ftl_cmp_data_ver
-	ldr	r3, [sp, #4]
 	cmp	r0, #0
-	ldr	ip, [sp, #32]
 	addne	r3, r3, #1
-	strne	r3, [r7, #-3328]
-.L3018:
-	ldr	r1, [ip]
-	cmn	r1, #1
-	bne	.L3019
-.L3023:
-	cmp	r8, r5
-	ldr	r5, .L3161+8
-	bne	.L3145
-	add	fp, r4, #1
-	uxth	r3, fp
-	str	r3, [sp, #4]
-	ldr	r3, [r5, #-536]
-	ldr	r0, [r3, #4]
-	b	.L3149
-.L3017:
-	ldr	r1, [ip, #4]
-	uxth	r10, r6
-	ldr	r0, .L3161+12
-	bl	printk
-	ldrh	r1, [r9]
-	ldr	r3, .L3161+16
-	strh	r1, [r3]	@ movhi
-.L3019:
-	add	fp, fp, #1
-	b	.L3016
-.L3145:
+	strne	r3, [fp, #-3328]
+.L2945:
+	ldr	r3, [r2]
+	cmn	r3, #1
+	bne	.L2947
+.L2946:
 	uxth	r3, r4
-	str	r3, [sp, #4]
-	ldr	r3, [sp, #12]
+	uxth	r8, r8
+	str	r3, [sp]
 	mov	r2, #36
-	ldr	r3, [r3, #-536]
+	ldr	r3, [r7, #-536]
 	mla	r8, r2, r8, r3
 	ldr	r0, [r8, #4]
-.L3149:
-	ubfx	r0, r0, #10, #16
-	bl	P2V_plane
-	ldr	r2, .L3161
-	str	r0, [sp, #12]
-	ldrb	r0, [r9, #8]	@ zero_extendqisi2
-	cmp	r0, #1
-	bne	.L3025
-	ldrb	r3, [r2, #144]	@ zero_extendqisi2
-	cmp	r3, #0
-	ldreq	r3, [sp, #4]
-	addeq	fp, r2, r3, asl #1
-	ldreqh	r3, [fp, #148]
-	streq	r3, [sp, #4]
-.L3025:
-	movw	r3, #2388
-	ldr	r1, [sp, #12]
-	ldrh	r3, [r2, r3]
-	ldr	r2, [sp, #4]
-	cmp	r3, r2
-	ldr	r2, [sp, #8]
-	ldreqh	r3, [sp, #4]
-	streqh	r3, [r9, #2]	@ movhi
-	moveq	r3, #0
-	streqb	r3, [r9, #6]
-	streqh	r3, [r9, #4]	@ movhi
-	ldrh	r3, [sp, #16]
-	str	r3, [sp, #32]
-	ldr	ip, [sp, #32]
-	ldr	r3, [sp, #4]
-	cmp	r3, r2
-	cmpeq	r1, ip
-	moveq	r0, r9
-	moveq	r1, r3
-	beq	.L3154
-	ldr	r3, [sp, #28]
-	movw	r2, #65535
-	sub	fp, r3, #1
-	clz	r3, r0
-	mov	r3, r3, lsr #5
-	cmp	r10, r2
-	orrne	r3, r3, #1
-	cmp	r3, #0
-	beq	.L3029
-	ldr	r3, [r5, #-368]
-	uxth	r10, r6
-	ldr	r7, .L3161+8
-	mvn	r8, #0
-	cmn	r3, #1
-	mov	r6, r8
-	ldreq	r3, .L3161+8
-	streq	fp, [r3, #-368]
-	ldr	r3, [r5, #-368]
-	str	r3, [sp, #16]
-	ldr	r3, [sp, #8]
-	add	r3, r3, #7
-	cmp	r10, r3
-	subgt	r4, r10, #7
-	ldrle	r4, [sp, #8]
-	uxthgt	r4, r4
-.L3032:
-	cmp	r4, r10
-	bhi	.L3045
-	ldr	r3, .L3161+4
-	mov	r0, #36
-	ldr	lr, [r7, #-536]
-	ldr	r1, [sp, #20]
-	ldrh	r3, [r3]
-	str	r3, [sp, #28]
-	mov	r3, #0
-	mov	r5, r3
-.L3046:
-	ldr	ip, [sp, #28]
-	uxth	r2, r3
-	cmp	r2, ip
-	bcs	.L3157
-	ldrh	r2, [r1, #2]!
-	movw	ip, #65535
+	b	.L3079
+.L2944:
+	ldr	r1, [r2, #4]
+	uxth	r9, r5
+	ldr	r0, .L3087+12
+	bl	printk
+	ldrh	r3, [r10]
+	ldr	r2, .L3087+16
+	strh	r3, [r2]	@ movhi
+.L2947:
+	add	r8, r8, #1
+	b	.L2943
+.L2959:
+	ldrh	r2, [r1], #2
+	movw	lr, #65535
 	add	r3, r3, #1
-	cmp	r2, ip
-	orrne	r2, r4, r2, asl #10
-	mlane	ip, r0, r5, lr
+	cmp	r2, lr
+	mlane	lr, ip, r5, r0
 	addne	r5, r5, #1
+	orrne	r2, r4, r2, lsl #10
 	uxthne	r5, r5
-	strne	r2, [ip, #4]
-	b	.L3046
-.L3157:
+	strne	r2, [lr, #4]
+.L2971:
+	uxth	r2, r3
+	cmp	r2, r9
+	bcc	.L2959
 	mov	r1, r5
 	ldr	r2, [sp, #24]
-	ldr	r0, [r7, #-536]
 	bl	FlashReadPages
-	ldr	r3, .L3161
-	mov	r2, #36
+	ldr	r3, .L3087
+	mov	r1, #36
+	ldr	r2, .L3087+4
+	ldr	r0, .L3087+20
+	ldrb	ip, [r3, #152]	@ zero_extendqisi2
+	ldr	r3, [r2, #-536]
+	add	lr, r0, r4, lsl #1
+	mla	r5, r1, r5, r3
 	movw	r1, #65535
-	ldrb	ip, [r3, #144]	@ zero_extendqisi2
-	ldr	r3, [r7, #-536]
-	mla	r5, r2, r5, r3
-	ldr	r2, .L3161+20
-	add	r2, r2, r4, asl #1
-.L3035:
-	cmp	r3, r5
-	beq	.L3158
+.L2960:
+	cmp	r5, r3
+	addeq	r4, r4, #1
+	uxtheq	r4, r4
+	beq	.L2957
+.L2969:
 	ldr	r0, [r3]
 	cmp	r0, #0
-	bne	.L3036
+	bne	.L2961
 	ldr	r0, [r3, #12]
-	ldrh	lr, [r0]
-	cmp	lr, r1
-	beq	.L3037
+	ldrh	r9, [r0]
+	cmp	r9, r1
+	beq	.L2962
 	ldr	r0, [r0, #4]
 	cmn	r0, #1
-	beq	.L3037
-	cmn	r8, #1
-	ldr	r6, [r7, #-368]
-	str	r0, [r7, #-368]
-	bne	.L3037
-	ldrh	r0, [r2]
+	beq	.L2962
+	cmn	r7, #1
+	ldr	r6, [r2, #-368]
+	str	r0, [r2, #-368]
+	bne	.L2962
+	ldrh	r0, [lr]
 	cmp	r0, r1
-	bne	.L3038
+	bne	.L2963
 	cmp	ip, #0
-	beq	.L3037
-.L3038:
-	cmp	r6, fp
-	mvneq	r8, #0
-	movne	r8, r6
-	b	.L3037
-.L3036:
-	ldrh	r1, [r9]
-	movw	r3, #1848
-	ldr	r2, .L3161+24
-	strh	r1, [r2, r3]	@ movhi
-	ldrb	r3, [r9, #8]	@ zero_extendqisi2
-	cmp	r3, #0
-	bne	.L3029
-	ldr	r2, .L3161+20
-	mov	r4, r4, asl #1
-	ldr	r3, .L3161+8
+	beq	.L2962
+.L2963:
+	cmp	fp, r6
+	movne	r7, r6
+.L2962:
+	add	r3, r3, #36
+	b	.L2960
+.L2961:
+	ldrh	r1, [r10]
+	movw	r2, #1846
+	ldr	r3, .L3087+4
+	strh	r1, [r3, r2]	@ movhi
+	ldrb	r2, [r10, #8]	@ zero_extendqisi2
+	cmp	r2, #0
+	bne	.L2954
+	ldr	r2, .L3087+20
+	lsl	r4, r4, #1
 	ldrh	r1, [r2, r4]
 	movw	r2, #65535
 	cmp	r1, r2
-	bne	.L3040
-	cmn	r8, #1
-	strne	r8, [r3, #-368]
-	bne	.L3029
-	ldr	r2, [sp, #16]
-	cmp	r2, fp
-	bne	.L3150
+	bne	.L2965
+	cmn	r7, #1
+	strne	r7, [r3, #-368]
+	bne	.L2954
+	ldr	r2, [sp, #12]
+	cmp	fp, r2
+	beq	.L2967
+.L3080:
+	str	r2, [r3, #-368]
+	b	.L2954
+.L2967:
 	ldr	r2, [r3, #-368]
-	b	.L3155
-.L3040:
+.L3086:
+	sub	r2, r2, #1
+	b	.L3080
+.L2965:
 	cmp	r6, fp
-	beq	.L3043
+	beq	.L2968
 	cmn	r6, #1
 	strne	r6, [r3, #-368]
-	b	.L3029
-.L3043:
-	ldr	r2, [r3, #-368]
-	cmp	r2, fp
-	beq	.L3029
-.L3155:
-	sub	r2, r2, #1
-	b	.L3150
-.L3037:
-	add	r3, r3, #36
-	b	.L3035
-.L3158:
-	add	r4, r4, #1
-	uxth	r4, r4
-	b	.L3032
-.L3045:
-	ldr	r3, .L3161+8
-	mvn	r2, #0
-.L3150:
-	str	r2, [r3, #-368]
-.L3029:
-	ldr	r2, .L3161+24
-	movw	r3, #1850
-	ldr	r10, [sp, #8]
-	mov	r1, #1
-	ldr	r4, .L3161+8
-	strh	r1, [r2, r3]	@ movhi
-.L3047:
-	ldr	r3, .L3161+4
-	movw	r1, #65535
-	ldr	r8, [r4, #-536]
-	mov	r0, #36
-	ldr	r6, [sp, #20]
-	mov	r5, #0
-	ldrh	r7, [r3]
-	ldrb	lr, [r3, #-2176]	@ zero_extendqisi2
-	str	r5, [sp, #16]
-.L3048:
-	uxth	r3, r5
-	cmp	r3, r7
-	bcs	.L3159
-	ldrh	r3, [r6, #2]!
-	cmp	r3, r1
-	beq	.L3049
-	ldr	r2, [sp, #16]
-	orr	r3, r10, r3, asl #10
-	mla	r2, r0, r2, r8
-	str	r3, [r2, #4]
-	ldrb	ip, [r9, #8]	@ zero_extendqisi2
-	cmp	ip, #1
-	bne	.L3050
-	cmp	lr, #0
-	orrne	r3, r3, #-2147483648
-	strne	r3, [r2, #4]
-.L3050:
-	ldr	r3, [sp, #16]
-	add	r3, r3, #1
-	uxth	r3, r3
-	str	r3, [sp, #16]
-.L3049:
-	add	r5, r5, #1
-	b	.L3048
-.L3159:
+.L2954:
+	ldr	r9, [sp, #8]
+	mov	r2, #1
+	ldr	r4, .L3087+4
+	movw	r3, #1848
+	strh	r2, [r4, r3]	@ movhi
+.L2972:
+	ldr	r3, .L3087+8
+	movw	r6, #65535
 	ldr	r0, [r4, #-536]
-	ldr	r1, [sp, #16]
+	mov	r7, #36
+	ldr	r1, [sp, #20]
+	mov	r2, #0
+	ldrh	lr, [r3]
+	ldr	r3, .L3087
+	str	r2, [sp, #12]
+	ldrb	r5, [r3, #152]	@ zero_extendqisi2
+.L2973:
+	uxth	r3, r2
+	cmp	lr, r3
+	bhi	.L2976
 	ldr	r2, [sp, #24]
+	ldr	r1, [sp, #12]
 	bl	FlashReadPages
 	mov	r3, #0
-.L3153:
-	str	r3, [sp, #28]
-	ldr	r2, [sp, #16]
-	ldrh	r3, [sp, #28]
-	cmp	r3, r2
-	bcs	.L3160
-	ldr	r3, [sp, #28]
-	mov	r5, #36
+.L3083:
+	str	r3, [sp, #16]
+	ldr	r2, [sp, #12]
+	ldrh	r3, [sp, #16]
+	cmp	r2, r3
+	bhi	.L3002
+	ldrb	r3, [r10, #8]	@ zero_extendqisi2
+	add	r9, r9, #1
+	uxth	r9, r9
+	cmp	r3, #1
+	bne	.L3003
+	ldr	r3, .L3087
+	ldrb	r3, [r3, #152]	@ zero_extendqisi2
+	cmp	r3, #0
+	beq	.L3003
+	ldr	r3, .L3087+24
+	ldr	r2, [sp]
+	ldrh	r3, [r3]
+	cmp	r3, r9
+	cmpeq	r2, r9
+	beq	.L2979
+.L3003:
+	ldr	r3, .L3087+28
+	ldrh	r3, [r3]
+	cmp	r3, r9
+	bne	.L2972
+	ldr	r1, .L3087
+	movw	r2, #2324
+	movw	r0, #65535
+	mov	r3, #0
+	strh	r9, [r10, #2]	@ movhi
+	ldrh	r2, [r1, r2]
+	strh	r3, [r10, #4]	@ movhi
+.L3004:
+	uxth	r1, r3
+	cmp	r1, r2
+	bcs	.L3073
+	ldr	r1, [sp, #20]
+	ldrh	ip, [r1], #2
+	cmp	ip, r0
+	str	r1, [sp, #20]
+	add	r1, r3, #1
+	bne	.L3084
+	mov	r3, r1
+	b	.L3004
+.L2968:
+	ldr	r2, [r3, #-368]
+	cmp	fp, r2
+	bne	.L3086
+	b	.L2954
+.L2970:
+	mvn	r2, #0
+	b	.L3080
+.L2976:
+	ldrh	r3, [r1], #2
+	cmp	r3, r6
+	beq	.L2974
+	ldr	ip, [sp, #12]
+	orr	r3, r9, r3, lsl #10
+	mla	ip, r7, ip, r0
+	str	r3, [ip, #4]
+	ldrb	r8, [r10, #8]	@ zero_extendqisi2
+	cmp	r8, #1
+	bne	.L2975
+	cmp	r5, #0
+	orrne	r3, r3, #-2147483648
+	strne	r3, [ip, #4]
+.L2975:
+	ldr	r3, [sp, #12]
+	add	r3, r3, #1
+	uxth	r3, r3
+	str	r3, [sp, #12]
+.L2974:
+	add	r2, r2, #1
+	b	.L2973
+.L3002:
+	ldr	r3, [sp, #16]
+	mov	r6, #36
 	ldr	r8, [r4, #-536]
-	mul	r5, r5, r3
-	add	r7, r8, r5
-	ldr	r6, [r7, #4]
-	ubfx	r0, r6, #10, #16
-	str	r6, [sp, #60]
+	mul	r6, r6, r3
+	add	r7, r8, r6
+	ldr	r5, [r7, #4]
+	ubfx	r0, r5, #10, #16
+	str	r5, [sp, #44]
 	bl	P2V_plane
 	ldr	r3, [sp, #8]
-	cmp	r10, r3
-	bcc	.L3053
-	ldr	r3, [sp, #32]
-	ldr	r2, [sp, #8]
-	cmp	r0, r3
-	movcs	r3, #0
-	movcc	r3, #1
-	cmp	r10, r2
+	cmp	r9, r3
+	bcc	.L2978
+	ldr	r2, [sp, #28]
+	moveq	r3, #1
 	movne	r3, #0
+	cmp	r2, r0
+	movls	r3, #0
+	andhi	r3, r3, #1
 	cmp	r3, #0
-	bne	.L3053
-	ldr	r3, [sp, #12]
+	bne	.L2978
+	ldr	r3, [sp]
 	ldr	r2, [sp, #4]
-	cmp	r0, r3
-	cmpeq	r10, r2
-	beq	.L3054
-	ldr	r3, [r8, r5]
+	cmp	r9, r3
+	cmpeq	r2, r0
+	beq	.L2979
+	ldr	r3, [r8, r6]
 	cmn	r3, #1
-	beq	.L3055
-	ldr	r7, [r7, #12]
-	movw	r3, #61589
-	ldrh	r2, [r7]
-	cmp	r2, r3
-	ldrneh	r0, [r9]
-	bne	.L3151
-	ldr	fp, [r7, #4]
+	beq	.L2980
+	ldr	r3, [r7, #12]
+	movw	r2, #61589
+	ldrh	r1, [r3]
+	cmp	r1, r2
+	ldrhne	r0, [r10]
+	bne	.L3081
+	ldr	fp, [r3, #4]
 	cmn	fp, #1
-	beq	.L3057
+	beq	.L2982
 	ldr	r1, [r4, #-3328]
 	mov	r0, fp
 	bl	ftl_cmp_data_ver
 	cmp	r0, #0
-	addne	r3, fp, #1
-	strne	r3, [r4, #-3328]
-.L3057:
-	ldr	r6, [r7, #8]
-	add	r1, sp, #56
-	ldr	r3, [r7, #12]
+	addne	r2, fp, #1
+	strne	r2, [r4, #-3328]
+.L2982:
+	ldr	r5, [r3, #8]
+	add	r1, sp, #40
+	ldr	r3, [r3, #12]
 	mov	r2, #0
-	mov	r0, r6
-	str	r3, [sp, #52]
+	mov	r0, r5
+	str	r3, [sp, #36]
 	bl	log2phys
 	ldr	r1, [r4, #-368]
 	cmn	r1, #1
-	beq	.L3058
+	beq	.L2983
 	mov	r0, fp
 	bl	ftl_cmp_data_ver
 	cmp	r0, #0
-	beq	.L3058
-	ldr	r3, [sp, #52]
+	beq	.L2983
+	ldr	r3, [sp, #36]
 	cmn	r3, #1
-	beq	.L3059
+	beq	.L2984
 	ldr	r0, [r4, #-536]
 	mov	r2, #0
 	mov	r1, #1
-	add	r0, r0, r5
+	add	r0, r0, r6
 	str	r3, [r0, #4]
-	ldr	r8, [r0, #12]
-	bl	FlashReadPages
-	ldr	r2, [r4, #-536]
-	ldr	r3, [r8, #4]
-	add	ip, r2, r5
-	str	r3, [sp, #36]
-	ldr	r3, [r2, r5]
-	cmn	r3, #1
-	bne	.L3060
-	b	.L3061
-.L3059:
-	ldr	r3, [sp, #60]
-	ldr	r2, [sp, #56]
-	cmp	r2, r3
-	bne	.L3053
-	mov	r0, r6
-	add	r1, sp, #52
-	mov	r2, #1
-	bl	log2phys
-	b	.L3053
-.L3060:
-	ldr	r7, [r8, #8]
-	cmp	r7, r6
-	bne	.L3061
-	ldr	r0, [r4, #-368]
-	ldr	r1, [sp, #36]
-	str	r2, [sp, #44]
-	str	ip, [sp, #40]
-	bl	ftl_cmp_data_ver
-	cmp	r0, #0
-	ldr	ip, [sp, #40]
-	ldr	r2, [sp, #44]
-	beq	.L3061
-	ldr	r3, [sp, #56]
-	ldr	r1, [sp, #60]
-	cmp	r3, r1
-	beq	.L3066
-	ldr	r1, [sp, #52]
-	cmp	r3, r1
-	beq	.L3061
-	cmn	r3, #1
-	streq	r3, [r2, r5]
-	beq	.L3065
-	str	r3, [ip, #4]
-	mov	r0, ip
-	mov	r1, #1
-	mov	r2, #0
-	ldr	r8, [ip, #12]
-	bl	FlashReadPages
-.L3065:
-	ldr	r3, [r4, #-536]
-	ldr	r3, [r3, r5]
-	cmn	r3, #1
-	beq	.L3066
-	ldr	r5, [r8, #4]
-	ldr	r0, [r4, #-368]
-	mov	r1, r5
-	bl	ftl_cmp_data_ver
-	cmp	r0, #0
-	beq	.L3066
-	ldr	r0, [sp, #36]
-	mov	r1, r5
-	bl	ftl_cmp_data_ver
-	cmp	r0, #0
-	beq	.L3061
-.L3066:
-	mov	r0, r7
-	ldr	r1, [sp, #52]
-	bl	FtlReUsePrevPpa
-.L3061:
-	mvn	r3, #0
-	str	r3, [sp, #52]
-	b	.L3068
-.L3058:
-	ldr	r3, [sp, #60]
-	ldr	r2, [sp, #56]
-	cmp	r2, r3
-	beq	.L3068
-	ldr	r3, [sp, #52]
-	cmn	r3, #1
-	beq	.L3070
-	ldr	r2, .L3161
-	ubfx	r3, r3, #10, #21
-	ldr	r2, [r2, #2336]
-	cmp	r3, r2
-	bcs	.L3053
-.L3070:
-	mov	r0, r6
-	add	r1, sp, #60
-	mov	r2, #1
-	bl	log2phys
-	ldr	r5, [sp, #56]
-	cmn	r5, #1
-	beq	.L3068
-	ldr	r3, [sp, #52]
-	cmp	r5, r3
-	beq	.L3068
-	ubfx	r0, r5, #10, #16
-	bl	P2V_block_in_plane
-	ldr	r3, .L3161+28
-	ldrh	r2, [r3]
-	cmp	r2, r0
-	beq	.L3072
-	ldrh	r2, [r3, #48]
-	cmp	r2, r0
-	beq	.L3072
-	ldrh	r3, [r3, #96]
-	cmp	r3, r0
-	bne	.L3068
-.L3072:
-	ldr	r0, [r4, #-536]
-	mov	r1, #1
-	mov	r2, #0
-	str	r5, [r0, #4]
 	ldr	r7, [r0, #12]
 	bl	FlashReadPages
-	ldr	r3, [r4, #-536]
-	ldr	r1, [r7, #4]
-	ldr	r3, [r3]
-	cmn	r3, #1
-	beq	.L3068
-	mov	r0, fp
-	bl	ftl_cmp_data_ver
-	cmp	r0, #0
-	bne	.L3068
-	mov	r0, r6
-	add	r1, sp, #56
-	mov	r2, #1
-	bl	log2phys
-.L3068:
-	ldr	r0, [sp, #52]
-	cmn	r0, #1
-	beq	.L3053
-	ubfx	r0, r0, #10, #16
+	ldr	r2, [r4, #-536]
+	ldr	r1, [r2, r6]
+	add	r3, r2, r6
+	cmn	r1, #1
+	bne	.L2985
+.L2986:
+	mvn	r3, #0
+	str	r3, [sp, #36]
+.L2993:
+	ldr	r8, [sp, #36]
+	cmn	r8, #1
+	beq	.L2978
+.L3007:
+	ubfx	r0, r8, #10, #16
 	bl	P2V_block_in_plane
-	ldr	r2, [r4, #-3544]
-	mov	r3, r0, asl #1
+	ldr	r2, [r4, #-3540]
+	lsl	r3, r0, #1
 	mov	r1, r0
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	beq	.L3073
-.L3151:
+	beq	.L2999
+.L3081:
 	bl	decrement_vpc_count
-	b	.L3053
-.L3073:
-	ldr	r0, .L3161+32
+	b	.L2978
+.L2984:
+	ldr	r3, [sp, #44]
+	ldr	r2, [sp, #40]
+	cmp	r2, r3
+	bne	.L2978
+	mov	r2, #1
+	add	r1, sp, #36
+	mov	r0, r5
+	bl	log2phys
+.L2978:
+	ldr	r3, [sp, #16]
+	add	r3, r3, #1
+	b	.L3083
+.L2985:
+	ldr	r1, [r7, #8]
+	cmp	r5, r1
+	bne	.L2986
+	ldr	r8, [r7, #4]
+	ldr	r0, [r4, #-368]
+	mov	r1, r8
+	bl	ftl_cmp_data_ver
+	cmp	r0, #0
+	beq	.L2986
+	ldr	r1, [sp, #40]
+	ldr	r0, [sp, #44]
+	cmp	r1, r0
+	bne	.L2988
+.L2991:
+	ldr	r1, [sp, #36]
+	mov	r0, r5
+	bl	FtlReUsePrevPpa
+	b	.L2986
+.L2988:
+	ldr	r0, [sp, #36]
+	cmp	r1, r0
+	beq	.L2986
+	cmn	r1, #1
+	streq	r1, [r2, r6]
+	beq	.L2990
+	str	r1, [r3, #4]
+	mov	r2, #0
+	mov	r1, #1
+	mov	r0, r3
+	ldr	r7, [r3, #12]
+	bl	FlashReadPages
+.L2990:
+	ldr	r3, [r4, #-536]
+	ldr	r3, [r3, r6]
+	cmn	r3, #1
+	beq	.L2991
+	ldr	r3, [r7, #4]
+	ldr	r0, [r4, #-368]
+	mov	r1, r3
+	bl	ftl_cmp_data_ver
+	cmp	r0, #0
+	beq	.L2991
+	mov	r1, r3
+	mov	r0, r8
+	bl	ftl_cmp_data_ver
+	cmp	r0, #0
+	beq	.L2986
+	b	.L2991
+.L2983:
+	ldr	r3, [sp, #44]
+	ldr	r2, [sp, #40]
+	cmp	r2, r3
+	beq	.L2993
+	ldr	r3, [sp, #36]
+	cmn	r3, #1
+	beq	.L2995
+	ldr	r2, .L3087
+	ubfx	r3, r3, #10, #21
+	ldr	r2, [r2, #2340]
+	cmp	r3, r2
+	bcs	.L2978
+.L2995:
+	mov	r2, #1
+	add	r1, sp, #44
+	mov	r0, r5
+	bl	log2phys
+	ldr	r8, [sp, #40]
+	cmn	r8, #1
+	beq	.L2993
+	ldr	r3, [sp, #36]
+	cmp	r8, r3
+	beq	.L3007
+	ldr	r6, .L3087+32
+	ubfx	r0, r8, #10, #16
+	bl	P2V_block_in_plane
+	ldrh	r3, [r6]
+	cmp	r3, r0
+	beq	.L2998
+	add	r2, r6, #48
+	ldrh	r2, [r2]
+	cmp	r2, r0
+	beq	.L2998
+	add	r3, r6, #96
+	ldrh	r3, [r3]
+	cmp	r3, r0
+	bne	.L2993
+.L2998:
+	ldr	r0, [r6, #2984]
+	mov	r2, #0
+	mov	r1, #1
+	str	r8, [r0, #4]
+	ldr	r7, [r0, #12]
+	bl	FlashReadPages
+	ldr	r3, [r6, #2984]
+	ldr	r3, [r3]
+	cmn	r3, #1
+	beq	.L2993
+	ldr	r1, [r7, #4]
+	mov	r0, fp
+	bl	ftl_cmp_data_ver
+	cmp	r0, #0
+	bne	.L2993
+	mov	r2, #1
+	add	r1, sp, #40
+	mov	r0, r5
+	bl	log2phys
+	b	.L2993
+.L2999:
+	ldr	r0, .L3087+36
 	bl	printk
-	b	.L3053
-.L3055:
-	ldrh	r3, [r9]
-	mov	r1, r6
-	ldr	r2, .L3161+16
-	ldr	r0, .L3161+36
+	b	.L2978
+.L2980:
+	ldrh	r3, [r10]
+	mov	r1, r5
+	ldr	r2, .L3087+16
+	ldr	r0, .L3087+40
 	strh	r3, [r2]	@ movhi
 	mov	r2, fp
 	bl	printk
-	ldr	r3, .L3161+24
-	ldr	r3, [r3, #1852]
+	ldr	r3, [r4, #1852]
 	cmp	r3, #31
-	bhi	.L3074
-	ldr	r2, .L3161+24
-	ldr	r1, [sp, #60]
-	add	r2, r2, r3, asl #2
-	add	r3, r3, #1
-	str	r1, [r2, #1856]
-	ldr	r2, .L3161+24
-	str	r3, [r2, #1852]
-.L3074:
-	ldrh	r0, [r9]
+	ldrls	r1, [sp, #44]
+	addls	r2, r4, r3, lsl #2
+	addls	r3, r3, #1
+	strls	r3, [r4, #1852]
+	strls	r1, [r2, #1856]
+	ldrh	r0, [r10]
 	bl	decrement_vpc_count
 	ldr	r3, [r4, #-368]
 	cmn	r3, #1
-	beq	.L3152
-	cmp	r3, fp
-	bls	.L3053
-.L3152:
+	bne	.L3001
+.L3082:
 	str	fp, [r4, #-368]
-.L3053:
-	ldr	r3, [sp, #28]
-	add	r3, r3, #1
-	b	.L3153
-.L3160:
-	ldrb	r3, [r9, #8]	@ zero_extendqisi2
-	add	r10, r10, #1
-	cmp	r3, #1
-	uxth	r10, r10
-	bne	.L3077
-	ldr	r3, .L3161
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
-	cmp	r3, #0
-	beq	.L3077
-	ldr	r3, .L3161+40
-	ldr	r2, [sp, #4]
-	ldrh	r3, [r3]
-	cmp	r2, r10
-	cmpeq	r3, r10
-	beq	.L3054
-.L3077:
-	ldr	r2, .L3161+44
-	ldrh	r3, [r2]
-	cmp	r10, r3
-	bne	.L3047
-	ldrh	r1, [r2, #-68]
-	movw	r0, #65535
-	mov	r3, #0
-	strh	r10, [r9, #2]	@ movhi
-	strh	r3, [r9, #4]	@ movhi
-.L3078:
-	uxth	r2, r3
-	cmp	r2, r1
-	bcs	.L3144
-	ldr	lr, [sp, #20]
-	add	r3, r3, #1
-	ldrh	ip, [lr, #2]!
-	cmp	ip, r0
-	str	lr, [sp, #20]
-	beq	.L3078
-	strb	r2, [r9, #6]
-	b	.L3144
-.L3054:
-	ldrb	r3, [sp, #12]	@ zero_extendqisi2
-	mov	r0, r9
-	ldr	r1, [sp, #4]
-	strb	r3, [r9, #6]
-	ldrh	r3, [sp, #4]
-	strh	r3, [r9, #2]	@ movhi
-.L3154:
-	ldr	r2, [sp, #12]
+	b	.L2978
+.L3001:
+	cmp	fp, r3
+	bcs	.L2978
+	b	.L3082
+.L2979:
+	ldrb	r3, [sp, #4]	@ zero_extendqisi2
+	ldm	sp, {r1, r2}
+	strb	r3, [r10, #6]
+	ldrh	r3, [sp]
+	strh	r3, [r10, #2]	@ movhi
+.L3085:
+	mov	r0, r10
 	bl	ftl_sb_update_avl_pages
-.L3144:
+	b	.L3073
+.L3075:
 	mov	r0, #0
-	add	sp, sp, #68
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L3162:
+	bx	lr
+.L3088:
 	.align	2
-.L3161:
+.L3087:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2320
 	.word	.LANCHOR2
+	.word	.LANCHOR0+2324
 	.word	.LC149
-	.word	.LANCHOR4+1848
+	.word	.LANCHOR2+1846
 	.word	.LANCHOR2-2620
-	.word	.LANCHOR4
-	.word	.LANCHOR2-3524
+	.word	.LANCHOR0+2392
+	.word	.LANCHOR0+2390
+	.word	.LANCHOR2-3520
 	.word	.LC150
 	.word	.LC151
-	.word	.LANCHOR0+2390
-	.word	.LANCHOR0+2388
 	.fnend
 	.size	FtlRecoverySuperblock, .-FtlRecoverySuperblock
 	.align	2
 	.global	FtlVpcCheckAndModify
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlVpcCheckAndModify, %function
 FtlVpcCheckAndModify:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr}
+	push	{r0, r1, r4, r5, r6, r7, r8, r9, r10, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	.pad #8
-	mov	r4, #0
-	ldr	r5, .L3180
-	ldr	r1, .L3180+4
-	ldr	r0, .L3180+8
+	mov	r5, #0
+	ldr	r6, .L3104
+	ldr	r1, .L3104+4
+	ldr	r0, .L3104+8
 	bl	printk
-	movw	r3, #2330
-	ldrh	r2, [r5, r3]
+	movw	r3, #2334
+	ldr	r4, .L3104+12
+	ldrh	r2, [r6, r3]
 	mov	r1, #0
-	ldr	r6, .L3180+12
-	mov	r2, r2, asl #1
-	ldr	r0, [r6, #-476]
+	ldr	r0, [r4, #-476]
+	lsl	r2, r2, #1
 	bl	ftl_memset
-.L3164:
-	ldr	r3, [r5, #2448]
-	cmp	r4, r3
-	bcs	.L3178
-	mov	r0, r4
-	add	r1, sp, #4
-	mov	r2, #0
-	bl	log2phys
-	ldr	r0, [sp, #4]
-	cmn	r0, #1
-	beq	.L3165
-	ubfx	r0, r0, #10, #16
-	bl	P2V_block_in_plane
-	ldr	r2, [r6, #-476]
-	mov	r0, r0, asl #1
-	ldrh	r3, [r2, r0]
-	add	r3, r3, #1
-	strh	r3, [r2, r0]	@ movhi
-.L3165:
-	add	r4, r4, #1
-	b	.L3164
-.L3178:
-	ldr	r8, .L3180+16
+.L3090:
+	ldr	r3, [r6, #2452]
+	cmp	r5, r3
+	bcc	.L3092
+	ldr	r8, .L3104+16
 	mov	r7, #0
-	ldr	r10, .L3180+12
-	ldr	r9, .L3180+20
-.L3167:
-	ldrh	r3, [r8]
-	uxth	r4, r7
-	cmp	r3, r4
-	bls	.L3179
-	ldr	r3, [r6, #-3544]
-	mov	r5, r4, asl #1
-	movw	r1, #65535
-	ldrh	r2, [r3, r5]
-	ldr	r3, [r6, #-476]
-	ldrh	r3, [r3, r5]
-	cmp	r2, r1
-	cmpne	r2, r3
-	beq	.L3168
-	ldrh	r1, [r9]
-	cmp	r1, r4
-	beq	.L3168
-	ldr	r1, .L3180+24
-	ldrh	r0, [r1]
-	cmp	r0, r4
-	beq	.L3168
-	ldrh	r1, [r1, #-48]
-	cmp	r1, r4
-	beq	.L3168
-	ldr	r0, .L3180+28
-	mov	r1, r4
-	bl	printk
-	ldr	r3, [r10, #-3544]
-	ldrh	r2, [r3, r5]
-	cmp	r2, #0
-	ldr	r2, [r10, #-476]
-	ldrh	r2, [r2, r5]
-	strh	r2, [r3, r5]	@ movhi
-	beq	.L3168
-	mov	r0, r4
-	bl	update_vpc_list
-.L3168:
-	add	r7, r7, #1
-	b	.L3167
-.L3179:
+	ldr	r9, .L3104+20
+	add	r10, r8, #96
+.L3093:
+	ldrh	r3, [r9]
+	uxth	r6, r7
+	cmp	r3, r6
+	bhi	.L3096
 	bl	l2p_flush
 	bl	FtlVpcTblFlush
 	add	sp, sp, #8
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L3181:
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L3092:
+	mov	r2, #0
+	add	r1, sp, #4
+	mov	r0, r5
+	bl	log2phys
+	ldr	r0, [sp, #4]
+	cmn	r0, #1
+	beq	.L3091
+	ubfx	r0, r0, #10, #16
+	bl	P2V_block_in_plane
+	ldr	r2, [r4, #-476]
+	lsl	r0, r0, #1
+	ldrh	r3, [r2, r0]
+	add	r3, r3, #1
+	strh	r3, [r2, r0]	@ movhi
+.L3091:
+	add	r5, r5, #1
+	b	.L3090
+.L3096:
+	uxth	r1, r7
+	ldr	r3, [r4, #-3540]
+	movw	r0, #65535
+	lsl	r5, r1, #1
+	ldrh	r2, [r3, r5]
+	ldr	r3, [r4, #-476]
+	ldrh	r3, [r3, r5]
+	cmp	r2, r0
+	cmpne	r2, r3
+	beq	.L3094
+	ldrh	r0, [r8]
+	cmp	r0, r6
+	beq	.L3094
+	ldrh	r0, [r10]
+	cmp	r0, r6
+	beq	.L3094
+	ldr	r0, .L3104+24
+	ldrh	r0, [r0]
+	cmp	r0, r6
+	beq	.L3094
+	ldr	r0, .L3104+28
+	bl	printk
+	ldr	r3, [r4, #-3540]
+	ldrh	r2, [r3, r5]
+	cmp	r2, #0
+	ldr	r2, [r4, #-476]
+	ldrh	r2, [r2, r5]
+	strh	r2, [r3, r5]	@ movhi
+	bne	.L3095
+.L3094:
+	add	r7, r7, #1
+	b	.L3093
+.L3095:
+	mov	r0, r6
+	bl	update_vpc_list
+	b	.L3094
+.L3105:
 	.align	2
-.L3180:
+.L3104:
 	.word	.LANCHOR0
-	.word	.LANCHOR3+216
+	.word	.LANCHOR3+203
 	.word	.LC110
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2328
-	.word	.LANCHOR2-3524
-	.word	.LANCHOR2-3428
+	.word	.LANCHOR2-3520
+	.word	.LANCHOR0+2332
+	.word	.LANCHOR2-3472
 	.word	.LC152
 	.fnend
 	.size	FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
 	.align	2
 	.global	FtlGcScanTempBlk
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcScanTempBlk, %function
 FtlGcScanTempBlk:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 64
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r2, .L3235
-	movw	r3, #3448
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	r2, .L3154
+	movw	r3, #3444
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.pad #68
 	sub	sp, sp, #68
-	ldrh	r5, [r2, r3]
-	movw	r3, #65535
 	mov	r4, r0
 	str	r1, [sp, #12]
-	cmp	r5, r3
-	beq	.L3216
-	cmp	r5, #0
-	bne	.L3183
-	b	.L3184
-.L3216:
-	mov	r5, #0
-.L3183:
-	ldr	r2, .L3235+4
-	movw	r3, #2388
+	ldrh	r6, [r2, r3]
+	movw	r3, #65535
+	cmp	r6, r3
+	beq	.L3138
+	cmp	r6, #0
+	bne	.L3107
+.L3108:
+	bl	FtlGcPageVarInit
+	b	.L3109
+.L3138:
+	mov	r6, #0
+.L3107:
+	ldr	r2, .L3154+4
+	movw	r3, #2390
 	ldrh	r3, [r2, r3]
 	ldr	r2, [sp, #12]
-	cmp	r2, r3
-	bne	.L3185
-.L3184:
-	bl	FtlGcPageVarInit
-.L3185:
-	ldr	r6, .L3235+8
+	cmp	r3, r2
+	beq	.L3108
+.L3109:
+	ldr	r5, .L3154+8
 	mvn	r3, #0
 	str	r3, [sp, #8]
 	mov	r3, #0
 	str	r3, [sp]
-.L3186:
+.L3110:
 	ldrh	r1, [r4]
 	movw	r3, #65535
 	mov	r2, #0
 	strb	r2, [r4, #8]
 	cmp	r1, r3
-	beq	.L3187
-.L3188:
-.L3213:
-	ldr	r3, .L3235+12
-	mov	r7, #0
-	ldr	ip, [r6, #-2692]
-	add	r1, r4, #14
-	mov	r8, r7
+	beq	.L3111
+.L3135:
+	ldr	r3, .L3154+12
+	add	ip, r4, #16
+	ldr	r0, [r5, #-536]
 	movw	r9, #65535
-	ldrh	r3, [r3]
+	ldr	lr, [r5, #-2692]
 	mov	r10, #36
+	ldrh	r3, [r3]
 	str	r3, [sp, #4]
-	ldr	r3, [r6, #-536]
+	ldr	r3, [r5, #-2696]
 	str	r3, [sp, #16]
-	ldr	r3, [r6, #-2696]
-	str	r3, [sp, #20]
-	ldr	r3, .L3235+16
-	ldrh	r0, [r3]
-	ldrh	lr, [r3, #2]
-.L3189:
-	ldr	r2, [sp, #4]
-	uxth	r3, r7
+	ldr	r3, .L3154+16
+	ldrh	r2, [r3]
+	ldrh	r8, [r3, #2]
+	str	r2, [sp, #20]
+	mov	r2, #0
+	mov	r7, r2
+.L3112:
+	ldr	r1, [sp, #4]
+	uxth	r3, r2
+	cmp	r1, r3
+	bhi	.L3114
+	ldr	r10, .L3154+4
+	mov	fp, #0
+	mov	r2, #0
+	mov	r1, r7
+	bl	FlashReadPages
+.L3115:
+	uxth	r3, fp
+	cmp	r7, r3
+	bhi	.L3133
+	ldr	r3, [sp]
+	add	r6, r6, #1
+	uxth	r6, r6
+	add	r3, r3, #1
+	str	r3, [sp]
+	ldr	r2, [sp]
+	ldr	r3, [sp, #12]
 	cmp	r3, r2
-	bcs	.L3233
-	ldrh	r3, [r1, #2]!
+	ldr	r2, .L3154+20
+	bls	.L3134
+.L3136:
+	ldrh	r3, [r2]
+	cmp	r3, r6
+	bhi	.L3135
+	mov	r2, #0
+	b	.L3111
+.L3114:
+	ldrh	r3, [ip], #2
 	cmp	r3, r9
-	beq	.L3190
-	ldr	r2, [sp, #16]
-	orr	r3, r5, r3, asl #10
-	mla	r2, r10, r8, r2
-	str	r3, [r2, #4]
-	mul	r3, r0, r8
+	beq	.L3113
+	mla	r1, r10, r7, r0
+	orr	r3, r6, r3, lsl #10
+	str	r3, [r1, #4]
+	ldr	r3, [sp, #20]
+	mul	r3, r3, r7
 	add	fp, r3, #3
 	cmp	r3, #0
 	movlt	r3, fp
-	ldr	fp, [sp, #20]
+	ldr	fp, [sp, #16]
 	bic	r3, r3, #3
 	add	r3, fp, r3
-	str	r3, [r2, #8]
-	mul	r3, lr, r8
-	add	r8, r8, #1
-	uxth	r8, r8
+	str	r3, [r1, #8]
+	mul	r3, r8, r7
+	add	r7, r7, #1
+	uxth	r7, r7
 	add	fp, r3, #3
 	cmp	r3, #0
 	movlt	r3, fp
 	bic	r3, r3, #3
-	add	r3, ip, r3
-	str	r3, [r2, #12]
-.L3190:
-	add	r7, r7, #1
-	b	.L3189
-.L3233:
-	ldr	r0, [r6, #-536]
-	mov	r1, r8
-	mov	r2, #0
-	mov	fp, #0
-	bl	FlashReadPages
-.L3192:
-	uxth	r3, fp
-	cmp	r3, r8
-	bcs	.L3234
-	ldr	r3, .L3235+8
+	add	r3, lr, r3
+	str	r3, [r1, #12]
+.L3113:
+	add	r2, r2, #1
+	b	.L3112
+.L3133:
 	mov	r9, #36
+	ldr	r8, [r5, #-536]
 	mul	r9, r9, fp
-	ldr	r7, [r3, #-536]
-	add	r10, r7, r9
-	ldr	r3, [r10, #4]
-	ubfx	r0, r3, #10, #16
-	str	r3, [sp, #4]
+	add	r3, r8, r9
+	ldr	r2, [r3, #4]
+	str	r3, [sp, #16]
+	ubfx	r0, r2, #10, #16
+	str	r2, [sp, #4]
 	bl	P2V_plane
-	ldr	r7, [r7, r9]
-	ldr	r10, [r10, #12]
-	cmp	r7, #0
-	ldr	ip, .L3235+4
-	ldr	r3, .L3235+8
+	ldr	r8, [r8, r9]
 	mov	r2, r0
-	bne	.L3193
-	ldrh	r0, [r10]
+	ldr	r3, [sp, #16]
+	cmp	r8, #0
+	ldr	r3, [r3, #12]
+	bne	.L3116
+	ldrh	r0, [r3]
 	movw	r1, #65535
 	cmp	r0, r1
-	bne	.L3194
-.L3197:
-	ldrb	r1, [ip, #144]	@ zero_extendqisi2
+	bne	.L3117
+.L3120:
+	ldrb	r1, [r10, #152]	@ zero_extendqisi2
 	cmp	r1, #0
-	beq	.L3228
-	mov	r1, #1
-	str	r1, [r3, #-372]
-	b	.L3187
-.L3194:
-	ldr	r1, .L3235+4
-	ldr	r0, [r10, #8]
-	ldr	r1, [r1, #2448]
+	beq	.L3150
+	mov	r3, #1
+	str	r3, [r5, #-372]
+.L3111:
+	ldr	r1, .L3154
+	mvn	r0, #0
+	movw	r3, #3444
+	strh	r6, [r4, #2]	@ movhi
+	strb	r2, [r4, #6]
+	strh	r0, [r1, r3]	@ movhi
+	mov	r1, r6
+	mov	r0, r4
+	bl	ftl_sb_update_avl_pages
+	b	.L3106
+.L3117:
+	ldr	r0, [r3, #8]
+	ldr	r1, [r10, #2452]
 	cmp	r0, r1
-	bls	.L3229
-	b	.L3197
-.L3228:
+	bhi	.L3120
+	ldrb	r2, [r10, #36]	@ zero_extendqisi2
+	cmp	r2, #0
+	bne	.L3123
+.L3124:
+	ldr	r2, [r3, #8]
+	add	fp, fp, #1
+	ldr	r1, [sp, #4]
+	ldr	r0, [r3, #12]
+	bl	FtlGcUpdatePage
+	b	.L3115
+.L3150:
 	ldrh	r3, [r4]
-	ldr	r2, .L3235+8
-	mov	r3, r3, asl #1
-	ldr	r2, [r2, #-3544]
-	b	.L3232
-.L3229:
-	ldr	r3, .L3235+4
-	ldrb	r3, [r3]	@ zero_extendqisi2
-	cmp	r3, #0
-	beq	.L3201
-	add	r1, sp, #24
-	mov	r2, r7
-	bl	log2phys
-	ldr	r3, [r10, #12]
-	ldr	r2, [sp, #24]
-	rsb	r1, r3, r2
-	cmn	r2, #1
-	clz	r1, r1
-	mov	r1, r1, lsr #5
-	moveq	r1, #0
-	cmp	r1, #0
-	beq	.L3201
-	str	r3, [sp, #32]
-	mov	r2, r7
-	ldr	r3, [r6, #-504]
-	add	r0, sp, #28
-	mov	r1, #1
-	str	r3, [sp, #36]
-	ldr	r3, [r6, #-496]
-	str	r3, [sp, #40]
-	bl	FlashReadPages
-	ldr	r3, .L3235+20
-	ldr	r2, [r6, #-536]
-	ldrh	r3, [r3]
-	add	r9, r2, r9
-	mov	r3, r3, asl #7
-	ldr	r2, [sp, #36]
-	b	.L3203
-.L3204:
-	add	r7, r7, #1
-.L3203:
-	cmp	r7, r3
-	beq	.L3201
-	ldr	r1, [r9, #8]
-	ldr	r0, [r1, r7, asl #2]
-	ldr	r1, [r2, r7, asl #2]
-	cmp	r0, r1
-	beq	.L3204
-	ldrh	r1, [r4]
-	ldr	r2, [sp, #32]
-	ldr	r0, .L3235+24
-	bl	printk
-	ldrh	r3, [r4]
-	ldr	r2, [r6, #-3544]
-	mov	r1, #0
-	mov	r3, r3, asl #1
-.L3232:
+	ldr	r2, [r5, #-3540]
+	lsl	r3, r3, #1
 	strh	r1, [r2, r3]	@ movhi
 	ldrh	r0, [r4]
 	bl	INSERT_FREE_LIST
-	ldr	r2, .L3235+28
+	ldr	r2, .L3154+24
 	mvn	r3, #0
 	strh	r3, [r4]	@ movhi
 	strh	r3, [r2]	@ movhi
-	b	.L3231
-.L3201:
-	ldr	r0, [r10, #12]
-	add	fp, fp, #1
-	ldr	r1, [sp, #4]
-	ldr	r2, [r10, #8]
-	bl	FtlGcUpdatePage
-	b	.L3192
-.L3193:
-	ldr	r2, [sp, #4]
-	ldr	r0, .L3235+32
+.L3153:
+	bl	FtlGcPageVarInit
+	mov	r6, #0
+	b	.L3110
+.L3123:
+	mov	r2, r8
+	add	r1, sp, #24
+	str	r3, [sp, #16]
+	bl	log2phys
+	ldr	r3, [sp, #16]
+	ldr	r1, [sp, #24]
+	ldr	r2, [r3, #12]
+	cmn	r1, #1
+	sub	r0, r2, r1
+	clz	r0, r0
+	lsr	r0, r0, #5
+	moveq	r0, #0
+	cmp	r0, #0
+	beq	.L3124
+	str	r2, [sp, #32]
+	mov	r1, #1
+	ldr	r2, [r5, #-504]
+	add	r0, sp, #28
+	str	r2, [sp, #36]
+	ldr	r2, [r5, #-496]
+	str	r2, [sp, #40]
+	mov	r2, r8
+	bl	FlashReadPages
+	ldr	r2, .L3154+28
+	ldr	r1, [r5, #-536]
+	ldr	r3, [sp, #16]
+	ldrh	r2, [r2]
+	add	r9, r1, r9
+	ldr	r1, [sp, #36]
+	lsl	r2, r2, #7
+.L3125:
+	cmp	r8, r2
+	beq	.L3124
+	ldr	r0, [r9, #8]
+	ldr	ip, [r0, r8, lsl #2]
+	ldr	r0, [r1, r8, lsl #2]
+	cmp	ip, r0
+	beq	.L3126
+	ldr	r2, [sp, #32]
 	ldrh	r1, [r4]
-	str	r3, [sp, #20]
-	str	ip, [sp, #16]
+	ldr	r0, .L3154+32
 	bl	printk
-	ldrh	r5, [r4]
-	ldr	ip, [sp, #16]
-	ldr	r3, [sp, #20]
-	ldr	r2, [ip, #2244]
+	ldrh	r3, [r4]
+	mov	r1, #0
+	ldr	r2, [r5, #-3540]
+	lsl	r3, r3, #1
+	strh	r1, [r2, r3]	@ movhi
+	ldrh	r0, [r4]
+	bl	INSERT_FREE_LIST
+	ldr	r2, .L3154+36
+	mvn	r3, #0
+	strh	r3, [r4]	@ movhi
+	strh	r3, [r2, #-4]	@ movhi
+	b	.L3153
+.L3126:
+	add	r8, r8, #1
+	b	.L3125
+.L3116:
+	ldr	r2, [sp, #4]
+	ldrh	r1, [r4]
+	ldr	r0, .L3154+40
+	bl	printk
+	ldr	r3, [r10, #2248]
+	cmp	r3, #0
+	ldrh	r3, [r4]
+	bne	.L3129
+	ldrb	r2, [r10, #152]	@ zero_extendqisi2
 	cmp	r2, #0
-	bne	.L3207
-	ldrb	r2, [ip, #144]	@ zero_extendqisi2
-	cmp	r2, #0
-	beq	.L3208
-.L3207:
-	ldr	r1, [r3, #-3608]
-	mov	r2, r5, asl #1
+	beq	.L3130
+.L3129:
+	ldr	r1, [r5, #-3604]
+	lsl	r2, r3, #1
 	ldrh	r2, [r1, r2]
 	cmp	r2, #159
-	bls	.L3209
-.L3208:
-	ldr	r2, [r3, #-536]
+	bls	.L3131
+.L3130:
+	ldr	r2, [r5, #-536]
 	ldr	r2, [r2, r9]
 	cmn	r2, #1
-	bne	.L3210
-.L3209:
-	ldr	r3, [r3, #-536]
-	add	r9, r3, r9
-	ldr	r3, [r9, #4]
-	str	r3, [sp, #8]
-.L3210:
-	ldr	r3, .L3235+8
-	mov	r5, r5, asl #1
-	mov	r2, #0
-	ldr	r3, [r3, #-3544]
-	strh	r2, [r3, r5]	@ movhi
+	bne	.L3132
+.L3131:
+	ldr	r2, [r5, #-536]
+	add	r9, r2, r9
+	ldr	r2, [r9, #4]
+	str	r2, [sp, #8]
+.L3132:
+	ldr	r2, [r5, #-3540]
+	lsl	r3, r3, #1
+	mov	r1, #0
+	strh	r1, [r2, r3]	@ movhi
 	ldrh	r0, [r4]
 	bl	INSERT_FREE_LIST
 	mvn	r3, #0
 	strh	r3, [r4]	@ movhi
-.L3231:
-	bl	FtlGcPageVarInit
-	mov	r5, #0
-	b	.L3186
-.L3234:
-	ldr	r3, [sp]
-	add	r5, r5, #1
-	ldr	r2, [sp, #12]
-	add	r3, r3, #1
-	uxth	r5, r5
-	cmp	r3, r2
-	str	r3, [sp]
-	ldr	r2, .L3235+36
-	bcs	.L3212
-.L3214:
-	ldrh	r3, [r2]
-	cmp	r3, r5
-	bhi	.L3213
-	mov	r2, #0
-	b	.L3187
-.L3212:
-	ldr	r1, .L3235+40
+	b	.L3153
+.L3134:
+	ldr	r1, .L3154+44
 	movw	r0, #65535
 	ldrh	r3, [r1]
 	cmp	r3, r0
-	beq	.L3214
+	beq	.L3136
 	ldr	r0, [sp]
 	add	r3, r3, r0
 	strh	r3, [r1]	@ movhi
 	ldrh	r3, [r2]
-	cmp	r3, r5
-	bls	.L3214
-	b	.L3215
-.L3187:
-	ldr	r1, .L3235
-	movw	r3, #3448
-	mvn	r0, #0
-	strh	r5, [r4, #2]	@ movhi
-	strb	r2, [r4, #6]
-	strh	r0, [r1, r3]	@ movhi
-	mov	r0, r4
-	mov	r1, r5
-	bl	ftl_sb_update_avl_pages
-.L3215:
+	cmp	r3, r6
+	bls	.L3136
+.L3106:
 	ldr	r0, [sp, #8]
 	add	sp, sp, #68
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L3236:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L3155:
 	.align	2
-.L3235:
+.L3154:
 	.word	.LANCHOR1
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2320
-	.word	.LANCHOR0+2398
-	.word	.LANCHOR0+2394
-	.word	.LC153
+	.word	.LANCHOR0+2324
+	.word	.LANCHOR0+2400
+	.word	.LANCHOR0+2390
 	.word	.LANCHOR2-3284
+	.word	.LANCHOR0+2396
+	.word	.LC153
+	.word	.LANCHOR2-3280
 	.word	.LC154
-	.word	.LANCHOR0+2388
-	.word	.LANCHOR1+3448
+	.word	.LANCHOR1+3444
 	.fnend
 	.size	FtlGcScanTempBlk, .-FtlGcScanTempBlk
 	.align	2
 	.global	FtlReadRefresh
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlReadRefresh, %function
 FtlReadRefresh:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 40
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	.pad #40
 	sub	sp, sp, #40
-	ldr	r5, .L3254
-	ldr	r4, .L3254+4
-	ldr	r9, [r5, #-3152]
+	ldr	r5, .L3173
+	ldr	r9, [r5, #-3156]
 	mov	r6, r5
 	cmp	r9, #0
-	beq	.L3238
-	ldr	r2, [r5, #-3148]
-	ldr	r3, [r4, #2448]
-	cmp	r2, r3
-	bcs	.L3239
+	beq	.L3157
+	ldr	r3, .L3173+4
+	ldr	r1, [r5, #-3152]
+	ldr	r2, [r3, #2452]
+	mov	r4, r3
+	cmp	r1, r2
+	bcs	.L3158
 	mov	r5, #2048
-	mov	r7, r6
-.L3244:
-	ldr	r0, [r6, #-3148]
-	ldr	r3, [r4, #2448]
+.L3163:
+	ldr	r0, [r6, #-3152]
+	ldr	r3, [r4, #2452]
 	cmp	r0, r3
-	bcs	.L3243
+	bcc	.L3159
+.L3162:
+	mvn	r0, #0
+.L3156:
+	add	sp, sp, #40
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L3159:
 	mov	r2, #0
 	mov	r1, sp
 	bl	log2phys
-	ldr	r3, [r7, #-3148]
-	add	r3, r3, #1
-	str	r3, [r7, #-3148]
 	ldr	r2, [sp]
+	ldr	r3, [r6, #-3152]
 	cmn	r2, #1
-	beq	.L3242
-	add	r0, sp, #40
+	add	r3, r3, #1
+	str	r3, [r6, #-3152]
+	beq	.L3161
 	str	r2, [sp, #8]
-	mov	r1, #1
+	add	r0, sp, #40
 	mov	r2, #0
+	mov	r1, #1
 	str	r2, [r0, #-36]!
 	str	r3, [sp, #20]
 	str	r2, [sp, #12]
@@ -19210,357 +19723,352 @@
 	bl	FlashReadPages
 	ldr	r3, [sp, #4]
 	cmp	r3, #256
-	bne	.L3243
+	bne	.L3162
 	ldr	r0, [sp]
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
 	bl	FtlGcRefreshBlock
-.L3243:
-	mvn	r0, #0
-	b	.L3246
-.L3242:
+	b	.L3162
+.L3161:
 	subs	r5, r5, #1
-	bne	.L3244
-	b	.L3243
-.L3239:
+	bne	.L3163
+	b	.L3162
+.L3158:
 	ldr	r3, [r5, #-3364]
 	mov	r0, #0
+	str	r0, [r5, #-3156]
 	str	r0, [r5, #-3152]
-	str	r0, [r5, #-3148]
-	str	r3, [r5, #-3156]
-	b	.L3246
-.L3238:
+	str	r3, [r5, #-3160]
+	b	.L3156
+.L3157:
 	ldr	r1, [r5, #-3312]
-	sub	r10, r5, #3600
-	ldr	r8, [r5, #-3364]
-	ldr	r3, [r4, #2448]
 	movw	r4, #10000
-	ldr	r7, [r5, #-3156]
+	ldr	r8, [r5, #-3364]
+	sub	r10, r5, #3584
+	ldr	r7, [r5, #-3160]
 	cmp	r1, r4
-	add	r2, r8, #1048576
+	add	r3, r8, #1048576
 	movhi	r4, #31
 	movls	r4, #63
-	cmp	r7, r2
-	bhi	.L3248
-	mov	r1, r1, lsr #10
+	cmp	r7, r3
+	bhi	.L3167
+	ldr	r3, .L3173+4
+	lsr	r1, r1, #10
 	mov	r0, #1000
-	mul	r0, r0, r3
 	add	r1, r1, #1
+	ldr	r3, [r3, #2452]
+	mul	r0, r0, r3
 	bl	__aeabi_uidiv
 	add	r0, r0, r7
-	cmp	r0, r8
-	bcc	.L3248
-	ldrh	r3, [r10, #28]
+	cmp	r8, r0
+	bhi	.L3167
+	ldrh	r3, [r10, #16]
 	ands	r0, r4, r3
 	movne	r0, r9
-	bne	.L3246
-	ldr	r2, [r5, #-3132]
-	cmp	r2, r3
-	beq	.L3246
-.L3248:
-	ldrh	r3, [r10, #28]
+	bne	.L3156
+	ldr	r2, [r5, #-3136]
+	cmp	r3, r2
+	beq	.L3156
+.L3167:
+	ldrh	r3, [r10, #16]
 	mov	r0, #0
-	str	r8, [r6, #-3156]
-	str	r0, [r6, #-3148]
-	str	r3, [r6, #-3132]
+	str	r0, [r6, #-3152]
+	str	r8, [r6, #-3160]
+	str	r3, [r6, #-3136]
 	mov	r3, #1
-	str	r3, [r6, #-3152]
-.L3246:
-	add	sp, sp, #40
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L3255:
+	str	r3, [r6, #-3156]
+	b	.L3156
+.L3174:
 	.align	2
-.L3254:
+.L3173:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.fnend
 	.size	FtlReadRefresh, .-FtlReadRefresh
 	.align	2
 	.global	FtlGcFreeTempBlock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcFreeTempBlock, %function
 FtlGcFreeTempBlock:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 24
+	@ args = 0, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	movw	r3, #2388
-	ldr	r4, .L3295
-	.pad #28
-	sub	sp, sp, #28
-	ldr	r6, .L3295+4
-	ldr	ip, [r4, #-3616]
+	movw	r3, #2390
+	ldr	r4, .L3213
+	.pad #20
+	sub	sp, sp, #20
+	ldr	r6, .L3213+4
+	ldr	ip, [r4, #-3612]
 	ldrh	r1, [r6, r3]
 	cmp	ip, #0
-	bne	.L3293
-	sub	r7, r4, #3424
+	beq	.L3176
+.L3212:
+	mov	r0, #0
+.L3175:
+	add	sp, sp, #20
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L3176:
+	sub	r5, r4, #3424
 	movw	lr, #65535
-	ldrh	r5, [r7, #-4]
-	cmp	r5, lr
-	bne	.L3259
-.L3268:
-	ldrh	r2, [r7, #-4]
+	ldrh	r7, [r5]
+	cmp	r7, lr
+	bne	.L3178
+.L3187:
+	ldrh	r2, [r5]
 	movw	r3, #65535
-	ldr	r5, .L3295
-	mov	r8, #0
+	mov	r7, #0
+	str	r7, [r4, #-372]
 	cmp	r2, r3
-	str	r8, [r4, #-372]
-	sub	r9, r5, #3424
-	beq	.L3293
+	beq	.L3212
 	bl	FtlCacheWriteBack
-	movw	r2, #2388
-	ldrb	r0, [r5, #-3421]	@ zero_extendqisi2
-	ldrh	r2, [r6, r2]
-	ldrh	r3, [r9, #-4]
-	ldr	r1, [r5, #-3544]
-	smulbb	r2, r0, r2
-	mov	r3, r3, asl #1
+	movw	r0, #2390
+	ldrb	r2, [r4, #-3417]	@ zero_extendqisi2
+	ldrh	r0, [r6, r0]
+	mov	fp, #12
+	ldrh	r3, [r5]
+	ldr	r1, [r4, #-3540]
+	ldr	r8, .L3213+8
+	smulbb	r2, r2, r0
+	lsl	r3, r3, #1
 	strh	r2, [r1, r3]	@ movhi
-	sub	r2, r5, #2656
-	ldr	r3, [r5, #-3344]
-	sub	fp, r2, #12
-	ldrh	ip, [r2, #-12]
-	sub	r10, r2, #772
-	add	r3, ip, r3
-	str	r3, [r5, #-3344]
-	stmib	sp, {r2, r5}
-	b	.L3269
-.L3259:
+	ldr	r2, [r4, #-3344]
+	ldrh	r3, [r8, #-12]
+	add	r3, r3, r2
+	str	r3, [r4, #-3344]
+.L3188:
+	ldrh	r2, [r8, #-12]
+	uxth	r3, r7
+	cmp	r2, r3
+	bhi	.L3192
+	movw	r0, #65535
+	bl	decrement_vpc_count
+	ldrb	r3, [r6, #152]	@ zero_extendqisi2
+	cmp	r3, #0
+	beq	.L3193
+	ldrh	r1, [r5]
+	ldr	r0, .L3213+12
+	bl	printk
+.L3193:
+	ldrh	r0, [r5]
+	ldr	r2, [r4, #-3540]
+	lsl	r3, r0, #1
+	ldrh	r3, [r2, r3]
+	cmp	r3, #0
+	beq	.L3194
+	bl	INSERT_DATA_LIST
+.L3195:
+	ldr	r7, .L3213+16
+	mvn	r9, #0
+	strh	r9, [r5]	@ movhi
+	mov	r5, #0
+	strh	r5, [r8, #-12]	@ movhi
+	strh	r5, [r7, #-4]	@ movhi
+	bl	l2p_flush
+	bl	FtlVpcTblFlush
+	sub	r3, r7, #608
+	sub	r2, r7, #848
+	strh	r9, [r3, #-4]	@ movhi
+	ldr	r3, [r6, #2248]
+	ldrh	r2, [r2, #-4]
+	cmp	r3, r5
+	sub	r3, r7, #624
+	ldrh	r3, [r3, #-8]
+	beq	.L3196
+	ldr	r1, [r4, #-3308]
+	cmp	r1, #39
+	bhi	.L3196
+	cmp	r2, r3
+	lslcc	r3, r3, #1
+	strhcc	r3, [r7, #-48]	@ movhi
+	b	.L3212
+.L3178:
 	cmp	r0, #0
-	beq	.L3262
-	ldr	r2, .L3295+8
-	movw	r3, #3448
+	beq	.L3181
+	ldr	r2, .L3213+20
+	movw	r3, #3444
 	ldrh	r0, [r2, r3]
 	cmp	r0, lr
-	beq	.L3263
-.L3264:
+	beq	.L3182
+.L3183:
 	mov	r1, #2
-	b	.L3262
-.L3263:
-	strh	ip, [r2, r3]	@ movhi
-	sub	r3, r4, #3520
-	ldrh	r3, [r3, #-8]
-	cmp	r3, #17
-	bhi	.L3264
-.L3262:
-	ldr	r0, .L3295+12
+.L3181:
+	ldr	r0, .L3213+24
 	bl	FtlGcScanTempBlk
 	cmn	r0, #1
-	str	r0, [sp, #20]
-	beq	.L3265
-	ldr	r3, .L3295
-	mov	r5, r5, asl #1
-	ldr	r2, [r3, #-3608]
-	ldrh	r3, [r2, r5]
+	str	r0, [sp, #12]
+	beq	.L3184
+	ldr	r2, [r4, #-3604]
+	lsl	r7, r7, #1
+	ldrh	r3, [r2, r7]
 	cmp	r3, #4
-	bls	.L3266
+	bls	.L3185
 	sub	r3, r3, #5
 	mov	r0, #1
-	strh	r3, [r2, r5]	@ movhi
+	strh	r3, [r2, r7]	@ movhi
 	bl	FtlEctTblFlush
-.L3266:
+.L3185:
 	ldr	r3, [r4, #-372]
-	ldr	r2, .L3295
 	cmp	r3, #0
-	bne	.L3267
-	ldr	r0, [sp, #20]
-	ldr	r3, [r2, #-3136]
-	ubfx	r0, r0, #10, #16
+	bne	.L3186
+	ldr	r3, [r4, #-3140]
+	ldr	r0, [sp, #12]
 	add	r3, r3, #1
-	str	r3, [r2, #-3136]
+	ubfx	r0, r0, #10, #16
+	str	r3, [r4, #-3140]
 	bl	FtlBbmMapBadBlock
 	bl	FtlBbmTblFlush
-.L3267:
+.L3186:
 	mov	r3, #0
 	str	r3, [r4, #-372]
-	b	.L3279
-.L3265:
-	ldr	r2, .L3295+8
-	movw	r3, #3448
+.L3198:
+	mov	r0, #1
+	b	.L3175
+.L3182:
+	strh	ip, [r2, r3]	@ movhi
+	sub	r3, r4, #3520
+	ldrh	r3, [r3, #-4]
+	cmp	r3, #17
+	bhi	.L3183
+	b	.L3181
+.L3184:
+	ldr	r2, .L3213+20
+	movw	r3, #3444
 	ldrh	r2, [r2, r3]
 	movw	r3, #65535
 	cmp	r2, r3
-	bne	.L3279
-	b	.L3268
-.L3272:
-	ldr	r3, [r5, #4]
-	cmp	r0, r3
-	bne	.L3291
-.L3271:
-	add	r8, r8, #1
-.L3269:
-	ldrh	r2, [fp]
-	uxth	r3, r8
-	cmp	r2, r3
-	bls	.L3294
-	mov	r9, #12
-	ldr	r2, [r6, #2448]
-	mul	r9, r9, r3
-	ldr	r3, [sp, #8]
-	ldr	ip, [r3, #-2672]
-	add	r5, ip, r9
-	ldr	r0, [r5, #8]
+	bne	.L3198
+	b	.L3187
+.L3192:
+	uxth	r10, r7
+	ldr	r3, [r4, #-2672]
+	ldr	r2, [r6, #2452]
+	mul	r10, fp, r10
+	add	r9, r3, r10
+	ldr	r0, [r9, #8]
 	cmp	r0, r2
-	bcs	.L3291
+	bcc	.L3189
+.L3210:
+	ldrh	r0, [r5]
+	b	.L3211
+.L3189:
 	mov	r2, #0
-	add	r1, sp, #20
-	str	ip, [sp, #12]
+	add	r1, sp, #12
+	str	r3, [sp, #4]
 	bl	log2phys
-	ldr	ip, [sp, #12]
-	ldr	r0, [sp, #20]
-	ldr	r2, [ip, r9]
+	ldr	r3, [sp, #4]
+	ldr	r2, [sp, #12]
+	ldr	r0, [r3, r10]
 	cmp	r0, r2
-	bne	.L3272
+	bne	.L3191
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
-	add	r1, r5, #4
 	mov	r2, #1
-	mov	r9, r0
-	ldr	r0, [r5, #8]
+	mov	r10, r0
+	add	r1, r9, #4
+	ldr	r0, [r9, #8]
 	bl	log2phys
-	mov	r0, r9
-	b	.L3292
-.L3291:
-	ldrh	r0, [r10]
-.L3292:
+	mov	r0, r10
+.L3211:
 	bl	decrement_vpc_count
-	b	.L3271
-.L3294:
-	movw	r0, #65535
-	bl	decrement_vpc_count
-	ldrb	r3, [r6, #144]	@ zero_extendqisi2
-	cmp	r3, #0
-	beq	.L3274
-	ldr	r0, .L3295+16
-	ldrh	r1, [r7, #-4]
-	bl	printk
-.L3274:
-	ldrh	r0, [r7, #-4]
-	ldr	r2, [r4, #-3544]
-	mov	r3, r0, asl #1
-	ldrh	r3, [r2, r3]
-	cmp	r3, #0
-	beq	.L3275
-	bl	INSERT_DATA_LIST
-	b	.L3276
-.L3275:
-	bl	INSERT_FREE_LIST
-.L3276:
-	ldr	r3, [sp, #4]
-	mvn	r5, #0
-	ldr	r4, .L3295
-	strh	r5, [r7, #-4]	@ movhi
-	mov	r7, #0
-	strh	r7, [r3, #-12]	@ movhi
-	sub	r3, r4, #2672
-	strh	r7, [r3, #-4]	@ movhi
-	bl	l2p_flush
-	bl	FtlVpcTblFlush
-	sub	r3, r4, #3280
-	sub	r2, r4, #3520
-	strh	r5, [r3, #-4]	@ movhi
-	ldr	r3, [r6, #2244]
-	ldrh	r2, [r2, #-8]
-	cmp	r3, r7
-	sub	r3, r4, #3296
-	ldrh	r3, [r3, #-8]
-	beq	.L3277
-	ldr	r1, [r4, #-3308]
-	cmp	r1, #39
-	bhi	.L3277
+	b	.L3190
+.L3191:
+	ldr	r3, [r9, #4]
 	cmp	r2, r3
-	subcc	r4, r4, #2720
-	movcc	r3, r3, asl #1
-	strcch	r3, [r4]	@ movhi
-	b	.L3293
-.L3277:
-	add	r1, r3, r3, asl #1
+	bne	.L3210
+.L3190:
+	add	r7, r7, #1
+	b	.L3188
+.L3194:
+	bl	INSERT_FREE_LIST
+	b	.L3195
+.L3196:
+	add	r1, r3, r3, lsl #1
 	cmp	r2, r1, asr #2
-	ble	.L3293
-	ldrb	r0, [r6, #144]	@ zero_extendqisi2
-	ldr	r2, .L3295+20
+	ble	.L3212
+	ldrb	r0, [r6, #152]	@ zero_extendqisi2
+	ldr	r2, .L3213+28
 	cmp	r0, #0
 	moveq	r3, #20
-	streqh	r3, [r2]	@ movhi
-	beq	.L3258
+	strheq	r3, [r2]	@ movhi
+	beq	.L3175
 	sub	r3, r3, #2
 	strh	r3, [r2]	@ movhi
-.L3293:
-	mov	r0, #0
-	b	.L3258
-.L3279:
-	mov	r0, #1
-.L3258:
-	add	sp, sp, #28
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L3296:
+	b	.L3212
+.L3214:
 	.align	2
-.L3295:
+.L3213:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
-	.word	.LANCHOR1
-	.word	.LANCHOR2-3428
+	.word	.LANCHOR2-2656
 	.word	.LC155
+	.word	.LANCHOR2-2672
+	.word	.LANCHOR1
+	.word	.LANCHOR2-3424
 	.word	.LANCHOR2-2720
 	.fnend
 	.size	FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
 	.align	2
 	.global	FtlGcPageRecovery
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlGcPageRecovery, %function
 FtlGcPageRecovery:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
-	movw	r5, #2388
-	ldr	r7, .L3300
-	ldr	r6, .L3300+4
-	ldr	r4, .L3300+8
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
+	movw	r5, #2390
+	ldr	r4, .L3218
+	ldr	r6, .L3218+4
+	sub	r7, r4, #3424
 	mov	r0, r7
 	ldrh	r1, [r6, r5]
 	bl	FtlGcScanTempBlk
 	ldrh	r2, [r7, #2]
 	ldrh	r3, [r6, r5]
 	cmp	r2, r3
-	ldmccfd	sp!, {r3, r4, r5, r6, r7, pc}
+	popcc	{r4, r5, r6, r7, r8, pc}
 	sub	r0, r4, #432
 	bl	FtlMapBlkWriteDumpData
 	mov	r0, #0
 	bl	FtlGcFreeTempBlock
 	mov	r3, #0
 	str	r3, [r4, #-372]
-	ldmfd	sp!, {r3, r4, r5, r6, r7, pc}
-.L3301:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L3219:
 	.align	2
-.L3300:
-	.word	.LANCHOR2-3428
-	.word	.LANCHOR0
+.L3218:
 	.word	.LANCHOR2
+	.word	.LANCHOR0
 	.fnend
 	.size	FtlGcPageRecovery, .-FtlGcPageRecovery
 	.align	2
 	.global	FtlPowerLostRecovery
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlPowerLostRecovery, %function
 FtlPowerLostRecovery:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, lr}
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
-	mov	r6, #0
-	ldr	r4, .L3304
-	ldr	r3, .L3304+4
-	sub	r5, r4, #3520
+	mov	r5, #0
+	ldr	r4, .L3222
+	sub	r6, r4, #3520
+	str	r5, [r4, #1852]
+	mov	r0, r6
 	sub	r4, r4, #3472
-	sub	r5, r5, #4
-	sub	r4, r4, #4
-	str	r6, [r3, #1852]
-	mov	r0, r5
 	bl	FtlRecoverySuperblock
-	mov	r0, r5
+	mov	r0, r6
 	bl	FtlSlcSuperblockCheck
 	mov	r0, r4
 	bl	FtlRecoverySuperblock
@@ -19569,51 +20077,54 @@
 	bl	FtlGcPageRecovery
 	movw	r0, #65535
 	bl	decrement_vpc_count
-	mov	r0, r6
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L3305:
+	mov	r0, r5
+	pop	{r4, r5, r6, pc}
+.L3223:
 	.align	2
-.L3304:
+.L3222:
 	.word	.LANCHOR2
-	.word	.LANCHOR4
 	.fnend
 	.size	FtlPowerLostRecovery, .-FtlPowerLostRecovery
 	.align	2
 	.global	FtlSysBlkInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlSysBlkInit, %function
 FtlSysBlkInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
-	.save {r3, r4, r5, r6, r7, r8, r9, lr}
-	movw	r3, #1850
-	ldr	r4, .L3324
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	mov	r2, #0
-	ldr	r6, .L3324+4
-	ldr	r5, .L3324+8
-	strh	r2, [r4, r3]	@ movhi
+	ldr	r5, .L3242
 	movw	r3, #1848
+	ldr	r6, .L3242+4
+	strh	r2, [r5, r3]	@ movhi
 	mvn	r2, #0
-	strh	r2, [r4, r3]	@ movhi
-	ldr	r3, [r6, #2324]
-	uxth	r0, r3
+	movw	r3, #1846
+	strh	r2, [r5, r3]	@ movhi
+	add	r3, r6, #2320
+	add	r3, r3, #8
+	ldrh	r0, [r3]
 	bl	FtlFreeSysBlkQueueInit
 	bl	FtlScanSysBlk
 	sub	r3, r5, #3296
 	ldrh	r2, [r3, #-4]
 	movw	r3, #65535
 	cmp	r2, r3
-	bne	.L3307
-.L3309:
-	mvn	r8, #0
-	b	.L3308
-.L3307:
+	bne	.L3225
+.L3227:
+	mvn	r7, #0
+.L3224:
+	mov	r0, r7
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L3225:
 	bl	FtlLoadSysInfo
-	subs	r8, r0, #0
-	bne	.L3309
+	subs	r7, r0, #0
+	bne	.L3227
 	bl	FtlLoadMapInfo
-	mov	r7, r4
 	bl	FtlLoadVonderInfo
 	bl	Ftl_load_ext_data
 	bl	FtlLoadEctTbl
@@ -19622,638 +20133,642 @@
 	bl	FtlPowerLostRecovery
 	mov	r0, #1
 	bl	FtlUpdateVaildLpn
-	ldr	r2, [r5, #-3380]
-	movw	r3, #2426
-	mov	r0, #12
+	ldr	r2, [r5, #-3376]
+	movw	r3, #2430
 	ldrh	r1, [r6, r3]
-	mov	r3, r8
-.L3310:
+	mov	r0, #12
+	mov	r3, r7
+.L3228:
 	cmp	r3, r1
-	bge	.L3315
+	bge	.L3233
 	mla	ip, r0, r3, r2
 	ldr	ip, [ip, #4]
 	cmp	ip, #0
-	bge	.L3311
-.L3315:
-	ldr	r4, .L3324+12
+	bge	.L3229
+.L3233:
+	ldr	r4, .L3242+8
 	cmp	r3, r1
-	add	r9, r4, #80
 	ldrh	r2, [r4, #28]
+	add	r8, r4, #12
+	add	r4, r4, #76
 	add	r2, r2, #1
-	strh	r2, [r4, #28]	@ movhi
-	bge	.L3322
-	b	.L3312
-.L3311:
-	add	r3, r3, #1
-	b	.L3310
-.L3322:
-	movw	r3, #1850
-	ldrh	r3, [r7, r3]
-	cmp	r3, #0
-	beq	.L3316
-.L3312:
-	ldrh	r2, [r9, #-4]
-	ldr	r3, .L3324+16
-	ldr	r0, [r5, #-3544]
-	mov	r2, r2, asl #1
-	ldrh	ip, [r3, #4]
-	ldrh	r1, [r0, r2]
-	rsb	r1, ip, r1
-	movw	ip, #2388
-	strh	r1, [r0, r2]	@ movhi
-	add	r1, r3, #48
-	ldrh	r2, [r6, ip]
-	ldr	lr, [r5, #-3544]
-	ldrh	r7, [r1, #4]
-	strh	r2, [r3, #2]	@ movhi
+	strh	r2, [r4, #-48]	@ movhi
+	bge	.L3240
+.L3230:
+	ldrh	r3, [r4]
+	movw	ip, #2390
+	ldr	r1, [r5, #-3540]
+	ldrh	r0, [r4, #4]
+	lsl	r3, r3, #1
+	ldrh	r2, [r1, r3]
+	sub	r2, r2, r0
+	strh	r2, [r1, r3]	@ movhi
 	mov	r2, #0
-	strh	r2, [r3, #4]	@ movhi
-	ldrh	r3, [r3, #48]
-	strb	r2, [r5, #-3518]
-	mov	r3, r3, asl #1
-	ldrh	r0, [lr, r3]
-	rsb	r0, r7, r0
-	strh	r0, [lr, r3]	@ movhi
 	ldrh	r3, [r6, ip]
-	strb	r2, [r5, #-3470]
-	strh	r2, [r1, #4]	@ movhi
-	strh	r3, [r1, #2]	@ movhi
-	ldrh	r3, [r4, #30]
+	ldr	lr, [r5, #-3540]
+	strb	r2, [r5, #-3514]
+	strh	r3, [r4, #2]	@ movhi
+	ldr	r3, .L3242+12
+	strh	r2, [r4, #4]	@ movhi
+	ldrh	r1, [r3]
+	ldrh	r9, [r3, #4]
+	lsl	r1, r1, #1
+	ldrh	r0, [lr, r1]
+	sub	r0, r0, r9
+	strh	r0, [lr, r1]	@ movhi
+	ldrh	r1, [r6, ip]
+	strh	r2, [r3, #4]	@ movhi
+	strb	r2, [r5, #-3466]
+	strh	r1, [r3, #2]	@ movhi
+	ldrh	r3, [r8, #18]
 	add	r3, r3, #1
-	strh	r3, [r4, #30]	@ movhi
+	strh	r3, [r8, #18]	@ movhi
 	bl	l2p_flush
 	bl	FtlVpcTblFlush
 	bl	FtlVpcTblFlush
-.L3316:
-	ldrh	r0, [r9, #-4]
+	b	.L3234
+.L3229:
+	add	r3, r3, #1
+	b	.L3228
+.L3240:
+	movw	r3, #1848
+	ldrh	r3, [r5, r3]
+	cmp	r3, #0
+	bne	.L3230
+.L3234:
+	ldrh	r0, [r4]
 	movw	r3, #65535
-	ldr	r5, .L3324+16
 	cmp	r0, r3
-	beq	.L3317
-	ldrh	r3, [r5, #4]
+	beq	.L3235
+	ldrh	r3, [r4, #4]
 	cmp	r3, #0
-	bne	.L3317
-	ldrh	r3, [r5, #52]
-	add	r9, r5, #52
-	add	r7, r5, #48
+	bne	.L3235
+	ldr	r4, .L3242+12
+	ldrh	r3, [r4, #4]
 	cmp	r3, #0
-	bne	.L3317
+	bne	.L3235
 	bl	FtlGcRefreshOpenBlock
-	ldrh	r0, [r5, #48]
+	ldrh	r0, [r4]
 	bl	FtlGcRefreshOpenBlock
 	bl	FtlVpcTblFlush
-	mov	r0, r5
+	sub	r0, r4, #48
 	bl	allocate_new_data_superblock
-	mov	r0, r7
+	mov	r0, r4
 	bl	allocate_new_data_superblock
-.L3317:
-	ldrb	r3, [r6]	@ zero_extendqisi2
+.L3235:
+	ldrb	r3, [r6, #36]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L3318
-	ldrh	r3, [r4, #28]
+	bne	.L3236
+	ldrh	r3, [r8, #16]
 	tst	r3, #31
-	bne	.L3308
-.L3318:
+	bne	.L3224
+.L3236:
 	bl	FtlVpcCheckAndModify
-.L3308:
-	mov	r0, r8
-	ldmfd	sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
-.L3325:
+	b	.L3224
+.L3243:
 	.align	2
-.L3324:
-	.word	.LANCHOR4
-	.word	.LANCHOR0
+.L3242:
 	.word	.LANCHOR2
-	.word	.LANCHOR2-3600
-	.word	.LANCHOR2-3524
+	.word	.LANCHOR0
+	.word	.LANCHOR2-3596
+	.word	.LANCHOR2-3472
 	.fnend
 	.size	FtlSysBlkInit, .-FtlSysBlkInit
 	.align	2
 	.global	FtlLowFormat
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlLowFormat, %function
 FtlLowFormat:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	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	r4, .L3361
-	ldr	r6, [r4, #-3616]
+	ldr	r4, .L3276
+	ldr	r6, [r4, #-3612]
 	cmp	r6, #0
-	bne	.L3328
-	ldr	r5, .L3361+4
-	movw	r7, #2424
+	bne	.L3246
+	ldr	r5, .L3276+4
+	movw	r7, #2428
 	mov	r1, r6
 	ldr	r0, [r4, #-448]
 	ldrh	r2, [r5, r7]
-	mov	r2, r2, asl #2
+	lsl	r2, r2, #2
 	bl	ftl_memset
 	ldrh	r2, [r5, r7]
 	mov	r1, r6
 	ldr	r0, [r4, #-452]
-	mov	r2, r2, asl #2
+	lsl	r2, r2, #2
 	bl	ftl_memset
-	ldr	r3, [r5, #2324]
+	add	r3, r5, #2320
 	str	r6, [r4, #-3332]
+	add	r3, r3, #8
+	ldrh	r0, [r3]
 	str	r6, [r4, #-3328]
-	uxth	r0, r3
 	bl	FtlFreeSysBlkQueueInit
 	bl	FtlLoadBbt
 	cmp	r0, #0
-	beq	.L3329
+	beq	.L3247
 	bl	FtlMakeBbt
-.L3329:
-	ldr	r0, .L3361+8
+.L3247:
+	ldr	r0, .L3276+8
 	mov	r2, #0
-	ldr	ip, .L3361+12
-.L3330:
+	ldr	ip, .L3276+12
+.L3248:
 	ldrh	r1, [r0]
 	uxth	r3, r2
 	add	r2, r2, #1
-	cmp	r3, r1, asl #7
-	bge	.L3358
-	ldr	lr, [r4, #-508]
-	mvn	r1, r3
-	orr	r1, r3, r1, asl #16
-	str	r1, [lr, r3, asl #2]
-	ldr	r1, [r4, #-504]
-	str	ip, [r1, r3, asl #2]
-	b	.L3330
-.L3358:
-	ldr	r2, .L3361+4
-	movw	r3, #2328
-	ldr	r7, .L3361+16
-	mov	r8, #0
-	ldrh	r6, [r2, r3]
-.L3332:
-	ldrh	r3, [r7]
-	ldr	r10, .L3361+4
-	cmp	r3, r6
-	ldr	r9, .L3361+16
-	bls	.L3359
+	cmp	r3, r1, lsl #7
+	blt	.L3249
+	movw	r3, #2332
+	ldr	r9, .L3276+16
+	ldrh	r7, [r5, r3]
+	mov	r6, #0
+	mov	r8, r9
+.L3250:
+	ldrh	r3, [r9]
+	cmp	r3, r7
+	bhi	.L3251
+	movw	r3, #2324
+	ldrh	r1, [r5, r3]
+	sub	r3, r6, #3
+	cmp	r3, r1, lsl #1
+	blt	.L3252
 	mov	r0, r6
-	mov	r1, #1
-	bl	FtlLowFormatEraseBlock
-	add	r6, r6, #1
-	uxth	r6, r6
-	add	r0, r8, r0
-	uxth	r8, r0
-	b	.L3332
-.L3359:
-	add	r7, r10, #2320
-	sub	r3, r8, #3
-	ldrh	r1, [r7]
-	cmp	r3, r1, asl #1
-	blt	.L3334
-	mov	r0, r8
-	mov	r8, #0
+	mov	r6, #0
 	bl	__aeabi_uidiv
-	ldr	r3, [r10, #2420]
+	ldr	r3, [r5, #2424]
 	add	r0, r0, r3
 	uxth	r0, r0
 	bl	FtlSysBlkNumInit
-	ldr	r3, [r10, #2324]
-	uxth	r0, r3
+	add	r3, r5, #2320
+	add	r3, r3, #8
+	ldrh	r0, [r3]
 	bl	FtlFreeSysBlkQueueInit
-	movw	r3, #2328
-	ldrh	r6, [r10, r3]
-.L3335:
-	ldrh	r3, [r9]
-	cmp	r3, r6
-	bls	.L3334
-	mov	r0, r6
-	mov	r1, #1
-	bl	FtlLowFormatEraseBlock
-	add	r6, r6, #1
-	uxth	r6, r6
-	add	r0, r8, r0
-	uxth	r8, r0
-	b	.L3335
-.L3334:
-	ldr	r10, .L3361+20
-	mov	r9, #0
-	mov	r6, r9
-.L3337:
-	ldrh	r2, [r10]
-	uxth	r0, r9
-	ldr	r3, .L3361+4
-	add	r9, r9, #1
-	cmp	r2, r0
-	bls	.L3360
-	mov	r1, #0
-	bl	FtlLowFormatEraseBlock
-	add	r0, r6, r0
-	uxth	r6, r0
-	b	.L3337
-.L3360:
-	movw	r2, #2330
-	ldrh	r9, [r7]
-	ldrh	r2, [r3, r2]
-	str	r3, [sp, #4]
-	mov	r1, r9
-	ldr	r7, .L3361+24
-	str	r2, [r4, #-548]
-	ldr	r2, [r3, #2332]
+	movw	r3, #2332
+	ldrh	r7, [r5, r3]
+.L3253:
+	ldrh	r3, [r8]
+	cmp	r3, r7
+	bhi	.L3254
+.L3252:
+	ldr	r8, .L3276+20
+	mov	r7, #0
+	mov	r9, r7
+.L3255:
+	ldrh	r3, [r8]
+	uxth	r0, r7
+	add	r7, r7, #1
+	cmp	r3, r0
+	bhi	.L3256
+	movw	r3, #2334
+	ldr	r2, [r5, #2336]
+	ldrh	r3, [r5, r3]
+	ldr	r8, .L3276+24
 	mov	r0, r2
-	str	r2, [sp]
+	str	r2, [sp, #4]
+	str	r3, [r4, #-548]
+	movw	r3, #2324
+	ldrh	r7, [r5, r3]
+	mov	r1, r7
 	bl	__aeabi_uidiv
 	ubfx	r10, r0, #5, #16
-	ldr	r3, [sp, #4]
-	add	r1, r10, #36
-	strh	r1, [r7, #-8]	@ movhi
-	mov	r1, #24
 	mov	fp, r0
-	mul	r1, r1, r9
-	str	r0, [r3, #2448]
-	ldr	r2, [sp]
-	cmp	r6, r1
-	ble	.L3339
-	rsb	r0, r6, r2
-	mov	r1, r9
-	str	r3, [sp]
+	add	r3, r10, #36
+	str	r0, [r5, #2452]
+	strh	r3, [r8, #-8]	@ movhi
+	mov	r3, #24
+	mul	r3, r3, r7
+	cmp	r9, r3
+	ble	.L3257
+	ldr	r2, [sp, #4]
+	mov	r1, r7
+	sub	r0, r2, r9
 	bl	__aeabi_uidiv
-	ldr	r3, [sp]
-	str	r0, [r3, #2448]
-	mov	r0, r0, lsr #5
+	str	r0, [r5, #2452]
+	lsr	r0, r0, #5
 	add	r0, r0, #24
-	strh	r0, [r7, #-8]	@ movhi
-.L3339:
-	ldr	r3, [r5, #2244]
+	strh	r0, [r8, #-8]	@ movhi
+.L3257:
+	ldr	r3, [r5, #2248]
 	cmp	r3, #1
-	bne	.L3340
-	ldrh	r3, [r7, #-8]
-	mov	r0, r6
-	mov	r1, r9
-	str	r3, [sp]
+	bne	.L3258
+	ldrh	r3, [r8, #-8]
+	mov	r1, r7
+	mov	r0, r9
+	str	r3, [sp, #4]
 	bl	__aeabi_uidiv
-	ldr	r3, [sp]
+	ldr	r3, [sp, #4]
 	uxtah	r0, r3, r0
 	add	r3, r3, r0, asr #2
-	strh	r3, [r7, #-8]	@ movhi
-.L3340:
-	ldrb	r3, [r5, #144]	@ zero_extendqisi2
+	strh	r3, [r8, #-8]	@ movhi
+.L3258:
+	ldrb	r3, [r5, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L3341
-	ldrh	r3, [r7, #-8]
-	mov	r0, r6
-	mov	r1, r9
-	str	r3, [sp]
+	beq	.L3259
+	ldrh	r3, [r8, #-8]
+	mov	r1, r7
+	mov	r0, r9
+	str	r3, [sp, #4]
 	bl	__aeabi_uidiv
-	ldr	r3, [sp]
+	ldr	r3, [sp, #4]
 	uxtah	r0, r3, r0
 	add	r3, r3, r0, asr #2
-	strh	r3, [r7, #-8]	@ movhi
-.L3341:
-	movw	r3, #2382
-	ldrh	r3, [r5, r3]
+	strh	r3, [r8, #-8]	@ movhi
+.L3259:
+	ldr	r3, .L3276+28
+	ldrh	r3, [r3]
 	cmp	r3, #0
-	beq	.L3343
-	ldrh	r2, [r7, #-8]
+	beq	.L3261
+	ldrh	r2, [r8, #-8]
 	add	r2, r2, r3, lsr #1
-	strh	r2, [r7, #-8]	@ movhi
-	mul	r2, r9, r3
-	cmp	r2, r6
-	addgt	r3, r3, #32
-	ldrgt	r2, .L3361+4
-	addgt	r3, r10, r3
-	strgt	fp, [r2, #2448]
-	ldrgt	r2, .L3361+24
-	strgth	r3, [r2, #-8]	@ movhi
-.L3343:
-	ldrh	r2, [r7, #-8]
-	ldr	r3, [r5, #2448]
-	rsb	r3, r2, r3
-	mul	r9, r9, r3
-	movw	r3, #2388
+	strh	r2, [r8, #-8]	@ movhi
+	mul	r2, r7, r3
+	cmp	r9, r2
+	addlt	r3, r3, #32
+	strlt	fp, [r5, #2452]
+	addlt	r3, r10, r3
+	strhlt	r3, [r8, #-8]	@ movhi
+.L3261:
+	ldrh	r2, [r8, #-8]
+	ldr	r3, [r5, #2452]
+	sub	r3, r3, r2
+	mul	r7, r7, r3
+	movw	r3, #2390
 	ldrh	r3, [r5, r3]
-	str	r9, [r4, #1788]
-	mul	r9, r3, r9
-	movw	r3, #2394
+	str	r7, [r4, #1796]
+	mul	r7, r7, r3
+	movw	r3, #2396
 	ldrh	r3, [r5, r3]
-	str	r9, [r5, #2448]
-	mul	r9, r3, r9
-	str	r9, [r5, #2428]
+	str	r7, [r5, #2452]
+	mul	r7, r7, r3
+	str	r7, [r5, #2432]
 	bl	FtlBbmTblFlush
-	ldr	r2, [r5, #2336]
-	movw	r3, #2402
+	movw	r3, #2404
+	ldr	r2, [r5, #2340]
 	ldrh	r3, [r5, r3]
-	add	r1, r6, r8
+	add	r1, r6, r9
 	add	r3, r3, r2, lsr #3
 	cmp	r1, r3
-	bls	.L3345
-	ldr	r0, .L3361+28
-	mov	r2, r2, lsr #5
+	bls	.L3263
+	lsr	r2, r2, #5
+	ldr	r0, .L3276+32
 	bl	printk
-.L3345:
-	movw	r3, #2330
-	ldr	r6, .L3361+32
+.L3263:
+	movw	r3, #2334
+	ldr	r6, .L3276+36
 	ldrh	r2, [r5, r3]
 	mov	r1, #0
-	sub	r8, r6, #244
-	ldr	r0, [r4, #-3544]
-	mvn	r9, #0
-	mov	r2, r2, asl #1
-	mov	fp, r8
+	ldr	r0, [r4, #-3540]
+	mvn	r7, #0
+	sub	r6, r6, #240
+	lsl	r2, r2, #1
 	bl	ftl_memset
 	mov	r3, #0
-	strh	r3, [r6, #-2]	@ movhi
+	strh	r7, [r6, #236]	@ movhi
+	strh	r3, [r6, #238]	@ movhi
 	mov	r1, #255
-	strh	r3, [r6, #-244]	@ movhi
-	str	r3, [r4, #-3372]
+	str	r3, [r4, #-3368]
 	strb	r3, [r4, #-3278]
 	strb	r3, [r4, #-3276]
-	strh	r3, [r8, #2]	@ movhi
-	strb	r3, [r4, #-3518]
-	mov	r3, #1
-	strb	r3, [r4, #-3516]
-	movw	r3, #2328
-	ldrh	r2, [r5, r3]
-	ldr	r0, [r4, #-3368]
-	strh	r9, [r6, #-4]	@ movhi
-	add	r6, r6, #3280
-	mov	r2, r2, lsr #3
-	bl	ftl_memset
-.L3346:
-	ldr	r10, .L3361+36
-	ldr	r5, .L3361
-	mov	r0, r10
-	bl	make_superblock
-	ldrb	r3, [r4, #-3517]	@ zero_extendqisi2
-	cmp	r3, #0
-	ldrh	r3, [r8]
-	bne	.L3347
-	ldr	r2, [r6, #-3544]
-	mov	r3, r3, asl #1
-	strh	r9, [r2, r3]	@ movhi
-	ldrh	r3, [fp]
-	add	r3, r3, #1
-	strh	r3, [fp]	@ movhi
-	b	.L3346
-.L3347:
-	ldr	r2, [r5, #-3332]
-	mov	r3, r3, asl #1
-	ldrh	r1, [r10, #4]
-	mov	r9, r5
-	str	r2, [r5, #-3512]
-	add	r2, r2, #1
-	str	r2, [r5, #-3332]
-	ldr	r2, [r5, #-3544]
-	strh	r1, [r2, r3]	@ movhi
-	sub	r2, r5, #3472
-	sub	r6, r2, #4
-	mov	r3, #0
-	strb	r3, [r5, #-3470]
 	strh	r3, [r6, #2]	@ movhi
-	ldrh	r3, [r10]
-	mvn	r10, #0
-	add	r3, r3, #1
-	strh	r3, [r2, #-4]	@ movhi
-	mov	r3, #1
-	strb	r3, [r5, #-3468]
-.L3348:
-	ldr	r8, .L3361+40
-	ldr	r5, .L3361
-	mov	r0, r8
-	bl	make_superblock
-	ldrb	r3, [r4, #-3469]	@ zero_extendqisi2
-	cmp	r3, #0
-	ldrh	r3, [r6]
-	bne	.L3349
-	ldr	r2, [r9, #-3544]
-	mov	r3, r3, asl #1
-	strh	r10, [r2, r3]	@ movhi
-	ldrh	r3, [r6]
-	add	r3, r3, #1
+	strb	r3, [r4, #-3514]
 	strh	r3, [r6]	@ movhi
-	b	.L3348
-.L3349:
-	ldr	r2, [r5, #-3332]
-	mov	r3, r3, asl #1
-	ldrh	r1, [r8, #4]
-	mvn	r4, #0
-	str	r2, [r5, #-3464]
-	add	r2, r2, #1
-	str	r2, [r5, #-3332]
-	ldr	r2, [r5, #-3544]
-	strh	r1, [r2, r3]	@ movhi
-	sub	r3, r5, #3424
-	strh	r4, [r3, #-4]	@ movhi
-	bl	FtlFreeSysBlkQueueOut
-	ldr	r3, .L3361+44
-	mov	r2, #0
-	strh	r2, [r3, #2]	@ movhi
-	ldr	r2, [r5, #1788]
-	strh	r4, [r3, #4]	@ movhi
-	strh	r2, [r3, #6]	@ movhi
-	ldr	r3, [r5, #-3332]
-	str	r3, [r5, #-3292]
+	mov	r3, #1
+	strb	r3, [r4, #-3512]
+	movw	r3, #2332
+	ldrh	r2, [r5, r3]
+	ldr	r0, [r5, #32]
+	mov	r5, r6
+	lsr	r2, r2, #3
+	bl	ftl_memset
+.L3264:
+	mov	r0, r6
+	bl	make_superblock
+	ldrb	r3, [r4, #-3513]	@ zero_extendqisi2
+	cmp	r3, #0
+	ldrh	r3, [r5]
+	bne	.L3265
+	ldr	r2, [r4, #-3540]
+	lsl	r3, r3, #1
+	strh	r7, [r2, r3]	@ movhi
+	ldrh	r3, [r5]
 	add	r3, r3, #1
-	str	r3, [r5, #-3332]
-	strh	r0, [r7, #-4]	@ movhi
+	strh	r3, [r5]	@ movhi
+	b	.L3264
+.L3249:
+	ldr	lr, [r4, #-508]
+	mvn	r1, r3
+	orr	r1, r3, r1, lsl #16
+	str	r1, [lr, r3, lsl #2]
+	ldr	r1, [r4, #-504]
+	str	ip, [r1, r3, lsl #2]
+	b	.L3248
+.L3251:
+	mov	r0, r7
+	mov	r1, #1
+	bl	FtlLowFormatEraseBlock
+	add	r7, r7, #1
+	add	r6, r6, r0
+	uxth	r6, r6
+	uxth	r7, r7
+	b	.L3250
+.L3254:
+	mov	r0, r7
+	mov	r1, #1
+	bl	FtlLowFormatEraseBlock
+	add	r7, r7, #1
+	add	r6, r6, r0
+	uxth	r6, r6
+	uxth	r7, r7
+	b	.L3253
+.L3256:
+	mov	r1, #0
+	bl	FtlLowFormatEraseBlock
+	add	r9, r9, r0
+	uxth	r9, r9
+	b	.L3255
+.L3265:
+	ldr	r2, [r4, #-3332]
+	lsl	r3, r3, #1
+	ldrh	r1, [r5, #4]
+	mvn	r6, #0
+	str	r2, [r4, #-3508]
+	add	r2, r2, #1
+	str	r2, [r4, #-3332]
+	ldr	r2, [r4, #-3540]
+	strh	r1, [r2, r3]	@ movhi
+	mov	r2, #0
+	ldr	r3, .L3276+40
+	strb	r2, [r4, #-3466]
+	strh	r2, [r3, #2]	@ movhi
+	mov	r7, r3
+	ldrh	r2, [r5]
+	mov	r5, r3
+	add	r2, r2, #1
+	strh	r2, [r3]	@ movhi
+	mov	r2, #1
+	strb	r2, [r4, #-3464]
+.L3266:
+	mov	r0, r7
+	bl	make_superblock
+	ldrb	r3, [r4, #-3465]	@ zero_extendqisi2
+	cmp	r3, #0
+	ldrh	r3, [r5]
+	bne	.L3267
+	ldr	r2, [r4, #-3540]
+	lsl	r3, r3, #1
+	strh	r6, [r2, r3]	@ movhi
+	ldrh	r3, [r5]
+	add	r3, r3, #1
+	strh	r3, [r5]	@ movhi
+	b	.L3266
+.L3267:
+	ldr	r2, [r4, #-3332]
+	lsl	r3, r3, #1
+	ldrh	r1, [r5, #4]
+	mvn	r5, #0
+	str	r2, [r4, #-3460]
+	add	r2, r2, #1
+	str	r2, [r4, #-3332]
+	ldr	r2, [r4, #-3540]
+	strh	r1, [r2, r3]	@ movhi
+	ldr	r3, .L3276+44
+	strh	r5, [r3]	@ movhi
+	bl	FtlFreeSysBlkQueueOut
+	sub	r3, r8, #4
+	mov	r2, #0
+	strh	r5, [r3, #4]	@ movhi
+	ldr	r3, [r4, #-3332]
+	strh	r2, [r8, #-2]	@ movhi
+	ldr	r2, [r4, #1796]
+	str	r3, [r4, #-3292]
+	add	r3, r3, #1
+	str	r3, [r4, #-3332]
+	strh	r2, [r8, #2]	@ movhi
+	strh	r0, [r8, #-4]	@ movhi
 	bl	FtlVpcTblFlush
 	bl	FtlSysBlkInit
 	cmp	r0, #0
-	ldreq	r3, .L3361+48
+	ldreq	r3, .L3276+48
 	moveq	r2, #1
-	streq	r2, [r3, #504]
-.L3328:
+	streq	r2, [r3, #500]
+.L3246:
 	mov	r0, #0
 	add	sp, sp, #12
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L3362:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L3277:
 	.align	2
-.L3361:
+.L3276:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2394
+	.word	.LANCHOR0+2396
 	.word	168778952
-	.word	.LANCHOR0+2330
-	.word	.LANCHOR0+2328
+	.word	.LANCHOR0+2334
+	.word	.LANCHOR0+2332
 	.word	.LANCHOR2-3296
+	.word	.LANCHOR0+2384
 	.word	.LC156
 	.word	.LANCHOR2-3280
-	.word	.LANCHOR2-3524
-	.word	.LANCHOR2-3476
-	.word	.LANCHOR2-3300
+	.word	.LANCHOR2-3472
+	.word	.LANCHOR2-3424
 	.word	.LANCHOR1
 	.fnend
 	.size	FtlLowFormat, .-FtlLowFormat
 	.align	2
 	.global	FtlReInitForSDUpdata
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlReInitForSDUpdata, %function
 FtlReInitForSDUpdata:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, lr}
-	.save {r4, r5, lr}
-	.pad #20
-	sub	sp, sp, #20
-	ldr	r4, .L3392
-	ldrb	r3, [r4, #144]	@ zero_extendqisi2
+	push	{r0, r1, r2, r3, r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	.pad #16
+	ldr	r4, .L3314
+	ldrb	r3, [r4, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L3364
-.L3366:
-	mov	r0, #0
-	b	.L3365
-.L3364:
-	ldr	r5, .L3392+4
+	beq	.L3279
+.L3281:
+	mov	r6, #0
+.L3278:
+	mov	r0, r6
+	add	sp, sp, #16
+	@ sp needed
+	pop	{r4, r5, r6, pc}
+.L3279:
+	ldr	r5, .L3314+4
 	ldr	r0, [r5, #1684]
 	bl	FlashInit
-	cmp	r0, #0
-	bne	.L3366
+	subs	r6, r0, #0
+	bne	.L3281
 	bl	FlashLoadFactorBbt
 	cmp	r0, #0
-	beq	.L3367
+	beq	.L3282
 	bl	FlashMakeFactorBbt
-.L3367:
-	ldr	r0, [r5, #1716]
+.L3282:
+	ldr	r0, [r5, #1724]
 	bl	FlashReadIdbDataRaw
 	cmp	r0, #0
-	beq	.L3368
-	mov	r1, #0
+	beq	.L3283
 	mov	r2, #16
+	mov	r1, #0
 	mov	r0, sp
 	bl	FlashReadFacBbtData
+	ldr	r1, [sp]
 	mov	r3, #0
 	mov	r2, r3
-	mov	ip, #1
-	ldr	r1, [sp]
-.L3369:
-	ands	lr, r1, ip, asl r2
-	add	r0, r3, #1
+	mov	r0, #1
+.L3285:
+	ands	ip, r1, r0, lsl r2
 	add	r2, r2, #1
-	movne	r3, r0
+	addne	r3, r3, #1
 	cmp	r2, #16
-	bne	.L3369
+	bne	.L3285
 	cmp	r3, #6
-	bls	.L3388
+	bhi	.L3286
+.L3311:
+	strb	r2, [r4, #37]
+	b	.L3287
+.L3286:
 	mov	r2, #0
-	mov	ip, #1
-.L3372:
-	ands	lr, r1, ip, asl r2
-	add	r0, r3, #1
+	mov	r0, #1
+.L3289:
+	ands	ip, r1, r0, lsl r2
 	add	r2, r2, #1
-	movne	r3, r0
+	addne	r3, r3, #1
 	cmp	r2, #24
-	bne	.L3372
+	bne	.L3289
 	cmp	r3, #17
 	movhi	r3, #36
-	strhib	r3, [r4, #1]
-	bhi	.L3371
-.L3388:
-	strb	r2, [r4, #1]
-.L3371:
-	ldrb	r3, [r4, #1]	@ zero_extendqisi2
-	strh	r3, [r4, #142]	@ movhi
-.L3368:
-	ldr	r1, .L3392+8
-	ldr	r0, .L3392+12
+	strbhi	r3, [r4, #37]
+	bls	.L3311
+.L3287:
+	ldrb	r3, [r4, #37]	@ zero_extendqisi2
+	strh	r3, [r4, #150]	@ movhi
+.L3283:
+	ldr	r1, .L3314+8
+	ldr	r0, .L3314+12
 	bl	printk
-	ldr	r0, .L3392+16
+	ldr	r0, .L3314+16
 	bl	FtlConstantsInit
 	bl	FtlVariablesInit
-	ldr	r0, [r4, #2324]
+	ldr	r0, [r4, #2328]
 	mov	r4, #1
 	uxth	r0, r0
 	bl	FtlFreeSysBlkQueueInit
-.L3374:
+.L3291:
 	bl	FtlLoadBbt
 	cmp	r0, #0
-	beq	.L3375
-.L3390:
+	beq	.L3292
+.L3313:
 	bl	FtlLowFormat
 	cmp	r4, #3
-	addls	r4, r4, #1
-	bls	.L3374
-.L3391:
-	mvn	r0, #0
-	b	.L3365
-.L3375:
+	mvnhi	r6, #0
+	bhi	.L3278
+.L3293:
+	add	r4, r4, #1
+	b	.L3291
+.L3292:
 	bl	FtlSysBlkInit
 	cmp	r0, #0
-	bne	.L3390
-	ldr	r3, .L3392+20
+	bne	.L3313
+	ldr	r3, .L3314+20
 	mov	r2, #1
-	str	r2, [r3, #504]
-.L3365:
-	add	sp, sp, #20
-	@ sp needed
-	ldmfd	sp!, {r4, r5, pc}
-.L3393:
+	str	r2, [r3, #500]
+	b	.L3278
+.L3315:
 	.align	2
-.L3392:
+.L3314:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LC77
 	.word	.LC76
-	.word	.LANCHOR0+116
+	.word	.LC77
+	.word	.LANCHOR0+124
 	.word	.LANCHOR1
 	.fnend
 	.size	FtlReInitForSDUpdata, .-FtlReInitForSDUpdata
 	.align	2
 	.global	Ftl_gc_temp_data_write_back
+	.syntax unified
+	.arm
+	.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
-	stmfd	sp!, {r4, r5, r6, r7, r8, lr}
-	.save {r4, r5, r6, r7, r8, lr}
-	ldr	r5, .L3411
-	ldr	r3, [r5, #-3616]
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	ldr	r4, .L3332
+	ldr	r3, [r4, #-3612]
 	cmp	r3, #0
-	beq	.L3395
-.L3398:
+	beq	.L3317
+.L3320:
 	mov	r0, #0
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L3395:
-	ldr	r3, .L3411+4
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
+	pop	{r4, r5, r6, pc}
+.L3317:
+	ldr	r3, .L3332+4
+	ldrb	r3, [r3, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L3397
-	ldr	r3, [r5, #-2704]
+	beq	.L3319
+	ldr	r3, [r4, #-2704]
 	tst	r3, #1
-	beq	.L3397
-	ldr	r3, .L3411+8
+	beq	.L3319
+	sub	r3, r4, #3424
 	ldrh	r3, [r3, #4]
 	cmp	r3, #0
-	bne	.L3398
-.L3397:
-	mov	r2, #0
-	ldr	r0, [r5, #-532]
-	ldr	r1, [r5, #-2704]
-	mov	r3, r2
+	bne	.L3320
+.L3319:
+	mov	r3, #0
+	mov	r5, #0
+	mov	r6, #36
+	mov	r2, r3
+	ldr	r1, [r4, #-2704]
+	ldr	r0, [r4, #-532]
 	bl	FlashProgPages
-	ldr	r7, .L3411
-	mov	r6, #0
-	mov	r8, #36
-.L3399:
-	ldr	r1, [r5, #-2704]
-	uxth	r3, r6
-	ldr	r4, .L3411
+.L3321:
+	ldr	r1, [r4, #-2704]
+	uxth	r3, r5
 	cmp	r3, r1
-	bcs	.L3410
-	mul	r3, r8, r3
-	ldr	r0, [r7, #-532]
-	add	r6, r6, #1
-	add	r1, r0, r3
-	ldr	r0, [r0, r3]
-	ldr	r2, [r1, #12]
-	cmn	r0, #1
-	bne	.L3400
-	sub	r1, r4, #3424
-	ldr	ip, [r4, #-3544]
+	bcc	.L3323
+	ldr	r0, [r4, #-532]
+	bl	FtlGcBufFree
+	mov	r3, #0
+	str	r3, [r4, #-2704]
+	ldr	r3, .L3332+8
+	ldrh	r3, [r3, #4]
+	cmp	r3, #0
+	bne	.L3320
+	mov	r0, #1
+	bl	FtlGcFreeTempBlock
+	b	.L3331
+.L3323:
+	mul	r3, r6, r3
+	ldr	r2, [r4, #-532]
+	add	r5, r5, #1
+	ldr	ip, [r2, r3]
+	add	r1, r2, r3
+	ldr	r0, [r1, #12]
+	cmn	ip, #1
+	bne	.L3322
+	ldr	r1, .L3332+8
 	mov	lr, #0
-	ldrh	r2, [r1, #-4]
-	mov	r2, r2, asl #1
-	strh	lr, [ip, r2]	@ movhi
-	ldr	r2, [r4, #-3136]
-	strh	r0, [r1, #-4]	@ movhi
+	ldr	r0, [r4, #-3540]
+	ldrh	r2, [r1]
+	lsl	r2, r2, #1
+	strh	lr, [r0, r2]	@ movhi
+	ldr	r2, [r4, #-3140]
+	strh	ip, [r1]	@ movhi
 	add	r2, r2, #1
-	str	r2, [r4, #-3136]
+	str	r2, [r4, #-3140]
 	ldr	r2, [r4, #-532]
 	add	r3, r2, r3
 	ldr	r0, [r3, #4]
@@ -20261,61 +20776,52 @@
 	bl	FtlBbmMapBadBlock
 	bl	FtlBbmTblFlush
 	bl	FtlGcPageVarInit
-	b	.L3409
-.L3400:
-	ldr	r0, [r2, #12]
+.L3331:
+	mov	r0, #1
+	pop	{r4, r5, r6, pc}
+.L3322:
+	ldr	r2, [r0, #8]
 	ldr	r1, [r1, #4]
-	ldr	r2, [r2, #8]
+	ldr	r0, [r0, #12]
 	bl	FtlGcUpdatePage
-	b	.L3399
-.L3410:
-	ldr	r0, [r4, #-532]
-	bl	FtlGcBufFree
-	mov	r3, #0
-	str	r3, [r4, #-2704]
-	ldr	r3, .L3411+8
-	ldrh	r3, [r3, #4]
-	cmp	r3, #0
-	bne	.L3398
-	mov	r0, #1
-	bl	FtlGcFreeTempBlock
-.L3409:
-	mov	r0, #1
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L3412:
+	b	.L3321
+.L3333:
 	.align	2
-.L3411:
+.L3332:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
-	.word	.LANCHOR2-3428
+	.word	.LANCHOR2-3424
 	.fnend
 	.size	Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
 	.align	2
 	.global	Ftl_get_new_temp_ppa
+	.syntax unified
+	.arm
+	.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
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	ldr	r3, .L3417
-	sub	r2, r3, #4
-	ldrh	r1, [r3, #-4]
-	movw	r3, #65535
-	cmp	r1, r3
-	beq	.L3414
-	ldrh	r3, [r2, #4]
+	ldr	r3, .L3341
+	movw	r2, #65535
+	ldrh	r1, [r3]
+	cmp	r1, r2
+	beq	.L3335
+	ldrh	r3, [r3, #4]
 	cmp	r3, #0
-	bne	.L3415
-.L3414:
-	ldr	r4, .L3417+4
+	ldrne	r0, .L3341
+	bne	.L3340
+.L3335:
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	mov	r5, #0
+	ldr	r4, .L3341+4
 	bl	FtlCacheWriteBack
 	mov	r0, #0
-	mov	r5, #0
 	bl	FtlGcFreeTempBlock
-	ldr	r0, .L3417+8
-	strb	r5, [r4, #-3420]
+	sub	r0, r4, #3424
+	strb	r5, [r4, #-3416]
 	bl	allocate_data_superblock
 	sub	r3, r4, #2672
 	sub	r4, r4, #2656
@@ -20325,712 +20831,833 @@
 	mov	r0, r5
 	bl	FtlEctTblFlush
 	bl	FtlVpcTblFlush
-.L3415:
-	ldr	r0, .L3417+8
-	ldmfd	sp!, {r3, r4, r5, lr}
+	pop	{r4, r5, r6, lr}
+	ldr	r0, .L3341
+.L3340:
 	b	get_new_active_ppa
-.L3418:
+.L3342:
 	.align	2
-.L3417:
+.L3341:
 	.word	.LANCHOR2-3424
 	.word	.LANCHOR2
-	.word	.LANCHOR2-3428
 	.fnend
 	.size	Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
 	.align	2
 	.global	ftl_do_gc
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_do_gc, %function
 ftl_do_gc:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 32
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L3583
-	ldr	ip, [r3, #-3616]
-	cmp	ip, #0
-	bne	.L3513
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	r3, .L3507
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	mov	lr, r0
 	.pad #44
 	sub	sp, sp, #44
-	ldr	r4, .L3583+4
-	ldr	r8, [r4, #504]
-	cmp	r8, #1
-	bne	.L3515
+	ldr	r0, [r3, #-3612]
+	cmp	r0, #0
+	bne	.L3439
+	ldr	ip, .L3507+4
+	ldr	r5, [ip, #500]
+	cmp	r5, #1
+	bne	.L3343
 	ldr	r2, [r3, #-560]
 	cmp	r2, #0
-	bne	.L3515
-	mov	r9, r0
-	sub	r0, r3, #3536
-	ldrh	r0, [r0]
+	bne	.L3343
+	sub	r8, r3, #3520
+	ldrh	r0, [r8, #-12]
 	cmp	r0, #47
-	movls	r0, r2
-	bls	.L3572
-	movw	r2, #3448
-	str	r1, [sp, #12]
-	ldrh	r1, [r4, r2]
+	bls	.L3439
+	movw	r2, #3444
+	mov	r7, r1
+	ldrh	r1, [ip, r2]
 	movw	r2, #65535
-	mov	r5, r3
-	str	r9, [sp, #16]
+	mov	r4, r3
+	str	lr, [sp, #16]
 	cmp	r1, r2
-	bne	.L3421
-.L3424:
-	ldr	r4, .L3583+8
+	bne	.L3345
+.L3348:
+	ldr	r6, .L3507+8
 	movw	r2, #65535
-	ldrh	r0, [r4, #-8]
+	ldrh	r0, [r6, #-8]
 	cmp	r0, r2
-	bne	.L3422
-	b	.L3423
-.L3421:
-	sub	r3, r3, #3424
-	ldrh	r3, [r3, #-4]
-	cmp	r3, r2
-	beq	.L3424
-	mov	r0, r8
-	bl	FtlGcFreeTempBlock
-	cmp	r0, #0
-	beq	.L3424
-	mov	r0, r8
-	b	.L3572
-.L3422:
-	ldrh	r3, [r4, #-10]
-	cmp	r3, r2
-	bne	.L3423
-	ldrh	r1, [r4, #-6]
-	cmp	r1, r3
-	beq	.L3423
-	ldrh	r2, [r4, #-4]
-	cmp	r2, r3
-	strneh	r0, [r4, #-10]	@ movhi
-	strneh	r1, [r4, #-8]	@ movhi
-	mvnne	r3, #0
-	strneh	r2, [r4, #-6]	@ movhi
-	strneh	r3, [r4, #-4]	@ movhi
-.L3423:
-	ldr	r3, [sp, #16]
-	ldr	r8, [r5, #-2716]
-	ldr	r6, .L3583+12
-	cmp	r3, #1
-	add	r8, r8, #1
-	add	r8, r8, r3, asl #7
-	sub	r7, r6, #240
-	str	r8, [r5, #-2716]
-	bne	.L3435
-	ldr	r9, .L3583+16
-	ldr	r3, [r9, #2244]
-	cmp	r3, #0
-	bne	.L3426
-	ldrb	r3, [r9, #144]	@ zero_extendqisi2
-	cmp	r3, #0
-	beq	.L3435
-.L3426:
-	ldr	r3, [r5, #-3308]
-	ldr	fp, .L3583
-	cmp	r3, #39
-	bhi	.L3435
-	ldr	r10, .L3583+20
-	ldrh	r3, [r10]
-	add	r8, r8, r3
-	str	r8, [fp, #-2716]
-	bl	FtlGcReFreshBadBlk
-	ldrh	r8, [r6, #-4]
-	movw	r3, #65535
-	cmp	r8, r3
-	bne	.L3435
-	ldrh	r3, [r4, #-10]
-	cmp	r3, r8
-	bne	.L3435
-	ldr	r3, [fp, #-2716]
-	cmp	r3, #1024
-	bhi	.L3427
-	ldrh	r3, [r7, #-8]
-	cmp	r3, #63
-	bhi	.L3435
-.L3427:
-	ldr	r1, .L3583
-	mov	r3, #0
-	strh	r3, [r10]	@ movhi
-	sub	r8, r1, #2704
-	ldrh	r0, [r7, #-8]
-	ldr	r2, .L3583+20
-	ldrh	r10, [r8, #-14]
-	add	ip, r10, #64
-	cmp	r0, ip
-	bgt	.L3435
-	str	r3, [r1, #-2716]
-	ldr	r3, [r1, #-3308]
-	cmp	r3, #0
-	moveq	r3, #6
-	beq	.L3574
-	cmp	r3, #5
-	bhi	.L3429
-	mov	r3, #18
-.L3574:
-	strh	r3, [r2]	@ movhi
-.L3429:
-	mov	r0, #32
-	bl	List_get_gc_head_node
-	movw	ip, #65535
-	uxth	r3, r0
-	cmp	r3, ip
-	beq	.L3434
-	ldrh	r0, [r8, #-8]
-	ldr	r2, .L3583
-	cmp	r0, #0
-	sub	r10, r2, #2704
-	beq	.L3431
-	mov	r8, r3, asl #1
-	movw	r3, #2390
-	ldrh	lr, [r9, r3]
-	ldr	r3, .L3583+24
-	ldr	r2, [r2, #-3544]
-	ldrh	r3, [r3]
-	ldrh	r1, [r2, r8]
-	mul	r3, r3, lr
+	bne	.L3346
+.L3347:
+	ldr	r3, [r4, #-2716]
+	ldr	r2, [sp, #16]
 	add	r3, r3, #1
+	cmp	r2, #1
+	add	r3, r3, r2, lsl #7
+	str	r3, [r4, #-2716]
+	bne	.L3349
+	ldr	r9, .L3507+12
+	ldr	r2, [r9, #2248]
+	cmp	r2, #0
+	bne	.L3350
+	ldrb	r2, [r9, #152]	@ zero_extendqisi2
+	cmp	r2, #0
+	beq	.L3349
+.L3350:
+	ldr	r2, [r4, #-3308]
+	cmp	r2, #39
+	bhi	.L3349
+	ldr	r10, .L3507+16
+	movw	r5, #65535
+	ldrh	r2, [r10]
+	add	r3, r2, r3
+	str	r3, [r4, #-2716]
+	bl	FtlGcReFreshBadBlk
+	ldr	r3, .L3507+20
+	mov	r2, r10
+	ldrh	r3, [r3, #-4]
+	cmp	r3, r5
+	bne	.L3351
+	ldrh	r1, [r6, #-10]
 	cmp	r1, r3
-	bgt	.L3434
-	add	r1, r0, #1
-	str	ip, [sp, #28]
-	str	r2, [sp, #24]
-	mov	r9, #0
-	uxth	r1, r1
-	str	r9, [r10, #-4]
-	strh	r1, [r10, #-8]	@ movhi
-	str	r1, [sp, #20]
+	bne	.L3438
+	ldr	r3, [r4, #-2716]
+	cmp	r3, #1024
+	bhi	.L3353
+	ldrh	r3, [r8, #-4]
+	cmp	r3, #63
+	bhi	.L3438
+.L3353:
+	ldr	r6, .L3507+24
+	mov	r1, #0
+	ldrh	r0, [r8, #-4]
+	strh	r1, [r2]	@ movhi
+	ldrh	r3, [r6, #-14]
+	add	r3, r3, #64
+	cmp	r0, r3
+	bgt	.L3438
+	ldr	r3, [r4, #-3308]
+	str	r1, [r4, #-2716]
+	cmp	r3, r1
+	moveq	r3, #6
+	beq	.L3499
+	cmp	r3, #5
+	bhi	.L3355
+	mov	r3, #18
+.L3499:
+	strh	r3, [r2]	@ movhi
+.L3355:
+	mov	r0, #32
+	movw	r10, #65535
 	bl	List_get_gc_head_node
-	ldr	ip, [sp, #28]
-	uxth	fp, r0
-	ldr	r1, [sp, #20]
-	cmp	fp, ip
-	ldr	r2, [sp, #24]
-	beq	.L3434
-	mov	ip, fp, asl #1
-	ldr	r0, .L3583+28
-	str	ip, [sp, #20]
-	ldrh	r3, [r2, ip]
-	ldrh	r2, [r2, r8]
-	str	r2, [sp]
-	mov	r2, fp
+	uxth	r3, r0
+	cmp	r3, r10
+	beq	.L3359
+	ldrh	ip, [r6, #-8]
+	cmp	ip, #0
+	beq	.L3357
+	movw	r2, #2392
+	uxth	r0, r0
+	ldrh	lr, [r9, r2]
+	movw	r2, #2324
+	ldrh	r2, [r9, r2]
+	lsl	r1, r0, #1
+	ldr	r3, [r4, #-3540]
+	str	r1, [sp, #12]
+	mul	r2, r2, lr
+	ldrh	r0, [r3, r1]
+	str	r3, [sp, #8]
+	add	r2, r2, #1
+	cmp	r0, r2
+	bgt	.L3359
+	add	fp, ip, #1
+	mov	r9, #0
+	uxth	fp, fp
+	mov	r0, ip
+	str	r9, [r4, #-2708]
+	strh	fp, [r6, #-8]	@ movhi
+	bl	List_get_gc_head_node
+	uxth	r5, r0
+	ldr	r3, [sp, #8]
+	ldr	r1, [sp, #12]
+	cmp	r5, r10
+	beq	.L3359
+	lsl	r10, r5, #1
+	mov	r2, r5
+	ldrh	r0, [r3, r10]
+	ldrh	r3, [r3, r1]
+	mov	r1, fp
+	str	r3, [sp]
+	mov	r3, r0
+	ldr	r0, .L3507+28
 	bl	printk
-	ldrh	r3, [r10, #-8]
+	ldrh	r3, [r6, #-8]
 	cmp	r3, #40
-	ldr	ip, [sp, #20]
-	bls	.L3432
-	ldr	r3, [r10, #-840]
-	ldrh	r3, [r3, ip]
+	bls	.L3358
+	ldr	r3, [r4, #-3540]
+	ldrh	r3, [r3, r10]
 	cmp	r3, #32
-	strhih	r9, [r10, #-8]	@ movhi
-.L3432:
-	ldr	r3, .L3583+20
+	strhhi	r9, [r6, #-8]	@ movhi
+.L3358:
+	ldr	r3, .L3507+16
 	mov	r2, #6
 	strh	r2, [r3]	@ movhi
-	b	.L3436
-.L3431:
+.L3351:
+	movw	r0, #65535
+	ldr	r3, [sp, #16]
+	sub	r2, r5, r0
+	clz	r2, r2
+	lsr	r2, r2, #5
+	cmp	r3, #0
+	movne	r1, #0
+	andeq	r1, r2, #1
+	cmp	r1, #0
+	beq	.L3373
+	ldrh	r3, [r8, #-4]
+	cmp	r3, #24
+	movhi	r6, #1
+	bhi	.L3374
+	ldr	r1, .L3507+12
+	movw	r2, #2390
+	cmp	r3, #16
+	ldrh	r6, [r1, r2]
+	lsrhi	r6, r6, #5
+	bhi	.L3374
+	cmp	r3, #12
+	lsrhi	r6, r6, #4
+	bhi	.L3374
+	cmp	r3, #8
+	lsrhi	r6, r6, #2
+.L3374:
+	ldr	r1, .L3507+32
+	ldrh	r2, [r1]
+	cmp	r2, r3
+	mov	r2, r1
+	bcs	.L3378
+	sub	r3, r1, #704
+	movw	r0, #65535
+	ldrh	r3, [r3]
+	cmp	r3, r0
+	bne	.L3379
+	ldrh	r0, [r1, #54]
+	cmp	r0, r3
+	bne	.L3379
+	ldr	r3, .L3507+16
+	ldrh	r0, [r3]
+	cmp	r0, #0
+	bne	.L3380
+	ldr	r3, .L3507+12
+	ldr	ip, [r4, #-3368]
+	ldr	r3, [r3, #2452]
+	add	r3, r3, r3, lsl #1
+	cmp	ip, r3, lsr #2
+	movcs	r3, #18
+	strhcs	r3, [r1]	@ movhi
+	bcs	.L3382
+.L3380:
+	ldr	r3, .L3507+36
+	ldrh	r3, [r3, #-8]
+	add	r3, r3, r3, lsl #1
+	asr	r3, r3, #2
+	strh	r3, [r2]	@ movhi
+.L3382:
+	mov	r3, #0
+	str	r3, [r4, #-2708]
+.L3343:
+	add	sp, sp, #44
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L3345:
+	sub	r3, r3, #3424
+	ldrh	r3, [r3]
+	cmp	r3, r2
+	beq	.L3348
+	mov	r0, r5
+	bl	FtlGcFreeTempBlock
+	cmp	r0, #0
+	beq	.L3348
+	mov	r0, r5
+	b	.L3343
+.L3346:
+	ldrh	r3, [r6, #-10]
+	cmp	r3, r2
+	bne	.L3347
+	ldrh	r1, [r6, #-6]
+	cmp	r1, r3
+	beq	.L3347
+	ldrh	r2, [r6, #-4]
+	cmp	r2, r3
+	mvnne	r3, #0
+	strhne	r0, [r6, #-10]	@ movhi
+	strhne	r1, [r6, #-8]	@ movhi
+	strhne	r2, [r6, #-6]	@ movhi
+	strhne	r3, [r6, #-4]	@ movhi
+	b	.L3347
+.L3357:
 	mov	r3, #1
-	strh	r3, [r10, #-8]	@ movhi
-.L3434:
+	strh	r3, [r6, #-8]	@ movhi
+.L3359:
 	bl	GetSwlReplaceBlock
 	movw	r3, #65535
+	mov	r5, r0
 	cmp	r0, r3
-	mov	fp, r0
-	bne	.L3436
-	ldr	r3, .L3583+20
+	bne	.L3351
+	ldr	r3, .L3507+16
 	mov	r2, #0
 	strh	r2, [r3]	@ movhi
-.L3435:
-	ldrh	ip, [r6, #-4]
+.L3349:
+	ldr	r3, .L3507+20
+	movw	r5, #65535
+	ldrh	r3, [r3, #-4]
+	cmp	r3, r5
+	bne	.L3351
+.L3438:
+	ldr	r6, .L3507+40
 	movw	r3, #65535
-	ldr	r8, .L3583
-	cmp	ip, r3
-	bne	.L3577
-	sub	r3, r8, #3424
-	ldrh	r3, [r3, #-4]
-	cmp	r3, ip
-	movne	fp, ip
-	beq	.L3580
-.L3436:
-	movw	r1, #65535
-	rsb	r3, r1, fp
-	clz	r3, r3
-	ldr	r2, [sp, #16]
-	ldr	r8, .L3583+32
-	mov	r3, r3, lsr #5
-	cmp	r2, #0
-	movne	ip, #0
-	andeq	ip, r3, #1
-	cmp	ip, #0
-	beq	.L3449
-	ldrh	r0, [r8, #-8]
-	cmp	r0, #24
-	movhi	r9, #1
-	bhi	.L3450
-	ldr	r2, .L3583+16
-	movw	r3, #2388
-	cmp	r0, #16
-	ldrh	r9, [r2, r3]
-	movhi	r9, r9, lsr #5
-	bhi	.L3450
-	cmp	r0, #12
-	movhi	r9, r9, lsr #4
-	bhi	.L3450
-	cmp	r0, #8
-	movhi	r9, r9, lsr #2
-.L3450:
-	ldr	r1, .L3583
-	sub	r2, r1, #2720
-	ldrh	r3, [r2]
-	cmp	r3, r0
-	bcs	.L3454
-	sub	r3, r1, #3424
-	movw	r0, #65535
-	ldrh	r3, [r3, #-4]
-	cmp	r3, r0
-	bne	.L3455
-	ldrh	r0, [r4, #-10]
-	cmp	r0, r3
-	bne	.L3455
-	ldr	r3, .L3583+20
-	ldrh	r0, [r3]
-	cmp	r0, #0
-	bne	.L3456
-	ldr	r3, .L3583+16
-	ldr	r1, [r1, #-3372]
-	ldr	r3, [r3, #2448]
-	add	r3, r3, r3, asl #1
-	cmp	r1, r3, lsr #2
-	movcs	r3, #18
-	bcs	.L3457
-.L3456:
-	ldr	r3, .L3583+36
-	ldrh	r3, [r3, #-8]
-	add	r3, r3, r3, asl #1
-	ubfx	r3, r3, #2, #16
-.L3457:
-	strh	r3, [r2]	@ movhi
+	ldrh	r5, [r6]
+	cmp	r5, r3
+	movne	r5, r3
+	bne	.L3351
+	add	r3, r6, #768
+	ldrh	r9, [r3, #-10]
+	cmp	r9, r5
+	bne	.L3351
+	ldrh	r3, [r8, #-4]
+	ldr	r2, [r4, #-2716]
+	cmp	r3, #24
+	movcc	r3, #5120
+	movcs	r3, #1024
+	cmp	r2, r3
+	bls	.L3351
+	ldr	r2, .L3507+16
 	mov	r3, #0
-	str	r3, [r5, #-2708]
-	b	.L3572
-.L3455:
-	ldr	r3, .L3583+36
-	ldrh	r3, [r3, #-8]
-	add	r3, r3, r3, asl #1
-	mov	r3, r3, asr #2
+	str	r3, [r4, #-2716]
 	strh	r3, [r2]	@ movhi
-.L3454:
-	ldr	r3, .L3583+16
-	movw	fp, #65535
-	ldr	r2, [r3, #2244]
-	ldr	r3, [sp, #12]
-	cmp	r3, #2
-	movhi	r3, #0
-	movls	r3, #1
+	bl	GetSwlReplaceBlock
+	cmp	r0, r9
+	mov	r5, r0
+	movne	r10, r0
+	bne	.L3361
+	add	r6, r6, #720
+	ldrh	r2, [r8, #-4]
+	ldrh	r3, [r6, #-14]
+	mov	r9, r6
+	cmp	r2, r3
+	movcs	r3, #80
+	strhcs	r3, [r6, #-14]	@ movhi
+	bcs	.L3364
+	mov	r0, #64
+	bl	List_get_gc_head_node
+	uxth	r3, r0
+	cmp	r3, r5
+	beq	.L3364
+	ldr	r3, [r4, #-564]
+	ldr	r6, .L3507+12
+	cmp	r3, #0
+	uxth	r3, r0
+	bne	.L3365
+	movw	r2, #2344
+	ldrh	r2, [r6, r2]
+	cmp	r2, #3
+	beq	.L3365
+	ldr	r2, [r4, #-2724]
 	cmp	r2, #0
-	moveq	r3, #0
-	cmp	r3, #0
-	addne	r9, r9, #1
-	uxthne	r9, r9
-	b	.L3459
-.L3449:
-	ldrh	r0, [r8, #92]
-	add	r2, r8, #3520
-	cmp	r0, r1
-	bne	.L3460
-	ldrh	r1, [r4, #-10]
-	cmp	r1, r0
+	bne	.L3365
+	ldr	r2, [r6, #2248]
+	cmp	r2, #0
+	bne	.L3365
+	ldrb	r0, [r6, #152]	@ zero_extendqisi2
+	cmp	r0, #0
+	beq	.L3366
+.L3365:
+	ldr	r2, [r4, #-3540]
+	lsl	r3, r3, #1
+	movw	r0, #2344
+	ldrh	r0, [r6, r0]
+	ldrh	r1, [r2, r3]
+	movw	r3, #2392
+	movw	r2, #2324
+	ldrh	r3, [r6, r3]
+	ldrh	r2, [r6, r2]
+	cmp	r0, #3
+	mul	r2, r3, r2
+	lsreq	r3, r3, #1
 	movne	r3, #0
-	andeq	r3, r3, #1
-	cmp	r3, #0
-	beq	.L3460
-	ldrh	r3, [r6, #-4]
-	cmp	r3, r0
-	beq	.L3461
-.L3465:
-	movw	fp, #65535
-	b	.L3460
-.L3461:
-	sub	r10, r2, #2720
-	ldrh	r1, [r7, #-8]
-	str	ip, [r2, #-2708]
-	ldrh	r3, [r10]
-	ldr	r9, .L3583+20
+	add	r3, r3, r2
 	cmp	r1, r3
-	bls	.L3462
-	ldrh	r3, [r9]
+	bgt	.L3368
+	mov	r0, #0
+	bl	List_get_gc_head_node
+	ldr	r3, [r6, #2452]
+	uxth	r10, r0
+	ldr	r2, [r4, #-3368]
+	add	r3, r3, r3, lsl #1
+	cmp	r2, r3, lsr #2
+	movls	r3, #160
+	bls	.L3500
+.L3501:
+	mov	r3, #128
+.L3500:
+	strh	r3, [r9, #-14]	@ movhi
+	movw	r3, #65535
+	cmp	r10, r3
+	beq	.L3364
+.L3361:
+	ldr	r0, .L3507+32
+	lsl	r1, r10, #1
+	ldr	r3, [r4, #-3540]
+	mov	r5, r10
+	ldrh	r2, [r8, #-4]
+	ldrh	r0, [r0]
+	ldrh	r3, [r3, r1]
+	str	r0, [sp, #4]
+	ldr	r0, [r4, #-3604]
+	ldrh	r1, [r0, r1]
+	ldr	r0, .L3507+44
+	str	r1, [sp]
+	mov	r1, r10
+	bl	printk
+	b	.L3364
+.L3368:
+	mov	r3, #128
+.L3502:
+	strh	r3, [r9, #-14]	@ movhi
+.L3364:
+	bl	FtlGcReFreshBadBlk
+	b	.L3351
+.L3366:
+	ldr	r2, [r4, #-3540]
+	lsl	r3, r3, #1
+	ldrh	r3, [r2, r3]
+	cmp	r3, #7
+	bhi	.L3371
+	bl	List_get_gc_head_node
+	uxth	r10, r0
+	b	.L3501
+.L3371:
+	mov	r3, #64
+	b	.L3502
+.L3379:
+	ldr	r3, .L3507+36
+	ldrh	r3, [r3, #-8]
+	add	r3, r3, r3, lsl #1
+	asr	r3, r3, #2
+	strh	r3, [r2]	@ movhi
+.L3378:
+	ldr	r3, .L3507+12
+	movw	r5, #65535
+	ldr	r3, [r3, #2248]
+	adds	r3, r3, #0
+	movne	r3, #1
+	cmp	r7, #2
+	movhi	r3, #0
 	cmp	r3, #0
-	bne	.L3463
-	ldr	r3, .L3583+16
-	ldr	r2, [r2, #-3372]
-	ldr	r3, [r3, #2448]
-	add	r3, r3, r3, asl #1
+	addne	r6, r6, #1
+	uxthne	r6, r6
+.L3384:
+	ldr	r7, .L3507+20
+	movw	r2, #65535
+	ldrh	r3, [r7, #-4]
+	cmp	r3, r2
+	bne	.L3394
+	cmp	r5, r3
+	strhne	r5, [r7, #-4]	@ movhi
+	bne	.L3396
+	add	r3, r7, #624
+	ldrh	r2, [r3, #-10]
+	cmp	r2, r5
+	beq	.L3396
+	ldr	r1, [r4, #-3540]
+	lsl	r2, r2, #1
+	ldrh	r2, [r1, r2]
+	cmp	r2, #0
+	mvneq	r2, #0
+	strheq	r2, [r3, #-10]	@ movhi
+	ldrh	r2, [r3, #-10]
+	strh	r2, [r7, #-4]	@ movhi
+	mvn	r2, #0
+	strh	r2, [r3, #-10]	@ movhi
+.L3396:
+	ldrh	r0, [r7, #-4]
+	mov	r3, #0
+	strb	r3, [r4, #-3276]
+	movw	r3, #65535
+	cmp	r0, r3
+	beq	.L3394
+	bl	IsBlkInGcList
+	cmp	r0, #0
+	mvnne	r3, #0
+	strhne	r3, [r7, #-4]	@ movhi
+	ldr	r3, .L3507+12
+	ldrb	r3, [r3, #152]	@ zero_extendqisi2
+	cmp	r3, #0
+	beq	.L3400
+	ldrh	r0, [r7, #-4]
+	bl	ftl_get_blk_mode
+	strb	r0, [r4, #-3276]
+.L3400:
+	ldrh	r2, [r7, #-4]
+	movw	r3, #65535
+	sub	r9, r7, #4
+	cmp	r2, r3
+	beq	.L3394
+	mov	r0, r9
+	bl	make_superblock
+	mov	r3, #0
+	movw	r2, #1986
+	strh	r3, [r4, r2]	@ movhi
+	strh	r3, [r7, #-2]	@ movhi
+	strb	r3, [r4, #-3278]
+	ldrh	r3, [r7, #-4]
+	ldr	r2, [r4, #-3540]
+	lsl	r3, r3, #1
+	ldrh	r2, [r2, r3]
+	movw	r3, #1988
+	strh	r2, [r4, r3]	@ movhi
+.L3394:
+	ldrh	r3, [r7, #-4]
+	ldrh	r2, [r8]
+	cmp	r2, r3
+	beq	.L3401
+	ldr	r2, .L3507+48
+	ldrh	r1, [r2]
+	cmp	r1, r3
+	beq	.L3401
+	ldrh	r2, [r2, #48]
+	cmp	r2, r3
+	bne	.L3402
+.L3401:
+	mvn	r3, #0
+	strh	r3, [r7, #-4]	@ movhi
+.L3402:
+	ldr	r4, .L3507
+	sub	r7, r4, #3280
+.L3435:
+	ldrh	r2, [r7, #-4]
+	movw	r3, #65535
+	cmp	r2, r3
+	bne	.L3403
+	ldr	r9, .L3507+24
+	mov	r3, #0
+	ldr	r10, .L3507+52
+	str	r3, [r4, #-2708]
+.L3404:
+	ldr	fp, .L3507+56
+	ldrh	r8, [fp]
+	mov	r0, r8
+	bl	List_get_gc_head_node
+	uxth	r2, r0
+	sub	r1, fp, #568
+	strh	r2, [r1, #-4]	@ movhi
+	movw	r1, #65535
+	cmp	r2, r1
+	bne	.L3405
+	mov	r3, #0
+	mov	r0, #8
+	strh	r3, [fp]	@ movhi
+	b	.L3343
+.L3373:
+	ldr	r3, .L3507+40
+	ldrh	r7, [r3]
+	cmp	r7, r0
+	bne	.L3385
+	add	r0, r3, #768
+	ldrh	r0, [r0, #-10]
+	cmp	r0, r7
+	movne	r2, #0
+	andeq	r2, r2, #1
+	cmp	r2, #0
+	beq	.L3385
+	ldrh	r2, [r3, #140]
+	cmp	r2, r7
+	beq	.L3386
+.L3391:
+	mov	r5, r7
+.L3385:
+	ldr	r3, .L3507+12
+	ldr	r3, [r3, #2248]
+	cmp	r3, #0
+	moveq	r6, #1
+	movne	r6, #2
+	b	.L3384
+.L3386:
+	add	r5, r3, #704
+	ldrh	r2, [r8, #-4]
+	ldrh	r3, [r5]
+	str	r1, [r4, #-2708]
+	ldr	r6, .L3507+16
+	cmp	r2, r3
+	bls	.L3387
+	ldrh	r3, [r6]
+	cmp	r3, #0
+	bne	.L3388
+	ldr	r3, .L3507+12
+	ldr	r2, [r4, #-3368]
+	ldr	r3, [r3, #2452]
+	add	r3, r3, r3, lsl #1
 	cmp	r2, r3, lsr #2
 	movcs	r3, #18
-	bcs	.L3464
-.L3463:
-	ldr	r3, .L3583+36
+	bcs	.L3503
+.L3388:
+	ldr	r3, .L3507+36
 	ldrh	r3, [r3, #-8]
-	add	r3, r3, r3, asl #1
-	ubfx	r3, r3, #2, #16
-.L3464:
-	strh	r3, [r10]	@ movhi
+	add	r3, r3, r3, lsl #1
+	asr	r3, r3, #2
+.L3503:
+	strh	r3, [r5]	@ movhi
 	bl	FtlReadRefresh
 	mov	r0, #0
 	bl	List_get_gc_head_node
-	ldr	r3, [r5, #-3544]
 	uxth	r0, r0
-	mov	r0, r0, asl #1
+	ldr	r3, [r4, #-3540]
+	lsl	r0, r0, #1
 	ldrh	r3, [r3, r0]
 	cmp	r3, #4
-	ldrhih	r0, [r9]
-	bhi	.L3572
-.L3462:
-	ldrh	r0, [r9]
+	bls	.L3387
+.L3504:
+	ldrh	r0, [r6]
+	b	.L3343
+.L3387:
+	ldrh	r0, [r6]
 	cmp	r0, #0
-	bne	.L3465
-	ldr	r3, .L3583+36
+	bne	.L3391
+	ldr	r3, .L3507+36
 	ldrh	r9, [r3, #-8]
-	add	r3, r9, r9, asl #1
-	mov	r3, r3, asr #2
-	strh	r3, [r10]	@ movhi
+	add	r3, r9, r9, lsl #1
+	asr	r3, r3, #2
+	strh	r3, [r5]	@ movhi
 	bl	List_get_gc_head_node
-	ldr	r3, [r5, #-3544]
-	movw	r2, #2390
 	uxth	r0, r0
-	mov	r0, r0, asl #1
+	ldr	r3, [r4, #-3540]
+	ldr	r2, .L3507+12
+	lsl	r0, r0, #1
 	ldrh	r1, [r3, r0]
-	ldr	r3, .L3583+16
-	ldrh	r2, [r3, r2]
-	add	r3, r3, #2320
-	ldrh	r3, [r3]
-	mul	r3, r3, r2
+	movw	r3, #2392
+	ldrh	r0, [r2, r3]
+	movw	r3, #2324
+	ldrh	r3, [r2, r3]
+	mul	r3, r3, r0
 	add	r3, r3, r3, lsr #31
 	cmp	r1, r3, asr #1
-	ble	.L3466
-	ldrh	r3, [r7, #-8]
-	sub	r2, r9, #1
-	cmp	r3, r2
-	blt	.L3466
-	bl	FtlReadRefresh
-	b	.L3578
-.L3466:
-	cmp	r1, #0
-	bne	.L3465
-	movw	r0, #65535
-	bl	decrement_vpc_count
-	ldrh	r0, [r8, #-8]
-	add	r0, r0, #1
-	b	.L3572
-.L3460:
-	ldr	r3, .L3583+16
-	ldr	r3, [r3, #2244]
-	cmp	r3, #0
-	moveq	r9, #1
-	movne	r9, #2
-.L3459:
-	ldrh	r3, [r6, #-4]
-	movw	r0, #65535
-	ldr	r2, .L3583
-	cmp	r3, r0
-	sub	r1, r2, #3280
-	bne	.L3468
-	cmp	fp, r3
-	strneh	fp, [r1, #-4]	@ movhi
-	bne	.L3470
-	ldrh	r3, [r4, #-10]
-	sub	r1, r2, #2656
-	cmp	r3, fp
-	beq	.L3470
-	ldr	r2, [r2, #-3544]
-	mov	r3, r3, asl #1
-	ldrh	r3, [r2, r3]
-	cmp	r3, #0
-	mvneq	r3, #0
-	streqh	r3, [r1, #-10]	@ movhi
-	ldrh	r3, [r4, #-10]
-	strh	r3, [r6, #-4]	@ movhi
-	mvn	r3, #0
-	strh	r3, [r4, #-10]	@ movhi
-.L3470:
-	ldrh	r0, [r6, #-4]
-	mov	r3, #0
-	strb	r3, [r5, #-3276]
-	movw	r3, #65535
-	cmp	r0, r3
-	beq	.L3468
-	bl	IsBlkInGcList
-	cmp	r0, #0
-	ldrne	r3, .L3583+12
-	mvnne	r2, #0
-	strneh	r2, [r3, #-4]	@ movhi
-	ldr	r3, .L3583+16
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
-	cmp	r3, #0
-	beq	.L3474
-	ldrh	r0, [r6, #-4]
-	bl	ftl_get_blk_mode
-	strb	r0, [r5, #-3276]
-.L3474:
-	ldrh	r2, [r6, #-4]
-	movw	r3, #65535
-	ldr	r5, .L3583
-	cmp	r2, r3
-	sub	r7, r5, #3280
-	sub	r4, r7, #4
-	beq	.L3468
-	mov	r0, r4
-	bl	make_superblock
-	ldr	r2, .L3583+40
-	movw	r1, #1986
-	mov	r3, #0
-	strh	r3, [r7, #-2]	@ movhi
-	strh	r3, [r2, r1]	@ movhi
-	strb	r3, [r5, #-3278]
-	ldrh	r3, [r7, #-4]
-	ldr	r1, [r5, #-3544]
-	mov	r3, r3, asl #1
-	ldrh	r1, [r1, r3]
-	movw	r3, #1988
-	strh	r1, [r2, r3]	@ movhi
-.L3468:
-	ldrh	r3, [r6, #-4]
+	ble	.L3392
 	ldrh	r2, [r8, #-4]
+	sub	r3, r9, #1
 	cmp	r2, r3
-	beq	.L3475
-	ldr	r2, .L3583+44
-	ldrh	r1, [r2, #-4]
-	cmp	r1, r3
-	beq	.L3475
-	ldrh	r2, [r2, #44]
-	cmp	r2, r3
-	bne	.L3509
-.L3475:
-	mvn	r3, #0
-	strh	r3, [r6, #-4]	@ movhi
-.L3509:
-	ldr	r6, .L3583+48
-	movw	r3, #65535
-	ldr	r5, .L3583
-	ldrh	r2, [r6]
-	mov	r10, r6
-	cmp	r2, r3
-	bne	.L3477
-	mov	r3, #0
-	str	r5, [sp, #12]
-	str	r3, [r5, #-2708]
-.L3478:
-	ldr	r8, .L3583+52
-	ldrh	r4, [r8]
-	mov	r0, r4
-	bl	List_get_gc_head_node
-	movw	r3, #65535
-	uxth	r7, r0
-	strh	r7, [r10]	@ movhi
-	cmp	r7, r3
-	moveq	r3, #0
-	moveq	r0, #8
-	streqh	r3, [r8]	@ movhi
-	beq	.L3572
-.L3479:
-	mov	r0, r7
-	add	r4, r4, #1
-	bl	IsBlkInGcList
-	cmp	r0, #0
-	ldrne	r3, .L3583+52
-	strneh	r4, [r3]	@ movhi
-	bne	.L3478
-	ldr	r3, .L3583+52
-	uxth	r4, r4
-	mov	r2, r7, asl #1
-	strh	r4, [r3]	@ movhi
-	ldr	r3, [sp, #12]
-	ldr	r1, [r3, #-3544]
-	ldr	r3, .L3583+56
-	ldrh	r0, [r1, r2]
-	ldrh	ip, [r3]
-	ldrh	r3, [r3, #-68]
-	mul	r3, r3, ip
-	add	ip, r3, r3, lsr #31
-	cmp	r0, ip, asr #1
-	bgt	.L3482
-	cmp	r0, #8
-	cmphi	r4, #48
-	bls	.L3483
-	ldrh	r0, [r8, #36]
-	cmp	r0, #35
-	bhi	.L3483
-.L3482:
-	ldr	ip, .L3583+52
-	mov	r0, #0
-	strh	r0, [ip]	@ movhi
-.L3483:
-	ldrh	r2, [r1, r2]
-	movw	r1, #65535
-	cmp	r2, r3
-	cmpge	fp, r1
-	bne	.L3484
-	ldr	r3, .L3583+52
-	ldrh	r1, [r3]
-	cmp	r1, #3
-	bhi	.L3484
-	sub	r2, r3, #568
-	mvn	r1, #0
-	strh	r1, [r2, #-4]	@ movhi
-	mov	r2, #0
-	strh	r2, [r3]	@ movhi
-.L3578:
-	ldr	r3, .L3583+20
-	ldrh	r0, [r3]
-	b	.L3572
-.L3484:
-	cmp	r2, #0
-	bne	.L3485
+	blt	.L3392
+	bl	FtlReadRefresh
+	b	.L3504
+.L3392:
+	cmp	r1, #0
+	bne	.L3391
 	movw	r0, #65535
 	bl	decrement_vpc_count
-	ldr	r3, .L3583+52
-	ldr	r2, .L3583+52
+	ldrh	r0, [r8, #-4]
+	add	r0, r0, #1
+	b	.L3343
+.L3405:
+	str	r0, [sp, #12]
+	mov	r0, r2
+	str	r2, [sp, #8]
+	add	r8, r8, #1
+	bl	IsBlkInGcList
+	cmp	r0, #0
+	ldr	r2, [sp, #8]
+	ldr	r3, [sp, #12]
+	strhne	r8, [fp]	@ movhi
+	bne	.L3404
+	uxth	r3, r3
+	ldrh	lr, [r10]
+	ldr	r0, [r4, #-3540]
+	uxth	r8, r8
+	lsl	r1, r3, #1
+	ldr	r3, .L3507+60
+	strh	r8, [fp]	@ movhi
+	ldrh	ip, [r0, r1]
 	ldrh	r3, [r3]
+	mul	r3, r3, lr
+	add	lr, r3, r3, lsr #31
+	cmp	ip, lr, asr #1
+	bgt	.L3408
+	cmp	r8, #48
+	cmphi	ip, #8
+	bls	.L3409
+	ldrh	ip, [fp, #36]
+	cmp	ip, #35
+	bhi	.L3409
+.L3408:
+	mov	ip, #0
+	strh	ip, [r9, #-8]	@ movhi
+.L3409:
+	ldrh	r1, [r0, r1]
+	movw	r0, #65535
+	cmp	r3, r1
+	cmple	r5, r0
+	bne	.L3410
+	ldrh	r0, [r9, #-8]
+	cmp	r0, #3
+	bhi	.L3410
+	ldr	r1, .L3507+20
+	mvn	r2, #0
+	strh	r2, [r1, #-4]	@ movhi
+	mov	r2, #0
+	strh	r2, [r9, #-8]	@ movhi
+.L3506:
+	ldr	r3, .L3507+16
+	b	.L3505
+.L3410:
+	cmp	r1, #0
+	bne	.L3411
+	movw	r0, #65535
+	bl	decrement_vpc_count
+	ldrh	r3, [r9, #-8]
 	add	r3, r3, #1
-	strh	r3, [r2]	@ movhi
-	b	.L3478
-.L3485:
+	strh	r3, [r9, #-8]	@ movhi
+	b	.L3404
+.L3411:
 	mov	r3, #0
-	strb	r3, [r5, #-3276]
-	ldr	r3, .L3583+16
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
+	strb	r3, [r4, #-3276]
+	ldr	r3, .L3507+12
+	ldrb	r3, [r3, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L3486
-	mov	r0, r7
+	beq	.L3412
+	mov	r0, r2
 	bl	ftl_get_blk_mode
-	ldr	r3, .L3583
-	strb	r0, [r3, #-3276]
-.L3486:
-	ldr	r0, .L3583+48
+	strb	r0, [r4, #-3276]
+.L3412:
+	ldr	r3, .L3507+20
+	sub	r8, r3, #4
+	mov	r0, r8
 	bl	make_superblock
-	ldrh	r2, [r6]
-	ldr	r1, .L3583+60
+	add	r2, r8, #4
+	ldr	r1, .L3507+64
+	ldrh	r2, [r2, #-4]
 	mov	r3, #0
-	ldr	r0, [r5, #-3544]
-	mov	r2, r2, asl #1
+	ldr	r0, [r4, #-3540]
 	strh	r3, [r1]	@ movhi
+	lsl	r2, r2, #1
 	ldrh	r2, [r0, r2]
-	strh	r3, [r6, #2]	@ movhi
-	strb	r3, [r5, #-3278]
+	strh	r3, [r8, #2]	@ movhi
+	strb	r3, [r4, #-3278]
 	strh	r2, [r1, #2]	@ movhi
-.L3477:
+.L3403:
 	ldr	r3, [sp, #16]
 	cmp	r3, #1
-	bne	.L3487
+	bne	.L3413
 	bl	FtlReadRefresh
-.L3487:
+.L3413:
 	mov	r3, #1
-	str	r3, [r5, #-560]
-	ldr	r3, .L3583+56
+	str	r3, [r4, #-560]
+	ldr	r3, .L3507+52
 	ldrh	r3, [r3]
-	str	r3, [sp, #12]
-	ldr	r3, .L3583+16
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
+	str	r3, [sp, #8]
+	ldr	r3, .L3507+12
+	ldrb	r3, [r3, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L3488
-	ldr	r3, .L3583
-	ldrb	r3, [r3, #-3276]	@ zero_extendqisi2
+	beq	.L3414
+	ldrb	r3, [r4, #-3276]	@ zero_extendqisi2
 	cmp	r3, #1
-	ldreq	r3, .L3583+64
-	ldreqh	r3, [r3]
-	streq	r3, [sp, #12]
-.L3488:
-	ldrh	r3, [r6, #2]
-	mov	r6, #0
-	ldr	r1, [sp, #12]
-	add	r2, r3, r9
-	ldr	r4, .L3583
+	ldreq	r3, .L3507+68
+	ldrheq	r3, [r3]
+	streq	r3, [sp, #8]
+.L3414:
+	ldr	r3, .L3507+20
+	ldr	r1, [sp, #8]
+	ldrh	r3, [r3, #-2]
+	add	r2, r3, r6
 	cmp	r2, r1
 	movgt	r2, r1
-	rsbgt	r3, r3, r2
-	uxthgt	r9, r3
-.L3490:
-	uxth	r3, r6
-	ldr	r7, .L3583
-	cmp	r3, r9
-	ldr	r5, .L3583+48
-	bcs	.L3497
-	ldr	r3, .L3583+24
-	add	r0, r5, #14
-	ldrh	r1, [r5, #2]
-	movw	lr, #65535
-	ldr	r7, [r4, #-2688]
-	mov	ip, #36
-	ldrh	r8, [r3]
-	add	r1, r1, r6
+	subgt	r6, r2, r3
 	mov	r3, #0
-	mov	r5, r3
-.L3498:
-	uxth	r2, r3
-	cmp	r2, r8
-	bcs	.L3581
-	ldrh	r2, [r0, #2]!
-	add	r3, r3, #1
-	cmp	r2, lr
-	orrne	r2, r1, r2, asl #10
-	mlane	r10, ip, r5, r7
-	addne	r5, r5, #1
-	uxthne	r5, r5
-	strne	r2, [r10, #4]
-	b	.L3498
-.L3581:
+	uxthgt	r6, r6
+	str	r3, [sp, #12]
+	sub	r3, r7, #4
+	str	r3, [sp, #20]
+.L3416:
+	ldrh	r3, [sp, #12]
+	cmp	r6, r3
+	bls	.L3423
+	ldr	r3, .L3507+60
+	add	ip, r7, #10
 	ldr	r0, [r4, #-2688]
-	mov	r1, r5
+	movw	r9, #65535
+	mov	lr, #36
+	ldrh	r10, [r3]
+	ldr	r3, [sp, #20]
+	ldrh	r1, [r3, #2]
+	ldr	r3, [sp, #12]
+	add	r1, r1, r3
+	mov	r3, #0
+	mov	r8, r3
+	b	.L3424
+.L3418:
+	ldrh	r2, [ip, #2]!
+	add	r3, r3, #1
+	cmp	r2, r9
+	mlane	fp, lr, r8, r0
+	addne	r8, r8, #1
+	orrne	r2, r1, r2, lsl #10
+	uxthne	r8, r8
+	strne	r2, [fp, #4]
+.L3424:
+	uxth	r2, r3
+	cmp	r10, r2
+	bhi	.L3418
+	mov	fp, #0
 	ldrb	r2, [r4, #-3276]	@ zero_extendqisi2
-	mov	r8, #0
+	mov	r1, r8
 	bl	FlashReadPages
-.L3493:
-	uxth	r3, r8
-	cmp	r3, r5
-	bcs	.L3582
+.L3419:
+	uxth	r3, fp
+	cmp	r8, r3
+	ldrls	r3, [sp, #12]
+	addls	r3, r3, #1
+	strls	r3, [sp, #12]
+	bls	.L3416
+.L3422:
 	mov	r3, #36
 	ldr	r2, [r4, #-2688]
-	mul	r7, r3, r8
-	add	r1, r2, r7
-	ldr	r2, [r2, r7]
-	ldr	r10, [r1, #12]
+	mul	r9, r3, fp
+	add	r1, r2, r9
+	ldr	r2, [r2, r9]
 	cmn	r2, #1
-	beq	.L3529
-	ldrh	r1, [r10]
+	beq	.L3420
+	ldr	r10, [r1, #12]
 	movw	r2, #61589
+	ldrh	r1, [r10]
 	cmp	r1, r2
-	bne	.L3529
-	add	r1, sp, #32
+	bne	.L3420
 	mov	r2, #0
+	add	r1, sp, #32
 	ldr	r0, [r10, #8]
-	str	r3, [sp, #20]
-	bl	log2phys
-	ldr	r2, [r4, #-2688]
-	add	r2, r2, r7
-	ldr	r0, [r2, #4]
-	ldr	r1, [sp, #32]
-	ldr	r3, [sp, #20]
-	bic	r1, r1, #-2147483648
-	cmp	r1, r0
-	bne	.L3529
-	ldr	r1, .L3583+60
-	ldr	r0, .L3583+60
-	ldr	r2, [r2, #16]
-	ldrh	r1, [r1]
 	str	r3, [sp, #24]
-	add	r1, r1, #1
-	strh	r1, [r0]	@ movhi
-	ldr	r0, [r4, #-2704]
-	ldr	r1, [r4, #-532]
-	mla	r1, r3, r0, r1
-	str	r2, [r1, #16]
-	str	r1, [sp, #20]
-	bl	Ftl_get_new_temp_ppa
-	ldr	r2, [r4, #-532]
-	ldr	r1, [sp, #20]
+	bl	log2phys
+	ldr	r1, [r4, #-2688]
+	ldr	r2, [sp, #32]
 	ldr	r3, [sp, #24]
-	str	r0, [r1, #4]
-	ldr	r1, [r4, #-2704]
-	mla	r3, r3, r1, r2
+	add	r1, r1, r9
+	ldr	r0, [r1, #4]
+	bic	r2, r2, #-2147483648
+	cmp	r2, r0
+	bne	.L3420
+	ldr	r2, .L3507+64
+	ldr	r0, .L3507+64
+	ldr	r1, [r1, #16]
+	ldrh	r2, [r2]
+	str	r3, [sp, #28]
+	add	r2, r2, #1
+	strh	r2, [r0]	@ movhi
+	ldr	r0, [r4, #-2704]
+	ldr	r2, [r4, #-532]
+	mla	r2, r3, r0, r2
+	str	r1, [r2, #16]
+	str	r2, [sp, #24]
+	bl	Ftl_get_new_temp_ppa
+	ldr	r2, [sp, #24]
+	ldr	r1, [r4, #-532]
+	ldr	r3, [sp, #28]
+	str	r0, [r2, #4]
+	ldr	r2, [r4, #-2704]
+	mla	r3, r3, r2, r1
 	ldr	r2, [r4, #-2688]
-	add	r2, r2, r7
+	add	r2, r2, r9
 	ldr	r1, [r2, #8]
 	str	r1, [r3, #8]
 	mov	r1, #1
@@ -21038,592 +21665,479 @@
 	str	r2, [r3, #12]
 	ldr	r3, [sp, #32]
 	str	r3, [r10, #12]
-	ldr	r3, .L3583+68
+	ldr	r3, .L3507+40
 	ldrh	r3, [r3]
 	strh	r3, [r10, #2]	@ movhi
 	ldr	r3, [r4, #-3328]
 	ldr	r0, [r4, #-2688]
 	str	r3, [r10, #4]
-	add	r0, r0, r7
 	ldr	r3, [r4, #-2704]
+	add	r0, r0, r9
 	add	r3, r3, #1
 	str	r3, [r4, #-2704]
 	bl	FtlGcBufAlloc
-	ldr	r3, .L3583+16
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
+	ldr	r3, .L3507+12
+	ldrb	r3, [r3, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L3495
-	ldrb	r3, [r4, #-3421]	@ zero_extendqisi2
-	ldr	r2, [r4, #-2704]
+	bne	.L3421
+	ldrb	r2, [r4, #-3417]	@ zero_extendqisi2
+	ldr	r3, [r4, #-2704]
 	cmp	r2, r3
-	beq	.L3495
-	ldr	r3, .L3583+68
+	beq	.L3421
+	ldr	r3, .L3507+40
 	ldrh	r3, [r3, #4]
 	cmp	r3, #0
-	bne	.L3529
-.L3495:
+	bne	.L3420
+.L3421:
 	bl	Ftl_gc_temp_data_write_back
 	cmp	r0, #0
-	beq	.L3529
-	ldr	r3, .L3583
+	beq	.L3420
+	ldr	r3, .L3507
 	mov	r2, #0
-	mvn	r1, #0
-	sub	r3, r3, #3280
-	str	r2, [r3, #2720]
-	strh	r1, [r3, #-4]	@ movhi
-	strh	r2, [r3, #-2]	@ movhi
-	b	.L3578
-.L3529:
-	add	r8, r8, #1
-	b	.L3493
-.L3582:
-	add	r6, r6, #1
-	b	.L3490
-.L3497:
-	ldrh	r3, [r5, #2]
-	add	r9, r9, r3
-	ldr	r3, [sp, #12]
-	uxth	r9, r9
-	strh	r9, [r5, #2]	@ movhi
-	cmp	r9, r3
-	bcc	.L3499
-	ldr	r3, [r7, #-2704]
+	mvn	ip, #0
+	sub	r1, r3, #3280
+	str	r2, [r3, #-560]
+	add	r3, r3, #1984
+	strh	ip, [r1, #-4]	@ movhi
+	strh	r2, [r1, #-2]	@ movhi
+.L3505:
+	ldrh	r0, [r3]
+	b	.L3343
+.L3420:
+	add	fp, fp, #1
+	b	.L3419
+.L3423:
+	ldrh	r3, [r7, #-2]
+	add	r6, r6, r3
+	ldr	r3, [sp, #8]
+	uxth	r6, r6
+	cmp	r3, r6
+	strh	r6, [r7, #-2]	@ movhi
+	bhi	.L3425
+	ldr	r3, [r4, #-2704]
 	cmp	r3, #0
-	beq	.L3500
+	beq	.L3426
 	bl	Ftl_gc_temp_data_write_back
 	cmp	r0, #0
 	movne	r3, #0
-	strne	r3, [r7, #-560]
-	bne	.L3578
-.L3500:
-	ldr	r3, .L3583+60
-	ldrh	r4, [r3]
-	cmp	r4, #0
-	bne	.L3501
-	ldrh	r3, [r5]
-	ldr	r2, [r7, #-3544]
-	mov	r3, r3, asl #1
+	strne	r3, [r4, #-560]
+	bne	.L3506
+.L3426:
+	ldr	r3, .L3507+64
+	ldrh	r0, [r3]
+	cmp	r0, #0
+	bne	.L3427
+	ldrh	r3, [r7, #-4]
+	ldr	r2, [r4, #-3540]
+	lsl	r3, r3, #1
 	ldrh	r3, [r2, r3]
 	cmp	r3, #0
-	beq	.L3501
-	ldr	r6, .L3583+16
-.L3502:
-	ldr	r3, [r6, #2448]
-	cmp	r4, r3
-	bcs	.L3507
-	mov	r0, r4
-	add	r1, sp, #36
+	movne	r6, r0
+	ldrne	r8, .L3507+12
+	bne	.L3428
+.L3427:
+	mvn	r3, #0
+	strh	r3, [r7, #-4]	@ movhi
+.L3425:
+	ldr	r3, .L3507+72
+	ldrh	r3, [r3]
+	cmp	r3, #2
+	bhi	.L3434
+	ldr	r3, .L3507+52
+	ldrh	r6, [r3]
+	b	.L3435
+.L3429:
+	add	r6, r6, #1
+.L3428:
+	ldr	r3, [r8, #2452]
+	cmp	r6, r3
+	bcs	.L3433
 	mov	r2, #0
+	add	r1, sp, #36
+	mov	r0, r6
 	bl	log2phys
 	ldr	r0, [sp, #36]
 	cmn	r0, #1
-	beq	.L3503
+	beq	.L3429
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
-	ldrh	r3, [r5]
+	ldrh	r3, [r7, #-4]
 	cmp	r3, r0
-	bne	.L3503
-.L3507:
-	ldr	r3, .L3583+16
-	ldr	r3, [r3, #2448]
-	cmp	r4, r3
-	bcc	.L3501
-	ldrh	r3, [r5]
+	bne	.L3429
+.L3433:
+	ldr	r3, [r8, #2452]
+	cmp	r6, r3
+	bcc	.L3427
+	ldrh	r3, [r7, #-4]
 	mov	r1, #0
-	ldr	r2, [r7, #-3544]
-	mov	r3, r3, asl #1
+	ldr	r2, [r4, #-3540]
+	lsl	r3, r3, #1
 	strh	r1, [r2, r3]	@ movhi
-	ldrh	r0, [r5]
+	ldrh	r0, [r7, #-4]
 	bl	update_vpc_list
 	bl	FtlCacheWriteBack
 	bl	l2p_flush
 	bl	FtlVpcTblFlush
-	b	.L3501
-.L3503:
-	add	r4, r4, #1
-	b	.L3502
-.L3501:
-	mvn	r3, #0
-	strh	r3, [r5]	@ movhi
-.L3499:
-	ldr	r3, .L3583+72
-	ldrh	r3, [r3]
-	cmp	r3, #2
-	ldrls	r3, .L3583+56
-	ldrlsh	r9, [r3]
-	bls	.L3509
-.L3508:
-	ldr	r2, .L3583
-	mov	r1, #0
-	str	r1, [r2, #-560]
-	ldr	r2, .L3583+20
+	b	.L3427
+.L3434:
+	mov	r2, #0
+	str	r2, [r4, #-560]
+	ldr	r2, .L3507+16
 	ldrh	r0, [r2]
-	cmp	r0, r1
-	addeq	r0, r3, #1
-	b	.L3572
-.L3513:
-	mov	r0, #0
-	bx	lr
-.L3515:
-	mov	r0, ip
-	b	.L3572
-.L3580:
-	ldrh	r9, [r4, #-10]
-	cmp	r9, r3
-	bne	.L3577
-	sub	r3, r8, #3520
-	ldr	r2, [r8, #-2716]
-	ldrh	r3, [r3, #-8]
-	cmp	r3, #24
-	movcc	r3, #5120
-	movcs	r3, #1024
-	cmp	r2, r3
-	movls	fp, r9
-	bls	.L3436
-	ldr	r2, .L3583+20
-	mov	r3, #0
-	str	r3, [r5, #-2716]
-	strh	r3, [r2]	@ movhi
-	bl	GetSwlReplaceBlock
-	cmp	r0, r9
-	mov	fp, r0
-	bne	.L3438
-	sub	r3, r8, #2704
-	ldrh	r1, [r7, #-8]
-	ldrh	r2, [r3, #-14]
-	mov	r9, r3
-	cmp	r1, r2
-	movcs	r2, #80
-	strcsh	r2, [r3, #-14]	@ movhi
-	bcs	.L3448
-	mov	r0, #64
-	bl	List_get_gc_head_node
-	uxth	r3, r0
-	cmp	r3, fp
-	beq	.L3448
-	ldr	r2, [r8, #-564]
-	ldr	r10, .L3583+16
-	cmp	r2, #0
-	bne	.L3441
-	movw	r1, #2340
-	ldrh	r1, [r10, r1]
-	cmp	r1, #3
-	beq	.L3441
-	ldr	r1, [r8, #-3236]
-	cmp	r1, #0
-	bne	.L3441
-	ldr	r1, [r10, #2244]
-	cmp	r1, #0
-	bne	.L3441
-	ldrb	r0, [r10, #144]	@ zero_extendqisi2
 	cmp	r0, #0
-	beq	.L3442
-.L3441:
-	ldr	r2, [r5, #-3544]
-	mov	r3, r3, asl #1
-	movw	r0, #2340
-	ldrh	r0, [r10, r0]
-	ldrh	r1, [r2, r3]
-	movw	r3, #2390
-	ldr	r2, .L3583+24
-	cmp	r0, #3
-	ldrh	r3, [r10, r3]
-	ldrh	r2, [r2]
-	mul	r2, r2, r3
-	moveq	r3, r3, lsr #1
-	movne	r3, #0
-	add	r3, r2, r3
-	cmp	r1, r3
-	bgt	.L3444
+	addeq	r0, r3, #1
+	b	.L3343
+.L3439:
 	mov	r0, #0
-	bl	List_get_gc_head_node
-	ldr	r3, [r10, #2448]
-	ldr	r2, [r5, #-3372]
-	add	r3, r3, r3, asl #1
-	cmp	r2, r3, lsr #2
-	movls	r3, #160
-	uxth	fp, r0
-	bls	.L3575
-	b	.L3579
-.L3442:
-	ldr	r2, [r8, #-3544]
-	mov	r3, r3, asl #1
-	ldrh	r3, [r2, r3]
-	cmp	r3, #7
-	bhi	.L3447
-	bl	List_get_gc_head_node
-	uxth	fp, r0
-.L3579:
-	mov	r3, #128
-.L3575:
-	strh	r3, [r9, #-14]	@ movhi
-	movw	r3, #65535
-	cmp	fp, r3
-	beq	.L3448
-	b	.L3438
-.L3444:
-	mov	r3, #128
-	b	.L3576
-.L3447:
-	mov	r3, #64
-.L3576:
-	strh	r3, [r9, #-14]	@ movhi
-	b	.L3448
-.L3438:
-	ldr	r0, [r5, #-3608]
-	mov	r1, fp, asl #1
-	ldr	r3, [r5, #-3544]
-	ldrh	r2, [r7, #-8]
-	ldrh	r3, [r3, r1]
-	ldrh	r1, [r0, r1]
-	ldr	r0, .L3583+76
-	str	r1, [sp]
-	ldr	r1, .L3583+80
-	ldrh	r1, [r1]
-	str	r1, [sp, #4]
-	mov	r1, fp
-	bl	printk
-.L3448:
-	bl	FtlGcReFreshBadBlk
-	b	.L3436
-.L3577:
-	mov	fp, r3
-	b	.L3436
-.L3572:
-	add	sp, sp, #44
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L3584:
+	b	.L3343
+.L3508:
 	.align	2
-.L3583:
+.L3507:
 	.word	.LANCHOR2
 	.word	.LANCHOR1
 	.word	.LANCHOR2-2656
-	.word	.LANCHOR2-3280
 	.word	.LANCHOR0
-	.word	.LANCHOR4+1984
-	.word	.LANCHOR0+2320
+	.word	.LANCHOR2+1984
+	.word	.LANCHOR2-3280
+	.word	.LANCHOR2-2704
 	.word	.LC157
-	.word	.LANCHOR2-3520
-	.word	.LANCHOR2-3296
-	.word	.LANCHOR4
-	.word	.LANCHOR2-3472
-	.word	.LANCHOR2-3284
-	.word	.LANCHOR2-2712
-	.word	.LANCHOR0+2388
-	.word	.LANCHOR4+1986
-	.word	.LANCHOR0+2390
-	.word	.LANCHOR2-3428
-	.word	.LANCHOR2-3528
-	.word	.LC158
 	.word	.LANCHOR2-2720
+	.word	.LANCHOR2-3296
+	.word	.LANCHOR2-3424
+	.word	.LC158
+	.word	.LANCHOR2-3472
+	.word	.LANCHOR0+2390
+	.word	.LANCHOR2-2712
+	.word	.LANCHOR0+2324
+	.word	.LANCHOR2+1986
+	.word	.LANCHOR0+2392
+	.word	.LANCHOR2-3524
 	.fnend
 	.size	ftl_do_gc, .-ftl_do_gc
 	.align	2
 	.global	FtlCacheWriteBack
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlCacheWriteBack, %function
 FtlCacheWriteBack:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 8
+	@ args = 0, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #12
-	ldr	r3, .L3629
-	ldr	r7, .L3629+4
-	ldr	r5, [r3, #1992]
-	ldr	r3, [r7, #-3616]
-	cmp	r3, #0
-	bne	.L3587
-	ldr	r4, .L3629+8
-	ldr	r1, [r4, #2440]
+	.pad #20
+	sub	sp, sp, #20
+	ldr	r6, .L3552
+	ldr	r9, [r6, #-3612]
+	cmp	r9, #0
+	bne	.L3511
+	ldr	r4, .L3552+4
+	ldr	r1, [r4, #2444]
 	cmp	r1, #0
-	beq	.L3587
-	ldrb	r6, [r4, #144]	@ zero_extendqisi2
-	mov	r8, #0
-	ldr	r0, [r4, #2444]
+	beq	.L3511
+	ldrb	r3, [r4, #152]	@ zero_extendqisi2
+	mov	r7, #0
+	ldr	r5, [r6, #1992]
 	mov	r10, #36
-	cmp	r6, #0
+	ldr	fp, .L3552+8
+	cmp	r3, #0
+	ldr	r0, [r4, #2448]
+	ldrbne	r8, [r5, #8]	@ zero_extendqisi2
+	moveq	r8, r9
 	ldrb	r3, [r5, #9]	@ zero_extendqisi2
-	ldr	r9, .L3629+8
-	ldrneb	r6, [r5, #8]	@ zero_extendqisi2
-	subne	r6, r6, #1
-	clzne	r6, r6
-	movne	r6, r6, lsr #5
-	mov	r2, r6
+	subne	r8, r8, #1
+	clzne	r8, r8
+	lsrne	r8, r8, #5
+	mov	r2, r8
 	bl	FlashProgPages
-.L3590:
-	ldr	r3, [r4, #2440]
-	cmp	r8, r3
-	bcs	.L3608
-	mul	fp, r10, r8
-	ldr	r3, [r9, #2444]
-	add	r2, r3, fp
-	ldr	r3, [r3, fp]
-	cmn	r3, #1
-	beq	.L3611
-	ldr	r3, [r2, #4]
-	cmp	r6, #0
-	ldr	r0, [r2, #16]
-	add	r1, sp, #4
-	mov	r2, #1
-	orrne	r3, r3, #-2147483648
-	str	r3, [sp, #4]
-	bl	log2phys
+.L3514:
 	ldr	r3, [r4, #2444]
-	add	r3, r3, fp
+	cmp	r7, r3
+	bcc	.L3521
+.L3533:
+	mov	r3, #0
+	str	r3, [r4, #2444]
+.L3511:
+	mov	r0, #0
+	add	sp, sp, #20
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L3521:
+	mul	r3, r10, r7
+	ldr	r2, [r4, #2448]
+	add	r0, r2, r3
+	ldr	r2, [r2, r3]
+	cmn	r2, #1
+	beq	.L3516
+	ldr	r2, [r0, #4]
+	cmp	r8, #0
+	add	r1, sp, #12
+	ldr	r0, [r0, #16]
+	str	r3, [sp, #4]
+	orrne	r2, r2, #-2147483648
+	str	r2, [sp, #12]
+	mov	r2, #1
+	bl	log2phys
+	ldr	r2, [r4, #2448]
+	ldr	r3, [sp, #4]
+	add	r3, r2, r3
 	ldr	r3, [r3, #12]
 	ldr	r0, [r3, #12]
 	cmn	r0, #1
-	beq	.L3594
+	beq	.L3519
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
-	ldr	r2, [r7, #-3544]
-	mov	r3, r0, asl #1
-	mov	fp, r0
+	ldr	r1, [r6, #-3540]
+	lsl	r2, r0, #1
+	mov	r3, r0
+	ldrh	r2, [r1, r2]
+	cmp	r2, #0
+	bne	.L3520
+	mov	r1, r0
+	str	r0, [sp, #4]
+	mov	r0, fp
+	bl	printk
+	ldr	r3, [sp, #4]
+.L3520:
+	mov	r0, r3
+	bl	decrement_vpc_count
+.L3519:
+	add	r7, r7, #1
+	b	.L3514
+.L3531:
+	mov	r7, #36
+	ldr	r3, [r4, #2448]
+	mul	r7, r7, r9
+	mov	r10, #0
+	mov	fp, #1
+	mvn	r2, #0
+	str	r2, [r3, r7]
+.L3522:
+	ldr	r2, [r4, #2448]
+	add	r3, r2, r7
+	ldr	r2, [r2, r7]
+	ldr	r0, [r3, #4]
+	cmn	r2, #1
+	beq	.L3526
+	cmp	r8, #0
+	mov	r2, #1
+	orrne	r0, r0, #-2147483648
+	add	r1, sp, #12
+	str	r0, [sp, #12]
+	ldr	r0, [r3, #16]
+	bl	log2phys
+	ldr	r3, [r4, #2448]
+	add	r7, r3, r7
+	ldr	r3, [r7, #12]
+	ldr	r0, [r3, #12]
+	cmn	r0, #1
+	beq	.L3529
+	ubfx	r0, r0, #10, #16
+	bl	P2V_block_in_plane
+	ldr	r2, [r6, #-3540]
+	lsl	r3, r0, #1
+	mov	r7, r0
 	ldrh	r2, [r2, r3]
 	cmp	r2, #0
-	bne	.L3595
-	ldr	r0, .L3629+12
-	mov	r1, fp
-	bl	printk
-.L3595:
-	mov	r0, fp
-	bl	decrement_vpc_count
-.L3594:
-	add	r8, r8, #1
-	b	.L3590
-.L3627:
-	ldr	r6, .L3629+16
-	movw	r5, #16386
-.L3607:
-	ldrh	r3, [r6]
-	cmp	r3, #0
-	beq	.L3608
-	mov	r0, #1
+	bne	.L3530
 	mov	r1, r0
+	ldr	r0, .L3552+8
+	bl	printk
+.L3530:
+	mov	r0, r7
+	bl	decrement_vpc_count
+.L3529:
+	add	r9, r9, #1
+.L3516:
+	ldr	r3, [r4, #2444]
+	cmp	r9, r3
+	bcc	.L3531
+	movw	r5, #16386
+.L3534:
+	ldr	r3, .L3552+12
+	ldrh	r3, [r3]
+	cmp	r3, #0
+	beq	.L3533
+	mov	r1, #1
+	mov	r0, r1
 	bl	ftl_do_gc
 	subs	r5, r5, #1
-	bne	.L3607
-.L3608:
-	mov	r3, #0
-	str	r3, [r4, #2440]
-	b	.L3587
-.L3611:
-	ldr	fp, .L3629+8
-	mov	r9, #0
-.L3591:
-	ldr	r3, [r4, #2440]
-	cmp	r9, r3
-	bcs	.L3627
-	mov	r8, #36
-	ldr	r3, [fp, #2444]
-	mul	r8, r8, r9
-	mov	r10, #0
-	mvn	r2, #0
-	str	r2, [r3, r8]
-.L3597:
-	ldr	r3, [r4, #2444]
-	add	r2, r3, r8
-	ldr	r3, [r3, r8]
-	cmn	r3, #1
-	bne	.L3628
-	ldr	r0, [r2, #4]
+	bne	.L3534
+	b	.L3533
+.L3526:
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
 	ldrh	r3, [r5]
 	cmp	r3, r0
-	bne	.L3598
-	ldr	r1, [r7, #-3544]
-	mov	r3, r3, asl #1
+	bne	.L3523
+	ldr	r1, [r6, #-3540]
+	lsl	r3, r3, #1
 	ldrh	r0, [r5, #4]
 	ldrh	r2, [r1, r3]
-	rsb	r2, r0, r2
+	sub	r2, r2, r0
 	strh	r2, [r1, r3]	@ movhi
-	ldr	r3, .L3629+20
+	ldr	r3, .L3552+16
 	strb	r10, [r5, #6]
 	strh	r10, [r5, #4]	@ movhi
 	ldrh	r3, [r3]
 	strh	r3, [r5, #2]	@ movhi
-.L3598:
+.L3523:
 	ldrh	r3, [r5, #4]
 	cmp	r3, #0
-	bne	.L3599
+	bne	.L3524
 	mov	r0, r5
 	bl	allocate_new_data_superblock
-.L3599:
-	ldr	r3, [r7, #-3136]
+.L3524:
+	ldr	r3, [r6, #-3140]
 	add	r3, r3, #1
-	str	r3, [r7, #-3136]
-	ldr	r3, [r4, #2444]
-	add	r3, r3, r8
+	str	r3, [r6, #-3140]
+	ldr	r3, [r4, #2448]
+	add	r3, r3, r7
 	ldr	r0, [r3, #4]
 	ubfx	r0, r0, #10, #16
 	bl	FtlGcMarkBadPhyBlk
 	mov	r0, r5
 	bl	get_new_active_ppa
-	ldr	r3, [r4, #2444]
-	mov	r2, r6
+	ldr	r3, [r4, #2448]
+	mov	r2, r0
+	str	r0, [sp, #12]
 	mov	r1, #1
-	add	r3, r3, r8
-	str	r0, [sp, #4]
-	str	r0, [r3, #4]
-	mov	r0, r3
+	add	r0, r3, r7
+	str	r2, [r0, #4]
+	mov	r2, r8
 	ldrb	r3, [r5, #9]	@ zero_extendqisi2
 	bl	FlashProgPages
-	ldr	r3, [r4, #2444]
-	ldr	r3, [r3, r8]
+	ldr	r3, [r4, #2448]
+	ldr	r3, [r3, r7]
 	cmn	r3, #1
-	ldreq	r2, .L3629+4
-	moveq	r3, #1
-	streq	r3, [r2, #-3616]
-	ldr	r3, [r7, #-3616]
+	streq	fp, [r6, #-3612]
+	ldr	r3, [r6, #-3612]
 	cmp	r3, #0
-	beq	.L3597
-	b	.L3587
-.L3628:
-	ldr	r3, [r2, #4]
-	cmp	r6, #0
-	ldr	r0, [r2, #16]
-	add	r1, sp, #4
-	mov	r2, #1
-	orrne	r3, r3, #-2147483648
-	str	r3, [sp, #4]
-	bl	log2phys
-	ldr	r3, [r4, #2444]
-	add	r8, r3, r8
-	ldr	r3, [r8, #12]
-	ldr	r0, [r3, #12]
-	cmn	r0, #1
-	beq	.L3604
-	ubfx	r0, r0, #10, #16
-	bl	P2V_block_in_plane
-	ldr	r2, [r7, #-3544]
-	mov	r3, r0, asl #1
-	mov	r8, r0
-	ldrh	r2, [r2, r3]
-	cmp	r2, #0
-	bne	.L3605
-	ldr	r0, .L3629+12
-	mov	r1, r8
-	bl	printk
-.L3605:
-	mov	r0, r8
-	bl	decrement_vpc_count
-.L3604:
-	add	r9, r9, #1
-	b	.L3591
-.L3587:
-	mov	r0, #0
-	add	sp, sp, #12
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L3630:
+	beq	.L3522
+	b	.L3511
+.L3553:
 	.align	2
-.L3629:
-	.word	.LANCHOR4
+.L3552:
 	.word	.LANCHOR2
 	.word	.LANCHOR0
 	.word	.LC159
 	.word	.LANCHOR2-2658
-	.word	.LANCHOR0+2388
+	.word	.LANCHOR0+2390
 	.fnend
 	.size	FtlCacheWriteBack, .-FtlCacheWriteBack
 	.align	2
 	.global	FtlSysFlush
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlSysFlush, %function
 FtlSysFlush:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L3635
-	ldr	r3, [r3, #-3616]
+	ldr	r3, .L3560
+	ldr	r3, [r3, #-3612]
 	cmp	r3, #0
-	bne	.L3634
-	ldr	r3, .L3635+4
-	stmfd	sp!, {r4, lr}
+	bne	.L3557
+	ldr	r3, .L3560+4
+	push	{r4, lr}
 	.save {r4, lr}
-	ldr	r4, [r3, #504]
+	ldr	r4, [r3, #500]
 	cmp	r4, #1
-	bne	.L3632
+	bne	.L3555
 	bl	FtlCacheWriteBack
 	bl	l2p_flush
 	mov	r0, r4
 	bl	FtlEctTblFlush
 	bl	FtlVpcTblFlush
-.L3632:
+.L3555:
 	mov	r0, #0
-	ldmfd	sp!, {r4, pc}
-.L3634:
+	pop	{r4, pc}
+.L3557:
 	mov	r0, #0
 	bx	lr
-.L3636:
+.L3561:
 	.align	2
-.L3635:
+.L3560:
 	.word	.LANCHOR2
 	.word	.LANCHOR1
 	.fnend
 	.size	FtlSysFlush, .-FtlSysFlush
 	.align	2
 	.global	FtlDeInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlDeInit, %function
 FtlDeInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, lr}
-	.save {r3, lr}
-	ldr	r3, .L3640
-	ldr	r3, [r3, #504]
+	ldr	r3, .L3568
+	ldr	r3, [r3, #500]
 	cmp	r3, #1
-	bne	.L3638
+	bne	.L3565
+	push	{r4, lr}
+	.save {r4, lr}
 	bl	FtlSysFlush
-.L3638:
 	mov	r0, #0
-	ldmfd	sp!, {r3, pc}
-.L3641:
+	pop	{r4, pc}
+.L3565:
+	mov	r0, #0
+	bx	lr
+.L3569:
 	.align	2
-.L3640:
+.L3568:
 	.word	.LANCHOR1
 	.fnend
 	.size	FtlDeInit, .-FtlDeInit
 	.align	2
 	.global	ftl_deinit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_deinit, %function
 ftl_deinit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, lr}
-	.save {r3, lr}
+	push	{r4, lr}
+	.save {r4, lr}
 	bl	ftl_flash_de_init
 	bl	FtlDeInit
-	ldmfd	sp!, {r3, lr}
+	pop	{r4, lr}
 	b	ftl_flash_de_init
 	.fnend
 	.size	ftl_deinit, .-ftl_deinit
 	.align	2
 	.global	rk_ftl_de_init
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_ftl_de_init, %function
 rk_ftl_de_init:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, lr}
-	.save {r3, lr}
+	push	{r4, lr}
+	.save {r4, lr}
 	mov	r1, #0
-	ldr	r0, .L3646
+	ldr	r0, .L3574
 	bl	printk
-	ldmfd	sp!, {r3, lr}
+	pop	{r4, lr}
 	b	ftl_deinit
-.L3647:
+.L3575:
 	.align	2
-.L3646:
+.L3574:
 	.word	.LC160
 	.fnend
 	.size	rk_ftl_de_init, .-rk_ftl_de_init
 	.align	2
 	.global	ftl_cache_flush
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_cache_flush, %function
 ftl_cache_flush:
 	.fnstart
@@ -21635,6 +22149,9 @@
 	.size	ftl_cache_flush, .-ftl_cache_flush
 	.align	2
 	.global	rk_ftl_cache_write_back
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_ftl_cache_write_back, %function
 rk_ftl_cache_write_back:
 	.fnstart
@@ -21646,74 +22163,89 @@
 	.size	rk_ftl_cache_write_back, .-rk_ftl_cache_write_back
 	.align	2
 	.global	ftl_discard
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_discard, %function
 ftl_discard:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 8
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr}
-	.save {r4, r5, r6, r7, r8, r9, lr}
-	.pad #12
+	push	{r0, r1, r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
+	.pad #8
 	mov	r6, r0
-	ldr	r8, .L3669
+	ldr	r5, .L3596
+	ldr	r3, [r5, #2432]
+	cmp	r3, r1
+	cmpcs	r3, r0
+	movls	r0, #1
+	movhi	r0, #0
+	bls	.L3586
+	add	r2, r6, r1
 	mov	r4, r1
-	ldr	r3, [r8, #2428]
-	cmp	r1, r3
-	cmpls	r0, r3
-	movcs	r5, #1
-	movcc	r5, #0
-	bcs	.L3658
-	add	r2, r0, r1
-	cmp	r2, r3
-	bhi	.L3658
+	cmp	r3, r2
+	bcc	.L3586
 	cmp	r1, #31
-	bls	.L3656
-	ldr	r7, .L3669+4
-	ldr	r3, [r7, #-3616]
+	bls	.L3578
+	ldr	r7, .L3596+4
+	ldr	r3, [r7, #-3612]
 	cmp	r3, #0
-	movne	r0, r5
-	bne	.L3651
+	bne	.L3578
 	bl	FtlCacheWriteBack
-	movw	r3, #2394
-	ldrh	r5, [r8, r3]
+	movw	r3, #2396
 	mov	r0, r6
+	ldrh	r5, [r5, r3]
 	mov	r1, r5
 	bl	__aeabi_uidiv
 	smulbb	r3, r0, r5
 	mov	r8, r0
-	rsb	r6, r3, r6
+	sub	r6, r6, r3
 	uxth	r6, r6
 	cmp	r6, #0
-	beq	.L3652
-	rsb	r5, r6, r5
+	beq	.L3580
+	sub	r5, r5, r6
 	add	r8, r0, #1
 	cmp	r5, r4
 	movcs	r5, r4
 	uxth	r5, r5
-	rsb	r4, r5, r4
-.L3652:
-	ldr	r5, .L3669+8
+	sub	r4, r4, r5
+.L3580:
+	ldr	r5, .L3596+8
 	mvn	r3, #0
-	ldr	r9, .L3669+12
 	str	r3, [sp, #4]
 	mov	r6, r5
-.L3653:
+.L3581:
 	ldrh	r3, [r5]
 	cmp	r4, r3
-	bcc	.L3668
-	mov	r0, r8
-	mov	r1, sp
+	bcs	.L3583
+	ldr	r3, [r7, #1996]
+	cmp	r3, #32
+	bls	.L3584
+	mov	r3, #0
+	str	r3, [r7, #1996]
+	bl	l2p_flush
+	bl	FtlVpcTblFlush
+.L3584:
+	mov	r0, #0
+.L3578:
+	add	sp, sp, #8
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, pc}
+.L3583:
 	mov	r2, #0
+	mov	r1, sp
+	mov	r0, r8
 	bl	log2phys
 	ldr	r3, [sp]
 	cmn	r3, #1
-	beq	.L3654
-	ldr	r3, [r9, #1996]
-	add	r1, sp, #4
+	beq	.L3582
+	ldr	r3, [r7, #1996]
 	mov	r2, #1
+	add	r1, sp, #4
 	mov	r0, r8
 	add	r3, r3, #1
-	str	r3, [r9, #1996]
+	str	r3, [r7, #1996]
 	ldr	r3, [r7, #-3360]
 	add	r3, r3, #1
 	str	r3, [r7, #-3360]
@@ -21722,40 +22254,27 @@
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
 	bl	decrement_vpc_count
-.L3654:
+.L3582:
 	ldrh	r3, [r6]
 	add	r8, r8, #1
-	rsb	r4, r3, r4
-	b	.L3653
-.L3668:
-	ldr	r3, .L3669+12
-	ldr	r2, [r3, #1996]
-	cmp	r2, #32
-	bls	.L3656
-	mov	r2, #0
-	str	r2, [r3, #1996]
-	bl	l2p_flush
-	bl	FtlVpcTblFlush
-.L3656:
-	mov	r0, #0
-	b	.L3651
-.L3658:
+	sub	r4, r4, r3
+	b	.L3581
+.L3586:
 	mvn	r0, #0
-.L3651:
-	add	sp, sp, #12
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, pc}
-.L3670:
+	b	.L3578
+.L3597:
 	.align	2
-.L3669:
+.L3596:
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2394
-	.word	.LANCHOR4
+	.word	.LANCHOR0+2396
 	.fnend
 	.size	ftl_discard, .-ftl_discard
 	.align	2
 	.global	FtlDiscard
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlDiscard, %function
 FtlDiscard:
 	.fnstart
@@ -21767,393 +22286,403 @@
 	.size	FtlDiscard, .-FtlDiscard
 	.align	2
 	.global	ftl_read
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_read, %function
 ftl_read:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 56
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	ip, .L3643
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r5, r1
-	ldr	r1, .L3720
 	.pad #84
 	sub	sp, sp, #84
-	ldr	r1, [r1, #504]
-	cmp	r1, #1
-	bne	.L3697
+	ldr	ip, [ip, #500]
+	cmp	ip, #1
+	bne	.L3623
 	cmp	r0, #16
 	mov	r8, r3
-	mov	r9, r2
-	bne	.L3674
-	mov	r1, r2
-	add	r0, r5, #256
+	str	r2, [sp, #28]
+	mov	r5, r1
+	bne	.L3601
 	mov	r2, r3
+	ldr	r1, [sp, #28]
+	add	r0, r5, #256
 	bl	FtlVendorPartRead
-	b	.L3673
-.L3674:
-	ldr	r2, .L3720+4
-	ldr	r3, [r2, #2428]
-	cmp	r9, r3
-	cmpls	r5, r3
-	bcs	.L3697
-	add	r1, r5, r9
-	str	r1, [sp, #40]
+	mov	r10, r0
+.L3599:
+	mov	r0, r10
+	add	sp, sp, #84
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L3601:
+	ldr	r2, .L3643+4
+	ldr	r1, [sp, #28]
+	ldr	r3, [r2, #2432]
 	cmp	r1, r3
-	bhi	.L3697
-	movw	r3, #2394
+	cmpls	r5, r3
+	bcs	.L3623
+	add	r1, r5, r1
+	cmp	r3, r1
+	str	r1, [sp, #44]
+	bcc	.L3623
+	movw	r3, #2396
 	mov	r0, r5
 	ldrh	r4, [r2, r3]
 	mov	r1, r4
 	bl	__aeabi_uidiv
+	ldr	r3, [sp, #44]
 	mov	r1, r4
-	ldr	r3, [sp, #40]
-	str	r0, [sp, #32]
+	str	r0, [sp, #36]
 	sub	r0, r3, #1
 	bl	__aeabi_uidiv
-	ldr	r3, [sp, #32]
-	str	r0, [sp, #36]
+	ldr	r3, [sp, #36]
+	ldr	r1, [sp, #28]
+	str	r0, [sp, #40]
 	rsb	r3, r3, #1
 	add	r3, r3, r0
-	str	r3, [sp, #28]
-	ldr	r3, .L3720+8
-	ldr	r1, [sp, #28]
-	ldr	r0, [sp, #32]
+	str	r3, [sp, #32]
+	ldr	r3, .L3643+8
 	ldr	r2, [r3, #-3336]
-	add	r2, r9, r2
+	add	r2, r2, r1
+	ldr	r1, [sp, #32]
 	str	r2, [r3, #-3336]
 	ldr	r2, [r3, #-3364]
-	add	r2, r1, r2
-	ldr	r1, [sp, #36]
+	add	r2, r2, r1
+	mov	r1, r0
+	ldr	r0, [sp, #36]
 	str	r2, [r3, #-3364]
 	bl	FtlCacheMetchLpa
 	cmp	r0, #0
-	beq	.L3675
+	beq	.L3602
 	bl	FtlCacheWriteBack
-.L3675:
-	ldr	r6, [sp, #32]
-	mov	r10, #0
-	ldr	r4, .L3720+8
-	mov	r7, r10
-	str	r10, [sp, #48]
-	str	r10, [sp, #52]
-.L3676:
-	ldr	r3, [sp, #28]
+.L3602:
+	ldr	r6, [sp, #36]
+	mov	r3, #0
+	ldr	r4, .L3643+8
+	mov	r7, r3
+	mov	r10, r3
+	str	r3, [sp, #52]
+	str	r3, [sp, #48]
+.L3603:
+	ldr	r3, [sp, #32]
 	cmp	r3, #0
-	beq	.L3719
-	mov	r0, r6
-	add	r1, sp, #76
+	bne	.L3620
+	ldr	r3, .L3643+12
+	ldrh	r3, [r3, #-2]
+	cmp	r3, #0
+	beq	.L3599
+	mov	r1, #1
+	ldr	r0, [sp, #32]
+	bl	ftl_do_gc
+	b	.L3599
+.L3620:
 	mov	r2, #0
+	add	r1, sp, #76
+	mov	r0, r6
 	bl	log2phys
 	ldr	r3, [sp, #76]
 	cmn	r3, #1
-	bne	.L3715
-	mov	fp, #0
-.L3677:
-	ldr	r3, .L3720+12
-	ldrh	r0, [r3]
-	cmp	fp, r0
-	bcs	.L3681
-	mla	r0, r0, r6, fp
-	ldr	r2, [sp, #40]
-	cmp	r0, r5
-	movcs	r3, #1
-	movcc	r3, #0
-	cmp	r0, r2
-	movcs	r3, #0
-	cmp	r3, #0
-	beq	.L3679
-	rsb	r0, r5, r0
-	mov	r1, #0
-	mov	r2, #512
-	add	r0, r8, r0, asl #9
-	bl	ftl_memset
-.L3679:
-	add	fp, fp, #1
-	b	.L3677
-.L3715:
+	moveq	r9, #0
+	beq	.L3605
 	ldr	r2, [r4, #-536]
-	mov	fp, #36
-	mla	fp, fp, r7, r2
-	str	r3, [fp, #4]
-	ldr	r3, [sp, #32]
-	cmp	r6, r3
-	bne	.L3682
-	ldr	r3, [r4, #-508]
-	mov	r0, r5
-	str	r3, [fp, #8]
-	ldr	r3, .L3720+12
-	ldrh	ip, [r3]
-	mov	r1, ip
-	str	ip, [sp, #44]
-	bl	__aeabi_uidivmod
-	ldr	ip, [sp, #44]
-	str	r1, [sp, #56]
-	rsb	r3, r1, ip
-	cmp	r3, r9
-	movcs	r3, r9
-	cmp	r3, ip
-	str	r3, [sp, #48]
-	streq	r8, [fp, #8]
-	b	.L3683
-.L3682:
+	mov	r9, #36
+	mla	r9, r9, r7, r2
+	str	r3, [r9, #4]
 	ldr	r3, [sp, #36]
 	cmp	r6, r3
-	bne	.L3684
-	ldr	r3, [r4, #-504]
-	ldr	r1, [sp, #40]
-	str	r3, [fp, #8]
-	ldr	r3, .L3720+12
-	ldrh	r2, [r3]
-	mul	r3, r2, r6
-	rsb	r10, r3, r1
-	cmp	r10, r2
-	bne	.L3683
-	b	.L3717
-.L3684:
-	ldr	r3, .L3720+12
-	ldrh	r3, [r3]
-	mul	r3, r3, r6
-.L3717:
-	rsb	r3, r5, r3
-	add	r3, r8, r3, asl #9
-	str	r3, [fp, #8]
-.L3683:
-	ldr	r3, .L3720+16
+	bne	.L3609
+	ldr	r3, [r4, #-508]
+	mov	r0, r5
+	str	r3, [r9, #8]
+	ldr	r3, .L3643+16
+	ldrh	fp, [r3]
+	mov	r1, fp
+	bl	__aeabi_uidivmod
+	ldr	r2, [sp, #28]
+	sub	r3, fp, r1
+	str	r1, [sp, #56]
+	cmp	r2, r3
+	movcc	r3, r2
+	cmp	r3, fp
+	str	r3, [sp, #48]
+	streq	r8, [r9, #8]
+.L3610:
+	ldr	r3, .L3643+20
 	ldr	r2, [r4, #-496]
-	str	r6, [fp, #16]
+	str	r6, [r9, #16]
 	ldrh	r3, [r3]
-	mul	r3, r3, r7
+	mul	r3, r7, r3
 	add	r7, r7, #1
 	bic	r3, r3, #3
 	add	r3, r2, r3
-	str	r3, [fp, #12]
-.L3681:
-	ldr	r3, [sp, #28]
+	str	r3, [r9, #12]
+	b	.L3608
+.L3607:
+	mla	r0, r0, r6, r9
+	ldr	r2, [sp, #44]
+	cmp	r5, r0
+	movls	r3, #1
+	movhi	r3, #0
+	cmp	r2, r0
+	movls	r3, #0
+	cmp	r3, #0
+	beq	.L3606
+	sub	r0, r0, r5
+	mov	r2, #512
+	mov	r1, #0
+	add	r0, r8, r0, lsl #9
+	bl	ftl_memset
+.L3606:
+	add	r9, r9, #1
+.L3605:
+	ldr	r3, .L3643+16
+	ldrh	r0, [r3]
+	cmp	r9, r0
+	bcc	.L3607
+.L3608:
+	ldr	r3, [sp, #32]
 	add	r6, r6, #1
 	subs	r3, r3, #1
-	str	r3, [sp, #28]
-	beq	.L3685
-	ldr	r3, .L3720+20
+	str	r3, [sp, #32]
+	beq	.L3612
+	ldr	r3, .L3643+24
 	ldrh	r3, [r3]
-	cmp	r7, r3, asl #3
-	bne	.L3676
-.L3685:
+	cmp	r7, r3, lsl #3
+	bne	.L3603
+.L3612:
 	cmp	r7, #0
-	beq	.L3676
-	ldr	r0, [r4, #-536]
-	mov	r1, r7
+	beq	.L3603
 	mov	r2, #0
+	mov	r1, r7
+	ldr	r0, [r4, #-536]
+	mov	fp, #0
 	bl	FlashReadPages
+	ldr	r3, [sp, #52]
+	lsl	r3, r3, #9
+	str	r3, [sp, #68]
 	ldr	r3, [sp, #56]
-	mov	r3, r3, asl #9
+	lsl	r3, r3, #9
 	str	r3, [sp, #60]
 	ldr	r3, [sp, #48]
-	mov	r3, r3, asl #9
+	lsl	r3, r3, #9
 	str	r3, [sp, #64]
-	mov	r3, r10, asl #9
-	str	r3, [sp, #68]
-	mov	r3, #0
-	str	r3, [sp, #44]
-.L3692:
-	ldr	r3, [sp, #44]
-	mov	ip, #36
-	ldr	r1, [sp, #32]
-	mul	fp, ip, r3
+.L3619:
+	mov	r9, #36
 	ldr	r3, [r4, #-536]
-	add	r3, r3, fp
+	mul	r9, r9, fp
+	ldr	r1, [sp, #36]
+	add	r3, r3, r9
 	ldr	r2, [r3, #16]
-	cmp	r2, r1
-	bne	.L3687
+	cmp	r1, r2
+	bne	.L3614
 	ldr	r1, [r3, #8]
 	ldr	r3, [r4, #-508]
 	cmp	r1, r3
-	bne	.L3688
+	bne	.L3615
 	ldr	r3, [sp, #60]
 	mov	r0, r8
 	ldr	r2, [sp, #64]
 	add	r1, r1, r3
-	b	.L3718
-.L3687:
-	ldr	r1, [sp, #36]
-	cmp	r2, r1
-	bne	.L3688
-	ldr	r1, [r3, #8]
-	ldr	r3, [r4, #-504]
-	cmp	r1, r3
-	bne	.L3688
-	ldr	r3, .L3720+12
-	ldr	r2, [sp, #68]
-	ldrh	r0, [r3]
-	ldr	r3, [sp, #36]
-	mul	r0, r0, r3
-	rsb	r0, r5, r0
-	add	r0, r8, r0, asl #9
-.L3718:
+.L3642:
 	bl	ftl_memcpy
-.L3688:
-	ldr	r2, [r4, #-536]
-	add	r3, r2, fp
-	ldr	r1, [r2, fp]
-	cmn	r1, #1
-	streq	r1, [sp, #52]
-	ldreq	r2, [r4, #-3160]
-	addeq	r2, r2, #1
-	streq	r2, [r4, #-3160]
-	ldr	r2, [r3, #12]
-	ldr	r1, [r3, #16]
-	ldr	r2, [r2, #8]
-	cmp	r1, r2
-	beq	.L3690
-	ldr	r2, [r4, #-3160]
-	ldr	r0, .L3720+24
-	add	r2, r2, #1
-	str	r2, [r4, #-3160]
-	ldr	lr, [r3, #12]
-	ldr	r2, [r3, #8]
-	ldr	r1, [lr, #4]
-	str	r1, [sp]
-	ldr	r1, [lr, #8]
-	str	r1, [sp, #4]
-	ldr	r1, [lr, #12]
-	str	r1, [sp, #8]
-	ldr	r1, [r2]
-	str	r1, [sp, #12]
-	ldr	r2, [r2, #4]
-	str	r2, [sp, #16]
-	ldr	r1, [r3, #16]
-	ldr	r2, [r3, #4]
-	ldr	r3, [lr]
-	bl	printk
-.L3690:
+.L3615:
 	ldr	r3, [r4, #-536]
-	add	r2, r3, fp
-	ldr	r3, [r3, fp]
+	ldr	r2, [r3, r9]
+	add	r1, r3, r9
+	cmn	r2, #1
+	ldreq	r3, [r4, #-3164]
+	moveq	r10, r2
+	addeq	r3, r3, #1
+	streq	r3, [r4, #-3164]
+	ldr	r3, [r1, #12]
+	ldr	r2, [r1, #16]
+	ldr	r3, [r3, #8]
+	cmp	r2, r3
+	beq	.L3617
+	ldr	r3, [r4, #-3164]
+	add	r3, r3, #1
+	str	r3, [r4, #-3164]
+	ldr	r2, [r1, #8]
+	ldr	r3, [r1, #12]
+	ldr	r0, [r2, #4]
+	str	r0, [sp, #16]
+	ldr	r2, [r2]
+	ldr	r0, .L3643+28
+	str	r2, [sp, #12]
+	ldr	r2, [r3, #12]
+	str	r2, [sp, #8]
+	ldr	r2, [r3, #8]
+	str	r2, [sp, #4]
+	ldr	r2, [r3, #4]
+	str	r2, [sp]
+	ldr	r2, [r1, #4]
+	ldr	r3, [r3]
+	ldr	r1, [r1, #16]
+	bl	printk
+.L3617:
+	ldr	r3, [r4, #-536]
+	add	r2, r3, r9
+	ldr	r3, [r3, r9]
 	cmp	r3, #256
-	bne	.L3691
+	bne	.L3618
 	ldr	r0, [r2, #4]
 	ubfx	r0, r0, #10, #16
 	bl	P2V_block_in_plane
 	bl	FtlGcRefreshBlock
-.L3691:
-	ldr	r3, [sp, #44]
-	add	r3, r3, #1
-	str	r3, [sp, #44]
-	cmp	r3, r7
-	bne	.L3692
+.L3618:
+	add	fp, fp, #1
+	cmp	r7, fp
+	bne	.L3619
 	mov	r7, #0
-	b	.L3676
-.L3719:
-	ldr	r3, .L3720+28
-	ldrh	r3, [r3, #-2]
-	cmp	r3, #0
-	beq	.L3694
-	ldr	r0, [sp, #28]
-	mov	r1, #1
-	bl	ftl_do_gc
-.L3694:
-	ldr	r0, [sp, #52]
-	b	.L3673
-.L3697:
-	mvn	r0, #0
-.L3673:
-	add	sp, sp, #84
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L3721:
+	b	.L3603
+.L3609:
+	ldr	r3, [sp, #40]
+	cmp	r6, r3
+	bne	.L3611
+	ldr	r3, [r4, #-504]
+	ldr	r1, [sp, #44]
+	str	r3, [r9, #8]
+	ldr	r3, .L3643+16
+	ldrh	r2, [r3]
+	mul	r3, r2, r6
+	sub	r1, r1, r3
+	cmp	r2, r1
+	str	r1, [sp, #52]
+	bne	.L3610
+.L3641:
+	sub	r3, r3, r5
+	add	r3, r8, r3, lsl #9
+	str	r3, [r9, #8]
+	b	.L3610
+.L3611:
+	ldr	r3, .L3643+16
+	ldrh	r3, [r3]
+	mul	r3, r6, r3
+	b	.L3641
+.L3614:
+	ldr	r1, [sp, #40]
+	cmp	r1, r2
+	bne	.L3615
+	ldr	r1, [r3, #8]
+	ldr	r3, [r4, #-504]
+	cmp	r1, r3
+	bne	.L3615
+	ldr	r3, .L3643+16
+	ldr	r2, [sp, #68]
+	ldrh	r0, [r3]
+	ldr	r3, [sp, #40]
+	mul	r0, r3, r0
+	sub	r0, r0, r5
+	add	r0, r8, r0, lsl #9
+	b	.L3642
+.L3623:
+	mvn	r10, #0
+	b	.L3599
+.L3644:
 	.align	2
-.L3720:
+.L3643:
 	.word	.LANCHOR1
 	.word	.LANCHOR0
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2394
-	.word	.LANCHOR0+2400
-	.word	.LANCHOR0+2320
-	.word	.LC148
 	.word	.LANCHOR2-2656
+	.word	.LANCHOR0+2396
+	.word	.LANCHOR0+2402
+	.word	.LANCHOR0+2324
+	.word	.LC148
 	.fnend
 	.size	ftl_read, .-ftl_read
 	.align	2
 	.global	ftl_vendor_read
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_vendor_read, %function
 ftl_vendor_read:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	str	lr, [sp, #-4]!
-	.save {lr}
-	mov	ip, r1
-	mov	lr, r0
+	@ link register save eliminated.
 	mov	r3, r2
-	mov	r1, lr
+	mov	r2, r1
+	mov	r1, r0
 	mov	r0, #16
-	mov	r2, ip
-	ldr	lr, [sp], #4
 	b	ftl_read
 	.fnend
 	.size	ftl_vendor_read, .-ftl_vendor_read
 	.align	2
 	.global	FlashBootVendorRead
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashBootVendorRead, %function
 FlashBootVendorRead:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, lr}
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
-	mov	r4, r2
-	mov	r6, r0
+	mov	r4, r0
 	mov	r5, r1
+	mov	r6, r2
 	bl	rknand_device_lock
-	ldr	r3, .L3728
-	ldr	r3, [r3, #504]
+	ldr	r3, .L3650
+	ldr	r3, [r3, #500]
 	cmp	r3, #1
 	mvnne	r4, #0
-	bne	.L3725
-	mov	r2, r4
-	mov	r0, r6
+	bne	.L3647
+	mov	r0, r4
+	mov	r2, r6
 	mov	r1, r5
 	bl	ftl_vendor_read
 	mov	r4, r0
-.L3725:
+.L3647:
 	bl	rknand_device_unlock
 	mov	r0, r4
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L3729:
+	pop	{r4, r5, r6, pc}
+.L3651:
 	.align	2
-.L3728:
+.L3650:
 	.word	.LANCHOR1
 	.fnend
 	.size	FlashBootVendorRead, .-FlashBootVendorRead
 	.align	2
 	.global	ftl_sys_read
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_sys_read, %function
 ftl_sys_read:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	mov	ip, r1
 	mov	r3, r2
+	mov	r2, r1
 	add	r1, r0, #256
-	mov	r2, ip
 	mov	r0, #16
 	b	ftl_read
 	.fnend
 	.size	ftl_sys_read, .-ftl_sys_read
 	.align	2
 	.global	StorageSysDataLoad
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	StorageSysDataLoad, %function
 StorageSysDataLoad:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	mov	r2, #512
-	mov	r5, r0
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
 	mov	r4, r1
-	mov	r0, r1
+	mov	r5, r0
+	mov	r2, #512
 	mov	r1, #0
+	mov	r0, r4
 	bl	ftl_memset
 	bl	rknand_device_lock
 	mov	r2, r4
@@ -22163,11 +22692,14 @@
 	mov	r4, r0
 	bl	rknand_device_unlock
 	mov	r0, r4
-	ldmfd	sp!, {r3, r4, r5, pc}
+	pop	{r4, r5, r6, pc}
 	.fnend
 	.size	StorageSysDataLoad, .-StorageSysDataLoad
 	.align	2
 	.global	FtlRead
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlRead, %function
 FtlRead:
 	.fnstart
@@ -22179,284 +22711,288 @@
 	.size	FtlRead, .-FtlRead
 	.align	2
 	.global	FtlInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlInit, %function
 FtlInit:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, lr}
+	push	{r4, r5, r6, r7, r8, lr}
 	.save {r4, r5, r6, r7, r8, lr}
 	mvn	r3, #0
-	ldr	r2, .L3751
-	ldr	r7, .L3751+4
-	ldr	r5, .L3751+8
-	ldr	r6, .L3751+12
-	ldr	r1, .L3751+16
-	ldr	r0, .L3751+20
-	str	r3, [r7, #504]
+	ldr	r7, .L3673
+	ldr	r5, .L3673+4
+	ldr	r6, .L3673+8
+	ldr	r1, .L3673+12
+	str	r3, [r7, #500]
 	mov	r3, #0
-	str	r3, [r2, #2000]
-	str	r3, [r5, #-3616]
+	ldr	r0, .L3673+16
+	str	r3, [r5, #2000]
+	str	r3, [r5, #-3612]
 	bl	printk
-	add	r0, r6, #116
+	add	r0, r6, #124
 	bl	FtlConstantsInit
 	bl	FtlMemInit
 	bl	FtlVariablesInit
-	ldr	r3, [r6, #2324]
-	uxth	r0, r3
+	add	r3, r6, #2320
+	add	r3, r3, #8
+	ldrh	r0, [r3]
 	bl	FtlFreeSysBlkQueueInit
 	bl	FtlLoadBbt
 	cmp	r0, #0
-	ldrne	r0, .L3751+24
-	bne	.L3750
+	beq	.L3657
+	ldr	r1, .L3673+20
+	ldr	r0, .L3673+24
+.L3672:
+	bl	printk
+.L3658:
+	mov	r0, #0
+	pop	{r4, r5, r6, r7, r8, pc}
+.L3657:
 	bl	FtlSysBlkInit
 	subs	r4, r0, #0
-	beq	.L3737
-	ldr	r0, .L3751+28
-.L3750:
-	ldr	r1, .L3751+32
-	bl	printk
-	b	.L3736
-.L3737:
-	sub	r5, r5, #3520
+	ldrne	r1, .L3673+20
+	ldrne	r0, .L3673+28
+	bne	.L3672
+.L3659:
 	mov	r1, #1
-	str	r1, [r7, #504]
+	sub	r5, r5, #3520
+	str	r1, [r7, #500]
 	bl	ftl_do_gc
-	ldrh	r5, [r5, #-8]
-	cmp	r5, #15
-	bhi	.L3738
-	ldr	r6, .L3751+36
-	ldr	r7, .L3751+40
-	sub	r8, r6, #244
-.L3741:
-	ldrh	r3, [r6]
+	ldrh	r7, [r5, #-4]
+	cmp	r7, #15
+	bhi	.L3660
+.L3663:
+	ldr	r3, .L3673+32
 	movw	r2, #65535
+	ldrh	r3, [r3]
 	cmp	r3, r2
-	bne	.L3739
-	ldrh	r2, [r7]
+	bne	.L3661
+	ldr	r2, .L3673+36
+	ldrh	r2, [r2]
 	cmp	r2, r3
-	bne	.L3739
+	bne	.L3661
 	and	r0, r4, #63
 	bl	List_get_gc_head_node
 	uxth	r0, r0
 	bl	FtlGcRefreshBlock
-.L3739:
-	mov	r0, #1
-	mov	r1, r0
-	bl	ftl_do_gc
-	mov	r0, #0
+.L3661:
 	mov	r1, #1
+	mov	r0, r1
 	bl	ftl_do_gc
-	ldrh	r2, [r8]
-	add	r3, r5, #2
+	mov	r1, #1
+	mov	r0, #0
+	bl	ftl_do_gc
+	ldrh	r2, [r5, #-4]
+	add	r3, r7, #2
 	cmp	r2, r3
-	bhi	.L3736
+	bhi	.L3658
 	add	r4, r4, #1
 	cmp	r4, #4096
-	bne	.L3741
-	b	.L3736
-.L3738:
-	ldrb	r3, [r6, #144]	@ zero_extendqisi2
+	bne	.L3663
+	b	.L3658
+.L3660:
+	ldrb	r3, [r6, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	beq	.L3736
+	beq	.L3658
 	mov	r4, #128
-.L3743:
-	mov	r0, #1
-	mov	r1, r0
+.L3665:
+	mov	r1, #1
+	mov	r0, r1
 	bl	ftl_do_gc
 	subs	r4, r4, #1
-	bne	.L3743
-.L3736:
-	mov	r0, #0
-	ldmfd	sp!, {r4, r5, r6, r7, r8, pc}
-.L3752:
+	bne	.L3665
+	b	.L3658
+.L3674:
 	.align	2
-.L3751:
-	.word	.LANCHOR4
+.L3673:
 	.word	.LANCHOR1
 	.word	.LANCHOR2
 	.word	.LANCHOR0
-	.word	.LC77
 	.word	.LC76
+	.word	.LC77
+	.word	.LANCHOR3+224
 	.word	.LC161
 	.word	.LC162
-	.word	.LANCHOR3+240
 	.word	.LANCHOR2-3284
 	.word	.LANCHOR2-2666
 	.fnend
 	.size	FtlInit, .-FtlInit
 	.align	2
 	.global	rk_ftl_init
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_ftl_init, %function
 rk_ftl_init:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, lr}
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
 	mov	r0, #2048
-	bl	ftl_malloc
-	ldr	r6, .L3758
-	ldr	r4, .L3758+4
+	bl	ftl_dma32_malloc
 	mov	r5, #0
-	ldr	r1, .L3758+8
-	str	r5, [r6, #2008]
+	ldr	r4, .L3680
+	ldr	r1, .L3680+4
+	str	r0, [r4, #2004]
+	sub	r0, r1, #324
+	str	r5, [r4, #1688]
 	str	r5, [r4, #1684]
-	str	r0, [r6, #2004]
-	ldr	r0, .L3758+12
+	str	r5, [r4, #2008]
 	bl	rknand_get_reg_addr
 	ldr	r3, [r4, #1684]
 	cmp	r3, r5
-	beq	.L3756
+	mvneq	r4, #0
+	beq	.L3675
 	bl	rk_nandc_irq_init
-	mov	r1, r5
-	mov	r2, r5
 	mov	r3, #2048
-	ldr	r0, [r6, #2004]
+	mov	r2, r5
+	mov	r1, r5
+	ldr	r0, [r4, #2004]
 	bl	FlashSramLoadStore
 	bl	rknand_flash_cs_init
 	ldr	r0, [r4, #1684]
 	bl	FlashInit
 	subs	r4, r0, #0
-	bne	.L3755
+	bne	.L3677
 	bl	FtlInit
-.L3755:
+.L3677:
 	mov	r1, r4
-	ldr	r0, .L3758+16
+	ldr	r0, .L3680+8
 	bl	printk
+.L3675:
 	mov	r0, r4
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L3756:
-	mvn	r0, #0
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L3759:
+	pop	{r4, r5, r6, pc}
+.L3681:
 	.align	2
-.L3758:
-	.word	.LANCHOR4
+.L3680:
 	.word	.LANCHOR2
-	.word	.LANCHOR4+2008
-	.word	.LANCHOR2+1684
+	.word	.LANCHOR2+2008
 	.word	.LC163
 	.fnend
 	.size	rk_ftl_init, .-rk_ftl_init
 	.align	2
 	.global	ftl_fix_nand_power_lost_error
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_fix_nand_power_lost_error, %function
 ftl_fix_nand_power_lost_error:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 48
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L3777
-	ldrb	r3, [r3, #144]	@ zero_extendqisi2
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
+	.pad #48
+	sub	sp, sp, #48
+	ldr	r8, .L3697
+	ldrb	r3, [r8, #152]	@ zero_extendqisi2
 	cmp	r3, #0
-	bxeq	lr
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	movw	r3, #1848
-	ldr	r8, .L3777+4
-	.pad #52
-	sub	sp, sp, #52
-	ldr	r4, .L3777+8
+	beq	.L3682
+	ldr	r4, .L3697+4
+	movw	r3, #1846
+	ldr	r0, .L3697+8
+	ldrh	r6, [r4, r3]
+	sub	r9, r4, #3520
+	ldr	r3, [r4, #-3540]
+	sub	r5, r4, #3472
+	mov	r1, r6
+	lsl	r7, r6, #1
+	ldrh	r2, [r3, r7]
+	bl	printk
+	ldrh	r0, [r9]
+	bl	FtlGcRefreshOpenBlock
+	ldrh	r0, [r5]
+	bl	FtlGcRefreshOpenBlock
+	mov	r0, r9
+	bl	allocate_new_data_superblock
+	mov	r0, r5
 	movw	r5, #4097
-	ldr	r0, .L3777+12
-	ldrh	r7, [r8, r3]
-	ldr	r3, [r4, #-3544]
-	mov	r6, r7, asl #1
-	mov	r1, r7
-	ldrh	r2, [r3, r6]
-	bl	printk
-	sub	r3, r4, #3520
-	ldrh	r0, [r3, #-4]
-	bl	FtlGcRefreshOpenBlock
-	sub	r3, r4, #3472
-	ldrh	r0, [r3, #-4]
-	bl	FtlGcRefreshOpenBlock
-	ldr	r0, .L3777+16
 	bl	allocate_new_data_superblock
-	ldr	r0, .L3777+20
-	bl	allocate_new_data_superblock
-.L3762:
+.L3684:
 	subs	r5, r5, #1
-	beq	.L3766
-	mov	r0, #1
-	mov	r1, r0
+	beq	.L3688
+	mov	r1, #1
+	mov	r0, r1
 	bl	ftl_do_gc
-	ldr	r3, [r4, #-3544]
-	ldrh	r3, [r3, r6]
+	ldr	r3, [r4, #-3540]
+	ldrh	r3, [r3, r7]
 	cmp	r3, #0
-	bne	.L3762
-.L3766:
-	ldr	r3, [r4, #-3544]
-	mov	r1, r7
-	ldr	r0, .L3777+12
-	ldrh	r2, [r3, r6]
+	bne	.L3684
+.L3688:
+	ldr	r3, [r4, #-3540]
+	mov	r1, r6
+	ldr	r0, .L3697+8
+	ldrh	r2, [r3, r7]
 	bl	printk
-	ldr	r3, [r4, #-3544]
-	ldrh	r5, [r3, r6]
+	ldr	r3, [r4, #-3540]
+	ldrh	r5, [r3, r7]
 	cmp	r5, #0
-	bne	.L3764
+	bne	.L3686
 	add	r0, sp, #48
-	movw	r10, #65535
-	mov	fp, #36
-	strh	r7, [r0, #-48]!	@ movhi
+	movw	r9, #65535
+	strh	r6, [r0, #-48]!	@ movhi
+	mov	r10, #36
 	bl	make_superblock
-	ldr	r3, .L3777+24
-	ldrh	lr, [r3]
-	ldr	r3, .L3777+8
-	ldr	r9, [r3, #-3612]
-	mov	r3, r5
-	mov	ip, r3
+	movw	r3, #2324
 	add	r0, sp, #14
-.L3767:
-	uxth	r2, r3
-	cmp	r2, lr
-	bcs	.L3776
-	ldrh	r2, [r0, #2]!
-	add	r3, r3, #1
-	cmp	r2, r10
-	movne	r2, r2, asl #10
-	mlane	r1, fp, r5, r9
+	ldrh	lr, [r8, r3]
+	mov	r2, r5
+	ldr	r8, [r4, #-3608]
+	mov	ip, r5
+.L3689:
+	uxth	r3, r2
+	cmp	lr, r3
+	bhi	.L3691
+	ldr	r3, [r4, #-3540]
+	mov	r1, r6
+	ldr	r0, .L3697+12
+	ldrh	r2, [r3, r7]
+	bl	printk
+	mov	r2, r5
+	mov	r1, #0
+	ldr	r0, [r4, #-3608]
+	bl	FlashEraseBlocks
+	mov	r2, r5
+	mov	r1, #1
+	ldr	r0, [r4, #-3608]
+	bl	FlashEraseBlocks
+.L3686:
+	mvn	r2, #0
+	movw	r3, #1846
+	strh	r2, [r4, r3]	@ movhi
+.L3682:
+	add	sp, sp, #48
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L3691:
+	ldrh	r3, [r0, #2]!
+	add	r2, r2, #1
+	cmp	r3, r9
+	mlane	r1, r10, r5, r8
+	lslne	r3, r3, #10
 	addne	r5, r5, #1
 	uxthne	r5, r5
-	stmneib	r1, {r2, ip}
+	stmibne	r1, {r3, ip}
 	strne	ip, [r1, #12]
-	b	.L3767
-.L3776:
-	ldr	r3, [r4, #-3544]
-	mov	r1, r7
-	ldr	r0, .L3777+28
-	ldrh	r2, [r3, r6]
-	bl	printk
-	mov	r1, #0
-	mov	r2, r5
-	ldr	r0, [r4, #-3612]
-	bl	FlashEraseBlocks
-	ldr	r0, [r4, #-3612]
-	mov	r1, #1
-	mov	r2, r5
-	bl	FlashEraseBlocks
-.L3764:
-	movw	r3, #1848
-	mvn	r2, #0
-	strh	r2, [r8, r3]	@ movhi
-	add	sp, sp, #52
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L3778:
+	b	.L3689
+.L3698:
 	.align	2
-.L3777:
+.L3697:
 	.word	.LANCHOR0
-	.word	.LANCHOR4
 	.word	.LANCHOR2
 	.word	.LC164
-	.word	.LANCHOR2-3524
-	.word	.LANCHOR2-3476
-	.word	.LANCHOR0+2320
 	.word	.LC165
 	.fnend
 	.size	ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error
 	.align	2
 	.global	rk_ftl_garbage_collect
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_ftl_garbage_collect, %function
 rk_ftl_garbage_collect:
 	.fnstart
@@ -22468,907 +23004,910 @@
 	.size	rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
 	.align	2
 	.global	ftl_write
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_write, %function
 ftl_write:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 96
+	@ args = 0, pretend = 0, frame = 80
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	.pad #100
-	sub	sp, sp, #100
-	ldr	r10, .L3854
-	str	r3, [sp, #4]
-	ldr	r3, [r10, #-3616]
+	mov	fp, r3
+	ldr	r4, .L3768
+	.pad #84
+	sub	sp, sp, #84
+	ldr	r3, [r4, #-3612]
 	cmp	r3, #0
-	bne	.L3821
-	mov	r8, r2
-	ldr	r2, .L3854+4
-	ldr	r2, [r2, #504]
+	bne	.L3741
+	mov	r9, r2
+	ldr	r2, .L3768+4
+	ldr	r2, [r2, #500]
 	cmp	r2, #1
 	movne	r0, r3
-	bne	.L3781
+	bne	.L3700
 	cmp	r0, #16
 	mov	r7, r1
-	bne	.L3782
-	add	r0, r1, #256
-	ldr	r2, [sp, #4]
-	mov	r1, r8
+	bne	.L3702
+	mov	r2, fp
+	mov	r1, r9
+	add	r0, r7, #256
 	bl	FtlVendorPartWrite
-	b	.L3781
-.L3782:
-	ldr	fp, .L3854+8
-	ldr	r3, [fp, #2428]
-	cmp	r8, r3
+.L3700:
+	add	sp, sp, #84
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L3702:
+	ldr	r10, .L3768+8
+	ldr	r3, [r10, #2432]
+	cmp	r9, r3
 	cmpls	r1, r3
-	bcs	.L3824
-	add	r5, r1, r8
-	cmp	r5, r3
-	bhi	.L3824
-	ldr	r6, .L3854+12
+	bcs	.L3744
+	add	r6, r1, r9
+	cmp	r3, r6
+	bcc	.L3744
 	mov	r3, #2048
-	mov	r0, r1
-	str	r3, [r6, #2012]
-	movw	r3, #2394
-	ldrh	r4, [fp, r3]
-	mov	r1, r4
+	mov	r0, r7
+	str	r3, [r4, #2012]
+	movw	r3, #2396
+	ldrh	r5, [r10, r3]
+	mov	r1, r5
 	bl	__aeabi_uidiv
-	mov	r1, r4
-	str	r0, [sp, #8]
-	sub	r0, r5, #1
+	mov	r1, r5
+	str	r0, [sp, #4]
+	sub	r0, r6, #1
 	bl	__aeabi_uidiv
-	cmp	r8, r4, asl #1
-	ldr	r2, [sp, #8]
-	str	r0, [sp, #28]
-	rsb	r5, r2, r0
-	add	r3, r5, #1
-	str	r3, [sp]
-	ldr	r2, [sp]
-	ldr	r3, [r10, #-3356]
-	add	r3, r2, r3
-	ldr	r2, [fp, #2440]
-	str	r3, [r10, #-3356]
-	ldr	r3, [r10, #-3340]
-	add	r3, r8, r3
-	str	r3, [r10, #-3340]
+	ldr	r2, [sp, #4]
+	cmp	r9, r5, lsl #1
+	ldr	r3, [r4, #-3356]
+	ldr	r1, [r10, #2444]
+	sub	r6, r0, r2
+	str	r0, [sp, #24]
+	add	r8, r6, #1
+	add	r3, r3, r8
+	str	r3, [r4, #-3356]
+	ldr	r3, [r4, #-3340]
+	add	r3, r3, r9
+	str	r3, [r4, #-3340]
 	movcs	r3, #1
 	movcc	r3, #0
-	cmp	r2, #0
-	str	r3, [sp, #20]
-	beq	.L3784
+	cmp	r1, #0
+	str	r3, [sp, #16]
+	beq	.L3745
 	mov	r3, #36
-	ldr	r9, [fp, #2444]
-	mul	r3, r3, r2
-	ldr	r2, [sp, #8]
+	ldr	r2, [r10, #2448]
+	mul	r3, r3, r1
 	sub	r3, r3, #36
-	add	r9, r9, r3
-	ldr	r3, [r9, #16]
-	cmp	r2, r3
-	bne	.L3785
-	ldr	r3, [r10, #-3352]
-	mov	r1, r4
-	mov	r0, r7
-	add	r3, r3, #1
-	str	r3, [r10, #-3352]
-	ldr	r3, [r6, #2016]
-	add	r3, r3, #1
-	str	r3, [r6, #2016]
-	bl	__aeabi_uidivmod
-	ldr	r0, [r9, #8]
-	rsb	r4, r1, r4
-	add	r0, r0, r1, asl #9
-	cmp	r4, r8
-	ldr	r1, [sp, #4]
-	movcs	r4, r8
-	mov	r10, r4, asl #9
-	mov	r2, r10
-	bl	ftl_memcpy
-	cmp	r5, #0
-	bne	.L3786
-	ldr	r3, [r6, #2016]
-	cmp	r3, #2
-	ble	.L3821
-.L3786:
+	add	r10, r2, r3
 	ldr	r3, [sp, #4]
-	rsb	r8, r4, r8
-	add	r7, r7, r4
-	str	r5, [sp]
-	add	r3, r3, r10
-	str	r3, [sp, #4]
-	ldr	r3, [sp, #8]
+	ldr	r2, [r10, #16]
+	cmp	r3, r2
+	strne	fp, [sp, #12]
+	bne	.L3705
+	ldr	r2, [r4, #-3352]
+	mov	r1, r5
+	mov	r0, r7
+	add	r2, r2, #1
+	str	r2, [r4, #-3352]
+	ldr	r2, [r4, #2016]
+	add	r2, r2, #1
+	str	r2, [r4, #2016]
+	bl	__aeabi_uidivmod
+	sub	r5, r5, r1
+	ldr	r3, [r10, #8]
+	cmp	r9, r5
+	mov	r0, r1
+	movcc	r5, r9
+	mov	r1, fp
+	lsl	r8, r5, #9
+	add	r0, r3, r0, lsl #9
+	mov	r2, r8
+	bl	ftl_memcpy
+	cmp	r6, #0
+	bne	.L3706
+	ldr	r3, [r4, #2016]
+	cmp	r3, #2
+	bgt	.L3706
+.L3741:
+	mov	r0, #0
+	b	.L3700
+.L3706:
+	add	r3, fp, r8
+	sub	r9, r9, r5
+	str	r3, [sp, #12]
+	add	r7, r7, r5
+	ldr	r3, [sp, #4]
+	mov	r8, r6
 	add	r3, r3, #1
-	str	r3, [sp, #8]
-.L3785:
+	str	r3, [sp, #4]
+.L3705:
 	mov	r3, #0
-	str	r3, [r6, #2016]
-.L3784:
-	ldr	r0, [sp, #8]
-	ldr	r1, [sp, #28]
+	str	r3, [r4, #2016]
+.L3704:
+	ldr	r1, [sp, #24]
+	ldr	r0, [sp, #4]
 	bl	FtlCacheMetchLpa
 	cmp	r0, #0
-	beq	.L3787
+	beq	.L3707
 	bl	FtlCacheWriteBack
-.L3787:
-	ldr	r5, .L3854+16
-	mov	r3, #0
-	ldr	r4, .L3854+8
-	str	r3, [sp, #12]
-	str	r5, [r6, #1992]
-	ldr	r6, [sp, #8]
-	mov	r10, r4
-	str	r3, [sp, #32]
-.L3788:
-	ldr	r3, [sp]
-	cmp	r3, #0
-	beq	.L3853
-	ldrh	r2, [r5, #4]
-	cmp	r2, #0
-	bne	.L3789
-	ldr	r3, .L3854+16
-	ldr	r9, .L3854+4
-	cmp	r5, r3
-	bne	.L3790
-	add	r0, r3, #48
-	ldrh	r5, [r0, #4]
-	cmp	r5, #0
-	bne	.L3791
-	bl	allocate_new_data_superblock
-	str	r5, [r9, #3452]
-.L3791:
-	ldr	r0, .L3854+16
-	bl	allocate_new_data_superblock
-	ldr	r3, [r9, #3452]
-	cmp	r3, #0
-	ldrne	r5, .L3854+20
-	bne	.L3792
-.L3793:
-	ldr	r5, .L3854+16
-	b	.L3792
-.L3790:
-	ldrh	r3, [r3, #4]
-	str	r2, [r9, #3452]
-	cmp	r3, #0
-	bne	.L3793
-	mov	r0, r5
-	bl	allocate_new_data_superblock
-.L3792:
-	ldrh	r3, [r5, #4]
-	cmp	r3, #0
-	bne	.L3794
-	mov	r0, r5
-	bl	allocate_new_data_superblock
-.L3794:
-	ldr	r3, .L3854+12
-	str	r5, [r3, #1992]
-.L3789:
-	ldr	r2, .L3854
-	ldr	r1, [r4, #2440]
-	ldrh	r3, [r5, #4]
-	ldr	r2, [r2, #-540]
-	rsb	r2, r1, r2
-	cmp	r3, r2
-	movcs	r3, r2
-	ldr	r2, [sp]
-	cmp	r3, r2
-	movcs	r3, r2
-	str	r3, [sp, #44]
-	mov	r3, #0
-.L3851:
-	str	r3, [sp, #16]
-	ldr	r3, [sp, #16]
-	ldr	r2, [sp, #44]
-	cmp	r3, r2
-	beq	.L3796
-	ldrh	r3, [r5, #4]
-	cmp	r3, #0
-	beq	.L3796
-	ldr	r3, [sp, #28]
-	ldr	r2, [sp, #16]
-	rsb	ip, r3, r6
-	ldr	r3, [sp, #20]
-	clz	ip, ip
-	mov	ip, ip, lsr #5
-	and	r3, ip, r3
-	cmp	r2, #0
-	moveq	r3, #0
-	andne	r3, r3, #1
-	cmp	r3, #0
-	beq	.L3797
-	ldr	r3, .L3854+24
-	ldrh	r2, [r3]
-	add	r3, r8, r7
-	mls	r3, r2, r6, r3
-	cmp	r3, r2
-	bne	.L3796
-.L3797:
-	add	r1, sp, #56
-	mov	r2, #0
-	mov	r0, r6
-	str	ip, [sp, #52]
-	bl	log2phys
-	mov	r0, r5
-	bl	get_new_active_ppa
-	ldr	r2, [r4, #2440]
-	ldr	r1, [r4, #2444]
-	mov	r3, #36
-	ldr	fp, .L3854+28
-	mla	r1, r3, r2, r1
-	ldrh	r2, [fp]
-	str	r6, [r1, #16]
-	str	r3, [sp, #48]
-	ldr	r3, [r4, #2440]
-	str	r0, [r1, #4]
-	ldr	r0, .L3854
-	mul	lr, r3, r2
-	bic	r3, lr, #3
-	str	r3, [sp, #36]
-	ldr	r3, [r0, #-492]
-	ldr	ip, [sp, #36]
-	ldrh	lr, [fp, #-2]
-	add	r9, r3, ip
-	str	r3, [sp, #40]
-	ldr	r3, [r4, #2440]
-	ldr	r0, [r0, #-512]
-	str	r9, [r1, #12]
-	mul	lr, r3, lr
-	bic	lr, lr, #3
-	add	lr, r0, lr
-	mov	r0, r9
-	str	lr, [r1, #8]
-	mov	r1, #0
-	bl	ftl_memset
-	ldr	r3, [sp, #8]
-	ldr	ip, [sp, #52]
-	rsb	r3, r3, r6
-	clz	r3, r3
-	mov	r3, r3, lsr #5
-	str	r3, [sp, #24]
-	orrs	r3, r3, ip
-	ldr	r3, [sp, #48]
-	beq	.L3798
+.L3707:
+	ldr	r6, [sp, #4]
+	ldr	r10, .L3768+8
+	ldr	r5, .L3768+12
+	str	r5, [r4, #1992]
+.L3708:
+	cmp	r8, #0
+	bne	.L3736
 	ldr	r3, [sp, #24]
-	cmp	r3, #0
-	beq	.L3799
-	ldrh	fp, [fp, #-6]
-	mov	r0, r7
-	mov	r1, fp
-	bl	__aeabi_uidivmod
-	rsb	fp, r1, fp
-	mov	r3, r1
-	cmp	fp, r8
-	str	r1, [sp, #32]
-	movcc	r3, fp
-	movcs	r3, r8
-	str	r3, [sp, #12]
-	b	.L3800
-.L3799:
-	cmp	ip, #0
-	beq	.L3800
-	ldr	r2, .L3854+24
-	add	r3, r8, r7
-	ldrh	r2, [r2]
-	smulbb	r2, r2, r6
-	rsb	r3, r2, r3
-	uxth	r3, r3
-	str	r3, [sp, #12]
-	ldr	r3, [sp, #24]
-	str	r3, [sp, #32]
-.L3800:
-	ldr	r3, .L3854+24
-	ldr	r2, [sp, #12]
-	ldrh	r3, [r3]
-	cmp	r2, r3
-	bne	.L3801
-	ldr	r3, [sp, #24]
-	ldr	r0, [r10, #2444]
-	cmp	r3, #0
-	moveq	r3, r2
-	ldr	r2, [r10, #2440]
-	muleq	r1, r6, r3
-	ldreq	r3, [sp, #4]
-	ldrne	r1, [sp, #4]
-	rsbeq	r1, r7, r1
-	addeq	r1, r3, r1, asl #9
-	ldr	r3, [sp, #20]
-	cmp	r3, #0
-	mov	r3, #36
-	mla	r3, r3, r2, r0
-	strne	r1, [r3, #8]
-	bne	.L3804
-	ldr	r0, [r3, #8]
-	ldr	r3, .L3854+32
-	ldrh	r2, [r3]
-	b	.L3849
-.L3801:
-	ldr	r2, [sp, #56]
-	mov	r3, #36
-	cmn	r2, #1
-	beq	.L3805
-	ldr	r1, [r4, #2444]
-	add	r0, sp, #60
-	str	r2, [sp, #64]
-	ldr	r2, [r4, #2440]
-	str	r6, [sp, #76]
-	mla	r3, r3, r2, r1
-	mov	r1, #1
-	ldr	r2, [r3, #8]
-	ldr	r3, [r3, #12]
-	str	r2, [sp, #68]
-	mov	r2, #0
-	str	r3, [sp, #72]
-	bl	FlashReadPages
-	ldr	r3, [sp, #60]
-	cmn	r3, #1
-	ldr	r3, .L3854
-	ldreq	r2, [r3, #-3160]
-	addeq	r2, r2, #1
-	streq	r2, [r3, #-3160]
-	beq	.L3808
-	ldr	r2, [r9, #8]
-	cmp	r2, r6
-	beq	.L3808
-	ldr	r2, [r3, #-3160]
-	ldr	r0, .L3854+36
-	add	r2, r2, #1
-	str	r2, [r3, #-3160]
-	mov	r2, r6
-	ldr	r1, [r9, #8]
-	bl	printk
-	b	.L3808
-.L3805:
-	ldr	r2, [r4, #2440]
-	ldr	r1, [r4, #2444]
-	mla	r3, r3, r2, r1
-	mov	r1, #0
-	ldr	r0, [r3, #8]
-	ldr	r3, .L3854+32
-	ldrh	r2, [r3]
-	bl	ftl_memset
-.L3808:
-	ldr	r3, [sp, #24]
-	cmp	r3, #0
-	mov	r3, #36
-	beq	.L3809
-	ldr	r1, [r4, #2444]
-	ldr	r2, [r4, #2440]
-	mla	r3, r3, r2, r1
-	ldr	r1, [sp, #4]
-	ldr	r0, [r3, #8]
-	ldr	r3, [sp, #32]
-	add	r0, r0, r3, asl #9
-	b	.L3852
-.L3809:
-	ldr	r1, [r4, #2440]
-	ldr	r2, [r4, #2444]
-	mla	r3, r3, r1, r2
-	ldr	r2, .L3854+24
-	ldrh	r1, [r2]
-	ldr	r0, [r3, #8]
-	mul	r1, r1, r6
-	ldr	r3, [sp, #4]
-	rsb	r1, r7, r1
-	add	r1, r3, r1, asl #9
-.L3852:
-	ldr	r3, [sp, #12]
-	mov	r2, r3, asl #9
-	b	.L3849
-.L3798:
-	ldr	r2, [sp, #20]
-	cmp	r2, #0
-	ldr	r2, [r4, #2440]
-	beq	.L3810
-	ldr	r1, [r4, #2444]
-	mla	r3, r3, r2, r1
-	ldr	r2, .L3854+24
-	ldrh	fp, [r2]
+	mov	r0, r8
 	ldr	r2, [sp, #4]
-	mul	fp, fp, r6
-	rsb	fp, r7, fp
-	add	fp, r2, fp, asl #9
-	str	fp, [r3, #8]
-	b	.L3804
-.L3810:
-	ldr	r0, [r4, #2444]
-	mla	r3, r3, r2, r0
-	ldr	r2, .L3854+24
-	ldrh	r1, [r2]
-	ldrh	r2, [fp, #-2]
-	ldr	r0, [r3, #8]
-	mul	r1, r1, r6
-	ldr	r3, [sp, #4]
-	rsb	r1, r7, r1
-	add	r1, r3, r1, asl #9
-.L3849:
-	bl	ftl_memcpy
-.L3804:
-	ldr	r3, .L3854+40
-	ldr	r2, [sp, #40]
-	ldr	r1, [sp, #36]
-	strh	r3, [r2, r1]	@ movhi
-	ldr	r2, .L3854
-	str	r6, [r9, #8]
-	add	r6, r6, #1
-	ldr	r3, [r2, #-3328]
-	str	r3, [r9, #4]
-	add	r3, r3, #1
-	cmn	r3, #1
-	moveq	r3, #0
-	str	r3, [r2, #-3328]
-	ldr	r3, [sp, #56]
-	str	r3, [r9, #12]
-	ldrh	r3, [r5]
-	strh	r3, [r9, #2]	@ movhi
-	ldr	r3, [r4, #2440]
-	add	r3, r3, #1
-	str	r3, [r4, #2440]
-	ldr	r3, [sp, #16]
-	add	r3, r3, #1
-	b	.L3851
-.L3796:
-	ldr	r3, [sp]
-	ldr	r2, [sp, #16]
-	ldr	r1, [sp, #20]
-	rsb	r3, r2, r3
-	ldr	r2, .L3854
-	str	r3, [sp]
-	ldr	r3, [r4, #2440]
-	ldr	r2, [r2, #-540]
-	cmp	r3, r2
-	orrcs	r1, r1, #1
-	cmp	r1, #0
-	bne	.L3814
-	ldrh	r3, [r5, #4]
-	cmp	r3, #0
-	beq	.L3814
-.L3816:
-	mov	r3, #0
-	str	r3, [sp, #20]
-	b	.L3788
-.L3814:
-	bl	FtlCacheWriteBack
-	mov	r3, #0
-	str	r3, [r10, #2440]
-	ldr	r3, [sp]
-	cmp	r3, #1
-	bhi	.L3788
-	b	.L3816
-.L3853:
-	mov	r0, r3
-	ldr	r2, [sp, #8]
-	ldr	r3, [sp, #28]
-	rsb	r1, r2, r3
+	sub	r1, r3, r2
 	bl	ftl_do_gc
-	ldr	r3, .L3854+44
-	ldrh	r3, [r3, #-8]
+	ldr	r2, .L3768+12
+	ldrh	r3, [r2, #-4]
+	mov	r4, r2
 	cmp	r3, #5
-	bls	.L3827
+	bls	.L3737
 	cmp	r3, #31
-	bhi	.L3821
-	ldr	r3, .L3854+8
-	ldrb	r3, [r3]	@ zero_extendqisi2
+	bhi	.L3741
+	ldr	r3, .L3768+8
+	ldrb	r3, [r3, #36]	@ zero_extendqisi2
 	cmp	r3, #0
-	bne	.L3821
-.L3827:
-	ldr	r4, [sp]
-	ldr	r5, .L3854+48
-	ldr	r6, .L3854
-	ldr	r7, .L3854+52
-.L3840:
-	ldrh	r2, [r5]
+	bne	.L3741
+.L3737:
+	ldr	r5, .L3768+16
+.L3740:
+	ldr	r3, .L3768+20
+	ldrh	r2, [r3]
 	movw	r3, #65535
 	cmp	r2, r3
-	bne	.L3820
-	ldrh	r3, [r7]
+	bne	.L3739
+	ldr	r3, .L3768+24
+	ldrh	r3, [r3]
 	cmp	r3, r2
-	bne	.L3820
-	ldr	r2, .L3854+56
-	ldrh	r2, [r2]
+	bne	.L3739
+	ldrh	r2, [r5, #-8]
 	cmp	r2, r3
-	bne	.L3820
-	and	r0, r4, #7
+	bne	.L3739
+	and	r0, r8, #7
 	bl	List_get_gc_head_node
 	uxth	r0, r0
 	bl	FtlGcRefreshBlock
-.L3820:
-	ldr	r3, .L3854+60
-	mov	r0, #1
-	mov	r1, r0
+.L3739:
+	ldr	r3, .L3768+28
+	mov	r1, #1
 	mov	r2, #128
+	mov	r0, r1
 	strh	r2, [r3]	@ movhi
 	strh	r2, [r3, #-2]	@ movhi
 	bl	ftl_do_gc
-	mov	r0, #0
 	mov	r1, #1
-	bl	ftl_do_gc
-	ldr	r3, [r6, #-3616]
-	cmp	r3, #0
-	bne	.L3821
-	ldr	r3, .L3854+64
-	ldrh	r3, [r3]
-	cmp	r3, #2
-	bhi	.L3821
-	add	r4, r4, #1
-	cmp	r4, #256
-	bne	.L3840
-	b	.L3821
-.L3824:
-	mvn	r0, #0
-	b	.L3781
-.L3821:
 	mov	r0, #0
-.L3781:
-	add	sp, sp, #100
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L3855:
+	bl	ftl_do_gc
+	ldr	r3, .L3768
+	ldr	r3, [r3, #-3612]
+	cmp	r3, #0
+	bne	.L3741
+	ldrh	r3, [r4, #-4]
+	cmp	r3, #2
+	bhi	.L3741
+	add	r8, r8, #1
+	cmp	r8, #256
+	bne	.L3740
+	b	.L3741
+.L3745:
+	str	fp, [sp, #12]
+	b	.L3704
+.L3736:
+	ldrh	r1, [r5, #4]
+	ldr	r4, .L3768
+	cmp	r1, #0
+	bne	.L3709
+	sub	r2, r4, #3520
+	ldr	fp, .L3768+4
+	cmp	r5, r2
+	bne	.L3710
+	sub	r0, r4, #3472
+	ldrh	r5, [r0, #4]
+	cmp	r5, #0
+	bne	.L3711
+	bl	allocate_new_data_superblock
+	str	r5, [fp, #3448]
+.L3711:
+	ldr	r0, .L3768+12
+	bl	allocate_new_data_superblock
+	ldr	r5, .L3768+12
+	ldr	r1, [fp, #3448]
+	add	r2, r5, #48
+	cmp	r1, #0
+	movne	r5, r2
+.L3712:
+	ldrh	r2, [r5, #4]
+	cmp	r2, #0
+	bne	.L3713
+	mov	r0, r5
+	bl	allocate_new_data_superblock
+.L3713:
+	str	r5, [r4, #1992]
+.L3709:
+	ldr	r1, [r10, #2444]
+	ldr	r2, [r4, #-540]
+	sub	r2, r2, r1
+	ldrh	r1, [r5, #4]
+	cmp	r2, r8
+	movcs	r2, r8
+	cmp	r1, r2
+	movcc	r3, r1
+	movcs	r3, r2
+	str	r3, [sp, #36]
+	mov	r3, #0
+.L3766:
+	str	r3, [sp, #20]
+	ldr	r3, [sp, #20]
+	ldr	r2, [sp, #36]
+	cmp	r3, r2
+	bne	.L3732
+.L3715:
+	ldr	r3, [sp, #20]
+	ldr	r1, .L3768
+	ldr	r2, [r10, #2444]
+	sub	r8, r8, r3
+	ldr	r3, [sp, #16]
+	ldr	r1, [r1, #-540]
+	cmp	r2, r1
+	orrcs	r3, r3, #1
+	cmp	r3, #0
+	bne	.L3733
+	ldrh	r2, [r5, #4]
+	cmp	r2, #0
+	beq	.L3733
+.L3735:
+	mov	r3, #0
+	str	r3, [sp, #16]
+	b	.L3708
+.L3710:
+	str	r1, [fp, #3448]
+	ldrh	r1, [r2, #4]
+	cmp	r1, #0
+	movne	r5, r2
+	bne	.L3713
+	mov	r0, r5
+	bl	allocate_new_data_superblock
+	b	.L3712
+.L3732:
+	ldrh	r2, [r5, #4]
+	cmp	r2, #0
+	beq	.L3715
+	ldr	r3, [sp, #24]
+	sub	r4, r3, r6
+	ldr	r3, [sp, #16]
+	clz	r4, r4
+	lsr	r4, r4, #5
+	and	r2, r4, r3
+	ldr	r3, [sp, #20]
+	cmp	r3, #0
+	moveq	r2, #0
+	andne	r2, r2, #1
+	cmp	r2, #0
+	beq	.L3716
+	ldr	r3, .L3768+32
+	add	r2, r7, r9
+	ldrh	r1, [r3]
+	mls	r2, r1, r6, r2
+	cmp	r1, r2
+	bne	.L3715
+.L3716:
+	mov	r2, #0
+	add	r1, sp, #40
+	mov	r0, r6
+	mov	fp, #36
+	bl	log2phys
+	mov	r0, r5
+	bl	get_new_active_ppa
+	ldr	r2, .L3768+36
+	ldr	r1, [r10, #2444]
+	ldr	ip, [r10, #2448]
+	ldrh	r2, [r2]
+	mla	ip, fp, r1, ip
+	mul	lr, r2, r1
+	str	r0, [ip, #4]
+	ldr	r0, .L3768
+	bic	r3, lr, #3
+	str	r6, [ip, #16]
+	str	r3, [sp, #28]
+	ldr	lr, [sp, #28]
+	ldr	r3, [r0, #-492]
+	ldr	r0, [r0, #-512]
+	str	r3, [sp, #32]
+	add	r3, r3, lr
+	str	r3, [sp, #8]
+	str	r3, [ip, #12]
+	ldr	r3, .L3768+40
+	ldrh	lr, [r3]
+	mul	r1, r1, lr
+	bic	r1, r1, #3
+	add	r1, r0, r1
+	ldr	r0, [sp, #8]
+	str	r1, [ip, #8]
+	mov	r1, #0
+	bl	ftl_memset
+	ldr	r3, [sp, #4]
+	cmp	r3, r6
+	orreq	r4, r4, #1
+	cmp	r4, #0
+	beq	.L3717
+	cmp	r3, r6
+	bne	.L3718
+	ldr	r3, .L3768+32
+	mov	r0, r7
+	ldrh	r4, [r3]
+	mov	r1, r4
+	bl	__aeabi_uidivmod
+	sub	r4, r4, r1
+	mov	fp, r1
+	cmp	r4, r9
+	movcs	r4, r9
+.L3719:
+	ldr	r3, .L3768+32
+	ldrh	r2, [r3]
+	cmp	r2, r4
+	bne	.L3720
+	ldr	r3, [sp, #4]
+	cmp	r3, r6
+	mulne	r1, r4, r6
+	ldrne	r3, [sp, #12]
+	ldreq	r1, [sp, #12]
+	subne	r1, r1, r7
+	addne	r1, r3, r1, lsl #9
+	ldr	r3, [sp, #16]
+	cmp	r3, #0
+	beq	.L3722
+	ldr	r2, [r10, #2444]
+	mov	ip, #36
+	ldr	r0, [r10, #2448]
+	mla	r2, ip, r2, r0
+	str	r1, [r2, #8]
+.L3723:
+	ldr	r2, .L3768+44
+	ldr	r3, [sp, #32]
+	ldr	r1, [sp, #28]
+	strh	r2, [r3, r1]	@ movhi
+	ldr	r1, .L3768
+	ldr	r3, [sp, #8]
+	ldr	r2, [r1, #-3328]
+	str	r2, [r3, #4]
+	add	r2, r2, #1
+	cmn	r2, #1
+	ldr	r3, [sp, #8]
+	moveq	r2, #0
+	str	r2, [r1, #-3328]
+	ldr	r2, [sp, #40]
+	str	r6, [r3, #8]
+	add	r6, r6, #1
+	str	r2, [r3, #12]
+	ldrh	r2, [r5]
+	strh	r2, [r3, #2]	@ movhi
+	ldr	r2, [r10, #2444]
+	ldr	r3, [sp, #20]
+	add	r2, r2, #1
+	str	r2, [r10, #2444]
+	add	r3, r3, #1
+	b	.L3766
+.L3718:
+	ldr	r3, .L3768+32
+	add	r4, r7, r9
+	mov	fp, #0
+	ldrh	r2, [r3]
+	smulbb	r2, r2, r6
+	sub	r4, r4, r2
+	uxth	r4, r4
+	b	.L3719
+.L3722:
+	ldr	r2, [r10, #2448]
+	mov	ip, #36
+	ldr	r0, [r10, #2444]
+	mla	r0, ip, r0, r2
+	ldr	r2, .L3768+40
+	ldrh	r2, [r2]
+.L3767:
+	ldr	r0, [r0, #8]
+	b	.L3764
+.L3720:
+	ldr	r2, [sp, #40]
+	cmn	r2, #1
+	beq	.L3724
+	ldr	r1, [r10, #2448]
+	mov	r0, #36
+	str	r2, [sp, #48]
+	ldr	r2, [r10, #2444]
+	str	r6, [sp, #60]
+	mla	r2, r0, r2, r1
+	add	r0, sp, #44
+	ldr	r1, [r2, #8]
+	ldr	r2, [r2, #12]
+	str	r1, [sp, #52]
+	mov	r1, #1
+	str	r2, [sp, #56]
+	mov	r2, #0
+	bl	FlashReadPages
+	ldr	r2, [sp, #44]
+	cmn	r2, #1
+	ldr	r2, .L3768
+	ldreq	r1, [r2, #-3164]
+	addeq	r1, r1, #1
+	streq	r1, [r2, #-3164]
+	beq	.L3727
+	ldr	r3, [sp, #8]
+	ldr	r1, [r3, #8]
+	cmp	r6, r1
+	beq	.L3727
+	ldr	r1, [r2, #-3164]
+	ldr	r0, .L3768+48
+	add	r1, r1, #1
+	str	r1, [r2, #-3164]
+	mov	r2, r6
+	ldr	r1, [r3, #8]
+	bl	printk
+.L3727:
+	ldr	r3, [sp, #4]
+	lsl	r2, r4, #9
+	cmp	r3, r6
+	bne	.L3728
+	ldr	r0, [r10, #2448]
+	mov	ip, #36
+	ldr	r1, [r10, #2444]
+	mla	r1, ip, r1, r0
+	ldr	r0, [r1, #8]
+	ldr	r1, [sp, #12]
+	add	r0, r0, fp, lsl #9
+.L3764:
+	bl	ftl_memcpy
+	b	.L3723
+.L3724:
+	ldr	r2, [r10, #2448]
+	mov	r1, #36
+	ldr	r0, [r10, #2444]
+	mla	r0, r1, r0, r2
+	ldr	r2, .L3768+40
+	mov	r1, #0
+	ldrh	r2, [r2]
+	ldr	r0, [r0, #8]
+	bl	ftl_memset
+	b	.L3727
+.L3728:
+	ldr	r3, .L3768+32
+	mov	lr, #36
+	ldr	r0, [r10, #2444]
+	ldr	ip, [r10, #2448]
+	ldrh	r1, [r3]
+	ldr	r3, [sp, #12]
+	mla	r0, lr, r0, ip
+	mul	r1, r6, r1
+	sub	r1, r1, r7
+	add	r1, r3, r1, lsl #9
+	b	.L3767
+.L3717:
+	ldr	r3, [sp, #16]
+	cmp	r3, #0
+	beq	.L3729
+	ldr	r2, [r10, #2444]
+	ldr	r1, [r10, #2448]
+	ldr	r3, .L3768+32
+	mla	fp, fp, r2, r1
+	ldrh	r2, [r3]
+	ldr	r3, [sp, #12]
+	mul	r2, r6, r2
+	sub	r2, r2, r7
+	add	r2, r3, r2, lsl #9
+	str	r2, [fp, #8]
+	b	.L3723
+.L3729:
+	ldr	r3, .L3768+32
+	ldr	r2, [r10, #2444]
+	ldr	r0, [r10, #2448]
+	ldrh	r1, [r3]
+	mla	fp, fp, r2, r0
+	ldrh	r2, [r3, #4]
+	ldr	r3, [sp, #12]
+	mul	r1, r6, r1
+	ldr	r0, [fp, #8]
+	sub	r1, r1, r7
+	add	r1, r3, r1, lsl #9
+	b	.L3764
+.L3733:
+	bl	FtlCacheWriteBack
+	cmp	r8, #1
+	mov	r2, #0
+	str	r2, [r10, #2444]
+	bhi	.L3708
+	b	.L3735
+.L3744:
+	mvn	r0, #0
+	b	.L3700
+.L3769:
 	.align	2
-.L3854:
+.L3768:
 	.word	.LANCHOR2
 	.word	.LANCHOR1
 	.word	.LANCHOR0
-	.word	.LANCHOR4
-	.word	.LANCHOR2-3524
-	.word	.LANCHOR2-3476
-	.word	.LANCHOR0+2394
-	.word	.LANCHOR0+2400
-	.word	.LANCHOR0+2398
-	.word	.LC166
-	.word	-3947
 	.word	.LANCHOR2-3520
+	.word	.LANCHOR2-2656
 	.word	.LANCHOR2-3284
 	.word	.LANCHOR2-2666
-	.word	.LANCHOR2-2664
 	.word	.LANCHOR2-2718
-	.word	.LANCHOR2-3528
+	.word	.LANCHOR0+2396
+	.word	.LANCHOR0+2402
+	.word	.LANCHOR0+2400
+	.word	-3947
+	.word	.LC166
 	.fnend
 	.size	ftl_write, .-ftl_write
 	.align	2
 	.global	ftl_vendor_write
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_vendor_write, %function
 ftl_vendor_write:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	str	lr, [sp, #-4]!
-	.save {lr}
-	mov	ip, r1
-	mov	lr, r0
+	@ link register save eliminated.
 	mov	r3, r2
-	mov	r1, lr
+	mov	r2, r1
+	mov	r1, r0
 	mov	r0, #16
-	mov	r2, ip
-	ldr	lr, [sp], #4
 	b	ftl_write
 	.fnend
 	.size	ftl_vendor_write, .-ftl_vendor_write
 	.align	2
 	.global	FlashBootVendorWrite
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FlashBootVendorWrite, %function
 FlashBootVendorWrite:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, lr}
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
-	mov	r4, r2
-	mov	r6, r0
+	mov	r4, r0
 	mov	r5, r1
+	mov	r6, r2
 	bl	rknand_device_lock
-	ldr	r3, .L3862
-	ldr	r3, [r3, #504]
+	ldr	r3, .L3775
+	ldr	r3, [r3, #500]
 	cmp	r3, #1
 	mvnne	r4, #0
-	bne	.L3859
-	mov	r2, r4
-	mov	r0, r6
+	bne	.L3772
+	mov	r0, r4
+	mov	r2, r6
 	mov	r1, r5
 	bl	ftl_vendor_write
 	mov	r4, r0
-.L3859:
+.L3772:
 	bl	rknand_device_unlock
 	mov	r0, r4
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L3863:
+	pop	{r4, r5, r6, pc}
+.L3776:
 	.align	2
-.L3862:
+.L3775:
 	.word	.LANCHOR1
 	.fnend
 	.size	FlashBootVendorWrite, .-FlashBootVendorWrite
 	.align	2
 	.global	ftl_sys_write
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	ftl_sys_write, %function
 ftl_sys_write:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	mov	ip, r1
 	mov	r3, r2
+	mov	r2, r1
 	add	r1, r0, #256
-	mov	r2, ip
 	mov	r0, #16
 	b	ftl_write
 	.fnend
 	.size	ftl_sys_write, .-ftl_sys_write
 	.align	2
 	.global	StorageSysDataStore
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	StorageSysDataStore, %function
 StorageSysDataStore:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	mov	r4, r1
-	mov	r5, r0
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	mov	r5, r1
+	mov	r4, r0
 	bl	rknand_device_lock
-	mov	r2, r4
+	mov	r2, r5
 	mov	r1, #1
-	mov	r0, r5
+	mov	r0, r4
 	bl	ftl_sys_write
 	mov	r4, r0
 	bl	rknand_device_unlock
 	mov	r0, r4
-	ldmfd	sp!, {r3, r4, r5, pc}
+	pop	{r4, r5, r6, pc}
 	.fnend
 	.size	StorageSysDataStore, .-StorageSysDataStore
 	.align	2
 	.global	FtlDumpSysBlock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlDumpSysBlock, %function
 FtlDumpSysBlock:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, lr}
-	.save {r4, r5, r6, r7, r8, r9, lr}
-	mov	r8, r0, asl #10
-	ldr	r4, .L3876
-	.pad #28
-	sub	sp, sp, #28
-	ldr	r7, .L3876+4
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
+	.save {r4, r5, r6, r7, r8, r9, r10, lr}
+	lsl	r8, r0, #10
+	ldr	r4, .L3788
+	.pad #24
+	sub	sp, sp, #24
 	mov	r6, r0
 	mov	r5, #0
+	ldr	r7, .L3788+4
 	ldr	r3, [r4, #-524]
-	mov	r9, r4
-	str	r3, [r4, #1760]
+	add	r9, r4, #1760
+	ldr	r10, .L3788+8
+	str	r3, [r4, #1768]
 	ldr	r3, [r4, #-500]
-	str	r3, [r4, #1764]
-.L3868:
+	str	r3, [r4, #1772]
+.L3781:
 	ldrh	r2, [r7]
 	sxth	r3, r5
 	cmp	r3, r2
-	bge	.L3875
-	mov	r1, #1
-	ldr	r0, .L3876+8
-	mov	r2, r1
+	blt	.L3783
+	add	sp, sp, #24
+	@ sp needed
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L3783:
+	mov	r2, #1
 	orr	r3, r3, r8
-	str	r3, [r4, #1756]
+	mov	r1, r2
+	mov	r0, r9
+	str	r3, [r4, #1764]
 	bl	FlashReadPages
-	ldr	r3, [r4, #1764]
+	ldr	r2, [r4, #1768]
 	mov	r1, r6
-	ldr	r0, .L3876+12
-	ldr	r2, [r3]
-	str	r2, [sp]
-	ldr	r2, [r3, #4]
-	str	r2, [sp, #4]
+	ldr	r3, [r4, #1772]
+	mov	r0, r10
+	ldr	r2, [r2]
+	str	r2, [sp, #16]
+	ldr	r2, [r3, #12]
+	str	r2, [sp, #12]
 	ldr	r2, [r3, #8]
 	str	r2, [sp, #8]
-	ldr	r3, [r3, #12]
-	ldr	r2, [r4, #1752]
-	str	r3, [sp, #12]
-	ldr	r3, [r4, #1760]
+	ldr	r2, [r3, #4]
+	str	r2, [sp, #4]
 	ldr	r3, [r3]
-	str	r3, [sp, #16]
-	ldr	r3, [r4, #1756]
-	bl	printk
+	ldr	r2, [r4, #1760]
+	str	r3, [sp]
 	ldr	r3, [r4, #1764]
+	bl	printk
+	ldr	r3, [r4, #1772]
 	ldr	r3, [r3]
 	cmn	r3, #1
-	beq	.L3869
-	ldr	r0, .L3876+16
-	mov	r2, #4
-	ldr	r1, [r9, #-524]
+	beq	.L3782
 	mov	r3, #768
+	mov	r2, #4
+	ldr	r1, [r4, #-524]
+	ldr	r0, .L3788+12
 	bl	rknand_print_hex
-.L3869:
+.L3782:
 	add	r5, r5, #1
-	b	.L3868
-.L3875:
-	add	sp, sp, #28
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, pc}
-.L3877:
+	b	.L3781
+.L3789:
 	.align	2
-.L3876:
+.L3788:
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2390
-	.word	.LANCHOR2+1752
+	.word	.LANCHOR0+2392
 	.word	.LC167
 	.word	.LC168
 	.fnend
 	.size	FtlDumpSysBlock, .-FtlDumpSysBlock
 	.align	2
 	.global	dump_map_info
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	dump_map_info, %function
 dump_map_info:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 24
+	@ args = 0, pretend = 0, frame = 16
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	r3, .L3805
+	movw	r2, #2332
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	movw	r3, #2328
-	ldr	r6, .L3896
-	.pad #52
-	sub	sp, sp, #52
-	ldr	r10, .L3896+4
-	ldrh	r7, [r6, r3]
-	add	fp, r10, #18
-.L3879:
-	ldrh	r3, [r10]
-	ldr	r4, .L3896+8
-	cmp	r3, r7
-	bls	.L3892
-	ldr	r1, .L3896+12
-	mov	r8, #0
-	ldr	r2, [r4, #-536]
-	mov	r5, r8
-	ldr	r3, [r4, #-2696]
-	ldrh	ip, [r1]
-	ldr	r9, [r4, #-2692]
-	ldrh	r1, [r1, #80]
-	str	r1, [sp, #28]
-.L3888:
-	uxth	r1, r8
-	cmp	r1, ip
-	bcs	.L3894
-	mov	r1, r7
-	ldrb	r0, [fp, r8]	@ zero_extendqisi2
-	str	r3, [sp, #44]
-	str	r2, [sp, #40]
-	str	ip, [sp, #36]
+	.pad #44
+	sub	sp, sp, #44
+	ldrh	r6, [r3, r2]
+	str	r3, [sp, #24]
+.L3791:
+	ldr	r3, .L3805+4
+	ldr	r4, .L3805+8
+	ldrh	r3, [r3]
+	cmp	r3, r6
+	bhi	.L3798
+	ldr	r10, .L3805+12
+	mov	r7, #0
+	sub	r9, r4, #388
+	add	fp, r4, #1760
+.L3799:
+	ldrh	r3, [r9]
+	sxth	r5, r7
+	cmp	r5, r3
+	bge	.L3802
+	lsl	r5, r5, #1
+	mov	r6, #0
+	ldr	r8, .L3805+16
+	b	.L3803
+.L3793:
+	str	r3, [sp, #32]
+	mov	r1, r6
+	ldr	r3, .L3805+20
+	str	r2, [sp, #36]
+	ldrb	r0, [r3, r7]	@ zero_extendqisi2
 	bl	V2P_block
-	str	r0, [sp, #32]
+	str	r0, [sp, #28]
 	bl	FtlBbmIsBadBlock
 	cmp	r0, #0
-	ldr	r1, [sp, #32]
-	ldr	ip, [sp, #36]
-	ldr	r2, [sp, #40]
-	ldr	r3, [sp, #44]
-	bne	.L3880
-	mov	r0, #36
-	mov	r1, r1, asl #10
-	mla	r0, r0, r5, r2
-	stmib	r0, {r1, r3}
+	ldr	r3, [sp, #32]
+	ldr	r2, [sp, #36]
+	bne	.L3792
 	ldr	r1, [sp, #28]
-	mul	r1, r1, r5
+	mla	r0, r2, r5, r8
+	lsl	r1, r1, #10
+	stmib	r0, {r1, fp}
+	mul	r1, r9, r5
 	add	r5, r5, #1
 	uxth	r5, r5
-	add	lr, r1, #3
+	add	ip, r1, #3
 	cmp	r1, #0
-	movlt	r1, lr
+	movlt	r1, ip
 	bic	r1, r1, #3
-	add	r1, r9, r1
+	add	r1, r10, r1
 	str	r1, [r0, #12]
-.L3880:
-	add	r8, r8, #1
-	b	.L3888
-.L3894:
+.L3792:
+	add	r7, r7, #1
+.L3800:
+	uxth	r1, r7
+	cmp	r3, r1
+	bhi	.L3793
 	cmp	r5, #0
-	beq	.L3883
-	ldr	r0, [r4, #-536]
-	mov	r1, r5
-	mov	r2, #1
-	mov	r8, #0
-	bl	FlashReadPages
-	mov	r9, #36
-.L3884:
-	uxth	r3, r8
-	cmp	r3, r5
-	bcs	.L3883
-	ldr	r3, [r4, #-536]
-	ldr	r0, .L3896+16
-	mla	r3, r9, r8, r3
-	add	r8, r8, #1
-	ldmib	r3, {r2, r3, ip}
-	ldr	r1, [ip, #4]
-	str	r1, [sp]
-	ldr	r1, [ip, #8]
-	str	r1, [sp, #4]
-	ldr	r1, [ip, #12]
-	str	r1, [sp, #8]
-	ldr	r1, [r3]
-	str	r1, [sp, #12]
-	ubfx	r1, r2, #10, #16
-	ldr	r3, [r3, #4]
-	str	r3, [sp, #16]
-	ldr	r3, [ip]
-	bl	printk
-	b	.L3884
-.L3883:
-	add	r7, r7, #1
-	uxth	r7, r7
-	b	.L3879
-.L3892:
-	ldr	r9, .L3896+20
-	mov	r8, #0
-.L3887:
-	ldr	r7, .L3896+8
-	sxth	r5, r8
-	sub	r3, r7, #388
-	ldrh	r3, [r3]
-	cmp	r5, r3
-	bge	.L3890
-	mov	r5, r5, asl #1
+	bne	.L3794
+.L3797:
+	add	r6, r6, #1
+	uxth	r6, r6
+	b	.L3791
+.L3794:
+	ldr	r9, .L3805+24
+	mov	r0, r8
 	mov	r7, #0
-.L3891:
-	ldrh	r2, [r9]
-	sxth	r3, r7
-	add	r7, r7, #1
-	cmp	r3, r2
-	bge	.L3895
-	ldr	r2, [r4, #-472]
-	mov	r1, #1
-	ldr	r0, .L3896+24
-	ldrh	r2, [r2, r5]
-	orr	r3, r3, r2, asl #10
-	mov	r2, r1
-	str	r3, [r4, #1756]
+	mov	r8, #36
+	mov	r2, #1
+	mov	r1, r5
 	bl	FlashReadPages
-	ldr	r3, [r4, #1764]
-	ldr	r1, [r4, #-472]
-	ldr	r2, [r4, #1760]
-	ldr	r0, [r3]
-	ldrh	r1, [r1, r5]
-	str	r0, [sp]
+.L3795:
+	uxth	r3, r7
+	cmp	r5, r3
+	bls	.L3797
+	ldr	r3, [r4, #-536]
+	mla	r3, r8, r7, r3
+	add	r7, r7, #1
+	ldr	r1, [r3, #12]
+	ldr	r2, [r3, #4]
+	ldr	r3, [r3, #8]
 	ldr	r0, [r3, #4]
-	str	r0, [sp, #4]
-	ldr	r0, [r3, #8]
-	str	r0, [sp, #8]
-	ldr	r3, [r3, #12]
-	ldr	r0, .L3896+28
+	str	r0, [sp, #16]
+	mov	r0, r9
+	ldr	r3, [r3]
 	str	r3, [sp, #12]
-	ldr	r3, [r2]
-	str	r3, [sp, #16]
-	ldr	r3, [r2, #4]
-	str	r3, [sp, #20]
-	ldr	r2, [r4, #1752]
-	ldr	r3, [r4, #1756]
+	ldr	r3, [r1, #12]
+	str	r3, [sp, #8]
+	ldr	r3, [r1, #8]
+	str	r3, [sp, #4]
+	ldr	r3, [r1, #4]
+	str	r3, [sp]
+	ldr	r3, [r1]
+	ubfx	r1, r2, #10, #16
 	bl	printk
-	b	.L3891
-.L3895:
-	add	r8, r8, #1
-	b	.L3887
-.L3890:
-	ldr	r1, [r7, #-472]
-	movw	r4, #2424
-	ldr	r3, [r6, #2416]
+	b	.L3795
+.L3798:
+	ldr	r2, .L3805+28
+	mov	r7, #0
+	ldr	r8, [r4, #-536]
+	mov	r5, r7
+	ldr	fp, [r4, #-2696]
+	ldrh	r3, [r2]
+	ldrh	r9, [r2, #78]
+	mov	r2, #36
+	ldr	r10, [r4, #-2692]
+	b	.L3800
+.L3801:
+	ldr	r2, [r4, #-472]
+	mov	r0, fp
+	ldrh	r2, [r2, r5]
+	orr	r3, r3, r2, lsl #10
+	mov	r2, #1
+	mov	r1, r2
+	str	r3, [r4, #1764]
+	bl	FlashReadPages
+	ldr	r2, [r4, #1768]
+	ldr	r1, [r4, #-472]
+	ldr	r3, [r4, #1772]
+	ldr	r0, [r2, #4]
+	ldrh	r1, [r1, r5]
+	str	r0, [sp, #20]
+	mov	r0, r8
+	ldr	r2, [r2]
+	str	r2, [sp, #16]
+	ldr	r2, [r3, #12]
+	str	r2, [sp, #12]
+	ldr	r2, [r3, #8]
+	str	r2, [sp, #8]
+	ldr	r2, [r3, #4]
+	str	r2, [sp, #4]
+	ldr	r3, [r3]
+	ldr	r2, [r4, #1760]
+	str	r3, [sp]
+	ldr	r3, [r4, #1764]
+	bl	printk
+.L3803:
+	ldrh	r2, [r10]
+	sxth	r3, r6
+	add	r6, r6, #1
+	cmp	r3, r2
+	blt	.L3801
+	add	r7, r7, #1
+	b	.L3799
+.L3802:
+	ldr	r3, [sp, #24]
 	mov	r2, #2
-	ldr	r0, .L3896+32
+	ldr	r1, [r4, #-472]
+	movw	r5, #2428
+	ldr	r0, .L3805+32
+	ldr	r3, [r3, #2420]
 	bl	rknand_print_hex
-	ldr	r1, [r7, #-452]
-	ldrh	r3, [r6, r4]
+	ldr	r3, [sp, #24]
 	mov	r2, #4
-	ldr	r0, .L3896+36
+	ldr	r1, [r4, #-452]
+	ldr	r0, .L3805+36
+	ldrh	r3, [r3, r5]
 	bl	rknand_print_hex
-	ldr	r0, .L3896+40
-	ldr	r1, [r7, #-448]
+	ldr	r3, [sp, #24]
 	mov	r2, #4
-	ldrh	r3, [r6, r4]
-	add	sp, sp, #52
+	ldr	r1, [r4, #-448]
+	ldr	r0, .L3805+40
+	ldrh	r3, [r3, r5]
+	add	sp, sp, #44
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	b	rknand_print_hex
-.L3897:
+.L3806:
 	.align	2
-.L3896:
+.L3805:
 	.word	.LANCHOR0
-	.word	.LANCHOR0+2330
+	.word	.LANCHOR0+2334
 	.word	.LANCHOR2
-	.word	.LANCHOR0+2320
-	.word	.LC169
-	.word	.LANCHOR0+2390
-	.word	.LANCHOR2+1752
+	.word	.LANCHOR0+2392
 	.word	.LC113
+	.word	.LANCHOR0+2350
+	.word	.LC169
+	.word	.LANCHOR0+2324
 	.word	.LC170
 	.word	.LC171
 	.word	.LC172
@@ -23376,493 +23915,483 @@
 	.size	dump_map_info, .-dump_map_info
 	.align	2
 	.global	flash_boot_enter_slc_mode
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	flash_boot_enter_slc_mode, %function
 flash_boot_enter_slc_mode:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L3900
-	ldr	r2, [r3, #2264]
-	ldr	r3, .L3900+4
+	ldr	r3, .L3809
+	ldr	r2, [r3, #2268]
+	ldr	r3, .L3809+4
 	cmp	r2, r3
 	bxne	lr
 	b	flash_enter_slc_mode
-.L3901:
+.L3810:
 	.align	2
-.L3900:
+.L3809:
 	.word	.LANCHOR0
 	.word	1446522928
 	.fnend
 	.size	flash_boot_enter_slc_mode, .-flash_boot_enter_slc_mode
 	.align	2
 	.global	flash_boot_exit_slc_mode
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	flash_boot_exit_slc_mode, %function
 flash_boot_exit_slc_mode:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
 	@ link register save eliminated.
-	ldr	r3, .L3904
-	ldr	r2, [r3, #2264]
-	ldr	r3, .L3904+4
+	ldr	r3, .L3813
+	ldr	r2, [r3, #2268]
+	ldr	r3, .L3813+4
 	cmp	r2, r3
 	bxne	lr
 	b	flash_exit_slc_mode
-.L3905:
+.L3814:
 	.align	2
-.L3904:
+.L3813:
 	.word	.LANCHOR0
 	.word	1446522928
 	.fnend
 	.size	flash_boot_exit_slc_mode, .-flash_boot_exit_slc_mode
 	.align	2
 	.global	write_idblock
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	write_idblock, %function
 write_idblock:
 	.fnstart
-	@ args = 0, pretend = 0, frame = 120
+	@ args = 0, pretend = 0, frame = 112
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r8, r0
-	ldr	r7, .L3959
-	.pad #132
-	sub	sp, sp, #132
+	mov	r6, r0
+	ldr	r4, .L3864
+	.pad #124
+	sub	sp, sp, #124
 	mov	r0, #256000
-	mov	fp, r1
-	mov	r6, r2
-	ldr	r3, [r7, #44]
-	ldr	r4, [r7, #4]
-	ldrb	r5, [r3, #9]	@ zero_extendqisi2
+	mov	r10, r1
+	mov	r5, r2
+	ldr	r3, [r4, #48]
+	ldr	r8, [r4, #40]
+	ldrb	r7, [r3, #9]	@ zero_extendqisi2
 	bl	ftl_malloc
 	subs	r3, r0, #0
 	str	r3, [sp, #8]
-	beq	.L3933
-	add	ip, r8, #508
-	add	ip, ip, #3
-	mov	r10, ip, lsr #9
-	cmp	r10, #8
-	bls	.L3931
-	cmp	r10, #500
-	bhi	.L3933
-	b	.L3908
-.L3931:
-	mov	r10, #8
-.L3908:
-	ldr	r2, [fp]
-	ldr	r3, .L3959+4
+	beq	.L3842
+	add	r0, r6, #508
+	add	r0, r0, #3
+	lsr	r9, r0, #9
+	cmp	r9, #8
+	bls	.L3840
+	cmp	r9, #500
+	bhi	.L3842
+.L3817:
+	ldr	r2, [r10]
+	ldr	r3, .L3864+4
 	cmp	r2, r3
-	bne	.L3933
-	smulbb	r3, r5, r4
-	uxth	r3, r3
-	str	r3, [sp, #12]
-	sub	r0, r3, #1
-	mov	r1, r3
-	add	r0, r0, r10
+	bne	.L3842
+	smulbb	r7, r7, r8
+	uxth	fp, r7
+	sub	r0, fp, #1
+	mov	r1, fp
+	add	r0, r0, r9
 	bl	__aeabi_uidiv
+	str	r0, [sp, #32]
+	add	r0, r10, #254976
+	add	r0, r0, #512
 	mov	r3, #0
 	movw	r2, #63871
-	str	r0, [sp, #36]
-	add	r0, fp, #254976
-	add	r0, r0, #512
-.L3912:
+.L3821:
 	ldr	r1, [r0, #-4]!
 	cmp	r1, #0
-	bne	.L3909
-	ldr	r1, [fp, r3, asl #2]
+	bne	.L3818
+	ldr	r1, [r10, r3, lsl #2]
 	add	r3, r3, #1
 	cmp	r3, #4096
 	sub	r2, r2, #1
 	movhi	r3, #0
 	cmp	r2, #4096
 	str	r1, [r0, #512]
-	bne	.L3912
-	b	.L3911
-.L3909:
-	ldr	r0, .L3959+8
-	bl	printk
-.L3911:
+	bne	.L3821
+.L3820:
 	mov	r3, #5
-	ldr	r0, .L3959+12
-	mov	r1, r6
+	mov	r1, r5
 	mov	r2, #4
+	ldr	r0, .L3864+8
 	bl	rknand_print_hex
-	ldr	r1, [fp, #512]
-	ldrb	r2, [r7, #1]	@ zero_extendqisi2
-	sub	r4, r6, #4
-	ldr	r0, .L3959+16
+	ldrb	r2, [r4, #37]	@ zero_extendqisi2
+	sub	r5, r5, #4
+	ldr	r1, [r10, #512]
+	ldr	r0, .L3864+12
 	bl	printk
-	ldr	r2, .L3959+20
-	ldrh	r3, [r7, #142]
-	mov	r1, r10
-	ldr	r0, .L3959+24
-	ldr	r2, [r2, #1708]
-	ldr	r5, .L3959
+	ldr	r2, .L3864+16
+	mov	r1, r9
+	ldrh	r3, [r4, #150]
+	ldr	r0, .L3864+20
+	ldr	r2, [r2, #1716]
 	str	r2, [sp]
-	mov	r2, r10
+	mov	r2, r9
 	bl	printk
-	ldrb	r3, [r7, #1]	@ zero_extendqisi2
-	ldr	r2, [fp, #512]
+	ldrb	r3, [r4, #37]	@ zero_extendqisi2
+	ldr	r2, [r10, #512]
+	ldr	r4, .L3864
 	cmp	r2, r3
-	strhi	r3, [fp, #512]
-	mov	r3, r10, asl #7
+	strhi	r3, [r10, #512]
+	lsl	r3, r9, #7
 	str	r3, [sp, #40]
 	mov	r3, #0
 	str	r3, [sp, #20]
-	str	r3, [sp, #16]
-.L3929:
-	ldr	r2, [r4, #4]
-	ldrb	r3, [r5, #1]	@ zero_extendqisi2
-	ldr	r7, .L3959
+	str	r3, [sp, #12]
+.L3838:
+	ldr	r2, [r5, #4]
+	ldrb	r3, [r4, #37]	@ zero_extendqisi2
 	cmp	r2, r3
-	bcs	.L3914
-	ldr	r3, .L3959+20
-	ldr	r3, [r3, #1708]
+	bcs	.L3823
+	ldr	r3, .L3864+16
+	ldr	r3, [r3, #1716]
 	cmp	r2, r3
-	bcc	.L3914
-	ldr	r3, [sp, #36]
-	ldr	r1, [sp, #36]
-	cmp	r3, #1
-	movls	r3, #0
-	movhi	r3, #1
-	str	r3, [sp, #44]
-	ldr	r3, [sp, #16]
-	cmp	r3, #0
-	cmpne	r1, #1
-	bls	.L3915
-	ldr	r3, [r4]
+	bcc	.L3823
+	ldr	r3, [sp, #32]
+	ldr	r1, [sp, #12]
+	cmp	r1, #0
+	cmpne	r3, #1
+	bls	.L3824
+	ldr	r3, [r5]
 	add	r3, r3, #1
 	cmp	r2, r3
-	beq	.L3914
-.L3915:
-	mov	r1, #0
+	beq	.L3823
+.L3824:
 	mov	r2, #512
+	mov	r1, #0
 	ldr	r0, [sp, #8]
 	bl	memset
-	ldr	r6, [r4, #4]
-	mov	r2, r10
-	ldr	r0, .L3959+28
-	ldr	r3, [sp, #12]
-	mul	r6, r6, r3
-	ldr	r3, [r7, #44]
-	ldr	r7, [r7, #4]
-	ldrb	r9, [r3, #9]	@ zero_extendqisi2
+	ldr	r3, [r4, #48]
+	mov	r2, r9
+	ldr	r6, [r5, #4]
+	ldr	r7, [r4, #40]
+	ldrb	r3, [r3, #9]	@ zero_extendqisi2
+	ldr	r0, .L3864+24
+	mul	r6, r6, fp
+	str	r3, [sp, #16]
+	ldrh	r3, [sp, #16]
 	mov	r1, r6
+	smulbb	r7, r7, r3
 	bl	printk
 	mov	r0, #0
-	bl	flash_boot_enter_slc_mode
-	mov	r1, r9
-	mov	r0, r6
-	bl	__aeabi_uidiv
-	smulbb	r7, r7, r9
 	uxth	r7, r7
+	bl	flash_boot_enter_slc_mode
+	mov	r0, r6
+	ldr	r1, [sp, #16]
+	bl	__aeabi_uidiv
+	mov	r2, #0
 	mov	r1, r0
-	mov	r0, #0
-	mov	r2, r0
+	mov	r0, r2
 	bl	FlashEraseBlock
-	cmp	r10, r7
-	movls	r8, #1
-	bls	.L3916
-	mov	r0, #0
-	add	r1, r6, r7
-	mov	r2, r0
+	cmp	r7, r9
+	movcs	r8, #1
+	bcs	.L3825
+	mov	r2, #0
 	mov	r8, #2
+	add	r1, r6, r7
+	mov	r0, r2
 	bl	FlashEraseBlock
-.L3916:
+.L3825:
 	mov	r0, #0
 	bl	flash_boot_exit_slc_mode
-	ldr	r3, [r5, #44]
+	ldr	r3, [r4, #48]
 	ldrh	r0, [r3, #10]
 	ldrb	r1, [r3, #12]	@ zero_extendqisi2
-	mov	r0, r0, asl #2
+	lsl	r0, r0, #2
 	mul	r0, r8, r0
+	mov	r8, #0
 	bl	__aeabi_idiv
 	mov	r1, r7
-	mov	r8, #0
-	str	r0, [sp, #48]
+	str	r0, [sp, #44]
 	mov	r0, r6
 	bl	__aeabi_uidivmod
-	mov	ip, r1
-	rsb	r3, r1, r6
-	str	fp, [sp, #24]
-	str	r3, [sp, #28]
-.L3917:
-	ldr	r3, [sp, #48]
-	ldr	r7, .L3959
-	cmp	r8, r3
-	bcs	.L3957
-	add	r3, r8, ip
-	ubfx	r3, r3, #2, #16
-	cmp	r3, #0
-	beq	.L3918
-	add	r2, r3, #1
-	add	r1, r5, r2, asl #1
-	ldrh	r7, [r1, #148]
-	ldrb	r1, [r5, #144]	@ zero_extendqisi2
-	cmp	r1, #0
-	beq	.L3919
-	ldr	r1, [r5, #2264]
-	ldr	r0, .L3959+32
-	cmp	r1, r0
-	moveq	r7, r2
-.L3919:
-	sub	r7, r7, #-1073741823
-	mov	r7, r7, asl #2
-	str	r7, [sp, #64]
-.L3918:
-	movw	r2, #61424
-	str	r2, [sp, #68]
-	add	r2, r5, r3, asl #1
-	ldrh	r7, [r2, #148]
-	ldrb	r2, [r5, #144]	@ zero_extendqisi2
-	cmp	r2, #0
-	beq	.L3920
-	ldr	r2, [r5, #2264]
-	ldr	r1, .L3959+32
-	cmp	r2, r1
-	moveq	r7, r3
-.L3920:
-	ldr	r3, [sp, #28]
-	add	r8, r8, #4
-	str	ip, [sp, #56]
-	uxth	r8, r8
-	mla	r2, r9, r7, r3
-	ldr	r3, .L3959
-	ldrb	r3, [r3, #2312]	@ zero_extendqisi2
-	str	r2, [sp, #52]
-	str	r3, [sp, #32]
-	ldr	r3, .L3959+20
-	ldrb	r0, [r3, #1714]	@ zero_extendqisi2
-	bl	FlashBchSel
-	mov	r0, #0
-	bl	flash_boot_enter_slc_mode
-	ldr	r3, .L3959
-	ldr	r3, [r3, #44]
-	ldrb	r1, [r3, #9]	@ zero_extendqisi2
-	ldr	r2, [sp, #52]
-	mov	r0, r2
-	bl	__aeabi_uidiv
-	add	r3, sp, #64
-	mov	r1, r0
-	ldr	r2, [sp, #24]
-	mov	r0, #0
-	bl	FlashProgPage
-	mov	r0, #0
-	bl	flash_boot_exit_slc_mode
-	ldr	r0, [sp, #32]
-	bl	FlashBchSel
-	mov	r1, r9
-	ldr	r0, [sp, #28]
-	bl	__aeabi_uidiv
-	add	r2, r7, #1
-	uxth	r2, r2
-	mov	r1, r0
-	mov	r0, #0
-	bl	FlashPageProgMsbFFData
-	ldr	r3, [sp, #24]
-	ldr	ip, [sp, #56]
-	add	r3, r3, #2048
-	str	r3, [sp, #24]
-	b	.L3917
-.L3957:
-	mov	r1, r6
-	mov	r2, r10
-	mov	r3, #0
-	ldr	r0, .L3959+36
-	bl	printk
-	ldr	r6, [r4, #4]
-	ldr	r8, [r7, #4]
-	mov	r2, r10
-	ldr	r0, .L3959+40
-	mov	r9, #0
-	ldr	r3, [sp, #12]
-	mul	r6, r6, r3
-	ldr	r3, [r7, #44]
-	ldrb	r3, [r3, #9]	@ zero_extendqisi2
-	mov	r1, r6
-	str	r3, [sp, #24]
-	ldrh	r3, [sp, #24]
-	smulbb	r8, r8, r3
-	bl	printk
-	mov	r0, r6
-	uxth	r8, r8
-	mov	r1, r8
-	bl	__aeabi_uidivmod
-	rsb	r3, r1, r6
-	str	r3, [sp, #48]
-	ldr	r3, [sp, #24]
+	sub	r3, r6, r1
 	str	r1, [sp, #28]
-	mul	ip, r3, r1
-	ldr	r3, [sp, #8]
-	ubfx	ip, ip, #2, #2
-	str	r3, [sp, #32]
-.L3922:
-	cmp	r9, r10
-	bcs	.L3958
-	ldr	r3, [sp, #28]
-	rsb	r8, ip, #4
-	ldrb	r1, [r5, #144]	@ zero_extendqisi2
-	add	r3, r9, r3
-	uxth	r8, r8
-	ubfx	r3, r3, #2, #16
-	cmp	r1, #0
-	add	r2, r5, r3, asl #1
-	ldrh	r2, [r2, #148]
-	beq	.L3923
-	ldr	r1, [r5, #2264]
-	ldr	r0, .L3959+32
-	cmp	r1, r0
-	moveq	r2, r3
-.L3923:
-	ldr	r3, [sp, #48]
-	add	r9, r8, r9
-	ldr	r1, [sp, #24]
-	add	r3, ip, r3
-	ldrb	ip, [r7, #2312]	@ zero_extendqisi2
-	uxth	r9, r9
-	mla	r3, r1, r2, r3
-	ldr	r2, [r7, #44]
-	str	ip, [sp, #52]
-	ldrb	r1, [r2, #9]	@ zero_extendqisi2
-	ldr	r2, .L3959+20
-	str	r3, [sp, #60]
-	str	r1, [sp, #56]
-	ldrb	r0, [r2, #1714]	@ zero_extendqisi2
-	bl	FlashBchSel
-	mov	r0, #0
-	bl	flash_boot_enter_slc_mode
-	ldr	r3, [sp, #60]
-	ldr	r1, [sp, #56]
-	mov	r0, r3
-	bl	__aeabi_uidiv
-	mov	r1, r0
-	mov	r0, #0
-	mov	r3, r0
-	ldr	r2, [sp, #32]
-	bl	FlashReadPage
-	mov	r0, #0
-	bl	flash_boot_exit_slc_mode
-	ldr	ip, [sp, #52]
-	mov	r0, ip
-	bl	FlashBchSel
-	mov	ip, #0
-	ldr	r3, [sp, #32]
-	add	r3, r3, r8, asl #9
-	str	r3, [sp, #32]
-	b	.L3922
-.L3958:
+	str	r3, [sp, #36]
+	str	r10, [sp, #24]
+.L3826:
+	ldr	r3, [sp, #44]
+	cmp	r3, r8
+	bhi	.L3830
 	mov	r1, r6
-	mov	r2, r10
 	mov	r3, #0
-	ldr	r0, .L3959+44
+	mov	r2, r9
+	ldr	r0, .L3864+28
 	bl	printk
-	mov	r6, #0
-	mov	r3, fp
+	ldr	r3, [r4, #48]
+	mov	r2, r9
+	ldr	r6, [r5, #4]
+	mov	r8, #0
+	ldr	r7, [r4, #40]
+	ldrb	r3, [r3, #9]	@ zero_extendqisi2
+	ldr	r0, .L3864+32
+	mul	r6, r6, fp
+	str	r3, [sp, #16]
+	ldrh	r3, [sp, #16]
+	mov	r1, r6
+	smulbb	r7, r7, r3
+	bl	printk
+	uxth	r7, r7
+	mov	r0, r6
+	mov	r1, r7
+	bl	__aeabi_uidivmod
+	sub	r3, r6, r1
 	ldr	r2, [sp, #8]
-.L3928:
-	mov	r8, r2
-	mov	r7, r3
-	ldr	r0, [r8]
+	str	r3, [sp, #36]
+	ldr	r3, [sp, #16]
+	str	r1, [sp, #24]
+	str	r2, [sp, #28]
+	mul	r3, r3, r1
+	ubfx	r3, r3, #2, #2
+.L3831:
+	cmp	r8, r9
+	bcc	.L3833
+	mov	r3, #0
+	mov	r2, r9
+	mov	r1, r6
+	ldr	r0, .L3864+36
+	bl	printk
+	ldr	r2, [sp, #8]
+	mov	r3, r10
+	mov	r6, #0
+.L3836:
+	mov	r7, r2
+	mov	r8, r3
+	ldr	r0, [r7]
 	add	r2, r2, #4
-	ldr	r1, [r7]
+	ldr	r1, [r8]
 	add	r3, r3, #4
 	cmp	r0, r1
-	beq	.L3925
-	mov	r1, #0
+	beq	.L3834
 	mov	r2, #512
+	mov	r1, #0
 	ldr	r0, [sp, #8]
 	bl	memset
 	ldr	r3, [r8]
-	ldr	r0, .L3959+48
-	str	r3, [sp]
-	ldr	r3, [r7]
-	bic	r7, r6, #255
-	ldr	r1, [sp, #16]
-	mov	r7, r7, asl #2
+	ldr	r1, [sp, #12]
+	ldr	r0, .L3864+40
 	str	r3, [sp, #4]
+	ldr	r3, [r7]
+	str	r3, [sp]
 	mov	r3, r6
-	ldr	r2, [r4, #4]
+	bic	r6, r6, #255
+	ldr	r2, [r5, #4]
+	lsl	r6, r6, #2
 	bl	printk
-	ldr	r0, .L3959+52
-	add	r1, fp, r7
-	mov	r2, #4
 	mov	r3, #256
+	mov	r2, #4
+	add	r1, r10, r6
+	ldr	r0, .L3864+44
 	bl	rknand_print_hex
-	mov	r2, #4
-	ldr	r0, .L3959+56
-	ldr	r3, [sp, #8]
-	add	r1, r3, r7
+	ldr	r1, [sp, #8]
 	mov	r3, #256
+	mov	r2, #4
+	ldr	r0, .L3864+48
+	add	r1, r1, r6
 	bl	rknand_print_hex
 	mov	r0, #0
 	bl	flash_boot_enter_slc_mode
-	ldr	r1, [r4, #4]
-	mov	r0, #0
-	mov	r2, r0
-	ldr	r3, [sp, #12]
-	mul	r1, r1, r3
+	ldr	r1, [r5, #4]
+	mov	r2, #0
+	mov	r0, r2
+	mul	r1, r1, fp
 	bl	FlashEraseBlock
-	ldr	r3, [sp, #44]
-	cmp	r3, #0
-	beq	.L3926
-	ldr	r1, [r4, #4]
-	mov	r0, #0
-	ldr	r3, [sp, #12]
-	mov	r2, r0
-	mla	r1, r1, r3, r3
+	ldr	r3, [sp, #32]
+	cmp	r3, #1
+	bls	.L3835
+	ldr	r1, [r5, #4]
+	mov	r2, #0
+	mov	r0, r2
+	mla	r1, r1, fp, fp
 	bl	FlashEraseBlock
-.L3926:
+.L3835:
 	mov	r0, #0
 	bl	flash_boot_exit_slc_mode
-	ldr	r0, .L3959+60
-	ldr	r1, [r4, #4]
+	ldr	r1, [r5, #4]
+	ldr	r0, .L3864+52
 	bl	printk
-	ldr	r3, [sp, #40]
-	cmp	r6, r3
-	bcc	.L3914
-	b	.L3927
-.L3925:
-	ldr	r1, [sp, #40]
-	add	r6, r6, #1
-	cmp	r6, r1
-	bne	.L3928
-.L3927:
-	ldr	r3, [sp, #20]
+.L3823:
+	ldr	r3, [sp, #12]
+	add	r5, r5, #4
 	add	r3, r3, #1
-	str	r3, [sp, #20]
-.L3914:
-	ldr	r3, [sp, #16]
-	add	r4, r4, #4
-	add	r3, r3, #1
-	str	r3, [sp, #16]
 	cmp	r3, #5
-	bne	.L3929
+	str	r3, [sp, #12]
+	bne	.L3838
 	ldr	r0, [sp, #8]
 	bl	ftl_free
 	ldr	r3, [sp, #20]
 	clz	r0, r3
-	mov	r0, r0, lsr #5
+	lsr	r0, r0, #5
 	rsb	r0, r0, #0
-	b	.L3907
-.L3933:
-	mvn	r0, #0
-.L3907:
-	add	sp, sp, #132
+.L3815:
+	add	sp, sp, #124
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L3960:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L3840:
+	mov	r9, #8
+	b	.L3817
+.L3818:
+	ldr	r0, .L3864+56
+	bl	printk
+	b	.L3820
+.L3830:
+	ldr	r3, [sp, #28]
+	add	r2, r3, r8
+	lsrs	r2, r2, #2
+	beq	.L3827
+	ldrb	r0, [r4, #152]	@ zero_extendqisi2
+	add	r1, r2, #1
+	add	r3, r4, r1, lsl #1
+	cmp	r0, #0
+	ldrh	r3, [r3, #156]
+	beq	.L3828
+	ldr	r0, [r4, #2268]
+	ldr	ip, .L3864+60
+	cmp	r0, ip
+	moveq	r3, r1
+.L3828:
+	sub	r3, r3, #-1073741823
+	lsl	r3, r3, #2
+	str	r3, [sp, #56]
+.L3827:
+	movw	r3, #61424
+	str	r3, [sp, #60]
+	add	r3, r4, r2, lsl #1
+	ldrh	r7, [r3, #156]
+	ldrb	r3, [r4, #152]	@ zero_extendqisi2
+	cmp	r3, #0
+	beq	.L3829
+	ldr	r3, [r4, #2268]
+	ldr	r1, .L3864+60
+	cmp	r3, r1
+	moveq	r7, r2
+.L3829:
+	ldr	r2, [sp, #36]
+	add	r8, r8, #4
+	ldr	r3, [sp, #16]
+	uxth	r8, r8
+	mla	r3, r7, r3, r2
+	ldr	r2, .L3864+16
+	add	r7, r7, #1
+	ldrb	r0, [r2, #1722]	@ zero_extendqisi2
+	uxth	r7, r7
+	str	r3, [sp, #52]
+	ldrb	r3, [r4, #2316]	@ zero_extendqisi2
+	str	r3, [sp, #48]
+	bl	FlashBchSel
+	mov	r0, #0
+	bl	flash_boot_enter_slc_mode
+	ldr	r2, [r4, #48]
+	ldr	r3, [sp, #52]
+	ldrb	r1, [r2, #9]	@ zero_extendqisi2
+	mov	r0, r3
+	bl	__aeabi_uidiv
+	add	r3, sp, #56
+	ldr	r2, [sp, #24]
+	mov	r1, r0
+	mov	r0, #0
+	bl	FlashProgPage
+	mov	r0, #0
+	bl	flash_boot_exit_slc_mode
+	ldr	r0, [sp, #48]
+	bl	FlashBchSel
+	ldr	r1, [sp, #16]
+	ldr	r0, [sp, #36]
+	bl	__aeabi_uidiv
+	mov	r2, r7
+	mov	r1, r0
+	mov	r0, #0
+	bl	FlashPageProgMsbFFData
+	ldr	r3, [sp, #24]
+	add	r3, r3, #2048
+	str	r3, [sp, #24]
+	b	.L3826
+.L3833:
+	ldr	r2, [sp, #24]
+	rsb	r7, r3, #4
+	ldrb	r0, [r4, #152]	@ zero_extendqisi2
+	uxth	r7, r7
+	add	r2, r2, r8
+	lsr	r2, r2, #2
+	cmp	r0, #0
+	add	r1, r4, r2, lsl #1
+	ldrh	r1, [r1, #156]
+	beq	.L3832
+	ldr	r0, [r4, #2268]
+	ldr	ip, .L3864+60
+	cmp	r0, ip
+	moveq	r1, r2
+.L3832:
+	ldr	r2, [sp, #36]
+	add	r8, r7, r8
+	uxth	r8, r8
+	add	r3, r3, r2
+	ldr	r2, [sp, #16]
+	mla	r3, r1, r2, r3
+	ldr	r2, [r4, #48]
+	ldrb	r1, [r2, #9]	@ zero_extendqisi2
+	ldr	r2, .L3864+16
+	str	r3, [sp, #52]
+	ldrb	r3, [r4, #2316]	@ zero_extendqisi2
+	ldrb	r0, [r2, #1722]	@ zero_extendqisi2
+	str	r1, [sp, #48]
+	str	r3, [sp, #44]
+	bl	FlashBchSel
+	mov	r0, #0
+	bl	flash_boot_enter_slc_mode
+	ldr	r3, [sp, #52]
+	ldr	r1, [sp, #48]
+	mov	r0, r3
+	bl	__aeabi_uidiv
+	mov	r3, #0
+	mov	r1, r0
+	ldr	r2, [sp, #28]
+	mov	r0, r3
+	bl	FlashReadPage
+	mov	r0, #0
+	bl	flash_boot_exit_slc_mode
+	ldr	r0, [sp, #44]
+	bl	FlashBchSel
+	ldr	r3, [sp, #28]
+	add	r3, r3, r7, lsl #9
+	str	r3, [sp, #28]
+	mov	r3, #0
+	b	.L3831
+.L3834:
+	ldr	r1, [sp, #40]
+	add	r6, r6, #1
+	cmp	r1, r6
+	bne	.L3836
+	ldr	r3, [sp, #20]
+	add	r3, r3, #1
+	str	r3, [sp, #20]
+	b	.L3823
+.L3842:
+	mvn	r0, #0
+	b	.L3815
+.L3865:
 	.align	2
-.L3959:
+.L3864:
 	.word	.LANCHOR0
 	.word	-52655045
-	.word	.LC173
 	.word	.LC174
 	.word	.LC175
 	.word	.LANCHOR2
 	.word	.LC176
 	.word	.LC177
-	.word	1446522928
 	.word	.LC178
 	.word	.LC179
 	.word	.LC180
@@ -23870,92 +24399,90 @@
 	.word	.LC182
 	.word	.LC183
 	.word	.LC184
+	.word	.LC173
+	.word	1446522928
 	.fnend
 	.size	write_idblock, .-write_idblock
 	.align	2
 	.global	write_loader_lba
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	write_loader_lba, %function
 write_loader_lba:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 40
 	@ frame_needed = 0, uses_anonymous_args = 0
 	cmp	r0, #64
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, lr}
-	.save {r4, r5, r6, r7, r8, r9, lr}
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
 	mov	r5, r0
-	.pad #52
-	sub	sp, sp, #52
+	.pad #48
+	sub	sp, sp, #48
 	mov	r6, r1
 	mov	r8, r2
-	ldr	r4, .L3984
-	bne	.L3962
+	ldr	r4, .L3890
+	bne	.L3867
 	ldr	r2, [r2]
-	ldr	r3, .L3984+4
+	ldr	r3, .L3890+4
 	cmp	r2, r3
-	bne	.L3962
-	mov	r0, #256000
+	bne	.L3867
 	mov	r3, #1
+	mov	r0, #256000
 	strb	r3, [r4, #2020]
 	bl	ftl_malloc
-	mov	r1, #0
 	mov	r2, #256000
+	mov	r1, #0
 	str	r0, [r4, #2024]
 	bl	ftl_memset
 	str	r5, [r4, #2028]
-.L3962:
+.L3867:
 	str	r6, [sp]
 	mov	r3, r5
-	ldr	r0, .L3984+8
-	ldr	r1, [r4, #2024]
 	ldr	r2, [r8]
+	ldr	r1, [r4, #2024]
+	ldr	r0, .L3890+8
 	bl	printk
 	ldrb	r3, [r4, #2020]	@ zero_extendqisi2
-	ldr	r9, .L3984
 	cmp	r3, #0
-	beq	.L3961
+	beq	.L3866
 	sub	r0, r5, #64
-	ldr	r7, [r9, #2024]
+	ldr	r7, [r4, #2024]
 	cmp	r0, #500
-	bcs	.L3964
+	bcs	.L3869
 	rsb	r2, r5, #564
-	add	r0, r7, r0, asl #9
-	cmp	r2, r6
 	mov	r1, r8
-	movcs	r2, r6
-	mov	r2, r2, asl #9
+	cmp	r6, r2
+	add	r0, r7, r0, lsl #9
+	movcc	r2, r6
+	lsl	r2, r2, #9
 	bl	ftl_memcpy
-	b	.L3965
-.L3964:
-	cmp	r5, #564
-	bcs	.L3973
-.L3965:
+.L3870:
 	ldr	r3, [r4, #2028]
-	cmp	r3, r5
-	beq	.L3971
-	ldr	r2, .L3984
+	cmp	r5, r3
+	beq	.L3879
 	mov	r3, #0
 	cmp	r7, r3
+	strb	r3, [r4, #2020]
 	mov	r8, r3
-	strb	r3, [r2, #2020]
-	beq	.L3972
+	beq	.L3880
 	mov	r0, r7
 	bl	ftl_free
-.L3972:
+.L3880:
 	str	r8, [r4, #2024]
-.L3971:
-	add	r5, r5, r6
-	str	r5, [r4, #2028]
-	b	.L3961
-.L3973:
-	ldr	r3, .L3984+12
-	ldr	r0, [r9, #2028]
-	ldr	r3, [r3, #44]
+	b	.L3879
+.L3869:
+	cmp	r5, #564
+	bcc	.L3870
+	ldr	r3, .L3890+12
+	ldr	r0, [r4, #2028]
+	ldr	r3, [r3, #48]
 	sub	r0, r0, #64
 	cmp	r0, #500
 	ldrb	r3, [r3, #9]	@ zero_extendqisi2
 	movcs	r0, #500
 	cmp	r3, #4
-	beq	.L3974
+	beq	.L3871
 	mov	r3, #2
 	str	r3, [sp, #8]
 	mov	r3, #3
@@ -23966,49 +24493,52 @@
 	str	r3, [sp, #20]
 	mov	r3, #6
 	str	r3, [sp, #24]
-	b	.L3967
-.L3974:
-	mov	r3, #0
-.L3966:
-	cmp	r0, #256
-	add	r1, sp, #8
-	mov	r2, r3, asl #1
-	movls	r2, r3
-	str	r2, [r1, r3, asl #2]
-	add	r3, r3, #1
-	cmp	r3, #5
-	bne	.L3966
-.L3967:
+.L3872:
 	movw	r3, #63872
-.L3970:
-	ldr	r2, [r7, r3, asl #2]
+.L3878:
+	ldr	r2, [r7, r3, lsl #2]
 	cmp	r2, #0
-	addne	r3, r3, #128
-	movne	r0, r3, asl #2
-	bne	.L3969
-.L3968:
-	sub	r3, r3, #1
-	cmp	r3, #4096
-	bne	.L3970
-	mov	r0, r0, asl #9
-.L3969:
+	beq	.L3876
+	add	r3, r3, #128
+	lsl	r0, r3, #2
+.L3877:
 	mov	r1, r7
 	add	r2, sp, #8
+	mov	r7, #0
 	bl	write_idblock
 	ldr	r0, [r4, #2024]
-	mov	r7, #0
 	strb	r7, [r4, #2020]
 	bl	ftl_free
 	str	r7, [r4, #2024]
-	b	.L3971
-.L3961:
-	add	sp, sp, #52
+.L3879:
+	add	r5, r5, r6
+	str	r5, [r4, #2028]
+.L3866:
+	add	sp, sp, #48
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, pc}
-.L3985:
+	pop	{r4, r5, r6, r7, r8, pc}
+.L3871:
+	mov	r2, #0
+	add	r3, sp, #8
+.L3875:
+	cmp	r0, #256
+	lslhi	r1, r2, #1
+	strls	r2, [r3, r2, lsl #2]
+	strhi	r1, [r3, r2, lsl #2]
+	add	r2, r2, #1
+	cmp	r2, #5
+	bne	.L3875
+	b	.L3872
+.L3876:
+	sub	r3, r3, #1
+	cmp	r3, #4096
+	bne	.L3878
+	lsl	r0, r0, #9
+	b	.L3877
+.L3891:
 	.align	2
-.L3984:
-	.word	.LANCHOR4
+.L3890:
+	.word	.LANCHOR2
 	.word	-52655045
 	.word	.LC185
 	.word	.LANCHOR0
@@ -24016,281 +24546,381 @@
 	.size	write_loader_lba, .-write_loader_lba
 	.align	2
 	.global	FtlWrite
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	FtlWrite, %function
 FtlWrite:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, lr}
+	push	{r4, r5, r6, r7, r8, lr}
 	.save {r4, r5, r6, r7, r8, lr}
 	mov	r6, r2
 	sub	r2, r1, #64
 	mov	r4, r1
 	cmp	r2, #1984
-	mov	r5, r3
-	mov	r7, r0
+	mov	r7, r3
 	movcs	r2, #0
 	movcc	r2, #1
 	cmp	r0, #0
+	mov	r5, r0
 	movne	r2, #0
 	cmp	r2, #0
-	beq	.L3987
-	mov	r0, r1
+	beq	.L3893
 	mov	r2, r3
 	mov	r1, r6
+	mov	r0, r4
 	bl	write_loader_lba
-.L3987:
-	mov	r0, r7
-	mov	r1, r4
+.L3893:
+	mov	r3, r7
 	mov	r2, r6
-	mov	r3, r5
-	ldmfd	sp!, {r4, r5, r6, r7, r8, lr}
+	mov	r1, r4
+	mov	r0, r5
+	pop	{r4, r5, r6, r7, r8, lr}
 	b	ftl_write
 	.fnend
 	.size	FtlWrite, .-FtlWrite
 	.align	2
 	.global	rknand_sys_storage_ioctl
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rknand_sys_storage_ioctl, %function
 rknand_sys_storage_ioctl:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 520
 	@ frame_needed = 0, uses_anonymous_args = 0
-	ldr	r3, .L4049
-	stmfd	sp!, {r4, r5, r6, r7, lr}
+	ldr	r3, .L3955
+	push	{r4, r5, r6, r7, lr}
 	.save {r4, r5, r6, r7, lr}
-	cmp	r1, r3
+	mov	r4, r1
 	.pad #524
 	sub	sp, sp, #524
-	mov	r4, r1
 	mov	r5, r2
-	beq	.L3994
-	bhi	.L3995
+	cmp	r1, r3
+	beq	.L3900
+	bhi	.L3901
 	sub	r3, r3, #2080
 	sub	r3, r3, #6
 	cmp	r1, r3
-	beq	.L3996
-	bhi	.L3997
+	beq	.L3902
+	bhi	.L3903
 	sub	r3, r3, #238
 	cmp	r1, r3
-	beq	.L3998
+	beq	.L3904
 	add	r3, r3, #237
 	cmp	r1, r3
-	beq	.L3999
-	b	.L4029
-.L3997:
-	ldr	r3, .L4049+4
+	beq	.L3905
+.L3935:
+	mvn	r4, #21
+	b	.L3898
+.L3903:
+	ldr	r3, .L3955+4
 	cmp	r1, r3
-	beq	.L4000
+	beq	.L3906
 	add	r3, r3, #1
 	cmp	r1, r3
-	beq	.L4001
+	beq	.L3907
 	sub	r3, r3, #124
 	cmp	r1, r3
-	bne	.L4029
-	b	.L4047
-.L3995:
-	ldr	r3, .L4049+8
-	cmp	r1, r3
-	mov	r6, r3
-	beq	.L4003
-	bhi	.L4004
-	sub	r3, r3, #2512
-	sub	r3, r3, #14
-	cmp	r1, r3
-	beq	.L3994
-	add	r3, r3, #10
-	cmp	r1, r3
-	beq	.L3994
-	b	.L4029
-.L4004:
-	ldr	r3, .L4049+12
-	cmp	r1, r3
-	beq	.L4003
-	bcc	.L4005
-	add	r3, r3, #1
-	cmp	r1, r3
-	beq	.L4005
-	b	.L4029
-.L3999:
-	ldr	r0, .L4049+16
+	bne	.L3935
+	ldr	r0, .L3955+8
 	bl	printk
-	mov	r1, r5
 	mov	r2, #520
+	mov	r1, r5
 	mov	r0, sp
 	bl	rk_copy_from_user
 	cmp	r0, #0
-	beq	.L4006
-.L4012:
-	ldr	r0, .L4049+20
-	bl	printk
-	b	.L4044
-.L4006:
+	bne	.L3918
 	ldr	r2, [sp]
-	ldr	r3, .L4049+24
+	ldr	r3, .L3955+12
 	cmp	r2, r3
-	beq	.L4007
-.L4009:
+	bne	.L3915
+	ldr	r2, [sp, #4]
+	cmp	r2, #512
+	ldrls	r1, .L3955+16
+	bhi	.L3915
+.L3953:
+	add	r0, sp, #8
+	bl	memcpy
+	b	.L3947
+.L3901:
+	ldr	r3, .L3955+20
+	cmp	r1, r3
+	mov	r6, r3
+	beq	.L3909
+	bhi	.L3910
+	sub	r3, r3, #2512
+	sub	r3, r3, #14
+	cmp	r1, r3
+	beq	.L3900
+	add	r3, r3, #10
+	cmp	r1, r3
+	bne	.L3935
+.L3900:
+	ldr	r3, .L3955+24
+	cmp	r4, r3
+	mov	r7, r3
+	ldreq	r0, .L3955+28
+	beq	.L3949
+	ldr	r3, .L3955+32
+	cmp	r4, r3
+	ldreq	r0, .L3955+36
+	ldrne	r0, .L3955+40
+.L3949:
+	bl	printk
+	mov	r2, #520
+	mov	r1, r5
+	mov	r0, sp
+	bl	rk_copy_from_user
+	cmp	r0, #0
+	bne	.L3918
+	ldr	r2, [sp]
+	ldr	r3, .L3955+44
+	cmp	r2, r3
+	bne	.L3952
+	ldr	r3, .L3955+32
+	ldr	r6, .L3955+48
+	cmp	r4, r3
+	bne	.L3928
+	ldr	r3, [r6, #2032]
+	mov	r2, #16
+	mov	r1, sp
+	mov	r0, r5
+	ldr	r3, [r3, #20]
+	str	r3, [sp, #4]
+	strb	r3, [sp, #8]
+	bl	rk_copy_to_user
+	cmp	r0, #0
+	bne	.L3952
+.L3919:
+	mov	r4, #0
+.L3898:
+	mov	r0, r4
+	add	sp, sp, #524
+	@ sp needed
+	pop	{r4, r5, r6, r7, pc}
+.L3910:
+	ldr	r3, .L3955+52
+	cmp	r1, r3
+	beq	.L3909
+	bcc	.L3911
+	add	r3, r3, #1
+	cmp	r1, r3
+	bne	.L3935
+.L3911:
+	ldr	r0, .L3955+56
+	bl	printk
+	mov	r2, #520
+	mov	r1, r5
+	mov	r0, sp
+	bl	rk_copy_from_user
+	cmp	r0, #0
+	bne	.L3918
+	ldr	r2, [sp]
+	ldr	r3, .L3955+60
+	cmp	r2, r3
+	bne	.L3915
+	ldr	r2, [sp, #4]
+	cmp	r2, #504
+	bhi	.L3915
+	ldr	r3, .L3955+64
+	mov	r1, sp
+	add	r2, r2, #8
+	cmp	r4, r3
+	ldr	r4, .L3955+48
+	bne	.L3934
+	ldr	r0, [r4, #2564]
+	bl	memcpy
+	ldr	r1, [r4, #2564]
+	mov	r0, #2
+	b	.L3950
+.L3905:
+	ldr	r0, .L3955+68
+	bl	printk
+	mov	r2, #520
+	mov	r1, r5
+	mov	r0, sp
+	bl	rk_copy_from_user
+	cmp	r0, #0
+	beq	.L3912
+.L3918:
+	ldr	r0, .L3955+72
+	bl	printk
+.L3952:
+	mvn	r4, #13
+	b	.L3898
+.L3912:
+	ldr	r2, [sp]
+	ldr	r3, .L3955+76
+	cmp	r2, r3
+	beq	.L3913
+.L3915:
 	mvn	r4, #0
-	b	.L4008
-.L4007:
+.L3914:
+	mov	r1, r4
+	ldr	r0, .L3955+80
+	bl	printk
+	b	.L3898
+.L3913:
 	ldr	r3, [sp, #4]
 	cmp	r3, #512
-	bhi	.L4009
-	ldr	r4, .L4049+28
+	bhi	.L3915
+	ldr	r4, .L3955+48
 	mov	r2, #512
 	mov	r0, sp
 	ldr	r1, [r4, #2032]
 	bl	memcpy
 	ldr	r2, [r4, #2036]
-	ldr	r3, .L4049+32
+	ldr	r3, .L3955+84
 	cmp	r2, r3
-	beq	.L4010
+	beq	.L3916
 	mov	r1, #0
-	add	r0, sp, #64
 	mov	r2, #128
+	add	r0, sp, #64
 	str	r1, [sp, #8]
 	str	r1, [sp, #12]
 	bl	memset
-.L4010:
-	mov	r1, #0
-	add	r0, sp, #256
+.L3916:
 	mov	r2, #256
+	mov	r1, #0
+	add	r0, sp, r2
 	str	r1, [sp, #16]
 	bl	memset
-.L4039:
-	mov	r0, r5
-	mov	r1, sp
+.L3947:
 	mov	r2, #520
+	mov	r1, sp
+	mov	r0, r5
 	bl	rk_copy_to_user
 	cmp	r0, #0
-	bne	.L4044
-	b	.L4043
-.L3996:
-	ldr	r0, .L4049+36
+	bne	.L3952
+.L3951:
+	mov	r4, #0
+	b	.L3914
+.L3902:
+	ldr	r0, .L3955+88
 	bl	printk
-	mov	r1, r5
 	mov	r2, #520
+	mov	r1, r5
 	mov	r0, sp
 	bl	rk_copy_from_user
 	cmp	r0, #0
-	bne	.L4012
+	bne	.L3918
 	ldr	r2, [sp]
-	ldr	r3, .L4049+24
+	ldr	r3, .L3955+76
 	cmp	r2, r3
-	bne	.L4009
+	bne	.L3915
 	ldr	r3, [sp, #4]
 	cmp	r3, #512
-	bhi	.L4009
-	ldr	r2, .L4049+28
-	ldr	r3, .L4049+32
+	bhi	.L3915
+	ldr	r2, .L3955+48
+	ldr	r3, .L3955+84
 	ldr	r1, [r2, #2036]
 	cmp	r1, r3
-	mvnne	r0, #1
-	bne	.L3993
+	mvnne	r4, #1
+	bne	.L3898
 	ldr	r3, [sp, #12]
 	sub	r1, r3, #1
 	cmp	r1, #127
-	mvnhi	r0, #2
-	bhi	.L3993
+	mvnhi	r4, #2
+	bhi	.L3898
 	ldr	r4, [r2, #2032]
 	add	r1, sp, #64
-	add	r0, r4, #64
 	str	r3, [r4, #12]
+	add	r0, r4, #64
 	ldr	r2, [sp, #12]
 	bl	memcpy
-	mov	r0, #1
 	mov	r1, r4
-	b	.L4042
-.L4001:
-	ldr	r0, .L4049+40
+	mov	r0, #1
+.L3950:
+	bl	StorageSysDataStore
+	mov	r4, r0
+	b	.L3914
+.L3907:
+	ldr	r0, .L3955+92
 	bl	printk
-	mov	r1, r5
 	mov	r2, #520
+	mov	r1, r5
 	mov	r0, sp
 	bl	rk_copy_from_user
 	cmp	r0, #0
-	bne	.L4012
+	bne	.L3918
 	ldr	r2, [sp]
-	ldr	r3, .L4049+44
+	ldr	r3, .L3955+96
 	cmp	r2, r3
-	bne	.L4009
+	bne	.L3915
 	ldr	r3, [sp, #4]
 	cmp	r3, #512
-	bhi	.L4009
-	ldr	r5, .L4049+28
+	bhi	.L3915
+	ldr	r5, .L3955+48
 	ldr	r3, [r5, #2040]
 	cmp	r3, #0
-	bne	.L4013
-.L4016:
-	mov	r0, #0
-	b	.L3993
-.L4013:
+	beq	.L3919
 	ldr	r3, [r5, #2044]
-	ldr	r2, .L4049+48
+	ldr	r2, .L3955+100
 	ldr	r1, [r3]
 	cmp	r1, r2
-	beq	.L4014
+	beq	.L3920
 	str	r2, [r3]
 	mov	r2, #504
-	ldr	r3, .L4049+28
-	ldr	r3, [r3, #2044]
+	ldr	r3, [r5, #2044]
 	str	r2, [r3, #4]
 	mov	r2, #0
 	str	r2, [r3, #8]
 	str	r2, [r3, #12]
-.L4014:
+.L3920:
 	ldr	r1, [r5, #2044]
 	mov	r4, #0
 	mov	r0, r4
 	str	r4, [r1, #16]
 	bl	StorageSysDataStore
 	ldr	r3, [r5, #2032]
-	ldr	r2, .L4049+24
+	ldr	r2, .L3955+76
 	ldr	r1, [r3]
 	cmp	r1, r2
 	strne	r2, [r3]
-	ldr	r6, [r5, #2032]
-	ldrne	r3, .L4049+28
 	movne	r2, #504
-	add	r0, r6, #64
-	ldrne	r3, [r3, #2032]
-	stmneib	r3, {r2, r4}
+	ldrne	r3, [r5, #2032]
+	ldr	r6, [r5, #2032]
+	stmibne	r3, {r2, r4}
 	mov	r4, #0
-	mov	r1, r4
 	mov	r2, #128
+	mov	r1, r4
 	str	r4, [r6, #12]
+	add	r0, r6, #64
 	bl	memset
-	mov	r0, #1
 	mov	r1, r6
+	mov	r0, #1
 	bl	StorageSysDataStore
 	str	r4, [r5, #2040]
 	str	r4, [r5, #2036]
-	b	.L4008
-.L4000:
-	ldr	r0, .L4049+52
+	b	.L3914
+.L3906:
+	ldr	r0, .L3955+104
 	bl	printk
-	mov	r1, r5
 	mov	r2, #520
+	mov	r1, r5
 	mov	r0, sp
 	bl	rk_copy_from_user
 	cmp	r0, #0
-	bne	.L4012
+	bne	.L3918
 	ldr	r2, [sp]
-	ldr	r3, .L4049+56
+	ldr	r3, .L3955+108
 	cmp	r2, r3
-	bne	.L4009
+	bne	.L3915
 	ldr	r3, [sp, #4]
 	cmp	r3, #512
-	bhi	.L4009
-	ldr	r5, .L4049+28
+	bhi	.L3915
+	ldr	r5, .L3955+48
 	ldr	r3, [r5, #2040]
 	cmp	r3, #1
-	beq	.L4016
+	beq	.L3919
 	ldr	r2, [r5, #2044]
-	ldr	r3, .L4049+48
+	ldr	r3, .L3955+100
 	ldr	r1, [r2]
 	cmp	r1, r3
-	beq	.L4017
+	beq	.L3922
 	str	r3, [r2]
 	mov	r2, #504
 	ldr	r3, [r5, #2044]
@@ -24298,7 +24928,7 @@
 	mov	r2, #0
 	str	r2, [r3, #8]
 	str	r2, [r3, #12]
-.L4017:
+.L3922:
 	ldr	r1, [r5, #2044]
 	mov	r3, #1
 	mov	r0, #0
@@ -24306,209 +24936,114 @@
 	str	r3, [r1, #16]
 	bl	StorageSysDataStore
 	ldr	r3, [r5, #2032]
-	ldr	r2, .L4049+24
+	ldr	r2, .L3955+76
 	ldr	r1, [r3]
 	cmp	r1, r2
 	strne	r2, [r3]
-	ldr	r6, [r5, #2032]
-	ldrne	r3, .L4049+28
 	movne	r1, #504
+	ldrne	r3, [r5, #2032]
 	movne	r2, #0
-	add	r0, r6, #64
-	ldrne	r3, [r3, #2032]
-	stmneib	r3, {r1, r2}
-	mov	r1, r4
+	ldr	r6, [r5, #2032]
+	stmibne	r3, {r1, r2}
 	mov	r2, #128
+	mov	r1, r4
 	str	r4, [r6, #12]
+	add	r0, r6, #64
 	bl	memset
-	mov	r0, #1
 	mov	r1, r6
+	mov	r0, #1
 	bl	StorageSysDataStore
 	mov	r3, #1
 	str	r3, [r5, #2040]
-	b	.L4008
-.L4047:
-	ldr	r0, .L4049+60
-	bl	printk
-	mov	r1, r5
-	mov	r2, #520
-	mov	r0, sp
-	bl	rk_copy_from_user
-	cmp	r0, #0
-	bne	.L4012
-	ldr	r2, [sp]
-	ldr	r3, .L4049+64
-	cmp	r2, r3
-	bne	.L4009
-	ldr	r2, [sp, #4]
-	cmp	r2, #512
-	addls	r0, sp, #8
-	ldrls	r1, .L4049+68
-	bls	.L4045
-	b	.L4009
-.L3994:
-	ldr	r0, .L4049+72
-	cmp	r4, r0
-	mov	r7, r0
-	ldreq	r0, .L4049+76
-	beq	.L4041
-	ldr	r3, .L4049+80
-	cmp	r4, r3
-	ldreq	r0, .L4049+84
-	ldrne	r0, .L4049+88
-.L4041:
-	bl	printk
-	mov	r1, r5
-	mov	r2, #520
-	mov	r0, sp
-	bl	rk_copy_from_user
-	cmp	r0, #0
-	bne	.L4012
-	ldr	r2, [sp]
-	ldr	r3, .L4049+92
-	cmp	r2, r3
-	bne	.L4044
-	ldr	r3, .L4049+80
-	ldr	r6, .L4049+28
-	cmp	r4, r3
-	bne	.L4023
-	ldr	r3, [r6, #2032]
-	mov	r0, r5
-	mov	r1, sp
-	mov	r2, #16
-	ldr	r3, [r3, #20]
-	str	r3, [sp, #4]
-	strb	r3, [sp, #8]
-	bl	rk_copy_to_user
-	cmp	r0, #0
-	beq	.L3993
-	b	.L4044
-.L4023:
+	b	.L3914
+.L3928:
 	ldr	r3, [r6, #2560]
 	cmp	r3, #10
-	bhi	.L4044
-	ldr	r1, [r6, #2032]
-	ldr	r2, [sp, #4]
-	ldr	r3, [r1, #24]
-	cmp	r3, r2
+	bhi	.L3952
+	ldr	r2, [r6, #2032]
+	ldr	r1, [sp, #4]
+	ldr	r3, [r2, #24]
+	cmp	r3, r1
 	cmpne	r3, #0
 	movne	r3, #1
 	moveq	r3, #0
-	beq	.L4024
-	ldr	r0, .L4049+96
-	mov	r1, r2
+	beq	.L3929
+	ldr	r0, .L3955+112
 	bl	printk
 	ldr	r3, [r6, #2560]
 	add	r3, r3, #1
 	str	r3, [r6, #2560]
-.L4044:
-	mvn	r0, #13
-	b	.L3993
-.L4024:
+	b	.L3952
+.L3929:
 	cmp	r4, r7
 	str	r3, [r6, #2560]
-	mov	r0, #1
-	moveq	r2, r3
 	movne	r3, #1
-	moveq	r3, r2
-	str	r2, [r1, #24]
-	str	r3, [r1, #20]
+	strne	r1, [r2, #24]
+	streq	r3, [r2, #20]
+	mov	r1, r2
+	streq	r3, [r2, #24]
+	mov	r0, #1
+	strne	r3, [r2, #20]
 	bl	StorageSysDataStore
 	cmn	r0, #1
-	bne	.L4043
-	b	.L4048
-.L4003:
-	ldr	r0, .L4049+100
+	bne	.L3951
+	mvn	r4, #1
+	b	.L3914
+.L3909:
+	ldr	r0, .L3955+116
 	bl	printk
-	mov	r1, r5
 	mov	r2, #520
+	mov	r1, r5
 	mov	r0, sp
 	bl	rk_copy_from_user
 	cmp	r0, #0
-	bne	.L4012
+	bne	.L3918
 	ldr	r2, [sp]
-	ldr	r3, .L4049+104
+	ldr	r3, .L3955+60
 	cmp	r2, r3
-	bne	.L4009
+	bne	.L3915
 	ldr	r2, [sp, #4]
 	cmp	r2, #504
-	bhi	.L4009
-	ldr	r3, .L4049+28
+	bhi	.L3915
+	ldr	r3, .L3955+48
 	cmp	r4, r6
-	add	r0, sp, #8
 	ldreq	r1, [r3, #2564]
 	ldrne	r1, [r3, #2568]
 	add	r1, r1, #8
-.L4045:
-	bl	memcpy
-	b	.L4039
-.L4005:
-	ldr	r0, .L4049+108
-	bl	printk
-	mov	r1, r5
-	mov	r2, #520
-	mov	r0, sp
-	bl	rk_copy_from_user
-	cmp	r0, #0
-	bne	.L4012
-	ldr	r2, [sp]
-	ldr	r3, .L4049+104
-	cmp	r2, r3
-	bne	.L4009
-	ldr	r2, [sp, #4]
-	cmp	r2, #504
-	bhi	.L4009
-	ldr	r3, .L4049+112
-	add	r2, r2, #8
-	cmp	r4, r3
-	ldr	r4, .L4049+28
-	bne	.L4028
-	mov	r1, sp
-	ldr	r0, [r4, #2564]
-	bl	memcpy
-	mov	r0, #2
-	ldr	r1, [r4, #2564]
-	b	.L4042
-.L4028:
-	mov	r1, sp
+	b	.L3953
+.L3934:
 	ldr	r0, [r4, #2568]
 	bl	memcpy
 	ldr	r1, [r4, #2568]
 	mov	r0, #3
-.L4042:
-	bl	StorageSysDataStore
-	mov	r4, r0
-	b	.L4008
-.L3998:
+	b	.L3950
+.L3904:
 	bl	rknand_dev_flush
-.L4043:
-	mov	r4, #0
-	b	.L4008
-.L4048:
-	mvn	r4, #1
-.L4008:
-	ldr	r0, .L4049+116
-	mov	r1, r4
-	bl	printk
-	mov	r0, r4
-	b	.L3993
-.L4029:
-	mvn	r0, #21
-.L3993:
-	add	sp, sp, #524
-	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, pc}
-.L4050:
+	b	.L3951
+.L3956:
 	.align	2
-.L4049:
+.L3955:
 	.word	1074031656
 	.word	1074029694
+	.word	.LC191
+	.word	1094995539
+	.word	.LANCHOR2+2048
 	.word	1074034192
+	.word	1074031666
+	.word	.LC192
+	.word	1074031676
+	.word	.LC193
+	.word	.LC194
+	.word	1280262987
+	.word	.LANCHOR2
 	.word	1074034194
+	.word	.LC197
+	.word	1145980246
+	.word	1074034193
 	.word	.LC186
 	.word	.LC187
 	.word	1263358532
-	.word	.LANCHOR4
+	.word	.LC198
 	.word	-1067903959
 	.word	.LC188
 	.word	.LC189
@@ -24516,46 +25051,36 @@
 	.word	1146313043
 	.word	.LC190
 	.word	1112755781
-	.word	.LC191
-	.word	1094995539
-	.word	.LANCHOR4+2048
-	.word	1074031666
-	.word	.LC192
-	.word	1074031676
-	.word	.LC193
-	.word	.LC194
-	.word	1280262987
 	.word	.LC195
 	.word	.LC196
-	.word	1145980246
-	.word	.LC197
-	.word	1074034193
-	.word	.LC198
 	.fnend
 	.size	rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl
 	.align	2
 	.global	rk_ftl_storage_sys_init
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_ftl_storage_sys_init, %function
 rk_ftl_storage_sys_init:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, r6, r7, lr}
-	.save {r3, r4, r5, r6, r7, lr}
-	mov	r2, #512
-	ldr	r4, .L4061
+	push	{r4, r5, r6, r7, r8, lr}
+	.save {r4, r5, r6, r7, r8, lr}
 	mvn	r3, #0
+	ldr	r4, .L3967
 	mov	r5, #0
-	add	r0, r4, #2048
+	mov	r2, #512
 	ldr	r1, [r4, #2004]
+	add	r0, r4, #2048
 	str	r3, [r4, #2028]
+	strb	r5, [r4, #2020]
 	add	r3, r1, #512
-	str	r3, [r4, #2032]
 	str	r1, [r4, #2044]
+	str	r3, [r4, #2032]
 	add	r3, r1, #1024
 	add	r1, r1, #1536
 	str	r3, [r4, #2564]
-	strb	r5, [r4, #2020]
 	str	r5, [r4, #2024]
 	str	r5, [r4, #2572]
 	str	r1, [r4, #2568]
@@ -24567,40 +25092,42 @@
 	ldr	r3, [r6, #16]
 	cmp	r7, r5
 	str	r3, [r4, #2040]
-	beq	.L4052
-	mov	r0, r6
+	beq	.L3958
 	mov	r1, #508
+	mov	r0, r6
 	bl	js_hash
 	cmp	r7, r0
-	beq	.L4052
+	beq	.L3958
 	str	r5, [r6, #16]
-	ldr	r0, .L4061+4
+	ldr	r0, .L3967+4
 	str	r5, [r4, #2040]
 	bl	printk
-.L4052:
+.L3958:
 	ldr	r3, [r4, #2040]
 	mov	r0, #2
 	ldr	r1, [r4, #2564]
 	cmp	r3, #0
-	ldrne	r3, .L4061
-	ldrne	r2, .L4061+8
-	strne	r2, [r3, #2036]
+	ldrne	r3, .L3967+8
+	strne	r3, [r4, #2036]
 	bl	StorageSysDataLoad
 	ldr	r1, [r4, #2568]
 	mov	r0, #3
 	bl	StorageSysDataLoad
-	ldmfd	sp!, {r3, r4, r5, r6, r7, lr}
+	pop	{r4, r5, r6, r7, r8, lr}
 	b	rknand_sys_storage_init
-.L4062:
+.L3968:
 	.align	2
-.L4061:
-	.word	.LANCHOR4
+.L3967:
+	.word	.LANCHOR2
 	.word	.LC199
 	.word	-1067903959
 	.fnend
 	.size	rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init
 	.align	2
 	.global	StorageSysDataDeInit
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	StorageSysDataDeInit, %function
 StorageSysDataDeInit:
 	.fnstart
@@ -24613,269 +25140,269 @@
 	.size	StorageSysDataDeInit, .-StorageSysDataDeInit
 	.align	2
 	.global	rk_ftl_vendor_storage_init
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_ftl_vendor_storage_init, %function
 rk_ftl_vendor_storage_init:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, lr}
+	push	{r4, r5, r6, r7, r8, r9, r10, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, lr}
 	mov	r0, #65536
+	ldr	r6, .L3980
 	bl	ftl_malloc
-	ldr	r6, .L4075
 	cmp	r0, #0
 	str	r0, [r6, #2576]
-	beq	.L4070
-	ldr	r9, .L4075+4
-	mov	r8, #0
-	mov	r4, r8
-	mov	r7, r8
-	mov	r10, r6
-.L4068:
-	mov	r0, r7, asl #7
-	mov	r1, #128
+	beq	.L3976
+	ldr	r10, .L3980+4
+	mov	r7, #0
+	ldr	r9, .L3980+8
+	mov	r4, r7
+	mov	r8, r7
+.L3974:
 	ldr	r2, [r6, #2576]
+	mov	r1, #128
+	lsl	r0, r8, #7
 	bl	FlashBootVendorRead
 	cmp	r0, #0
-	bne	.L4066
-	ldr	r3, [r10, #2576]
-	ldr	r0, .L4075+8
-	add	r2, r3, #61440
-	ldr	r1, [r3]
+	bne	.L3972
+	ldr	r1, [r6, #2576]
+	mov	r0, r10
+	add	r2, r1, #61440
+	ldr	r3, [r1, #4]
 	ldr	r2, [r2, #4092]
-	ldr	r3, [r3, #4]
+	ldr	r1, [r1]
 	bl	printk
-	ldr	r5, [r10, #2576]
+	ldr	r5, [r6, #2576]
 	ldr	r3, [r5]
 	cmp	r3, r9
-	bne	.L4067
+	bne	.L3973
 	add	r2, r5, #61440
 	ldr	r3, [r5, #4]
-	ldr	r1, [r2, #4092]
-	cmp	r4, r3
-	movcs	r2, #0
-	movcc	r2, #1
-	cmp	r1, r3
-	movne	r2, #0
+	ldr	r2, [r2, #4092]
+	cmp	r3, r4
+	sub	r2, r2, r3
+	clz	r2, r2
+	lsr	r2, r2, #5
+	movls	r2, #0
 	cmp	r2, #0
-	movne	r8, r7
+	movne	r7, r8
 	movne	r4, r3
-.L4067:
-	cmp	r7, #1
-	movne	r7, #1
-	bne	.L4068
-.L4074:
+.L3973:
+	add	r8, r8, #1
+	cmp	r8, #2
+	bne	.L3974
 	cmp	r4, #0
-	beq	.L4069
-	mov	r0, r8, asl #7
-	mov	r1, #128
+	beq	.L3975
 	mov	r2, r5
+	mov	r1, #128
+	lsl	r0, r7, #7
 	bl	FlashBootVendorRead
 	cmp	r0, #0
-	bne	.L4066
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L4069:
-	mov	r0, r5
-	mov	r1, r4
+	bne	.L3972
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L3975:
 	mov	r2, #65536
+	mov	r1, r4
+	mov	r0, r5
 	bl	memset
-	ldr	r3, .L4075+4
-	str	r7, [r5, #4]
+	mov	r3, #1
+	add	r2, r5, #61440
+	str	r3, [r5, #4]
 	mov	r0, r4
-	str	r3, [r5]
-	add	r3, r5, #61440
-	str	r7, [r3, #4092]
-	ldr	r3, .L4075+12
+	str	r9, [r5]
+	str	r3, [r2, #4092]
+	ldr	r3, .L3980+12
 	strh	r4, [r5, #12]	@ movhi
 	strh	r3, [r5, #14]	@ movhi
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L4066:
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L3972:
 	ldr	r0, [r6, #2576]
 	bl	kfree
 	mov	r3, #0
 	mvn	r0, #0
 	str	r3, [r6, #2576]
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L4070:
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L3976:
 	mvn	r0, #11
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, pc}
-.L4076:
+	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
+.L3981:
 	.align	2
-.L4075:
-	.word	.LANCHOR4
-	.word	1380668996
+.L3980:
+	.word	.LANCHOR2
 	.word	.LC200
+	.word	1380668996
 	.word	-1032
 	.fnend
 	.size	rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init
 	.align	2
 	.global	rk_ftl_vendor_read
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_ftl_vendor_read, %function
 rk_ftl_vendor_read:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r3, r4, r5, lr}
-	.save {r3, r4, r5, lr}
-	ldr	r3, .L4084
+	ldr	r3, .L3992
 	ldr	ip, [r3, #2576]
 	cmp	ip, #0
-	ldrneh	r4, [ip, #10]
-	movne	r3, #0
-	beq	.L4082
-.L4079:
+	beq	.L3987
+	push	{r4, r5, r6, lr}
+	.save {r4, r5, r6, lr}
+	mov	r3, #0
+	ldrh	r4, [ip, #10]
+.L3984:
 	cmp	r3, r4
-	bcs	.L4082
-	add	lr, ip, r3, asl #3
+	bcc	.L3986
+	mvn	r0, #0
+	pop	{r4, r5, r6, pc}
+.L3986:
+	add	lr, ip, r3, lsl #3
 	ldrh	r5, [lr, #16]
 	cmp	r5, r0
-	bne	.L4080
-	ldrh	r3, [lr, #20]
+	bne	.L3985
+	ldrh	r4, [lr, #20]
 	mov	r0, r1
 	ldrh	r1, [lr, #18]
-	mov	r4, r2
-	cmp	r2, r3
+	cmp	r4, r2
+	movcs	r4, r2
 	add	r1, r1, #1024
-	movcs	r4, r3
-	add	r1, ip, r1
 	mov	r2, r4
+	add	r1, ip, r1
 	bl	memcpy
 	mov	r0, r4
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L4080:
+	pop	{r4, r5, r6, pc}
+.L3985:
 	add	r3, r3, #1
-	b	.L4079
-.L4082:
+	b	.L3984
+.L3987:
 	mvn	r0, #0
-	ldmfd	sp!, {r3, r4, r5, pc}
-.L4085:
+	bx	lr
+.L3993:
 	.align	2
-.L4084:
-	.word	.LANCHOR4
+.L3992:
+	.word	.LANCHOR2
 	.fnend
 	.size	rk_ftl_vendor_read, .-rk_ftl_vendor_read
 	.align	2
 	.global	rk_ftl_vendor_write
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_ftl_vendor_write, %function
 rk_ftl_vendor_write:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 24
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, lr}
+	ldr	r3, .L4015
+	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
 	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
-	mov	r9, r2
-	ldr	r2, .L4109
 	.pad #28
 	sub	sp, sp, #28
-	ldr	r4, [r2, #2576]
+	ldr	r4, [r3, #2576]
 	cmp	r4, #0
-	beq	.L4101
-	mov	r3, r1
-	add	r7, r9, #63
-	ldrh	r1, [r4, #8]
-	bic	r7, r7, #63
+	beq	.L4009
+	mov	r8, r2
 	ldrh	r2, [r4, #10]
-	mov	ip, r0
-	mov	r6, #0
-	str	r1, [sp, #4]
-.L4088:
-	cmp	r6, r2
-	bcs	.L4107
-	add	r5, r4, r6, asl #3
-	ldrh	r1, [r5, #16]
-	cmp	r1, ip
-	bne	.L4089
-	ldrh	r1, [r5, #20]
-	add	fp, r4, #1024
-	add	r1, r1, #63
-	bic	r1, r1, #63
-	str	r1, [sp, #8]
-	cmp	r9, r1
-	bls	.L4090
+	add	r6, r8, #63
+	ldrh	r3, [r4, #8]
+	mov	fp, r1
+	bic	r6, r6, #63
+	mov	r7, #0
+	str	r3, [sp, #4]
+.L3996:
+	cmp	r7, r2
+	bcc	.L4004
 	ldrh	r1, [r4, #14]
-	cmp	r1, r7
-	subcs	r2, r2, #1
-	strcs	r2, [sp, #12]
-	ldrcsh	r8, [r5, #18]
-	bcc	.L4101
-.L4091:
-	ldr	r2, [sp, #12]
-	add	r5, r5, #8
-	cmp	r6, r2
-	bcs	.L4108
-	ldrh	r10, [r5, #20]
-	add	r0, fp, r8
-	ldrh	r2, [r5, #16]
-	add	r6, r6, #1
-	ldrh	r1, [r5, #18]
-	strh	r10, [r5, #12]	@ movhi
-	add	r10, r10, #63
-	bic	r10, r10, #63
-	strh	r2, [r5, #8]	@ movhi
-	strh	r8, [r5, #10]	@ movhi
-	add	r1, fp, r1
-	mov	r2, r10
-	str	r3, [sp, #20]
-	str	ip, [sp, #16]
-	bl	memcpy
-	add	r8, r8, r10
-	ldr	r3, [sp, #20]
-	ldr	ip, [sp, #16]
-	b	.L4091
-.L4108:
-	add	r6, r4, r6, asl #3
-	uxth	r8, r8
-	add	r0, fp, r8
-	mov	r1, r3
-	strh	r8, [r6, #18]	@ movhi
-	mov	r2, r9
-	strh	ip, [r6, #16]	@ movhi
-	uxth	r7, r7
-	strh	r9, [r6, #20]	@ movhi
-	add	r8, r8, r7
-	bl	memcpy
-	ldrh	r5, [r4, #14]
-	strh	r8, [r4, #12]	@ movhi
-	ldr	r3, [sp, #8]
-	add	r5, r3, r5
-	rsb	r7, r7, r5
-	strh	r7, [r4, #14]	@ movhi
-	b	.L4106
-.L4090:
-	ldrh	r0, [r5, #18]
-	mov	r1, r3
-	mov	r2, r9
-	add	r0, fp, r0
-	bl	memcpy
-	strh	r9, [r5, #20]	@ movhi
-	b	.L4106
-.L4089:
-	add	r6, r6, #1
-	b	.L4088
-.L4107:
-	ldrh	r1, [r4, #14]
-	cmp	r1, r7
-	bcc	.L4101
-	add	r2, r4, r2, asl #3
-	uxth	r7, r7
-	rsb	r1, r7, r1
-	strh	ip, [r2, #16]	@ movhi
-	ldrh	r0, [r4, #12]
-	strh	r9, [r2, #20]	@ movhi
-	strh	r0, [r2, #18]	@ movhi
-	add	r0, r7, r0
-	strh	r1, [r4, #14]	@ movhi
-	mov	r1, r3
-	strh	r0, [r4, #12]	@ movhi
-	ldrh	r0, [r2, #18]
-	mov	r2, r9
+	cmp	r6, r1
+	bhi	.L4009
+	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
 	add	r0, r0, #1024
 	add	r0, r4, r0
 	bl	memcpy
 	ldrh	r3, [r4, #10]
 	add	r3, r3, #1
 	strh	r3, [r4, #10]	@ movhi
-.L4106:
+	b	.L4014
+.L4004:
+	add	r5, r4, r7, lsl #3
+	ldrh	r3, [r5, #16]
+	cmp	r3, r0
+	str	r3, [sp, #8]
+	bne	.L3997
+	ldrh	r1, [r5, #20]
+	add	r3, r4, #1024
+	add	r1, r1, #63
+	bic	r1, r1, #63
+	cmp	r8, r1
+	str	r1, [sp, #12]
+	bls	.L3998
+	ldrh	r1, [r4, #14]
+	cmp	r6, r1
+	subls	r2, r2, #1
+	ldrhls	r10, [r5, #18]
+	strls	r2, [sp, #16]
+	bls	.L3999
+.L4009:
+	mvn	r0, #0
+	b	.L3994
+.L4000:
+	ldrh	r9, [r5, #20]
+	add	r0, r3, r10
+	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
+	strh	r2, [r5, #8]	@ movhi
+	strh	r10, [r5, #10]	@ movhi
+	add	r1, r3, r1
+	mov	r2, r9
+	str	r3, [sp, #20]
+	bl	memcpy
+	ldr	r3, [sp, #20]
+	add	r10, r10, r9
+.L3999:
+	ldr	r2, [sp, #16]
+	add	r5, r5, #8
+	cmp	r7, r2
+	bcc	.L4000
+	ldrh	r2, [sp, #8]
+	add	r7, r4, r7, lsl #3
+	uxth	r5, r10
+	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
+	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
+.L4014:
 	ldr	r3, [r4, #4]
 	add	r2, r4, #61440
 	mov	r1, #128
@@ -24890,30 +25417,41 @@
 	movhi	r3, #0
 	strh	r3, [r4, #8]	@ movhi
 	ldr	r3, [sp, #4]
-	mov	r0, r3, asl #7
+	lsl	r0, r3, #7
 	bl	FlashBootVendorWrite
 	mov	r0, #0
-	b	.L4087
-.L4101:
-	mvn	r0, #0
-.L4087:
+.L3994:
 	add	sp, sp, #28
 	@ sp needed
-	ldmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, pc}
-.L4110:
+	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
+.L3998:
+	ldrh	r0, [r5, #18]
+	mov	r2, r8
+	mov	r1, fp
+	add	r0, r3, r0
+	bl	memcpy
+	strh	r8, [r5, #20]	@ movhi
+	b	.L4014
+.L3997:
+	add	r7, r7, #1
+	b	.L3996
+.L4016:
 	.align	2
-.L4109:
-	.word	.LANCHOR4
+.L4015:
+	.word	.LANCHOR2
 	.fnend
 	.size	rk_ftl_vendor_write, .-rk_ftl_vendor_write
 	.align	2
 	.global	rk_ftl_vendor_storage_ioctl
+	.syntax unified
+	.arm
+	.fpu softvfp
 	.type	rk_ftl_vendor_storage_ioctl, %function
 rk_ftl_vendor_storage_ioctl:
 	.fnstart
 	@ args = 0, pretend = 0, frame = 0
 	@ frame_needed = 0, uses_anonymous_args = 0
-	stmfd	sp!, {r4, r5, r6, lr}
+	push	{r4, r5, r6, lr}
 	.save {r4, r5, r6, lr}
 	mov	r0, #4096
 	mov	r5, r2
@@ -24921,81 +25459,79 @@
 	bl	ftl_malloc
 	subs	r4, r0, #0
 	mvneq	r5, #0
-	beq	.L4112
-	ldr	r3, .L4128
+	beq	.L4017
+	ldr	r3, .L4033
 	cmp	r6, r3
-	beq	.L4114
+	beq	.L4020
 	add	r3, r3, #1
 	cmp	r6, r3
-	beq	.L4115
-	b	.L4126
-.L4114:
-	mov	r1, r5
+	beq	.L4021
+.L4031:
+	mvn	r5, #13
+	b	.L4019
+.L4020:
 	mov	r2, #8
+	mov	r1, r5
 	bl	rk_copy_from_user
 	cmp	r0, #0
-	bne	.L4126
+	bne	.L4031
 	ldr	r2, [r4]
-	ldr	r3, .L4128+4
+	ldr	r3, .L4033+4
 	cmp	r2, r3
-	beq	.L4117
-.L4118:
+	beq	.L4023
+.L4024:
 	mvn	r5, #0
-	b	.L4113
-.L4117:
-	ldrh	r0, [r4, #4]
-	add	r1, r4, #8
+.L4019:
+	mov	r0, r4
+	bl	kfree
+.L4017:
+	mov	r0, r5
+	pop	{r4, r5, r6, pc}
+.L4023:
 	ldrh	r2, [r4, #6]
+	add	r1, r4, #8
+	ldrh	r0, [r4, #4]
 	bl	rk_ftl_vendor_read
 	cmn	r0, #1
-	beq	.L4118
+	beq	.L4024
 	uxth	r2, r0
 	strh	r0, [r4, #6]	@ movhi
 	mov	r1, r4
 	mov	r0, r5
 	add	r2, r2, #8
 	bl	rk_copy_to_user
-	cmp	r0, #0
-	moveq	r5, #0
-	mvnne	r5, #13
-	b	.L4113
-.L4115:
-	mov	r1, r5
+	subs	r5, r0, #0
+	beq	.L4019
+	b	.L4031
+.L4021:
 	mov	r2, #8
+	mov	r1, r5
 	bl	rk_copy_from_user
 	cmp	r0, #0
-	bne	.L4126
+	bne	.L4031
 	ldr	r2, [r4]
-	ldr	r3, .L4128+4
+	ldr	r3, .L4033+4
 	cmp	r2, r3
-	bne	.L4118
+	bne	.L4024
 	ldrh	r2, [r4, #6]
 	movw	r3, #4087
 	cmp	r2, r3
-	bhi	.L4118
-	mov	r0, r4
-	mov	r1, r5
+	bhi	.L4024
 	add	r2, r2, #8
+	mov	r1, r5
+	mov	r0, r4
 	bl	rk_copy_from_user
 	cmp	r0, #0
-	bne	.L4126
-	ldrh	r0, [r4, #4]
-	add	r1, r4, #8
+	bne	.L4031
 	ldrh	r2, [r4, #6]
+	add	r1, r4, #8
+	ldrh	r0, [r4, #4]
 	bl	rk_ftl_vendor_write
 	mov	r5, r0
-	b	.L4113
-.L4126:
-	mvn	r5, #13
-.L4113:
-	mov	r0, r4
-	bl	kfree
-.L4112:
-	mov	r0, r5
-	ldmfd	sp!, {r4, r5, r6, pc}
-.L4129:
+	b	.L4019
+.L4034:
 	.align	2
-.L4128:
+.L4033:
 	.word	1074034177
 	.word	1448232273
 	.fnend
@@ -25009,6 +25545,8 @@
 	.global	gSnSectorData
 	.global	gpDrmKeyInfo
 	.global	gpBootConfig
+	.global	ftl_dma32_buffer_size
+	.global	ftl_dma32_buffer
 	.global	gLoaderBootInfo
 	.global	RK29_NANDC1_REG_BASE
 	.global	RK29_NANDC_REG_BASE
@@ -25244,18 +25782,11 @@
 	.global	IDByte
 	.global	read_retry_cur_offset
 	.section	.rodata
-	.align	2
-.LANCHOR3 = . + 0
-	.type	__func__.20390, %object
-	.size	__func__.20390, 11
-__func__.20390:
+	.set	.LANCHOR3,. + 0
+	.type	__func__.23812, %object
+	.size	__func__.23812, 11
+__func__.23812:
 	.ascii	"FtlMemInit\000"
-.LC0:
-	.byte	60
-	.byte	40
-	.byte	24
-	.byte	16
-	.space	1
 	.type	samsung_14nm_slc_rr, %object
 	.size	samsung_14nm_slc_rr, 26
 samsung_14nm_slc_rr:
@@ -25285,7 +25816,6 @@
 	.byte	-125
 	.byte	-115
 	.byte	100
-	.space	2
 	.type	samsung_14nm_mlc_rr, %object
 	.size	samsung_14nm_mlc_rr, 104
 samsung_14nm_mlc_rr:
@@ -25393,452 +25923,33 @@
 	.byte	18
 	.byte	9
 	.byte	8
-	.type	__func__.21169, %object
-	.size	__func__.21169, 17
-__func__.21169:
+	.type	__func__.24591, %object
+	.size	__func__.24591, 17
+__func__.24591:
 	.ascii	"FtlDumpBlockInfo\000"
-	.space	3
-	.type	__func__.21188, %object
-	.size	__func__.21188, 16
-__func__.21188:
+	.type	__func__.24610, %object
+	.size	__func__.24610, 16
+__func__.24610:
 	.ascii	"FtlScanAllBlock\000"
-	.type	__func__.21456, %object
-	.size	__func__.21456, 17
-__func__.21456:
+	.type	__func__.24878, %object
+	.size	__func__.24878, 17
+__func__.24878:
 	.ascii	"ftl_scan_all_ppa\000"
-	.space	3
-	.type	__func__.21137, %object
-	.size	__func__.21137, 12
-__func__.21137:
+	.type	__func__.24559, %object
+	.size	__func__.24559, 12
+__func__.24559:
 	.ascii	"FtlCheckVpc\000"
-	.type	__func__.21436, %object
-	.size	__func__.21436, 21
-__func__.21436:
+	.type	__func__.24858, %object
+	.size	__func__.24858, 21
+__func__.24858:
 	.ascii	"FtlVpcCheckAndModify\000"
-	.space	3
-	.type	__func__.20463, %object
-	.size	__func__.20463, 8
-__func__.20463:
+	.type	__func__.23885, %object
+	.size	__func__.23885, 8
+__func__.23885:
 	.ascii	"FtlInit\000"
-	.section	.rodata.str1.1,"aMS",%progbits,1
-.LC1:
-	.ascii	"FlashEraseBlocks pageAddr error %x\012\000"
-.LC2:
-	.ascii	"phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
-	.ascii	"\000"
-.LC3:
-	.ascii	"FtlFreeSysBlkQueueOut free count = %d\012\000"
-.LC4:
-	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d, error\012"
-	.ascii	"\000"
-.LC5:
-	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d\012\000"
-.LC6:
-	.ascii	"FLASH INFO:\012\000"
-.LC7:
-	.ascii	"FLASH ID: %x\012\000"
-.LC8:
-	.ascii	"Device Capacity: %d MB\012\000"
-.LC9:
-	.ascii	"FMWAIT: %x %x %x %x\012\000"
-.LC10:
-	.ascii	"FTL INFO:\012\000"
-.LC11:
-	.ascii	"g_MaxLpn = 0x%x\012\000"
-.LC12:
-	.ascii	"g_VaildLpn = 0x%x\012\000"
-.LC13:
-	.ascii	"read_page_count = 0x%x\012\000"
-.LC14:
-	.ascii	"discard_page_count = 0x%x\012\000"
-.LC15:
-	.ascii	"write_page_count = 0x%x\012\000"
-.LC16:
-	.ascii	"cache_write_count = 0x%x\012\000"
-.LC17:
-	.ascii	"l2p_write_count = 0x%x\012\000"
-.LC18:
-	.ascii	"gc_page_count = 0x%x\012\000"
-.LC19:
-	.ascii	"totle_write = %d MB\012\000"
-.LC20:
-	.ascii	"totle_read = %d MB\012\000"
-.LC21:
-	.ascii	"GSV = 0x%x\012\000"
-.LC22:
-	.ascii	"GDV = 0x%x\012\000"
-.LC23:
-	.ascii	"bad blk num = %d %d\012\000"
-.LC24:
-	.ascii	"free_superblocks = 0x%x\012\000"
-.LC25:
-	.ascii	"mlc_EC = 0x%x\012\000"
-.LC26:
-	.ascii	"slc_EC = 0x%x\012\000"
-.LC27:
-	.ascii	"avg_EC = 0x%x\012\000"
-.LC28:
-	.ascii	"sys_EC = 0x%x\012\000"
-.LC29:
-	.ascii	"max_EC = 0x%x\012\000"
-.LC30:
-	.ascii	"min_EC = 0x%x\012\000"
-.LC31:
-	.ascii	"PLT = 0x%x\012\000"
-.LC32:
-	.ascii	"POT = 0x%x\012\000"
-.LC33:
-	.ascii	"MaxSector = 0x%x\012\000"
-.LC34:
-	.ascii	"init_sys_blks_pp = 0x%x\012\000"
-.LC35:
-	.ascii	"sys_blks_pp = 0x%x\012\000"
-.LC36:
-	.ascii	"free sysblock = 0x%x\012\000"
-.LC37:
-	.ascii	"data_blks_pp = 0x%x\012\000"
-.LC38:
-	.ascii	"data_op_blks_pp = 0x%x\012\000"
-.LC39:
-	.ascii	"max_data_blks = 0x%x\012\000"
-.LC40:
-	.ascii	"Sys.id = 0x%x\012\000"
-.LC41:
-	.ascii	"Bbt.id = 0x%x\012\000"
-.LC42:
-	.ascii	"ACT.page = 0x%x\012\000"
-.LC43:
-	.ascii	"ACT.plane = 0x%x\012\000"
-.LC44:
-	.ascii	"ACT.id = 0x%x\012\000"
-.LC45:
-	.ascii	"ACT.mode = 0x%x\012\000"
-.LC46:
-	.ascii	"ACT.a_pages = 0x%x\012\000"
-.LC47:
-	.ascii	"ACT VPC = 0x%x\012\000"
-.LC48:
-	.ascii	"BUF.page = 0x%x\012\000"
-.LC49:
-	.ascii	"BUF.plane = 0x%x\012\000"
-.LC50:
-	.ascii	"BUF.id = 0x%x\012\000"
-.LC51:
-	.ascii	"BUF.mode = 0x%x\012\000"
-.LC52:
-	.ascii	"BUF.a_pages = 0x%x\012\000"
-.LC53:
-	.ascii	"BUF VPC = 0x%x\012\000"
-.LC54:
-	.ascii	"TMP.page = 0x%x\012\000"
-.LC55:
-	.ascii	"TMP.plane = 0x%x\012\000"
-.LC56:
-	.ascii	"TMP.id = 0x%x\012\000"
-.LC57:
-	.ascii	"TMP.mode = 0x%x\012\000"
-.LC58:
-	.ascii	"TMP.a_pages = 0x%x\012\000"
-.LC59:
-	.ascii	"GC.page = 0x%x\012\000"
-.LC60:
-	.ascii	"GC.plane = 0x%x\012\000"
-.LC61:
-	.ascii	"GC.id = 0x%x\012\000"
-.LC62:
-	.ascii	"GC.mode = 0x%x\012\000"
-.LC63:
-	.ascii	"GC.a_pages = 0x%x\012\000"
-.LC64:
-	.ascii	"WR_CHK = 0x%x %x %x %x\012\000"
-.LC65:
-	.ascii	"Read Err = 0x%x\012\000"
-.LC66:
-	.ascii	"Prog Err = 0x%x\012\000"
-.LC67:
-	.ascii	"gc_free_blk_th= 0x%x\012\000"
-.LC68:
-	.ascii	"gc_merge_free_blk_th= 0x%x\012\000"
-.LC69:
-	.ascii	"gc_skip_write_count= 0x%x\012\000"
-.LC70:
-	.ascii	"gc_blk_index= 0x%x\012\000"
-.LC71:
-	.ascii	"free min EC= 0x%x\012\000"
-.LC72:
-	.ascii	"free max EC= 0x%x\012\000"
-.LC73:
-	.ascii	"GC__SB VPC = 0x%x\012\000"
-.LC74:
-	.ascii	"%d. [0x%x]=0x%x 0x%x  0x%x\012\000"
-.LC75:
-	.ascii	"free %d. [0x%x] 0x%x  0x%x\012\000"
-.LC76:
-	.ascii	"%s\012\000"
-.LC77:
-	.ascii	"FTL version: 5.0.63 20200923\000"
-.LC78:
-	.ascii	"swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x"
-	.ascii	"\012\000"
-.LC79:
-	.ascii	"FtlGcRefreshBlock  0x%x\012\000"
-.LC80:
-	.ascii	"FtlGcMarkBadPhyBlk %d 0x%x\012\000"
-.LC81:
-	.ascii	"%s error allocating memory. return -1\012\000"
-.LC82:
-	.ascii	"%s %p:0x%x:\000"
-.LC83:
-	.ascii	"%x \000"
-.LC84:
-	.ascii	"\000"
-.LC85:
-	.ascii	"otp error! %d\000"
-.LC86:
-	.ascii	"rr\000"
-.LC87:
-	.ascii	"%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\012"
-	.ascii	"\000"
-.LC88:
-	.ascii	"nandc:\000"
-.LC89:
-	.ascii	"%d flReg.d32=%x %x\012\000"
-.LC90:
-	.ascii	"sdr read ok %x ecc=%d\012\000"
-.LC91:
-	.ascii	"sync para %d\012\000"
-.LC92:
-	.ascii	"TOG mode Read error %x %x\012\000"
-.LC93:
-	.ascii	"read retry status %x %x %x\012\000"
-.LC94:
-	.ascii	"micron RR %d row=%x,count %d,status=%d\012\000"
-.LC95:
-	.ascii	"samsung RR %d row=%x,count %d,status=%d\012\000"
-.LC96:
-	.ascii	"ECC:%d\012\000"
-.LC97:
-	.ascii	"No.%d FLASH ID:%x %x %x %x %x %x\012\000"
-.LC98:
-	.ascii	"FlashLoadPhyInfo fail %x!!\012\000"
-.LC99:
-	.ascii	"Read pageadd=%x  ecc=%x err=%x\012\000"
-.LC100:
-	.ascii	"data:\000"
-.LC101:
-	.ascii	"spare:\000"
-.LC102:
-	.ascii	"ReadRetry pageadd=%x ecc=%x err=%x\012\000"
-.LC103:
-	.ascii	"FLFB:%d %d\012\000"
-.LC104:
-	.ascii	"prog error: = %x\012\000"
-.LC105:
-	.ascii	"prog read error: = %x\012\000"
-.LC106:
-	.ascii	"prog read REFRESH: = %x\012\000"
-.LC107:
-	.ascii	"prog read s error: = %x %x %x\012\000"
-.LC108:
-	.ascii	"prog read d error: = %x %x %x\012\000"
-.LC109:
-	.ascii	"id = %x,%x addr= %x,spare= %x %x %x %x data= %x\012"
-	.ascii	"\000"
-.LC110:
-	.ascii	"...%s enter...\012\000"
-.LC111:
-	.ascii	"superBlkID = %x vpc=%x\012\000"
-.LC112:
-	.ascii	"flashmode = %x pagenum = %x %x\012\000"
-.LC113:
-	.ascii	"id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\012"
-	.ascii	"\000"
-.LC114:
-	.ascii	"blk = %x vpc=%x mode = %x\012\000"
-.LC115:
-	.ascii	"mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x "
-	.ascii	"%x\012\000"
-.LC116:
-	.ascii	"slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x "
-	.ascii	"%x\012\000"
-.LC117:
-	.ascii	"ftl_scan_all_ppa blk %x page %x flag: %x\012\000"
-.LC118:
-	.ascii	"ftl_scan_all_ppa blk %x page %x flag: %x .........."
-	.ascii	"..... is bad block\012\000"
-.LC119:
-	.ascii	"addr= %x, status= %d,spare= %x %x %x %x data=%x %x\012"
-	.ascii	"\000"
-.LC120:
-	.ascii	"%s finished\012\000"
-.LC121:
-	.ascii	"FlashMakeFactorBbt %d\012\000"
-.LC122:
-	.ascii	"bad block:%d %d\012\000"
-.LC123:
-	.ascii	"FMFB:%d %d\012\000"
-.LC124:
-	.ascii	"E:bad block:%d\012\000"
-.LC125:
-	.ascii	"FMFB:Save %d %d\012\000"
-.LC126:
-	.ascii	"FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
-.LC127:
-	.ascii	"FtlBbmTblFlush error:%x\012\000"
-.LC128:
-	.ascii	"FtlBbmTblFlush error = %x error count = %d\012\000"
-.LC129:
-	.ascii	"FtlGcFreeBadSuperBlk 0x%x\012\000"
-.LC130:
-	.ascii	"decrement_vpc_count %x = %d\012\000"
-.LC131:
-	.ascii	"decrement_vpc_count %x = %d in free list\012\000"
-.LC132:
-	.ascii	"FtlVpcTblFlush error = %x error count = %d\012\000"
-.LC133:
-	.ascii	"page map lost: %x %x\012\000"
-.LC134:
-	.ascii	"FtlMapWritePage error = %x\012\000"
-.LC135:
-	.ascii	"FtlMapWritePage error = %x error count = %d\012\000"
-.LC136:
-	.ascii	"FtlVendorPartRead refresh = %x phyAddr = %x\012\000"
-.LC137:
-	.ascii	"no ect\000"
-.LC138:
-	.ascii	"slc mode\000"
-.LC139:
-	.ascii	"BBT:\000"
-.LC140:
-	.ascii	"region_id = %x phyAddr = %x\012\000"
-.LC141:
-	.ascii	"map_ppn:\000"
-.LC142:
-	.ascii	"load_l2p_region refresh = %x phyAddr = %x\012\000"
-.LC143:
-	.ascii	"FtlCheckVpc2 %x = %x  %x\012\000"
-.LC144:
-	.ascii	"free blk vpc error %x = %x  %x\012\000"
-.LC145:
-	.ascii	"error_flag %x\012\000"
-.LC146:
-	.ascii	"Ftlscanalldata = %x\012\000"
-.LC147:
-	.ascii	"scan lpa = %x ppa= %x\012\000"
-.LC148:
-	.ascii	"lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
-	.ascii	"\000"
-.LC149:
-	.ascii	"RSB refresh addr %x\012\000"
-.LC150:
-	.ascii	"spuer block %x vpn is 0\012 \000"
-.LC151:
-	.ascii	"g_recovery_ppa %x ver %x\012 \000"
-.LC152:
-	.ascii	"FtlCheckVpc %x = %x  %x\012\000"
-.LC153:
-	.ascii	"FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000"
-.LC154:
-	.ascii	"FtlGcScanTempBlkError ID %x %x!!!!!!!\012\000"
-.LC155:
-	.ascii	"GC des block %x done\012\000"
-.LC156:
-	.ascii	"too many bad block  = %d %d\012\000"
-.LC157:
-	.ascii	"%d GC datablk  = %x vpc %x %x\012\000"
-.LC158:
-	.ascii	"SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000"
-.LC159:
-	.ascii	"Ftlwrite decrement_vpc_count %x = %d\012\000"
-.LC160:
-	.ascii	"rk_ftl_de_init %x\012\000"
-.LC161:
-	.ascii	"...%s: no bad block mapping table, format device\012"
-	.ascii	"\000"
-.LC162:
-	.ascii	"...%s FtlSysBlkInit error ,format device!\012\000"
-.LC163:
-	.ascii	"FtlInit %x\012\000"
-.LC164:
-	.ascii	"fix power lost blk = %x vpc=%x\012\000"
-.LC165:
-	.ascii	"erase power lost blk = %x vpc=%x\012\000"
-.LC166:
-	.ascii	"FtlWrite: lpa error:%x %x\012\000"
-.LC167:
-	.ascii	"id = %x,%x addr= %x,spare= %x %x %x %x data = %x\012"
-	.ascii	"\000"
-.LC168:
-	.ascii	":\000"
-.LC169:
-	.ascii	"phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
-	.ascii	"\000"
-.LC170:
-	.ascii	"Mblk:\000"
-.LC171:
-	.ascii	"L2P:\000"
-.LC172:
-	.ascii	"L2PC:\000"
-.LC173:
-	.ascii	"write_idblock fix data %x %x\012\000"
-.LC174:
-	.ascii	"idblk:\000"
-.LC175:
-	.ascii	"idb reverse %x %x\012\000"
-.LC176:
-	.ascii	"write_idblock totle_sec %x %x %x %x\012\000"
-.LC177:
-	.ascii	"IDBlockWriteData %x %x\012\000"
-.LC178:
-	.ascii	"IDBlockWriteData %x %x ret= %x\012\000"
-.LC179:
-	.ascii	"IdBlockReadData %x %x\012\000"
-.LC180:
-	.ascii	"IdBlockReadData %x %x ret= %x\012\000"
-.LC181:
-	.ascii	"write and check error:%d idb=%x,offset=%x,r=%x,w=%x"
-	.ascii	"\012\000"
-.LC182:
-	.ascii	"write\000"
-.LC183:
-	.ascii	"read\000"
-.LC184:
-	.ascii	"write_idblock error %d\012\000"
-.LC185:
-	.ascii	"wl_lba %p %x %x %x\012\000"
-.LC186:
-	.ascii	"RKNAND_GET_DRM_KEY\012\000"
-.LC187:
-	.ascii	"rk_copy_from_user error\012\000"
-.LC188:
-	.ascii	"RKNAND_STORE_DRM_KEY\012\000"
-.LC189:
-	.ascii	"RKNAND_DIASBLE_SECURE_BOOT\012\000"
-.LC190:
-	.ascii	"RKNAND_ENASBLE_SECURE_BOOT\012\000"
-.LC191:
-	.ascii	"RKNAND_GET_SN_SECTOR\012\000"
-.LC192:
-	.ascii	"RKNAND_LOADER_UNLOCK\012\000"
-.LC193:
-	.ascii	"RKNAND_LOADER_STATUS\012\000"
-.LC194:
-	.ascii	"RKNAND_LOADER_LOCK\012\000"
-.LC195:
-	.ascii	"LockKey not match %d\012\000"
-.LC196:
-	.ascii	"RKNAND_GET_VENDOR_SECTOR\012\000"
-.LC197:
-	.ascii	"RKNAND_STORE_VENDOR_SECTOR\012\000"
-.LC198:
-	.ascii	"return ret = %lx\012\000"
-.LC199:
-	.ascii	"secureBootEn check error\012\000"
-.LC200:
-	.ascii	"\0013vendor storage %x,%x,%x\012\000"
 	.data
 	.align	2
-.LANCHOR1 = . + 0
+	.set	.LANCHOR1,. + 0
 	.type	random_seed, %object
 	.size	random_seed, 256
 random_seed:
@@ -26018,7 +26129,6 @@
 	.byte	126
 	.byte	124
 	.byte	0
-	.space	3
 	.type	Toshiba15RefValue, %object
 	.size	Toshiba15RefValue, 95
 Toshiba15RefValue:
@@ -26117,7 +26227,6 @@
 	.byte	116
 	.byte	114
 	.byte	0
-	.space	1
 	.type	ToshibaRefValue, %object
 	.size	ToshibaRefValue, 8
 ToshibaRefValue:
@@ -28614,9 +28723,16 @@
 	.word	1
 	.bss
 	.align	2
-.LANCHOR0 = . + 0
-.LANCHOR2 = . + 8184
-.LANCHOR4 = . + 16368
+	.set	.LANCHOR0,. + 0
+	.set	.LANCHOR2,. + 8184
+	.type	gNandChipMap, %object
+	.size	gNandChipMap, 32
+gNandChipMap:
+	.space	32
+	.type	p_blk_mode_table, %object
+	.size	p_blk_mode_table, 4
+p_blk_mode_table:
+	.space	4
 	.type	g_slc2KBNand, %object
 	.size	g_slc2KBNand, 1
 g_slc2KBNand:
@@ -28635,10 +28751,6 @@
 gNandRandomizer:
 	.space	1
 	.space	3
-	.type	gNandChipMap, %object
-	.size	gNandChipMap, 32
-gNandChipMap:
-	.space	32
 	.type	gpNandParaInfo, %object
 	.size	gpNandParaInfo, 4
 gpNandParaInfo:
@@ -28647,6 +28759,15 @@
 	.size	gNandOptPara, 32
 gNandOptPara:
 	.space	32
+	.type	g_retryMode, %object
+	.size	g_retryMode, 1
+g_retryMode:
+	.space	1
+	.type	g_maxRegNum, %object
+	.size	g_maxRegNum, 1
+g_maxRegNum:
+	.space	1
+	.space	2
 	.type	gpNandc, %object
 	.size	gpNandc, 4
 gpNandc:
@@ -28704,19 +28825,10 @@
 	.size	FlashWaitBusyScheduleEn, 4
 FlashWaitBusyScheduleEn:
 	.space	4
-	.type	g_retryMode, %object
-	.size	g_retryMode, 1
-g_retryMode:
-	.space	1
-	.type	g_maxRegNum, %object
-	.size	g_maxRegNum, 1
-g_maxRegNum:
-	.space	1
 	.type	gReadRetryInfo, %object
 	.size	gReadRetryInfo, 852
 gReadRetryInfo:
 	.space	852
-	.space	2
 	.type	read_retry_cur_offset, %object
 	.size	read_retry_cur_offset, 4
 read_retry_cur_offset:
@@ -28838,7 +28950,6 @@
 	.size	c_ftl_nand_planes_per_die, 2
 c_ftl_nand_planes_per_die:
 	.space	2
-	.space	2
 	.type	p_plane_order_table, %object
 	.size	p_plane_order_table, 32
 p_plane_order_table:
@@ -28890,6 +29001,7 @@
 	.type	c_ftl_nand_reserved_blks, %object
 	.size	c_ftl_nand_reserved_blks, 2
 c_ftl_nand_reserved_blks:
+	.space	2
 	.space	2
 	.type	DeviceCapacity, %object
 	.size	DeviceCapacity, 4
@@ -29038,10 +29150,6 @@
 	.size	g_VaildLpn, 4
 g_VaildLpn:
 	.space	4
-	.type	p_blk_mode_table, %object
-	.size	p_blk_mode_table, 4
-p_blk_mode_table:
-	.space	4
 	.type	g_totle_read_page_count, %object
 	.size	g_totle_read_page_count, 4
 g_totle_read_page_count:
@@ -29115,14 +29223,14 @@
 	.size	g_gc_superblock, 48
 g_gc_superblock:
 	.space	48
-	.type	g_all_blk_used_slc_mode, %object
-	.size	g_all_blk_used_slc_mode, 4
-g_all_blk_used_slc_mode:
-	.space	4
 	.type	g_sys_ext_data, %object
 	.size	g_sys_ext_data, 512
 g_sys_ext_data:
 	.space	512
+	.type	g_all_blk_used_slc_mode, %object
+	.size	g_all_blk_used_slc_mode, 4
+g_all_blk_used_slc_mode:
+	.space	4
 	.type	g_gc_free_blk_threshold, %object
 	.size	g_gc_free_blk_threshold, 2
 g_gc_free_blk_threshold:
@@ -29404,6 +29512,14 @@
 	.size	RK29_NANDC_REG_BASE, 4
 RK29_NANDC_REG_BASE:
 	.space	4
+	.type	ftl_dma32_buffer_size, %object
+	.size	ftl_dma32_buffer_size, 4
+ftl_dma32_buffer_size:
+	.space	4
+	.type	ftl_dma32_buffer, %object
+	.size	ftl_dma32_buffer, 4
+ftl_dma32_buffer:
+	.space	4
 	.type	gFlashPageBuffer0, %object
 	.size	gFlashPageBuffer0, 4
 gFlashPageBuffer0:
@@ -29465,11 +29581,11 @@
 	.size	gMultiPageReadEn, 1
 gMultiPageReadEn:
 	.space	1
-	.space	2
 	.type	FbbtBlk, %object
 	.size	FbbtBlk, 16
 FbbtBlk:
 	.space	16
+	.space	2
 	.type	req_sys, %object
 	.size	req_sys, 36
 req_sys:
@@ -29486,11 +29602,6 @@
 	.size	g_ect_tbl_power_up_flush, 2
 g_ect_tbl_power_up_flush:
 	.space	2
-	.space	2
-	.type	check_valid_page_count_table, %object
-	.size	check_valid_page_count_table, 8192
-check_valid_page_count_table:
-	.space	8192
 	.type	g_power_lost_ecc_error_blk, %object
 	.size	g_power_lost_ecc_error_blk, 2
 g_power_lost_ecc_error_blk:
@@ -29498,6 +29609,7 @@
 	.type	g_power_lost_recovery_flag, %object
 	.size	g_power_lost_recovery_flag, 2
 g_power_lost_recovery_flag:
+	.space	2
 	.space	2
 	.type	g_recovery_page_num, %object
 	.size	g_recovery_page_num, 4
@@ -29601,6 +29713,10 @@
 	.size	g_vendor, 4
 g_vendor:
 	.space	4
+	.type	check_valid_page_count_table, %object
+	.size	check_valid_page_count_table, 8192
+check_valid_page_count_table:
+	.space	8192
 	.type	g_gc_refresh_block_temp_tbl, %object
 	.size	g_gc_refresh_block_temp_tbl, 34
 g_gc_refresh_block_temp_tbl:
@@ -29630,3 +29746,419 @@
 	.size	gFlashSdrModeEn, 1
 gFlashSdrModeEn:
 	.space	1
+	.section	.rodata.str1.1,"aMS",%progbits,1
+.LC1:
+	.ascii	"FlashEraseBlocks pageAddr error %x\012\000"
+.LC2:
+	.ascii	"phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
+	.ascii	"\000"
+.LC3:
+	.ascii	"FtlFreeSysBlkQueueOut free count = %d\012\000"
+.LC4:
+	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d, error\012"
+	.ascii	"\000"
+.LC5:
+	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d\012\000"
+.LC6:
+	.ascii	"FLASH INFO:\012\000"
+.LC7:
+	.ascii	"FLASH ID: %x\012\000"
+.LC8:
+	.ascii	"Device Capacity: %d MB\012\000"
+.LC9:
+	.ascii	"FMWAIT: %x %x %x %x\012\000"
+.LC10:
+	.ascii	"FTL INFO:\012\000"
+.LC11:
+	.ascii	"g_MaxLpn = 0x%x\012\000"
+.LC12:
+	.ascii	"g_VaildLpn = 0x%x\012\000"
+.LC13:
+	.ascii	"read_page_count = 0x%x\012\000"
+.LC14:
+	.ascii	"discard_page_count = 0x%x\012\000"
+.LC15:
+	.ascii	"write_page_count = 0x%x\012\000"
+.LC16:
+	.ascii	"cache_write_count = 0x%x\012\000"
+.LC17:
+	.ascii	"l2p_write_count = 0x%x\012\000"
+.LC18:
+	.ascii	"gc_page_count = 0x%x\012\000"
+.LC19:
+	.ascii	"totle_write = %d MB\012\000"
+.LC20:
+	.ascii	"totle_read = %d MB\012\000"
+.LC21:
+	.ascii	"GSV = 0x%x\012\000"
+.LC22:
+	.ascii	"GDV = 0x%x\012\000"
+.LC23:
+	.ascii	"bad blk num = %d %d\012\000"
+.LC24:
+	.ascii	"free_superblocks = 0x%x\012\000"
+.LC25:
+	.ascii	"mlc_EC = 0x%x\012\000"
+.LC26:
+	.ascii	"slc_EC = 0x%x\012\000"
+.LC27:
+	.ascii	"avg_EC = 0x%x\012\000"
+.LC28:
+	.ascii	"sys_EC = 0x%x\012\000"
+.LC29:
+	.ascii	"max_EC = 0x%x\012\000"
+.LC30:
+	.ascii	"min_EC = 0x%x\012\000"
+.LC31:
+	.ascii	"PLT = 0x%x\012\000"
+.LC32:
+	.ascii	"POT = 0x%x\012\000"
+.LC33:
+	.ascii	"MaxSector = 0x%x\012\000"
+.LC34:
+	.ascii	"init_sys_blks_pp = 0x%x\012\000"
+.LC35:
+	.ascii	"sys_blks_pp = 0x%x\012\000"
+.LC36:
+	.ascii	"free sysblock = 0x%x\012\000"
+.LC37:
+	.ascii	"data_blks_pp = 0x%x\012\000"
+.LC38:
+	.ascii	"data_op_blks_pp = 0x%x\012\000"
+.LC39:
+	.ascii	"max_data_blks = 0x%x\012\000"
+.LC40:
+	.ascii	"Sys.id = 0x%x\012\000"
+.LC41:
+	.ascii	"Bbt.id = 0x%x\012\000"
+.LC42:
+	.ascii	"ACT.page = 0x%x\012\000"
+.LC43:
+	.ascii	"ACT.plane = 0x%x\012\000"
+.LC44:
+	.ascii	"ACT.id = 0x%x\012\000"
+.LC45:
+	.ascii	"ACT.mode = 0x%x\012\000"
+.LC46:
+	.ascii	"ACT.a_pages = 0x%x\012\000"
+.LC47:
+	.ascii	"ACT VPC = 0x%x\012\000"
+.LC48:
+	.ascii	"BUF.page = 0x%x\012\000"
+.LC49:
+	.ascii	"BUF.plane = 0x%x\012\000"
+.LC50:
+	.ascii	"BUF.id = 0x%x\012\000"
+.LC51:
+	.ascii	"BUF.mode = 0x%x\012\000"
+.LC52:
+	.ascii	"BUF.a_pages = 0x%x\012\000"
+.LC53:
+	.ascii	"BUF VPC = 0x%x\012\000"
+.LC54:
+	.ascii	"TMP.page = 0x%x\012\000"
+.LC55:
+	.ascii	"TMP.plane = 0x%x\012\000"
+.LC56:
+	.ascii	"TMP.id = 0x%x\012\000"
+.LC57:
+	.ascii	"TMP.mode = 0x%x\012\000"
+.LC58:
+	.ascii	"TMP.a_pages = 0x%x\012\000"
+.LC59:
+	.ascii	"GC.page = 0x%x\012\000"
+.LC60:
+	.ascii	"GC.plane = 0x%x\012\000"
+.LC61:
+	.ascii	"GC.id = 0x%x\012\000"
+.LC62:
+	.ascii	"GC.mode = 0x%x\012\000"
+.LC63:
+	.ascii	"GC.a_pages = 0x%x\012\000"
+.LC64:
+	.ascii	"WR_CHK = 0x%x %x %x %x\012\000"
+.LC65:
+	.ascii	"Read Err = 0x%x\012\000"
+.LC66:
+	.ascii	"Prog Err = 0x%x\012\000"
+.LC67:
+	.ascii	"gc_free_blk_th= 0x%x\012\000"
+.LC68:
+	.ascii	"gc_merge_free_blk_th= 0x%x\012\000"
+.LC69:
+	.ascii	"gc_skip_write_count= 0x%x\012\000"
+.LC70:
+	.ascii	"gc_blk_index= 0x%x\012\000"
+.LC71:
+	.ascii	"free min EC= 0x%x\012\000"
+.LC72:
+	.ascii	"free max EC= 0x%x\012\000"
+.LC73:
+	.ascii	"GC__SB VPC = 0x%x\012\000"
+.LC74:
+	.ascii	"%d. [0x%x]=0x%x 0x%x  0x%x\012\000"
+.LC75:
+	.ascii	"free %d. [0x%x] 0x%x  0x%x\012\000"
+.LC76:
+	.ascii	"FTL version: 5.0.63 20210616\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 error allocating memory. return -1\012\000"
+.LC82:
+	.ascii	"%s %p:0x%x:\000"
+.LC83:
+	.ascii	"%x \000"
+.LC84:
+	.ascii	"\000"
+.LC85:
+	.ascii	"otp error! %d\000"
+.LC86:
+	.ascii	"rr\000"
+.LC87:
+	.ascii	"%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\012"
+	.ascii	"\000"
+.LC88:
+	.ascii	"nandc:\000"
+.LC89:
+	.ascii	"%d flReg.d32=%x %x\012\000"
+.LC90:
+	.ascii	"sdr read ok %x ecc=%d\012\000"
+.LC91:
+	.ascii	"sync para %d\012\000"
+.LC92:
+	.ascii	"TOG mode Read error %x %x\012\000"
+.LC93:
+	.ascii	"read retry status %x %x %x\012\000"
+.LC94:
+	.ascii	"micron RR %d row=%x,count %d,status=%d\012\000"
+.LC95:
+	.ascii	"samsung RR %d row=%x,count %d,status=%d\012\000"
+.LC96:
+	.ascii	"ECC:%d\012\000"
+.LC97:
+	.ascii	"No.%d FLASH ID:%x %x %x %x %x %x\012\000"
+.LC98:
+	.ascii	"FlashLoadPhyInfo fail %x!!\012\000"
+.LC99:
+	.ascii	"Read pageadd=%x  ecc=%x err=%x\012\000"
+.LC100:
+	.ascii	"data:\000"
+.LC101:
+	.ascii	"spare:\000"
+.LC102:
+	.ascii	"ReadRetry pageadd=%x ecc=%x err=%x\012\000"
+.LC103:
+	.ascii	"FLFB:%d %d\012\000"
+.LC104:
+	.ascii	"prog error: = %x\012\000"
+.LC105:
+	.ascii	"prog read error: = %x\012\000"
+.LC106:
+	.ascii	"prog read REFRESH: = %x\012\000"
+.LC107:
+	.ascii	"prog read s error: = %x %x %x\012\000"
+.LC108:
+	.ascii	"prog read d error: = %x %x %x\012\000"
+.LC109:
+	.ascii	"id = %x,%x addr= %x,spare= %x %x %x %x data= %x\012"
+	.ascii	"\000"
+.LC110:
+	.ascii	"...%s enter...\012\000"
+.LC111:
+	.ascii	"superBlkID = %x vpc=%x\012\000"
+.LC112:
+	.ascii	"flashmode = %x pagenum = %x %x\012\000"
+.LC113:
+	.ascii	"id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\012"
+	.ascii	"\000"
+.LC114:
+	.ascii	"blk = %x vpc=%x mode = %x\012\000"
+.LC115:
+	.ascii	"mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x "
+	.ascii	"%x\012\000"
+.LC116:
+	.ascii	"slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x "
+	.ascii	"%x\012\000"
+.LC117:
+	.ascii	"ftl_scan_all_ppa blk %x page %x flag: %x\012\000"
+.LC118:
+	.ascii	"ftl_scan_all_ppa blk %x page %x flag: %x .........."
+	.ascii	"..... is bad block\012\000"
+.LC119:
+	.ascii	"addr= %x, status= %d,spare= %x %x %x %x data=%x %x\012"
+	.ascii	"\000"
+.LC120:
+	.ascii	"%s finished\012\000"
+.LC121:
+	.ascii	"FlashMakeFactorBbt %d\012\000"
+.LC122:
+	.ascii	"bad block:%d %d\012\000"
+.LC123:
+	.ascii	"FMFB:%d %d\012\000"
+.LC124:
+	.ascii	"E:bad block:%d\012\000"
+.LC125:
+	.ascii	"FMFB:Save %d %d\012\000"
+.LC126:
+	.ascii	"FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
+.LC127:
+	.ascii	"FtlBbmTblFlush error:%x\012\000"
+.LC128:
+	.ascii	"FtlBbmTblFlush error = %x error count = %d\012\000"
+.LC129:
+	.ascii	"FtlGcFreeBadSuperBlk 0x%x\012\000"
+.LC130:
+	.ascii	"decrement_vpc_count %x = %d\012\000"
+.LC131:
+	.ascii	"decrement_vpc_count %x = %d in free list\012\000"
+.LC132:
+	.ascii	"FtlVpcTblFlush error = %x error count = %d\012\000"
+.LC133:
+	.ascii	"page map lost: %x %x\012\000"
+.LC134:
+	.ascii	"FtlMapWritePage error = %x\012\000"
+.LC135:
+	.ascii	"FtlMapWritePage error = %x error count = %d\012\000"
+.LC136:
+	.ascii	"FtlVendorPartRead refresh = %x phyAddr = %x\012\000"
+.LC137:
+	.ascii	"no ect\000"
+.LC138:
+	.ascii	"slc mode\000"
+.LC139:
+	.ascii	"BBT:\000"
+.LC140:
+	.ascii	"region_id = %x phyAddr = %x\012\000"
+.LC141:
+	.ascii	"map_ppn:\000"
+.LC142:
+	.ascii	"load_l2p_region refresh = %x phyAddr = %x\012\000"
+.LC143:
+	.ascii	"FtlCheckVpc2 %x = %x  %x\012\000"
+.LC144:
+	.ascii	"free blk vpc error %x = %x  %x\012\000"
+.LC145:
+	.ascii	"error_flag %x\012\000"
+.LC146:
+	.ascii	"Ftlscanalldata = %x\012\000"
+.LC147:
+	.ascii	"scan lpa = %x ppa= %x\012\000"
+.LC148:
+	.ascii	"lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
+	.ascii	"\000"
+.LC149:
+	.ascii	"RSB refresh addr %x\012\000"
+.LC150:
+	.ascii	"spuer block %x vpn is 0\012 \000"
+.LC151:
+	.ascii	"g_recovery_ppa %x ver %x\012 \000"
+.LC152:
+	.ascii	"FtlCheckVpc %x = %x  %x\012\000"
+.LC153:
+	.ascii	"FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000"
+.LC154:
+	.ascii	"FtlGcScanTempBlkError ID %x %x!!!!!!!\012\000"
+.LC155:
+	.ascii	"GC des block %x done\012\000"
+.LC156:
+	.ascii	"too many bad block  = %d %d\012\000"
+.LC157:
+	.ascii	"%d GC datablk  = %x vpc %x %x\012\000"
+.LC158:
+	.ascii	"SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000"
+.LC159:
+	.ascii	"Ftlwrite decrement_vpc_count %x = %d\012\000"
+.LC160:
+	.ascii	"rk_ftl_de_init %x\012\000"
+.LC161:
+	.ascii	"...%s: no bad block mapping table, format device\012"
+	.ascii	"\000"
+.LC162:
+	.ascii	"...%s FtlSysBlkInit error ,format device!\012\000"
+.LC163:
+	.ascii	"FtlInit %x\012\000"
+.LC164:
+	.ascii	"fix power lost blk = %x vpc=%x\012\000"
+.LC165:
+	.ascii	"erase power lost blk = %x vpc=%x\012\000"
+.LC166:
+	.ascii	"FtlWrite: lpa error:%x %x\012\000"
+.LC167:
+	.ascii	"id = %x,%x addr= %x,spare= %x %x %x %x data = %x\012"
+	.ascii	"\000"
+.LC168:
+	.ascii	":\000"
+.LC169:
+	.ascii	"phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
+	.ascii	"\000"
+.LC170:
+	.ascii	"Mblk:\000"
+.LC171:
+	.ascii	"L2P:\000"
+.LC172:
+	.ascii	"L2PC:\000"
+.LC173:
+	.ascii	"write_idblock fix data %x %x\012\000"
+.LC174:
+	.ascii	"idblk:\000"
+.LC175:
+	.ascii	"idb reverse %x %x\012\000"
+.LC176:
+	.ascii	"write_idblock totle_sec %x %x %x %x\012\000"
+.LC177:
+	.ascii	"IDBlockWriteData %x %x\012\000"
+.LC178:
+	.ascii	"IDBlockWriteData %x %x ret= %x\012\000"
+.LC179:
+	.ascii	"IdBlockReadData %x %x\012\000"
+.LC180:
+	.ascii	"IdBlockReadData %x %x ret= %x\012\000"
+.LC181:
+	.ascii	"write and check error:%d idb=%x,offset=%x,r=%x,w=%x"
+	.ascii	"\012\000"
+.LC182:
+	.ascii	"write\000"
+.LC183:
+	.ascii	"read\000"
+.LC184:
+	.ascii	"write_idblock error %d\012\000"
+.LC185:
+	.ascii	"wl_lba %p %x %x %x\012\000"
+.LC186:
+	.ascii	"RKNAND_GET_DRM_KEY\012\000"
+.LC187:
+	.ascii	"rk_copy_from_user error\012\000"
+.LC188:
+	.ascii	"RKNAND_STORE_DRM_KEY\012\000"
+.LC189:
+	.ascii	"RKNAND_DIASBLE_SECURE_BOOT\012\000"
+.LC190:
+	.ascii	"RKNAND_ENASBLE_SECURE_BOOT\012\000"
+.LC191:
+	.ascii	"RKNAND_GET_SN_SECTOR\012\000"
+.LC192:
+	.ascii	"RKNAND_LOADER_UNLOCK\012\000"
+.LC193:
+	.ascii	"RKNAND_LOADER_STATUS\012\000"
+.LC194:
+	.ascii	"RKNAND_LOADER_LOCK\012\000"
+.LC195:
+	.ascii	"LockKey not match %d\012\000"
+.LC196:
+	.ascii	"RKNAND_GET_VENDOR_SECTOR\012\000"
+.LC197:
+	.ascii	"RKNAND_STORE_VENDOR_SECTOR\012\000"
+.LC198:
+	.ascii	"return ret = %lx\012\000"
+.LC199:
+	.ascii	"secureBootEn check error\012\000"
+.LC200:
+	.ascii	"\0013vendor storage %x,%x,%x\012\000"

--
Gitblit v1.6.2