xref: /OK3568_Linux_fs/kernel/drivers/rkflash/rk_sftl_arm_v7.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1/* SPDX-License-Identifier: GPL-2.0 */
2
3/* Copyright (c) 2018-2023 Rockchip Electronics Co. Ltd.
4 * date: 2023-04-11
5 */
6	.arch armv7-a
7	.eabi_attribute 20, 1
8	.eabi_attribute 21, 1
9	.eabi_attribute 23, 3
10	.eabi_attribute 24, 1
11	.eabi_attribute 25, 1
12	.eabi_attribute 26, 2
13	.eabi_attribute 30, 4
14	.eabi_attribute 34, 1
15	.eabi_attribute 18, 2
16	.file	"rk_sftl.c"
17	.text
18	.syntax divided
19	.syntax unified
20	.global	__aeabi_uidiv
21	.arm
22	.syntax unified
23	.align	2
24	.syntax unified
25	.arm
26	.fpu softvfp
27	.type	l2p_addr_tran, %function
28l2p_addr_tran:
29	@ args = 0, pretend = 0, frame = 0
30	@ frame_needed = 1, uses_anonymous_args = 0
31	mov	ip, sp
32	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
33	sub	fp, ip, #4
34	push	{lr}
35	bl	__gnu_mcount_nc
36	ldr	r3, .L3
37	mov	r7, r1
38	mov	r8, r2
39	ldrh	r9, [r3, #8]
40	ldrh	r6, [r3, #10]
41	ldrh	r3, [r3, #14]
42	cmp	r3, #4
43	lsleq	r4, r6, #1
44	lsreq	r9, r9, #1
45	mov	r1, r9
46	uxtheq	r6, r4
47	ldr	r4, [r0, #4]
48	lsr	r5, r4, #10
49	ubfx	r0, r4, #10, #16
50	bl	__aeabi_uidiv
51	uxth	r0, r0
52	uxth	r5, r5
53	ubfx	r4, r4, #0, #10
54	mls	r5, r0, r9, r5
55	mla	r4, r6, r5, r4
56	str	r4, [r7]
57	str	r0, [r8]
58	mov	r0, #0
59	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
60.L4:
61	.align	2
62.L3:
63	.word	.LANCHOR0
64	.size	l2p_addr_tran, .-l2p_addr_tran
65	.align	2
66	.syntax unified
67	.arm
68	.fpu softvfp
69	.type	_copy_from_user, %function
70_copy_from_user:
71	@ args = 0, pretend = 0, frame = 0
72	@ frame_needed = 1, uses_anonymous_args = 0
73	mov	ip, sp
74	push	{r4, r5, r6, r7, fp, ip, lr, pc}
75	sub	fp, ip, #4
76	mov	r3, sp
77	bic	ip, r3, #8128
78	mov	r6, r0
79	bic	ip, ip, #63
80	mov	r4, r2
81	ldr	r3, [ip, #8]
82	.syntax divided
83@ 157 "./include/linux/uaccess.h" 1
84	.syntax unified
85adds r5, r1, r2; sbcscc r5, r5, r3; movcc r3, #0
86@ 0 "" 2
87	.arm
88	.syntax unified
89	cmp	r3, #0
90	bne	.L8
91	.syntax divided
92@ 89 "./arch/arm/include/asm/domain.h" 1
93	mrc	p15, 0, r7, c3, c0	@ get domain
94@ 0 "" 2
95	.arm
96	.syntax unified
97	bic	r3, r7, #12
98	orr	r3, r3, #4
99	.syntax divided
100@ 99 "./arch/arm/include/asm/domain.h" 1
101	mcr	p15, 0, r3, c3, c0	@ set domain
102@ 0 "" 2
103@ 102 "./arch/arm/include/asm/domain.h" 1
104	isb
105@ 0 "" 2
106	.arm
107	.syntax unified
108	bl	arm_copy_from_user
109	mov	r5, r0
110	.syntax divided
111@ 99 "./arch/arm/include/asm/domain.h" 1
112	mcr	p15, 0, r7, c3, c0	@ set domain
113@ 0 "" 2
114@ 102 "./arch/arm/include/asm/domain.h" 1
115	isb
116@ 0 "" 2
117	.arm
118	.syntax unified
119	cmp	r0, #0
120	beq	.L5
121.L6:
122	sub	r4, r4, r5
123	mov	r2, r5
124	add	r0, r6, r4
125	mov	r1, #0
126	bl	memset
127.L5:
128	mov	r0, r5
129	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
130.L8:
131	mov	r5, r2
132	b	.L6
133	.size	_copy_from_user, .-_copy_from_user
134	.section	.rodata.str1.1,"aMS",%progbits,1
135.LC0:
136	.ascii	"SFTL version: 5.0.59 20221121\000"
137.LC1:
138	.ascii	"\012%s\012\000"
139.LC2:
140	.ascii	"act blk: %x %x %x %x %x %x\012\000"
141.LC3:
142	.ascii	"buf blk: %x %x %x %x %x %x\012\000"
143.LC4:
144	.ascii	"tmp blk: %x %x %x %x %x %x\012\000"
145.LC5:
146	.ascii	"gc blk: %x %x %x %x %x %x\012\000"
147.LC6:
148	.ascii	"free blk: %x %x %x\012\000"
149	.text
150	.align	2
151	.global	ftl_print_sblk_info
152	.syntax unified
153	.arm
154	.fpu softvfp
155	.type	ftl_print_sblk_info, %function
156ftl_print_sblk_info:
157	@ args = 0, pretend = 0, frame = 0
158	@ frame_needed = 1, uses_anonymous_args = 0
159	mov	ip, sp
160	push	{r4, fp, ip, lr, pc}
161	sub	fp, ip, #4
162	sub	sp, sp, #20
163	push	{lr}
164	bl	__gnu_mcount_nc
165	ldr	r4, .L13
166	ldr	r1, .L13+4
167	ldr	r0, .L13+8
168	bl	sftl_printk
169	ldr	r0, .L13+12
170	ldrh	r1, [r4, #24]
171	ldr	r2, [r4, #72]
172	lsl	r3, r1, #1
173	ldrh	r3, [r2, r3]
174	str	r3, [sp, #8]
175	ldrh	r3, [r4, #28]
176	str	r3, [sp, #4]
177	ldrb	r3, [r4, #32]	@ zero_extendqisi2
178	ldrh	r2, [r4, #26]
179	str	r3, [sp]
180	ldrb	r3, [r4, #30]	@ zero_extendqisi2
181	bl	sftl_printk
182	ldrh	r1, [r4, #76]
183	ldr	r2, [r4, #72]
184	ldr	r0, .L13+16
185	lsl	r3, r1, #1
186	ldrh	r3, [r2, r3]
187	str	r3, [sp, #8]
188	ldrh	r3, [r4, #80]
189	str	r3, [sp, #4]
190	ldrb	r3, [r4, #84]	@ zero_extendqisi2
191	ldrh	r2, [r4, #78]
192	str	r3, [sp]
193	ldrb	r3, [r4, #82]	@ zero_extendqisi2
194	bl	sftl_printk
195	ldrh	r1, [r4, #124]
196	ldr	r2, [r4, #72]
197	ldr	r0, .L13+20
198	lsl	r3, r1, #1
199	ldrh	r3, [r2, r3]
200	str	r3, [sp, #8]
201	ldrh	r3, [r4, #128]
202	str	r3, [sp, #4]
203	ldrb	r3, [r4, #132]	@ zero_extendqisi2
204	ldrh	r2, [r4, #126]
205	str	r3, [sp]
206	ldrb	r3, [r4, #130]	@ zero_extendqisi2
207	bl	sftl_printk
208	ldrh	r1, [r4, #172]
209	ldr	r2, [r4, #72]
210	ldr	r0, .L13+24
211	lsl	r3, r1, #1
212	ldrh	r3, [r2, r3]
213	str	r3, [sp, #8]
214	ldrh	r3, [r4, #176]
215	str	r3, [sp, #4]
216	ldrb	r3, [r4, #180]	@ zero_extendqisi2
217	ldrh	r2, [r4, #174]
218	str	r3, [sp]
219	ldrb	r3, [r4, #178]	@ zero_extendqisi2
220	bl	sftl_printk
221	ldrh	r3, [r4, #220]
222	ldrh	r2, [r4, #222]
223	ldrh	r1, [r4, #224]
224	ldr	r0, .L13+28
225	bl	sftl_printk
226	sub	sp, fp, #16
227	ldmfd	sp, {r4, fp, sp, pc}
228.L14:
229	.align	2
230.L13:
231	.word	.LANCHOR0
232	.word	.LC0
233	.word	.LC1
234	.word	.LC2
235	.word	.LC3
236	.word	.LC4
237	.word	.LC5
238	.word	.LC6
239	.size	ftl_print_sblk_info, .-ftl_print_sblk_info
240	.align	2
241	.global	Ftl_log2
242	.syntax unified
243	.arm
244	.fpu softvfp
245	.type	Ftl_log2, %function
246Ftl_log2:
247	@ args = 0, pretend = 0, frame = 0
248	@ frame_needed = 1, uses_anonymous_args = 0
249	mov	ip, sp
250	push	{fp, ip, lr, pc}
251	sub	fp, ip, #4
252	push	{lr}
253	bl	__gnu_mcount_nc
254	mov	r1, #0
255	mov	r2, #1
256.L16:
257	uxth	r3, r1
258	cmp	r2, r0
259	add	r1, r1, #1
260	bls	.L17
261	sub	r0, r3, #1
262	uxth	r0, r0
263	ldmfd	sp, {fp, sp, pc}
264.L17:
265	lsl	r2, r2, #1
266	b	.L16
267	.size	Ftl_log2, .-Ftl_log2
268	.align	2
269	.global	FtlPrintInfo
270	.syntax unified
271	.arm
272	.fpu softvfp
273	.type	FtlPrintInfo, %function
274FtlPrintInfo:
275	@ args = 0, pretend = 0, frame = 0
276	@ frame_needed = 1, uses_anonymous_args = 0
277	mov	ip, sp
278	push	{fp, ip, lr, pc}
279	sub	fp, ip, #4
280	push	{lr}
281	bl	__gnu_mcount_nc
282	ldmfd	sp, {fp, sp, pc}
283	.size	FtlPrintInfo, .-FtlPrintInfo
284	.align	2
285	.global	FtlSysBlkNumInit
286	.syntax unified
287	.arm
288	.fpu softvfp
289	.type	FtlSysBlkNumInit, %function
290FtlSysBlkNumInit:
291	@ args = 0, pretend = 0, frame = 0
292	@ frame_needed = 1, uses_anonymous_args = 0
293	mov	ip, sp
294	push	{fp, ip, lr, pc}
295	sub	fp, ip, #4
296	push	{lr}
297	bl	__gnu_mcount_nc
298	ldr	r3, .L20
299	cmp	r0, #24
300	movcc	r0, #24
301	ldrh	r2, [r3, #232]
302	ldrh	r1, [r3, #242]
303	str	r0, [r3, #228]
304	mul	r2, r0, r2
305	sub	r0, r1, r0
306	ldr	r1, [r3, #248]
307	str	r2, [r3, #236]
308	strh	r0, [r3, #240]	@ movhi
309	sub	r2, r1, r2
310	mov	r0, #0
311	str	r2, [r3, #244]
312	ldmfd	sp, {fp, sp, pc}
313.L21:
314	.align	2
315.L20:
316	.word	.LANCHOR0
317	.size	FtlSysBlkNumInit, .-FtlSysBlkNumInit
318	.global	__aeabi_idiv
319	.align	2
320	.global	FtlConstantsInit
321	.syntax unified
322	.arm
323	.fpu softvfp
324	.type	FtlConstantsInit, %function
325FtlConstantsInit:
326	@ args = 0, pretend = 0, frame = 8
327	@ frame_needed = 1, uses_anonymous_args = 0
328	mov	ip, sp
329	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
330	sub	fp, ip, #4
331	sub	sp, sp, #12
332	push	{lr}
333	bl	__gnu_mcount_nc
334	ldr	r4, .L36
335	mov	r9, r0
336	ldrh	r2, [r0]
337	movw	lr, #258
338	add	r1, r4, #256
339	ldrh	r6, [r0, #2]
340	ldrh	ip, [r0, #4]
341	ldrh	r3, [r0, #6]
342	ldrh	r0, [r0, #14]
343	strh	r2, [r4, #252]	@ movhi
344	cmp	r0, #4
345	strh	r6, [r4, #254]	@ movhi
346	strh	ip, [r1]	@ movhi
347	strh	r3, [r4, #242]	@ movhi
348	strh	r0, [r4, lr]	@ movhi
349	bne	.L23
350	lsr	r3, r3, #1
351	strh	r3, [r4, #242]	@ movhi
352	mov	r3, #8
353	strh	r3, [r4, lr]	@ movhi
354.L24:
355	ldr	r0, .L36+4
356	mov	r3, #0
357.L25:
358	strb	r3, [r0], #1
359	add	r3, r3, #1
360	cmp	r3, #32
361	bne	.L25
362	movw	r3, #294
363	ldr	r5, .L36+8
364	ldrh	r7, [r4, #242]
365	mov	r0, #0
366	strh	r0, [r4, r3]	@ movhi
367	mov	r3, r5
368	ldrh	r0, [r1]
369	cmp	r2, #1
370	mov	r8, r5
371	add	r5, r5, #28
372	movne	r2, #5
373	strh	r2, [r3], #4	@ movhi
374	mov	r2, #640
375	smulbb	r6, r6, r0
376	strh	r2, [r3]	@ movhi
377	smulbb	r0, r0, r7
378	movw	r3, #298
379	uxth	r6, r6
380	strh	r6, [r4, #232]	@ movhi
381	uxth	r0, r0
382	strh	r0, [r4, r3]	@ movhi
383	bl	Ftl_log2
384	ldrh	r2, [r9, #12]
385	movw	r3, #302
386	strh	r0, [r5, #-20]	@ movhi
387	strh	r2, [r5, #-16]	@ movhi
388	strh	r2, [r4, r3]	@ movhi
389	movw	r3, #306
390	smulbb	r1, r6, r2
391	str	r2, [fp, #-52]
392	strh	r1, [r4, r3]	@ movhi
393	movw	r3, #258
394	ldrh	r1, [r4, r3]
395	str	r1, [fp, #-48]
396	mov	r0, r1
397	bl	Ftl_log2
398	ldr	r1, [fp, #-48]
399	ldr	r2, [fp, #-52]
400	mov	r10, r0
401	strh	r0, [r8, #16]!	@ movhi
402	movw	r0, #310
403	lsl	r3, r1, #9
404	uxth	r3, r3
405	strh	r3, [r4, r0]	@ movhi
406	ldrh	r0, [r9, #20]
407	mul	r1, r2, r1
408	lsr	r3, r3, #8
409	strh	r3, [r5, #-8]	@ movhi
410	movw	r3, #314
411	strh	r0, [r4, r3]	@ movhi
412	mul	r3, r7, r6
413	str	r3, [r4, #248]
414	mov	r0, #5120
415	lsl	r7, r7, #6
416	mul	r3, r1, r3
417	asr	r3, r3, #11
418	str	r3, [r4, #316]
419	bl	__aeabi_idiv
420	cmp	r0, #4
421	movw	r2, #322
422	strhgt	r0, [r5]	@ movhi
423	movle	r3, #4
424	strhle	r3, [r5]	@ movhi
425	mov	r3, #640
426	mov	r1, r6
427	asr	r3, r3, r10
428	add	r10, r10, #9
429	add	r3, r3, #2
430	strh	r3, [r4, r2]	@ movhi
431	ldr	r3, .L36+12
432	asr	r7, r7, r10
433	ldrh	r0, [r5]
434	strh	r7, [r3]	@ movhi
435	uxth	r7, r7
436	mul	r3, r7, r6
437	str	r3, [r4, #328]
438	bl	__aeabi_uidiv
439	cmp	r6, #1
440	uxtah	r7, r7, r0
441	addne	r7, r7, #8
442	addeq	r7, r7, #12
443	str	r7, [r4, #228]
444	ldrh	r0, [r4, #228]
445	bl	FtlSysBlkNumInit
446	ldr	r3, [r4, #228]
447	str	r3, [r4, #332]
448	movw	r3, #302
449	ldr	r2, [r4, #244]
450	mov	r0, #0
451	ldrh	r3, [r4, r3]
452	str	r0, [r4, #340]
453	mul	r3, r2, r3
454	ldrh	r2, [r8]
455	add	r2, r2, #9
456	lsl	r3, r3, #2
457	lsr	r3, r3, r2
458	ldr	r2, .L36+16
459	add	r3, r3, #2
460	strh	r3, [r2]	@ movhi
461	movw	r3, #338
462	mov	r2, #32
463	strh	r2, [r4, r3]	@ movhi
464	ldrh	r3, [r5]
465	add	r3, r3, #3
466	strh	r3, [r5]	@ movhi
467	ldr	r3, [r4, #328]
468	add	r3, r3, #3
469	str	r3, [r4, #328]
470	sub	sp, fp, #40
471	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
472.L23:
473	cmp	r0, #8
474	cmpeq	ip, #1
475	lsreq	r3, r3, #1
476	strheq	r3, [r4, #242]	@ movhi
477	moveq	r3, #2
478	strheq	r3, [r1]	@ movhi
479	b	.L24
480.L37:
481	.align	2
482.L36:
483	.word	.LANCHOR0
484	.word	.LANCHOR0+260
485	.word	.LANCHOR0+292
486	.word	.LANCHOR0+324
487	.word	.LANCHOR0+336
488	.size	FtlConstantsInit, .-FtlConstantsInit
489	.align	2
490	.global	IsBlkInVendorPart
491	.syntax unified
492	.arm
493	.fpu softvfp
494	.type	IsBlkInVendorPart, %function
495IsBlkInVendorPart:
496	@ args = 0, pretend = 0, frame = 0
497	@ frame_needed = 1, uses_anonymous_args = 0
498	mov	ip, sp
499	push	{fp, ip, lr, pc}
500	sub	fp, ip, #4
501	push	{lr}
502	bl	__gnu_mcount_nc
503	ldr	r3, .L44
504	mov	r1, r0
505	add	r2, r3, #344
506	ldrh	r0, [r2]
507	cmp	r0, #0
508	ldmfdeq	sp, {fp, sp, pc}
509	ldr	r2, [r3, #348]
510	add	r3, r3, #320
511	ldrh	r3, [r3]
512	add	r3, r2, r3, lsl #1
513.L40:
514	cmp	r2, r3
515	bne	.L41
516	mov	r0, #0
517	ldmfd	sp, {fp, sp, pc}
518.L41:
519	ldrh	r0, [r2], #2
520	cmp	r1, r0
521	bne	.L40
522	mov	r0, #1
523	ldmfd	sp, {fp, sp, pc}
524.L45:
525	.align	2
526.L44:
527	.word	.LANCHOR0
528	.size	IsBlkInVendorPart, .-IsBlkInVendorPart
529	.align	2
530	.global	FtlCacheWriteBack
531	.syntax unified
532	.arm
533	.fpu softvfp
534	.type	FtlCacheWriteBack, %function
535FtlCacheWriteBack:
536	@ args = 0, pretend = 0, frame = 0
537	@ frame_needed = 1, uses_anonymous_args = 0
538	mov	ip, sp
539	push	{fp, ip, lr, pc}
540	sub	fp, ip, #4
541	push	{lr}
542	bl	__gnu_mcount_nc
543	mov	r0, #0
544	ldmfd	sp, {fp, sp, pc}
545	.size	FtlCacheWriteBack, .-FtlCacheWriteBack
546	.align	2
547	.global	sftl_get_density
548	.syntax unified
549	.arm
550	.fpu softvfp
551	.type	sftl_get_density, %function
552sftl_get_density:
553	@ args = 0, pretend = 0, frame = 0
554	@ frame_needed = 1, uses_anonymous_args = 0
555	mov	ip, sp
556	push	{fp, ip, lr, pc}
557	sub	fp, ip, #4
558	push	{lr}
559	bl	__gnu_mcount_nc
560	ldr	r3, .L48
561	ldr	r0, [r3, #340]
562	ldmfd	sp, {fp, sp, pc}
563.L49:
564	.align	2
565.L48:
566	.word	.LANCHOR0
567	.size	sftl_get_density, .-sftl_get_density
568	.global	__aeabi_uidivmod
569	.section	.rodata.str1.1
570.LC7:
571	.ascii	"phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
572	.ascii	"\000"
573	.text
574	.align	2
575	.global	FtlBbmMapBadBlock
576	.syntax unified
577	.arm
578	.fpu softvfp
579	.type	FtlBbmMapBadBlock, %function
580FtlBbmMapBadBlock:
581	@ args = 0, pretend = 0, frame = 0
582	@ frame_needed = 1, uses_anonymous_args = 0
583	mov	ip, sp
584	push	{r4, r5, r6, r7, fp, ip, lr, pc}
585	sub	fp, ip, #4
586	sub	sp, sp, #8
587	push	{lr}
588	bl	__gnu_mcount_nc
589	ldr	r4, .L51
590	movw	r3, #298
591	mov	r5, r0
592	ldrh	r7, [r4, r3]
593	mov	r1, r7
594	bl	__aeabi_uidiv
595	uxth	r6, r0
596	mov	r1, r7
597	mov	r0, r5
598	bl	__aeabi_uidivmod
599	add	r3, r4, r6, lsl #2
600	ubfx	r0, r1, #5, #11
601	and	ip, r1, #31
602	add	r4, r4, #352
603	mov	lr, #1
604	ldr	r3, [r3, #380]
605	ldr	r2, [r3, r0, lsl #2]
606	orr	r2, r2, lr, lsl ip
607	str	r2, [r3, r0, lsl #2]
608	uxth	r3, r1
609	ldr	r0, .L51+4
610	mov	r1, r5
611	str	r2, [sp]
612	mov	r2, r6
613	bl	sftl_printk
614	ldrh	r3, [r4, #6]
615	mov	r0, #0
616	add	r3, r3, #1
617	strh	r3, [r4, #6]	@ movhi
618	sub	sp, fp, #28
619	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
620.L52:
621	.align	2
622.L51:
623	.word	.LANCHOR0
624	.word	.LC7
625	.size	FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
626	.align	2
627	.global	FtlBbmIsBadBlock
628	.syntax unified
629	.arm
630	.fpu softvfp
631	.type	FtlBbmIsBadBlock, %function
632FtlBbmIsBadBlock:
633	@ args = 0, pretend = 0, frame = 0
634	@ frame_needed = 1, uses_anonymous_args = 0
635	mov	ip, sp
636	push	{r4, r5, r6, r7, fp, ip, lr, pc}
637	sub	fp, ip, #4
638	push	{lr}
639	bl	__gnu_mcount_nc
640	ldr	r5, .L54
641	movw	r3, #298
642	mov	r6, r0
643	ldrh	r7, [r5, r3]
644	mov	r1, r7
645	bl	__aeabi_uidivmod
646	mov	r0, r6
647	uxth	r4, r1
648	mov	r1, r7
649	bl	__aeabi_uidiv
650	uxth	r0, r0
651	lsr	r2, r4, #5
652	and	r4, r4, #31
653	add	r5, r5, r0, lsl #2
654	ldr	r3, [r5, #380]
655	ldr	r0, [r3, r2, lsl #2]
656	lsr	r0, r0, r4
657	and	r0, r0, #1
658	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
659.L55:
660	.align	2
661.L54:
662	.word	.LANCHOR0
663	.size	FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
664	.align	2
665	.global	FtlBbtInfoPrint
666	.syntax unified
667	.arm
668	.fpu softvfp
669	.type	FtlBbtInfoPrint, %function
670FtlBbtInfoPrint:
671	@ args = 0, pretend = 0, frame = 0
672	@ frame_needed = 1, uses_anonymous_args = 0
673	mov	ip, sp
674	push	{fp, ip, lr, pc}
675	sub	fp, ip, #4
676	push	{lr}
677	bl	__gnu_mcount_nc
678	ldmfd	sp, {fp, sp, pc}
679	.size	FtlBbtInfoPrint, .-FtlBbtInfoPrint
680	.align	2
681	.global	FtlBbtCalcTotleCnt
682	.syntax unified
683	.arm
684	.fpu softvfp
685	.type	FtlBbtCalcTotleCnt, %function
686FtlBbtCalcTotleCnt:
687	@ args = 0, pretend = 0, frame = 0
688	@ frame_needed = 1, uses_anonymous_args = 0
689	mov	ip, sp
690	push	{r4, r5, r6, r7, fp, ip, lr, pc}
691	sub	fp, ip, #4
692	push	{lr}
693	bl	__gnu_mcount_nc
694	ldr	r3, .L64
695	movw	r2, #298
696	mov	r5, #0
697	mov	r4, r5
698	ldrh	r6, [r3, r2]
699	ldrh	r3, [r3, #254]
700	mul	r6, r3, r6
701.L58:
702	uxth	r0, r5
703	cmp	r0, r6
704	blt	.L60
705	mov	r0, r4
706	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
707.L60:
708	bl	FtlBbmIsBadBlock
709	cmp	r0, #0
710	addne	r4, r4, #1
711	add	r5, r5, #1
712	uxthne	r4, r4
713	b	.L58
714.L65:
715	.align	2
716.L64:
717	.word	.LANCHOR0
718	.size	FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
719	.align	2
720	.global	V2P_block
721	.syntax unified
722	.arm
723	.fpu softvfp
724	.type	V2P_block, %function
725V2P_block:
726	@ args = 0, pretend = 0, frame = 0
727	@ frame_needed = 1, uses_anonymous_args = 0
728	mov	ip, sp
729	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
730	sub	fp, ip, #4
731	push	{lr}
732	bl	__gnu_mcount_nc
733	ldr	r8, .L67
734	mov	r4, r1
735	mov	r6, r0
736	add	r3, r8, #256
737	ldrh	r7, [r3]
738	mov	r1, r7
739	bl	__aeabi_uidiv
740	movw	r3, #298
741	smulbb	r4, r7, r4
742	mov	r1, r7
743	ldrh	r5, [r8, r3]
744	smulbb	r5, r5, r0
745	mov	r0, r6
746	bl	__aeabi_uidivmod
747	add	r4, r4, r1
748	add	r4, r5, r4
749	uxth	r0, r4
750	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
751.L68:
752	.align	2
753.L67:
754	.word	.LANCHOR0
755	.size	V2P_block, .-V2P_block
756	.align	2
757	.global	P2V_plane
758	.syntax unified
759	.arm
760	.fpu softvfp
761	.type	P2V_plane, %function
762P2V_plane:
763	@ args = 0, pretend = 0, frame = 0
764	@ frame_needed = 1, uses_anonymous_args = 0
765	mov	ip, sp
766	push	{r4, r5, r6, r7, fp, ip, lr, pc}
767	sub	fp, ip, #4
768	push	{lr}
769	bl	__gnu_mcount_nc
770	ldr	r3, .L70
771	mov	r5, r0
772	add	r2, r3, #256
773	ldrh	r6, [r2]
774	movw	r2, #298
775	ldrh	r1, [r3, r2]
776	bl	__aeabi_uidiv
777	mov	r1, r6
778	smulbb	r4, r0, r6
779	mov	r0, r5
780	bl	__aeabi_uidivmod
781	add	r0, r4, r1
782	uxth	r0, r0
783	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
784.L71:
785	.align	2
786.L70:
787	.word	.LANCHOR0
788	.size	P2V_plane, .-P2V_plane
789	.align	2
790	.global	P2V_block_in_plane
791	.syntax unified
792	.arm
793	.fpu softvfp
794	.type	P2V_block_in_plane, %function
795P2V_block_in_plane:
796	@ args = 0, pretend = 0, frame = 0
797	@ frame_needed = 1, uses_anonymous_args = 0
798	mov	ip, sp
799	push	{r4, r5, fp, ip, lr, pc}
800	sub	fp, ip, #4
801	push	{lr}
802	bl	__gnu_mcount_nc
803	ldr	r4, .L73
804	movw	r3, #298
805	ldrh	r1, [r4, r3]
806	add	r4, r4, #256
807	bl	__aeabi_uidivmod
808	mov	r0, r1
809	ldrh	r1, [r4]
810	uxth	r0, r0
811	bl	__aeabi_uidiv
812	uxth	r0, r0
813	ldmfd	sp, {r4, r5, fp, sp, pc}
814.L74:
815	.align	2
816.L73:
817	.word	.LANCHOR0
818	.size	P2V_block_in_plane, .-P2V_block_in_plane
819	.align	2
820	.global	ftl_cmp_data_ver
821	.syntax unified
822	.arm
823	.fpu softvfp
824	.type	ftl_cmp_data_ver, %function
825ftl_cmp_data_ver:
826	@ args = 0, pretend = 0, frame = 0
827	@ frame_needed = 1, uses_anonymous_args = 0
828	mov	ip, sp
829	push	{fp, ip, lr, pc}
830	sub	fp, ip, #4
831	push	{lr}
832	bl	__gnu_mcount_nc
833	cmp	r0, r1
834	bls	.L76
835	sub	r0, r0, r1
836	cmp	r0, #-2147483648
837	movhi	r0, #0
838	movls	r0, #1
839	ldmfd	sp, {fp, sp, pc}
840.L76:
841	sub	r1, r1, r0
842	cmp	r1, #-2147483648
843	movls	r0, #0
844	movhi	r0, #1
845	ldmfd	sp, {fp, sp, pc}
846	.size	ftl_cmp_data_ver, .-ftl_cmp_data_ver
847	.align	2
848	.global	FtlFreeSysBlkQueueEmpty
849	.syntax unified
850	.arm
851	.fpu softvfp
852	.type	FtlFreeSysBlkQueueEmpty, %function
853FtlFreeSysBlkQueueEmpty:
854	@ args = 0, pretend = 0, frame = 0
855	@ frame_needed = 1, uses_anonymous_args = 0
856	mov	ip, sp
857	push	{fp, ip, lr, pc}
858	sub	fp, ip, #4
859	push	{lr}
860	bl	__gnu_mcount_nc
861	ldr	r3, .L79
862	ldrh	r0, [r3, #6]
863	clz	r0, r0
864	lsr	r0, r0, #5
865	ldmfd	sp, {fp, sp, pc}
866.L80:
867	.align	2
868.L79:
869	.word	.LANCHOR0+412
870	.size	FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
871	.align	2
872	.global	FtlFreeSysBlkQueueFull
873	.syntax unified
874	.arm
875	.fpu softvfp
876	.type	FtlFreeSysBlkQueueFull, %function
877FtlFreeSysBlkQueueFull:
878	@ args = 0, pretend = 0, frame = 0
879	@ frame_needed = 1, uses_anonymous_args = 0
880	mov	ip, sp
881	push	{fp, ip, lr, pc}
882	sub	fp, ip, #4
883	push	{lr}
884	bl	__gnu_mcount_nc
885	ldr	r3, .L82
886	ldrh	r0, [r3, #6]
887	sub	r0, r0, #1024
888	clz	r0, r0
889	lsr	r0, r0, #5
890	ldmfd	sp, {fp, sp, pc}
891.L83:
892	.align	2
893.L82:
894	.word	.LANCHOR0+412
895	.size	FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
896	.align	2
897	.global	FtlFreeSysBLkSort
898	.syntax unified
899	.arm
900	.fpu softvfp
901	.type	FtlFreeSysBLkSort, %function
902FtlFreeSysBLkSort:
903	@ args = 0, pretend = 0, frame = 0
904	@ frame_needed = 1, uses_anonymous_args = 0
905	mov	ip, sp
906	push	{r4, r5, fp, ip, lr, pc}
907	sub	fp, ip, #4
908	push	{lr}
909	bl	__gnu_mcount_nc
910	ldr	r3, .L93
911	ldrh	r2, [r3, #6]
912	cmp	r2, #0
913	ldmfdeq	sp, {r4, r5, fp, sp, pc}
914	ldr	r2, .L93+4
915	mov	r0, #0
916	ldrh	r1, [r3, #2]
917	mov	lr, r0
918	ldrh	ip, [r2, #28]
919	ldrh	r2, [r3, #4]
920	and	ip, ip, #31
921.L87:
922	uxth	r4, r0
923	cmp	ip, r4
924	bhi	.L88
925	cmp	lr, #0
926	strhne	r1, [r3, #2]	@ movhi
927	strhne	r2, [r3, #4]	@ movhi
928	ldmfd	sp, {r4, r5, fp, sp, pc}
929.L88:
930	add	lr, r3, r1, lsl #1
931	add	r1, r1, #1
932	add	r0, r0, #1
933	ubfx	r1, r1, #0, #10
934	ldrh	r4, [lr, #8]
935	add	lr, r3, r2, lsl #1
936	add	r2, r2, #1
937	strh	r4, [lr, #8]	@ movhi
938	ubfx	r2, r2, #0, #10
939	mov	lr, #1
940	b	.L87
941.L94:
942	.align	2
943.L93:
944	.word	.LANCHOR0+412
945	.word	.LANCHOR0+2468
946	.size	FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
947	.align	2
948	.global	IsInFreeQueue
949	.syntax unified
950	.arm
951	.fpu softvfp
952	.type	IsInFreeQueue, %function
953IsInFreeQueue:
954	@ args = 0, pretend = 0, frame = 0
955	@ frame_needed = 1, uses_anonymous_args = 0
956	mov	ip, sp
957	push	{fp, ip, lr, pc}
958	sub	fp, ip, #4
959	push	{lr}
960	bl	__gnu_mcount_nc
961	ldr	r1, .L101
962	ldrh	ip, [r1, #6]
963	cmp	ip, #1024
964	movne	r2, #0
965	ldrhne	lr, [r1, #2]
966	bne	.L97
967.L99:
968	mov	r0, #0
969	ldmfd	sp, {fp, sp, pc}
970.L98:
971	add	r3, lr, r2
972	ubfx	r3, r3, #0, #10
973	add	r3, r1, r3, lsl #1
974	ldrh	r3, [r3, #8]
975	cmp	r3, r0
976	beq	.L100
977	add	r2, r2, #1
978.L97:
979	cmp	ip, r2
980	bhi	.L98
981	b	.L99
982.L100:
983	mov	r0, #1
984	ldmfd	sp, {fp, sp, pc}
985.L102:
986	.align	2
987.L101:
988	.word	.LANCHOR0+412
989	.size	IsInFreeQueue, .-IsInFreeQueue
990	.align	2
991	.global	insert_data_list
992	.syntax unified
993	.arm
994	.fpu softvfp
995	.type	insert_data_list, %function
996insert_data_list:
997	@ args = 0, pretend = 0, frame = 8
998	@ frame_needed = 1, uses_anonymous_args = 0
999	mov	ip, sp
1000	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
1001	sub	fp, ip, #4
1002	sub	sp, sp, #12
1003	push	{lr}
1004	bl	__gnu_mcount_nc
1005	ldr	r4, .L117
1006	ldrh	r3, [r4, #240]
1007	cmp	r3, r0
1008	bls	.L105
1009	mov	lr, #6
1010	ldr	r5, [r4, #2516]
1011	mvn	ip, #0
1012	mul	lr, lr, r0
1013	add	r1, r5, lr
1014	strh	ip, [r1, #2]	@ movhi
1015	strh	ip, [r5, lr]	@ movhi
1016	ldr	r2, [r4, #2520]
1017	cmp	r2, #0
1018	streq	r1, [r4, #2520]
1019	beq	.L105
1020	ldr	r8, [r4, #72]
1021	lsl	r3, r0, #1
1022	ldr	r7, [r4, #2516]
1023	movw	r10, #65535
1024	ldrh	r4, [r4, #240]
1025	ldrh	r6, [r8, r3]
1026	ldrh	r3, [r1, #4]
1027	str	r4, [fp, #-48]
1028	mov	r4, #0
1029	cmp	r3, #0
1030	mulne	ip, r3, r6
1031	sub	r3, r2, r7
1032	ldr	r6, .L117+4
1033	asr	r3, r3, #1
1034	mul	r3, r6, r3
1035	uxth	r3, r3
1036.L111:
1037	sub	r6, r0, r3
1038	add	r4, r4, #1
1039	clz	r6, r6
1040	ldr	r9, [fp, #-48]
1041	uxth	r4, r4
1042	lsr	r6, r6, #5
1043	cmp	r4, r9
1044	orrhi	r6, r6, #1
1045	cmp	r6, #0
1046	bne	.L105
1047	ldrh	r9, [r2, #4]
1048	cmp	r9, #0
1049	beq	.L109
1050	lsl	r6, r3, #1
1051	ldrh	r6, [r8, r6]
1052	mul	r6, r9, r6
1053	cmp	r6, ip
1054	bcs	.L109
1055	ldrh	r6, [r2]
1056	cmp	r6, r10
1057	bne	.L110
1058	strh	r3, [r1, #2]	@ movhi
1059	ldr	r3, .L117
1060	strh	r0, [r2]	@ movhi
1061	str	r1, [r3, #2524]
1062.L105:
1063	mov	r0, #0
1064	sub	sp, fp, #40
1065	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
1066.L110:
1067	mov	r3, #6
1068	mla	r2, r3, r6, r7
1069	mov	r3, r6
1070	b	.L111
1071.L109:
1072	strh	r3, [r5, lr]	@ movhi
1073	ldr	ip, .L117
1074	ldrh	r3, [r2, #2]
1075	strh	r3, [r1, #2]	@ movhi
1076	ldr	lr, [ip, #2520]
1077	cmp	r2, lr
1078	strheq	r0, [r2, #2]	@ movhi
1079	streq	r1, [ip, #2520]
1080	ldrne	r1, [ip, #2516]
1081	movne	ip, #6
1082	mulne	r3, ip, r3
1083	strhne	r0, [r1, r3]	@ movhi
1084	strhne	r0, [r2, #2]	@ movhi
1085	b	.L105
1086.L118:
1087	.align	2
1088.L117:
1089	.word	.LANCHOR0
1090	.word	-1431655765
1091	.size	insert_data_list, .-insert_data_list
1092	.section	.rodata.str1.1
1093.LC8:
1094	.ascii	"\012!!!!! error @ func:%s - line:%d\012\000"
1095	.text
1096	.align	2
1097	.global	INSERT_DATA_LIST
1098	.syntax unified
1099	.arm
1100	.fpu softvfp
1101	.type	INSERT_DATA_LIST, %function
1102INSERT_DATA_LIST:
1103	@ args = 0, pretend = 0, frame = 0
1104	@ frame_needed = 1, uses_anonymous_args = 0
1105	mov	ip, sp
1106	push	{fp, ip, lr, pc}
1107	sub	fp, ip, #4
1108	push	{lr}
1109	bl	__gnu_mcount_nc
1110	bl	insert_data_list
1111	ldr	r2, .L121
1112	add	r1, r2, #2528
1113	ldrh	r2, [r2, #240]
1114	ldrh	r3, [r1]
1115	add	r3, r3, #1
1116	uxth	r3, r3
1117	strh	r3, [r1]	@ movhi
1118	cmp	r2, r3
1119	ldmfdcs	sp, {fp, sp, pc}
1120	ldr	r1, .L121+4
1121	mov	r2, #214
1122	ldr	r0, .L121+8
1123	bl	sftl_printk
1124	ldmfd	sp, {fp, sp, pc}
1125.L122:
1126	.align	2
1127.L121:
1128	.word	.LANCHOR0
1129	.word	.LANCHOR1
1130	.word	.LC8
1131	.size	INSERT_DATA_LIST, .-INSERT_DATA_LIST
1132	.align	2
1133	.global	insert_free_list
1134	.syntax unified
1135	.arm
1136	.fpu softvfp
1137	.type	insert_free_list, %function
1138insert_free_list:
1139	@ args = 0, pretend = 0, frame = 0
1140	@ frame_needed = 1, uses_anonymous_args = 0
1141	mov	ip, sp
1142	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
1143	sub	fp, ip, #4
1144	push	{lr}
1145	bl	__gnu_mcount_nc
1146	movw	r8, #65535
1147	cmp	r0, r8
1148	beq	.L124
1149	ldr	r1, .L131
1150	mov	r6, #6
1151	mvn	r3, #0
1152	mul	lr, r6, r0
1153	ldr	r4, [r1, #2516]
1154	add	ip, r4, lr
1155	strh	r3, [ip, #2]	@ movhi
1156	strh	r3, [r4, lr]	@ movhi
1157	ldr	r3, [r1, #2532]
1158	cmp	r3, #0
1159	bne	.L125
1160.L130:
1161	str	ip, [r1, #2532]
1162	b	.L124
1163.L125:
1164	lsl	r2, r0, #1
1165	ldr	r7, [r1, #2536]
1166	ldr	r5, [r1, #2516]
1167	ldr	r10, .L131+4
1168	ldrh	r9, [r7, r2]
1169	sub	r2, r3, r5
1170	asr	r2, r2, #1
1171	mul	r2, r10, r2
1172	uxth	r2, r2
1173.L128:
1174	lsl	r10, r2, #1
1175	ldrh	r10, [r7, r10]
1176	cmp	r10, r9
1177	bcs	.L126
1178	ldrh	r10, [r3]
1179	cmp	r10, r8
1180	bne	.L127
1181	strh	r2, [ip, #2]	@ movhi
1182	strh	r0, [r3]	@ movhi
1183.L124:
1184	mov	r0, #0
1185	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
1186.L127:
1187	mla	r3, r6, r10, r5
1188	mov	r2, r10
1189	b	.L128
1190.L126:
1191	ldrh	r5, [r3, #2]
1192	strh	r5, [ip, #2]	@ movhi
1193	strh	r2, [r4, lr]	@ movhi
1194	ldr	r2, [r1, #2532]
1195	cmp	r2, r3
1196	strheq	r0, [r3, #2]	@ movhi
1197	beq	.L130
1198.L129:
1199	ldrh	r2, [r3, #2]
1200	mov	ip, #6
1201	ldr	r1, [r1, #2516]
1202	mul	r2, ip, r2
1203	strh	r0, [r1, r2]	@ movhi
1204	strh	r0, [r3, #2]	@ movhi
1205	b	.L124
1206.L132:
1207	.align	2
1208.L131:
1209	.word	.LANCHOR0
1210	.word	-1431655765
1211	.size	insert_free_list, .-insert_free_list
1212	.align	2
1213	.global	INSERT_FREE_LIST
1214	.syntax unified
1215	.arm
1216	.fpu softvfp
1217	.type	INSERT_FREE_LIST, %function
1218INSERT_FREE_LIST:
1219	@ args = 0, pretend = 0, frame = 0
1220	@ frame_needed = 1, uses_anonymous_args = 0
1221	mov	ip, sp
1222	push	{fp, ip, lr, pc}
1223	sub	fp, ip, #4
1224	push	{lr}
1225	bl	__gnu_mcount_nc
1226	bl	insert_free_list
1227	ldr	r2, .L135
1228	ldrh	r3, [r2, #224]
1229	add	r3, r3, #1
1230	uxth	r3, r3
1231	strh	r3, [r2, #224]	@ movhi
1232	ldrh	r2, [r2, #240]
1233	cmp	r2, r3
1234	ldmfdcs	sp, {fp, sp, pc}
1235	ldr	r1, .L135+4
1236	mov	r2, #207
1237	ldr	r0, .L135+8
1238	bl	sftl_printk
1239	ldmfd	sp, {fp, sp, pc}
1240.L136:
1241	.align	2
1242.L135:
1243	.word	.LANCHOR0
1244	.word	.LANCHOR1+17
1245	.word	.LC8
1246	.size	INSERT_FREE_LIST, .-INSERT_FREE_LIST
1247	.align	2
1248	.global	List_remove_node
1249	.syntax unified
1250	.arm
1251	.fpu softvfp
1252	.type	List_remove_node, %function
1253List_remove_node:
1254	@ args = 0, pretend = 0, frame = 0
1255	@ frame_needed = 1, uses_anonymous_args = 0
1256	mov	ip, sp
1257	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
1258	sub	fp, ip, #4
1259	push	{lr}
1260	bl	__gnu_mcount_nc
1261	ldr	r8, .L148
1262	mov	r4, #6
1263	movw	r3, #65535
1264	mov	r5, r0
1265	mul	r4, r4, r1
1266	ldr	r7, [r8, #2516]
1267	add	r6, r7, r4
1268	ldrh	r2, [r6, #2]
1269	cmp	r2, r3
1270	bne	.L138
1271	ldr	r3, [r0]
1272	cmp	r6, r3
1273	bne	.L139
1274.L142:
1275	ldrh	r2, [r7, r4]
1276	movw	r3, #65535
1277	cmp	r2, r3
1278	bne	.L146
1279	mov	r3, #0
1280	str	r3, [r5]
1281.L144:
1282	mvn	r3, #0
1283	mov	r0, #0
1284	strh	r3, [r7, r4]	@ movhi
1285	strh	r3, [r6, #2]	@ movhi
1286	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
1287.L139:
1288	ldr	r1, .L148+4
1289	mov	r2, #372
1290	ldr	r0, .L148+8
1291	bl	sftl_printk
1292.L138:
1293	ldr	r3, [r5]
1294	ldrh	r1, [r7, r4]
1295	cmp	r3, r6
1296	beq	.L142
1297	movw	r2, #65535
1298	ldrh	r3, [r6, #2]
1299	cmp	r1, r2
1300	bne	.L145
1301	cmp	r3, r1
1302	beq	.L144
1303	mov	r2, #6
1304	ldr	r1, [r8, #2516]
1305	mul	r3, r2, r3
1306	mvn	r2, #0
1307	strh	r2, [r1, r3]	@ movhi
1308	b	.L144
1309.L146:
1310	ldr	r3, [r8, #2516]
1311	mov	r1, #6
1312	mla	r3, r1, r2, r3
1313	mvn	r2, #0
1314	str	r3, [r5]
1315	strh	r2, [r3, #2]	@ movhi
1316	b	.L144
1317.L145:
1318	ldr	r2, [r8, #2516]
1319	mov	r0, #6
1320	mla	r2, r0, r1, r2
1321	strh	r3, [r2, #2]	@ movhi
1322	mul	r3, r0, r3
1323	ldr	r2, [r8, #2516]
1324	ldrh	r1, [r7, r4]
1325	strh	r1, [r2, r3]	@ movhi
1326	b	.L144
1327.L149:
1328	.align	2
1329.L148:
1330	.word	.LANCHOR0
1331	.word	.LANCHOR1+34
1332	.word	.LC8
1333	.size	List_remove_node, .-List_remove_node
1334	.align	2
1335	.global	List_pop_index_node
1336	.syntax unified
1337	.arm
1338	.fpu softvfp
1339	.type	List_pop_index_node, %function
1340List_pop_index_node:
1341	@ args = 0, pretend = 0, frame = 0
1342	@ frame_needed = 1, uses_anonymous_args = 0
1343	mov	ip, sp
1344	push	{r4, r5, fp, ip, lr, pc}
1345	sub	fp, ip, #4
1346	push	{lr}
1347	bl	__gnu_mcount_nc
1348	ldr	r3, [r0]
1349	cmp	r3, #0
1350	beq	.L155
1351	ldr	r2, .L159
1352	movw	ip, #65535
1353	mov	lr, #6
1354	ldr	r4, [r2, #2516]
1355.L152:
1356	cmp	r1, #0
1357	beq	.L153
1358	ldrh	r2, [r3]
1359	cmp	r2, ip
1360	bne	.L154
1361.L153:
1362	sub	r4, r3, r4
1363	ldr	r3, .L159+4
1364	asr	r4, r4, #1
1365	mul	r4, r3, r4
1366	uxth	r1, r4
1367	bl	List_remove_node
1368	uxth	r0, r4
1369	ldmfd	sp, {r4, r5, fp, sp, pc}
1370.L154:
1371	sub	r1, r1, #1
1372	mla	r3, lr, r2, r4
1373	uxth	r1, r1
1374	b	.L152
1375.L155:
1376	movw	r0, #65535
1377	ldmfd	sp, {r4, r5, fp, sp, pc}
1378.L160:
1379	.align	2
1380.L159:
1381	.word	.LANCHOR0
1382	.word	-1431655765
1383	.size	List_pop_index_node, .-List_pop_index_node
1384	.align	2
1385	.global	List_pop_head_node
1386	.syntax unified
1387	.arm
1388	.fpu softvfp
1389	.type	List_pop_head_node, %function
1390List_pop_head_node:
1391	@ args = 0, pretend = 0, frame = 0
1392	@ frame_needed = 1, uses_anonymous_args = 0
1393	mov	ip, sp
1394	push	{fp, ip, lr, pc}
1395	sub	fp, ip, #4
1396	push	{lr}
1397	bl	__gnu_mcount_nc
1398	mov	r1, #0
1399	bl	List_pop_index_node
1400	ldmfd	sp, {fp, sp, pc}
1401	.size	List_pop_head_node, .-List_pop_head_node
1402	.align	2
1403	.global	List_get_gc_head_node
1404	.syntax unified
1405	.arm
1406	.fpu softvfp
1407	.type	List_get_gc_head_node, %function
1408List_get_gc_head_node:
1409	@ args = 0, pretend = 0, frame = 0
1410	@ frame_needed = 1, uses_anonymous_args = 0
1411	mov	ip, sp
1412	push	{fp, ip, lr, pc}
1413	sub	fp, ip, #4
1414	push	{lr}
1415	bl	__gnu_mcount_nc
1416	ldr	r2, .L168
1417	ldr	r3, [r2, #2520]
1418	cmp	r3, #0
1419	movwne	r1, #65535
1420	movne	lr, #6
1421	ldrne	ip, [r2, #2516]
1422	bne	.L164
1423.L167:
1424	movw	r0, #65535
1425	ldmfd	sp, {fp, sp, pc}
1426.L166:
1427	sub	r2, r0, #1
1428	mla	r3, lr, r3, ip
1429	uxth	r0, r2
1430.L164:
1431	cmp	r0, #0
1432	beq	.L165
1433	ldrh	r3, [r3]
1434	cmp	r3, r1
1435	bne	.L166
1436	b	.L167
1437.L165:
1438	sub	r0, r3, ip
1439	ldr	r3, .L168+4
1440	asr	r0, r0, #1
1441	mul	r0, r3, r0
1442	uxth	r0, r0
1443	ldmfd	sp, {fp, sp, pc}
1444.L169:
1445	.align	2
1446.L168:
1447	.word	.LANCHOR0
1448	.word	-1431655765
1449	.size	List_get_gc_head_node, .-List_get_gc_head_node
1450	.align	2
1451	.global	List_update_data_list
1452	.syntax unified
1453	.arm
1454	.fpu softvfp
1455	.type	List_update_data_list, %function
1456List_update_data_list:
1457	@ args = 0, pretend = 0, frame = 0
1458	@ frame_needed = 1, uses_anonymous_args = 0
1459	mov	ip, sp
1460	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
1461	sub	fp, ip, #4
1462	push	{lr}
1463	bl	__gnu_mcount_nc
1464	ldr	r5, .L181
1465	mov	r4, r0
1466	ldrh	r3, [r5, #24]
1467	cmp	r3, r0
1468	beq	.L172
1469	ldrh	r3, [r5, #76]
1470	cmp	r3, r0
1471	beq	.L172
1472	ldrh	r3, [r5, #124]
1473	cmp	r3, r0
1474	beq	.L172
1475	mov	r7, #6
1476	ldr	r9, [r5, #2516]
1477	ldr	r3, [r5, #2520]
1478	mul	r7, r7, r0
1479	add	r8, r9, r7
1480	cmp	r8, r3
1481	beq	.L172
1482	ldr	r2, [r5, #72]
1483	lsl	r3, r0, #1
1484	ldrh	r6, [r2, r3]
1485	movw	r2, #65535
1486	ldrh	r3, [r8, #4]
1487	cmp	r3, #0
1488	mvneq	r6, #0
1489	mulne	r6, r3, r6
1490	ldrh	r3, [r8, #2]
1491	cmp	r3, r2
1492	bne	.L175
1493	ldrh	r2, [r9, r7]
1494	cmp	r2, r3
1495	bne	.L175
1496	ldr	r1, .L181+4
1497	movw	r2, #463
1498	ldr	r0, .L181+8
1499	bl	sftl_printk
1500.L175:
1501	ldrh	r3, [r8, #2]
1502	movw	r2, #65535
1503	cmp	r3, r2
1504	bne	.L176
1505	ldrh	r2, [r9, r7]
1506	cmp	r2, r3
1507	beq	.L172
1508.L176:
1509	mov	r2, #6
1510	ldr	r1, .L181+12
1511	mul	r3, r2, r3
1512	asr	r2, r3, #1
1513	mul	r2, r1, r2
1514	ldr	r1, [r5, #72]
1515	lsl	r2, r2, #1
1516	ldrh	r2, [r1, r2]
1517	ldr	r1, [r5, #2516]
1518	add	r3, r1, r3
1519	ldrh	r3, [r3, #4]
1520	cmp	r3, #0
1521	mvneq	r3, #0
1522	mulne	r3, r3, r2
1523	cmp	r6, r3
1524	bcs	.L172
1525	ldr	r5, .L181+16
1526	mov	r1, r4
1527	ldr	r0, .L181+20
1528	bl	List_remove_node
1529	ldrh	r3, [r5]
1530	cmp	r3, #0
1531	bne	.L178
1532	ldr	r1, .L181+4
1533	movw	r2, #474
1534	ldr	r0, .L181+8
1535	bl	sftl_printk
1536.L178:
1537	ldrh	r3, [r5]
1538	mov	r0, r4
1539	sub	r3, r3, #1
1540	strh	r3, [r5]	@ movhi
1541	bl	INSERT_DATA_LIST
1542.L172:
1543	mov	r0, #0
1544	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
1545.L182:
1546	.align	2
1547.L181:
1548	.word	.LANCHOR0
1549	.word	.LANCHOR1+51
1550	.word	.LC8
1551	.word	-1431655765
1552	.word	.LANCHOR0+2528
1553	.word	.LANCHOR0+2520
1554	.size	List_update_data_list, .-List_update_data_list
1555	.align	2
1556	.global	select_l2p_ram_region
1557	.syntax unified
1558	.arm
1559	.fpu softvfp
1560	.type	select_l2p_ram_region, %function
1561select_l2p_ram_region:
1562	@ args = 0, pretend = 0, frame = 0
1563	@ frame_needed = 1, uses_anonymous_args = 0
1564	mov	ip, sp
1565	push	{r4, r5, r6, r7, fp, ip, lr, pc}
1566	sub	fp, ip, #4
1567	push	{lr}
1568	bl	__gnu_mcount_nc
1569	ldr	r3, .L193
1570	movw	r2, #338
1571	mov	r1, #0
1572	mov	ip, #12
1573	movw	lr, #65535
1574	ldrh	r2, [r3, r2]
1575	ldr	r3, [r3, #2540]
1576	sub	r0, r3, #12
1577.L184:
1578	uxth	r4, r1
1579	cmp	r2, r4
1580	bhi	.L186
1581	mov	r4, r2
1582	add	r5, r3, #4
1583	mov	r1, #0
1584	mov	r0, #-2147483648
1585	mov	r6, #12
1586.L187:
1587	uxth	lr, r1
1588	cmp	r2, lr
1589	bhi	.L189
1590	cmp	r2, r4
1591	bhi	.L185
1592	ldr	r1, .L193+4
1593	mov	r4, r2
1594	mvn	r0, #0
1595	ldrh	r5, [r1]
1596	mov	r1, #0
1597.L190:
1598	uxth	ip, r1
1599	cmp	r2, ip
1600	bhi	.L192
1601	cmp	r2, r4
1602	bhi	.L185
1603	ldr	r1, .L193+8
1604	mov	r2, #796
1605	ldr	r0, .L193+12
1606	bl	sftl_printk
1607	b	.L185
1608.L186:
1609	add	r1, r1, #1
1610	mul	r5, ip, r1
1611	ldrh	r5, [r0, r5]
1612	cmp	r5, lr
1613	bne	.L184
1614.L185:
1615	mov	r0, r4
1616	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
1617.L189:
1618	mul	ip, r6, r1
1619	add	r1, r1, #1
1620	ldr	ip, [r5, ip]
1621	mvn	r7, ip
1622	cmp	ip, r0
1623	lsr	r7, r7, #31
1624	movcs	r7, #0
1625	cmp	r7, #0
1626	movne	r0, ip
1627	movne	r4, lr
1628	b	.L187
1629.L192:
1630	ldr	lr, [r3, #4]
1631	cmp	lr, r0
1632	bcs	.L191
1633	ldrh	r6, [r3]
1634	cmp	r6, r5
1635	movne	r0, lr
1636	movne	r4, ip
1637.L191:
1638	add	r1, r1, #1
1639	add	r3, r3, #12
1640	b	.L190
1641.L194:
1642	.align	2
1643.L193:
1644	.word	.LANCHOR0
1645	.word	.LANCHOR0+2544
1646	.word	.LANCHOR1+73
1647	.word	.LC8
1648	.size	select_l2p_ram_region, .-select_l2p_ram_region
1649	.align	2
1650	.global	FtlUpdateVaildLpn
1651	.syntax unified
1652	.arm
1653	.fpu softvfp
1654	.type	FtlUpdateVaildLpn, %function
1655FtlUpdateVaildLpn:
1656	@ args = 0, pretend = 0, frame = 0
1657	@ frame_needed = 1, uses_anonymous_args = 0
1658	mov	ip, sp
1659	push	{fp, ip, lr, pc}
1660	sub	fp, ip, #4
1661	push	{lr}
1662	bl	__gnu_mcount_nc
1663	ldr	r3, .L201
1664	movw	r1, #2546
1665	ldrh	r2, [r3, r1]
1666	cmp	r2, #4
1667	cmpls	r0, #0
1668	bne	.L196
1669	add	r2, r2, #1
1670	strh	r2, [r3, r1]	@ movhi
1671	ldmfd	sp, {fp, sp, pc}
1672.L196:
1673	mov	r2, #0
1674	strh	r2, [r3, r1]	@ movhi
1675	str	r2, [r3, #2548]
1676	movw	lr, #65535
1677	ldr	r2, [r3, #72]
1678	ldrh	r1, [r3, #240]
1679	add	r1, r2, r1, lsl #1
1680.L197:
1681	cmp	r2, r1
1682	ldmfdeq	sp, {fp, sp, pc}
1683	ldrh	ip, [r2], #2
1684	cmp	ip, lr
1685	ldrne	r0, [r3, #2548]
1686	addne	r0, r0, ip
1687	strne	r0, [r3, #2548]
1688	b	.L197
1689.L202:
1690	.align	2
1691.L201:
1692	.word	.LANCHOR0
1693	.size	FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
1694	.align	2
1695	.global	ftl_sb_update_avl_pages
1696	.syntax unified
1697	.arm
1698	.fpu softvfp
1699	.type	ftl_sb_update_avl_pages, %function
1700ftl_sb_update_avl_pages:
1701	@ args = 0, pretend = 0, frame = 0
1702	@ frame_needed = 1, uses_anonymous_args = 0
1703	mov	ip, sp
1704	push	{r4, r5, fp, ip, lr, pc}
1705	sub	fp, ip, #4
1706	push	{lr}
1707	bl	__gnu_mcount_nc
1708	ldr	r4, .L211
1709	add	ip, r2, #8
1710	mov	r3, #0
1711	movw	r5, #65535
1712	add	ip, r0, ip, lsl #1
1713	strh	r3, [r0, #4]	@ movhi
1714	ldrh	lr, [r4, #232]
1715.L204:
1716	cmp	lr, r2
1717	bhi	.L206
1718	movw	r3, #302
1719	add	ip, r0, #16
1720	mov	r2, #0
1721	ldrh	r3, [r4, r3]
1722	movw	r4, #65535
1723	sub	r3, r3, r1
1724	sub	r3, r3, #1
1725	sxth	r3, r3
1726.L207:
1727	uxth	r1, r2
1728	cmp	lr, r1
1729	ldmfdls	sp, {r4, r5, fp, sp, pc}
1730	ldrh	r1, [ip], #2
1731	add	r2, r2, #1
1732	cmp	r1, r4
1733	ldrhne	r1, [r0, #4]
1734	addne	r1, r3, r1
1735	strhne	r1, [r0, #4]	@ movhi
1736	b	.L207
1737.L206:
1738	ldrh	r3, [ip], #2
1739	add	r2, r2, #1
1740	cmp	r3, r5
1741	uxth	r2, r2
1742	ldrhne	r3, [r0, #4]
1743	addne	r3, r3, #1
1744	strhne	r3, [r0, #4]	@ movhi
1745	b	.L204
1746.L212:
1747	.align	2
1748.L211:
1749	.word	.LANCHOR0
1750	.size	ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
1751	.align	2
1752	.global	FtlSlcSuperblockCheck
1753	.syntax unified
1754	.arm
1755	.fpu softvfp
1756	.type	FtlSlcSuperblockCheck, %function
1757FtlSlcSuperblockCheck:
1758	@ args = 0, pretend = 0, frame = 0
1759	@ frame_needed = 1, uses_anonymous_args = 0
1760	mov	ip, sp
1761	push	{fp, ip, lr, pc}
1762	sub	fp, ip, #4
1763	push	{lr}
1764	bl	__gnu_mcount_nc
1765	ldrh	r3, [r0, #4]
1766	cmp	r3, #0
1767	ldmfdeq	sp, {fp, sp, pc}
1768	ldrh	r3, [r0]
1769	movw	r2, #65535
1770	cmp	r3, r2
1771	ldmfdeq	sp, {fp, sp, pc}
1772	ldrb	r3, [r0, #6]	@ zero_extendqisi2
1773	mov	ip, #0
1774	ldr	r1, .L219
1775	add	r3, r0, r3, lsl #1
1776	ldrh	r1, [r1, #232]
1777	ldrh	r3, [r3, #16]
1778.L216:
1779	cmp	r3, r2
1780	ldmfdne	sp, {fp, sp, pc}
1781	ldrb	r3, [r0, #6]	@ zero_extendqisi2
1782	add	r3, r3, #1
1783	uxtb	r3, r3
1784	strb	r3, [r0, #6]
1785	cmp	r3, r1
1786	strbeq	ip, [r0, #6]
1787	ldrheq	r3, [r0, #2]
1788	addeq	r3, r3, #1
1789	strheq	r3, [r0, #2]	@ movhi
1790	ldrb	r3, [r0, #6]	@ zero_extendqisi2
1791	add	r3, r0, r3, lsl #1
1792	ldrh	r3, [r3, #16]
1793	b	.L216
1794.L220:
1795	.align	2
1796.L219:
1797	.word	.LANCHOR0
1798	.size	FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
1799	.align	2
1800	.global	make_superblock
1801	.syntax unified
1802	.arm
1803	.fpu softvfp
1804	.type	make_superblock, %function
1805make_superblock:
1806	@ args = 0, pretend = 0, frame = 8
1807	@ frame_needed = 1, uses_anonymous_args = 0
1808	mov	ip, sp
1809	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
1810	sub	fp, ip, #4
1811	sub	sp, sp, #12
1812	push	{lr}
1813	bl	__gnu_mcount_nc
1814	ldr	r7, .L227
1815	mov	r4, r0
1816	ldrh	r2, [r0]
1817	ldrh	r3, [r7, #240]
1818	cmp	r2, r3
1819	bcc	.L222
1820	ldr	r1, .L227+4
1821	movw	r2, #2157
1822	ldr	r0, .L227+8
1823	bl	sftl_printk
1824.L222:
1825	ldrh	r6, [r7, #232]
1826	mov	r3, #0
1827	strh	r3, [r4, #4]	@ movhi
1828	add	r5, r4, #16
1829	strb	r3, [r4, #7]
1830	mvn	r9, #0
1831	add	r6, r4, r6, lsl #1
1832	ldr	r3, .L227+12
1833	add	r6, r6, #16
1834.L223:
1835	ldrh	r1, [r4]
1836	cmp	r6, r5
1837	ldrb	r8, [r4, #7]	@ zero_extendqisi2
1838	bne	.L225
1839	movw	r3, #302
1840	lsl	r1, r1, #1
1841	mov	r0, #0
1842	ldrh	r3, [r7, r3]
1843	smulbb	r8, r3, r8
1844	mov	r3, #0
1845	strb	r3, [r4, #9]
1846	ldr	r3, [r7, #2536]
1847	strh	r8, [r4, #4]	@ movhi
1848	ldrh	r2, [r3, r1]
1849	movw	r3, #10000
1850	cmp	r2, r3
1851	movhi	r3, #1
1852	strbhi	r3, [r4, #9]
1853	sub	sp, fp, #40
1854	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
1855.L225:
1856	ldrb	r0, [r3], #1	@ zero_extendqisi2
1857	add	r5, r5, #2
1858	str	r3, [fp, #-48]
1859	bl	V2P_block
1860	strh	r9, [r5, #-2]	@ movhi
1861	mov	r10, r0
1862	bl	FtlBbmIsBadBlock
1863	cmp	r0, #0
1864	addeq	r8, r8, #1
1865	strheq	r10, [r5, #-2]	@ movhi
1866	ldr	r3, [fp, #-48]
1867	strbeq	r8, [r4, #7]
1868	b	.L223
1869.L228:
1870	.align	2
1871.L227:
1872	.word	.LANCHOR0
1873	.word	.LANCHOR1+95
1874	.word	.LC8
1875	.word	.LANCHOR0+260
1876	.size	make_superblock, .-make_superblock
1877	.align	2
1878	.global	update_multiplier_value
1879	.syntax unified
1880	.arm
1881	.fpu softvfp
1882	.type	update_multiplier_value, %function
1883update_multiplier_value:
1884	@ args = 0, pretend = 0, frame = 0
1885	@ frame_needed = 1, uses_anonymous_args = 0
1886	mov	ip, sp
1887	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
1888	sub	fp, ip, #4
1889	push	{lr}
1890	bl	__gnu_mcount_nc
1891	ldr	r6, .L237
1892	movw	r3, #302
1893	mov	r7, #0
1894	mov	r5, r0
1895	add	r8, r6, #260
1896	mov	r4, r7
1897	ldrh	r9, [r6, #232]
1898	ldrh	r10, [r6, r3]
1899.L230:
1900	uxth	r3, r7
1901	cmp	r9, r3
1902	bhi	.L232
1903	cmp	r4, #0
1904	beq	.L233
1905	mov	r1, r4
1906	mov	r0, #32768
1907	bl	__aeabi_idiv
1908	uxth	r4, r0
1909.L233:
1910	ldr	r0, [r6, #2516]
1911	mov	r3, #6
1912	mla	r5, r3, r5, r0
1913	mov	r0, #0
1914	strh	r4, [r5, #4]	@ movhi
1915	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
1916.L232:
1917	mov	r1, r5
1918	ldrb	r0, [r8], #1	@ zero_extendqisi2
1919	bl	V2P_block
1920	add	r7, r7, #1
1921	bl	FtlBbmIsBadBlock
1922	cmp	r0, #0
1923	addeq	r4, r10, r4
1924	uxtheq	r4, r4
1925	b	.L230
1926.L238:
1927	.align	2
1928.L237:
1929	.word	.LANCHOR0
1930	.size	update_multiplier_value, .-update_multiplier_value
1931	.align	2
1932	.global	GetFreeBlockMinEraseCount
1933	.syntax unified
1934	.arm
1935	.fpu softvfp
1936	.type	GetFreeBlockMinEraseCount, %function
1937GetFreeBlockMinEraseCount:
1938	@ args = 0, pretend = 0, frame = 0
1939	@ frame_needed = 1, uses_anonymous_args = 0
1940	mov	ip, sp
1941	push	{fp, ip, lr, pc}
1942	sub	fp, ip, #4
1943	push	{lr}
1944	bl	__gnu_mcount_nc
1945	ldr	r2, .L242
1946	ldr	r0, [r2, #2532]
1947	cmp	r0, #0
1948	ldmfdeq	sp, {fp, sp, pc}
1949	ldr	r3, [r2, #2516]
1950	ldr	r2, [r2, #2536]
1951	sub	r3, r0, r3
1952	ldr	r0, .L242+4
1953	asr	r3, r3, #1
1954	mul	r3, r0, r3
1955	uxth	r3, r3
1956	lsl	r3, r3, #1
1957	ldrh	r0, [r2, r3]
1958	ldmfd	sp, {fp, sp, pc}
1959.L243:
1960	.align	2
1961.L242:
1962	.word	.LANCHOR0
1963	.word	-1431655765
1964	.size	GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
1965	.align	2
1966	.global	GetFreeBlockMaxEraseCount
1967	.syntax unified
1968	.arm
1969	.fpu softvfp
1970	.type	GetFreeBlockMaxEraseCount, %function
1971GetFreeBlockMaxEraseCount:
1972	@ args = 0, pretend = 0, frame = 0
1973	@ frame_needed = 1, uses_anonymous_args = 0
1974	mov	ip, sp
1975	push	{r4, r5, r6, r7, fp, ip, lr, pc}
1976	sub	fp, ip, #4
1977	push	{lr}
1978	bl	__gnu_mcount_nc
1979	ldr	r1, .L251
1980	mov	r2, r0
1981	ldr	r0, [r1, #2532]
1982	cmp	r0, #0
1983	ldmfdeq	sp, {r4, r5, r6, r7, fp, sp, pc}
1984	ldrh	r3, [r1, #224]
1985	mov	r5, #6
1986	ldr	lr, [r1, #2516]
1987	movw	r6, #65535
1988	rsb	r3, r3, r3, lsl #3
1989	asr	ip, r3, #3
1990	cmp	r2, r3, asr #3
1991	sub	r3, r0, lr
1992	ldr	r0, .L251+4
1993	uxthgt	r2, ip
1994	mov	ip, #0
1995	asr	r3, r3, #1
1996	mul	r3, r0, r3
1997	uxth	r3, r3
1998.L247:
1999	uxth	r4, ip
2000	mov	r0, r3
2001	cmp	r4, r2
2002	bcs	.L248
2003	mul	r3, r5, r3
2004	add	ip, ip, #1
2005	ldrh	r3, [lr, r3]
2006	cmp	r3, r6
2007	bne	.L247
2008.L248:
2009	ldr	r2, [r1, #2536]
2010	lsl	r3, r0, #1
2011	ldrh	r0, [r2, r3]
2012	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
2013.L252:
2014	.align	2
2015.L251:
2016	.word	.LANCHOR0
2017	.word	-1431655765
2018	.size	GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
2019	.section	.rodata.str1.1
2020.LC9:
2021	.ascii	"FLASH INFO:\012\000"
2022.LC10:
2023	.ascii	"Device Capacity: %d MB\012\000"
2024.LC11:
2025	.ascii	"FTL INFO:\012\000"
2026.LC12:
2027	.ascii	"g_MaxLpn = 0x%x\012\000"
2028.LC13:
2029	.ascii	"g_VaildLpn = 0x%x\012\000"
2030.LC14:
2031	.ascii	"read_page_count = 0x%x\012\000"
2032.LC15:
2033	.ascii	"discard_page_count = 0x%x\012\000"
2034.LC16:
2035	.ascii	"write_page_count = 0x%x\012\000"
2036.LC17:
2037	.ascii	"cache_write_count = 0x%x\012\000"
2038.LC18:
2039	.ascii	"l2p_write_count = 0x%x\012\000"
2040.LC19:
2041	.ascii	"gc_page_count = 0x%x\012\000"
2042.LC20:
2043	.ascii	"totle_write = %d MB\012\000"
2044.LC21:
2045	.ascii	"totle_read = %d MB\012\000"
2046.LC22:
2047	.ascii	"GSV = 0x%x\012\000"
2048.LC23:
2049	.ascii	"GDV = 0x%x\012\000"
2050.LC24:
2051	.ascii	"bad blk num = %d\012\000"
2052.LC25:
2053	.ascii	"free_superblocks = 0x%x\012\000"
2054.LC26:
2055	.ascii	"mlc_EC = 0x%x\012\000"
2056.LC27:
2057	.ascii	"slc_EC = 0x%x\012\000"
2058.LC28:
2059	.ascii	"avg_EC = 0x%x\012\000"
2060.LC29:
2061	.ascii	"sys_EC = 0x%x\012\000"
2062.LC30:
2063	.ascii	"max_EC = 0x%x\012\000"
2064.LC31:
2065	.ascii	"min_EC = 0x%x\012\000"
2066.LC32:
2067	.ascii	"PLT = 0x%x\012\000"
2068.LC33:
2069	.ascii	"POT = 0x%x\012\000"
2070.LC34:
2071	.ascii	"MaxSector = 0x%x\012\000"
2072.LC35:
2073	.ascii	"init_sys_blks_pp = 0x%x\012\000"
2074.LC36:
2075	.ascii	"sys_blks_pp = 0x%x\012\000"
2076.LC37:
2077	.ascii	"free sysblock = 0x%x\012\000"
2078.LC38:
2079	.ascii	"data_blks_pp = 0x%x\012\000"
2080.LC39:
2081	.ascii	"data_op_blks_pp = 0x%x\012\000"
2082.LC40:
2083	.ascii	"max_data_blks = 0x%x\012\000"
2084.LC41:
2085	.ascii	"Sys.id = 0x%x\012\000"
2086.LC42:
2087	.ascii	"Bbt.id = 0x%x\012\000"
2088.LC43:
2089	.ascii	"ACT.page = 0x%x\012\000"
2090.LC44:
2091	.ascii	"ACT.plane = 0x%x\012\000"
2092.LC45:
2093	.ascii	"ACT.id = 0x%x\012\000"
2094.LC46:
2095	.ascii	"ACT.mode = 0x%x\012\000"
2096.LC47:
2097	.ascii	"ACT.a_pages = 0x%x\012\000"
2098.LC48:
2099	.ascii	"ACT VPC = 0x%x\012\000"
2100.LC49:
2101	.ascii	"BUF.page = 0x%x\012\000"
2102.LC50:
2103	.ascii	"BUF.plane = 0x%x\012\000"
2104.LC51:
2105	.ascii	"BUF.id = 0x%x\012\000"
2106.LC52:
2107	.ascii	"BUF.mode = 0x%x\012\000"
2108.LC53:
2109	.ascii	"BUF.a_pages = 0x%x\012\000"
2110.LC54:
2111	.ascii	"BUF VPC = 0x%x\012\000"
2112.LC55:
2113	.ascii	"TMP.page = 0x%x\012\000"
2114.LC56:
2115	.ascii	"TMP.plane = 0x%x\012\000"
2116.LC57:
2117	.ascii	"TMP.id = 0x%x\012\000"
2118.LC58:
2119	.ascii	"TMP.mode = 0x%x\012\000"
2120.LC59:
2121	.ascii	"TMP.a_pages = 0x%x\012\000"
2122.LC60:
2123	.ascii	"GC.page = 0x%x\012\000"
2124.LC61:
2125	.ascii	"GC.plane = 0x%x\012\000"
2126.LC62:
2127	.ascii	"GC.id = 0x%x\012\000"
2128.LC63:
2129	.ascii	"GC.mode = 0x%x\012\000"
2130.LC64:
2131	.ascii	"GC.a_pages = 0x%x\012\000"
2132.LC65:
2133	.ascii	"WR_CHK = %x %x %x\012\000"
2134.LC66:
2135	.ascii	"Read Err Cnt = 0x%x\012\000"
2136.LC67:
2137	.ascii	"Prog Err Cnt = 0x%x\012\000"
2138.LC68:
2139	.ascii	"gc_free_blk_th= 0x%x\012\000"
2140.LC69:
2141	.ascii	"gc_merge_free_blk_th= 0x%x\012\000"
2142.LC70:
2143	.ascii	"gc_skip_write_count= 0x%x\012\000"
2144.LC71:
2145	.ascii	"gc_blk_index= 0x%x\012\000"
2146.LC72:
2147	.ascii	"free min EC= 0x%x\012\000"
2148.LC73:
2149	.ascii	"free max EC= 0x%x\012\000"
2150.LC74:
2151	.ascii	"GC__SB VPC = 0x%x\012\000"
2152.LC75:
2153	.ascii	"%d. [0x%x]=0x%x 0x%x  0x%x\012\000"
2154.LC76:
2155	.ascii	"free %d. [0x%x] 0x%x  0x%x\012\000"
2156	.text
2157	.align	2
2158	.global	FtlPrintInfo2buf
2159	.syntax unified
2160	.arm
2161	.fpu softvfp
2162	.type	FtlPrintInfo2buf, %function
2163FtlPrintInfo2buf:
2164	@ args = 0, pretend = 0, frame = 0
2165	@ frame_needed = 1, uses_anonymous_args = 0
2166	mov	ip, sp
2167	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
2168	sub	fp, ip, #4
2169	sub	sp, sp, #20
2170	push	{lr}
2171	bl	__gnu_mcount_nc
2172	ldr	r6, .L265
2173	mov	r7, r0
2174	ldr	r1, .L265+4
2175	add	r5, r7, #12
2176	bl	strcpy
2177	ldr	r2, .L265+8
2178	mov	r0, r5
2179	mov	r1, #64
2180	ldr	r3, [r6, #316]
2181	add	r8, r6, #352
2182	bl	snprintf
2183	add	r5, r5, r0
2184	ldr	r1, .L265+12
2185	mov	r0, r5
2186	add	r5, r5, #10
2187	bl	strcpy
2188	ldr	r3, [r6, #2552]
2189	mov	r0, r5
2190	ldr	r2, .L265+16
2191	mov	r1, #64
2192	bl	snprintf
2193	add	r5, r5, r0
2194	ldr	r3, [r6, #2548]
2195	mov	r0, r5
2196	ldr	r2, .L265+20
2197	mov	r1, #64
2198	bl	snprintf
2199	add	r5, r5, r0
2200	ldr	r3, [r6, #2556]
2201	mov	r0, r5
2202	ldr	r2, .L265+24
2203	mov	r1, #64
2204	bl	snprintf
2205	add	r5, r5, r0
2206	ldr	r3, [r6, #2560]
2207	mov	r0, r5
2208	ldr	r2, .L265+28
2209	mov	r1, #64
2210	bl	snprintf
2211	add	r5, r5, r0
2212	ldr	r3, [r6, #2564]
2213	mov	r0, r5
2214	ldr	r2, .L265+32
2215	mov	r1, #64
2216	bl	snprintf
2217	add	r5, r5, r0
2218	ldr	r3, [r6, #2568]
2219	mov	r0, r5
2220	ldr	r2, .L265+36
2221	mov	r1, #64
2222	bl	snprintf
2223	add	r5, r5, r0
2224	ldr	r3, [r6, #2572]
2225	mov	r0, r5
2226	ldr	r2, .L265+40
2227	mov	r1, #64
2228	bl	snprintf
2229	add	r5, r5, r0
2230	ldr	r3, [r6, #2576]
2231	mov	r0, r5
2232	ldr	r2, .L265+44
2233	mov	r1, #64
2234	bl	snprintf
2235	ldr	r3, [r6, #2580]
2236	add	r5, r5, r0
2237	ldr	r2, .L265+48
2238	mov	r0, r5
2239	mov	r1, #64
2240	lsr	r3, r3, #11
2241	bl	snprintf
2242	ldr	r3, [r6, #2584]
2243	add	r5, r5, r0
2244	ldr	r2, .L265+52
2245	mov	r0, r5
2246	mov	r1, #64
2247	lsr	r3, r3, #11
2248	bl	snprintf
2249	add	r4, r5, r0
2250	ldr	r3, [r6, #2588]
2251	mov	r0, r4
2252	ldr	r2, .L265+56
2253	mov	r1, #64
2254	bl	snprintf
2255	add	r4, r4, r0
2256	ldr	r3, [r6, #2592]
2257	mov	r0, r4
2258	ldr	r2, .L265+60
2259	mov	r1, #64
2260	bl	snprintf
2261	add	r4, r4, r0
2262	ldrh	r3, [r8, #6]
2263	mov	r0, r4
2264	ldr	r2, .L265+64
2265	mov	r1, #64
2266	bl	snprintf
2267	add	r4, r4, r0
2268	ldrh	r3, [r6, #224]
2269	mov	r0, r4
2270	ldr	r2, .L265+68
2271	mov	r1, #64
2272	bl	snprintf
2273	add	r4, r4, r0
2274	ldr	r3, [r6, #2596]
2275	mov	r0, r4
2276	ldr	r2, .L265+72
2277	mov	r1, #64
2278	bl	snprintf
2279	add	r4, r4, r0
2280	ldr	r3, [r6, #2600]
2281	mov	r0, r4
2282	ldr	r2, .L265+76
2283	mov	r1, #64
2284	bl	snprintf
2285	add	r4, r4, r0
2286	ldr	r3, [r6, #2604]
2287	mov	r0, r4
2288	ldr	r2, .L265+80
2289	mov	r1, #64
2290	bl	snprintf
2291	add	r4, r4, r0
2292	ldr	r3, [r6, #2608]
2293	mov	r0, r4
2294	ldr	r2, .L265+84
2295	mov	r1, #64
2296	bl	snprintf
2297	add	r4, r4, r0
2298	ldr	r3, [r6, #2612]
2299	mov	r0, r4
2300	ldr	r2, .L265+88
2301	mov	r1, #64
2302	ldr	r5, .L265+92
2303	bl	snprintf
2304	add	r4, r4, r0
2305	ldr	r3, [r6, #2616]
2306	ldr	r2, .L265+96
2307	mov	r0, r4
2308	mov	r1, #64
2309	bl	snprintf
2310	add	r4, r4, r0
2311	ldrh	r3, [r5, #30]
2312	mov	r0, r4
2313	ldr	r2, .L265+100
2314	mov	r1, #64
2315	bl	snprintf
2316	add	r4, r4, r0
2317	ldrh	r3, [r5, #28]
2318	mov	r0, r4
2319	ldr	r2, .L265+104
2320	mov	r1, #64
2321	bl	snprintf
2322	add	r4, r4, r0
2323	ldr	r3, [r6, #340]
2324	mov	r0, r4
2325	ldr	r2, .L265+108
2326	mov	r1, #64
2327	bl	snprintf
2328	add	r4, r4, r0
2329	ldr	r3, [r6, #332]
2330	mov	r0, r4
2331	ldr	r2, .L265+112
2332	mov	r1, #64
2333	bl	snprintf
2334	add	r4, r4, r0
2335	ldr	r3, [r6, #228]
2336	mov	r0, r4
2337	ldr	r2, .L265+116
2338	mov	r1, #64
2339	bl	snprintf
2340	add	r3, r6, #412
2341	add	r4, r4, r0
2342	ldr	r2, .L265+120
2343	mov	r0, r4
2344	mov	r1, #64
2345	ldrh	r3, [r3, #6]
2346	bl	snprintf
2347	add	r4, r4, r0
2348	ldrh	r3, [r6, #240]
2349	mov	r0, r4
2350	ldr	r2, .L265+124
2351	mov	r1, #64
2352	bl	snprintf
2353	movw	r3, #2620
2354	add	r4, r4, r0
2355	ldr	r2, .L265+128
2356	ldrh	r3, [r6, r3]
2357	mov	r0, r4
2358	mov	r1, #64
2359	bl	snprintf
2360	add	r4, r4, r0
2361	ldr	r3, [r6, #244]
2362	mov	r0, r4
2363	ldr	r2, .L265+132
2364	mov	r1, #64
2365	bl	snprintf
2366	add	r3, r6, #2624
2367	add	r4, r4, r0
2368	ldr	r2, .L265+136
2369	mov	r0, r4
2370	mov	r1, #64
2371	ldrh	r3, [r3]
2372	bl	snprintf
2373	add	r4, r4, r0
2374	ldrh	r3, [r8]
2375	mov	r0, r4
2376	ldr	r2, .L265+140
2377	mov	r1, #64
2378	bl	snprintf
2379	add	r4, r4, r0
2380	ldrh	r3, [r6, #26]
2381	mov	r0, r4
2382	ldr	r2, .L265+144
2383	mov	r1, #64
2384	bl	snprintf
2385	add	r4, r4, r0
2386	ldrb	r3, [r6, #30]	@ zero_extendqisi2
2387	mov	r0, r4
2388	ldr	r2, .L265+148
2389	mov	r1, #64
2390	bl	snprintf
2391	add	r4, r4, r0
2392	ldrh	r3, [r6, #24]
2393	mov	r0, r4
2394	ldr	r2, .L265+152
2395	mov	r1, #64
2396	bl	snprintf
2397	add	r4, r4, r0
2398	ldrb	r3, [r6, #32]	@ zero_extendqisi2
2399	mov	r0, r4
2400	ldr	r2, .L265+156
2401	mov	r1, #64
2402	bl	snprintf
2403	add	r4, r4, r0
2404	ldrh	r3, [r6, #28]
2405	mov	r0, r4
2406	ldr	r2, .L265+160
2407	mov	r1, #64
2408	bl	snprintf
2409	ldrh	r3, [r6, #24]
2410	ldr	r2, [r6, #72]
2411	add	r4, r4, r0
2412	mov	r0, r4
2413	mov	r1, #64
2414	lsl	r3, r3, #1
2415	ldrh	r3, [r2, r3]
2416	ldr	r2, .L265+164
2417	bl	snprintf
2418	add	r4, r4, r0
2419	ldrh	r3, [r6, #78]
2420	mov	r0, r4
2421	ldr	r2, .L265+168
2422	mov	r1, #64
2423	bl	snprintf
2424	add	r4, r4, r0
2425	ldrb	r3, [r6, #82]	@ zero_extendqisi2
2426	mov	r0, r4
2427	ldr	r2, .L265+172
2428	mov	r1, #64
2429	bl	snprintf
2430	add	r4, r4, r0
2431	ldrh	r3, [r6, #76]
2432	mov	r0, r4
2433	ldr	r2, .L265+176
2434	mov	r1, #64
2435	bl	snprintf
2436	add	r4, r4, r0
2437	ldrb	r3, [r6, #84]	@ zero_extendqisi2
2438	mov	r0, r4
2439	ldr	r2, .L265+180
2440	mov	r1, #64
2441	bl	snprintf
2442	add	r4, r4, r0
2443	ldrh	r3, [r6, #80]
2444	mov	r0, r4
2445	ldr	r2, .L265+184
2446	mov	r1, #64
2447	bl	snprintf
2448	ldrh	r3, [r6, #76]
2449	ldr	r2, [r6, #72]
2450	add	r4, r4, r0
2451	mov	r0, r4
2452	mov	r1, #64
2453	lsl	r3, r3, #1
2454	ldrh	r3, [r2, r3]
2455	ldr	r2, .L265+188
2456	bl	snprintf
2457	add	r4, r4, r0
2458	ldrh	r3, [r6, #126]
2459	mov	r0, r4
2460	ldr	r2, .L265+192
2461	mov	r1, #64
2462	bl	snprintf
2463	add	r4, r4, r0
2464	ldrb	r3, [r6, #130]	@ zero_extendqisi2
2465	mov	r0, r4
2466	ldr	r2, .L265+196
2467	mov	r1, #64
2468	bl	snprintf
2469	add	r4, r4, r0
2470	ldrh	r3, [r6, #124]
2471	mov	r0, r4
2472	ldr	r2, .L265+200
2473	mov	r1, #64
2474	bl	snprintf
2475	add	r4, r4, r0
2476	ldrb	r3, [r6, #132]	@ zero_extendqisi2
2477	mov	r0, r4
2478	ldr	r2, .L265+204
2479	mov	r1, #64
2480	bl	snprintf
2481	add	r4, r4, r0
2482	ldrh	r3, [r6, #128]
2483	mov	r0, r4
2484	ldr	r2, .L265+208
2485	mov	r1, #64
2486	bl	snprintf
2487	add	r4, r4, r0
2488	ldrh	r3, [r6, #174]
2489	mov	r0, r4
2490	ldr	r2, .L265+212
2491	mov	r1, #64
2492	bl	snprintf
2493	add	r4, r4, r0
2494	ldrb	r3, [r6, #178]	@ zero_extendqisi2
2495	mov	r0, r4
2496	ldr	r2, .L265+216
2497	mov	r1, #64
2498	bl	snprintf
2499	add	r4, r4, r0
2500	ldrh	r3, [r6, #172]
2501	mov	r0, r4
2502	ldr	r2, .L265+220
2503	mov	r1, #64
2504	bl	snprintf
2505	add	r4, r4, r0
2506	ldrb	r3, [r6, #180]	@ zero_extendqisi2
2507	mov	r0, r4
2508	ldr	r2, .L265+224
2509	mov	r1, #64
2510	bl	snprintf
2511	add	r4, r4, r0
2512	ldrh	r3, [r6, #176]
2513	mov	r0, r4
2514	ldr	r2, .L265+228
2515	mov	r1, #64
2516	bl	snprintf
2517	ldr	r3, [r6, #2716]
2518	add	r4, r4, r0
2519	str	r3, [sp, #4]
2520	ldr	r3, [r6, #2724]
2521	mov	r0, r4
2522	ldr	r2, .L265+232
2523	mov	r1, #64
2524	str	r3, [sp]
2525	ldr	r3, [r6, #2720]
2526	bl	snprintf
2527	add	r4, r4, r0
2528	ldr	r3, [r6, #2712]
2529	mov	r0, r4
2530	ldr	r2, .L265+236
2531	mov	r1, #64
2532	bl	snprintf
2533	add	r4, r4, r0
2534	ldr	r3, [r6, #2736]
2535	mov	r0, r4
2536	ldr	r2, .L265+240
2537	mov	r1, #64
2538	bl	snprintf
2539	add	r3, r6, #3152
2540	add	r4, r4, r0
2541	ldr	r2, .L265+244
2542	mov	r0, r4
2543	mov	r1, #64
2544	ldrh	r3, [r3]
2545	bl	snprintf
2546	movw	r3, #3154
2547	add	r4, r4, r0
2548	ldr	r2, .L265+248
2549	ldrh	r3, [r6, r3]
2550	mov	r0, r4
2551	mov	r1, #64
2552	bl	snprintf
2553	add	r4, r4, r0
2554	ldr	r3, [r6, #3156]
2555	mov	r0, r4
2556	ldr	r2, .L265+252
2557	mov	r1, #64
2558	bl	snprintf
2559	movw	r3, #3160
2560	add	r4, r4, r0
2561	ldr	r2, .L265+256
2562	ldrh	r3, [r6, r3]
2563	mov	r1, #64
2564	mov	r0, r4
2565	bl	snprintf
2566	add	r4, r4, r0
2567	bl	GetFreeBlockMinEraseCount
2568	ldr	r2, .L265+260
2569	mov	r3, r0
2570	mov	r1, #64
2571	mov	r0, r4
2572	bl	snprintf
2573	add	r4, r4, r0
2574	ldrh	r0, [r6, #224]
2575	bl	GetFreeBlockMaxEraseCount
2576	ldr	r2, .L265+264
2577	mov	r3, r0
2578	mov	r1, #64
2579	mov	r0, r4
2580	bl	snprintf
2581	ldr	r3, .L265+268
2582	add	r4, r4, r0
2583	ldr	r3, [r3]
2584	cmp	r3, #1
2585	beq	.L254
2586.L259:
2587	sub	r0, r4, r7
2588	sub	sp, fp, #40
2589	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
2590.L254:
2591	ldrh	r3, [r6, #172]
2592	movw	r2, #65535
2593	cmp	r3, r2
2594	beq	.L256
2595	ldr	r2, [r6, #72]
2596	lsl	r3, r3, #1
2597	mov	r0, r4
2598	mov	r1, #64
2599	ldrh	r3, [r2, r3]
2600	ldr	r2, .L265+272
2601	bl	snprintf
2602	add	r4, r4, r0
2603.L256:
2604	mov	r0, #0
2605	ldr	r10, .L265+276
2606	bl	List_get_gc_head_node
2607	uxth	r0, r0
2608	mov	r5, #0
2609	movw	r9, #65535
2610.L258:
2611	ldr	r3, [r6, #2516]
2612	cmp	r0, r9
2613	beq	.L257
2614	mov	r8, #6
2615	lsl	r2, r0, #1
2616	ldr	r1, [r6, #2536]
2617	mul	r8, r8, r0
2618	ldrh	r1, [r1, r2]
2619	add	r3, r3, r8
2620	str	r1, [sp, #12]
2621	mov	r1, #64
2622	ldrh	r3, [r3, #4]
2623	str	r3, [sp, #8]
2624	ldr	r3, [r6, #72]
2625	ldrh	r3, [r3, r2]
2626	mov	r2, r10
2627	stm	sp, {r0, r3}
2628	mov	r3, r5
2629	mov	r0, r4
2630	add	r5, r5, #1
2631	bl	snprintf
2632	ldr	r3, [r6, #2516]
2633	add	r4, r4, r0
2634	cmp	r5, #16
2635	ldrh	r0, [r3, r8]
2636	bne	.L258
2637.L257:
2638	ldr	r3, [r6, #2516]
2639	mov	r8, #0
2640	ldr	r1, [r6, #2532]
2641	movw	r9, #65535
2642	ldr	r10, .L265+280
2643	sub	r1, r1, r3
2644	ldr	r3, .L265+284
2645	asr	r1, r1, #1
2646	mul	r1, r3, r1
2647	uxth	r1, r1
2648.L260:
2649	cmp	r1, r9
2650	beq	.L259
2651	ldr	r2, [r6, #2536]
2652	lsl	r3, r1, #1
2653	mov	r5, #6
2654	mov	r0, r4
2655	ldrh	r3, [r2, r3]
2656	mul	r5, r5, r1
2657	str	r3, [sp, #8]
2658	mov	r2, r10
2659	ldr	r3, [r6, #2516]
2660	add	r3, r3, r5
2661	ldrh	r3, [r3, #4]
2662	stm	sp, {r1, r3}
2663	mov	r3, r8
2664	mov	r1, #64
2665	add	r8, r8, #1
2666	bl	snprintf
2667	cmp	r8, #4
2668	add	r4, r4, r0
2669	beq	.L259
2670	ldr	r3, [r6, #2516]
2671	ldrh	r1, [r3, r5]
2672	b	.L260
2673.L266:
2674	.align	2
2675.L265:
2676	.word	.LANCHOR0
2677	.word	.LC9
2678	.word	.LC10
2679	.word	.LC11
2680	.word	.LC12
2681	.word	.LC13
2682	.word	.LC14
2683	.word	.LC15
2684	.word	.LC16
2685	.word	.LC17
2686	.word	.LC18
2687	.word	.LC19
2688	.word	.LC20
2689	.word	.LC21
2690	.word	.LC22
2691	.word	.LC23
2692	.word	.LC24
2693	.word	.LC25
2694	.word	.LC26
2695	.word	.LC27
2696	.word	.LC28
2697	.word	.LC29
2698	.word	.LC30
2699	.word	.LANCHOR0+2468
2700	.word	.LC31
2701	.word	.LC32
2702	.word	.LC33
2703	.word	.LC34
2704	.word	.LC35
2705	.word	.LC36
2706	.word	.LC37
2707	.word	.LC38
2708	.word	.LC39
2709	.word	.LC40
2710	.word	.LC41
2711	.word	.LC42
2712	.word	.LC43
2713	.word	.LC44
2714	.word	.LC45
2715	.word	.LC46
2716	.word	.LC47
2717	.word	.LC48
2718	.word	.LC49
2719	.word	.LC50
2720	.word	.LC51
2721	.word	.LC52
2722	.word	.LC53
2723	.word	.LC54
2724	.word	.LC55
2725	.word	.LC56
2726	.word	.LC57
2727	.word	.LC58
2728	.word	.LC59
2729	.word	.LC60
2730	.word	.LC61
2731	.word	.LC62
2732	.word	.LC63
2733	.word	.LC64
2734	.word	.LC65
2735	.word	.LC66
2736	.word	.LC67
2737	.word	.LC68
2738	.word	.LC69
2739	.word	.LC70
2740	.word	.LC71
2741	.word	.LC72
2742	.word	.LC73
2743	.word	.LANCHOR2
2744	.word	.LC74
2745	.word	.LC75
2746	.word	.LC76
2747	.word	-1431655765
2748	.size	FtlPrintInfo2buf, .-FtlPrintInfo2buf
2749	.section	.rodata.str1.1
2750.LC77:
2751	.ascii	"%s\012\000"
2752	.text
2753	.align	2
2754	.global	rknand_proc_ftlread
2755	.syntax unified
2756	.arm
2757	.fpu softvfp
2758	.type	rknand_proc_ftlread, %function
2759rknand_proc_ftlread:
2760	@ args = 0, pretend = 0, frame = 0
2761	@ frame_needed = 1, uses_anonymous_args = 0
2762	mov	ip, sp
2763	push	{r4, r5, fp, ip, lr, pc}
2764	sub	fp, ip, #4
2765	push	{lr}
2766	bl	__gnu_mcount_nc
2767	mov	r5, r1
2768	cmp	r0, #2048
2769	blt	.L269
2770	ldr	r3, .L270
2771	add	r4, r5, #30
2772	ldr	r2, .L270+4
2773	mov	r1, #64
2774	mov	r0, r5
2775	bl	snprintf
2776	mov	r0, r4
2777	bl	FtlPrintInfo2buf
2778	add	r0, r4, r0
2779	sub	r0, r0, r5
2780	ldmfd	sp, {r4, r5, fp, sp, pc}
2781.L269:
2782	mov	r0, #0
2783	ldmfd	sp, {r4, r5, fp, sp, pc}
2784.L271:
2785	.align	2
2786.L270:
2787	.word	.LC0
2788	.word	.LC77
2789	.size	rknand_proc_ftlread, .-rknand_proc_ftlread
2790	.section	.rodata.str1.1
2791.LC78:
2792	.ascii	"swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x"
2793	.ascii	"\012\000"
2794	.text
2795	.align	2
2796	.global	GetSwlReplaceBlock
2797	.syntax unified
2798	.arm
2799	.fpu softvfp
2800	.type	GetSwlReplaceBlock, %function
2801GetSwlReplaceBlock:
2802	@ args = 0, pretend = 0, frame = 8
2803	@ frame_needed = 1, uses_anonymous_args = 0
2804	mov	ip, sp
2805	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
2806	sub	fp, ip, #4
2807	sub	sp, sp, #28
2808	push	{lr}
2809	bl	__gnu_mcount_nc
2810	ldr	r4, .L296
2811	ldr	r2, [r4, #2604]
2812	ldr	r3, [r4, #2616]
2813	cmp	r2, r3
2814	bcs	.L273
2815	ldr	r2, [r4, #2536]
2816	mov	r3, #0
2817	ldrh	r1, [r4, #240]
2818	sub	r2, r2, #2
2819	str	r3, [r4, #2596]
2820.L274:
2821	ldr	r5, [r4, #2596]
2822	cmp	r1, r3
2823	bhi	.L275
2824	mov	r0, r5
2825	bl	__aeabi_uidiv
2826	ldr	r3, .L296+4
2827	str	r0, [r4, #2604]
2828	ldr	r0, [r4, #2600]
2829	ldrh	r1, [r3]
2830	sub	r0, r5, r0
2831	bl	__aeabi_uidiv
2832	str	r0, [r4, #2596]
2833.L276:
2834	ldr	r6, [r4, #2616]
2835	ldr	r9, [r4, #2604]
2836	add	r3, r6, #256
2837	cmp	r3, r9
2838	bls	.L281
2839	ldr	r2, [r4, #2612]
2840	add	r3, r6, #768
2841	cmp	r3, r2
2842	bls	.L281
2843.L283:
2844	movw	r5, #65535
2845.L282:
2846	mov	r0, r5
2847	sub	sp, fp, #40
2848	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
2849.L275:
2850	ldrh	r0, [r2, #2]!
2851	add	r3, r3, #1
2852	add	r5, r0, r5
2853	str	r5, [r4, #2596]
2854	b	.L274
2855.L273:
2856	ldr	r3, [r4, #2612]
2857	cmp	r2, r3
2858	addhi	r3, r3, #1
2859	strhi	r3, [r4, #2612]
2860	movhi	r3, #0
2861	bls	.L276
2862.L278:
2863	ldrh	r2, [r4, #240]
2864	cmp	r2, r3
2865	bls	.L276
2866	lsl	r1, r3, #1
2867	ldr	r0, [r4, #2536]
2868	add	r3, r3, #1
2869	ldrh	r2, [r0, r1]
2870	add	r2, r2, #1
2871	strh	r2, [r0, r1]	@ movhi
2872	b	.L278
2873.L281:
2874	ldrh	r0, [r4, #224]
2875	add	r0, r0, r0, lsl #1
2876	lsr	r0, r0, #2
2877	bl	GetFreeBlockMaxEraseCount
2878	add	r3, r6, #64
2879	mov	r7, r0
2880	cmp	r0, r3
2881	bcc	.L283
2882	ldr	r3, [r4, #2520]
2883	cmp	r3, #0
2884	beq	.L283
2885	ldrh	r2, [r4, #240]
2886	movw	r8, #65535
2887	ldr	ip, [r4, #2516]
2888	mov	r1, #0
2889	ldr	r10, [r4, #2536]
2890	mov	lr, #6
2891	str	r2, [fp, #-48]
2892	mov	r2, r8
2893.L284:
2894	ldrh	r0, [r3]
2895	movw	r5, #65535
2896	cmp	r0, r5
2897	bne	.L287
2898	mov	r5, r2
2899.L286:
2900	movw	r3, #65535
2901	cmp	r5, r3
2902	beq	.L283
2903	lsl	r1, r5, #1
2904	ldrh	r2, [r10, r1]
2905	cmp	r6, r2
2906	bcs	.L288
2907	str	r2, [fp, #-52]
2908	str	r1, [fp, #-48]
2909	bl	GetFreeBlockMinEraseCount
2910	ldr	r1, [fp, #-48]
2911	cmp	r6, r0
2912	ldr	r2, [fp, #-52]
2913	strcc	r8, [r4, #2616]
2914.L288:
2915	cmp	r9, r2
2916	bls	.L283
2917	add	r3, r2, #128
2918	cmp	r7, r3
2919	ble	.L283
2920	add	r0, r2, #256
2921	ldr	r3, [r4, #2612]
2922	cmp	r9, r0
2923	bhi	.L289
2924	add	r2, r2, #768
2925	cmp	r2, r3
2926	bcs	.L283
2927.L289:
2928	str	r7, [sp, #8]
2929	ldr	r0, .L296+8
2930	ldrh	r2, [r10, r1]
2931	str	r2, [sp, #4]
2932	ldr	r2, [r4, #72]
2933	ldrh	r2, [r2, r1]
2934	mov	r1, r5
2935	str	r2, [sp]
2936	mov	r2, r9
2937	bl	sftl_printk
2938	mov	r3, #1
2939	str	r3, [r4, #3164]
2940	b	.L282
2941.L287:
2942	add	r1, r1, #1
2943	ldr	r5, [fp, #-48]
2944	uxth	r1, r1
2945	cmp	r5, r1
2946	bcc	.L283
2947	ldrh	r5, [r3, #4]
2948	cmp	r5, #0
2949	beq	.L285
2950	sub	r3, r3, ip
2951	ldr	r5, .L296+12
2952	asr	r3, r3, #1
2953	mul	r3, r5, r3
2954	uxth	r5, r3
2955	lsl	r3, r5, #1
2956	ldrh	r3, [r10, r3]
2957	cmp	r6, r3
2958	bcs	.L286
2959	cmp	r3, r8
2960	movcc	r8, r3
2961	movcc	r2, r5
2962.L285:
2963	mla	r3, lr, r0, ip
2964	b	.L284
2965.L297:
2966	.align	2
2967.L296:
2968	.word	.LANCHOR0
2969	.word	.LANCHOR0+292
2970	.word	.LC78
2971	.word	-1431655765
2972	.size	GetSwlReplaceBlock, .-GetSwlReplaceBlock
2973	.align	2
2974	.global	free_data_superblock
2975	.syntax unified
2976	.arm
2977	.fpu softvfp
2978	.type	free_data_superblock, %function
2979free_data_superblock:
2980	@ args = 0, pretend = 0, frame = 0
2981	@ frame_needed = 1, uses_anonymous_args = 0
2982	mov	ip, sp
2983	push	{fp, ip, lr, pc}
2984	sub	fp, ip, #4
2985	push	{lr}
2986	bl	__gnu_mcount_nc
2987	movw	r2, #65535
2988	cmp	r0, r2
2989	beq	.L299
2990	ldr	r2, .L300
2991	lsl	r3, r0, #1
2992	mov	r1, #0
2993	ldr	r2, [r2, #72]
2994	strh	r1, [r2, r3]	@ movhi
2995	bl	INSERT_FREE_LIST
2996.L299:
2997	mov	r0, #0
2998	ldmfd	sp, {fp, sp, pc}
2999.L301:
3000	.align	2
3001.L300:
3002	.word	.LANCHOR0
3003	.size	free_data_superblock, .-free_data_superblock
3004	.align	2
3005	.global	get_new_active_ppa
3006	.syntax unified
3007	.arm
3008	.fpu softvfp
3009	.type	get_new_active_ppa, %function
3010get_new_active_ppa:
3011	@ args = 0, pretend = 0, frame = 0
3012	@ frame_needed = 1, uses_anonymous_args = 0
3013	mov	ip, sp
3014	push	{r4, r5, r6, r7, fp, ip, lr, pc}
3015	sub	fp, ip, #4
3016	push	{lr}
3017	bl	__gnu_mcount_nc
3018	ldrh	r2, [r0]
3019	movw	r3, #65535
3020	mov	r4, r0
3021	cmp	r2, r3
3022	bne	.L303
3023	ldr	r1, .L317
3024	movw	r2, #2792
3025	ldr	r0, .L317+4
3026	bl	sftl_printk
3027.L303:
3028	ldr	r6, .L317+8
3029	movw	r3, #302
3030	ldrh	r2, [r4, #2]
3031	ldrh	r3, [r6, r3]
3032	cmp	r2, r3
3033	bne	.L304
3034	ldr	r1, .L317
3035	movw	r2, #2793
3036	ldr	r0, .L317+4
3037	bl	sftl_printk
3038.L304:
3039	ldrh	r3, [r4, #4]
3040	cmp	r3, #0
3041	bne	.L305
3042	ldr	r1, .L317
3043	movw	r2, #2794
3044	ldr	r0, .L317+4
3045	bl	sftl_printk
3046.L305:
3047	ldrb	r3, [r4, #6]	@ zero_extendqisi2
3048	mov	r1, #0
3049	strb	r1, [r4, #10]
3050	movw	ip, #65535
3051	ldrh	r0, [r6, #232]
3052	add	r3, r4, r3, lsl #1
3053	ldrh	r5, [r3, #16]
3054.L306:
3055	ldrh	r2, [r4, #2]
3056	cmp	r5, ip
3057	beq	.L308
3058	movw	r3, #302
3059	ldrh	ip, [r6, r3]
3060	cmp	ip, r2
3061	movwls	r5, #65535
3062	bls	.L302
3063	ldrh	r3, [r4, #4]
3064	orr	r5, r2, r5, lsl #10
3065	ldrb	r2, [r4, #6]	@ zero_extendqisi2
3066	movw	lr, #65535
3067	sub	r3, r3, #1
3068	uxth	r3, r3
3069	strh	r3, [r4, #4]	@ movhi
3070.L311:
3071	add	r1, r2, #1
3072	uxtb	r2, r1
3073	cmp	r0, r2
3074	mov	r1, r2
3075	moveq	r2, #0
3076	ldrheq	r1, [r4, #2]
3077	addeq	r1, r1, #1
3078	strheq	r1, [r4, #2]	@ movhi
3079	add	r1, r4, r2, lsl #1
3080	ldrh	r1, [r1, #16]
3081	cmp	r1, lr
3082	beq	.L311
3083	strb	r2, [r4, #6]
3084	cmp	r3, #0
3085	ldrh	r2, [r4, #2]
3086	sub	r2, r2, ip
3087	clz	r2, r2
3088	lsr	r2, r2, #5
3089	moveq	r2, #0
3090	cmp	r2, #0
3091	beq	.L302
3092	ldr	r1, .L317
3093	movw	r2, #2817
3094	ldr	r0, .L317+4
3095	bl	sftl_printk
3096.L302:
3097	mov	r0, r5
3098	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
3099.L308:
3100	ldrb	r3, [r4, #6]	@ zero_extendqisi2
3101	add	r3, r3, #1
3102	uxtb	r3, r3
3103	strb	r3, [r4, #6]
3104	cmp	r3, r0
3105	strbeq	r1, [r4, #6]
3106	addeq	r2, r2, #1
3107	strheq	r2, [r4, #2]	@ movhi
3108	ldrb	r3, [r4, #6]	@ zero_extendqisi2
3109	add	r3, r4, r3, lsl #1
3110	ldrh	r5, [r3, #16]
3111	b	.L306
3112.L318:
3113	.align	2
3114.L317:
3115	.word	.LANCHOR1+111
3116	.word	.LC8
3117	.word	.LANCHOR0
3118	.size	get_new_active_ppa, .-get_new_active_ppa
3119	.align	2
3120	.global	FtlGcBufInit
3121	.syntax unified
3122	.arm
3123	.fpu softvfp
3124	.type	FtlGcBufInit, %function
3125FtlGcBufInit:
3126	@ args = 0, pretend = 0, frame = 0
3127	@ frame_needed = 1, uses_anonymous_args = 0
3128	mov	ip, sp
3129	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
3130	sub	fp, ip, #4
3131	push	{lr}
3132	bl	__gnu_mcount_nc
3133	ldr	r3, .L325
3134	mov	r1, #0
3135	ldr	r6, .L325+4
3136	mov	r4, #12
3137	mov	r5, #1
3138	mov	r7, #20
3139	str	r1, [r3, #3168]
3140.L320:
3141	ldrh	r2, [r3, #232]
3142	uxth	r0, r1
3143	cmp	r2, r0
3144	bhi	.L321
3145	ldr	r4, .L325+4
3146	mov	ip, #12
3147	mov	lr, #0
3148.L322:
3149	ldr	r1, [r3, #3188]
3150	cmp	r2, r1
3151	ldmfdcs	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
3152	ldrh	r0, [r4]
3153	mul	r5, ip, r2
3154	ldr	r6, [r3, #3172]
3155	add	r1, r6, r5
3156	mul	r0, r2, r0
3157	cmp	r0, #0
3158	str	lr, [r1, #8]
3159	add	r1, r0, #3
3160	movge	r1, r0
3161	ldr	r0, [r3, #3176]
3162	bic	r1, r1, #3
3163	add	r1, r0, r1
3164	str	r1, [r6, r5]
3165	ldr	r1, [r3, #3172]
3166	add	r5, r1, r5
3167	ldr	r1, .L325+8
3168	ldrh	r0, [r1]
3169	mul	r0, r2, r0
3170	add	r2, r2, #1
3171	cmp	r0, #0
3172	add	r1, r0, #3
3173	movge	r1, r0
3174	ldr	r0, [r3, #3180]
3175	bic	r1, r1, #3
3176	uxth	r2, r2
3177	add	r1, r0, r1
3178	str	r1, [r5, #4]
3179	b	.L322
3180.L321:
3181	uxth	ip, r1
3182	ldrh	lr, [r6]
3183	ldr	r8, [r3, #3172]
3184	add	r1, r1, #1
3185	mul	r0, r4, ip
3186	mul	lr, ip, lr
3187	add	r2, r8, r0
3188	cmp	lr, #0
3189	str	r5, [r2, #8]
3190	add	r2, lr, #3
3191	movge	r2, lr
3192	ldr	lr, [r3, #3176]
3193	bic	r2, r2, #3
3194	add	r2, lr, r2
3195	str	r2, [r8, r0]
3196	ldr	r2, .L325+8
3197	ldr	r8, [r3, #3172]
3198	add	lr, r8, r0
3199	ldrh	r9, [r2]
3200	mul	r9, ip, r9
3201	cmp	r9, #0
3202	add	r2, r9, #3
3203	movge	r2, r9
3204	ldr	r9, [r3, #3180]
3205	bic	r2, r2, #3
3206	add	r2, r9, r2
3207	str	r2, [lr, #4]
3208	ldr	r2, [r3, #3184]
3209	mla	ip, r7, ip, r2
3210	ldr	r2, [r8, r0]
3211	str	r2, [ip, #8]
3212	ldr	r2, [lr, #4]
3213	str	r2, [ip, #12]
3214	b	.L320
3215.L326:
3216	.align	2
3217.L325:
3218	.word	.LANCHOR0
3219	.word	.LANCHOR0+310
3220	.word	.LANCHOR0+312
3221	.size	FtlGcBufInit, .-FtlGcBufInit
3222	.align	2
3223	.global	FtlGcBufFree
3224	.syntax unified
3225	.arm
3226	.fpu softvfp
3227	.type	FtlGcBufFree, %function
3228FtlGcBufFree:
3229	@ args = 0, pretend = 0, frame = 0
3230	@ frame_needed = 1, uses_anonymous_args = 0
3231	mov	ip, sp
3232	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
3233	sub	fp, ip, #4
3234	push	{lr}
3235	bl	__gnu_mcount_nc
3236	ldr	r3, .L334
3237	mov	lr, #0
3238	mov	r8, lr
3239	mov	r5, #20
3240	mov	r7, #12
3241	ldr	r6, [r3, #3188]
3242	ldr	r4, [r3, #3172]
3243.L328:
3244	uxth	r3, lr
3245	cmp	r1, r3
3246	ldmfdls	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
3247	mla	ip, r5, r3, r0
3248	mov	r2, #0
3249.L329:
3250	uxth	r3, r2
3251	cmp	r6, r3
3252	bls	.L330
3253	mul	r3, r7, r3
3254	add	r2, r2, #1
3255	add	r9, r4, r3
3256	ldr	r10, [r4, r3]
3257	ldr	r3, [ip, #8]
3258	cmp	r10, r3
3259	bne	.L329
3260	str	r8, [r9, #8]
3261.L330:
3262	add	lr, lr, #1
3263	b	.L328
3264.L335:
3265	.align	2
3266.L334:
3267	.word	.LANCHOR0
3268	.size	FtlGcBufFree, .-FtlGcBufFree
3269	.align	2
3270	.global	FtlGcBufAlloc
3271	.syntax unified
3272	.arm
3273	.fpu softvfp
3274	.type	FtlGcBufAlloc, %function
3275FtlGcBufAlloc:
3276	@ args = 0, pretend = 0, frame = 0
3277	@ frame_needed = 1, uses_anonymous_args = 0
3278	mov	ip, sp
3279	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
3280	sub	fp, ip, #4
3281	push	{lr}
3282	bl	__gnu_mcount_nc
3283	ldr	r3, .L344
3284	mov	ip, #0
3285	mov	r6, #12
3286	mov	r7, #1
3287	mov	r8, #20
3288	ldr	r5, [r3, #3188]
3289	ldr	r4, [r3, #3172]
3290.L337:
3291	uxth	r2, ip
3292	cmp	r1, r2
3293	ldmfdls	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
3294	mov	lr, #0
3295.L338:
3296	uxth	r3, lr
3297	cmp	r5, r3
3298	bls	.L339
3299	mla	r3, r6, r3, r4
3300	add	lr, lr, #1
3301	ldr	r9, [r3, #8]
3302	cmp	r9, #0
3303	bne	.L338
3304	mla	r2, r8, r2, r0
3305	ldr	lr, [r3]
3306	str	r7, [r3, #8]
3307	str	lr, [r2, #8]
3308	ldr	r3, [r3, #4]
3309	str	r3, [r2, #12]
3310.L339:
3311	add	ip, ip, #1
3312	b	.L337
3313.L345:
3314	.align	2
3315.L344:
3316	.word	.LANCHOR0
3317	.size	FtlGcBufAlloc, .-FtlGcBufAlloc
3318	.align	2
3319	.global	IsBlkInGcList
3320	.syntax unified
3321	.arm
3322	.fpu softvfp
3323	.type	IsBlkInGcList, %function
3324IsBlkInGcList:
3325	@ args = 0, pretend = 0, frame = 0
3326	@ frame_needed = 1, uses_anonymous_args = 0
3327	mov	ip, sp
3328	push	{fp, ip, lr, pc}
3329	sub	fp, ip, #4
3330	push	{lr}
3331	bl	__gnu_mcount_nc
3332	ldr	r2, .L351
3333	movw	r1, #3196
3334	ldr	r3, [r2, #3192]
3335	ldrh	r2, [r2, r1]
3336	add	r2, r3, r2, lsl #1
3337.L347:
3338	cmp	r3, r2
3339	bne	.L349
3340	mov	r0, #0
3341	ldmfd	sp, {fp, sp, pc}
3342.L349:
3343	ldrh	r1, [r3], #2
3344	cmp	r1, r0
3345	bne	.L347
3346	mov	r0, #1
3347	ldmfd	sp, {fp, sp, pc}
3348.L352:
3349	.align	2
3350.L351:
3351	.word	.LANCHOR0
3352	.size	IsBlkInGcList, .-IsBlkInGcList
3353	.align	2
3354	.global	FtlGcUpdatePage
3355	.syntax unified
3356	.arm
3357	.fpu softvfp
3358	.type	FtlGcUpdatePage, %function
3359FtlGcUpdatePage:
3360	@ args = 0, pretend = 0, frame = 0
3361	@ frame_needed = 1, uses_anonymous_args = 0
3362	mov	ip, sp
3363	push	{r4, r5, r6, r7, fp, ip, lr, pc}
3364	sub	fp, ip, #4
3365	push	{lr}
3366	bl	__gnu_mcount_nc
3367	mov	r4, r0
3368	ubfx	r0, r0, #10, #16
3369	mov	r5, r1
3370	mov	r6, r2
3371	bl	P2V_block_in_plane
3372	ldr	r3, .L357
3373	movw	r2, #3196
3374	mov	ip, #0
3375	ldrh	r7, [r3, r2]
3376	ldr	r2, [r3, #3192]
3377	sub	r1, r2, #2
3378.L354:
3379	uxth	lr, ip
3380	cmp	r7, lr
3381	bhi	.L356
3382	bne	.L355
3383	lsl	ip, ip, #1
3384	movw	r1, #3196
3385	strh	r0, [r2, ip]	@ movhi
3386	ldrh	r2, [r3, r1]
3387	add	r2, r2, #1
3388	strh	r2, [r3, r1]	@ movhi
3389	b	.L355
3390.L356:
3391	ldrh	lr, [r1, #2]!
3392	add	ip, ip, #1
3393	cmp	lr, r0
3394	bne	.L354
3395.L355:
3396	movw	r2, #3204
3397	mov	r1, #12
3398	ldrh	ip, [r3, r2]
3399	mul	ip, r1, ip
3400	ldr	r1, [r3, #3200]
3401	add	r0, r1, ip
3402	stmib	r0, {r5, r6}
3403	str	r4, [r1, ip]
3404	ldrh	r1, [r3, r2]
3405	add	r1, r1, #1
3406	strh	r1, [r3, r2]	@ movhi
3407	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
3408.L358:
3409	.align	2
3410.L357:
3411	.word	.LANCHOR0
3412	.size	FtlGcUpdatePage, .-FtlGcUpdatePage
3413	.section	.rodata.str1.1
3414.LC79:
3415	.ascii	"FtlGcRefreshBlock  0x%x\012\000"
3416	.text
3417	.align	2
3418	.global	FtlGcRefreshBlock
3419	.syntax unified
3420	.arm
3421	.fpu softvfp
3422	.type	FtlGcRefreshBlock, %function
3423FtlGcRefreshBlock:
3424	@ args = 0, pretend = 0, frame = 0
3425	@ frame_needed = 1, uses_anonymous_args = 0
3426	mov	ip, sp
3427	push	{r4, r5, fp, ip, lr, pc}
3428	sub	fp, ip, #4
3429	push	{lr}
3430	bl	__gnu_mcount_nc
3431	mov	r4, r0
3432	mov	r1, r0
3433	ldr	r0, .L362
3434	bl	sftl_printk
3435	ldr	r3, .L362+4
3436	ldrh	r0, [r3, #222]
3437	cmp	r0, r4
3438	beq	.L360
3439	ldrh	r1, [r3, #220]
3440	cmp	r1, r4
3441	beq	.L360
3442	movw	r2, #65535
3443	cmp	r0, r2
3444	strheq	r4, [r3, #222]	@ movhi
3445	beq	.L360
3446	cmp	r1, r2
3447	strheq	r4, [r3, #220]	@ movhi
3448.L360:
3449	mov	r0, #0
3450	ldmfd	sp, {r4, r5, fp, sp, pc}
3451.L363:
3452	.align	2
3453.L362:
3454	.word	.LC79
3455	.word	.LANCHOR0
3456	.size	FtlGcRefreshBlock, .-FtlGcRefreshBlock
3457	.section	.rodata.str1.1
3458.LC80:
3459	.ascii	"FtlGcMarkBadPhyBlk %d 0x%x\012\000"
3460	.text
3461	.align	2
3462	.global	FtlGcMarkBadPhyBlk
3463	.syntax unified
3464	.arm
3465	.fpu softvfp
3466	.type	FtlGcMarkBadPhyBlk, %function
3467FtlGcMarkBadPhyBlk:
3468	@ args = 0, pretend = 0, frame = 0
3469	@ frame_needed = 1, uses_anonymous_args = 0
3470	mov	ip, sp
3471	push	{r4, r5, r6, r7, fp, ip, lr, pc}
3472	sub	fp, ip, #4
3473	push	{lr}
3474	bl	__gnu_mcount_nc
3475	ldr	r5, .L368
3476	movw	r7, #3206
3477	mov	r4, r0
3478	bl	P2V_block_in_plane
3479	mov	r2, r4
3480	mov	r6, r0
3481	ldr	r0, .L368+4
3482	ldrh	r1, [r5, r7]
3483	bl	sftl_printk
3484	mov	r0, r6
3485	bl	FtlGcRefreshBlock
3486	ldr	r1, .L368+8
3487	ldrh	r3, [r5, r7]
3488	mov	r2, #0
3489	mov	r0, r1
3490.L365:
3491	uxth	ip, r2
3492	cmp	r3, ip
3493	bhi	.L367
3494	cmp	r3, #15
3495	bhi	.L366
3496	add	r1, r3, #1
3497	lsl	r3, r3, #1
3498	movw	r2, #3206
3499	strh	r4, [r0, r3]	@ movhi
3500	strh	r1, [r5, r2]	@ movhi
3501	b	.L366
3502.L367:
3503	ldrh	ip, [r1], #2
3504	add	r2, r2, #1
3505	cmp	ip, r4
3506	bne	.L365
3507.L366:
3508	mov	r0, #0
3509	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
3510.L369:
3511	.align	2
3512.L368:
3513	.word	.LANCHOR0
3514	.word	.LC80
3515	.word	.LANCHOR0+3208
3516	.size	FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
3517	.align	2
3518	.global	FtlGcReFreshBadBlk
3519	.syntax unified
3520	.arm
3521	.fpu softvfp
3522	.type	FtlGcReFreshBadBlk, %function
3523FtlGcReFreshBadBlk:
3524	@ args = 0, pretend = 0, frame = 0
3525	@ frame_needed = 1, uses_anonymous_args = 0
3526	mov	ip, sp
3527	push	{r4, r5, fp, ip, lr, pc}
3528	sub	fp, ip, #4
3529	push	{lr}
3530	bl	__gnu_mcount_nc
3531	ldr	r4, .L376
3532	movw	r3, #3206
3533	ldrh	r2, [r4, r3]
3534	cmp	r2, #0
3535	beq	.L371
3536	ldrh	r1, [r4, #222]
3537	movw	r3, #65535
3538	cmp	r1, r3
3539	bne	.L371
3540	movw	r3, #3242
3541	movw	r5, #3242
3542	ldrh	r1, [r4, r3]
3543	cmp	r1, r2
3544	movcs	r2, #0
3545	strhcs	r2, [r4, r3]	@ movhi
3546	ldr	r2, .L376+4
3547	ldrh	r3, [r4, r5]
3548	lsl	r3, r3, #1
3549	ldrh	r0, [r2, r3]
3550	bl	P2V_block_in_plane
3551	bl	FtlGcRefreshBlock
3552	ldrh	r3, [r4, r5]
3553	add	r3, r3, #1
3554	strh	r3, [r4, r5]	@ movhi
3555.L371:
3556	mov	r0, #0
3557	ldmfd	sp, {r4, r5, fp, sp, pc}
3558.L377:
3559	.align	2
3560.L376:
3561	.word	.LANCHOR0
3562	.word	.LANCHOR0+3208
3563	.size	FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
3564	.align	2
3565	.global	ftl_malloc
3566	.syntax unified
3567	.arm
3568	.fpu softvfp
3569	.type	ftl_malloc, %function
3570ftl_malloc:
3571	@ args = 0, pretend = 0, frame = 0
3572	@ frame_needed = 1, uses_anonymous_args = 0
3573	mov	ip, sp
3574	push	{fp, ip, lr, pc}
3575	sub	fp, ip, #4
3576	push	{lr}
3577	bl	__gnu_mcount_nc
3578	movw	r1, #3265
3579	bl	__kmalloc
3580	ldmfd	sp, {fp, sp, pc}
3581	.size	ftl_malloc, .-ftl_malloc
3582	.align	2
3583	.global	ftl_free
3584	.syntax unified
3585	.arm
3586	.fpu softvfp
3587	.type	ftl_free, %function
3588ftl_free:
3589	@ args = 0, pretend = 0, frame = 0
3590	@ frame_needed = 1, uses_anonymous_args = 0
3591	mov	ip, sp
3592	push	{fp, ip, lr, pc}
3593	sub	fp, ip, #4
3594	push	{lr}
3595	bl	__gnu_mcount_nc
3596	bl	kfree
3597	ldmfd	sp, {fp, sp, pc}
3598	.size	ftl_free, .-ftl_free
3599	.section	.rodata.str1.1
3600.LC81:
3601	.ascii	"%s %p + 0x%x:\000"
3602.LC82:
3603	.ascii	"0x%08x,\000"
3604.LC83:
3605	.ascii	"0x%04x,\000"
3606.LC84:
3607	.ascii	"0x%02x,\000"
3608.LC85:
3609	.ascii	"\012\000"
3610	.text
3611	.align	2
3612	.global	rknand_print_hex
3613	.syntax unified
3614	.arm
3615	.fpu softvfp
3616	.type	rknand_print_hex, %function
3617rknand_print_hex:
3618	@ args = 0, pretend = 0, frame = 8
3619	@ frame_needed = 1, uses_anonymous_args = 0
3620	mov	ip, sp
3621	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
3622	sub	fp, ip, #4
3623	sub	sp, sp, #12
3624	push	{lr}
3625	bl	__gnu_mcount_nc
3626	ldr	r10, .L389
3627	mov	r7, #0
3628	mov	r9, r0
3629	mov	r5, r1
3630	mov	r8, r2
3631	mov	r6, r7
3632	mov	r4, r7
3633	str	r3, [fp, #-48]
3634.L381:
3635	ldr	r3, [fp, #-48]
3636	cmp	r3, r4
3637	bhi	.L387
3638	ldr	r0, .L389+4
3639	bl	sftl_printk
3640	sub	sp, fp, #40
3641	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
3642.L387:
3643	cmp	r6, #0
3644	bne	.L382
3645	ldr	r0, .L389+8
3646	mov	r3, r7
3647	mov	r2, r5
3648	mov	r1, r9
3649	bl	sftl_printk
3650.L382:
3651	cmp	r8, #4
3652	ldreq	r1, [r5, r4, lsl #2]
3653	ldreq	r0, .L389+12
3654	beq	.L388
3655	cmp	r8, #2
3656	lsleq	r3, r4, #1
3657	movne	r0, r10
3658	ldreq	r0, .L389+16
3659	ldrheq	r1, [r5, r3]
3660	ldrbne	r1, [r5, r4]	@ zero_extendqisi2
3661.L388:
3662	add	r6, r6, #1
3663	bl	sftl_printk
3664	cmp	r6, #15
3665	bls	.L386
3666	mov	r6, #0
3667	ldr	r0, .L389+4
3668	bl	sftl_printk
3669.L386:
3670	add	r4, r4, #1
3671	add	r7, r7, r8
3672	b	.L381
3673.L390:
3674	.align	2
3675.L389:
3676	.word	.LC84
3677	.word	.LC85
3678	.word	.LC81
3679	.word	.LC82
3680	.word	.LC83
3681	.size	rknand_print_hex, .-rknand_print_hex
3682	.section	.rodata.str1.1
3683.LC86:
3684	.ascii	"%s: addr: %x is in id block!!!!!!!!!!\012\000"
3685.LC87:
3686	.ascii	"not free: w: d:\000"
3687.LC88:
3688	.ascii	"not free: w: s:\000"
3689	.text
3690	.align	2
3691	.global	FlashEraseBlocks
3692	.syntax unified
3693	.arm
3694	.fpu softvfp
3695	.type	FlashEraseBlocks, %function
3696FlashEraseBlocks:
3697	@ args = 0, pretend = 0, frame = 32
3698	@ frame_needed = 1, uses_anonymous_args = 0
3699	mov	ip, sp
3700	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
3701	sub	fp, ip, #4
3702	sub	sp, sp, #36
3703	push	{lr}
3704	bl	__gnu_mcount_nc
3705	mov	r3, sp
3706	ldr	r10, .L407
3707	bic	r9, r3, #8128
3708	mov	r5, r0
3709	bic	r9, r9, #63
3710	mov	r7, r2
3711	mov	r4, #0
3712	ldr	r3, [r9, #24]
3713	str	r3, [fp, #-48]
3714	ldrh	r3, [r10, #12]
3715	str	r3, [fp, #-64]
3716	lsl	r3, r3, #3
3717	str	r3, [fp, #-68]
3718	add	r3, r2, r2, lsl #2
3719	str	r3, [fp, #-72]
3720.L392:
3721	ldr	r3, [fp, #-72]
3722	cmp	r4, r3
3723	beq	.L395
3724	sub	r2, fp, #56
3725	sub	r1, fp, #52
3726	add	r0, r5, r4, lsl #2
3727	mov	r6, r5
3728	bl	l2p_addr_tran
3729	ldr	r8, [fp, #-56]
3730	cmp	r8, #0
3731	bne	.L393
3732	ldr	r2, [fp, #-52]
3733	ldr	r3, [fp, #-68]
3734	cmp	r3, r2
3735	bls	.L393
3736	ldr	r5, .L407+4
3737	ldr	r4, .L407+8
3738.L394:
3739	mvn	r3, #0
3740	ldr	r2, [fp, #-52]
3741	str	r3, [r6]
3742	mov	r1, r5
3743	mov	r0, r4
3744	add	r8, r8, #1
3745	bl	sftl_printk
3746	ldr	r1, [r6, #8]
3747	ldr	r0, .L407+12
3748	mov	r3, #16
3749	mov	r2, #4
3750	add	r6, r6, #20
3751	bl	rknand_print_hex
3752	mov	r3, #4
3753	ldr	r1, [r6, #-8]
3754	mov	r2, r3
3755	ldr	r0, .L407+16
3756	bl	rknand_print_hex
3757	cmp	r7, r8
3758	bne	.L394
3759	bl	dump_stack
3760.L395:
3761	ldr	r2, [fp, #-48]
3762	ldr	r3, [r9, #24]
3763	cmp	r2, r3
3764	beq	.L402
3765	bl	__stack_chk_fail
3766.L393:
3767	ldr	r2, [r10, #3248]
3768	uxtb	r0, r8
3769	ldr	r1, [fp, #-52]
3770	blx	r2
3771	cmp	r0, #0
3772	streq	r0, [r5, r4, lsl #2]
3773	mvnne	r2, #0
3774	strne	r2, [r5, r4, lsl #2]
3775	ldrh	r2, [r10, #14]
3776	cmp	r2, #4
3777	bne	.L399
3778	ldr	r1, [fp, #-52]
3779	ldr	r3, [fp, #-64]
3780	ldr	r2, [r10, #3248]
3781	ldrb	r0, [fp, #-56]	@ zero_extendqisi2
3782	add	r1, r3, r1
3783	blx	r2
3784	cmp	r0, #0
3785	mvnne	r2, #0
3786	strne	r2, [r5, r4, lsl #2]
3787.L399:
3788	add	r4, r4, #5
3789	b	.L392
3790.L402:
3791	mov	r0, #0
3792	sub	sp, fp, #40
3793	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
3794.L408:
3795	.align	2
3796.L407:
3797	.word	.LANCHOR0
3798	.word	.LANCHOR1+130
3799	.word	.LC86
3800	.word	.LC87
3801	.word	.LC88
3802	.size	FlashEraseBlocks, .-FlashEraseBlocks
3803	.align	2
3804	.global	FtlFreeSysBlkQueueIn
3805	.syntax unified
3806	.arm
3807	.fpu softvfp
3808	.type	FtlFreeSysBlkQueueIn, %function
3809FtlFreeSysBlkQueueIn:
3810	@ args = 0, pretend = 0, frame = 0
3811	@ frame_needed = 1, uses_anonymous_args = 0
3812	mov	ip, sp
3813	push	{r4, r5, r6, r7, fp, ip, lr, pc}
3814	sub	fp, ip, #4
3815	push	{lr}
3816	bl	__gnu_mcount_nc
3817	sub	r3, r0, #1
3818	movw	r2, #65533
3819	mov	r6, r0
3820	uxth	r3, r3
3821	cmp	r3, r2
3822	ldmfdhi	sp, {r4, r5, r6, r7, fp, sp, pc}
3823	ldr	r7, .L418
3824	add	r4, r7, #412
3825	ldrh	r3, [r4, #6]
3826	cmp	r3, #1024
3827	ldmfdeq	sp, {r4, r5, r6, r7, fp, sp, pc}
3828	cmp	r1, #0
3829	beq	.L411
3830	bl	P2V_block_in_plane
3831	mov	r5, r0
3832	ldr	r0, [r7, #3268]
3833	lsl	r3, r6, #10
3834	mov	r2, #1
3835	mov	r1, r2
3836	str	r3, [r0, #4]
3837	bl	FlashEraseBlocks
3838	lsl	r3, r5, #1
3839	ldr	r1, [r7, #2536]
3840	ldrh	r2, [r1, r3]
3841	add	r2, r2, #1
3842	strh	r2, [r1, r3]	@ movhi
3843	ldr	r3, [r7, #2608]
3844	add	r3, r3, #1
3845	str	r3, [r7, #2608]
3846.L411:
3847	ldrh	r3, [r4, #6]
3848	add	r3, r3, #1
3849	strh	r3, [r4, #6]	@ movhi
3850	ldrh	r3, [r4, #4]
3851	add	r2, r4, r3, lsl #1
3852	add	r3, r3, #1
3853	ubfx	r3, r3, #0, #10
3854	strh	r3, [r4, #4]	@ movhi
3855	strh	r6, [r2, #8]	@ movhi
3856	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
3857.L419:
3858	.align	2
3859.L418:
3860	.word	.LANCHOR0
3861	.size	FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
3862	.section	.rodata.str1.1
3863.LC89:
3864	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d, error\012"
3865	.ascii	"\000"
3866	.text
3867	.align	2
3868	.global	FtlFreeSysBlkQueueOut
3869	.syntax unified
3870	.arm
3871	.fpu softvfp
3872	.type	FtlFreeSysBlkQueueOut, %function
3873FtlFreeSysBlkQueueOut:
3874	@ args = 0, pretend = 0, frame = 0
3875	@ frame_needed = 1, uses_anonymous_args = 0
3876	mov	ip, sp
3877	push	{r4, r5, r6, r7, fp, ip, lr, pc}
3878	sub	fp, ip, #4
3879	push	{lr}
3880	bl	__gnu_mcount_nc
3881	ldr	r6, .L425
3882	add	r4, r6, #412
3883	ldrh	r2, [r4, #6]
3884	cmp	r2, #0
3885	movweq	r5, #65535
3886	beq	.L421
3887	ldrh	r3, [r4, #2]
3888	sub	r2, r2, #1
3889	ldr	r0, [r6, #3268]
3890	strh	r2, [r4, #6]	@ movhi
3891	mov	r2, #1
3892	add	r1, r4, r3, lsl #1
3893	add	r3, r3, #1
3894	ubfx	r3, r3, #0, #10
3895	strh	r3, [r4, #2]	@ movhi
3896	ldrh	r5, [r1, #8]
3897	mov	r1, r2
3898	lsl	r3, r5, #10
3899	str	r3, [r0, #4]
3900	bl	FlashEraseBlocks
3901	ldr	r3, [r6, #2608]
3902	movw	r2, #65533
3903	add	r3, r3, #1
3904	str	r3, [r6, #2608]
3905	sub	r3, r5, #1
3906	uxth	r3, r3
3907	cmp	r3, r2
3908	bls	.L422
3909.L421:
3910	ldrh	r2, [r4, #6]
3911	mov	r1, r5
3912	ldr	r0, .L425+4
3913	bl	sftl_printk
3914.L423:
3915	b	.L423
3916.L422:
3917	mov	r0, r5
3918	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
3919.L426:
3920	.align	2
3921.L425:
3922	.word	.LANCHOR0
3923	.word	.LC89
3924	.size	FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
3925	.section	.rodata.str1.1
3926.LC90:
3927	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d\012\000"
3928	.text
3929	.align	2
3930	.global	ftl_map_blk_alloc_new_blk
3931	.syntax unified
3932	.arm
3933	.fpu softvfp
3934	.type	ftl_map_blk_alloc_new_blk, %function
3935ftl_map_blk_alloc_new_blk:
3936	@ args = 0, pretend = 0, frame = 0
3937	@ frame_needed = 1, uses_anonymous_args = 0
3938	mov	ip, sp
3939	push	{r4, r5, r6, r7, fp, ip, lr, pc}
3940	sub	fp, ip, #4
3941	push	{lr}
3942	bl	__gnu_mcount_nc
3943	ldrh	r1, [r0, #10]
3944	mov	r4, r0
3945	ldr	r2, [r0, #12]
3946	mov	r3, #0
3947.L428:
3948	uxth	r5, r3
3949	cmp	r1, r5
3950	bls	.L433
3951	mov	r7, r2
3952	add	r3, r3, #1
3953	add	r2, r2, #2
3954	ldrh	r6, [r7]
3955	cmp	r6, #0
3956	bne	.L428
3957	bl	FtlFreeSysBlkQueueOut
3958	sub	r3, r0, #1
3959	movw	r2, #65533
3960	mov	r1, r0
3961	uxth	r3, r3
3962	strh	r0, [r7]	@ movhi
3963	cmp	r3, r2
3964	bls	.L429
3965	ldr	r3, .L435
3966	ldr	r0, .L435+4
3967	ldrh	r2, [r3, #6]
3968	bl	sftl_printk
3969.L430:
3970	b	.L430
3971.L429:
3972	ldr	r3, [r4, #28]
3973	strh	r6, [r4, #2]	@ movhi
3974	add	r3, r3, #1
3975	str	r3, [r4, #28]
3976	ldrh	r3, [r4, #8]
3977	strh	r5, [r4]	@ movhi
3978	add	r3, r3, #1
3979	strh	r3, [r4, #8]	@ movhi
3980	ldrh	r3, [r4, #10]
3981	cmp	r3, r5
3982	bhi	.L431
3983.L433:
3984	ldr	r1, .L435+8
3985	movw	r2, #578
3986	ldr	r0, .L435+12
3987	bl	sftl_printk
3988.L431:
3989	mov	r0, #0
3990	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
3991.L436:
3992	.align	2
3993.L435:
3994	.word	.LANCHOR0+412
3995	.word	.LC90
3996	.word	.LANCHOR1+147
3997	.word	.LC8
3998	.size	ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
3999	.align	2
4000	.global	ftl_memset
4001	.syntax unified
4002	.arm
4003	.fpu softvfp
4004	.type	ftl_memset, %function
4005ftl_memset:
4006	@ args = 0, pretend = 0, frame = 0
4007	@ frame_needed = 1, uses_anonymous_args = 0
4008	mov	ip, sp
4009	push	{fp, ip, lr, pc}
4010	sub	fp, ip, #4
4011	push	{lr}
4012	bl	__gnu_mcount_nc
4013	bl	memset
4014	ldmfd	sp, {fp, sp, pc}
4015	.size	ftl_memset, .-ftl_memset
4016	.section	.rodata.str1.1
4017.LC91:
4018	.ascii	"%s error allocating memory. return -1\012\000"
4019	.text
4020	.align	2
4021	.global	FtlMemInit
4022	.syntax unified
4023	.arm
4024	.fpu softvfp
4025	.type	FtlMemInit, %function
4026FtlMemInit:
4027	@ args = 0, pretend = 0, frame = 0
4028	@ frame_needed = 1, uses_anonymous_args = 0
4029	mov	ip, sp
4030	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
4031	sub	fp, ip, #4
4032	push	{lr}
4033	bl	__gnu_mcount_nc
4034	ldr	r4, .L537
4035	movw	r3, #65535
4036	mov	r2, #32
4037	movw	r6, #306
4038	mov	r5, #0
4039	mov	r7, #12
4040	mov	r8, #80
4041	add	r9, r4, #312
4042	str	r3, [r4, #3276]
4043	mvn	r3, #0
4044	strh	r3, [r4, #222]	@ movhi
4045	strh	r3, [r4, #220]	@ movhi
4046	add	r3, r4, #3152
4047	ldrh	r0, [r4, r6]
4048	str	r5, [r4, #2588]
4049	strh	r2, [r3]	@ movhi
4050	movw	r3, #3154
4051	mov	r2, #128
4052	lsl	r0, r0, #1
4053	strh	r2, [r4, r3]	@ movhi
4054	movw	r3, #3160
4055	str	r5, [r4, #2592]
4056	strh	r5, [r4, r3]	@ movhi
4057	movw	r3, #3206
4058	str	r5, [r4, #2576]
4059	strh	r5, [r4, r3]	@ movhi
4060	movw	r3, #3242
4061	str	r5, [r4, #2564]
4062	strh	r5, [r4, r3]	@ movhi
4063	str	r5, [r4, #2560]
4064	str	r5, [r4, #2568]
4065	str	r5, [r4, #2572]
4066	str	r5, [r4, #2556]
4067	str	r5, [r4, #2596]
4068	str	r5, [r4, #2600]
4069	str	r5, [r4, #2608]
4070	str	r5, [r4, #2612]
4071	str	r5, [r4, #2616]
4072	str	r5, [r4, #3272]
4073	str	r5, [r4, #3164]
4074	str	r5, [r4, #3280]
4075	str	r5, [r4, #3156]
4076	str	r5, [r4, #3284]
4077	bl	ftl_malloc
4078	str	r0, [r4, #3192]
4079	ldrh	r0, [r4, r6]
4080	mul	r0, r7, r0
4081	bl	ftl_malloc
4082	ldrh	r6, [r4, #232]
4083	str	r0, [r4, #3200]
4084	mul	r8, r8, r6
4085	mov	r0, r8
4086	bl	ftl_malloc
4087	mov	r3, #20
4088	str	r0, [r4, #3288]
4089	mul	r6, r3, r6
4090	mov	r0, r6
4091	bl	ftl_malloc
4092	str	r0, [r4, #3292]
4093	mov	r0, r8
4094	movw	r8, #310
4095	bl	ftl_malloc
4096	str	r0, [r4, #3296]
4097	mov	r0, r6
4098	bl	ftl_malloc
4099	str	r0, [r4, #3268]
4100	mov	r0, r6
4101	bl	ftl_malloc
4102	ldrh	r3, [r4, #232]
4103	ldrh	r6, [r4, r8]
4104	str	r0, [r4, #3184]
4105	lsl	r3, r3, #1
4106	mov	r0, r6
4107	add	r3, r3, #1
4108	str	r3, [r4, #3188]
4109	bl	ftl_malloc
4110	str	r0, [r4, #3300]
4111	mov	r0, r6
4112	bl	ftl_malloc
4113	str	r0, [r4, #3304]
4114	mov	r0, r6
4115	bl	ftl_malloc
4116	str	r0, [r4, #3308]
4117	ldr	r0, [r4, #3188]
4118	mul	r0, r0, r6
4119	bl	ftl_malloc
4120	str	r0, [r4, #3176]
4121	mov	r0, r6
4122	bl	ftl_malloc
4123	str	r0, [r4, #3312]
4124	mov	r0, r6
4125	bl	ftl_malloc
4126	str	r0, [r4, #3316]
4127	ldr	r0, [r4, #3188]
4128	mul	r0, r7, r0
4129	bl	ftl_malloc
4130	str	r0, [r4, #3172]
4131	mov	r0, r6
4132	bl	ftl_malloc
4133	str	r0, [r4, #3320]
4134	mov	r0, r6
4135	bl	ftl_malloc
4136	movw	r3, #258
4137	str	r0, [r4, #3324]
4138	ldrh	r0, [r4, r3]
4139	lsl	r0, r0, #2
4140	bl	ftl_malloc
4141	ldrh	r3, [r4, #232]
4142	ldrh	r6, [r9]
4143	str	r0, [r4, #3328]
4144	mul	r6, r3, r6
4145	mov	r0, r6
4146	bl	ftl_malloc
4147	str	r0, [r4, #3332]
4148	lsl	r0, r6, #2
4149	movw	r6, #3340
4150	bl	ftl_malloc
4151	ldrh	r3, [r9]
4152	str	r0, [r4, #3336]
4153	ldr	r0, [r4, #3188]
4154	mul	r0, r0, r3
4155	bl	ftl_malloc
4156	str	r0, [r4, #3180]
4157	ldrh	r0, [r4, #242]
4158	lsl	r0, r0, #1
4159	uxth	r0, r0
4160	strh	r0, [r4, r6]	@ movhi
4161	bl	ftl_malloc
4162	str	r0, [r4, #3344]
4163	ldrh	r0, [r4, r6]
4164	add	r0, r0, #544
4165	add	r0, r0, #3
4166	lsr	r3, r0, #9
4167	bic	r0, r0, #508
4168	bic	r0, r0, #3
4169	strh	r3, [r4, r6]	@ movhi
4170	bl	ftl_malloc
4171	ldrh	r6, [r4, #242]
4172	str	r0, [r4, #3348]
4173	add	r0, r0, #32
4174	str	r0, [r4, #2536]
4175	lsl	r6, r6, #1
4176	mov	r0, r6
4177	bl	ftl_malloc
4178	str	r0, [r4, #3352]
4179	mov	r0, r6
4180	bl	ftl_malloc
4181	ldr	r6, [r4, #328]
4182	str	r0, [r4, #72]
4183	lsl	r6, r6, #1
4184	mov	r0, r6
4185	bl	ftl_malloc
4186	str	r0, [r4, #3356]
4187	mov	r0, r6
4188	add	r6, r4, #320
4189	bl	ftl_malloc
4190	str	r0, [r4, #3360]
4191	ldrh	r0, [r6]
4192	lsl	r0, r0, #1
4193	bl	ftl_malloc
4194	str	r0, [r4, #348]
4195	ldrh	r0, [r6]
4196	lsl	r0, r0, #1
4197	bl	ftl_malloc
4198	str	r0, [r4, #3364]
4199	ldrh	r0, [r6]
4200	movw	r6, #322
4201	lsl	r0, r0, #2
4202	bl	ftl_malloc
4203	str	r0, [r4, #3368]
4204	ldrh	r0, [r4, r6]
4205	lsl	r0, r0, #2
4206	bl	ftl_malloc
4207	ldrh	r2, [r4, r6]
4208	mov	r1, r5
4209	str	r0, [r4, #3372]
4210	movw	r5, #338
4211	movw	r6, #3388
4212	lsl	r2, r2, #2
4213	bl	ftl_memset
4214	add	r3, r4, #336
4215	ldrh	r0, [r3]
4216	lsl	r0, r0, #2
4217	bl	ftl_malloc
4218	str	r0, [r4, #3376]
4219	ldr	r0, [r4, #328]
4220	lsl	r0, r0, #2
4221	bl	ftl_malloc
4222	str	r0, [r4, #3380]
4223	ldrh	r0, [r4, r5]
4224	mul	r0, r7, r0
4225	bl	ftl_malloc
4226	ldrh	r3, [r4, r5]
4227	str	r0, [r4, #2540]
4228	ldrh	r0, [r4, r8]
4229	mul	r0, r0, r3
4230	bl	ftl_malloc
4231	ldrh	r3, [r4, #242]
4232	str	r0, [r4, #3384]
4233	mov	r0, #6
4234	mul	r0, r0, r3
4235	bl	ftl_malloc
4236	movw	r3, #298
4237	str	r0, [r4, #2516]
4238	ldrh	r0, [r4, r3]
4239	ldrh	r3, [r4, #254]
4240	add	r0, r0, #31
4241	asr	r0, r0, #5
4242	strh	r0, [r4, r6]	@ movhi
4243	mul	r0, r0, r3
4244	lsl	r0, r0, #2
4245	bl	ftl_malloc
4246	ldrh	r2, [r4, r6]
4247	ldrh	r3, [r4, #254]
4248	mov	r5, r0
4249	str	r0, [r4, #380]
4250	mov	r1, #1
4251	lsl	ip, r2, #2
4252	add	r2, r0, r2, lsl #2
4253	add	r0, r4, #384
4254.L439:
4255	cmp	r3, r1
4256	bhi	.L440
4257	cmp	r3, #0
4258	ldr	r0, .L537+4
4259	mov	r1, #0
4260	moveq	r3, #1
4261	rsb	r2, r3, #8
4262	add	r3, r3, #7
4263	lsl	r2, r2, #2
4264	add	r0, r0, r3, lsl #2
4265	bl	memset
4266	ldr	r3, [r4, #3356]
4267	cmp	r3, #0
4268	bne	.L441
4269.L443:
4270	ldr	r1, .L537+8
4271	ldr	r0, .L537+12
4272	bl	sftl_printk
4273	mvn	r0, #0
4274	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
4275.L440:
4276	str	r2, [r0], #4
4277	add	r1, r1, #1
4278	add	r2, r2, ip
4279	b	.L439
4280.L441:
4281	ldr	r3, [r4, #3360]
4282	cmp	r3, #0
4283	beq	.L443
4284	ldr	r3, [r4, #3376]
4285	cmp	r3, #0
4286	beq	.L443
4287	ldr	r3, [r4, #3380]
4288	cmp	r3, #0
4289	beq	.L443
4290	ldr	r3, [r4, #2540]
4291	cmp	r3, #0
4292	beq	.L443
4293	ldr	r3, [r4, #3384]
4294	cmp	r3, #0
4295	beq	.L443
4296	ldr	r3, [r4, #2516]
4297	cmp	r3, #0
4298	beq	.L443
4299	cmp	r5, #0
4300	beq	.L443
4301	ldr	r3, [r4, #72]
4302	cmp	r3, #0
4303	beq	.L443
4304	ldr	r3, [r4, #3192]
4305	cmp	r3, #0
4306	beq	.L443
4307	ldr	r3, [r4, #3200]
4308	cmp	r3, #0
4309	beq	.L443
4310	ldr	r3, [r4, #3288]
4311	cmp	r3, #0
4312	beq	.L443
4313	ldr	r3, [r4, #3296]
4314	cmp	r3, #0
4315	beq	.L443
4316	ldr	r3, [r4, #3268]
4317	cmp	r3, #0
4318	beq	.L443
4319	ldr	r3, [r4, #3184]
4320	cmp	r3, #0
4321	beq	.L443
4322	ldr	r3, [r4, #3292]
4323	cmp	r3, #0
4324	beq	.L443
4325	ldr	r3, [r4, #3300]
4326	cmp	r3, #0
4327	beq	.L443
4328	ldr	r3, [r4, #3304]
4329	cmp	r3, #0
4330	beq	.L443
4331	ldr	r3, [r4, #3308]
4332	cmp	r3, #0
4333	beq	.L443
4334	ldr	r3, [r4, #3176]
4335	cmp	r3, #0
4336	beq	.L443
4337	ldr	r3, [r4, #3312]
4338	cmp	r3, #0
4339	beq	.L443
4340	ldr	r3, [r4, #3316]
4341	cmp	r3, #0
4342	beq	.L443
4343	ldr	r3, [r4, #3172]
4344	cmp	r3, #0
4345	beq	.L443
4346	ldr	r3, [r4, #3332]
4347	cmp	r3, #0
4348	beq	.L443
4349	ldr	r3, [r4, #3336]
4350	cmp	r3, #0
4351	beq	.L443
4352	ldr	r3, [r4, #3180]
4353	cmp	r3, #0
4354	beq	.L443
4355	ldr	r3, [r4, #2536]
4356	cmp	r3, #0
4357	beq	.L443
4358	ldr	r3, [r4, #3344]
4359	cmp	r3, #0
4360	beq	.L443
4361	ldr	r3, [r4, #348]
4362	cmp	r3, #0
4363	beq	.L443
4364	ldr	r3, .L537
4365	ldr	r2, [r3, #3364]
4366	cmp	r2, #0
4367	beq	.L443
4368	ldr	r2, [r3, #3368]
4369	cmp	r2, #0
4370	beq	.L443
4371	ldr	r3, [r3, #3372]
4372	cmp	r3, #0
4373	beq	.L443
4374	mov	r0, #0
4375	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
4376.L538:
4377	.align	2
4378.L537:
4379	.word	.LANCHOR0
4380	.word	.LANCHOR0+352
4381	.word	.LANCHOR1+173
4382	.word	.LC91
4383	.size	FtlMemInit, .-FtlMemInit
4384	.align	2
4385	.global	FtlBbt2Bitmap
4386	.syntax unified
4387	.arm
4388	.fpu softvfp
4389	.type	FtlBbt2Bitmap, %function
4390FtlBbt2Bitmap:
4391	@ args = 0, pretend = 0, frame = 0
4392	@ frame_needed = 1, uses_anonymous_args = 0
4393	mov	ip, sp
4394	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
4395	sub	fp, ip, #4
4396	push	{lr}
4397	bl	__gnu_mcount_nc
4398	ldr	r2, .L544
4399	movw	r3, #3388
4400	mov	r4, r0
4401	ldr	r7, .L544+4
4402	sub	r6, r4, #2
4403	ldr	r8, .L544+8
4404	add	r4, r4, #1020
4405	mov	r5, r1
4406	ldrh	r2, [r2, r3]
4407	add	r4, r4, #2
4408	mov	r0, r5
4409	mov	r1, #0
4410	lsl	r2, r2, #2
4411	bl	ftl_memset
4412.L542:
4413	ldrh	r3, [r6, #2]!
4414	movw	r2, #65535
4415	cmp	r3, r2
4416	ldmfdeq	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
4417	ldrh	r2, [r7]
4418	cmp	r2, r3
4419	bhi	.L541
4420	ldr	r0, .L544+12
4421	mov	r1, r8
4422	mov	r2, #74
4423	bl	sftl_printk
4424.L541:
4425	ldrh	r3, [r6]
4426	mov	r0, #1
4427	cmp	r4, r6
4428	lsr	r1, r3, #5
4429	and	r3, r3, #31
4430	ldr	r2, [r5, r1, lsl #2]
4431	orr	r3, r2, r0, lsl r3
4432	str	r3, [r5, r1, lsl #2]
4433	bne	.L542
4434	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
4435.L545:
4436	.align	2
4437.L544:
4438	.word	.LANCHOR0
4439	.word	.LANCHOR0+298
4440	.word	.LANCHOR1+184
4441	.word	.LC8
4442	.size	FtlBbt2Bitmap, .-FtlBbt2Bitmap
4443	.align	2
4444	.global	FtlBbtMemInit
4445	.syntax unified
4446	.arm
4447	.fpu softvfp
4448	.type	FtlBbtMemInit, %function
4449FtlBbtMemInit:
4450	@ args = 0, pretend = 0, frame = 0
4451	@ frame_needed = 1, uses_anonymous_args = 0
4452	mov	ip, sp
4453	push	{fp, ip, lr, pc}
4454	sub	fp, ip, #4
4455	push	{lr}
4456	bl	__gnu_mcount_nc
4457	ldr	r0, .L547
4458	mvn	r2, #0
4459	mov	r1, #255
4460	add	r3, r0, #352
4461	add	r0, r0, #364
4462	strh	r2, [r3]	@ movhi
4463	mov	r2, #0
4464	strh	r2, [r3, #6]	@ movhi
4465	mov	r2, #16
4466	bl	ftl_memset
4467	ldmfd	sp, {fp, sp, pc}
4468.L548:
4469	.align	2
4470.L547:
4471	.word	.LANCHOR0
4472	.size	FtlBbtMemInit, .-FtlBbtMemInit
4473	.align	2
4474	.global	FtlFreeSysBlkQueueInit
4475	.syntax unified
4476	.arm
4477	.fpu softvfp
4478	.type	FtlFreeSysBlkQueueInit, %function
4479FtlFreeSysBlkQueueInit:
4480	@ args = 0, pretend = 0, frame = 0
4481	@ frame_needed = 1, uses_anonymous_args = 0
4482	mov	ip, sp
4483	push	{r4, r5, fp, ip, lr, pc}
4484	sub	fp, ip, #4
4485	push	{lr}
4486	bl	__gnu_mcount_nc
4487	ldr	ip, .L550
4488	mov	r4, #0
4489	mov	r2, #2048
4490	mov	r1, r4
4491	add	r3, ip, #412
4492	strh	r0, [r3]	@ movhi
4493	add	r0, ip, #420
4494	strh	r4, [r3, #2]	@ movhi
4495	strh	r4, [r3, #4]	@ movhi
4496	strh	r4, [r3, #6]	@ movhi
4497	bl	ftl_memset
4498	mov	r0, r4
4499	ldmfd	sp, {r4, r5, fp, sp, pc}
4500.L551:
4501	.align	2
4502.L550:
4503	.word	.LANCHOR0
4504	.size	FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
4505	.align	2
4506	.global	ftl_free_no_use_map_blk
4507	.syntax unified
4508	.arm
4509	.fpu softvfp
4510	.type	ftl_free_no_use_map_blk, %function
4511ftl_free_no_use_map_blk:
4512	@ args = 0, pretend = 0, frame = 8
4513	@ frame_needed = 1, uses_anonymous_args = 0
4514	mov	ip, sp
4515	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
4516	sub	fp, ip, #4
4517	sub	sp, sp, #12
4518	push	{lr}
4519	bl	__gnu_mcount_nc
4520	ldrh	r2, [r0, #10]
4521	mov	r4, r0
4522	ldr	r5, [r0, #20]
4523	mov	r1, #0
4524	ldr	r8, [r0, #12]
4525	ldr	r6, [r0, #24]
4526	lsl	r2, r2, #1
4527	mov	r0, r5
4528	bl	ftl_memset
4529	mov	r2, #0
4530.L553:
4531	ldrh	r1, [r4, #6]
4532	uxth	r3, r2
4533	cmp	r1, r3
4534	bhi	.L557
4535	ldr	r3, .L570
4536	mov	r7, #0
4537	mov	r10, r7
4538	ldrh	r2, [r3]
4539	ldrh	r3, [r4]
4540	lsl	r3, r3, #1
4541	strh	r2, [r5, r3]	@ movhi
4542	ldrh	r3, [r5]
4543.L558:
4544	ldrh	r1, [r4, #10]
4545	uxth	r2, r7
4546	cmp	r1, r2
4547	bhi	.L561
4548	mov	r0, r10
4549	sub	sp, fp, #40
4550	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
4551.L557:
4552	uxth	r3, r2
4553	mov	r1, #0
4554	ldr	r0, [r6, r3, lsl #2]
4555	ubfx	r0, r0, #10, #16
4556.L554:
4557	ldrh	ip, [r4, #10]
4558	uxth	r3, r1
4559	cmp	ip, r3
4560	addls	r2, r2, #1
4561	bls	.L553
4562.L556:
4563	uxth	r3, r1
4564	add	r1, r1, #1
4565	lsl	r3, r3, #1
4566	ldrh	ip, [r8, r3]
4567	subs	lr, ip, #0
4568	movne	lr, #1
4569	cmp	ip, r0
4570	movne	lr, #0
4571	cmp	lr, #0
4572	ldrhne	ip, [r5, r3]
4573	addne	ip, ip, #1
4574	strhne	ip, [r5, r3]	@ movhi
4575	b	.L554
4576.L561:
4577	uxth	r6, r7
4578	lsl	r6, r6, #1
4579	ldrh	r9, [r5, r6]
4580	cmp	r9, r3
4581	bcs	.L559
4582	ldrh	r1, [r8, r6]
4583	cmp	r1, #0
4584	movne	r10, r2
4585	movne	r3, r9
4586.L559:
4587	cmp	r9, #0
4588	bne	.L560
4589	ldrh	r0, [r8, r6]
4590	cmp	r0, #0
4591	beq	.L560
4592	mov	r1, #1
4593	str	r3, [fp, #-48]
4594	bl	FtlFreeSysBlkQueueIn
4595	strh	r9, [r8, r6]	@ movhi
4596	ldr	r3, [fp, #-48]
4597	ldrh	r2, [r4, #8]
4598	sub	r2, r2, #1
4599	strh	r2, [r4, #8]	@ movhi
4600.L560:
4601	add	r7, r7, #1
4602	b	.L558
4603.L571:
4604	.align	2
4605.L570:
4606	.word	.LANCHOR0+304
4607	.size	ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
4608	.align	2
4609	.global	FtlL2PDataInit
4610	.syntax unified
4611	.arm
4612	.fpu softvfp
4613	.type	FtlL2PDataInit, %function
4614FtlL2PDataInit:
4615	@ args = 0, pretend = 0, frame = 0
4616	@ frame_needed = 1, uses_anonymous_args = 0
4617	mov	ip, sp
4618	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
4619	sub	fp, ip, #4
4620	push	{lr}
4621	bl	__gnu_mcount_nc
4622	ldr	r4, .L575
4623	mov	r1, #0
4624	mvn	r6, #0
4625	ldr	r2, [r4, #328]
4626	ldr	r0, [r4, #3360]
4627	lsl	r2, r2, #1
4628	bl	ftl_memset
4629	movw	r3, #310
4630	movw	r2, #338
4631	ldr	r0, [r4, #3384]
4632	ldrh	r3, [r4, r3]
4633	mov	r1, #255
4634	ldrh	r2, [r4, r2]
4635	mul	r2, r2, r3
4636	bl	ftl_memset
4637	ldr	ip, .L575+4
4638	mov	r3, #0
4639	mov	r5, r3
4640	sub	r7, ip, #28
4641	mov	lr, #12
4642.L573:
4643	ldrh	r1, [ip]
4644	uxth	r2, r3
4645	cmp	r1, r2
4646	bhi	.L574
4647	ldr	r3, .L575+8
4648	ldr	r2, [r4, #328]
4649	strh	r2, [r3, #10]	@ movhi
4650	mvn	r2, #0
4651	str	r2, [r4, #3392]
4652	ldr	r2, .L575+12
4653	strh	r2, [r3, #4]	@ movhi
4654	movw	r2, #3436
4655	ldrh	r2, [r4, r2]
4656	strh	r2, [r3, #8]	@ movhi
4657	sub	r2, r3, #3056
4658	ldrh	r2, [r2]
4659	strh	r2, [r3, #6]	@ movhi
4660	ldr	r3, [r4, #3356]
4661	str	r3, [r4, #3404]
4662	ldr	r3, [r4, #3380]
4663	str	r3, [r4, #3408]
4664	ldr	r3, [r4, #3360]
4665	str	r3, [r4, #3412]
4666	ldr	r3, [r4, #3376]
4667	str	r3, [r4, #3416]
4668	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
4669.L574:
4670	uxth	r0, r3
4671	ldr	r2, [r4, #2540]
4672	add	r3, r3, #1
4673	mul	r1, lr, r0
4674	add	r8, r2, r1
4675	str	r5, [r8, #4]
4676	strh	r6, [r2, r1]	@ movhi
4677	ldr	r2, [r4, #2540]
4678	add	r1, r2, r1
4679	ldrh	r2, [r7]
4680	mul	r2, r0, r2
4681	ldr	r0, [r4, #3384]
4682	bic	r2, r2, #3
4683	add	r2, r0, r2
4684	str	r2, [r1, #8]
4685	b	.L573
4686.L576:
4687	.align	2
4688.L575:
4689	.word	.LANCHOR0
4690	.word	.LANCHOR0+338
4691	.word	.LANCHOR0+3392
4692	.word	-3902
4693	.size	FtlL2PDataInit, .-FtlL2PDataInit
4694	.align	2
4695	.global	FtlVariablesInit
4696	.syntax unified
4697	.arm
4698	.fpu softvfp
4699	.type	FtlVariablesInit, %function
4700FtlVariablesInit:
4701	@ args = 0, pretend = 0, frame = 0
4702	@ frame_needed = 1, uses_anonymous_args = 0
4703	mov	ip, sp
4704	push	{r4, r5, fp, ip, lr, pc}
4705	sub	fp, ip, #4
4706	push	{lr}
4707	bl	__gnu_mcount_nc
4708	ldr	r4, .L578
4709	movw	r2, #3438
4710	mvn	r3, #0
4711	mov	r5, #0
4712	mov	r1, r5
4713	strh	r3, [r4, r2]	@ movhi
4714	str	r3, [r4, #3448]
4715	add	r3, r4, #344
4716	ldr	r0, [r4, #348]
4717	str	r5, [r4, #3440]
4718	strh	r5, [r3]	@ movhi
4719	add	r3, r4, #320
4720	str	r5, [r4, #3444]
4721	ldrh	r2, [r3]
4722	lsl	r2, r2, #1
4723	bl	ftl_memset
4724	ldrh	r2, [r4, #242]
4725	mov	r1, r5
4726	ldr	r0, [r4, #2536]
4727	lsl	r2, r2, #1
4728	bl	ftl_memset
4729	ldrh	r2, [r4, #242]
4730	mov	r1, r5
4731	ldr	r0, [r4, #3344]
4732	lsl	r2, r2, #1
4733	bl	ftl_memset
4734	add	r0, r4, #2464
4735	mov	r1, r5
4736	mov	r2, #48
4737	add	r0, r0, #4
4738	bl	ftl_memset
4739	mov	r1, r5
4740	mov	r2, #512
4741	add	r0, r4, #2640
4742	bl	ftl_memset
4743	bl	FtlGcBufInit
4744	bl	FtlL2PDataInit
4745	mov	r0, r5
4746	ldmfd	sp, {r4, r5, fp, sp, pc}
4747.L579:
4748	.align	2
4749.L578:
4750	.word	.LANCHOR0
4751	.size	FtlVariablesInit, .-FtlVariablesInit
4752	.align	2
4753	.global	SupperBlkListInit
4754	.syntax unified
4755	.arm
4756	.fpu softvfp
4757	.type	SupperBlkListInit, %function
4758SupperBlkListInit:
4759	@ args = 0, pretend = 0, frame = 16
4760	@ frame_needed = 1, uses_anonymous_args = 0
4761	mov	ip, sp
4762	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
4763	sub	fp, ip, #4
4764	sub	sp, sp, #20
4765	push	{lr}
4766	bl	__gnu_mcount_nc
4767	ldr	r4, .L591
4768	mov	r2, #6
4769	mov	r5, #0
4770	mov	r1, #0
4771	add	r10, r4, #2528
4772	mov	r9, r5
4773	mov	r7, r5
4774	ldrh	r3, [r4, #242]
4775	ldr	r0, [r4, #2516]
4776	mul	r2, r2, r3
4777	bl	ftl_memset
4778	str	r5, [r4, #2532]
4779	str	r5, [r4, #2520]
4780	str	r5, [r4, #2524]
4781	strh	r5, [r10]	@ movhi
4782	strh	r5, [r4, #224]	@ movhi
4783.L581:
4784	ldrh	r3, [r4, #240]
4785	uxth	r8, r5
4786	cmp	r8, r3
4787	bcs	.L588
4788	ldrh	r3, [r4, #232]
4789	str	r3, [fp, #-52]
4790	ldr	r3, .L591+4
4791	ldr	r2, .L591+8
4792	ldrh	r3, [r3]
4793	str	r3, [fp, #-48]
4794	mov	r3, #0
4795	mov	r6, r3
4796	b	.L589
4797.L583:
4798	ldrb	r0, [r2], #1	@ zero_extendqisi2
4799	mov	r1, r8
4800	str	r3, [fp, #-60]
4801	str	r2, [fp, #-56]
4802	bl	V2P_block
4803	bl	FtlBbmIsBadBlock
4804	cmp	r0, #0
4805	ldr	r3, [fp, #-60]
4806	ldr	r2, [fp, #-56]
4807	ldreq	r1, [fp, #-48]
4808	add	r3, r3, #1
4809	addeq	r6, r1, r6
4810	uxtheq	r6, r6
4811.L589:
4812	ldr	r0, [fp, #-52]
4813	uxth	r1, r3
4814	cmp	r0, r1
4815	bhi	.L583
4816	uxth	r3, r5
4817	cmp	r6, #0
4818	beq	.L584
4819	mov	r1, r6
4820	mov	r0, #32768
4821	str	r3, [fp, #-48]
4822	bl	__aeabi_idiv
4823	ldr	r3, [fp, #-48]
4824	uxth	r6, r0
4825.L585:
4826	ldr	r2, [r4, #2516]
4827	mov	r1, #6
4828	mla	r2, r1, r3, r2
4829	strh	r6, [r2, #4]	@ movhi
4830	ldrh	r2, [r4, #24]
4831	cmp	r2, r8
4832	beq	.L586
4833	ldrh	r2, [r4, #76]
4834	cmp	r2, r8
4835	beq	.L586
4836	ldrh	r2, [r4, #124]
4837	cmp	r2, r8
4838	beq	.L586
4839	ldr	r2, [r4, #72]
4840	lsl	r3, r3, #1
4841	ldrh	r3, [r2, r3]
4842	cmp	r3, #0
4843	bne	.L587
4844	add	r9, r9, #1
4845	mov	r0, r8
4846	uxth	r9, r9
4847	bl	INSERT_FREE_LIST
4848.L586:
4849	add	r5, r5, #1
4850	b	.L581
4851.L584:
4852	ldr	r1, [r4, #72]
4853	lsl	r2, r3, #1
4854	mvn	r0, #0	@ movhi
4855	strh	r0, [r1, r2]	@ movhi
4856	b	.L585
4857.L587:
4858	add	r7, r7, #1
4859	mov	r0, r8
4860	uxth	r7, r7
4861	bl	INSERT_DATA_LIST
4862	b	.L586
4863.L588:
4864	strh	r7, [r10]	@ movhi
4865	add	r7, r7, r9
4866	cmp	r7, r3
4867	strh	r9, [r4, #224]	@ movhi
4868	ble	.L590
4869	ldr	r1, .L591+12
4870	movw	r2, #2219
4871	ldr	r0, .L591+16
4872	bl	sftl_printk
4873.L590:
4874	mov	r0, #0
4875	sub	sp, fp, #40
4876	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
4877.L592:
4878	.align	2
4879.L591:
4880	.word	.LANCHOR0
4881	.word	.LANCHOR0+302
4882	.word	.LANCHOR0+260
4883	.word	.LANCHOR1+198
4884	.word	.LC8
4885	.size	SupperBlkListInit, .-SupperBlkListInit
4886	.align	2
4887	.global	FtlGcPageVarInit
4888	.syntax unified
4889	.arm
4890	.fpu softvfp
4891	.type	FtlGcPageVarInit, %function
4892FtlGcPageVarInit:
4893	@ args = 0, pretend = 0, frame = 0
4894	@ frame_needed = 1, uses_anonymous_args = 0
4895	mov	ip, sp
4896	push	{r4, r5, fp, ip, lr, pc}
4897	sub	fp, ip, #4
4898	push	{lr}
4899	bl	__gnu_mcount_nc
4900	ldr	r4, .L594
4901	movw	r2, #3196
4902	mov	r3, #0
4903	movw	r5, #306
4904	mov	r1, #255
4905	strh	r3, [r4, r2]	@ movhi
4906	movw	r2, #3204
4907	ldr	r0, [r4, #3192]
4908	strh	r3, [r4, r2]	@ movhi
4909	ldrh	r2, [r4, r5]
4910	lsl	r2, r2, #1
4911	bl	ftl_memset
4912	ldrh	r3, [r4, r5]
4913	mov	r2, #12
4914	mov	r1, #255
4915	ldr	r0, [r4, #3200]
4916	mul	r2, r2, r3
4917	bl	ftl_memset
4918	bl	FtlGcBufInit
4919	ldmfd	sp, {r4, r5, fp, sp, pc}
4920.L595:
4921	.align	2
4922.L594:
4923	.word	.LANCHOR0
4924	.size	FtlGcPageVarInit, .-FtlGcPageVarInit
4925	.align	2
4926	.global	FlashGetBadBlockList
4927	.syntax unified
4928	.arm
4929	.fpu softvfp
4930	.type	FlashGetBadBlockList, %function
4931FlashGetBadBlockList:
4932	@ args = 0, pretend = 0, frame = 0
4933	@ frame_needed = 1, uses_anonymous_args = 0
4934	mov	ip, sp
4935	push	{r4, r5, r6, r7, fp, ip, lr, pc}
4936	sub	fp, ip, #4
4937	push	{lr}
4938	bl	__gnu_mcount_nc
4939	ldr	r6, .L603
4940	mov	r4, r0
4941	mov	r5, r1
4942	mov	r2, #256
4943	mov	r1, #255
4944	bl	ftl_memset
4945	mov	r1, r5
4946	ldr	r3, [r6, #3244]
4947	mov	r0, r4
4948	blx	r3
4949	uxth	r0, r0
4950	cmp	r0, #50
4951	bls	.L597
4952	mov	r0, r4
4953	mov	r2, #256
4954	mov	r1, #255
4955	bl	ftl_memset
4956	mov	r0, #0
4957.L597:
4958	ldrh	r3, [r6, #14]
4959	cmp	r3, #4
4960	moveq	r3, r4
4961	addeq	r1, r3, r0, lsl #1
4962	ldmfdne	sp, {r4, r5, r6, r7, fp, sp, pc}
4963.L599:
4964	cmp	r3, r1
4965	ldmfdeq	sp, {r4, r5, r6, r7, fp, sp, pc}
4966	ldrh	r2, [r3]
4967	lsr	r2, r2, #1
4968	strh	r2, [r3], #2	@ movhi
4969	b	.L599
4970.L604:
4971	.align	2
4972.L603:
4973	.word	.LANCHOR0
4974	.size	FlashGetBadBlockList, .-FlashGetBadBlockList
4975	.align	2
4976	.global	ftl_memcpy
4977	.syntax unified
4978	.arm
4979	.fpu softvfp
4980	.type	ftl_memcpy, %function
4981ftl_memcpy:
4982	@ args = 0, pretend = 0, frame = 0
4983	@ frame_needed = 1, uses_anonymous_args = 0
4984	mov	ip, sp
4985	push	{fp, ip, lr, pc}
4986	sub	fp, ip, #4
4987	push	{lr}
4988	bl	__gnu_mcount_nc
4989	bl	memcpy
4990	ldmfd	sp, {fp, sp, pc}
4991	.size	ftl_memcpy, .-ftl_memcpy
4992	.section	.rodata.str1.1
4993.LC92:
4994	.ascii	"FlashReadPages %x %x error_ecc_bits %d\012\000"
4995.LC93:
4996	.ascii	"data:\000"
4997.LC94:
4998	.ascii	"spare:\000"
4999	.text
5000	.align	2
5001	.global	FlashReadPages
5002	.syntax unified
5003	.arm
5004	.fpu softvfp
5005	.type	FlashReadPages, %function
5006FlashReadPages:
5007	@ args = 0, pretend = 0, frame = 24
5008	@ frame_needed = 1, uses_anonymous_args = 0
5009	mov	ip, sp
5010	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
5011	sub	fp, ip, #4
5012	sub	sp, sp, #28
5013	push	{lr}
5014	bl	__gnu_mcount_nc
5015	mov	r3, sp
5016	ldr	r6, .L647
5017	bic	r7, r3, #8128
5018	ldr	r10, .L647+4
5019	bic	r7, r7, #63
5020	ldr	r9, .L647+8
5021	mov	r4, r0
5022	str	r1, [fp, #-68]
5023	mov	r8, #0
5024	ldr	r3, [r7, #24]
5025	str	r3, [fp, #-48]
5026	ldrh	r3, [r6, #12]
5027	str	r3, [fp, #-64]
5028.L607:
5029	ldr	r3, [fp, #-68]
5030	cmp	r8, r3
5031	bne	.L620
5032	ldr	r2, [fp, #-48]
5033	ldr	r3, [r7, #24]
5034	cmp	r2, r3
5035	beq	.L621
5036	bl	__stack_chk_fail
5037.L620:
5038	ldr	r3, [r4, #8]
5039	cmp	r3, #0
5040	beq	.L608
5041	ldr	r3, [r4, #12]
5042	cmp	r3, #0
5043	bne	.L609
5044.L608:
5045	mov	r1, r10
5046	mov	r0, r9
5047	mov	r2, #96
5048	bl	sftl_printk
5049.L609:
5050	sub	r2, fp, #56
5051	sub	r1, fp, #52
5052	mov	r0, r4
5053	bl	l2p_addr_tran
5054	ldr	r0, [fp, #-56]
5055	cmp	r0, #3
5056	mvnhi	r3, #0
5057	strhi	r3, [r4]
5058	bhi	.L611
5059	ldr	r5, [r4, #8]
5060	uxtb	r0, r0
5061	ldr	r3, [r4, #12]
5062	tst	r5, #63
5063	ldr	r1, [fp, #-52]
5064	ldr	ip, [r6, #3256]
5065	ldrne	r5, [r6, #3320]
5066	mov	r2, r5
5067	blx	ip
5068	str	r0, [r4]
5069	ldrh	r3, [r6, #14]
5070	cmp	r3, #4
5071	bne	.L614
5072	ldr	r0, [fp, #-64]
5073	add	r2, r5, #2048
5074	ldr	r3, [r4, #12]
5075	ldr	r1, [fp, #-52]
5076	ldr	ip, [r6, #3256]
5077	add	r3, r3, #8
5078	add	r1, r0, r1
5079	ldrb	r0, [fp, #-56]	@ zero_extendqisi2
5080	blx	ip
5081	cmn	r0, #1
5082	beq	.L615
5083	ldr	r3, [r4, #12]
5084	ldr	r2, [r3, #12]
5085	cmn	r2, #1
5086	bne	.L616
5087	ldr	r2, [r3, #8]
5088	cmn	r2, #1
5089	bne	.L616
5090	ldr	r3, [r3]
5091	cmn	r3, #1
5092	beq	.L616
5093.L615:
5094	mvn	r3, #0
5095.L646:
5096	str	r3, [r4]
5097.L617:
5098	ldr	r3, [r4]
5099	cmn	r3, #1
5100	cmpne	r3, #256
5101	bne	.L614
5102	ldr	r1, [r4, #4]
5103	ldr	r2, [fp, #-52]
5104	ldr	r0, .L647+12
5105	bl	sftl_printk
5106	ldr	r1, [r4, #8]
5107	cmp	r1, #0
5108	beq	.L619
5109	mov	r3, #4
5110	ldr	r0, .L647+16
5111	mov	r2, r3
5112	bl	rknand_print_hex
5113.L619:
5114	ldr	r1, [r4, #12]
5115	cmp	r1, #0
5116	beq	.L614
5117	mov	r3, #4
5118	ldr	r0, .L647+20
5119	mov	r2, r3
5120	bl	rknand_print_hex
5121.L614:
5122	ldr	r3, [r6, #3320]
5123	cmp	r3, r5
5124	bne	.L611
5125	ldr	r0, [r4, #8]
5126	cmp	r0, r5
5127	beq	.L611
5128	ldr	r3, .L647+24
5129	mov	r1, r5
5130	ldrh	r2, [r3]
5131	lsl	r2, r2, #9
5132	bl	ftl_memcpy
5133.L611:
5134	add	r8, r8, #1
5135	add	r4, r4, #20
5136	b	.L607
5137.L616:
5138	ldr	r3, [r4]
5139	sub	r0, r0, #256
5140	clz	r0, r0
5141	cmn	r3, #1
5142	lsr	r0, r0, #5
5143	moveq	r0, #0
5144	cmp	r0, #0
5145	beq	.L617
5146	mov	r3, #256
5147	b	.L646
5148.L621:
5149	mov	r0, #0
5150	sub	sp, fp, #40
5151	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
5152.L648:
5153	.align	2
5154.L647:
5155	.word	.LANCHOR0
5156	.word	.LANCHOR1+216
5157	.word	.LC8
5158	.word	.LC92
5159	.word	.LC93
5160	.word	.LC94
5161	.word	.LANCHOR0+258
5162	.size	FlashReadPages, .-FlashReadPages
5163	.align	2
5164	.global	FtlLoadFactoryBbt
5165	.syntax unified
5166	.arm
5167	.fpu softvfp
5168	.type	FtlLoadFactoryBbt, %function
5169FtlLoadFactoryBbt:
5170	@ args = 0, pretend = 0, frame = 0
5171	@ frame_needed = 1, uses_anonymous_args = 0
5172	mov	ip, sp
5173	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
5174	sub	fp, ip, #4
5175	push	{lr}
5176	bl	__gnu_mcount_nc
5177	ldr	r5, .L659
5178	mov	r6, #0
5179	add	r7, r5, #364
5180	sub	r9, r7, #66
5181	ldr	r3, [r5, #3300]
5182	ldr	r8, [r5, #3332]
5183	str	r3, [r5, #3460]
5184	str	r8, [r5, #3464]
5185.L650:
5186	ldrh	r3, [r5, #254]
5187	cmp	r3, r6
5188	bhi	.L655
5189	mov	r0, #0
5190	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
5191.L655:
5192	ldrh	r4, [r9]
5193	mvn	r3, #0
5194	ldr	r10, .L659+4
5195	add	r4, r4, r3
5196	strh	r3, [r7]	@ movhi
5197	uxth	r4, r4
5198.L651:
5199	ldrh	r3, [r9]
5200	sub	r2, r3, #16
5201	cmp	r4, r2
5202	ble	.L653
5203	mla	r3, r6, r3, r4
5204	mov	r2, #1
5205	mov	r0, r10
5206	mov	r1, r2
5207	lsl	r3, r3, #10
5208	str	r3, [r5, #3456]
5209	bl	FlashReadPages
5210	ldr	r3, [r5, #3452]
5211	cmn	r3, #1
5212	beq	.L652
5213	ldrh	r2, [r8]
5214	movw	r3, #61664
5215	cmp	r2, r3
5216	bne	.L652
5217	strh	r4, [r7]	@ movhi
5218.L653:
5219	add	r6, r6, #1
5220	add	r7, r7, #2
5221	b	.L650
5222.L652:
5223	sub	r4, r4, #1
5224	uxth	r4, r4
5225	b	.L651
5226.L660:
5227	.align	2
5228.L659:
5229	.word	.LANCHOR0
5230	.word	.LANCHOR0+3452
5231	.size	FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
5232	.align	2
5233	.global	FtlGetLastWrittenPage
5234	.syntax unified
5235	.arm
5236	.fpu softvfp
5237	.type	FtlGetLastWrittenPage, %function
5238FtlGetLastWrittenPage:
5239	@ args = 0, pretend = 0, frame = 88
5240	@ frame_needed = 1, uses_anonymous_args = 0
5241	mov	ip, sp
5242	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
5243	sub	fp, ip, #4
5244	sub	sp, sp, #88
5245	push	{lr}
5246	bl	__gnu_mcount_nc
5247	mov	r3, sp
5248	cmp	r1, #1
5249	bic	r6, r3, #8128
5250	mov	r9, r1
5251	bic	r6, r6, #63
5252	movwne	r2, #302
5253	lsl	r7, r0, #10
5254	ldr	r3, [r6, #24]
5255	str	r3, [fp, #-40]
5256	ldr	r3, .L674
5257	addeq	r2, r3, #304
5258	ldrhne	r4, [r3, r2]
5259	ldrheq	r4, [r2]
5260	mov	r2, r1
5261	ldr	r3, [r3, #3324]
5262	mov	r1, #1
5263	sub	r4, r4, #1
5264	str	r3, [fp, #-116]
5265	sub	r3, fp, #104
5266	str	r3, [fp, #-112]
5267	sxth	r4, r4
5268	orr	r0, r4, r0, lsl #10
5269	str	r0, [fp, #-120]
5270	sub	r0, fp, #124
5271	bl	FlashReadPages
5272	ldr	r3, [fp, #-104]
5273	cmn	r3, #1
5274	bne	.L665
5275	mov	r8, #0
5276	b	.L664
5277.L668:
5278	add	r3, r8, r4
5279	mov	r2, r9
5280	sub	r0, fp, #124
5281	mov	r1, #1
5282	add	r3, r3, r3, lsr #31
5283	sbfx	r5, r3, #1, #16
5284	orr	r3, r7, r3, asr #1
5285	str	r3, [fp, #-120]
5286	bl	FlashReadPages
5287	ldrd	r2, [fp, #-104]
5288	and	r3, r3, r2
5289	cmn	r3, #1
5290	bne	.L666
5291	ldr	r3, [fp, #-124]
5292	cmn	r3, #1
5293	subne	r4, r5, #1
5294	sxthne	r4, r4
5295	bne	.L664
5296.L666:
5297	add	r5, r5, #1
5298	sxth	r8, r5
5299.L664:
5300	cmp	r8, r4
5301	ble	.L668
5302.L665:
5303	ldr	r2, [fp, #-40]
5304	ldr	r3, [r6, #24]
5305	cmp	r2, r3
5306	beq	.L669
5307	bl	__stack_chk_fail
5308.L669:
5309	mov	r0, r4
5310	sub	sp, fp, #36
5311	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
5312.L675:
5313	.align	2
5314.L674:
5315	.word	.LANCHOR0
5316	.size	FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
5317	.align	2
5318	.global	FtlScanSysBlk
5319	.syntax unified
5320	.arm
5321	.fpu softvfp
5322	.type	FtlScanSysBlk, %function
5323FtlScanSysBlk:
5324	@ args = 0, pretend = 0, frame = 24
5325	@ frame_needed = 1, uses_anonymous_args = 0
5326	mov	ip, sp
5327	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
5328	sub	fp, ip, #4
5329	sub	sp, sp, #28
5330	push	{lr}
5331	bl	__gnu_mcount_nc
5332	ldr	r4, .L756
5333	movw	r3, #3436
5334	mov	r5, #0
5335	mov	r1, r5
5336	add	r6, r4, #320
5337	ldr	r2, [r4, #328]
5338	strh	r5, [r4, r3]	@ movhi
5339	add	r3, r4, #344
5340	ldr	r0, [r4, #3380]
5341	lsl	r2, r2, #2
5342	strh	r5, [r3]	@ movhi
5343	bl	ftl_memset
5344	ldr	r2, [r4, #328]
5345	mov	r1, r5
5346	ldr	r0, [r4, #3356]
5347	lsl	r2, r2, #1
5348	bl	ftl_memset
5349	ldrh	r2, [r6]
5350	mov	r1, r5
5351	ldr	r0, [r4, #3368]
5352	lsl	r2, r2, #2
5353	bl	ftl_memset
5354	ldrh	r2, [r6]
5355	mov	r1, r5
5356	ldr	r0, [r4, #348]
5357	lsl	r2, r2, #1
5358	bl	ftl_memset
5359	add	r0, r4, #2624
5360	mov	r2, #16
5361	mov	r1, #255
5362	bl	ftl_memset
5363	ldrh	r3, [r4, #240]
5364.L755:
5365	str	r3, [fp, #-48]
5366	ldr	r2, [fp, #-48]
5367	ldrh	r3, [r4, #242]
5368	cmp	r3, r2
5369	bls	.L716
5370	ldr	r5, .L756+4
5371	mov	r7, #0
5372	ldrh	r6, [r4, #232]
5373	mov	r9, #20
5374	ldr	r8, [r4, #3288]
5375	ldr	r2, [r4, #3176]
5376	ldrh	r10, [r5], #-52
5377	ldr	r3, [r4, #3180]
5378	add	r6, r6, r5
5379	b	.L717
5380.L679:
5381	ldr	r1, [fp, #-48]
5382	ldrb	r0, [r5], #1	@ zero_extendqisi2
5383	str	r3, [fp, #-60]
5384	str	r2, [fp, #-56]
5385	bl	V2P_block
5386	str	r0, [fp, #-52]
5387	bl	FtlBbmIsBadBlock
5388	ldr	r2, [fp, #-56]
5389	cmp	r0, #0
5390	ldr	r3, [fp, #-60]
5391	bne	.L717
5392	mla	ip, r9, r7, r8
5393	ldr	r1, [fp, #-52]
5394	mul	r0, r10, r7
5395	add	r7, r7, #1
5396	cmp	r0, #0
5397	lsl	r1, r1, #10
5398	stmib	ip, {r1, r2}
5399	add	r1, r0, #3
5400	movge	r1, r0
5401	uxth	r7, r7
5402	bic	r1, r1, #3
5403	add	r1, r3, r1
5404	str	r1, [ip, #12]
5405.L717:
5406	cmp	r6, r5
5407	bne	.L679
5408	cmp	r7, #0
5409	bne	.L680
5410.L715:
5411	ldr	r3, [fp, #-48]
5412	add	r3, r3, #1
5413	uxth	r3, r3
5414	b	.L755
5415.L680:
5416	mov	r1, r7
5417	mov	r0, r8
5418	mov	r2, #1
5419	bl	FlashReadPages
5420	mov	r3, #0
5421	str	r3, [fp, #-52]
5422.L714:
5423	ldr	r3, [fp, #-52]
5424	mov	r8, #20
5425	mul	r8, r8, r3
5426	ldr	r3, [r4, #3288]
5427	add	r2, r3, r8
5428	ldr	r3, [r3, r8]
5429	ldr	r5, [r2, #4]
5430	ldr	r6, [r2, #12]
5431	cmn	r3, #1
5432	ubfx	r5, r5, #10, #16
5433	bne	.L683
5434	mov	r9, #16
5435	movw	r10, #65535
5436.L685:
5437	ldr	r0, [r4, #3288]
5438	mov	r2, #1
5439	mov	r1, r2
5440	add	r0, r0, r8
5441	ldr	r3, [r0, #4]
5442	add	r3, r3, #1
5443	str	r3, [r0, #4]
5444	bl	FlashReadPages
5445	ldrh	r3, [r6]
5446	cmp	r3, r10
5447	ldr	r3, [r4, #3288]
5448	bne	.L682
5449	mvn	r2, #0
5450	str	r2, [r3, r8]
5451	ldr	r3, [r4, #3288]
5452	ldr	r3, [r3, r8]
5453	cmp	r3, r2
5454	beq	.L684
5455.L683:
5456	ldr	r2, [r4, #2588]
5457	ldr	r3, [r6, #4]
5458	cmn	r2, #1
5459	beq	.L732
5460	cmp	r2, r3
5461	bhi	.L686
5462.L732:
5463	cmn	r3, #1
5464	addne	r2, r3, #1
5465	strne	r2, [r4, #2588]
5466.L686:
5467	ldrh	r2, [r6]
5468	movw	r1, #61634
5469	cmp	r2, r1
5470	beq	.L687
5471	bhi	.L688
5472	movw	r1, #61574
5473	cmp	r2, r1
5474	beq	.L689
5475	movw	r1, #61604
5476	cmp	r2, r1
5477	beq	.L690
5478.L691:
5479	ldr	r3, [fp, #-52]
5480	add	r3, r3, #1
5481	str	r3, [fp, #-52]
5482	ldrh	r3, [fp, #-52]
5483	cmp	r7, r3
5484	bhi	.L714
5485	b	.L715
5486.L682:
5487	ldr	r3, [r3, r8]
5488	cmn	r3, #1
5489	bne	.L683
5490	sub	r9, r9, #1
5491	uxth	r9, r9
5492	cmp	r9, #0
5493	bne	.L685
5494.L684:
5495	mov	r1, #1
5496	b	.L753
5497.L688:
5498	movw	r3, #65535
5499	cmp	r2, r3
5500	moveq	r1, #0
5501	bne	.L691
5502.L753:
5503	mov	r0, r5
5504	bl	FtlFreeSysBlkQueueIn
5505	b	.L691
5506.L687:
5507	ldr	r8, .L756+8
5508	ldr	r3, [r4, #328]
5509	ldrh	r2, [r8]
5510	cmp	r2, r3
5511	bls	.L693
5512	ldr	r1, .L756+12
5513	mov	r2, #1232
5514	ldr	r0, .L756+16
5515	bl	sftl_printk
5516.L693:
5517	ldr	lr, [r4, #328]
5518	ldrh	r1, [r8]
5519	uxth	r2, lr
5520	sub	r3, r2, #1
5521	sub	r2, r2, r1
5522	sub	r2, r2, #1
5523	sxth	r3, r3
5524	sxth	r2, r2
5525	str	r2, [fp, #-60]
5526	ldr	r2, [r4, #3380]
5527	str	r2, [fp, #-56]
5528	mov	r2, r3
5529	ldr	r0, [fp, #-56]
5530	add	r10, r0, #4
5531.L694:
5532	ldr	r0, [fp, #-60]
5533	cmp	r0, r3
5534	bge	.L699
5535	lsl	r0, r2, #2
5536	str	r0, [fp, #-64]
5537	sub	r0, r2, #1
5538	ldr	r9, [r6, #4]
5539	ldr	ip, [r10, r0, lsl #2]
5540	cmp	r9, ip
5541	bls	.L695
5542	ldr	r0, [fp, #-56]
5543	ldr	r0, [r0]
5544	cmp	r0, #0
5545	bne	.L696
5546	cmp	lr, r1
5547	addne	r1, r1, #1
5548	strhne	r1, [r8]	@ movhi
5549.L696:
5550	uxth	lr, r3
5551	mov	ip, #0
5552.L697:
5553	uxth	r8, ip
5554	ldr	r0, [r4, #3380]
5555	sxth	r1, ip
5556	cmp	lr, r8
5557	bhi	.L698
5558	ldr	ip, [fp, #-64]
5559	lsl	r2, r2, #1
5560	ldr	r1, [r6, #4]
5561	str	r1, [r0, ip]
5562	ldr	r1, [r4, #3356]
5563	strh	r5, [r1, r2]	@ movhi
5564.L699:
5565	cmp	r3, #0
5566	blt	.L691
5567	ldr	r0, .L756+8
5568	ldr	r2, [r4, #328]
5569	ldrh	r1, [r0]
5570	sub	r2, r2, r1
5571	sub	r2, r2, #1
5572	sxth	r2, r2
5573	cmp	r2, r3
5574	blt	.L691
5575	ldr	r2, [r4, #3380]
5576	add	r1, r1, #1
5577	strh	r1, [r0]	@ movhi
5578	ldr	r1, [r6, #4]
5579	str	r1, [r2, r3, lsl #2]
5580	lsl	r3, r3, #1
5581	ldr	r2, [r4, #3356]
5582.L752:
5583	strh	r5, [r2, r3]	@ movhi
5584	b	.L691
5585.L698:
5586	add	r1, r1, #1
5587	add	ip, ip, #1
5588	ldr	r8, [r0, r1, lsl #2]
5589	add	r0, r0, r1, lsl #2
5590	lsl	r1, r1, #1
5591	str	r8, [r0, #-4]
5592	ldr	r0, [r4, #3356]
5593	ldrh	r1, [r0, r1]!
5594	strh	r1, [r0, #-2]	@ movhi
5595	b	.L697
5596.L695:
5597	sub	r3, r3, #1
5598	mov	r2, r0
5599	sxth	r3, r3
5600	b	.L694
5601.L689:
5602	ldr	r8, .L756+20
5603	ldrh	r2, [r8]
5604	ldrh	r3, [r8, #-24]
5605	cmp	r2, r3
5606	bls	.L703
5607	ldr	r1, .L756+12
5608	movw	r2, #1273
5609	ldr	r0, .L756+16
5610	bl	sftl_printk
5611.L703:
5612	ldrh	r2, [r8, #-24]
5613	ldrh	r1, [r8]
5614	sub	r0, r2, #1
5615	ldr	ip, [r4, #3368]
5616	sxth	r3, r0
5617	sub	r0, r0, r1
5618.L704:
5619	cmp	r3, r0
5620	ble	.L709
5621	ldr	r10, [r6, #4]
5622	lsl	lr, r3, #2
5623	ldr	r9, [ip, r3, lsl #2]
5624	cmp	r10, r9
5625	bls	.L705
5626	sub	r2, r2, r1
5627	ldr	r0, [ip]
5628	clz	r2, r2
5629	lsr	r2, r2, #5
5630	cmp	r0, #0
5631	orrne	r2, r2, #1
5632	uxth	r0, r3
5633	cmp	r2, #0
5634	addeq	r1, r1, #1
5635	strheq	r1, [r8]	@ movhi
5636	mov	r1, #0
5637.L707:
5638	uxth	r8, r1
5639	ldr	ip, [r4, #3368]
5640	sxth	r2, r1
5641	cmp	r0, r8
5642	bhi	.L708
5643	ldr	r2, [r6, #4]
5644	str	r2, [ip, lr]
5645	lsl	r2, r3, #1
5646	ldr	r1, [r4, #348]
5647	strh	r5, [r1, r2]	@ movhi
5648.L709:
5649	cmp	r3, #0
5650	blt	.L691
5651	ldr	r0, .L756+20
5652	ldrh	r2, [r0, #-24]
5653	ldrh	r1, [r0]
5654	sub	r2, r2, #1
5655	sub	r2, r2, r1
5656	sxth	r2, r2
5657	cmp	r2, r3
5658	blt	.L691
5659	ldr	r2, [r4, #3368]
5660	add	r1, r1, #1
5661	strh	r1, [r0]	@ movhi
5662	ldr	r1, [r6, #4]
5663	str	r1, [r2, r3, lsl #2]
5664	lsl	r3, r3, #1
5665	ldr	r2, [r4, #348]
5666	b	.L752
5667.L708:
5668	add	r2, r2, #1
5669	add	r1, r1, #1
5670	ldr	r8, [ip, r2, lsl #2]
5671	add	ip, ip, r2, lsl #2
5672	lsl	r2, r2, #1
5673	str	r8, [ip, #-4]
5674	ldr	ip, [r4, #348]
5675	ldrh	r2, [ip, r2]!
5676	strh	r2, [ip, #-2]	@ movhi
5677	b	.L707
5678.L705:
5679	sub	r3, r3, #1
5680	sxth	r3, r3
5681	b	.L704
5682.L690:
5683	ldr	r8, .L756+24
5684	movw	r2, #65535
5685	ldrh	r1, [r8]
5686	cmp	r1, r2
5687	strheq	r5, [r8]	@ movhi
5688	beq	.L754
5689	ldrh	r0, [r8, #4]
5690	cmp	r0, r2
5691	beq	.L712
5692	mov	r1, #1
5693	bl	FtlFreeSysBlkQueueIn
5694.L712:
5695	ldr	r3, [r6, #4]
5696	ldr	r2, [r4, #2632]
5697	cmp	r2, r3
5698	strhcs	r5, [r8, #4]	@ movhi
5699	bcs	.L691
5700	ldrh	r3, [r8]
5701	strh	r3, [r8, #4]	@ movhi
5702	strh	r5, [r8]	@ movhi
5703	ldr	r3, [r6, #4]
5704.L754:
5705	str	r3, [r4, #2632]
5706	b	.L691
5707.L716:
5708	ldr	r1, [r4, #3356]
5709	ldrh	r3, [r1]
5710	cmp	r3, #0
5711	beq	.L718
5712.L721:
5713	ldr	r0, [r4, #348]
5714	ldrh	r2, [r0]
5715	cmp	r2, #0
5716	beq	.L719
5717.L720:
5718	movw	r3, #3436
5719	ldrh	r2, [r4, r3]
5720	ldr	r3, [r4, #328]
5721	cmp	r2, r3
5722	bls	.L750
5723	ldr	r1, .L756+12
5724	movw	r2, #1398
5725	ldr	r0, .L756+16
5726	bl	sftl_printk
5727.L750:
5728	mov	r0, #0
5729	sub	sp, fp, #40
5730	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
5731.L718:
5732	movw	r2, #3436
5733	ldrh	r2, [r4, r2]
5734	cmp	r2, #0
5735	ldrne	r0, [r4, #328]
5736	beq	.L721
5737.L722:
5738	sxth	r2, r3
5739	cmp	r2, r0
5740	bcs	.L721
5741	lsl	ip, r2, #1
5742	add	r3, r3, #1
5743	ldrh	ip, [r1, ip]
5744	cmp	ip, #0
5745	beq	.L722
5746	mov	r3, r2
5747	mov	lr, #0
5748	b	.L723
5749.L724:
5750	sub	ip, r3, r2
5751	ldr	r0, [r4, #3356]
5752	lsl	r1, r3, #1
5753	lsl	r5, ip, #1
5754	ldrh	r6, [r0, r1]
5755	strh	r6, [r0, r5]	@ movhi
5756	ldr	r0, [r4, #3380]
5757	ldr	r5, [r0, r3, lsl #2]
5758	add	r3, r3, #1
5759	str	r5, [r0, ip, lsl #2]
5760	sxth	r3, r3
5761	ldr	r0, [r4, #3356]
5762	strh	lr, [r0, r1]	@ movhi
5763.L723:
5764	ldr	r1, [r4, #328]
5765	cmp	r3, r1
5766	bcc	.L724
5767	b	.L721
5768.L719:
5769	ldr	r1, .L756+20
5770	ldrh	r3, [r1]
5771	cmp	r3, #0
5772	ldrhne	ip, [r1, #-24]!
5773	beq	.L720
5774.L728:
5775	sxth	r3, r2
5776	mov	lr, r3
5777	cmp	r3, ip
5778	bge	.L720
5779	lsl	r5, r3, #1
5780	add	r2, r2, #1
5781	ldrh	r5, [r0, r5]
5782	cmp	r5, #0
5783	beq	.L728
5784	mov	r5, #0
5785.L729:
5786	ldrh	r2, [r1]
5787	cmp	r3, r2
5788	bge	.L720
5789	sub	ip, r3, lr
5790	ldr	r0, [r4, #348]
5791	lsl	r2, r3, #1
5792	lsl	r6, ip, #1
5793	ldrh	r7, [r0, r2]
5794	strh	r7, [r0, r6]	@ movhi
5795	ldr	r0, [r4, #3368]
5796	ldr	r6, [r0, r3, lsl #2]
5797	add	r3, r3, #1
5798	str	r6, [r0, ip, lsl #2]
5799	sxth	r3, r3
5800	ldr	r0, [r4, #348]
5801	strh	r5, [r0, r2]	@ movhi
5802	b	.L729
5803.L757:
5804	.align	2
5805.L756:
5806	.word	.LANCHOR0
5807	.word	.LANCHOR0+312
5808	.word	.LANCHOR0+3436
5809	.word	.LANCHOR1+231
5810	.word	.LC8
5811	.word	.LANCHOR0+344
5812	.word	.LANCHOR0+2624
5813	.size	FtlScanSysBlk, .-FtlScanSysBlk
5814	.align	2
5815	.global	FtlLoadBbt
5816	.syntax unified
5817	.arm
5818	.fpu softvfp
5819	.type	FtlLoadBbt, %function
5820FtlLoadBbt:
5821	@ args = 0, pretend = 0, frame = 0
5822	@ frame_needed = 1, uses_anonymous_args = 0
5823	mov	ip, sp
5824	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
5825	sub	fp, ip, #4
5826	push	{lr}
5827	bl	__gnu_mcount_nc
5828	ldr	r4, .L792
5829	ldr	r7, .L792+4
5830	ldr	r8, .L792+8
5831	ldr	r3, [r4, #3300]
5832	ldr	r6, [r4, #3332]
5833	str	r3, [r4, #3460]
5834	str	r6, [r4, #3464]
5835	bl	FtlBbtMemInit
5836	movw	r3, #298
5837	ldrh	r5, [r4, r3]
5838	sub	r5, r5, #1
5839	uxth	r5, r5
5840.L759:
5841	ldrh	r3, [r7]
5842	sub	r3, r3, #16
5843	cmp	r5, r3
5844	ble	.L764
5845	mov	r2, #1
5846	mov	r0, r8
5847	mov	r1, r2
5848	lsl	r3, r5, #10
5849	str	r3, [r4, #3456]
5850	bl	FlashReadPages
5851	ldr	r3, [r4, #3452]
5852	cmn	r3, #1
5853	beq	.L760
5854.L763:
5855	ldrh	r2, [r6]
5856	movw	r3, #61649
5857	cmp	r2, r3
5858	bne	.L762
5859	ldr	r2, [r6, #4]
5860	ldr	r3, .L792+12
5861	str	r2, [r4, #360]
5862	ldrh	r2, [r6, #8]
5863	strh	r5, [r3]	@ movhi
5864	strh	r2, [r3, #4]	@ movhi
5865.L764:
5866	ldr	r5, .L792+12
5867	movw	r2, #65535
5868	ldrh	r3, [r5]
5869	cmp	r3, r2
5870	beq	.L778
5871	ldrh	r3, [r5, #4]
5872	cmp	r3, r2
5873	beq	.L768
5874	mov	r2, #1
5875	ldr	r0, .L792+8
5876	mov	r1, r2
5877	lsl	r3, r3, #10
5878	str	r3, [r4, #3456]
5879	bl	FlashReadPages
5880	ldr	r3, [r4, #3452]
5881	cmn	r3, #1
5882	beq	.L768
5883	ldrh	r2, [r6]
5884	movw	r3, #61649
5885	cmp	r2, r3
5886	bne	.L768
5887	ldr	r3, [r6, #4]
5888	ldr	r2, [r4, #360]
5889	cmp	r3, r2
5890	bls	.L768
5891	str	r3, [r4, #360]
5892	ldrh	r2, [r5, #4]
5893	ldrh	r3, [r6, #8]
5894	strh	r2, [r5]	@ movhi
5895	strh	r3, [r5, #4]	@ movhi
5896.L768:
5897	ldrh	r0, [r5]
5898	mov	r1, #1
5899	ldr	r10, .L792+8
5900	bl	FtlGetLastWrittenPage
5901	sxth	r9, r0
5902	mov	r8, r0
5903	add	r3, r9, #1
5904	mov	r7, #0
5905	strh	r3, [r5, #2]	@ movhi
5906.L770:
5907	sub	r3, r8, r7
5908	tst	r3, #32768
5909	beq	.L773
5910	ldr	r1, .L792+16
5911	mov	r2, #251
5912	ldr	r0, .L792+20
5913	bl	sftl_printk
5914.L772:
5915	ldrh	r0, [r6, #12]
5916	ldrh	r3, [r6, #10]
5917	strh	r3, [r5, #6]	@ movhi
5918	movw	r3, #65535
5919	cmp	r0, r3
5920	beq	.L775
5921	ldr	r2, [r4, #228]
5922	cmp	r0, r2
5923	beq	.L775
5924	ldrh	r1, [r4, #242]
5925	cmp	r0, r1, lsr #2
5926	movcc	r3, #1
5927	movcs	r3, #0
5928	cmp	r2, r1, lsr #2
5929	andcc	r3, r3, #1
5930	movcs	r3, #0
5931	cmp	r3, #0
5932	beq	.L775
5933	bl	FtlSysBlkNumInit
5934.L775:
5935	ldr	r6, .L792+24
5936	mov	r5, #0
5937	add	r7, r6, #3008
5938.L776:
5939	ldrh	r3, [r4, #254]
5940	cmp	r3, r5
5941	bhi	.L777
5942	mov	r0, #0
5943	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
5944.L760:
5945	ldr	r3, [r4, #3456]
5946	mov	r2, #1
5947	mov	r0, r8
5948	mov	r1, r2
5949	add	r3, r3, #1
5950	str	r3, [r4, #3456]
5951	bl	FlashReadPages
5952	ldr	r3, [r4, #3452]
5953	cmn	r3, #1
5954	bne	.L763
5955.L762:
5956	sub	r5, r5, #1
5957	uxth	r5, r5
5958	b	.L759
5959.L773:
5960	ldrh	r2, [r5]
5961	sub	r3, r9, r7
5962	mov	r0, r10
5963	orr	r3, r3, r2, lsl #10
5964	mov	r2, #1
5965	str	r3, [r4, #3456]
5966	mov	r1, r2
5967	ldr	r3, [r4, #3300]
5968	str	r3, [r4, #3460]
5969	bl	FlashReadPages
5970	ldr	r3, [r4, #3452]
5971	cmn	r3, #1
5972	beq	.L771
5973	ldrh	r2, [r6]
5974	movw	r3, #61649
5975	cmp	r2, r3
5976	beq	.L772
5977.L771:
5978	add	r7, r7, #1
5979	b	.L770
5980.L777:
5981	ldrh	r2, [r7]
5982	ldr	r3, [r4, #3460]
5983	ldr	r0, [r6], #4
5984	mul	r1, r5, r2
5985	lsl	r2, r2, #2
5986	add	r5, r5, #1
5987	add	r1, r3, r1, lsl #2
5988	bl	ftl_memcpy
5989	b	.L776
5990.L778:
5991	mvn	r0, #0
5992	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
5993.L793:
5994	.align	2
5995.L792:
5996	.word	.LANCHOR0
5997	.word	.LANCHOR0+298
5998	.word	.LANCHOR0+3452
5999	.word	.LANCHOR0+352
6000	.word	.LANCHOR1+245
6001	.word	.LC8
6002	.word	.LANCHOR0+380
6003	.size	FtlLoadBbt, .-FtlLoadBbt
6004	.section	.rodata.str1.1
6005.LC95:
6006	.ascii	"prog read error: = %x\012\000"
6007.LC96:
6008	.ascii	"prog read REFRESH: = %x\012\000"
6009.LC97:
6010	.ascii	"prog read s error: = %x %x %x %x %x\012\000"
6011.LC98:
6012	.ascii	"prog read d error: = %x %x %x %x %x\012\000"
6013	.text
6014	.align	2
6015	.global	FlashProgPages
6016	.syntax unified
6017	.arm
6018	.fpu softvfp
6019	.type	FlashProgPages, %function
6020FlashProgPages:
6021	@ args = 0, pretend = 0, frame = 48
6022	@ frame_needed = 1, uses_anonymous_args = 0
6023	mov	ip, sp
6024	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
6025	sub	fp, ip, #4
6026	sub	sp, sp, #60
6027	push	{lr}
6028	bl	__gnu_mcount_nc
6029	mov	r3, sp
6030	ldr	r6, .L833
6031	bic	r3, r3, #8128
6032	mov	r7, r0
6033	bic	r3, r3, #63
6034	mov	r10, r1
6035	mov	r4, r0
6036	mov	r5, r0
6037	str	r2, [fp, #-88]
6038	mov	r9, #0
6039	ldr	r3, [r3, #24]
6040	str	r3, [fp, #-48]
6041	ldrh	r3, [r6, #12]
6042	str	r3, [fp, #-80]
6043	lsl	r3, r3, #3
6044	str	r3, [fp, #-84]
6045.L795:
6046	cmp	r9, r10
6047	bne	.L808
6048	mov	r0, #20
6049	ldr	r5, .L833+4
6050	ldr	r8, .L833+8
6051	mla	r7, r0, r9, r7
6052.L809:
6053	cmp	r7, r4
6054	beq	.L802
6055	ldr	r2, [r6, #3320]
6056	mov	r3, #0
6057	sub	r0, fp, #68
6058	mov	r1, #1
6059	str	r3, [r2]
6060	ldr	r2, [r6, #3328]
6061	str	r3, [r2]
6062	ldr	r2, [fp, #-88]
6063	ldr	r3, [r4, #4]
6064	str	r3, [fp, #-64]
6065	ldr	r3, [r6, #3320]
6066	str	r3, [fp, #-60]
6067	ldr	r3, [r6, #3328]
6068	str	r3, [fp, #-56]
6069	bl	FlashReadPages
6070	ldr	r9, [fp, #-68]
6071	cmn	r9, #1
6072	bne	.L810
6073	ldr	r1, [r4, #4]
6074	mov	r0, r5
6075	bl	sftl_printk
6076	str	r9, [r4]
6077.L810:
6078	ldr	r9, [fp, #-68]
6079	cmp	r9, #256
6080	bne	.L811
6081	ldr	r1, [r4, #4]
6082	mov	r0, r8
6083	bl	sftl_printk
6084	str	r9, [r4]
6085.L811:
6086	ldr	r3, [r4, #12]
6087	cmp	r3, #0
6088	beq	.L812
6089	ldr	r1, .L833
6090	ldr	r2, [r3]
6091	ldr	r1, [r1, #3328]
6092	ldr	r0, [r1]
6093	cmp	r2, r0
6094	bne	.L813
6095	ldr	lr, [r3, #8]
6096	ldr	ip, [r1, #8]
6097	cmp	lr, ip
6098	beq	.L812
6099.L813:
6100	ldr	r1, [r1, #4]
6101	strd	r0, [sp]
6102	ldr	r0, .L833+12
6103	ldr	r3, [r3, #4]
6104	ldr	r1, [r4, #4]
6105	bl	sftl_printk
6106	mvn	r3, #0
6107	str	r3, [r4]
6108.L812:
6109	ldr	r3, [r4, #8]
6110	cmp	r3, #0
6111	beq	.L814
6112	ldr	r1, .L833
6113	ldr	r2, [r3]
6114	ldr	r1, [r1, #3320]
6115	ldr	r0, [r1]
6116	cmp	r2, r0
6117	bne	.L815
6118	ldr	lr, [r3, #2048]
6119	ldr	ip, [r1, #2048]
6120	cmp	lr, ip
6121	beq	.L814
6122.L815:
6123	ldr	r1, [r1, #4]
6124	strd	r0, [sp]
6125	ldr	r0, .L833+16
6126	ldr	r3, [r3, #4]
6127	ldr	r1, [r4, #4]
6128	bl	sftl_printk
6129	mvn	r3, #0
6130	str	r3, [r4]
6131.L814:
6132	add	r4, r4, #20
6133	b	.L809
6134.L808:
6135	ldr	r3, [r5, #8]
6136	cmp	r3, #0
6137	beq	.L796
6138	ldr	r3, [r5, #12]
6139	cmp	r3, #0
6140	bne	.L797
6141.L796:
6142	ldr	r1, .L833+20
6143	mov	r2, #148
6144	ldr	r0, .L833+24
6145	bl	sftl_printk
6146.L797:
6147	sub	r2, fp, #76
6148	sub	r1, fp, #72
6149	mov	r0, r5
6150	bl	l2p_addr_tran
6151	ldr	r8, [fp, #-76]
6152	cmp	r8, #3
6153	bls	.L798
6154.L832:
6155	mvn	r3, #0
6156	str	r3, [r5]
6157	b	.L799
6158.L798:
6159	cmp	r8, #0
6160	bne	.L800
6161	ldr	r3, [fp, #-72]
6162	ldr	r2, [fp, #-84]
6163	cmp	r2, r3
6164	bls	.L800
6165	ldr	r6, .L833+20
6166	ldr	r5, .L833+28
6167.L801:
6168	ldr	r2, [r4, #4]
6169	mvn	r3, #0
6170	mov	r1, r6
6171	str	r3, [r4]
6172	mov	r0, r5
6173	add	r8, r8, #1
6174	bl	sftl_printk
6175	ldr	r1, [r4, #8]
6176	ldr	r0, .L833+32
6177	mov	r3, #16
6178	mov	r2, #4
6179	add	r4, r4, #20
6180	bl	rknand_print_hex
6181	mov	r3, #4
6182	ldr	r1, [r4, #-8]
6183	mov	r2, r3
6184	ldr	r0, .L833+36
6185	bl	rknand_print_hex
6186	cmp	r10, r8
6187	bne	.L801
6188	bl	dump_stack
6189.L802:
6190	mov	r3, sp
6191	ldr	r2, [fp, #-48]
6192	bic	r3, r3, #8128
6193	bic	r3, r3, #63
6194	ldr	r3, [r3, #24]
6195	cmp	r2, r3
6196	beq	.L817
6197	bl	__stack_chk_fail
6198.L800:
6199	ldr	r1, [r5, #8]
6200	tst	r1, #63
6201	moveq	r8, r1
6202	beq	.L803
6203	ldr	r8, [r6, #3320]
6204	cmp	r8, r1
6205	beq	.L803
6206	ldr	r3, .L833+40
6207	mov	r0, r8
6208	ldrh	r2, [r3]
6209	lsl	r2, r2, #9
6210	bl	ftl_memcpy
6211.L803:
6212	ldr	r3, [r5, #12]
6213	mov	r2, r8
6214	ldr	r1, [fp, #-72]
6215	ldrb	r0, [fp, #-76]	@ zero_extendqisi2
6216	ldr	ip, [r6, #3252]
6217	blx	ip
6218	cmp	r0, #0
6219	streq	r0, [r5]
6220	mvnne	r3, #0
6221	strne	r3, [r5]
6222	ldrh	r3, [r6, #14]
6223	cmp	r3, #4
6224	bne	.L799
6225	ldr	r0, [fp, #-80]
6226	add	r2, r8, #2048
6227	ldr	r3, [r5, #12]
6228	ldr	r1, [fp, #-72]
6229	ldr	ip, [r6, #3252]
6230	add	r3, r3, #8
6231	add	r1, r0, r1
6232	ldrb	r0, [fp, #-76]	@ zero_extendqisi2
6233	blx	ip
6234	cmp	r0, #0
6235	bne	.L832
6236.L799:
6237	add	r9, r9, #1
6238	add	r5, r5, #20
6239	b	.L795
6240.L817:
6241	mov	r0, #0
6242	sub	sp, fp, #40
6243	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
6244.L834:
6245	.align	2
6246.L833:
6247	.word	.LANCHOR0
6248	.word	.LC95
6249	.word	.LC96
6250	.word	.LC97
6251	.word	.LC98
6252	.word	.LANCHOR1+256
6253	.word	.LC8
6254	.word	.LC86
6255	.word	.LC87
6256	.word	.LC88
6257	.word	.LANCHOR0+258
6258	.size	FlashProgPages, .-FlashProgPages
6259	.align	2
6260	.global	FtlLowFormatEraseBlock
6261	.syntax unified
6262	.arm
6263	.fpu softvfp
6264	.type	FtlLowFormatEraseBlock, %function
6265FtlLowFormatEraseBlock:
6266	@ args = 0, pretend = 0, frame = 16
6267	@ frame_needed = 1, uses_anonymous_args = 0
6268	mov	ip, sp
6269	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
6270	sub	fp, ip, #4
6271	sub	sp, sp, #20
6272	push	{lr}
6273	bl	__gnu_mcount_nc
6274	ldr	r4, .L877
6275	mov	r9, #0
6276	mov	r6, r9
6277	mov	r5, r9
6278	add	r10, r4, #312
6279	strd	r0, [fp, #-52]
6280	mov	r8, #20
6281	str	r0, [r4, #3284]
6282.L836:
6283	ldrh	r1, [r4, #232]
6284	uxth	r2, r9
6285	cmp	r1, r2
6286	bhi	.L840
6287	cmp	r6, #0
6288	beq	.L835
6289	mov	r7, #0
6290	mov	r8, #20
6291	ldr	r0, [r4, #3268]
6292	mov	r2, r6
6293	mov	r1, #0
6294	bl	FlashEraseBlocks
6295.L844:
6296	mul	r3, r8, r7
6297	ldr	r2, [r4, #3268]
6298	add	r1, r2, r3
6299	ldr	r3, [r2, r3]
6300	cmn	r3, #1
6301	bne	.L843
6302	ldr	r0, [r1, #4]
6303	add	r5, r5, #1
6304	uxth	r5, r5
6305	ubfx	r0, r0, #10, #16
6306	bl	FtlBbmMapBadBlock
6307.L843:
6308	add	r7, r7, #1
6309	uxth	r3, r7
6310	cmp	r6, r3
6311	bhi	.L844
6312.L845:
6313	ldr	r3, [fp, #-48]
6314	mov	r9, #0
6315	cmp	r3, #0
6316	moveq	r3, #2
6317	movne	r8, #1
6318	ldrne	r3, .L877+4
6319	ldreq	r8, [fp, #-48]
6320	streq	r3, [fp, #-56]
6321	ldrhne	r3, [r3]
6322	strne	r3, [fp, #-56]
6323.L853:
6324	mov	r10, #0
6325	mov	r6, r10
6326.L846:
6327	ldrh	r1, [r4, #232]
6328	uxth	r2, r10
6329	cmp	r1, r2
6330	bhi	.L849
6331	cmp	r6, #0
6332	beq	.L835
6333	mov	r7, #0
6334	mov	r10, #20
6335	ldr	r0, [r4, #3268]
6336	mov	r2, r8
6337	mov	r1, r6
6338	mov	r3, #1
6339	bl	FlashProgPages
6340.L852:
6341	mul	r3, r10, r7
6342	ldr	r2, [r4, #3268]
6343	add	r1, r2, r3
6344	ldr	r3, [r2, r3]
6345	cmp	r3, #0
6346	beq	.L851
6347	ldr	r0, [r1, #4]
6348	add	r5, r5, #1
6349	uxth	r5, r5
6350	ubfx	r0, r0, #10, #16
6351	bl	FtlBbmMapBadBlock
6352.L851:
6353	add	r7, r7, #1
6354	uxth	r3, r7
6355	cmp	r6, r3
6356	bhi	.L852
6357	add	r9, r9, #1
6358	ldr	r2, [fp, #-56]
6359	uxth	r3, r9
6360	cmp	r2, r3
6361	bhi	.L853
6362	mov	r7, #0
6363	mov	r9, #20
6364.L855:
6365	ldr	r3, [fp, #-48]
6366	cmp	r3, #0
6367	beq	.L854
6368	mul	r3, r9, r7
6369	ldr	r2, [r4, #3268]
6370	add	r1, r2, r3
6371	ldr	r3, [r2, r3]
6372	cmp	r3, #0
6373	bne	.L854
6374	ldr	r0, [r1, #4]
6375	mov	r1, #1
6376	ubfx	r0, r0, #10, #16
6377	bl	FtlFreeSysBlkQueueIn
6378.L854:
6379	add	r7, r7, #1
6380	uxth	r3, r7
6381	cmp	r6, r3
6382	bhi	.L855
6383	ldr	r3, [fp, #-48]
6384	subs	r1, r3, #0
6385	ldr	r3, [fp, #-52]
6386	movne	r1, #1
6387	cmp	r3, #63
6388	orrls	r1, r1, #1
6389	cmp	r1, #0
6390	beq	.L835
6391	ldr	r0, [r4, #3268]
6392	mov	r2, r6
6393	mov	r1, r8
6394	bl	FlashEraseBlocks
6395.L835:
6396	mov	r0, r5
6397	sub	sp, fp, #40
6398	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
6399.L840:
6400	uxth	r2, r9
6401	ldr	r0, [r4, #3268]
6402	mov	r3, #0
6403	mul	r1, r8, r2
6404	add	r2, r4, r2
6405	str	r3, [r0, r1]
6406	ldr	r1, [fp, #-52]
6407	ldrb	r0, [r2, #260]	@ zero_extendqisi2
6408	bl	V2P_block
6409	ldr	r3, [fp, #-48]
6410	mov	r7, r0
6411	cmp	r3, #0
6412	beq	.L837
6413	bl	IsBlkInVendorPart
6414	cmp	r0, #0
6415	bne	.L838
6416.L837:
6417	mov	r0, r7
6418	bl	FtlBbmIsBadBlock
6419	cmp	r0, #0
6420	addne	r5, r5, #1
6421	uxthne	r5, r5
6422	bne	.L838
6423	ldr	r2, [r4, #3268]
6424	lsl	r7, r7, #10
6425	ldrh	r0, [r10]
6426	ldr	r1, [r4, #3316]
6427	mla	r2, r8, r6, r2
6428	mul	r0, r6, r0
6429	add	r6, r6, #1
6430	cmp	r0, #0
6431	uxth	r6, r6
6432	str	r1, [r2, #8]
6433	add	r1, r0, #3
6434	movge	r1, r0
6435	ldr	r0, [r4, #3336]
6436	bic	r1, r1, #3
6437	str	r7, [r2, #4]
6438	add	r1, r0, r1
6439	str	r1, [r2, #12]
6440.L838:
6441	add	r9, r9, #1
6442	b	.L836
6443.L849:
6444	uxth	r2, r10
6445	mov	r3, #20
6446	ldr	r0, [r4, #3268]
6447	mul	r1, r3, r2
6448	add	r2, r4, r2
6449	mov	r3, #0
6450	str	r3, [r0, r1]
6451	ldr	r1, [fp, #-52]
6452	ldrb	r0, [r2, #260]	@ zero_extendqisi2
6453	bl	V2P_block
6454	ldr	r3, [fp, #-48]
6455	mov	r7, r0
6456	cmp	r3, #0
6457	beq	.L847
6458	bl	IsBlkInVendorPart
6459	cmp	r0, #0
6460	bne	.L848
6461.L847:
6462	mov	r0, r7
6463	bl	FtlBbmIsBadBlock
6464	cmp	r0, #0
6465	bne	.L848
6466	ldr	r2, [r4, #3268]
6467	mov	r3, #20
6468	ldr	r1, [r4, #3312]
6469	add	r7, r9, r7, lsl #10
6470	mla	r2, r3, r6, r2
6471	ldr	r3, .L877+8
6472	ldrh	r0, [r3]
6473	str	r1, [r2, #8]
6474	str	r7, [r2, #4]
6475	mul	r0, r6, r0
6476	add	r6, r6, #1
6477	cmp	r0, #0
6478	add	r1, r0, #3
6479	movge	r1, r0
6480	ldr	r0, [r4, #3316]
6481	bic	r1, r1, #3
6482	uxth	r6, r6
6483	add	r1, r0, r1
6484	str	r1, [r2, #12]
6485.L848:
6486	add	r10, r10, #1
6487	b	.L846
6488.L878:
6489	.align	2
6490.L877:
6491	.word	.LANCHOR0
6492	.word	.LANCHOR0+304
6493	.word	.LANCHOR0+312
6494	.size	FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
6495	.align	2
6496	.global	FlashTestBlk
6497	.syntax unified
6498	.arm
6499	.fpu softvfp
6500	.type	FlashTestBlk, %function
6501FlashTestBlk:
6502	@ args = 0, pretend = 0, frame = 88
6503	@ frame_needed = 1, uses_anonymous_args = 0
6504	mov	ip, sp
6505	push	{r4, r5, r6, fp, ip, lr, pc}
6506	sub	fp, ip, #4
6507	sub	sp, sp, #92
6508	push	{lr}
6509	bl	__gnu_mcount_nc
6510	mov	r3, sp
6511	cmp	r0, #11
6512	bic	r6, r3, #8128
6513	mov	r4, r0
6514	bic	r6, r6, #63
6515	movls	r5, #0
6516	ldr	r3, [r6, #24]
6517	str	r3, [fp, #-32]
6518	bls	.L879
6519	ldr	r5, .L885
6520	sub	r0, fp, #96
6521	mov	r2, #32
6522	mov	r1, #165
6523	str	r0, [fp, #-104]
6524	lsl	r4, r4, #10
6525	ldr	r3, [r5, #3324]
6526	str	r3, [fp, #-108]
6527	bl	ftl_memset
6528	ldr	r0, [r5, #3324]
6529	mov	r2, #8
6530	mov	r1, #90
6531	bl	ftl_memset
6532	mov	r2, #1
6533	sub	r0, fp, #116
6534	mov	r1, r2
6535	str	r4, [fp, #-112]
6536	bl	FlashEraseBlocks
6537	mov	r3, #1
6538	sub	r0, fp, #116
6539	mov	r2, r3
6540	mov	r1, r3
6541	bl	FlashProgPages
6542	ldr	r3, [fp, #-116]
6543	cmp	r3, #0
6544	mvnne	r5, #0
6545	bne	.L881
6546	add	r3, r4, #1
6547	sub	r0, fp, #116
6548	str	r3, [fp, #-112]
6549	mov	r3, #1
6550	mov	r2, r3
6551	mov	r1, r3
6552	bl	FlashProgPages
6553	ldr	r5, [fp, #-116]
6554	subs	r5, r5, #0
6555	movne	r5, #1
6556	rsb	r5, r5, #0
6557.L881:
6558	sub	r0, fp, #116
6559	mov	r2, #1
6560	mov	r1, #0
6561	str	r4, [fp, #-112]
6562	bl	FlashEraseBlocks
6563.L879:
6564	ldr	r2, [fp, #-32]
6565	ldr	r3, [r6, #24]
6566	cmp	r2, r3
6567	beq	.L882
6568	bl	__stack_chk_fail
6569.L882:
6570	mov	r0, r5
6571	sub	sp, fp, #24
6572	ldmfd	sp, {r4, r5, r6, fp, sp, pc}
6573.L886:
6574	.align	2
6575.L885:
6576	.word	.LANCHOR0
6577	.size	FlashTestBlk, .-FlashTestBlk
6578	.section	.rodata.str1.1
6579.LC99:
6580	.ascii	"FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
6581.LC100:
6582	.ascii	"FtlBbmTblFlush error:%x\012\000"
6583.LC101:
6584	.ascii	"FtlBbmTblFlush error = %x error count = %d\012\000"
6585	.text
6586	.align	2
6587	.global	FtlBbmTblFlush
6588	.syntax unified
6589	.arm
6590	.fpu softvfp
6591	.type	FtlBbmTblFlush, %function
6592FtlBbmTblFlush:
6593	@ args = 0, pretend = 0, frame = 0
6594	@ frame_needed = 1, uses_anonymous_args = 0
6595	mov	ip, sp
6596	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
6597	sub	fp, ip, #4
6598	sub	sp, sp, #12
6599	push	{lr}
6600	bl	__gnu_mcount_nc
6601	ldr	r4, .L895
6602	mov	r5, #0
6603	mov	r1, #0
6604	add	r6, r4, #380
6605	add	r7, r6, #3008
6606	ldr	r3, [r4, #3332]
6607	str	r3, [r4, #3464]
6608	movw	r3, #310
6609	ldr	r0, [r4, #3300]
6610	ldrh	r2, [r4, r3]
6611	str	r0, [r4, #3460]
6612	bl	ftl_memset
6613.L888:
6614	ldrh	r3, [r4, #254]
6615	cmp	r3, r5
6616	bgt	.L889
6617	ldr	r6, [r4, #3464]
6618	mov	r2, #16
6619	ldr	r5, .L895+4
6620	mov	r1, #255
6621	mov	r0, r6
6622	mov	r7, #0
6623	bl	ftl_memset
6624	ldr	r3, .L895+8
6625	strh	r3, [r6]	@ movhi
6626	mov	r9, r5
6627	mov	r8, r7
6628	ldr	r3, [r4, #360]
6629	str	r3, [r6, #4]
6630	ldrh	r3, [r9], #-48
6631	strh	r3, [r6, #2]	@ movhi
6632	ldr	r3, [r4, #356]
6633	str	r3, [r6, #8]
6634	ldr	r3, [r4, #228]
6635	strh	r3, [r6, #12]	@ movhi
6636	ldr	r3, [r4, #2604]
6637	strh	r3, [r6, #14]	@ movhi
6638.L890:
6639	ldr	r3, [r4, #3300]
6640	mov	r10, #0
6641	ldrh	r2, [r5, #2]
6642	ldrh	r1, [r5]
6643	str	r3, [r4, #3460]
6644	ldr	r3, [r4, #3332]
6645	str	r3, [r4, #3464]
6646	orr	r3, r2, r1, lsl #10
6647	str	r3, [r4, #3456]
6648	ldrh	r3, [r6, #10]
6649	str	r3, [sp]
6650	ldr	r0, .L895+12
6651	ldrh	r3, [r5, #4]
6652	str	r10, [r4, #3452]
6653	bl	sftl_printk
6654	ldrh	r3, [r9]
6655	ldrh	r2, [r5, #2]
6656	sub	r3, r3, #1
6657	cmp	r2, r3
6658	blt	.L891
6659	ldr	r3, [r4, #360]
6660	ldr	r0, [r4, #3268]
6661	add	r3, r3, #1
6662	str	r3, [r4, #360]
6663	str	r3, [r6, #4]
6664	ldrh	r2, [r5]
6665	ldrh	r3, [r5, #4]
6666	strh	r2, [r6, #8]	@ movhi
6667	strh	r2, [r5, #4]	@ movhi
6668	mov	r2, #1
6669	strh	r3, [r5]	@ movhi
6670	mov	r1, r2
6671	lsl	r3, r3, #10
6672	str	r3, [r4, #3456]
6673	str	r3, [r0, #4]
6674	strh	r10, [r5, #2]	@ movhi
6675	bl	FlashEraseBlocks
6676.L891:
6677	mov	r3, #1
6678	ldr	r0, .L895+16
6679	mov	r2, r3
6680	mov	r1, r3
6681	bl	FlashProgPages
6682	ldrh	r3, [r5, #2]
6683	ldr	r0, [r4, #3452]
6684	add	r3, r3, #1
6685	strh	r3, [r5, #2]	@ movhi
6686	cmn	r0, #1
6687	bne	.L892
6688	add	r7, r7, #1
6689	ldr	r1, [r4, #3456]
6690	ldr	r0, .L895+20
6691	uxth	r7, r7
6692	bl	sftl_printk
6693	cmp	r7, #3
6694	bls	.L890
6695	ldr	r1, [r4, #3456]
6696	mov	r2, r7
6697	ldr	r0, .L895+24
6698	bl	sftl_printk
6699.L894:
6700	b	.L894
6701.L889:
6702	ldrh	r2, [r7]
6703	ldr	r3, [r4, #3460]
6704	ldr	r1, [r6], #4
6705	mul	r0, r5, r2
6706	lsl	r2, r2, #2
6707	add	r5, r5, #1
6708	add	r0, r3, r0, lsl #2
6709	bl	ftl_memcpy
6710	b	.L888
6711.L892:
6712	add	r8, r8, #1
6713	cmp	r0, #256
6714	cmpne	r8, #1
6715	movle	r0, #1
6716	movgt	r0, #0
6717	ble	.L890
6718	sub	sp, fp, #40
6719	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
6720.L896:
6721	.align	2
6722.L895:
6723	.word	.LANCHOR0
6724	.word	.LANCHOR0+352
6725	.word	-3887
6726	.word	.LC99
6727	.word	.LANCHOR0+3452
6728	.word	.LC100
6729	.word	.LC101
6730	.size	FtlBbmTblFlush, .-FtlBbmTblFlush
6731	.align	2
6732	.global	allocate_data_superblock
6733	.syntax unified
6734	.arm
6735	.fpu softvfp
6736	.type	allocate_data_superblock, %function
6737allocate_data_superblock:
6738	@ args = 0, pretend = 0, frame = 8
6739	@ frame_needed = 1, uses_anonymous_args = 0
6740	mov	ip, sp
6741	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
6742	sub	fp, ip, #4
6743	sub	sp, sp, #12
6744	push	{lr}
6745	bl	__gnu_mcount_nc
6746	ldr	r4, .L929
6747	mov	r5, r0
6748.L898:
6749	ldr	r2, .L929+4
6750	ldrh	r3, [r4, #224]
6751	ldrh	r2, [r2]
6752	add	r3, r3, r2
6753	ldrh	r2, [r4, #240]
6754	cmp	r3, r2
6755	ble	.L899
6756	ldr	r1, .L929+8
6757	movw	r2, #2667
6758	ldr	r0, .L929+12
6759	bl	sftl_printk
6760.L899:
6761	ldr	r3, .L929+16
6762	cmp	r5, r3
6763	movne	r1, #0
6764	bne	.L900
6765	ldrh	r3, [r4, #224]
6766	ldr	r1, [r4, #3164]
6767	mul	r2, r1, r3
6768	lsr	r1, r3, #1
6769	movw	r3, #65535
6770	add	r1, r1, r2, lsr #2
6771	uxth	r1, r1
6772	cmp	r1, r3
6773	moveq	r1, #0
6774.L900:
6775	ldr	r0, .L929+20
6776	bl	List_pop_index_node
6777	ldrh	r3, [r4, #224]
6778	mov	r6, r0
6779	uxth	r8, r0
6780	cmp	r3, #0
6781	bne	.L901
6782	ldr	r1, .L929+8
6783	movw	r2, #2676
6784	ldr	r0, .L929+12
6785	bl	sftl_printk
6786.L901:
6787	ldrh	r3, [r4, #224]
6788	sub	r3, r3, #1
6789	strh	r3, [r4, #224]	@ movhi
6790	ldrh	r3, [r4, #240]
6791	cmp	r3, r8
6792	bls	.L898
6793	uxth	r6, r6
6794	ldr	r3, [r4, #72]
6795	lsl	r6, r6, #1
6796	ldrh	r7, [r3, r6]
6797	cmp	r7, #0
6798	bne	.L898
6799	mov	r0, r5
6800	strh	r8, [r5]	@ movhi
6801	bl	make_superblock
6802	ldrb	r3, [r5, #7]	@ zero_extendqisi2
6803	cmp	r3, #0
6804	bne	.L903
6805	ldr	r3, [r4, #72]
6806	mvn	r2, #0
6807	mov	r0, r8
6808	strh	r2, [r3, r6]	@ movhi
6809	bl	INSERT_DATA_LIST
6810	ldr	r2, .L929+4
6811	ldrh	r3, [r4, #224]
6812	ldrh	r2, [r2]
6813	add	r3, r3, r2
6814	ldrh	r2, [r4, #240]
6815	cmp	r3, r2
6816	ble	.L898
6817	ldr	r1, .L929+8
6818	movw	r2, #2690
6819	ldr	r0, .L929+12
6820	bl	sftl_printk
6821	b	.L898
6822.L903:
6823	ldr	r2, .L929+4
6824	ldrh	r3, [r4, #224]
6825	ldrh	r2, [r2]
6826	add	r3, r3, r2
6827	ldrh	r2, [r4, #240]
6828	cmp	r3, r2
6829	ble	.L905
6830	ldr	r1, .L929+8
6831	movw	r2, #2693
6832	ldr	r0, .L929+12
6833	bl	sftl_printk
6834.L905:
6835	ldr	r0, [r4, #3268]
6836	add	r10, r5, #16
6837	ldrh	r3, [r4, #232]
6838	mov	r9, r10
6839	str	r3, [fp, #-48]
6840	mov	r2, r0
6841	mov	r3, #0
6842	mov	ip, r3
6843.L906:
6844	ldr	lr, [fp, #-48]
6845	uxth	r1, r3
6846	cmp	lr, r1
6847	bhi	.L908
6848	cmp	r7, #0
6849	bne	.L909
6850	ldr	r1, .L929+8
6851	mov	r2, #2704
6852	ldr	r0, .L929+12
6853	bl	sftl_printk
6854.L909:
6855	ldrh	r3, [r4, #172]
6856	cmp	r3, r8
6857	bne	.L910
6858	ldr	r1, .L929+8
6859	movw	r2, #2706
6860	ldr	r0, .L929+12
6861	bl	sftl_printk
6862.L910:
6863	ldr	r1, [r4, #2536]
6864	ldrb	r2, [r5, #8]	@ zero_extendqisi2
6865	ldrh	r3, [r1, r6]
6866	cmp	r2, #0
6867	ldr	r2, .L929+24
6868	bne	.L911
6869	cmp	r3, #0
6870	moveq	r3, #2
6871	ldrhne	r0, [r2]
6872	addne	r3, r3, r0
6873	uxthne	r3, r3
6874	strh	r3, [r1, r6]	@ movhi
6875	ldr	r3, [r4, #2596]
6876	add	r3, r3, #1
6877	str	r3, [r4, #2596]
6878.L913:
6879	ldr	r3, [r4, #2536]
6880	ldr	r1, [r4, #2612]
6881	ldrh	r2, [r2]
6882	ldrh	r3, [r3, r6]
6883	ldr	r0, [r4, #2596]
6884	cmp	r3, r1
6885	strhi	r3, [r4, #2612]
6886	ldr	r3, [r4, #2600]
6887	ldrh	r1, [r4, #240]
6888	mla	r0, r0, r2, r3
6889	bl	__aeabi_uidiv
6890	ldr	r2, [r4, #3348]
6891	str	r0, [r4, #2604]
6892	ldr	r0, [r4, #3268]
6893	ldr	r3, [r2, #16]
6894	ldr	ip, .L929+28
6895	add	r3, r3, #1
6896	str	r3, [r2, #16]
6897	add	r3, r0, #4
6898	mov	r2, #0
6899.L915:
6900	uxth	r1, r2
6901	add	r3, r3, #20
6902	cmp	r7, r1
6903	bhi	.L916
6904	ldrb	r1, [r5, #8]	@ zero_extendqisi2
6905	mov	r2, r7
6906	bl	FlashEraseBlocks
6907	mov	r9, #0
6908	mov	r3, r9
6909	mov	r1, #20
6910.L917:
6911	uxth	r2, r9
6912	cmp	r7, r2
6913	bhi	.L919
6914	cmp	r3, #0
6915	ble	.L920
6916	mov	r0, r8
6917	bl	update_multiplier_value
6918	bl	FtlBbmTblFlush
6919.L920:
6920	ldrb	r2, [r5, #7]	@ zero_extendqisi2
6921	cmp	r2, #0
6922	bne	.L921
6923	ldr	r3, [r4, #72]
6924	mvn	r2, #0
6925	strh	r2, [r3, r6]	@ movhi
6926	b	.L898
6927.L908:
6928	str	ip, [r2, #8]
6929	movw	lr, #65535
6930	str	ip, [r2, #12]
6931	ldrh	r1, [r9], #2
6932	cmp	r1, lr
6933	beq	.L907
6934	mov	lr, #20
6935	lsl	r1, r1, #10
6936	mla	lr, lr, r7, r0
6937	add	r7, r7, #1
6938	uxth	r7, r7
6939	str	r1, [lr, #4]
6940.L907:
6941	add	r3, r3, #1
6942	add	r2, r2, #20
6943	b	.L906
6944.L911:
6945	add	r3, r3, #1
6946	strh	r3, [r1, r6]	@ movhi
6947	ldr	r3, [r4, #2600]
6948	add	r3, r3, #1
6949	str	r3, [r4, #2600]
6950	b	.L913
6951.L916:
6952	ldr	r1, [r3, #-20]
6953	add	r2, r2, #1
6954	and	r1, r1, ip
6955	str	r1, [r3, #-20]
6956	b	.L915
6957.L919:
6958	mul	r2, r1, r9
6959	ldr	r0, [r4, #3268]
6960	add	ip, r0, r2
6961	ldr	r2, [r0, r2]
6962	cmn	r2, #1
6963	bne	.L918
6964	ldr	r0, [ip, #4]
6965	add	r3, r3, #1
6966	str	r2, [fp, #-52]
6967	str	r3, [fp, #-48]
6968	ubfx	r0, r0, #10, #16
6969	bl	FtlBbmMapBadBlock
6970	ldr	r2, [fp, #-52]
6971	strh	r2, [r10]	@ movhi
6972	mov	r1, #20
6973	ldr	r3, [fp, #-48]
6974	ldrb	r2, [r5, #7]	@ zero_extendqisi2
6975	sub	r2, r2, #1
6976	strb	r2, [r5, #7]
6977.L918:
6978	add	r9, r9, #1
6979	add	r10, r10, #2
6980	b	.L917
6981.L921:
6982	movw	r3, #302
6983	ldrh	r3, [r4, r3]
6984	strh	r8, [r5]	@ movhi
6985	smulbb	r3, r3, r2
6986	mov	r2, #0
6987	strh	r2, [r5, #2]	@ movhi
6988	strb	r2, [r5, #6]
6989	ldr	r2, [r4, #2588]
6990	uxth	r3, r3
6991	str	r2, [r5, #12]
6992	add	r2, r2, #1
6993	str	r2, [r4, #2588]
6994	ldr	r1, [r4, #72]
6995	ldrh	r2, [r5]
6996	strh	r3, [r5, #4]	@ movhi
6997	lsl	r2, r2, #1
6998	strh	r3, [r1, r2]	@ movhi
6999	ldrh	r3, [r5, #4]
7000	cmp	r3, #0
7001	beq	.L922
7002	ldrb	r3, [r5, #7]	@ zero_extendqisi2
7003	cmp	r3, #0
7004	bne	.L923
7005.L922:
7006	ldr	r1, .L929+8
7007	movw	r2, #2759
7008	ldr	r0, .L929+12
7009	bl	sftl_printk
7010.L923:
7011	mov	r0, #0
7012	sub	sp, fp, #40
7013	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
7014.L930:
7015	.align	2
7016.L929:
7017	.word	.LANCHOR0
7018	.word	.LANCHOR0+2528
7019	.word	.LANCHOR1+271
7020	.word	.LC8
7021	.word	.LANCHOR0+124
7022	.word	.LANCHOR0+2532
7023	.word	.LANCHOR0+292
7024	.word	-1024
7025	.size	allocate_data_superblock, .-allocate_data_superblock
7026	.section	.rodata.str1.1
7027.LC102:
7028	.ascii	"FtlGcFreeBadSuperBlk 0x%x\012\000"
7029	.text
7030	.align	2
7031	.global	FtlGcFreeBadSuperBlk
7032	.syntax unified
7033	.arm
7034	.fpu softvfp
7035	.type	FtlGcFreeBadSuperBlk, %function
7036FtlGcFreeBadSuperBlk:
7037	@ args = 0, pretend = 0, frame = 16
7038	@ frame_needed = 1, uses_anonymous_args = 0
7039	mov	ip, sp
7040	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
7041	sub	fp, ip, #4
7042	sub	sp, sp, #20
7043	push	{lr}
7044	bl	__gnu_mcount_nc
7045	ldr	r9, .L939
7046	movw	r3, #3206
7047	str	r0, [fp, #-48]
7048	ldrh	r3, [r9, r3]
7049	cmp	r3, #0
7050	bne	.L938
7051.L933:
7052	mov	r0, #0
7053	sub	sp, fp, #40
7054	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
7055.L937:
7056	uxtah	r3, r9, r7
7057	ldr	r1, [fp, #-48]
7058	mov	r8, #0
7059	ldrb	r0, [r3, #260]	@ zero_extendqisi2
7060	bl	V2P_block
7061	mov	r4, r0
7062.L934:
7063	ldr	r3, .L939+4
7064	uxth	r2, r8
7065	ldrh	r1, [r3]
7066	cmp	r1, r2
7067	bhi	.L936
7068	add	r7, r7, #1
7069.L932:
7070	ldrh	r2, [r9, #232]
7071	uxth	r3, r7
7072	cmp	r2, r3
7073	bhi	.L937
7074	bl	FtlGcReFreshBadBlk
7075	b	.L933
7076.L936:
7077	uxth	r6, r8
7078	lsl	r1, r6, #1
7079	add	r3, r10, r6, lsl #1
7080	ldrh	r1, [r10, r1]
7081	cmp	r1, r4
7082	bne	.L935
7083	mov	r1, r4
7084	ldr	r0, .L939+8
7085	str	r3, [fp, #-56]
7086	str	r2, [fp, #-52]
7087	bl	sftl_printk
7088	mov	r0, r4
7089	bl	FtlBbmMapBadBlock
7090	bl	FtlBbmTblFlush
7091	ldr	r3, .L939+4
7092	ldr	r2, [fp, #-52]
7093	add	r1, r6, #1
7094	add	r1, r10, r1, lsl #1
7095	ldrh	r5, [r3]
7096	ldr	r3, [fp, #-56]
7097	sub	r0, r5, r2
7098	cmp	r2, r5
7099	sub	r5, r5, #1
7100	uxth	r0, r0
7101	movhi	r2, #0
7102	lslls	r2, r0, #1
7103	mov	r0, r3
7104	bl	memmove
7105	ldr	r3, .L939+4
7106	strh	r5, [r3]	@ movhi
7107.L935:
7108	add	r8, r8, #1
7109	b	.L934
7110.L938:
7111	ldr	r10, .L939+12
7112	mov	r7, #0
7113	b	.L932
7114.L940:
7115	.align	2
7116.L939:
7117	.word	.LANCHOR0
7118	.word	.LANCHOR0+3206
7119	.word	.LC102
7120	.word	.LANCHOR0+3208
7121	.size	FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
7122	.align	2
7123	.global	update_vpc_list
7124	.syntax unified
7125	.arm
7126	.fpu softvfp
7127	.type	update_vpc_list, %function
7128update_vpc_list:
7129	@ args = 0, pretend = 0, frame = 0
7130	@ frame_needed = 1, uses_anonymous_args = 0
7131	mov	ip, sp
7132	push	{r4, r5, r6, r7, fp, ip, lr, pc}
7133	sub	fp, ip, #4
7134	push	{lr}
7135	bl	__gnu_mcount_nc
7136	ldr	r4, .L953
7137	lsl	r3, r0, #1
7138	mov	r5, r0
7139	ldr	r2, [r4, #72]
7140	ldrh	r3, [r2, r3]
7141	cmp	r3, #0
7142	bne	.L942
7143	ldrh	r3, [r4, #222]
7144	cmp	r3, r0
7145	mvneq	r3, #0
7146	strheq	r3, [r4, #222]	@ movhi
7147	ldrh	r3, [r4, #220]
7148	cmp	r3, r0
7149	mvneq	r3, #0
7150	strheq	r3, [r4, #220]	@ movhi
7151	ldrh	r3, [r4, #172]
7152	cmp	r3, r0
7153	mvneq	r3, #0
7154	strheq	r3, [r4, #172]	@ movhi
7155	beq	.L946
7156	ldrh	r3, [r4, #24]
7157	cmp	r3, r0
7158	beq	.L951
7159	ldrh	r3, [r4, #76]
7160	cmp	r3, r0
7161	beq	.L951
7162	ldrh	r3, [r4, #124]
7163	cmp	r3, r0
7164	beq	.L951
7165.L946:
7166	ldr	r6, .L953+4
7167	mov	r1, r5
7168	ldr	r0, .L953+8
7169	bl	List_remove_node
7170	ldrh	r3, [r6]
7171	cmp	r3, #0
7172	bne	.L948
7173	ldr	r1, .L953+12
7174	movw	r2, #2835
7175	ldr	r0, .L953+16
7176	bl	sftl_printk
7177.L948:
7178	ldrh	r3, [r6]
7179	mov	r0, r5
7180	sub	r3, r3, #1
7181	strh	r3, [r6]	@ movhi
7182	bl	free_data_superblock
7183	mov	r0, r5
7184	bl	FtlGcFreeBadSuperBlk
7185	ldrh	r2, [r6]
7186	ldrh	r3, [r4, #224]
7187	add	r3, r3, r2
7188	ldrh	r2, [r4, #240]
7189	cmp	r3, r2
7190	ble	.L952
7191	ldr	r1, .L953+12
7192	movw	r2, #2838
7193	ldr	r0, .L953+16
7194	bl	sftl_printk
7195.L952:
7196	mov	r0, #1
7197	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
7198.L942:
7199	bl	List_update_data_list
7200.L951:
7201	mov	r0, #0
7202	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
7203.L954:
7204	.align	2
7205.L953:
7206	.word	.LANCHOR0
7207	.word	.LANCHOR0+2528
7208	.word	.LANCHOR0+2520
7209	.word	.LANCHOR1+296
7210	.word	.LC8
7211	.size	update_vpc_list, .-update_vpc_list
7212	.section	.rodata.str1.1
7213.LC103:
7214	.ascii	"decrement_vpc_count %x = %d\012\000"
7215	.text
7216	.align	2
7217	.global	decrement_vpc_count
7218	.syntax unified
7219	.arm
7220	.fpu softvfp
7221	.type	decrement_vpc_count, %function
7222decrement_vpc_count:
7223	@ args = 0, pretend = 0, frame = 0
7224	@ frame_needed = 1, uses_anonymous_args = 0
7225	mov	ip, sp
7226	push	{r4, r5, r6, r7, fp, ip, lr, pc}
7227	sub	fp, ip, #4
7228	push	{lr}
7229	bl	__gnu_mcount_nc
7230	movw	r3, #65535
7231	ldr	r6, .L967
7232	mov	r5, r0
7233	cmp	r0, r3
7234	beq	.L956
7235	ldr	r3, [r6, #72]
7236	lsl	r4, r0, #1
7237	ldrh	r2, [r3, r4]
7238	cmp	r2, #0
7239	subne	r2, r2, #1
7240	strhne	r2, [r3, r4]	@ movhi
7241	bne	.L956
7242	mov	r1, r0
7243	ldr	r0, .L967+4
7244	bl	sftl_printk
7245	ldr	r3, [r6, #72]
7246	ldrh	r4, [r3, r4]
7247	cmp	r4, #0
7248	beq	.L958
7249.L965:
7250	mov	r4, #0
7251.L955:
7252	mov	r0, r4
7253	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
7254.L958:
7255	movw	r2, #2853
7256.L966:
7257	ldr	r1, .L967+8
7258	ldr	r0, .L967+12
7259	bl	sftl_printk
7260	b	.L955
7261.L956:
7262	movw	r7, #3438
7263	movw	r3, #65535
7264	ldrh	r0, [r6, r7]
7265	cmp	r0, r3
7266	strheq	r5, [r6, r7]	@ movhi
7267	beq	.L965
7268.L960:
7269	cmp	r0, r5
7270	beq	.L965
7271	bl	update_vpc_list
7272	ldr	r2, [r6, #2516]
7273	ldr	r3, [r6, #2520]
7274	subs	r4, r0, #0
7275	ldr	r1, [r6, #72]
7276	sub	r3, r3, r2
7277	ldr	r2, .L967+16
7278	strh	r5, [r6, r7]	@ movhi
7279	movne	r4, #1
7280	asr	r3, r3, #1
7281	mul	r3, r2, r3
7282	uxth	r2, r3
7283	uxth	r3, r3
7284	cmp	r3, r5
7285	lsl	r2, r2, #1
7286	ldrh	r2, [r1, r2]
7287	clz	r2, r2
7288	lsr	r2, r2, #5
7289	moveq	r2, #0
7290	cmp	r2, #0
7291	beq	.L955
7292	movw	r2, #2869
7293	b	.L966
7294.L968:
7295	.align	2
7296.L967:
7297	.word	.LANCHOR0
7298	.word	.LC103
7299	.word	.LANCHOR1+312
7300	.word	.LC8
7301	.word	-1431655765
7302	.size	decrement_vpc_count, .-decrement_vpc_count
7303	.align	2
7304	.global	FtlSuperblockPowerLostFix
7305	.syntax unified
7306	.arm
7307	.fpu softvfp
7308	.type	FtlSuperblockPowerLostFix, %function
7309FtlSuperblockPowerLostFix:
7310	@ args = 0, pretend = 0, frame = 24
7311	@ frame_needed = 1, uses_anonymous_args = 0
7312	mov	ip, sp
7313	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
7314	sub	fp, ip, #4
7315	sub	sp, sp, #24
7316	push	{lr}
7317	bl	__gnu_mcount_nc
7318	ldr	r5, .L981
7319	mov	r3, sp
7320	bic	r8, r3, #8128
7321	mov	r4, r0
7322	bic	r8, r8, #63
7323	mvn	r0, #2
7324	mvn	r1, #1
7325	mov	r9, #0
7326	ldr	r7, [r5, #3332]
7327	movw	r2, #61589
7328	ldr	r3, [r8, #24]
7329	str	r3, [fp, #-40]
7330	mvn	r3, #0
7331	str	r3, [fp, #-44]
7332	ldr	r3, [r5, #3300]
7333	str	r3, [fp, #-52]
7334	str	r7, [fp, #-48]
7335	strd	r0, [r7, #8]
7336	ldrh	r3, [r4]
7337	strh	r3, [r7, #2]	@ movhi
7338	strh	r9, [r7]	@ movhi
7339	ldr	r3, [r5, #3300]
7340	str	r2, [r3]
7341	ldr	r2, .L981+4
7342	ldr	r3, [r5, #3300]
7343	str	r2, [r3, #4]
7344	ldrh	r6, [r4, #4]
7345	and	r6, r6, #1
7346	add	r6, r6, #6
7347.L970:
7348	ldrh	r3, [r4, #4]
7349	cmp	r6, #0
7350	beq	.L972
7351	cmp	r3, #0
7352	bne	.L971
7353.L972:
7354	ldrh	r3, [r4]
7355	ldr	r1, [r5, #72]
7356	ldrh	r0, [r4, #4]
7357	lsl	r3, r3, #1
7358	ldrh	r2, [r1, r3]
7359	sub	r2, r2, r0
7360	strh	r2, [r1, r3]	@ movhi
7361	movw	r3, #302
7362	ldr	r2, [fp, #-40]
7363	ldrh	r3, [r5, r3]
7364	strh	r3, [r4, #2]	@ movhi
7365	mov	r3, #0
7366	strb	r3, [r4, #6]
7367	strh	r3, [r4, #4]	@ movhi
7368	ldr	r3, [r8, #24]
7369	cmp	r2, r3
7370	beq	.L976
7371	bl	__stack_chk_fail
7372.L971:
7373	mov	r0, r4
7374	bl	get_new_active_ppa
7375	cmn	r0, #1
7376	str	r0, [fp, #-56]
7377	beq	.L972
7378	ldr	r3, [r5, #2592]
7379	mov	r1, #1
7380	str	r3, [r7, #4]
7381	sub	r0, fp, #60
7382	cmn	r3, #2
7383	add	r2, r3, #1
7384	movne	r3, r2
7385	moveq	r3, r9
7386	str	r3, [r5, #2592]
7387	mov	r3, #0
7388	mov	r2, r3
7389	sub	r6, r6, #1
7390	bl	FlashProgPages
7391	ldrh	r0, [r4]
7392	bl	decrement_vpc_count
7393	b	.L970
7394.L976:
7395	sub	sp, fp, #36
7396	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
7397.L982:
7398	.align	2
7399.L981:
7400	.word	.LANCHOR0
7401	.word	305419896
7402	.size	FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
7403	.align	2
7404	.global	FtlMakeBbt
7405	.syntax unified
7406	.arm
7407	.fpu softvfp
7408	.type	FtlMakeBbt, %function
7409FtlMakeBbt:
7410	@ args = 0, pretend = 0, frame = 8
7411	@ frame_needed = 1, uses_anonymous_args = 0
7412	mov	ip, sp
7413	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
7414	sub	fp, ip, #4
7415	sub	sp, sp, #12
7416	push	{lr}
7417	bl	__gnu_mcount_nc
7418	ldr	r8, .L1002
7419	mov	r7, #0
7420	bl	FtlBbtMemInit
7421	sub	r9, r8, #16
7422	sub	r4, r8, #380
7423	bl	FtlLoadFactoryBbt
7424.L984:
7425	ldrh	r3, [r4, #254]
7426	cmp	r3, r7
7427	bhi	.L990
7428	ldr	r6, .L1002+4
7429	mov	r5, #0
7430.L991:
7431	ldrh	r3, [r6]
7432	uxth	r0, r5
7433	cmp	r3, r0
7434	bhi	.L992
7435	ldr	r5, .L1002+8
7436	movw	r7, #65535
7437	ldrh	r6, [r5, #12]
7438	sub	r6, r6, #1
7439	uxth	r6, r6
7440.L993:
7441	ldrh	r3, [r5, #12]
7442	sub	r3, r3, #48
7443	cmp	r6, r3
7444	ble	.L997
7445	mov	r0, r6
7446	bl	FtlBbmIsBadBlock
7447	cmp	r0, #1
7448	beq	.L994
7449	mov	r0, r6
7450	bl	FlashTestBlk
7451	cmp	r0, #0
7452	beq	.L995
7453	mov	r0, r6
7454	bl	FtlBbmMapBadBlock
7455.L994:
7456	sub	r6, r6, #1
7457	uxth	r6, r6
7458	b	.L993
7459.L990:
7460	ldrh	r5, [r9]
7461	ldr	r3, [r4, #3332]
7462	ldr	r0, [r4, #3300]
7463	str	r3, [fp, #-48]
7464	str	r3, [r4, #3464]
7465	movw	r3, #65535
7466	ldr	r10, .L1002+12
7467	cmp	r5, r3
7468	str	r0, [r4, #3460]
7469	beq	.L985
7470	ldrh	r3, [r10]
7471	mov	r2, #1
7472	ldr	r0, .L1002+16
7473	mov	r1, r2
7474	mla	r5, r7, r3, r5
7475	lsl	r3, r5, #10
7476	str	r3, [r4, #3456]
7477	bl	FlashReadPages
7478	ldrh	r2, [r10]
7479	ldr	r1, [r4, #3460]
7480	add	r2, r2, #7
7481	ldr	r0, [r8]
7482	lsr	r2, r2, #3
7483	bl	ftl_memcpy
7484.L986:
7485	uxth	r0, r5
7486	add	r7, r7, #1
7487	add	r8, r8, #4
7488	add	r9, r9, #2
7489	bl	FtlBbmMapBadBlock
7490	b	.L984
7491.L985:
7492	mov	r1, r7
7493	bl	FlashGetBadBlockList
7494	ldr	r1, [r8]
7495	ldr	r0, [r4, #3460]
7496	bl	FtlBbt2Bitmap
7497	ldrh	r6, [r10]
7498.L988:
7499	sub	r6, r6, #1
7500	uxth	r6, r6
7501.L987:
7502	ldrh	r0, [r10]
7503	smlabb	r0, r0, r7, r6
7504	uxth	r0, r0
7505	bl	FtlBbmIsBadBlock
7506	cmp	r0, #1
7507	beq	.L988
7508	mov	r2, #16
7509	mov	r1, #0
7510	ldr	r0, [r4, #3332]
7511	strh	r6, [r9]	@ movhi
7512	bl	ftl_memset
7513	mov	r2, #4096
7514	mov	r1, #0
7515	ldr	r0, [r4, #3300]
7516	bl	ftl_memset
7517	ldr	r2, [fp, #-48]
7518	ldr	r3, .L1002+20
7519	strh	r3, [r2]	@ movhi
7520	mov	r3, #0
7521	str	r3, [r2, #4]
7522	ldrh	r3, [r10]
7523	ldrh	r5, [r9]
7524	strh	r5, [r2, #2]	@ movhi
7525	ldr	r1, [r8]
7526	mla	r5, r7, r3, r5
7527	ldr	r0, [r4, #3460]
7528	lsl	r3, r5, #10
7529	str	r3, [r4, #3456]
7530	ldr	r3, .L1002+24
7531	ldrh	r2, [r3]
7532	lsl	r2, r2, #2
7533	bl	ftl_memcpy
7534	mov	r2, #1
7535	ldr	r0, .L1002+16
7536	mov	r1, r2
7537	bl	FlashEraseBlocks
7538	mov	r3, #1
7539	ldr	r0, .L1002+16
7540	mov	r2, r3
7541	mov	r1, r3
7542	bl	FlashProgPages
7543	ldr	r3, [r4, #3452]
7544	uxth	r0, r5
7545	cmn	r3, #1
7546	bne	.L986
7547	bl	FtlBbmMapBadBlock
7548	b	.L987
7549.L992:
7550	add	r5, r5, #1
7551	bl	FtlBbmMapBadBlock
7552	b	.L991
7553.L995:
7554	ldrh	r3, [r5]
7555	cmp	r3, r7
7556	strheq	r6, [r5]	@ movhi
7557	beq	.L994
7558.L996:
7559	strh	r6, [r5, #4]	@ movhi
7560.L997:
7561	ldr	r0, [r4, #3268]
7562	mov	r6, #0
7563	ldrh	r3, [r5]
7564	mov	r1, #1
7565	str	r6, [r4, #360]
7566	mov	r2, #2
7567	strh	r6, [r5, #2]	@ movhi
7568	lsl	r3, r3, #10
7569	str	r3, [r0, #4]
7570	ldrh	r3, [r5, #4]
7571	lsl	r3, r3, #10
7572	str	r3, [r0, #24]
7573	bl	FlashEraseBlocks
7574	ldrh	r0, [r5]
7575	bl	FtlBbmMapBadBlock
7576	ldrh	r0, [r5, #4]
7577	bl	FtlBbmMapBadBlock
7578	bl	FtlBbmTblFlush
7579	ldr	r3, [r4, #360]
7580	ldrh	r2, [r5, #4]
7581	add	r3, r3, #1
7582	str	r3, [r4, #360]
7583	ldrh	r3, [r5]
7584	strh	r6, [r5, #2]	@ movhi
7585	strh	r2, [r5]	@ movhi
7586	strh	r3, [r5, #4]	@ movhi
7587	bl	FtlBbmTblFlush
7588	mov	r0, r6
7589	sub	sp, fp, #40
7590	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
7591.L1003:
7592	.align	2
7593.L1002:
7594	.word	.LANCHOR0+380
7595	.word	.LANCHOR0+314
7596	.word	.LANCHOR0+352
7597	.word	.LANCHOR0+298
7598	.word	.LANCHOR0+3452
7599	.word	-3872
7600	.word	.LANCHOR0+3388
7601	.size	FtlMakeBbt, .-FtlMakeBbt
7602	.align	2
7603	.global	ftl_memcmp
7604	.syntax unified
7605	.arm
7606	.fpu softvfp
7607	.type	ftl_memcmp, %function
7608ftl_memcmp:
7609	@ args = 0, pretend = 0, frame = 0
7610	@ frame_needed = 1, uses_anonymous_args = 0
7611	mov	ip, sp
7612	push	{fp, ip, lr, pc}
7613	sub	fp, ip, #4
7614	push	{lr}
7615	bl	__gnu_mcount_nc
7616	bl	memcmp
7617	ldmfd	sp, {fp, sp, pc}
7618	.size	ftl_memcmp, .-ftl_memcmp
7619	.align	2
7620	.global	js_hash
7621	.syntax unified
7622	.arm
7623	.fpu softvfp
7624	.type	js_hash, %function
7625js_hash:
7626	@ args = 0, pretend = 0, frame = 0
7627	@ frame_needed = 1, uses_anonymous_args = 0
7628	mov	ip, sp
7629	push	{fp, ip, lr, pc}
7630	sub	fp, ip, #4
7631	push	{lr}
7632	bl	__gnu_mcount_nc
7633	mov	r3, r0
7634	add	r1, r0, r1
7635	ldr	r0, .L1009
7636.L1006:
7637	cmp	r3, r1
7638	ldmfdeq	sp, {fp, sp, pc}
7639	lsr	r2, r0, #2
7640	ldrb	ip, [r3], #1	@ zero_extendqisi2
7641	add	r2, r2, r0, lsl #5
7642	add	r2, r2, ip
7643	eor	r0, r0, r2
7644	b	.L1006
7645.L1010:
7646	.align	2
7647.L1009:
7648	.word	1204201446
7649	.size	js_hash, .-js_hash
7650	.section	.rodata.str1.1
7651.LC104:
7652	.ascii	"FtlMapWritePage error = %x \012\000"
7653.LC105:
7654	.ascii	"FtlMapWritePage error = %x error count = %d\012\000"
7655	.text
7656	.align	2
7657	.global	FtlMapWritePage
7658	.syntax unified
7659	.arm
7660	.fpu softvfp
7661	.type	FtlMapWritePage, %function
7662FtlMapWritePage:
7663	@ args = 0, pretend = 0, frame = 8
7664	@ frame_needed = 1, uses_anonymous_args = 0
7665	mov	ip, sp
7666	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
7667	sub	fp, ip, #4
7668	sub	sp, sp, #12
7669	push	{lr}
7670	bl	__gnu_mcount_nc
7671	ldr	r5, .L1035
7672	mov	r4, r0
7673	mov	r7, r1
7674	mov	r8, r2
7675	lsl	r10, r1, #2
7676	add	r9, r5, #304
7677	mov	r6, #0
7678.L1012:
7679	ldr	r3, [r5, #2572]
7680	add	r3, r3, #1
7681	str	r3, [r5, #2572]
7682	ldrh	r3, [r9]
7683	ldrh	r2, [r4, #2]
7684	sub	r3, r3, #1
7685	cmp	r2, r3
7686	bge	.L1013
7687	ldrh	r2, [r4]
7688	movw	r3, #65535
7689	cmp	r2, r3
7690	bne	.L1014
7691.L1013:
7692	mov	r0, r4
7693	bl	Ftl_write_map_blk_to_last_page
7694.L1014:
7695	ldrh	r3, [r4]
7696	ldr	r2, [r4, #12]
7697	lsl	r3, r3, #1
7698	ldrh	r3, [r2, r3]
7699	cmp	r3, #0
7700	bne	.L1015
7701	ldr	r1, .L1035+4
7702	mov	r2, #700
7703	ldr	r0, .L1035+8
7704	bl	sftl_printk
7705.L1015:
7706	ldrh	r2, [r4]
7707	ldrh	r3, [r4, #10]
7708	cmp	r2, r3
7709	bcc	.L1016
7710	ldr	r1, .L1035+4
7711	movw	r2, #701
7712	ldr	r0, .L1035+8
7713	bl	sftl_printk
7714.L1016:
7715	ldrh	r3, [r4]
7716	mov	r1, #0
7717	ldr	r2, [r4, #12]
7718	ldr	r0, [r5, #3332]
7719	lsl	r3, r3, #1
7720	ldrh	r3, [r2, r3]
7721	ldrh	r2, [r4, #2]
7722	str	r3, [fp, #-48]
7723	str	r8, [r5, #3460]
7724	orr	r2, r2, r3, lsl #10
7725	str	r2, [r5, #3456]
7726	mov	r2, #16
7727	str	r0, [r5, #3464]
7728	bl	ftl_memset
7729	ldr	r2, [r5, #3464]
7730	ldr	r1, [r4, #28]
7731	ldr	r3, [fp, #-48]
7732	str	r1, [r2, #4]
7733	strh	r7, [r2, #8]	@ movhi
7734	str	r2, [fp, #-48]
7735	ldrh	r1, [r4, #4]
7736	strh	r3, [r2, #2]	@ movhi
7737	ldr	r3, .L1035+12
7738	strh	r1, [r2]	@ movhi
7739	ldr	r0, [r5, #3460]
7740	ldrh	r1, [r3]
7741	bl	js_hash
7742	ldr	r2, [fp, #-48]
7743	mov	r3, #1
7744	mov	r1, r3
7745	str	r0, [r2, #12]
7746	mov	r2, r3
7747	ldr	r0, .L1035+16
7748	bl	FlashProgPages
7749	ldrh	r3, [r4, #2]
7750	add	r3, r3, #1
7751	strh	r3, [r4, #2]	@ movhi
7752	ldr	r3, [r5, #3452]
7753	cmn	r3, #1
7754	bne	.L1017
7755	ldr	r1, [r5, #3456]
7756	add	r6, r6, #1
7757	ldr	r0, .L1035+20
7758	bl	sftl_printk
7759	ldrh	r3, [r4, #2]
7760	uxth	r6, r6
7761	cmp	r3, #2
7762	ldrhls	r3, [r9]
7763	subls	r3, r3, #1
7764	strhls	r3, [r4, #2]	@ movhi
7765	cmp	r6, #3
7766	bls	.L1019
7767	ldr	r1, [r5, #3456]
7768	mov	r2, r6
7769	ldr	r0, .L1035+24
7770	bl	sftl_printk
7771.L1020:
7772	b	.L1020
7773.L1019:
7774	ldr	r3, [r4, #32]
7775	cmp	r3, #0
7776	beq	.L1012
7777.L1022:
7778	b	.L1022
7779.L1017:
7780	ldr	r3, [r4, #24]
7781	ldr	r2, [r5, #3456]
7782	str	r2, [r3, r10]
7783	ldrh	r3, [r4, #2]
7784	cmp	r3, #1
7785	beq	.L1023
7786	ldr	r3, [r5, #3452]
7787	cmp	r3, #256
7788	beq	.L1023
7789	ldr	r2, [r4, #36]
7790	cmp	r2, #0
7791	beq	.L1024
7792.L1023:
7793	mov	r3, #0
7794	str	r3, [r4, #36]
7795	b	.L1012
7796.L1024:
7797	cmn	r3, #1
7798	bne	.L1025
7799	ldr	r1, .L1035+4
7800	movw	r2, #745
7801	ldr	r0, .L1035+8
7802	bl	sftl_printk
7803.L1025:
7804	mov	r0, #0
7805	sub	sp, fp, #40
7806	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
7807.L1036:
7808	.align	2
7809.L1035:
7810	.word	.LANCHOR0
7811	.word	.LANCHOR1+332
7812	.word	.LC8
7813	.word	.LANCHOR0+310
7814	.word	.LANCHOR0+3452
7815	.word	.LC104
7816	.word	.LC105
7817	.size	FtlMapWritePage, .-FtlMapWritePage
7818	.section	.rodata.str1.1
7819.LC106:
7820	.ascii	"region_id = %x phyAddr = %x\012\000"
7821.LC107:
7822	.ascii	"map_ppn:\000"
7823.LC108:
7824	.ascii	"load_l2p_region refresh = %x phyAddr = %x\012\000"
7825	.text
7826	.align	2
7827	.global	load_l2p_region
7828	.syntax unified
7829	.arm
7830	.fpu softvfp
7831	.type	load_l2p_region, %function
7832load_l2p_region:
7833	@ args = 0, pretend = 0, frame = 0
7834	@ frame_needed = 1, uses_anonymous_args = 0
7835	mov	ip, sp
7836	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
7837	sub	fp, ip, #4
7838	push	{lr}
7839	bl	__gnu_mcount_nc
7840	ldr	r9, .L1046
7841	mov	r5, r0
7842	mov	r6, r1
7843	ldrh	r3, [r9]
7844	cmp	r3, r0
7845	bcs	.L1038
7846	ldr	r1, .L1046+4
7847	movw	r2, #485
7848	ldr	r0, .L1046+8
7849	bl	sftl_printk
7850.L1038:
7851	ldr	r4, .L1046+12
7852	mov	r1, #12
7853	mul	r6, r1, r6
7854	ldr	r3, [r4, #3376]
7855	ldr	r7, [r3, r5, lsl #2]
7856	ldr	r3, [r4, #2540]
7857	cmp	r7, #0
7858	add	r3, r3, r6
7859	ldr	r0, [r3, #8]
7860	bne	.L1039
7861	movw	r3, #310
7862	mov	r1, #255
7863	ldrh	r2, [r4, r3]
7864	bl	ftl_memset
7865	ldr	r3, [r4, #2540]
7866	strh	r5, [r3, r6]	@ movhi
7867	ldr	r1, [r4, #2540]
7868	add	r6, r1, r6
7869	str	r7, [r6, #4]
7870.L1040:
7871	mov	r0, #0
7872	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
7873.L1039:
7874	ldr	r3, [r4, #3332]
7875	mov	r2, #1
7876	str	r0, [r4, #3460]
7877	mov	r1, r2
7878	ldr	r0, .L1046+16
7879	str	r3, [r4, #3464]
7880	str	r7, [r4, #3456]
7881	bl	FlashReadPages
7882	ldr	r8, [r4, #3464]
7883	ldrh	r3, [r8, #8]
7884	cmp	r3, r5
7885	beq	.L1041
7886	ldr	r0, .L1046+20
7887	mov	r2, r7
7888	mov	r1, r5
7889	bl	sftl_printk
7890	mov	r3, #4
7891	ldr	r1, [r4, #3464]
7892	mov	r2, r3
7893	ldr	r0, .L1046+24
7894	bl	rknand_print_hex
7895	ldrh	r3, [r9]
7896	ldr	r1, [r4, #3376]
7897	mov	r2, #4
7898	ldr	r0, .L1046+28
7899	bl	rknand_print_hex
7900.L1042:
7901	ldrh	r3, [r8, #8]
7902	cmp	r3, r5
7903	beq	.L1044
7904	ldr	r1, .L1046+4
7905	mov	r2, #508
7906	ldr	r0, .L1046+8
7907	bl	sftl_printk
7908.L1044:
7909	ldr	r3, [r4, #2540]
7910	mov	r1, #0
7911	add	r2, r3, r6
7912	str	r1, [r2, #4]
7913	strh	r5, [r3, r6]	@ movhi
7914	b	.L1040
7915.L1041:
7916	ldr	r3, [r4, #3452]
7917	cmp	r3, #256
7918	bne	.L1044
7919	mov	r2, r7
7920	mov	r1, r5
7921	ldr	r0, .L1046+32
7922	bl	sftl_printk
7923	ldr	r3, [r4, #2540]
7924	mov	r1, r5
7925	add	r0, r4, #3392
7926	add	r3, r3, r6
7927	ldr	r2, [r3, #8]
7928	bl	FtlMapWritePage
7929	b	.L1042
7930.L1047:
7931	.align	2
7932.L1046:
7933	.word	.LANCHOR0+336
7934	.word	.LANCHOR1+348
7935	.word	.LC8
7936	.word	.LANCHOR0
7937	.word	.LANCHOR0+3452
7938	.word	.LC106
7939	.word	.LC94
7940	.word	.LC107
7941	.word	.LC108
7942	.size	load_l2p_region, .-load_l2p_region
7943	.align	2
7944	.global	ftl_map_blk_gc
7945	.syntax unified
7946	.arm
7947	.fpu softvfp
7948	.type	ftl_map_blk_gc, %function
7949ftl_map_blk_gc:
7950	@ args = 0, pretend = 0, frame = 8
7951	@ frame_needed = 1, uses_anonymous_args = 0
7952	mov	ip, sp
7953	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
7954	sub	fp, ip, #4
7955	sub	sp, sp, #12
7956	push	{lr}
7957	bl	__gnu_mcount_nc
7958	mov	r4, r0
7959	ldr	r5, [r0, #12]
7960	ldr	r10, [r0, #24]
7961	bl	ftl_free_no_use_map_blk
7962	ldrh	r3, [r4, #10]
7963	ldrh	r2, [r4, #8]
7964	sub	r3, r3, #5
7965	cmp	r2, r3
7966	blt	.L1049
7967	uxth	r0, r0
7968	lsl	r0, r0, #1
7969	ldrh	r9, [r5, r0]
7970	cmp	r9, #0
7971	beq	.L1049
7972	ldr	r6, [r4, #32]
7973	cmp	r6, #0
7974	bne	.L1049
7975	mov	r3, #1
7976	str	r3, [r4, #32]
7977	strh	r6, [r5, r0]	@ movhi
7978	ldrh	r3, [r4, #8]
7979	ldrh	r2, [r4, #2]
7980	sub	r3, r3, #1
7981	strh	r3, [r4, #8]	@ movhi
7982	ldr	r3, .L1064
7983	ldrh	r3, [r3]
7984	cmp	r2, r3
7985	bcc	.L1050
7986	mov	r0, r4
7987	bl	ftl_map_blk_alloc_new_blk
7988.L1050:
7989	ldr	r5, .L1064+4
7990.L1051:
7991	ldrh	r2, [r4, #6]
7992	uxth	r3, r6
7993	cmp	r2, r3
7994	bhi	.L1058
7995	mov	r0, r9
7996	mov	r1, #1
7997	bl	FtlFreeSysBlkQueueIn
7998	mov	r3, #0
7999	str	r3, [r4, #32]
8000.L1049:
8001	ldr	r3, .L1064
8002	ldrh	r2, [r4, #2]
8003	ldrh	r3, [r3]
8004	cmp	r2, r3
8005	bcc	.L1059
8006	mov	r0, r4
8007	bl	ftl_map_blk_alloc_new_blk
8008.L1059:
8009	mov	r0, #0
8010	sub	sp, fp, #40
8011	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
8012.L1058:
8013	uxth	r7, r6
8014	add	r2, r10, r7, lsl #2
8015	str	r2, [fp, #-48]
8016	ldr	r2, [r10, r7, lsl #2]
8017	cmp	r9, r2, lsr #10
8018	bne	.L1052
8019	ldr	r2, [r5, #3304]
8020	ldr	r8, [r5, #3332]
8021	str	r2, [r5, #3460]
8022	str	r8, [r5, #3464]
8023	ldr	r0, .L1064+8
8024	ldr	r2, [r10, r7, lsl #2]
8025	str	r2, [r5, #3456]
8026	mov	r2, #1
8027	mov	r1, r2
8028	str	r3, [fp, #-52]
8029	bl	FlashReadPages
8030	ldrh	r2, [r8, #8]
8031	ldr	r3, [fp, #-52]
8032	cmp	r2, r3
8033	beq	.L1053
8034	ldr	r1, .L1064+12
8035	movw	r2, #611
8036	ldr	r0, .L1064+16
8037	bl	sftl_printk
8038	ldr	r3, [fp, #-52]
8039.L1053:
8040	ldr	r2, [r5, #3452]
8041	cmn	r2, #1
8042	bne	.L1054
8043.L1056:
8044	ldr	r2, [fp, #-48]
8045	mov	r3, #0
8046	str	r3, [r2]
8047.L1055:
8048	b	.L1055
8049.L1054:
8050	ldrh	r2, [r8, #8]
8051	cmp	r2, r3
8052	bne	.L1056
8053	ldrh	r2, [r8]
8054	ldrh	r3, [r4, #4]
8055	cmp	r2, r3
8056	bne	.L1056
8057	ldr	r2, [r5, #3460]
8058	mov	r1, r7
8059	mov	r0, r4
8060	bl	FtlMapWritePage
8061.L1052:
8062	add	r6, r6, #1
8063	b	.L1051
8064.L1065:
8065	.align	2
8066.L1064:
8067	.word	.LANCHOR0+304
8068	.word	.LANCHOR0
8069	.word	.LANCHOR0+3452
8070	.word	.LANCHOR1+364
8071	.word	.LC8
8072	.size	ftl_map_blk_gc, .-ftl_map_blk_gc
8073	.align	2
8074	.global	Ftl_write_map_blk_to_last_page
8075	.syntax unified
8076	.arm
8077	.fpu softvfp
8078	.type	Ftl_write_map_blk_to_last_page, %function
8079Ftl_write_map_blk_to_last_page:
8080	@ args = 0, pretend = 0, frame = 0
8081	@ frame_needed = 1, uses_anonymous_args = 0
8082	mov	ip, sp
8083	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
8084	sub	fp, ip, #4
8085	push	{lr}
8086	bl	__gnu_mcount_nc
8087	ldrh	r3, [r0]
8088	movw	r2, #65535
8089	ldr	r5, [r0, #12]
8090	mov	r4, r0
8091	cmp	r3, r2
8092	bne	.L1067
8093	ldrh	r3, [r0, #8]
8094	cmp	r3, #0
8095	beq	.L1068
8096	ldr	r1, .L1076
8097	movw	r2, #641
8098	ldr	r0, .L1076+4
8099	bl	sftl_printk
8100.L1068:
8101	ldrh	r3, [r4, #8]
8102	add	r3, r3, #1
8103	strh	r3, [r4, #8]	@ movhi
8104	bl	FtlFreeSysBlkQueueOut
8105	strh	r0, [r5]	@ movhi
8106	mov	r3, #0
8107	str	r3, [r4]
8108	ldr	r3, [r4, #28]
8109	add	r3, r3, #1
8110	str	r3, [r4, #28]
8111.L1069:
8112	mov	r0, #0
8113	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
8114.L1067:
8115	lsl	r3, r3, #1
8116	ldr	r7, [r0, #24]
8117	mov	r1, #255
8118	ldrh	r8, [r5, r3]
8119	ldr	r5, .L1076+8
8120	ldrh	r3, [r0, #2]
8121	ldr	r6, [r5, #3332]
8122	orr	r3, r3, r8, lsl #10
8123	str	r3, [r5, #3456]
8124	ldr	r3, [r5, #3300]
8125	str	r3, [r5, #3460]
8126	ldr	r3, [r0, #28]
8127	str	r6, [r5, #3464]
8128	str	r3, [r6, #4]
8129	ldr	r3, .L1076+12
8130	strh	r3, [r6, #8]	@ movhi
8131	ldrh	r3, [r0, #4]
8132	strh	r3, [r6]	@ movhi
8133	add	r3, r5, #304
8134	strh	r8, [r6, #2]	@ movhi
8135	ldrh	r2, [r3]
8136	ldr	r0, [r5, #3300]
8137	lsl	r2, r2, #3
8138	bl	ftl_memset
8139	mov	r2, #0
8140	mov	r3, r2
8141.L1070:
8142	ldrh	r0, [r4, #6]
8143	uxth	r1, r2
8144	cmp	r0, r1
8145	bhi	.L1072
8146	movw	r3, #310
8147	ldr	r0, [r5, #3460]
8148	ldrh	r1, [r5, r3]
8149	bl	js_hash
8150	mov	r2, #1
8151	str	r0, [r6, #12]
8152	mov	r1, r2
8153	mov	r3, #0
8154	ldr	r0, .L1076+16
8155	bl	FlashProgPages
8156	ldrh	r3, [r4, #2]
8157	mov	r0, r4
8158	add	r3, r3, #1
8159	strh	r3, [r4, #2]	@ movhi
8160	bl	ftl_map_blk_gc
8161	b	.L1069
8162.L1072:
8163	uxth	r1, r2
8164	ldr	r0, [r7, r1, lsl #2]
8165	cmp	r8, r0, lsr #10
8166	bne	.L1071
8167	add	r3, r3, #1
8168	ldr	r0, [r5, #3300]
8169	uxth	r3, r3
8170	str	r1, [r0, r3, lsl #3]
8171	ldr	r0, [r7, r1, lsl #2]
8172	ldr	r1, [r5, #3300]
8173	add	r1, r1, r3, lsl #3
8174	str	r0, [r1, #4]
8175.L1071:
8176	add	r2, r2, #1
8177	b	.L1070
8178.L1077:
8179	.align	2
8180.L1076:
8181	.word	.LANCHOR1+379
8182	.word	.LC8
8183	.word	.LANCHOR0
8184	.word	-1291
8185	.word	.LANCHOR0+3452
8186	.size	Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
8187	.align	2
8188	.global	flush_l2p_region
8189	.syntax unified
8190	.arm
8191	.fpu softvfp
8192	.type	flush_l2p_region, %function
8193flush_l2p_region:
8194	@ args = 0, pretend = 0, frame = 0
8195	@ frame_needed = 1, uses_anonymous_args = 0
8196	mov	ip, sp
8197	push	{r4, r5, fp, ip, lr, pc}
8198	sub	fp, ip, #4
8199	push	{lr}
8200	bl	__gnu_mcount_nc
8201	ldr	r5, .L1079
8202	mov	r4, #12
8203	mul	r4, r4, r0
8204	add	r0, r5, #3392
8205	ldr	r3, [r5, #2540]
8206	add	r2, r3, r4
8207	ldrh	r1, [r3, r4]
8208	ldr	r2, [r2, #8]
8209	bl	FtlMapWritePage
8210	ldr	r0, [r5, #2540]
8211	add	r4, r0, r4
8212	mov	r0, #0
8213	ldr	r3, [r4, #4]
8214	bic	r3, r3, #-2147483648
8215	str	r3, [r4, #4]
8216	ldmfd	sp, {r4, r5, fp, sp, pc}
8217.L1080:
8218	.align	2
8219.L1079:
8220	.word	.LANCHOR0
8221	.size	flush_l2p_region, .-flush_l2p_region
8222	.align	2
8223	.global	log2phys
8224	.syntax unified
8225	.arm
8226	.fpu softvfp
8227	.type	log2phys, %function
8228log2phys:
8229	@ args = 0, pretend = 0, frame = 0
8230	@ frame_needed = 1, uses_anonymous_args = 0
8231	mov	ip, sp
8232	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
8233	sub	fp, ip, #4
8234	push	{lr}
8235	bl	__gnu_mcount_nc
8236	ldr	r4, .L1093
8237	mvn	r6, #0
8238	mov	r5, r0
8239	mov	r8, r1
8240	add	r3, r4, #308
8241	mov	r9, r2
8242	ldrh	r3, [r3]
8243	add	r3, r3, #7
8244	lsr	r7, r0, r3
8245	bic	r6, r0, r6, lsl r3
8246	ldr	r3, [r4, #2552]
8247	uxth	r7, r7
8248	uxth	r6, r6
8249	cmp	r3, r0
8250	bhi	.L1082
8251	ldr	r1, .L1093+4
8252	mov	r2, #820
8253	ldr	r0, .L1093+8
8254	bl	sftl_printk
8255	ldr	r3, [r4, #2552]
8256	cmp	r3, r5
8257	bhi	.L1082
8258	mvn	r0, #0
8259	cmp	r9, #0
8260	streq	r0, [r8]
8261	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
8262.L1088:
8263	add	r3, r3, #1
8264	mul	r0, r10, r3
8265	ldrh	r0, [r2, r0]
8266	cmp	r0, r7
8267	bne	.L1084
8268.L1085:
8269	mov	r1, #12
8270	ldr	r3, [r4, #2540]
8271	cmp	r9, #0
8272	mul	r5, r1, r5
8273	add	r3, r3, r5
8274	ldr	r3, [r3, #8]
8275	ldreq	r3, [r3, r6, lsl #2]
8276	streq	r3, [r8]
8277	beq	.L1087
8278	ldr	r2, [r8]
8279	str	r2, [r3, r6, lsl #2]
8280	ldr	r3, [r4, #2540]
8281	add	r3, r3, r5
8282	ldr	r2, [r3, #4]
8283	orr	r2, r2, #-2147483648
8284	str	r2, [r3, #4]
8285	ldr	r3, .L1093+12
8286	strh	r7, [r3]	@ movhi
8287.L1087:
8288	ldr	r1, [r4, #2540]
8289	mov	r0, #0
8290	add	r5, r1, r5
8291	ldr	r3, [r5, #4]
8292	cmn	r3, #1
8293	addne	r3, r3, #1
8294	strne	r3, [r5, #4]
8295	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
8296.L1082:
8297	ldr	r2, [r4, #2540]
8298	movw	r3, #338
8299	mov	r10, #12
8300	sub	r2, r2, #12
8301	ldrh	r1, [r4, r3]
8302	mov	r3, #0
8303.L1084:
8304	uxth	r5, r3
8305	cmp	r1, r5
8306	bhi	.L1088
8307	bl	select_l2p_ram_region
8308	mul	r10, r10, r0
8309	ldr	r3, [r4, #2540]
8310	mov	r5, r0
8311	add	r2, r3, r10
8312	ldrh	r1, [r3, r10]
8313	movw	r3, #65535
8314	cmp	r1, r3
8315	beq	.L1089
8316	ldr	r3, [r2, #4]
8317	cmp	r3, #0
8318	bge	.L1089
8319	bl	flush_l2p_region
8320.L1089:
8321	mov	r1, r5
8322	mov	r0, r7
8323	bl	load_l2p_region
8324	b	.L1085
8325.L1094:
8326	.align	2
8327.L1093:
8328	.word	.LANCHOR0
8329	.word	.LANCHOR1+410
8330	.word	.LC8
8331	.word	.LANCHOR0+2544
8332	.size	log2phys, .-log2phys
8333	.align	2
8334	.global	FtlWriteDump_data
8335	.syntax unified
8336	.arm
8337	.fpu softvfp
8338	.type	FtlWriteDump_data, %function
8339FtlWriteDump_data:
8340	@ args = 0, pretend = 0, frame = 32
8341	@ frame_needed = 1, uses_anonymous_args = 0
8342	mov	ip, sp
8343	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
8344	sub	fp, ip, #4
8345	sub	sp, sp, #36
8346	push	{lr}
8347	bl	__gnu_mcount_nc
8348	ldr	r4, .L1114
8349	mov	r3, sp
8350	bic	r8, r3, #8128
8351	bic	r8, r8, #63
8352	ldrh	r2, [r4, #28]
8353	ldr	r3, [r8, #24]
8354	cmp	r2, #0
8355	str	r3, [fp, #-48]
8356	beq	.L1096
8357	ldrb	r3, [r4, #32]	@ zero_extendqisi2
8358	cmp	r3, #0
8359	bne	.L1096
8360	movw	r1, #302
8361	ldrb	r3, [r4, #31]	@ zero_extendqisi2
8362	ldrh	r1, [r4, r1]
8363	mul	r3, r1, r3
8364	cmp	r2, r3
8365	beq	.L1096
8366	ldrb	r9, [r4, #34]	@ zero_extendqisi2
8367	cmp	r9, #0
8368	bne	.L1095
8369	ldr	r7, [r4, #2552]
8370	mov	r2, r9
8371	sub	r1, fp, #72
8372	ldrh	r6, [r4, #232]
8373	sub	r7, r7, #1
8374	mov	r0, r7
8375	bl	log2phys
8376	ldr	r5, [r4, #3332]
8377	ldr	r3, [fp, #-72]
8378	ldr	r0, [r4, #3300]
8379	str	r3, [fp, #-64]
8380	cmn	r3, #1
8381	str	r7, [fp, #-52]
8382	str	r0, [fp, #-60]
8383	str	r5, [fp, #-56]
8384	str	r9, [r5, #4]
8385	beq	.L1098
8386	mov	r2, r9
8387	sub	r0, fp, #68
8388	mov	r1, #1
8389	bl	FlashReadPages
8390.L1099:
8391	ldr	r9, .L1114+4
8392	lsl	r6, r6, #2
8393	ldr	r3, .L1114+8
8394	mov	r10, #0
8395	strh	r3, [r5]	@ movhi
8396.L1100:
8397	cmp	r6, #0
8398	bne	.L1104
8399.L1101:
8400	mov	r3, #1
8401.L1113:
8402	strb	r3, [r4, #34]
8403.L1095:
8404	ldr	r2, [fp, #-48]
8405	ldr	r3, [r8, #24]
8406	cmp	r2, r3
8407	beq	.L1106
8408	bl	__stack_chk_fail
8409.L1098:
8410	movw	r3, #310
8411	mov	r1, #255
8412	ldrh	r2, [r4, r3]
8413	bl	ftl_memset
8414	b	.L1099
8415.L1104:
8416	ldrh	r3, [r4, #28]
8417	cmp	r3, #0
8418	beq	.L1101
8419	ldr	r3, [fp, #-64]
8420	mov	r0, r9
8421	str	r3, [r5, #12]
8422	sub	r6, r6, #1
8423	ldrh	r3, [r4, #24]
8424	strh	r3, [r5, #2]	@ movhi
8425	str	r7, [r5, #8]
8426	bl	get_new_active_ppa
8427	ldr	r3, [r4, #2592]
8428	str	r0, [fp, #-64]
8429	mov	r1, #1
8430	cmn	r3, #2
8431	add	r2, r3, #1
8432	str	r3, [r5, #4]
8433	sub	r0, fp, #68
8434	movne	r3, r2
8435	moveq	r3, r10
8436	str	r3, [r4, #2592]
8437	mov	r3, #0
8438	mov	r2, r3
8439	bl	FlashProgPages
8440	ldrh	r0, [r4, #24]
8441	bl	decrement_vpc_count
8442	b	.L1100
8443.L1096:
8444	mov	r3, #0
8445	b	.L1113
8446.L1106:
8447	sub	sp, fp, #40
8448	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
8449.L1115:
8450	.align	2
8451.L1114:
8452	.word	.LANCHOR0
8453	.word	.LANCHOR0+24
8454	.word	-3947
8455	.size	FtlWriteDump_data, .-FtlWriteDump_data
8456	.align	2
8457	.global	FtlReUsePrevPpa
8458	.syntax unified
8459	.arm
8460	.fpu softvfp
8461	.type	FtlReUsePrevPpa, %function
8462FtlReUsePrevPpa:
8463	@ args = 0, pretend = 0, frame = 8
8464	@ frame_needed = 1, uses_anonymous_args = 0
8465	mov	ip, sp
8466	push	{r4, r5, r6, r7, r8, fp, ip, lr, pc}
8467	sub	fp, ip, #4
8468	sub	sp, sp, #12
8469	push	{lr}
8470	bl	__gnu_mcount_nc
8471	ldr	r4, .L1126
8472	mov	r6, r0
8473	ubfx	r0, r1, #10, #16
8474	str	r1, [fp, #-40]
8475	bl	P2V_block_in_plane
8476	lsl	r5, r0, #1
8477	mov	r7, r0
8478	ldr	r3, [r4, #72]
8479	ldrh	r2, [r3, r5]
8480	cmp	r2, #0
8481	addne	r2, r2, #1
8482	strhne	r2, [r3, r5]	@ movhi
8483	bne	.L1118
8484	ldr	r3, [r4, #2532]
8485	cmp	r3, #0
8486	beq	.L1118
8487	ldr	r1, [r4, #2516]
8488	mov	lr, #6
8489	ldr	ip, .L1126+4
8490	movw	r8, #65535
8491	sub	r3, r3, r1
8492	ldrh	r0, [r4, #224]
8493	asr	r3, r3, #1
8494	mul	r3, ip, r3
8495	uxth	r3, r3
8496.L1119:
8497	uxth	ip, r2
8498	cmp	r0, ip
8499	bls	.L1118
8500	cmp	r3, r7
8501	bne	.L1120
8502	ldr	r0, .L1126+8
8503	mov	r1, r7
8504	bl	List_remove_node
8505	ldrh	r3, [r4, #224]
8506	cmp	r3, #0
8507	bne	.L1121
8508	ldr	r1, .L1126+12
8509	movw	r2, #1742
8510	ldr	r0, .L1126+16
8511	bl	sftl_printk
8512.L1121:
8513	ldrh	r3, [r4, #224]
8514	mov	r0, r7
8515	sub	r3, r3, #1
8516	strh	r3, [r4, #224]	@ movhi
8517	bl	INSERT_DATA_LIST
8518	ldr	r2, [r4, #72]
8519	ldrh	r3, [r2, r5]
8520	add	r3, r3, #1
8521	strh	r3, [r2, r5]	@ movhi
8522.L1118:
8523	sub	r1, fp, #40
8524	mov	r0, r6
8525	mov	r2, #1
8526	bl	log2phys
8527	sub	sp, fp, #32
8528	ldmfd	sp, {r4, r5, r6, r7, r8, fp, sp, pc}
8529.L1120:
8530	mul	r3, lr, r3
8531	add	r2, r2, #1
8532	ldrh	r3, [r1, r3]
8533	cmp	r3, r8
8534	bne	.L1119
8535	b	.L1118
8536.L1127:
8537	.align	2
8538.L1126:
8539	.word	.LANCHOR0
8540	.word	-1431655765
8541	.word	.LANCHOR0+2532
8542	.word	.LANCHOR1+419
8543	.word	.LC8
8544	.size	FtlReUsePrevPpa, .-FtlReUsePrevPpa
8545	.section	.rodata.str1.1
8546.LC109:
8547	.ascii	"data prev_ppa = %x error...................\012\000"
8548.LC110:
8549	.ascii	"spuer block %x vpn is 0\012 \000"
8550	.text
8551	.align	2
8552	.global	FtlRecoverySuperblock
8553	.syntax unified
8554	.arm
8555	.fpu softvfp
8556	.type	FtlRecoverySuperblock, %function
8557FtlRecoverySuperblock:
8558	@ args = 0, pretend = 0, frame = 64
8559	@ frame_needed = 1, uses_anonymous_args = 0
8560	mov	ip, sp
8561	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
8562	sub	fp, ip, #4
8563	sub	sp, sp, #68
8564	push	{lr}
8565	bl	__gnu_mcount_nc
8566	mov	r3, sp
8567	movw	r1, #65535
8568	bic	r3, r3, #8128
8569	mov	r10, r0
8570	bic	r3, r3, #63
8571	ldr	r3, [r3, #24]
8572	str	r3, [fp, #-48]
8573	ldrh	r3, [r0]
8574	cmp	r3, r1
8575	beq	.L1130
8576	ldrh	r3, [r0, #2]
8577	ldr	r5, .L1257
8578	str	r3, [fp, #-72]
8579	ldrb	r3, [r0, #6]	@ zero_extendqisi2
8580	str	r3, [fp, #-92]
8581	movw	r3, #302
8582	ldrh	r2, [r5, r3]
8583	ldr	r3, [fp, #-72]
8584	cmp	r2, r3
8585	mov	r3, #0
8586	strheq	r2, [r0, #2]	@ movhi
8587	strheq	r3, [r0, #4]	@ movhi
8588	ldrhne	r0, [r0, #16]
8589	bne	.L1132
8590.L1255:
8591	strb	r3, [r10, #6]
8592.L1130:
8593	mov	r3, sp
8594	ldr	r2, [fp, #-48]
8595	bic	r3, r3, #8128
8596	bic	r3, r3, #63
8597	ldr	r3, [r3, #24]
8598	cmp	r2, r3
8599	beq	.L1196
8600	bl	__stack_chk_fail
8601.L1133:
8602	uxth	r2, r3
8603	add	r2, r10, r2, lsl #1
8604	ldrh	r0, [r2, #16]
8605.L1132:
8606	uxth	r6, r3
8607	cmp	r0, r1
8608	add	r3, r3, #1
8609	beq	.L1133
8610	mov	r1, #1
8611	bl	FtlGetLastWrittenPage
8612	mov	r4, r0
8613	cmn	r0, #1
8614	beq	.L1134
8615	ldr	r3, [r5, #3176]
8616	add	r2, r10, #16
8617	str	r3, [fp, #-64]
8618	movw	r3, #310
8619	ldr	r0, [r5, #3288]
8620	movw	r8, #65535
8621	ldrh	lr, [r5, r3]
8622	mov	r9, #20
8623	ldr	r3, .L1257+4
8624	ldr	r6, [r5, #3180]
8625	ldrh	r7, [r3]
8626	add	r3, r10, #16
8627	str	r3, [fp, #-84]
8628	ldrh	r3, [r5, #232]
8629	mov	r5, #0
8630	add	r3, r10, r3, lsl #1
8631	add	r3, r3, #16
8632	str	r3, [fp, #-68]
8633.L1135:
8634	ldr	r3, [fp, #-68]
8635	cmp	r3, r2
8636	bne	.L1139
8637	mov	r2, #0
8638	mov	r1, r5
8639	bl	FlashReadPages
8640	ldr	r3, .L1257
8641	mov	r8, #0
8642	ldr	r6, [r3, #3288]
8643	ldr	r2, [r3, #2592]
8644	mov	r9, r6
8645	sub	r2, r2, #1
8646	str	r2, [fp, #-64]
8647	movw	r2, #65535
8648	str	r2, [fp, #-80]
8649	uxth	r2, r4
8650	str	r2, [fp, #-68]
8651.L1140:
8652	uxth	r2, r8
8653	cmp	r5, r2
8654	bhi	.L1145
8655	addeq	r3, r4, #1
8656	uxtheq	r3, r3
8657	streq	r3, [fp, #-68]
8658	bne	.L1143
8659.L1249:
8660	ldr	r0, [r6, #4]
8661	ubfx	r0, r0, #10, #16
8662	bl	P2V_plane
8663	ldr	r3, .L1257
8664	movw	r2, #302
8665	ldr	r1, [fp, #-68]
8666	str	r0, [fp, #-76]
8667	ldrh	r2, [r3, r2]
8668	cmp	r2, r1
8669	bne	.L1147
8670	mov	r2, #0
8671	strh	r1, [r10, #2]	@ movhi
8672	strb	r2, [r10, #6]
8673	strh	r2, [r10, #4]	@ movhi
8674.L1147:
8675	sub	r0, fp, #76
8676	ldr	ip, [fp, #-92]
8677	ldm	r0, {r0, r1, r2}
8678	cmp	r2, r1
8679	cmpeq	r0, ip
8680	moveq	r2, r0
8681	ldreq	r1, [fp, #-68]
8682	beq	.L1256
8683	ldr	r1, [fp, #-80]
8684	movw	r2, #65535
8685	cmp	r1, r2
8686	bne	.L1149
8687	ldrb	r2, [r10, #8]	@ zero_extendqisi2
8688	cmp	r2, #0
8689	bne	.L1150
8690.L1149:
8691	ldr	r2, [r3, #3448]
8692	uxth	r9, r4
8693	ldr	r6, .L1257
8694	cmn	r2, #1
8695	ldreq	r2, [fp, #-64]
8696	streq	r2, [r3, #3448]
8697	uxth	r2, r4
8698	ldr	r3, [fp, #-72]
8699	add	r3, r3, #7
8700	cmp	r3, r2
8701	sublt	r4, r4, #7
8702	ldrge	r4, [fp, #-72]
8703	uxthlt	r4, r4
8704.L1153:
8705	ldr	r0, [r6, #3288]
8706	cmp	r4, r9
8707	ldrh	ip, [r6, #232]
8708	bls	.L1198
8709	mvn	r3, #0
8710	str	r3, [r6, #3448]
8711.L1150:
8712	ldr	r4, .L1257+8
8713	mov	r3, #1
8714	ldr	r9, [fp, #-72]
8715	strh	r3, [r4]	@ movhi
8716	sub	r4, r4, #3472
8717.L1161:
8718	ldrh	ip, [r4, #232]
8719	mov	r3, #0
8720	ldr	r0, [r4, #3288]
8721	movw	lr, #65535
8722	ldr	r1, [fp, #-84]
8723	mov	r5, #20
8724	str	r3, [fp, #-80]
8725.L1162:
8726	uxth	r2, r3
8727	cmp	ip, r2
8728	bhi	.L1164
8729	ldr	r1, [fp, #-80]
8730	mov	r2, #0
8731	bl	FlashReadPages
8732	mov	r3, #0
8733.L1254:
8734	str	r3, [fp, #-88]
8735	ldr	r2, [fp, #-80]
8736	ldrh	r3, [fp, #-88]
8737	cmp	r3, r2
8738	bcc	.L1192
8739	add	r3, r9, #1
8740	uxth	r9, r3
8741	ldr	r3, .L1257+12
8742	ldrh	r3, [r3]
8743	cmp	r3, r9
8744	bne	.L1161
8745	ldrh	r1, [r4, #232]
8746	mov	r3, #0
8747	strh	r9, [r10, #2]	@ movhi
8748	movw	r0, #65535
8749	strh	r3, [r10, #4]	@ movhi
8750.L1193:
8751	uxth	r2, r3
8752	cmp	r1, r2
8753	bls	.L1130
8754	ldr	r2, [fp, #-84]
8755	ldrh	ip, [r2], #2
8756	str	r2, [fp, #-84]
8757	add	r2, r3, #1
8758	cmp	ip, r0
8759	bne	.L1255
8760	mov	r3, r2
8761	b	.L1193
8762.L1134:
8763	ldr	r3, [fp, #-72]
8764	cmp	r3, #0
8765	beq	.L1136
8766	ldr	r1, .L1257+16
8767	movw	r2, #1809
8768	ldr	r0, .L1257+20
8769	bl	sftl_printk
8770.L1136:
8771	ldr	r3, [fp, #-92]
8772	cmp	r3, #0
8773	cmpne	r3, r6
8774	beq	.L1137
8775	ldr	r1, .L1257+16
8776	movw	r2, #1810
8777	ldr	r0, .L1257+20
8778	bl	sftl_printk
8779.L1137:
8780	mov	r3, #0
8781	strh	r3, [r10, #2]	@ movhi
8782	b	.L1255
8783.L1139:
8784	ldrh	r3, [r2], #2
8785	cmp	r3, r8
8786	beq	.L1135
8787	mla	r1, r9, r5, r0
8788	orr	r3, r4, r3, lsl #10
8789	mul	ip, lr, r5
8790	cmp	ip, #0
8791	str	r3, [r1, #4]
8792	add	r3, ip, #3
8793	movge	r3, ip
8794	ldr	ip, [fp, #-64]
8795	bic	r3, r3, #3
8796	add	r3, ip, r3
8797	mul	ip, r7, r5
8798	str	r3, [r1, #8]
8799	add	r5, r5, #1
8800	cmp	ip, #0
8801	add	r3, ip, #3
8802	movge	r3, ip
8803	uxth	r5, r5
8804	bic	r3, r3, #3
8805	add	r3, r6, r3
8806	str	r3, [r1, #12]
8807	b	.L1135
8808.L1145:
8809	ldr	r2, [r9]
8810	cmp	r2, #0
8811	bne	.L1141
8812	ldr	r2, [r9, #12]
8813	ldr	r7, [r2, #4]
8814	cmn	r7, #1
8815	beq	.L1142
8816	ldr	r1, [r3, #2592]
8817	mov	r0, r7
8818	str	r2, [fp, #-76]
8819	bl	ftl_cmp_data_ver
8820	ldr	r3, .L1257
8821	cmp	r0, #0
8822	ldr	r2, [fp, #-76]
8823	addne	r7, r7, #1
8824	strne	r7, [r3, #2592]
8825.L1142:
8826	ldr	r2, [r2]
8827	cmn	r2, #1
8828	bne	.L1144
8829.L1143:
8830	uxth	r3, r4
8831	str	r3, [fp, #-68]
8832	mov	r3, #20
8833	mla	r6, r3, r8, r6
8834	b	.L1249
8835.L1141:
8836	ldr	r2, [fp, #-68]
8837	str	r2, [fp, #-80]
8838.L1144:
8839	add	r8, r8, #1
8840	add	r9, r9, #20
8841	b	.L1140
8842.L1155:
8843	ldrh	r2, [r1], #2
8844	cmp	r2, lr
8845	beq	.L1154
8846	mla	r8, r7, r5, r0
8847	add	r5, r5, #1
8848	orr	r2, r4, r2, lsl #10
8849	uxth	r5, r5
8850	str	r2, [r8, #4]
8851.L1154:
8852	add	r3, r3, #1
8853.L1160:
8854	uxth	r2, r3
8855	cmp	ip, r2
8856	bhi	.L1155
8857	mov	r2, #0
8858	mov	r1, r5
8859	bl	FlashReadPages
8860	ldr	r3, [r6, #3288]
8861	mov	r2, #0
8862	movw	r0, #65535
8863.L1156:
8864	uxth	r1, r2
8865	cmp	r5, r1
8866	bhi	.L1159
8867	add	r4, r4, #1
8868	uxth	r4, r4
8869	b	.L1153
8870.L1198:
8871	mov	r3, #0
8872	ldr	r1, [fp, #-84]
8873	mov	r5, r3
8874	movw	lr, #65535
8875	mov	r7, #20
8876	b	.L1160
8877.L1159:
8878	ldr	r1, [r3]
8879	cmp	r1, #0
8880	bne	.L1150
8881	ldr	r1, [r3, #12]
8882	ldrh	ip, [r1]
8883	cmp	ip, r0
8884	beq	.L1158
8885	ldr	r1, [r1, #4]
8886	cmn	r1, #1
8887	strne	r1, [r6, #3448]
8888.L1158:
8889	add	r2, r2, #1
8890	add	r3, r3, #20
8891	b	.L1156
8892.L1164:
8893	ldrh	r2, [r1], #2
8894	cmp	r2, lr
8895	beq	.L1163
8896	ldr	r6, [fp, #-80]
8897	orr	r2, r9, r2, lsl #10
8898	mla	r6, r5, r6, r0
8899	str	r2, [r6, #4]
8900	ldr	r2, [fp, #-80]
8901	add	r2, r2, #1
8902	uxth	r2, r2
8903	str	r2, [fp, #-80]
8904.L1163:
8905	add	r3, r3, #1
8906	b	.L1162
8907.L1192:
8908	ldr	r3, [fp, #-88]
8909	mov	r5, #20
8910	ldr	r8, [r4, #3288]
8911	mul	r5, r5, r3
8912	ldr	r3, [fp, #-72]
8913	add	r7, r8, r5
8914	cmp	r9, r3
8915	ldr	r6, [r7, #4]
8916	str	r6, [fp, #-52]
8917	bcc	.L1166
8918	ubfx	r0, r6, #10, #16
8919	bl	P2V_plane
8920	ldr	r3, [fp, #-72]
8921	ldr	r2, [fp, #-92]
8922	sub	r3, r9, r3
8923	clz	r3, r3
8924	cmp	r2, r0
8925	lsr	r3, r3, #5
8926	movls	r3, #0
8927	cmp	r3, #0
8928	bne	.L1166
8929	ldr	r3, [fp, #-68]
8930	ldr	r2, [fp, #-76]
8931	cmp	r9, r3
8932	cmpeq	r2, r0
8933	bne	.L1167
8934	ldr	r3, [fp, #-68]
8935	strb	r2, [r10, #6]
8936	mov	r1, r3
8937	strh	r3, [r10, #2]	@ movhi
8938.L1256:
8939	mov	r0, r10
8940	bl	ftl_sb_update_avl_pages
8941	b	.L1130
8942.L1167:
8943	ldr	r3, [r8, r5]
8944	cmn	r3, #1
8945	beq	.L1168
8946	ldr	r7, [r7, #12]
8947	movw	r3, #61589
8948	ldrh	r6, [r7]
8949	cmp	r6, r3
8950	ldrhne	r0, [r10]
8951	bne	.L1251
8952	ldr	r3, [r7, #4]
8953	str	r3, [fp, #-64]
8954	cmn	r3, #1
8955	beq	.L1171
8956	ldr	r1, [r4, #2592]
8957	mov	r0, r3
8958	bl	ftl_cmp_data_ver
8959	cmp	r0, #0
8960	beq	.L1171
8961	ldr	r3, [fp, #-64]
8962	add	r3, r3, #1
8963	str	r3, [r4, #2592]
8964	ldrh	r3, [r7]
8965	cmp	r3, r6
8966	beq	.L1171
8967	ldr	r1, .L1257+16
8968	movw	r2, #1961
8969	ldr	r0, .L1257+20
8970	bl	sftl_printk
8971.L1171:
8972	ldr	r6, [r7, #8]
8973	sub	r1, fp, #56
8974	ldr	r3, [r7, #12]
8975	mov	r2, #0
8976	mov	r0, r6
8977	str	r3, [fp, #-60]
8978	bl	log2phys
8979	ldr	r1, [r4, #3448]
8980	cmn	r1, #1
8981	beq	.L1173
8982	ldr	r0, [fp, #-64]
8983	bl	ftl_cmp_data_ver
8984	cmp	r0, #0
8985	beq	.L1173
8986	ldr	r3, [fp, #-60]
8987	cmn	r3, #1
8988	beq	.L1174
8989	ldr	r0, [r4, #3288]
8990	mov	r2, #0
8991	mov	r1, #1
8992	add	r0, r0, r5
8993	str	r3, [r0, #4]
8994	ldr	r7, [r0, #12]
8995	bl	FlashReadPages
8996	ldr	r8, [r4, #3288]
8997	add	r3, r8, r5
8998	ldr	r2, [r8, r5]
8999	cmn	r2, #1
9000	bne	.L1175
9001.L1176:
9002	mvn	r3, #0
9003	str	r3, [fp, #-60]
9004.L1183:
9005	ldr	r0, [fp, #-60]
9006	cmn	r0, #1
9007	beq	.L1166
9008	ubfx	r0, r0, #10, #16
9009	bl	P2V_block_in_plane
9010	ldrh	r3, [r4, #240]
9011	mov	r5, r0
9012	cmp	r3, r0
9013	bhi	.L1188
9014	ldr	r1, .L1257+16
9015	movw	r2, #2066
9016	ldr	r0, .L1257+20
9017	bl	sftl_printk
9018.L1188:
9019	ldr	r2, [r4, #72]
9020	lsl	r3, r5, #1
9021	ldrh	r3, [r2, r3]
9022	cmp	r3, #0
9023	beq	.L1189
9024	mov	r0, r5
9025.L1251:
9026	bl	decrement_vpc_count
9027	b	.L1166
9028.L1174:
9029	ldrd	r2, [fp, #-56]
9030	cmp	r2, r3
9031	bne	.L1166
9032	sub	r1, fp, #60
9033	mov	r0, r6
9034	mov	r2, #1
9035	bl	log2phys
9036.L1166:
9037	ldr	r3, [fp, #-88]
9038	add	r3, r3, #1
9039	b	.L1254
9040.L1175:
9041	ldr	r2, [r7, #8]
9042	str	r2, [fp, #-100]
9043	cmp	r2, r6
9044	bne	.L1176
9045	str	r3, [fp, #-104]
9046	ldr	r3, [r7, #4]
9047	ldr	r0, [r4, #3448]
9048	mov	r1, r3
9049	str	r3, [fp, #-96]
9050	bl	ftl_cmp_data_ver
9051	cmp	r0, #0
9052	beq	.L1176
9053	ldr	r0, [fp, #-52]
9054	ldr	r2, [fp, #-56]
9055	ldr	r1, [fp, #-60]
9056	cmp	r2, r0
9057	ldr	r3, [fp, #-104]
9058	ldreq	r0, [fp, #-100]
9059	beq	.L1250
9060	cmp	r2, r1
9061	beq	.L1176
9062	cmn	r2, #1
9063	streq	r2, [r8, r5]
9064	beq	.L1180
9065	str	r2, [r3, #4]
9066	mov	r0, r3
9067	mov	r2, #0
9068	mov	r1, #1
9069	ldr	r7, [r3, #12]
9070	bl	FlashReadPages
9071.L1180:
9072	ldr	r3, [r4, #3288]
9073	ldr	r3, [r3, r5]
9074	cmn	r3, #1
9075	beq	.L1181
9076	ldr	r5, [r7, #4]
9077	ldr	r0, [r4, #3448]
9078	mov	r1, r5
9079	bl	ftl_cmp_data_ver
9080	cmp	r0, #0
9081	beq	.L1181
9082	ldr	r0, [fp, #-96]
9083	mov	r1, r5
9084	bl	ftl_cmp_data_ver
9085	cmp	r0, #0
9086	beq	.L1176
9087.L1181:
9088	ldr	r1, [fp, #-60]
9089	mov	r0, r6
9090.L1250:
9091	bl	FtlReUsePrevPpa
9092	b	.L1176
9093.L1173:
9094	ldrd	r2, [fp, #-56]
9095	cmp	r2, r3
9096	beq	.L1183
9097	ldr	r1, [fp, #-60]
9098	cmn	r1, #1
9099	beq	.L1185
9100	ldr	r3, [r4, #248]
9101	cmp	r3, r1, lsr #10
9102	ldrls	r0, .L1257+24
9103	bls	.L1253
9104.L1185:
9105	sub	r1, fp, #52
9106	mov	r0, r6
9107	mov	r2, #1
9108	bl	log2phys
9109	ldr	r7, [fp, #-56]
9110	cmn	r7, #1
9111	beq	.L1183
9112	ldr	r3, [fp, #-60]
9113	cmp	r7, r3
9114	beq	.L1183
9115	ubfx	r0, r7, #10, #16
9116	bl	P2V_block_in_plane
9117	ldrh	r3, [r4, #24]
9118	cmp	r3, r0
9119	beq	.L1187
9120	ldrh	r3, [r4, #76]
9121	cmp	r3, r0
9122	beq	.L1187
9123	ldrh	r3, [r4, #124]
9124	cmp	r3, r0
9125	bne	.L1183
9126.L1187:
9127	ldr	r0, [r4, #3288]
9128	mov	r2, #0
9129	mov	r1, #1
9130	str	r7, [r0, #4]
9131	ldr	r5, [r0, #12]
9132	bl	FlashReadPages
9133	ldr	r3, [r4, #3288]
9134	ldr	r3, [r3]
9135	cmn	r3, #1
9136	beq	.L1183
9137	ldr	r1, [r5, #4]
9138	ldr	r0, [fp, #-64]
9139	bl	ftl_cmp_data_ver
9140	cmp	r0, #0
9141	bne	.L1183
9142	sub	r1, fp, #56
9143	mov	r0, r6
9144	mov	r2, #1
9145	bl	log2phys
9146	b	.L1183
9147.L1189:
9148	ldr	r0, .L1257+28
9149	mov	r1, r5
9150.L1253:
9151	bl	sftl_printk
9152	b	.L1166
9153.L1168:
9154	ldr	r3, [r4, #3476]
9155	cmp	r3, #31
9156	addls	r2, r4, r3, lsl #2
9157	addls	r3, r3, #1
9158	strls	r3, [r4, #3476]
9159	strls	r6, [r2, #3480]
9160	ldrh	r0, [r10]
9161	bl	decrement_vpc_count
9162	ldr	r3, [r4, #3448]
9163	cmn	r3, #1
9164	ldreq	r3, [fp, #-64]
9165	beq	.L1252
9166	ldr	r2, [fp, #-64]
9167	cmp	r3, r2
9168	bls	.L1166
9169	mov	r3, r2
9170.L1252:
9171	str	r3, [r4, #3448]
9172	b	.L1166
9173.L1196:
9174	mov	r0, #0
9175	sub	sp, fp, #40
9176	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
9177.L1258:
9178	.align	2
9179.L1257:
9180	.word	.LANCHOR0
9181	.word	.LANCHOR0+312
9182	.word	.LANCHOR0+3472
9183	.word	.LANCHOR0+302
9184	.word	.LANCHOR1+435
9185	.word	.LC8
9186	.word	.LC109
9187	.word	.LC110
9188	.size	FtlRecoverySuperblock, .-FtlRecoverySuperblock
9189	.section	.rodata.str1.1
9190.LC111:
9191	.ascii	"...%s enter...\012\000"
9192.LC112:
9193	.ascii	"FtlCheckVpc2 %x = %x  %x\012\000"
9194.LC113:
9195	.ascii	"free blk vpc error %x = %x  %x\012\000"
9196	.text
9197	.align	2
9198	.global	ftl_check_vpc
9199	.syntax unified
9200	.arm
9201	.fpu softvfp
9202	.type	ftl_check_vpc, %function
9203ftl_check_vpc:
9204	@ args = 0, pretend = 0, frame = 8
9205	@ frame_needed = 1, uses_anonymous_args = 0
9206	mov	ip, sp
9207	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
9208	sub	fp, ip, #4
9209	sub	sp, sp, #12
9210	push	{lr}
9211	bl	__gnu_mcount_nc
9212	mov	r3, sp
9213	ldr	r5, .L1284
9214	bic	r6, r3, #8128
9215	ldr	r1, .L1284+4
9216	bic	r6, r6, #63
9217	ldr	r0, .L1284+8
9218	mov	r4, #0
9219	ldr	r3, [r6, #24]
9220	str	r3, [fp, #-48]
9221	bl	sftl_printk
9222	ldr	r0, .L1284+12
9223	mov	r2, #8192
9224	mov	r1, #0
9225	bl	ftl_memset
9226.L1260:
9227	ldr	r3, [r5, #2552]
9228	cmp	r3, r4
9229	bhi	.L1262
9230	ldr	r9, .L1284+12
9231	mov	r4, #0
9232	ldr	r10, .L1284+16
9233	mov	r7, r4
9234.L1263:
9235	ldrh	r2, [r5, #240]
9236	uxth	r3, r4
9237	cmp	r2, r3
9238	bhi	.L1265
9239	ldr	r4, [r5, #2532]
9240	cmp	r4, #0
9241	beq	.L1266
9242	ldr	r1, [r5, #2516]
9243	mov	r9, #0
9244	ldrh	r8, [r5, #224]
9245	sub	r4, r4, r1
9246	ldr	r1, .L1284+20
9247	ldr	r10, .L1284+12
9248	asr	r4, r4, #1
9249	ldr	r0, .L1284+24
9250	mul	r4, r1, r4
9251	uxth	r4, r4
9252.L1267:
9253	uxth	r3, r9
9254	cmp	r8, r3
9255	bls	.L1266
9256	ldr	r2, [r5, #72]
9257	lsl	r3, r4, #1
9258	ldrh	r2, [r2, r3]
9259	cmp	r2, #0
9260	beq	.L1268
9261	ldrh	r3, [r10, r3]
9262	mov	r1, r4
9263	bl	sftl_printk
9264	ldr	r0, .L1284+24
9265	mov	r7, #1
9266.L1268:
9267	mov	r3, #6
9268	ldr	r2, [r5, #2516]
9269	add	r9, r9, #1
9270	mul	r3, r3, r4
9271	ldrh	r4, [r2, r3]
9272	movw	r3, #65535
9273	cmp	r4, r3
9274	bne	.L1267
9275.L1266:
9276	cmp	r7, #0
9277	beq	.L1259
9278	ldr	r1, .L1284+4
9279	movw	r2, #2394
9280	ldr	r0, .L1284+28
9281	bl	sftl_printk
9282.L1259:
9283	ldr	r2, [fp, #-48]
9284	ldr	r3, [r6, #24]
9285	cmp	r2, r3
9286	beq	.L1271
9287	bl	__stack_chk_fail
9288.L1262:
9289	sub	r1, fp, #52
9290	mov	r0, r4
9291	mov	r2, #0
9292	bl	log2phys
9293	ldr	r0, [fp, #-52]
9294	cmn	r0, #1
9295	beq	.L1261
9296	ubfx	r0, r0, #10, #16
9297	bl	P2V_block_in_plane
9298	ldr	r2, .L1284+12
9299	lsl	r0, r0, #1
9300	ldrh	r3, [r2, r0]
9301	add	r3, r3, #1
9302	strh	r3, [r2, r0]	@ movhi
9303.L1261:
9304	add	r4, r4, #1
9305	b	.L1260
9306.L1265:
9307	uxth	r1, r4
9308	ldr	r3, [r5, #72]
9309	lsl	r8, r1, #1
9310	ldrh	r2, [r3, r8]
9311	ldrh	r3, [r9, r8]
9312	cmp	r2, r3
9313	beq	.L1264
9314	mov	r0, r10
9315	bl	sftl_printk
9316	ldr	r3, [r5, #72]
9317	movw	r2, #65535
9318	ldrh	r3, [r3, r8]
9319	cmp	r3, r2
9320	beq	.L1264
9321	ldrh	r2, [r9, r8]
9322	cmp	r2, r3
9323	movhi	r7, #1
9324.L1264:
9325	add	r4, r4, #1
9326	b	.L1263
9327.L1271:
9328	sub	sp, fp, #40
9329	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
9330.L1285:
9331	.align	2
9332.L1284:
9333	.word	.LANCHOR0
9334	.word	.LANCHOR1+457
9335	.word	.LC111
9336	.word	check_vpc_table
9337	.word	.LC112
9338	.word	-1431655765
9339	.word	.LC113
9340	.word	.LC8
9341	.size	ftl_check_vpc, .-ftl_check_vpc
9342	.section	.rodata.str1.1
9343.LC114:
9344	.ascii	"ftl_scan_all_data = %x\012\000"
9345.LC115:
9346	.ascii	"scan lpa = %x ppa= %x\012\000"
9347.LC116:
9348	.ascii	"lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
9349	.ascii	"\000"
9350	.text
9351	.align	2
9352	.global	ftl_scan_all_data
9353	.syntax unified
9354	.arm
9355	.fpu softvfp
9356	.type	ftl_scan_all_data, %function
9357ftl_scan_all_data:
9358	@ args = 0, pretend = 0, frame = 8
9359	@ frame_needed = 1, uses_anonymous_args = 0
9360	mov	ip, sp
9361	push	{r4, r5, r6, r7, fp, ip, lr, pc}
9362	sub	fp, ip, #4
9363	sub	sp, sp, #32
9364	push	{lr}
9365	bl	__gnu_mcount_nc
9366	mov	r3, sp
9367	ldr	r4, .L1295
9368	bic	r6, r3, #8128
9369	mov	r5, #0
9370	bic	r6, r6, #63
9371	ldr	r0, .L1295+4
9372	mov	r1, #0
9373	ldr	r3, [r6, #24]
9374	str	r3, [fp, #-32]
9375	bl	sftl_printk
9376.L1287:
9377	ldr	r3, [r4, #2552]
9378	cmp	r3, r5
9379	bhi	.L1293
9380	ldr	r2, [fp, #-32]
9381	ldr	r3, [r6, #24]
9382	cmp	r2, r3
9383	beq	.L1294
9384	bl	__stack_chk_fail
9385.L1293:
9386	sub	r1, fp, #36
9387	mov	r0, r5
9388	mov	r2, #0
9389	bl	log2phys
9390	ubfx	r3, r5, #0, #11
9391	cmp	r3, #0
9392	bne	.L1288
9393	ldr	r2, [fp, #-36]
9394	mov	r1, r5
9395	ldr	r0, .L1295+8
9396	bl	sftl_printk
9397.L1288:
9398	ldr	r3, [fp, #-36]
9399	cmn	r3, #1
9400	beq	.L1290
9401	ldr	r7, [r4, #3332]
9402	mov	r2, #0
9403	str	r3, [r4, #3456]
9404	mov	r1, #1
9405	ldr	r3, [r4, #3300]
9406	ldr	r0, .L1295+12
9407	str	r3, [r4, #3460]
9408	str	r5, [r4, #3468]
9409	str	r7, [r4, #3464]
9410	str	r2, [r4, #3452]
9411	bl	FlashReadPages
9412	ldr	r3, [r4, #3452]
9413	cmn	r3, #1
9414	cmpne	r3, #256
9415	beq	.L1291
9416	ldr	r3, [r7, #8]
9417	cmp	r3, r5
9418	beq	.L1290
9419.L1291:
9420	ldr	r2, [r4, #3460]
9421	ldr	r3, [r4, #3464]
9422	ldr	r0, .L1295+16
9423	ldr	r1, [r2, #4]
9424	str	r1, [sp, #16]
9425	mov	r1, r5
9426	ldr	r2, [r2]
9427	str	r2, [sp, #12]
9428	ldr	r2, [r3, #12]
9429	str	r2, [sp, #8]
9430	ldr	r2, [r3, #8]
9431	str	r2, [sp, #4]
9432	ldr	r2, [r3, #4]
9433	str	r2, [sp]
9434	ldr	r2, [r4, #3456]
9435	ldr	r3, [r3]
9436	bl	sftl_printk
9437.L1290:
9438	add	r5, r5, #1
9439	b	.L1287
9440.L1294:
9441	sub	sp, fp, #28
9442	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
9443.L1296:
9444	.align	2
9445.L1295:
9446	.word	.LANCHOR0
9447	.word	.LC114
9448	.word	.LC115
9449	.word	.LANCHOR0+3452
9450	.word	.LC116
9451	.size	ftl_scan_all_data, .-ftl_scan_all_data
9452	.section	.rodata.str1.1
9453.LC117:
9454	.ascii	"FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000"
9455	.text
9456	.align	2
9457	.global	FtlGcScanTempBlk
9458	.syntax unified
9459	.arm
9460	.fpu softvfp
9461	.type	FtlGcScanTempBlk, %function
9462FtlGcScanTempBlk:
9463	@ args = 0, pretend = 0, frame = 56
9464	@ frame_needed = 1, uses_anonymous_args = 0
9465	mov	ip, sp
9466	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
9467	sub	fp, ip, #4
9468	sub	sp, sp, #60
9469	push	{lr}
9470	bl	__gnu_mcount_nc
9471	mov	r3, sp
9472	mov	r4, r0
9473	bic	r3, r3, #8128
9474	str	r1, [fp, #-84]
9475	bic	r3, r3, #63
9476	ldr	r3, [r3, #24]
9477	str	r3, [fp, #-48]
9478	ldr	r3, .L1329
9479	ldrh	r5, [r3, #4]
9480	movw	r3, #65535
9481	cmp	r5, r3
9482	beq	.L1322
9483	cmp	r5, #0
9484	beq	.L1299
9485.L1298:
9486	ldr	r2, .L1329+4
9487	movw	r3, #302
9488	ldrh	r3, [r2, r3]
9489	ldr	r2, [fp, #-84]
9490	cmp	r3, r2
9491	bne	.L1300
9492.L1299:
9493	bl	FtlGcPageVarInit
9494.L1300:
9495	ldr	r6, .L1329+4
9496	mov	r3, #0
9497	str	r3, [fp, #-80]
9498.L1317:
9499	ldrh	r2, [r4]
9500	mov	r3, #0
9501	strb	r3, [r4, #8]
9502	movw	r3, #65535
9503	cmp	r2, r3
9504	beq	.L1301
9505.L1302:
9506	ldr	r3, [r6, #3176]
9507	mov	r7, #0
9508	str	r3, [fp, #-88]
9509	movw	lr, #65535
9510	ldr	r3, .L1329+8
9511	mov	r8, #20
9512	ldr	r0, [r6, #3288]
9513	ldr	r10, [r6, #3180]
9514	ldrh	r2, [r3]
9515	ldrh	r9, [r3, #2]
9516	ldrh	r3, [r6, #232]
9517	str	r2, [fp, #-92]
9518	add	r2, r4, #16
9519	add	r3, r4, r3, lsl #1
9520	add	r3, r3, #16
9521	str	r3, [fp, #-96]
9522.L1303:
9523	ldr	r3, [fp, #-96]
9524	cmp	r3, r2
9525	bne	.L1305
9526	mov	r10, #0
9527	mov	r1, r7
9528	mov	r2, #0
9529	bl	FlashReadPages
9530.L1306:
9531	uxth	r3, r10
9532	cmp	r7, r3
9533	bhi	.L1318
9534	ldr	r3, [fp, #-80]
9535	add	r5, r5, #1
9536	add	r3, r3, #1
9537	str	r3, [fp, #-80]
9538	ldr	r2, [fp, #-80]
9539	uxth	r5, r5
9540	ldr	r3, [fp, #-84]
9541	cmp	r3, r2
9542	bhi	.L1319
9543	ldr	r2, .L1329
9544	movw	r1, #65535
9545	ldrh	r3, [r2, #4]
9546	cmp	r3, r1
9547	beq	.L1319
9548	ldr	r1, [fp, #-80]
9549	add	r3, r3, r1
9550	strh	r3, [r2, #4]	@ movhi
9551	ldr	r2, .L1329+4
9552	movw	r3, #302
9553	ldrh	r3, [r2, r3]
9554	cmp	r3, r5
9555	bls	.L1301
9556.L1320:
9557	mov	r3, sp
9558	ldr	r2, [fp, #-48]
9559	bic	r3, r3, #8128
9560	bic	r3, r3, #63
9561	ldr	r3, [r3, #24]
9562	cmp	r2, r3
9563	beq	.L1321
9564	bl	__stack_chk_fail
9565.L1322:
9566	mov	r5, #0
9567	b	.L1298
9568.L1305:
9569	ldrh	r3, [r2], #2
9570	cmp	r3, lr
9571	beq	.L1303
9572	mla	r1, r8, r7, r0
9573	orr	r3, r5, r3, lsl #10
9574	str	r3, [r1, #4]
9575	ldr	r3, [fp, #-92]
9576	mul	ip, r3, r7
9577	cmp	ip, #0
9578	add	r3, ip, #3
9579	movge	r3, ip
9580	ldr	ip, [fp, #-88]
9581	bic	r3, r3, #3
9582	add	r3, ip, r3
9583	mul	ip, r9, r7
9584	str	r3, [r1, #8]
9585	add	r7, r7, #1
9586	cmp	ip, #0
9587	add	r3, ip, #3
9588	movge	r3, ip
9589	uxth	r7, r7
9590	bic	r3, r3, #3
9591	add	r3, r10, r3
9592	str	r3, [r1, #12]
9593	b	.L1303
9594.L1318:
9595	mov	r9, #20
9596	ldr	r2, [r6, #3288]
9597	mul	r9, r9, r10
9598	add	r1, r2, r9
9599	ldr	r2, [r2, r9]
9600	ldr	r3, [r1, #4]
9601	ldr	r8, [r1, #12]
9602	cmp	r2, #0
9603	bne	.L1307
9604	ldrh	r0, [r8]
9605	movw	r1, #65535
9606	cmp	r0, r1
9607	beq	.L1327
9608	ldr	r0, [r8, #8]
9609	ldr	r1, [r6, #2552]
9610	cmp	r0, r1
9611	bls	.L1309
9612.L1327:
9613	ldrh	r3, [r4]
9614	mov	r1, #0
9615	ldr	r2, [r6, #72]
9616	mov	r5, #0
9617	lsl	r3, r3, #1
9618	strh	r1, [r2, r3]	@ movhi
9619	ldrh	r0, [r4]
9620	bl	INSERT_FREE_LIST
9621	mvn	r3, #0
9622	strh	r3, [r4]	@ movhi
9623	strh	r3, [r6, #172]	@ movhi
9624	bl	FtlGcPageVarInit
9625	b	.L1317
9626.L1309:
9627	sub	r1, fp, #72
9628	str	r3, [fp, #-92]
9629	str	r2, [fp, #-88]
9630	bl	log2phys
9631	ldr	r0, [fp, #-72]
9632	ldr	r1, [r8, #12]
9633	cmn	r0, #1
9634	ldr	r2, [fp, #-88]
9635	sub	ip, r1, r0
9636	ldr	r3, [fp, #-92]
9637	clz	ip, ip
9638	lsr	ip, ip, #5
9639	moveq	ip, #0
9640	cmp	ip, #0
9641	bne	.L1311
9642.L1316:
9643	ldr	r2, [r8, #8]
9644.L1328:
9645	ldr	r0, [r8, #12]
9646	mov	r1, r3
9647	add	r10, r10, #1
9648	bl	FtlGcUpdatePage
9649	b	.L1306
9650.L1311:
9651	str	r1, [fp, #-64]
9652	sub	r0, fp, #68
9653	ldr	r1, [r6, #3316]
9654	str	r1, [fp, #-60]
9655	ldr	r1, [r6, #3336]
9656	str	r1, [fp, #-56]
9657	mov	r1, #1
9658	str	r3, [fp, #-92]
9659	str	r2, [fp, #-88]
9660	bl	FlashReadPages
9661	ldr	r1, .L1329+12
9662	ldr	r0, [r6, #3288]
9663	ldr	r2, [fp, #-88]
9664	add	r9, r0, r9
9665	ldr	r3, [fp, #-92]
9666	ldrh	r1, [r1]
9667	ldr	r0, [fp, #-60]
9668	lsl	r1, r1, #7
9669.L1313:
9670	cmp	r1, r2
9671	beq	.L1316
9672	ldr	ip, [r9, #8]
9673	ldr	lr, [ip, r2, lsl #2]
9674	ldr	ip, [r0, r2, lsl #2]
9675	cmp	lr, ip
9676	beq	.L1314
9677	ldr	r2, [fp, #-64]
9678	ldrh	r1, [r4]
9679	ldr	r0, .L1329+16
9680	bl	sftl_printk
9681	b	.L1327
9682.L1314:
9683	add	r2, r2, #1
9684	b	.L1313
9685.L1307:
9686	mvn	r2, #0
9687	b	.L1328
9688.L1319:
9689	ldr	r3, .L1329+20
9690	ldrh	r3, [r3]
9691	cmp	r3, r5
9692	bhi	.L1302
9693.L1301:
9694	ldr	r3, .L1329
9695	mvn	r2, #0
9696	mov	r1, r5
9697	mov	r0, r4
9698	strh	r5, [r4, #2]	@ movhi
9699	strh	r2, [r3, #4]	@ movhi
9700	mov	r2, #0
9701	strb	r2, [r4, #6]
9702	bl	ftl_sb_update_avl_pages
9703	b	.L1320
9704.L1321:
9705	mvn	r0, #0
9706	sub	sp, fp, #40
9707	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
9708.L1330:
9709	.align	2
9710.L1329:
9711	.word	.LANCHOR2
9712	.word	.LANCHOR0
9713	.word	.LANCHOR0+310
9714	.word	.LANCHOR0+258
9715	.word	.LC117
9716	.word	.LANCHOR0+302
9717	.size	FtlGcScanTempBlk, .-FtlGcScanTempBlk
9718	.align	2
9719	.global	FtlReadRefresh
9720	.syntax unified
9721	.arm
9722	.fpu softvfp
9723	.type	FtlReadRefresh, %function
9724FtlReadRefresh:
9725	@ args = 0, pretend = 0, frame = 96
9726	@ frame_needed = 1, uses_anonymous_args = 0
9727	mov	ip, sp
9728	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
9729	sub	fp, ip, #4
9730	sub	sp, sp, #100
9731	push	{lr}
9732	bl	__gnu_mcount_nc
9733	ldr	r5, .L1347
9734	mov	r3, sp
9735	bic	r6, r3, #8128
9736	bic	r6, r6, #63
9737	ldr	r9, [r5, #2720]
9738	ldr	r3, [r6, #24]
9739	str	r3, [fp, #-48]
9740	cmp	r9, #0
9741	ldr	r3, [r5, #2552]
9742	beq	.L1332
9743	ldr	r2, [r5, #2724]
9744	cmp	r2, r3
9745	bcs	.L1333
9746	mov	r4, #2048
9747.L1338:
9748	ldr	r0, [r5, #2724]
9749	ldr	r3, [r5, #2552]
9750	cmp	r0, r3
9751	bcc	.L1334
9752.L1337:
9753	mvn	r0, #0
9754.L1331:
9755	ldr	r2, [fp, #-48]
9756	ldr	r3, [r6, #24]
9757	cmp	r2, r3
9758	beq	.L1342
9759	bl	__stack_chk_fail
9760.L1334:
9761	mov	r2, #0
9762	sub	r1, fp, #136
9763	bl	log2phys
9764	ldr	r3, [r5, #2724]
9765	ldr	r2, [fp, #-136]
9766	add	r3, r3, #1
9767	str	r3, [r5, #2724]
9768	cmn	r2, #1
9769	beq	.L1336
9770	str	r2, [fp, #-128]
9771	sub	r0, fp, #132
9772	str	r3, [fp, #-116]
9773	mov	r2, #0
9774	ldr	r3, [r5, #3324]
9775	mov	r1, #1
9776	str	r3, [fp, #-124]
9777	sub	r3, fp, #112
9778	str	r2, [fp, #-132]
9779	str	r3, [fp, #-120]
9780	bl	FlashReadPages
9781	ldr	r3, [fp, #-132]
9782	cmp	r3, #256
9783	bne	.L1337
9784	ldr	r0, [fp, #-136]
9785	ubfx	r0, r0, #10, #16
9786	bl	P2V_block_in_plane
9787	bl	FtlGcRefreshBlock
9788	b	.L1337
9789.L1336:
9790	subs	r4, r4, #1
9791	bne	.L1338
9792	b	.L1337
9793.L1333:
9794	ldr	r3, [r5, #2556]
9795	mov	r0, #0
9796	str	r3, [r5, #2716]
9797	str	r0, [r5, #2720]
9798	str	r0, [r5, #2724]
9799	b	.L1331
9800.L1332:
9801	ldr	r2, .L1347+4
9802	movw	r4, #10000
9803	ldr	r1, [r5, #2612]
9804	ldr	r8, [r5, #2556]
9805	cmp	r1, r4
9806	ldr	r10, [r5, #2716]
9807	ldrh	r7, [r2, #28]
9808	add	r2, r8, #1048576
9809	movhi	r4, #31
9810	movls	r4, #63
9811	cmp	r10, r2
9812	bhi	.L1341
9813	mov	r0, #1000
9814	lsr	r1, r1, #10
9815	add	r1, r1, #1
9816	mul	r0, r0, r3
9817	bl	__aeabi_uidiv
9818	add	r0, r0, r10
9819	cmp	r8, r0
9820	bhi	.L1341
9821	ands	r0, r4, r7
9822	movne	r0, r9
9823	bne	.L1331
9824	ldr	r3, [r5, #2740]
9825	cmp	r3, r7
9826	beq	.L1331
9827.L1341:
9828	mov	r3, #1
9829	mov	r0, #0
9830	str	r7, [r5, #2740]
9831	str	r3, [r5, #2720]
9832	str	r0, [r5, #2724]
9833	str	r8, [r5, #2716]
9834	b	.L1331
9835.L1342:
9836	sub	sp, fp, #40
9837	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
9838.L1348:
9839	.align	2
9840.L1347:
9841	.word	.LANCHOR0
9842	.word	.LANCHOR0+2468
9843	.size	FtlReadRefresh, .-FtlReadRefresh
9844	.align	2
9845	.global	l2p_flush
9846	.syntax unified
9847	.arm
9848	.fpu softvfp
9849	.type	l2p_flush, %function
9850l2p_flush:
9851	@ args = 0, pretend = 0, frame = 0
9852	@ frame_needed = 1, uses_anonymous_args = 0
9853	mov	ip, sp
9854	push	{r4, r5, r6, r7, fp, ip, lr, pc}
9855	sub	fp, ip, #4
9856	push	{lr}
9857	bl	__gnu_mcount_nc
9858	ldr	r6, .L1353
9859	mov	r4, #0
9860	ldr	r5, .L1353+4
9861	bl	FtlWriteDump_data
9862.L1350:
9863	ldrh	r3, [r5]
9864	uxth	r0, r4
9865	cmp	r3, r0
9866	bhi	.L1352
9867	mov	r0, #0
9868	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
9869.L1352:
9870	ldr	r2, [r6, #2540]
9871	uxth	r3, r4
9872	mov	r1, #12
9873	mla	r3, r1, r3, r2
9874	ldr	r3, [r3, #4]
9875	cmp	r3, #0
9876	bge	.L1351
9877	bl	flush_l2p_region
9878.L1351:
9879	add	r4, r4, #1
9880	b	.L1350
9881.L1354:
9882	.align	2
9883.L1353:
9884	.word	.LANCHOR0
9885	.word	.LANCHOR0+338
9886	.size	l2p_flush, .-l2p_flush
9887	.align	2
9888	.global	FtlVendorPartWrite
9889	.syntax unified
9890	.arm
9891	.fpu softvfp
9892	.type	FtlVendorPartWrite, %function
9893FtlVendorPartWrite:
9894	@ args = 0, pretend = 0, frame = 104
9895	@ frame_needed = 1, uses_anonymous_args = 0
9896	mov	ip, sp
9897	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
9898	sub	fp, ip, #4
9899	sub	sp, sp, #108
9900	push	{lr}
9901	bl	__gnu_mcount_nc
9902	mov	r3, sp
9903	ldr	r7, .L1365
9904	bic	r10, r3, #8128
9905	str	r2, [fp, #-136]
9906	bic	r10, r10, #63
9907	add	r2, r0, r1
9908	mov	r6, r0
9909	mov	r5, r1
9910	ldr	r3, [r10, #24]
9911	str	r3, [fp, #-48]
9912	mov	r3, r7
9913	ldrh	r8, [r3], #-12
9914	lsr	r8, r0, r8
9915	ldrh	r3, [r3]
9916	cmp	r2, r3
9917	subls	r7, r7, #308
9918	movls	r9, #0
9919	bls	.L1357
9920	mvn	r9, #0
9921	b	.L1355
9922.L1362:
9923	ldr	r3, [r7, #3372]
9924	mov	r0, r6
9925	ldr	r2, [r3, r8, lsl #2]
9926	ldr	r3, .L1365+4
9927	str	r2, [fp, #-148]
9928	ldrh	r3, [r3]
9929	str	r3, [fp, #-144]
9930	mov	r1, r3
9931	bl	__aeabi_uidivmod
9932	ldr	r3, [fp, #-144]
9933	ldr	r2, [fp, #-148]
9934	sub	r4, r3, r1
9935	str	r1, [fp, #-140]
9936	ldr	r0, [r7, #3308]
9937	uxth	r4, r4
9938	cmp	r4, r5
9939	uxthhi	r4, r5
9940	cmp	r2, #0
9941	cmpne	r3, r4
9942	movne	r1, #1
9943	moveq	r1, #0
9944	beq	.L1359
9945	str	r2, [fp, #-128]
9946	mov	r2, #1
9947	str	r0, [fp, #-124]
9948	mov	r1, r2
9949	sub	r0, fp, #132
9950	sub	r3, fp, #112
9951	str	r3, [fp, #-120]
9952	bl	FlashReadPages
9953.L1360:
9954	lsl	r3, r4, #9
9955	ldr	r0, [r7, #3308]
9956	mov	r2, r3
9957	str	r3, [fp, #-144]
9958	ldr	r3, [fp, #-140]
9959	sub	r5, r5, r4
9960	ldr	r1, [fp, #-136]
9961	add	r6, r6, r4
9962	add	r0, r0, r3, lsl #9
9963	bl	ftl_memcpy
9964	ldr	r2, [r7, #3308]
9965	mov	r1, r8
9966	ldr	r0, .L1365+8
9967	bl	FtlMapWritePage
9968	ldr	r2, [fp, #-136]
9969	ldr	r3, [fp, #-144]
9970	cmn	r0, #1
9971	add	r8, r8, #1
9972	add	r3, r2, r3
9973	mvneq	r9, #0
9974	str	r3, [fp, #-136]
9975.L1357:
9976	cmp	r5, #0
9977	bne	.L1362
9978.L1355:
9979	ldr	r2, [fp, #-48]
9980	ldr	r3, [r10, #24]
9981	cmp	r2, r3
9982	beq	.L1363
9983	bl	__stack_chk_fail
9984.L1359:
9985	ldr	r3, .L1365+12
9986	ldrh	r2, [r3]
9987	bl	ftl_memset
9988	b	.L1360
9989.L1363:
9990	mov	r0, r9
9991	sub	sp, fp, #40
9992	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
9993.L1366:
9994	.align	2
9995.L1365:
9996	.word	.LANCHOR0+308
9997	.word	.LANCHOR0+258
9998	.word	.LANCHOR0+3608
9999	.word	.LANCHOR0+310
10000	.size	FtlVendorPartWrite, .-FtlVendorPartWrite
10001	.align	2
10002	.global	Ftl_save_ext_data
10003	.syntax unified
10004	.arm
10005	.fpu softvfp
10006	.type	Ftl_save_ext_data, %function
10007Ftl_save_ext_data:
10008	@ args = 0, pretend = 0, frame = 0
10009	@ frame_needed = 1, uses_anonymous_args = 0
10010	mov	ip, sp
10011	push	{fp, ip, lr, pc}
10012	sub	fp, ip, #4
10013	push	{lr}
10014	bl	__gnu_mcount_nc
10015	ldr	r2, .L1369
10016	ldr	r3, .L1369+4
10017	ldr	r1, [r2, #2640]
10018	cmp	r1, r3
10019	ldmfdne	sp, {fp, sp, pc}
10020	ldr	r3, .L1369+8
10021	add	r2, r2, #2640
10022	str	r3, [r2, #4]
10023	mov	r1, #1
10024	ldr	r3, [r2, #-60]
10025	mov	r0, #0
10026	str	r3, [r2, #88]
10027	ldr	r3, [r2, #-56]
10028	str	r3, [r2, #92]
10029	ldr	r3, [r2, #-64]
10030	str	r3, [r2, #8]
10031	ldr	r3, [r2, #-76]
10032	str	r3, [r2, #12]
10033	ldr	r3, [r2, #-84]
10034	str	r3, [r2, #16]
10035	ldr	r3, [r2, #-68]
10036	str	r3, [r2, #20]
10037	ldr	r3, [r2, #-40]
10038	str	r3, [r2, #28]
10039	ldr	r3, [r2, #-32]
10040	str	r3, [r2, #32]
10041	ldr	r3, [r2, #-80]
10042	str	r3, [r2, #36]
10043	ldr	r3, [r2, #-72]
10044	str	r3, [r2, #40]
10045	ldr	r3, [r2, #-28]
10046	str	r3, [r2, #44]
10047	ldr	r3, [r2, #-24]
10048	str	r3, [r2, #48]
10049	bl	FtlVendorPartWrite
10050	ldmfd	sp, {fp, sp, pc}
10051.L1370:
10052	.align	2
10053.L1369:
10054	.word	.LANCHOR0
10055	.word	1179929683
10056	.word	1342177369
10057	.size	Ftl_save_ext_data, .-Ftl_save_ext_data
10058	.align	2
10059	.global	FtlEctTblFlush
10060	.syntax unified
10061	.arm
10062	.fpu softvfp
10063	.type	FtlEctTblFlush, %function
10064FtlEctTblFlush:
10065	@ args = 0, pretend = 0, frame = 0
10066	@ frame_needed = 1, uses_anonymous_args = 0
10067	mov	ip, sp
10068	push	{fp, ip, lr, pc}
10069	sub	fp, ip, #4
10070	push	{lr}
10071	bl	__gnu_mcount_nc
10072	ldr	r3, .L1376
10073	movw	r1, #3652
10074	ldrh	r2, [r3, r1]
10075	cmp	r2, #31
10076	addls	r2, r2, #1
10077	strhls	r2, [r3, r1]	@ movhi
10078	ldr	r2, [r3, #3348]
10079	movls	r1, #1
10080	movhi	r1, #32
10081	cmp	r0, #0
10082	ldr	ip, [r2, #16]
10083	bne	.L1373
10084	ldr	r0, [r2, #20]
10085	add	r1, r1, r0
10086	cmp	r1, ip
10087	bhi	.L1374
10088.L1373:
10089	ldr	r1, .L1376+4
10090	mov	r0, #64
10091	str	r1, [r2]
10092	str	ip, [r2, #20]
10093	movw	r2, #3340
10094	ldrh	r1, [r3, r2]
10095	ldr	r2, [r3, #3348]
10096	lsl	r3, r1, #9
10097	str	r3, [r2, #12]
10098	ldr	r3, [r2, #8]
10099	add	r3, r3, #1
10100	str	r3, [r2, #8]
10101	mov	r3, #0
10102	str	r3, [r2, #4]
10103	bl	FtlVendorPartWrite
10104	bl	Ftl_save_ext_data
10105.L1374:
10106	mov	r0, #0
10107	ldmfd	sp, {fp, sp, pc}
10108.L1377:
10109	.align	2
10110.L1376:
10111	.word	.LANCHOR0
10112	.word	1112818501
10113	.size	FtlEctTblFlush, .-FtlEctTblFlush
10114	.align	2
10115	.global	sftl_vendor_write
10116	.syntax unified
10117	.arm
10118	.fpu softvfp
10119	.type	sftl_vendor_write, %function
10120sftl_vendor_write:
10121	@ args = 0, pretend = 0, frame = 0
10122	@ frame_needed = 1, uses_anonymous_args = 0
10123	mov	ip, sp
10124	push	{fp, ip, lr, pc}
10125	sub	fp, ip, #4
10126	push	{lr}
10127	bl	__gnu_mcount_nc
10128	add	r0, r0, #256
10129	bl	FtlVendorPartWrite
10130	ldmfd	sp, {fp, sp, pc}
10131	.size	sftl_vendor_write, .-sftl_vendor_write
10132	.section	.rodata.str1.1
10133.LC118:
10134	.ascii	"FtlVendorPartRead refresh = %x phyAddr = %x\012\000"
10135	.text
10136	.align	2
10137	.global	FtlVendorPartRead
10138	.syntax unified
10139	.arm
10140	.fpu softvfp
10141	.type	FtlVendorPartRead, %function
10142FtlVendorPartRead:
10143	@ args = 0, pretend = 0, frame = 104
10144	@ frame_needed = 1, uses_anonymous_args = 0
10145	mov	ip, sp
10146	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
10147	sub	fp, ip, #4
10148	sub	sp, sp, #108
10149	push	{lr}
10150	bl	__gnu_mcount_nc
10151	mov	r3, sp
10152	ldr	r6, .L1390
10153	bic	r3, r3, #8128
10154	mov	r9, r2
10155	bic	r3, r3, #63
10156	str	r3, [fp, #-136]
10157	add	r2, r0, r1
10158	mov	r8, r0
10159	mov	r5, r1
10160	ldr	r3, [r3, #24]
10161	str	r3, [fp, #-48]
10162	mov	r3, r6
10163	ldrh	r7, [r3], #-12
10164	lsr	r7, r0, r7
10165	ldrh	r3, [r3]
10166	cmp	r2, r3
10167	subls	r6, r6, #308
10168	movls	r10, #0
10169	bls	.L1381
10170	mvn	r10, #0
10171	b	.L1379
10172.L1387:
10173	ldr	r2, .L1390+4
10174	mov	r0, r8
10175	ldr	r3, [r6, #3372]
10176	ldrh	r4, [r2]
10177	ldr	r3, [r3, r7, lsl #2]
10178	mov	r1, r4
10179	str	r3, [fp, #-144]
10180	bl	__aeabi_uidivmod
10181	sub	r4, r4, r1
10182	ldr	r3, [fp, #-144]
10183	uxth	r4, r4
10184	str	r1, [fp, #-140]
10185	cmp	r4, r5
10186	uxthhi	r4, r5
10187	cmp	r3, #0
10188	lsl	r2, r4, #9
10189	str	r2, [fp, #-144]
10190	beq	.L1383
10191	ldr	r2, [r6, #3308]
10192	sub	r0, fp, #132
10193	str	r2, [fp, #-124]
10194	sub	r2, fp, #112
10195	str	r2, [fp, #-120]
10196	mov	r2, #1
10197	mov	r1, r2
10198	str	r3, [fp, #-128]
10199	str	r3, [fp, #-148]
10200	bl	FlashReadPages
10201	ldr	r2, [fp, #-132]
10202	ldr	r3, [fp, #-148]
10203	cmn	r2, #1
10204	ldr	r2, [r6, #3452]
10205	mvneq	r10, #0
10206	cmp	r2, #256
10207	bne	.L1385
10208	ldr	r0, .L1390+8
10209	mov	r2, r3
10210	mov	r1, r7
10211	bl	sftl_printk
10212	ldr	r2, [r6, #3308]
10213	ldr	r0, .L1390+12
10214	mov	r1, r7
10215	bl	FtlMapWritePage
10216.L1385:
10217	ldr	r1, [r6, #3308]
10218	lsl	r2, r4, #9
10219	ldr	r3, [fp, #-140]
10220	mov	r0, r9
10221	add	r1, r1, r3, lsl #9
10222	bl	ftl_memcpy
10223.L1386:
10224	ldr	r3, [fp, #-144]
10225	add	r7, r7, #1
10226	sub	r5, r5, r4
10227	add	r8, r8, r4
10228	add	r9, r9, r3
10229.L1381:
10230	cmp	r5, #0
10231	bne	.L1387
10232.L1379:
10233	ldr	r3, [fp, #-136]
10234	ldr	r2, [fp, #-48]
10235	ldr	r3, [r3, #24]
10236	cmp	r2, r3
10237	beq	.L1388
10238	bl	__stack_chk_fail
10239.L1383:
10240	lsl	r2, r4, #9
10241	mov	r1, r3
10242	mov	r0, r9
10243	bl	ftl_memset
10244	b	.L1386
10245.L1388:
10246	mov	r0, r10
10247	sub	sp, fp, #40
10248	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
10249.L1391:
10250	.align	2
10251.L1390:
10252	.word	.LANCHOR0+308
10253	.word	.LANCHOR0+258
10254	.word	.LC118
10255	.word	.LANCHOR0+3608
10256	.size	FtlVendorPartRead, .-FtlVendorPartRead
10257	.section	.rodata.str1.1
10258.LC119:
10259	.ascii	"no ect\000"
10260	.text
10261	.align	2
10262	.global	FtlLoadEctTbl
10263	.syntax unified
10264	.arm
10265	.fpu softvfp
10266	.type	FtlLoadEctTbl, %function
10267FtlLoadEctTbl:
10268	@ args = 0, pretend = 0, frame = 0
10269	@ frame_needed = 1, uses_anonymous_args = 0
10270	mov	ip, sp
10271	push	{r4, r5, fp, ip, lr, pc}
10272	sub	fp, ip, #4
10273	push	{lr}
10274	bl	__gnu_mcount_nc
10275	ldr	r4, .L1394
10276	movw	r5, #3340
10277	mov	r0, #64
10278	ldr	r2, [r4, #3348]
10279	ldrh	r1, [r4, r5]
10280	bl	FtlVendorPartRead
10281	ldr	r3, [r4, #3348]
10282	ldr	r2, [r3]
10283	ldr	r3, .L1394+4
10284	cmp	r2, r3
10285	beq	.L1393
10286	ldr	r1, .L1394+8
10287	ldr	r0, .L1394+12
10288	bl	sftl_printk
10289	ldrh	r2, [r4, r5]
10290	ldr	r0, [r4, #3348]
10291	mov	r1, #0
10292	lsl	r2, r2, #9
10293	bl	ftl_memset
10294.L1393:
10295	mov	r0, #0
10296	ldmfd	sp, {r4, r5, fp, sp, pc}
10297.L1395:
10298	.align	2
10299.L1394:
10300	.word	.LANCHOR0
10301	.word	1112818501
10302	.word	.LC119
10303	.word	.LC77
10304	.size	FtlLoadEctTbl, .-FtlLoadEctTbl
10305	.align	2
10306	.global	Ftl_load_ext_data
10307	.syntax unified
10308	.arm
10309	.fpu softvfp
10310	.type	Ftl_load_ext_data, %function
10311Ftl_load_ext_data:
10312	@ args = 0, pretend = 0, frame = 0
10313	@ frame_needed = 1, uses_anonymous_args = 0
10314	mov	ip, sp
10315	push	{r4, r5, fp, ip, lr, pc}
10316	sub	fp, ip, #4
10317	push	{lr}
10318	bl	__gnu_mcount_nc
10319	ldr	r4, .L1398
10320	mov	r1, #1
10321	mov	r0, #0
10322	ldr	r5, .L1398+4
10323	add	r2, r4, #2640
10324	bl	FtlVendorPartRead
10325	ldr	r3, [r4, #2640]
10326	cmp	r3, r5
10327	beq	.L1397
10328	add	r0, r4, #2640
10329	mov	r2, #512
10330	mov	r1, #0
10331	bl	ftl_memset
10332	str	r5, [r4, #2640]
10333.L1397:
10334	ldr	r2, [r4, #2672]
10335	str	r2, [r4, #2608]
10336	ldr	r2, [r4, #2676]
10337	str	r2, [r4, #2560]
10338	ldr	r2, [r4, #2680]
10339	ldr	r3, [r4, #2728]
10340	str	r2, [r4, #2568]
10341	ldr	r2, [r4, #2684]
10342	str	r3, [r4, #2580]
10343	str	r2, [r4, #2612]
10344	ldr	r3, [r4, #2732]
10345	ldr	r2, [r4, #2688]
10346	str	r3, [r4, #2584]
10347	str	r2, [r4, #2616]
10348	ldr	r3, [r4, #2648]
10349	ldr	r2, .L1398+8
10350	str	r3, [r4, #2576]
10351	ldr	r3, [r4, #2652]
10352	str	r3, [r4, #2564]
10353	ldr	r3, [r4, #2656]
10354	str	r3, [r4, #2556]
10355	ldr	r3, [r4, #2660]
10356	ldrh	r2, [r2]
10357	str	r3, [r4, #2572]
10358	ldr	r0, [r4, #2596]
10359	ldr	r3, [r4, #2668]
10360	ldrh	r1, [r4, #240]
10361	str	r3, [r4, #2600]
10362	mla	r0, r0, r2, r3
10363	bl	__aeabi_uidiv
10364	str	r0, [r4, #2604]
10365	ldmfd	sp, {r4, r5, fp, sp, pc}
10366.L1399:
10367	.align	2
10368.L1398:
10369	.word	.LANCHOR0
10370	.word	1179929683
10371	.word	.LANCHOR0+292
10372	.size	Ftl_load_ext_data, .-Ftl_load_ext_data
10373	.align	2
10374	.global	sftl_vendor_read
10375	.syntax unified
10376	.arm
10377	.fpu softvfp
10378	.type	sftl_vendor_read, %function
10379sftl_vendor_read:
10380	@ args = 0, pretend = 0, frame = 0
10381	@ frame_needed = 1, uses_anonymous_args = 0
10382	mov	ip, sp
10383	push	{fp, ip, lr, pc}
10384	sub	fp, ip, #4
10385	push	{lr}
10386	bl	__gnu_mcount_nc
10387	add	r0, r0, #256
10388	bl	FtlVendorPartRead
10389	ldmfd	sp, {fp, sp, pc}
10390	.size	sftl_vendor_read, .-sftl_vendor_read
10391	.align	2
10392	.global	FtlMapBlkWriteDump_data
10393	.syntax unified
10394	.arm
10395	.fpu softvfp
10396	.type	FtlMapBlkWriteDump_data, %function
10397FtlMapBlkWriteDump_data:
10398	@ args = 0, pretend = 0, frame = 0
10399	@ frame_needed = 1, uses_anonymous_args = 0
10400	mov	ip, sp
10401	push	{r4, r5, r6, r7, fp, ip, lr, pc}
10402	sub	fp, ip, #4
10403	push	{lr}
10404	bl	__gnu_mcount_nc
10405	ldr	r3, [r0, #36]
10406	mov	r4, r0
10407	cmp	r3, #0
10408	ldmfdeq	sp, {r4, r5, r6, r7, fp, sp, pc}
10409	ldrh	r6, [r0, #6]
10410	mov	r2, #0
10411	ldr	r5, .L1408
10412	sub	r6, r6, #1
10413	str	r2, [r0, #36]
10414	ldr	r3, [r0, #24]
10415	uxth	r6, r6
10416	ldr	r0, [r5, #3304]
10417	ldr	r2, [r5, #3332]
10418	str	r0, [r5, #3460]
10419	str	r2, [r5, #3464]
10420	ldr	r3, [r3, r6, lsl #2]
10421	str	r3, [r5, #3456]
10422	cmp	r3, #0
10423	beq	.L1403
10424	mov	r2, #1
10425	ldr	r0, .L1408+4
10426	mov	r1, r2
10427	bl	FlashReadPages
10428.L1404:
10429	ldr	r2, [r5, #3460]
10430	mov	r1, r6
10431	mov	r0, r4
10432	bl	FtlMapWritePage
10433	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
10434.L1403:
10435	movw	r3, #310
10436	mov	r1, #255
10437	ldrh	r2, [r5, r3]
10438	bl	ftl_memset
10439	b	.L1404
10440.L1409:
10441	.align	2
10442.L1408:
10443	.word	.LANCHOR0
10444	.word	.LANCHOR0+3452
10445	.size	FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data
10446	.section	.rodata.str1.1
10447.LC120:
10448	.ascii	"FtlVpcTblFlush error = %x error count = %d\012\000"
10449	.text
10450	.align	2
10451	.global	FtlVpcTblFlush
10452	.syntax unified
10453	.arm
10454	.fpu softvfp
10455	.type	FtlVpcTblFlush, %function
10456FtlVpcTblFlush:
10457	@ args = 0, pretend = 0, frame = 0
10458	@ frame_needed = 1, uses_anonymous_args = 0
10459	mov	ip, sp
10460	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
10461	sub	fp, ip, #4
10462	push	{lr}
10463	bl	__gnu_mcount_nc
10464	ldr	r4, .L1420
10465	mov	r6, #0
10466	mov	r1, #255
10467	add	r5, r4, #2624
10468	add	r9, r4, #304
10469	sub	r8, r5, #156
10470	ldr	r7, [r4, #3332]
10471	ldr	r3, [r4, #3300]
10472	str	r3, [r4, #3460]
10473	ldrh	r3, [r5]
10474	str	r7, [r4, #3464]
10475	strh	r3, [r7, #2]	@ movhi
10476	ldr	r3, .L1420+4
10477	strh	r3, [r7]	@ movhi
10478	str	r6, [r7, #12]
10479	ldr	r3, [r4, #2632]
10480	str	r3, [r7, #4]
10481	ldr	r3, .L1420+8
10482	str	r3, [r4, #2468]
10483	ldr	r3, .L1420+12
10484	str	r3, [r4, #2472]
10485	ldrh	r3, [r5, #6]
10486	str	r6, [r7, #8]
10487	strh	r3, [r5, #-148]	@ movhi
10488	ldrh	r3, [r4, #254]
10489	strb	r3, [r4, #2478]
10490	ldrh	r3, [r4, #24]
10491	ldrh	r2, [r4, #26]
10492	strh	r3, [r5, #-142]	@ movhi
10493	ldrb	r3, [r4, #30]	@ zero_extendqisi2
10494	orr	r3, r3, r2, lsl #6
10495	strh	r3, [r5, #-140]	@ movhi
10496	ldrb	r3, [r4, #32]	@ zero_extendqisi2
10497	strb	r3, [r4, #2479]
10498	ldrh	r3, [r4, #76]
10499	ldrh	r2, [r4, #78]
10500	strh	r3, [r5, #-138]	@ movhi
10501	ldrb	r3, [r4, #82]	@ zero_extendqisi2
10502	orr	r3, r3, r2, lsl #6
10503	strh	r3, [r5, #-136]	@ movhi
10504	ldrb	r3, [r4, #84]	@ zero_extendqisi2
10505	strb	r3, [r4, #2480]
10506	ldrh	r3, [r4, #124]
10507	strh	r3, [r5, #-134]	@ movhi
10508	ldrh	r2, [r4, #126]
10509	ldrb	r3, [r4, #130]	@ zero_extendqisi2
10510	ldr	r0, [r4, #3460]
10511	orr	r3, r3, r2, lsl #6
10512	strh	r3, [r5, #-132]	@ movhi
10513	ldrb	r3, [r4, #132]	@ zero_extendqisi2
10514	strb	r3, [r4, #2481]
10515	ldr	r3, [r4, #2596]
10516	str	r3, [r4, #2500]
10517	ldr	r3, [r4, #2588]
10518	str	r3, [r4, #2508]
10519	ldr	r3, [r4, #2592]
10520	str	r3, [r4, #2504]
10521	movw	r3, #310
10522	ldrh	r2, [r4, r3]
10523	bl	ftl_memset
10524	mov	r1, r8
10525	mov	r2, #48
10526	ldr	r0, [r4, #3460]
10527	bl	ftl_memcpy
10528	ldrh	r2, [r4, #240]
10529	ldr	r0, [r4, #3460]
10530	movw	r8, #65535
10531	ldr	r1, [r4, #72]
10532	lsl	r2, r2, #1
10533	add	r0, r0, #48
10534	bl	ftl_memcpy
10535	mov	r0, r6
10536	bl	FtlUpdateVaildLpn
10537.L1411:
10538	ldrh	r1, [r5, #2]
10539	ldrh	r2, [r5]
10540	ldr	r3, [r4, #3300]
10541	str	r3, [r4, #3460]
10542	ldr	r3, [r4, #3332]
10543	str	r3, [r4, #3464]
10544	orr	r3, r1, r2, lsl #10
10545	str	r3, [r4, #3456]
10546	ldrh	r3, [r9]
10547	sub	r3, r3, #1
10548	cmp	r1, r3
10549	blt	.L1412
10550	mov	r3, #0
10551	ldrh	r8, [r5, #4]
10552	strh	r3, [r5, #2]	@ movhi
10553	strh	r2, [r5, #4]	@ movhi
10554	bl	FtlFreeSysBlkQueueOut
10555	ldr	r3, [r4, #2588]
10556	str	r3, [r4, #2632]
10557	add	r2, r3, #1
10558	strh	r0, [r5]	@ movhi
10559	str	r2, [r4, #2588]
10560	lsl	r2, r0, #10
10561	str	r2, [r4, #3456]
10562	str	r3, [r7, #4]
10563	strh	r0, [r7, #2]	@ movhi
10564.L1412:
10565	ldr	r3, .L1420+16
10566	ldr	r0, [r4, #3300]
10567	ldrh	r1, [r3]
10568	bl	js_hash
10569	mov	r3, #1
10570	str	r0, [r7, #12]
10571	mov	r2, r3
10572	mov	r1, r3
10573	ldr	r0, .L1420+20
10574	bl	FlashProgPages
10575	ldrh	r3, [r5, #2]
10576	ldr	r2, [r4, #3452]
10577	add	r3, r3, #1
10578	cmn	r2, #1
10579	uxth	r3, r3
10580	strh	r3, [r5, #2]	@ movhi
10581	bne	.L1413
10582	cmp	r3, #1
10583	bne	.L1415
10584	ldr	r1, .L1420+24
10585	movw	r2, #1145
10586	ldr	r0, .L1420+28
10587	bl	sftl_printk
10588	ldrh	r3, [r5, #2]
10589	cmp	r3, #1
10590	ldrheq	r3, [r9]
10591	subeq	r3, r3, #1
10592	strheq	r3, [r5, #2]	@ movhi
10593.L1415:
10594	add	r6, r6, #1
10595	uxth	r6, r6
10596	cmp	r6, #3
10597	bls	.L1411
10598	ldr	r1, [r4, #3456]
10599	mov	r2, r6
10600	ldr	r0, .L1420+32
10601	bl	sftl_printk
10602.L1418:
10603	b	.L1418
10604.L1413:
10605	cmp	r2, #256
10606	cmpne	r3, #1
10607	beq	.L1411
10608	movw	r3, #65535
10609	cmp	r8, r3
10610	beq	.L1419
10611	mov	r0, r8
10612	mov	r1, #1
10613	bl	FtlFreeSysBlkQueueIn
10614.L1419:
10615	mov	r0, #0
10616	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
10617.L1421:
10618	.align	2
10619.L1420:
10620	.word	.LANCHOR0
10621	.word	-3932
10622	.word	1179929683
10623	.word	1342177369
10624	.word	.LANCHOR0+310
10625	.word	.LANCHOR0+3452
10626	.word	.LANCHOR1+471
10627	.word	.LC8
10628	.word	.LC120
10629	.size	FtlVpcTblFlush, .-FtlVpcTblFlush
10630	.align	2
10631	.global	FtlSysFlush
10632	.syntax unified
10633	.arm
10634	.fpu softvfp
10635	.type	FtlSysFlush, %function
10636FtlSysFlush:
10637	@ args = 0, pretend = 0, frame = 0
10638	@ frame_needed = 1, uses_anonymous_args = 0
10639	mov	ip, sp
10640	push	{fp, ip, lr, pc}
10641	sub	fp, ip, #4
10642	push	{lr}
10643	bl	__gnu_mcount_nc
10644	bl	l2p_flush
10645	mov	r0, #1
10646	bl	FtlEctTblFlush
10647	bl	FtlVpcTblFlush
10648	mov	r0, #0
10649	ldmfd	sp, {fp, sp, pc}
10650	.size	FtlSysFlush, .-FtlSysFlush
10651	.align	2
10652	.global	sftl_deinit
10653	.syntax unified
10654	.arm
10655	.fpu softvfp
10656	.type	sftl_deinit, %function
10657sftl_deinit:
10658	@ args = 0, pretend = 0, frame = 0
10659	@ frame_needed = 1, uses_anonymous_args = 0
10660	mov	ip, sp
10661	push	{fp, ip, lr, pc}
10662	sub	fp, ip, #4
10663	push	{lr}
10664	bl	__gnu_mcount_nc
10665	ldr	r3, .L1425
10666	ldr	r3, [r3]
10667	cmp	r3, #1
10668	bne	.L1424
10669	bl	FtlSysFlush
10670.L1424:
10671	mov	r0, #0
10672	ldmfd	sp, {fp, sp, pc}
10673.L1426:
10674	.align	2
10675.L1425:
10676	.word	.LANCHOR2
10677	.size	sftl_deinit, .-sftl_deinit
10678	.align	2
10679	.global	sftl_discard
10680	.syntax unified
10681	.arm
10682	.fpu softvfp
10683	.type	sftl_discard, %function
10684sftl_discard:
10685	@ args = 0, pretend = 0, frame = 16
10686	@ frame_needed = 1, uses_anonymous_args = 0
10687	mov	ip, sp
10688	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
10689	sub	fp, ip, #4
10690	sub	sp, sp, #16
10691	push	{lr}
10692	bl	__gnu_mcount_nc
10693	mov	r3, sp
10694	ldr	r8, .L1444
10695	bic	r7, r3, #8128
10696	mov	r9, r0
10697	bic	r7, r7, #63
10698	mov	r4, r1
10699	ldr	r3, [r7, #24]
10700	str	r3, [fp, #-40]
10701	ldr	r3, [r8, #340]
10702	cmp	r3, r1
10703	cmpcs	r3, r0
10704	bls	.L1437
10705	add	r2, r0, r1
10706	cmp	r3, r2
10707	bcc	.L1437
10708	cmp	r1, #31
10709	bhi	.L1429
10710.L1434:
10711	mov	r0, #0
10712.L1427:
10713	ldr	r2, [fp, #-40]
10714	ldr	r3, [r7, #24]
10715	cmp	r2, r3
10716	beq	.L1435
10717	bl	__stack_chk_fail
10718.L1429:
10719	movw	r3, #258
10720	ldrh	r5, [r8, r3]
10721	mov	r1, r5
10722	bl	__aeabi_uidiv
10723	mov	r6, r0
10724	smulbb	r0, r0, r5
10725	sub	r9, r9, r0
10726	uxth	r9, r9
10727	cmp	r9, #0
10728	beq	.L1430
10729	sub	r5, r5, r9
10730	add	r6, r6, #1
10731	cmp	r5, r4
10732	movcs	r5, r4
10733	uxth	r5, r5
10734	sub	r4, r4, r5
10735.L1430:
10736	ldr	r5, .L1444+4
10737	mvn	r3, #0
10738	str	r3, [fp, #-44]
10739.L1431:
10740	ldrh	r3, [r5]
10741	cmp	r3, r4
10742	bls	.L1433
10743	ldr	r3, [r8, #3656]
10744	cmp	r3, #32
10745	bls	.L1434
10746	mov	r4, #0
10747	str	r4, [r8, #3656]
10748	bl	l2p_flush
10749	bl	FtlVpcTblFlush
10750	b	.L1434
10751.L1433:
10752	sub	r1, fp, #48
10753	mov	r0, r6
10754	mov	r2, #0
10755	bl	log2phys
10756	ldr	r3, [fp, #-48]
10757	cmn	r3, #1
10758	beq	.L1432
10759	ldr	r3, [r8, #3656]
10760	sub	r1, fp, #44
10761	mov	r2, #1
10762	mov	r0, r6
10763	add	r3, r3, #1
10764	str	r3, [r8, #3656]
10765	ldr	r3, [r8, #2560]
10766	add	r3, r3, #1
10767	str	r3, [r8, #2560]
10768	bl	log2phys
10769	ldr	r0, [fp, #-48]
10770	ubfx	r0, r0, #10, #16
10771	bl	P2V_block_in_plane
10772	bl	decrement_vpc_count
10773.L1432:
10774	ldrh	r3, [r5]
10775	add	r6, r6, #1
10776	sub	r4, r4, r3
10777	b	.L1431
10778.L1437:
10779	mvn	r0, #0
10780	b	.L1427
10781.L1435:
10782	sub	sp, fp, #36
10783	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
10784.L1445:
10785	.align	2
10786.L1444:
10787	.word	.LANCHOR0
10788	.word	.LANCHOR0+258
10789	.size	sftl_discard, .-sftl_discard
10790	.section	.rodata.str1.1
10791.LC121:
10792	.ascii	"FtlCheckVpc %x = %x  %x\012\000"
10793	.text
10794	.align	2
10795	.global	FtlVpcCheckAndModify
10796	.syntax unified
10797	.arm
10798	.fpu softvfp
10799	.type	FtlVpcCheckAndModify, %function
10800FtlVpcCheckAndModify:
10801	@ args = 0, pretend = 0, frame = 8
10802	@ frame_needed = 1, uses_anonymous_args = 0
10803	mov	ip, sp
10804	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
10805	sub	fp, ip, #4
10806	sub	sp, sp, #12
10807	push	{lr}
10808	bl	__gnu_mcount_nc
10809	mov	r3, sp
10810	ldr	r4, .L1461
10811	bic	r7, r3, #8128
10812	ldr	r1, .L1461+4
10813	bic	r7, r7, #63
10814	ldr	r0, .L1461+8
10815	mov	r5, #0
10816	ldr	r3, [r7, #24]
10817	str	r3, [fp, #-48]
10818	bl	sftl_printk
10819	ldrh	r2, [r4, #242]
10820	mov	r1, #0
10821	ldr	r0, [r4, #3352]
10822	lsl	r2, r2, #1
10823	bl	ftl_memset
10824.L1447:
10825	ldr	r3, [r4, #2552]
10826	cmp	r3, r5
10827	bhi	.L1449
10828	ldr	r9, .L1461+12
10829	mov	r8, #0
10830	ldr	r10, .L1461+16
10831.L1450:
10832	ldrh	r3, [r4, #240]
10833	uxth	r5, r8
10834	cmp	r3, r5
10835	bhi	.L1456
10836	bl	l2p_flush
10837	bl	FtlVpcTblFlush
10838	ldr	r2, [fp, #-48]
10839	ldr	r3, [r7, #24]
10840	cmp	r2, r3
10841	beq	.L1457
10842	bl	__stack_chk_fail
10843.L1449:
10844	sub	r1, fp, #52
10845	mov	r0, r5
10846	mov	r2, #0
10847	bl	log2phys
10848	ldr	r0, [fp, #-52]
10849	cmn	r0, #1
10850	beq	.L1448
10851	ubfx	r0, r0, #10, #16
10852	bl	P2V_block_in_plane
10853	ldr	r2, [r4, #3352]
10854	lsl	r0, r0, #1
10855	ldrh	r3, [r2, r0]
10856	add	r3, r3, #1
10857	strh	r3, [r2, r0]	@ movhi
10858.L1448:
10859	add	r5, r5, #1
10860	b	.L1447
10861.L1456:
10862	uxth	r1, r8
10863	ldr	r3, [r4, #72]
10864	movw	r0, #65535
10865	lsl	r6, r1, #1
10866	ldrh	r2, [r3, r6]
10867	ldr	r3, [r4, #3352]
10868	ldrh	r3, [r3, r6]
10869	cmp	r2, r0
10870	cmpne	r2, r3
10871	beq	.L1452
10872	mov	r0, r9
10873	bl	sftl_printk
10874	ldrh	r3, [r4, #24]
10875	cmp	r3, r5
10876	beq	.L1452
10877	ldrh	r3, [r4, #124]
10878	cmp	r3, r5
10879	beq	.L1452
10880	ldrh	r3, [r4, #76]
10881	cmp	r3, r5
10882	beq	.L1452
10883	ldr	r3, [r4, #72]
10884	ldr	r2, [r4, #3352]
10885	ldrh	r1, [r3, r6]
10886	ldrh	r2, [r2, r6]
10887	cmp	r1, #0
10888	strh	r2, [r3, r6]	@ movhi
10889	bne	.L1454
10890	mov	r1, r5
10891	mov	r0, r10
10892	bl	List_remove_node
10893	ldrh	r3, [r4, #224]
10894	cmp	r3, #0
10895	bne	.L1455
10896	ldr	r1, .L1461+4
10897	movw	r2, #2330
10898	ldr	r0, .L1461+20
10899	bl	sftl_printk
10900.L1455:
10901	ldrh	r3, [r4, #224]
10902	mov	r0, r5
10903	sub	r3, r3, #1
10904	strh	r3, [r4, #224]	@ movhi
10905	bl	INSERT_DATA_LIST
10906.L1452:
10907	add	r8, r8, #1
10908	b	.L1450
10909.L1454:
10910	mov	r0, r5
10911	bl	update_vpc_list
10912	b	.L1452
10913.L1457:
10914	sub	sp, fp, #40
10915	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
10916.L1462:
10917	.align	2
10918.L1461:
10919	.word	.LANCHOR0
10920	.word	.LANCHOR1+486
10921	.word	.LC111
10922	.word	.LC121
10923	.word	.LANCHOR0+2532
10924	.word	.LC8
10925	.size	FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
10926	.align	2
10927	.global	allocate_new_data_superblock
10928	.syntax unified
10929	.arm
10930	.fpu softvfp
10931	.type	allocate_new_data_superblock, %function
10932allocate_new_data_superblock:
10933	@ args = 0, pretend = 0, frame = 0
10934	@ frame_needed = 1, uses_anonymous_args = 0
10935	mov	ip, sp
10936	push	{r4, r5, r6, r7, fp, ip, lr, pc}
10937	sub	fp, ip, #4
10938	push	{lr}
10939	bl	__gnu_mcount_nc
10940	ldr	r6, .L1473
10941	mov	r5, r0
10942	ldrh	r4, [r0]
10943	ldrh	r3, [r6, #240]
10944	cmp	r3, r4
10945	bcs	.L1464
10946	ldr	r1, .L1473+4
10947	movw	r2, #2766
10948	ldr	r0, .L1473+8
10949	bl	sftl_printk
10950.L1464:
10951	movw	r3, #65535
10952	cmp	r4, r3
10953	beq	.L1465
10954	ldr	r2, [r6, #72]
10955	lsl	r3, r4, #1
10956	mov	r0, r4
10957	ldrh	r3, [r2, r3]
10958	cmp	r3, #0
10959	beq	.L1466
10960	bl	INSERT_DATA_LIST
10961.L1465:
10962	mov	r3, #1
10963	strb	r3, [r5, #8]
10964	movw	r3, #3438
10965	ldrh	r0, [r6, r3]
10966	movw	r3, #65535
10967	cmp	r0, r3
10968	beq	.L1467
10969	cmp	r0, r4
10970	bne	.L1468
10971	ldr	r3, [r6, #72]
10972	lsl	r4, r4, #1
10973	ldrh	r3, [r3, r4]
10974	cmp	r3, #0
10975	beq	.L1469
10976.L1468:
10977	bl	update_vpc_list
10978.L1469:
10979	movw	r3, #3438
10980	mvn	r2, #0
10981	strh	r2, [r6, r3]	@ movhi
10982.L1467:
10983	mov	r0, r5
10984	bl	allocate_data_superblock
10985	bl	l2p_flush
10986	mov	r0, #0
10987	bl	FtlEctTblFlush
10988	bl	FtlVpcTblFlush
10989	mov	r0, #0
10990	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
10991.L1466:
10992	bl	INSERT_FREE_LIST
10993	b	.L1465
10994.L1474:
10995	.align	2
10996.L1473:
10997	.word	.LANCHOR0
10998	.word	.LANCHOR1+507
10999	.word	.LC8
11000	.size	allocate_new_data_superblock, .-allocate_new_data_superblock
11001	.section	.rodata.str1.1
11002.LC122:
11003	.ascii	"FtlProgPages error %x = %d\012\000"
11004.LC123:
11005	.ascii	"Ftlwrite decrement_vpc_count %x = %d\012\000"
11006	.text
11007	.align	2
11008	.global	FtlProgPages
11009	.syntax unified
11010	.arm
11011	.fpu softvfp
11012	.type	FtlProgPages, %function
11013FtlProgPages:
11014	@ args = 0, pretend = 0, frame = 16
11015	@ frame_needed = 1, uses_anonymous_args = 0
11016	mov	ip, sp
11017	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
11018	sub	fp, ip, #4
11019	sub	sp, sp, #20
11020	push	{lr}
11021	bl	__gnu_mcount_nc
11022	mov	r5, r3
11023	mov	r3, sp
11024	bic	r6, r3, #8128
11025	ldr	r9, .L1493
11026	bic	r6, r6, #63
11027	mov	r7, #0
11028	mov	r8, r7
11029	mov	r2, #0
11030	mov	r4, r0
11031	str	r1, [fp, #-56]
11032	ldr	r3, [r6, #24]
11033	str	r3, [fp, #-48]
11034	ldrb	r3, [r5, #9]	@ zero_extendqisi2
11035	bl	FlashProgPages
11036.L1476:
11037	ldr	r3, [fp, #-56]
11038	cmp	r8, r3
11039	beq	.L1482
11040	ldr	r10, .L1493+4
11041	b	.L1483
11042.L1478:
11043	ldr	r1, [r4, #4]
11044	mov	r0, r10
11045	bl	sftl_printk
11046	ldr	r0, [r4, #4]
11047	ubfx	r0, r0, #10, #16
11048	bl	P2V_block_in_plane
11049	bl	decrement_vpc_count
11050	ldrh	r3, [r5, #4]
11051	cmp	r3, #0
11052	bne	.L1477
11053	mov	r0, r5
11054	bl	allocate_new_data_superblock
11055.L1477:
11056	mov	r0, r5
11057	mov	r7, #1
11058	bl	get_new_active_ppa
11059	str	r0, [r4, #4]
11060	str	r0, [fp, #-52]
11061	mov	r2, #0
11062	ldrb	r3, [r5, #9]	@ zero_extendqisi2
11063	mov	r0, r4
11064	mov	r1, #1
11065	bl	FlashProgPages
11066.L1483:
11067	ldr	r2, [r4]
11068	cmn	r2, #1
11069	cmpne	r2, #256
11070	beq	.L1478
11071	ldrb	r2, [r5, #6]	@ zero_extendqisi2
11072	ldrh	r3, [r9, #232]
11073	cmp	r2, r3
11074	bcc	.L1479
11075	ldr	r1, .L1493+8
11076	movw	r2, #986
11077	ldr	r0, .L1493+12
11078	bl	sftl_printk
11079.L1479:
11080	ldr	r3, [r4, #4]
11081	sub	r1, fp, #52
11082	ldr	r0, [r4, #16]
11083	mov	r2, #1
11084	str	r3, [fp, #-52]
11085	bl	log2phys
11086	ldr	r3, [r4, #12]
11087	ldr	r0, [r3, #12]
11088	cmn	r0, #1
11089	beq	.L1480
11090	ubfx	r0, r0, #10, #16
11091	bl	P2V_block_in_plane
11092	ldr	r2, [r9, #72]
11093	lsl	r3, r0, #1
11094	mov	r10, r0
11095	ldrh	r2, [r2, r3]
11096	cmp	r2, #0
11097	bne	.L1481
11098	mov	r1, r0
11099	ldr	r0, .L1493+16
11100	bl	sftl_printk
11101.L1481:
11102	mov	r0, r10
11103	bl	decrement_vpc_count
11104.L1480:
11105	add	r8, r8, #1
11106	add	r4, r4, #20
11107	b	.L1476
11108.L1482:
11109	cmp	r7, #0
11110	beq	.L1484
11111	bl	FtlSysFlush
11112.L1484:
11113	ldr	r3, .L1493
11114	ldrb	r2, [r5, #6]	@ zero_extendqisi2
11115	ldrh	r3, [r3, #232]
11116	cmp	r2, r3
11117	bcc	.L1475
11118	ldr	r1, .L1493+8
11119	movw	r2, #1005
11120	ldr	r0, .L1493+12
11121	bl	sftl_printk
11122.L1475:
11123	ldr	r2, [fp, #-48]
11124	ldr	r3, [r6, #24]
11125	cmp	r2, r3
11126	beq	.L1486
11127	bl	__stack_chk_fail
11128.L1486:
11129	sub	sp, fp, #40
11130	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
11131.L1494:
11132	.align	2
11133.L1493:
11134	.word	.LANCHOR0
11135	.word	.LC122
11136	.word	.LANCHOR1+536
11137	.word	.LC8
11138	.word	.LC123
11139	.size	FtlProgPages, .-FtlProgPages
11140	.align	2
11141	.global	FtlGcFreeTempBlock
11142	.syntax unified
11143	.arm
11144	.fpu softvfp
11145	.type	FtlGcFreeTempBlock, %function
11146FtlGcFreeTempBlock:
11147	@ args = 0, pretend = 0, frame = 16
11148	@ frame_needed = 1, uses_anonymous_args = 0
11149	mov	ip, sp
11150	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
11151	sub	fp, ip, #4
11152	sub	sp, sp, #20
11153	push	{lr}
11154	bl	__gnu_mcount_nc
11155	mov	r3, sp
11156	ldr	r4, .L1520
11157	bic	r6, r3, #8128
11158	bic	r6, r6, #63
11159	ldrh	r2, [r4, #124]
11160	ldr	r3, [r6, #24]
11161	str	r3, [fp, #-48]
11162	movw	r3, #302
11163	ldrh	r1, [r4, r3]
11164	movw	r3, #65535
11165	cmp	r2, r3
11166	bne	.L1496
11167.L1503:
11168	ldrh	r2, [r4, #124]
11169	mov	r3, #0
11170	str	r3, [r4, #3444]
11171	movw	r3, #65535
11172	cmp	r2, r3
11173	bne	.L1517
11174.L1497:
11175	mov	r0, #0
11176	b	.L1495
11177.L1496:
11178	ldr	r5, .L1520+4
11179	cmp	r0, #0
11180	beq	.L1499
11181	ldrh	r2, [r5, #4]
11182	cmp	r2, r3
11183	beq	.L1500
11184.L1501:
11185	mov	r1, #2
11186.L1499:
11187	ldr	r0, .L1520+8
11188	bl	FtlGcScanTempBlk
11189	ldrh	r2, [r5, #4]
11190	movw	r3, #65535
11191	str	r0, [fp, #-52]
11192	cmp	r2, r3
11193	movne	r0, #1
11194	beq	.L1503
11195.L1495:
11196	ldr	r2, [fp, #-48]
11197	ldr	r3, [r6, #24]
11198	cmp	r2, r3
11199	beq	.L1512
11200	bl	__stack_chk_fail
11201.L1500:
11202	mov	r3, #0
11203	strh	r3, [r5, #4]	@ movhi
11204	ldrh	r3, [r4, #224]
11205	cmp	r3, #17
11206	bhi	.L1501
11207	b	.L1499
11208.L1517:
11209	movw	r3, #3204
11210	movw	r1, #302
11211	ldrh	r2, [r4, r3]
11212	ldrh	r1, [r4, r1]
11213	ldrb	r3, [r4, #131]	@ zero_extendqisi2
11214	mul	r3, r1, r3
11215	cmp	r2, r3
11216	beq	.L1504
11217	ldr	r1, .L1520+12
11218	mov	r2, #164
11219	ldr	r0, .L1520+16
11220	bl	sftl_printk
11221.L1504:
11222	movw	r0, #302
11223	ldrh	r3, [r4, #124]
11224	ldrb	r2, [r4, #131]	@ zero_extendqisi2
11225	mov	r5, #0
11226	ldrh	r0, [r4, r0]
11227	mov	r10, #12
11228	lsl	r3, r3, #1
11229	ldr	r1, [r4, #72]
11230	ldr	r9, .L1520+20
11231	smulbb	r2, r2, r0
11232	strh	r2, [r1, r3]	@ movhi
11233	movw	r3, #3204
11234	ldr	r2, [r4, #2576]
11235	ldrh	r3, [r4, r3]
11236	add	r3, r3, r2
11237	str	r3, [r4, #2576]
11238.L1505:
11239	ldrh	r2, [r9]
11240	uxth	r3, r5
11241	cmp	r2, r3
11242	bhi	.L1509
11243	movw	r0, #65535
11244	bl	decrement_vpc_count
11245	ldrh	r0, [r4, #124]
11246	ldr	r2, [r4, #72]
11247	lsl	r3, r0, #1
11248	ldrh	r3, [r2, r3]
11249	cmp	r3, #0
11250	beq	.L1510
11251	bl	INSERT_DATA_LIST
11252.L1511:
11253	movw	r3, #3204
11254	mov	r5, #0
11255	mvn	r7, #0
11256	strh	r7, [r4, #124]	@ movhi
11257	strh	r5, [r4, r3]	@ movhi
11258	movw	r3, #3196
11259	strh	r5, [r4, r3]	@ movhi
11260	bl	l2p_flush
11261	bl	FtlVpcTblFlush
11262	movw	r3, #2620
11263	ldrh	r2, [r4, #224]
11264	ldrh	r3, [r4, r3]
11265	strh	r7, [r4, #172]	@ movhi
11266	add	r3, r3, r3, lsl #1
11267	cmp	r2, r3, lsr #2
11268	ldrgt	r3, .L1520+24
11269	movgt	r2, #20
11270	strhgt	r2, [r3]	@ movhi
11271	b	.L1497
11272.L1509:
11273	uxth	r8, r5
11274	ldr	r3, [r4, #3200]
11275	ldr	r2, [r4, #2552]
11276	mul	r8, r10, r8
11277	add	r7, r3, r8
11278	ldr	r0, [r7, #8]
11279	cmp	r0, r2
11280	bcc	.L1506
11281.L1518:
11282	ldrh	r0, [r4, #124]
11283	b	.L1519
11284.L1506:
11285	mov	r2, #0
11286	sub	r1, fp, #52
11287	str	r3, [fp, #-56]
11288	bl	log2phys
11289	ldr	r3, [fp, #-56]
11290	ldr	r2, [fp, #-52]
11291	ldr	r0, [r3, r8]
11292	cmp	r0, r2
11293	bne	.L1508
11294	ubfx	r0, r0, #10, #16
11295	bl	P2V_block_in_plane
11296	add	r1, r7, #4
11297	mov	r8, r0
11298	mov	r2, #1
11299	ldr	r0, [r7, #8]
11300	bl	log2phys
11301	mov	r0, r8
11302.L1519:
11303	bl	decrement_vpc_count
11304	b	.L1507
11305.L1508:
11306	ldr	r3, [r7, #4]
11307	cmp	r2, r3
11308	bne	.L1518
11309.L1507:
11310	add	r5, r5, #1
11311	b	.L1505
11312.L1510:
11313	bl	INSERT_FREE_LIST
11314	b	.L1511
11315.L1512:
11316	sub	sp, fp, #40
11317	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
11318.L1521:
11319	.align	2
11320.L1520:
11321	.word	.LANCHOR0
11322	.word	.LANCHOR2
11323	.word	.LANCHOR0+124
11324	.word	.LANCHOR1+549
11325	.word	.LC8
11326	.word	.LANCHOR0+3204
11327	.word	.LANCHOR0+3152
11328	.size	FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
11329	.align	2
11330	.global	FtlGcPageRecovery
11331	.syntax unified
11332	.arm
11333	.fpu softvfp
11334	.type	FtlGcPageRecovery, %function
11335FtlGcPageRecovery:
11336	@ args = 0, pretend = 0, frame = 0
11337	@ frame_needed = 1, uses_anonymous_args = 0
11338	mov	ip, sp
11339	push	{r4, r5, fp, ip, lr, pc}
11340	sub	fp, ip, #4
11341	push	{lr}
11342	bl	__gnu_mcount_nc
11343	ldr	r4, .L1524
11344	movw	r5, #302
11345	add	r0, r4, #124
11346	ldrh	r1, [r4, r5]
11347	bl	FtlGcScanTempBlk
11348	ldrh	r2, [r4, #126]
11349	ldrh	r3, [r4, r5]
11350	cmp	r2, r3
11351	ldmfdcc	sp, {r4, r5, fp, sp, pc}
11352	add	r0, r4, #3392
11353	bl	FtlMapBlkWriteDump_data
11354	mov	r0, #0
11355	bl	FtlGcFreeTempBlock
11356	mov	r3, #0
11357	str	r3, [r4, #3444]
11358	ldmfd	sp, {r4, r5, fp, sp, pc}
11359.L1525:
11360	.align	2
11361.L1524:
11362	.word	.LANCHOR0
11363	.size	FtlGcPageRecovery, .-FtlGcPageRecovery
11364	.align	2
11365	.global	FtlPowerLostRecovery
11366	.syntax unified
11367	.arm
11368	.fpu softvfp
11369	.type	FtlPowerLostRecovery, %function
11370FtlPowerLostRecovery:
11371	@ args = 0, pretend = 0, frame = 0
11372	@ frame_needed = 1, uses_anonymous_args = 0
11373	mov	ip, sp
11374	push	{r4, r5, r6, r7, fp, ip, lr, pc}
11375	sub	fp, ip, #4
11376	push	{lr}
11377	bl	__gnu_mcount_nc
11378	ldr	r4, .L1527
11379	mov	r5, #0
11380	add	r6, r4, #24
11381	add	r4, r4, #76
11382	mov	r0, r6
11383	str	r5, [r4, #3400]
11384	bl	FtlRecoverySuperblock
11385	mov	r0, r6
11386	bl	FtlSlcSuperblockCheck
11387	mov	r0, r4
11388	bl	FtlRecoverySuperblock
11389	mov	r0, r4
11390	bl	FtlSlcSuperblockCheck
11391	bl	FtlGcPageRecovery
11392	movw	r0, #65535
11393	bl	decrement_vpc_count
11394	mov	r0, r5
11395	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
11396.L1528:
11397	.align	2
11398.L1527:
11399	.word	.LANCHOR0
11400	.size	FtlPowerLostRecovery, .-FtlPowerLostRecovery
11401	.align	2
11402	.global	Ftl_gc_temp_data_write_back
11403	.syntax unified
11404	.arm
11405	.fpu softvfp
11406	.type	Ftl_gc_temp_data_write_back, %function
11407Ftl_gc_temp_data_write_back:
11408	@ args = 0, pretend = 0, frame = 0
11409	@ frame_needed = 1, uses_anonymous_args = 0
11410	mov	ip, sp
11411	push	{r4, r5, r6, r7, fp, ip, lr, pc}
11412	sub	fp, ip, #4
11413	push	{lr}
11414	bl	__gnu_mcount_nc
11415	ldr	r4, .L1537
11416	mov	r5, #0
11417	mov	r6, #20
11418	mov	r3, #0
11419	mov	r2, r3
11420	ldr	r1, [r4, #3168]
11421	ldr	r0, [r4, #3292]
11422	bl	FlashProgPages
11423.L1530:
11424	ldr	r1, [r4, #3168]
11425	uxth	r3, r5
11426	ldr	r2, [r4, #3292]
11427	cmp	r3, r1
11428	bcc	.L1533
11429	mov	r0, r2
11430	bl	FtlGcBufFree
11431	ldrh	r3, [r4, #128]
11432	mov	r0, #0
11433	str	r0, [r4, #3168]
11434	cmp	r3, r0
11435	ldmfdne	sp, {r4, r5, r6, r7, fp, sp, pc}
11436	mov	r0, #1
11437	bl	FtlGcFreeTempBlock
11438	mov	r0, #1
11439	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
11440.L1533:
11441	mul	r3, r6, r3
11442	add	r5, r5, #1
11443	add	r1, r2, r3
11444	ldr	r2, [r2, r3]
11445	ldr	ip, [r1, #12]
11446	cmn	r2, #1
11447	ldr	r1, [r1, #4]
11448	ldr	r0, [ip, #12]
11449	ldrne	r2, [ip, #8]
11450	bl	FtlGcUpdatePage
11451	b	.L1530
11452.L1538:
11453	.align	2
11454.L1537:
11455	.word	.LANCHOR0
11456	.size	Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
11457	.align	2
11458	.global	Ftl_get_new_temp_ppa
11459	.syntax unified
11460	.arm
11461	.fpu softvfp
11462	.type	Ftl_get_new_temp_ppa, %function
11463Ftl_get_new_temp_ppa:
11464	@ args = 0, pretend = 0, frame = 0
11465	@ frame_needed = 1, uses_anonymous_args = 0
11466	mov	ip, sp
11467	push	{r4, r5, fp, ip, lr, pc}
11468	sub	fp, ip, #4
11469	push	{lr}
11470	bl	__gnu_mcount_nc
11471	ldr	r4, .L1542
11472	movw	r3, #65535
11473	ldrh	r2, [r4, #124]
11474	cmp	r2, r3
11475	beq	.L1540
11476	ldrh	r3, [r4, #128]
11477	cmp	r3, #0
11478	bne	.L1541
11479.L1540:
11480	mov	r0, #0
11481	mov	r5, #0
11482	bl	FtlGcFreeTempBlock
11483	ldr	r0, .L1542+4
11484	strb	r5, [r4, #132]
11485	bl	allocate_data_superblock
11486	movw	r3, #3196
11487	strh	r5, [r4, r3]	@ movhi
11488	movw	r3, #3204
11489	strh	r5, [r4, r3]	@ movhi
11490	bl	l2p_flush
11491	mov	r0, r5
11492	bl	FtlEctTblFlush
11493	bl	FtlVpcTblFlush
11494.L1541:
11495	ldr	r0, .L1542+4
11496	bl	get_new_active_ppa
11497	ldmfd	sp, {r4, r5, fp, sp, pc}
11498.L1543:
11499	.align	2
11500.L1542:
11501	.word	.LANCHOR0
11502	.word	.LANCHOR0+124
11503	.size	Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
11504	.section	.rodata.str1.1
11505.LC124:
11506	.ascii	"SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000"
11507	.text
11508	.align	2
11509	.global	rk_ftl_garbage_collect
11510	.syntax unified
11511	.arm
11512	.fpu softvfp
11513	.type	rk_ftl_garbage_collect, %function
11514rk_ftl_garbage_collect:
11515	@ args = 0, pretend = 0, frame = 32
11516	@ frame_needed = 1, uses_anonymous_args = 0
11517	mov	ip, sp
11518	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
11519	sub	fp, ip, #4
11520	sub	sp, sp, #44
11521	push	{lr}
11522	bl	__gnu_mcount_nc
11523	ldr	r4, .L1660
11524	mov	r3, sp
11525	bic	r3, r3, #8128
11526	str	r0, [fp, #-72]
11527	bic	r3, r3, #63
11528	ldr	r0, [r4, #3272]
11529	ldr	r3, [r3, #24]
11530	cmp	r0, #0
11531	str	r3, [fp, #-48]
11532	movne	r0, #0
11533	bne	.L1544
11534	add	r3, r4, #2528
11535	ldrh	r3, [r3]
11536	cmp	r3, #47
11537	bls	.L1544
11538	ldr	r3, .L1660+4
11539	ldrh	r2, [r3, #4]
11540	movw	r3, #65535
11541	cmp	r2, r3
11542	bne	.L1546
11543.L1549:
11544	ldrh	r3, [r4, #220]
11545	movw	r2, #65535
11546	cmp	r3, r2
11547	bne	.L1547
11548.L1548:
11549	bl	FtlReadRefresh
11550	ldrh	r0, [r4, #124]
11551	ldrh	r5, [r4, #172]
11552	movw	r6, #65535
11553	ldr	r3, [r4, #3156]
11554	and	r5, r5, r0
11555	ldrh	r0, [r4, #222]
11556	ldr	r2, [fp, #-72]
11557	add	r3, r3, #1
11558	and	r5, r5, r0
11559	cmp	r5, r6
11560	add	r3, r3, r2, lsl #7
11561	movne	r5, r6
11562	str	r3, [r4, #3156]
11563	bne	.L1550
11564	ldrh	r2, [r4, #224]
11565	cmp	r2, #24
11566	movcc	r2, #5120
11567	movcs	r2, #1024
11568	cmp	r3, r2
11569	bls	.L1550
11570	movw	r3, #3660
11571	mov	r7, #0
11572	str	r7, [r4, #3156]
11573	strh	r7, [r4, r3]	@ movhi
11574	bl	GetSwlReplaceBlock
11575	mov	r5, r0
11576	cmp	r0, r6
11577	bne	.L1552
11578	movw	r6, #3154
11579	ldrh	r2, [r4, #224]
11580	ldrh	r3, [r4, r6]
11581	cmp	r2, r3
11582	bcs	.L1553
11583	mov	r0, #64
11584	bl	List_get_gc_head_node
11585	uxth	r3, r0
11586	cmp	r3, r5
11587	beq	.L1555
11588	mov	r0, r3
11589	ldr	r3, [r4, #72]
11590	lsl	r0, r0, #1
11591	ldrh	r3, [r3, r0]
11592	cmp	r3, #7
11593	bhi	.L1556
11594	mov	r0, r7
11595	bl	List_get_gc_head_node
11596	uxth	r0, r0
11597	mov	r3, #128
11598	cmp	r0, r5
11599	strh	r3, [r4, r6]	@ movhi
11600	beq	.L1555
11601	mov	r5, r0
11602.L1552:
11603	ldr	r1, .L1660+8
11604	lsl	r2, r5, #1
11605	ldr	r3, [r4, #72]
11606	ldr	r0, .L1660+12
11607	ldrh	r1, [r1]
11608	ldrh	r3, [r3, r2]
11609	str	r1, [sp, #4]
11610	ldr	r1, [r4, #2536]
11611	ldrh	r2, [r1, r2]
11612	mov	r1, r5
11613	str	r2, [sp]
11614	ldrh	r2, [r4, #224]
11615	bl	sftl_printk
11616	b	.L1555
11617.L1546:
11618	ldrh	r2, [r4, #124]
11619	cmp	r2, r3
11620	beq	.L1549
11621	mov	r0, #1
11622	bl	FtlGcFreeTempBlock
11623	cmp	r0, #0
11624	beq	.L1549
11625	mov	r0, #1
11626	b	.L1544
11627.L1547:
11628	ldrh	r1, [r4, #222]
11629	cmp	r1, r2
11630	strheq	r3, [r4, #222]	@ movhi
11631	mvneq	r3, #0
11632	strheq	r3, [r4, #220]	@ movhi
11633	b	.L1548
11634.L1556:
11635	mov	r3, #64
11636.L1656:
11637	strh	r3, [r4, r6]	@ movhi
11638.L1555:
11639	bl	FtlGcReFreshBadBlk
11640.L1550:
11641	ldr	r2, [fp, #-72]
11642	movw	r3, #65535
11643	cmp	r2, #0
11644	cmpeq	r5, r3
11645	moveq	r2, #1
11646	movne	r2, #0
11647	bne	.L1558
11648	ldrh	r3, [r4, #224]
11649	cmp	r3, #24
11650	movhi	r6, #1
11651	bhi	.L1559
11652	movw	r2, #302
11653	cmp	r3, #16
11654	ldrh	r6, [r4, r2]
11655	lsrhi	r6, r6, #5
11656	bhi	.L1559
11657	cmp	r3, #12
11658	lsrhi	r6, r6, #4
11659	bhi	.L1559
11660	cmp	r3, #8
11661	lsrhi	r6, r6, #2
11662.L1559:
11663	ldr	r2, .L1660+8
11664	ldrh	r1, [r2]
11665	cmp	r1, r3
11666	bcs	.L1562
11667	ldrh	r1, [r4, #222]
11668	ldrh	r3, [r4, #124]
11669	and	r3, r3, r1
11670	movw	r1, #65535
11671	cmp	r3, r1
11672	bne	.L1563
11673	movw	r3, #3660
11674	ldrh	r0, [r4, r3]
11675	cmp	r0, #0
11676	bne	.L1564
11677	ldr	r3, [r4, #2552]
11678	ldr	r1, [r4, #2548]
11679	add	r3, r3, r3, lsl #1
11680	cmp	r1, r3, lsr #2
11681	movcs	r3, #18
11682	bcs	.L1565
11683.L1564:
11684	movw	r3, #2620
11685	ldrh	r3, [r4, r3]
11686	add	r3, r3, r3, lsl #1
11687	lsr	r3, r3, #2
11688.L1565:
11689	strh	r3, [r2]	@ movhi
11690	mov	r3, #0
11691	str	r3, [r4, #3164]
11692.L1544:
11693	mov	r3, sp
11694	ldr	r2, [fp, #-48]
11695	bic	r3, r3, #8128
11696	bic	r3, r3, #63
11697	ldr	r3, [r3, #24]
11698	cmp	r2, r3
11699	beq	.L1619
11700	bl	__stack_chk_fail
11701.L1553:
11702	mov	r3, #80
11703	b	.L1656
11704.L1563:
11705	movw	r3, #2620
11706	ldrh	r3, [r4, r3]
11707	add	r3, r3, r3, lsl #1
11708	asr	r3, r3, #2
11709	strh	r3, [r2]	@ movhi
11710.L1562:
11711	movw	r3, #3206
11712	movw	r5, #65535
11713	ldrh	r3, [r4, r3]
11714	cmp	r3, #0
11715	addne	r6, r6, #32
11716	uxthne	r6, r6
11717.L1567:
11718	ldrh	r3, [r4, #172]
11719	movw	r2, #65535
11720	cmp	r3, r2
11721	bne	.L1575
11722	cmp	r5, r3
11723	strhne	r5, [r4, #172]	@ movhi
11724	bne	.L1577
11725	ldrh	r3, [r4, #222]
11726	cmp	r3, r5
11727	beq	.L1577
11728	ldr	r2, [r4, #72]
11729	lsl	r3, r3, #1
11730	ldrh	r3, [r2, r3]
11731	cmp	r3, #0
11732	mvneq	r3, #0
11733	strheq	r3, [r4, #222]	@ movhi
11734	ldrh	r3, [r4, #222]
11735	strh	r3, [r4, #172]	@ movhi
11736	mvn	r3, #0
11737	strh	r3, [r4, #222]	@ movhi
11738.L1577:
11739	ldrh	r0, [r4, #172]
11740	mov	r3, #0
11741	strb	r3, [r4, #180]
11742	movw	r3, #65535
11743	cmp	r0, r3
11744	beq	.L1575
11745	bl	IsBlkInGcList
11746	subs	r7, r0, #0
11747	beq	.L1580
11748	mvn	r3, #0
11749	strh	r3, [r4, #172]	@ movhi
11750.L1575:
11751	ldrh	r3, [r4, #172]
11752	ldrh	r2, [r4, #24]
11753	cmp	r2, r3
11754	beq	.L1581
11755	ldrh	r2, [r4, #76]
11756	cmp	r2, r3
11757	beq	.L1581
11758	ldrh	r2, [r4, #124]
11759	cmp	r2, r3
11760	bne	.L1582
11761.L1581:
11762	mvn	r3, #0
11763	strh	r3, [r4, #172]	@ movhi
11764.L1582:
11765	ldr	r4, .L1660
11766.L1617:
11767	ldrh	r2, [r4, #172]
11768	movw	r3, #65535
11769	cmp	r2, r3
11770	bne	.L1583
11771	ldr	r7, .L1660+16
11772	mov	r3, #0
11773	str	r3, [r4, #3164]
11774.L1584:
11775	ldrh	r9, [r7]
11776	mov	r0, r9
11777	bl	List_get_gc_head_node
11778	uxth	r10, r0
11779	movw	r3, #65535
11780	mov	r8, r0
11781	cmp	r10, r3
11782	strh	r10, [r4, #172]	@ movhi
11783	bne	.L1585
11784	mov	r3, #0
11785	mov	r0, #8
11786	strh	r3, [r7]	@ movhi
11787	b	.L1544
11788.L1558:
11789	ldrh	r6, [r4, #124]
11790	ldrh	r1, [r4, #222]
11791	and	r6, r6, r1
11792	and	r6, r6, r5
11793	cmp	r6, r3
11794	bne	.L1629
11795	ldrh	r3, [r4, #172]
11796	cmp	r3, r6
11797	beq	.L1568
11798.L1572:
11799	mov	r5, r6
11800.L1629:
11801	mov	r6, #1
11802	b	.L1567
11803.L1568:
11804	ldr	r8, .L1660+8
11805	str	r2, [r4, #3164]
11806	ldrh	r2, [r4, #224]
11807	ldrh	r3, [r8]
11808	cmp	r2, r3
11809	bls	.L1569
11810	movw	r3, #3660
11811	ldrh	r3, [r4, r3]
11812	cmp	r3, #0
11813	bne	.L1570
11814	ldr	r3, [r4, #2552]
11815	ldr	r2, [r4, #2548]
11816	add	r3, r3, r3, lsl #1
11817	cmp	r2, r3, lsr #2
11818	movcs	r3, #18
11819	bcs	.L1571
11820.L1570:
11821	movw	r3, #2620
11822	ldrh	r3, [r4, r3]
11823	add	r3, r3, r3, lsl #1
11824	lsr	r3, r3, #2
11825.L1571:
11826	strh	r3, [r8]	@ movhi
11827	bl	FtlReadRefresh
11828	mov	r0, #0
11829	bl	List_get_gc_head_node
11830	uxth	r0, r0
11831	ldr	r3, [r4, #72]
11832	lsl	r0, r0, #1
11833	ldrh	r3, [r3, r0]
11834	cmp	r3, #4
11835	bls	.L1569
11836.L1659:
11837	movw	r3, #3660
11838	ldrh	r0, [r4, r3]
11839	b	.L1544
11840.L1569:
11841	movw	r5, #3660
11842	ldrh	r0, [r4, r5]
11843	cmp	r0, #0
11844	bne	.L1572
11845	movw	r3, #2620
11846	ldrh	r7, [r4, r3]
11847	add	r3, r7, r7, lsl #1
11848	asr	r3, r3, #2
11849	strh	r3, [r8]	@ movhi
11850	bl	List_get_gc_head_node
11851	uxth	r0, r0
11852	ldr	r3, [r4, #72]
11853	lsl	r0, r0, #1
11854	ldrh	r1, [r4, #232]
11855	ldrh	r2, [r3, r0]
11856	ldr	r3, .L1660+20
11857	ldrh	r3, [r3]
11858	mul	r3, r1, r3
11859	add	r3, r3, r3, lsr #31
11860	cmp	r2, r3, asr #1
11861	ble	.L1573
11862	ldrh	r3, [r4, #224]
11863	sub	r7, r7, #1
11864	cmp	r3, r7
11865	blt	.L1573
11866	bl	FtlReadRefresh
11867	ldrh	r0, [r4, r5]
11868	b	.L1544
11869.L1573:
11870	cmp	r2, #0
11871	bne	.L1572
11872	movw	r0, #65535
11873	bl	decrement_vpc_count
11874	ldrh	r0, [r4, #224]
11875	add	r0, r0, #1
11876	b	.L1544
11877.L1585:
11878	mov	r0, r10
11879	bl	IsBlkInGcList
11880	add	r3, r9, #1
11881	cmp	r0, #0
11882	uxth	r3, r3
11883	beq	.L1586
11884.L1657:
11885	strh	r3, [r7]	@ movhi
11886	b	.L1584
11887.L1586:
11888	ldr	r2, .L1660+24
11889	uxth	r8, r8
11890	ldrh	ip, [r4, #232]
11891	ldr	r1, [r4, #72]
11892	lsl	r8, r8, #1
11893	strh	r3, [r7]	@ movhi
11894	ldrh	r2, [r2]
11895	ldrh	r0, [r1, r8]
11896	mul	r2, ip, r2
11897	add	ip, r2, r2, lsr #31
11898	cmp	r0, ip, asr #1
11899	bgt	.L1588
11900	cmp	r0, #8
11901	cmphi	r3, #48
11902	bls	.L1589
11903	ldr	r3, .L1660+28
11904	ldrh	r3, [r3]
11905	cmp	r3, #35
11906	bhi	.L1589
11907.L1588:
11908	mov	r3, #0
11909	strh	r3, [r7]	@ movhi
11910.L1589:
11911	ldrh	r3, [r1, r8]
11912	movw	r1, #65535
11913	cmp	r2, r3
11914	cmple	r5, r1
11915	bne	.L1590
11916	ldrh	r2, [r7]
11917	cmp	r2, #3
11918	bhi	.L1590
11919	mvn	r3, #0
11920	strh	r3, [r4, #172]	@ movhi
11921	mov	r3, #0
11922	strh	r3, [r7]	@ movhi
11923	b	.L1659
11924.L1590:
11925	cmp	r3, #0
11926	bne	.L1591
11927	movw	r0, #65535
11928	bl	decrement_vpc_count
11929	ldrh	r3, [r7]
11930	add	r3, r3, #1
11931	b	.L1657
11932.L1591:
11933	mov	r3, #0
11934	strb	r3, [r4, #180]
11935	ldrh	r3, [r4, #24]
11936	cmp	r3, r10
11937	bne	.L1592
11938	ldr	r1, .L1660+32
11939	movw	r2, #717
11940	ldr	r0, .L1660+36
11941	bl	sftl_printk
11942.L1592:
11943	ldrh	r2, [r4, #172]
11944	ldrh	r3, [r4, #76]
11945	cmp	r2, r3
11946	bne	.L1593
11947	ldr	r1, .L1660+32
11948	movw	r2, #718
11949	ldr	r0, .L1660+36
11950	bl	sftl_printk
11951.L1593:
11952	ldrh	r2, [r4, #172]
11953	ldrh	r3, [r4, #124]
11954	cmp	r2, r3
11955	bne	.L1594
11956	ldr	r1, .L1660+32
11957	movw	r2, #719
11958	ldr	r0, .L1660+36
11959	bl	sftl_printk
11960.L1594:
11961	ldr	r0, .L1660+40
11962	bl	make_superblock
11963	ldr	r1, .L1660+44
11964	ldrh	r2, [r4, #172]
11965	mov	r3, #0
11966	ldr	r0, [r4, #72]
11967	lsl	r2, r2, #1
11968	strh	r3, [r1]	@ movhi
11969	ldrh	r2, [r0, r2]
11970	strh	r2, [r1, #2]	@ movhi
11971	strh	r3, [r4, #174]	@ movhi
11972	strb	r3, [r4, #178]
11973.L1583:
11974	mov	r3, #1
11975	str	r3, [r4, #3272]
11976	ldr	r3, .L1660+24
11977	ldrh	r3, [r3]
11978	str	r3, [fp, #-64]
11979	ldr	r3, [fp, #-72]
11980	cmp	r3, #0
11981	beq	.L1595
11982	ldr	r2, [fp, #-64]
11983	ldrh	r3, [r4, #232]
11984	ldr	r1, [r4, #72]
11985	mul	r3, r2, r3
11986	ldrh	r2, [r4, #172]
11987	lsl	r2, r2, #1
11988	ldrh	r2, [r1, r2]
11989	sub	r3, r3, r2
11990	cmp	r3, #0
11991	add	r2, r3, #3
11992	movge	r2, r3
11993	add	r6, r6, r2, asr #2
11994	uxth	r6, r6
11995.L1595:
11996	ldrh	r3, [r4, #174]
11997	ldr	r1, [fp, #-64]
11998	add	r2, r3, r6
11999	cmp	r2, r1
12000	movgt	r2, r1
12001	subgt	r3, r2, r3
12002	uxthgt	r6, r3
12003	mov	r3, #0
12004.L1658:
12005	str	r3, [fp, #-68]
12006	ldrh	r8, [r4, #174]
12007	ldrh	r3, [fp, #-68]
12008	cmp	r6, r3
12009	bls	.L1605
12010	ldr	r3, [fp, #-68]
12011	movw	r9, #65535
12012	ldrh	ip, [r4, #232]
12013	mov	r10, #20
12014	add	r8, r8, r3
12015	ldr	r0, [r4, #3184]
12016	mov	r3, #0
12017	ldr	r1, .L1660+48
12018	mov	r7, r3
12019	b	.L1606
12020.L1599:
12021	ldrh	r2, [r1], #2
12022	cmp	r2, r9
12023	beq	.L1598
12024	mla	lr, r10, r7, r0
12025	add	r7, r7, #1
12026	orr	r2, r8, r2, lsl #10
12027	uxth	r7, r7
12028	str	r2, [lr, #4]
12029.L1598:
12030	add	r3, r3, #1
12031.L1606:
12032	uxth	r2, r3
12033	cmp	ip, r2
12034	bhi	.L1599
12035	mov	r10, #0
12036	ldrb	r2, [r4, #180]	@ zero_extendqisi2
12037	mov	r1, r7
12038	bl	FlashReadPages
12039.L1600:
12040	uxth	r3, r10
12041	cmp	r7, r3
12042	ldrls	r3, [fp, #-68]
12043	addls	r3, r3, #1
12044	bls	.L1658
12045.L1604:
12046	mov	r8, #20
12047	ldr	r3, [r4, #3184]
12048	mul	r8, r8, r10
12049	add	r2, r3, r8
12050	ldr	r3, [r3, r8]
12051	cmn	r3, #1
12052	beq	.L1601
12053	ldr	r9, [r2, #12]
12054	movw	r3, #61589
12055	ldrh	r2, [r9]
12056	cmp	r2, r3
12057	bne	.L1601
12058	ldr	r3, [r9, #8]
12059	cmn	r3, #1
12060	bne	.L1602
12061	ldr	r1, .L1660+32
12062	movw	r2, #753
12063	ldr	r0, .L1660+36
12064	str	r3, [fp, #-76]
12065	bl	sftl_printk
12066	ldr	r3, [fp, #-76]
12067.L1602:
12068	sub	r1, fp, #56
12069	mov	r0, r3
12070	mov	r2, #0
12071	bl	log2phys
12072	ldr	r1, [r4, #3184]
12073	ldr	r3, [fp, #-56]
12074	add	r1, r1, r8
12075	ldr	r2, [r1, #4]
12076	cmp	r2, r3
12077	bne	.L1601
12078	ldr	r2, .L1660+44
12079	ldr	r0, [r4, #3168]
12080	ldr	r1, [r1, #16]
12081	ldrh	r3, [r2]
12082	add	r3, r3, #1
12083	strh	r3, [r2]	@ movhi
12084	ldr	r3, [r4, #3292]
12085	mov	r2, #20
12086	mla	r3, r2, r0, r3
12087	str	r3, [fp, #-76]
12088	str	r1, [r3, #16]
12089	bl	Ftl_get_new_temp_ppa
12090	ldr	r3, [fp, #-76]
12091	ldr	r1, [r4, #3184]
12092	mov	r2, #20
12093	str	r0, [r3, #4]
12094	add	r1, r1, r8
12095	ldr	r0, [r4, #3168]
12096	ldr	r3, [r4, #3292]
12097	mla	r3, r2, r0, r3
12098	ldr	r2, [r1, #8]
12099	str	r2, [r3, #8]
12100	ldr	r2, [r1, #12]
12101	mov	r1, #1
12102	str	r2, [r3, #12]
12103	ldr	r3, [fp, #-56]
12104	str	r3, [r9, #12]
12105	ldrh	r3, [r4, #124]
12106	strh	r3, [r9, #2]	@ movhi
12107	ldr	r3, [r4, #2592]
12108	ldr	r0, [r4, #3184]
12109	str	r3, [r9, #4]
12110	ldr	r3, [r4, #3168]
12111	add	r0, r0, r8
12112	add	r3, r3, #1
12113	str	r3, [r4, #3168]
12114	bl	FtlGcBufAlloc
12115	ldrb	r2, [r4, #131]	@ zero_extendqisi2
12116	ldr	r3, [r4, #3168]
12117	cmp	r2, r3
12118	beq	.L1603
12119	ldrh	r3, [r4, #128]
12120	cmp	r3, #0
12121	bne	.L1601
12122.L1603:
12123	bl	Ftl_gc_temp_data_write_back
12124	cmp	r0, #0
12125	beq	.L1601
12126	ldr	r3, .L1660
12127	mov	r2, #0
12128	str	r2, [r3, #3272]
12129	movw	r2, #65535
12130	str	r2, [r3, #172]
12131	movw	r2, #3660
12132	ldrh	r0, [r3, r2]
12133	b	.L1544
12134.L1601:
12135	add	r10, r10, #1
12136	b	.L1600
12137.L1605:
12138	add	r6, r6, r8
12139	ldr	r3, [fp, #-64]
12140	uxth	r6, r6
12141	strh	r6, [r4, #174]	@ movhi
12142	cmp	r3, r6
12143	bhi	.L1607
12144	ldr	r3, [r4, #3168]
12145	cmp	r3, #0
12146	beq	.L1608
12147	bl	Ftl_gc_temp_data_write_back
12148	cmp	r0, #0
12149	movne	r3, #0
12150	strne	r3, [r4, #3272]
12151	bne	.L1659
12152.L1608:
12153	ldr	r3, .L1660+44
12154	ldrh	r6, [r3]
12155	cmp	r6, #0
12156	bne	.L1609
12157	ldrh	r3, [r4, #172]
12158	ldr	r2, [r4, #72]
12159	lsl	r3, r3, #1
12160	ldrh	r3, [r2, r3]
12161	cmp	r3, #0
12162	beq	.L1609
12163.L1610:
12164	ldr	r3, [r4, #2552]
12165	cmp	r6, r3
12166	bcc	.L1613
12167.L1615:
12168	ldrh	r3, [r4, #172]
12169	mov	r1, #0
12170	ldr	r2, [r4, #72]
12171	lsl	r3, r3, #1
12172	strh	r1, [r2, r3]	@ movhi
12173	ldrh	r0, [r4, #172]
12174	bl	update_vpc_list
12175	bl	l2p_flush
12176	bl	FtlVpcTblFlush
12177.L1609:
12178	mvn	r3, #0
12179	strh	r3, [r4, #172]	@ movhi
12180.L1607:
12181	mov	r3, #0
12182	str	r3, [r4, #3272]
12183	ldrh	r3, [r4, #224]
12184	cmp	r3, #2
12185	bhi	.L1616
12186	ldr	r3, .L1660+24
12187	ldrh	r6, [r3]
12188	b	.L1617
12189.L1613:
12190	sub	r1, fp, #52
12191	mov	r0, r6
12192	mov	r2, #0
12193	bl	log2phys
12194	ldr	r0, [fp, #-52]
12195	cmn	r0, #1
12196	beq	.L1611
12197	ubfx	r0, r0, #10, #16
12198	bl	P2V_block_in_plane
12199	ldrh	r3, [r4, #172]
12200	cmp	r3, r0
12201	beq	.L1612
12202.L1611:
12203	add	r6, r6, #1
12204	b	.L1610
12205.L1612:
12206	ldr	r3, [r4, #2552]
12207	cmp	r6, r3
12208	bcc	.L1609
12209	b	.L1615
12210.L1616:
12211	movw	r2, #3660
12212	ldrh	r0, [r4, r2]
12213	cmp	r0, #0
12214	addeq	r0, r3, #1
12215	b	.L1544
12216.L1580:
12217	ldr	r0, .L1660+40
12218	bl	make_superblock
12219	movw	r3, #3662
12220	ldr	r2, [r4, #72]
12221	strh	r7, [r4, r3]	@ movhi
12222	ldrh	r3, [r4, #172]
12223	strh	r7, [r4, #174]	@ movhi
12224	strb	r7, [r4, #178]
12225	lsl	r3, r3, #1
12226	ldrh	r2, [r2, r3]
12227	ldr	r3, .L1660+52
12228	strh	r2, [r3]	@ movhi
12229	b	.L1575
12230.L1619:
12231	sub	sp, fp, #40
12232	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
12233.L1661:
12234	.align	2
12235.L1660:
12236	.word	.LANCHOR0
12237	.word	.LANCHOR2
12238	.word	.LANCHOR0+3152
12239	.word	.LC124
12240	.word	.LANCHOR0+3160
12241	.word	.LANCHOR0+304
12242	.word	.LANCHOR0+302
12243	.word	.LANCHOR0+3196
12244	.word	.LANCHOR1+568
12245	.word	.LC8
12246	.word	.LANCHOR0+172
12247	.word	.LANCHOR0+3662
12248	.word	.LANCHOR0+188
12249	.word	.LANCHOR0+3664
12250	.size	rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
12251	.align	2
12252	.global	FtlRead
12253	.syntax unified
12254	.arm
12255	.fpu softvfp
12256	.type	FtlRead, %function
12257FtlRead:
12258	@ args = 0, pretend = 0, frame = 56
12259	@ frame_needed = 1, uses_anonymous_args = 0
12260	mov	ip, sp
12261	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
12262	sub	fp, ip, #4
12263	sub	sp, sp, #60
12264	push	{lr}
12265	bl	__gnu_mcount_nc
12266	mov	r8, r3
12267	mov	r3, sp
12268	bic	r3, r3, #8128
12269	mov	r5, r1
12270	bic	r3, r3, #63
12271	cmp	r0, #16
12272	str	r2, [fp, #-60]
12273	ldr	r3, [r3, #24]
12274	str	r3, [fp, #-48]
12275	bne	.L1663
12276	ldr	r1, [fp, #-60]
12277	mov	r2, r8
12278	add	r0, r5, #256
12279	bl	FtlVendorPartRead
12280	mov	r6, r0
12281.L1662:
12282	mov	r3, sp
12283	ldr	r2, [fp, #-48]
12284	bic	r3, r3, #8128
12285	bic	r3, r3, #63
12286	ldr	r3, [r3, #24]
12287	cmp	r2, r3
12288	beq	.L1685
12289	bl	__stack_chk_fail
12290.L1663:
12291	ldr	r4, .L1703
12292	ldr	r2, [fp, #-60]
12293	ldr	r3, [r4, #340]
12294	cmp	r3, r2
12295	cmpcs	r3, r1
12296	movls	r7, #1
12297	movhi	r7, #0
12298	bls	.L1687
12299	add	r2, r1, r2
12300	str	r2, [fp, #-64]
12301	cmp	r3, r2
12302	bcc	.L1687
12303	ldr	r3, .L1703+4
12304	ldr	r6, [r3]
12305	cmn	r6, #1
12306	beq	.L1662
12307	movw	r3, #258
12308	mov	r0, r5
12309	ldrh	r6, [r4, r3]
12310	mov	r1, r6
12311	bl	__aeabi_uidiv
12312	ldr	r3, [fp, #-64]
12313	mov	r1, r6
12314	str	r0, [fp, #-72]
12315	sub	r0, r3, #1
12316	mov	r6, r7
12317	bl	__aeabi_uidiv
12318	ldr	r3, [fp, #-72]
12319	ldr	r2, [fp, #-60]
12320	rsb	r3, r3, #1
12321	ldr	r9, [fp, #-72]
12322	add	r3, r3, r0
12323	str	r3, [fp, #-68]
12324	ldr	r3, [r4, #2584]
12325	str	r0, [fp, #-76]
12326	add	r3, r3, r2
12327	ldr	r2, [fp, #-68]
12328	str	r3, [r4, #2584]
12329	ldr	r3, [r4, #2556]
12330	str	r7, [fp, #-56]
12331	add	r3, r3, r2
12332	str	r7, [fp, #-84]
12333	str	r3, [r4, #2556]
12334	str	r7, [fp, #-80]
12335.L1665:
12336	ldr	r3, [fp, #-68]
12337	cmp	r3, #0
12338	bne	.L1683
12339	ldr	r3, .L1703
12340	movw	r2, #3206
12341	ldrh	r2, [r3, r2]
12342	cmp	r2, #0
12343	bne	.L1684
12344	ldrh	r3, [r3, #224]
12345	cmp	r3, #31
12346	bhi	.L1662
12347.L1684:
12348	mov	r1, #1
12349	mov	r0, #0
12350	bl	rk_ftl_garbage_collect
12351	b	.L1662
12352.L1683:
12353	sub	r1, fp, #52
12354	mov	r0, r9
12355	mov	r2, #0
12356	bl	log2phys
12357	ldr	r3, [fp, #-52]
12358	cmn	r3, #1
12359	bne	.L1700
12360	ldr	r3, .L1703+8
12361	mov	r10, #0
12362	b	.L1666
12363.L1669:
12364	mla	r0, r9, r0, r10
12365	ldr	r1, [fp, #-64]
12366	cmp	r5, r0
12367	movls	r2, #1
12368	movhi	r2, #0
12369	cmp	r1, r0
12370	movls	r2, #0
12371	cmp	r2, #0
12372	beq	.L1668
12373	sub	r0, r0, r5
12374	mov	r2, #512
12375	mov	r1, #0
12376	add	r0, r8, r0, lsl #9
12377	bl	ftl_memset
12378	ldr	r3, .L1703+8
12379.L1668:
12380	add	r10, r10, #1
12381.L1666:
12382	ldrh	r0, [r3]
12383	cmp	r0, r10
12384	bhi	.L1669
12385.L1670:
12386	ldr	r3, [fp, #-68]
12387	add	r9, r9, #1
12388	subs	r3, r3, #1
12389	str	r3, [fp, #-68]
12390	beq	.L1675
12391	ldrh	r3, [r4, #232]
12392	cmp	r7, r3, lsl #2
12393	bne	.L1665
12394.L1675:
12395	cmp	r7, #0
12396	beq	.L1665
12397	ldr	r0, [r4, #3288]
12398	mov	r1, r7
12399	mov	r2, #0
12400	mov	r10, #0
12401	bl	FlashReadPages
12402	ldr	r3, [fp, #-56]
12403	lsl	r3, r3, #9
12404	str	r3, [fp, #-96]
12405	ldr	r3, [fp, #-80]
12406	lsl	r3, r3, #9
12407	str	r3, [fp, #-88]
12408	ldr	r3, [fp, #-84]
12409	lsl	r3, r3, #9
12410	str	r3, [fp, #-92]
12411.L1682:
12412	mov	r3, #20
12413	ldr	r2, [r4, #3288]
12414	ldr	r0, [fp, #-72]
12415	mul	r3, r3, r10
12416	add	r2, r2, r3
12417	ldr	r1, [r2, #16]
12418	cmp	r1, r0
12419	bne	.L1677
12420	ldr	r1, [r2, #8]
12421	ldr	r2, [r4, #3312]
12422	cmp	r1, r2
12423	bne	.L1678
12424	str	r3, [fp, #-100]
12425	mov	r0, r8
12426	ldrd	r2, [fp, #-92]
12427	add	r1, r1, r3
12428.L1702:
12429	bl	ftl_memcpy
12430	ldr	r3, [fp, #-100]
12431.L1678:
12432	ldr	r1, [r4, #3288]
12433	add	r2, r1, r3
12434	ldr	r0, [r2, #12]
12435	ldr	ip, [r2, #16]
12436	ldr	r0, [r0, #8]
12437	cmp	ip, r0
12438	ldrne	r0, [r4, #2712]
12439	addne	r0, r0, #1
12440	strne	r0, [r4, #2712]
12441	ldr	ip, [r1, r3]
12442	cmn	ip, #1
12443	moveq	r6, ip
12444	ldreq	r0, [r4, #2712]
12445	addeq	r0, r0, #1
12446	streq	r0, [r4, #2712]
12447	ldr	r3, [r1, r3]
12448	cmp	r3, #256
12449	bne	.L1681
12450	ldr	r0, [r2, #4]
12451	ubfx	r0, r0, #10, #16
12452	bl	P2V_block_in_plane
12453	bl	FtlGcRefreshBlock
12454.L1681:
12455	add	r10, r10, #1
12456	cmp	r7, r10
12457	bne	.L1682
12458	mov	r7, #0
12459	b	.L1665
12460.L1700:
12461	ldr	r10, [r4, #3288]
12462	mov	r2, #20
12463	mla	r10, r2, r7, r10
12464	str	r3, [r10, #4]
12465	ldr	r3, [fp, #-72]
12466	cmp	r9, r3
12467	ldr	r3, .L1703+8
12468	bne	.L1671
12469	ldrh	r3, [r3]
12470	mov	r0, r5
12471	ldr	r2, [r4, #3312]
12472	mov	r1, r3
12473	str	r2, [r10, #8]
12474	str	r3, [fp, #-84]
12475	bl	__aeabi_uidivmod
12476	ldr	r3, [fp, #-84]
12477	str	r1, [fp, #-80]
12478	sub	r2, r3, r1
12479	ldr	r1, [fp, #-60]
12480	cmp	r1, r2
12481	movcc	r2, r1
12482	str	r2, [fp, #-84]
12483	cmp	r3, r2
12484	streq	r8, [r10, #8]
12485.L1672:
12486	ldr	r3, .L1703+12
12487	ldr	r2, [r4, #3336]
12488	str	r9, [r10, #16]
12489	ldrh	r3, [r3]
12490	mul	r3, r7, r3
12491	add	r7, r7, #1
12492	bic	r3, r3, #3
12493	add	r3, r2, r3
12494	str	r3, [r10, #12]
12495	b	.L1670
12496.L1671:
12497	ldrh	r2, [r3]
12498	ldr	r1, [fp, #-76]
12499	cmp	r9, r1
12500	mul	r3, r2, r9
12501	bne	.L1673
12502	ldr	r1, [fp, #-64]
12503	sub	r1, r1, r3
12504	str	r1, [fp, #-56]
12505	cmp	r1, r2
12506	ldrne	r3, [r4, #3316]
12507	bne	.L1701
12508.L1673:
12509	sub	r3, r3, r5
12510	add	r3, r8, r3, lsl #9
12511.L1701:
12512	str	r3, [r10, #8]
12513	b	.L1672
12514.L1677:
12515	ldr	r0, [fp, #-76]
12516	cmp	r1, r0
12517	bne	.L1678
12518	ldr	r1, [r2, #8]
12519	ldr	r2, [r4, #3316]
12520	cmp	r1, r2
12521	bne	.L1678
12522	ldr	r2, .L1703+8
12523	str	r3, [fp, #-100]
12524	ldr	r3, [fp, #-76]
12525	ldrh	r0, [r2]
12526	ldr	r2, [fp, #-96]
12527	mul	r0, r3, r0
12528	sub	r0, r0, r5
12529	add	r0, r8, r0, lsl #9
12530	b	.L1702
12531.L1687:
12532	mvn	r6, #0
12533	b	.L1662
12534.L1685:
12535	mov	r0, r6
12536	sub	sp, fp, #40
12537	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
12538.L1704:
12539	.align	2
12540.L1703:
12541	.word	.LANCHOR0
12542	.word	.LANCHOR2
12543	.word	.LANCHOR0+258
12544	.word	.LANCHOR0+312
12545	.size	FtlRead, .-FtlRead
12546	.align	2
12547	.global	sftl_read
12548	.syntax unified
12549	.arm
12550	.fpu softvfp
12551	.type	sftl_read, %function
12552sftl_read:
12553	@ args = 0, pretend = 0, frame = 0
12554	@ frame_needed = 1, uses_anonymous_args = 0
12555	mov	ip, sp
12556	push	{fp, ip, lr, pc}
12557	sub	fp, ip, #4
12558	push	{lr}
12559	bl	__gnu_mcount_nc
12560	mov	r3, r2
12561	mov	r2, r1
12562	mov	r1, r0
12563	mov	r0, #0
12564	bl	FtlRead
12565	ldmfd	sp, {fp, sp, pc}
12566	.size	sftl_read, .-sftl_read
12567	.section	.rodata.str1.1
12568.LC125:
12569	.ascii	"FtlWrite: ecc error:%x %x %x\012\000"
12570.LC126:
12571	.ascii	"FtlWrite: lpa error:%x %x\012\000"
12572	.text
12573	.align	2
12574	.global	FtlWrite
12575	.syntax unified
12576	.arm
12577	.fpu softvfp
12578	.type	FtlWrite, %function
12579FtlWrite:
12580	@ args = 0, pretend = 0, frame = 80
12581	@ frame_needed = 1, uses_anonymous_args = 0
12582	mov	ip, sp
12583	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
12584	sub	fp, ip, #4
12585	sub	sp, sp, #84
12586	push	{lr}
12587	bl	__gnu_mcount_nc
12588	str	r3, [fp, #-92]
12589	mov	r3, sp
12590	bic	r3, r3, #8128
12591	mov	r8, r1
12592	bic	r3, r3, #63
12593	cmp	r0, #16
12594	str	r2, [fp, #-88]
12595	ldr	r3, [r3, #24]
12596	str	r3, [fp, #-48]
12597	bne	.L1707
12598	ldr	r2, [fp, #-92]
12599	add	r0, r8, #256
12600	ldr	r1, [fp, #-88]
12601	bl	FtlVendorPartWrite
12602.L1706:
12603	mov	r3, sp
12604	ldr	r2, [fp, #-48]
12605	bic	r3, r3, #8128
12606	bic	r3, r3, #63
12607	ldr	r3, [r3, #24]
12608	cmp	r2, r3
12609	beq	.L1744
12610	bl	__stack_chk_fail
12611.L1707:
12612	ldr	r4, .L1759
12613	ldr	r2, [fp, #-88]
12614	ldr	r3, [r4, #340]
12615	cmp	r3, r2
12616	cmpcs	r3, r1
12617	bls	.L1746
12618	add	r6, r1, r2
12619	cmp	r3, r6
12620	bcc	.L1746
12621	ldr	r5, .L1759+4
12622	ldr	r0, [r5]
12623	cmn	r0, #1
12624	beq	.L1706
12625	mov	r3, #2048
12626	str	r3, [r4, #3668]
12627	movw	r3, #258
12628	mov	r0, r8
12629	ldrh	r7, [r4, r3]
12630	mov	r1, r7
12631	bl	__aeabi_uidiv
12632	mov	r1, r7
12633	str	r0, [fp, #-84]
12634	sub	r0, r6, #1
12635	bl	__aeabi_uidiv
12636	ldr	r2, [fp, #-84]
12637	str	r0, [fp, #-108]
12638	sub	r3, r0, r2
12639	ldr	r2, [fp, #-88]
12640	str	r3, [fp, #-104]
12641	add	r3, r3, #1
12642	str	r3, [fp, #-80]
12643	ldr	r3, [r4, #2580]
12644	add	r3, r3, r2
12645	ldr	r2, [fp, #-80]
12646	str	r3, [r4, #2580]
12647	ldr	r3, [r4, #2564]
12648	add	r3, r3, r2
12649	str	r3, [r4, #2564]
12650	ldr	r3, [r5, #8]
12651	cmp	r3, #0
12652	addeq	r4, r4, #24
12653	beq	.L1709
12654	ldrh	r3, [r4, #28]
12655	cmp	r3, #0
12656	addne	r4, r4, #24
12657	addeq	r4, r4, #76
12658.L1709:
12659	ldr	r6, [fp, #-84]
12660	ldr	r5, .L1759
12661.L1710:
12662	ldr	r3, [fp, #-80]
12663	cmp	r3, #0
12664	bne	.L1740
12665	mov	r0, r3
12666	ldr	r1, [fp, #-104]
12667	bl	rk_ftl_garbage_collect
12668	ldrh	r3, [r5, #224]
12669	cmp	r3, #5
12670	bls	.L1751
12671.L1743:
12672	mov	r0, #0
12673	b	.L1706
12674.L1740:
12675	ldrb	r2, [r4, #6]	@ zero_extendqisi2
12676	ldrh	r3, [r5, #232]
12677	cmp	r2, r3
12678	bcc	.L1711
12679	ldr	r1, .L1759+8
12680	movw	r2, #1046
12681	ldr	r0, .L1759+12
12682	bl	sftl_printk
12683.L1711:
12684	ldrh	r3, [r4, #4]
12685	cmp	r3, #0
12686	bne	.L1712
12687	ldr	r2, .L1759+16
12688	ldr	r7, .L1759+4
12689	cmp	r4, r2
12690	bne	.L1713
12691	ldrh	r9, [r5, #80]
12692	cmp	r9, #0
12693	bne	.L1714
12694	add	r0, r4, #52
12695	bl	allocate_new_data_superblock
12696	str	r9, [r7, #8]
12697.L1714:
12698	ldr	r0, .L1759+16
12699	bl	allocate_new_data_superblock
12700	ldr	r3, [r7, #8]
12701	cmp	r3, #0
12702	ldrne	r4, .L1759+20
12703	bne	.L1715
12704.L1716:
12705	ldr	r4, .L1759+16
12706.L1715:
12707	ldrh	r3, [r4, #4]
12708	cmp	r3, #0
12709	bne	.L1712
12710	mov	r0, r4
12711	bl	allocate_new_data_superblock
12712.L1712:
12713	ldrh	r3, [r4, #4]
12714	ldr	r1, [fp, #-80]
12715	ldrb	r2, [r4, #7]	@ zero_extendqisi2
12716	cmp	r3, r1
12717	movcs	r3, r1
12718	lsl	r2, r2, #2
12719	cmp	r2, r3
12720	movcc	r3, r2
12721	ldrb	r2, [r4, #6]	@ zero_extendqisi2
12722	str	r3, [fp, #-120]
12723	ldrh	r3, [r5, #232]
12724	cmp	r2, r3
12725	bcc	.L1717
12726	ldr	r1, .L1759+8
12727	movw	r2, #1079
12728	ldr	r0, .L1759+12
12729	bl	sftl_printk
12730.L1717:
12731	mov	r10, #0
12732.L1718:
12733	ldr	r3, [fp, #-120]
12734	cmp	r3, r10
12735	bne	.L1738
12736.L1719:
12737	mov	r3, r4
12738	ldr	r0, [r5, #3296]
12739	mov	r1, r10
12740	mov	r2, #0
12741	bl	FtlProgPages
12742	ldr	r3, [fp, #-80]
12743	cmp	r3, r10
12744	bcs	.L1739
12745	ldr	r1, .L1759+8
12746	movw	r2, #1157
12747	ldr	r0, .L1759+12
12748	bl	sftl_printk
12749.L1739:
12750	ldr	r3, [fp, #-80]
12751	sub	r3, r3, r10
12752	str	r3, [fp, #-80]
12753	b	.L1710
12754.L1713:
12755	str	r3, [r7, #8]
12756	ldrh	r3, [r5, #28]
12757	cmp	r3, #0
12758	bne	.L1716
12759	mov	r0, r4
12760	bl	allocate_new_data_superblock
12761	b	.L1715
12762.L1738:
12763	ldrh	r3, [r4, #4]
12764	cmp	r3, #0
12765	beq	.L1719
12766	sub	r1, fp, #72
12767	mov	r2, #0
12768	mov	r0, r6
12769	bl	log2phys
12770	mov	r0, r4
12771	bl	get_new_active_ppa
12772	mov	r3, #20
12773	mul	r3, r3, r10
12774	str	r3, [fp, #-96]
12775	ldr	r2, [fp, #-96]
12776	ldr	r3, [r5, #3296]
12777	add	r3, r3, r2
12778	ldr	r2, .L1759+24
12779	str	r0, [r3, #4]
12780	ldrh	r2, [r2]
12781	str	r6, [r3, #16]
12782	mul	r1, r10, r2
12783	bic	r1, r1, #3
12784	str	r1, [fp, #-112]
12785	ldr	r0, [fp, #-112]
12786	ldr	r1, [r5, #3336]
12787	str	r1, [fp, #-116]
12788	add	r9, r1, r0
12789	mov	r1, #0
12790	str	r9, [r3, #12]
12791	mov	r0, r9
12792	bl	ftl_memset
12793	ldr	r3, [fp, #-84]
12794	ldr	r2, [fp, #-108]
12795	cmp	r6, r2
12796	cmpne	r6, r3
12797	ldr	r3, .L1759+28
12798	bne	.L1720
12799	ldr	r2, [fp, #-84]
12800	ldrh	r3, [r3]
12801	cmp	r6, r2
12802	bne	.L1721
12803	mov	r1, r3
12804	mov	r0, r8
12805	str	r3, [fp, #-124]
12806	bl	__aeabi_uidivmod
12807	ldr	r3, [fp, #-124]
12808	ldr	r2, [fp, #-88]
12809	sub	r7, r3, r1
12810	str	r1, [fp, #-100]
12811	cmp	r7, r2
12812	movcs	r7, r2
12813.L1722:
12814	ldr	r0, [r5, #3296]
12815	cmp	r3, r7
12816	ldr	r2, [fp, #-96]
12817	add	r0, r0, r2
12818	bne	.L1723
12819	ldr	r2, [fp, #-84]
12820	cmp	r6, r2
12821	mulne	r3, r6, r3
12822	ldrne	r2, [fp, #-92]
12823	ldreq	r3, [fp, #-92]
12824	subne	r3, r3, r8
12825	addne	r3, r2, r3, lsl #9
12826	str	r3, [r0, #8]
12827.L1725:
12828	ldrb	r2, [r4, #6]	@ zero_extendqisi2
12829	ldrh	r3, [r5, #232]
12830	cmp	r2, r3
12831	bcc	.L1735
12832	ldr	r1, .L1759+8
12833	movw	r2, #1148
12834	ldr	r0, .L1759+12
12835	bl	sftl_printk
12836.L1735:
12837	ldr	r2, [fp, #-116]
12838	add	r10, r10, #1
12839	ldr	r1, [fp, #-112]
12840	ldr	r3, .L1759+32
12841	strh	r3, [r2, r1]	@ movhi
12842	str	r6, [r9, #8]
12843	add	r6, r6, #1
12844	ldr	r3, [r5, #2592]
12845	str	r3, [r9, #4]
12846	cmn	r3, #2
12847	add	r2, r3, #1
12848	strne	r2, [r5, #2592]
12849	moveq	r3, #0
12850	streq	r3, [r5, #2592]
12851	ldr	r3, [fp, #-72]
12852	str	r3, [r9, #12]
12853	ldrh	r3, [r4]
12854	strh	r3, [r9, #2]	@ movhi
12855	b	.L1718
12856.L1721:
12857	ldr	r2, [fp, #-88]
12858	add	r7, r8, r2
12859	smulbb	r2, r6, r3
12860	sub	r7, r7, r2
12861	mov	r2, #0
12862	str	r2, [fp, #-100]
12863	uxth	r7, r7
12864	b	.L1722
12865.L1723:
12866	ldr	r3, [fp, #-84]
12867	cmp	r6, r3
12868	ldreq	r3, [r5, #3312]
12869	ldrne	r3, [r5, #3316]
12870	str	r3, [r0, #8]
12871	ldr	r3, [fp, #-72]
12872	cmn	r3, #1
12873	beq	.L1728
12874	str	r6, [fp, #-52]
12875	mov	r2, #0
12876	str	r3, [fp, #-64]
12877	mov	r1, #1
12878	ldr	r3, [r0, #8]
12879	str	r3, [fp, #-60]
12880	ldr	r3, [r0, #12]
12881	sub	r0, fp, #68
12882	str	r3, [fp, #-56]
12883	bl	FlashReadPages
12884	ldr	r3, [fp, #-68]
12885	cmn	r3, #1
12886	bne	.L1729
12887	ldr	r2, [r5, #2712]
12888	ldr	r0, .L1759+36
12889	add	r2, r2, #1
12890	str	r2, [r5, #2712]
12891	mov	r2, r6
12892	ldr	r1, [r9, #8]
12893	bl	sftl_printk
12894.L1733:
12895	ldr	r3, [fp, #-84]
12896	lsl	r2, r7, #9
12897	cmp	r6, r3
12898	bne	.L1734
12899	ldr	r1, [fp, #-96]
12900	ldr	r3, [r5, #3296]
12901	add	r3, r3, r1
12902	ldr	r1, [fp, #-92]
12903	ldr	r0, [r3, #8]
12904	ldr	r3, [fp, #-100]
12905	add	r0, r0, r3, lsl #9
12906.L1758:
12907	bl	ftl_memcpy
12908	b	.L1725
12909.L1729:
12910	ldr	r3, [r9, #8]
12911	cmp	r3, r6
12912	beq	.L1733
12913	ldr	r3, [r5, #2712]
12914	mov	r2, r6
12915	ldr	r0, .L1759+40
12916	add	r3, r3, #1
12917	str	r3, [r5, #2712]
12918	ldr	r1, [r9, #8]
12919	bl	sftl_printk
12920	ldr	r3, [r9, #8]
12921	cmp	r3, r6
12922	beq	.L1733
12923	ldr	r1, .L1759+8
12924	movw	r2, #1133
12925	ldr	r0, .L1759+12
12926	bl	sftl_printk
12927	b	.L1733
12928.L1728:
12929	ldr	r3, .L1759+44
12930	mov	r1, #0
12931	ldr	r0, [r0, #8]
12932	ldrh	r2, [r3]
12933	bl	ftl_memset
12934	b	.L1733
12935.L1734:
12936	ldr	r3, .L1759+28
12937	ldr	r0, [fp, #-96]
12938	ldrh	r1, [r3]
12939	ldr	r3, [r5, #3296]
12940	add	r3, r3, r0
12941	ldr	r0, [fp, #-92]
12942	mul	r1, r6, r1
12943	sub	r1, r1, r8
12944	add	r1, r0, r1, lsl #9
12945	ldr	r0, [r3, #8]
12946	b	.L1758
12947.L1720:
12948	ldrh	r3, [r3]
12949	ldr	r1, [fp, #-96]
12950	ldr	r2, [r5, #3296]
12951	mul	r3, r6, r3
12952	add	r2, r2, r1
12953	ldr	r1, [fp, #-92]
12954	sub	r3, r3, r8
12955	add	r3, r1, r3, lsl #9
12956	str	r3, [r2, #8]
12957	b	.L1725
12958.L1751:
12959	ldr	r6, .L1759+48
12960	mov	r4, #256
12961.L1741:
12962	ldrh	r2, [r5, #222]
12963	ldrh	r3, [r5, #172]
12964	and	r3, r3, r2
12965	movw	r2, #65535
12966	cmp	r3, r2
12967	bne	.L1742
12968	mov	r0, #0
12969	bl	List_get_gc_head_node
12970	uxth	r0, r0
12971	bl	FtlGcRefreshBlock
12972.L1742:
12973	ldr	r2, .L1759+52
12974	mov	r1, #1
12975	mov	r0, r1
12976	mov	r3, #128
12977	strh	r3, [r6]	@ movhi
12978	strh	r3, [r2]	@ movhi
12979	bl	rk_ftl_garbage_collect
12980	mov	r1, #1
12981	mov	r0, #0
12982	bl	rk_ftl_garbage_collect
12983	ldrh	r3, [r5, #224]
12984	cmp	r3, #2
12985	bhi	.L1743
12986	subs	r4, r4, #1
12987	bne	.L1741
12988	b	.L1743
12989.L1746:
12990	mvn	r0, #0
12991	b	.L1706
12992.L1744:
12993	sub	sp, fp, #40
12994	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
12995.L1760:
12996	.align	2
12997.L1759:
12998	.word	.LANCHOR0
12999	.word	.LANCHOR2
13000	.word	.LANCHOR1+591
13001	.word	.LC8
13002	.word	.LANCHOR0+24
13003	.word	.LANCHOR0+76
13004	.word	.LANCHOR0+312
13005	.word	.LANCHOR0+258
13006	.word	-3947
13007	.word	.LC125
13008	.word	.LC126
13009	.word	.LANCHOR0+310
13010	.word	.LANCHOR0+3154
13011	.word	.LANCHOR0+3152
13012	.size	FtlWrite, .-FtlWrite
13013	.align	2
13014	.global	sftl_gc
13015	.syntax unified
13016	.arm
13017	.fpu softvfp
13018	.type	sftl_gc, %function
13019sftl_gc:
13020	@ args = 0, pretend = 0, frame = 0
13021	@ frame_needed = 1, uses_anonymous_args = 0
13022	mov	ip, sp
13023	push	{fp, ip, lr, pc}
13024	sub	fp, ip, #4
13025	push	{lr}
13026	bl	__gnu_mcount_nc
13027	mov	r1, #1
13028	mov	r0, r1
13029	bl	rk_ftl_garbage_collect
13030	ldmfd	sp, {fp, sp, pc}
13031	.size	sftl_gc, .-sftl_gc
13032	.section	.rodata.str1.1
13033.LC127:
13034	.ascii	"%s hash error this.id =%x page =%x pre_id =%x hash "
13035	.ascii	"=%x hash_r =%x\012\000"
13036	.text
13037	.align	2
13038	.global	FtlLoadSysInfo
13039	.syntax unified
13040	.arm
13041	.fpu softvfp
13042	.type	FtlLoadSysInfo, %function
13043FtlLoadSysInfo:
13044	@ args = 0, pretend = 0, frame = 8
13045	@ frame_needed = 1, uses_anonymous_args = 0
13046	mov	ip, sp
13047	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
13048	sub	fp, ip, #4
13049	sub	sp, sp, #28
13050	push	{lr}
13051	bl	__gnu_mcount_nc
13052	ldr	r4, .L1790
13053	mov	r1, #0
13054	add	r6, r4, #2624
13055	ldrh	r2, [r4, #240]
13056	ldr	r3, [r4, #3300]
13057	str	r3, [r4, #3460]
13058	ldr	r0, [r4, #72]
13059	lsl	r2, r2, #1
13060	ldr	r3, [r4, #3332]
13061	str	r3, [r4, #3464]
13062	bl	ftl_memset
13063	ldrh	r0, [r6]
13064	movw	r3, #65535
13065	cmp	r0, r3
13066	bne	.L1763
13067.L1775:
13068	mvn	r0, #0
13069.L1762:
13070	sub	sp, fp, #40
13071	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
13072.L1763:
13073	mov	r1, #1
13074	ldr	r9, .L1790+4
13075	bl	FtlGetLastWrittenPage
13076	ldr	r10, .L1790+8
13077	ldrsh	r7, [r6]
13078	sxth	r5, r0
13079	add	r3, r5, #1
13080	strh	r3, [r6, #2]	@ movhi
13081.L1765:
13082	cmp	r5, #0
13083	bge	.L1772
13084	ldr	r1, .L1790+12
13085	movw	r2, #1474
13086	ldr	r0, .L1790+16
13087	bl	sftl_printk
13088	b	.L1771
13089.L1772:
13090	orr	r3, r5, r7, lsl #10
13091	mov	r2, #1
13092	str	r3, [r4, #3456]
13093	mov	r1, r2
13094	ldr	r3, [r4, #3300]
13095	mov	r0, r9
13096	str	r3, [r4, #3460]
13097	bl	FlashReadPages
13098	ldr	r3, [r4, #3464]
13099	ldr	r3, [r3, #12]
13100	str	r3, [fp, #-48]
13101	cmp	r3, #0
13102	beq	.L1766
13103	ldr	r2, [r4, #3452]
13104	cmn	r2, #1
13105	beq	.L1767
13106	ldr	r8, .L1790+20
13107	ldr	r0, [r4, #3460]
13108	ldrh	r1, [r8]
13109	bl	js_hash
13110	ldr	r3, [fp, #-48]
13111	cmp	r3, r0
13112	beq	.L1768
13113	str	r0, [sp, #8]
13114	mov	r2, r7
13115	str	r3, [sp, #4]
13116	ldr	r1, .L1790+12
13117	ldrh	r3, [r6, #4]
13118	str	r3, [sp]
13119	mov	r3, r5
13120	ldr	r0, .L1790+24
13121	bl	sftl_printk
13122	cmp	r5, #0
13123	bne	.L1769
13124	ldrh	r3, [r6, #4]
13125	cmp	r7, r3
13126	sxthne	r7, r3
13127	ldrhne	r5, [r8, #-6]
13128	bne	.L1767
13129.L1769:
13130	mvn	r3, #0
13131	str	r3, [r4, #3452]
13132.L1767:
13133	sub	r5, r5, #1
13134	sxth	r5, r5
13135	b	.L1765
13136.L1766:
13137	ldr	r3, [r4, #3452]
13138	cmn	r3, #1
13139	beq	.L1767
13140.L1768:
13141	ldr	r3, [r4, #3300]
13142	ldr	r3, [r3]
13143	cmp	r3, r10
13144	bne	.L1767
13145	ldr	r3, [r4, #3332]
13146	ldrh	r2, [r3]
13147	movw	r3, #61604
13148	cmp	r2, r3
13149	bne	.L1767
13150.L1771:
13151	movw	r2, #310
13152	ldrh	r3, [r4, #240]
13153	ldrh	r2, [r4, r2]
13154	add	r3, r3, #24
13155	cmp	r2, r3, lsl #1
13156	bcs	.L1774
13157	ldr	r1, .L1790+12
13158	movw	r2, #1476
13159	ldr	r0, .L1790+16
13160	bl	sftl_printk
13161.L1774:
13162	ldr	r5, .L1790+28
13163	mov	r2, #48
13164	ldr	r1, [r4, #3460]
13165	mov	r0, r5
13166	bl	ftl_memcpy
13167	ldrh	r2, [r4, #240]
13168	ldr	r1, [r4, #3460]
13169	ldr	r0, [r4, #72]
13170	lsl	r2, r2, #1
13171	add	r1, r1, #48
13172	bl	ftl_memcpy
13173	ldr	r2, [r4, #2468]
13174	ldr	r3, .L1790+8
13175	cmp	r2, r3
13176	bne	.L1775
13177	ldrb	r2, [r4, #2478]	@ zero_extendqisi2
13178	ldrh	r3, [r4, #254]
13179	ldrh	r7, [r5, #8]
13180	cmp	r2, r3
13181	strh	r7, [r6, #6]	@ movhi
13182	bne	.L1775
13183	movw	r3, #302
13184	movw	r2, #258
13185	ldr	r6, [r4, #244]
13186	ldrh	r3, [r4, r3]
13187	ldrh	r2, [r4, r2]
13188	ldrh	r1, [r4, #232]
13189	str	r7, [r4, #3672]
13190	mul	r3, r7, r3
13191	str	r3, [r4, #2552]
13192	mul	r3, r3, r2
13193	str	r3, [r4, #340]
13194	ldr	r3, .L1790+32
13195	ldrh	r0, [r3, #6]
13196	add	r0, r0, r7
13197	sub	r0, r6, r0
13198	bl	__aeabi_uidiv
13199	movw	r3, #2620
13200	cmp	r7, r6
13201	strh	r0, [r4, r3]	@ movhi
13202	bls	.L1776
13203	ldr	r1, .L1790+12
13204	movw	r2, #1498
13205	ldr	r0, .L1790+16
13206	bl	sftl_printk
13207.L1776:
13208	ldrh	r3, [r5, #16]
13209	ldrh	r1, [r5, #14]
13210	strh	r1, [r4, #24]	@ movhi
13211	lsr	r2, r3, #6
13212	strh	r2, [r4, #26]	@ movhi
13213	ldrh	r2, [r5, #18]
13214	and	r3, r3, #63
13215	strh	r2, [r4, #76]	@ movhi
13216	ldrh	r2, [r5, #20]
13217	strb	r3, [r4, #30]
13218	ldrb	r3, [r4, #2479]	@ zero_extendqisi2
13219	lsr	r0, r2, #6
13220	and	r2, r2, #63
13221	strb	r2, [r4, #82]
13222	ldrb	r2, [r4, #2480]	@ zero_extendqisi2
13223	strb	r2, [r4, #84]
13224	ldrh	r2, [r5, #22]
13225	strh	r2, [r4, #124]	@ movhi
13226	ldrh	r2, [r5, #24]
13227	strh	r0, [r4, #78]	@ movhi
13228	strb	r3, [r4, #32]
13229	movw	r3, #65535
13230	lsr	r0, r2, #6
13231	and	r2, r2, #63
13232	strb	r2, [r4, #130]
13233	ldrb	r2, [r4, #2481]	@ zero_extendqisi2
13234	strb	r2, [r4, #132]
13235	ldr	r2, [r4, #2500]
13236	str	r3, [r4, #172]
13237	mov	r3, #0
13238	str	r2, [r4, #2596]
13239	strb	r3, [r4, #178]
13240	strb	r3, [r4, #180]
13241	str	r3, [r4, #2576]
13242	str	r3, [r4, #2564]
13243	str	r3, [r4, #2556]
13244	str	r3, [r4, #2572]
13245	str	r3, [r4, #2600]
13246	str	r3, [r4, #2612]
13247	strh	r0, [r4, #126]	@ movhi
13248	str	r3, [r4, #2568]
13249	ldr	r3, [r4, #2508]
13250	ldr	r2, [r4, #2588]
13251	cmp	r3, r2
13252	ldr	r2, [r4, #2592]
13253	strhi	r3, [r4, #2588]
13254	ldr	r3, [r4, #2504]
13255	cmp	r3, r2
13256	strhi	r3, [r4, #2592]
13257	movw	r3, #65535
13258	cmp	r1, r3
13259	beq	.L1779
13260	ldr	r0, .L1790+36
13261	bl	make_superblock
13262.L1779:
13263	ldrh	r2, [r4, #76]
13264	movw	r3, #65535
13265	cmp	r2, r3
13266	beq	.L1780
13267	ldr	r0, .L1790+40
13268	bl	make_superblock
13269.L1780:
13270	ldrh	r2, [r4, #124]
13271	movw	r3, #65535
13272	cmp	r2, r3
13273	beq	.L1781
13274	ldr	r0, .L1790+44
13275	bl	make_superblock
13276.L1781:
13277	ldrh	r2, [r4, #172]
13278	movw	r3, #65535
13279	cmp	r2, r3
13280	beq	.L1782
13281	ldr	r0, .L1790+48
13282	bl	make_superblock
13283.L1782:
13284	mov	r0, #0
13285	b	.L1762
13286.L1791:
13287	.align	2
13288.L1790:
13289	.word	.LANCHOR0
13290	.word	.LANCHOR0+3452
13291	.word	1179929683
13292	.word	.LANCHOR1+600
13293	.word	.LC8
13294	.word	.LANCHOR0+310
13295	.word	.LC127
13296	.word	.LANCHOR0+2468
13297	.word	.LANCHOR0+352
13298	.word	.LANCHOR0+24
13299	.word	.LANCHOR0+76
13300	.word	.LANCHOR0+124
13301	.word	.LANCHOR0+172
13302	.size	FtlLoadSysInfo, .-FtlLoadSysInfo
13303	.section	.rodata.str1.1
13304.LC128:
13305	.ascii	"%s last blk_id =%x page =%x hash error hash =%x has"
13306	.ascii	"h_r =%x\012\000"
13307.LC129:
13308	.ascii	"%s scan blk_id =%x page =%x hash error hash =%x has"
13309	.ascii	"h_r =%x\012\000"
13310	.text
13311	.align	2
13312	.global	FtlMapTblRecovery
13313	.syntax unified
13314	.arm
13315	.fpu softvfp
13316	.type	FtlMapTblRecovery, %function
13317FtlMapTblRecovery:
13318	@ args = 0, pretend = 0, frame = 32
13319	@ frame_needed = 1, uses_anonymous_args = 0
13320	mov	ip, sp
13321	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
13322	sub	fp, ip, #4
13323	sub	sp, sp, #44
13324	push	{lr}
13325	bl	__gnu_mcount_nc
13326	ldr	r3, [r0, #12]
13327	mov	r4, r0
13328	str	r3, [fp, #-56]
13329	mov	r1, #0
13330	ldr	r3, [r0, #16]
13331	mov	r6, #0
13332	str	r3, [fp, #-64]
13333	ldrh	r3, [r0, #6]
13334	str	r3, [fp, #-48]
13335	ldrh	r3, [r0, #8]
13336	ldr	r5, .L1831
13337	str	r3, [fp, #-60]
13338	ldr	r3, [fp, #-48]
13339	ldr	r9, [r0, #24]
13340	lsl	r2, r3, #2
13341	mov	r0, r9
13342	bl	ftl_memset
13343	ldr	r3, [r5, #3300]
13344	ldr	r8, [r5, #3332]
13345	str	r3, [r5, #3460]
13346	mvn	r3, #0
13347	str	r8, [r5, #3464]
13348	str	r6, [r4, #32]
13349	str	r3, [r4]
13350	mov	r3, #1
13351	str	r6, [r4, #28]
13352	str	r3, [r4, #36]
13353.L1793:
13354	ldr	r3, [fp, #-60]
13355	sxth	r7, r6
13356	uxth	r10, r6
13357	cmp	r7, r3
13358	bge	.L1813
13359	ldr	r2, [fp, #-56]
13360	lsl	r3, r7, #1
13361	add	r2, r2, r7, lsl #1
13362	str	r2, [fp, #-52]
13363	ldr	r2, [fp, #-60]
13364	sub	r2, r2, #1
13365	cmp	r2, r7
13366	bne	.L1794
13367	ldr	r3, [fp, #-52]
13368	mov	r1, #1
13369	ldr	r5, .L1831
13370	ldrh	r0, [r3]
13371	bl	FtlGetLastWrittenPage
13372	sxth	r3, r0
13373	str	r3, [fp, #-56]
13374	add	r3, r3, #1
13375	strh	r3, [r4, #2]	@ movhi
13376	ldr	r3, [fp, #-64]
13377	strh	r10, [r4]	@ movhi
13378	mov	r10, #0
13379	ldr	r3, [r3, r7, lsl #2]
13380	str	r3, [r4, #28]
13381.L1795:
13382	ldr	r3, [fp, #-56]
13383	sxth	r6, r10
13384	add	r2, r3, #1
13385	cmp	r6, r2
13386	blt	.L1799
13387.L1813:
13388	mov	r0, r4
13389	bl	ftl_free_no_use_map_blk
13390	ldr	r3, .L1831+4
13391	ldrh	r2, [r4, #2]
13392	ldrh	r3, [r3]
13393	cmp	r2, r3
13394	bne	.L1801
13395	mov	r0, r4
13396	bl	ftl_map_blk_alloc_new_blk
13397.L1801:
13398	mov	r0, r4
13399	bl	ftl_map_blk_gc
13400	mov	r0, r4
13401	bl	ftl_map_blk_gc
13402	mov	r0, #0
13403	sub	sp, fp, #40
13404	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
13405.L1799:
13406	ldr	r3, [fp, #-52]
13407	ldr	r0, .L1831+8
13408	ldrh	r2, [r3]
13409	orr	r2, r6, r2, lsl #10
13410	str	r2, [r5, #3456]
13411	mov	r2, #1
13412	mov	r1, r2
13413	bl	FlashReadPages
13414	ldr	r2, [r5, #3464]
13415	ldr	r2, [r2, #12]
13416	str	r2, [fp, #-60]
13417	cmp	r2, #0
13418	beq	.L1796
13419	ldr	r1, [r5, #3452]
13420	cmn	r1, #1
13421	beq	.L1814
13422	ldr	r1, .L1831+12
13423	ldr	r0, [r5, #3460]
13424	ldrh	r1, [r1]
13425	bl	js_hash
13426	ldr	r2, [fp, #-60]
13427	cmp	r2, r0
13428	beq	.L1798
13429	mov	r3, r6
13430	str	r0, [sp, #4]
13431	str	r2, [sp]
13432	mov	r2, r7
13433	ldr	r1, .L1831+16
13434	ldr	r0, .L1831+20
13435	bl	sftl_printk
13436	mvn	r3, #0
13437	str	r3, [r5, #3452]
13438.L1814:
13439	add	r10, r10, #1
13440	b	.L1795
13441.L1796:
13442	ldr	r3, [r5, #3452]
13443	cmn	r3, #1
13444	beq	.L1814
13445.L1798:
13446	ldrh	r3, [r8, #8]
13447	ldr	r2, [fp, #-48]
13448	cmp	r3, r2
13449	bcs	.L1814
13450	ldrh	r2, [r4, #4]
13451	ldrh	r1, [r8]
13452	cmp	r1, r2
13453	ldreq	r2, [r5, #3456]
13454	streq	r2, [r9, r3, lsl #2]
13455	b	.L1814
13456.L1794:
13457	ldr	r2, [r5, #3300]
13458	str	r2, [r5, #3460]
13459	ldr	r2, [fp, #-56]
13460	ldr	r0, .L1831+8
13461	ldrh	r2, [r2, r3]
13462	ldr	r3, .L1831+4
13463	ldrh	r3, [r3]
13464	sub	r3, r3, #1
13465	orr	r3, r3, r2, lsl #10
13466	mov	r2, #1
13467	mov	r1, r2
13468	str	r3, [r5, #3456]
13469	bl	FlashReadPages
13470	ldr	r3, [r5, #3452]
13471	cmn	r3, #1
13472	beq	.L1817
13473	ldrh	r2, [r8]
13474	ldrh	r3, [r4, #4]
13475	cmp	r2, r3
13476	bne	.L1817
13477	ldrh	r2, [r8, #8]
13478	movw	r3, #64245
13479	cmp	r2, r3
13480	beq	.L1818
13481.L1817:
13482	mov	r10, #0
13483	b	.L1809
13484.L1805:
13485	ldr	r2, [r5, #3300]
13486	lsl	lr, ip, #3
13487	ldr	r7, [fp, #-48]
13488	add	r1, r1, #1
13489	ldr	r3, [r2, ip, lsl #3]
13490	uxth	ip, r3
13491	cmp	r7, ip
13492	addhi	r2, r2, lr
13493	movhi	r3, ip
13494	ldrhi	r2, [r2, #4]
13495	strhi	r2, [r9, r3, lsl #2]
13496.L1803:
13497	ldrh	r3, [r0]
13498	sxth	ip, r1
13499	sub	r3, r3, #1
13500	cmp	ip, r3
13501	blt	.L1805
13502.L1811:
13503	add	r6, r6, #1
13504	b	.L1793
13505.L1818:
13506	ldr	r0, .L1831+4
13507	mov	r1, #0
13508	b	.L1803
13509.L1810:
13510	ldr	r2, [fp, #-52]
13511	ldr	r0, .L1831+8
13512	str	r3, [fp, #-72]
13513	ldrh	r2, [r2]
13514	orr	r2, r3, r2, lsl #10
13515	str	r2, [r5, #3456]
13516	mov	r2, #1
13517	mov	r1, r2
13518	bl	FlashReadPages
13519	ldr	r2, [r5, #3464]
13520	ldr	r2, [r2, #12]
13521	str	r2, [fp, #-68]
13522	cmp	r2, #0
13523	beq	.L1806
13524	ldr	r1, [r5, #3452]
13525	cmn	r1, #1
13526	beq	.L1815
13527	ldr	r1, .L1831+12
13528	ldr	r0, [r5, #3460]
13529	ldrh	r1, [r1]
13530	bl	js_hash
13531	ldr	r2, [fp, #-68]
13532	cmp	r2, r0
13533	beq	.L1808
13534	ldr	r3, [fp, #-72]
13535	str	r0, [sp, #4]
13536	str	r2, [sp]
13537	mov	r2, r7
13538	ldr	r1, .L1831+16
13539	ldr	r0, .L1831+24
13540	bl	sftl_printk
13541	mvn	r3, #0
13542	str	r3, [r5, #3452]
13543.L1815:
13544	add	r10, r10, #1
13545.L1809:
13546	ldr	r2, .L1831+4
13547	sxth	r3, r10
13548	ldrh	r2, [r2]
13549	cmp	r3, r2
13550	blt	.L1810
13551	b	.L1811
13552.L1806:
13553	ldr	r3, [r5, #3452]
13554	cmn	r3, #1
13555	beq	.L1815
13556.L1808:
13557	ldrh	r3, [r8, #8]
13558	ldr	r2, [fp, #-48]
13559	cmp	r3, r2
13560	bcs	.L1815
13561	ldrh	r2, [r4, #4]
13562	ldrh	r1, [r8]
13563	cmp	r1, r2
13564	ldreq	r2, [r5, #3456]
13565	streq	r2, [r9, r3, lsl #2]
13566	b	.L1815
13567.L1832:
13568	.align	2
13569.L1831:
13570	.word	.LANCHOR0
13571	.word	.LANCHOR0+304
13572	.word	.LANCHOR0+3452
13573	.word	.LANCHOR0+310
13574	.word	.LANCHOR1+615
13575	.word	.LC128
13576	.word	.LC129
13577	.size	FtlMapTblRecovery, .-FtlMapTblRecovery
13578	.align	2
13579	.global	FtlLoadVonderInfo
13580	.syntax unified
13581	.arm
13582	.fpu softvfp
13583	.type	FtlLoadVonderInfo, %function
13584FtlLoadVonderInfo:
13585	@ args = 0, pretend = 0, frame = 0
13586	@ frame_needed = 1, uses_anonymous_args = 0
13587	mov	ip, sp
13588	push	{fp, ip, lr, pc}
13589	sub	fp, ip, #4
13590	push	{lr}
13591	bl	__gnu_mcount_nc
13592	ldr	r3, .L1834
13593	add	r0, r3, #3600
13594	add	r2, r3, #320
13595	add	r0, r0, #8
13596	ldrh	r2, [r2]
13597	strh	r2, [r0, #10]	@ movhi
13598	ldr	r2, .L1834+4
13599	strh	r2, [r0, #4]	@ movhi
13600	add	r2, r3, #344
13601	ldrh	r2, [r2]
13602	strh	r2, [r0, #8]	@ movhi
13603	movw	r2, #322
13604	ldrh	r2, [r3, r2]
13605	strh	r2, [r0, #6]	@ movhi
13606	ldr	r2, [r3, #348]
13607	str	r2, [r3, #3620]
13608	ldr	r2, [r3, #3368]
13609	str	r2, [r3, #3624]
13610	ldr	r2, [r3, #3364]
13611	str	r2, [r3, #3628]
13612	ldr	r2, [r3, #3372]
13613	str	r2, [r3, #3632]
13614	bl	FtlMapTblRecovery
13615	mov	r0, #0
13616	ldmfd	sp, {fp, sp, pc}
13617.L1835:
13618	.align	2
13619.L1834:
13620	.word	.LANCHOR0
13621	.word	-3962
13622	.size	FtlLoadVonderInfo, .-FtlLoadVonderInfo
13623	.align	2
13624	.global	FtlLoadMapInfo
13625	.syntax unified
13626	.arm
13627	.fpu softvfp
13628	.type	FtlLoadMapInfo, %function
13629FtlLoadMapInfo:
13630	@ args = 0, pretend = 0, frame = 0
13631	@ frame_needed = 1, uses_anonymous_args = 0
13632	mov	ip, sp
13633	push	{fp, ip, lr, pc}
13634	sub	fp, ip, #4
13635	push	{lr}
13636	bl	__gnu_mcount_nc
13637	bl	FtlL2PDataInit
13638	ldr	r0, .L1837
13639	bl	FtlMapTblRecovery
13640	mov	r0, #0
13641	ldmfd	sp, {fp, sp, pc}
13642.L1838:
13643	.align	2
13644.L1837:
13645	.word	.LANCHOR0+3392
13646	.size	FtlLoadMapInfo, .-FtlLoadMapInfo
13647	.align	2
13648	.global	FtlSysBlkInit
13649	.syntax unified
13650	.arm
13651	.fpu softvfp
13652	.type	FtlSysBlkInit, %function
13653FtlSysBlkInit:
13654	@ args = 0, pretend = 0, frame = 0
13655	@ frame_needed = 1, uses_anonymous_args = 0
13656	mov	ip, sp
13657	push	{r4, r5, r6, r7, fp, ip, lr, pc}
13658	sub	fp, ip, #4
13659	push	{lr}
13660	bl	__gnu_mcount_nc
13661	ldr	r4, .L1855
13662	mov	r3, #0
13663	add	r7, r4, #3472
13664	ldrh	r0, [r4, #236]
13665	strh	r3, [r7]	@ movhi
13666	bl	FtlFreeSysBlkQueueInit
13667	bl	FtlScanSysBlk
13668	add	r3, r4, #2624
13669	ldrh	r2, [r3]
13670	movw	r3, #65535
13671	cmp	r2, r3
13672	bne	.L1840
13673.L1842:
13674	mvn	r5, #0
13675.L1839:
13676	mov	r0, r5
13677	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
13678.L1840:
13679	bl	FtlLoadSysInfo
13680	subs	r5, r0, #0
13681	bne	.L1842
13682	bl	FtlLoadMapInfo
13683	bl	FtlLoadVonderInfo
13684	bl	Ftl_load_ext_data
13685	bl	FtlLoadEctTbl
13686	bl	FtlFreeSysBLkSort
13687	bl	SupperBlkListInit
13688	bl	FtlPowerLostRecovery
13689	mov	r0, #1
13690	bl	FtlUpdateVaildLpn
13691	movw	r3, #338
13692	ldr	r2, [r4, #2540]
13693	mov	r0, #12
13694	ldrh	r1, [r4, r3]
13695	mov	r3, r5
13696	add	r2, r2, #4
13697.L1843:
13698	cmp	r3, r1
13699	bge	.L1848
13700	mul	ip, r0, r3
13701	ldr	ip, [r2, ip]
13702	cmp	ip, #0
13703	bge	.L1844
13704.L1848:
13705	ldr	r6, .L1855+4
13706	cmp	r3, r1
13707	ldrh	r2, [r6, #28]
13708	add	r2, r2, #1
13709	strh	r2, [r6, #28]	@ movhi
13710	bge	.L1854
13711.L1845:
13712	ldr	r0, .L1855+8
13713	bl	FtlSuperblockPowerLostFix
13714	ldr	r0, .L1855+12
13715	bl	FtlSuperblockPowerLostFix
13716	ldrh	r3, [r4, #24]
13717	ldr	r1, [r4, #72]
13718	ldrh	r0, [r4, #28]
13719	lsl	r3, r3, #1
13720	ldrh	r2, [r1, r3]
13721	sub	r2, r2, r0
13722	strh	r2, [r1, r3]	@ movhi
13723	movw	r0, #302
13724	ldrh	r2, [r4, #76]
13725	ldr	ip, [r4, #72]
13726	ldrh	r3, [r4, r0]
13727	lsl	r2, r2, #1
13728	strh	r3, [r4, #26]	@ movhi
13729	mov	r3, #0
13730	strb	r3, [r4, #30]
13731	strh	r3, [r4, #28]	@ movhi
13732	ldrh	lr, [r4, #80]
13733	ldrh	r1, [ip, r2]
13734	sub	r1, r1, lr
13735	strh	r1, [ip, r2]	@ movhi
13736	strb	r3, [r4, #82]
13737	strh	r3, [r4, #80]	@ movhi
13738	ldrh	r3, [r6, #30]
13739	ldrh	r2, [r4, r0]
13740	add	r3, r3, #1
13741	strh	r2, [r4, #78]	@ movhi
13742	strh	r3, [r6, #30]	@ movhi
13743	bl	l2p_flush
13744	bl	FtlVpcTblFlush
13745	bl	FtlVpcTblFlush
13746	b	.L1849
13747.L1844:
13748	add	r3, r3, #1
13749	b	.L1843
13750.L1854:
13751	ldrh	r3, [r7]
13752	cmp	r3, #0
13753	bne	.L1845
13754.L1849:
13755	ldrh	r0, [r4, #24]
13756	movw	r3, #65535
13757	cmp	r0, r3
13758	beq	.L1850
13759	ldrh	r2, [r4, #28]
13760	ldrh	r3, [r4, #80]
13761	orrs	r3, r2, r3
13762	bne	.L1850
13763	bl	FtlGcRefreshBlock
13764	ldrh	r0, [r4, #76]
13765	bl	FtlGcRefreshBlock
13766	bl	FtlVpcTblFlush
13767	ldr	r0, .L1855+8
13768	bl	allocate_new_data_superblock
13769	ldr	r0, .L1855+12
13770	bl	allocate_new_data_superblock
13771.L1850:
13772	bl	FtlVpcCheckAndModify
13773	b	.L1839
13774.L1856:
13775	.align	2
13776.L1855:
13777	.word	.LANCHOR0
13778	.word	.LANCHOR0+2468
13779	.word	.LANCHOR0+24
13780	.word	.LANCHOR0+76
13781	.size	FtlSysBlkInit, .-FtlSysBlkInit
13782	.align	2
13783	.global	ftl_low_format
13784	.syntax unified
13785	.arm
13786	.fpu softvfp
13787	.type	ftl_low_format, %function
13788ftl_low_format:
13789	@ args = 0, pretend = 0, frame = 0
13790	@ frame_needed = 1, uses_anonymous_args = 0
13791	mov	ip, sp
13792	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
13793	sub	fp, ip, #4
13794	push	{lr}
13795	bl	__gnu_mcount_nc
13796	ldr	r4, .L1881
13797	mov	r3, #0
13798	ldrh	r0, [r4, #236]
13799	str	r3, [r4, #2588]
13800	str	r3, [r4, #2592]
13801	str	r3, [r4, #2604]
13802	bl	FtlFreeSysBlkQueueInit
13803	bl	FtlLoadBbt
13804	cmp	r0, #0
13805	beq	.L1858
13806	bl	FtlMakeBbt
13807.L1858:
13808	ldr	r0, .L1881+4
13809	mov	r2, #0
13810	ldr	ip, .L1881+8
13811.L1859:
13812	ldrh	r1, [r0]
13813	uxth	r3, r2
13814	add	r2, r2, #1
13815	cmp	r3, r1, lsl #7
13816	blt	.L1860
13817	ldrh	r6, [r4, #240]
13818	mov	r5, #0
13819.L1861:
13820	ldrh	r3, [r4, #242]
13821	cmp	r3, r6
13822	bhi	.L1862
13823	ldrh	r1, [r4, #232]
13824	sub	r3, r5, #3
13825	cmp	r3, r1, lsl #1
13826	bge	.L1863
13827.L1867:
13828	mov	r5, #0
13829	mov	r6, r5
13830.L1864:
13831	ldrh	r3, [r4, #240]
13832	uxth	r0, r5
13833	cmp	r3, r0
13834	bhi	.L1868
13835	ldrh	r9, [r4, #232]
13836	movw	r8, #2620
13837	ldr	r10, [r4, #244]
13838	ldrh	r3, [r4, #242]
13839	mov	r1, r9
13840	mov	r0, r10
13841	str	r3, [r4, #3284]
13842	bl	__aeabi_uidiv
13843	ubfx	r7, r0, #5, #16
13844	add	r3, r7, #36
13845	strh	r3, [r4, r8]	@ movhi
13846	mov	r3, #24
13847	mov	r5, r0
13848	str	r0, [r4, #2552]
13849	mul	r3, r3, r9
13850	cmp	r6, r3
13851	ble	.L1869
13852	mov	r1, r9
13853	sub	r0, r10, r6
13854	bl	__aeabi_uidiv
13855	lsr	r3, r0, #5
13856	add	r3, r3, #24
13857	str	r0, [r4, #2552]
13858	strh	r3, [r4, r8]	@ movhi
13859.L1869:
13860	movw	r3, #294
13861	ldrh	r3, [r4, r3]
13862	cmp	r3, #0
13863	beq	.L1871
13864	movw	r2, #2620
13865	ldrh	r1, [r4, r2]
13866	add	r1, r1, r3, lsr #1
13867	strh	r1, [r4, r2]	@ movhi
13868	mul	r1, r9, r3
13869	cmp	r6, r1
13870	strlt	r5, [r4, #2552]
13871	addlt	r3, r3, #32
13872	addlt	r3, r7, r3
13873	strhlt	r3, [r4, r2]	@ movhi
13874.L1871:
13875	movw	r3, #2620
13876	ldr	r1, [r4, #2552]
13877	ldr	r6, .L1881+12
13878	mvn	r5, #0
13879	ldrh	r3, [r4, r3]
13880	sub	r1, r1, r3
13881	movw	r3, #302
13882	ldrh	r3, [r4, r3]
13883	mul	r1, r9, r1
13884	str	r1, [r4, #3672]
13885	mul	r1, r1, r3
13886	movw	r3, #258
13887	str	r1, [r4, #2552]
13888	ldrh	r3, [r4, r3]
13889	mul	r1, r1, r3
13890	str	r1, [r4, #340]
13891	bl	FtlBbmTblFlush
13892	ldrh	r2, [r4, #242]
13893	mov	r1, #0
13894	ldr	r0, [r4, #72]
13895	lsl	r2, r2, #1
13896	bl	ftl_memset
13897	mov	r3, #0
13898	movw	r2, #65535
13899	str	r3, [r4, #2548]
13900	strb	r3, [r4, #178]
13901	strb	r3, [r4, #180]
13902	strb	r3, [r4, #30]
13903	str	r3, [r4, #24]
13904	mov	r3, #1
13905	str	r2, [r4, #172]
13906	strb	r3, [r4, #32]
13907.L1873:
13908	mov	r0, r6
13909	bl	make_superblock
13910	ldrb	r3, [r4, #31]	@ zero_extendqisi2
13911	cmp	r3, #0
13912	ldrh	r3, [r4, #24]
13913	bne	.L1874
13914	lsl	r3, r3, #1
13915	ldr	r2, [r4, #72]
13916	strh	r5, [r2, r3]	@ movhi
13917	ldrh	r3, [r4, #24]
13918	add	r3, r3, #1
13919	strh	r3, [r4, #24]	@ movhi
13920	b	.L1873
13921.L1860:
13922	ldr	lr, [r4, #3312]
13923	mvn	r1, r3
13924	orr	r1, r3, r1, lsl #16
13925	str	r1, [lr, r3, lsl #2]
13926	ldr	r1, [r4, #3316]
13927	str	ip, [r1, r3, lsl #2]
13928	b	.L1859
13929.L1862:
13930	mov	r0, r6
13931	mov	r1, #1
13932	add	r6, r6, #1
13933	bl	FtlLowFormatEraseBlock
13934	add	r5, r0, r5
13935	uxth	r6, r6
13936	uxth	r5, r5
13937	b	.L1861
13938.L1863:
13939	mov	r0, r5
13940	bl	__aeabi_uidiv
13941	ldr	r3, [r4, #332]
13942	add	r0, r0, r3
13943	uxth	r0, r0
13944	bl	FtlSysBlkNumInit
13945	ldrh	r0, [r4, #236]
13946	bl	FtlFreeSysBlkQueueInit
13947	ldrh	r5, [r4, #240]
13948.L1865:
13949	ldrh	r3, [r4, #242]
13950	cmp	r3, r5
13951	bls	.L1867
13952	mov	r0, r5
13953	add	r5, r5, #1
13954	mov	r1, #1
13955	uxth	r5, r5
13956	bl	FtlLowFormatEraseBlock
13957	b	.L1865
13958.L1868:
13959	mov	r1, #0
13960	add	r5, r5, #1
13961	bl	FtlLowFormatEraseBlock
13962	add	r6, r0, r6
13963	uxth	r6, r6
13964	b	.L1864
13965.L1874:
13966	ldr	r2, [r4, #2588]
13967	lsl	r3, r3, #1
13968	str	r2, [r4, #36]
13969	mvn	r5, #0
13970	add	r2, r2, #1
13971	str	r2, [r4, #2588]
13972	ldr	r2, [r4, #72]
13973	ldrh	r1, [r4, #28]
13974	ldr	r6, .L1881+16
13975	strh	r1, [r2, r3]	@ movhi
13976	mov	r3, #0
13977	strh	r3, [r4, #78]	@ movhi
13978	strb	r3, [r4, #82]
13979	ldrh	r3, [r4, #24]
13980	add	r3, r3, #1
13981	strh	r3, [r4, #76]	@ movhi
13982	mov	r3, #1
13983	strb	r3, [r4, #84]
13984.L1875:
13985	mov	r0, r6
13986	bl	make_superblock
13987	ldrb	r3, [r4, #83]	@ zero_extendqisi2
13988	cmp	r3, #0
13989	ldrh	r3, [r4, #76]
13990	bne	.L1876
13991	lsl	r3, r3, #1
13992	ldr	r2, [r4, #72]
13993	strh	r5, [r2, r3]	@ movhi
13994	ldrh	r3, [r4, #76]
13995	add	r3, r3, #1
13996	strh	r3, [r4, #76]	@ movhi
13997	b	.L1875
13998.L1876:
13999	ldr	r2, [r4, #2588]
14000	lsl	r3, r3, #1
14001	str	r2, [r4, #88]
14002	mvn	r5, #0
14003	add	r2, r2, #1
14004	str	r2, [r4, #2588]
14005	ldr	r2, [r4, #72]
14006	ldrh	r1, [r4, #80]
14007	strh	r1, [r2, r3]	@ movhi
14008	strh	r5, [r4, #124]	@ movhi
14009	bl	FtlFreeSysBlkQueueOut
14010	ldr	r3, .L1881+20
14011	mov	r2, #0
14012	strh	r2, [r3, #2]	@ movhi
14013	ldr	r2, [r4, #3672]
14014	strh	r2, [r3, #6]	@ movhi
14015	strh	r5, [r3, #4]	@ movhi
14016	strh	r0, [r3]	@ movhi
14017	ldr	r3, [r4, #2588]
14018	str	r3, [r4, #2632]
14019	add	r3, r3, #1
14020	str	r3, [r4, #2588]
14021	bl	FtlVpcTblFlush
14022	bl	FtlSysBlkInit
14023	cmp	r0, #0
14024	mov	r0, #0
14025	moveq	r2, #1
14026	ldreq	r3, .L1881+24
14027	streq	r2, [r3]
14028	ldmfd	sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
14029.L1882:
14030	.align	2
14031.L1881:
14032	.word	.LANCHOR0
14033	.word	.LANCHOR0+258
14034	.word	168778952
14035	.word	.LANCHOR0+24
14036	.word	.LANCHOR0+76
14037	.word	.LANCHOR0+2624
14038	.word	.LANCHOR2
14039	.size	ftl_low_format, .-ftl_low_format
14040	.align	2
14041	.global	sftl_init
14042	.syntax unified
14043	.arm
14044	.fpu softvfp
14045	.type	sftl_init, %function
14046sftl_init:
14047	@ args = 0, pretend = 0, frame = 0
14048	@ frame_needed = 1, uses_anonymous_args = 0
14049	mov	ip, sp
14050	push	{r4, r5, fp, ip, lr, pc}
14051	sub	fp, ip, #4
14052	push	{lr}
14053	bl	__gnu_mcount_nc
14054	ldr	r5, .L1887
14055	mvn	r3, #0
14056	ldr	r4, .L1887+4
14057	ldr	r1, .L1887+8
14058	ldr	r0, .L1887+12
14059	str	r3, [r5]
14060	bl	sftl_printk
14061	mov	r0, r4
14062	bl	FtlConstantsInit
14063	bl	FtlMemInit
14064	bl	FtlVariablesInit
14065	ldrh	r0, [r4, #236]
14066	bl	FtlFreeSysBlkQueueInit
14067	bl	FtlLoadBbt
14068	cmp	r0, #0
14069	bne	.L1884
14070	bl	FtlSysBlkInit
14071	cmp	r0, #0
14072	bne	.L1884
14073	mov	r3, #1
14074	str	r3, [r5]
14075	ldrh	r3, [r4, #224]
14076	cmp	r3, #15
14077	bhi	.L1884
14078	movw	r4, #8129
14079.L1885:
14080	mov	r1, #1
14081	mov	r0, #0
14082	bl	rk_ftl_garbage_collect
14083	subs	r4, r4, #1
14084	bne	.L1885
14085.L1884:
14086	mov	r0, #0
14087	ldmfd	sp, {r4, r5, fp, sp, pc}
14088.L1888:
14089	.align	2
14090.L1887:
14091	.word	.LANCHOR2
14092	.word	.LANCHOR0
14093	.word	.LC0
14094	.word	.LC77
14095	.size	sftl_init, .-sftl_init
14096	.section	.rodata.str1.1
14097.LC130:
14098	.ascii	"write_idblock %x %x\012\000"
14099.LC131:
14100	.ascii	"write_idblock fail! %x %x %x %x\012\000"
14101.LC132:
14102	.ascii	"%s idb buffer alloc fail\012\000"
14103	.text
14104	.align	2
14105	.global	FtlWriteToIDB
14106	.syntax unified
14107	.arm
14108	.fpu softvfp
14109	.type	FtlWriteToIDB, %function
14110FtlWriteToIDB:
14111	@ args = 0, pretend = 0, frame = 104
14112	@ frame_needed = 1, uses_anonymous_args = 0
14113	mov	ip, sp
14114	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
14115	sub	fp, ip, #4
14116	sub	sp, sp, #116
14117	push	{lr}
14118	bl	__gnu_mcount_nc
14119	mov	r3, sp
14120	add	r8, r1, r0
14121	bic	r3, r3, #8128
14122	sub	r9, r8, #1
14123	bic	r3, r3, #63
14124	cmp	r9, #63
14125	ldr	r5, .L1948
14126	mov	r4, r0
14127	movhi	r10, #0
14128	movls	r10, #1
14129	ldr	r3, [r3, #24]
14130	cmp	r0, #576
14131	orrcs	r10, r10, #1
14132	mov	r6, r1
14133	mov	r7, r2
14134	cmp	r10, #0
14135	str	r3, [fp, #-48]
14136	beq	.L1890
14137	ldr	r3, [r5, #3676]
14138	cmp	r3, #0
14139	bne	.L1891
14140.L1947:
14141	mov	r4, #0
14142	b	.L1889
14143.L1891:
14144	ldr	r8, [r5, #3680]
14145	ldr	r3, .L1948+4
14146	ldr	r2, [r8]
14147	cmp	r2, r3
14148	bne	.L1893
14149	ldrh	r1, [r5, #10]
14150	add	r0, r8, #260096
14151	mov	r2, #0
14152	movw	r3, #65023
14153.L1897:
14154	ldr	ip, [r0, #-4]!
14155	cmp	ip, #0
14156	bne	.L1894
14157	ldr	ip, [r8, r2, lsl #2]
14158	add	r2, r2, #1
14159	cmp	r2, #4096
14160	sub	r3, r3, #1
14161	str	ip, [r0, #2048]
14162	movhi	r2, #0
14163	cmp	r3, #4096
14164	bne	.L1897
14165	mov	r3, #512
14166	b	.L1946
14167.L1894:
14168	add	r3, r3, #127
14169	lsr	r3, r3, #7
14170.L1946:
14171	str	r3, [fp, #-120]
14172	lsl	r1, r1, #2
14173	ldr	r3, [fp, #-120]
14174	uxth	r1, r1
14175	add	r0, r3, #4
14176	bl	__aeabi_uidiv
14177	add	r3, r0, #1
14178	mov	r2, r3
14179	ldr	r1, [fp, #-120]
14180	ldr	r0, .L1948+8
14181	str	r3, [fp, #-124]
14182	bl	sftl_printk
14183	ldr	r3, [fp, #-120]
14184	lsl	r3, r3, #7
14185	str	r3, [fp, #-140]
14186	mov	r3, #0
14187	mov	r10, r3
14188	str	r3, [fp, #-128]
14189.L1898:
14190	ldr	r3, [fp, #-124]
14191	add	r3, r3, r10
14192	str	r3, [fp, #-132]
14193	cmp	r3, #8
14194	bls	.L1920
14195	ldr	r3, [fp, #-128]
14196	cmp	r3, #0
14197	bne	.L1919
14198.L1893:
14199	mvn	r3, #0
14200	str	r3, [fp, #-120]
14201	b	.L1919
14202.L1920:
14203	ldr	r4, .L1948
14204	mov	r2, #512
14205	mov	r1, #0
14206	ldr	r0, [r4, #3684]
14207	bl	memset
14208	ldrh	r5, [r4, #10]
14209	mul	r3, r5, r10
14210	str	r3, [fp, #-136]
14211	ldr	r3, [r4, #3260]
14212	cmp	r3, #0
14213	moveq	r6, #6
14214	beq	.L1899
14215	ldr	r3, [r4, #3264]
14216	cmp	r3, #0
14217	moveq	r6, #6
14218	movne	r6, #9
14219.L1899:
14220	mul	r9, r5, r10
14221	ldr	r7, .L1948
14222	mov	r4, #0
14223.L1900:
14224	ldr	r3, [r7, #3248]
14225	mov	r1, r9
14226	mov	r0, #0
14227	add	r4, r4, #1
14228	blx	r3
14229	ldr	r3, [fp, #-124]
14230	add	r9, r9, r5
14231	cmp	r3, r4
14232	bhi	.L1900
14233	cmp	r6, #9
14234	movne	r4, #0
14235	bne	.L1901
14236	ldr	r4, [r7, #3684]
14237	mov	r2, #1024
14238	mov	r1, #0
14239	mov	r0, r4
14240	bl	ftl_memset
14241	ldr	r3, .L1948+12
14242	str	r3, [r4]
14243	mov	r1, #12
14244	str	r1, [r4, #4]
14245	mov	r3, #0
14246	str	r3, [r4, #12]
14247	mov	r3, #1024
14248	strh	r3, [r4, #16]	@ movhi
14249	add	r0, r4, r1
14250	ldrh	r3, [r7, #10]
14251	strh	r3, [r4, #18]	@ movhi
14252	mov	r3, #4096
14253	str	r3, [r4, #20]
14254	bl	js_hash
14255	str	r0, [r4, #8]
14256.L1901:
14257	ldr	r3, [fp, #-124]
14258	mov	r9, r8
14259	ldr	r7, .L1948
14260	mul	r3, r5, r3
14261	mov	r5, #0
14262	str	r3, [fp, #-144]
14263.L1902:
14264	ldr	r3, [fp, #-144]
14265	cmp	r5, r3
14266	beq	.L1909
14267	cmp	r6, #9
14268	addeq	r3, r5, #1
14269	lslne	r3, r5, #2
14270	cmp	r5, #0
14271	cmpeq	r6, #9
14272	str	r3, [fp, #-112]
14273	movw	r3, #61424
14274	str	r3, [fp, #-108]
14275	moveq	r0, #1
14276	movne	r0, #0
14277	bne	.L1905
14278	ldr	r3, [r7, #3260]
14279	mov	r0, #70
14280	blx	r3
14281	mov	r2, r4
14282	ldr	r1, [fp, #-136]
14283	sub	r3, fp, #112
14284	ldr	ip, [r7, #3252]
14285	mov	r0, #0
14286	blx	ip
14287	ldr	r3, [r7, #3260]
14288	str	r0, [fp, #-148]
14289	ldrb	r0, [r7, #22]	@ zero_extendqisi2
14290	blx	r3
14291	ldr	r2, [fp, #-148]
14292	cmn	r2, #1
14293	bne	.L1906
14294.L1909:
14295	ldr	r3, .L1948
14296	ldrb	r2, [r3, #14]	@ zero_extendqisi2
14297	ldr	r1, [r3, #3260]
14298	str	r2, [fp, #-136]
14299	ldrh	r2, [r3, #10]
14300	cmp	r1, #0
14301	ldr	r9, [r3, #3684]
14302	moveq	r6, #6
14303	mul	r7, r2, r10
14304	beq	.L1908
14305	ldr	r3, [r3, #3264]
14306	cmp	r3, #0
14307	moveq	r6, #6
14308	movne	r6, #9
14309.L1908:
14310	ldr	r3, [fp, #-124]
14311	mov	r5, #0
14312	ldr	r4, .L1948
14313	mul	r3, r2, r3
14314	str	r3, [fp, #-144]
14315.L1911:
14316	ldr	r3, [fp, #-144]
14317	cmp	r5, r3
14318	beq	.L1915
14319	cmp	r5, #0
14320	cmpeq	r6, #9
14321	moveq	r0, #1
14322	movne	r0, #0
14323	bne	.L1912
14324	ldr	r3, [r4, #3260]
14325	mov	r0, #70
14326	blx	r3
14327	ldr	r3, [r4, #3264]
14328	mov	r0, #2
14329	blx	r3
14330	mov	r2, r9
14331	ldr	ip, [r4, #3256]
14332	mov	r1, r7
14333	sub	r3, fp, #112
14334	mov	r0, #0
14335	blx	ip
14336	ldr	r3, [r4, #3264]
14337	ldr	r0, [fp, #-136]
14338	blx	r3
14339	ldr	r3, [r4, #3260]
14340	ldrb	r0, [r4, #22]	@ zero_extendqisi2
14341	blx	r3
14342	ldr	r3, [r9]
14343	ldr	r2, .L1948+12
14344	cmp	r3, r2
14345	beq	.L1913
14346.L1915:
14347	ldr	r3, .L1948
14348	mov	r4, #0
14349	ldr	r0, [r3, #3684]
14350	mov	r3, r8
14351	mov	r2, r0
14352.L1914:
14353	mov	r5, r2
14354	mov	r6, r3
14355	add	r2, r2, #4
14356	add	r3, r3, #4
14357	ldr	ip, [r5]
14358	ldr	r1, [r6]
14359	cmp	ip, r1
14360	beq	.L1917
14361	mov	r2, #512
14362	mov	r1, #0
14363	bl	memset
14364	str	r4, [sp]
14365	ldr	r0, .L1948+16
14366	mov	r1, r10
14367	ldr	r3, [r6]
14368	ldr	r2, [r5]
14369	bl	sftl_printk
14370	ldr	r3, .L1948
14371	mov	r0, #0
14372	ldrh	r1, [r3, #10]
14373	ldr	r3, [r3, #3248]
14374	mul	r1, r10, r1
14375	blx	r3
14376.L1918:
14377	ldr	r10, [fp, #-132]
14378	b	.L1898
14379.L1905:
14380	ldr	r1, [fp, #-136]
14381	sub	r3, fp, #112
14382	ldr	ip, [r7, #3252]
14383	mov	r2, r9
14384	add	r1, r1, r5
14385	blx	ip
14386	cmn	r0, #1
14387	beq	.L1909
14388	add	r9, r9, #2048
14389.L1906:
14390	add	r5, r5, #1
14391	b	.L1902
14392.L1912:
14393	ldr	ip, [r4, #3256]
14394	sub	r3, fp, #112
14395	mov	r2, r9
14396	add	r1, r7, r5
14397	blx	ip
14398	cmn	r0, #1
14399	beq	.L1915
14400	ldr	r1, [fp, #-108]
14401	movw	r3, #61424
14402	cmp	r1, r3
14403	bne	.L1915
14404	add	r9, r9, #2048
14405.L1913:
14406	add	r5, r5, #1
14407	b	.L1911
14408.L1917:
14409	ldr	r1, [fp, #-140]
14410	add	r4, r4, #1
14411	cmp	r4, r1
14412	bcc	.L1914
14413	ldr	r3, [fp, #-128]
14414	add	r3, r3, #1
14415	str	r3, [fp, #-128]
14416	cmp	r3, #5
14417	bls	.L1918
14418.L1919:
14419	ldr	r5, .L1948
14420	mov	r3, #0
14421	ldr	r4, [fp, #-120]
14422	ldr	r0, [r5, #3680]
14423	str	r3, [r5, #3676]
14424	bl	kfree
14425	ldr	r0, [r5, #3684]
14426	bl	kfree
14427.L1889:
14428	mov	r3, sp
14429	ldr	r2, [fp, #-48]
14430	bic	r3, r3, #8128
14431	bic	r3, r3, #63
14432	ldr	r3, [r3, #24]
14433	cmp	r2, r3
14434	beq	.L1928
14435	bl	__stack_chk_fail
14436.L1890:
14437	cmp	r0, #64
14438	bne	.L1921
14439	mov	r0, #262144
14440	bl	ftl_malloc
14441	str	r0, [r5, #3680]
14442	mov	r0, #262144
14443	bl	ftl_malloc
14444	mov	r3, r0
14445	str	r0, [r5, #3684]
14446	ldr	r0, [r5, #3680]
14447	cmp	r0, #0
14448	cmpne	r3, #0
14449	beq	.L1922
14450	mov	r1, r10
14451	mov	r2, #262144
14452	mov	r3, #1
14453	str	r3, [r5, #3676]
14454	bl	ftl_memset
14455.L1923:
14456	cmp	r4, #63
14457	ldr	r0, [r5, #3680]
14458	sub	r3, r4, #64
14459	rsbls	r4, r4, #64
14460	addls	r6, r6, r3
14461	addls	r7, r7, r4, lsl #9
14462	addhi	r0, r0, r3, lsl #9
14463	cmp	r9, #576
14464	mov	r1, r7
14465	rsbcs	r8, r8, #576
14466	addcs	r6, r6, r8
14467	lsl	r2, r6, #9
14468	bl	ftl_memcpy
14469	b	.L1947
14470.L1922:
14471	ldr	r1, .L1948+20
14472	ldr	r0, .L1948+24
14473	bl	sftl_printk
14474.L1921:
14475	ldr	r3, [r5, #3676]
14476	cmp	r3, #0
14477	bne	.L1923
14478	b	.L1947
14479.L1928:
14480	mov	r0, r4
14481	sub	sp, fp, #40
14482	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
14483.L1949:
14484	.align	2
14485.L1948:
14486	.word	.LANCHOR0
14487	.word	-52655045
14488	.word	.LC130
14489	.word	1179535694
14490	.word	.LC131
14491	.word	.LANCHOR1+633
14492	.word	.LC132
14493	.size	FtlWriteToIDB, .-FtlWriteToIDB
14494	.align	2
14495	.global	sftl_write
14496	.syntax unified
14497	.arm
14498	.fpu softvfp
14499	.type	sftl_write, %function
14500sftl_write:
14501	@ args = 0, pretend = 0, frame = 0
14502	@ frame_needed = 1, uses_anonymous_args = 0
14503	mov	ip, sp
14504	push	{r4, r5, r6, r7, fp, ip, lr, pc}
14505	sub	fp, ip, #4
14506	push	{lr}
14507	bl	__gnu_mcount_nc
14508	mov	r5, r1
14509	mov	r6, r2
14510	mov	r4, r0
14511	bl	FtlWriteToIDB
14512	mov	r3, r6
14513	mov	r2, r5
14514	mov	r1, r4
14515	mov	r0, #0
14516	bl	FtlWrite
14517	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
14518	.size	sftl_write, .-sftl_write
14519	.align	2
14520	.global	rk_sftl_vendor_dev_ops_register
14521	.syntax unified
14522	.arm
14523	.fpu softvfp
14524	.type	rk_sftl_vendor_dev_ops_register, %function
14525rk_sftl_vendor_dev_ops_register:
14526	@ args = 0, pretend = 0, frame = 0
14527	@ frame_needed = 1, uses_anonymous_args = 0
14528	mov	ip, sp
14529	push	{fp, ip, lr, pc}
14530	sub	fp, ip, #4
14531	push	{lr}
14532	bl	__gnu_mcount_nc
14533	ldr	r3, .L1954
14534	mov	r2, r0
14535	ldr	r0, [r3, #3688]
14536	cmp	r0, #0
14537	streq	r2, [r3, #3688]
14538	streq	r1, [r3, #3692]
14539	mvnne	r0, #0
14540	ldmfd	sp, {fp, sp, pc}
14541.L1955:
14542	.align	2
14543.L1954:
14544	.word	.LANCHOR0
14545	.size	rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register
14546	.align	2
14547	.global	rk_sftl_vendor_storage_init
14548	.syntax unified
14549	.arm
14550	.fpu softvfp
14551	.type	rk_sftl_vendor_storage_init, %function
14552rk_sftl_vendor_storage_init:
14553	@ args = 0, pretend = 0, frame = 0
14554	@ frame_needed = 1, uses_anonymous_args = 0
14555	mov	ip, sp
14556	push	{r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
14557	sub	fp, ip, #4
14558	push	{lr}
14559	bl	__gnu_mcount_nc
14560	ldr	r5, .L1965
14561	mov	r0, #65536
14562	bl	ftl_malloc
14563	cmp	r0, #0
14564	mvneq	r4, #11
14565	str	r0, [r5, #3696]
14566	beq	.L1956
14567	ldr	r9, .L1965+4
14568	mov	r8, #0
14569	mov	r7, r8
14570	mov	r6, r8
14571.L1960:
14572	ldr	r3, [r5, #3688]
14573	lsl	r0, r6, #7
14574	ldr	r2, [r5, #3696]
14575	mov	r1, #128
14576	blx	r3
14577	subs	r4, r0, #0
14578	bne	.L1958
14579	ldr	r3, [r5, #3696]
14580	ldr	r2, [r3]
14581	cmp	r2, r9
14582	bne	.L1959
14583	add	r1, r3, #61440
14584	ldr	r2, [r3, #4]
14585	cmp	r2, r7
14586	ldr	r1, [r1, #4092]
14587	sub	r1, r1, r2
14588	clz	r1, r1
14589	lsr	r1, r1, #5
14590	movls	r1, #0
14591	cmp	r1, #0
14592	movne	r8, r6
14593	movne	r7, r2
14594.L1959:
14595	cmp	r6, #1
14596	bne	.L1964
14597	cmp	r7, #0
14598	beq	.L1961
14599	ldr	r4, [r5, #3688]
14600	mov	r2, r3
14601	lsl	r0, r8, #7
14602	mov	r1, #128
14603	blx	r4
14604	subs	r4, r0, #0
14605	beq	.L1956
14606.L1958:
14607	ldr	r0, [r5, #3696]
14608	mvn	r4, #0
14609	bl	kfree
14610	mov	r3, #0
14611	str	r3, [r5, #3696]
14612	b	.L1956
14613.L1964:
14614	mov	r6, #1
14615	b	.L1960
14616.L1961:
14617	mov	r2, #65536
14618	mov	r1, r7
14619	mov	r0, r3
14620	bl	memset
14621	add	r2, r0, #61440
14622	str	r6, [r0, #4]
14623	str	r9, [r0]
14624	str	r6, [r2, #4092]
14625	ldr	r2, .L1965+8
14626	strh	r2, [r0, #14]	@ movhi
14627.L1956:
14628	mov	r0, r4
14629	ldmfd	sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
14630.L1966:
14631	.align	2
14632.L1965:
14633	.word	.LANCHOR0
14634	.word	1380668996
14635	.word	-1032
14636	.size	rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init
14637	.align	2
14638	.global	rk_sftl_vendor_read
14639	.syntax unified
14640	.arm
14641	.fpu softvfp
14642	.type	rk_sftl_vendor_read, %function
14643rk_sftl_vendor_read:
14644	@ args = 0, pretend = 0, frame = 0
14645	@ frame_needed = 1, uses_anonymous_args = 0
14646	mov	ip, sp
14647	push	{r4, r5, r6, r7, fp, ip, lr, pc}
14648	sub	fp, ip, #4
14649	push	{lr}
14650	bl	__gnu_mcount_nc
14651	ldr	r3, .L1973
14652	mov	r4, r0
14653	mov	r0, r1
14654	ldr	r3, [r3, #3696]
14655	cmp	r3, #0
14656	addne	r5, r3, #16
14657	movne	lr, #0
14658	ldrhne	r1, [r3, #10]
14659	bne	.L1969
14660.L1972:
14661	mvn	r0, #0
14662	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
14663.L1970:
14664	add	lr, lr, #1
14665.L1969:
14666	cmp	r1, lr
14667	bls	.L1972
14668	lsl	ip, lr, #3
14669	ldrh	r6, [r5, ip]
14670	cmp	r6, r4
14671	bne	.L1970
14672	add	ip, r3, ip
14673	ldrh	r4, [ip, #20]
14674	ldrh	r1, [ip, #18]
14675	cmp	r4, r2
14676	movcs	r4, r2
14677	add	r1, r1, #1024
14678	mov	r2, r4
14679	add	r1, r3, r1
14680	bl	memcpy
14681	mov	r0, r4
14682	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
14683.L1974:
14684	.align	2
14685.L1973:
14686	.word	.LANCHOR0
14687	.size	rk_sftl_vendor_read, .-rk_sftl_vendor_read
14688	.align	2
14689	.global	rk_sftl_vendor_write
14690	.syntax unified
14691	.arm
14692	.fpu softvfp
14693	.type	rk_sftl_vendor_write, %function
14694rk_sftl_vendor_write:
14695	@ args = 0, pretend = 0, frame = 24
14696	@ frame_needed = 1, uses_anonymous_args = 0
14697	mov	ip, sp
14698	push	{r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
14699	sub	fp, ip, #4
14700	sub	sp, sp, #28
14701	push	{lr}
14702	bl	__gnu_mcount_nc
14703	ldr	r9, .L1994
14704	mov	r8, r1
14705	mov	r7, r2
14706	str	r0, [fp, #-52]
14707	ldr	r4, [r9, #3696]
14708	cmp	r4, #0
14709	beq	.L1990
14710	add	r3, r7, #63
14711	ldrh	r2, [r4, #10]
14712	bic	r3, r3, #63
14713	str	r3, [fp, #-48]
14714	ldrh	r3, [r4, #8]
14715	mov	r6, #0
14716	str	r3, [fp, #-56]
14717	add	r3, r4, #16
14718.L1977:
14719	cmp	r6, r2
14720	bcc	.L1985
14721	ldrh	r1, [r4, #14]
14722	ldr	r3, [fp, #-48]
14723	cmp	r1, r3
14724	bcc	.L1990
14725	add	r3, r4, r2, lsl #3
14726	ldr	r2, [fp, #-52]
14727	strh	r2, [r3, #16]	@ movhi
14728	ldrh	r0, [r4, #12]
14729	strh	r0, [r3, #18]	@ movhi
14730	strh	r7, [r3, #20]	@ movhi
14731	ldrh	r3, [fp, #-48]
14732	add	r2, r0, r3
14733	add	r0, r0, #1024
14734	sub	r3, r1, r3
14735	strh	r2, [r4, #12]	@ movhi
14736	strh	r3, [r4, #14]	@ movhi
14737	mov	r2, r7
14738	mov	r1, r8
14739	add	r0, r4, r0
14740	bl	memcpy
14741	ldrh	r3, [r4, #10]
14742	add	r2, r4, #61440
14743	add	r3, r3, #1
14744	strh	r3, [r4, #10]	@ movhi
14745	ldr	r3, [r4, #4]
14746	add	r3, r3, #1
14747	str	r3, [r4, #4]
14748	str	r3, [r2, #4092]
14749	ldrh	r3, [r4, #8]
14750	add	r3, r3, #1
14751	uxth	r3, r3
14752	cmp	r3, #1
14753	movhi	r3, #0
14754	strh	r3, [r4, #8]	@ movhi
14755	ldr	r3, [r9, #3692]
14756	b	.L1993
14757.L1985:
14758	lsl	r5, r6, #3
14759	ldr	r0, [fp, #-52]
14760	ldrh	r1, [r3, r5]
14761	cmp	r1, r0
14762	bne	.L1978
14763	add	r5, r4, r5
14764	add	r3, r4, #1024
14765	ldrh	r1, [r5, #20]
14766	add	r1, r1, #63
14767	bic	r1, r1, #63
14768	str	r1, [fp, #-60]
14769	cmp	r7, r1
14770	bls	.L1979
14771	ldrh	r1, [r4, #14]
14772	ldr	r0, [fp, #-48]
14773	cmp	r1, r0
14774	subcs	r2, r2, #1
14775	strcs	r2, [fp, #-64]
14776	ldrhcs	r10, [r5, #18]
14777	bcs	.L1980
14778.L1990:
14779	mvn	r0, #0
14780	b	.L1975
14781.L1981:
14782	ldrh	r2, [r5, #16]
14783	add	r0, r3, r10
14784	strh	r2, [r5, #8]	@ movhi
14785	add	r6, r6, #1
14786	ldrh	r2, [r5, #20]
14787	ldrh	r1, [r5, #18]
14788	strh	r2, [r5, #12]	@ movhi
14789	add	r2, r2, #63
14790	strh	r9, [r5, #10]	@ movhi
14791	bic	r9, r2, #63
14792	add	r1, r3, r1
14793	mov	r2, r9
14794	str	r3, [fp, #-68]
14795	bl	memcpy
14796	ldr	r3, [fp, #-68]
14797	add	r10, r10, r9
14798.L1980:
14799	ldr	r2, [fp, #-64]
14800	uxth	r9, r10
14801	add	r5, r5, #8
14802	cmp	r2, r6
14803	bhi	.L1981
14804	add	r6, r4, r6, lsl #3
14805	ldr	r2, [fp, #-52]
14806	uxtah	r0, r3, r10
14807	mov	r1, r8
14808	strh	r2, [r6, #16]	@ movhi
14809	mov	r2, r7
14810	strh	r9, [r6, #18]	@ movhi
14811	strh	r7, [r6, #20]	@ movhi
14812	bl	memcpy
14813	ldrh	r2, [fp, #-48]
14814	ldrh	r3, [r4, #14]
14815	add	r9, r2, r9
14816	strh	r9, [r4, #12]	@ movhi
14817	sub	r3, r3, r2
14818	ldr	r2, [fp, #-60]
14819	add	r3, r3, r2
14820	strh	r3, [r4, #14]	@ movhi
14821.L1982:
14822	add	r2, r4, #61440
14823	ldr	r3, [r4, #4]
14824	add	r3, r3, #1
14825	str	r3, [r4, #4]
14826	str	r3, [r2, #4092]
14827	ldrh	r3, [r4, #8]
14828	add	r3, r3, #1
14829	uxth	r3, r3
14830	cmp	r3, #1
14831	movhi	r3, #0
14832	strh	r3, [r4, #8]	@ movhi
14833	ldr	r3, .L1994
14834	ldr	r3, [r3, #3692]
14835.L1993:
14836	ldr	r0, [fp, #-56]
14837	mov	r2, r4
14838	mov	r1, #128
14839	lsl	r0, r0, #7
14840	blx	r3
14841	mov	r0, #0
14842.L1975:
14843	sub	sp, fp, #40
14844	ldmfd	sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
14845.L1979:
14846	ldrh	r0, [r5, #18]
14847	mov	r2, r7
14848	mov	r1, r8
14849	add	r0, r3, r0
14850	bl	memcpy
14851	strh	r7, [r5, #20]	@ movhi
14852	b	.L1982
14853.L1978:
14854	add	r6, r6, #1
14855	b	.L1977
14856.L1995:
14857	.align	2
14858.L1994:
14859	.word	.LANCHOR0
14860	.size	rk_sftl_vendor_write, .-rk_sftl_vendor_write
14861	.section	.rodata.str1.1
14862.LC133:
14863	.ascii	"copy_from_user error %d %p %p\012\000"
14864	.text
14865	.align	2
14866	.global	rk_sftl_vendor_storage_ioctl
14867	.syntax unified
14868	.arm
14869	.fpu softvfp
14870	.type	rk_sftl_vendor_storage_ioctl, %function
14871rk_sftl_vendor_storage_ioctl:
14872	@ args = 0, pretend = 0, frame = 0
14873	@ frame_needed = 1, uses_anonymous_args = 0
14874	mov	ip, sp
14875	push	{r4, r5, r6, r7, fp, ip, lr, pc}
14876	sub	fp, ip, #4
14877	push	{lr}
14878	bl	__gnu_mcount_nc
14879	mov	r0, #4096
14880	mov	r4, r2
14881	mov	r6, r1
14882	bl	ftl_malloc
14883	subs	r5, r0, #0
14884	mvneq	r4, #0
14885	beq	.L1996
14886	ldr	r3, .L2014
14887	cmp	r6, r3
14888	beq	.L1998
14889	add	r3, r3, #1
14890	cmp	r6, r3
14891	beq	.L1999
14892.L2012:
14893	mvn	r4, #13
14894.L2000:
14895	mov	r0, r5
14896	bl	kfree
14897.L1996:
14898	mov	r0, r4
14899	ldmfd	sp, {r4, r5, r6, r7, fp, sp, pc}
14900.L1998:
14901	mov	r1, r4
14902	mov	r2, #8
14903	bl	_copy_from_user
14904	cmp	r0, #0
14905	beq	.L2001
14906	mov	r2, r4
14907	mov	r1, #256
14908.L2013:
14909	ldr	r0, .L2014+4
14910	bl	sftl_printk
14911	b	.L2012
14912.L2001:
14913	ldr	r2, [r5]
14914	ldr	r3, .L2014+8
14915	cmp	r2, r3
14916	beq	.L2002
14917.L2003:
14918	mvn	r4, #0
14919	b	.L2000
14920.L2002:
14921	ldrh	r2, [r5, #6]
14922	add	r1, r5, #8
14923	ldrh	r0, [r5, #4]
14924	bl	rk_sftl_vendor_read
14925	cmn	r0, #1
14926	beq	.L2003
14927	mov	r3, sp
14928	strh	r0, [r5, #6]	@ movhi
14929	bic	r1, r3, #8128
14930	uxth	r2, r0
14931	bic	r1, r1, #63
14932	add	r2, r2, #8
14933	ldr	r3, [r1, #8]
14934	.syntax divided
14935@ 177 "./include/linux/uaccess.h" 1
14936	.syntax unified
14937adds r0, r4, r2; sbcscc r0, r0, r3; movcc r3, #0
14938@ 0 "" 2
14939	.arm
14940	.syntax unified
14941	cmp	r3, #0
14942	bne	.L2012
14943	.syntax divided
14944@ 89 "./arch/arm/include/asm/domain.h" 1
14945	mrc	p15, 0, r6, c3, c0	@ get domain
14946@ 0 "" 2
14947	.arm
14948	.syntax unified
14949	bic	r3, r6, #12
14950	orr	r3, r3, #4
14951	.syntax divided
14952@ 99 "./arch/arm/include/asm/domain.h" 1
14953	mcr	p15, 0, r3, c3, c0	@ set domain
14954@ 0 "" 2
14955@ 102 "./arch/arm/include/asm/domain.h" 1
14956	isb
14957@ 0 "" 2
14958	.arm
14959	.syntax unified
14960	mov	r1, r5
14961	mov	r0, r4
14962	bl	arm_copy_to_user
14963	mov	r4, r0
14964	.syntax divided
14965@ 99 "./arch/arm/include/asm/domain.h" 1
14966	mcr	p15, 0, r6, c3, c0	@ set domain
14967@ 0 "" 2
14968@ 102 "./arch/arm/include/asm/domain.h" 1
14969	isb
14970@ 0 "" 2
14971	.arm
14972	.syntax unified
14973	cmp	r0, #0
14974	beq	.L2000
14975	b	.L2012
14976.L1999:
14977	mov	r1, r4
14978	mov	r2, #8
14979	bl	_copy_from_user
14980	cmp	r0, #0
14981	movne	r2, r4
14982	movne	r1, #276
14983	bne	.L2013
14984	ldr	r2, [r5]
14985	ldr	r3, .L2014+8
14986	cmp	r2, r3
14987	bne	.L2003
14988	ldrh	r2, [r5, #6]
14989	movw	r3, #4087
14990	cmp	r2, r3
14991	bhi	.L2003
14992	add	r2, r2, #8
14993	mov	r1, r4
14994	mov	r0, r5
14995	uxth	r2, r2
14996	bl	_copy_from_user
14997	cmp	r0, #0
14998	movne	r2, r4
14999	movwne	r1, #283
15000	bne	.L2013
15001	ldrh	r2, [r5, #6]
15002	add	r1, r5, #8
15003	ldrh	r0, [r5, #4]
15004	bl	rk_sftl_vendor_write
15005	mov	r4, r0
15006	b	.L2000
15007.L2015:
15008	.align	2
15009.L2014:
15010	.word	1074034177
15011	.word	.LC133
15012	.word	1448232273
15013	.size	rk_sftl_vendor_storage_ioctl, .-rk_sftl_vendor_storage_ioctl
15014	.align	2
15015	.global	rk_sftl_vendor_register
15016	.syntax unified
15017	.arm
15018	.fpu softvfp
15019	.type	rk_sftl_vendor_register, %function
15020rk_sftl_vendor_register:
15021	@ args = 0, pretend = 0, frame = 0
15022	@ frame_needed = 1, uses_anonymous_args = 0
15023	mov	ip, sp
15024	push	{fp, ip, lr, pc}
15025	sub	fp, ip, #4
15026	push	{lr}
15027	bl	__gnu_mcount_nc
15028	ldr	r0, .L2017
15029	bl	misc_register
15030	ldmfd	sp, {fp, sp, pc}
15031.L2018:
15032	.align	2
15033.L2017:
15034	.word	.LANCHOR2+12
15035	.size	rk_sftl_vendor_register, .-rk_sftl_vendor_register
15036	.section	.rodata.str1.1
15037.LC134:
15038	.ascii	"vendor_storage\000"
15039	.global	g_nand_ops
15040	.global	g_nand_phy_info
15041	.global	gc_ink_free_return_value
15042	.global	check_vpc_table
15043	.global	FtlUpdateVaildLpnCount
15044	.global	g_ect_tbl_power_up_flush
15045	.global	power_up_flag
15046	.global	gFtlInitStatus
15047	.global	DeviceCapacity
15048	.global	g_power_lost_recovery_flag
15049	.global	c_mlc_erase_count_value
15050	.global	g_recovery_ppa_tbl
15051	.global	g_recovery_page_min_ver
15052	.global	g_recovery_page_num
15053	.global	sftl_nand_check_spare_buf
15054	.global	sftl_temp_buf
15055	.global	sftl_nand_check_buf
15056	.global	g_cur_erase_blk
15057	.global	g_gc_skip_write_count
15058	.global	g_gc_head_data_block_count
15059	.global	g_gc_head_data_block
15060	.global	g_ftl_nand_free_count
15061	.global	g_in_swl_replace
15062	.global	g_in_gc_progress
15063	.global	g_max_erase_count
15064	.global	g_totle_sys_slc_erase_count
15065	.global	g_totle_slc_erase_count
15066	.global	g_min_erase_count
15067	.global	g_totle_avg_erase_count
15068	.global	g_totle_mlc_erase_count
15069	.global	g_totle_l2p_write_count
15070	.global	g_totle_cache_write_count
15071	.global	g_tmp_data_superblock_id
15072	.global	g_totle_read_page_count
15073	.global	g_totle_discard_page_count
15074	.global	g_totle_read_sector
15075	.global	g_totle_write_sector
15076	.global	g_totle_write_page_count
15077	.global	g_totle_gc_page_count
15078	.global	g_gc_blk_index
15079	.global	g_gc_merge_free_blk_threshold
15080	.global	g_gc_free_blk_threshold
15081	.global	g_gc_bad_block_temp_tbl
15082	.global	g_gc_bad_block_gc_index
15083	.global	g_gc_bad_block_temp_num
15084	.global	g_gc_next_blk_1
15085	.global	g_gc_next_blk
15086	.global	g_gc_cur_blk_max_valid_pages
15087	.global	g_gc_cur_blk_valid_pages
15088	.global	g_gc_page_offset
15089	.global	g_gc_blk_num
15090	.global	p_gc_blk_tbl
15091	.global	p_gc_page_info
15092	.global	g_sys_ext_data
15093	.global	g_sys_save_data
15094	.global	gp_last_act_superblock
15095	.global	g_gc_superblock
15096	.global	g_gc_temp_superblock
15097	.global	g_buffer_superblock
15098	.global	g_active_superblock
15099	.global	g_num_data_superblocks
15100	.global	g_num_free_superblocks
15101	.global	p_data_block_list_tail
15102	.global	p_data_block_list_head
15103	.global	p_free_data_block_list_head
15104	.global	p_data_block_list_table
15105	.global	g_l2p_last_update_region_id
15106	.global	p_l2p_map_buf
15107	.global	p_l2p_ram_map
15108	.global	g_totle_vendor_block
15109	.global	p_vendor_region_ppn_table
15110	.global	p_vendor_block_ver_table
15111	.global	p_vendor_block_valid_page_count
15112	.global	p_vendor_block_table
15113	.global	g_totle_map_block
15114	.global	p_map_region_ppn_table
15115	.global	p_map_block_ver_table
15116	.global	p_map_block_valid_page_count
15117	.global	p_map_block_table
15118	.global	p_valid_page_count_check_table
15119	.global	p_valid_page_count_table
15120	.global	g_totle_swl_count
15121	.global	p_swl_mul_table
15122	.global	p_erase_count_table
15123	.global	g_ect_tbl_info_size
15124	.global	gp_ect_tbl_info
15125	.global	g_gc_num_req
15126	.global	c_gc_page_buf_num
15127	.global	gp_gc_page_buf_info
15128	.global	p_gc_data_buf
15129	.global	p_gc_spare_buf
15130	.global	p_io_spare_buf
15131	.global	p_io_data_buf_1
15132	.global	p_io_data_buf_0
15133	.global	p_sys_spare_buf
15134	.global	p_vendor_data_buf
15135	.global	p_sys_data_buf_1
15136	.global	p_sys_data_buf
15137	.global	p_plane_order_table
15138	.global	req_gc_dst
15139	.global	req_gc
15140	.global	req_erase
15141	.global	req_prgm
15142	.global	req_read
15143	.global	req_sys
15144	.global	gVendorBlkInfo
15145	.global	gL2pMapInfo
15146	.global	gSysFreeQueue
15147	.global	gSysInfo
15148	.global	gBbtInfo
15149	.global	g_MaxLbn
15150	.global	g_VaildLpn
15151	.global	g_MaxLpn
15152	.global	g_MaxLbaSector
15153	.global	g_GlobalDataVersion
15154	.global	g_GlobalSysVersion
15155	.global	ftl_gc_temp_power_lost_recovery_flag
15156	.global	c_ftl_nand_max_data_blks
15157	.global	c_ftl_nand_data_op_blks_per_plane
15158	.global	c_ftl_nand_data_blks_per_plane
15159	.global	c_ftl_nand_max_sys_blks
15160	.global	c_ftl_nand_init_sys_blks_per_plane
15161	.global	c_ftl_nand_sys_blks_per_plane
15162	.global	c_ftl_vendor_part_size
15163	.global	c_ftl_nand_max_vendor_blks
15164	.global	c_ftl_nand_max_map_blks
15165	.global	c_ftl_nand_map_blks_per_plane
15166	.global	c_ftl_nand_vendor_region_num
15167	.global	c_ftl_nand_l2pmap_ram_region_num
15168	.global	c_ftl_nand_map_region_num
15169	.global	c_ftl_nand_totle_phy_blks
15170	.global	c_ftl_nand_reserved_blks
15171	.global	c_ftl_nand_byte_pre_oob
15172	.global	c_ftl_nand_byte_pre_page
15173	.global	c_ftl_nand_sec_pre_page_shift
15174	.global	c_ftl_nand_sec_pre_page
15175	.global	c_ftl_nand_page_pre_super_blk
15176	.global	c_ftl_nand_page_pre_slc_blk
15177	.global	c_ftl_nand_page_pre_blk
15178	.global	c_ftl_nand_bbm_buf_size
15179	.global	c_ftl_nand_ext_blk_pre_plane
15180	.global	c_ftl_nand_blk_pre_plane
15181	.global	c_ftl_nand_planes_num
15182	.global	c_ftl_nand_blks_per_die_shift
15183	.global	c_ftl_nand_blks_per_die
15184	.global	c_ftl_nand_planes_per_die
15185	.global	c_ftl_nand_die_num
15186	.global	c_ftl_nand_type
15187	.section	.rodata
15188	.align	2
15189	.set	.LANCHOR1,. + 0
15190	.type	__func__.30, %object
15191	.size	__func__.30, 17
15192__func__.30:
15193	.ascii	"INSERT_DATA_LIST\000"
15194	.type	__func__.31, %object
15195	.size	__func__.31, 17
15196__func__.31:
15197	.ascii	"INSERT_FREE_LIST\000"
15198	.type	__func__.29, %object
15199	.size	__func__.29, 17
15200__func__.29:
15201	.ascii	"List_remove_node\000"
15202	.type	__func__.28, %object
15203	.size	__func__.28, 22
15204__func__.28:
15205	.ascii	"List_update_data_list\000"
15206	.type	__func__.22, %object
15207	.size	__func__.22, 22
15208__func__.22:
15209	.ascii	"select_l2p_ram_region\000"
15210	.type	__func__.14, %object
15211	.size	__func__.14, 16
15212__func__.14:
15213	.ascii	"make_superblock\000"
15214	.type	__func__.8, %object
15215	.size	__func__.8, 19
15216__func__.8:
15217	.ascii	"get_new_active_ppa\000"
15218	.type	__func__.1, %object
15219	.size	__func__.1, 17
15220__func__.1:
15221	.ascii	"FlashEraseBlocks\000"
15222	.type	__func__.26, %object
15223	.size	__func__.26, 26
15224__func__.26:
15225	.ascii	"ftl_map_blk_alloc_new_blk\000"
15226	.type	__func__.37, %object
15227	.size	__func__.37, 11
15228__func__.37:
15229	.ascii	"FtlMemInit\000"
15230	.type	__func__.34, %object
15231	.size	__func__.34, 14
15232__func__.34:
15233	.ascii	"FtlBbt2Bitmap\000"
15234	.type	__func__.13, %object
15235	.size	__func__.13, 18
15236__func__.13:
15237	.ascii	"SupperBlkListInit\000"
15238	.type	__func__.3, %object
15239	.size	__func__.3, 15
15240__func__.3:
15241	.ascii	"FlashReadPages\000"
15242	.type	__func__.19, %object
15243	.size	__func__.19, 14
15244__func__.19:
15245	.ascii	"FtlScanSysBlk\000"
15246	.type	__func__.32, %object
15247	.size	__func__.32, 11
15248__func__.32:
15249	.ascii	"FtlLoadBbt\000"
15250	.type	__func__.2, %object
15251	.size	__func__.2, 15
15252__func__.2:
15253	.ascii	"FlashProgPages\000"
15254	.type	__func__.10, %object
15255	.size	__func__.10, 25
15256__func__.10:
15257	.ascii	"allocate_data_superblock\000"
15258	.type	__func__.7, %object
15259	.size	__func__.7, 16
15260__func__.7:
15261	.ascii	"update_vpc_list\000"
15262	.type	__func__.6, %object
15263	.size	__func__.6, 20
15264__func__.6:
15265	.ascii	"decrement_vpc_count\000"
15266	.type	__func__.23, %object
15267	.size	__func__.23, 16
15268__func__.23:
15269	.ascii	"FtlMapWritePage\000"
15270	.type	__func__.27, %object
15271	.size	__func__.27, 16
15272__func__.27:
15273	.ascii	"load_l2p_region\000"
15274	.type	__func__.25, %object
15275	.size	__func__.25, 15
15276__func__.25:
15277	.ascii	"ftl_map_blk_gc\000"
15278	.type	__func__.24, %object
15279	.size	__func__.24, 31
15280__func__.24:
15281	.ascii	"Ftl_write_map_blk_to_last_page\000"
15282	.type	__func__.21, %object
15283	.size	__func__.21, 9
15284__func__.21:
15285	.ascii	"log2phys\000"
15286	.type	__func__.16, %object
15287	.size	__func__.16, 16
15288__func__.16:
15289	.ascii	"FtlReUsePrevPpa\000"
15290	.type	__func__.15, %object
15291	.size	__func__.15, 22
15292__func__.15:
15293	.ascii	"FtlRecoverySuperblock\000"
15294	.type	__func__.11, %object
15295	.size	__func__.11, 14
15296__func__.11:
15297	.ascii	"ftl_check_vpc\000"
15298	.type	__func__.20, %object
15299	.size	__func__.20, 15
15300__func__.20:
15301	.ascii	"FtlVpcTblFlush\000"
15302	.type	__func__.12, %object
15303	.size	__func__.12, 21
15304__func__.12:
15305	.ascii	"FtlVpcCheckAndModify\000"
15306	.type	__func__.9, %object
15307	.size	__func__.9, 29
15308__func__.9:
15309	.ascii	"allocate_new_data_superblock\000"
15310	.type	__func__.36, %object
15311	.size	__func__.36, 13
15312__func__.36:
15313	.ascii	"FtlProgPages\000"
15314	.type	__func__.5, %object
15315	.size	__func__.5, 19
15316__func__.5:
15317	.ascii	"FtlGcFreeTempBlock\000"
15318	.type	__func__.4, %object
15319	.size	__func__.4, 23
15320__func__.4:
15321	.ascii	"rk_ftl_garbage_collect\000"
15322	.type	__func__.35, %object
15323	.size	__func__.35, 9
15324__func__.35:
15325	.ascii	"FtlWrite\000"
15326	.type	__func__.18, %object
15327	.size	__func__.18, 15
15328__func__.18:
15329	.ascii	"FtlLoadSysInfo\000"
15330	.type	__func__.17, %object
15331	.size	__func__.17, 18
15332__func__.17:
15333	.ascii	"FtlMapTblRecovery\000"
15334	.type	__func__.0, %object
15335	.size	__func__.0, 14
15336__func__.0:
15337	.ascii	"FtlWriteToIDB\000"
15338	.space	1
15339	.type	rk_sftl_vendor_storage_fops, %object
15340	.size	rk_sftl_vendor_storage_fops, 128
15341rk_sftl_vendor_storage_fops:
15342	.space	40
15343	.word	rk_sftl_vendor_storage_ioctl
15344	.word	rk_sftl_vendor_storage_ioctl
15345	.space	80
15346	.data
15347	.align	2
15348	.set	.LANCHOR2,. + 0
15349	.type	gFtlInitStatus, %object
15350	.size	gFtlInitStatus, 4
15351gFtlInitStatus:
15352	.word	-1
15353	.type	ftl_gc_temp_block_bops_scan_page_addr, %object
15354	.size	ftl_gc_temp_block_bops_scan_page_addr, 2
15355ftl_gc_temp_block_bops_scan_page_addr:
15356	.short	-1
15357	.space	2
15358	.type	power_up_flag, %object
15359	.size	power_up_flag, 4
15360power_up_flag:
15361	.word	1
15362	.type	rkflash_vender_storage_dev, %object
15363	.size	rkflash_vender_storage_dev, 40
15364rkflash_vender_storage_dev:
15365	.word	255
15366	.word	.LC134
15367	.word	rk_sftl_vendor_storage_fops
15368	.space	28
15369	.bss
15370	.align	2
15371	.set	.LANCHOR0,. + 0
15372	.type	g_nand_phy_info, %object
15373	.size	g_nand_phy_info, 24
15374g_nand_phy_info:
15375	.space	24
15376	.type	g_active_superblock, %object
15377	.size	g_active_superblock, 48
15378g_active_superblock:
15379	.space	48
15380	.type	p_valid_page_count_table, %object
15381	.size	p_valid_page_count_table, 4
15382p_valid_page_count_table:
15383	.space	4
15384	.type	g_buffer_superblock, %object
15385	.size	g_buffer_superblock, 48
15386g_buffer_superblock:
15387	.space	48
15388	.type	g_gc_temp_superblock, %object
15389	.size	g_gc_temp_superblock, 48
15390g_gc_temp_superblock:
15391	.space	48
15392	.type	g_gc_superblock, %object
15393	.size	g_gc_superblock, 48
15394g_gc_superblock:
15395	.space	48
15396	.type	g_gc_next_blk_1, %object
15397	.size	g_gc_next_blk_1, 2
15398g_gc_next_blk_1:
15399	.space	2
15400	.type	g_gc_next_blk, %object
15401	.size	g_gc_next_blk, 2
15402g_gc_next_blk:
15403	.space	2
15404	.type	g_num_free_superblocks, %object
15405	.size	g_num_free_superblocks, 2
15406g_num_free_superblocks:
15407	.space	2
15408	.space	2
15409	.type	c_ftl_nand_sys_blks_per_plane, %object
15410	.size	c_ftl_nand_sys_blks_per_plane, 4
15411c_ftl_nand_sys_blks_per_plane:
15412	.space	4
15413	.type	c_ftl_nand_planes_num, %object
15414	.size	c_ftl_nand_planes_num, 2
15415c_ftl_nand_planes_num:
15416	.space	2
15417	.space	2
15418	.type	c_ftl_nand_max_sys_blks, %object
15419	.size	c_ftl_nand_max_sys_blks, 4
15420c_ftl_nand_max_sys_blks:
15421	.space	4
15422	.type	c_ftl_nand_data_blks_per_plane, %object
15423	.size	c_ftl_nand_data_blks_per_plane, 2
15424c_ftl_nand_data_blks_per_plane:
15425	.space	2
15426	.type	c_ftl_nand_blk_pre_plane, %object
15427	.size	c_ftl_nand_blk_pre_plane, 2
15428c_ftl_nand_blk_pre_plane:
15429	.space	2
15430	.type	c_ftl_nand_max_data_blks, %object
15431	.size	c_ftl_nand_max_data_blks, 4
15432c_ftl_nand_max_data_blks:
15433	.space	4
15434	.type	c_ftl_nand_totle_phy_blks, %object
15435	.size	c_ftl_nand_totle_phy_blks, 4
15436c_ftl_nand_totle_phy_blks:
15437	.space	4
15438	.type	c_ftl_nand_type, %object
15439	.size	c_ftl_nand_type, 2
15440c_ftl_nand_type:
15441	.space	2
15442	.type	c_ftl_nand_die_num, %object
15443	.size	c_ftl_nand_die_num, 2
15444c_ftl_nand_die_num:
15445	.space	2
15446	.type	c_ftl_nand_planes_per_die, %object
15447	.size	c_ftl_nand_planes_per_die, 2
15448c_ftl_nand_planes_per_die:
15449	.space	2
15450	.type	c_ftl_nand_sec_pre_page, %object
15451	.size	c_ftl_nand_sec_pre_page, 2
15452c_ftl_nand_sec_pre_page:
15453	.space	2
15454	.type	p_plane_order_table, %object
15455	.size	p_plane_order_table, 32
15456p_plane_order_table:
15457	.space	32
15458	.type	c_mlc_erase_count_value, %object
15459	.size	c_mlc_erase_count_value, 2
15460c_mlc_erase_count_value:
15461	.space	2
15462	.type	c_ftl_nand_ext_blk_pre_plane, %object
15463	.size	c_ftl_nand_ext_blk_pre_plane, 2
15464c_ftl_nand_ext_blk_pre_plane:
15465	.space	2
15466	.type	c_ftl_vendor_part_size, %object
15467	.size	c_ftl_vendor_part_size, 2
15468c_ftl_vendor_part_size:
15469	.space	2
15470	.type	c_ftl_nand_blks_per_die, %object
15471	.size	c_ftl_nand_blks_per_die, 2
15472c_ftl_nand_blks_per_die:
15473	.space	2
15474	.type	c_ftl_nand_blks_per_die_shift, %object
15475	.size	c_ftl_nand_blks_per_die_shift, 2
15476c_ftl_nand_blks_per_die_shift:
15477	.space	2
15478	.type	c_ftl_nand_page_pre_blk, %object
15479	.size	c_ftl_nand_page_pre_blk, 2
15480c_ftl_nand_page_pre_blk:
15481	.space	2
15482	.type	c_ftl_nand_page_pre_slc_blk, %object
15483	.size	c_ftl_nand_page_pre_slc_blk, 2
15484c_ftl_nand_page_pre_slc_blk:
15485	.space	2
15486	.type	c_ftl_nand_page_pre_super_blk, %object
15487	.size	c_ftl_nand_page_pre_super_blk, 2
15488c_ftl_nand_page_pre_super_blk:
15489	.space	2
15490	.type	c_ftl_nand_sec_pre_page_shift, %object
15491	.size	c_ftl_nand_sec_pre_page_shift, 2
15492c_ftl_nand_sec_pre_page_shift:
15493	.space	2
15494	.type	c_ftl_nand_byte_pre_page, %object
15495	.size	c_ftl_nand_byte_pre_page, 2
15496c_ftl_nand_byte_pre_page:
15497	.space	2
15498	.type	c_ftl_nand_byte_pre_oob, %object
15499	.size	c_ftl_nand_byte_pre_oob, 2
15500c_ftl_nand_byte_pre_oob:
15501	.space	2
15502	.type	c_ftl_nand_reserved_blks, %object
15503	.size	c_ftl_nand_reserved_blks, 2
15504c_ftl_nand_reserved_blks:
15505	.space	2
15506	.type	DeviceCapacity, %object
15507	.size	DeviceCapacity, 4
15508DeviceCapacity:
15509	.space	4
15510	.type	c_ftl_nand_max_vendor_blks, %object
15511	.size	c_ftl_nand_max_vendor_blks, 2
15512c_ftl_nand_max_vendor_blks:
15513	.space	2
15514	.type	c_ftl_nand_vendor_region_num, %object
15515	.size	c_ftl_nand_vendor_region_num, 2
15516c_ftl_nand_vendor_region_num:
15517	.space	2
15518	.type	c_ftl_nand_map_blks_per_plane, %object
15519	.size	c_ftl_nand_map_blks_per_plane, 2
15520c_ftl_nand_map_blks_per_plane:
15521	.space	2
15522	.space	2
15523	.type	c_ftl_nand_max_map_blks, %object
15524	.size	c_ftl_nand_max_map_blks, 4
15525c_ftl_nand_max_map_blks:
15526	.space	4
15527	.type	c_ftl_nand_init_sys_blks_per_plane, %object
15528	.size	c_ftl_nand_init_sys_blks_per_plane, 4
15529c_ftl_nand_init_sys_blks_per_plane:
15530	.space	4
15531	.type	c_ftl_nand_map_region_num, %object
15532	.size	c_ftl_nand_map_region_num, 2
15533c_ftl_nand_map_region_num:
15534	.space	2
15535	.type	c_ftl_nand_l2pmap_ram_region_num, %object
15536	.size	c_ftl_nand_l2pmap_ram_region_num, 2
15537c_ftl_nand_l2pmap_ram_region_num:
15538	.space	2
15539	.type	g_MaxLbaSector, %object
15540	.size	g_MaxLbaSector, 4
15541g_MaxLbaSector:
15542	.space	4
15543	.type	g_totle_vendor_block, %object
15544	.size	g_totle_vendor_block, 2
15545g_totle_vendor_block:
15546	.space	2
15547	.space	2
15548	.type	p_vendor_block_table, %object
15549	.size	p_vendor_block_table, 4
15550p_vendor_block_table:
15551	.space	4
15552	.type	gBbtInfo, %object
15553	.size	gBbtInfo, 60
15554gBbtInfo:
15555	.space	60
15556	.type	gSysFreeQueue, %object
15557	.size	gSysFreeQueue, 2056
15558gSysFreeQueue:
15559	.space	2056
15560	.type	g_sys_save_data, %object
15561	.size	g_sys_save_data, 48
15562g_sys_save_data:
15563	.space	48
15564	.type	p_data_block_list_table, %object
15565	.size	p_data_block_list_table, 4
15566p_data_block_list_table:
15567	.space	4
15568	.type	p_data_block_list_head, %object
15569	.size	p_data_block_list_head, 4
15570p_data_block_list_head:
15571	.space	4
15572	.type	p_data_block_list_tail, %object
15573	.size	p_data_block_list_tail, 4
15574p_data_block_list_tail:
15575	.space	4
15576	.type	g_num_data_superblocks, %object
15577	.size	g_num_data_superblocks, 2
15578g_num_data_superblocks:
15579	.space	2
15580	.space	2
15581	.type	p_free_data_block_list_head, %object
15582	.size	p_free_data_block_list_head, 4
15583p_free_data_block_list_head:
15584	.space	4
15585	.type	p_erase_count_table, %object
15586	.size	p_erase_count_table, 4
15587p_erase_count_table:
15588	.space	4
15589	.type	p_l2p_ram_map, %object
15590	.size	p_l2p_ram_map, 4
15591p_l2p_ram_map:
15592	.space	4
15593	.type	g_l2p_last_update_region_id, %object
15594	.size	g_l2p_last_update_region_id, 2
15595g_l2p_last_update_region_id:
15596	.space	2
15597	.type	FtlUpdateVaildLpnCount, %object
15598	.size	FtlUpdateVaildLpnCount, 2
15599FtlUpdateVaildLpnCount:
15600	.space	2
15601	.type	g_VaildLpn, %object
15602	.size	g_VaildLpn, 4
15603g_VaildLpn:
15604	.space	4
15605	.type	g_MaxLpn, %object
15606	.size	g_MaxLpn, 4
15607g_MaxLpn:
15608	.space	4
15609	.type	g_totle_read_page_count, %object
15610	.size	g_totle_read_page_count, 4
15611g_totle_read_page_count:
15612	.space	4
15613	.type	g_totle_discard_page_count, %object
15614	.size	g_totle_discard_page_count, 4
15615g_totle_discard_page_count:
15616	.space	4
15617	.type	g_totle_write_page_count, %object
15618	.size	g_totle_write_page_count, 4
15619g_totle_write_page_count:
15620	.space	4
15621	.type	g_totle_cache_write_count, %object
15622	.size	g_totle_cache_write_count, 4
15623g_totle_cache_write_count:
15624	.space	4
15625	.type	g_totle_l2p_write_count, %object
15626	.size	g_totle_l2p_write_count, 4
15627g_totle_l2p_write_count:
15628	.space	4
15629	.type	g_totle_gc_page_count, %object
15630	.size	g_totle_gc_page_count, 4
15631g_totle_gc_page_count:
15632	.space	4
15633	.type	g_totle_write_sector, %object
15634	.size	g_totle_write_sector, 4
15635g_totle_write_sector:
15636	.space	4
15637	.type	g_totle_read_sector, %object
15638	.size	g_totle_read_sector, 4
15639g_totle_read_sector:
15640	.space	4
15641	.type	g_GlobalSysVersion, %object
15642	.size	g_GlobalSysVersion, 4
15643g_GlobalSysVersion:
15644	.space	4
15645	.type	g_GlobalDataVersion, %object
15646	.size	g_GlobalDataVersion, 4
15647g_GlobalDataVersion:
15648	.space	4
15649	.type	g_totle_mlc_erase_count, %object
15650	.size	g_totle_mlc_erase_count, 4
15651g_totle_mlc_erase_count:
15652	.space	4
15653	.type	g_totle_slc_erase_count, %object
15654	.size	g_totle_slc_erase_count, 4
15655g_totle_slc_erase_count:
15656	.space	4
15657	.type	g_totle_avg_erase_count, %object
15658	.size	g_totle_avg_erase_count, 4
15659g_totle_avg_erase_count:
15660	.space	4
15661	.type	g_totle_sys_slc_erase_count, %object
15662	.size	g_totle_sys_slc_erase_count, 4
15663g_totle_sys_slc_erase_count:
15664	.space	4
15665	.type	g_max_erase_count, %object
15666	.size	g_max_erase_count, 4
15667g_max_erase_count:
15668	.space	4
15669	.type	g_min_erase_count, %object
15670	.size	g_min_erase_count, 4
15671g_min_erase_count:
15672	.space	4
15673	.type	c_ftl_nand_data_op_blks_per_plane, %object
15674	.size	c_ftl_nand_data_op_blks_per_plane, 2
15675c_ftl_nand_data_op_blks_per_plane:
15676	.space	2
15677	.space	2
15678	.type	gSysInfo, %object
15679	.size	gSysInfo, 16
15680gSysInfo:
15681	.space	16
15682	.type	g_sys_ext_data, %object
15683	.size	g_sys_ext_data, 512
15684g_sys_ext_data:
15685	.space	512
15686	.type	g_gc_free_blk_threshold, %object
15687	.size	g_gc_free_blk_threshold, 2
15688g_gc_free_blk_threshold:
15689	.space	2
15690	.type	g_gc_merge_free_blk_threshold, %object
15691	.size	g_gc_merge_free_blk_threshold, 2
15692g_gc_merge_free_blk_threshold:
15693	.space	2
15694	.type	g_gc_skip_write_count, %object
15695	.size	g_gc_skip_write_count, 4
15696g_gc_skip_write_count:
15697	.space	4
15698	.type	g_gc_blk_index, %object
15699	.size	g_gc_blk_index, 2
15700g_gc_blk_index:
15701	.space	2
15702	.space	2
15703	.type	g_in_swl_replace, %object
15704	.size	g_in_swl_replace, 4
15705g_in_swl_replace:
15706	.space	4
15707	.type	g_gc_num_req, %object
15708	.size	g_gc_num_req, 4
15709g_gc_num_req:
15710	.space	4
15711	.type	gp_gc_page_buf_info, %object
15712	.size	gp_gc_page_buf_info, 4
15713gp_gc_page_buf_info:
15714	.space	4
15715	.type	p_gc_data_buf, %object
15716	.size	p_gc_data_buf, 4
15717p_gc_data_buf:
15718	.space	4
15719	.type	p_gc_spare_buf, %object
15720	.size	p_gc_spare_buf, 4
15721p_gc_spare_buf:
15722	.space	4
15723	.type	req_gc, %object
15724	.size	req_gc, 4
15725req_gc:
15726	.space	4
15727	.type	c_gc_page_buf_num, %object
15728	.size	c_gc_page_buf_num, 4
15729c_gc_page_buf_num:
15730	.space	4
15731	.type	p_gc_blk_tbl, %object
15732	.size	p_gc_blk_tbl, 4
15733p_gc_blk_tbl:
15734	.space	4
15735	.type	g_gc_blk_num, %object
15736	.size	g_gc_blk_num, 2
15737g_gc_blk_num:
15738	.space	2
15739	.space	2
15740	.type	p_gc_page_info, %object
15741	.size	p_gc_page_info, 4
15742p_gc_page_info:
15743	.space	4
15744	.type	g_gc_page_offset, %object
15745	.size	g_gc_page_offset, 2
15746g_gc_page_offset:
15747	.space	2
15748	.type	g_gc_bad_block_temp_num, %object
15749	.size	g_gc_bad_block_temp_num, 2
15750g_gc_bad_block_temp_num:
15751	.space	2
15752	.type	g_gc_bad_block_temp_tbl, %object
15753	.size	g_gc_bad_block_temp_tbl, 34
15754g_gc_bad_block_temp_tbl:
15755	.space	34
15756	.type	g_gc_bad_block_gc_index, %object
15757	.size	g_gc_bad_block_gc_index, 2
15758g_gc_bad_block_gc_index:
15759	.space	2
15760	.type	g_nand_ops, %object
15761	.size	g_nand_ops, 24
15762g_nand_ops:
15763	.space	24
15764	.type	req_erase, %object
15765	.size	req_erase, 4
15766req_erase:
15767	.space	4
15768	.type	g_in_gc_progress, %object
15769	.size	g_in_gc_progress, 4
15770g_in_gc_progress:
15771	.space	4
15772	.type	g_gc_head_data_block, %object
15773	.size	g_gc_head_data_block, 4
15774g_gc_head_data_block:
15775	.space	4
15776	.type	g_gc_head_data_block_count, %object
15777	.size	g_gc_head_data_block_count, 4
15778g_gc_head_data_block_count:
15779	.space	4
15780	.type	g_cur_erase_blk, %object
15781	.size	g_cur_erase_blk, 4
15782g_cur_erase_blk:
15783	.space	4
15784	.type	req_read, %object
15785	.size	req_read, 4
15786req_read:
15787	.space	4
15788	.type	req_gc_dst, %object
15789	.size	req_gc_dst, 4
15790req_gc_dst:
15791	.space	4
15792	.type	req_prgm, %object
15793	.size	req_prgm, 4
15794req_prgm:
15795	.space	4
15796	.type	p_sys_data_buf, %object
15797	.size	p_sys_data_buf, 4
15798p_sys_data_buf:
15799	.space	4
15800	.type	p_sys_data_buf_1, %object
15801	.size	p_sys_data_buf_1, 4
15802p_sys_data_buf_1:
15803	.space	4
15804	.type	p_vendor_data_buf, %object
15805	.size	p_vendor_data_buf, 4
15806p_vendor_data_buf:
15807	.space	4
15808	.type	p_io_data_buf_0, %object
15809	.size	p_io_data_buf_0, 4
15810p_io_data_buf_0:
15811	.space	4
15812	.type	p_io_data_buf_1, %object
15813	.size	p_io_data_buf_1, 4
15814p_io_data_buf_1:
15815	.space	4
15816	.type	sftl_nand_check_buf, %object
15817	.size	sftl_nand_check_buf, 4
15818sftl_nand_check_buf:
15819	.space	4
15820	.type	sftl_temp_buf, %object
15821	.size	sftl_temp_buf, 4
15822sftl_temp_buf:
15823	.space	4
15824	.type	sftl_nand_check_spare_buf, %object
15825	.size	sftl_nand_check_spare_buf, 4
15826sftl_nand_check_spare_buf:
15827	.space	4
15828	.type	p_sys_spare_buf, %object
15829	.size	p_sys_spare_buf, 4
15830p_sys_spare_buf:
15831	.space	4
15832	.type	p_io_spare_buf, %object
15833	.size	p_io_spare_buf, 4
15834p_io_spare_buf:
15835	.space	4
15836	.type	g_ect_tbl_info_size, %object
15837	.size	g_ect_tbl_info_size, 2
15838g_ect_tbl_info_size:
15839	.space	2
15840	.space	2
15841	.type	p_swl_mul_table, %object
15842	.size	p_swl_mul_table, 4
15843p_swl_mul_table:
15844	.space	4
15845	.type	gp_ect_tbl_info, %object
15846	.size	gp_ect_tbl_info, 4
15847gp_ect_tbl_info:
15848	.space	4
15849	.type	p_valid_page_count_check_table, %object
15850	.size	p_valid_page_count_check_table, 4
15851p_valid_page_count_check_table:
15852	.space	4
15853	.type	p_map_block_table, %object
15854	.size	p_map_block_table, 4
15855p_map_block_table:
15856	.space	4
15857	.type	p_map_block_valid_page_count, %object
15858	.size	p_map_block_valid_page_count, 4
15859p_map_block_valid_page_count:
15860	.space	4
15861	.type	p_vendor_block_valid_page_count, %object
15862	.size	p_vendor_block_valid_page_count, 4
15863p_vendor_block_valid_page_count:
15864	.space	4
15865	.type	p_vendor_block_ver_table, %object
15866	.size	p_vendor_block_ver_table, 4
15867p_vendor_block_ver_table:
15868	.space	4
15869	.type	p_vendor_region_ppn_table, %object
15870	.size	p_vendor_region_ppn_table, 4
15871p_vendor_region_ppn_table:
15872	.space	4
15873	.type	p_map_region_ppn_table, %object
15874	.size	p_map_region_ppn_table, 4
15875p_map_region_ppn_table:
15876	.space	4
15877	.type	p_map_block_ver_table, %object
15878	.size	p_map_block_ver_table, 4
15879p_map_block_ver_table:
15880	.space	4
15881	.type	p_l2p_map_buf, %object
15882	.size	p_l2p_map_buf, 4
15883p_l2p_map_buf:
15884	.space	4
15885	.type	c_ftl_nand_bbm_buf_size, %object
15886	.size	c_ftl_nand_bbm_buf_size, 2
15887c_ftl_nand_bbm_buf_size:
15888	.space	2
15889	.space	2
15890	.type	gL2pMapInfo, %object
15891	.size	gL2pMapInfo, 44
15892gL2pMapInfo:
15893	.space	44
15894	.type	g_totle_map_block, %object
15895	.size	g_totle_map_block, 2
15896g_totle_map_block:
15897	.space	2
15898	.type	g_tmp_data_superblock_id, %object
15899	.size	g_tmp_data_superblock_id, 2
15900g_tmp_data_superblock_id:
15901	.space	2
15902	.type	g_totle_swl_count, %object
15903	.size	g_totle_swl_count, 4
15904g_totle_swl_count:
15905	.space	4
15906	.type	ftl_gc_temp_power_lost_recovery_flag, %object
15907	.size	ftl_gc_temp_power_lost_recovery_flag, 4
15908ftl_gc_temp_power_lost_recovery_flag:
15909	.space	4
15910	.type	g_recovery_page_min_ver, %object
15911	.size	g_recovery_page_min_ver, 4
15912g_recovery_page_min_ver:
15913	.space	4
15914	.type	req_sys, %object
15915	.size	req_sys, 20
15916req_sys:
15917	.space	20
15918	.type	g_power_lost_recovery_flag, %object
15919	.size	g_power_lost_recovery_flag, 2
15920g_power_lost_recovery_flag:
15921	.space	2
15922	.space	2
15923	.type	g_recovery_page_num, %object
15924	.size	g_recovery_page_num, 4
15925g_recovery_page_num:
15926	.space	4
15927	.type	g_recovery_ppa_tbl, %object
15928	.size	g_recovery_ppa_tbl, 128
15929g_recovery_ppa_tbl:
15930	.space	128
15931	.type	gVendorBlkInfo, %object
15932	.size	gVendorBlkInfo, 44
15933gVendorBlkInfo:
15934	.space	44
15935	.type	g_ect_tbl_power_up_flush, %object
15936	.size	g_ect_tbl_power_up_flush, 2
15937g_ect_tbl_power_up_flush:
15938	.space	2
15939	.space	2
15940	.type	gc_discard_updated, %object
15941	.size	gc_discard_updated, 4
15942gc_discard_updated:
15943	.space	4
15944	.type	gc_ink_free_return_value, %object
15945	.size	gc_ink_free_return_value, 2
15946gc_ink_free_return_value:
15947	.space	2
15948	.type	g_gc_cur_blk_valid_pages, %object
15949	.size	g_gc_cur_blk_valid_pages, 2
15950g_gc_cur_blk_valid_pages:
15951	.space	2
15952	.type	g_gc_cur_blk_max_valid_pages, %object
15953	.size	g_gc_cur_blk_max_valid_pages, 2
15954g_gc_cur_blk_max_valid_pages:
15955	.space	2
15956	.space	2
15957	.type	g_ftl_nand_free_count, %object
15958	.size	g_ftl_nand_free_count, 4
15959g_ftl_nand_free_count:
15960	.space	4
15961	.type	g_MaxLbn, %object
15962	.size	g_MaxLbn, 4
15963g_MaxLbn:
15964	.space	4
15965	.type	idb_need_write_back, %object
15966	.size	idb_need_write_back, 4
15967idb_need_write_back:
15968	.space	4
15969	.type	idb_buf, %object
15970	.size	idb_buf, 4
15971idb_buf:
15972	.space	4
15973	.type	gp_flash_check_buf, %object
15974	.size	gp_flash_check_buf, 4
15975gp_flash_check_buf:
15976	.space	4
15977	.type	_flash_read, %object
15978	.size	_flash_read, 4
15979_flash_read:
15980	.space	4
15981	.type	_flash_write, %object
15982	.size	_flash_write, 4
15983_flash_write:
15984	.space	4
15985	.type	g_vendor, %object
15986	.size	g_vendor, 4
15987g_vendor:
15988	.space	4
15989	.type	check_vpc_table, %object
15990	.size	check_vpc_table, 16384
15991check_vpc_table:
15992	.space	16384
15993	.type	gp_last_act_superblock, %object
15994	.size	gp_last_act_superblock, 4
15995gp_last_act_superblock:
15996	.space	4
15997	.ident	"GCC: (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621"
15998	.section	.note.GNU-stack,"",%progbits
15999