xref: /OK3568_Linux_fs/kernel/drivers/rkflash/rk_sftl_arm_v7_thumb.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1/* SPDX-License-Identifier: GPL-2.0 */
2
3/* Copyright (c) 2018-2022 Rockchip Electronics Co. Ltd.
4 * date: 2022-08-15
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 unified
19	.syntax unified
20	.global	__aeabi_uidiv
21	.thumb
22	.syntax unified
23	.align	1
24	.syntax unified
25	.thumb
26	.thumb_func
27	.fpu softvfp
28	.type	l2p_addr_tran, %function
29l2p_addr_tran:
30	.fnstart
31	@ args = 0, pretend = 0, frame = 0
32	@ frame_needed = 0, uses_anonymous_args = 0
33	push	{r3, r4, r5, r6, r7, r8, r9, lr}
34	.save {r3, r4, r5, r6, r7, r8, r9, lr}
35	mov	r7, r1
36	ldr	r3, .L3
37	mov	r8, r2
38	ldrh	r9, [r3, #8]
39	ldrh	r6, [r3, #10]
40	ldrh	r3, [r3, #14]
41	cmp	r3, #4
42	itt	eq
43	lsleq	r4, r6, #1
44	lsreq	r9, r9, #1
45	mov	r1, r9
46	it	eq
47	uxtheq	r6, r4
48	ldr	r4, [r0, #4]
49	lsrs	r5, r4, #10
50	ubfx	r0, r4, #10, #16
51	bl	__aeabi_uidiv
52	uxth	r0, r0
53	uxth	r5, r5
54	ubfx	r4, r4, #0, #10
55	mls	r5, r0, r9, r5
56	mla	r4, r6, r5, r4
57	str	r4, [r7]
58	str	r0, [r8]
59	movs	r0, #0
60	pop	{r3, r4, r5, r6, r7, r8, r9, pc}
61.L4:
62	.align	2
63.L3:
64	.word	.LANCHOR0
65	.fnend
66	.size	l2p_addr_tran, .-l2p_addr_tran
67	.align	1
68	.syntax unified
69	.thumb
70	.thumb_func
71	.fpu softvfp
72	.type	_copy_from_user, %function
73_copy_from_user:
74	.fnstart
75	@ args = 0, pretend = 0, frame = 0
76	@ frame_needed = 0, uses_anonymous_args = 0
77	push	{r3, r4, r5, r6, r7, lr}
78	.save {r3, r4, r5, r6, r7, lr}
79	mov	r6, r0
80	mov	r4, r2
81	mov	r3, sp
82	bic	r3, r3, #8160
83	bic	r3, r3, #31
84	ldr	r3, [r3, #8]
85	.syntax unified
86@ 157 "./include/linux/uaccess.h" 1
87	.syntax unified
88adds r7, r1, r2; sbcscc r7, r7, r3; movcc r3, #0
89@ 0 "" 2
90	.thumb
91	.syntax unified
92	cbnz	r3, .L8
93	bl	arm_copy_from_user
94	mov	r5, r0
95	cbz	r0, .L5
96.L6:
97	subs	r4, r4, r5
98	mov	r2, r5
99	adds	r0, r6, r4
100	movs	r1, #0
101	bl	memset
102.L5:
103	mov	r0, r5
104	pop	{r3, r4, r5, r6, r7, pc}
105.L8:
106	mov	r5, r2
107	b	.L6
108	.fnend
109	.size	_copy_from_user, .-_copy_from_user
110	.section	.rodata.str1.1,"aMS",%progbits,1
111.LC0:
112	.ascii	"SFTL version: 5.0.58 20220814\000"
113.LC1:
114	.ascii	"\012%s\012\000"
115.LC2:
116	.ascii	"act blk: %x %x %x %x %x %x\012\000"
117.LC3:
118	.ascii	"buf blk: %x %x %x %x %x %x\012\000"
119.LC4:
120	.ascii	"tmp blk: %x %x %x %x %x %x\012\000"
121.LC5:
122	.ascii	"gc blk: %x %x %x %x %x %x\012\000"
123.LC6:
124	.ascii	"free blk: %x %x %x\012\000"
125	.text
126	.align	1
127	.global	ftl_print_sblk_info
128	.syntax unified
129	.thumb
130	.thumb_func
131	.fpu softvfp
132	.type	ftl_print_sblk_info, %function
133ftl_print_sblk_info:
134	.fnstart
135	@ args = 0, pretend = 0, frame = 0
136	@ frame_needed = 0, uses_anonymous_args = 0
137	push	{r0, r1, r2, r3, r4, lr}
138	.save {r4, lr}
139	.pad #16
140	ldr	r4, .L13
141	ldr	r1, .L13+4
142	ldr	r0, .L13+8
143	bl	sftl_printk
144	ldr	r0, .L13+12
145	ldrh	r1, [r4, #24]
146	ldr	r3, [r4, #72]
147	ldrh	r2, [r4, #26]
148	ldrh	r3, [r3, r1, lsl #1]
149	str	r3, [sp, #8]
150	ldrh	r3, [r4, #28]
151	str	r3, [sp, #4]
152	ldrb	r3, [r4, #32]	@ zero_extendqisi2
153	str	r3, [sp]
154	ldrb	r3, [r4, #30]	@ zero_extendqisi2
155	bl	sftl_printk
156	ldrh	r1, [r4, #76]
157	ldr	r3, [r4, #72]
158	ldrh	r2, [r4, #78]
159	ldr	r0, .L13+16
160	ldrh	r3, [r3, r1, lsl #1]
161	str	r3, [sp, #8]
162	ldrh	r3, [r4, #80]
163	str	r3, [sp, #4]
164	ldrb	r3, [r4, #84]	@ zero_extendqisi2
165	str	r3, [sp]
166	ldrb	r3, [r4, #82]	@ zero_extendqisi2
167	bl	sftl_printk
168	ldrh	r1, [r4, #124]
169	ldr	r3, [r4, #72]
170	ldrh	r2, [r4, #126]
171	ldr	r0, .L13+20
172	ldrh	r3, [r3, r1, lsl #1]
173	str	r3, [sp, #8]
174	ldrh	r3, [r4, #128]
175	str	r3, [sp, #4]
176	ldrb	r3, [r4, #132]	@ zero_extendqisi2
177	str	r3, [sp]
178	ldrb	r3, [r4, #130]	@ zero_extendqisi2
179	bl	sftl_printk
180	ldrh	r1, [r4, #172]
181	ldr	r3, [r4, #72]
182	ldrh	r2, [r4, #174]
183	ldr	r0, .L13+24
184	ldrh	r3, [r3, r1, lsl #1]
185	str	r3, [sp, #8]
186	ldrh	r3, [r4, #176]
187	str	r3, [sp, #4]
188	ldrb	r3, [r4, #180]	@ zero_extendqisi2
189	str	r3, [sp]
190	ldrb	r3, [r4, #178]	@ zero_extendqisi2
191	bl	sftl_printk
192	ldrh	r3, [r4, #220]
193	ldrh	r2, [r4, #222]
194	ldrh	r1, [r4, #224]
195	ldr	r0, .L13+28
196	add	sp, sp, #16
197	@ sp needed
198	pop	{r4, lr}
199	b	sftl_printk
200.L14:
201	.align	2
202.L13:
203	.word	.LANCHOR0
204	.word	.LC0
205	.word	.LC1
206	.word	.LC2
207	.word	.LC3
208	.word	.LC4
209	.word	.LC5
210	.word	.LC6
211	.fnend
212	.size	ftl_print_sblk_info, .-ftl_print_sblk_info
213	.align	1
214	.global	Ftl_log2
215	.syntax unified
216	.thumb
217	.thumb_func
218	.fpu softvfp
219	.type	Ftl_log2, %function
220Ftl_log2:
221	.fnstart
222	@ args = 0, pretend = 0, frame = 0
223	@ frame_needed = 0, uses_anonymous_args = 0
224	@ link register save eliminated.
225	movs	r1, #0
226	movs	r2, #1
227.L16:
228	uxth	r3, r1
229	cmp	r2, r0
230	add	r1, r1, #1
231	bls	.L17
232	subs	r0, r3, #1
233	uxth	r0, r0
234	bx	lr
235.L17:
236	lsls	r2, r2, #1
237	b	.L16
238	.fnend
239	.size	Ftl_log2, .-Ftl_log2
240	.align	1
241	.global	FtlPrintInfo
242	.syntax unified
243	.thumb
244	.thumb_func
245	.fpu softvfp
246	.type	FtlPrintInfo, %function
247FtlPrintInfo:
248	.fnstart
249	@ args = 0, pretend = 0, frame = 0
250	@ frame_needed = 0, uses_anonymous_args = 0
251	@ link register save eliminated.
252	bx	lr
253	.fnend
254	.size	FtlPrintInfo, .-FtlPrintInfo
255	.align	1
256	.global	FtlSysBlkNumInit
257	.syntax unified
258	.thumb
259	.thumb_func
260	.fpu softvfp
261	.type	FtlSysBlkNumInit, %function
262FtlSysBlkNumInit:
263	.fnstart
264	@ args = 0, pretend = 0, frame = 0
265	@ frame_needed = 0, uses_anonymous_args = 0
266	@ link register save eliminated.
267	ldr	r3, .L20
268	cmp	r0, #24
269	it	cc
270	movcc	r0, #24
271	ldrh	r2, [r3, #232]
272	ldrh	r1, [r3, #242]
273	str	r0, [r3, #228]
274	muls	r2, r0, r2
275	subs	r0, r1, r0
276	ldr	r1, [r3, #248]
277	str	r2, [r3, #236]
278	strh	r0, [r3, #240]	@ movhi
279	subs	r2, r1, r2
280	movs	r0, #0
281	str	r2, [r3, #244]
282	bx	lr
283.L21:
284	.align	2
285.L20:
286	.word	.LANCHOR0
287	.fnend
288	.size	FtlSysBlkNumInit, .-FtlSysBlkNumInit
289	.global	__aeabi_idiv
290	.align	1
291	.global	FtlConstantsInit
292	.syntax unified
293	.thumb
294	.thumb_func
295	.fpu softvfp
296	.type	FtlConstantsInit, %function
297FtlConstantsInit:
298	.fnstart
299	@ args = 0, pretend = 0, frame = 0
300	@ frame_needed = 0, uses_anonymous_args = 0
301	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
302	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
303	mov	r7, r0
304	ldr	r4, .L33
305	ldrh	r2, [r0]
306	ldrh	r1, [r7, #14]
307	ldrh	r5, [r0, #2]
308	ldrh	r3, [r7, #6]
309	cmp	r1, #4
310	ldrh	r0, [r0, #4]
311	strh	r2, [r4, #252]	@ movhi
312	strh	r5, [r4, #254]	@ movhi
313	strh	r0, [r4, #256]	@ movhi
314	strh	r3, [r4, #242]	@ movhi
315	strh	r1, [r4, #258]	@ movhi
316	bne	.L23
317	lsrs	r3, r3, #1
318	strh	r3, [r4, #242]	@ movhi
319	movs	r3, #8
320	strh	r3, [r4, #258]	@ movhi
321.L24:
322	ldr	r1, .L33+4
323	movs	r3, #0
324.L25:
325	strb	r3, [r1], #1
326	adds	r3, r3, #1
327	cmp	r3, #32
328	bne	.L25
329	ldrh	r6, [r4, #242]
330	cmp	r2, #1
331	ldrh	r0, [r4, #256]
332	mov	r3, #0
333	it	ne
334	movne	r2, #5
335	strh	r3, [r4, #294]	@ movhi
336	strh	r2, [r4, #292]	@ movhi
337	mov	r9, #640
338	strh	r9, [r4, #296]	@ movhi
339	smulbb	r5, r5, r0
340	smulbb	r0, r0, r6
341	uxth	r5, r5
342	strh	r5, [r4, #232]	@ movhi
343	uxth	r0, r0
344	strh	r0, [r4, #298]	@ movhi
345	bl	Ftl_log2
346	ldrh	fp, [r7, #12]
347	ldrh	r10, [r4, #258]
348	strh	r0, [r4, #300]	@ movhi
349	mov	r0, r10
350	strh	fp, [r4, #302]	@ movhi
351	smulbb	r3, r5, fp
352	strh	fp, [r4, #304]	@ movhi
353	strh	r3, [r4, #306]	@ movhi
354	bl	Ftl_log2
355	lsl	r3, r10, #9
356	mul	r1, fp, r10
357	mov	r8, r0
358	strh	r0, [r4, #308]	@ movhi
359	uxth	r3, r3
360	strh	r3, [r4, #310]	@ movhi
361	asr	r9, r9, r8
362	add	r8, r8, #9
363	lsrs	r3, r3, #8
364	strh	r3, [r4, #312]	@ movhi
365	ldrh	r3, [r7, #20]
366	mov	r0, #5120
367	strh	r3, [r4, #314]	@ movhi
368	mul	r3, r6, r5
369	str	r3, [r4, #248]
370	lsls	r6, r6, #6
371	add	r9, r9, #2
372	asr	r6, r6, r8
373	muls	r3, r1, r3
374	asrs	r3, r3, #11
375	str	r3, [r4, #316]
376	bl	__aeabi_idiv
377	cmp	r0, #4
378	strh	r6, [r4, #324]	@ movhi
379	uxth	r6, r6
380	itet	le
381	movle	r3, #4
382	strhgt	r0, [r4, #320]	@ movhi
383	strhle	r3, [r4, #320]	@ movhi
384	mov	r1, r5
385	mul	r3, r6, r5
386	strh	r9, [r4, #322]	@ movhi
387	ldrh	r0, [r4, #320]
388	str	r3, [r4, #328]
389	bl	__aeabi_uidiv
390	cmp	r5, #1
391	uxtah	r6, r6, r0
392	ite	ne
393	addne	r6, r6, #8
394	addeq	r6, r6, #12
395	str	r6, [r4, #228]
396	ldrh	r0, [r4, #228]
397	bl	FtlSysBlkNumInit
398	ldr	r3, [r4, #228]
399	ldr	r2, [r4, #244]
400	movs	r0, #0
401	str	r3, [r4, #332]
402	ldrh	r3, [r4, #302]
403	str	r0, [r4, #340]
404	muls	r3, r2, r3
405	ldrh	r2, [r4, #308]
406	adds	r2, r2, #9
407	lsls	r3, r3, #2
408	lsrs	r3, r3, r2
409	adds	r3, r3, #2
410	strh	r3, [r4, #336]	@ movhi
411	movs	r3, #32
412	strh	r3, [r4, #338]	@ movhi
413	ldrh	r3, [r4, #320]
414	adds	r3, r3, #3
415	strh	r3, [r4, #320]	@ movhi
416	ldr	r3, [r4, #328]
417	adds	r3, r3, #3
418	str	r3, [r4, #328]
419	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
420.L23:
421	cmp	r1, #8
422	bne	.L24
423	cmp	r0, #1
424	itttt	eq
425	lsreq	r3, r3, #1
426	strheq	r3, [r4, #242]	@ movhi
427	moveq	r3, #2
428	strheq	r3, [r4, #256]	@ movhi
429	b	.L24
430.L34:
431	.align	2
432.L33:
433	.word	.LANCHOR0
434	.word	.LANCHOR0+260
435	.fnend
436	.size	FtlConstantsInit, .-FtlConstantsInit
437	.align	1
438	.global	IsBlkInVendorPart
439	.syntax unified
440	.thumb
441	.thumb_func
442	.fpu softvfp
443	.type	IsBlkInVendorPart, %function
444IsBlkInVendorPart:
445	.fnstart
446	@ args = 0, pretend = 0, frame = 0
447	@ frame_needed = 0, uses_anonymous_args = 0
448	@ link register save eliminated.
449	ldr	r2, .L41
450	mov	r1, r0
451	ldrh	r0, [r2, #344]
452	cbz	r0, .L35
453	ldr	r3, [r2, #348]
454	ldrh	r2, [r2, #320]
455	add	r2, r3, r2, lsl #1
456.L37:
457	cmp	r3, r2
458	bne	.L38
459	movs	r0, #0
460	bx	lr
461.L38:
462	ldrh	r0, [r3], #2
463	cmp	r1, r0
464	bne	.L37
465	movs	r0, #1
466.L35:
467	bx	lr
468.L42:
469	.align	2
470.L41:
471	.word	.LANCHOR0
472	.fnend
473	.size	IsBlkInVendorPart, .-IsBlkInVendorPart
474	.align	1
475	.global	FtlCacheWriteBack
476	.syntax unified
477	.thumb
478	.thumb_func
479	.fpu softvfp
480	.type	FtlCacheWriteBack, %function
481FtlCacheWriteBack:
482	.fnstart
483	@ args = 0, pretend = 0, frame = 0
484	@ frame_needed = 0, uses_anonymous_args = 0
485	@ link register save eliminated.
486	movs	r0, #0
487	bx	lr
488	.fnend
489	.size	FtlCacheWriteBack, .-FtlCacheWriteBack
490	.align	1
491	.global	sftl_get_density
492	.syntax unified
493	.thumb
494	.thumb_func
495	.fpu softvfp
496	.type	sftl_get_density, %function
497sftl_get_density:
498	.fnstart
499	@ args = 0, pretend = 0, frame = 0
500	@ frame_needed = 0, uses_anonymous_args = 0
501	@ link register save eliminated.
502	ldr	r3, .L45
503	ldr	r0, [r3, #340]
504	bx	lr
505.L46:
506	.align	2
507.L45:
508	.word	.LANCHOR0
509	.fnend
510	.size	sftl_get_density, .-sftl_get_density
511	.global	__aeabi_uidivmod
512	.section	.rodata.str1.1
513.LC7:
514	.ascii	"phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
515	.ascii	"\000"
516	.text
517	.align	1
518	.global	FtlBbmMapBadBlock
519	.syntax unified
520	.thumb
521	.thumb_func
522	.fpu softvfp
523	.type	FtlBbmMapBadBlock, %function
524FtlBbmMapBadBlock:
525	.fnstart
526	@ args = 0, pretend = 0, frame = 0
527	@ frame_needed = 0, uses_anonymous_args = 0
528	push	{r0, r1, r2, r4, r5, r6, r7, lr}
529	.save {r4, r5, r6, r7, lr}
530	.pad #12
531	mov	r6, r0
532	ldr	r5, .L48
533	ldrh	r4, [r5, #298]
534	mov	r1, r4
535	bl	__aeabi_uidiv
536	uxth	r7, r0
537	mov	r1, r4
538	mov	r0, r6
539	bl	__aeabi_uidivmod
540	add	r3, r5, r7, lsl #2
541	ubfx	r2, r1, #5, #11
542	and	r0, r1, #31
543	movs	r4, #1
544	ldr	r3, [r3, #380]
545	lsls	r4, r4, r0
546	ldr	r0, [r3, r2, lsl #2]
547	orrs	r4, r4, r0
548	ldr	r0, .L48+4
549	str	r4, [r3, r2, lsl #2]
550	uxth	r3, r1
551	mov	r2, r7
552	mov	r1, r6
553	str	r4, [sp]
554	bl	sftl_printk
555	ldrh	r3, [r5, #358]
556	movs	r0, #0
557	adds	r3, r3, #1
558	strh	r3, [r5, #358]	@ movhi
559	add	sp, sp, #12
560	@ sp needed
561	pop	{r4, r5, r6, r7, pc}
562.L49:
563	.align	2
564.L48:
565	.word	.LANCHOR0
566	.word	.LC7
567	.fnend
568	.size	FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
569	.align	1
570	.global	FtlBbmIsBadBlock
571	.syntax unified
572	.thumb
573	.thumb_func
574	.fpu softvfp
575	.type	FtlBbmIsBadBlock, %function
576FtlBbmIsBadBlock:
577	.fnstart
578	@ args = 0, pretend = 0, frame = 0
579	@ frame_needed = 0, uses_anonymous_args = 0
580	push	{r3, r4, r5, r6, r7, lr}
581	.save {r3, r4, r5, r6, r7, lr}
582	mov	r6, r0
583	ldr	r5, .L51
584	ldrh	r7, [r5, #298]
585	mov	r1, r7
586	bl	__aeabi_uidivmod
587	mov	r0, r6
588	uxth	r4, r1
589	mov	r1, r7
590	bl	__aeabi_uidiv
591	uxth	r0, r0
592	lsrs	r2, r4, #5
593	and	r4, r4, #31
594	add	r5, r5, r0, lsl #2
595	ldr	r3, [r5, #380]
596	ldr	r0, [r3, r2, lsl #2]
597	lsrs	r0, r0, r4
598	and	r0, r0, #1
599	pop	{r3, r4, r5, r6, r7, pc}
600.L52:
601	.align	2
602.L51:
603	.word	.LANCHOR0
604	.fnend
605	.size	FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
606	.align	1
607	.global	FtlBbtInfoPrint
608	.syntax unified
609	.thumb
610	.thumb_func
611	.fpu softvfp
612	.type	FtlBbtInfoPrint, %function
613FtlBbtInfoPrint:
614	.fnstart
615	@ args = 0, pretend = 0, frame = 0
616	@ frame_needed = 0, uses_anonymous_args = 0
617	@ link register save eliminated.
618	bx	lr
619	.fnend
620	.size	FtlBbtInfoPrint, .-FtlBbtInfoPrint
621	.align	1
622	.global	FtlBbtCalcTotleCnt
623	.syntax unified
624	.thumb
625	.thumb_func
626	.fpu softvfp
627	.type	FtlBbtCalcTotleCnt, %function
628FtlBbtCalcTotleCnt:
629	.fnstart
630	@ args = 0, pretend = 0, frame = 0
631	@ frame_needed = 0, uses_anonymous_args = 0
632	ldr	r3, .L61
633	push	{r4, r5, r6, lr}
634	.save {r4, r5, r6, lr}
635	movs	r5, #0
636	mov	r4, r5
637	ldrh	r6, [r3, #298]
638	ldrh	r3, [r3, #254]
639	muls	r6, r3, r6
640.L55:
641	uxth	r0, r5
642	cmp	r0, r6
643	blt	.L57
644	mov	r0, r4
645	pop	{r4, r5, r6, pc}
646.L57:
647	bl	FtlBbmIsBadBlock
648	cbz	r0, .L56
649	adds	r4, r4, #1
650	uxth	r4, r4
651.L56:
652	adds	r5, r5, #1
653	b	.L55
654.L62:
655	.align	2
656.L61:
657	.word	.LANCHOR0
658	.fnend
659	.size	FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
660	.align	1
661	.global	V2P_block
662	.syntax unified
663	.thumb
664	.thumb_func
665	.fpu softvfp
666	.type	V2P_block, %function
667V2P_block:
668	.fnstart
669	@ args = 0, pretend = 0, frame = 0
670	@ frame_needed = 0, uses_anonymous_args = 0
671	push	{r3, r4, r5, r6, r7, lr}
672	.save {r3, r4, r5, r6, r7, lr}
673	mov	r4, r1
674	ldr	r5, .L64
675	mov	r6, r0
676	ldrh	r7, [r5, #256]
677	mov	r1, r7
678	bl	__aeabi_uidiv
679	ldrh	r5, [r5, #298]
680	smulbb	r4, r7, r4
681	mov	r1, r7
682	smulbb	r5, r5, r0
683	mov	r0, r6
684	bl	__aeabi_uidivmod
685	add	r4, r4, r1
686	add	r4, r4, r5
687	uxth	r0, r4
688	pop	{r3, r4, r5, r6, r7, pc}
689.L65:
690	.align	2
691.L64:
692	.word	.LANCHOR0
693	.fnend
694	.size	V2P_block, .-V2P_block
695	.align	1
696	.global	P2V_plane
697	.syntax unified
698	.thumb
699	.thumb_func
700	.fpu softvfp
701	.type	P2V_plane, %function
702P2V_plane:
703	.fnstart
704	@ args = 0, pretend = 0, frame = 0
705	@ frame_needed = 0, uses_anonymous_args = 0
706	ldr	r3, .L67
707	push	{r4, r5, r6, lr}
708	.save {r4, r5, r6, lr}
709	mov	r5, r0
710	ldrh	r6, [r3, #256]
711	ldrh	r1, [r3, #298]
712	bl	__aeabi_uidiv
713	mov	r1, r6
714	smulbb	r4, r0, r6
715	mov	r0, r5
716	bl	__aeabi_uidivmod
717	adds	r0, r4, r1
718	uxth	r0, r0
719	pop	{r4, r5, r6, pc}
720.L68:
721	.align	2
722.L67:
723	.word	.LANCHOR0
724	.fnend
725	.size	P2V_plane, .-P2V_plane
726	.align	1
727	.global	P2V_block_in_plane
728	.syntax unified
729	.thumb
730	.thumb_func
731	.fpu softvfp
732	.type	P2V_block_in_plane, %function
733P2V_block_in_plane:
734	.fnstart
735	@ args = 0, pretend = 0, frame = 0
736	@ frame_needed = 0, uses_anonymous_args = 0
737	push	{r4, lr}
738	.save {r4, lr}
739	ldr	r4, .L70
740	ldrh	r1, [r4, #298]
741	bl	__aeabi_uidivmod
742	mov	r0, r1
743	ldrh	r1, [r4, #256]
744	uxth	r0, r0
745	bl	__aeabi_uidiv
746	uxth	r0, r0
747	pop	{r4, pc}
748.L71:
749	.align	2
750.L70:
751	.word	.LANCHOR0
752	.fnend
753	.size	P2V_block_in_plane, .-P2V_block_in_plane
754	.align	1
755	.global	ftl_cmp_data_ver
756	.syntax unified
757	.thumb
758	.thumb_func
759	.fpu softvfp
760	.type	ftl_cmp_data_ver, %function
761ftl_cmp_data_ver:
762	.fnstart
763	@ args = 0, pretend = 0, frame = 0
764	@ frame_needed = 0, uses_anonymous_args = 0
765	@ link register save eliminated.
766	cmp	r0, r1
767	bls	.L73
768	subs	r0, r0, r1
769	cmp	r0, #-2147483648
770	ite	hi
771	movhi	r0, #0
772	movls	r0, #1
773	bx	lr
774.L73:
775	subs	r1, r1, r0
776	cmp	r1, #-2147483648
777	ite	ls
778	movls	r0, #0
779	movhi	r0, #1
780	bx	lr
781	.fnend
782	.size	ftl_cmp_data_ver, .-ftl_cmp_data_ver
783	.align	1
784	.global	FtlFreeSysBlkQueueEmpty
785	.syntax unified
786	.thumb
787	.thumb_func
788	.fpu softvfp
789	.type	FtlFreeSysBlkQueueEmpty, %function
790FtlFreeSysBlkQueueEmpty:
791	.fnstart
792	@ args = 0, pretend = 0, frame = 0
793	@ frame_needed = 0, uses_anonymous_args = 0
794	@ link register save eliminated.
795	ldr	r3, .L76
796	ldrh	r0, [r3, #418]
797	clz	r0, r0
798	lsrs	r0, r0, #5
799	bx	lr
800.L77:
801	.align	2
802.L76:
803	.word	.LANCHOR0
804	.fnend
805	.size	FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
806	.align	1
807	.global	FtlFreeSysBlkQueueFull
808	.syntax unified
809	.thumb
810	.thumb_func
811	.fpu softvfp
812	.type	FtlFreeSysBlkQueueFull, %function
813FtlFreeSysBlkQueueFull:
814	.fnstart
815	@ args = 0, pretend = 0, frame = 0
816	@ frame_needed = 0, uses_anonymous_args = 0
817	@ link register save eliminated.
818	ldr	r3, .L79
819	ldrh	r0, [r3, #418]
820	sub	r3, r0, #1024
821	rsbs	r0, r3, #0
822	adcs	r0, r0, r3
823	bx	lr
824.L80:
825	.align	2
826.L79:
827	.word	.LANCHOR0
828	.fnend
829	.size	FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
830	.align	1
831	.global	FtlFreeSysBLkSort
832	.syntax unified
833	.thumb
834	.thumb_func
835	.fpu softvfp
836	.type	FtlFreeSysBLkSort, %function
837FtlFreeSysBLkSort:
838	.fnstart
839	@ args = 0, pretend = 0, frame = 0
840	@ frame_needed = 0, uses_anonymous_args = 0
841	ldr	r3, .L90
842	push	{r4, r5, r6, lr}
843	.save {r4, r5, r6, lr}
844	ldrh	r2, [r3, #418]
845	cbz	r2, .L81
846	ldrh	r4, [r3, #2496]
847	movs	r0, #0
848	ldrh	r1, [r3, #414]
849	mov	r5, r0
850	ldrh	r2, [r3, #416]
851	and	r4, r4, #31
852.L84:
853	uxth	r6, r0
854	cmp	r4, r6
855	bhi	.L85
856	cbz	r5, .L81
857	strh	r1, [r3, #414]	@ movhi
858	strh	r2, [r3, #416]	@ movhi
859.L81:
860	pop	{r4, r5, r6, pc}
861.L85:
862	add	r5, r3, r1, lsl #1
863	adds	r1, r1, #1
864	adds	r0, r0, #1
865	ubfx	r1, r1, #0, #10
866	ldrh	r6, [r5, #420]
867	add	r5, r3, r2, lsl #1
868	adds	r2, r2, #1
869	strh	r6, [r5, #420]	@ movhi
870	ubfx	r2, r2, #0, #10
871	movs	r5, #1
872	b	.L84
873.L91:
874	.align	2
875.L90:
876	.word	.LANCHOR0
877	.fnend
878	.size	FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
879	.align	1
880	.global	IsInFreeQueue
881	.syntax unified
882	.thumb
883	.thumb_func
884	.fpu softvfp
885	.type	IsInFreeQueue, %function
886IsInFreeQueue:
887	.fnstart
888	@ args = 0, pretend = 0, frame = 0
889	@ frame_needed = 0, uses_anonymous_args = 0
890	ldr	r1, .L98
891	push	{r4, r5, lr}
892	.save {r4, r5, lr}
893	ldrh	r4, [r1, #418]
894	cmp	r4, #1024
895	beq	.L96
896	ldrh	r5, [r1, #414]
897	movs	r2, #0
898.L94:
899	cmp	r4, r2
900	bhi	.L95
901.L96:
902	movs	r0, #0
903.L92:
904	pop	{r4, r5, pc}
905.L95:
906	adds	r3, r5, r2
907	ubfx	r3, r3, #0, #10
908	add	r3, r1, r3, lsl #1
909	ldrh	r3, [r3, #420]
910	cmp	r3, r0
911	beq	.L97
912	adds	r2, r2, #1
913	b	.L94
914.L97:
915	movs	r0, #1
916	b	.L92
917.L99:
918	.align	2
919.L98:
920	.word	.LANCHOR0
921	.fnend
922	.size	IsInFreeQueue, .-IsInFreeQueue
923	.align	1
924	.global	insert_data_list
925	.syntax unified
926	.thumb
927	.thumb_func
928	.fpu softvfp
929	.type	insert_data_list, %function
930insert_data_list:
931	.fnstart
932	@ args = 0, pretend = 0, frame = 8
933	@ frame_needed = 0, uses_anonymous_args = 0
934	ldr	r3, .L115
935	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
936	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
937	.pad #12
938	ldrh	r2, [r3, #240]
939	cmp	r2, r0
940	bls	.L102
941	movs	r5, #6
942	ldr	ip, [r3, #2516]
943	movw	r2, #65535
944	muls	r5, r0, r5
945	add	r4, ip, r5
946	strh	r2, [r4, #2]	@ movhi
947	strh	r2, [ip, r5]	@ movhi
948	ldr	r1, [r3, #2520]
949	cbnz	r1, .L103
950.L114:
951	str	r4, [r3, #2520]
952	b	.L102
953.L103:
954	ldrh	r2, [r4, #4]
955	ldr	r9, [r3, #72]
956	ldrh	r7, [r9, r0, lsl #1]
957	cbz	r2, .L110
958	muls	r7, r2, r7
959.L104:
960	ldr	r8, [r3, #2516]
961	movw	fp, #65535
962	ldr	r6, .L115+4
963	sub	r2, r1, r8
964	asrs	r2, r2, #1
965	muls	r2, r6, r2
966	ldrh	r6, [r3, #240]
967	str	r6, [sp, #4]
968	movs	r6, #0
969	uxth	r2, r2
970.L108:
971	adds	r6, r6, #1
972	ldr	lr, [sp, #4]
973	uxth	r6, r6
974	cmp	r6, lr
975	bhi	.L102
976	cmp	r0, r2
977	beq	.L102
978	ldrh	r10, [r1, #4]
979	cmp	r10, #0
980	beq	.L106
981	ldrh	lr, [r9, r2, lsl #1]
982	mul	lr, r10, lr
983	cmp	lr, r7
984	bcs	.L106
985	ldrh	lr, [r1]
986	cmp	lr, fp
987	bne	.L107
988	strh	r2, [r4, #2]	@ movhi
989	strh	r0, [r1]	@ movhi
990	str	r4, [r3, #2524]
991.L102:
992	movs	r0, #0
993	add	sp, sp, #12
994	@ sp needed
995	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
996.L110:
997	mov	r7, #-1
998	b	.L104
999.L107:
1000	movs	r2, #6
1001	mla	r1, r2, lr, r8
1002	mov	r2, lr
1003	b	.L108
1004.L106:
1005	strh	r2, [ip, r5]	@ movhi
1006	ldrh	r2, [r1, #2]
1007	strh	r2, [r4, #2]	@ movhi
1008	ldr	r5, [r3, #2520]
1009	cmp	r1, r5
1010	bne	.L109
1011	strh	r0, [r1, #2]	@ movhi
1012	b	.L114
1013.L109:
1014	movs	r4, #6
1015	ldr	r3, [r3, #2516]
1016	muls	r2, r4, r2
1017	strh	r0, [r3, r2]	@ movhi
1018	strh	r0, [r1, #2]	@ movhi
1019	b	.L102
1020.L116:
1021	.align	2
1022.L115:
1023	.word	.LANCHOR0
1024	.word	-1431655765
1025	.fnend
1026	.size	insert_data_list, .-insert_data_list
1027	.section	.rodata.str1.1
1028.LC8:
1029	.ascii	"\012!!!!! error @ func:%s - line:%d\012\000"
1030	.text
1031	.align	1
1032	.global	INSERT_DATA_LIST
1033	.syntax unified
1034	.thumb
1035	.thumb_func
1036	.fpu softvfp
1037	.type	INSERT_DATA_LIST, %function
1038INSERT_DATA_LIST:
1039	.fnstart
1040	@ args = 0, pretend = 0, frame = 0
1041	@ frame_needed = 0, uses_anonymous_args = 0
1042	push	{r3, lr}
1043	.save {r3, lr}
1044	bl	insert_data_list
1045	ldr	r2, .L119
1046	ldrh	r3, [r2, #2528]
1047	adds	r3, r3, #1
1048	uxth	r3, r3
1049	strh	r3, [r2, #2528]	@ movhi
1050	ldrh	r2, [r2, #240]
1051	cmp	r2, r3
1052	bcs	.L117
1053	pop	{r3, lr}
1054	movs	r2, #214
1055	ldr	r1, .L119+4
1056	ldr	r0, .L119+8
1057	b	sftl_printk
1058.L117:
1059	pop	{r3, pc}
1060.L120:
1061	.align	2
1062.L119:
1063	.word	.LANCHOR0
1064	.word	.LANCHOR1
1065	.word	.LC8
1066	.fnend
1067	.size	INSERT_DATA_LIST, .-INSERT_DATA_LIST
1068	.align	1
1069	.global	insert_free_list
1070	.syntax unified
1071	.thumb
1072	.thumb_func
1073	.fpu softvfp
1074	.type	insert_free_list, %function
1075insert_free_list:
1076	.fnstart
1077	@ args = 0, pretend = 0, frame = 0
1078	@ frame_needed = 0, uses_anonymous_args = 0
1079	push	{r4, r5, r6, r7, r8, r9, r10, lr}
1080	.save {r4, r5, r6, r7, r8, r9, r10, lr}
1081	movw	r5, #65535
1082	cmp	r0, r5
1083	beq	.L122
1084	ldr	r1, .L129
1085	mov	lr, #6
1086	mul	r6, lr, r0
1087	ldr	r7, [r1, #2516]
1088	adds	r4, r7, r6
1089	strh	r5, [r4, #2]	@ movhi
1090	strh	r5, [r7, r6]	@ movhi
1091	ldr	r3, [r1, #2532]
1092	cbnz	r3, .L123
1093.L128:
1094	str	r4, [r1, #2532]
1095	b	.L122
1096.L123:
1097	ldr	ip, [r1, #2516]
1098	ldr	r10, .L129+4
1099	sub	r2, r3, ip
1100	ldr	r8, [r1, #2536]
1101	asrs	r2, r2, #1
1102	ldrh	r9, [r8, r0, lsl #1]
1103	mul	r2, r10, r2
1104	uxth	r2, r2
1105.L126:
1106	ldrh	r10, [r8, r2, lsl #1]
1107	cmp	r10, r9
1108	bcs	.L124
1109	ldrh	r10, [r3]
1110	cmp	r10, r5
1111	bne	.L125
1112	strh	r2, [r4, #2]	@ movhi
1113	strh	r0, [r3]	@ movhi
1114.L122:
1115	movs	r0, #0
1116	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
1117.L125:
1118	mla	r3, lr, r10, ip
1119	mov	r2, r10
1120	b	.L126
1121.L124:
1122	ldrh	r5, [r3, #2]
1123	strh	r5, [r4, #2]	@ movhi
1124	strh	r2, [r7, r6]	@ movhi
1125	ldr	r2, [r1, #2532]
1126	cmp	r2, r3
1127	bne	.L127
1128	strh	r0, [r3, #2]	@ movhi
1129	b	.L128
1130.L127:
1131	ldrh	r2, [r3, #2]
1132	movs	r4, #6
1133	ldr	r1, [r1, #2516]
1134	muls	r2, r4, r2
1135	strh	r0, [r1, r2]	@ movhi
1136	strh	r0, [r3, #2]	@ movhi
1137	b	.L122
1138.L130:
1139	.align	2
1140.L129:
1141	.word	.LANCHOR0
1142	.word	-1431655765
1143	.fnend
1144	.size	insert_free_list, .-insert_free_list
1145	.align	1
1146	.global	INSERT_FREE_LIST
1147	.syntax unified
1148	.thumb
1149	.thumb_func
1150	.fpu softvfp
1151	.type	INSERT_FREE_LIST, %function
1152INSERT_FREE_LIST:
1153	.fnstart
1154	@ args = 0, pretend = 0, frame = 0
1155	@ frame_needed = 0, uses_anonymous_args = 0
1156	push	{r3, lr}
1157	.save {r3, lr}
1158	bl	insert_free_list
1159	ldr	r2, .L133
1160	ldrh	r3, [r2, #224]
1161	adds	r3, r3, #1
1162	uxth	r3, r3
1163	strh	r3, [r2, #224]	@ movhi
1164	ldrh	r2, [r2, #240]
1165	cmp	r2, r3
1166	bcs	.L131
1167	pop	{r3, lr}
1168	movs	r2, #207
1169	ldr	r1, .L133+4
1170	ldr	r0, .L133+8
1171	b	sftl_printk
1172.L131:
1173	pop	{r3, pc}
1174.L134:
1175	.align	2
1176.L133:
1177	.word	.LANCHOR0
1178	.word	.LANCHOR1+17
1179	.word	.LC8
1180	.fnend
1181	.size	INSERT_FREE_LIST, .-INSERT_FREE_LIST
1182	.align	1
1183	.global	List_remove_node
1184	.syntax unified
1185	.thumb
1186	.thumb_func
1187	.fpu softvfp
1188	.type	List_remove_node, %function
1189List_remove_node:
1190	.fnstart
1191	@ args = 0, pretend = 0, frame = 0
1192	@ frame_needed = 0, uses_anonymous_args = 0
1193	push	{r4, r5, r6, r7, r8, lr}
1194	.save {r4, r5, r6, r7, r8, lr}
1195	movs	r4, #6
1196	ldr	r8, .L146
1197	muls	r4, r1, r4
1198	movw	r3, #65535
1199	mov	r5, r0
1200	ldr	r7, [r8, #2516]
1201	adds	r6, r7, r4
1202	ldrh	r2, [r6, #2]
1203	cmp	r2, r3
1204	bne	.L136
1205	ldr	r3, [r0]
1206	cmp	r6, r3
1207	bne	.L137
1208.L140:
1209	ldrh	r1, [r7, r4]
1210	movw	r2, #65535
1211	cmp	r1, r2
1212	bne	.L144
1213	movs	r3, #0
1214	str	r3, [r5]
1215.L142:
1216	movw	r3, #65535
1217	strh	r3, [r7, r4]	@ movhi
1218	strh	r3, [r6, #2]	@ movhi
1219	movs	r0, #0
1220	pop	{r4, r5, r6, r7, r8, pc}
1221.L137:
1222	ldr	r1, .L146+4
1223	mov	r2, #372
1224	ldr	r0, .L146+8
1225	bl	sftl_printk
1226.L136:
1227	ldr	r3, [r5]
1228	ldrh	r2, [r7, r4]
1229	cmp	r3, r6
1230	beq	.L140
1231	movw	r1, #65535
1232	ldrh	r3, [r6, #2]
1233	cmp	r2, r1
1234	bne	.L143
1235	cmp	r3, r2
1236	beq	.L142
1237	movs	r0, #6
1238	ldr	r1, [r8, #2516]
1239	muls	r3, r0, r3
1240	strh	r2, [r1, r3]	@ movhi
1241	b	.L142
1242.L144:
1243	ldr	r3, [r8, #2516]
1244	movs	r0, #6
1245	mla	r3, r0, r1, r3
1246	str	r3, [r5]
1247	strh	r2, [r3, #2]	@ movhi
1248	b	.L142
1249.L143:
1250	ldr	r1, [r8, #2516]
1251	movs	r0, #6
1252	mla	r2, r0, r2, r1
1253	strh	r3, [r2, #2]	@ movhi
1254	muls	r3, r0, r3
1255	ldr	r2, [r8, #2516]
1256	ldrh	r1, [r7, r4]
1257	strh	r1, [r2, r3]	@ movhi
1258	b	.L142
1259.L147:
1260	.align	2
1261.L146:
1262	.word	.LANCHOR0
1263	.word	.LANCHOR1+34
1264	.word	.LC8
1265	.fnend
1266	.size	List_remove_node, .-List_remove_node
1267	.align	1
1268	.global	List_pop_index_node
1269	.syntax unified
1270	.thumb
1271	.thumb_func
1272	.fpu softvfp
1273	.type	List_pop_index_node, %function
1274List_pop_index_node:
1275	.fnstart
1276	@ args = 0, pretend = 0, frame = 0
1277	@ frame_needed = 0, uses_anonymous_args = 0
1278	push	{r4, r5, r6, lr}
1279	.save {r4, r5, r6, lr}
1280	ldr	r3, [r0]
1281	cbz	r3, .L153
1282	ldr	r2, .L157
1283	movw	r5, #65535
1284	movs	r6, #6
1285	ldr	r4, [r2, #2516]
1286.L150:
1287	cbz	r1, .L151
1288	ldrh	r2, [r3]
1289	cmp	r2, r5
1290	bne	.L152
1291.L151:
1292	subs	r4, r3, r4
1293	ldr	r3, .L157+4
1294	asrs	r4, r4, #1
1295	muls	r4, r3, r4
1296	uxth	r1, r4
1297	bl	List_remove_node
1298	uxth	r0, r4
1299.L148:
1300	pop	{r4, r5, r6, pc}
1301.L152:
1302	subs	r1, r1, #1
1303	mla	r3, r6, r2, r4
1304	uxth	r1, r1
1305	b	.L150
1306.L153:
1307	movw	r0, #65535
1308	b	.L148
1309.L158:
1310	.align	2
1311.L157:
1312	.word	.LANCHOR0
1313	.word	-1431655765
1314	.fnend
1315	.size	List_pop_index_node, .-List_pop_index_node
1316	.align	1
1317	.global	List_pop_head_node
1318	.syntax unified
1319	.thumb
1320	.thumb_func
1321	.fpu softvfp
1322	.type	List_pop_head_node, %function
1323List_pop_head_node:
1324	.fnstart
1325	@ args = 0, pretend = 0, frame = 0
1326	@ frame_needed = 0, uses_anonymous_args = 0
1327	@ link register save eliminated.
1328	movs	r1, #0
1329	b	List_pop_index_node
1330	.fnend
1331	.size	List_pop_head_node, .-List_pop_head_node
1332	.align	1
1333	.global	List_get_gc_head_node
1334	.syntax unified
1335	.thumb
1336	.thumb_func
1337	.fpu softvfp
1338	.type	List_get_gc_head_node, %function
1339List_get_gc_head_node:
1340	.fnstart
1341	@ args = 0, pretend = 0, frame = 0
1342	@ frame_needed = 0, uses_anonymous_args = 0
1343	ldr	r2, .L166
1344	push	{r4, r5, lr}
1345	.save {r4, r5, lr}
1346	ldr	r3, [r2, #2520]
1347	cbz	r3, .L165
1348	ldr	r4, [r2, #2516]
1349	movw	r1, #65535
1350	movs	r5, #6
1351.L162:
1352	cbz	r0, .L163
1353	ldrh	r3, [r3]
1354	cmp	r3, r1
1355	bne	.L164
1356.L165:
1357	movw	r0, #65535
1358.L160:
1359	pop	{r4, r5, pc}
1360.L164:
1361	subs	r2, r0, #1
1362	mla	r3, r5, r3, r4
1363	uxth	r0, r2
1364	b	.L162
1365.L163:
1366	subs	r0, r3, r4
1367	ldr	r3, .L166+4
1368	asrs	r0, r0, #1
1369	muls	r0, r3, r0
1370	uxth	r0, r0
1371	b	.L160
1372.L167:
1373	.align	2
1374.L166:
1375	.word	.LANCHOR0
1376	.word	-1431655765
1377	.fnend
1378	.size	List_get_gc_head_node, .-List_get_gc_head_node
1379	.align	1
1380	.global	List_update_data_list
1381	.syntax unified
1382	.thumb
1383	.thumb_func
1384	.fpu softvfp
1385	.type	List_update_data_list, %function
1386List_update_data_list:
1387	.fnstart
1388	@ args = 0, pretend = 0, frame = 0
1389	@ frame_needed = 0, uses_anonymous_args = 0
1390	push	{r3, r4, r5, r6, r7, r8, r9, lr}
1391	.save {r3, r4, r5, r6, r7, r8, r9, lr}
1392	mov	r5, r0
1393	ldr	r4, .L179
1394	ldrh	r3, [r4, #24]
1395	cmp	r3, r0
1396	beq	.L170
1397	ldrh	r3, [r4, #76]
1398	cmp	r3, r0
1399	beq	.L170
1400	ldrh	r3, [r4, #124]
1401	cmp	r3, r0
1402	beq	.L170
1403	movs	r6, #6
1404	ldr	r9, [r4, #2516]
1405	ldr	r3, [r4, #2520]
1406	muls	r6, r0, r6
1407	add	r8, r9, r6
1408	cmp	r8, r3
1409	beq	.L170
1410	ldr	r3, [r4, #72]
1411	ldrh	r7, [r3, r0, lsl #1]
1412	ldrh	r3, [r8, #4]
1413	cmp	r3, #0
1414	beq	.L177
1415	muls	r7, r3, r7
1416.L172:
1417	ldrh	r3, [r8, #2]
1418	movw	r2, #65535
1419	cmp	r3, r2
1420	bne	.L173
1421	ldrh	r2, [r9, r6]
1422	cmp	r2, r3
1423	bne	.L173
1424	ldr	r1, .L179+4
1425	movw	r2, #463
1426	ldr	r0, .L179+8
1427	bl	sftl_printk
1428.L173:
1429	ldrh	r3, [r8, #2]
1430	movw	r2, #65535
1431	cmp	r3, r2
1432	bne	.L174
1433	ldrh	r2, [r9, r6]
1434	cmp	r2, r3
1435	beq	.L170
1436.L174:
1437	movs	r2, #6
1438	ldr	r1, .L179+12
1439	muls	r3, r2, r3
1440	asrs	r2, r3, #1
1441	muls	r2, r1, r2
1442	ldr	r1, [r4, #72]
1443	ldrh	r2, [r1, r2, lsl #1]
1444	ldr	r1, [r4, #2516]
1445	add	r3, r3, r1
1446	ldrh	r3, [r3, #4]
1447	cbz	r3, .L178
1448	muls	r3, r2, r3
1449.L175:
1450	cmp	r7, r3
1451	bcs	.L170
1452	ldr	r0, .L179+16
1453	mov	r1, r5
1454	bl	List_remove_node
1455	ldrh	r3, [r4, #2528]
1456	cbnz	r3, .L176
1457	ldr	r1, .L179+4
1458	mov	r2, #474
1459	ldr	r0, .L179+8
1460	bl	sftl_printk
1461.L176:
1462	ldrh	r3, [r4, #2528]
1463	mov	r0, r5
1464	subs	r3, r3, #1
1465	strh	r3, [r4, #2528]	@ movhi
1466	bl	INSERT_DATA_LIST
1467.L170:
1468	movs	r0, #0
1469	pop	{r3, r4, r5, r6, r7, r8, r9, pc}
1470.L177:
1471	mov	r7, #-1
1472	b	.L172
1473.L178:
1474	mov	r3, #-1
1475	b	.L175
1476.L180:
1477	.align	2
1478.L179:
1479	.word	.LANCHOR0
1480	.word	.LANCHOR1+51
1481	.word	.LC8
1482	.word	-1431655765
1483	.word	.LANCHOR0+2520
1484	.fnend
1485	.size	List_update_data_list, .-List_update_data_list
1486	.align	1
1487	.global	select_l2p_ram_region
1488	.syntax unified
1489	.thumb
1490	.thumb_func
1491	.fpu softvfp
1492	.type	select_l2p_ram_region, %function
1493select_l2p_ram_region:
1494	.fnstart
1495	@ args = 0, pretend = 0, frame = 0
1496	@ frame_needed = 0, uses_anonymous_args = 0
1497	ldr	r0, .L191
1498	movs	r1, #0
1499	push	{r3, r4, r5, r6, r7, lr}
1500	.save {r3, r4, r5, r6, r7, lr}
1501	movs	r6, #12
1502	movw	r7, #65535
1503	ldr	r3, [r0, #2540]
1504	ldrh	r2, [r0, #338]
1505	sub	r5, r3, #12
1506.L182:
1507	uxth	r4, r1
1508	cmp	r2, r4
1509	bhi	.L184
1510	mov	r4, r2
1511	add	ip, r3, #4
1512	movs	r1, #0
1513	mov	r7, #-2147483648
1514	mov	lr, #12
1515.L185:
1516	uxth	r6, r1
1517	cmp	r2, r6
1518	bhi	.L187
1519	cmp	r2, r4
1520	bhi	.L183
1521	mov	r4, r2
1522	ldrh	r7, [r0, #2544]
1523	movs	r1, #0
1524	mov	r0, #-1
1525.L188:
1526	uxth	r5, r1
1527	cmp	r2, r5
1528	bhi	.L190
1529	cmp	r2, r4
1530	bhi	.L183
1531	ldr	r1, .L191+4
1532	mov	r2, #796
1533	ldr	r0, .L191+8
1534	bl	sftl_printk
1535	b	.L183
1536.L184:
1537	adds	r1, r1, #1
1538	mul	ip, r6, r1
1539	ldrh	ip, [r5, ip]
1540	cmp	ip, r7
1541	bne	.L182
1542.L183:
1543	mov	r0, r4
1544	pop	{r3, r4, r5, r6, r7, pc}
1545.L187:
1546	mul	r5, lr, r1
1547	ldr	r5, [ip, r5]
1548	cmp	r5, #0
1549	blt	.L186
1550	cmp	r5, r7
1551	itt	cc
1552	movcc	r7, r5
1553	movcc	r4, r6
1554.L186:
1555	adds	r1, r1, #1
1556	b	.L185
1557.L190:
1558	ldr	r6, [r3, #4]
1559	cmp	r6, r0
1560	bcs	.L189
1561	ldrh	ip, [r3]
1562	cmp	ip, r7
1563	itt	ne
1564	movne	r0, r6
1565	movne	r4, r5
1566.L189:
1567	adds	r1, r1, #1
1568	adds	r3, r3, #12
1569	b	.L188
1570.L192:
1571	.align	2
1572.L191:
1573	.word	.LANCHOR0
1574	.word	.LANCHOR1+73
1575	.word	.LC8
1576	.fnend
1577	.size	select_l2p_ram_region, .-select_l2p_ram_region
1578	.align	1
1579	.global	FtlUpdateVaildLpn
1580	.syntax unified
1581	.thumb
1582	.thumb_func
1583	.fpu softvfp
1584	.type	FtlUpdateVaildLpn, %function
1585FtlUpdateVaildLpn:
1586	.fnstart
1587	@ args = 0, pretend = 0, frame = 0
1588	@ frame_needed = 0, uses_anonymous_args = 0
1589	ldr	r3, .L199
1590	push	{r4, r5, lr}
1591	.save {r4, r5, lr}
1592	ldrh	r2, [r3, #2546]
1593	cmp	r2, #4
1594	bhi	.L194
1595	cbnz	r0, .L194
1596	adds	r2, r2, #1
1597	strh	r2, [r3, #2546]	@ movhi
1598.L193:
1599	pop	{r4, r5, pc}
1600.L194:
1601	movs	r2, #0
1602	ldrh	r1, [r3, #240]
1603	strh	r2, [r3, #2546]	@ movhi
1604	movw	r5, #65535
1605	str	r2, [r3, #2548]
1606	ldr	r2, [r3, #72]
1607	add	r1, r2, r1, lsl #1
1608.L195:
1609	cmp	r2, r1
1610	beq	.L193
1611	ldrh	r4, [r2], #2
1612	cmp	r4, r5
1613	ittt	ne
1614	ldrne	r0, [r3, #2548]
1615	addne	r0, r0, r4
1616	strne	r0, [r3, #2548]
1617	b	.L195
1618.L200:
1619	.align	2
1620.L199:
1621	.word	.LANCHOR0
1622	.fnend
1623	.size	FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
1624	.align	1
1625	.global	ftl_sb_update_avl_pages
1626	.syntax unified
1627	.thumb
1628	.thumb_func
1629	.fpu softvfp
1630	.type	ftl_sb_update_avl_pages, %function
1631ftl_sb_update_avl_pages:
1632	.fnstart
1633	@ args = 0, pretend = 0, frame = 0
1634	@ frame_needed = 0, uses_anonymous_args = 0
1635	push	{r4, r5, r6, r7, lr}
1636	.save {r4, r5, r6, r7, lr}
1637	add	r4, r2, #8
1638	ldr	r6, .L208
1639	add	r4, r0, r4, lsl #1
1640	movs	r3, #0
1641	movw	r7, #65535
1642	strh	r3, [r0, #4]	@ movhi
1643	ldrh	r5, [r6, #232]
1644.L202:
1645	cmp	r5, r2
1646	bhi	.L204
1647	ldrh	r3, [r6, #302]
1648	add	r4, r0, #16
1649	movs	r2, #0
1650	movw	r6, #65535
1651	subs	r3, r3, r1
1652	subs	r3, r3, #1
1653	sxth	r3, r3
1654.L205:
1655	uxth	r1, r2
1656	cmp	r5, r1
1657	bhi	.L207
1658	pop	{r4, r5, r6, r7, pc}
1659.L204:
1660	ldrh	r3, [r4], #2
1661	adds	r2, r2, #1
1662	cmp	r3, r7
1663	uxth	r2, r2
1664	ittt	ne
1665	ldrhne	r3, [r0, #4]
1666	addne	r3, r3, #1
1667	strhne	r3, [r0, #4]	@ movhi
1668	b	.L202
1669.L207:
1670	ldrh	r1, [r4], #2
1671	adds	r2, r2, #1
1672	cmp	r1, r6
1673	ittt	ne
1674	ldrhne	r1, [r0, #4]
1675	addne	r1, r1, r3
1676	strhne	r1, [r0, #4]	@ movhi
1677	b	.L205
1678.L209:
1679	.align	2
1680.L208:
1681	.word	.LANCHOR0
1682	.fnend
1683	.size	ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
1684	.align	1
1685	.global	FtlSlcSuperblockCheck
1686	.syntax unified
1687	.thumb
1688	.thumb_func
1689	.fpu softvfp
1690	.type	FtlSlcSuperblockCheck, %function
1691FtlSlcSuperblockCheck:
1692	.fnstart
1693	@ args = 0, pretend = 0, frame = 0
1694	@ frame_needed = 0, uses_anonymous_args = 0
1695	ldrh	r3, [r0, #4]
1696	push	{r4, lr}
1697	.save {r4, lr}
1698	cbz	r3, .L210
1699	ldrh	r3, [r0]
1700	movw	r2, #65535
1701	cmp	r3, r2
1702	beq	.L210
1703	ldrb	r3, [r0, #6]	@ zero_extendqisi2
1704	movs	r4, #0
1705	ldr	r1, .L216
1706	adds	r3, r3, #8
1707	ldrh	r1, [r1, #232]
1708	ldrh	r3, [r0, r3, lsl #1]
1709.L213:
1710	cmp	r3, r2
1711	beq	.L215
1712.L210:
1713	pop	{r4, pc}
1714.L215:
1715	ldrb	r3, [r0, #6]	@ zero_extendqisi2
1716	adds	r3, r3, #1
1717	uxtb	r3, r3
1718	strb	r3, [r0, #6]
1719	cmp	r3, r1
1720	itttt	eq
1721	strbeq	r4, [r0, #6]
1722	ldrheq	r3, [r0, #2]
1723	addeq	r3, r3, #1
1724	strheq	r3, [r0, #2]	@ movhi
1725	ldrb	r3, [r0, #6]	@ zero_extendqisi2
1726	adds	r3, r3, #8
1727	ldrh	r3, [r0, r3, lsl #1]
1728	b	.L213
1729.L217:
1730	.align	2
1731.L216:
1732	.word	.LANCHOR0
1733	.fnend
1734	.size	FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
1735	.align	1
1736	.global	make_superblock
1737	.syntax unified
1738	.thumb
1739	.thumb_func
1740	.fpu softvfp
1741	.type	make_superblock, %function
1742make_superblock:
1743	.fnstart
1744	@ args = 0, pretend = 0, frame = 0
1745	@ frame_needed = 0, uses_anonymous_args = 0
1746	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
1747	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
1748	mov	r4, r0
1749	ldr	r8, .L224
1750	ldrh	r2, [r0]
1751	ldrh	r3, [r8, #240]
1752	cmp	r2, r3
1753	bcc	.L219
1754	ldr	r1, .L224+4
1755	movw	r2, #2157
1756	ldr	r0, .L224+8
1757	bl	sftl_printk
1758.L219:
1759	ldrh	r6, [r8, #232]
1760	add	r5, r4, #16
1761	ldr	r9, .L224+12
1762	movs	r3, #0
1763	movw	r10, #65535
1764	strh	r3, [r4, #4]	@ movhi
1765	add	r6, r4, r6, lsl #1
1766	strb	r3, [r4, #7]
1767	adds	r6, r6, #16
1768.L220:
1769	ldrh	r1, [r4]
1770	cmp	r6, r5
1771	ldrb	fp, [r4, #7]	@ zero_extendqisi2
1772	bne	.L222
1773	ldrh	r3, [r8, #302]
1774	movs	r0, #0
1775	smulbb	r3, r3, fp
1776	strh	r3, [r4, #4]	@ movhi
1777	movs	r3, #0
1778	strb	r3, [r4, #9]
1779	ldr	r3, [r8, #2536]
1780	ldrh	r2, [r3, r1, lsl #1]
1781	movw	r3, #10000
1782	cmp	r2, r3
1783	itt	hi
1784	movhi	r3, #1
1785	strbhi	r3, [r4, #9]
1786	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
1787.L222:
1788	ldrb	r0, [r9], #1	@ zero_extendqisi2
1789	bl	V2P_block
1790	strh	r10, [r5]	@ movhi
1791	mov	r7, r0
1792	bl	FtlBbmIsBadBlock
1793	cbnz	r0, .L221
1794	add	r3, fp, #1
1795	strh	r7, [r5]	@ movhi
1796	strb	r3, [r4, #7]
1797.L221:
1798	adds	r5, r5, #2
1799	b	.L220
1800.L225:
1801	.align	2
1802.L224:
1803	.word	.LANCHOR0
1804	.word	.LANCHOR1+95
1805	.word	.LC8
1806	.word	.LANCHOR0+260
1807	.fnend
1808	.size	make_superblock, .-make_superblock
1809	.align	1
1810	.global	update_multiplier_value
1811	.syntax unified
1812	.thumb
1813	.thumb_func
1814	.fpu softvfp
1815	.type	update_multiplier_value, %function
1816update_multiplier_value:
1817	.fnstart
1818	@ args = 0, pretend = 0, frame = 0
1819	@ frame_needed = 0, uses_anonymous_args = 0
1820	push	{r4, r5, r6, r7, r8, r9, r10, lr}
1821	.save {r4, r5, r6, r7, r8, r9, r10, lr}
1822	movs	r6, #0
1823	ldr	r5, .L234
1824	mov	r8, r0
1825	mov	r4, r6
1826	add	r7, r5, #260
1827	ldrh	r9, [r5, #232]
1828	ldrh	r10, [r5, #302]
1829.L227:
1830	uxth	r3, r6
1831	cmp	r9, r3
1832	bhi	.L229
1833	cbz	r4, .L230
1834	mov	r1, r4
1835	mov	r0, #32768
1836	bl	__aeabi_idiv
1837	uxth	r4, r0
1838.L230:
1839	ldr	r0, [r5, #2516]
1840	movs	r2, #6
1841	mla	r0, r2, r8, r0
1842	strh	r4, [r0, #4]	@ movhi
1843	movs	r0, #0
1844	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
1845.L229:
1846	mov	r1, r8
1847	ldrb	r0, [r7], #1	@ zero_extendqisi2
1848	bl	V2P_block
1849	bl	FtlBbmIsBadBlock
1850	cbnz	r0, .L228
1851	add	r4, r4, r10
1852	uxth	r4, r4
1853.L228:
1854	adds	r6, r6, #1
1855	b	.L227
1856.L235:
1857	.align	2
1858.L234:
1859	.word	.LANCHOR0
1860	.fnend
1861	.size	update_multiplier_value, .-update_multiplier_value
1862	.align	1
1863	.global	GetFreeBlockMinEraseCount
1864	.syntax unified
1865	.thumb
1866	.thumb_func
1867	.fpu softvfp
1868	.type	GetFreeBlockMinEraseCount, %function
1869GetFreeBlockMinEraseCount:
1870	.fnstart
1871	@ args = 0, pretend = 0, frame = 0
1872	@ frame_needed = 0, uses_anonymous_args = 0
1873	@ link register save eliminated.
1874	ldr	r3, .L239
1875	ldr	r0, [r3, #2532]
1876	cbz	r0, .L237
1877	ldr	r2, [r3, #2516]
1878	ldr	r3, [r3, #2536]
1879	subs	r0, r0, r2
1880	ldr	r2, .L239+4
1881	asrs	r0, r0, #1
1882	muls	r0, r2, r0
1883	uxth	r0, r0
1884	ldrh	r0, [r3, r0, lsl #1]
1885.L237:
1886	bx	lr
1887.L240:
1888	.align	2
1889.L239:
1890	.word	.LANCHOR0
1891	.word	-1431655765
1892	.fnend
1893	.size	GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
1894	.align	1
1895	.global	GetFreeBlockMaxEraseCount
1896	.syntax unified
1897	.thumb
1898	.thumb_func
1899	.fpu softvfp
1900	.type	GetFreeBlockMaxEraseCount, %function
1901GetFreeBlockMaxEraseCount:
1902	.fnstart
1903	@ args = 0, pretend = 0, frame = 0
1904	@ frame_needed = 0, uses_anonymous_args = 0
1905	ldr	r1, .L248
1906	mov	r2, r0
1907	push	{r4, r5, r6, r7, lr}
1908	.save {r4, r5, r6, r7, lr}
1909	ldr	r0, [r1, #2532]
1910	cbz	r0, .L242
1911	ldrh	r3, [r1, #224]
1912	movs	r7, #6
1913	movw	ip, #65535
1914	rsb	r3, r3, r3, lsl #3
1915	asrs	r4, r3, #3
1916	cmp	r2, r3, asr #3
1917	it	gt
1918	uxthgt	r2, r4
1919	ldr	r4, [r1, #2516]
1920	subs	r3, r0, r4
1921	ldr	r0, .L248+4
1922	asrs	r3, r3, #1
1923	muls	r3, r0, r3
1924	movs	r0, #0
1925	uxth	r3, r3
1926.L244:
1927	uxth	r6, r0
1928	mov	r5, r3
1929	cmp	r6, r2
1930	bcs	.L245
1931	muls	r3, r7, r3
1932	adds	r0, r0, #1
1933	ldrh	r3, [r4, r3]
1934	cmp	r3, ip
1935	bne	.L244
1936.L245:
1937	ldr	r3, [r1, #2536]
1938	ldrh	r0, [r3, r5, lsl #1]
1939.L242:
1940	pop	{r4, r5, r6, r7, pc}
1941.L249:
1942	.align	2
1943.L248:
1944	.word	.LANCHOR0
1945	.word	-1431655765
1946	.fnend
1947	.size	GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
1948	.section	.rodata.str1.1
1949.LC9:
1950	.ascii	"FLASH INFO:\012\000"
1951.LC10:
1952	.ascii	"Device Capacity: %d MB\012\000"
1953.LC11:
1954	.ascii	"FTL INFO:\012\000"
1955.LC12:
1956	.ascii	"g_MaxLpn = 0x%x\012\000"
1957.LC13:
1958	.ascii	"g_VaildLpn = 0x%x\012\000"
1959.LC14:
1960	.ascii	"read_page_count = 0x%x\012\000"
1961.LC15:
1962	.ascii	"discard_page_count = 0x%x\012\000"
1963.LC16:
1964	.ascii	"write_page_count = 0x%x\012\000"
1965.LC17:
1966	.ascii	"cache_write_count = 0x%x\012\000"
1967.LC18:
1968	.ascii	"l2p_write_count = 0x%x\012\000"
1969.LC19:
1970	.ascii	"gc_page_count = 0x%x\012\000"
1971.LC20:
1972	.ascii	"totle_write = %d MB\012\000"
1973.LC21:
1974	.ascii	"totle_read = %d MB\012\000"
1975.LC22:
1976	.ascii	"GSV = 0x%x\012\000"
1977.LC23:
1978	.ascii	"GDV = 0x%x\012\000"
1979.LC24:
1980	.ascii	"bad blk num = %d\012\000"
1981.LC25:
1982	.ascii	"free_superblocks = 0x%x\012\000"
1983.LC26:
1984	.ascii	"mlc_EC = 0x%x\012\000"
1985.LC27:
1986	.ascii	"slc_EC = 0x%x\012\000"
1987.LC28:
1988	.ascii	"avg_EC = 0x%x\012\000"
1989.LC29:
1990	.ascii	"sys_EC = 0x%x\012\000"
1991.LC30:
1992	.ascii	"max_EC = 0x%x\012\000"
1993.LC31:
1994	.ascii	"min_EC = 0x%x\012\000"
1995.LC32:
1996	.ascii	"PLT = 0x%x\012\000"
1997.LC33:
1998	.ascii	"POT = 0x%x\012\000"
1999.LC34:
2000	.ascii	"MaxSector = 0x%x\012\000"
2001.LC35:
2002	.ascii	"init_sys_blks_pp = 0x%x\012\000"
2003.LC36:
2004	.ascii	"sys_blks_pp = 0x%x\012\000"
2005.LC37:
2006	.ascii	"free sysblock = 0x%x\012\000"
2007.LC38:
2008	.ascii	"data_blks_pp = 0x%x\012\000"
2009.LC39:
2010	.ascii	"data_op_blks_pp = 0x%x\012\000"
2011.LC40:
2012	.ascii	"max_data_blks = 0x%x\012\000"
2013.LC41:
2014	.ascii	"Sys.id = 0x%x\012\000"
2015.LC42:
2016	.ascii	"Bbt.id = 0x%x\012\000"
2017.LC43:
2018	.ascii	"ACT.page = 0x%x\012\000"
2019.LC44:
2020	.ascii	"ACT.plane = 0x%x\012\000"
2021.LC45:
2022	.ascii	"ACT.id = 0x%x\012\000"
2023.LC46:
2024	.ascii	"ACT.mode = 0x%x\012\000"
2025.LC47:
2026	.ascii	"ACT.a_pages = 0x%x\012\000"
2027.LC48:
2028	.ascii	"ACT VPC = 0x%x\012\000"
2029.LC49:
2030	.ascii	"BUF.page = 0x%x\012\000"
2031.LC50:
2032	.ascii	"BUF.plane = 0x%x\012\000"
2033.LC51:
2034	.ascii	"BUF.id = 0x%x\012\000"
2035.LC52:
2036	.ascii	"BUF.mode = 0x%x\012\000"
2037.LC53:
2038	.ascii	"BUF.a_pages = 0x%x\012\000"
2039.LC54:
2040	.ascii	"BUF VPC = 0x%x\012\000"
2041.LC55:
2042	.ascii	"TMP.page = 0x%x\012\000"
2043.LC56:
2044	.ascii	"TMP.plane = 0x%x\012\000"
2045.LC57:
2046	.ascii	"TMP.id = 0x%x\012\000"
2047.LC58:
2048	.ascii	"TMP.mode = 0x%x\012\000"
2049.LC59:
2050	.ascii	"TMP.a_pages = 0x%x\012\000"
2051.LC60:
2052	.ascii	"GC.page = 0x%x\012\000"
2053.LC61:
2054	.ascii	"GC.plane = 0x%x\012\000"
2055.LC62:
2056	.ascii	"GC.id = 0x%x\012\000"
2057.LC63:
2058	.ascii	"GC.mode = 0x%x\012\000"
2059.LC64:
2060	.ascii	"GC.a_pages = 0x%x\012\000"
2061.LC65:
2062	.ascii	"WR_CHK = %x %x %x\012\000"
2063.LC66:
2064	.ascii	"Read Err Cnt = 0x%x\012\000"
2065.LC67:
2066	.ascii	"Prog Err Cnt = 0x%x\012\000"
2067.LC68:
2068	.ascii	"gc_free_blk_th= 0x%x\012\000"
2069.LC69:
2070	.ascii	"gc_merge_free_blk_th= 0x%x\012\000"
2071.LC70:
2072	.ascii	"gc_skip_write_count= 0x%x\012\000"
2073.LC71:
2074	.ascii	"gc_blk_index= 0x%x\012\000"
2075.LC72:
2076	.ascii	"free min EC= 0x%x\012\000"
2077.LC73:
2078	.ascii	"free max EC= 0x%x\012\000"
2079.LC74:
2080	.ascii	"GC__SB VPC = 0x%x\012\000"
2081.LC75:
2082	.ascii	"%d. [0x%x]=0x%x 0x%x  0x%x\012\000"
2083.LC76:
2084	.ascii	"free %d. [0x%x] 0x%x  0x%x\012\000"
2085	.text
2086	.align	1
2087	.global	FtlPrintInfo2buf
2088	.syntax unified
2089	.thumb
2090	.thumb_func
2091	.fpu softvfp
2092	.type	FtlPrintInfo2buf, %function
2093FtlPrintInfo2buf:
2094	.fnstart
2095	@ args = 0, pretend = 0, frame = 0
2096	@ frame_needed = 0, uses_anonymous_args = 0
2097	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
2098	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
2099	mov	r7, r0
2100	ldr	r6, .L262
2101	ldr	r1, .L262+4
2102	add	r5, r7, #12
2103	.pad #20
2104	sub	sp, sp, #20
2105	bl	strcpy
2106	ldr	r2, .L262+8
2107	ldr	r3, [r6, #316]
2108	mov	r0, r5
2109	movs	r1, #64
2110	bl	snprintf
2111	add	r5, r5, r0
2112	ldr	r1, .L262+12
2113	mov	r0, r5
2114	adds	r5, r5, #10
2115	bl	strcpy
2116	ldr	r3, [r6, #2552]
2117	mov	r0, r5
2118	ldr	r2, .L262+16
2119	movs	r1, #64
2120	bl	snprintf
2121	add	r5, r5, r0
2122	ldr	r3, [r6, #2548]
2123	mov	r0, r5
2124	ldr	r2, .L262+20
2125	movs	r1, #64
2126	bl	snprintf
2127	add	r5, r5, r0
2128	ldr	r3, [r6, #2556]
2129	mov	r0, r5
2130	ldr	r2, .L262+24
2131	movs	r1, #64
2132	bl	snprintf
2133	add	r5, r5, r0
2134	ldr	r3, [r6, #2560]
2135	mov	r0, r5
2136	ldr	r2, .L262+28
2137	movs	r1, #64
2138	bl	snprintf
2139	add	r5, r5, r0
2140	ldr	r3, [r6, #2564]
2141	mov	r0, r5
2142	ldr	r2, .L262+32
2143	movs	r1, #64
2144	bl	snprintf
2145	add	r5, r5, r0
2146	ldr	r3, [r6, #2568]
2147	mov	r0, r5
2148	ldr	r2, .L262+36
2149	movs	r1, #64
2150	bl	snprintf
2151	add	r5, r5, r0
2152	ldr	r3, [r6, #2572]
2153	mov	r0, r5
2154	ldr	r2, .L262+40
2155	movs	r1, #64
2156	bl	snprintf
2157	add	r5, r5, r0
2158	ldr	r3, [r6, #2576]
2159	mov	r0, r5
2160	ldr	r2, .L262+44
2161	movs	r1, #64
2162	bl	snprintf
2163	ldr	r3, [r6, #2580]
2164	add	r5, r5, r0
2165	ldr	r2, .L262+48
2166	mov	r0, r5
2167	movs	r1, #64
2168	lsrs	r3, r3, #11
2169	bl	snprintf
2170	ldr	r3, [r6, #2584]
2171	add	r5, r5, r0
2172	ldr	r2, .L262+52
2173	movs	r1, #64
2174	mov	r0, r5
2175	lsrs	r3, r3, #11
2176	bl	snprintf
2177	adds	r4, r5, r0
2178	ldr	r3, [r6, #2588]
2179	mov	r0, r4
2180	ldr	r2, .L262+56
2181	movs	r1, #64
2182	bl	snprintf
2183	add	r4, r4, r0
2184	ldr	r3, [r6, #2592]
2185	mov	r0, r4
2186	ldr	r2, .L262+60
2187	movs	r1, #64
2188	bl	snprintf
2189	add	r4, r4, r0
2190	ldrh	r3, [r6, #358]
2191	mov	r0, r4
2192	ldr	r2, .L262+64
2193	movs	r1, #64
2194	bl	snprintf
2195	add	r4, r4, r0
2196	ldrh	r3, [r6, #224]
2197	mov	r0, r4
2198	ldr	r2, .L262+68
2199	movs	r1, #64
2200	bl	snprintf
2201	add	r4, r4, r0
2202	ldr	r3, [r6, #2596]
2203	mov	r0, r4
2204	ldr	r2, .L262+72
2205	movs	r1, #64
2206	bl	snprintf
2207	add	r4, r4, r0
2208	ldr	r3, [r6, #2600]
2209	mov	r0, r4
2210	ldr	r2, .L262+76
2211	movs	r1, #64
2212	bl	snprintf
2213	add	r4, r4, r0
2214	ldr	r3, [r6, #2604]
2215	mov	r0, r4
2216	ldr	r2, .L262+80
2217	movs	r1, #64
2218	bl	snprintf
2219	add	r4, r4, r0
2220	ldr	r3, [r6, #2608]
2221	mov	r0, r4
2222	ldr	r2, .L262+84
2223	movs	r1, #64
2224	bl	snprintf
2225	add	r4, r4, r0
2226	ldr	r3, [r6, #2612]
2227	mov	r0, r4
2228	ldr	r2, .L262+88
2229	movs	r1, #64
2230	bl	snprintf
2231	add	r4, r4, r0
2232	ldr	r3, [r6, #2616]
2233	mov	r0, r4
2234	ldr	r2, .L262+92
2235	movs	r1, #64
2236	bl	snprintf
2237	add	r4, r4, r0
2238	ldrh	r3, [r6, #2498]
2239	mov	r0, r4
2240	ldr	r2, .L262+96
2241	movs	r1, #64
2242	bl	snprintf
2243	add	r4, r4, r0
2244	ldrh	r3, [r6, #2496]
2245	mov	r0, r4
2246	ldr	r2, .L262+100
2247	movs	r1, #64
2248	bl	snprintf
2249	add	r4, r4, r0
2250	ldr	r3, [r6, #340]
2251	mov	r0, r4
2252	ldr	r2, .L262+104
2253	movs	r1, #64
2254	bl	snprintf
2255	add	r4, r4, r0
2256	ldr	r3, [r6, #332]
2257	mov	r0, r4
2258	ldr	r2, .L262+108
2259	movs	r1, #64
2260	bl	snprintf
2261	add	r4, r4, r0
2262	ldr	r3, [r6, #228]
2263	mov	r0, r4
2264	ldr	r2, .L262+112
2265	movs	r1, #64
2266	bl	snprintf
2267	add	r4, r4, r0
2268	ldrh	r3, [r6, #418]
2269	mov	r0, r4
2270	ldr	r2, .L262+116
2271	movs	r1, #64
2272	bl	snprintf
2273	add	r4, r4, r0
2274	ldrh	r3, [r6, #240]
2275	mov	r0, r4
2276	ldr	r2, .L262+120
2277	movs	r1, #64
2278	bl	snprintf
2279	add	r4, r4, r0
2280	ldrh	r3, [r6, #2620]
2281	mov	r0, r4
2282	ldr	r2, .L262+124
2283	movs	r1, #64
2284	bl	snprintf
2285	add	r4, r4, r0
2286	ldr	r3, [r6, #244]
2287	mov	r0, r4
2288	ldr	r2, .L262+128
2289	movs	r1, #64
2290	bl	snprintf
2291	add	r4, r4, r0
2292	ldrh	r3, [r6, #2624]
2293	mov	r0, r4
2294	ldr	r2, .L262+132
2295	movs	r1, #64
2296	bl	snprintf
2297	add	r4, r4, r0
2298	ldrh	r3, [r6, #352]
2299	mov	r0, r4
2300	ldr	r2, .L262+136
2301	movs	r1, #64
2302	bl	snprintf
2303	add	r4, r4, r0
2304	ldrh	r3, [r6, #26]
2305	mov	r0, r4
2306	ldr	r2, .L262+140
2307	movs	r1, #64
2308	bl	snprintf
2309	add	r4, r4, r0
2310	ldrb	r3, [r6, #30]	@ zero_extendqisi2
2311	mov	r0, r4
2312	ldr	r2, .L262+144
2313	movs	r1, #64
2314	bl	snprintf
2315	add	r4, r4, r0
2316	ldrh	r3, [r6, #24]
2317	mov	r0, r4
2318	ldr	r2, .L262+148
2319	movs	r1, #64
2320	bl	snprintf
2321	add	r4, r4, r0
2322	ldrb	r3, [r6, #32]	@ zero_extendqisi2
2323	mov	r0, r4
2324	ldr	r2, .L262+152
2325	movs	r1, #64
2326	bl	snprintf
2327	add	r4, r4, r0
2328	ldrh	r3, [r6, #28]
2329	mov	r0, r4
2330	ldr	r2, .L262+156
2331	movs	r1, #64
2332	bl	snprintf
2333	ldrh	r2, [r6, #24]
2334	ldr	r3, [r6, #72]
2335	add	r4, r4, r0
2336	mov	r0, r4
2337	movs	r1, #64
2338	ldrh	r3, [r3, r2, lsl #1]
2339	ldr	r2, .L262+160
2340	bl	snprintf
2341	add	r4, r4, r0
2342	ldrh	r3, [r6, #78]
2343	mov	r0, r4
2344	ldr	r2, .L262+164
2345	movs	r1, #64
2346	bl	snprintf
2347	add	r4, r4, r0
2348	ldrb	r3, [r6, #82]	@ zero_extendqisi2
2349	mov	r0, r4
2350	ldr	r2, .L262+168
2351	movs	r1, #64
2352	bl	snprintf
2353	add	r4, r4, r0
2354	ldrh	r3, [r6, #76]
2355	mov	r0, r4
2356	ldr	r2, .L262+172
2357	movs	r1, #64
2358	bl	snprintf
2359	add	r4, r4, r0
2360	ldrb	r3, [r6, #84]	@ zero_extendqisi2
2361	mov	r0, r4
2362	ldr	r2, .L262+176
2363	movs	r1, #64
2364	bl	snprintf
2365	add	r4, r4, r0
2366	ldrh	r3, [r6, #80]
2367	mov	r0, r4
2368	ldr	r2, .L262+180
2369	movs	r1, #64
2370	bl	snprintf
2371	ldrh	r2, [r6, #76]
2372	ldr	r3, [r6, #72]
2373	add	r4, r4, r0
2374	mov	r0, r4
2375	movs	r1, #64
2376	ldrh	r3, [r3, r2, lsl #1]
2377	ldr	r2, .L262+184
2378	bl	snprintf
2379	add	r4, r4, r0
2380	ldrh	r3, [r6, #126]
2381	mov	r0, r4
2382	ldr	r2, .L262+188
2383	movs	r1, #64
2384	bl	snprintf
2385	add	r4, r4, r0
2386	ldrb	r3, [r6, #130]	@ zero_extendqisi2
2387	mov	r0, r4
2388	ldr	r2, .L262+192
2389	movs	r1, #64
2390	bl	snprintf
2391	add	r4, r4, r0
2392	ldrh	r3, [r6, #124]
2393	mov	r0, r4
2394	ldr	r2, .L262+196
2395	movs	r1, #64
2396	bl	snprintf
2397	add	r4, r4, r0
2398	ldrb	r3, [r6, #132]	@ zero_extendqisi2
2399	mov	r0, r4
2400	ldr	r2, .L262+200
2401	movs	r1, #64
2402	bl	snprintf
2403	add	r4, r4, r0
2404	ldrh	r3, [r6, #128]
2405	mov	r0, r4
2406	ldr	r2, .L262+204
2407	movs	r1, #64
2408	bl	snprintf
2409	add	r4, r4, r0
2410	ldrh	r3, [r6, #174]
2411	mov	r0, r4
2412	ldr	r2, .L262+208
2413	movs	r1, #64
2414	bl	snprintf
2415	add	r4, r4, r0
2416	ldrb	r3, [r6, #178]	@ zero_extendqisi2
2417	mov	r0, r4
2418	ldr	r2, .L262+212
2419	movs	r1, #64
2420	bl	snprintf
2421	add	r4, r4, r0
2422	ldrh	r3, [r6, #172]
2423	mov	r0, r4
2424	ldr	r2, .L262+216
2425	movs	r1, #64
2426	bl	snprintf
2427	add	r4, r4, r0
2428	ldrb	r3, [r6, #180]	@ zero_extendqisi2
2429	mov	r0, r4
2430	ldr	r2, .L262+220
2431	movs	r1, #64
2432	bl	snprintf
2433	add	r4, r4, r0
2434	ldrh	r3, [r6, #176]
2435	mov	r0, r4
2436	b	.L263
2437.L264:
2438	.align	2
2439.L262:
2440	.word	.LANCHOR0
2441	.word	.LC9
2442	.word	.LC10
2443	.word	.LC11
2444	.word	.LC12
2445	.word	.LC13
2446	.word	.LC14
2447	.word	.LC15
2448	.word	.LC16
2449	.word	.LC17
2450	.word	.LC18
2451	.word	.LC19
2452	.word	.LC20
2453	.word	.LC21
2454	.word	.LC22
2455	.word	.LC23
2456	.word	.LC24
2457	.word	.LC25
2458	.word	.LC26
2459	.word	.LC27
2460	.word	.LC28
2461	.word	.LC29
2462	.word	.LC30
2463	.word	.LC31
2464	.word	.LC32
2465	.word	.LC33
2466	.word	.LC34
2467	.word	.LC35
2468	.word	.LC36
2469	.word	.LC37
2470	.word	.LC38
2471	.word	.LC39
2472	.word	.LC40
2473	.word	.LC41
2474	.word	.LC42
2475	.word	.LC43
2476	.word	.LC44
2477	.word	.LC45
2478	.word	.LC46
2479	.word	.LC47
2480	.word	.LC48
2481	.word	.LC49
2482	.word	.LC50
2483	.word	.LC51
2484	.word	.LC52
2485	.word	.LC53
2486	.word	.LC54
2487	.word	.LC55
2488	.word	.LC56
2489	.word	.LC57
2490	.word	.LC58
2491	.word	.LC59
2492	.word	.LC60
2493	.word	.LC61
2494	.word	.LC62
2495	.word	.LC63
2496.L263:
2497	ldr	r2, .L265
2498	movs	r1, #64
2499	bl	snprintf
2500	ldr	r3, [r6, #2716]
2501	add	r4, r4, r0
2502	str	r3, [sp, #4]
2503	ldr	r3, [r6, #2724]
2504	mov	r0, r4
2505	ldr	r2, .L265+4
2506	movs	r1, #64
2507	str	r3, [sp]
2508	ldr	r3, [r6, #2720]
2509	bl	snprintf
2510	add	r4, r4, r0
2511	ldr	r3, [r6, #2712]
2512	mov	r0, r4
2513	ldr	r2, .L265+8
2514	movs	r1, #64
2515	bl	snprintf
2516	add	r4, r4, r0
2517	ldr	r3, [r6, #2736]
2518	mov	r0, r4
2519	ldr	r2, .L265+12
2520	movs	r1, #64
2521	bl	snprintf
2522	add	r4, r4, r0
2523	ldrh	r3, [r6, #3152]
2524	mov	r0, r4
2525	ldr	r2, .L265+16
2526	movs	r1, #64
2527	bl	snprintf
2528	add	r4, r4, r0
2529	ldrh	r3, [r6, #3154]
2530	mov	r0, r4
2531	ldr	r2, .L265+20
2532	movs	r1, #64
2533	bl	snprintf
2534	add	r4, r4, r0
2535	ldr	r3, [r6, #3156]
2536	mov	r0, r4
2537	ldr	r2, .L265+24
2538	movs	r1, #64
2539	bl	snprintf
2540	add	r4, r4, r0
2541	ldrh	r3, [r6, #3160]
2542	mov	r0, r4
2543	ldr	r2, .L265+28
2544	movs	r1, #64
2545	bl	snprintf
2546	add	r4, r4, r0
2547	movs	r1, #64
2548	bl	GetFreeBlockMinEraseCount
2549	ldr	r2, .L265+32
2550	mov	r3, r0
2551	mov	r0, r4
2552	bl	snprintf
2553	add	r4, r4, r0
2554	ldrh	r0, [r6, #224]
2555	bl	GetFreeBlockMaxEraseCount
2556	ldr	r2, .L265+36
2557	mov	r3, r0
2558	movs	r1, #64
2559	mov	r0, r4
2560	bl	snprintf
2561	ldr	r3, .L265+40
2562	add	r4, r4, r0
2563	ldr	r3, [r3]
2564	cmp	r3, #1
2565	beq	.L251
2566.L256:
2567	subs	r0, r4, r7
2568	add	sp, sp, #20
2569	@ sp needed
2570	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
2571.L251:
2572	ldrh	r3, [r6, #172]
2573	movw	r2, #65535
2574	cmp	r3, r2
2575	beq	.L253
2576	ldr	r2, [r6, #72]
2577	mov	r0, r4
2578	movs	r1, #64
2579	ldrh	r3, [r2, r3, lsl #1]
2580	ldr	r2, .L265+44
2581	bl	snprintf
2582	add	r4, r4, r0
2583.L253:
2584	movs	r0, #0
2585	ldr	fp, .L265+48
2586	bl	List_get_gc_head_node
2587	uxth	r0, r0
2588	movs	r5, #0
2589	movw	r10, #65535
2590	mov	r9, #6
2591.L255:
2592	ldr	r3, [r6, #2516]
2593	cmp	r0, r10
2594	beq	.L254
2595	ldr	r2, [r6, #2536]
2596	mul	r8, r9, r0
2597	movs	r1, #64
2598	add	r3, r3, r8
2599	ldrh	r2, [r2, r0, lsl #1]
2600	str	r2, [sp, #12]
2601	mov	r2, fp
2602	ldrh	r3, [r3, #4]
2603	str	r3, [sp, #8]
2604	ldr	r3, [r6, #72]
2605	ldrh	r3, [r3, r0, lsl #1]
2606	strd	r0, r3, [sp]
2607	mov	r3, r5
2608	mov	r0, r4
2609	adds	r5, r5, #1
2610	bl	snprintf
2611	ldr	r3, [r6, #2516]
2612	add	r4, r4, r0
2613	cmp	r5, #16
2614	ldrh	r0, [r3, r8]
2615	bne	.L255
2616.L254:
2617	ldr	r3, [r6, #2516]
2618	movs	r5, #0
2619	ldr	r1, [r6, #2532]
2620	movw	r9, #65535
2621	ldr	fp, .L265+52
2622	mov	r10, #6
2623	subs	r1, r1, r3
2624	ldr	r3, .L265+56
2625	asrs	r1, r1, #1
2626	muls	r1, r3, r1
2627	uxth	r1, r1
2628.L257:
2629	cmp	r1, r9
2630	beq	.L256
2631	ldr	r3, [r6, #2536]
2632	mul	r8, r10, r1
2633	mov	r0, r4
2634	mov	r2, fp
2635	ldrh	r3, [r3, r1, lsl #1]
2636	str	r3, [sp, #8]
2637	ldr	r3, [r6, #2516]
2638	add	r3, r3, r8
2639	ldrh	r3, [r3, #4]
2640	strd	r1, r3, [sp]
2641	mov	r3, r5
2642	movs	r1, #64
2643	adds	r5, r5, #1
2644	bl	snprintf
2645	cmp	r5, #4
2646	add	r4, r4, r0
2647	beq	.L256
2648	ldr	r3, [r6, #2516]
2649	ldrh	r1, [r3, r8]
2650	b	.L257
2651.L266:
2652	.align	2
2653.L265:
2654	.word	.LC64
2655	.word	.LC65
2656	.word	.LC66
2657	.word	.LC67
2658	.word	.LC68
2659	.word	.LC69
2660	.word	.LC70
2661	.word	.LC71
2662	.word	.LC72
2663	.word	.LC73
2664	.word	.LANCHOR2
2665	.word	.LC74
2666	.word	.LC75
2667	.word	.LC76
2668	.word	-1431655765
2669	.fnend
2670	.size	FtlPrintInfo2buf, .-FtlPrintInfo2buf
2671	.section	.rodata.str1.1
2672.LC77:
2673	.ascii	"%s\012\000"
2674	.text
2675	.align	1
2676	.global	rknand_proc_ftlread
2677	.syntax unified
2678	.thumb
2679	.thumb_func
2680	.fpu softvfp
2681	.type	rknand_proc_ftlread, %function
2682rknand_proc_ftlread:
2683	.fnstart
2684	@ args = 0, pretend = 0, frame = 0
2685	@ frame_needed = 0, uses_anonymous_args = 0
2686	push	{r3, r4, r5, lr}
2687	.save {r3, r4, r5, lr}
2688	cmp	r0, #2048
2689	mov	r5, r1
2690	blt	.L269
2691	ldr	r3, .L270
2692	add	r4, r5, #30
2693	ldr	r2, .L270+4
2694	movs	r1, #64
2695	mov	r0, r5
2696	bl	snprintf
2697	mov	r0, r4
2698	bl	FtlPrintInfo2buf
2699	add	r0, r0, r4
2700	subs	r0, r0, r5
2701.L267:
2702	pop	{r3, r4, r5, pc}
2703.L269:
2704	movs	r0, #0
2705	b	.L267
2706.L271:
2707	.align	2
2708.L270:
2709	.word	.LC0
2710	.word	.LC77
2711	.fnend
2712	.size	rknand_proc_ftlread, .-rknand_proc_ftlread
2713	.section	.rodata.str1.1
2714.LC78:
2715	.ascii	"swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x"
2716	.ascii	"\012\000"
2717	.text
2718	.align	1
2719	.global	GetSwlReplaceBlock
2720	.syntax unified
2721	.thumb
2722	.thumb_func
2723	.fpu softvfp
2724	.type	GetSwlReplaceBlock, %function
2725GetSwlReplaceBlock:
2726	.fnstart
2727	@ args = 0, pretend = 0, frame = 8
2728	@ frame_needed = 0, uses_anonymous_args = 0
2729	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
2730	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
2731	ldr	r4, .L296
2732	.pad #28
2733	sub	sp, sp, #28
2734	ldr	r2, [r4, #2604]
2735	ldr	r3, [r4, #2616]
2736	cmp	r2, r3
2737	bcs	.L273
2738	ldrh	r1, [r4, #240]
2739	movs	r3, #0
2740	ldr	r0, [r4, #2536]
2741	str	r3, [r4, #2596]
2742.L274:
2743	ldr	r5, [r4, #2596]
2744	cmp	r1, r3
2745	bhi	.L275
2746	mov	r0, r5
2747	bl	__aeabi_uidiv
2748	str	r0, [r4, #2604]
2749	ldr	r0, [r4, #2600]
2750	ldrh	r1, [r4, #292]
2751	subs	r0, r5, r0
2752	bl	__aeabi_uidiv
2753	str	r0, [r4, #2596]
2754.L276:
2755	ldr	r6, [r4, #2616]
2756	ldr	r8, [r4, #2604]
2757	add	r3, r6, #256
2758	cmp	r3, r8
2759	bls	.L281
2760	ldr	r2, [r4, #2612]
2761	add	r3, r6, #768
2762	cmp	r3, r2
2763	bls	.L281
2764.L283:
2765	movw	r5, #65535
2766.L282:
2767	mov	r0, r5
2768	add	sp, sp, #28
2769	@ sp needed
2770	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
2771.L275:
2772	ldrh	r2, [r0, r3, lsl #1]
2773	adds	r3, r3, #1
2774	add	r5, r5, r2
2775	str	r5, [r4, #2596]
2776	b	.L274
2777.L273:
2778	ldr	r3, [r4, #2612]
2779	cmp	r2, r3
2780	bls	.L276
2781	adds	r3, r3, #1
2782	str	r3, [r4, #2612]
2783	movs	r3, #0
2784.L278:
2785	ldrh	r2, [r4, #240]
2786	cmp	r2, r3
2787	bls	.L276
2788	ldr	r1, [r4, #2536]
2789	ldrh	r2, [r1, r3, lsl #1]
2790	adds	r2, r2, #1
2791	strh	r2, [r1, r3, lsl #1]	@ movhi
2792	adds	r3, r3, #1
2793	b	.L278
2794.L281:
2795	ldrh	r0, [r4, #224]
2796	add	r0, r0, r0, lsl #1
2797	lsrs	r0, r0, #2
2798	bl	GetFreeBlockMaxEraseCount
2799	add	r3, r6, #64
2800	mov	r1, r0
2801	cmp	r0, r3
2802	bcc	.L283
2803	ldr	r3, [r4, #2520]
2804	cmp	r3, #0
2805	beq	.L283
2806	ldrh	r2, [r4, #240]
2807	movw	r7, #65535
2808	ldr	lr, [r4, #2516]
2809	mov	r10, r7
2810	ldr	r9, [r4, #2536]
2811	movs	r0, #0
2812	str	r2, [sp, #20]
2813	mov	r2, r7
2814	mov	fp, #6
2815.L284:
2816	ldrh	ip, [r3]
2817	cmp	ip, r10
2818	bne	.L287
2819	mov	r5, r2
2820.L286:
2821	movw	r3, #65535
2822	cmp	r5, r3
2823	beq	.L283
2824	ldrh	r10, [r9, r5, lsl #1]
2825	lsl	fp, r5, #1
2826	cmp	r6, r10
2827	bcs	.L288
2828	bl	GetFreeBlockMinEraseCount
2829	cmp	r6, r0
2830	it	cc
2831	strcc	r7, [r4, #2616]
2832.L288:
2833	cmp	r8, r10
2834	bls	.L283
2835	add	r3, r10, #128
2836	cmp	r1, r3
2837	ble	.L283
2838	add	r2, r10, #256
2839	ldr	r3, [r4, #2612]
2840	cmp	r8, r2
2841	bhi	.L289
2842	add	r10, r10, #768
2843	cmp	r10, r3
2844	bcs	.L283
2845.L289:
2846	str	r1, [sp, #8]
2847	mov	r1, r5
2848	ldr	r0, .L296+4
2849	ldrh	r2, [r9, fp]
2850	str	r2, [sp, #4]
2851	ldr	r2, [r4, #72]
2852	ldrh	r2, [r2, fp]
2853	str	r2, [sp]
2854	mov	r2, r8
2855	bl	sftl_printk
2856	movs	r3, #1
2857	str	r3, [r4, #3164]
2858	b	.L282
2859.L287:
2860	adds	r0, r0, #1
2861	ldr	r5, [sp, #20]
2862	uxth	r0, r0
2863	cmp	r5, r0
2864	bcc	.L283
2865	ldrh	r5, [r3, #4]
2866	cbz	r5, .L285
2867	sub	r3, r3, lr
2868	ldr	r5, .L296+8
2869	asrs	r3, r3, #1
2870	muls	r3, r5, r3
2871	uxth	r5, r3
2872	ldrh	r3, [r9, r5, lsl #1]
2873	cmp	r6, r3
2874	bcs	.L286
2875	cmp	r3, r7
2876	itt	cc
2877	movcc	r7, r3
2878	movcc	r2, r5
2879.L285:
2880	mla	r3, fp, ip, lr
2881	b	.L284
2882.L297:
2883	.align	2
2884.L296:
2885	.word	.LANCHOR0
2886	.word	.LC78
2887	.word	-1431655765
2888	.fnend
2889	.size	GetSwlReplaceBlock, .-GetSwlReplaceBlock
2890	.align	1
2891	.global	free_data_superblock
2892	.syntax unified
2893	.thumb
2894	.thumb_func
2895	.fpu softvfp
2896	.type	free_data_superblock, %function
2897free_data_superblock:
2898	.fnstart
2899	@ args = 0, pretend = 0, frame = 0
2900	@ frame_needed = 0, uses_anonymous_args = 0
2901	movw	r2, #65535
2902	push	{r3, lr}
2903	.save {r3, lr}
2904	cmp	r0, r2
2905	beq	.L299
2906	ldr	r2, .L300
2907	movs	r1, #0
2908	ldr	r2, [r2, #72]
2909	strh	r1, [r2, r0, lsl #1]	@ movhi
2910	bl	INSERT_FREE_LIST
2911.L299:
2912	movs	r0, #0
2913	pop	{r3, pc}
2914.L301:
2915	.align	2
2916.L300:
2917	.word	.LANCHOR0
2918	.fnend
2919	.size	free_data_superblock, .-free_data_superblock
2920	.align	1
2921	.global	get_new_active_ppa
2922	.syntax unified
2923	.thumb
2924	.thumb_func
2925	.fpu softvfp
2926	.type	get_new_active_ppa, %function
2927get_new_active_ppa:
2928	.fnstart
2929	@ args = 0, pretend = 0, frame = 0
2930	@ frame_needed = 0, uses_anonymous_args = 0
2931	push	{r3, r4, r5, r6, r7, lr}
2932	.save {r3, r4, r5, r6, r7, lr}
2933	movw	r3, #65535
2934	mov	r4, r0
2935	ldrh	r2, [r0]
2936	cmp	r2, r3
2937	bne	.L303
2938	ldr	r1, .L317
2939	movw	r2, #2792
2940	ldr	r0, .L317+4
2941	bl	sftl_printk
2942.L303:
2943	ldr	r6, .L317+8
2944	ldrh	r2, [r4, #2]
2945	ldrh	r3, [r6, #302]
2946	cmp	r2, r3
2947	bne	.L304
2948	ldr	r1, .L317
2949	movw	r2, #2793
2950	ldr	r0, .L317+4
2951	bl	sftl_printk
2952.L304:
2953	ldrh	r3, [r4, #4]
2954	cbnz	r3, .L305
2955	ldr	r1, .L317
2956	movw	r2, #2794
2957	ldr	r0, .L317+4
2958	bl	sftl_printk
2959.L305:
2960	ldrb	r3, [r4, #6]	@ zero_extendqisi2
2961	movs	r1, #0
2962	strb	r1, [r4, #10]
2963	movw	r7, #65535
2964	adds	r3, r3, #8
2965	ldrh	r0, [r6, #232]
2966	ldrh	r5, [r4, r3, lsl #1]
2967.L306:
2968	ldrh	r2, [r4, #2]
2969	cmp	r5, r7
2970	beq	.L308
2971	ldrh	r6, [r6, #302]
2972	cmp	r6, r2
2973	bls	.L312
2974	ldrh	r3, [r4, #4]
2975	orr	r5, r2, r5, lsl #10
2976	ldrb	r2, [r4, #6]	@ zero_extendqisi2
2977	movw	r7, #65535
2978	subs	r3, r3, #1
2979	uxth	r3, r3
2980	strh	r3, [r4, #4]	@ movhi
2981.L311:
2982	adds	r1, r2, #1
2983	uxtb	r2, r1
2984	cmp	r0, r2
2985	itttt	eq
2986	ldrheq	r2, [r4, #2]
2987	addeq	r2, r2, #1
2988	strheq	r2, [r4, #2]	@ movhi
2989	moveq	r2, #0
2990	add	r1, r2, #8
2991	ldrh	r1, [r4, r1, lsl #1]
2992	cmp	r1, r7
2993	beq	.L311
2994	strb	r2, [r4, #6]
2995	ldrh	r2, [r4, #2]
2996	cmp	r2, r6
2997	bne	.L302
2998	cbz	r3, .L302
2999	ldr	r1, .L317
3000	movw	r2, #2817
3001	ldr	r0, .L317+4
3002	bl	sftl_printk
3003.L302:
3004	mov	r0, r5
3005	pop	{r3, r4, r5, r6, r7, pc}
3006.L308:
3007	ldrb	r3, [r4, #6]	@ zero_extendqisi2
3008	adds	r3, r3, #1
3009	uxtb	r3, r3
3010	strb	r3, [r4, #6]
3011	cmp	r3, r0
3012	ittt	eq
3013	strbeq	r1, [r4, #6]
3014	addeq	r2, r2, #1
3015	strheq	r2, [r4, #2]	@ movhi
3016	ldrb	r3, [r4, #6]	@ zero_extendqisi2
3017	adds	r3, r3, #8
3018	ldrh	r5, [r4, r3, lsl #1]
3019	b	.L306
3020.L312:
3021	movw	r5, #65535
3022	b	.L302
3023.L318:
3024	.align	2
3025.L317:
3026	.word	.LANCHOR1+111
3027	.word	.LC8
3028	.word	.LANCHOR0
3029	.fnend
3030	.size	get_new_active_ppa, .-get_new_active_ppa
3031	.align	1
3032	.global	FtlGcBufInit
3033	.syntax unified
3034	.thumb
3035	.thumb_func
3036	.fpu softvfp
3037	.type	FtlGcBufInit, %function
3038FtlGcBufInit:
3039	.fnstart
3040	@ args = 0, pretend = 0, frame = 0
3041	@ frame_needed = 0, uses_anonymous_args = 0
3042	ldr	r3, .L328
3043	movs	r1, #0
3044	push	{r4, r5, r6, r7, r8, lr}
3045	.save {r4, r5, r6, r7, r8, lr}
3046	mov	ip, #20
3047	movs	r6, #12
3048	movs	r7, #1
3049	str	r1, [r3, #3168]
3050.L320:
3051	ldrh	r2, [r3, #232]
3052	uxth	r0, r1
3053	cmp	r2, r0
3054	bhi	.L323
3055	ldr	r7, .L328
3056	movs	r5, #12
3057	movs	r6, #0
3058.L324:
3059	ldr	r1, [r3, #3188]
3060	cmp	r2, r1
3061	bcc	.L327
3062	pop	{r4, r5, r6, r7, r8, pc}
3063.L323:
3064	uxth	r0, r1
3065	ldr	r5, [r3, #3172]
3066	ldr	lr, [r3, #3176]
3067	adds	r1, r1, #1
3068	mul	r4, r6, r0
3069	adds	r2, r5, r4
3070	str	r7, [r2, #8]
3071	ldrh	r2, [r3, #310]
3072	muls	r2, r0, r2
3073	it	mi
3074	addmi	r2, r2, #3
3075	bic	r2, r2, #3
3076	add	r2, r2, lr
3077	str	r2, [r5, r4]
3078	ldrh	r2, [r3, #312]
3079	ldr	r5, [r3, #3172]
3080	ldr	r8, [r3, #3180]
3081	add	lr, r5, r4
3082	muls	r2, r0, r2
3083	it	mi
3084	addmi	r2, r2, #3
3085	bic	r2, r2, #3
3086	add	r2, r2, r8
3087	str	r2, [lr, #4]
3088	ldr	r2, [r3, #3184]
3089	mla	r2, ip, r0, r2
3090	ldr	r0, [r5, r4]
3091	str	r0, [r2, #8]
3092	ldr	r0, [lr, #4]
3093	str	r0, [r2, #12]
3094	b	.L320
3095.L327:
3096	mul	r0, r5, r2
3097	ldr	r4, [r3, #3172]
3098	ldr	ip, [r3, #3176]
3099	adds	r1, r4, r0
3100	str	r6, [r1, #8]
3101	ldrh	r1, [r3, #310]
3102	muls	r1, r2, r1
3103	it	mi
3104	addmi	r1, r1, #3
3105	bic	r1, r1, #3
3106	add	r1, r1, ip
3107	str	r1, [r4, r0]
3108	ldr	r4, [r7, #3180]
3109	ldr	r1, [r3, #3172]
3110	add	r0, r0, r1
3111	ldrh	r1, [r3, #312]
3112	muls	r1, r2, r1
3113	add	r2, r2, #1
3114	it	mi
3115	addmi	r1, r1, #3
3116	uxth	r2, r2
3117	bic	r1, r1, #3
3118	add	r1, r1, r4
3119	str	r1, [r0, #4]
3120	b	.L324
3121.L329:
3122	.align	2
3123.L328:
3124	.word	.LANCHOR0
3125	.fnend
3126	.size	FtlGcBufInit, .-FtlGcBufInit
3127	.align	1
3128	.global	FtlGcBufFree
3129	.syntax unified
3130	.thumb
3131	.thumb_func
3132	.fpu softvfp
3133	.type	FtlGcBufFree, %function
3134FtlGcBufFree:
3135	.fnstart
3136	@ args = 0, pretend = 0, frame = 0
3137	@ frame_needed = 0, uses_anonymous_args = 0
3138	ldr	r3, .L337
3139	push	{r4, r5, r6, r7, r8, r9, r10, lr}
3140	.save {r4, r5, r6, r7, r8, r9, r10, lr}
3141	movs	r5, #0
3142	mov	r8, r5
3143	movs	r7, #20
3144	mov	lr, #12
3145	ldr	ip, [r3, #3188]
3146	ldr	r6, [r3, #3172]
3147.L331:
3148	uxth	r3, r5
3149	cmp	r1, r3
3150	bls	.L330
3151	mla	r4, r7, r3, r0
3152	movs	r2, #0
3153.L332:
3154	uxth	r3, r2
3155	cmp	ip, r3
3156	bls	.L333
3157	mul	r3, lr, r3
3158	ldr	r10, [r4, #8]
3159	adds	r2, r2, #1
3160	add	r9, r6, r3
3161	ldr	r3, [r6, r3]
3162	cmp	r3, r10
3163	bne	.L332
3164	str	r8, [r9, #8]
3165.L333:
3166	adds	r5, r5, #1
3167	b	.L331
3168.L330:
3169	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
3170.L338:
3171	.align	2
3172.L337:
3173	.word	.LANCHOR0
3174	.fnend
3175	.size	FtlGcBufFree, .-FtlGcBufFree
3176	.align	1
3177	.global	FtlGcBufAlloc
3178	.syntax unified
3179	.thumb
3180	.thumb_func
3181	.fpu softvfp
3182	.type	FtlGcBufAlloc, %function
3183FtlGcBufAlloc:
3184	.fnstart
3185	@ args = 0, pretend = 0, frame = 0
3186	@ frame_needed = 0, uses_anonymous_args = 0
3187	ldr	r3, .L346
3188	mov	ip, #12
3189	push	{r4, r5, r6, r7, r8, r9, lr}
3190	.save {r4, r5, r6, r7, r8, r9, lr}
3191	movs	r4, #0
3192	mov	lr, #1
3193	mov	r8, #20
3194	ldr	r6, [r3, #3188]
3195	ldr	r5, [r3, #3172]
3196.L340:
3197	uxth	r2, r4
3198	cmp	r1, r2
3199	bhi	.L344
3200	pop	{r4, r5, r6, r7, r8, r9, pc}
3201.L344:
3202	mov	r9, #0
3203.L341:
3204	uxth	r3, r9
3205	cmp	r6, r3
3206	bls	.L342
3207	mla	r3, ip, r3, r5
3208	add	r9, r9, #1
3209	ldr	r7, [r3, #8]
3210	cmp	r7, #0
3211	bne	.L341
3212	mla	r2, r8, r2, r0
3213	ldr	r7, [r3]
3214	str	lr, [r3, #8]
3215	str	r7, [r2, #8]
3216	ldr	r3, [r3, #4]
3217	str	r3, [r2, #12]
3218.L342:
3219	adds	r4, r4, #1
3220	b	.L340
3221.L347:
3222	.align	2
3223.L346:
3224	.word	.LANCHOR0
3225	.fnend
3226	.size	FtlGcBufAlloc, .-FtlGcBufAlloc
3227	.align	1
3228	.global	IsBlkInGcList
3229	.syntax unified
3230	.thumb
3231	.thumb_func
3232	.fpu softvfp
3233	.type	IsBlkInGcList, %function
3234IsBlkInGcList:
3235	.fnstart
3236	@ args = 0, pretend = 0, frame = 0
3237	@ frame_needed = 0, uses_anonymous_args = 0
3238	@ link register save eliminated.
3239	ldr	r2, .L353
3240	ldr	r3, [r2, #3192]
3241	ldrh	r2, [r2, #3196]
3242	add	r2, r3, r2, lsl #1
3243.L349:
3244	cmp	r3, r2
3245	bne	.L351
3246	movs	r0, #0
3247	bx	lr
3248.L351:
3249	ldrh	r1, [r3], #2
3250	cmp	r1, r0
3251	bne	.L349
3252	movs	r0, #1
3253	bx	lr
3254.L354:
3255	.align	2
3256.L353:
3257	.word	.LANCHOR0
3258	.fnend
3259	.size	IsBlkInGcList, .-IsBlkInGcList
3260	.align	1
3261	.global	FtlGcUpdatePage
3262	.syntax unified
3263	.thumb
3264	.thumb_func
3265	.fpu softvfp
3266	.type	FtlGcUpdatePage, %function
3267FtlGcUpdatePage:
3268	.fnstart
3269	@ args = 0, pretend = 0, frame = 0
3270	@ frame_needed = 0, uses_anonymous_args = 0
3271	push	{r3, r4, r5, r6, r7, lr}
3272	.save {r3, r4, r5, r6, r7, lr}
3273	mov	r5, r0
3274	ubfx	r0, r0, #10, #16
3275	mov	r6, r2
3276	mov	r7, r1
3277	bl	P2V_block_in_plane
3278	ldr	r3, .L359
3279	movs	r4, #0
3280	ldr	r2, [r3, #3192]
3281	ldrh	ip, [r3, #3196]
3282	sub	lr, r2, #2
3283.L356:
3284	uxth	r1, r4
3285	cmp	ip, r1
3286	bhi	.L358
3287	itttt	eq
3288	strheq	r0, [r2, r4, lsl #1]	@ movhi
3289	ldrheq	r2, [r3, #3196]
3290	addeq	r2, r2, #1
3291	strheq	r2, [r3, #3196]	@ movhi
3292	b	.L357
3293.L358:
3294	adds	r4, r4, #1
3295	ldrh	r1, [lr, r4, lsl #1]
3296	cmp	r1, r0
3297	bne	.L356
3298.L357:
3299	ldrh	r4, [r3, #3204]
3300	movs	r2, #12
3301	muls	r4, r2, r4
3302	ldr	r2, [r3, #3200]
3303	adds	r1, r2, r4
3304	strd	r7, r6, [r1, #4]
3305	str	r5, [r2, r4]
3306	ldrh	r2, [r3, #3204]
3307	adds	r2, r2, #1
3308	strh	r2, [r3, #3204]	@ movhi
3309	pop	{r3, r4, r5, r6, r7, pc}
3310.L360:
3311	.align	2
3312.L359:
3313	.word	.LANCHOR0
3314	.fnend
3315	.size	FtlGcUpdatePage, .-FtlGcUpdatePage
3316	.section	.rodata.str1.1
3317.LC79:
3318	.ascii	"FtlGcRefreshBlock  0x%x\012\000"
3319	.text
3320	.align	1
3321	.global	FtlGcRefreshBlock
3322	.syntax unified
3323	.thumb
3324	.thumb_func
3325	.fpu softvfp
3326	.type	FtlGcRefreshBlock, %function
3327FtlGcRefreshBlock:
3328	.fnstart
3329	@ args = 0, pretend = 0, frame = 0
3330	@ frame_needed = 0, uses_anonymous_args = 0
3331	mov	r1, r0
3332	push	{r4, lr}
3333	.save {r4, lr}
3334	mov	r4, r0
3335	ldr	r0, .L364
3336	bl	sftl_printk
3337	ldr	r3, .L364+4
3338	ldrh	r0, [r3, #222]
3339	cmp	r0, r4
3340	beq	.L362
3341	ldrh	r1, [r3, #220]
3342	cmp	r1, r4
3343	beq	.L362
3344	movw	r2, #65535
3345	cmp	r0, r2
3346	bne	.L363
3347	strh	r4, [r3, #222]	@ movhi
3348.L362:
3349	movs	r0, #0
3350	pop	{r4, pc}
3351.L363:
3352	cmp	r1, r2
3353	it	eq
3354	strheq	r4, [r3, #220]	@ movhi
3355	b	.L362
3356.L365:
3357	.align	2
3358.L364:
3359	.word	.LC79
3360	.word	.LANCHOR0
3361	.fnend
3362	.size	FtlGcRefreshBlock, .-FtlGcRefreshBlock
3363	.section	.rodata.str1.1
3364.LC80:
3365	.ascii	"FtlGcMarkBadPhyBlk %d 0x%x\012\000"
3366	.text
3367	.align	1
3368	.global	FtlGcMarkBadPhyBlk
3369	.syntax unified
3370	.thumb
3371	.thumb_func
3372	.fpu softvfp
3373	.type	FtlGcMarkBadPhyBlk, %function
3374FtlGcMarkBadPhyBlk:
3375	.fnstart
3376	@ args = 0, pretend = 0, frame = 0
3377	@ frame_needed = 0, uses_anonymous_args = 0
3378	push	{r4, r5, r6, lr}
3379	.save {r4, r5, r6, lr}
3380	mov	r5, r0
3381	ldr	r4, .L370
3382	bl	P2V_block_in_plane
3383	mov	r2, r5
3384	mov	r6, r0
3385	ldr	r0, .L370+4
3386	ldrh	r1, [r4, #3206]
3387	bl	sftl_printk
3388	mov	r0, r6
3389	bl	FtlGcRefreshBlock
3390	ldrh	r3, [r4, #3206]
3391	addw	r1, r4, #3208
3392	movs	r2, #0
3393.L367:
3394	uxth	r0, r2
3395	cmp	r3, r0
3396	bhi	.L369
3397	cmp	r3, #15
3398	itttt	ls
3399	addls	r2, r3, #1
3400	strhls	r2, [r4, #3206]	@ movhi
3401	addls	r4, r4, r3, lsl #1
3402	strhls	r5, [r4, #3208]	@ movhi
3403	b	.L368
3404.L369:
3405	ldrh	r0, [r1], #2
3406	adds	r2, r2, #1
3407	cmp	r0, r5
3408	bne	.L367
3409.L368:
3410	movs	r0, #0
3411	pop	{r4, r5, r6, pc}
3412.L371:
3413	.align	2
3414.L370:
3415	.word	.LANCHOR0
3416	.word	.LC80
3417	.fnend
3418	.size	FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
3419	.align	1
3420	.global	FtlGcReFreshBadBlk
3421	.syntax unified
3422	.thumb
3423	.thumb_func
3424	.fpu softvfp
3425	.type	FtlGcReFreshBadBlk, %function
3426FtlGcReFreshBadBlk:
3427	.fnstart
3428	@ args = 0, pretend = 0, frame = 0
3429	@ frame_needed = 0, uses_anonymous_args = 0
3430	push	{r4, lr}
3431	.save {r4, lr}
3432	ldr	r4, .L378
3433	ldrh	r3, [r4, #3206]
3434	cbz	r3, .L373
3435	ldrh	r1, [r4, #222]
3436	movw	r2, #65535
3437	cmp	r1, r2
3438	bne	.L373
3439	ldrh	r2, [r4, #3242]
3440	cmp	r2, r3
3441	itt	cs
3442	movcs	r3, #0
3443	strhcs	r3, [r4, #3242]	@ movhi
3444	ldrh	r3, [r4, #3242]
3445	add	r3, r4, r3, lsl #1
3446	ldrh	r0, [r3, #3208]
3447	bl	P2V_block_in_plane
3448	bl	FtlGcRefreshBlock
3449	ldrh	r3, [r4, #3242]
3450	adds	r3, r3, #1
3451	strh	r3, [r4, #3242]	@ movhi
3452.L373:
3453	movs	r0, #0
3454	pop	{r4, pc}
3455.L379:
3456	.align	2
3457.L378:
3458	.word	.LANCHOR0
3459	.fnend
3460	.size	FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
3461	.align	1
3462	.global	ftl_malloc
3463	.syntax unified
3464	.thumb
3465	.thumb_func
3466	.fpu softvfp
3467	.type	ftl_malloc, %function
3468ftl_malloc:
3469	.fnstart
3470	@ args = 0, pretend = 0, frame = 0
3471	@ frame_needed = 0, uses_anonymous_args = 0
3472	@ link register save eliminated.
3473	movw	r1, #3265
3474	b	__kmalloc
3475	.fnend
3476	.size	ftl_malloc, .-ftl_malloc
3477	.align	1
3478	.global	ftl_free
3479	.syntax unified
3480	.thumb
3481	.thumb_func
3482	.fpu softvfp
3483	.type	ftl_free, %function
3484ftl_free:
3485	.fnstart
3486	@ args = 0, pretend = 0, frame = 0
3487	@ frame_needed = 0, uses_anonymous_args = 0
3488	@ link register save eliminated.
3489	b	kfree
3490	.fnend
3491	.size	ftl_free, .-ftl_free
3492	.section	.rodata.str1.1
3493.LC81:
3494	.ascii	"%s %p + 0x%x:\000"
3495.LC82:
3496	.ascii	"0x%08x,\000"
3497.LC83:
3498	.ascii	"0x%04x,\000"
3499.LC84:
3500	.ascii	"0x%02x,\000"
3501.LC85:
3502	.ascii	"\012\000"
3503	.text
3504	.align	1
3505	.global	rknand_print_hex
3506	.syntax unified
3507	.thumb
3508	.thumb_func
3509	.fpu softvfp
3510	.type	rknand_print_hex, %function
3511rknand_print_hex:
3512	.fnstart
3513	@ args = 0, pretend = 0, frame = 8
3514	@ frame_needed = 0, uses_anonymous_args = 0
3515	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
3516	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
3517	.pad #12
3518	movs	r7, #0
3519	ldr	r10, .L391
3520	ldr	fp, .L391+4
3521	mov	r9, r0
3522	mov	r5, r1
3523	mov	r8, r2
3524	mov	r6, r7
3525	mov	r4, r7
3526	str	r3, [sp, #4]
3527.L383:
3528	ldr	r3, [sp, #4]
3529	cmp	r3, r4
3530	bhi	.L389
3531	ldr	r0, .L391+8
3532	add	sp, sp, #12
3533	@ sp needed
3534	pop	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
3535	b	sftl_printk
3536.L389:
3537	cbnz	r6, .L384
3538	ldr	r0, .L391+12
3539	mov	r3, r7
3540	mov	r2, r5
3541	mov	r1, r9
3542	bl	sftl_printk
3543.L384:
3544	cmp	r8, #4
3545	bne	.L385
3546	ldr	r1, [r5, r4, lsl #2]
3547	ldr	r0, .L391+16
3548.L390:
3549	adds	r6, r6, #1
3550	bl	sftl_printk
3551	cmp	r6, #15
3552	bls	.L388
3553	movs	r6, #0
3554	ldr	r0, .L391+8
3555	bl	sftl_printk
3556.L388:
3557	adds	r4, r4, #1
3558	add	r7, r7, r8
3559	b	.L383
3560.L385:
3561	cmp	r8, #2
3562	itete	eq
3563	moveq	r0, fp
3564	movne	r0, r10
3565	ldrheq	r1, [r5, r4, lsl #1]
3566	ldrbne	r1, [r5, r4]	@ zero_extendqisi2
3567	b	.L390
3568.L392:
3569	.align	2
3570.L391:
3571	.word	.LC84
3572	.word	.LC83
3573	.word	.LC85
3574	.word	.LC81
3575	.word	.LC82
3576	.fnend
3577	.size	rknand_print_hex, .-rknand_print_hex
3578	.section	.rodata.str1.1
3579.LC86:
3580	.ascii	"%s: addr: %x is in id block!!!!!!!!!!\012\000"
3581.LC87:
3582	.ascii	"not free: w: d:\000"
3583.LC88:
3584	.ascii	"not free: w: s:\000"
3585	.text
3586	.align	1
3587	.global	FlashEraseBlocks
3588	.syntax unified
3589	.thumb
3590	.thumb_func
3591	.fpu softvfp
3592	.type	FlashEraseBlocks, %function
3593FlashEraseBlocks:
3594	.fnstart
3595	@ args = 0, pretend = 0, frame = 24
3596	@ frame_needed = 0, uses_anonymous_args = 0
3597	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
3598	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
3599	mov	r6, r0
3600	ldr	fp, .L409
3601	.pad #28
3602	sub	sp, sp, #28
3603	mov	r7, r2
3604	mov	r3, sp
3605	movs	r4, #0
3606	bic	r9, r3, #8160
3607	bic	r9, r9, #31
3608	ldrh	r10, [fp, #12]
3609	ldr	r3, [r9, #24]
3610	str	r3, [sp, #20]
3611	lsl	r3, r10, #3
3612	str	r3, [sp]
3613	add	r3, r2, r2, lsl #2
3614	str	r3, [sp, #4]
3615.L394:
3616	ldr	r3, [sp, #4]
3617	cmp	r4, r3
3618	beq	.L397
3619	add	r2, sp, #12
3620	add	r1, sp, #16
3621	add	r0, r6, r4, lsl #2
3622	mov	r5, r6
3623	bl	l2p_addr_tran
3624	ldr	r8, [sp, #12]
3625	cmp	r8, #0
3626	bne	.L395
3627	ldr	r2, [sp, #16]
3628	ldr	r3, [sp]
3629	cmp	r3, r2
3630	bls	.L395
3631	ldr	r6, .L409+4
3632	ldr	r4, .L409+8
3633.L396:
3634	mov	r3, #-1
3635	ldr	r2, [sp, #16]
3636	str	r3, [r5]
3637	mov	r1, r6
3638	mov	r0, r4
3639	add	r8, r8, #1
3640	bl	sftl_printk
3641	ldr	r1, [r5, #8]
3642	ldr	r0, .L409+12
3643	movs	r3, #16
3644	movs	r2, #4
3645	adds	r5, r5, #20
3646	bl	rknand_print_hex
3647	movs	r3, #4
3648	ldr	r1, [r5, #-8]
3649	mov	r2, r3
3650	ldr	r0, .L409+16
3651	bl	rknand_print_hex
3652	cmp	r7, r8
3653	bne	.L396
3654	bl	dump_stack
3655.L397:
3656	ldr	r2, [sp, #20]
3657	ldr	r3, [r9, #24]
3658	cmp	r2, r3
3659	beq	.L404
3660	bl	__stack_chk_fail
3661.L395:
3662	ldr	r2, [fp, #3248]
3663	uxtb	r0, r8
3664	ldr	r1, [sp, #16]
3665	blx	r2
3666	cmp	r0, #0
3667	mov	r2, r0
3668	it	ne
3669	movne	r2, #-1
3670	str	r2, [r6, r4, lsl #2]
3671	ldrh	r2, [fp, #14]
3672	cmp	r2, #4
3673	bne	.L401
3674	ldr	r1, [sp, #16]
3675	ldr	r2, [fp, #3248]
3676	ldrb	r0, [sp, #12]	@ zero_extendqisi2
3677	add	r1, r1, r10
3678	blx	r2
3679	cbz	r0, .L401
3680	mov	r3, #-1
3681	str	r3, [r6, r4, lsl #2]
3682.L401:
3683	adds	r4, r4, #5
3684	b	.L394
3685.L404:
3686	movs	r0, #0
3687	add	sp, sp, #28
3688	@ sp needed
3689	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
3690.L410:
3691	.align	2
3692.L409:
3693	.word	.LANCHOR0
3694	.word	.LANCHOR1+130
3695	.word	.LC86
3696	.word	.LC87
3697	.word	.LC88
3698	.fnend
3699	.size	FlashEraseBlocks, .-FlashEraseBlocks
3700	.align	1
3701	.global	FtlFreeSysBlkQueueIn
3702	.syntax unified
3703	.thumb
3704	.thumb_func
3705	.fpu softvfp
3706	.type	FtlFreeSysBlkQueueIn, %function
3707FtlFreeSysBlkQueueIn:
3708	.fnstart
3709	@ args = 0, pretend = 0, frame = 0
3710	@ frame_needed = 0, uses_anonymous_args = 0
3711	subs	r3, r0, #1
3712	push	{r4, r5, r6, lr}
3713	.save {r4, r5, r6, lr}
3714	movw	r2, #65533
3715	uxth	r3, r3
3716	mov	r5, r0
3717	cmp	r3, r2
3718	bhi	.L411
3719	ldr	r4, .L420
3720	ldrh	r3, [r4, #418]
3721	cmp	r3, #1024
3722	beq	.L411
3723	cbz	r1, .L413
3724	bl	P2V_block_in_plane
3725	mov	r6, r0
3726	ldr	r0, [r4, #3268]
3727	lsls	r3, r5, #10
3728	movs	r2, #1
3729	mov	r1, r2
3730	str	r3, [r0, #4]
3731	bl	FlashEraseBlocks
3732	ldr	r2, [r4, #2536]
3733	ldrh	r3, [r2, r6, lsl #1]
3734	adds	r3, r3, #1
3735	strh	r3, [r2, r6, lsl #1]	@ movhi
3736	ldr	r3, [r4, #2608]
3737	adds	r3, r3, #1
3738	str	r3, [r4, #2608]
3739.L413:
3740	ldrh	r3, [r4, #418]
3741	adds	r3, r3, #1
3742	strh	r3, [r4, #418]	@ movhi
3743	ldrh	r3, [r4, #416]
3744	add	r2, r4, r3, lsl #1
3745	adds	r3, r3, #1
3746	ubfx	r3, r3, #0, #10
3747	strh	r3, [r4, #416]	@ movhi
3748	strh	r5, [r2, #420]	@ movhi
3749.L411:
3750	pop	{r4, r5, r6, pc}
3751.L421:
3752	.align	2
3753.L420:
3754	.word	.LANCHOR0
3755	.fnend
3756	.size	FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
3757	.section	.rodata.str1.1
3758.LC89:
3759	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d, error\012"
3760	.ascii	"\000"
3761	.text
3762	.align	1
3763	.global	FtlFreeSysBlkQueueOut
3764	.syntax unified
3765	.thumb
3766	.thumb_func
3767	.fpu softvfp
3768	.type	FtlFreeSysBlkQueueOut, %function
3769FtlFreeSysBlkQueueOut:
3770	.fnstart
3771	@ args = 0, pretend = 0, frame = 0
3772	@ frame_needed = 0, uses_anonymous_args = 0
3773	push	{r3, r4, r5, lr}
3774	.save {r3, r4, r5, lr}
3775	ldr	r4, .L427
3776	ldrh	r2, [r4, #418]
3777	cbz	r2, .L426
3778	ldrh	r3, [r4, #414]
3779	subs	r2, r2, #1
3780	ldr	r0, [r4, #3268]
3781	strh	r2, [r4, #418]	@ movhi
3782	movs	r2, #1
3783	add	r1, r4, r3, lsl #1
3784	adds	r3, r3, #1
3785	ubfx	r3, r3, #0, #10
3786	strh	r3, [r4, #414]	@ movhi
3787	ldrh	r5, [r1, #420]
3788	mov	r1, r2
3789	lsls	r3, r5, #10
3790	str	r3, [r0, #4]
3791	bl	FlashEraseBlocks
3792	ldr	r3, [r4, #2608]
3793	movw	r2, #65533
3794	adds	r3, r3, #1
3795	str	r3, [r4, #2608]
3796	subs	r3, r5, #1
3797	uxth	r3, r3
3798	cmp	r3, r2
3799	bls	.L424
3800.L423:
3801	ldrh	r2, [r4, #418]
3802	mov	r1, r5
3803	ldr	r0, .L427+4
3804	bl	sftl_printk
3805.L425:
3806	b	.L425
3807.L426:
3808	movw	r5, #65535
3809	b	.L423
3810.L424:
3811	mov	r0, r5
3812	pop	{r3, r4, r5, pc}
3813.L428:
3814	.align	2
3815.L427:
3816	.word	.LANCHOR0
3817	.word	.LC89
3818	.fnend
3819	.size	FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
3820	.section	.rodata.str1.1
3821.LC90:
3822	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d\012\000"
3823	.text
3824	.align	1
3825	.global	ftl_map_blk_alloc_new_blk
3826	.syntax unified
3827	.thumb
3828	.thumb_func
3829	.fpu softvfp
3830	.type	ftl_map_blk_alloc_new_blk, %function
3831ftl_map_blk_alloc_new_blk:
3832	.fnstart
3833	@ args = 0, pretend = 0, frame = 0
3834	@ frame_needed = 0, uses_anonymous_args = 0
3835	push	{r3, r4, r5, r6, r7, lr}
3836	.save {r3, r4, r5, r6, r7, lr}
3837	mov	r4, r0
3838	movs	r3, #0
3839	ldrh	r1, [r0, #10]
3840	ldr	r2, [r0, #12]
3841.L430:
3842	uxth	r5, r3
3843	cmp	r1, r5
3844	bls	.L435
3845	mov	r7, r2
3846	adds	r3, r3, #1
3847	adds	r2, r2, #2
3848	ldrh	r6, [r7]
3849	cmp	r6, #0
3850	bne	.L430
3851	bl	FtlFreeSysBlkQueueOut
3852	subs	r3, r0, #1
3853	movw	r2, #65533
3854	mov	r1, r0
3855	uxth	r3, r3
3856	strh	r0, [r7]	@ movhi
3857	cmp	r3, r2
3858	bls	.L431
3859	ldr	r3, .L437
3860	ldr	r0, .L437+4
3861	ldrh	r2, [r3, #418]
3862	bl	sftl_printk
3863.L432:
3864	b	.L432
3865.L431:
3866	ldr	r3, [r4, #28]
3867	strh	r6, [r4, #2]	@ movhi
3868	adds	r3, r3, #1
3869	str	r3, [r4, #28]
3870	ldrh	r3, [r4, #8]
3871	strh	r5, [r4]	@ movhi
3872	adds	r3, r3, #1
3873	strh	r3, [r4, #8]	@ movhi
3874	ldrh	r3, [r4, #10]
3875	cmp	r3, r5
3876	bhi	.L433
3877.L435:
3878	ldr	r1, .L437+8
3879	movw	r2, #578
3880	ldr	r0, .L437+12
3881	bl	sftl_printk
3882.L433:
3883	movs	r0, #0
3884	pop	{r3, r4, r5, r6, r7, pc}
3885.L438:
3886	.align	2
3887.L437:
3888	.word	.LANCHOR0
3889	.word	.LC90
3890	.word	.LANCHOR1+147
3891	.word	.LC8
3892	.fnend
3893	.size	ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
3894	.align	1
3895	.global	ftl_memset
3896	.syntax unified
3897	.thumb
3898	.thumb_func
3899	.fpu softvfp
3900	.type	ftl_memset, %function
3901ftl_memset:
3902	.fnstart
3903	@ args = 0, pretend = 0, frame = 0
3904	@ frame_needed = 0, uses_anonymous_args = 0
3905	@ link register save eliminated.
3906	b	memset
3907	.fnend
3908	.size	ftl_memset, .-ftl_memset
3909	.section	.rodata.str1.1
3910.LC91:
3911	.ascii	"%s error allocating memory. return -1\012\000"
3912	.text
3913	.align	1
3914	.global	FtlMemInit
3915	.syntax unified
3916	.thumb
3917	.thumb_func
3918	.fpu softvfp
3919	.type	FtlMemInit, %function
3920FtlMemInit:
3921	.fnstart
3922	@ args = 0, pretend = 0, frame = 0
3923	@ frame_needed = 0, uses_anonymous_args = 0
3924	push	{r4, r5, r6, r7, r8, lr}
3925	.save {r4, r5, r6, r7, r8, lr}
3926	movw	r3, #65535
3927	ldr	r4, .L539
3928	movs	r5, #0
3929	movs	r7, #12
3930	mov	r8, #80
3931	ldrh	r0, [r4, #306]
3932	str	r5, [r4, #2588]
3933	str	r5, [r4, #2592]
3934	lsls	r0, r0, #1
3935	str	r5, [r4, #2576]
3936	str	r5, [r4, #2564]
3937	str	r5, [r4, #2560]
3938	str	r5, [r4, #2568]
3939	str	r5, [r4, #2572]
3940	str	r5, [r4, #2556]
3941	str	r5, [r4, #2596]
3942	str	r5, [r4, #2600]
3943	str	r5, [r4, #2608]
3944	str	r5, [r4, #2612]
3945	str	r5, [r4, #2616]
3946	str	r5, [r4, #3272]
3947	str	r5, [r4, #3164]
3948	str	r3, [r4, #3276]
3949	str	r5, [r4, #3280]
3950	str	r5, [r4, #3156]
3951	str	r5, [r4, #3284]
3952	strh	r3, [r4, #222]	@ movhi
3953	strh	r3, [r4, #220]	@ movhi
3954	movs	r3, #32
3955	strh	r5, [r4, #3160]	@ movhi
3956	strh	r3, [r4, #3152]	@ movhi
3957	movs	r3, #128
3958	strh	r5, [r4, #3206]	@ movhi
3959	strh	r3, [r4, #3154]	@ movhi
3960	strh	r5, [r4, #3242]	@ movhi
3961	bl	ftl_malloc
3962	str	r0, [r4, #3192]
3963	ldrh	r0, [r4, #306]
3964	muls	r0, r7, r0
3965	bl	ftl_malloc
3966	ldrh	r6, [r4, #232]
3967	str	r0, [r4, #3200]
3968	mul	r8, r8, r6
3969	mov	r0, r8
3970	bl	ftl_malloc
3971	movs	r3, #20
3972	str	r0, [r4, #3288]
3973	muls	r6, r3, r6
3974	mov	r0, r6
3975	bl	ftl_malloc
3976	str	r0, [r4, #3292]
3977	mov	r0, r8
3978	bl	ftl_malloc
3979	str	r0, [r4, #3296]
3980	mov	r0, r6
3981	bl	ftl_malloc
3982	str	r0, [r4, #3268]
3983	mov	r0, r6
3984	bl	ftl_malloc
3985	ldrh	r3, [r4, #232]
3986	ldrh	r6, [r4, #310]
3987	str	r0, [r4, #3184]
3988	lsls	r3, r3, #1
3989	mov	r0, r6
3990	adds	r3, r3, #1
3991	str	r3, [r4, #3188]
3992	bl	ftl_malloc
3993	str	r0, [r4, #3300]
3994	mov	r0, r6
3995	bl	ftl_malloc
3996	str	r0, [r4, #3304]
3997	mov	r0, r6
3998	bl	ftl_malloc
3999	str	r0, [r4, #3308]
4000	ldr	r0, [r4, #3188]
4001	muls	r0, r6, r0
4002	bl	ftl_malloc
4003	str	r0, [r4, #3176]
4004	mov	r0, r6
4005	bl	ftl_malloc
4006	str	r0, [r4, #3312]
4007	mov	r0, r6
4008	bl	ftl_malloc
4009	str	r0, [r4, #3316]
4010	ldr	r0, [r4, #3188]
4011	muls	r0, r7, r0
4012	bl	ftl_malloc
4013	str	r0, [r4, #3172]
4014	mov	r0, r6
4015	bl	ftl_malloc
4016	str	r0, [r4, #3320]
4017	mov	r0, r6
4018	bl	ftl_malloc
4019	str	r0, [r4, #3324]
4020	ldrh	r0, [r4, #258]
4021	lsls	r0, r0, #2
4022	bl	ftl_malloc
4023	ldrh	r3, [r4, #232]
4024	ldrh	r6, [r4, #312]
4025	str	r0, [r4, #3328]
4026	muls	r6, r3, r6
4027	mov	r0, r6
4028	bl	ftl_malloc
4029	str	r0, [r4, #3332]
4030	lsls	r0, r6, #2
4031	bl	ftl_malloc
4032	ldrh	r3, [r4, #312]
4033	str	r0, [r4, #3336]
4034	ldr	r0, [r4, #3188]
4035	muls	r0, r3, r0
4036	bl	ftl_malloc
4037	str	r0, [r4, #3180]
4038	ldrh	r0, [r4, #242]
4039	lsls	r0, r0, #1
4040	uxth	r0, r0
4041	strh	r0, [r4, #3340]	@ movhi
4042	bl	ftl_malloc
4043	str	r0, [r4, #3344]
4044	ldrh	r0, [r4, #3340]
4045	addw	r0, r0, #547
4046	lsrs	r3, r0, #9
4047	and	r0, r0, #130560
4048	strh	r3, [r4, #3340]	@ movhi
4049	bl	ftl_malloc
4050	ldrh	r6, [r4, #242]
4051	str	r0, [r4, #3348]
4052	adds	r0, r0, #32
4053	str	r0, [r4, #2536]
4054	lsls	r6, r6, #1
4055	mov	r0, r6
4056	bl	ftl_malloc
4057	str	r0, [r4, #3352]
4058	mov	r0, r6
4059	bl	ftl_malloc
4060	ldr	r6, [r4, #328]
4061	str	r0, [r4, #72]
4062	lsls	r6, r6, #1
4063	mov	r0, r6
4064	bl	ftl_malloc
4065	str	r0, [r4, #3356]
4066	mov	r0, r6
4067	bl	ftl_malloc
4068	str	r0, [r4, #3360]
4069	ldrh	r0, [r4, #320]
4070	lsls	r0, r0, #1
4071	bl	ftl_malloc
4072	str	r0, [r4, #348]
4073	ldrh	r0, [r4, #320]
4074	lsls	r0, r0, #1
4075	bl	ftl_malloc
4076	str	r0, [r4, #3364]
4077	ldrh	r0, [r4, #320]
4078	lsls	r0, r0, #2
4079	bl	ftl_malloc
4080	str	r0, [r4, #3368]
4081	ldrh	r0, [r4, #322]
4082	lsls	r0, r0, #2
4083	bl	ftl_malloc
4084	ldrh	r2, [r4, #322]
4085	mov	r1, r5
4086	str	r0, [r4, #3372]
4087	lsls	r2, r2, #2
4088	bl	ftl_memset
4089	ldrh	r0, [r4, #336]
4090	lsls	r0, r0, #2
4091	bl	ftl_malloc
4092	str	r0, [r4, #3376]
4093	ldr	r0, [r4, #328]
4094	lsls	r0, r0, #2
4095	bl	ftl_malloc
4096	str	r0, [r4, #3380]
4097	ldrh	r0, [r4, #338]
4098	muls	r0, r7, r0
4099	bl	ftl_malloc
4100	ldrh	r3, [r4, #338]
4101	str	r0, [r4, #2540]
4102	ldrh	r0, [r4, #310]
4103	muls	r0, r3, r0
4104	bl	ftl_malloc
4105	ldrh	r3, [r4, #242]
4106	str	r0, [r4, #3384]
4107	movs	r0, #6
4108	muls	r0, r3, r0
4109	bl	ftl_malloc
4110	str	r0, [r4, #2516]
4111	ldrh	r0, [r4, #298]
4112	ldrh	r3, [r4, #254]
4113	adds	r0, r0, #31
4114	asrs	r0, r0, #5
4115	strh	r0, [r4, #3388]	@ movhi
4116	muls	r0, r3, r0
4117	lsls	r0, r0, #2
4118	bl	ftl_malloc
4119	ldrh	r2, [r4, #3388]
4120	ldrh	r3, [r4, #254]
4121	mov	r5, r0
4122	str	r0, [r4, #380]
4123	movs	r1, #1
4124	lsls	r6, r2, #2
4125	add	r2, r0, r2, lsl #2
4126	add	r0, r4, #384
4127.L441:
4128	cmp	r3, r1
4129	bhi	.L442
4130	cmp	r3, #0
4131	ldr	r0, .L539+4
4132	mov	r1, #0
4133	it	eq
4134	moveq	r3, #1
4135	rsb	r2, r3, #8
4136	adds	r3, r3, #7
4137	lsls	r2, r2, #2
4138	add	r0, r0, r3, lsl #2
4139	bl	memset
4140	ldr	r3, [r4, #3356]
4141	cbnz	r3, .L443
4142.L445:
4143	ldr	r0, .L539+8
4144	ldr	r1, .L539+12
4145	bl	sftl_printk
4146	mov	r0, #-1
4147.L440:
4148	pop	{r4, r5, r6, r7, r8, pc}
4149.L442:
4150	str	r2, [r0], #4
4151	adds	r1, r1, #1
4152	add	r2, r2, r6
4153	b	.L441
4154.L540:
4155	.align	2
4156.L539:
4157	.word	.LANCHOR0
4158	.word	.LANCHOR0+352
4159	.word	.LC91
4160	.word	.LANCHOR1+173
4161.L443:
4162	ldr	r3, [r4, #3360]
4163	cmp	r3, #0
4164	beq	.L445
4165	ldr	r3, [r4, #3376]
4166	cmp	r3, #0
4167	beq	.L445
4168	ldr	r3, [r4, #3380]
4169	cmp	r3, #0
4170	beq	.L445
4171	ldr	r3, [r4, #2540]
4172	cmp	r3, #0
4173	beq	.L445
4174	ldr	r3, [r4, #3384]
4175	cmp	r3, #0
4176	beq	.L445
4177	ldr	r3, [r4, #2516]
4178	cmp	r3, #0
4179	beq	.L445
4180	cmp	r5, #0
4181	beq	.L445
4182	ldr	r3, [r4, #72]
4183	cmp	r3, #0
4184	beq	.L445
4185	ldr	r3, [r4, #3192]
4186	cmp	r3, #0
4187	beq	.L445
4188	ldr	r3, [r4, #3200]
4189	cmp	r3, #0
4190	beq	.L445
4191	ldr	r3, [r4, #3288]
4192	cmp	r3, #0
4193	beq	.L445
4194	ldr	r3, [r4, #3296]
4195	cmp	r3, #0
4196	beq	.L445
4197	ldr	r3, [r4, #3268]
4198	cmp	r3, #0
4199	beq	.L445
4200	ldr	r3, [r4, #3184]
4201	cmp	r3, #0
4202	beq	.L445
4203	ldr	r3, [r4, #3292]
4204	cmp	r3, #0
4205	beq	.L445
4206	ldr	r3, [r4, #3300]
4207	cmp	r3, #0
4208	beq	.L445
4209	ldr	r3, [r4, #3304]
4210	cmp	r3, #0
4211	beq	.L445
4212	ldr	r3, [r4, #3308]
4213	cmp	r3, #0
4214	beq	.L445
4215	ldr	r3, [r4, #3176]
4216	cmp	r3, #0
4217	beq	.L445
4218	ldr	r3, [r4, #3312]
4219	cmp	r3, #0
4220	beq	.L445
4221	ldr	r3, [r4, #3316]
4222	cmp	r3, #0
4223	beq	.L445
4224	ldr	r3, [r4, #3172]
4225	cmp	r3, #0
4226	beq	.L445
4227	ldr	r3, [r4, #3332]
4228	cmp	r3, #0
4229	beq	.L445
4230	ldr	r3, [r4, #3336]
4231	cmp	r3, #0
4232	beq	.L445
4233	ldr	r3, [r4, #3180]
4234	cmp	r3, #0
4235	beq	.L445
4236	ldr	r3, [r4, #2536]
4237	cmp	r3, #0
4238	beq	.L445
4239	ldr	r3, [r4, #3344]
4240	cmp	r3, #0
4241	beq	.L445
4242	ldr	r3, [r4, #348]
4243	cmp	r3, #0
4244	beq	.L445
4245	ldr	r3, .L541
4246	ldr	r2, [r3, #3364]
4247	cmp	r2, #0
4248	beq	.L445
4249	ldr	r2, [r3, #3368]
4250	cmp	r2, #0
4251	beq	.L445
4252	ldr	r3, [r3, #3372]
4253	cmp	r3, #0
4254	beq	.L445
4255	movs	r0, #0
4256	b	.L440
4257.L542:
4258	.align	2
4259.L541:
4260	.word	.LANCHOR0
4261	.fnend
4262	.size	FtlMemInit, .-FtlMemInit
4263	.align	1
4264	.global	FtlBbt2Bitmap
4265	.syntax unified
4266	.thumb
4267	.thumb_func
4268	.fpu softvfp
4269	.type	FtlBbt2Bitmap, %function
4270FtlBbt2Bitmap:
4271	.fnstart
4272	@ args = 0, pretend = 0, frame = 0
4273	@ frame_needed = 0, uses_anonymous_args = 0
4274	push	{r4, r5, r6, r7, r8, r9, r10, lr}
4275	.save {r4, r5, r6, r7, r8, r9, r10, lr}
4276	mov	r4, r0
4277	ldr	r7, .L548
4278	ldr	r9, .L548+4
4279	subs	r6, r4, #2
4280	ldr	r10, .L548+8
4281	addw	r4, r4, #1022
4282	mov	r5, r1
4283	movw	r8, #65535
4284	ldrh	r2, [r7, #3388]
4285	mov	r0, r5
4286	movs	r1, #0
4287	lsls	r2, r2, #2
4288	bl	ftl_memset
4289.L546:
4290	ldrh	r3, [r6, #2]!
4291	cmp	r3, r8
4292	beq	.L543
4293	ldrh	r2, [r7, #298]
4294	cmp	r2, r3
4295	bhi	.L545
4296	mov	r1, r9
4297	mov	r0, r10
4298	movs	r2, #74
4299	bl	sftl_printk
4300.L545:
4301	ldrh	r3, [r6]
4302	movs	r2, #1
4303	cmp	r4, r6
4304	lsr	r1, r3, #5
4305	and	r3, r3, #31
4306	lsl	r3, r2, r3
4307	ldr	r2, [r5, r1, lsl #2]
4308	orr	r2, r2, r3
4309	str	r2, [r5, r1, lsl #2]
4310	bne	.L546
4311.L543:
4312	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
4313.L549:
4314	.align	2
4315.L548:
4316	.word	.LANCHOR0
4317	.word	.LANCHOR1+184
4318	.word	.LC8
4319	.fnend
4320	.size	FtlBbt2Bitmap, .-FtlBbt2Bitmap
4321	.align	1
4322	.global	FtlBbtMemInit
4323	.syntax unified
4324	.thumb
4325	.thumb_func
4326	.fpu softvfp
4327	.type	FtlBbtMemInit, %function
4328FtlBbtMemInit:
4329	.fnstart
4330	@ args = 0, pretend = 0, frame = 0
4331	@ frame_needed = 0, uses_anonymous_args = 0
4332	@ link register save eliminated.
4333	ldr	r0, .L551
4334	movw	r3, #65535
4335	movs	r2, #16
4336	movs	r1, #255
4337	add	r0, r0, #364
4338	strh	r3, [r0, #-12]	@ movhi
4339	movs	r3, #0
4340	strh	r3, [r0, #-6]	@ movhi
4341	b	ftl_memset
4342.L552:
4343	.align	2
4344.L551:
4345	.word	.LANCHOR0
4346	.fnend
4347	.size	FtlBbtMemInit, .-FtlBbtMemInit
4348	.align	1
4349	.global	FtlFreeSysBlkQueueInit
4350	.syntax unified
4351	.thumb
4352	.thumb_func
4353	.fpu softvfp
4354	.type	FtlFreeSysBlkQueueInit, %function
4355FtlFreeSysBlkQueueInit:
4356	.fnstart
4357	@ args = 0, pretend = 0, frame = 0
4358	@ frame_needed = 0, uses_anonymous_args = 0
4359	ldr	r3, .L554
4360	mov	r2, #2048
4361	push	{r4, lr}
4362	.save {r4, lr}
4363	movs	r4, #0
4364	mov	r1, r4
4365	strh	r0, [r3, #412]	@ movhi
4366	add	r0, r3, #420
4367	strh	r4, [r3, #414]	@ movhi
4368	strh	r4, [r3, #416]	@ movhi
4369	strh	r4, [r3, #418]	@ movhi
4370	bl	ftl_memset
4371	mov	r0, r4
4372	pop	{r4, pc}
4373.L555:
4374	.align	2
4375.L554:
4376	.word	.LANCHOR0
4377	.fnend
4378	.size	FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
4379	.align	1
4380	.global	ftl_free_no_use_map_blk
4381	.syntax unified
4382	.thumb
4383	.thumb_func
4384	.fpu softvfp
4385	.type	ftl_free_no_use_map_blk, %function
4386ftl_free_no_use_map_blk:
4387	.fnstart
4388	@ args = 0, pretend = 0, frame = 0
4389	@ frame_needed = 0, uses_anonymous_args = 0
4390	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
4391	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
4392	movs	r1, #0
4393	mov	r4, r0
4394	ldrh	r2, [r0, #10]
4395	ldrd	r5, r6, [r0, #20]
4396	ldr	r7, [r0, #12]
4397	lsls	r2, r2, #1
4398	mov	r0, r5
4399	bl	ftl_memset
4400	movs	r3, #0
4401.L557:
4402	ldrh	r1, [r4, #6]
4403	uxth	r2, r3
4404	cmp	r1, r2
4405	bhi	.L561
4406	ldr	r3, .L574
4407	movs	r6, #0
4408	mov	r10, r6
4409	ldrh	r2, [r3, #304]
4410	ldrh	r3, [r4]
4411	strh	r2, [r5, r3, lsl #1]	@ movhi
4412	ldrh	fp, [r5]
4413.L562:
4414	ldrh	r2, [r4, #10]
4415	uxth	r3, r6
4416	cmp	r2, r3
4417	bhi	.L565
4418	mov	r0, r10
4419	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
4420.L561:
4421	uxth	r2, r3
4422	ldr	r1, [r6, r2, lsl #2]
4423	movs	r2, #0
4424	ubfx	r1, r1, #10, #16
4425.L558:
4426	ldrh	ip, [r4, #10]
4427	uxth	r0, r2
4428	cmp	ip, r0
4429	bhi	.L560
4430	adds	r3, r3, #1
4431	b	.L557
4432.L560:
4433	uxth	r0, r2
4434	ldrh	ip, [r7, r0, lsl #1]
4435	cmp	ip, r1
4436	bne	.L559
4437	cbz	r1, .L559
4438	ldrh	ip, [r5, r0, lsl #1]
4439	add	ip, ip, #1
4440	strh	ip, [r5, r0, lsl #1]	@ movhi
4441.L559:
4442	adds	r2, r2, #1
4443	b	.L558
4444.L565:
4445	uxth	r8, r6
4446	ldrh	r9, [r5, r8, lsl #1]
4447	cmp	r9, fp
4448	bcs	.L563
4449	ldrh	r2, [r7, r8, lsl #1]
4450	cmp	r2, #0
4451	itt	ne
4452	movne	r10, r3
4453	movne	fp, r9
4454.L563:
4455	cmp	r9, #0
4456	bne	.L564
4457	ldrh	r0, [r7, r8, lsl #1]
4458	cbz	r0, .L564
4459	movs	r1, #1
4460	bl	FtlFreeSysBlkQueueIn
4461	strh	r9, [r7, r8, lsl #1]	@ movhi
4462	ldrh	r3, [r4, #8]
4463	subs	r3, r3, #1
4464	strh	r3, [r4, #8]	@ movhi
4465.L564:
4466	adds	r6, r6, #1
4467	b	.L562
4468.L575:
4469	.align	2
4470.L574:
4471	.word	.LANCHOR0
4472	.fnend
4473	.size	ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
4474	.align	1
4475	.global	FtlL2PDataInit
4476	.syntax unified
4477	.thumb
4478	.thumb_func
4479	.fpu softvfp
4480	.type	FtlL2PDataInit, %function
4481FtlL2PDataInit:
4482	.fnstart
4483	@ args = 0, pretend = 0, frame = 0
4484	@ frame_needed = 0, uses_anonymous_args = 0
4485	push	{r3, r4, r5, r6, r7, lr}
4486	.save {r3, r4, r5, r6, r7, lr}
4487	movs	r1, #0
4488	ldr	r4, .L579
4489	movw	r6, #65535
4490	movs	r7, #12
4491	ldr	r2, [r4, #328]
4492	ldr	r0, [r4, #3360]
4493	lsls	r2, r2, #1
4494	bl	ftl_memset
4495	ldrh	r3, [r4, #310]
4496	ldrh	r2, [r4, #338]
4497	movs	r1, #255
4498	ldr	r0, [r4, #3384]
4499	muls	r2, r3, r2
4500	bl	ftl_memset
4501	movs	r3, #0
4502	mov	ip, r3
4503.L577:
4504	ldrh	r1, [r4, #338]
4505	uxth	r2, r3
4506	cmp	r1, r2
4507	bhi	.L578
4508	ldr	r3, [r4, #328]
4509	strh	r3, [r4, #3402]	@ movhi
4510	mov	r3, #-1
4511	str	r3, [r4, #3392]
4512	movw	r3, #61634
4513	strh	r3, [r4, #3396]	@ movhi
4514	ldrh	r3, [r4, #3436]
4515	strh	r3, [r4, #3400]	@ movhi
4516	ldrh	r3, [r4, #336]
4517	strh	r3, [r4, #3398]	@ movhi
4518	ldr	r3, [r4, #3356]
4519	str	r3, [r4, #3404]
4520	ldr	r3, [r4, #3380]
4521	str	r3, [r4, #3408]
4522	ldr	r3, [r4, #3360]
4523	str	r3, [r4, #3412]
4524	ldr	r3, [r4, #3376]
4525	str	r3, [r4, #3416]
4526	pop	{r3, r4, r5, r6, r7, pc}
4527.L578:
4528	uxth	r5, r3
4529	ldr	r2, [r4, #2540]
4530	adds	r3, r3, #1
4531	mul	r0, r7, r5
4532	adds	r1, r2, r0
4533	str	ip, [r1, #4]
4534	strh	r6, [r2, r0]	@ movhi
4535	ldrh	r2, [r4, #310]
4536	ldr	r1, [r4, #2540]
4537	add	r1, r1, r0
4538	ldr	r0, [r4, #3384]
4539	muls	r2, r5, r2
4540	bic	r2, r2, #3
4541	add	r2, r2, r0
4542	str	r2, [r1, #8]
4543	b	.L577
4544.L580:
4545	.align	2
4546.L579:
4547	.word	.LANCHOR0
4548	.fnend
4549	.size	FtlL2PDataInit, .-FtlL2PDataInit
4550	.align	1
4551	.global	FtlVariablesInit
4552	.syntax unified
4553	.thumb
4554	.thumb_func
4555	.fpu softvfp
4556	.type	FtlVariablesInit, %function
4557FtlVariablesInit:
4558	.fnstart
4559	@ args = 0, pretend = 0, frame = 0
4560	@ frame_needed = 0, uses_anonymous_args = 0
4561	push	{r3, r4, r5, lr}
4562	.save {r3, r4, r5, lr}
4563	movs	r5, #0
4564	ldr	r4, .L582
4565	mov	r1, r5
4566	movw	r3, #65535
4567	ldrh	r2, [r4, #320]
4568	ldr	r0, [r4, #348]
4569	strh	r3, [r4, #3438]	@ movhi
4570	mov	r3, #-1
4571	lsls	r2, r2, #1
4572	str	r3, [r4, #3448]
4573	str	r5, [r4, #3440]
4574	str	r5, [r4, #3444]
4575	strh	r5, [r4, #344]	@ movhi
4576	bl	ftl_memset
4577	ldrh	r2, [r4, #242]
4578	mov	r1, r5
4579	ldr	r0, [r4, #2536]
4580	lsls	r2, r2, #1
4581	bl	ftl_memset
4582	ldrh	r2, [r4, #242]
4583	mov	r1, r5
4584	ldr	r0, [r4, #3344]
4585	lsls	r2, r2, #1
4586	bl	ftl_memset
4587	mov	r1, r5
4588	addw	r0, r4, #2468
4589	movs	r2, #48
4590	bl	ftl_memset
4591	mov	r1, r5
4592	mov	r2, #512
4593	add	r0, r4, #2640
4594	bl	ftl_memset
4595	bl	FtlGcBufInit
4596	bl	FtlL2PDataInit
4597	mov	r0, r5
4598	pop	{r3, r4, r5, pc}
4599.L583:
4600	.align	2
4601.L582:
4602	.word	.LANCHOR0
4603	.fnend
4604	.size	FtlVariablesInit, .-FtlVariablesInit
4605	.align	1
4606	.global	SupperBlkListInit
4607	.syntax unified
4608	.thumb
4609	.thumb_func
4610	.fpu softvfp
4611	.type	SupperBlkListInit, %function
4612SupperBlkListInit:
4613	.fnstart
4614	@ args = 0, pretend = 0, frame = 16
4615	@ frame_needed = 0, uses_anonymous_args = 0
4616	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
4617	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
4618	mov	r10, #6
4619	ldr	r4, .L595
4620	movs	r5, #0
4621	.pad #20
4622	sub	sp, sp, #20
4623	movs	r1, #0
4624	mov	r9, r5
4625	mov	r7, r5
4626	movw	fp, #65535
4627	ldrh	r2, [r4, #242]
4628	ldr	r0, [r4, #2516]
4629	mul	r2, r10, r2
4630	bl	ftl_memset
4631	str	r5, [r4, #2532]
4632	str	r5, [r4, #2520]
4633	str	r5, [r4, #2524]
4634	strh	r5, [r4, #2528]	@ movhi
4635	strh	r5, [r4, #224]	@ movhi
4636.L585:
4637	ldrh	r3, [r4, #240]
4638	uxth	r8, r5
4639	cmp	r8, r3
4640	bcs	.L592
4641	ldrh	r3, [r4, #232]
4642	str	r3, [sp, #4]
4643	ldrh	r3, [r4, #302]
4644	str	r3, [sp]
4645	movs	r3, #0
4646	ldr	r2, .L595+4
4647	mov	r6, r3
4648	b	.L593
4649.L587:
4650	ldrb	r0, [r2], #1	@ zero_extendqisi2
4651	mov	r1, r8
4652	str	r3, [sp, #12]
4653	str	r2, [sp, #8]
4654	bl	V2P_block
4655	bl	FtlBbmIsBadBlock
4656	ldrd	r2, r3, [sp, #8]
4657	cbnz	r0, .L586
4658	ldr	r1, [sp]
4659	add	r6, r6, r1
4660	uxth	r6, r6
4661.L586:
4662	adds	r3, r3, #1
4663.L593:
4664	ldr	r0, [sp, #4]
4665	uxth	r1, r3
4666	cmp	r0, r1
4667	bhi	.L587
4668	uxth	r3, r5
4669	cbz	r6, .L588
4670	mov	r1, r6
4671	mov	r0, #32768
4672	str	r3, [sp]
4673	bl	__aeabi_idiv
4674	ldr	r3, [sp]
4675	uxth	r6, r0
4676.L589:
4677	ldr	r2, [r4, #2516]
4678	mla	r2, r10, r3, r2
4679	strh	r6, [r2, #4]	@ movhi
4680	ldrh	r2, [r4, #24]
4681	cmp	r2, r8
4682	beq	.L590
4683	ldrh	r2, [r4, #76]
4684	cmp	r2, r8
4685	beq	.L590
4686	ldrh	r2, [r4, #124]
4687	cmp	r2, r8
4688	beq	.L590
4689	ldr	r2, [r4, #72]
4690	ldrh	r3, [r2, r3, lsl #1]
4691	cbnz	r3, .L591
4692	add	r9, r9, #1
4693	mov	r0, r8
4694	uxth	r9, r9
4695	bl	INSERT_FREE_LIST
4696.L590:
4697	adds	r5, r5, #1
4698	b	.L585
4699.L588:
4700	ldr	r2, [r4, #72]
4701	strh	fp, [r2, r3, lsl #1]	@ movhi
4702	b	.L589
4703.L591:
4704	adds	r7, r7, #1
4705	mov	r0, r8
4706	uxth	r7, r7
4707	bl	INSERT_DATA_LIST
4708	b	.L590
4709.L592:
4710	strh	r7, [r4, #2528]	@ movhi
4711	add	r7, r7, r9
4712	cmp	r7, r3
4713	strh	r9, [r4, #224]	@ movhi
4714	ble	.L594
4715	ldr	r1, .L595+8
4716	movw	r2, #2219
4717	ldr	r0, .L595+12
4718	bl	sftl_printk
4719.L594:
4720	movs	r0, #0
4721	add	sp, sp, #20
4722	@ sp needed
4723	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
4724.L596:
4725	.align	2
4726.L595:
4727	.word	.LANCHOR0
4728	.word	.LANCHOR0+260
4729	.word	.LANCHOR1+198
4730	.word	.LC8
4731	.fnend
4732	.size	SupperBlkListInit, .-SupperBlkListInit
4733	.align	1
4734	.global	FtlGcPageVarInit
4735	.syntax unified
4736	.thumb
4737	.thumb_func
4738	.fpu softvfp
4739	.type	FtlGcPageVarInit, %function
4740FtlGcPageVarInit:
4741	.fnstart
4742	@ args = 0, pretend = 0, frame = 0
4743	@ frame_needed = 0, uses_anonymous_args = 0
4744	push	{r4, lr}
4745	.save {r4, lr}
4746	movs	r1, #255
4747	ldr	r4, .L598
4748	movs	r3, #0
4749	ldrh	r2, [r4, #306]
4750	ldr	r0, [r4, #3192]
4751	strh	r3, [r4, #3196]	@ movhi
4752	lsls	r2, r2, #1
4753	strh	r3, [r4, #3204]	@ movhi
4754	bl	ftl_memset
4755	ldrh	r3, [r4, #306]
4756	movs	r2, #12
4757	ldr	r0, [r4, #3200]
4758	movs	r1, #255
4759	muls	r2, r3, r2
4760	bl	ftl_memset
4761	pop	{r4, lr}
4762	b	FtlGcBufInit
4763.L599:
4764	.align	2
4765.L598:
4766	.word	.LANCHOR0
4767	.fnend
4768	.size	FtlGcPageVarInit, .-FtlGcPageVarInit
4769	.align	1
4770	.global	FlashGetBadBlockList
4771	.syntax unified
4772	.thumb
4773	.thumb_func
4774	.fpu softvfp
4775	.type	FlashGetBadBlockList, %function
4776FlashGetBadBlockList:
4777	.fnstart
4778	@ args = 0, pretend = 0, frame = 0
4779	@ frame_needed = 0, uses_anonymous_args = 0
4780	push	{r4, r5, r6, lr}
4781	.save {r4, r5, r6, lr}
4782	mov	r2, #256
4783	ldr	r6, .L606
4784	mov	r4, r0
4785	mov	r5, r1
4786	movs	r1, #255
4787	bl	ftl_memset
4788	mov	r1, r5
4789	ldr	r3, [r6, #3244]
4790	mov	r0, r4
4791	blx	r3
4792	uxth	r0, r0
4793	cmp	r0, #50
4794	bls	.L601
4795	mov	r0, r4
4796	mov	r2, #256
4797	movs	r1, #255
4798	bl	ftl_memset
4799	movs	r0, #0
4800.L601:
4801	ldrh	r3, [r6, #14]
4802	cmp	r3, #4
4803	bne	.L605
4804	mov	r3, r4
4805	add	r1, r4, r0, lsl #1
4806.L603:
4807	cmp	r3, r1
4808	bne	.L604
4809.L605:
4810	pop	{r4, r5, r6, pc}
4811.L604:
4812	ldrh	r2, [r3]
4813	lsrs	r2, r2, #1
4814	strh	r2, [r3], #2	@ movhi
4815	b	.L603
4816.L607:
4817	.align	2
4818.L606:
4819	.word	.LANCHOR0
4820	.fnend
4821	.size	FlashGetBadBlockList, .-FlashGetBadBlockList
4822	.align	1
4823	.global	ftl_memcpy
4824	.syntax unified
4825	.thumb
4826	.thumb_func
4827	.fpu softvfp
4828	.type	ftl_memcpy, %function
4829ftl_memcpy:
4830	.fnstart
4831	@ args = 0, pretend = 0, frame = 0
4832	@ frame_needed = 0, uses_anonymous_args = 0
4833	@ link register save eliminated.
4834	b	memcpy
4835	.fnend
4836	.size	ftl_memcpy, .-ftl_memcpy
4837	.section	.rodata.str1.1
4838.LC92:
4839	.ascii	"FlashReadPages %x %x error_ecc_bits %d\012\000"
4840.LC93:
4841	.ascii	"data:\000"
4842.LC94:
4843	.ascii	"spare:\000"
4844	.text
4845	.align	1
4846	.global	FlashReadPages
4847	.syntax unified
4848	.thumb
4849	.thumb_func
4850	.fpu softvfp
4851	.type	FlashReadPages, %function
4852FlashReadPages:
4853	.fnstart
4854	@ args = 0, pretend = 0, frame = 24
4855	@ frame_needed = 0, uses_anonymous_args = 0
4856	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
4857	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
4858	mov	r4, r0
4859	ldr	r5, .L650
4860	.pad #28
4861	sub	sp, sp, #28
4862	ldr	r7, .L650+4
4863	mov	r3, sp
4864	ldr	r10, .L650+8
4865	bic	r8, r3, #8160
4866	ldr	fp, .L650+12
4867	bic	r8, r8, #31
4868	str	r1, [sp, #4]
4869	mov	r9, #0
4870	ldr	r3, [r8, #24]
4871	str	r3, [sp, #20]
4872	ldrh	r3, [r5, #12]
4873	str	r3, [sp]
4874.L610:
4875	ldr	r3, [sp, #4]
4876	cmp	r9, r3
4877	bne	.L624
4878	ldr	r2, [sp, #20]
4879	ldr	r3, [r8, #24]
4880	cmp	r2, r3
4881	beq	.L625
4882	bl	__stack_chk_fail
4883.L624:
4884	ldr	r3, [r4, #8]
4885	cbz	r3, .L611
4886	ldr	r3, [r4, #12]
4887	cbnz	r3, .L612
4888.L611:
4889	mov	r1, r7
4890	mov	r0, r10
4891	movs	r2, #96
4892	bl	sftl_printk
4893.L612:
4894	add	r2, sp, #12
4895	add	r1, sp, #16
4896	mov	r0, r4
4897	bl	l2p_addr_tran
4898	ldr	r0, [sp, #12]
4899	cmp	r0, #3
4900	bls	.L613
4901	mov	r3, #-1
4902	str	r3, [r4]
4903.L614:
4904	add	r9, r9, #1
4905	adds	r4, r4, #20
4906	b	.L610
4907.L613:
4908	ldr	r6, [r4, #8]
4909	uxtb	r0, r0
4910	ldr	r1, [sp, #16]
4911	ldr	ip, [r5, #3256]
4912	lsls	r3, r6, #26
4913	ldr	r3, [r4, #12]
4914	it	ne
4915	ldrne	r6, [r5, #3320]
4916	mov	r2, r6
4917	blx	ip
4918	str	r0, [r4]
4919	ldrh	r3, [r5, #14]
4920	cmp	r3, #4
4921	bne	.L617
4922	ldr	r0, [sp]
4923	add	r2, r6, #2048
4924	ldr	r3, [r4, #12]
4925	ldr	r1, [sp, #16]
4926	ldr	ip, [r5, #3256]
4927	adds	r3, r3, #8
4928	add	r1, r1, r0
4929	ldrb	r0, [sp, #12]	@ zero_extendqisi2
4930	blx	ip
4931	adds	r1, r0, #1
4932	beq	.L618
4933	ldr	r3, [r4, #12]
4934	ldr	r2, [r3, #12]
4935	adds	r2, r2, #1
4936	bne	.L619
4937	ldr	r2, [r3, #8]
4938	adds	r2, r2, #1
4939	bne	.L619
4940	ldr	r3, [r3]
4941	adds	r3, r3, #1
4942	beq	.L619
4943.L618:
4944	mov	r3, #-1
4945	str	r3, [r4]
4946.L620:
4947	ldr	r3, [r4]
4948	adds	r2, r3, #1
4949	beq	.L621
4950	cmp	r3, #256
4951	bne	.L617
4952.L621:
4953	ldr	r1, [r4, #4]
4954	mov	r0, fp
4955	ldr	r2, [sp, #16]
4956	bl	sftl_printk
4957	ldr	r1, [r4, #8]
4958	cbz	r1, .L623
4959	movs	r3, #4
4960	ldr	r0, .L650+16
4961	mov	r2, r3
4962	bl	rknand_print_hex
4963.L623:
4964	ldr	r1, [r4, #12]
4965	cbz	r1, .L617
4966	movs	r3, #4
4967	ldr	r0, .L650+20
4968	mov	r2, r3
4969	bl	rknand_print_hex
4970.L617:
4971	ldr	r3, [r5, #3320]
4972	cmp	r3, r6
4973	bne	.L614
4974	ldr	r0, [r4, #8]
4975	cmp	r0, r6
4976	beq	.L614
4977	ldrh	r2, [r5, #258]
4978	mov	r1, r6
4979	lsls	r2, r2, #9
4980	bl	ftl_memcpy
4981	b	.L614
4982.L619:
4983	ldr	r3, [r4]
4984	adds	r3, r3, #1
4985	beq	.L620
4986	cmp	r0, #256
4987	it	eq
4988	streq	r0, [r4]
4989	b	.L620
4990.L625:
4991	movs	r0, #0
4992	add	sp, sp, #28
4993	@ sp needed
4994	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
4995.L651:
4996	.align	2
4997.L650:
4998	.word	.LANCHOR0
4999	.word	.LANCHOR1+216
5000	.word	.LC8
5001	.word	.LC92
5002	.word	.LC93
5003	.word	.LC94
5004	.fnend
5005	.size	FlashReadPages, .-FlashReadPages
5006	.align	1
5007	.global	FtlLoadFactoryBbt
5008	.syntax unified
5009	.thumb
5010	.thumb_func
5011	.fpu softvfp
5012	.type	FtlLoadFactoryBbt, %function
5013FtlLoadFactoryBbt:
5014	.fnstart
5015	@ args = 0, pretend = 0, frame = 0
5016	@ frame_needed = 0, uses_anonymous_args = 0
5017	push	{r4, r5, r6, r7, r8, r9, r10, lr}
5018	.save {r4, r5, r6, r7, r8, r9, r10, lr}
5019	movs	r6, #0
5020	ldr	r4, .L662
5021	movw	r10, #61664
5022	add	r7, r4, #364
5023	addw	r9, r4, #3452
5024	ldr	r3, [r4, #3300]
5025	ldr	r8, [r4, #3332]
5026	str	r3, [r4, #3460]
5027	str	r8, [r4, #3464]
5028.L653:
5029	ldrh	r3, [r4, #254]
5030	cmp	r3, r6
5031	bhi	.L658
5032	movs	r0, #0
5033	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
5034.L658:
5035	ldrh	r5, [r4, #298]
5036	movw	r3, #65535
5037	strh	r3, [r7]	@ movhi
5038.L655:
5039	ldrh	r3, [r4, #298]
5040	subs	r5, r5, #1
5041	sub	r2, r3, #16
5042	uxth	r5, r5
5043	cmp	r5, r2
5044	ble	.L656
5045	mla	r3, r6, r3, r5
5046	movs	r2, #1
5047	mov	r0, r9
5048	mov	r1, r2
5049	lsls	r3, r3, #10
5050	str	r3, [r4, #3456]
5051	bl	FlashReadPages
5052	ldr	r3, [r4, #3452]
5053	adds	r3, r3, #1
5054	beq	.L655
5055	ldrh	r3, [r8]
5056	cmp	r3, r10
5057	bne	.L655
5058	strh	r5, [r7]	@ movhi
5059.L656:
5060	adds	r6, r6, #1
5061	adds	r7, r7, #2
5062	b	.L653
5063.L663:
5064	.align	2
5065.L662:
5066	.word	.LANCHOR0
5067	.fnend
5068	.size	FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
5069	.align	1
5070	.global	FtlGetLastWrittenPage
5071	.syntax unified
5072	.thumb
5073	.thumb_func
5074	.fpu softvfp
5075	.type	FtlGetLastWrittenPage, %function
5076FtlGetLastWrittenPage:
5077	.fnstart
5078	@ args = 0, pretend = 0, frame = 88
5079	@ frame_needed = 0, uses_anonymous_args = 0
5080	push	{r4, r5, r6, r7, r8, r9, lr}
5081	.save {r4, r5, r6, r7, r8, r9, lr}
5082	cmp	r1, #1
5083	mov	r2, r1
5084	.pad #92
5085	sub	sp, sp, #92
5086	mov	r8, r1
5087	mov	r3, sp
5088	lsl	r6, r0, #10
5089	bic	r7, r3, #8160
5090	mov	r1, #1
5091	bic	r7, r7, #31
5092	ldr	r3, [r7, #24]
5093	str	r3, [sp, #84]
5094	ldr	r3, .L677
5095	ite	eq
5096	ldrheq	r4, [r3, #304]
5097	ldrhne	r4, [r3, #302]
5098	ldr	r3, [r3, #3324]
5099	subs	r4, r4, #1
5100	str	r3, [sp, #8]
5101	add	r3, sp, #20
5102	str	r3, [sp, #12]
5103	sxth	r4, r4
5104	orr	r0, r4, r0, lsl #10
5105	str	r0, [sp, #4]
5106	mov	r0, sp
5107	bl	FlashReadPages
5108	ldr	r3, [sp, #20]
5109	adds	r3, r3, #1
5110	bne	.L668
5111	mov	r9, #0
5112	b	.L667
5113.L671:
5114	add	r3, r9, r4
5115	mov	r2, r8
5116	mov	r0, sp
5117	movs	r1, #1
5118	add	r3, r3, r3, lsr #31
5119	sbfx	r5, r3, #1, #16
5120	orr	r3, r6, r3, asr #1
5121	str	r3, [sp, #4]
5122	bl	FlashReadPages
5123	ldrd	r3, r2, [sp, #20]
5124	ands	r3, r3, r2
5125	adds	r3, r3, #1
5126	bne	.L669
5127	ldr	r3, [sp]
5128	adds	r3, r3, #1
5129	beq	.L669
5130	subs	r4, r5, #1
5131	sxth	r4, r4
5132.L667:
5133	cmp	r9, r4
5134	ble	.L671
5135.L668:
5136	ldr	r2, [sp, #84]
5137	ldr	r3, [r7, #24]
5138	cmp	r2, r3
5139	beq	.L672
5140	bl	__stack_chk_fail
5141.L669:
5142	adds	r5, r5, #1
5143	sxth	r9, r5
5144	b	.L667
5145.L672:
5146	mov	r0, r4
5147	add	sp, sp, #92
5148	@ sp needed
5149	pop	{r4, r5, r6, r7, r8, r9, pc}
5150.L678:
5151	.align	2
5152.L677:
5153	.word	.LANCHOR0
5154	.fnend
5155	.size	FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
5156	.align	1
5157	.global	FtlScanSysBlk
5158	.syntax unified
5159	.thumb
5160	.thumb_func
5161	.fpu softvfp
5162	.type	FtlScanSysBlk, %function
5163FtlScanSysBlk:
5164	.fnstart
5165	@ args = 0, pretend = 0, frame = 16
5166	@ frame_needed = 0, uses_anonymous_args = 0
5167	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
5168	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
5169	movs	r5, #0
5170	ldr	r4, .L759
5171	mov	r1, r5
5172	.pad #20
5173	sub	sp, sp, #20
5174	ldr	r2, [r4, #328]
5175	ldr	r0, [r4, #3380]
5176	strh	r5, [r4, #3436]	@ movhi
5177	lsls	r2, r2, #2
5178	strh	r5, [r4, #344]	@ movhi
5179	bl	ftl_memset
5180	ldr	r2, [r4, #328]
5181	mov	r1, r5
5182	ldr	r0, [r4, #3356]
5183	lsls	r2, r2, #1
5184	bl	ftl_memset
5185	ldrh	r2, [r4, #320]
5186	mov	r1, r5
5187	ldr	r0, [r4, #3368]
5188	lsls	r2, r2, #2
5189	bl	ftl_memset
5190	ldrh	r2, [r4, #320]
5191	mov	r1, r5
5192	ldr	r0, [r4, #348]
5193	lsls	r2, r2, #1
5194	bl	ftl_memset
5195	add	r0, r4, #2624
5196	movs	r2, #16
5197	movs	r1, #255
5198	bl	ftl_memset
5199	ldrh	r8, [r4, #240]
5200.L680:
5201	ldrh	r3, [r4, #242]
5202	cmp	r3, r8
5203	bls	.L720
5204	ldr	r5, .L759+4
5205	movs	r7, #0
5206	ldrh	r6, [r4, #232]
5207	mov	fp, #20
5208	ldrh	r1, [r4, #312]
5209	ldr	r10, [r4, #3288]
5210	add	r6, r6, r5
5211	ldr	r2, [r4, #3176]
5212	ldr	r3, [r4, #3180]
5213	str	r1, [sp, #4]
5214	b	.L721
5215.L683:
5216	mov	r1, r8
5217	ldrb	r0, [r5], #1	@ zero_extendqisi2
5218	strd	r2, r3, [sp, #8]
5219	bl	V2P_block
5220	mov	r9, r0
5221	bl	FtlBbmIsBadBlock
5222	ldrd	r2, r3, [sp, #8]
5223	cbnz	r0, .L721
5224	mla	ip, fp, r7, r10
5225	lsl	r1, r9, #10
5226	strd	r1, r2, [ip, #4]
5227	ldr	r1, [sp, #4]
5228	muls	r1, r7, r1
5229	add	r7, r7, #1
5230	it	mi
5231	addmi	r1, r1, #3
5232	uxth	r7, r7
5233	bic	r1, r1, #3
5234	add	r1, r1, r3
5235	str	r1, [ip, #12]
5236.L721:
5237	cmp	r6, r5
5238	bne	.L683
5239	cbnz	r7, .L684
5240.L719:
5241	add	r8, r8, #1
5242	uxth	r8, r8
5243	b	.L680
5244.L684:
5245	mov	r1, r7
5246	mov	r0, r10
5247	movs	r2, #1
5248	bl	FlashReadPages
5249	movs	r3, #0
5250	str	r3, [sp, #4]
5251.L718:
5252	ldr	r3, [sp, #4]
5253	mov	r9, #20
5254	mul	r9, r9, r3
5255	ldr	r3, [r4, #3288]
5256	add	r2, r3, r9
5257	ldr	r3, [r3, r9]
5258	ldr	r5, [r2, #4]
5259	ldr	r6, [r2, #12]
5260	adds	r3, r3, #1
5261	ubfx	r5, r5, #10, #16
5262	bne	.L687
5263	mov	r10, #16
5264	movw	fp, #65535
5265.L689:
5266	ldr	r0, [r4, #3288]
5267	movs	r2, #1
5268	mov	r1, r2
5269	add	r0, r0, r9
5270	ldr	r3, [r0, #4]
5271	adds	r3, r3, #1
5272	str	r3, [r0, #4]
5273	bl	FlashReadPages
5274	ldrh	r3, [r6]
5275	cmp	r3, fp
5276	ldr	r3, [r4, #3288]
5277	bne	.L686
5278	mov	r2, #-1
5279	str	r2, [r3, r9]
5280	ldr	r3, [r4, #3288]
5281	ldr	r3, [r3, r9]
5282	cmp	r3, r2
5283	beq	.L688
5284.L687:
5285	ldr	r2, [r4, #2588]
5286	ldr	r3, [r6, #4]
5287	adds	r1, r2, #1
5288	beq	.L736
5289	cmp	r2, r3
5290	bhi	.L690
5291.L736:
5292	adds	r0, r3, #1
5293	itt	ne
5294	addne	r2, r3, #1
5295	strne	r2, [r4, #2588]
5296.L690:
5297	ldrh	r2, [r6]
5298	movw	r1, #61634
5299	cmp	r2, r1
5300	beq	.L691
5301	bhi	.L692
5302	movw	r1, #61574
5303	cmp	r2, r1
5304	beq	.L693
5305	movw	r1, #61604
5306	cmp	r2, r1
5307	beq	.L694
5308.L695:
5309	ldr	r3, [sp, #4]
5310	adds	r3, r3, #1
5311	str	r3, [sp, #4]
5312	ldrh	r3, [sp, #4]
5313	cmp	r7, r3
5314	bhi	.L718
5315	b	.L719
5316.L686:
5317	ldr	r3, [r3, r9]
5318	adds	r3, r3, #1
5319	bne	.L687
5320	add	r10, r10, #-1
5321	uxth	r10, r10
5322	cmp	r10, #0
5323	bne	.L689
5324.L688:
5325	movs	r1, #1
5326	b	.L757
5327.L692:
5328	movw	r3, #65535
5329	cmp	r2, r3
5330	bne	.L695
5331	movs	r1, #0
5332.L757:
5333	mov	r0, r5
5334	bl	FtlFreeSysBlkQueueIn
5335	b	.L695
5336.L691:
5337	ldrh	r2, [r4, #3436]
5338	ldr	r3, [r4, #328]
5339	cmp	r2, r3
5340	bls	.L697
5341	ldr	r1, .L759+8
5342	mov	r2, #1232
5343	ldr	r0, .L759+12
5344	bl	sftl_printk
5345.L697:
5346	ldr	r1, [r4, #328]
5347	ldrh	r0, [r4, #3436]
5348	ldr	r9, [r4, #3380]
5349	uxth	r2, r1
5350	subs	r3, r2, #1
5351	subs	r2, r2, r0
5352	subs	r2, r2, #1
5353	add	fp, r9, #4
5354	sxth	r3, r3
5355	mov	ip, r3
5356	sxth	r2, r2
5357	str	r2, [sp, #8]
5358.L698:
5359	ldr	r2, [sp, #8]
5360	cmp	r2, r3
5361	bge	.L703
5362	add	r10, ip, #-1
5363	lsl	lr, ip, #2
5364	str	lr, [sp, #12]
5365	ldr	lr, [r6, #4]
5366	ldr	r2, [fp, r10, lsl #2]
5367	cmp	lr, r2
5368	bls	.L699
5369	ldr	r2, [r9]
5370	cbnz	r2, .L700
5371	cmp	r1, r0
5372	itt	ne
5373	addne	r0, r0, #1
5374	strhne	r0, [r4, #3436]	@ movhi
5375.L700:
5376	uxth	lr, r3
5377	movs	r0, #0
5378.L701:
5379	uxth	r9, r0
5380	ldr	r1, [r4, #3380]
5381	sxth	r2, r0
5382	cmp	lr, r9
5383	bhi	.L702
5384	ldr	r0, [sp, #12]
5385	ldr	r2, [r6, #4]
5386	str	r2, [r1, r0]
5387	ldr	r2, [r4, #3356]
5388	strh	r5, [r2, ip, lsl #1]	@ movhi
5389.L703:
5390	cmp	r3, #0
5391	blt	.L695
5392	ldrh	r1, [r4, #3436]
5393	ldr	r2, [r4, #328]
5394	subs	r2, r2, r1
5395	subs	r2, r2, #1
5396	sxth	r2, r2
5397	cmp	r2, r3
5398	blt	.L695
5399	ldr	r2, [r4, #3380]
5400	adds	r1, r1, #1
5401	strh	r1, [r4, #3436]	@ movhi
5402	ldr	r1, [r6, #4]
5403	str	r1, [r2, r3, lsl #2]
5404	ldr	r2, [r4, #3356]
5405.L756:
5406	strh	r5, [r2, r3, lsl #1]	@ movhi
5407	b	.L695
5408.L702:
5409	adds	r2, r2, #1
5410	adds	r0, r0, #1
5411	ldr	r9, [r1, r2, lsl #2]
5412	add	r1, r1, r2, lsl #2
5413	str	r9, [r1, #-4]
5414	ldr	r1, [r4, #3356]
5415	ldrh	r9, [r1, r2, lsl #1]
5416	add	r2, r1, r2, lsl #1
5417	strh	r9, [r2, #-2]	@ movhi
5418	b	.L701
5419.L699:
5420	subs	r3, r3, #1
5421	mov	ip, r10
5422	sxth	r3, r3
5423	b	.L698
5424.L760:
5425	.align	2
5426.L759:
5427	.word	.LANCHOR0
5428	.word	.LANCHOR0+260
5429	.word	.LANCHOR1+231
5430	.word	.LC8
5431.L693:
5432	ldrh	r2, [r4, #344]
5433	ldrh	r3, [r4, #320]
5434	cmp	r2, r3
5435	bls	.L707
5436	ldr	r1, .L761
5437	movw	r2, #1273
5438	ldr	r0, .L761+4
5439	bl	sftl_printk
5440.L707:
5441	ldrh	lr, [r4, #320]
5442	ldrh	r0, [r4, #344]
5443	add	ip, lr, #-1
5444	ldr	r2, [r4, #3368]
5445	sxth	r3, ip
5446	sub	ip, ip, r0
5447.L708:
5448	cmp	r3, ip
5449	ble	.L713
5450	ldr	r1, [r6, #4]
5451	lsl	r10, r3, #2
5452	ldr	r9, [r2, r3, lsl #2]
5453	cmp	r1, r9
5454	bls	.L709
5455	ldr	r2, [r2]
5456	cbnz	r2, .L710
5457	cmp	lr, r0
5458	itt	ne
5459	addne	r0, r0, #1
5460	strhne	r0, [r4, #344]	@ movhi
5461.L710:
5462	uxth	ip, r3
5463	movs	r0, #0
5464.L711:
5465	uxth	lr, r0
5466	ldr	r1, [r4, #3368]
5467	sxth	r2, r0
5468	cmp	ip, lr
5469	bhi	.L712
5470	ldr	r2, [r6, #4]
5471	str	r2, [r1, r10]
5472	ldr	r2, [r4, #348]
5473	strh	r5, [r2, r3, lsl #1]	@ movhi
5474.L713:
5475	cmp	r3, #0
5476	blt	.L695
5477	ldrh	r2, [r4, #320]
5478	ldrh	r1, [r4, #344]
5479	subs	r2, r2, #1
5480	subs	r2, r2, r1
5481	sxth	r2, r2
5482	cmp	r2, r3
5483	blt	.L695
5484	ldr	r2, [r4, #3368]
5485	adds	r1, r1, #1
5486	strh	r1, [r4, #344]	@ movhi
5487	ldr	r1, [r6, #4]
5488	str	r1, [r2, r3, lsl #2]
5489	ldr	r2, [r4, #348]
5490	b	.L756
5491.L712:
5492	adds	r2, r2, #1
5493	adds	r0, r0, #1
5494	ldr	lr, [r1, r2, lsl #2]
5495	add	r1, r1, r2, lsl #2
5496	str	lr, [r1, #-4]
5497	ldr	r1, [r4, #348]
5498	ldrh	lr, [r1, r2, lsl #1]
5499	add	r2, r1, r2, lsl #1
5500	strh	lr, [r2, #-2]	@ movhi
5501	b	.L711
5502.L709:
5503	subs	r3, r3, #1
5504	sxth	r3, r3
5505	b	.L708
5506.L694:
5507	ldrh	r1, [r4, #2624]
5508	movw	r2, #65535
5509	cmp	r1, r2
5510	bne	.L715
5511	strh	r5, [r4, #2624]	@ movhi
5512.L758:
5513	str	r3, [r4, #2632]
5514	b	.L695
5515.L715:
5516	ldrh	r0, [r4, #2628]
5517	cmp	r0, r2
5518	beq	.L716
5519	movs	r1, #1
5520	bl	FtlFreeSysBlkQueueIn
5521.L716:
5522	ldr	r2, [r4, #2632]
5523	ldr	r3, [r6, #4]
5524	cmp	r2, r3
5525	bcs	.L717
5526	ldrh	r3, [r4, #2624]
5527	strh	r3, [r4, #2628]	@ movhi
5528	strh	r5, [r4, #2624]	@ movhi
5529	ldr	r3, [r6, #4]
5530	b	.L758
5531.L717:
5532	strh	r5, [r4, #2628]	@ movhi
5533	b	.L695
5534.L720:
5535	ldr	r1, [r4, #3356]
5536	ldrh	r3, [r1]
5537	cbz	r3, .L722
5538.L725:
5539	ldr	r1, [r4, #348]
5540	ldrh	r2, [r1]
5541	cmp	r2, #0
5542	beq	.L723
5543.L724:
5544	ldrh	r2, [r4, #3436]
5545	ldr	r3, [r4, #328]
5546	cmp	r2, r3
5547	bls	.L754
5548	ldr	r1, .L761
5549	movw	r2, #1398
5550	ldr	r0, .L761+4
5551	bl	sftl_printk
5552.L754:
5553	movs	r0, #0
5554	add	sp, sp, #20
5555	@ sp needed
5556	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
5557.L722:
5558	ldrh	r2, [r4, #3436]
5559	cmp	r2, #0
5560	beq	.L725
5561	ldr	r0, [r4, #328]
5562.L726:
5563	sxth	r2, r3
5564	cmp	r2, r0
5565	bcs	.L725
5566	ldrh	r5, [r1, r2, lsl #1]
5567	adds	r3, r3, #1
5568	cmp	r5, #0
5569	beq	.L726
5570	mov	r3, r2
5571	movs	r5, #0
5572	b	.L727
5573.L728:
5574	ldr	r1, [r4, #3356]
5575	subs	r0, r3, r2
5576	ldrh	r6, [r1, r3, lsl #1]
5577	strh	r6, [r1, r0, lsl #1]	@ movhi
5578	ldr	r1, [r4, #3380]
5579	ldr	r6, [r1, r3, lsl #2]
5580	str	r6, [r1, r0, lsl #2]
5581	ldr	r1, [r4, #3356]
5582	strh	r5, [r1, r3, lsl #1]	@ movhi
5583	adds	r3, r3, #1
5584	sxth	r3, r3
5585.L727:
5586	ldr	r1, [r4, #328]
5587	cmp	r3, r1
5588	bcc	.L728
5589	b	.L725
5590.L723:
5591	ldrh	r3, [r4, #344]
5592	cmp	r3, #0
5593	beq	.L724
5594	ldrh	r0, [r4, #320]
5595.L732:
5596	sxth	r3, r2
5597	mov	r5, r3
5598	cmp	r3, r0
5599	bge	.L724
5600	ldrh	r6, [r1, r3, lsl #1]
5601	adds	r2, r2, #1
5602	cmp	r6, #0
5603	beq	.L732
5604	movs	r0, #0
5605.L733:
5606	ldrh	r2, [r4, #320]
5607	cmp	r3, r2
5608	bge	.L724
5609	ldr	r2, [r4, #348]
5610	subs	r1, r3, r5
5611	ldrh	r6, [r2, r3, lsl #1]
5612	strh	r6, [r2, r1, lsl #1]	@ movhi
5613	ldr	r2, [r4, #3368]
5614	ldr	r6, [r2, r3, lsl #2]
5615	str	r6, [r2, r1, lsl #2]
5616	ldr	r2, [r4, #348]
5617	strh	r0, [r2, r3, lsl #1]	@ movhi
5618	adds	r3, r3, #1
5619	sxth	r3, r3
5620	b	.L733
5621.L762:
5622	.align	2
5623.L761:
5624	.word	.LANCHOR1+231
5625	.word	.LC8
5626	.fnend
5627	.size	FtlScanSysBlk, .-FtlScanSysBlk
5628	.align	1
5629	.global	FtlLoadBbt
5630	.syntax unified
5631	.thumb
5632	.thumb_func
5633	.fpu softvfp
5634	.type	FtlLoadBbt, %function
5635FtlLoadBbt:
5636	.fnstart
5637	@ args = 0, pretend = 0, frame = 0
5638	@ frame_needed = 0, uses_anonymous_args = 0
5639	push	{r4, r5, r6, r7, r8, r9, r10, lr}
5640	.save {r4, r5, r6, r7, r8, r9, r10, lr}
5641	movw	r7, #61649
5642	ldr	r4, .L794
5643	addw	r8, r4, #3452
5644	ldr	r3, [r4, #3300]
5645	ldr	r6, [r4, #3332]
5646	str	r3, [r4, #3460]
5647	str	r6, [r4, #3464]
5648	bl	FtlBbtMemInit
5649	ldrh	r5, [r4, #298]
5650	subs	r5, r5, #1
5651	uxth	r5, r5
5652.L764:
5653	ldrh	r3, [r4, #298]
5654	subs	r3, r3, #16
5655	cmp	r5, r3
5656	ble	.L769
5657	movs	r2, #1
5658	mov	r0, r8
5659	mov	r1, r2
5660	lsls	r3, r5, #10
5661	str	r3, [r4, #3456]
5662	bl	FlashReadPages
5663	ldr	r3, [r4, #3452]
5664	adds	r3, r3, #1
5665	beq	.L765
5666.L768:
5667	ldrh	r3, [r6]
5668	cmp	r3, r7
5669	bne	.L767
5670	ldr	r3, [r6, #4]
5671	str	r3, [r4, #360]
5672	strh	r5, [r4, #352]	@ movhi
5673	ldrh	r3, [r6, #8]
5674	strh	r3, [r4, #356]	@ movhi
5675.L769:
5676	ldrh	r3, [r4, #352]
5677	movw	r2, #65535
5678	cmp	r3, r2
5679	beq	.L783
5680	ldrh	r3, [r4, #356]
5681	cmp	r3, r2
5682	beq	.L773
5683	movs	r2, #1
5684	ldr	r0, .L794+4
5685	mov	r1, r2
5686	lsls	r3, r3, #10
5687	str	r3, [r4, #3456]
5688	bl	FlashReadPages
5689	ldr	r3, [r4, #3452]
5690	adds	r3, r3, #1
5691	beq	.L773
5692	ldrh	r2, [r6]
5693	movw	r3, #61649
5694	cmp	r2, r3
5695	bne	.L773
5696	ldr	r3, [r6, #4]
5697	ldr	r2, [r4, #360]
5698	cmp	r3, r2
5699	bls	.L773
5700	str	r3, [r4, #360]
5701	ldrh	r2, [r4, #356]
5702	ldrh	r3, [r6, #8]
5703	strh	r2, [r4, #352]	@ movhi
5704	strh	r3, [r4, #356]	@ movhi
5705.L773:
5706	ldrh	r0, [r4, #352]
5707	movs	r1, #1
5708	ldr	r9, .L794+4
5709	bl	FtlGetLastWrittenPage
5710	sxth	r8, r0
5711	mov	r7, r0
5712	add	r3, r8, #1
5713	movs	r5, #0
5714	strh	r3, [r4, #354]	@ movhi
5715	movw	r10, #61649
5716.L775:
5717	subs	r3, r7, r5
5718	lsls	r3, r3, #16
5719	bpl	.L778
5720	ldr	r1, .L794+8
5721	movs	r2, #251
5722	ldr	r0, .L794+12
5723	bl	sftl_printk
5724.L777:
5725	ldrh	r0, [r6, #12]
5726	ldrh	r3, [r6, #10]
5727	strh	r3, [r4, #358]	@ movhi
5728	movw	r3, #65535
5729	cmp	r0, r3
5730	beq	.L780
5731	ldr	r3, [r4, #228]
5732	cmp	r0, r3
5733	beq	.L780
5734	ldrh	r2, [r4, #242]
5735	lsrs	r1, r2, #2
5736	cmp	r3, r2, lsr #2
5737	bcs	.L780
5738	cmp	r0, r1
5739	bcs	.L780
5740	bl	FtlSysBlkNumInit
5741.L780:
5742	ldr	r6, .L794+16
5743	movs	r5, #0
5744.L781:
5745	ldrh	r3, [r4, #254]
5746	cmp	r3, r5
5747	bhi	.L782
5748	movs	r0, #0
5749.L763:
5750	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
5751.L765:
5752	ldr	r3, [r4, #3456]
5753	movs	r2, #1
5754	mov	r0, r8
5755	mov	r1, r2
5756	adds	r3, r3, #1
5757	str	r3, [r4, #3456]
5758	bl	FlashReadPages
5759	ldr	r3, [r4, #3452]
5760	adds	r3, r3, #1
5761	bne	.L768
5762.L767:
5763	subs	r5, r5, #1
5764	uxth	r5, r5
5765	b	.L764
5766.L778:
5767	ldrh	r2, [r4, #352]
5768	sub	r3, r8, r5
5769	mov	r0, r9
5770	orr	r3, r3, r2, lsl #10
5771	movs	r2, #1
5772	str	r3, [r4, #3456]
5773	mov	r1, r2
5774	ldr	r3, [r4, #3300]
5775	str	r3, [r4, #3460]
5776	bl	FlashReadPages
5777	ldr	r3, [r4, #3452]
5778	adds	r3, r3, #1
5779	beq	.L776
5780	ldrh	r3, [r6]
5781	cmp	r3, r10
5782	beq	.L777
5783.L776:
5784	adds	r5, r5, #1
5785	b	.L775
5786.L782:
5787	ldrh	r2, [r4, #3388]
5788	ldr	r3, [r4, #3460]
5789	ldr	r0, [r6], #4
5790	mul	r1, r5, r2
5791	lsls	r2, r2, #2
5792	adds	r5, r5, #1
5793	add	r1, r3, r1, lsl #2
5794	bl	ftl_memcpy
5795	b	.L781
5796.L783:
5797	mov	r0, #-1
5798	b	.L763
5799.L795:
5800	.align	2
5801.L794:
5802	.word	.LANCHOR0
5803	.word	.LANCHOR0+3452
5804	.word	.LANCHOR1+245
5805	.word	.LC8
5806	.word	.LANCHOR0+380
5807	.fnend
5808	.size	FtlLoadBbt, .-FtlLoadBbt
5809	.section	.rodata.str1.1
5810.LC95:
5811	.ascii	"prog read error: = %x\012\000"
5812.LC96:
5813	.ascii	"prog read REFRESH: = %x\012\000"
5814.LC97:
5815	.ascii	"prog read s error: = %x %x %x %x %x\012\000"
5816.LC98:
5817	.ascii	"prog read d error: = %x %x %x %x %x\012\000"
5818	.text
5819	.align	1
5820	.global	FlashProgPages
5821	.syntax unified
5822	.thumb
5823	.thumb_func
5824	.fpu softvfp
5825	.type	FlashProgPages, %function
5826FlashProgPages:
5827	.fnstart
5828	@ args = 0, pretend = 0, frame = 48
5829	@ frame_needed = 0, uses_anonymous_args = 0
5830	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
5831	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
5832	mov	r8, r0
5833	ldr	r6, .L835
5834	.pad #60
5835	sub	sp, sp, #60
5836	mov	r4, r0
5837	mov	r3, sp
5838	mov	r5, r0
5839	bic	r10, r3, #8160
5840	mov	fp, #0
5841	bic	r10, r10, #31
5842	str	r1, [sp, #12]
5843	str	r2, [sp, #20]
5844	ldr	r3, [r10, #24]
5845	str	r3, [sp, #52]
5846	ldrh	r3, [r6, #12]
5847	mov	r9, r3
5848	lsls	r3, r3, #3
5849	str	r3, [sp, #16]
5850.L797:
5851	ldr	r3, [sp, #12]
5852	cmp	fp, r3
5853	bne	.L810
5854	movs	r0, #20
5855	ldr	r7, .L835+4
5856	ldr	r9, .L835+8
5857	mla	r8, r0, fp, r8
5858	ldr	r5, .L835
5859.L811:
5860	cmp	r8, r4
5861	beq	.L804
5862	ldr	r2, [r6, #3320]
5863	movs	r3, #0
5864	add	r0, sp, #32
5865	movs	r1, #1
5866	str	r3, [r2]
5867	ldr	r2, [r6, #3328]
5868	str	r3, [r2]
5869	ldr	r2, [sp, #20]
5870	ldr	r3, [r4, #4]
5871	str	r3, [sp, #36]
5872	ldr	r3, [r6, #3320]
5873	str	r3, [sp, #40]
5874	ldr	r3, [r6, #3328]
5875	str	r3, [sp, #44]
5876	bl	FlashReadPages
5877	ldr	fp, [sp, #32]
5878	cmp	fp, #-1
5879	bne	.L812
5880	ldr	r1, [r4, #4]
5881	mov	r0, r7
5882	bl	sftl_printk
5883	str	fp, [r4]
5884.L812:
5885	ldr	fp, [sp, #32]
5886	cmp	fp, #256
5887	bne	.L813
5888	ldr	r1, [r4, #4]
5889	mov	r0, r9
5890	bl	sftl_printk
5891	str	fp, [r4]
5892.L813:
5893	ldr	r3, [r4, #12]
5894	cbz	r3, .L814
5895	ldr	r1, [r5, #3328]
5896	ldr	r2, [r3]
5897	ldr	r0, [r1]
5898	cmp	r2, r0
5899	bne	.L815
5900	ldr	ip, [r3, #8]
5901	ldr	lr, [r1, #8]
5902	cmp	ip, lr
5903	beq	.L814
5904.L815:
5905	ldr	r1, [r1, #4]
5906	strd	r0, r1, [sp]
5907	ldr	r0, .L835+12
5908	ldr	r3, [r3, #4]
5909	ldr	r1, [r4, #4]
5910	bl	sftl_printk
5911	mov	r3, #-1
5912	str	r3, [r4]
5913.L814:
5914	ldr	r3, [r4, #8]
5915	cbz	r3, .L816
5916	ldr	r1, [r5, #3320]
5917	ldr	r2, [r3]
5918	ldr	r0, [r1]
5919	cmp	r2, r0
5920	bne	.L817
5921	ldr	ip, [r3, #2048]
5922	ldr	lr, [r1, #2048]
5923	cmp	ip, lr
5924	beq	.L816
5925.L817:
5926	ldr	r1, [r1, #4]
5927	strd	r0, r1, [sp]
5928	ldr	r0, .L835+16
5929	ldr	r3, [r3, #4]
5930	ldr	r1, [r4, #4]
5931	bl	sftl_printk
5932	mov	r3, #-1
5933	str	r3, [r4]
5934.L816:
5935	adds	r4, r4, #20
5936	b	.L811
5937.L810:
5938	ldr	r3, [r5, #8]
5939	cbz	r3, .L798
5940	ldr	r3, [r5, #12]
5941	cbnz	r3, .L799
5942.L798:
5943	ldr	r1, .L835+20
5944	movs	r2, #148
5945	ldr	r0, .L835+24
5946	bl	sftl_printk
5947.L799:
5948	add	r2, sp, #24
5949	add	r1, sp, #28
5950	mov	r0, r5
5951	bl	l2p_addr_tran
5952	ldr	r7, [sp, #24]
5953	cmp	r7, #3
5954	bls	.L800
5955.L834:
5956	mov	r3, #-1
5957	str	r3, [r5]
5958	b	.L801
5959.L800:
5960	cbnz	r7, .L802
5961	ldr	r3, [sp, #28]
5962	ldr	r2, [sp, #16]
5963	cmp	r2, r3
5964	bls	.L802
5965	ldr	r6, .L835+20
5966	ldr	r5, .L835+28
5967.L803:
5968	ldr	r2, [r4, #4]
5969	mov	r3, #-1
5970	mov	r1, r6
5971	str	r3, [r4]
5972	mov	r0, r5
5973	adds	r7, r7, #1
5974	bl	sftl_printk
5975	ldr	r1, [r4, #8]
5976	ldr	r0, .L835+32
5977	movs	r3, #16
5978	movs	r2, #4
5979	adds	r4, r4, #20
5980	bl	rknand_print_hex
5981	movs	r3, #4
5982	ldr	r1, [r4, #-8]
5983	mov	r2, r3
5984	ldr	r0, .L835+36
5985	bl	rknand_print_hex
5986	ldr	r3, [sp, #12]
5987	cmp	r3, r7
5988	bne	.L803
5989	bl	dump_stack
5990.L804:
5991	ldr	r2, [sp, #52]
5992	ldr	r3, [r10, #24]
5993	cmp	r2, r3
5994	beq	.L819
5995	bl	__stack_chk_fail
5996.L802:
5997	ldr	r1, [r5, #8]
5998	lsls	r3, r1, #26
5999	beq	.L820
6000	ldr	r7, [r6, #3320]
6001	cmp	r7, r1
6002	beq	.L805
6003	ldrh	r2, [r6, #258]
6004	mov	r0, r7
6005	lsls	r2, r2, #9
6006	bl	ftl_memcpy
6007.L805:
6008	ldr	r3, [r5, #12]
6009	mov	r2, r7
6010	ldr	r1, [sp, #28]
6011	ldrb	r0, [sp, #24]	@ zero_extendqisi2
6012	ldr	ip, [r6, #3252]
6013	blx	ip
6014	cbnz	r0, .L806
6015	str	r0, [r5]
6016.L807:
6017	ldrh	r3, [r6, #14]
6018	cmp	r3, #4
6019	bne	.L801
6020	ldr	r3, [r5, #12]
6021	add	r2, r7, #2048
6022	ldr	r1, [sp, #28]
6023	ldrb	r0, [sp, #24]	@ zero_extendqisi2
6024	adds	r3, r3, #8
6025	ldr	r7, [r6, #3252]
6026	add	r1, r1, r9
6027	blx	r7
6028	cmp	r0, #0
6029	bne	.L834
6030.L801:
6031	add	fp, fp, #1
6032	adds	r5, r5, #20
6033	b	.L797
6034.L820:
6035	mov	r7, r1
6036	b	.L805
6037.L806:
6038	mov	r3, #-1
6039	str	r3, [r5]
6040	b	.L807
6041.L819:
6042	movs	r0, #0
6043	add	sp, sp, #60
6044	@ sp needed
6045	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
6046.L836:
6047	.align	2
6048.L835:
6049	.word	.LANCHOR0
6050	.word	.LC95
6051	.word	.LC96
6052	.word	.LC97
6053	.word	.LC98
6054	.word	.LANCHOR1+256
6055	.word	.LC8
6056	.word	.LC86
6057	.word	.LC87
6058	.word	.LC88
6059	.fnend
6060	.size	FlashProgPages, .-FlashProgPages
6061	.align	1
6062	.global	FtlLowFormatEraseBlock
6063	.syntax unified
6064	.thumb
6065	.thumb_func
6066	.fpu softvfp
6067	.type	FtlLowFormatEraseBlock, %function
6068FtlLowFormatEraseBlock:
6069	.fnstart
6070	@ args = 0, pretend = 0, frame = 8
6071	@ frame_needed = 0, uses_anonymous_args = 0
6072	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
6073	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
6074	.pad #12
6075	mov	r10, #0
6076	ldr	r4, .L882
6077	mov	r8, r0
6078	mov	r7, r1
6079	mov	r6, r10
6080	mov	r5, r10
6081	mov	r9, #20
6082	str	r0, [r4, #3284]
6083.L838:
6084	ldrh	r1, [r4, #232]
6085	uxth	r3, r10
6086	cmp	r1, r3
6087	bhi	.L843
6088	cmp	r6, #0
6089	beq	.L837
6090	mov	r9, #0
6091	mov	r10, #20
6092	ldr	r0, [r4, #3268]
6093	mov	r2, r6
6094	movs	r1, #0
6095	bl	FlashEraseBlocks
6096.L847:
6097	mul	r3, r10, r9
6098	ldr	r2, [r4, #3268]
6099	adds	r1, r2, r3
6100	ldr	r3, [r2, r3]
6101	adds	r3, r3, #1
6102	bne	.L846
6103	ldr	r0, [r1, #4]
6104	adds	r5, r5, #1
6105	uxth	r5, r5
6106	ubfx	r0, r0, #10, #16
6107	bl	FtlBbmMapBadBlock
6108.L846:
6109	add	r9, r9, #1
6110	uxth	r3, r9
6111	cmp	r6, r3
6112	bhi	.L847
6113	cmp	r7, #0
6114	beq	.L862
6115	ldrh	r3, [r4, #304]
6116	mov	fp, #1
6117	str	r3, [sp, #4]
6118.L848:
6119	mov	r10, #0
6120.L857:
6121	mov	r9, #0
6122	mov	r6, r9
6123.L849:
6124	ldrh	r1, [r4, #232]
6125	uxth	r3, r9
6126	cmp	r1, r3
6127	bhi	.L853
6128	cmp	r6, #0
6129	beq	.L837
6130	mov	r9, #0
6131	ldr	r0, [r4, #3268]
6132	mov	r2, fp
6133	mov	r1, r6
6134	movs	r3, #1
6135	bl	FlashProgPages
6136.L856:
6137	movs	r3, #20
6138	ldr	r2, [r4, #3268]
6139	mul	r3, r3, r9
6140	adds	r1, r2, r3
6141	ldr	r3, [r2, r3]
6142	cbz	r3, .L855
6143	ldr	r0, [r1, #4]
6144	adds	r5, r5, #1
6145	uxth	r5, r5
6146	ubfx	r0, r0, #10, #16
6147	bl	FtlBbmMapBadBlock
6148.L855:
6149	add	r9, r9, #1
6150	uxth	r3, r9
6151	cmp	r6, r3
6152	bhi	.L856
6153	add	r10, r10, #1
6154	ldr	r2, [sp, #4]
6155	uxth	r3, r10
6156	cmp	r2, r3
6157	bhi	.L857
6158	mov	r9, #0
6159	mov	r10, #20
6160.L859:
6161	cbz	r7, .L858
6162	mul	r3, r10, r9
6163	ldr	r2, [r4, #3268]
6164	adds	r1, r2, r3
6165	ldr	r3, [r2, r3]
6166	cbnz	r3, .L858
6167	ldr	r0, [r1, #4]
6168	movs	r1, #1
6169	ubfx	r0, r0, #10, #16
6170	bl	FtlFreeSysBlkQueueIn
6171.L858:
6172	add	r9, r9, #1
6173	uxth	r3, r9
6174	cmp	r6, r3
6175	bhi	.L859
6176	cmp	r8, #63
6177	bls	.L860
6178	cbz	r7, .L837
6179.L860:
6180	ldr	r0, [r4, #3268]
6181	mov	r2, r6
6182	mov	r1, fp
6183	bl	FlashEraseBlocks
6184.L837:
6185	mov	r0, r5
6186	add	sp, sp, #12
6187	@ sp needed
6188	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
6189.L843:
6190	uxth	r3, r10
6191	ldr	r0, [r4, #3268]
6192	movs	r2, #0
6193	mul	r1, r9, r3
6194	add	r3, r3, r4
6195	str	r2, [r0, r1]
6196	mov	r1, r8
6197	ldrb	r0, [r3, #260]	@ zero_extendqisi2
6198	bl	V2P_block
6199	mov	fp, r0
6200	cbz	r7, .L839
6201	bl	IsBlkInVendorPart
6202	cbnz	r0, .L840
6203.L839:
6204	mov	r0, fp
6205	bl	FtlBbmIsBadBlock
6206	cbnz	r0, .L841
6207	ldr	r1, [r4, #3268]
6208	lsl	r0, fp, #10
6209	ldr	r3, [r4, #3316]
6210	mla	r1, r9, r6, r1
6211	str	r3, [r1, #8]
6212	ldrh	r3, [r4, #312]
6213	str	r0, [r1, #4]
6214	ldr	r0, [r4, #3336]
6215	muls	r3, r6, r3
6216	add	r6, r6, #1
6217	it	mi
6218	addmi	r3, r3, #3
6219	uxth	r6, r6
6220	bic	r3, r3, #3
6221	add	r3, r3, r0
6222	str	r3, [r1, #12]
6223.L840:
6224	add	r10, r10, #1
6225	b	.L838
6226.L841:
6227	adds	r5, r5, #1
6228	uxth	r5, r5
6229	b	.L840
6230.L862:
6231	movs	r3, #2
6232	mov	fp, r7
6233	str	r3, [sp, #4]
6234	b	.L848
6235.L853:
6236	uxth	r3, r9
6237	movs	r2, #20
6238	ldr	r0, [r4, #3268]
6239	mul	r1, r2, r3
6240	add	r3, r3, r4
6241	movs	r2, #0
6242	str	r2, [r0, r1]
6243	mov	r1, r8
6244	ldrb	r0, [r3, #260]	@ zero_extendqisi2
6245	bl	V2P_block
6246	str	r0, [sp]
6247	cbz	r7, .L850
6248	bl	IsBlkInVendorPart
6249	cbnz	r0, .L851
6250.L850:
6251	ldr	r0, [sp]
6252	bl	FtlBbmIsBadBlock
6253	cbnz	r0, .L851
6254	ldr	r1, [r4, #3268]
6255	movs	r3, #20
6256	ldr	r2, .L882
6257	mla	r1, r3, r6, r1
6258	ldr	r3, [sp]
6259	add	r0, r10, r3, lsl #10
6260	ldr	r3, [r4, #3312]
6261	str	r3, [r1, #8]
6262	ldrh	r3, [r4, #312]
6263	str	r0, [r1, #4]
6264	ldr	r0, [r2, #3316]
6265	muls	r3, r6, r3
6266	add	r6, r6, #1
6267	it	mi
6268	addmi	r3, r3, #3
6269	uxth	r6, r6
6270	bic	r3, r3, #3
6271	add	r3, r3, r0
6272	str	r3, [r1, #12]
6273.L851:
6274	add	r9, r9, #1
6275	b	.L849
6276.L883:
6277	.align	2
6278.L882:
6279	.word	.LANCHOR0
6280	.fnend
6281	.size	FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
6282	.align	1
6283	.global	FlashTestBlk
6284	.syntax unified
6285	.thumb
6286	.thumb_func
6287	.fpu softvfp
6288	.type	FlashTestBlk, %function
6289FlashTestBlk:
6290	.fnstart
6291	@ args = 0, pretend = 0, frame = 88
6292	@ frame_needed = 0, uses_anonymous_args = 0
6293	push	{r4, r5, r6, lr}
6294	.save {r4, r5, r6, lr}
6295	cmp	r0, #11
6296	mov	r4, r0
6297	.pad #88
6298	sub	sp, sp, #88
6299	mov	r3, sp
6300	bic	r6, r3, #8160
6301	bic	r6, r6, #31
6302	ldr	r3, [r6, #24]
6303	str	r3, [sp, #84]
6304	bls	.L888
6305	ldr	r5, .L890
6306	add	r0, sp, #20
6307	movs	r2, #32
6308	movs	r1, #165
6309	str	r0, [sp, #12]
6310	lsls	r4, r4, #10
6311	ldr	r3, [r5, #3324]
6312	str	r3, [sp, #8]
6313	bl	ftl_memset
6314	movs	r2, #8
6315	movs	r1, #90
6316	ldr	r0, [r5, #3324]
6317	bl	ftl_memset
6318	movs	r2, #1
6319	mov	r0, sp
6320	mov	r1, r2
6321	str	r4, [sp, #4]
6322	bl	FlashEraseBlocks
6323	movs	r3, #1
6324	mov	r0, sp
6325	mov	r2, r3
6326	mov	r1, r3
6327	bl	FlashProgPages
6328	ldr	r3, [sp]
6329	cbnz	r3, .L889
6330	adds	r3, r4, #1
6331	mov	r0, sp
6332	str	r3, [sp, #4]
6333	movs	r3, #1
6334	mov	r2, r3
6335	mov	r1, r3
6336	bl	FlashProgPages
6337	ldr	r5, [sp]
6338	subs	r5, r5, #0
6339	it	ne
6340	movne	r5, #1
6341	rsbs	r5, r5, #0
6342.L886:
6343	mov	r0, sp
6344	movs	r2, #1
6345	movs	r1, #0
6346	str	r4, [sp, #4]
6347	bl	FlashEraseBlocks
6348.L884:
6349	ldr	r2, [sp, #84]
6350	ldr	r3, [r6, #24]
6351	cmp	r2, r3
6352	beq	.L887
6353	bl	__stack_chk_fail
6354.L889:
6355	mov	r5, #-1
6356	b	.L886
6357.L888:
6358	movs	r5, #0
6359	b	.L884
6360.L887:
6361	mov	r0, r5
6362	add	sp, sp, #88
6363	@ sp needed
6364	pop	{r4, r5, r6, pc}
6365.L891:
6366	.align	2
6367.L890:
6368	.word	.LANCHOR0
6369	.fnend
6370	.size	FlashTestBlk, .-FlashTestBlk
6371	.section	.rodata.str1.1
6372.LC99:
6373	.ascii	"FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
6374.LC100:
6375	.ascii	"FtlBbmTblFlush error:%x\012\000"
6376.LC101:
6377	.ascii	"FtlBbmTblFlush error = %x error count = %d\012\000"
6378	.text
6379	.align	1
6380	.global	FtlBbmTblFlush
6381	.syntax unified
6382	.thumb
6383	.thumb_func
6384	.fpu softvfp
6385	.type	FtlBbmTblFlush, %function
6386FtlBbmTblFlush:
6387	.fnstart
6388	@ args = 0, pretend = 0, frame = 0
6389	@ frame_needed = 0, uses_anonymous_args = 0
6390	push	{r0, r1, r4, r5, r6, r7, r8, r9, r10, lr}
6391	.save {r4, r5, r6, r7, r8, r9, r10, lr}
6392	.pad #8
6393	movs	r5, #0
6394	ldr	r4, .L903
6395	movs	r1, #0
6396	add	r6, r4, #380
6397	ldr	r0, [r4, #3300]
6398	ldr	r3, [r4, #3332]
6399	ldrh	r2, [r4, #310]
6400	str	r0, [r4, #3460]
6401	str	r3, [r4, #3464]
6402	bl	ftl_memset
6403.L893:
6404	ldrh	r3, [r4, #254]
6405	cmp	r3, r5
6406	bgt	.L894
6407	ldr	r5, [r4, #3464]
6408	movs	r2, #16
6409	movs	r1, #255
6410	ldr	r8, .L903+4
6411	mov	r0, r5
6412	ldr	r9, .L903+8
6413	bl	ftl_memset
6414	movw	r3, #61649
6415	strh	r3, [r5]	@ movhi
6416	movs	r6, #0
6417	mov	r7, r6
6418	ldr	r3, [r4, #360]
6419	str	r3, [r5, #4]
6420	ldrh	r3, [r4, #352]
6421	strh	r3, [r5, #2]	@ movhi
6422	ldr	r3, [r4, #356]
6423	str	r3, [r5, #8]
6424	ldr	r3, [r4, #228]
6425	strh	r3, [r5, #12]	@ movhi
6426	ldr	r3, [r4, #2604]
6427	strh	r3, [r5, #14]	@ movhi
6428.L895:
6429	ldr	r3, [r4, #3300]
6430	mov	r0, r8
6431	ldrh	r2, [r4, #354]
6432	mov	r10, #0
6433	str	r3, [r4, #3460]
6434	ldrh	r1, [r4, #352]
6435	ldr	r3, [r4, #3332]
6436	str	r3, [r4, #3464]
6437	orr	r3, r2, r1, lsl #10
6438	str	r3, [r4, #3456]
6439	ldrh	r3, [r5, #10]
6440	str	r3, [sp]
6441	ldrh	r3, [r4, #356]
6442	str	r10, [r4, #3452]
6443	bl	sftl_printk
6444	ldrh	r3, [r4, #304]
6445	ldrh	r2, [r4, #354]
6446	subs	r3, r3, #1
6447	cmp	r2, r3
6448	blt	.L896
6449	ldr	r3, [r4, #360]
6450	ldr	r0, [r4, #3268]
6451	adds	r3, r3, #1
6452	str	r3, [r4, #360]
6453	str	r3, [r5, #4]
6454	ldrh	r2, [r4, #352]
6455	ldrh	r3, [r4, #356]
6456	strh	r2, [r5, #8]	@ movhi
6457	strh	r2, [r4, #356]	@ movhi
6458	movs	r2, #1
6459	strh	r3, [r4, #352]	@ movhi
6460	mov	r1, r2
6461	lsls	r3, r3, #10
6462	str	r3, [r4, #3456]
6463	str	r3, [r0, #4]
6464	strh	r10, [r4, #354]	@ movhi
6465	bl	FlashEraseBlocks
6466.L896:
6467	movs	r3, #1
6468	mov	r0, r9
6469	mov	r2, r3
6470	mov	r1, r3
6471	bl	FlashProgPages
6472	ldrh	r3, [r4, #354]
6473	adds	r3, r3, #1
6474	strh	r3, [r4, #354]	@ movhi
6475	ldr	r3, [r4, #3452]
6476	adds	r2, r3, #1
6477	bne	.L897
6478	adds	r6, r6, #1
6479	ldr	r1, [r4, #3456]
6480	ldr	r0, .L903+12
6481	uxth	r6, r6
6482	bl	sftl_printk
6483	cmp	r6, #3
6484	bls	.L895
6485	ldr	r1, [r4, #3456]
6486	mov	r2, r6
6487	ldr	r0, .L903+16
6488	bl	sftl_printk
6489.L899:
6490	b	.L899
6491.L894:
6492	ldrh	r2, [r4, #3388]
6493	ldr	r3, [r4, #3460]
6494	ldr	r1, [r6], #4
6495	mul	r0, r5, r2
6496	lsls	r2, r2, #2
6497	adds	r5, r5, #1
6498	add	r0, r3, r0, lsl #2
6499	bl	ftl_memcpy
6500	b	.L893
6501.L897:
6502	adds	r7, r7, #1
6503	cmp	r7, #1
6504	ble	.L895
6505	cmp	r3, #256
6506	beq	.L895
6507	movs	r0, #0
6508	add	sp, sp, #8
6509	@ sp needed
6510	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
6511.L904:
6512	.align	2
6513.L903:
6514	.word	.LANCHOR0
6515	.word	.LC99
6516	.word	.LANCHOR0+3452
6517	.word	.LC100
6518	.word	.LC101
6519	.fnend
6520	.size	FtlBbmTblFlush, .-FtlBbmTblFlush
6521	.align	1
6522	.global	allocate_data_superblock
6523	.syntax unified
6524	.thumb
6525	.thumb_func
6526	.fpu softvfp
6527	.type	allocate_data_superblock, %function
6528allocate_data_superblock:
6529	.fnstart
6530	@ args = 0, pretend = 0, frame = 8
6531	@ frame_needed = 0, uses_anonymous_args = 0
6532	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
6533	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
6534	.pad #12
6535	mov	r5, r0
6536	ldr	r4, .L937
6537	ldr	r9, .L937+4
6538.L906:
6539	ldrh	r2, [r4, #2528]
6540	ldrh	r3, [r4, #224]
6541	add	r3, r3, r2
6542	ldrh	r2, [r4, #240]
6543	cmp	r3, r2
6544	ble	.L907
6545	ldr	r0, .L937+8
6546	mov	r1, r9
6547	movw	r2, #2667
6548	bl	sftl_printk
6549.L907:
6550	ldr	r3, .L937+12
6551	cmp	r5, r3
6552	bne	.L932
6553	ldrh	r3, [r4, #224]
6554	ldr	r1, [r4, #3164]
6555	mul	r2, r1, r3
6556	lsrs	r1, r3, #1
6557	movw	r3, #65535
6558	add	r1, r1, r2, lsr #2
6559	uxth	r1, r1
6560	cmp	r1, r3
6561	it	eq
6562	moveq	r1, #0
6563.L908:
6564	ldr	r0, .L937+16
6565	bl	List_pop_index_node
6566	ldrh	r3, [r4, #224]
6567	mov	r6, r0
6568	uxth	r8, r0
6569	cbnz	r3, .L909
6570	ldr	r0, .L937+8
6571	mov	r1, r9
6572	movw	r2, #2676
6573	bl	sftl_printk
6574.L909:
6575	ldrh	r3, [r4, #224]
6576	subs	r3, r3, #1
6577	strh	r3, [r4, #224]	@ movhi
6578	ldrh	r3, [r4, #240]
6579	cmp	r3, r8
6580	bls	.L906
6581	ldr	r3, [r4, #72]
6582	uxth	r6, r6
6583	ldrh	r7, [r3, r6, lsl #1]
6584	cmp	r7, #0
6585	bne	.L906
6586	mov	r0, r5
6587	strh	r8, [r5]	@ movhi
6588	bl	make_superblock
6589	ldrb	r3, [r5, #7]	@ zero_extendqisi2
6590	cbnz	r3, .L911
6591	ldr	r3, [r4, #72]
6592	movw	r2, #65535
6593	mov	r0, r8
6594	strh	r2, [r3, r6, lsl #1]	@ movhi
6595	bl	INSERT_DATA_LIST
6596	ldrh	r2, [r4, #2528]
6597	ldrh	r3, [r4, #224]
6598	add	r3, r3, r2
6599	ldrh	r2, [r4, #240]
6600	cmp	r3, r2
6601	ble	.L906
6602	ldr	r0, .L937+8
6603	mov	r1, r9
6604	movw	r2, #2690
6605	bl	sftl_printk
6606	b	.L906
6607.L932:
6608	movs	r1, #0
6609	b	.L908
6610.L911:
6611	ldrh	r2, [r4, #2528]
6612	ldrh	r3, [r4, #224]
6613	add	r3, r3, r2
6614	ldrh	r2, [r4, #240]
6615	cmp	r3, r2
6616	ble	.L913
6617	ldr	r0, .L937+8
6618	mov	r1, r9
6619	movw	r2, #2693
6620	bl	sftl_printk
6621.L913:
6622	ldr	r0, [r4, #3268]
6623	add	r10, r5, #16
6624	ldrh	r3, [r4, #232]
6625	mov	ip, r10
6626	str	r3, [sp]
6627	mov	r2, r0
6628	movs	r3, #0
6629	mov	lr, r3
6630.L914:
6631	ldr	fp, [sp]
6632	uxth	r1, r3
6633	cmp	fp, r1
6634	bhi	.L916
6635	cbnz	r7, .L917
6636	ldr	r0, .L937+8
6637	mov	r1, r9
6638	mov	r2, #2704
6639	bl	sftl_printk
6640.L917:
6641	ldrh	r3, [r4, #172]
6642	cmp	r3, r8
6643	bne	.L918
6644	ldr	r0, .L937+8
6645	mov	r1, r9
6646	movw	r2, #2706
6647	bl	sftl_printk
6648.L918:
6649	ldrb	r1, [r5, #8]	@ zero_extendqisi2
6650	ldr	r2, [r4, #2536]
6651	ldrh	r3, [r2, r6, lsl #1]
6652	cmp	r1, #0
6653	bne	.L919
6654	cmp	r3, #0
6655	beq	.L933
6656	ldrh	r1, [r4, #292]
6657	add	r3, r3, r1
6658	uxth	r3, r3
6659.L920:
6660	strh	r3, [r2, r6, lsl #1]	@ movhi
6661	ldr	r3, [r4, #2596]
6662	adds	r3, r3, #1
6663	str	r3, [r4, #2596]
6664.L921:
6665	ldr	r3, [r4, #2536]
6666	ldr	r2, [r4, #2612]
6667	ldrh	r0, [r4, #292]
6668	ldrh	r3, [r3, r6, lsl #1]
6669	ldrh	r1, [r4, #240]
6670	cmp	r3, r2
6671	ldr	r2, [r4, #2596]
6672	it	hi
6673	strhi	r3, [r4, #2612]
6674	ldr	r3, [r4, #2600]
6675	mla	r0, r2, r0, r3
6676	bl	__aeabi_uidiv
6677	ldr	r2, [r4, #3348]
6678	str	r0, [r4, #2604]
6679	ldr	r0, [r4, #3268]
6680	ldr	r3, [r2, #16]
6681	ldr	ip, .L937+20
6682	adds	r3, r3, #1
6683	str	r3, [r2, #16]
6684	adds	r3, r0, #4
6685	movs	r2, #0
6686.L923:
6687	uxth	r1, r2
6688	adds	r3, r3, #20
6689	cmp	r7, r1
6690	bhi	.L924
6691	ldrb	r1, [r5, #8]	@ zero_extendqisi2
6692	mov	r2, r7
6693	bl	FlashEraseBlocks
6694	mov	fp, #0
6695	mov	r2, fp
6696	movs	r1, #20
6697.L925:
6698	uxth	r3, fp
6699	cmp	r7, r3
6700	bhi	.L927
6701	cmp	r2, #0
6702	ble	.L928
6703	mov	r0, r8
6704	bl	update_multiplier_value
6705	bl	FtlBbmTblFlush
6706.L928:
6707	ldrb	r2, [r5, #7]	@ zero_extendqisi2
6708	cmp	r2, #0
6709	bne	.L929
6710	ldr	r3, [r4, #72]
6711	movw	r2, #65535
6712	strh	r2, [r3, r6, lsl #1]	@ movhi
6713	b	.L906
6714.L916:
6715	strd	lr, lr, [r2, #8]
6716	movw	fp, #65535
6717	ldrh	r1, [ip], #2
6718	cmp	r1, fp
6719	beq	.L915
6720	mov	fp, #20
6721	lsls	r1, r1, #10
6722	mla	fp, fp, r7, r0
6723	adds	r7, r7, #1
6724	uxth	r7, r7
6725	str	r1, [fp, #4]
6726.L915:
6727	adds	r3, r3, #1
6728	adds	r2, r2, #20
6729	b	.L914
6730.L933:
6731	movs	r3, #2
6732	b	.L920
6733.L919:
6734	adds	r3, r3, #1
6735	strh	r3, [r2, r6, lsl #1]	@ movhi
6736	ldr	r3, [r4, #2600]
6737	adds	r3, r3, #1
6738	str	r3, [r4, #2600]
6739	b	.L921
6740.L924:
6741	ldr	r1, [r3, #-20]
6742	adds	r2, r2, #1
6743	and	r1, r1, ip
6744	str	r1, [r3, #-20]
6745	b	.L923
6746.L927:
6747	mul	r3, r1, fp
6748	ldr	r0, [r4, #3268]
6749	add	ip, r0, r3
6750	ldr	r3, [r0, r3]
6751	adds	r0, r3, #1
6752	bne	.L926
6753	ldr	r0, [ip, #4]
6754	adds	r2, r2, #1
6755	str	r3, [sp, #4]
6756	str	r2, [sp]
6757	ubfx	r0, r0, #10, #16
6758	bl	FtlBbmMapBadBlock
6759	ldr	r3, [sp, #4]
6760	strh	r3, [r10, fp, lsl #1]	@ movhi
6761	movs	r1, #20
6762	ldr	r2, [sp]
6763	ldrb	r3, [r5, #7]	@ zero_extendqisi2
6764	subs	r3, r3, #1
6765	strb	r3, [r5, #7]
6766.L926:
6767	add	fp, fp, #1
6768	b	.L925
6769.L929:
6770	ldrh	r3, [r4, #302]
6771	strh	r8, [r5]	@ movhi
6772	smulbb	r3, r3, r2
6773	movs	r2, #0
6774	strh	r2, [r5, #2]	@ movhi
6775	strb	r2, [r5, #6]
6776	ldr	r2, [r4, #2588]
6777	uxth	r3, r3
6778	str	r2, [r5, #12]
6779	adds	r2, r2, #1
6780	str	r2, [r4, #2588]
6781	ldr	r2, [r4, #72]
6782	ldrh	r1, [r5]
6783	strh	r3, [r5, #4]	@ movhi
6784	strh	r3, [r2, r1, lsl #1]	@ movhi
6785	ldrh	r3, [r5, #4]
6786	cbz	r3, .L930
6787	ldrb	r3, [r5, #7]	@ zero_extendqisi2
6788	cbnz	r3, .L931
6789.L930:
6790	ldr	r1, .L937+4
6791	movw	r2, #2759
6792	ldr	r0, .L937+8
6793	bl	sftl_printk
6794.L931:
6795	movs	r0, #0
6796	add	sp, sp, #12
6797	@ sp needed
6798	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
6799.L938:
6800	.align	2
6801.L937:
6802	.word	.LANCHOR0
6803	.word	.LANCHOR1+271
6804	.word	.LC8
6805	.word	.LANCHOR0+124
6806	.word	.LANCHOR0+2532
6807	.word	-1024
6808	.fnend
6809	.size	allocate_data_superblock, .-allocate_data_superblock
6810	.section	.rodata.str1.1
6811.LC102:
6812	.ascii	"FtlGcFreeBadSuperBlk 0x%x\012\000"
6813	.text
6814	.align	1
6815	.global	FtlGcFreeBadSuperBlk
6816	.syntax unified
6817	.thumb
6818	.thumb_func
6819	.fpu softvfp
6820	.type	FtlGcFreeBadSuperBlk, %function
6821FtlGcFreeBadSuperBlk:
6822	.fnstart
6823	@ args = 0, pretend = 0, frame = 16
6824	@ frame_needed = 0, uses_anonymous_args = 0
6825	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
6826	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
6827	mov	r9, r0
6828	ldr	r4, .L947
6829	.pad #20
6830	sub	sp, sp, #20
6831	ldrh	r3, [r4, #3206]
6832	cmp	r3, #0
6833	bne	.L946
6834.L941:
6835	movs	r0, #0
6836	add	sp, sp, #20
6837	@ sp needed
6838	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
6839.L945:
6840	uxtah	r3, r4, r8
6841	mov	r1, r9
6842	ldrb	r0, [r3, #260]	@ zero_extendqisi2
6843	bl	V2P_block
6844	mov	r5, r0
6845	movs	r3, #0
6846.L942:
6847	ldrh	r1, [r4, #3206]
6848	uxth	r2, r3
6849	cmp	r1, r2
6850	bhi	.L944
6851	add	r8, r8, #1
6852.L940:
6853	ldrh	r2, [r4, #232]
6854	uxth	r3, r8
6855	cmp	r2, r3
6856	bhi	.L945
6857	bl	FtlGcReFreshBadBlk
6858	b	.L941
6859.L944:
6860	uxth	r7, r3
6861	lsls	r1, r7, #1
6862	str	r1, [sp, #4]
6863	add	r1, r4, r7, lsl #1
6864	ldrh	r1, [r1, #3208]
6865	cmp	r1, r5
6866	bne	.L943
6867	mov	r1, r5
6868	mov	r0, fp
6869	strd	r2, r3, [sp, #8]
6870	bl	sftl_printk
6871	mov	r0, r5
6872	bl	FtlBbmMapBadBlock
6873	bl	FtlBbmTblFlush
6874	ldrh	r6, [r4, #3206]
6875	ldr	r2, [sp, #8]
6876	adds	r1, r7, #1
6877	subs	r0, r6, r2
6878	add	r1, r10, r1, lsl #1
6879	uxth	r0, r0
6880	lsls	r0, r0, #1
6881	cmp	r2, r6
6882	ite	ls
6883	movls	r2, r0
6884	movhi	r2, #0
6885	ldr	r0, [sp, #4]
6886	subs	r6, r6, #1
6887	add	r0, r0, r10
6888	bl	memmove
6889	ldr	r3, [sp, #12]
6890	strh	r6, [r4, #3206]	@ movhi
6891.L943:
6892	adds	r3, r3, #1
6893	b	.L942
6894.L946:
6895	ldr	fp, .L947+4
6896	addw	r10, r4, #3208
6897	mov	r8, #0
6898	b	.L940
6899.L948:
6900	.align	2
6901.L947:
6902	.word	.LANCHOR0
6903	.word	.LC102
6904	.fnend
6905	.size	FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
6906	.align	1
6907	.global	update_vpc_list
6908	.syntax unified
6909	.thumb
6910	.thumb_func
6911	.fpu softvfp
6912	.type	update_vpc_list, %function
6913update_vpc_list:
6914	.fnstart
6915	@ args = 0, pretend = 0, frame = 0
6916	@ frame_needed = 0, uses_anonymous_args = 0
6917	push	{r3, r4, r5, lr}
6918	.save {r3, r4, r5, lr}
6919	mov	r5, r0
6920	ldr	r4, .L961
6921	ldr	r3, [r4, #72]
6922	ldrh	r3, [r3, r0, lsl #1]
6923	cmp	r3, #0
6924	bne	.L950
6925	ldrh	r3, [r4, #222]
6926	cmp	r3, r0
6927	itt	eq
6928	movweq	r3, #65535
6929	strheq	r3, [r4, #222]	@ movhi
6930	ldrh	r3, [r4, #220]
6931	cmp	r3, r0
6932	itt	eq
6933	movweq	r3, #65535
6934	strheq	r3, [r4, #220]	@ movhi
6935	ldrh	r3, [r4, #172]
6936	cmp	r3, r0
6937	bne	.L953
6938	movw	r3, #65535
6939	strh	r3, [r4, #172]	@ movhi
6940.L954:
6941	ldr	r0, .L961+4
6942	mov	r1, r5
6943	bl	List_remove_node
6944	ldrh	r3, [r4, #2528]
6945	cbnz	r3, .L956
6946	ldr	r1, .L961+8
6947	movw	r2, #2835
6948	ldr	r0, .L961+12
6949	bl	sftl_printk
6950.L956:
6951	ldrh	r3, [r4, #2528]
6952	mov	r0, r5
6953	subs	r3, r3, #1
6954	strh	r3, [r4, #2528]	@ movhi
6955	bl	free_data_superblock
6956	mov	r0, r5
6957	bl	FtlGcFreeBadSuperBlk
6958	ldrh	r2, [r4, #2528]
6959	ldrh	r3, [r4, #224]
6960	add	r3, r3, r2
6961	ldrh	r2, [r4, #240]
6962	cmp	r3, r2
6963	ble	.L960
6964	ldr	r1, .L961+8
6965	movw	r2, #2838
6966	ldr	r0, .L961+12
6967	bl	sftl_printk
6968.L960:
6969	movs	r0, #1
6970	b	.L949
6971.L953:
6972	ldrh	r3, [r4, #24]
6973	cmp	r3, r0
6974	beq	.L959
6975	ldrh	r3, [r4, #76]
6976	cmp	r3, r0
6977	beq	.L959
6978	ldrh	r3, [r4, #124]
6979	cmp	r3, r0
6980	bne	.L954
6981.L959:
6982	movs	r0, #0
6983.L949:
6984	pop	{r3, r4, r5, pc}
6985.L950:
6986	bl	List_update_data_list
6987	b	.L959
6988.L962:
6989	.align	2
6990.L961:
6991	.word	.LANCHOR0
6992	.word	.LANCHOR0+2520
6993	.word	.LANCHOR1+296
6994	.word	.LC8
6995	.fnend
6996	.size	update_vpc_list, .-update_vpc_list
6997	.section	.rodata.str1.1
6998.LC103:
6999	.ascii	"decrement_vpc_count %x = %d\012\000"
7000	.text
7001	.align	1
7002	.global	decrement_vpc_count
7003	.syntax unified
7004	.thumb
7005	.thumb_func
7006	.fpu softvfp
7007	.type	decrement_vpc_count, %function
7008decrement_vpc_count:
7009	.fnstart
7010	@ args = 0, pretend = 0, frame = 0
7011	@ frame_needed = 0, uses_anonymous_args = 0
7012	push	{r4, r5, r6, lr}
7013	.save {r4, r5, r6, lr}
7014	movw	r3, #65535
7015	ldr	r6, .L972
7016	mov	r4, r0
7017	cmp	r0, r3
7018	beq	.L964
7019	ldr	r3, [r6, #72]
7020	ldrh	r2, [r3, r0, lsl #1]
7021	cbnz	r2, .L965
7022	mov	r1, r0
7023	ldr	r0, .L972+4
7024	bl	sftl_printk
7025	ldr	r3, [r6, #72]
7026	ldrh	r5, [r3, r4, lsl #1]
7027	cbz	r5, .L966
7028.L970:
7029	movs	r5, #0
7030.L963:
7031	mov	r0, r5
7032	pop	{r4, r5, r6, pc}
7033.L966:
7034	movw	r2, #2853
7035.L971:
7036	ldr	r1, .L972+8
7037	ldr	r0, .L972+12
7038	bl	sftl_printk
7039	b	.L963
7040.L965:
7041	subs	r2, r2, #1
7042	strh	r2, [r3, r0, lsl #1]	@ movhi
7043.L964:
7044	ldrh	r0, [r6, #3438]
7045	movw	r3, #65535
7046	cmp	r0, r3
7047	bne	.L968
7048	strh	r4, [r6, #3438]	@ movhi
7049	b	.L970
7050.L968:
7051	cmp	r0, r4
7052	beq	.L970
7053	bl	update_vpc_list
7054	ldr	r2, [r6, #2516]
7055	ldr	r3, [r6, #2520]
7056	subs	r5, r0, #0
7057	strh	r4, [r6, #3438]	@ movhi
7058	sub	r3, r3, r2
7059	ldr	r2, .L972+16
7060	it	ne
7061	movne	r5, #1
7062	asrs	r3, r3, #1
7063	muls	r3, r2, r3
7064	ldr	r2, [r6, #72]
7065	uxth	r1, r3
7066	ldrh	r2, [r2, r1, lsl #1]
7067	cmp	r2, #0
7068	bne	.L963
7069	cmp	r1, r4
7070	beq	.L963
7071	movw	r2, #2869
7072	b	.L971
7073.L973:
7074	.align	2
7075.L972:
7076	.word	.LANCHOR0
7077	.word	.LC103
7078	.word	.LANCHOR1+312
7079	.word	.LC8
7080	.word	-1431655765
7081	.fnend
7082	.size	decrement_vpc_count, .-decrement_vpc_count
7083	.align	1
7084	.global	FtlSuperblockPowerLostFix
7085	.syntax unified
7086	.thumb
7087	.thumb_func
7088	.fpu softvfp
7089	.type	FtlSuperblockPowerLostFix, %function
7090FtlSuperblockPowerLostFix:
7091	.fnstart
7092	@ args = 0, pretend = 0, frame = 24
7093	@ frame_needed = 0, uses_anonymous_args = 0
7094	push	{r4, r5, r6, r7, r8, r9, lr}
7095	.save {r4, r5, r6, r7, r8, r9, lr}
7096	mvn	r2, #2
7097	ldr	r5, .L986
7098	.pad #28
7099	sub	sp, sp, #28
7100	mov	r9, #0
7101	mov	r3, sp
7102	mov	r4, r0
7103	bic	r8, r3, #8160
7104	bic	r8, r8, #31
7105	ldr	r7, [r5, #3332]
7106	str	r7, [sp, #12]
7107	ldr	r3, [r8, #24]
7108	str	r3, [sp, #20]
7109	mov	r3, #-1
7110	str	r3, [sp, #16]
7111	ldr	r3, [r5, #3300]
7112	str	r3, [sp, #8]
7113	mvn	r3, #1
7114	strd	r2, r3, [r7, #8]
7115	movw	r2, #61589
7116	ldrh	r3, [r0]
7117	strh	r3, [r7, #2]	@ movhi
7118	strh	r9, [r7]	@ movhi
7119	ldr	r3, [r5, #3300]
7120	str	r2, [r3]
7121	add	r2, r2, #304087040
7122	add	r2, r2, #1269760
7123	ldr	r3, [r5, #3300]
7124	addw	r2, r2, #1507
7125	str	r2, [r3, #4]
7126	ldrh	r6, [r0, #4]
7127	and	r6, r6, #1
7128	adds	r6, r6, #6
7129.L975:
7130	ldrh	r3, [r4, #4]
7131	cbz	r6, .L977
7132	cbnz	r3, .L976
7133.L977:
7134	ldrh	r1, [r4]
7135	ldr	r2, [r5, #72]
7136	ldrh	r0, [r4, #4]
7137	ldrh	r3, [r2, r1, lsl #1]
7138	subs	r3, r3, r0
7139	strh	r3, [r2, r1, lsl #1]	@ movhi
7140	ldr	r2, [sp, #20]
7141	ldrh	r3, [r5, #302]
7142	strh	r3, [r4, #2]	@ movhi
7143	movs	r3, #0
7144	strb	r3, [r4, #6]
7145	strh	r3, [r4, #4]	@ movhi
7146	ldr	r3, [r8, #24]
7147	cmp	r2, r3
7148	beq	.L981
7149	bl	__stack_chk_fail
7150.L976:
7151	mov	r0, r4
7152	bl	get_new_active_ppa
7153	str	r0, [sp, #4]
7154	adds	r0, r0, #1
7155	beq	.L977
7156	ldr	r3, [r5, #2592]
7157	movs	r1, #1
7158	str	r3, [r7, #4]
7159	mov	r0, sp
7160	adds	r2, r3, #1
7161	adds	r3, r3, #2
7162	it	eq
7163	moveq	r2, r9
7164	movs	r3, #0
7165	str	r2, [r5, #2592]
7166	mov	r2, r3
7167	bl	FlashProgPages
7168	ldrh	r0, [r4]
7169	subs	r6, r6, #1
7170	bl	decrement_vpc_count
7171	b	.L975
7172.L981:
7173	add	sp, sp, #28
7174	@ sp needed
7175	pop	{r4, r5, r6, r7, r8, r9, pc}
7176.L987:
7177	.align	2
7178.L986:
7179	.word	.LANCHOR0
7180	.fnend
7181	.size	FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
7182	.align	1
7183	.global	FtlMakeBbt
7184	.syntax unified
7185	.thumb
7186	.thumb_func
7187	.fpu softvfp
7188	.type	FtlMakeBbt, %function
7189FtlMakeBbt:
7190	.fnstart
7191	@ args = 0, pretend = 0, frame = 0
7192	@ frame_needed = 0, uses_anonymous_args = 0
7193	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
7194	.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
7195	mov	r8, #0
7196	ldr	r7, .L1007
7197	bl	FtlBbtMemInit
7198	sub	r9, r7, #16
7199	sub	r4, r7, #380
7200	add	fp, r7, #3072
7201	bl	FtlLoadFactoryBbt
7202.L989:
7203	ldrh	r3, [r4, #254]
7204	cmp	r3, r8
7205	bhi	.L995
7206	movs	r5, #0
7207.L996:
7208	ldrh	r3, [r4, #314]
7209	uxth	r0, r5
7210	cmp	r3, r0
7211	bhi	.L997
7212	ldrh	r5, [r4, #364]
7213	movw	r6, #65535
7214	subs	r5, r5, #1
7215	uxth	r5, r5
7216.L998:
7217	ldrh	r3, [r4, #364]
7218	subs	r3, r3, #48
7219	cmp	r5, r3
7220	ble	.L1002
7221	mov	r0, r5
7222	bl	FtlBbmIsBadBlock
7223	cmp	r0, #1
7224	beq	.L999
7225	mov	r0, r5
7226	bl	FlashTestBlk
7227	cmp	r0, #0
7228	beq	.L1000
7229	mov	r0, r5
7230	bl	FtlBbmMapBadBlock
7231.L999:
7232	subs	r5, r5, #1
7233	uxth	r5, r5
7234	b	.L998
7235.L995:
7236	ldrh	r5, [r9]
7237	movw	r3, #65535
7238	ldr	r0, [r4, #3300]
7239	ldr	r10, [r4, #3332]
7240	cmp	r5, r3
7241	str	r0, [r4, #3460]
7242	str	r10, [r4, #3464]
7243	beq	.L990
7244	ldrh	r3, [r4, #298]
7245	movs	r2, #1
7246	mov	r0, fp
7247	mov	r1, r2
7248	mla	r5, r8, r3, r5
7249	lsls	r3, r5, #10
7250	str	r3, [r4, #3456]
7251	bl	FlashReadPages
7252	ldrh	r2, [r4, #298]
7253	ldr	r1, [r4, #3460]
7254	adds	r2, r2, #7
7255	ldr	r0, [r7]
7256	lsrs	r2, r2, #3
7257	bl	ftl_memcpy
7258.L991:
7259	uxth	r0, r5
7260	add	r8, r8, #1
7261	adds	r7, r7, #4
7262	add	r9, r9, #2
7263	bl	FtlBbmMapBadBlock
7264	b	.L989
7265.L990:
7266	mov	r1, r8
7267	bl	FlashGetBadBlockList
7268	ldr	r1, [r7]
7269	ldr	r0, [r4, #3460]
7270	bl	FtlBbt2Bitmap
7271	ldrh	r6, [r4, #298]
7272.L993:
7273	subs	r6, r6, #1
7274	uxth	r6, r6
7275.L992:
7276	ldrh	r0, [r4, #298]
7277	smlabb	r0, r0, r8, r6
7278	uxth	r0, r0
7279	bl	FtlBbmIsBadBlock
7280	cmp	r0, #1
7281	beq	.L993
7282	movs	r2, #16
7283	movs	r1, #0
7284	ldr	r0, [r4, #3332]
7285	strh	r6, [r9]	@ movhi
7286	bl	ftl_memset
7287	mov	r2, #4096
7288	movs	r1, #0
7289	ldr	r0, [r4, #3300]
7290	bl	ftl_memset
7291	movw	r3, #61664
7292	strh	r3, [r10]	@ movhi
7293	movs	r3, #0
7294	str	r3, [r10, #4]
7295	ldrh	r3, [r4, #298]
7296	ldrh	r5, [r9]
7297	ldrh	r2, [r4, #3388]
7298	strh	r5, [r10, #2]	@ movhi
7299	ldr	r1, [r7]
7300	mla	r5, r8, r3, r5
7301	lsls	r2, r2, #2
7302	ldr	r0, [r4, #3460]
7303	lsls	r3, r5, #10
7304	str	r3, [r4, #3456]
7305	bl	ftl_memcpy
7306	movs	r2, #1
7307	mov	r0, fp
7308	mov	r1, r2
7309	bl	FlashEraseBlocks
7310	movs	r3, #1
7311	mov	r0, fp
7312	mov	r2, r3
7313	mov	r1, r3
7314	bl	FlashProgPages
7315	ldr	r3, [r4, #3452]
7316	uxth	r0, r5
7317	adds	r3, r3, #1
7318	bne	.L991
7319	bl	FtlBbmMapBadBlock
7320	b	.L992
7321.L997:
7322	adds	r5, r5, #1
7323	bl	FtlBbmMapBadBlock
7324	b	.L996
7325.L1000:
7326	ldrh	r3, [r4, #352]
7327	cmp	r3, r6
7328	bne	.L1001
7329	strh	r5, [r4, #352]	@ movhi
7330	b	.L999
7331.L1001:
7332	strh	r5, [r4, #356]	@ movhi
7333.L1002:
7334	ldr	r0, [r4, #3268]
7335	movs	r5, #0
7336	ldrh	r3, [r4, #352]
7337	movs	r1, #1
7338	str	r5, [r4, #360]
7339	movs	r2, #2
7340	strh	r5, [r4, #354]	@ movhi
7341	lsls	r3, r3, #10
7342	str	r3, [r0, #4]
7343	ldrh	r3, [r4, #356]
7344	lsls	r3, r3, #10
7345	str	r3, [r0, #24]
7346	bl	FlashEraseBlocks
7347	ldrh	r0, [r4, #352]
7348	bl	FtlBbmMapBadBlock
7349	ldrh	r0, [r4, #356]
7350	bl	FtlBbmMapBadBlock
7351	bl	FtlBbmTblFlush
7352	ldr	r3, [r4, #360]
7353	ldrh	r2, [r4, #356]
7354	adds	r3, r3, #1
7355	str	r3, [r4, #360]
7356	ldrh	r3, [r4, #352]
7357	strh	r5, [r4, #354]	@ movhi
7358	strh	r2, [r4, #352]	@ movhi
7359	strh	r3, [r4, #356]	@ movhi
7360	bl	FtlBbmTblFlush
7361	mov	r0, r5
7362	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
7363.L1008:
7364	.align	2
7365.L1007:
7366	.word	.LANCHOR0+380
7367	.fnend
7368	.size	FtlMakeBbt, .-FtlMakeBbt
7369	.align	1
7370	.global	ftl_memcmp
7371	.syntax unified
7372	.thumb
7373	.thumb_func
7374	.fpu softvfp
7375	.type	ftl_memcmp, %function
7376ftl_memcmp:
7377	.fnstart
7378	@ args = 0, pretend = 0, frame = 0
7379	@ frame_needed = 0, uses_anonymous_args = 0
7380	@ link register save eliminated.
7381	b	memcmp
7382	.fnend
7383	.size	ftl_memcmp, .-ftl_memcmp
7384	.align	1
7385	.global	js_hash
7386	.syntax unified
7387	.thumb
7388	.thumb_func
7389	.fpu softvfp
7390	.type	js_hash, %function
7391js_hash:
7392	.fnstart
7393	@ args = 0, pretend = 0, frame = 0
7394	@ frame_needed = 0, uses_anonymous_args = 0
7395	mov	r3, r0
7396	add	r1, r1, r0
7397	ldr	r0, .L1013
7398	push	{r4, lr}
7399	.save {r4, lr}
7400.L1011:
7401	cmp	r3, r1
7402	bne	.L1012
7403	pop	{r4, pc}
7404.L1012:
7405	lsrs	r2, r0, #2
7406	ldrb	r4, [r3], #1	@ zero_extendqisi2
7407	add	r2, r2, r0, lsl #5
7408	add	r2, r2, r4
7409	eors	r0, r0, r2
7410	b	.L1011
7411.L1014:
7412	.align	2
7413.L1013:
7414	.word	1204201446
7415	.fnend
7416	.size	js_hash, .-js_hash
7417	.section	.rodata.str1.1
7418.LC104:
7419	.ascii	"FtlMapWritePage error = %x \012\000"
7420.LC105:
7421	.ascii	"FtlMapWritePage error = %x error count = %d\012\000"
7422	.text
7423	.align	1
7424	.global	FtlMapWritePage
7425	.syntax unified
7426	.thumb
7427	.thumb_func
7428	.fpu softvfp
7429	.type	FtlMapWritePage, %function
7430FtlMapWritePage:
7431	.fnstart
7432	@ args = 0, pretend = 0, frame = 8
7433	@ frame_needed = 0, uses_anonymous_args = 0
7434	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
7435	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
7436	.pad #12
7437	mov	r4, r0
7438	ldr	r5, .L1039
7439	ldr	r10, .L1039+4
7440	mov	r8, r1
7441	lsl	fp, r1, #2
7442	str	r2, [sp, #4]
7443	movs	r6, #0
7444.L1016:
7445	ldr	r3, [r5, #2572]
7446	adds	r3, r3, #1
7447	str	r3, [r5, #2572]
7448	ldrh	r3, [r5, #304]
7449	ldrh	r2, [r4, #2]
7450	subs	r3, r3, #1
7451	cmp	r2, r3
7452	bge	.L1017
7453	ldrh	r2, [r4]
7454	movw	r3, #65535
7455	cmp	r2, r3
7456	bne	.L1018
7457.L1017:
7458	mov	r0, r4
7459	bl	Ftl_write_map_blk_to_last_page
7460.L1018:
7461	ldrh	r2, [r4]
7462	ldr	r3, [r4, #12]
7463	ldrh	r3, [r3, r2, lsl #1]
7464	cbnz	r3, .L1019
7465	ldr	r0, .L1039+8
7466	mov	r1, r10
7467	mov	r2, #700
7468	bl	sftl_printk
7469.L1019:
7470	ldrh	r2, [r4]
7471	ldrh	r3, [r4, #10]
7472	cmp	r2, r3
7473	bcc	.L1020
7474	ldr	r0, .L1039+8
7475	mov	r1, r10
7476	movw	r2, #701
7477	bl	sftl_printk
7478.L1020:
7479	ldrh	r2, [r4]
7480	movs	r1, #0
7481	ldr	r3, [r4, #12]
7482	ldr	r0, [r5, #3332]
7483	ldrh	r9, [r3, r2, lsl #1]
7484	ldrh	r2, [r4, #2]
7485	ldr	r3, [sp, #4]
7486	str	r3, [r5, #3460]
7487	orr	r2, r2, r9, lsl #10
7488	str	r2, [r5, #3456]
7489	movs	r2, #16
7490	str	r0, [r5, #3464]
7491	bl	ftl_memset
7492	ldr	r7, [r5, #3464]
7493	ldr	r2, [r4, #28]
7494	str	r2, [r7, #4]
7495	strh	r8, [r7, #8]	@ movhi
7496	ldrh	r2, [r4, #4]
7497	strh	r2, [r7]	@ movhi
7498	strh	r9, [r7, #2]	@ movhi
7499	ldrh	r1, [r5, #310]
7500	ldr	r0, [r5, #3460]
7501	bl	js_hash
7502	movs	r3, #1
7503	str	r0, [r7, #12]
7504	mov	r2, r3
7505	mov	r1, r3
7506	ldr	r0, .L1039+12
7507	bl	FlashProgPages
7508	ldrh	r3, [r4, #2]
7509	adds	r3, r3, #1
7510	strh	r3, [r4, #2]	@ movhi
7511	ldr	r3, [r5, #3452]
7512	adds	r3, r3, #1
7513	bne	.L1021
7514	ldr	r1, [r5, #3456]
7515	adds	r6, r6, #1
7516	ldr	r0, .L1039+16
7517	bl	sftl_printk
7518	ldrh	r3, [r4, #2]
7519	uxth	r6, r6
7520	cmp	r3, #2
7521	ittt	ls
7522	ldrhls	r3, [r5, #304]
7523	addls	r3, r3, #-1
7524	strhls	r3, [r4, #2]	@ movhi
7525	cmp	r6, #3
7526	bls	.L1023
7527	ldr	r1, [r5, #3456]
7528	mov	r2, r6
7529	ldr	r0, .L1039+20
7530	bl	sftl_printk
7531.L1024:
7532	b	.L1024
7533.L1023:
7534	ldr	r3, [r4, #32]
7535	cmp	r3, #0
7536	beq	.L1016
7537.L1026:
7538	b	.L1026
7539.L1021:
7540	ldr	r3, [r4, #24]
7541	ldr	r2, [r5, #3456]
7542	str	r2, [r3, fp]
7543	ldrh	r3, [r4, #2]
7544	cmp	r3, #1
7545	beq	.L1027
7546	ldr	r3, [r5, #3452]
7547	cmp	r3, #256
7548	beq	.L1027
7549	ldr	r2, [r4, #36]
7550	cbz	r2, .L1028
7551.L1027:
7552	movs	r3, #0
7553	str	r3, [r4, #36]
7554	b	.L1016
7555.L1028:
7556	adds	r3, r3, #1
7557	bne	.L1029
7558	ldr	r1, .L1039+4
7559	movw	r2, #745
7560	ldr	r0, .L1039+8
7561	bl	sftl_printk
7562.L1029:
7563	movs	r0, #0
7564	add	sp, sp, #12
7565	@ sp needed
7566	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
7567.L1040:
7568	.align	2
7569.L1039:
7570	.word	.LANCHOR0
7571	.word	.LANCHOR1+332
7572	.word	.LC8
7573	.word	.LANCHOR0+3452
7574	.word	.LC104
7575	.word	.LC105
7576	.fnend
7577	.size	FtlMapWritePage, .-FtlMapWritePage
7578	.section	.rodata.str1.1
7579.LC106:
7580	.ascii	"region_id = %x phyAddr = %x\012\000"
7581.LC107:
7582	.ascii	"map_ppn:\000"
7583.LC108:
7584	.ascii	"load_l2p_region refresh = %x phyAddr = %x\012\000"
7585	.text
7586	.align	1
7587	.global	load_l2p_region
7588	.syntax unified
7589	.thumb
7590	.thumb_func
7591	.fpu softvfp
7592	.type	load_l2p_region, %function
7593load_l2p_region:
7594	.fnstart
7595	@ args = 0, pretend = 0, frame = 0
7596	@ frame_needed = 0, uses_anonymous_args = 0
7597	push	{r4, r5, r6, r7, r8, lr}
7598	.save {r4, r5, r6, r7, r8, lr}
7599	mov	r5, r0
7600	ldr	r4, .L1050
7601	mov	r6, r1
7602	ldrh	r3, [r4, #336]
7603	cmp	r3, r0
7604	bcs	.L1042
7605	ldr	r1, .L1050+4
7606	movw	r2, #485
7607	ldr	r0, .L1050+8
7608	bl	sftl_printk
7609.L1042:
7610	ldr	r3, [r4, #3376]
7611	movs	r1, #12
7612	muls	r6, r1, r6
7613	ldr	r7, [r3, r5, lsl #2]
7614	ldr	r3, [r4, #2540]
7615	add	r3, r3, r6
7616	ldr	r0, [r3, #8]
7617	cbnz	r7, .L1043
7618	movs	r1, #255
7619	ldrh	r2, [r4, #310]
7620	bl	ftl_memset
7621	ldr	r3, [r4, #2540]
7622	strh	r5, [r3, r6]	@ movhi
7623	ldr	r1, [r4, #2540]
7624	add	r6, r6, r1
7625	str	r7, [r6, #4]
7626.L1044:
7627	movs	r0, #0
7628	pop	{r4, r5, r6, r7, r8, pc}
7629.L1043:
7630	ldr	r3, [r4, #3332]
7631	movs	r2, #1
7632	str	r0, [r4, #3460]
7633	mov	r1, r2
7634	ldr	r0, .L1050+12
7635	str	r3, [r4, #3464]
7636	str	r7, [r4, #3456]
7637	bl	FlashReadPages
7638	ldr	r8, [r4, #3464]
7639	ldrh	r3, [r8, #8]
7640	cmp	r3, r5
7641	beq	.L1045
7642	ldr	r0, .L1050+16
7643	mov	r2, r7
7644	mov	r1, r5
7645	bl	sftl_printk
7646	movs	r3, #4
7647	ldr	r1, [r4, #3464]
7648	mov	r2, r3
7649	ldr	r0, .L1050+20
7650	bl	rknand_print_hex
7651	ldrh	r3, [r4, #336]
7652	ldr	r1, [r4, #3376]
7653	movs	r2, #4
7654	ldr	r0, .L1050+24
7655	bl	rknand_print_hex
7656.L1046:
7657	ldrh	r3, [r8, #8]
7658	cmp	r3, r5
7659	beq	.L1048
7660	ldr	r1, .L1050+4
7661	mov	r2, #508
7662	ldr	r0, .L1050+8
7663	bl	sftl_printk
7664.L1048:
7665	ldr	r3, [r4, #2540]
7666	movs	r1, #0
7667	adds	r2, r3, r6
7668	str	r1, [r2, #4]
7669	strh	r5, [r3, r6]	@ movhi
7670	b	.L1044
7671.L1045:
7672	ldr	r3, [r4, #3452]
7673	cmp	r3, #256
7674	bne	.L1048
7675	mov	r2, r7
7676	mov	r1, r5
7677	ldr	r0, .L1050+28
7678	bl	sftl_printk
7679	ldr	r3, [r4, #2540]
7680	mov	r1, r5
7681	ldr	r0, .L1050+32
7682	add	r3, r3, r6
7683	ldr	r2, [r3, #8]
7684	bl	FtlMapWritePage
7685	b	.L1046
7686.L1051:
7687	.align	2
7688.L1050:
7689	.word	.LANCHOR0
7690	.word	.LANCHOR1+348
7691	.word	.LC8
7692	.word	.LANCHOR0+3452
7693	.word	.LC106
7694	.word	.LC94
7695	.word	.LC107
7696	.word	.LC108
7697	.word	.LANCHOR0+3392
7698	.fnend
7699	.size	load_l2p_region, .-load_l2p_region
7700	.align	1
7701	.global	ftl_map_blk_gc
7702	.syntax unified
7703	.thumb
7704	.thumb_func
7705	.fpu softvfp
7706	.type	ftl_map_blk_gc, %function
7707ftl_map_blk_gc:
7708	.fnstart
7709	@ args = 0, pretend = 0, frame = 8
7710	@ frame_needed = 0, uses_anonymous_args = 0
7711	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
7712	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
7713	.pad #12
7714	mov	r4, r0
7715	ldr	r5, .L1068
7716	ldr	r7, [r0, #12]
7717	ldr	r10, [r0, #24]
7718	bl	ftl_free_no_use_map_blk
7719	ldrh	r3, [r4, #10]
7720	ldrh	r2, [r4, #8]
7721	subs	r3, r3, #5
7722	cmp	r2, r3
7723	blt	.L1053
7724	uxth	r0, r0
7725	ldrh	r9, [r7, r0, lsl #1]
7726	cmp	r9, #0
7727	beq	.L1053
7728	ldr	r6, [r4, #32]
7729	cbnz	r6, .L1053
7730	movs	r3, #1
7731	str	r3, [r4, #32]
7732	strh	r6, [r7, r0, lsl #1]	@ movhi
7733	ldrh	r3, [r4, #8]
7734	ldrh	r2, [r4, #2]
7735	subs	r3, r3, #1
7736	strh	r3, [r4, #8]	@ movhi
7737	ldrh	r3, [r5, #304]
7738	cmp	r2, r3
7739	bcc	.L1055
7740	mov	r0, r4
7741	bl	ftl_map_blk_alloc_new_blk
7742.L1055:
7743	ldrh	r2, [r4, #6]
7744	uxth	fp, r6
7745	cmp	r2, fp
7746	bhi	.L1062
7747	mov	r0, r9
7748	movs	r1, #1
7749	bl	FtlFreeSysBlkQueueIn
7750	movs	r3, #0
7751	str	r3, [r4, #32]
7752.L1053:
7753	ldrh	r2, [r4, #2]
7754	ldrh	r3, [r5, #304]
7755	cmp	r2, r3
7756	bcc	.L1063
7757	mov	r0, r4
7758	bl	ftl_map_blk_alloc_new_blk
7759.L1063:
7760	movs	r0, #0
7761	add	sp, sp, #12
7762	@ sp needed
7763	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
7764.L1062:
7765	uxth	r7, r6
7766	add	r3, r10, r7, lsl #2
7767	str	r3, [sp, #4]
7768	ldr	r2, [r10, r7, lsl #2]
7769	cmp	r9, r2, lsr #10
7770	bne	.L1056
7771	ldr	r2, [r5, #3304]
7772	ldr	r8, [r5, #3332]
7773	str	r2, [r5, #3460]
7774	str	r8, [r5, #3464]
7775	ldr	r2, [r10, r7, lsl #2]
7776	str	r2, [r5, #3456]
7777	movs	r2, #1
7778	ldr	r0, .L1068+4
7779	mov	r1, r2
7780	bl	FlashReadPages
7781	ldrh	r2, [r8, #8]
7782	cmp	r2, fp
7783	beq	.L1057
7784	ldr	r1, .L1068+8
7785	movw	r2, #611
7786	ldr	r0, .L1068+12
7787	bl	sftl_printk
7788.L1057:
7789	ldr	r2, [r5, #3452]
7790	adds	r2, r2, #1
7791	bne	.L1058
7792.L1060:
7793	ldr	r2, [sp, #4]
7794	movs	r3, #0
7795	str	r3, [r2]
7796.L1059:
7797	b	.L1059
7798.L1058:
7799	ldrh	r2, [r8, #8]
7800	cmp	r2, fp
7801	bne	.L1060
7802	ldrh	r2, [r8]
7803	ldrh	r3, [r4, #4]
7804	cmp	r2, r3
7805	bne	.L1060
7806	ldr	r2, [r5, #3460]
7807	mov	r1, r7
7808	mov	r0, r4
7809	bl	FtlMapWritePage
7810.L1056:
7811	adds	r6, r6, #1
7812	b	.L1055
7813.L1069:
7814	.align	2
7815.L1068:
7816	.word	.LANCHOR0
7817	.word	.LANCHOR0+3452
7818	.word	.LANCHOR1+364
7819	.word	.LC8
7820	.fnend
7821	.size	ftl_map_blk_gc, .-ftl_map_blk_gc
7822	.align	1
7823	.global	Ftl_write_map_blk_to_last_page
7824	.syntax unified
7825	.thumb
7826	.thumb_func
7827	.fpu softvfp
7828	.type	Ftl_write_map_blk_to_last_page, %function
7829Ftl_write_map_blk_to_last_page:
7830	.fnstart
7831	@ args = 0, pretend = 0, frame = 0
7832	@ frame_needed = 0, uses_anonymous_args = 0
7833	push	{r4, r5, r6, r7, r8, lr}
7834	.save {r4, r5, r6, r7, r8, lr}
7835	movw	r2, #65535
7836	mov	r4, r0
7837	ldrh	r3, [r0]
7838	ldr	r5, [r0, #12]
7839	cmp	r3, r2
7840	bne	.L1071
7841	ldrh	r3, [r0, #8]
7842	cbz	r3, .L1072
7843	ldr	r1, .L1080
7844	movw	r2, #641
7845	ldr	r0, .L1080+4
7846	bl	sftl_printk
7847.L1072:
7848	ldrh	r3, [r4, #8]
7849	adds	r3, r3, #1
7850	strh	r3, [r4, #8]	@ movhi
7851	bl	FtlFreeSysBlkQueueOut
7852	strh	r0, [r5]	@ movhi
7853	movs	r3, #0
7854	str	r3, [r4]
7855	ldr	r3, [r4, #28]
7856	adds	r3, r3, #1
7857	str	r3, [r4, #28]
7858.L1073:
7859	movs	r0, #0
7860	pop	{r4, r5, r6, r7, r8, pc}
7861.L1071:
7862	ldrh	r7, [r5, r3, lsl #1]
7863	movs	r1, #255
7864	ldr	r5, .L1080+8
7865	ldrh	r3, [r0, #2]
7866	ldr	r8, [r0, #24]
7867	ldr	r6, [r5, #3332]
7868	orr	r3, r3, r7, lsl #10
7869	str	r3, [r5, #3456]
7870	ldr	r3, [r5, #3300]
7871	str	r3, [r5, #3460]
7872	ldr	r3, [r0, #28]
7873	str	r6, [r5, #3464]
7874	str	r3, [r6, #4]
7875	movw	r3, #64245
7876	strh	r3, [r6, #8]	@ movhi
7877	ldrh	r3, [r0, #4]
7878	strh	r3, [r6]	@ movhi
7879	strh	r7, [r6, #2]	@ movhi
7880	ldrh	r2, [r5, #304]
7881	ldr	r0, [r5, #3300]
7882	lsls	r2, r2, #3
7883	bl	ftl_memset
7884	movs	r2, #0
7885	mov	r3, r2
7886.L1074:
7887	ldrh	r0, [r4, #6]
7888	uxth	r1, r2
7889	cmp	r0, r1
7890	bhi	.L1076
7891	ldrh	r1, [r5, #310]
7892	ldr	r0, [r5, #3460]
7893	bl	js_hash
7894	movs	r2, #1
7895	str	r0, [r6, #12]
7896	mov	r1, r2
7897	movs	r3, #0
7898	ldr	r0, .L1080+12
7899	bl	FlashProgPages
7900	ldrh	r3, [r4, #2]
7901	mov	r0, r4
7902	adds	r3, r3, #1
7903	strh	r3, [r4, #2]	@ movhi
7904	bl	ftl_map_blk_gc
7905	b	.L1073
7906.L1076:
7907	uxth	r0, r2
7908	ldr	r1, [r8, r0, lsl #2]
7909	cmp	r7, r1, lsr #10
7910	bne	.L1075
7911	adds	r3, r3, #1
7912	ldr	r1, [r5, #3300]
7913	uxth	r3, r3
7914	str	r0, [r1, r3, lsl #3]
7915	ldr	r1, [r5, #3300]
7916	ldr	r0, [r8, r0, lsl #2]
7917	add	r1, r1, r3, lsl #3
7918	str	r0, [r1, #4]
7919.L1075:
7920	adds	r2, r2, #1
7921	b	.L1074
7922.L1081:
7923	.align	2
7924.L1080:
7925	.word	.LANCHOR1+379
7926	.word	.LC8
7927	.word	.LANCHOR0
7928	.word	.LANCHOR0+3452
7929	.fnend
7930	.size	Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
7931	.align	1
7932	.global	flush_l2p_region
7933	.syntax unified
7934	.thumb
7935	.thumb_func
7936	.fpu softvfp
7937	.type	flush_l2p_region, %function
7938flush_l2p_region:
7939	.fnstart
7940	@ args = 0, pretend = 0, frame = 0
7941	@ frame_needed = 0, uses_anonymous_args = 0
7942	push	{r3, r4, r5, lr}
7943	.save {r3, r4, r5, lr}
7944	movs	r4, #12
7945	ldr	r5, .L1083
7946	muls	r4, r0, r4
7947	add	r0, r5, #3392
7948	ldr	r3, [r5, #2540]
7949	adds	r2, r3, r4
7950	ldrh	r1, [r3, r4]
7951	ldr	r2, [r2, #8]
7952	bl	FtlMapWritePage
7953	ldr	r0, [r5, #2540]
7954	add	r4, r4, r0
7955	movs	r0, #0
7956	ldr	r3, [r4, #4]
7957	bic	r3, r3, #-2147483648
7958	str	r3, [r4, #4]
7959	pop	{r3, r4, r5, pc}
7960.L1084:
7961	.align	2
7962.L1083:
7963	.word	.LANCHOR0
7964	.fnend
7965	.size	flush_l2p_region, .-flush_l2p_region
7966	.align	1
7967	.global	log2phys
7968	.syntax unified
7969	.thumb
7970	.thumb_func
7971	.fpu softvfp
7972	.type	log2phys, %function
7973log2phys:
7974	.fnstart
7975	@ args = 0, pretend = 0, frame = 0
7976	@ frame_needed = 0, uses_anonymous_args = 0
7977	push	{r4, r5, r6, r7, r8, r9, r10, lr}
7978	.save {r4, r5, r6, r7, r8, r9, r10, lr}
7979	mov	r5, r0
7980	ldr	r9, .L1097
7981	mov	r6, r1
7982	mov	r7, r2
7983	ldrh	r4, [r9, #308]
7984	adds	r3, r4, #7
7985	movs	r4, #1
7986	lsls	r4, r4, r3
7987	subs	r4, r4, #1
7988	lsr	r8, r0, r3
7989	ands	r4, r4, r0
7990	ldr	r3, [r9, #2552]
7991	uxth	r8, r8
7992	uxth	r4, r4
7993	cmp	r3, r0
7994	bhi	.L1086
7995	ldr	r1, .L1097+4
7996	mov	r2, #820
7997	ldr	r0, .L1097+8
7998	bl	sftl_printk
7999	ldr	r3, [r9, #2552]
8000	cmp	r3, r5
8001	bhi	.L1086
8002	mov	r0, #-1
8003	cbnz	r7, .L1085
8004	str	r0, [r6]
8005.L1085:
8006	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
8007.L1092:
8008	adds	r3, r3, #1
8009	mul	r0, r10, r3
8010	ldrh	r0, [r2, r0]
8011	cmp	r0, r8
8012	bne	.L1088
8013.L1089:
8014	movs	r1, #12
8015	ldr	r3, [r9, #2540]
8016	muls	r5, r1, r5
8017	add	r3, r3, r5
8018	ldr	r3, [r3, #8]
8019	cbnz	r7, .L1090
8020	ldr	r3, [r3, r4, lsl #2]
8021	str	r3, [r6]
8022.L1091:
8023	ldr	r1, [r9, #2540]
8024	add	r5, r5, r1
8025	ldr	r3, [r5, #4]
8026	adds	r2, r3, #1
8027	beq	.L1095
8028	adds	r3, r3, #1
8029	str	r3, [r5, #4]
8030.L1095:
8031	movs	r0, #0
8032	b	.L1085
8033.L1090:
8034	ldr	r2, [r6]
8035	str	r2, [r3, r4, lsl #2]
8036	strh	r8, [r9, #2544]	@ movhi
8037	ldr	r3, [r9, #2540]
8038	add	r3, r3, r5
8039	ldr	r2, [r3, #4]
8040	orr	r2, r2, #-2147483648
8041	str	r2, [r3, #4]
8042	b	.L1091
8043.L1086:
8044	ldr	r2, [r9, #2540]
8045	movs	r3, #0
8046	ldrh	r1, [r9, #338]
8047	mov	r10, #12
8048	subs	r2, r2, #12
8049.L1088:
8050	uxth	r5, r3
8051	cmp	r1, r5
8052	bhi	.L1092
8053	bl	select_l2p_ram_region
8054	mul	r10, r10, r0
8055	ldr	r3, [r9, #2540]
8056	mov	r5, r0
8057	add	r2, r3, r10
8058	ldrh	r1, [r3, r10]
8059	movw	r3, #65535
8060	cmp	r1, r3
8061	beq	.L1093
8062	ldr	r3, [r2, #4]
8063	cmp	r3, #0
8064	bge	.L1093
8065	bl	flush_l2p_region
8066.L1093:
8067	mov	r1, r5
8068	mov	r0, r8
8069	bl	load_l2p_region
8070	b	.L1089
8071.L1098:
8072	.align	2
8073.L1097:
8074	.word	.LANCHOR0
8075	.word	.LANCHOR1+410
8076	.word	.LC8
8077	.fnend
8078	.size	log2phys, .-log2phys
8079	.align	1
8080	.global	FtlWriteDump_data
8081	.syntax unified
8082	.thumb
8083	.thumb_func
8084	.fpu softvfp
8085	.type	FtlWriteDump_data, %function
8086FtlWriteDump_data:
8087	.fnstart
8088	@ args = 0, pretend = 0, frame = 32
8089	@ frame_needed = 0, uses_anonymous_args = 0
8090	push	{r4, r5, r6, r7, r8, r9, r10, lr}
8091	.save {r4, r5, r6, r7, r8, r9, r10, lr}
8092	ldr	r4, .L1118
8093	.pad #32
8094	sub	sp, sp, #32
8095	mov	r3, sp
8096	bic	r8, r3, #8160
8097	bic	r8, r8, #31
8098	ldrh	r2, [r4, #28]
8099	ldr	r3, [r8, #24]
8100	str	r3, [sp, #28]
8101	cmp	r2, #0
8102	beq	.L1100
8103	ldrb	r3, [r4, #32]	@ zero_extendqisi2
8104	cmp	r3, #0
8105	bne	.L1100
8106	ldrb	r3, [r4, #31]	@ zero_extendqisi2
8107	ldrh	r1, [r4, #302]
8108	muls	r3, r1, r3
8109	cmp	r2, r3
8110	beq	.L1100
8111	ldrb	r6, [r4, #34]	@ zero_extendqisi2
8112	cbnz	r6, .L1099
8113	ldr	r7, [r4, #2552]
8114	mov	r2, r6
8115	add	r1, sp, #4
8116	ldrh	r9, [r4, #232]
8117	subs	r7, r7, #1
8118	mov	r0, r7
8119	bl	log2phys
8120	ldr	r5, [r4, #3332]
8121	ldr	r3, [sp, #4]
8122	ldr	r0, [r4, #3300]
8123	str	r3, [sp, #12]
8124	adds	r3, r3, #1
8125	str	r7, [sp, #24]
8126	str	r0, [sp, #16]
8127	str	r5, [sp, #20]
8128	str	r6, [r5, #4]
8129	beq	.L1102
8130	mov	r2, r6
8131	add	r0, sp, #8
8132	movs	r1, #1
8133	bl	FlashReadPages
8134.L1103:
8135	lsl	r6, r9, #2
8136	ldr	r9, .L1118+4
8137	movw	r3, #61589
8138	mov	r10, #0
8139	strh	r3, [r5]	@ movhi
8140.L1104:
8141	cbnz	r6, .L1108
8142.L1105:
8143	movs	r3, #1
8144.L1117:
8145	strb	r3, [r4, #34]
8146.L1099:
8147	ldr	r2, [sp, #28]
8148	ldr	r3, [r8, #24]
8149	cmp	r2, r3
8150	beq	.L1110
8151	bl	__stack_chk_fail
8152.L1102:
8153	ldrh	r2, [r4, #310]
8154	movs	r1, #255
8155	bl	ftl_memset
8156	b	.L1103
8157.L1108:
8158	ldrh	r3, [r4, #28]
8159	cmp	r3, #0
8160	beq	.L1105
8161	ldr	r3, [sp, #12]
8162	mov	r0, r9
8163	str	r3, [r5, #12]
8164	subs	r6, r6, #1
8165	ldrh	r3, [r4, #24]
8166	strh	r3, [r5, #2]	@ movhi
8167	str	r7, [r5, #8]
8168	bl	get_new_active_ppa
8169	ldr	r3, [r4, #2592]
8170	str	r0, [sp, #12]
8171	movs	r1, #1
8172	adds	r2, r3, #1
8173	str	r3, [r5, #4]
8174	adds	r3, r3, #2
8175	add	r0, sp, #8
8176	it	eq
8177	moveq	r2, r10
8178	movs	r3, #0
8179	str	r2, [r4, #2592]
8180	mov	r2, r3
8181	bl	FlashProgPages
8182	ldrh	r0, [r4, #24]
8183	bl	decrement_vpc_count
8184	b	.L1104
8185.L1100:
8186	movs	r3, #0
8187	b	.L1117
8188.L1110:
8189	add	sp, sp, #32
8190	@ sp needed
8191	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
8192.L1119:
8193	.align	2
8194.L1118:
8195	.word	.LANCHOR0
8196	.word	.LANCHOR0+24
8197	.fnend
8198	.size	FtlWriteDump_data, .-FtlWriteDump_data
8199	.align	1
8200	.global	FtlReUsePrevPpa
8201	.syntax unified
8202	.thumb
8203	.thumb_func
8204	.fpu softvfp
8205	.type	FtlReUsePrevPpa, %function
8206FtlReUsePrevPpa:
8207	.fnstart
8208	@ args = 0, pretend = 0, frame = 8
8209	@ frame_needed = 0, uses_anonymous_args = 0
8210	push	{r0, r1, r2, r4, r5, r6, r7, lr}
8211	.save {r4, r5, r6, r7, lr}
8212	.pad #12
8213	mov	r5, r0
8214	ldr	r6, .L1130
8215	ubfx	r0, r1, #10, #16
8216	str	r1, [sp, #4]
8217	bl	P2V_block_in_plane
8218	mov	r4, r0
8219	ldr	r3, [r6, #72]
8220	ldrh	r2, [r3, r0, lsl #1]
8221	cmp	r2, #0
8222	bne	.L1121
8223	ldr	r3, [r6, #2532]
8224	cbz	r3, .L1122
8225	ldr	r1, [r6, #2516]
8226	mov	ip, #6
8227	ldr	r0, .L1130+4
8228	movw	lr, #65535
8229	subs	r3, r3, r1
8230	ldrh	r7, [r6, #224]
8231	asrs	r3, r3, #1
8232	muls	r3, r0, r3
8233	uxth	r3, r3
8234.L1123:
8235	uxth	r0, r2
8236	cmp	r7, r0
8237	bls	.L1122
8238	cmp	r3, r4
8239	bne	.L1124
8240	ldr	r0, .L1130+8
8241	mov	r1, r4
8242	bl	List_remove_node
8243	ldrh	r3, [r6, #224]
8244	cbnz	r3, .L1125
8245	ldr	r1, .L1130+12
8246	movw	r2, #1742
8247	ldr	r0, .L1130+16
8248	bl	sftl_printk
8249.L1125:
8250	ldrh	r3, [r6, #224]
8251	mov	r0, r4
8252	subs	r3, r3, #1
8253	strh	r3, [r6, #224]	@ movhi
8254	bl	INSERT_DATA_LIST
8255	ldr	r2, [r6, #72]
8256	ldrh	r3, [r2, r4, lsl #1]
8257	adds	r3, r3, #1
8258	strh	r3, [r2, r4, lsl #1]	@ movhi
8259.L1122:
8260	add	r1, sp, #4
8261	mov	r0, r5
8262	movs	r2, #1
8263	bl	log2phys
8264	add	sp, sp, #12
8265	@ sp needed
8266	pop	{r4, r5, r6, r7, pc}
8267.L1124:
8268	mul	r3, ip, r3
8269	adds	r2, r2, #1
8270	ldrh	r3, [r1, r3]
8271	cmp	r3, lr
8272	bne	.L1123
8273	b	.L1122
8274.L1121:
8275	adds	r2, r2, #1
8276	strh	r2, [r3, r0, lsl #1]	@ movhi
8277	b	.L1122
8278.L1131:
8279	.align	2
8280.L1130:
8281	.word	.LANCHOR0
8282	.word	-1431655765
8283	.word	.LANCHOR0+2532
8284	.word	.LANCHOR1+419
8285	.word	.LC8
8286	.fnend
8287	.size	FtlReUsePrevPpa, .-FtlReUsePrevPpa
8288	.section	.rodata.str1.1
8289.LC109:
8290	.ascii	"data prev_ppa = %x error...................\012\000"
8291.LC110:
8292	.ascii	"spuer block %x vpn is 0\012 \000"
8293	.text
8294	.align	1
8295	.global	FtlRecoverySuperblock
8296	.syntax unified
8297	.thumb
8298	.thumb_func
8299	.fpu softvfp
8300	.type	FtlRecoverySuperblock, %function
8301FtlRecoverySuperblock:
8302	.fnstart
8303	@ args = 0, pretend = 0, frame = 48
8304	@ frame_needed = 0, uses_anonymous_args = 0
8305	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
8306	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
8307	movw	r1, #65535
8308	mov	r10, r0
8309	.pad #52
8310	sub	sp, sp, #52
8311	mov	r3, sp
8312	bic	r3, r3, #8160
8313	bic	r3, r3, #31
8314	ldr	r3, [r3, #24]
8315	str	r3, [sp, #44]
8316	ldrh	r3, [r0]
8317	cmp	r3, r1
8318	beq	.L1134
8319	ldr	r5, .L1264
8320	ldrh	r3, [r0, #2]
8321	str	r3, [sp]
8322	ldrb	r3, [r0, #6]	@ zero_extendqisi2
8323	ldrh	r2, [r5, #302]
8324	str	r3, [sp, #24]
8325	ldr	r3, [sp]
8326	cmp	r2, r3
8327	mov	r3, #0
8328	bne	.L1135
8329	strh	r3, [r0, #4]	@ movhi
8330	strh	r2, [r0, #2]	@ movhi
8331.L1262:
8332	strb	r3, [r10, #6]
8333.L1134:
8334	mov	r3, sp
8335	ldr	r2, [sp, #44]
8336	bic	r3, r3, #8160
8337	bic	r3, r3, #31
8338	ldr	r3, [r3, #24]
8339	cmp	r2, r3
8340	beq	.L1203
8341	bl	__stack_chk_fail
8342.L1135:
8343	ldrh	r0, [r0, #16]
8344.L1136:
8345	uxth	r6, r3
8346	cmp	r0, r1
8347	add	r3, r3, #1
8348	beq	.L1137
8349	movs	r1, #1
8350	bl	FtlGetLastWrittenPage
8351	mov	r4, r0
8352	adds	r0, r4, #1
8353	beq	.L1138
8354	ldr	r3, [r5, #3176]
8355	movs	r2, #0
8356	ldrh	fp, [r5, #232]
8357	movw	r9, #65535
8358	mov	lr, r3
8359	add	r3, r10, #16
8360	ldr	r0, [r5, #3288]
8361	mov	ip, r3
8362	ldrh	r6, [r5, #310]
8363	ldr	r8, [r5, #3180]
8364	ldrh	r7, [r5, #312]
8365	mov	r5, r2
8366	str	r3, [sp, #20]
8367.L1139:
8368	uxth	r3, r2
8369	cmp	fp, r3
8370	bhi	.L1145
8371	ldr	r6, .L1264
8372	movs	r2, #0
8373	mov	r1, r5
8374	movs	r7, #0
8375	bl	FlashReadPages
8376	movw	r9, #65535
8377	uxth	r2, r4
8378	str	r2, [sp, #8]
8379	ldr	r3, [r6, #2592]
8380	add	fp, r3, #-1
8381	ldr	r3, [r6, #3288]
8382	mov	r8, r3
8383.L1146:
8384	uxth	r2, r7
8385	cmp	r5, r2
8386	bhi	.L1151
8387	bne	.L1149
8388	adds	r2, r4, #1
8389	uxth	r2, r2
8390	str	r2, [sp, #8]
8391.L1256:
8392	ldr	r0, [r3, #4]
8393	ubfx	r0, r0, #10, #16
8394	bl	P2V_plane
8395	ldrh	r3, [r6, #302]
8396	ldr	r2, [sp, #8]
8397	str	r0, [sp, #4]
8398	cmp	r3, r2
8399	bne	.L1153
8400	movs	r3, #0
8401	strh	r2, [r10, #2]	@ movhi
8402	strb	r3, [r10, #6]
8403	strh	r3, [r10, #4]	@ movhi
8404.L1153:
8405	ldr	r3, [sp, #8]
8406	ldr	r2, [sp]
8407	cmp	r3, r2
8408	bne	.L1154
8409	ldr	r3, [sp, #4]
8410	ldr	r2, [sp, #24]
8411	cmp	r3, r2
8412	bne	.L1154
8413	ldr	r1, [sp, #8]
8414	mov	r2, r3
8415.L1263:
8416	mov	r0, r10
8417	bl	ftl_sb_update_avl_pages
8418	b	.L1134
8419.L1137:
8420	uxth	r2, r3
8421	adds	r2, r2, #8
8422	ldrh	r0, [r10, r2, lsl #1]
8423	b	.L1136
8424.L1138:
8425	ldr	r3, [sp]
8426	cbz	r3, .L1140
8427	ldr	r1, .L1264+4
8428	movw	r2, #1809
8429	ldr	r0, .L1264+8
8430	bl	sftl_printk
8431.L1140:
8432	ldr	r3, [sp, #24]
8433	cbz	r3, .L1141
8434	cmp	r3, r6
8435	beq	.L1141
8436	ldr	r1, .L1264+4
8437	movw	r2, #1810
8438	ldr	r0, .L1264+8
8439	bl	sftl_printk
8440.L1141:
8441	movs	r3, #0
8442	strh	r3, [r10, #2]	@ movhi
8443	b	.L1262
8444.L1145:
8445	ldrh	r3, [ip], #2
8446	cmp	r3, r9
8447	beq	.L1142
8448	movs	r1, #20
8449	orr	r3, r4, r3, lsl #10
8450	mla	r1, r1, r5, r0
8451	str	r3, [r1, #4]
8452	mov	r3, r6
8453	muls	r3, r5, r3
8454	it	mi
8455	addmi	r3, r3, #3
8456	bic	r3, r3, #3
8457	add	r3, r3, lr
8458	str	r3, [r1, #8]
8459	mov	r3, r7
8460	muls	r3, r5, r3
8461	add	r5, r5, #1
8462	it	mi
8463	addmi	r3, r3, #3
8464	uxth	r5, r5
8465	bic	r3, r3, #3
8466	add	r3, r3, r8
8467	str	r3, [r1, #12]
8468.L1142:
8469	adds	r2, r2, #1
8470	b	.L1139
8471.L1151:
8472	ldr	r2, [r8]
8473	cbnz	r2, .L1147
8474	ldr	r2, [r8, #12]
8475	str	r2, [sp, #4]
8476	ldr	r2, [r2, #4]
8477	adds	r1, r2, #1
8478	beq	.L1148
8479	ldr	r1, [r6, #2592]
8480	mov	r0, r2
8481	bl	ftl_cmp_data_ver
8482	cbz	r0, .L1148
8483	adds	r2, r2, #1
8484	str	r2, [r6, #2592]
8485.L1148:
8486	ldr	r2, [sp, #4]
8487	ldr	r2, [r2]
8488	adds	r2, r2, #1
8489	bne	.L1150
8490.L1149:
8491	uxth	r2, r4
8492	str	r2, [sp, #8]
8493	movs	r2, #20
8494	mla	r3, r2, r7, r3
8495	b	.L1256
8496.L1147:
8497	ldr	r9, [sp, #8]
8498.L1150:
8499	adds	r7, r7, #1
8500	add	r8, r8, #20
8501	b	.L1146
8502.L1154:
8503	movw	r3, #65535
8504	cmp	r9, r3
8505	bne	.L1155
8506	ldrb	r3, [r10, #8]	@ zero_extendqisi2
8507	cbnz	r3, .L1156
8508.L1155:
8509	ldr	r3, [r6, #3448]
8510	uxth	r2, r4
8511	uxth	r7, r4
8512	movw	r8, #65535
8513	adds	r3, r3, #1
8514	ldr	r3, [sp]
8515	it	eq
8516	streq	fp, [r6, #3448]
8517	adds	r3, r3, #7
8518	ldr	r6, .L1264
8519	cmp	r3, r2
8520	itet	lt
8521	sublt	r4, r4, #7
8522	ldrge	r4, [sp]
8523	uxthlt	r4, r4
8524.L1159:
8525	ldr	r0, [r6, #3288]
8526	cmp	r4, r7
8527	ldrh	ip, [r6, #232]
8528	bls	.L1205
8529	mov	r3, #-1
8530	str	r3, [r6, #3448]
8531.L1156:
8532	ldr	r4, .L1264
8533	movs	r3, #1
8534	ldr	r5, [sp]
8535	strh	r3, [r4, #3472]	@ movhi
8536.L1167:
8537	ldrh	r6, [r4, #232]
8538	movs	r3, #0
8539	ldr	r0, [r4, #3288]
8540	movw	r7, #65535
8541	ldr	r1, [sp, #20]
8542	mov	ip, #20
8543	str	r3, [sp, #12]
8544.L1168:
8545	uxth	r2, r3
8546	cmp	r6, r2
8547	bhi	.L1170
8548	ldr	r1, [sp, #12]
8549	movs	r2, #0
8550	bl	FlashReadPages
8551	movs	r3, #0
8552.L1261:
8553	str	r3, [sp, #16]
8554	ldr	r2, [sp, #12]
8555	ldrh	r3, [sp, #16]
8556	cmp	r2, r3
8557	bhi	.L1199
8558	adds	r5, r5, #1
8559	ldrh	r3, [r4, #302]
8560	uxth	r5, r5
8561	cmp	r3, r5
8562	bne	.L1167
8563	ldrh	r2, [r4, #232]
8564	movs	r3, #0
8565	strh	r5, [r10, #2]	@ movhi
8566	movw	r0, #65535
8567	strh	r3, [r10, #4]	@ movhi
8568.L1200:
8569	uxth	r1, r3
8570	cmp	r1, r2
8571	bcs	.L1134
8572	ldr	r1, [sp, #20]
8573	ldrh	r4, [r1], #2
8574	str	r1, [sp, #20]
8575	adds	r1, r3, #1
8576	cmp	r4, r0
8577	bne	.L1262
8578	mov	r3, r1
8579	b	.L1200
8580.L1161:
8581	ldrh	r2, [r1], #2
8582	cmp	r2, r8
8583	beq	.L1160
8584	mla	r9, lr, r5, r0
8585	adds	r5, r5, #1
8586	orr	r2, r4, r2, lsl #10
8587	uxth	r5, r5
8588	str	r2, [r9, #4]
8589.L1160:
8590	adds	r3, r3, #1
8591.L1166:
8592	uxth	r2, r3
8593	cmp	r2, ip
8594	bcc	.L1161
8595	mov	r1, r5
8596	movs	r2, #0
8597	bl	FlashReadPages
8598	ldr	r3, [r6, #3288]
8599	movs	r1, #0
8600.L1162:
8601	uxth	r2, r1
8602	cmp	r5, r2
8603	bhi	.L1165
8604	adds	r4, r4, #1
8605	uxth	r4, r4
8606	b	.L1159
8607.L1205:
8608	movs	r3, #0
8609	ldr	r1, [sp, #20]
8610	mov	r5, r3
8611	mov	lr, #20
8612	b	.L1166
8613.L1265:
8614	.align	2
8615.L1264:
8616	.word	.LANCHOR0
8617	.word	.LANCHOR1+435
8618	.word	.LC8
8619.L1165:
8620	ldr	r2, [r3]
8621	cmp	r2, #0
8622	bne	.L1156
8623	ldr	r2, [r3, #12]
8624	ldrh	r0, [r2]
8625	cmp	r0, r8
8626	beq	.L1164
8627	ldr	r2, [r2, #4]
8628	adds	r0, r2, #1
8629	it	ne
8630	strne	r2, [r6, #3448]
8631.L1164:
8632	adds	r1, r1, #1
8633	adds	r3, r3, #20
8634	b	.L1162
8635.L1170:
8636	ldrh	r2, [r1], #2
8637	cmp	r2, r7
8638	beq	.L1169
8639	ldr	lr, [sp, #12]
8640	orr	r2, r5, r2, lsl #10
8641	mla	lr, ip, lr, r0
8642	str	r2, [lr, #4]
8643	ldr	r2, [sp, #12]
8644	adds	r2, r2, #1
8645	uxth	r2, r2
8646	str	r2, [sp, #12]
8647.L1169:
8648	adds	r3, r3, #1
8649	b	.L1168
8650.L1199:
8651	ldr	r3, [sp, #16]
8652	movs	r6, #20
8653	ldr	r9, [r4, #3288]
8654	muls	r6, r3, r6
8655	ldr	r3, [sp]
8656	add	r8, r9, r6
8657	cmp	r5, r3
8658	ldr	r7, [r8, #4]
8659	str	r7, [sp, #40]
8660	bcc	.L1172
8661	ubfx	r0, r7, #10, #16
8662	bl	P2V_plane
8663	ldr	r3, [sp]
8664	cmp	r5, r3
8665	bne	.L1173
8666	ldr	r3, [sp, #24]
8667	cmp	r3, r0
8668	bhi	.L1172
8669.L1173:
8670	ldr	r3, [sp, #8]
8671	cmp	r5, r3
8672	bne	.L1174
8673	ldr	r3, [sp, #4]
8674	cmp	r3, r0
8675	bne	.L1174
8676	mov	r2, r3
8677	mov	r1, r5
8678	strb	r3, [r10, #6]
8679	strh	r5, [r10, #2]	@ movhi
8680	b	.L1263
8681.L1174:
8682	ldr	r3, [r9, r6]
8683	adds	r3, r3, #1
8684	beq	.L1175
8685	ldr	r8, [r8, #12]
8686	movw	r2, #61589
8687	ldrh	r3, [r8]
8688	cmp	r3, r2
8689	beq	.L1176
8690	ldrh	r0, [r10]
8691.L1258:
8692	bl	decrement_vpc_count
8693	b	.L1172
8694.L1176:
8695	ldr	fp, [r8, #4]
8696	cmp	fp, #-1
8697	beq	.L1178
8698	ldr	r1, [r4, #2592]
8699	mov	r0, fp
8700	bl	ftl_cmp_data_ver
8701	cbz	r0, .L1178
8702	add	r2, fp, #1
8703	str	r2, [r4, #2592]
8704	ldrh	r2, [r8]
8705	cmp	r2, r3
8706	beq	.L1178
8707	ldr	r1, .L1266
8708	movw	r2, #1961
8709	ldr	r0, .L1266+4
8710	bl	sftl_printk
8711.L1178:
8712	ldrd	r7, r3, [r8, #8]
8713	add	r1, sp, #36
8714	movs	r2, #0
8715	str	r3, [sp, #32]
8716	mov	r0, r7
8717	bl	log2phys
8718	ldr	r1, [r4, #3448]
8719	adds	r0, r1, #1
8720	beq	.L1180
8721	mov	r0, fp
8722	bl	ftl_cmp_data_ver
8723	cmp	r0, #0
8724	beq	.L1180
8725	ldr	r3, [sp, #32]
8726	adds	r1, r3, #1
8727	beq	.L1181
8728	ldr	r0, [r4, #3288]
8729	movs	r2, #0
8730	movs	r1, #1
8731	add	r0, r0, r6
8732	str	r3, [r0, #4]
8733	ldr	r8, [r0, #12]
8734	bl	FlashReadPages
8735	ldr	r3, [r4, #3288]
8736	add	r9, r3, r6
8737	ldr	r2, [r3, r6]
8738	adds	r2, r2, #1
8739	bne	.L1182
8740.L1183:
8741	mov	r3, #-1
8742	str	r3, [sp, #32]
8743.L1190:
8744	ldr	r0, [sp, #32]
8745	adds	r1, r0, #1
8746	beq	.L1172
8747	ubfx	r0, r0, #10, #16
8748	bl	P2V_block_in_plane
8749	ldrh	r3, [r4, #240]
8750	mov	r6, r0
8751	cmp	r3, r0
8752	bhi	.L1195
8753	ldr	r1, .L1266
8754	movw	r2, #2066
8755	ldr	r0, .L1266+4
8756	bl	sftl_printk
8757.L1195:
8758	ldr	r3, [r4, #72]
8759	ldrh	r3, [r3, r6, lsl #1]
8760	cmp	r3, #0
8761	beq	.L1196
8762	mov	r0, r6
8763	b	.L1258
8764.L1181:
8765	ldrd	r2, r3, [sp, #36]
8766	cmp	r2, r3
8767	bne	.L1172
8768	add	r1, sp, #32
8769	mov	r0, r7
8770	movs	r2, #1
8771	bl	log2phys
8772.L1172:
8773	ldr	r3, [sp, #16]
8774	adds	r3, r3, #1
8775	b	.L1261
8776.L1182:
8777	ldr	r2, [r8, #8]
8778	cmp	r2, r7
8779	bne	.L1183
8780	ldr	r1, [r8, #4]
8781	ldr	r0, [r4, #3448]
8782	str	r1, [sp, #28]
8783	bl	ftl_cmp_data_ver
8784	cmp	r0, #0
8785	beq	.L1183
8786	ldrd	r1, r0, [sp, #32]
8787	ldr	ip, [sp, #40]
8788	cmp	r0, ip
8789	bne	.L1185
8790	mov	r0, r2
8791.L1257:
8792	bl	FtlReUsePrevPpa
8793	b	.L1183
8794.L1185:
8795	cmp	r1, r0
8796	beq	.L1183
8797	adds	r2, r0, #1
8798	beq	.L1186
8799	str	r0, [r9, #4]
8800	movs	r2, #0
8801	mov	r0, r9
8802	movs	r1, #1
8803	ldr	r8, [r9, #12]
8804	bl	FlashReadPages
8805.L1187:
8806	ldr	r3, [r4, #3288]
8807	ldr	r3, [r3, r6]
8808	adds	r3, r3, #1
8809	beq	.L1188
8810	ldr	r3, [r8, #4]
8811	ldr	r0, [r4, #3448]
8812	mov	r1, r3
8813	bl	ftl_cmp_data_ver
8814	cbz	r0, .L1188
8815	ldr	r0, [sp, #28]
8816	mov	r1, r3
8817	bl	ftl_cmp_data_ver
8818	cmp	r0, #0
8819	beq	.L1183
8820.L1188:
8821	ldr	r1, [sp, #32]
8822	mov	r0, r7
8823	b	.L1257
8824.L1186:
8825	str	r0, [r3, r6]
8826	b	.L1187
8827.L1180:
8828	ldrd	r2, r3, [sp, #36]
8829	cmp	r2, r3
8830	beq	.L1190
8831	ldr	r1, [sp, #32]
8832	adds	r0, r1, #1
8833	beq	.L1192
8834	ldr	r3, [r4, #248]
8835	cmp	r3, r1, lsr #10
8836	bhi	.L1192
8837	ldr	r0, .L1266+8
8838.L1260:
8839	bl	sftl_printk
8840	b	.L1172
8841.L1192:
8842	add	r1, sp, #40
8843	mov	r0, r7
8844	movs	r2, #1
8845	bl	log2phys
8846	ldr	r8, [sp, #36]
8847	cmp	r8, #-1
8848	beq	.L1190
8849	ldr	r3, [sp, #32]
8850	cmp	r8, r3
8851	beq	.L1190
8852	ubfx	r0, r8, #10, #16
8853	bl	P2V_block_in_plane
8854	ldrh	r3, [r4, #24]
8855	cmp	r3, r0
8856	beq	.L1194
8857	ldrh	r3, [r4, #76]
8858	cmp	r3, r0
8859	beq	.L1194
8860	ldrh	r3, [r4, #124]
8861	cmp	r3, r0
8862	bne	.L1190
8863.L1194:
8864	ldr	r0, [r4, #3288]
8865	movs	r2, #0
8866	movs	r1, #1
8867	str	r8, [r0, #4]
8868	ldr	r6, [r0, #12]
8869	bl	FlashReadPages
8870	ldr	r3, [r4, #3288]
8871	ldr	r3, [r3]
8872	adds	r3, r3, #1
8873	beq	.L1190
8874	ldr	r1, [r6, #4]
8875	mov	r0, fp
8876	bl	ftl_cmp_data_ver
8877	cmp	r0, #0
8878	bne	.L1190
8879	add	r1, sp, #36
8880	mov	r0, r7
8881	movs	r2, #1
8882	bl	log2phys
8883	b	.L1190
8884.L1196:
8885	ldr	r0, .L1266+12
8886	mov	r1, r6
8887	b	.L1260
8888.L1175:
8889	ldr	r3, [r4, #3476]
8890	cmp	r3, #31
8891	itttt	ls
8892	addls	r2, r4, r3, lsl #2
8893	addls	r3, r3, #1
8894	strls	r3, [r4, #3476]
8895	strls	r7, [r2, #3480]
8896	ldrh	r0, [r10]
8897	bl	decrement_vpc_count
8898	ldr	r3, [r4, #3448]
8899	adds	r2, r3, #1
8900	bne	.L1198
8901.L1259:
8902	str	fp, [r4, #3448]
8903	b	.L1172
8904.L1198:
8905	cmp	r3, fp
8906	bls	.L1172
8907	b	.L1259
8908.L1203:
8909	movs	r0, #0
8910	add	sp, sp, #52
8911	@ sp needed
8912	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
8913.L1267:
8914	.align	2
8915.L1266:
8916	.word	.LANCHOR1+435
8917	.word	.LC8
8918	.word	.LC109
8919	.word	.LC110
8920	.fnend
8921	.size	FtlRecoverySuperblock, .-FtlRecoverySuperblock
8922	.section	.rodata.str1.1
8923.LC111:
8924	.ascii	"...%s enter...\012\000"
8925.LC112:
8926	.ascii	"FtlCheckVpc2 %x = %x  %x\012\000"
8927.LC113:
8928	.ascii	"free blk vpc error %x = %x  %x\012\000"
8929	.text
8930	.align	1
8931	.global	ftl_check_vpc
8932	.syntax unified
8933	.thumb
8934	.thumb_func
8935	.fpu softvfp
8936	.type	ftl_check_vpc, %function
8937ftl_check_vpc:
8938	.fnstart
8939	@ args = 0, pretend = 0, frame = 8
8940	@ frame_needed = 0, uses_anonymous_args = 0
8941	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
8942	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
8943	.pad #12
8944	movs	r4, #0
8945	ldr	r5, .L1293
8946	mov	r3, sp
8947	ldr	r7, .L1293+4
8948	bic	r6, r3, #8160
8949	ldr	r1, .L1293+8
8950	bic	r6, r6, #31
8951	ldr	r0, .L1293+12
8952	ldr	r3, [r6, #24]
8953	str	r3, [sp, #4]
8954	bl	sftl_printk
8955	ldr	r0, .L1293+4
8956	mov	r2, #8192
8957	movs	r1, #0
8958	bl	ftl_memset
8959.L1269:
8960	ldr	r3, [r5, #2552]
8961	cmp	r3, r4
8962	bhi	.L1271
8963	ldr	r9, .L1293+4
8964	movs	r4, #0
8965	ldr	fp, .L1293+16
8966	mov	r7, r4
8967	movw	r10, #65535
8968.L1272:
8969	ldrh	r2, [r5, #240]
8970	uxth	r3, r4
8971	cmp	r2, r3
8972	bhi	.L1274
8973	ldr	r4, [r5, #2532]
8974	cbz	r4, .L1275
8975	ldr	r1, [r5, #2516]
8976	mov	r9, #0
8977	ldrh	r8, [r5, #224]
8978	mov	fp, #6
8979	subs	r4, r4, r1
8980	ldr	r1, .L1293+20
8981	ldr	r10, .L1293+4
8982	asrs	r4, r4, #1
8983	ldr	r0, .L1293+24
8984	muls	r4, r1, r4
8985	uxth	r4, r4
8986.L1276:
8987	uxth	r3, r9
8988	cmp	r8, r3
8989	bls	.L1275
8990	ldr	r3, [r5, #72]
8991	ldrh	r2, [r3, r4, lsl #1]
8992	cbz	r2, .L1277
8993	ldrh	r3, [r10, r4, lsl #1]
8994	mov	r1, r4
8995	bl	sftl_printk
8996	ldr	r0, .L1293+24
8997	movs	r7, #1
8998.L1277:
8999	mul	r4, fp, r4
9000	ldr	r3, [r5, #2516]
9001	add	r9, r9, #1
9002	ldrh	r4, [r3, r4]
9003	movw	r3, #65535
9004	cmp	r4, r3
9005	bne	.L1276
9006.L1275:
9007	cbz	r7, .L1268
9008	ldr	r1, .L1293+8
9009	movw	r2, #2394
9010	ldr	r0, .L1293+28
9011	bl	sftl_printk
9012.L1268:
9013	ldr	r2, [sp, #4]
9014	ldr	r3, [r6, #24]
9015	cmp	r2, r3
9016	beq	.L1280
9017	bl	__stack_chk_fail
9018.L1271:
9019	mov	r1, sp
9020	mov	r0, r4
9021	movs	r2, #0
9022	bl	log2phys
9023	ldr	r0, [sp]
9024	adds	r3, r0, #1
9025	beq	.L1270
9026	ubfx	r0, r0, #10, #16
9027	bl	P2V_block_in_plane
9028	ldrh	r3, [r7, r0, lsl #1]
9029	adds	r3, r3, #1
9030	strh	r3, [r7, r0, lsl #1]	@ movhi
9031.L1270:
9032	adds	r4, r4, #1
9033	b	.L1269
9034.L1274:
9035	ldr	r3, [r5, #72]
9036	uxth	r8, r4
9037	ldrh	r2, [r3, r8, lsl #1]
9038	ldrh	r3, [r9, r8, lsl #1]
9039	cmp	r2, r3
9040	beq	.L1273
9041	mov	r1, r8
9042	mov	r0, fp
9043	bl	sftl_printk
9044	ldr	r3, [r5, #72]
9045	ldrh	r3, [r3, r8, lsl #1]
9046	cmp	r3, r10
9047	beq	.L1273
9048	ldrh	r2, [r9, r8, lsl #1]
9049	cmp	r2, r3
9050	it	hi
9051	movhi	r7, #1
9052.L1273:
9053	adds	r4, r4, #1
9054	b	.L1272
9055.L1280:
9056	add	sp, sp, #12
9057	@ sp needed
9058	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
9059.L1294:
9060	.align	2
9061.L1293:
9062	.word	.LANCHOR0
9063	.word	check_vpc_table
9064	.word	.LANCHOR1+457
9065	.word	.LC111
9066	.word	.LC112
9067	.word	-1431655765
9068	.word	.LC113
9069	.word	.LC8
9070	.fnend
9071	.size	ftl_check_vpc, .-ftl_check_vpc
9072	.section	.rodata.str1.1
9073.LC114:
9074	.ascii	"ftl_scan_all_data = %x\012\000"
9075.LC115:
9076	.ascii	"scan lpa = %x ppa= %x\012\000"
9077.LC116:
9078	.ascii	"lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
9079	.ascii	"\000"
9080	.text
9081	.align	1
9082	.global	ftl_scan_all_data
9083	.syntax unified
9084	.thumb
9085	.thumb_func
9086	.fpu softvfp
9087	.type	ftl_scan_all_data, %function
9088ftl_scan_all_data:
9089	.fnstart
9090	@ args = 0, pretend = 0, frame = 8
9091	@ frame_needed = 0, uses_anonymous_args = 0
9092	push	{r4, r5, r6, r7, r8, lr}
9093	.save {r4, r5, r6, r7, r8, lr}
9094	movs	r5, #0
9095	ldr	r4, .L1310
9096	.pad #32
9097	sub	sp, sp, #32
9098	ldr	r8, .L1310+4
9099	mov	r3, sp
9100	ldr	r0, .L1310+8
9101	bic	r6, r3, #8160
9102	movs	r1, #0
9103	bic	r6, r6, #31
9104	ldr	r3, [r6, #24]
9105	str	r3, [sp, #28]
9106	bl	sftl_printk
9107.L1296:
9108	ldr	r3, [r4, #2552]
9109	cmp	r3, r5
9110	bhi	.L1302
9111	ldr	r2, [sp, #28]
9112	ldr	r3, [r6, #24]
9113	cmp	r2, r3
9114	beq	.L1303
9115	bl	__stack_chk_fail
9116.L1302:
9117	add	r1, sp, #24
9118	mov	r0, r5
9119	movs	r2, #0
9120	bl	log2phys
9121	ubfx	r3, r5, #0, #11
9122	cbnz	r3, .L1297
9123	ldr	r2, [sp, #24]
9124	mov	r1, r5
9125	mov	r0, r8
9126	bl	sftl_printk
9127.L1297:
9128	ldr	r3, [sp, #24]
9129	adds	r2, r3, #1
9130	beq	.L1299
9131	ldr	r7, [r4, #3332]
9132	movs	r2, #0
9133	str	r3, [r4, #3456]
9134	movs	r1, #1
9135	ldr	r3, [r4, #3300]
9136	ldr	r0, .L1310+12
9137	str	r3, [r4, #3460]
9138	str	r5, [r4, #3468]
9139	str	r7, [r4, #3464]
9140	str	r2, [r4, #3452]
9141	bl	FlashReadPages
9142	ldr	r3, [r4, #3452]
9143	cmp	r3, #256
9144	beq	.L1300
9145	adds	r3, r3, #1
9146	beq	.L1300
9147	ldr	r3, [r7, #8]
9148	cmp	r3, r5
9149	beq	.L1299
9150.L1300:
9151	ldr	r2, [r4, #3460]
9152	ldr	r3, [r4, #3464]
9153	ldr	r0, .L1310+16
9154	ldr	r1, [r2, #4]
9155	str	r1, [sp, #16]
9156	mov	r1, r5
9157	ldr	r2, [r2]
9158	str	r2, [sp, #12]
9159	ldr	r2, [r3, #12]
9160	str	r2, [sp, #8]
9161	ldr	r2, [r3, #8]
9162	str	r2, [sp, #4]
9163	ldr	r2, [r3, #4]
9164	str	r2, [sp]
9165	ldr	r2, [r4, #3456]
9166	ldr	r3, [r3]
9167	bl	sftl_printk
9168.L1299:
9169	adds	r5, r5, #1
9170	b	.L1296
9171.L1303:
9172	add	sp, sp, #32
9173	@ sp needed
9174	pop	{r4, r5, r6, r7, r8, pc}
9175.L1311:
9176	.align	2
9177.L1310:
9178	.word	.LANCHOR0
9179	.word	.LC115
9180	.word	.LC114
9181	.word	.LANCHOR0+3452
9182	.word	.LC116
9183	.fnend
9184	.size	ftl_scan_all_data, .-ftl_scan_all_data
9185	.section	.rodata.str1.1
9186.LC117:
9187	.ascii	"FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000"
9188	.text
9189	.align	1
9190	.global	FtlGcScanTempBlk
9191	.syntax unified
9192	.thumb
9193	.thumb_func
9194	.fpu softvfp
9195	.type	FtlGcScanTempBlk, %function
9196FtlGcScanTempBlk:
9197	.fnstart
9198	@ args = 0, pretend = 0, frame = 48
9199	@ frame_needed = 0, uses_anonymous_args = 0
9200	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
9201	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
9202	mov	r5, r0
9203	.pad #52
9204	sub	sp, sp, #52
9205	mov	r3, sp
9206	bic	r3, r3, #8160
9207	bic	r3, r3, #31
9208	str	r1, [sp, #4]
9209	ldr	r3, [r3, #24]
9210	str	r3, [sp, #44]
9211	ldr	r3, .L1349
9212	ldrh	r6, [r3, #4]
9213	movw	r3, #65535
9214	cmp	r6, r3
9215	beq	.L1339
9216	cbz	r6, .L1314
9217.L1313:
9218	ldr	r3, .L1349+4
9219	ldr	r2, [sp, #4]
9220	ldrh	r3, [r3, #302]
9221	cmp	r3, r2
9222	bne	.L1315
9223.L1314:
9224	bl	FtlGcPageVarInit
9225.L1315:
9226	mov	r9, #0
9227.L1334:
9228	ldrh	r2, [r5]
9229	movs	r3, #0
9230	strb	r3, [r5, #8]
9231	movw	r3, #65535
9232	cmp	r2, r3
9233	beq	.L1316
9234	ldr	r4, .L1349+4
9235.L1317:
9236	ldr	r3, [r4, #3176]
9237	movs	r2, #0
9238	ldrh	ip, [r4, #232]
9239	add	lr, r5, #16
9240	ldr	r0, [r4, #3288]
9241	mov	r8, r3
9242	ldrh	fp, [r4, #310]
9243	mov	r7, r2
9244	ldr	r10, [r4, #3180]
9245	ldrh	r3, [r4, #312]
9246	str	r3, [sp, #8]
9247.L1318:
9248	uxth	r3, r2
9249	cmp	ip, r3
9250	bhi	.L1322
9251	mov	r10, #0
9252	mov	r1, r7
9253	movs	r2, #0
9254	bl	FlashReadPages
9255.L1323:
9256	uxth	r3, r10
9257	cmp	r7, r3
9258	bhi	.L1335
9259	ldr	r3, [sp, #4]
9260	adds	r6, r6, #1
9261	add	r9, r9, #1
9262	uxth	r6, r6
9263	cmp	r3, r9
9264	bhi	.L1336
9265	ldr	r2, .L1349
9266	movw	r1, #65535
9267	ldrh	r3, [r2, #4]
9268	cmp	r3, r1
9269	beq	.L1336
9270	add	r3, r3, r9
9271	strh	r3, [r2, #4]	@ movhi
9272	ldrh	r3, [r4, #302]
9273	cmp	r3, r6
9274	bls	.L1316
9275.L1337:
9276	mov	r3, sp
9277	ldr	r2, [sp, #44]
9278	bic	r3, r3, #8160
9279	bic	r3, r3, #31
9280	ldr	r3, [r3, #24]
9281	cmp	r2, r3
9282	beq	.L1338
9283	bl	__stack_chk_fail
9284.L1339:
9285	movs	r6, #0
9286	b	.L1313
9287.L1322:
9288	ldrh	r3, [lr], #2
9289	movw	r1, #65535
9290	cmp	r3, r1
9291	beq	.L1319
9292	movs	r1, #20
9293	orr	r3, r6, r3, lsl #10
9294	mla	r1, r1, r7, r0
9295	str	r3, [r1, #4]
9296	mov	r3, fp
9297	muls	r3, r7, r3
9298	it	mi
9299	addmi	r3, r3, #3
9300	bic	r3, r3, #3
9301	add	r3, r3, r8
9302	str	r3, [r1, #8]
9303	ldr	r3, [sp, #8]
9304	muls	r3, r7, r3
9305	add	r7, r7, #1
9306	it	mi
9307	addmi	r3, r3, #3
9308	uxth	r7, r7
9309	bic	r3, r3, #3
9310	add	r3, r3, r10
9311	str	r3, [r1, #12]
9312.L1319:
9313	adds	r2, r2, #1
9314	b	.L1318
9315.L1335:
9316	movs	r3, #20
9317	ldr	r2, [r4, #3288]
9318	mul	fp, r3, r10
9319	add	r1, r2, fp
9320	ldr	r2, [r2, fp]
9321	ldr	r3, [r1, #4]
9322	ldr	r8, [r1, #12]
9323	cmp	r2, #0
9324	bne	.L1324
9325	ldrh	r0, [r8]
9326	movw	r1, #65535
9327	cmp	r0, r1
9328	beq	.L1347
9329	ldr	r0, [r8, #8]
9330	ldr	r1, [r4, #2552]
9331	cmp	r0, r1
9332	bls	.L1326
9333.L1347:
9334	ldrh	r2, [r5]
9335	movs	r1, #0
9336	ldr	r3, [r4, #72]
9337	movs	r6, #0
9338	strh	r1, [r3, r2, lsl #1]	@ movhi
9339	ldrh	r0, [r5]
9340	bl	INSERT_FREE_LIST
9341	movw	r3, #65535
9342	strh	r3, [r5]	@ movhi
9343	strh	r3, [r4, #172]	@ movhi
9344	bl	FtlGcPageVarInit
9345	b	.L1334
9346.L1326:
9347	add	r1, sp, #20
9348	strd	r2, r3, [sp, #8]
9349	bl	log2phys
9350	ldr	r1, [r8, #12]
9351	ldr	r0, [sp, #20]
9352	ldrd	r2, r3, [sp, #8]
9353	cmp	r1, r0
9354	beq	.L1328
9355.L1330:
9356	ldr	r2, [r8, #8]
9357.L1348:
9358	ldr	r0, [r8, #12]
9359	mov	r1, r3
9360	add	r10, r10, #1
9361	bl	FtlGcUpdatePage
9362	b	.L1323
9363.L1328:
9364	adds	r0, r1, #1
9365	beq	.L1330
9366	str	r1, [sp, #28]
9367	add	r0, sp, #24
9368	ldr	r1, [r4, #3316]
9369	str	r1, [sp, #32]
9370	ldr	r1, [r4, #3336]
9371	str	r1, [sp, #36]
9372	movs	r1, #1
9373	str	r3, [sp, #12]
9374	str	r2, [sp, #8]
9375	bl	FlashReadPages
9376	ldr	r0, [r4, #3288]
9377	ldrh	r1, [r4, #258]
9378	add	fp, fp, r0
9379	ldr	r0, [sp, #32]
9380	ldrd	r2, r3, [sp, #8]
9381	lsls	r1, r1, #7
9382.L1331:
9383	cmp	r1, r2
9384	beq	.L1330
9385	ldr	ip, [fp, #8]
9386	ldr	lr, [ip, r2, lsl #2]
9387	ldr	ip, [r0, r2, lsl #2]
9388	cmp	lr, ip
9389	beq	.L1332
9390	ldr	r2, [sp, #28]
9391	ldrh	r1, [r5]
9392	ldr	r0, .L1349+8
9393	ldr	r4, .L1349+4
9394	bl	sftl_printk
9395	b	.L1347
9396.L1332:
9397	adds	r2, r2, #1
9398	b	.L1331
9399.L1324:
9400	mov	r2, #-1
9401	b	.L1348
9402.L1336:
9403	ldrh	r3, [r4, #302]
9404	cmp	r3, r6
9405	bhi	.L1317
9406.L1316:
9407	ldr	r3, .L1349
9408	movw	r2, #65535
9409	mov	r1, r6
9410	mov	r0, r5
9411	strh	r6, [r5, #2]	@ movhi
9412	strh	r2, [r3, #4]	@ movhi
9413	movs	r2, #0
9414	strb	r2, [r5, #6]
9415	bl	ftl_sb_update_avl_pages
9416	b	.L1337
9417.L1338:
9418	mov	r0, #-1
9419	add	sp, sp, #52
9420	@ sp needed
9421	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
9422.L1350:
9423	.align	2
9424.L1349:
9425	.word	.LANCHOR2
9426	.word	.LANCHOR0
9427	.word	.LC117
9428	.fnend
9429	.size	FtlGcScanTempBlk, .-FtlGcScanTempBlk
9430	.align	1
9431	.global	FtlReadRefresh
9432	.syntax unified
9433	.thumb
9434	.thumb_func
9435	.fpu softvfp
9436	.type	FtlReadRefresh, %function
9437FtlReadRefresh:
9438	.fnstart
9439	@ args = 0, pretend = 0, frame = 96
9440	@ frame_needed = 0, uses_anonymous_args = 0
9441	push	{r4, r5, r6, r7, r8, r9, r10, lr}
9442	.save {r4, r5, r6, r7, r8, r9, r10, lr}
9443	ldr	r4, .L1367
9444	.pad #96
9445	sub	sp, sp, #96
9446	mov	r3, sp
9447	bic	r6, r3, #8160
9448	bic	r6, r6, #31
9449	ldr	r9, [r4, #2720]
9450	ldr	r3, [r6, #24]
9451	str	r3, [sp, #92]
9452	ldr	r3, [r4, #2552]
9453	cmp	r9, #0
9454	beq	.L1352
9455	ldr	r2, [r4, #2724]
9456	cmp	r2, r3
9457	bcs	.L1353
9458	mov	r5, #2048
9459.L1358:
9460	ldr	r0, [r4, #2724]
9461	ldr	r3, [r4, #2552]
9462	cmp	r0, r3
9463	bcc	.L1354
9464.L1357:
9465	mov	r0, #-1
9466.L1351:
9467	ldr	r2, [sp, #92]
9468	ldr	r3, [r6, #24]
9469	cmp	r2, r3
9470	beq	.L1362
9471	bl	__stack_chk_fail
9472.L1354:
9473	add	r1, sp, #4
9474	movs	r2, #0
9475	bl	log2phys
9476	ldr	r3, [r4, #2724]
9477	ldr	r2, [sp, #4]
9478	adds	r3, r3, #1
9479	str	r3, [r4, #2724]
9480	adds	r1, r2, #1
9481	beq	.L1356
9482	str	r2, [sp, #12]
9483	add	r0, sp, #8
9484	str	r3, [sp, #24]
9485	movs	r2, #0
9486	ldr	r3, [r4, #3324]
9487	movs	r1, #1
9488	str	r3, [sp, #16]
9489	add	r3, sp, #28
9490	str	r2, [sp, #8]
9491	str	r3, [sp, #20]
9492	bl	FlashReadPages
9493	ldr	r3, [sp, #8]
9494	cmp	r3, #256
9495	bne	.L1357
9496	ldr	r0, [sp, #4]
9497	ubfx	r0, r0, #10, #16
9498	bl	P2V_block_in_plane
9499	bl	FtlGcRefreshBlock
9500	b	.L1357
9501.L1356:
9502	subs	r5, r5, #1
9503	bne	.L1358
9504	b	.L1357
9505.L1353:
9506	ldr	r3, [r4, #2556]
9507	movs	r0, #0
9508	str	r3, [r4, #2716]
9509	str	r0, [r4, #2720]
9510	str	r0, [r4, #2724]
9511	b	.L1351
9512.L1352:
9513	ldr	r8, [r4, #2556]
9514	movw	r5, #10000
9515	ldr	r1, [r4, #2612]
9516	ldr	r10, [r4, #2716]
9517	add	r2, r8, #1048576
9518	cmp	r1, r5
9519	ite	hi
9520	movhi	r5, #31
9521	movls	r5, #63
9522	ldrh	r7, [r4, #2496]
9523	cmp	r10, r2
9524	bhi	.L1361
9525	mov	r0, #1000
9526	lsrs	r1, r1, #10
9527	adds	r1, r1, #1
9528	muls	r0, r3, r0
9529	bl	__aeabi_uidiv
9530	add	r0, r0, r10
9531	cmp	r8, r0
9532	bhi	.L1361
9533	ands	r0, r5, r7
9534	bne	.L1364
9535	ldr	r3, [r4, #2740]
9536	cmp	r3, r7
9537	beq	.L1351
9538.L1361:
9539	movs	r3, #1
9540	movs	r0, #0
9541	str	r7, [r4, #2740]
9542	str	r3, [r4, #2720]
9543	str	r0, [r4, #2724]
9544	str	r8, [r4, #2716]
9545	b	.L1351
9546.L1364:
9547	mov	r0, r9
9548	b	.L1351
9549.L1362:
9550	add	sp, sp, #96
9551	@ sp needed
9552	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
9553.L1368:
9554	.align	2
9555.L1367:
9556	.word	.LANCHOR0
9557	.fnend
9558	.size	FtlReadRefresh, .-FtlReadRefresh
9559	.align	1
9560	.global	l2p_flush
9561	.syntax unified
9562	.thumb
9563	.thumb_func
9564	.fpu softvfp
9565	.type	l2p_flush, %function
9566l2p_flush:
9567	.fnstart
9568	@ args = 0, pretend = 0, frame = 0
9569	@ frame_needed = 0, uses_anonymous_args = 0
9570	push	{r4, r5, r6, lr}
9571	.save {r4, r5, r6, lr}
9572	movs	r4, #0
9573	ldr	r5, .L1373
9574	movs	r6, #12
9575	bl	FtlWriteDump_data
9576.L1370:
9577	ldrh	r3, [r5, #338]
9578	uxth	r0, r4
9579	cmp	r3, r0
9580	bhi	.L1372
9581	movs	r0, #0
9582	pop	{r4, r5, r6, pc}
9583.L1372:
9584	ldr	r3, [r5, #2540]
9585	uxth	r2, r4
9586	mla	r3, r6, r2, r3
9587	ldr	r3, [r3, #4]
9588	cmp	r3, #0
9589	bge	.L1371
9590	bl	flush_l2p_region
9591.L1371:
9592	adds	r4, r4, #1
9593	b	.L1370
9594.L1374:
9595	.align	2
9596.L1373:
9597	.word	.LANCHOR0
9598	.fnend
9599	.size	l2p_flush, .-l2p_flush
9600	.align	1
9601	.global	FtlVendorPartWrite
9602	.syntax unified
9603	.thumb
9604	.thumb_func
9605	.fpu softvfp
9606	.type	FtlVendorPartWrite, %function
9607FtlVendorPartWrite:
9608	.fnstart
9609	@ args = 0, pretend = 0, frame = 104
9610	@ frame_needed = 0, uses_anonymous_args = 0
9611	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
9612	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
9613	mov	fp, r2
9614	ldr	r4, .L1388
9615	.pad #108
9616	sub	sp, sp, #108
9617	adds	r2, r0, r1
9618	mov	r3, sp
9619	mov	r7, r0
9620	bic	r10, r3, #8160
9621	mov	r5, r1
9622	bic	r10, r10, #31
9623	ldrh	r8, [r4, #308]
9624	ldr	r3, [r10, #24]
9625	lsr	r8, r0, r8
9626	str	r3, [sp, #100]
9627	ldrh	r3, [r4, #296]
9628	cmp	r2, r3
9629	bhi	.L1384
9630	mov	r9, #0
9631.L1377:
9632	cbnz	r5, .L1382
9633.L1375:
9634	ldr	r2, [sp, #100]
9635	ldr	r3, [r10, #24]
9636	cmp	r2, r3
9637	beq	.L1383
9638	bl	__stack_chk_fail
9639.L1382:
9640	ldr	r3, [r4, #3372]
9641	mov	r0, r7
9642	ldr	r2, [r3, r8, lsl #2]
9643	ldrh	r3, [r4, #258]
9644	str	r2, [sp, #12]
9645	mov	r1, r3
9646	str	r3, [sp, #8]
9647	bl	__aeabi_uidivmod
9648	ldr	r3, [sp, #8]
9649	ldr	r2, [sp, #12]
9650	subs	r6, r3, r1
9651	ldr	r0, [r4, #3308]
9652	str	r1, [sp, #4]
9653	uxth	r6, r6
9654	cmp	r6, r5
9655	it	hi
9656	uxthhi	r6, r5
9657	cbz	r2, .L1379
9658	cmp	r3, r6
9659	beq	.L1379
9660	strd	r2, r0, [sp, #20]
9661	movs	r2, #1
9662	add	r0, sp, #16
9663	mov	r1, r2
9664	add	r3, sp, #36
9665	str	r3, [sp, #28]
9666	bl	FlashReadPages
9667.L1380:
9668	lsls	r3, r6, #9
9669	ldr	r0, [r4, #3308]
9670	mov	r2, r3
9671	str	r3, [sp, #8]
9672	ldr	r3, [sp, #4]
9673	mov	r1, fp
9674	subs	r5, r5, r6
9675	add	r7, r7, r6
9676	add	r0, r0, r3, lsl #9
9677	bl	ftl_memcpy
9678	mov	r1, r8
9679	ldr	r2, [r4, #3308]
9680	add	r8, r8, #1
9681	ldr	r0, .L1388+4
9682	bl	FtlMapWritePage
9683	ldr	r3, [sp, #8]
9684	adds	r0, r0, #1
9685	add	fp, fp, r3
9686	it	eq
9687	moveq	r9, #-1
9688	b	.L1377
9689.L1379:
9690	ldrh	r2, [r4, #310]
9691	movs	r1, #0
9692	bl	ftl_memset
9693	b	.L1380
9694.L1384:
9695	mov	r9, #-1
9696	b	.L1375
9697.L1383:
9698	mov	r0, r9
9699	add	sp, sp, #108
9700	@ sp needed
9701	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
9702.L1389:
9703	.align	2
9704.L1388:
9705	.word	.LANCHOR0
9706	.word	.LANCHOR0+3608
9707	.fnend
9708	.size	FtlVendorPartWrite, .-FtlVendorPartWrite
9709	.align	1
9710	.global	Ftl_save_ext_data
9711	.syntax unified
9712	.thumb
9713	.thumb_func
9714	.fpu softvfp
9715	.type	Ftl_save_ext_data, %function
9716Ftl_save_ext_data:
9717	.fnstart
9718	@ args = 0, pretend = 0, frame = 0
9719	@ frame_needed = 0, uses_anonymous_args = 0
9720	@ link register save eliminated.
9721	ldr	r2, .L1392
9722	ldr	r3, .L1392+4
9723	ldr	r1, [r2, #2640]
9724	cmp	r1, r3
9725	bne	.L1390
9726	ldr	r3, .L1392+8
9727	add	r2, r2, #2640
9728	str	r3, [r2, #4]
9729	movs	r1, #1
9730	ldr	r3, [r2, #-60]
9731	movs	r0, #0
9732	str	r3, [r2, #88]
9733	ldr	r3, [r2, #-56]
9734	str	r3, [r2, #92]
9735	ldr	r3, [r2, #-64]
9736	str	r3, [r2, #8]
9737	ldr	r3, [r2, #-76]
9738	str	r3, [r2, #12]
9739	ldr	r3, [r2, #-84]
9740	str	r3, [r2, #16]
9741	ldr	r3, [r2, #-68]
9742	str	r3, [r2, #20]
9743	ldr	r3, [r2, #-40]
9744	str	r3, [r2, #28]
9745	ldr	r3, [r2, #-32]
9746	str	r3, [r2, #32]
9747	ldr	r3, [r2, #-80]
9748	str	r3, [r2, #36]
9749	ldr	r3, [r2, #-72]
9750	str	r3, [r2, #40]
9751	ldr	r3, [r2, #-28]
9752	str	r3, [r2, #44]
9753	ldr	r3, [r2, #-24]
9754	str	r3, [r2, #48]
9755	b	FtlVendorPartWrite
9756.L1390:
9757	bx	lr
9758.L1393:
9759	.align	2
9760.L1392:
9761	.word	.LANCHOR0
9762	.word	1179929683
9763	.word	1342177367
9764	.fnend
9765	.size	Ftl_save_ext_data, .-Ftl_save_ext_data
9766	.align	1
9767	.global	FtlEctTblFlush
9768	.syntax unified
9769	.thumb
9770	.thumb_func
9771	.fpu softvfp
9772	.type	FtlEctTblFlush, %function
9773FtlEctTblFlush:
9774	.fnstart
9775	@ args = 0, pretend = 0, frame = 0
9776	@ frame_needed = 0, uses_anonymous_args = 0
9777	ldr	r3, .L1399
9778	push	{r4, lr}
9779	.save {r4, lr}
9780	ldrh	r2, [r3, #3652]
9781	cmp	r2, #31
9782	itt	ls
9783	addls	r2, r2, #1
9784	strhls	r2, [r3, #3652]	@ movhi
9785	ldr	r2, [r3, #3348]
9786	ite	ls
9787	movls	r1, #1
9788	movhi	r1, #32
9789	ldr	r4, [r2, #16]
9790	cbnz	r0, .L1396
9791	ldr	r0, [r2, #20]
9792	add	r1, r1, r0
9793	cmp	r1, r4
9794	bhi	.L1397
9795.L1396:
9796	ldr	r1, .L1399+4
9797	movs	r0, #64
9798	str	r1, [r2]
9799	str	r4, [r2, #20]
9800	ldrh	r1, [r3, #3340]
9801	ldr	r2, [r3, #3348]
9802	lsls	r3, r1, #9
9803	str	r3, [r2, #12]
9804	ldr	r3, [r2, #8]
9805	adds	r3, r3, #1
9806	str	r3, [r2, #8]
9807	movs	r3, #0
9808	str	r3, [r2, #4]
9809	bl	FtlVendorPartWrite
9810	bl	Ftl_save_ext_data
9811.L1397:
9812	movs	r0, #0
9813	pop	{r4, pc}
9814.L1400:
9815	.align	2
9816.L1399:
9817	.word	.LANCHOR0
9818	.word	1112818501
9819	.fnend
9820	.size	FtlEctTblFlush, .-FtlEctTblFlush
9821	.align	1
9822	.global	sftl_vendor_write
9823	.syntax unified
9824	.thumb
9825	.thumb_func
9826	.fpu softvfp
9827	.type	sftl_vendor_write, %function
9828sftl_vendor_write:
9829	.fnstart
9830	@ args = 0, pretend = 0, frame = 0
9831	@ frame_needed = 0, uses_anonymous_args = 0
9832	@ link register save eliminated.
9833	add	r0, r0, #256
9834	b	FtlVendorPartWrite
9835	.fnend
9836	.size	sftl_vendor_write, .-sftl_vendor_write
9837	.section	.rodata.str1.1
9838.LC118:
9839	.ascii	"FtlVendorPartRead refresh = %x phyAddr = %x\012\000"
9840	.text
9841	.align	1
9842	.global	FtlVendorPartRead
9843	.syntax unified
9844	.thumb
9845	.thumb_func
9846	.fpu softvfp
9847	.type	FtlVendorPartRead, %function
9848FtlVendorPartRead:
9849	.fnstart
9850	@ args = 0, pretend = 0, frame = 104
9851	@ frame_needed = 0, uses_anonymous_args = 0
9852	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
9853	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
9854	mov	r9, r2
9855	ldr	r5, .L1413
9856	.pad #108
9857	sub	sp, sp, #108
9858	adds	r2, r0, r1
9859	mov	r3, sp
9860	mov	r8, r0
9861	bic	r3, r3, #8160
9862	mov	r6, r1
9863	bic	r3, r3, #31
9864	ldrh	r7, [r5, #308]
9865	str	r3, [sp, #4]
9866	ldr	r3, [r3, #24]
9867	lsr	r7, r0, r7
9868	str	r3, [sp, #100]
9869	ldrh	r3, [r5, #296]
9870	cmp	r2, r3
9871	bhi	.L1412
9872	mov	r10, #0
9873.L1404:
9874	cbnz	r6, .L1410
9875.L1402:
9876	ldr	r3, [sp, #4]
9877	ldr	r2, [sp, #100]
9878	ldr	r3, [r3, #24]
9879	cmp	r2, r3
9880	beq	.L1411
9881	bl	__stack_chk_fail
9882.L1410:
9883	ldr	r3, [r5, #3372]
9884	mov	r0, r8
9885	ldrh	r4, [r5, #258]
9886	ldr	r3, [r3, r7, lsl #2]
9887	mov	r1, r4
9888	str	r3, [sp, #12]
9889	bl	__aeabi_uidivmod
9890	subs	r4, r4, r1
9891	ldr	r3, [sp, #12]
9892	str	r1, [sp, #8]
9893	uxth	r4, r4
9894	cmp	r4, r6
9895	it	hi
9896	uxthhi	r4, r6
9897	lsl	fp, r4, #9
9898	cbz	r3, .L1406
9899	ldr	r2, [r5, #3308]
9900	add	r0, sp, #16
9901	str	r2, [sp, #24]
9902	add	r2, sp, #36
9903	str	r2, [sp, #28]
9904	movs	r2, #1
9905	mov	r1, r2
9906	str	r3, [sp, #20]
9907	str	r3, [sp, #12]
9908	bl	FlashReadPages
9909	ldr	r2, [sp, #16]
9910	ldr	r3, [sp, #12]
9911	adds	r2, r2, #1
9912	ldr	r2, [r5, #3452]
9913	it	eq
9914	moveq	r10, #-1
9915	cmp	r2, #256
9916	bne	.L1408
9917	ldr	r0, .L1413+4
9918	mov	r2, r3
9919	mov	r1, r7
9920	bl	sftl_printk
9921	ldr	r2, [r5, #3308]
9922	ldr	r0, .L1413+8
9923	mov	r1, r7
9924	bl	FtlMapWritePage
9925.L1408:
9926	ldr	r1, [r5, #3308]
9927	mov	r2, fp
9928	ldr	r3, [sp, #8]
9929	mov	r0, r9
9930	add	r1, r1, r3, lsl #9
9931	bl	ftl_memcpy
9932.L1409:
9933	adds	r7, r7, #1
9934	subs	r6, r6, r4
9935	add	r8, r8, r4
9936	add	r9, r9, fp
9937	b	.L1404
9938.L1406:
9939	mov	r2, fp
9940	mov	r1, r3
9941	mov	r0, r9
9942	bl	ftl_memset
9943	b	.L1409
9944.L1412:
9945	mov	r10, #-1
9946	b	.L1402
9947.L1411:
9948	mov	r0, r10
9949	add	sp, sp, #108
9950	@ sp needed
9951	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
9952.L1414:
9953	.align	2
9954.L1413:
9955	.word	.LANCHOR0
9956	.word	.LC118
9957	.word	.LANCHOR0+3608
9958	.fnend
9959	.size	FtlVendorPartRead, .-FtlVendorPartRead
9960	.section	.rodata.str1.1
9961.LC119:
9962	.ascii	"no ect\000"
9963	.text
9964	.align	1
9965	.global	FtlLoadEctTbl
9966	.syntax unified
9967	.thumb
9968	.thumb_func
9969	.fpu softvfp
9970	.type	FtlLoadEctTbl, %function
9971FtlLoadEctTbl:
9972	.fnstart
9973	@ args = 0, pretend = 0, frame = 0
9974	@ frame_needed = 0, uses_anonymous_args = 0
9975	push	{r4, lr}
9976	.save {r4, lr}
9977	movs	r0, #64
9978	ldr	r4, .L1417
9979	ldr	r2, [r4, #3348]
9980	ldrh	r1, [r4, #3340]
9981	bl	FtlVendorPartRead
9982	ldr	r3, [r4, #3348]
9983	ldr	r2, [r3]
9984	ldr	r3, .L1417+4
9985	cmp	r2, r3
9986	beq	.L1416
9987	ldr	r1, .L1417+8
9988	ldr	r0, .L1417+12
9989	bl	sftl_printk
9990	ldrh	r2, [r4, #3340]
9991	ldr	r0, [r4, #3348]
9992	movs	r1, #0
9993	lsls	r2, r2, #9
9994	bl	ftl_memset
9995.L1416:
9996	movs	r0, #0
9997	pop	{r4, pc}
9998.L1418:
9999	.align	2
10000.L1417:
10001	.word	.LANCHOR0
10002	.word	1112818501
10003	.word	.LC119
10004	.word	.LC77
10005	.fnend
10006	.size	FtlLoadEctTbl, .-FtlLoadEctTbl
10007	.align	1
10008	.global	Ftl_load_ext_data
10009	.syntax unified
10010	.thumb
10011	.thumb_func
10012	.fpu softvfp
10013	.type	Ftl_load_ext_data, %function
10014Ftl_load_ext_data:
10015	.fnstart
10016	@ args = 0, pretend = 0, frame = 0
10017	@ frame_needed = 0, uses_anonymous_args = 0
10018	push	{r3, r4, r5, lr}
10019	.save {r3, r4, r5, lr}
10020	movs	r1, #1
10021	ldr	r4, .L1421
10022	movs	r0, #0
10023	ldr	r5, .L1421+4
10024	add	r2, r4, #2640
10025	bl	FtlVendorPartRead
10026	ldr	r3, [r4, #2640]
10027	cmp	r3, r5
10028	beq	.L1420
10029	add	r0, r4, #2640
10030	mov	r2, #512
10031	movs	r1, #0
10032	bl	ftl_memset
10033	str	r5, [r4, #2640]
10034.L1420:
10035	ldr	r3, [r4, #2728]
10036	ldr	r2, [r4, #2672]
10037	str	r3, [r4, #2580]
10038	ldr	r3, [r4, #2732]
10039	str	r3, [r4, #2584]
10040	str	r2, [r4, #2608]
10041	ldr	r3, [r4, #2648]
10042	ldr	r2, [r4, #2676]
10043	str	r3, [r4, #2576]
10044	str	r2, [r4, #2560]
10045	ldr	r3, [r4, #2652]
10046	ldr	r2, [r4, #2680]
10047	str	r3, [r4, #2564]
10048	str	r2, [r4, #2568]
10049	ldr	r3, [r4, #2656]
10050	ldr	r2, [r4, #2684]
10051	str	r3, [r4, #2556]
10052	str	r2, [r4, #2612]
10053	ldr	r3, [r4, #2660]
10054	ldr	r2, [r4, #2688]
10055	str	r3, [r4, #2572]
10056	str	r2, [r4, #2616]
10057	ldr	r3, [r4, #2668]
10058	ldrh	r2, [r4, #292]
10059	ldr	r0, [r4, #2596]
10060	ldrh	r1, [r4, #240]
10061	str	r3, [r4, #2600]
10062	mla	r0, r0, r2, r3
10063	bl	__aeabi_uidiv
10064	str	r0, [r4, #2604]
10065	pop	{r3, r4, r5, pc}
10066.L1422:
10067	.align	2
10068.L1421:
10069	.word	.LANCHOR0
10070	.word	1179929683
10071	.fnend
10072	.size	Ftl_load_ext_data, .-Ftl_load_ext_data
10073	.align	1
10074	.global	sftl_vendor_read
10075	.syntax unified
10076	.thumb
10077	.thumb_func
10078	.fpu softvfp
10079	.type	sftl_vendor_read, %function
10080sftl_vendor_read:
10081	.fnstart
10082	@ args = 0, pretend = 0, frame = 0
10083	@ frame_needed = 0, uses_anonymous_args = 0
10084	@ link register save eliminated.
10085	add	r0, r0, #256
10086	b	FtlVendorPartRead
10087	.fnend
10088	.size	sftl_vendor_read, .-sftl_vendor_read
10089	.align	1
10090	.global	FtlMapBlkWriteDump_data
10091	.syntax unified
10092	.thumb
10093	.thumb_func
10094	.fpu softvfp
10095	.type	FtlMapBlkWriteDump_data, %function
10096FtlMapBlkWriteDump_data:
10097	.fnstart
10098	@ args = 0, pretend = 0, frame = 0
10099	@ frame_needed = 0, uses_anonymous_args = 0
10100	push	{r4, r5, r6, lr}
10101	.save {r4, r5, r6, lr}
10102	mov	r5, r0
10103	ldr	r3, [r0, #36]
10104	cbz	r3, .L1424
10105	ldrh	r6, [r0, #6]
10106	movs	r2, #0
10107	ldr	r4, .L1428
10108	subs	r6, r6, #1
10109	str	r2, [r0, #36]
10110	ldr	r3, [r0, #24]
10111	uxth	r6, r6
10112	ldr	r0, [r4, #3304]
10113	ldr	r2, [r4, #3332]
10114	str	r0, [r4, #3460]
10115	str	r2, [r4, #3464]
10116	ldr	r3, [r3, r6, lsl #2]
10117	str	r3, [r4, #3456]
10118	cbz	r3, .L1426
10119	movs	r2, #1
10120	addw	r0, r4, #3452
10121	mov	r1, r2
10122	bl	FlashReadPages
10123.L1427:
10124	ldr	r2, [r4, #3460]
10125	mov	r1, r6
10126	mov	r0, r5
10127	pop	{r4, r5, r6, lr}
10128	b	FtlMapWritePage
10129.L1426:
10130	ldrh	r2, [r4, #310]
10131	movs	r1, #255
10132	bl	ftl_memset
10133	b	.L1427
10134.L1424:
10135	pop	{r4, r5, r6, pc}
10136.L1429:
10137	.align	2
10138.L1428:
10139	.word	.LANCHOR0
10140	.fnend
10141	.size	FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data
10142	.section	.rodata.str1.1
10143.LC120:
10144	.ascii	"FtlVpcTblFlush error = %x error count = %d\012\000"
10145	.text
10146	.align	1
10147	.global	FtlVpcTblFlush
10148	.syntax unified
10149	.thumb
10150	.thumb_func
10151	.fpu softvfp
10152	.type	FtlVpcTblFlush, %function
10153FtlVpcTblFlush:
10154	.fnstart
10155	@ args = 0, pretend = 0, frame = 0
10156	@ frame_needed = 0, uses_anonymous_args = 0
10157	push	{r4, r5, r6, r7, r8, r9, r10, lr}
10158	.save {r4, r5, r6, r7, r8, r9, r10, lr}
10159	movs	r5, #0
10160	ldr	r4, .L1446
10161	movs	r1, #255
10162	ldr	r9, .L1446+4
10163	ldr	r10, .L1446+8
10164	addw	r8, r4, #3452
10165	movw	r7, #65535
10166	ldr	r6, [r4, #3332]
10167	ldr	r3, [r4, #3300]
10168	str	r3, [r4, #3460]
10169	ldrh	r3, [r4, #2624]
10170	str	r6, [r4, #3464]
10171	strh	r3, [r6, #2]	@ movhi
10172	movw	r3, #61604
10173	strh	r3, [r6]	@ movhi
10174	ldr	r3, [r4, #2632]
10175	str	r3, [r6, #4]
10176	ldr	r3, .L1446+12
10177	str	r3, [r4, #2468]
10178	ldr	r3, .L1446+16
10179	str	r3, [r4, #2472]
10180	ldrh	r3, [r4, #2630]
10181	strd	r5, r5, [r6, #8]
10182	strh	r3, [r4, #2476]	@ movhi
10183	ldrh	r3, [r4, #254]
10184	strb	r3, [r4, #2478]
10185	ldrh	r3, [r4, #24]
10186	ldrh	r2, [r4, #26]
10187	strh	r3, [r4, #2482]	@ movhi
10188	ldrb	r3, [r4, #30]	@ zero_extendqisi2
10189	orr	r3, r3, r2, lsl #6
10190	strh	r3, [r4, #2484]	@ movhi
10191	ldrb	r3, [r4, #32]	@ zero_extendqisi2
10192	strb	r3, [r4, #2479]
10193	ldrh	r3, [r4, #76]
10194	ldrh	r2, [r4, #78]
10195	strh	r3, [r4, #2486]	@ movhi
10196	ldrb	r3, [r4, #82]	@ zero_extendqisi2
10197	orr	r3, r3, r2, lsl #6
10198	strh	r3, [r4, #2488]	@ movhi
10199	ldrb	r3, [r4, #84]	@ zero_extendqisi2
10200	strb	r3, [r4, #2480]
10201	ldrh	r3, [r4, #124]
10202	strh	r3, [r4, #2490]	@ movhi
10203	ldrh	r2, [r4, #126]
10204	ldrb	r3, [r4, #130]	@ zero_extendqisi2
10205	ldr	r0, [r4, #3460]
10206	orr	r3, r3, r2, lsl #6
10207	strh	r3, [r4, #2492]	@ movhi
10208	ldrb	r3, [r4, #132]	@ zero_extendqisi2
10209	strb	r3, [r4, #2481]
10210	ldr	r3, [r4, #2596]
10211	str	r3, [r4, #2500]
10212	ldr	r3, [r4, #2588]
10213	ldrh	r2, [r4, #310]
10214	str	r3, [r4, #2508]
10215	ldr	r3, [r4, #2592]
10216	str	r3, [r4, #2504]
10217	bl	ftl_memset
10218	addw	r1, r4, #2468
10219	movs	r2, #48
10220	ldr	r0, [r4, #3460]
10221	bl	ftl_memcpy
10222	ldrh	r2, [r4, #240]
10223	ldr	r0, [r4, #3460]
10224	ldr	r1, [r4, #72]
10225	lsls	r2, r2, #1
10226	adds	r0, r0, #48
10227	bl	ftl_memcpy
10228	mov	r0, r5
10229	bl	FtlUpdateVaildLpn
10230.L1431:
10231	ldrh	r1, [r4, #2626]
10232	ldrh	r2, [r4, #2624]
10233	ldr	r3, [r4, #3300]
10234	str	r3, [r4, #3460]
10235	ldr	r3, [r4, #3332]
10236	str	r3, [r4, #3464]
10237	orr	r3, r1, r2, lsl #10
10238	str	r3, [r4, #3456]
10239	ldrh	r3, [r4, #304]
10240	subs	r3, r3, #1
10241	cmp	r1, r3
10242	blt	.L1432
10243	movs	r3, #0
10244	ldrh	r7, [r4, #2628]
10245	strh	r3, [r4, #2626]	@ movhi
10246	strh	r2, [r4, #2628]	@ movhi
10247	bl	FtlFreeSysBlkQueueOut
10248	ldr	r3, [r4, #2588]
10249	str	r3, [r4, #2632]
10250	adds	r2, r3, #1
10251	strh	r0, [r4, #2624]	@ movhi
10252	str	r2, [r4, #2588]
10253	lsls	r2, r0, #10
10254	str	r2, [r4, #3456]
10255	str	r3, [r6, #4]
10256	strh	r0, [r6, #2]	@ movhi
10257.L1432:
10258	ldrh	r1, [r4, #310]
10259	ldr	r0, [r4, #3300]
10260	bl	js_hash
10261	movs	r3, #1
10262	str	r0, [r6, #12]
10263	mov	r2, r3
10264	mov	r1, r3
10265	mov	r0, r8
10266	bl	FlashProgPages
10267	ldrh	r3, [r4, #2626]
10268	ldr	r2, [r4, #3452]
10269	adds	r3, r3, #1
10270	adds	r1, r2, #1
10271	uxth	r3, r3
10272	strh	r3, [r4, #2626]	@ movhi
10273	bne	.L1433
10274	cmp	r3, #1
10275	bne	.L1435
10276	mov	r1, r9
10277	mov	r0, r10
10278	movw	r2, #1145
10279	bl	sftl_printk
10280	ldrh	r3, [r4, #2626]
10281	cmp	r3, #1
10282	ittt	eq
10283	ldrheq	r3, [r4, #304]
10284	addeq	r3, r3, #-1
10285	strheq	r3, [r4, #2626]	@ movhi
10286.L1435:
10287	adds	r5, r5, #1
10288	uxth	r5, r5
10289	cmp	r5, #3
10290	bls	.L1431
10291	ldr	r1, [r4, #3456]
10292	mov	r2, r5
10293	ldr	r0, .L1446+20
10294	bl	sftl_printk
10295.L1438:
10296	b	.L1438
10297.L1433:
10298	cmp	r3, #1
10299	beq	.L1431
10300	cmp	r2, #256
10301	beq	.L1431
10302	movw	r3, #65535
10303	cmp	r7, r3
10304	beq	.L1439
10305	mov	r0, r7
10306	movs	r1, #1
10307	bl	FtlFreeSysBlkQueueIn
10308.L1439:
10309	movs	r0, #0
10310	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
10311.L1447:
10312	.align	2
10313.L1446:
10314	.word	.LANCHOR0
10315	.word	.LANCHOR1+471
10316	.word	.LC8
10317	.word	1179929683
10318	.word	1342177367
10319	.word	.LC120
10320	.fnend
10321	.size	FtlVpcTblFlush, .-FtlVpcTblFlush
10322	.align	1
10323	.global	FtlSysFlush
10324	.syntax unified
10325	.thumb
10326	.thumb_func
10327	.fpu softvfp
10328	.type	FtlSysFlush, %function
10329FtlSysFlush:
10330	.fnstart
10331	@ args = 0, pretend = 0, frame = 0
10332	@ frame_needed = 0, uses_anonymous_args = 0
10333	push	{r3, lr}
10334	.save {r3, lr}
10335	bl	l2p_flush
10336	movs	r0, #1
10337	bl	FtlEctTblFlush
10338	bl	FtlVpcTblFlush
10339	movs	r0, #0
10340	pop	{r3, pc}
10341	.fnend
10342	.size	FtlSysFlush, .-FtlSysFlush
10343	.align	1
10344	.global	sftl_deinit
10345	.syntax unified
10346	.thumb
10347	.thumb_func
10348	.fpu softvfp
10349	.type	sftl_deinit, %function
10350sftl_deinit:
10351	.fnstart
10352	@ args = 0, pretend = 0, frame = 0
10353	@ frame_needed = 0, uses_anonymous_args = 0
10354	push	{r3, lr}
10355	.save {r3, lr}
10356	ldr	r3, .L1451
10357	ldr	r3, [r3]
10358	cmp	r3, #1
10359	bne	.L1450
10360	bl	FtlSysFlush
10361.L1450:
10362	movs	r0, #0
10363	pop	{r3, pc}
10364.L1452:
10365	.align	2
10366.L1451:
10367	.word	.LANCHOR2
10368	.fnend
10369	.size	sftl_deinit, .-sftl_deinit
10370	.align	1
10371	.global	sftl_discard
10372	.syntax unified
10373	.thumb
10374	.thumb_func
10375	.fpu softvfp
10376	.type	sftl_discard, %function
10377sftl_discard:
10378	.fnstart
10379	@ args = 0, pretend = 0, frame = 16
10380	@ frame_needed = 0, uses_anonymous_args = 0
10381	push	{r4, r5, r6, r7, r8, r9, lr}
10382	.save {r4, r5, r6, r7, r8, r9, lr}
10383	mov	r6, r0
10384	ldr	r5, .L1471
10385	.pad #20
10386	sub	sp, sp, #20
10387	mov	r4, r1
10388	mov	r3, sp
10389	bic	r9, r3, #8160
10390	bic	r9, r9, #31
10391	ldr	r3, [r9, #24]
10392	str	r3, [sp, #12]
10393	ldr	r3, [r5, #340]
10394	cmp	r3, r0
10395	bls	.L1464
10396	cmp	r3, r1
10397	bcc	.L1464
10398	adds	r2, r0, r1
10399	cmp	r3, r2
10400	bcc	.L1464
10401	cmp	r1, #31
10402	bhi	.L1455
10403.L1460:
10404	movs	r0, #0
10405.L1453:
10406	ldr	r2, [sp, #12]
10407	ldr	r3, [r9, #24]
10408	cmp	r2, r3
10409	beq	.L1461
10410	bl	__stack_chk_fail
10411.L1455:
10412	ldrh	r8, [r5, #258]
10413	mov	r1, r8
10414	bl	__aeabi_uidiv
10415	mov	r7, r0
10416	smulbb	r0, r0, r8
10417	subs	r6, r6, r0
10418	uxth	r6, r6
10419	cbz	r6, .L1456
10420	sub	r8, r8, r6
10421	adds	r7, r7, #1
10422	cmp	r8, r4
10423	it	cs
10424	movcs	r8, r4
10425	uxth	r8, r8
10426	sub	r4, r4, r8
10427.L1456:
10428	mov	r3, #-1
10429	str	r3, [sp, #8]
10430.L1457:
10431	ldrh	r3, [r5, #258]
10432	cmp	r3, r4
10433	bls	.L1459
10434	ldr	r3, [r5, #3656]
10435	cmp	r3, #32
10436	bls	.L1460
10437	movs	r4, #0
10438	str	r4, [r5, #3656]
10439	bl	l2p_flush
10440	bl	FtlVpcTblFlush
10441	b	.L1460
10442.L1459:
10443	add	r1, sp, #4
10444	mov	r0, r7
10445	movs	r2, #0
10446	bl	log2phys
10447	ldr	r3, [sp, #4]
10448	adds	r3, r3, #1
10449	beq	.L1458
10450	ldr	r3, [r5, #3656]
10451	add	r1, sp, #8
10452	movs	r2, #1
10453	mov	r0, r7
10454	adds	r3, r3, #1
10455	str	r3, [r5, #3656]
10456	ldr	r3, [r5, #2560]
10457	adds	r3, r3, #1
10458	str	r3, [r5, #2560]
10459	bl	log2phys
10460	ldr	r0, [sp, #4]
10461	ubfx	r0, r0, #10, #16
10462	bl	P2V_block_in_plane
10463	bl	decrement_vpc_count
10464.L1458:
10465	ldrh	r3, [r5, #258]
10466	adds	r7, r7, #1
10467	subs	r4, r4, r3
10468	b	.L1457
10469.L1464:
10470	mov	r0, #-1
10471	b	.L1453
10472.L1461:
10473	add	sp, sp, #20
10474	@ sp needed
10475	pop	{r4, r5, r6, r7, r8, r9, pc}
10476.L1472:
10477	.align	2
10478.L1471:
10479	.word	.LANCHOR0
10480	.fnend
10481	.size	sftl_discard, .-sftl_discard
10482	.section	.rodata.str1.1
10483.LC121:
10484	.ascii	"FtlCheckVpc %x = %x  %x\012\000"
10485	.text
10486	.align	1
10487	.global	FtlVpcCheckAndModify
10488	.syntax unified
10489	.thumb
10490	.thumb_func
10491	.fpu softvfp
10492	.type	FtlVpcCheckAndModify, %function
10493FtlVpcCheckAndModify:
10494	.fnstart
10495	@ args = 0, pretend = 0, frame = 8
10496	@ frame_needed = 0, uses_anonymous_args = 0
10497	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
10498	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
10499	.pad #12
10500	movs	r5, #0
10501	ldr	r4, .L1488
10502	mov	r3, sp
10503	ldr	r1, .L1488+4
10504	bic	r7, r3, #8160
10505	ldr	r0, .L1488+8
10506	bic	r7, r7, #31
10507	ldr	r3, [r7, #24]
10508	str	r3, [sp, #4]
10509	bl	sftl_printk
10510	ldrh	r2, [r4, #242]
10511	movs	r1, #0
10512	ldr	r0, [r4, #3352]
10513	lsls	r2, r2, #1
10514	bl	ftl_memset
10515.L1474:
10516	ldr	r3, [r4, #2552]
10517	cmp	r3, r5
10518	bhi	.L1476
10519	ldr	r9, .L1488+12
10520	mov	r8, #0
10521	ldr	r10, .L1488+16
10522	ldr	fp, .L1488+4
10523.L1477:
10524	ldrh	r3, [r4, #240]
10525	uxth	r5, r8
10526	cmp	r3, r5
10527	bhi	.L1483
10528	bl	l2p_flush
10529	bl	FtlVpcTblFlush
10530	ldr	r2, [sp, #4]
10531	ldr	r3, [r7, #24]
10532	cmp	r2, r3
10533	beq	.L1484
10534	bl	__stack_chk_fail
10535.L1476:
10536	mov	r1, sp
10537	mov	r0, r5
10538	movs	r2, #0
10539	bl	log2phys
10540	ldr	r0, [sp]
10541	adds	r3, r0, #1
10542	beq	.L1475
10543	ubfx	r0, r0, #10, #16
10544	bl	P2V_block_in_plane
10545	ldr	r2, [r4, #3352]
10546	ldrh	r3, [r2, r0, lsl #1]
10547	adds	r3, r3, #1
10548	strh	r3, [r2, r0, lsl #1]	@ movhi
10549.L1475:
10550	adds	r5, r5, #1
10551	b	.L1474
10552.L1483:
10553	ldr	r3, [r4, #72]
10554	uxth	r6, r8
10555	ldrh	r2, [r3, r6, lsl #1]
10556	ldr	r3, [r4, #3352]
10557	ldrh	r3, [r3, r6, lsl #1]
10558	cmp	r2, r3
10559	beq	.L1479
10560	movw	r1, #65535
10561	cmp	r2, r1
10562	beq	.L1479
10563	mov	r1, r6
10564	mov	r0, r9
10565	bl	sftl_printk
10566	ldrh	r3, [r4, #24]
10567	cmp	r3, r5
10568	beq	.L1479
10569	ldrh	r3, [r4, #124]
10570	cmp	r3, r5
10571	beq	.L1479
10572	ldrh	r3, [r4, #76]
10573	cmp	r3, r5
10574	beq	.L1479
10575	ldr	r3, [r4, #72]
10576	ldr	r2, [r4, #3352]
10577	ldrh	r1, [r3, r6, lsl #1]
10578	ldrh	r2, [r2, r6, lsl #1]
10579	strh	r2, [r3, r6, lsl #1]	@ movhi
10580	cbnz	r1, .L1481
10581	mov	r1, r5
10582	mov	r0, r10
10583	bl	List_remove_node
10584	ldrh	r3, [r4, #224]
10585	cbnz	r3, .L1482
10586	ldr	r0, .L1488+20
10587	mov	r1, fp
10588	movw	r2, #2330
10589	bl	sftl_printk
10590.L1482:
10591	ldrh	r3, [r4, #224]
10592	mov	r0, r5
10593	subs	r3, r3, #1
10594	strh	r3, [r4, #224]	@ movhi
10595	bl	INSERT_DATA_LIST
10596.L1479:
10597	add	r8, r8, #1
10598	b	.L1477
10599.L1481:
10600	mov	r0, r5
10601	bl	update_vpc_list
10602	b	.L1479
10603.L1484:
10604	add	sp, sp, #12
10605	@ sp needed
10606	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
10607.L1489:
10608	.align	2
10609.L1488:
10610	.word	.LANCHOR0
10611	.word	.LANCHOR1+486
10612	.word	.LC111
10613	.word	.LC121
10614	.word	.LANCHOR0+2532
10615	.word	.LC8
10616	.fnend
10617	.size	FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
10618	.align	1
10619	.global	allocate_new_data_superblock
10620	.syntax unified
10621	.thumb
10622	.thumb_func
10623	.fpu softvfp
10624	.type	allocate_new_data_superblock, %function
10625allocate_new_data_superblock:
10626	.fnstart
10627	@ args = 0, pretend = 0, frame = 0
10628	@ frame_needed = 0, uses_anonymous_args = 0
10629	push	{r4, r5, r6, lr}
10630	.save {r4, r5, r6, lr}
10631	mov	r5, r0
10632	ldr	r6, .L1500
10633	ldrh	r4, [r0]
10634	ldrh	r3, [r6, #240]
10635	cmp	r3, r4
10636	bcs	.L1491
10637	ldr	r1, .L1500+4
10638	movw	r2, #2766
10639	ldr	r0, .L1500+8
10640	bl	sftl_printk
10641.L1491:
10642	movw	r3, #65535
10643	cmp	r4, r3
10644	beq	.L1492
10645	ldr	r3, [r6, #72]
10646	mov	r0, r4
10647	ldrh	r3, [r3, r4, lsl #1]
10648	cbz	r3, .L1493
10649	bl	INSERT_DATA_LIST
10650.L1492:
10651	ldrh	r0, [r6, #3438]
10652	movs	r3, #1
10653	strb	r3, [r5, #8]
10654	movw	r3, #65535
10655	cmp	r0, r3
10656	beq	.L1494
10657	cmp	r0, r4
10658	bne	.L1495
10659	ldr	r3, [r6, #72]
10660	ldrh	r3, [r3, r4, lsl #1]
10661	cbz	r3, .L1496
10662.L1495:
10663	bl	update_vpc_list
10664.L1496:
10665	movw	r3, #65535
10666	strh	r3, [r6, #3438]	@ movhi
10667.L1494:
10668	mov	r0, r5
10669	bl	allocate_data_superblock
10670	bl	l2p_flush
10671	movs	r0, #0
10672	bl	FtlEctTblFlush
10673	bl	FtlVpcTblFlush
10674	movs	r0, #0
10675	pop	{r4, r5, r6, pc}
10676.L1493:
10677	bl	INSERT_FREE_LIST
10678	b	.L1492
10679.L1501:
10680	.align	2
10681.L1500:
10682	.word	.LANCHOR0
10683	.word	.LANCHOR1+507
10684	.word	.LC8
10685	.fnend
10686	.size	allocate_new_data_superblock, .-allocate_new_data_superblock
10687	.section	.rodata.str1.1
10688.LC122:
10689	.ascii	"FtlProgPages error %x = %d\012\000"
10690.LC123:
10691	.ascii	"Ftlwrite decrement_vpc_count %x = %d\012\000"
10692	.text
10693	.align	1
10694	.global	FtlProgPages
10695	.syntax unified
10696	.thumb
10697	.thumb_func
10698	.fpu softvfp
10699	.type	FtlProgPages, %function
10700FtlProgPages:
10701	.fnstart
10702	@ args = 0, pretend = 0, frame = 8
10703	@ frame_needed = 0, uses_anonymous_args = 0
10704	push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
10705	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
10706	.pad #12
10707	mov	r5, r3
10708	ldr	fp, .L1522
10709	mov	r3, sp
10710	ldr	r10, .L1522+4
10711	bic	r7, r3, #8160
10712	mov	r9, #0
10713	bic	r7, r7, #31
10714	movs	r2, #0
10715	mov	r4, r0
10716	mov	r8, r1
10717	ldr	r3, [r7, #24]
10718	str	r3, [sp, #4]
10719	ldrb	r3, [r5, #9]	@ zero_extendqisi2
10720	bl	FlashProgPages
10721.L1503:
10722	cmp	r9, r8
10723	bne	.L1510
10724	ldr	r3, .L1522+4
10725	ldrb	r2, [r5, #6]	@ zero_extendqisi2
10726	ldrh	r3, [r3, #232]
10727	cmp	r2, r3
10728	bcc	.L1502
10729	ldr	r1, .L1522+8
10730	mov	r2, #1000
10731	ldr	r0, .L1522+12
10732	bl	sftl_printk
10733.L1502:
10734	ldr	r2, [sp, #4]
10735	ldr	r3, [r7, #24]
10736	cmp	r2, r3
10737	beq	.L1512
10738	bl	__stack_chk_fail
10739.L1505:
10740	ldr	r1, [r4, #4]
10741	mov	r0, fp
10742	bl	sftl_printk
10743	ldr	r0, [r4, #4]
10744	ubfx	r0, r0, #10, #16
10745	bl	P2V_block_in_plane
10746	bl	decrement_vpc_count
10747	ldrh	r3, [r5, #4]
10748	cbnz	r3, .L1504
10749	mov	r0, r5
10750	bl	allocate_new_data_superblock
10751.L1504:
10752	mov	r0, r5
10753	bl	get_new_active_ppa
10754	str	r0, [r4, #4]
10755	str	r0, [sp]
10756	movs	r2, #0
10757	ldrb	r3, [r5, #9]	@ zero_extendqisi2
10758	mov	r0, r4
10759	movs	r1, #1
10760	bl	FlashProgPages
10761.L1510:
10762	ldr	r2, [r4]
10763	adds	r1, r2, #1
10764	beq	.L1505
10765	cmp	r2, #256
10766	beq	.L1505
10767	ldrb	r2, [r5, #6]	@ zero_extendqisi2
10768	ldrh	r3, [r10, #232]
10769	cmp	r2, r3
10770	bcc	.L1506
10771	ldr	r1, .L1522+8
10772	movw	r2, #985
10773	ldr	r0, .L1522+12
10774	bl	sftl_printk
10775.L1506:
10776	ldr	r3, [r4, #4]
10777	mov	r1, sp
10778	ldr	r0, [r4, #16]
10779	movs	r2, #1
10780	str	r3, [sp]
10781	bl	log2phys
10782	ldr	r3, [r4, #12]
10783	ldr	r0, [r3, #12]
10784	adds	r3, r0, #1
10785	beq	.L1507
10786	ubfx	r0, r0, #10, #16
10787	bl	P2V_block_in_plane
10788	ldr	r3, [r10, #72]
10789	mov	r6, r0
10790	ldrh	r2, [r3, r0, lsl #1]
10791	cbnz	r2, .L1508
10792	mov	r1, r0
10793	ldr	r0, .L1522+16
10794	bl	sftl_printk
10795.L1508:
10796	mov	r0, r6
10797	bl	decrement_vpc_count
10798.L1507:
10799	add	r9, r9, #1
10800	adds	r4, r4, #20
10801	b	.L1503
10802.L1512:
10803	add	sp, sp, #12
10804	@ sp needed
10805	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
10806.L1523:
10807	.align	2
10808.L1522:
10809	.word	.LC122
10810	.word	.LANCHOR0
10811	.word	.LANCHOR1+536
10812	.word	.LC8
10813	.word	.LC123
10814	.fnend
10815	.size	FtlProgPages, .-FtlProgPages
10816	.align	1
10817	.global	FtlGcFreeTempBlock
10818	.syntax unified
10819	.thumb
10820	.thumb_func
10821	.fpu softvfp
10822	.type	FtlGcFreeTempBlock, %function
10823FtlGcFreeTempBlock:
10824	.fnstart
10825	@ args = 0, pretend = 0, frame = 8
10826	@ frame_needed = 0, uses_anonymous_args = 0
10827	push	{r0, r1, r4, r5, r6, r7, r8, r9, r10, lr}
10828	.save {r4, r5, r6, r7, r8, r9, r10, lr}
10829	.pad #8
10830	ldr	r4, .L1549
10831	mov	r3, sp
10832	bic	r6, r3, #8160
10833	bic	r6, r6, #31
10834	ldrh	r2, [r4, #124]
10835	ldrh	r1, [r4, #302]
10836	ldr	r3, [r6, #24]
10837	str	r3, [sp, #4]
10838	movw	r3, #65535
10839	cmp	r2, r3
10840	bne	.L1525
10841.L1532:
10842	ldrh	r2, [r4, #124]
10843	movs	r3, #0
10844	str	r3, [r4, #3444]
10845	movw	r3, #65535
10846	cmp	r2, r3
10847	bne	.L1546
10848.L1526:
10849	movs	r0, #0
10850.L1524:
10851	ldr	r2, [sp, #4]
10852	ldr	r3, [r6, #24]
10853	cmp	r2, r3
10854	beq	.L1541
10855	bl	__stack_chk_fail
10856.L1525:
10857	ldr	r5, .L1549+4
10858	cbz	r0, .L1528
10859	ldrh	r2, [r5, #4]
10860	cmp	r2, r3
10861	beq	.L1529
10862.L1530:
10863	movs	r1, #2
10864.L1528:
10865	ldr	r0, .L1549+8
10866	bl	FtlGcScanTempBlk
10867	ldrh	r2, [r5, #4]
10868	movw	r3, #65535
10869	str	r0, [sp]
10870	cmp	r2, r3
10871	beq	.L1532
10872	movs	r0, #1
10873	b	.L1524
10874.L1529:
10875	movs	r3, #0
10876	strh	r3, [r5, #4]	@ movhi
10877	ldrh	r3, [r4, #224]
10878	cmp	r3, #17
10879	bhi	.L1530
10880	b	.L1528
10881.L1546:
10882	ldrb	r3, [r4, #131]	@ zero_extendqisi2
10883	ldrh	r1, [r4, #302]
10884	ldrh	r2, [r4, #3204]
10885	muls	r3, r1, r3
10886	cmp	r2, r3
10887	beq	.L1533
10888	ldr	r1, .L1549+12
10889	movs	r2, #164
10890	ldr	r0, .L1549+16
10891	bl	sftl_printk
10892.L1533:
10893	ldrb	r3, [r4, #131]	@ zero_extendqisi2
10894	movs	r5, #0
10895	ldrh	r0, [r4, #302]
10896	mov	r9, #12
10897	ldrh	r1, [r4, #124]
10898	ldr	r2, [r4, #72]
10899	smulbb	r3, r3, r0
10900	strh	r3, [r2, r1, lsl #1]	@ movhi
10901	ldr	r2, [r4, #2576]
10902	ldrh	r3, [r4, #3204]
10903	add	r3, r3, r2
10904	str	r3, [r4, #2576]
10905.L1534:
10906	ldrh	r2, [r4, #3204]
10907	uxth	r3, r5
10908	cmp	r2, r3
10909	bhi	.L1538
10910	movw	r0, #65535
10911	bl	decrement_vpc_count
10912	ldrh	r0, [r4, #124]
10913	ldr	r3, [r4, #72]
10914	ldrh	r3, [r3, r0, lsl #1]
10915	cmp	r3, #0
10916	beq	.L1539
10917	bl	INSERT_DATA_LIST
10918.L1540:
10919	movw	r7, #65535
10920	movs	r5, #0
10921	strh	r7, [r4, #124]	@ movhi
10922	strh	r5, [r4, #3204]	@ movhi
10923	strh	r5, [r4, #3196]	@ movhi
10924	bl	l2p_flush
10925	bl	FtlVpcTblFlush
10926	ldrh	r3, [r4, #2620]
10927	ldrh	r2, [r4, #224]
10928	strh	r7, [r4, #172]	@ movhi
10929	add	r3, r3, r3, lsl #1
10930	cmp	r2, r3, lsr #2
10931	ble	.L1526
10932	movs	r3, #20
10933	strh	r3, [r4, #3152]	@ movhi
10934	b	.L1526
10935.L1538:
10936	uxth	r8, r5
10937	ldr	r10, [r4, #3200]
10938	ldr	r3, [r4, #2552]
10939	mul	r8, r9, r8
10940	add	r7, r10, r8
10941	ldr	r0, [r7, #8]
10942	cmp	r0, r3
10943	bcc	.L1535
10944.L1547:
10945	ldrh	r0, [r4, #124]
10946	b	.L1548
10947.L1535:
10948	mov	r1, sp
10949	movs	r2, #0
10950	bl	log2phys
10951	ldr	r0, [r10, r8]
10952	ldr	r3, [sp]
10953	cmp	r0, r3
10954	bne	.L1537
10955	ubfx	r0, r0, #10, #16
10956	bl	P2V_block_in_plane
10957	adds	r1, r7, #4
10958	mov	r8, r0
10959	movs	r2, #1
10960	ldr	r0, [r7, #8]
10961	bl	log2phys
10962	mov	r0, r8
10963.L1548:
10964	bl	decrement_vpc_count
10965	b	.L1536
10966.L1537:
10967	ldr	r2, [r7, #4]
10968	cmp	r3, r2
10969	bne	.L1547
10970.L1536:
10971	adds	r5, r5, #1
10972	b	.L1534
10973.L1539:
10974	bl	INSERT_FREE_LIST
10975	b	.L1540
10976.L1541:
10977	add	sp, sp, #8
10978	@ sp needed
10979	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
10980.L1550:
10981	.align	2
10982.L1549:
10983	.word	.LANCHOR0
10984	.word	.LANCHOR2
10985	.word	.LANCHOR0+124
10986	.word	.LANCHOR1+549
10987	.word	.LC8
10988	.fnend
10989	.size	FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
10990	.align	1
10991	.global	FtlGcPageRecovery
10992	.syntax unified
10993	.thumb
10994	.thumb_func
10995	.fpu softvfp
10996	.type	FtlGcPageRecovery, %function
10997FtlGcPageRecovery:
10998	.fnstart
10999	@ args = 0, pretend = 0, frame = 0
11000	@ frame_needed = 0, uses_anonymous_args = 0
11001	push	{r4, lr}
11002	.save {r4, lr}
11003	ldr	r4, .L1553
11004	add	r0, r4, #124
11005	ldrh	r1, [r4, #302]
11006	bl	FtlGcScanTempBlk
11007	ldrh	r2, [r4, #126]
11008	ldrh	r3, [r4, #302]
11009	cmp	r2, r3
11010	bcc	.L1551
11011	add	r0, r4, #3392
11012	bl	FtlMapBlkWriteDump_data
11013	movs	r0, #0
11014	bl	FtlGcFreeTempBlock
11015	movs	r3, #0
11016	str	r3, [r4, #3444]
11017.L1551:
11018	pop	{r4, pc}
11019.L1554:
11020	.align	2
11021.L1553:
11022	.word	.LANCHOR0
11023	.fnend
11024	.size	FtlGcPageRecovery, .-FtlGcPageRecovery
11025	.align	1
11026	.global	FtlPowerLostRecovery
11027	.syntax unified
11028	.thumb
11029	.thumb_func
11030	.fpu softvfp
11031	.type	FtlPowerLostRecovery, %function
11032FtlPowerLostRecovery:
11033	.fnstart
11034	@ args = 0, pretend = 0, frame = 0
11035	@ frame_needed = 0, uses_anonymous_args = 0
11036	push	{r4, r5, r6, lr}
11037	.save {r4, r5, r6, lr}
11038	movs	r5, #0
11039	ldr	r4, .L1556
11040	add	r6, r4, #24
11041	adds	r4, r4, #76
11042	mov	r0, r6
11043	str	r5, [r4, #3400]
11044	bl	FtlRecoverySuperblock
11045	mov	r0, r6
11046	bl	FtlSlcSuperblockCheck
11047	mov	r0, r4
11048	bl	FtlRecoverySuperblock
11049	mov	r0, r4
11050	bl	FtlSlcSuperblockCheck
11051	bl	FtlGcPageRecovery
11052	movw	r0, #65535
11053	bl	decrement_vpc_count
11054	mov	r0, r5
11055	pop	{r4, r5, r6, pc}
11056.L1557:
11057	.align	2
11058.L1556:
11059	.word	.LANCHOR0
11060	.fnend
11061	.size	FtlPowerLostRecovery, .-FtlPowerLostRecovery
11062	.align	1
11063	.global	Ftl_gc_temp_data_write_back
11064	.syntax unified
11065	.thumb
11066	.thumb_func
11067	.fpu softvfp
11068	.type	Ftl_gc_temp_data_write_back, %function
11069Ftl_gc_temp_data_write_back:
11070	.fnstart
11071	@ args = 0, pretend = 0, frame = 0
11072	@ frame_needed = 0, uses_anonymous_args = 0
11073	push	{r3, r4, r5, r6, r7, lr}
11074	.save {r3, r4, r5, r6, r7, lr}
11075	movs	r5, #0
11076	ldr	r4, .L1566
11077	movs	r6, #20
11078	movs	r3, #0
11079	mov	r2, r3
11080	ldr	r1, [r4, #3168]
11081	ldr	r0, [r4, #3292]
11082	bl	FlashProgPages
11083.L1559:
11084	ldr	r1, [r4, #3168]
11085	uxth	r3, r5
11086	ldr	r2, [r4, #3292]
11087	cmp	r3, r1
11088	bcc	.L1562
11089	mov	r0, r2
11090	bl	FtlGcBufFree
11091	ldrh	r3, [r4, #128]
11092	movs	r0, #0
11093	str	r0, [r4, #3168]
11094	cbnz	r3, .L1558
11095	movs	r0, #1
11096	bl	FtlGcFreeTempBlock
11097	movs	r0, #1
11098.L1558:
11099	pop	{r3, r4, r5, r6, r7, pc}
11100.L1562:
11101	muls	r3, r6, r3
11102	adds	r5, r5, #1
11103	adds	r1, r2, r3
11104	ldr	r2, [r2, r3]
11105	ldr	r7, [r1, #12]
11106	adds	r3, r2, #1
11107	ldr	r1, [r1, #4]
11108	ldr	r0, [r7, #12]
11109	it	ne
11110	ldrne	r2, [r7, #8]
11111	bl	FtlGcUpdatePage
11112	b	.L1559
11113.L1567:
11114	.align	2
11115.L1566:
11116	.word	.LANCHOR0
11117	.fnend
11118	.size	Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
11119	.align	1
11120	.global	Ftl_get_new_temp_ppa
11121	.syntax unified
11122	.thumb
11123	.thumb_func
11124	.fpu softvfp
11125	.type	Ftl_get_new_temp_ppa, %function
11126Ftl_get_new_temp_ppa:
11127	.fnstart
11128	@ args = 0, pretend = 0, frame = 0
11129	@ frame_needed = 0, uses_anonymous_args = 0
11130	push	{r3, r4, r5, lr}
11131	.save {r3, r4, r5, lr}
11132	movw	r3, #65535
11133	ldr	r4, .L1571
11134	ldrh	r2, [r4, #124]
11135	cmp	r2, r3
11136	beq	.L1569
11137	ldrh	r3, [r4, #128]
11138	cbnz	r3, .L1570
11139.L1569:
11140	movs	r0, #0
11141	movs	r5, #0
11142	bl	FtlGcFreeTempBlock
11143	ldr	r0, .L1571+4
11144	strb	r5, [r4, #132]
11145	bl	allocate_data_superblock
11146	strh	r5, [r4, #3196]	@ movhi
11147	strh	r5, [r4, #3204]	@ movhi
11148	bl	l2p_flush
11149	mov	r0, r5
11150	bl	FtlEctTblFlush
11151	bl	FtlVpcTblFlush
11152.L1570:
11153	pop	{r3, r4, r5, lr}
11154	ldr	r0, .L1571+4
11155	b	get_new_active_ppa
11156.L1572:
11157	.align	2
11158.L1571:
11159	.word	.LANCHOR0
11160	.word	.LANCHOR0+124
11161	.fnend
11162	.size	Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
11163	.section	.rodata.str1.1
11164.LC124:
11165	.ascii	"SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000"
11166	.text
11167	.align	1
11168	.global	rk_ftl_garbage_collect
11169	.syntax unified
11170	.thumb
11171	.thumb_func
11172	.fpu softvfp
11173	.type	rk_ftl_garbage_collect, %function
11174rk_ftl_garbage_collect:
11175	.fnstart
11176	@ args = 0, pretend = 0, frame = 32
11177	@ frame_needed = 0, uses_anonymous_args = 0
11178	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
11179	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
11180	ldr	r4, .L1687
11181	.pad #44
11182	sub	sp, sp, #44
11183	mov	r3, sp
11184	bic	r3, r3, #8160
11185	bic	r3, r3, #31
11186	str	r0, [sp, #16]
11187	ldr	r0, [r4, #3272]
11188	ldr	r3, [r3, #24]
11189	str	r3, [sp, #36]
11190	cmp	r0, #0
11191	bne	.L1651
11192	ldrh	r3, [r4, #2528]
11193	cmp	r3, #47
11194	bls	.L1573
11195	ldr	r3, .L1687+4
11196	ldrh	r2, [r3, #4]
11197	movw	r3, #65535
11198	cmp	r2, r3
11199	bne	.L1575
11200.L1578:
11201	ldrh	r2, [r4, #220]
11202	movw	r1, #65535
11203	cmp	r2, r1
11204	bne	.L1576
11205.L1577:
11206	bl	FtlReadRefresh
11207	ldr	r3, [r4, #3156]
11208	ldr	r2, [sp, #16]
11209	adds	r3, r3, #1
11210	ldrh	r6, [r4, #172]
11211	add	r3, r3, r2, lsl #7
11212	ldrh	r2, [r4, #124]
11213	str	r3, [r4, #3156]
11214	ands	r6, r6, r2
11215	ldrh	r2, [r4, #222]
11216	ands	r6, r6, r2
11217	movw	r2, #65535
11218	cmp	r6, r2
11219	bne	.L1579
11220	ldrh	r2, [r4, #224]
11221	cmp	r2, #24
11222	ite	cc
11223	movcc	r2, #5120
11224	movcs	r2, #1024
11225	cmp	r3, r2
11226	bls	.L1579
11227	movs	r7, #0
11228	str	r7, [r4, #3156]
11229	strh	r7, [r4, #3660]	@ movhi
11230	bl	GetSwlReplaceBlock
11231	mov	r5, r0
11232	cmp	r0, r6
11233	bne	.L1581
11234	ldrh	r2, [r4, #224]
11235	ldrh	r3, [r4, #3154]
11236	cmp	r2, r3
11237	bcs	.L1582
11238	movs	r0, #64
11239	bl	List_get_gc_head_node
11240	uxth	r3, r0
11241	cmp	r3, r5
11242	beq	.L1584
11243	mov	r0, r3
11244	ldr	r3, [r4, #72]
11245	ldrh	r3, [r3, r0, lsl #1]
11246	cmp	r3, #7
11247	bhi	.L1585
11248	mov	r0, r7
11249	bl	List_get_gc_head_node
11250	uxth	r0, r0
11251	movs	r3, #128
11252	cmp	r0, r5
11253	strh	r3, [r4, #3154]	@ movhi
11254	beq	.L1584
11255	mov	r5, r0
11256.L1581:
11257	ldr	r3, [r4, #72]
11258	mov	r1, r5
11259	ldrh	r2, [r4, #3152]
11260	ldr	r0, .L1687+8
11261	ldrh	r3, [r3, r5, lsl #1]
11262	str	r2, [sp, #4]
11263	ldr	r2, [r4, #2536]
11264	ldrh	r2, [r2, r5, lsl #1]
11265	str	r2, [sp]
11266	ldrh	r2, [r4, #224]
11267	bl	sftl_printk
11268	b	.L1584
11269.L1575:
11270	ldrh	r2, [r4, #124]
11271	cmp	r2, r3
11272	beq	.L1578
11273	movs	r0, #1
11274	bl	FtlGcFreeTempBlock
11275	cmp	r0, #0
11276	beq	.L1578
11277	movs	r0, #1
11278	b	.L1573
11279.L1576:
11280	ldrh	r3, [r4, #222]
11281	cmp	r3, r1
11282	itt	eq
11283	strheq	r2, [r4, #222]	@ movhi
11284	strheq	r3, [r4, #220]	@ movhi
11285	b	.L1577
11286.L1585:
11287	movs	r3, #64
11288.L1683:
11289	strh	r3, [r4, #3154]	@ movhi
11290.L1584:
11291	bl	FtlGcReFreshBadBlk
11292	ldr	r3, [sp, #16]
11293	cmp	r3, #0
11294	bne	.L1587
11295	movw	r3, #65535
11296	cmp	r5, r3
11297	bne	.L1587
11298.L1649:
11299	ldrh	r3, [r4, #224]
11300	cmp	r3, #24
11301	bhi	.L1656
11302	ldrh	r6, [r4, #302]
11303	cmp	r3, #16
11304	bls	.L1589
11305	lsrs	r6, r6, #5
11306.L1588:
11307	ldrh	r2, [r4, #3152]
11308	cmp	r2, r3
11309	bcs	.L1591
11310	ldrh	r2, [r4, #222]
11311	ldrh	r3, [r4, #124]
11312	ands	r3, r3, r2
11313	movw	r2, #65535
11314	cmp	r3, r2
11315	bne	.L1592
11316	ldrh	r0, [r4, #3660]
11317	cbnz	r0, .L1593
11318	ldr	r3, [r4, #2552]
11319	ldr	r2, [r4, #2548]
11320	add	r3, r3, r3, lsl #1
11321	cmp	r2, r3, lsr #2
11322	bcs	.L1657
11323.L1593:
11324	ldrh	r3, [r4, #2620]
11325	add	r3, r3, r3, lsl #1
11326	lsrs	r3, r3, #2
11327.L1594:
11328	strh	r3, [r4, #3152]	@ movhi
11329	movs	r3, #0
11330	str	r3, [r4, #3164]
11331.L1573:
11332	mov	r3, sp
11333	ldr	r2, [sp, #36]
11334	bic	r3, r3, #8160
11335	bic	r3, r3, #31
11336	ldr	r3, [r3, #24]
11337	cmp	r2, r3
11338	beq	.L1650
11339	bl	__stack_chk_fail
11340.L1582:
11341	movs	r3, #80
11342	b	.L1683
11343.L1589:
11344	cmp	r3, #12
11345	bls	.L1590
11346	lsrs	r6, r6, #4
11347	b	.L1588
11348.L1590:
11349	cmp	r3, #8
11350	bls	.L1588
11351	lsrs	r6, r6, #2
11352	b	.L1588
11353.L1656:
11354	movs	r6, #1
11355	b	.L1588
11356.L1657:
11357	movs	r3, #18
11358	b	.L1594
11359.L1592:
11360	ldrh	r3, [r4, #2620]
11361	add	r3, r3, r3, lsl #1
11362	asrs	r3, r3, #2
11363	strh	r3, [r4, #3152]	@ movhi
11364.L1591:
11365	ldrh	r3, [r4, #3206]
11366	cbz	r3, .L1658
11367	adds	r6, r6, #32
11368	uxth	r6, r6
11369.L1658:
11370	movw	r5, #65535
11371.L1596:
11372	ldrh	r3, [r4, #172]
11373	movw	r2, #65535
11374	cmp	r3, r2
11375	bne	.L1604
11376	cmp	r5, r3
11377	beq	.L1605
11378	strh	r5, [r4, #172]	@ movhi
11379.L1606:
11380	ldrh	r0, [r4, #172]
11381	movs	r3, #0
11382	movw	r8, #65535
11383	strb	r3, [r4, #180]
11384	cmp	r0, r8
11385	beq	.L1604
11386	bl	IsBlkInGcList
11387	mov	r7, r0
11388	cmp	r0, #0
11389	beq	.L1609
11390	strh	r8, [r4, #172]	@ movhi
11391.L1604:
11392	ldrh	r3, [r4, #172]
11393	ldrh	r2, [r4, #24]
11394	cmp	r2, r3
11395	beq	.L1610
11396	ldrh	r2, [r4, #76]
11397	cmp	r2, r3
11398	beq	.L1610
11399	ldrh	r2, [r4, #124]
11400	cmp	r2, r3
11401	bne	.L1611
11402.L1610:
11403	movw	r3, #65535
11404	strh	r3, [r4, #172]	@ movhi
11405.L1611:
11406	ldr	r4, .L1687
11407.L1647:
11408	ldrh	r8, [r4, #172]
11409	movw	r3, #65535
11410	cmp	r8, r3
11411	bne	.L1612
11412	mov	r9, #0
11413	str	r9, [r4, #3164]
11414.L1613:
11415	ldrh	r7, [r4, #3160]
11416	mov	r0, r7
11417	bl	List_get_gc_head_node
11418	uxth	fp, r0
11419	mov	r10, r0
11420	cmp	fp, r8
11421	strh	fp, [r4, #172]	@ movhi
11422	bne	.L1614
11423	movs	r3, #0
11424	movs	r0, #8
11425	strh	r3, [r4, #3160]	@ movhi
11426	b	.L1573
11427.L1597:
11428	movs	r3, #0
11429	ldrh	r2, [r4, #224]
11430	str	r3, [r4, #3164]
11431	ldrh	r3, [r4, #3152]
11432	cmp	r2, r3
11433	bls	.L1598
11434	ldrh	r3, [r4, #3660]
11435	cbnz	r3, .L1599
11436	ldr	r3, [r4, #2552]
11437	ldr	r2, [r4, #2548]
11438	add	r3, r3, r3, lsl #1
11439	cmp	r2, r3, lsr #2
11440	bcs	.L1660
11441.L1599:
11442	ldrh	r3, [r4, #2620]
11443	add	r3, r3, r3, lsl #1
11444	lsrs	r3, r3, #2
11445.L1600:
11446	strh	r3, [r4, #3152]	@ movhi
11447	bl	FtlReadRefresh
11448	movs	r0, #0
11449	bl	List_get_gc_head_node
11450	ldr	r3, [r4, #72]
11451	uxth	r0, r0
11452	ldrh	r3, [r3, r0, lsl #1]
11453	cmp	r3, #4
11454	bls	.L1598
11455.L1686:
11456	ldrh	r0, [r4, #3660]
11457	b	.L1573
11458.L1660:
11459	movs	r3, #18
11460	b	.L1600
11461.L1598:
11462	ldrh	r0, [r4, #3660]
11463	cmp	r0, #0
11464	bne	.L1601
11465	ldrh	r5, [r4, #2620]
11466	add	r3, r5, r5, lsl #1
11467	asrs	r3, r3, #2
11468	strh	r3, [r4, #3152]	@ movhi
11469	bl	List_get_gc_head_node
11470	ldr	r3, [r4, #72]
11471	uxth	r0, r0
11472	ldrh	r1, [r4, #232]
11473	ldrh	r2, [r3, r0, lsl #1]
11474	ldrh	r3, [r4, #304]
11475	muls	r3, r1, r3
11476	add	r3, r3, r3, lsr #31
11477	cmp	r2, r3, asr #1
11478	ble	.L1602
11479	ldrh	r1, [r4, #224]
11480	subs	r3, r5, #1
11481	cmp	r1, r3
11482	blt	.L1602
11483	bl	FtlReadRefresh
11484	b	.L1686
11485.L1688:
11486	.align	2
11487.L1687:
11488	.word	.LANCHOR0
11489	.word	.LANCHOR2
11490	.word	.LC124
11491.L1602:
11492	cmp	r2, #0
11493	bne	.L1601
11494	movw	r0, #65535
11495	bl	decrement_vpc_count
11496	ldrh	r0, [r4, #224]
11497	adds	r0, r0, #1
11498	b	.L1573
11499.L1605:
11500	ldrh	r3, [r4, #222]
11501	cmp	r3, r5
11502	beq	.L1606
11503	ldr	r2, [r4, #72]
11504	ldrh	r3, [r2, r3, lsl #1]
11505	cbnz	r3, .L1607
11506	strh	r5, [r4, #222]	@ movhi
11507.L1607:
11508	ldrh	r3, [r4, #222]
11509	strh	r3, [r4, #172]	@ movhi
11510	movw	r3, #65535
11511	strh	r3, [r4, #222]	@ movhi
11512	b	.L1606
11513.L1614:
11514	mov	r0, fp
11515	bl	IsBlkInGcList
11516	adds	r3, r7, #1
11517	uxth	r3, r3
11518	cbz	r0, .L1615
11519.L1684:
11520	strh	r3, [r4, #3160]	@ movhi
11521	b	.L1613
11522.L1615:
11523	ldrh	r7, [r4, #232]
11524	uxth	r10, r10
11525	ldrh	r2, [r4, #302]
11526	ldr	r1, [r4, #72]
11527	strh	r3, [r4, #3160]	@ movhi
11528	muls	r2, r7, r2
11529	ldrh	r0, [r1, r10, lsl #1]
11530	add	r7, r2, r2, lsr #31
11531	cmp	r0, r7, asr #1
11532	bgt	.L1617
11533	cmp	r3, #48
11534	bls	.L1618
11535	cmp	r0, #8
11536	bls	.L1618
11537	ldrh	r3, [r4, #3196]
11538	cmp	r3, #35
11539	bhi	.L1618
11540.L1617:
11541	strh	r9, [r4, #3160]	@ movhi
11542.L1618:
11543	ldrh	r3, [r1, r10, lsl #1]
11544	cmp	r2, r3
11545	bgt	.L1619
11546	cmp	r5, r8
11547	bne	.L1619
11548	ldrh	r2, [r4, #3160]
11549	cmp	r2, #3
11550	bhi	.L1619
11551	movs	r3, #0
11552	strh	r5, [r4, #172]	@ movhi
11553	strh	r3, [r4, #3160]	@ movhi
11554	b	.L1686
11555.L1619:
11556	cbnz	r3, .L1620
11557	movw	r0, #65535
11558	bl	decrement_vpc_count
11559	ldrh	r3, [r4, #3160]
11560	adds	r3, r3, #1
11561	b	.L1684
11562.L1620:
11563	movs	r3, #0
11564	strb	r3, [r4, #180]
11565	ldrh	r3, [r4, #24]
11566	cmp	r3, fp
11567	bne	.L1621
11568	ldr	r1, .L1689
11569	movw	r2, #717
11570	ldr	r0, .L1689+4
11571	bl	sftl_printk
11572.L1621:
11573	ldrh	r2, [r4, #172]
11574	ldrh	r3, [r4, #76]
11575	cmp	r2, r3
11576	bne	.L1622
11577	ldr	r1, .L1689
11578	movw	r2, #718
11579	ldr	r0, .L1689+4
11580	bl	sftl_printk
11581.L1622:
11582	ldrh	r2, [r4, #172]
11583	ldrh	r3, [r4, #124]
11584	cmp	r2, r3
11585	bne	.L1623
11586	ldr	r1, .L1689
11587	movw	r2, #719
11588	ldr	r0, .L1689+4
11589	bl	sftl_printk
11590.L1623:
11591	ldr	r0, .L1689+8
11592	bl	make_superblock
11593	ldrh	r1, [r4, #172]
11594	ldr	r2, [r4, #72]
11595	movs	r3, #0
11596	strh	r3, [r4, #3662]	@ movhi
11597	ldrh	r2, [r2, r1, lsl #1]
11598	strh	r2, [r4, #3664]	@ movhi
11599	strh	r3, [r4, #174]	@ movhi
11600	strb	r3, [r4, #178]
11601.L1612:
11602	movs	r3, #1
11603	str	r3, [r4, #3272]
11604	ldr	r3, [sp, #16]
11605	ldrh	fp, [r4, #302]
11606	cbz	r3, .L1624
11607	ldrh	r3, [r4, #232]
11608	ldrh	r1, [r4, #172]
11609	ldr	r2, [r4, #72]
11610	mul	r3, fp, r3
11611	ldrh	r2, [r2, r1, lsl #1]
11612	subs	r3, r3, r2
11613	it	mi
11614	addmi	r3, r3, #3
11615	add	r6, r6, r3, asr #2
11616	uxth	r6, r6
11617.L1624:
11618	ldrh	r3, [r4, #174]
11619	adds	r2, r3, r6
11620	cmp	r2, fp
11621	itt	gt
11622	subgt	r3, fp, r3
11623	uxthgt	r6, r3
11624	movs	r3, #0
11625.L1685:
11626	str	r3, [sp, #12]
11627	ldrh	r3, [r4, #174]
11628	ldrh	r2, [sp, #12]
11629	cmp	r6, r2
11630	bls	.L1635
11631	ldr	r2, [sp, #12]
11632	movw	r9, #65535
11633	ldrh	lr, [r4, #232]
11634	mov	r10, #20
11635	add	r3, r3, r2
11636	ldr	r0, [r4, #3184]
11637	movs	r2, #0
11638	ldr	ip, .L1689+12
11639	mov	r7, r2
11640	b	.L1636
11641.L1629:
11642	ldrh	r1, [ip], #2
11643	cmp	r1, r9
11644	beq	.L1628
11645	mla	r8, r10, r7, r0
11646	adds	r7, r7, #1
11647	orr	r1, r3, r1, lsl #10
11648	uxth	r7, r7
11649	str	r1, [r8, #4]
11650.L1628:
11651	adds	r2, r2, #1
11652.L1636:
11653	uxth	r1, r2
11654	cmp	lr, r1
11655	bhi	.L1629
11656	mov	r10, #0
11657	ldrb	r2, [r4, #180]	@ zero_extendqisi2
11658	mov	r1, r7
11659	bl	FlashReadPages
11660.L1630:
11661	uxth	r3, r10
11662	cmp	r7, r3
11663	bhi	.L1634
11664	ldr	r3, [sp, #12]
11665	adds	r3, r3, #1
11666	b	.L1685
11667.L1634:
11668	mov	r8, #20
11669	ldr	r3, [r4, #3184]
11670	mul	r8, r8, r10
11671	add	r2, r3, r8
11672	ldr	r3, [r3, r8]
11673	adds	r3, r3, #1
11674	beq	.L1631
11675	ldr	r9, [r2, #12]
11676	movw	r3, #61589
11677	ldrh	r2, [r9]
11678	cmp	r2, r3
11679	bne	.L1631
11680	ldr	r3, [r9, #8]
11681	adds	r2, r3, #1
11682	bne	.L1632
11683	ldr	r1, .L1689
11684	movw	r2, #753
11685	ldr	r0, .L1689+4
11686	str	r3, [sp, #20]
11687	bl	sftl_printk
11688	ldr	r3, [sp, #20]
11689.L1632:
11690	mov	r0, r3
11691	movs	r2, #0
11692	add	r1, sp, #28
11693	bl	log2phys
11694	ldr	r0, [r4, #3184]
11695	ldr	r3, [sp, #28]
11696	add	r0, r0, r8
11697	ldr	r2, [r0, #4]
11698	cmp	r2, r3
11699	bne	.L1631
11700	ldrh	r3, [r4, #3662]
11701	movs	r2, #20
11702	ldr	r1, [r4, #3168]
11703	adds	r3, r3, #1
11704	strh	r3, [r4, #3662]	@ movhi
11705	ldr	r3, [r4, #3292]
11706	mla	r3, r2, r1, r3
11707	ldr	r1, [r0, #16]
11708	str	r3, [sp, #20]
11709	str	r1, [r3, #16]
11710	bl	Ftl_get_new_temp_ppa
11711	ldr	r3, [sp, #20]
11712	ldr	r1, [r4, #3168]
11713	movs	r2, #20
11714	str	r0, [r3, #4]
11715	ldr	r3, [r4, #3292]
11716	ldr	r0, [r4, #3184]
11717	add	r0, r0, r8
11718	mla	r3, r2, r1, r3
11719	movs	r1, #1
11720	ldr	r2, [r0, #8]
11721	str	r2, [r3, #8]
11722	ldr	r2, [r0, #12]
11723	str	r2, [r3, #12]
11724	ldr	r3, [sp, #28]
11725	str	r3, [r9, #12]
11726	ldrh	r3, [r4, #124]
11727	strh	r3, [r9, #2]	@ movhi
11728	ldr	r3, [r4, #2592]
11729	ldr	r0, [r4, #3184]
11730	str	r3, [r9, #4]
11731	ldr	r3, [r4, #3168]
11732	add	r0, r0, r8
11733	adds	r3, r3, #1
11734	str	r3, [r4, #3168]
11735	bl	FtlGcBufAlloc
11736	ldrb	r2, [r4, #131]	@ zero_extendqisi2
11737	ldr	r3, [r4, #3168]
11738	cmp	r2, r3
11739	beq	.L1633
11740	ldrh	r3, [r4, #128]
11741	cbnz	r3, .L1631
11742.L1633:
11743	bl	Ftl_gc_temp_data_write_back
11744	cbz	r0, .L1631
11745	ldr	r3, .L1689+16
11746	movs	r2, #0
11747	ldrh	r0, [r3, #3660]
11748	str	r2, [r3, #3272]
11749	movw	r2, #65535
11750	str	r2, [r3, #172]
11751	b	.L1573
11752.L1631:
11753	add	r10, r10, #1
11754	b	.L1630
11755.L1635:
11756	add	r6, r6, r3
11757	uxth	r6, r6
11758	strh	r6, [r4, #174]	@ movhi
11759	cmp	fp, r6
11760	bhi	.L1637
11761	ldr	r3, [r4, #3168]
11762	cbz	r3, .L1638
11763	bl	Ftl_gc_temp_data_write_back
11764	cbz	r0, .L1638
11765	movs	r3, #0
11766	str	r3, [r4, #3272]
11767	b	.L1686
11768.L1638:
11769	ldrh	r6, [r4, #3662]
11770	cbnz	r6, .L1639
11771	ldrh	r2, [r4, #172]
11772	ldr	r3, [r4, #72]
11773	ldrh	r3, [r3, r2, lsl #1]
11774	cbz	r3, .L1639
11775.L1640:
11776	ldr	r3, [r4, #2552]
11777	cmp	r6, r3
11778	bcc	.L1643
11779.L1645:
11780	ldrh	r2, [r4, #172]
11781	movs	r1, #0
11782	ldr	r3, [r4, #72]
11783	strh	r1, [r3, r2, lsl #1]	@ movhi
11784	ldrh	r0, [r4, #172]
11785	bl	update_vpc_list
11786	bl	l2p_flush
11787	bl	FtlVpcTblFlush
11788.L1639:
11789	movw	r3, #65535
11790	strh	r3, [r4, #172]	@ movhi
11791.L1637:
11792	movs	r3, #0
11793	str	r3, [r4, #3272]
11794	ldrh	r3, [r4, #224]
11795	cmp	r3, #2
11796	bhi	.L1646
11797	ldrh	r6, [r4, #302]
11798	b	.L1647
11799.L1643:
11800	add	r1, sp, #32
11801	mov	r0, r6
11802	movs	r2, #0
11803	bl	log2phys
11804	ldr	r0, [sp, #32]
11805	adds	r3, r0, #1
11806	beq	.L1641
11807	ubfx	r0, r0, #10, #16
11808	bl	P2V_block_in_plane
11809	ldrh	r3, [r4, #172]
11810	cmp	r3, r0
11811	beq	.L1642
11812.L1641:
11813	adds	r6, r6, #1
11814	b	.L1640
11815.L1642:
11816	ldr	r3, [r4, #2552]
11817	cmp	r6, r3
11818	bcc	.L1639
11819	b	.L1645
11820.L1646:
11821	ldrh	r0, [r4, #3660]
11822	cmp	r0, #0
11823	bne	.L1573
11824	adds	r0, r3, #1
11825	b	.L1573
11826.L1651:
11827	movs	r0, #0
11828	b	.L1573
11829.L1579:
11830	ldr	r3, [sp, #16]
11831	cmp	r3, #0
11832	beq	.L1649
11833	movw	r5, #65535
11834.L1587:
11835	ldrh	r3, [r4, #222]
11836	ldrh	r6, [r4, #124]
11837	ands	r6, r6, r3
11838	movw	r3, #65535
11839	ands	r6, r6, r5
11840	uxth	r6, r6
11841	cmp	r6, r3
11842	bne	.L1659
11843	ldrh	r3, [r4, #172]
11844	cmp	r3, r6
11845	beq	.L1597
11846.L1601:
11847	mov	r5, r6
11848.L1659:
11849	movs	r6, #1
11850	b	.L1596
11851.L1609:
11852	ldr	r0, .L1689+8
11853	bl	make_superblock
11854	ldrh	r2, [r4, #172]
11855	ldr	r3, [r4, #72]
11856	strh	r7, [r4, #174]	@ movhi
11857	strb	r7, [r4, #178]
11858	strh	r7, [r4, #3662]	@ movhi
11859	ldrh	r3, [r3, r2, lsl #1]
11860	strh	r3, [r4, #3664]	@ movhi
11861	b	.L1604
11862.L1690:
11863	.align	2
11864.L1689:
11865	.word	.LANCHOR1+568
11866	.word	.LC8
11867	.word	.LANCHOR0+172
11868	.word	.LANCHOR0+188
11869	.word	.LANCHOR0
11870.L1650:
11871	add	sp, sp, #44
11872	@ sp needed
11873	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
11874	.fnend
11875	.size	rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
11876	.align	1
11877	.global	FtlRead
11878	.syntax unified
11879	.thumb
11880	.thumb_func
11881	.fpu softvfp
11882	.type	FtlRead, %function
11883FtlRead:
11884	.fnstart
11885	@ args = 0, pretend = 0, frame = 56
11886	@ frame_needed = 0, uses_anonymous_args = 0
11887	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
11888	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
11889	mov	r8, r3
11890	mov	r5, r1
11891	.pad #60
11892	sub	sp, sp, #60
11893	cmp	r0, #16
11894	mov	r3, sp
11895	bic	r3, r3, #8160
11896	bic	r3, r3, #31
11897	str	r2, [sp, #4]
11898	ldr	r2, [r3, #24]
11899	str	r2, [sp, #52]
11900	bne	.L1692
11901	ldr	r2, [sp, #52]
11902	ldr	r3, [r3, #24]
11903	cmp	r2, r3
11904	beq	.L1693
11905.L1730:
11906	bl	__stack_chk_fail
11907.L1693:
11908	ldr	r1, [sp, #4]
11909	mov	r2, r8
11910	add	r0, r5, #256
11911	add	sp, sp, #60
11912	@ sp needed
11913	pop	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
11914	b	FtlVendorPartRead
11915.L1692:
11916	ldr	r4, .L1731
11917	ldr	r3, [r4, #340]
11918	cmp	r3, r1
11919	bls	.L1718
11920	ldr	r2, [sp, #4]
11921	cmp	r3, r2
11922	bcc	.L1718
11923	adds	r2, r1, r2
11924	str	r2, [sp, #8]
11925	cmp	r3, r2
11926	bcc	.L1718
11927	ldr	r3, .L1731+4
11928	ldr	r6, [r3]
11929	adds	r7, r6, #1
11930	beq	.L1691
11931	ldrh	r6, [r4, #258]
11932	mov	r0, r5
11933	mov	r10, #0
11934	mov	r7, r10
11935	mov	r1, r6
11936	bl	__aeabi_uidiv
11937	ldr	r3, [sp, #8]
11938	mov	r1, r6
11939	str	r0, [sp, #16]
11940	subs	r0, r3, #1
11941	mov	r6, r10
11942	bl	__aeabi_uidiv
11943	ldr	r3, [sp, #16]
11944	ldr	r2, [sp, #4]
11945	rsb	r3, r3, #1
11946	ldr	r9, [sp, #16]
11947	add	r3, r3, r0
11948	str	r3, [sp, #12]
11949	ldr	r3, [r4, #2584]
11950	str	r0, [sp, #20]
11951	add	r3, r3, r2
11952	ldr	r2, [sp, #12]
11953	str	r3, [r4, #2584]
11954	ldr	r3, [r4, #2556]
11955	strd	r10, r10, [sp, #24]
11956	add	r3, r3, r2
11957	str	r3, [r4, #2556]
11958.L1695:
11959	ldr	r3, [sp, #12]
11960	cbnz	r3, .L1713
11961	ldr	r3, .L1731
11962	ldrh	r2, [r3, #3206]
11963	cbnz	r2, .L1714
11964	ldrh	r3, [r3, #224]
11965	cmp	r3, #31
11966	bhi	.L1691
11967.L1714:
11968	movs	r1, #1
11969	movs	r0, #0
11970	bl	rk_ftl_garbage_collect
11971.L1691:
11972	mov	r3, sp
11973	ldr	r2, [sp, #52]
11974	bic	r3, r3, #8160
11975	bic	r3, r3, #31
11976	ldr	r3, [r3, #24]
11977	cmp	r2, r3
11978	bne	.L1730
11979	mov	r0, r6
11980	add	sp, sp, #60
11981	@ sp needed
11982	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
11983.L1713:
11984	add	r1, sp, #48
11985	mov	r0, r9
11986	movs	r2, #0
11987	bl	log2phys
11988	ldr	r3, [sp, #48]
11989	adds	r0, r3, #1
11990	bne	.L1728
11991	mov	fp, #0
11992	b	.L1696
11993.L1699:
11994	mla	r0, r9, r0, fp
11995	cmp	r5, r0
11996	bhi	.L1698
11997	ldr	r3, [sp, #8]
11998	cmp	r3, r0
11999	bls	.L1698
12000	subs	r0, r0, r5
12001	mov	r2, #512
12002	movs	r1, #0
12003	add	r0, r8, r0, lsl #9
12004	bl	ftl_memset
12005.L1698:
12006	add	fp, fp, #1
12007.L1696:
12008	ldrh	r0, [r4, #258]
12009	cmp	r0, fp
12010	bhi	.L1699
12011.L1700:
12012	ldr	r3, [sp, #12]
12013	add	r9, r9, #1
12014	subs	r3, r3, #1
12015	str	r3, [sp, #12]
12016	beq	.L1705
12017	ldrh	r3, [r4, #232]
12018	cmp	r7, r3, lsl #2
12019	bne	.L1695
12020.L1705:
12021	cmp	r7, #0
12022	beq	.L1695
12023	ldr	r0, [r4, #3288]
12024	mov	r1, r7
12025	movs	r2, #0
12026	mov	fp, #0
12027	bl	FlashReadPages
12028	lsl	r3, r10, #9
12029	str	r3, [sp, #40]
12030	ldr	r3, [sp, #24]
12031	lsls	r3, r3, #9
12032	str	r3, [sp, #32]
12033	ldr	r3, [sp, #28]
12034	lsls	r3, r3, #9
12035	str	r3, [sp, #36]
12036.L1712:
12037	movs	r3, #20
12038	ldr	r2, [r4, #3288]
12039	ldr	r0, [sp, #16]
12040	mul	r3, r3, fp
12041	add	r2, r2, r3
12042	ldr	r1, [r2, #16]
12043	cmp	r1, r0
12044	bne	.L1707
12045	ldr	r1, [r2, #8]
12046	ldr	r2, [r4, #3312]
12047	cmp	r1, r2
12048	bne	.L1708
12049	str	r3, [sp, #44]
12050	mov	r0, r8
12051	ldrd	r3, r2, [sp, #32]
12052	add	r1, r1, r3
12053.L1729:
12054	bl	ftl_memcpy
12055	ldr	r3, [sp, #44]
12056.L1708:
12057	ldr	ip, [r4, #3288]
12058	add	r2, ip, r3
12059	ldrd	r0, r1, [r2, #12]
12060	ldr	r0, [r0, #8]
12061	cmp	r1, r0
12062	ittt	ne
12063	ldrne	r1, [r4, #2712]
12064	addne	r1, r1, #1
12065	strne	r1, [r4, #2712]
12066	ldr	r0, [ip, r3]
12067	adds	r1, r0, #1
12068	itttt	eq
12069	moveq	r6, r0
12070	ldreq	r1, [r4, #2712]
12071	addeq	r1, r1, #1
12072	streq	r1, [r4, #2712]
12073	ldr	r3, [ip, r3]
12074	cmp	r3, #256
12075	bne	.L1711
12076	ldr	r0, [r2, #4]
12077	ubfx	r0, r0, #10, #16
12078	bl	P2V_block_in_plane
12079	bl	FtlGcRefreshBlock
12080.L1711:
12081	add	fp, fp, #1
12082	cmp	r7, fp
12083	bne	.L1712
12084	movs	r7, #0
12085	b	.L1695
12086.L1728:
12087	ldr	r2, [r4, #3288]
12088	mov	fp, #20
12089	mla	fp, fp, r7, r2
12090	str	r3, [fp, #4]
12091	ldr	r3, [sp, #16]
12092	cmp	r9, r3
12093	ldrh	r3, [r4, #258]
12094	bne	.L1701
12095	ldr	r2, [r4, #3312]
12096	mov	r1, r3
12097	str	r2, [fp, #8]
12098	mov	r0, r5
12099	str	r3, [sp, #28]
12100	bl	__aeabi_uidivmod
12101	ldr	r3, [sp, #28]
12102	str	r1, [sp, #24]
12103	subs	r2, r3, r1
12104	ldr	r1, [sp, #4]
12105	cmp	r2, r1
12106	it	cs
12107	movcs	r2, r1
12108	str	r2, [sp, #28]
12109	cmp	r3, r2
12110	bne	.L1702
12111	str	r8, [fp, #8]
12112.L1702:
12113	ldrh	r3, [r4, #312]
12114	ldr	r2, [r4, #3336]
12115	muls	r3, r7, r3
12116	adds	r7, r7, #1
12117	bic	r3, r3, #3
12118	add	r3, r3, r2
12119	strd	r3, r9, [fp, #12]
12120	b	.L1700
12121.L1701:
12122	ldr	r1, [sp, #20]
12123	mul	r2, r3, r9
12124	cmp	r9, r1
12125	bne	.L1703
12126	ldr	r1, [sp, #8]
12127	sub	r10, r1, r2
12128	cmp	r10, r3
12129	beq	.L1703
12130	ldr	r3, [r4, #3316]
12131	str	r3, [fp, #8]
12132	b	.L1702
12133.L1703:
12134	subs	r2, r2, r5
12135	add	r2, r8, r2, lsl #9
12136	str	r2, [fp, #8]
12137	b	.L1702
12138.L1707:
12139	ldr	r0, [sp, #20]
12140	cmp	r1, r0
12141	bne	.L1708
12142	ldr	r1, [r2, #8]
12143	ldr	r2, [r4, #3316]
12144	cmp	r1, r2
12145	bne	.L1708
12146	ldrh	r0, [r4, #258]
12147	str	r3, [sp, #44]
12148	ldr	r3, [sp, #20]
12149	ldr	r2, [sp, #40]
12150	muls	r0, r3, r0
12151	subs	r0, r0, r5
12152	add	r0, r8, r0, lsl #9
12153	b	.L1729
12154.L1718:
12155	mov	r6, #-1
12156	b	.L1691
12157.L1732:
12158	.align	2
12159.L1731:
12160	.word	.LANCHOR0
12161	.word	.LANCHOR2
12162	.fnend
12163	.size	FtlRead, .-FtlRead
12164	.align	1
12165	.global	sftl_read
12166	.syntax unified
12167	.thumb
12168	.thumb_func
12169	.fpu softvfp
12170	.type	sftl_read, %function
12171sftl_read:
12172	.fnstart
12173	@ args = 0, pretend = 0, frame = 0
12174	@ frame_needed = 0, uses_anonymous_args = 0
12175	@ link register save eliminated.
12176	mov	r3, r2
12177	mov	r2, r1
12178	mov	r1, r0
12179	movs	r0, #0
12180	b	FtlRead
12181	.fnend
12182	.size	sftl_read, .-sftl_read
12183	.section	.rodata.str1.1
12184.LC125:
12185	.ascii	"FtlWrite: ecc error:%x %x %x\012\000"
12186.LC126:
12187	.ascii	"FtlWrite: lpa error:%x %x\012\000"
12188	.text
12189	.align	1
12190	.global	FtlWrite
12191	.syntax unified
12192	.thumb
12193	.thumb_func
12194	.fpu softvfp
12195	.type	FtlWrite, %function
12196FtlWrite:
12197	.fnstart
12198	@ args = 0, pretend = 0, frame = 72
12199	@ frame_needed = 0, uses_anonymous_args = 0
12200	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
12201	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
12202	cmp	r0, #16
12203	mov	r8, r1
12204	.pad #76
12205	sub	sp, sp, #76
12206	strd	r2, r3, [sp, #4]
12207	mov	r3, sp
12208	bic	r3, r3, #8160
12209	bic	r3, r3, #31
12210	ldr	r2, [r3, #24]
12211	str	r2, [sp, #68]
12212	bne	.L1735
12213	ldr	r2, [sp, #68]
12214	ldr	r3, [r3, #24]
12215	cmp	r2, r3
12216	beq	.L1736
12217.L1790:
12218	bl	__stack_chk_fail
12219.L1736:
12220	ldrd	r1, r2, [sp, #4]
12221	add	r0, r8, #256
12222	add	sp, sp, #76
12223	@ sp needed
12224	pop	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
12225	b	FtlVendorPartWrite
12226.L1735:
12227	ldr	r5, .L1791
12228	ldr	r3, [r5, #340]
12229	cmp	r3, r1
12230	bls	.L1777
12231	ldr	r2, [sp, #4]
12232	cmp	r3, r2
12233	bcc	.L1777
12234	adds	r6, r1, r2
12235	cmp	r3, r6
12236	bcc	.L1777
12237	ldr	r4, .L1791+4
12238	ldr	r0, [r4]
12239	adds	r7, r0, #1
12240	beq	.L1734
12241	ldrh	r7, [r5, #258]
12242	mov	r3, #2048
12243	mov	r0, r8
12244	str	r3, [r5, #3668]
12245	mov	r1, r7
12246	bl	__aeabi_uidiv
12247	mov	r1, r7
12248	str	r0, [sp]
12249	subs	r0, r6, #1
12250	bl	__aeabi_uidiv
12251	ldr	r2, [sp]
12252	str	r0, [sp, #24]
12253	subs	r3, r0, r2
12254	ldr	r2, [sp, #4]
12255	add	fp, r3, #1
12256	str	r3, [sp, #20]
12257	ldr	r3, [r5, #2580]
12258	add	r3, r3, r2
12259	str	r3, [r5, #2580]
12260	ldr	r3, [r5, #2564]
12261	add	r3, r3, fp
12262	str	r3, [r5, #2564]
12263	ldr	r3, [r4, #8]
12264	cbz	r3, .L1779
12265	ldrh	r2, [r5, #28]
12266	add	r3, r5, #24
12267	adds	r5, r5, #76
12268	cmp	r2, #0
12269	it	ne
12270	movne	r5, r3
12271.L1738:
12272	ldr	r7, [sp]
12273	ldr	r4, .L1791
12274.L1739:
12275	cmp	fp, #0
12276	bne	.L1770
12277	ldr	r1, [sp, #20]
12278	mov	r0, fp
12279	bl	rk_ftl_garbage_collect
12280	ldrh	r3, [r4, #224]
12281	cmp	r3, #5
12282	bls	.L1782
12283.L1773:
12284	movs	r0, #0
12285.L1734:
12286	mov	r3, sp
12287	ldr	r2, [sp, #68]
12288	bic	r3, r3, #8160
12289	bic	r3, r3, #31
12290	ldr	r3, [r3, #24]
12291	cmp	r2, r3
12292	bne	.L1790
12293	add	sp, sp, #76
12294	@ sp needed
12295	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
12296.L1779:
12297	adds	r5, r5, #24
12298	b	.L1738
12299.L1770:
12300	ldrb	r2, [r5, #6]	@ zero_extendqisi2
12301	ldrh	r3, [r4, #232]
12302	cmp	r2, r3
12303	bcc	.L1740
12304	ldr	r1, .L1791+8
12305	movw	r2, #1041
12306	ldr	r0, .L1791+12
12307	bl	sftl_printk
12308.L1740:
12309	ldrh	r3, [r5, #4]
12310	cbnz	r3, .L1741
12311	ldr	r2, .L1791+16
12312	ldr	r6, .L1791+4
12313	cmp	r5, r2
12314	bne	.L1742
12315	ldrh	r9, [r4, #80]
12316	cmp	r9, #0
12317	bne	.L1743
12318	add	r0, r5, #52
12319	bl	allocate_new_data_superblock
12320	str	r9, [r6, #8]
12321.L1743:
12322	ldr	r0, .L1791+16
12323	bl	allocate_new_data_superblock
12324	ldr	r3, [r6, #8]
12325	cmp	r3, #0
12326	bne	.L1781
12327.L1745:
12328	ldr	r5, .L1791+16
12329.L1744:
12330	ldrh	r3, [r5, #4]
12331	cbnz	r3, .L1741
12332	mov	r0, r5
12333	bl	allocate_new_data_superblock
12334.L1741:
12335	ldrh	r3, [r5, #4]
12336	ldrb	r2, [r5, #7]	@ zero_extendqisi2
12337	cmp	r3, fp
12338	it	cs
12339	movcs	r3, fp
12340	lsls	r2, r2, #2
12341	cmp	r2, r3
12342	it	cs
12343	movcs	r2, r3
12344	ldrh	r3, [r4, #232]
12345	str	r2, [sp, #36]
12346	ldrb	r2, [r5, #6]	@ zero_extendqisi2
12347	cmp	r2, r3
12348	bcc	.L1746
12349	ldr	r1, .L1791+8
12350	movw	r2, #1074
12351	ldr	r0, .L1791+12
12352	bl	sftl_printk
12353.L1746:
12354	mov	r10, #0
12355.L1747:
12356	ldr	r3, [sp, #36]
12357	cmp	r3, r10
12358	bne	.L1768
12359.L1748:
12360	ldr	r0, [r4, #3296]
12361	mov	r3, r5
12362	mov	r1, r10
12363	movs	r2, #0
12364	bl	FtlProgPages
12365	cmp	fp, r10
12366	bcs	.L1769
12367	ldr	r1, .L1791+8
12368	mov	r2, #1152
12369	ldr	r0, .L1791+12
12370	bl	sftl_printk
12371.L1769:
12372	sub	fp, fp, r10
12373	b	.L1739
12374.L1742:
12375	str	r3, [r6, #8]
12376	ldrh	r3, [r4, #28]
12377	cmp	r3, #0
12378	bne	.L1745
12379	mov	r0, r5
12380	bl	allocate_new_data_superblock
12381	b	.L1744
12382.L1781:
12383	ldr	r5, .L1791+20
12384	b	.L1744
12385.L1768:
12386	ldrh	r3, [r5, #4]
12387	cmp	r3, #0
12388	beq	.L1748
12389	add	r1, sp, #44
12390	movs	r2, #0
12391	mov	r0, r7
12392	bl	log2phys
12393	mov	r0, r5
12394	bl	get_new_active_ppa
12395	movs	r3, #20
12396	mul	r3, r3, r10
12397	str	r3, [sp, #12]
12398	ldr	r2, [sp, #12]
12399	ldr	r3, [r4, #3296]
12400	add	r3, r3, r2
12401	ldrh	r2, [r4, #312]
12402	str	r0, [r3, #4]
12403	mul	r1, r10, r2
12404	bic	r1, r1, #3
12405	str	r1, [sp, #28]
12406	ldr	r0, [sp, #28]
12407	ldr	r1, [r4, #3336]
12408	str	r1, [sp, #32]
12409	add	r9, r1, r0
12410	movs	r1, #0
12411	strd	r9, r7, [r3, #12]
12412	mov	r0, r9
12413	bl	ftl_memset
12414	ldr	r3, [sp]
12415	ldrh	r6, [r4, #258]
12416	cmp	r7, r3
12417	beq	.L1749
12418	ldr	r2, [sp, #12]
12419	ldr	r3, [r4, #3296]
12420	add	r3, r3, r2
12421	ldr	r2, [sp, #24]
12422	cmp	r7, r2
12423	bne	.L1787
12424	ldr	r3, [sp, #4]
12425	add	r2, r8, r3
12426	smulbb	r3, r7, r6
12427	subs	r6, r2, r3
12428	movs	r3, #0
12429	str	r3, [sp, #16]
12430	uxth	r6, r6
12431	b	.L1752
12432.L1749:
12433	mov	r1, r6
12434	mov	r0, r8
12435	bl	__aeabi_uidivmod
12436	ldr	r3, [sp, #4]
12437	subs	r6, r6, r1
12438	str	r1, [sp, #16]
12439	cmp	r6, r3
12440	it	cs
12441	movcs	r6, r3
12442.L1752:
12443	ldrh	r2, [r4, #258]
12444	ldr	r3, [r4, #3296]
12445	ldr	r1, [sp, #12]
12446	cmp	r2, r6
12447	ldr	r2, [sp]
12448	add	r3, r3, r1
12449	bne	.L1753
12450	cmp	r7, r2
12451	bne	.L1787
12452	ldr	r2, [sp, #8]
12453	str	r2, [r3, #8]
12454.L1755:
12455	ldrb	r2, [r5, #6]	@ zero_extendqisi2
12456	ldrh	r3, [r4, #232]
12457	cmp	r2, r3
12458	bcc	.L1765
12459	ldr	r1, .L1791+8
12460	movw	r2, #1143
12461	ldr	r0, .L1791+12
12462	bl	sftl_printk
12463.L1765:
12464	ldrd	r1, r2, [sp, #28]
12465	movw	r3, #61589
12466	add	r10, r10, #1
12467	strh	r3, [r2, r1]	@ movhi
12468	str	r7, [r9, #8]
12469	adds	r7, r7, #1
12470	ldr	r3, [r4, #2592]
12471	str	r3, [r9, #4]
12472	adds	r2, r3, #1
12473	adds	r3, r3, #2
12474	itee	ne
12475	strne	r2, [r4, #2592]
12476	moveq	r3, #0
12477	streq	r3, [r4, #2592]
12478	ldr	r3, [sp, #44]
12479	str	r3, [r9, #12]
12480	ldrh	r3, [r5]
12481	strh	r3, [r9, #2]	@ movhi
12482	b	.L1747
12483.L1753:
12484	cmp	r7, r2
12485	ite	eq
12486	ldreq	r2, [r4, #3312]
12487	ldrne	r2, [r4, #3316]
12488	str	r2, [r3, #8]
12489	ldr	r2, [sp, #44]
12490	adds	r1, r2, #1
12491	beq	.L1758
12492	str	r7, [sp, #64]
12493	add	r0, sp, #48
12494	str	r2, [sp, #52]
12495	movs	r1, #1
12496	ldr	r2, [r3, #8]
12497	str	r2, [sp, #56]
12498	movs	r2, #0
12499	ldr	r3, [r3, #12]
12500	str	r3, [sp, #60]
12501	bl	FlashReadPages
12502	ldr	r3, [sp, #48]
12503	adds	r2, r3, #1
12504	bne	.L1759
12505	ldr	r2, [r4, #2712]
12506	ldr	r0, .L1791+24
12507	adds	r2, r2, #1
12508	str	r2, [r4, #2712]
12509	mov	r2, r7
12510	ldr	r1, [r9, #8]
12511	bl	sftl_printk
12512.L1763:
12513	ldr	r3, [sp]
12514	lsls	r2, r6, #9
12515	cmp	r7, r3
12516	bne	.L1764
12517	ldr	r1, [sp, #12]
12518	ldr	r3, [r4, #3296]
12519	add	r3, r3, r1
12520	ldr	r1, [sp, #8]
12521	ldr	r0, [r3, #8]
12522	ldr	r3, [sp, #16]
12523	add	r0, r0, r3, lsl #9
12524.L1789:
12525	bl	ftl_memcpy
12526	b	.L1755
12527.L1792:
12528	.align	2
12529.L1791:
12530	.word	.LANCHOR0
12531	.word	.LANCHOR2
12532	.word	.LANCHOR1+591
12533	.word	.LC8
12534	.word	.LANCHOR0+24
12535	.word	.LANCHOR0+76
12536	.word	.LC125
12537.L1759:
12538	ldr	r3, [r9, #8]
12539	cmp	r3, r7
12540	beq	.L1763
12541	ldr	r3, [r4, #2712]
12542	mov	r2, r7
12543	ldr	r0, .L1793
12544	adds	r3, r3, #1
12545	str	r3, [r4, #2712]
12546	ldr	r1, [r9, #8]
12547	bl	sftl_printk
12548	ldr	r3, [r9, #8]
12549	cmp	r3, r7
12550	beq	.L1763
12551	ldr	r1, .L1793+4
12552	mov	r2, #1128
12553	ldr	r0, .L1793+8
12554	bl	sftl_printk
12555	b	.L1763
12556.L1758:
12557	ldrh	r2, [r4, #310]
12558	movs	r1, #0
12559	ldr	r0, [r3, #8]
12560	bl	ftl_memset
12561	b	.L1763
12562.L1764:
12563	ldrh	r1, [r4, #258]
12564	ldr	r0, [sp, #12]
12565	ldr	r3, [r4, #3296]
12566	muls	r1, r7, r1
12567	add	r3, r3, r0
12568	ldr	r0, [sp, #8]
12569	sub	r1, r1, r8
12570	add	r1, r0, r1, lsl #9
12571	ldr	r0, [r3, #8]
12572	b	.L1789
12573.L1787:
12574	muls	r6, r7, r6
12575	ldr	r2, [sp, #8]
12576	sub	r6, r6, r8
12577	add	r6, r2, r6, lsl #9
12578	str	r6, [r3, #8]
12579	b	.L1755
12580.L1782:
12581	mov	r5, #256
12582	movw	r6, #65535
12583.L1771:
12584	ldrh	r2, [r4, #222]
12585	ldrh	r3, [r4, #172]
12586	ands	r3, r3, r2
12587	cmp	r3, r6
12588	bne	.L1772
12589	movs	r0, #0
12590	bl	List_get_gc_head_node
12591	uxth	r0, r0
12592	bl	FtlGcRefreshBlock
12593.L1772:
12594	movs	r1, #1
12595	mov	r0, r1
12596	movs	r3, #128
12597	strh	r3, [r4, #3154]	@ movhi
12598	strh	r3, [r4, #3152]	@ movhi
12599	bl	rk_ftl_garbage_collect
12600	movs	r1, #1
12601	movs	r0, #0
12602	bl	rk_ftl_garbage_collect
12603	ldrh	r3, [r4, #224]
12604	cmp	r3, #2
12605	bhi	.L1773
12606	subs	r5, r5, #1
12607	bne	.L1771
12608	b	.L1773
12609.L1777:
12610	mov	r0, #-1
12611	b	.L1734
12612.L1794:
12613	.align	2
12614.L1793:
12615	.word	.LC126
12616	.word	.LANCHOR1+591
12617	.word	.LC8
12618	.fnend
12619	.size	FtlWrite, .-FtlWrite
12620	.align	1
12621	.global	sftl_gc
12622	.syntax unified
12623	.thumb
12624	.thumb_func
12625	.fpu softvfp
12626	.type	sftl_gc, %function
12627sftl_gc:
12628	.fnstart
12629	@ args = 0, pretend = 0, frame = 0
12630	@ frame_needed = 0, uses_anonymous_args = 0
12631	@ link register save eliminated.
12632	movs	r1, #1
12633	mov	r0, r1
12634	b	rk_ftl_garbage_collect
12635	.fnend
12636	.size	sftl_gc, .-sftl_gc
12637	.section	.rodata.str1.1
12638.LC127:
12639	.ascii	"%s hash error this.id =%x page =%x pre_id =%x hash "
12640	.ascii	"=%x hash_r =%x\012\000"
12641	.text
12642	.align	1
12643	.global	FtlLoadSysInfo
12644	.syntax unified
12645	.thumb
12646	.thumb_func
12647	.fpu softvfp
12648	.type	FtlLoadSysInfo, %function
12649FtlLoadSysInfo:
12650	.fnstart
12651	@ args = 0, pretend = 0, frame = 0
12652	@ frame_needed = 0, uses_anonymous_args = 0
12653	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, lr}
12654	.save {r4, r5, r6, r7, r8, r9, r10, lr}
12655	.pad #16
12656	movs	r1, #0
12657	ldr	r4, .L1824
12658	ldrh	r2, [r4, #240]
12659	ldr	r3, [r4, #3300]
12660	str	r3, [r4, #3460]
12661	ldr	r0, [r4, #72]
12662	lsls	r2, r2, #1
12663	ldr	r3, [r4, #3332]
12664	str	r3, [r4, #3464]
12665	bl	ftl_memset
12666	ldrh	r0, [r4, #2624]
12667	movw	r3, #65535
12668	cmp	r0, r3
12669	bne	.L1797
12670.L1809:
12671	mov	r0, #-1
12672.L1796:
12673	add	sp, sp, #16
12674	@ sp needed
12675	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
12676.L1797:
12677	movs	r1, #1
12678	ldr	r8, .L1824+4
12679	bl	FtlGetLastWrittenPage
12680	ldr	r9, .L1824+8
12681	ldrsh	r6, [r4, #2624]
12682	sxth	r5, r0
12683	addw	r7, r4, #3452
12684	adds	r3, r5, #1
12685	strh	r3, [r4, #2626]	@ movhi
12686.L1799:
12687	cmp	r5, #0
12688	bge	.L1806
12689	ldr	r1, .L1824+8
12690	movw	r2, #1474
12691	ldr	r0, .L1824+12
12692	bl	sftl_printk
12693	b	.L1805
12694.L1806:
12695	orr	r3, r5, r6, lsl #10
12696	movs	r2, #1
12697	str	r3, [r4, #3456]
12698	mov	r1, r2
12699	ldr	r3, [r4, #3300]
12700	mov	r0, r7
12701	str	r3, [r4, #3460]
12702	bl	FlashReadPages
12703	ldr	r3, [r4, #3464]
12704	ldr	r10, [r3, #12]
12705	ldr	r3, [r4, #3452]
12706	cmp	r10, #0
12707	beq	.L1800
12708	adds	r3, r3, #1
12709	beq	.L1801
12710	ldrh	r1, [r4, #310]
12711	ldr	r0, [r4, #3460]
12712	bl	js_hash
12713	cmp	r10, r0
12714	beq	.L1802
12715	ldrh	r3, [r4, #2628]
12716	mov	r2, r6
12717	strd	r10, r0, [sp, #4]
12718	mov	r1, r9
12719	str	r3, [sp]
12720	mov	r3, r5
12721	ldr	r0, .L1824+16
12722	bl	sftl_printk
12723	cbnz	r5, .L1803
12724	ldrh	r3, [r4, #2628]
12725	cmp	r6, r3
12726	beq	.L1803
12727	ldrh	r5, [r4, #304]
12728	sxth	r6, r3
12729.L1801:
12730	subs	r5, r5, #1
12731	sxth	r5, r5
12732	b	.L1799
12733.L1803:
12734	mov	r3, #-1
12735	str	r3, [r4, #3452]
12736	b	.L1801
12737.L1800:
12738	adds	r3, r3, #1
12739	beq	.L1801
12740.L1802:
12741	ldr	r3, [r4, #3300]
12742	ldr	r3, [r3]
12743	cmp	r3, r8
12744	bne	.L1801
12745	ldr	r3, [r4, #3332]
12746	ldrh	r2, [r3]
12747	movw	r3, #61604
12748	cmp	r2, r3
12749	bne	.L1801
12750.L1805:
12751	ldrh	r3, [r4, #240]
12752	ldrh	r2, [r4, #310]
12753	adds	r3, r3, #24
12754	cmp	r2, r3, lsl #1
12755	bcs	.L1808
12756	ldr	r1, .L1824+8
12757	movw	r2, #1476
12758	ldr	r0, .L1824+12
12759	bl	sftl_printk
12760.L1808:
12761	ldr	r1, [r4, #3460]
12762	movs	r2, #48
12763	ldr	r0, .L1824+20
12764	bl	ftl_memcpy
12765	ldrh	r2, [r4, #240]
12766	ldr	r1, [r4, #3460]
12767	ldr	r0, [r4, #72]
12768	lsls	r2, r2, #1
12769	adds	r1, r1, #48
12770	bl	ftl_memcpy
12771	ldr	r2, [r4, #2468]
12772	ldr	r3, .L1824+4
12773	cmp	r2, r3
12774	bne	.L1809
12775	ldrb	r2, [r4, #2478]	@ zero_extendqisi2
12776	ldrh	r3, [r4, #254]
12777	ldrh	r5, [r4, #2476]
12778	cmp	r2, r3
12779	strh	r5, [r4, #2630]	@ movhi
12780	bne	.L1809
12781	ldrh	r3, [r4, #302]
12782	ldrh	r2, [r4, #258]
12783	ldrh	r0, [r4, #358]
12784	ldr	r6, [r4, #244]
12785	muls	r3, r5, r3
12786	add	r0, r0, r5
12787	str	r3, [r4, #2552]
12788	subs	r0, r6, r0
12789	ldrh	r1, [r4, #232]
12790	str	r5, [r4, #3672]
12791	muls	r3, r2, r3
12792	str	r3, [r4, #340]
12793	bl	__aeabi_uidiv
12794	cmp	r5, r6
12795	strh	r0, [r4, #2620]	@ movhi
12796	bls	.L1810
12797	ldr	r1, .L1824+8
12798	movw	r2, #1498
12799	ldr	r0, .L1824+12
12800	bl	sftl_printk
12801.L1810:
12802	ldrh	r3, [r4, #2484]
12803	ldrh	r1, [r4, #2482]
12804	strh	r1, [r4, #24]	@ movhi
12805	lsrs	r2, r3, #6
12806	strh	r2, [r4, #26]	@ movhi
12807	ldrh	r2, [r4, #2486]
12808	and	r3, r3, #63
12809	strh	r2, [r4, #76]	@ movhi
12810	ldrh	r2, [r4, #2488]
12811	strb	r3, [r4, #30]
12812	ldrb	r3, [r4, #2479]	@ zero_extendqisi2
12813	lsrs	r0, r2, #6
12814	and	r2, r2, #63
12815	strb	r2, [r4, #82]
12816	ldrb	r2, [r4, #2480]	@ zero_extendqisi2
12817	strb	r2, [r4, #84]
12818	ldrh	r2, [r4, #2490]
12819	strh	r2, [r4, #124]	@ movhi
12820	ldrh	r2, [r4, #2492]
12821	strh	r0, [r4, #78]	@ movhi
12822	strb	r3, [r4, #32]
12823	movw	r3, #65535
12824	lsrs	r0, r2, #6
12825	and	r2, r2, #63
12826	strb	r2, [r4, #130]
12827	ldrb	r2, [r4, #2481]	@ zero_extendqisi2
12828	strb	r2, [r4, #132]
12829	ldr	r2, [r4, #2500]
12830	str	r3, [r4, #172]
12831	movs	r3, #0
12832	str	r2, [r4, #2596]
12833	strb	r3, [r4, #178]
12834	strb	r3, [r4, #180]
12835	str	r3, [r4, #2576]
12836	str	r3, [r4, #2564]
12837	str	r3, [r4, #2556]
12838	str	r3, [r4, #2572]
12839	str	r3, [r4, #2600]
12840	str	r3, [r4, #2612]
12841	strh	r0, [r4, #126]	@ movhi
12842	str	r3, [r4, #2568]
12843	ldr	r3, [r4, #2508]
12844	ldr	r2, [r4, #2588]
12845	cmp	r3, r2
12846	ldr	r2, [r4, #2592]
12847	it	hi
12848	strhi	r3, [r4, #2588]
12849	ldr	r3, [r4, #2504]
12850	cmp	r3, r2
12851	it	hi
12852	strhi	r3, [r4, #2592]
12853	movw	r3, #65535
12854	cmp	r1, r3
12855	beq	.L1813
12856	ldr	r0, .L1824+24
12857	bl	make_superblock
12858.L1813:
12859	ldrh	r2, [r4, #76]
12860	movw	r3, #65535
12861	cmp	r2, r3
12862	beq	.L1814
12863	ldr	r0, .L1824+28
12864	bl	make_superblock
12865.L1814:
12866	ldrh	r2, [r4, #124]
12867	movw	r3, #65535
12868	cmp	r2, r3
12869	beq	.L1815
12870	ldr	r0, .L1824+32
12871	bl	make_superblock
12872.L1815:
12873	ldrh	r2, [r4, #172]
12874	movw	r3, #65535
12875	cmp	r2, r3
12876	beq	.L1816
12877	ldr	r0, .L1824+36
12878	bl	make_superblock
12879.L1816:
12880	movs	r0, #0
12881	b	.L1796
12882.L1825:
12883	.align	2
12884.L1824:
12885	.word	.LANCHOR0
12886	.word	1179929683
12887	.word	.LANCHOR1+600
12888	.word	.LC8
12889	.word	.LC127
12890	.word	.LANCHOR0+2468
12891	.word	.LANCHOR0+24
12892	.word	.LANCHOR0+76
12893	.word	.LANCHOR0+124
12894	.word	.LANCHOR0+172
12895	.fnend
12896	.size	FtlLoadSysInfo, .-FtlLoadSysInfo
12897	.section	.rodata.str1.1
12898.LC128:
12899	.ascii	"%s last blk_id =%x page =%x hash error hash =%x has"
12900	.ascii	"h_r =%x\012\000"
12901.LC129:
12902	.ascii	"%s scan blk_id =%x page =%x hash error hash =%x has"
12903	.ascii	"h_r =%x\012\000"
12904	.text
12905	.align	1
12906	.global	FtlMapTblRecovery
12907	.syntax unified
12908	.thumb
12909	.thumb_func
12910	.fpu softvfp
12911	.type	FtlMapTblRecovery, %function
12912FtlMapTblRecovery:
12913	.fnstart
12914	@ args = 0, pretend = 0, frame = 32
12915	@ frame_needed = 0, uses_anonymous_args = 0
12916	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
12917	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
12918	mov	r5, r0
12919	ldr	r4, .L1865
12920	.pad #44
12921	sub	sp, sp, #44
12922	ldr	r3, [r0, #24]
12923	movs	r1, #0
12924	addw	r9, r4, #3452
12925	movs	r7, #0
12926	str	r3, [sp, #12]
12927	ldr	r3, [r0, #12]
12928	str	r3, [sp, #24]
12929	ldr	r3, [r0, #16]
12930	str	r3, [sp, #32]
12931	ldrh	r3, [r0, #6]
12932	str	r3, [sp, #16]
12933	ldrh	r3, [r0, #8]
12934	str	r3, [sp, #28]
12935	ldr	r3, [sp, #16]
12936	ldr	r0, [sp, #12]
12937	lsls	r2, r3, #2
12938	bl	ftl_memset
12939	ldr	r3, [r4, #3300]
12940	ldr	fp, [r4, #3332]
12941	str	r3, [r4, #3460]
12942	mov	r3, #-1
12943	str	fp, [r4, #3464]
12944	strd	r7, r7, [r5, #28]
12945	str	r3, [r5]
12946	movs	r3, #1
12947	str	r3, [r5, #36]
12948.L1827:
12949	ldr	r3, [sp, #28]
12950	sxth	r6, r7
12951	uxth	r8, r7
12952	cmp	r6, r3
12953	bge	.L1847
12954	ldr	r3, [sp, #24]
12955	add	r3, r3, r6, lsl #1
12956	str	r3, [sp, #20]
12957	ldr	r3, [sp, #28]
12958	subs	r3, r3, #1
12959	cmp	r3, r6
12960	bne	.L1828
12961	ldr	r3, [sp, #20]
12962	movs	r1, #1
12963	ldr	r10, .L1865+4
12964	ldrh	r0, [r3]
12965	bl	FtlGetLastWrittenPage
12966	sxth	r7, r0
12967	adds	r3, r7, #1
12968	strh	r3, [r5, #2]	@ movhi
12969	ldr	r3, [sp, #32]
12970	strh	r8, [r5]	@ movhi
12971	mov	r8, #0
12972	ldr	r3, [r3, r6, lsl #2]
12973	str	r3, [r5, #28]
12974.L1829:
12975	sxth	r9, r8
12976	adds	r2, r7, #1
12977	cmp	r9, r2
12978	blt	.L1833
12979.L1847:
12980	mov	r0, r5
12981	bl	ftl_free_no_use_map_blk
12982	ldrh	r2, [r5, #2]
12983	ldrh	r3, [r4, #304]
12984	cmp	r2, r3
12985	bne	.L1835
12986	mov	r0, r5
12987	bl	ftl_map_blk_alloc_new_blk
12988.L1835:
12989	mov	r0, r5
12990	bl	ftl_map_blk_gc
12991	mov	r0, r5
12992	bl	ftl_map_blk_gc
12993	movs	r0, #0
12994	add	sp, sp, #44
12995	@ sp needed
12996	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
12997.L1833:
12998	ldr	r3, [sp, #20]
12999	ldr	r0, .L1865+8
13000	ldrh	r2, [r3]
13001	orr	r2, r9, r2, lsl #10
13002	str	r2, [r4, #3456]
13003	movs	r2, #1
13004	mov	r1, r2
13005	bl	FlashReadPages
13006	ldr	r2, [r4, #3464]
13007	ldr	r2, [r2, #12]
13008	str	r2, [sp, #24]
13009	cbz	r2, .L1830
13010	ldr	r1, [r4, #3452]
13011	adds	r1, r1, #1
13012	beq	.L1848
13013	ldrh	r1, [r4, #310]
13014	ldr	r0, [r4, #3460]
13015	bl	js_hash
13016	ldr	r2, [sp, #24]
13017	cmp	r2, r0
13018	beq	.L1832
13019	strd	r2, r0, [sp]
13020	mov	r3, r9
13021	ldr	r0, .L1865+12
13022	mov	r2, r6
13023	mov	r1, r10
13024	bl	sftl_printk
13025	mov	r3, #-1
13026	str	r3, [r4, #3452]
13027.L1848:
13028	add	r8, r8, #1
13029	b	.L1829
13030.L1830:
13031	ldr	r3, [r4, #3452]
13032	adds	r3, r3, #1
13033	beq	.L1848
13034.L1832:
13035	ldrh	r3, [fp, #8]
13036	ldr	r2, [sp, #16]
13037	cmp	r3, r2
13038	bcs	.L1848
13039	ldrh	r1, [fp]
13040	ldrh	r2, [r5, #4]
13041	cmp	r1, r2
13042	ittt	eq
13043	ldreq	r1, [sp, #12]
13044	ldreq	r2, [r4, #3456]
13045	streq	r2, [r1, r3, lsl #2]
13046	b	.L1848
13047.L1828:
13048	ldr	r3, [r4, #3300]
13049	mov	r0, r9
13050	str	r3, [r4, #3460]
13051	ldr	r3, [sp, #24]
13052	ldrh	r2, [r3, r6, lsl #1]
13053	ldrh	r3, [r4, #304]
13054	subs	r3, r3, #1
13055	orr	r3, r3, r2, lsl #10
13056	movs	r2, #1
13057	mov	r1, r2
13058	str	r3, [r4, #3456]
13059	bl	FlashReadPages
13060	ldr	r3, [r4, #3452]
13061	adds	r3, r3, #1
13062	beq	.L1851
13063	ldrh	r2, [fp]
13064	ldrh	r3, [r5, #4]
13065	cmp	r2, r3
13066	bne	.L1851
13067	ldrh	r2, [fp, #8]
13068	movw	r3, #64245
13069	cmp	r2, r3
13070	beq	.L1852
13071.L1851:
13072	mov	r8, #0
13073	b	.L1843
13074.L1839:
13075	ldr	r2, [r4, #3300]
13076	lsls	r6, r0, #3
13077	ldr	ip, [sp, #16]
13078	ldr	r3, [r2, r0, lsl #3]
13079	uxth	r0, r3
13080	cmp	ip, r0
13081	bls	.L1838
13082	add	r2, r2, r6
13083	mov	r3, r0
13084	ldr	r0, [sp, #12]
13085	ldr	r2, [r2, #4]
13086	str	r2, [r0, r3, lsl #2]
13087.L1838:
13088	adds	r1, r1, #1
13089.L1837:
13090	ldrh	r3, [r4, #304]
13091	sxth	r0, r1
13092	subs	r3, r3, #1
13093	cmp	r0, r3
13094	blt	.L1839
13095.L1845:
13096	adds	r7, r7, #1
13097	b	.L1827
13098.L1852:
13099	movs	r1, #0
13100	b	.L1837
13101.L1844:
13102	ldr	r3, [sp, #20]
13103	mov	r0, r9
13104	ldrh	r2, [r3]
13105	orr	r2, r10, r2, lsl #10
13106	str	r2, [r4, #3456]
13107	movs	r2, #1
13108	mov	r1, r2
13109	bl	FlashReadPages
13110	ldr	r2, [r4, #3464]
13111	ldr	r2, [r2, #12]
13112	str	r2, [sp, #36]
13113	cbz	r2, .L1840
13114	ldr	r1, [r4, #3452]
13115	adds	r1, r1, #1
13116	beq	.L1849
13117	ldrh	r1, [r4, #310]
13118	ldr	r0, [r4, #3460]
13119	bl	js_hash
13120	ldr	r2, [sp, #36]
13121	cmp	r2, r0
13122	beq	.L1842
13123	strd	r2, r0, [sp]
13124	mov	r3, r10
13125	ldr	r1, .L1865+4
13126	mov	r2, r6
13127	ldr	r0, .L1865+16
13128	bl	sftl_printk
13129	mov	r3, #-1
13130	str	r3, [r4, #3452]
13131.L1849:
13132	add	r8, r8, #1
13133.L1843:
13134	ldrh	r2, [r4, #304]
13135	sxth	r10, r8
13136	cmp	r10, r2
13137	blt	.L1844
13138	b	.L1845
13139.L1840:
13140	ldr	r3, [r4, #3452]
13141	adds	r3, r3, #1
13142	beq	.L1849
13143.L1842:
13144	ldrh	r3, [fp, #8]
13145	ldr	r2, [sp, #16]
13146	cmp	r3, r2
13147	bcs	.L1849
13148	ldrh	r1, [fp]
13149	ldrh	r2, [r5, #4]
13150	cmp	r1, r2
13151	ittt	eq
13152	ldreq	r1, [sp, #12]
13153	ldreq	r2, [r4, #3456]
13154	streq	r2, [r1, r3, lsl #2]
13155	b	.L1849
13156.L1866:
13157	.align	2
13158.L1865:
13159	.word	.LANCHOR0
13160	.word	.LANCHOR1+615
13161	.word	.LANCHOR0+3452
13162	.word	.LC128
13163	.word	.LC129
13164	.fnend
13165	.size	FtlMapTblRecovery, .-FtlMapTblRecovery
13166	.align	1
13167	.global	FtlLoadVonderInfo
13168	.syntax unified
13169	.thumb
13170	.thumb_func
13171	.fpu softvfp
13172	.type	FtlLoadVonderInfo, %function
13173FtlLoadVonderInfo:
13174	.fnstart
13175	@ args = 0, pretend = 0, frame = 0
13176	@ frame_needed = 0, uses_anonymous_args = 0
13177	ldr	r0, .L1868
13178	push	{r3, lr}
13179	.save {r3, lr}
13180	ldrh	r3, [r0, #320]
13181	strh	r3, [r0, #3618]	@ movhi
13182	movw	r3, #61574
13183	strh	r3, [r0, #3612]	@ movhi
13184	ldrh	r3, [r0, #344]
13185	strh	r3, [r0, #3616]	@ movhi
13186	ldrh	r3, [r0, #322]
13187	strh	r3, [r0, #3614]	@ movhi
13188	ldr	r3, [r0, #348]
13189	addw	r0, r0, #3608
13190	str	r3, [r0, #12]
13191	ldr	r3, [r0, #-240]
13192	str	r3, [r0, #16]
13193	ldr	r3, [r0, #-244]
13194	str	r3, [r0, #20]
13195	ldr	r3, [r0, #-236]
13196	str	r3, [r0, #24]
13197	bl	FtlMapTblRecovery
13198	movs	r0, #0
13199	pop	{r3, pc}
13200.L1869:
13201	.align	2
13202.L1868:
13203	.word	.LANCHOR0
13204	.fnend
13205	.size	FtlLoadVonderInfo, .-FtlLoadVonderInfo
13206	.align	1
13207	.global	FtlLoadMapInfo
13208	.syntax unified
13209	.thumb
13210	.thumb_func
13211	.fpu softvfp
13212	.type	FtlLoadMapInfo, %function
13213FtlLoadMapInfo:
13214	.fnstart
13215	@ args = 0, pretend = 0, frame = 0
13216	@ frame_needed = 0, uses_anonymous_args = 0
13217	push	{r3, lr}
13218	.save {r3, lr}
13219	bl	FtlL2PDataInit
13220	ldr	r0, .L1871
13221	bl	FtlMapTblRecovery
13222	movs	r0, #0
13223	pop	{r3, pc}
13224.L1872:
13225	.align	2
13226.L1871:
13227	.word	.LANCHOR0+3392
13228	.fnend
13229	.size	FtlLoadMapInfo, .-FtlLoadMapInfo
13230	.align	1
13231	.global	FtlSysBlkInit
13232	.syntax unified
13233	.thumb
13234	.thumb_func
13235	.fpu softvfp
13236	.type	FtlSysBlkInit, %function
13237FtlSysBlkInit:
13238	.fnstart
13239	@ args = 0, pretend = 0, frame = 0
13240	@ frame_needed = 0, uses_anonymous_args = 0
13241	push	{r4, r5, r6, lr}
13242	.save {r4, r5, r6, lr}
13243	movs	r3, #0
13244	ldr	r4, .L1889
13245	ldrh	r0, [r4, #236]
13246	strh	r3, [r4, #3472]	@ movhi
13247	bl	FtlFreeSysBlkQueueInit
13248	bl	FtlScanSysBlk
13249	ldrh	r2, [r4, #2624]
13250	movw	r3, #65535
13251	cmp	r2, r3
13252	bne	.L1874
13253.L1876:
13254	mov	r5, #-1
13255.L1873:
13256	mov	r0, r5
13257	pop	{r4, r5, r6, pc}
13258.L1874:
13259	bl	FtlLoadSysInfo
13260	mov	r5, r0
13261	cmp	r0, #0
13262	bne	.L1876
13263	bl	FtlLoadMapInfo
13264	bl	FtlLoadVonderInfo
13265	bl	Ftl_load_ext_data
13266	bl	FtlLoadEctTbl
13267	bl	FtlFreeSysBLkSort
13268	bl	SupperBlkListInit
13269	bl	FtlPowerLostRecovery
13270	movs	r0, #1
13271	bl	FtlUpdateVaildLpn
13272	ldr	r2, [r4, #2540]
13273	ldrh	r1, [r4, #338]
13274	mov	r3, r5
13275	adds	r2, r2, #4
13276	movs	r0, #12
13277.L1877:
13278	cmp	r3, r1
13279	bge	.L1882
13280	mul	r6, r0, r3
13281	ldr	r6, [r2, r6]
13282	cmp	r6, #0
13283	bge	.L1878
13284.L1882:
13285	ldrh	r2, [r4, #2496]
13286	cmp	r3, r1
13287	add	r2, r2, #1
13288	strh	r2, [r4, #2496]	@ movhi
13289	bge	.L1888
13290.L1879:
13291	ldr	r0, .L1889+4
13292	bl	FtlSuperblockPowerLostFix
13293	ldr	r0, .L1889+8
13294	bl	FtlSuperblockPowerLostFix
13295	ldrh	r1, [r4, #24]
13296	ldr	r2, [r4, #72]
13297	ldrh	r0, [r4, #28]
13298	ldrh	r3, [r2, r1, lsl #1]
13299	subs	r3, r3, r0
13300	strh	r3, [r2, r1, lsl #1]	@ movhi
13301	ldrh	r0, [r4, #76]
13302	ldr	r1, [r4, #72]
13303	ldrh	r3, [r4, #302]
13304	strh	r3, [r4, #26]	@ movhi
13305	movs	r3, #0
13306	strb	r3, [r4, #30]
13307	strh	r3, [r4, #28]	@ movhi
13308	ldrh	r6, [r4, #80]
13309	ldrh	r2, [r1, r0, lsl #1]
13310	subs	r2, r2, r6
13311	strh	r2, [r1, r0, lsl #1]	@ movhi
13312	strb	r3, [r4, #82]
13313	strh	r3, [r4, #80]	@ movhi
13314	ldrh	r3, [r4, #2498]
13315	ldrh	r2, [r4, #302]
13316	adds	r3, r3, #1
13317	strh	r2, [r4, #78]	@ movhi
13318	strh	r3, [r4, #2498]	@ movhi
13319	bl	l2p_flush
13320	bl	FtlVpcTblFlush
13321	bl	FtlVpcTblFlush
13322	b	.L1883
13323.L1878:
13324	adds	r3, r3, #1
13325	b	.L1877
13326.L1888:
13327	ldrh	r3, [r4, #3472]
13328	cmp	r3, #0
13329	bne	.L1879
13330.L1883:
13331	ldrh	r0, [r4, #24]
13332	movw	r3, #65535
13333	cmp	r0, r3
13334	beq	.L1884
13335	ldrh	r3, [r4, #28]
13336	ldrh	r2, [r4, #80]
13337	orrs	r3, r3, r2
13338	uxth	r3, r3
13339	cbnz	r3, .L1884
13340	bl	FtlGcRefreshBlock
13341	ldrh	r0, [r4, #76]
13342	bl	FtlGcRefreshBlock
13343	bl	FtlVpcTblFlush
13344	ldr	r0, .L1889+4
13345	bl	allocate_new_data_superblock
13346	ldr	r0, .L1889+8
13347	bl	allocate_new_data_superblock
13348.L1884:
13349	bl	FtlVpcCheckAndModify
13350	b	.L1873
13351.L1890:
13352	.align	2
13353.L1889:
13354	.word	.LANCHOR0
13355	.word	.LANCHOR0+24
13356	.word	.LANCHOR0+76
13357	.fnend
13358	.size	FtlSysBlkInit, .-FtlSysBlkInit
13359	.align	1
13360	.global	ftl_low_format
13361	.syntax unified
13362	.thumb
13363	.thumb_func
13364	.fpu softvfp
13365	.type	ftl_low_format, %function
13366ftl_low_format:
13367	.fnstart
13368	@ args = 0, pretend = 0, frame = 0
13369	@ frame_needed = 0, uses_anonymous_args = 0
13370	push	{r3, r4, r5, r6, r7, r8, r9, lr}
13371	.save {r3, r4, r5, r6, r7, r8, r9, lr}
13372	movs	r3, #0
13373	ldr	r4, .L1915
13374	ldrh	r0, [r4, #236]
13375	str	r3, [r4, #2588]
13376	str	r3, [r4, #2592]
13377	str	r3, [r4, #2604]
13378	bl	FtlFreeSysBlkQueueInit
13379	bl	FtlLoadBbt
13380	cbz	r0, .L1892
13381	bl	FtlMakeBbt
13382.L1892:
13383	ldr	r0, .L1915+4
13384	movs	r2, #0
13385.L1893:
13386	ldrh	r1, [r4, #258]
13387	uxth	r3, r2
13388	adds	r2, r2, #1
13389	cmp	r3, r1, lsl #7
13390	blt	.L1894
13391	ldrh	r6, [r4, #240]
13392	movs	r5, #0
13393.L1895:
13394	ldrh	r3, [r4, #242]
13395	cmp	r3, r6
13396	bhi	.L1896
13397	ldrh	r1, [r4, #232]
13398	subs	r3, r5, #3
13399	cmp	r3, r1, lsl #1
13400	bge	.L1897
13401.L1901:
13402	movs	r5, #0
13403	mov	r8, r5
13404.L1898:
13405	ldrh	r3, [r4, #240]
13406	uxth	r0, r5
13407	cmp	r3, r0
13408	bhi	.L1902
13409	ldrh	r5, [r4, #232]
13410	ldr	r9, [r4, #244]
13411	ldrh	r3, [r4, #242]
13412	mov	r1, r5
13413	mov	r0, r9
13414	str	r3, [r4, #3284]
13415	bl	__aeabi_uidiv
13416	ubfx	r7, r0, #5, #16
13417	add	r3, r7, #36
13418	strh	r3, [r4, #2620]	@ movhi
13419	movs	r3, #24
13420	mov	r6, r0
13421	str	r0, [r4, #2552]
13422	muls	r3, r5, r3
13423	cmp	r8, r3
13424	ble	.L1903
13425	mov	r1, r5
13426	sub	r0, r9, r8
13427	bl	__aeabi_uidiv
13428	lsrs	r3, r0, #5
13429	adds	r3, r3, #24
13430	str	r0, [r4, #2552]
13431	strh	r3, [r4, #2620]	@ movhi
13432.L1903:
13433	ldrh	r3, [r4, #294]
13434	cbz	r3, .L1905
13435	ldrh	r2, [r4, #2620]
13436	add	r2, r2, r3, lsr #1
13437	strh	r2, [r4, #2620]	@ movhi
13438	mul	r2, r5, r3
13439	cmp	r8, r2
13440	itttt	lt
13441	strlt	r6, [r4, #2552]
13442	addlt	r3, r3, #32
13443	addlt	r3, r3, r7
13444	strhlt	r3, [r4, #2620]	@ movhi
13445.L1905:
13446	ldrh	r1, [r4, #2620]
13447	ldr	r3, [r4, #2552]
13448	ldr	r6, .L1915+8
13449	subs	r3, r3, r1
13450	mul	r1, r5, r3
13451	ldrh	r3, [r4, #302]
13452	str	r1, [r4, #3672]
13453	movw	r5, #65535
13454	muls	r1, r3, r1
13455	ldrh	r3, [r4, #258]
13456	str	r1, [r4, #2552]
13457	muls	r1, r3, r1
13458	str	r1, [r4, #340]
13459	bl	FtlBbmTblFlush
13460	ldrh	r2, [r4, #242]
13461	movs	r1, #0
13462	ldr	r0, [r4, #72]
13463	lsls	r2, r2, #1
13464	bl	ftl_memset
13465	movs	r3, #0
13466	str	r5, [r4, #172]
13467	str	r3, [r4, #2548]
13468	strb	r3, [r4, #178]
13469	strb	r3, [r4, #180]
13470	strb	r3, [r4, #30]
13471	str	r3, [r4, #24]
13472	movs	r3, #1
13473	strb	r3, [r4, #32]
13474.L1907:
13475	mov	r0, r6
13476	bl	make_superblock
13477	ldrb	r3, [r4, #31]	@ zero_extendqisi2
13478	ldrh	r2, [r4, #24]
13479	cmp	r3, #0
13480	bne	.L1908
13481	ldr	r3, [r4, #72]
13482	strh	r5, [r3, r2, lsl #1]	@ movhi
13483	ldrh	r3, [r4, #24]
13484	adds	r3, r3, #1
13485	strh	r3, [r4, #24]	@ movhi
13486	b	.L1907
13487.L1894:
13488	ldr	r5, [r4, #3312]
13489	mvns	r1, r3
13490	orr	r1, r3, r1, lsl #16
13491	str	r1, [r5, r3, lsl #2]
13492	ldr	r1, [r4, #3316]
13493	str	r0, [r1, r3, lsl #2]
13494	b	.L1893
13495.L1896:
13496	mov	r0, r6
13497	movs	r1, #1
13498	adds	r6, r6, #1
13499	bl	FtlLowFormatEraseBlock
13500	add	r5, r5, r0
13501	uxth	r6, r6
13502	uxth	r5, r5
13503	b	.L1895
13504.L1897:
13505	mov	r0, r5
13506	bl	__aeabi_uidiv
13507	ldr	r3, [r4, #332]
13508	add	r0, r0, r3
13509	uxth	r0, r0
13510	bl	FtlSysBlkNumInit
13511	ldrh	r0, [r4, #236]
13512	bl	FtlFreeSysBlkQueueInit
13513	ldrh	r5, [r4, #240]
13514.L1899:
13515	ldrh	r3, [r4, #242]
13516	cmp	r3, r5
13517	bls	.L1901
13518	mov	r0, r5
13519	adds	r5, r5, #1
13520	movs	r1, #1
13521	uxth	r5, r5
13522	bl	FtlLowFormatEraseBlock
13523	b	.L1899
13524.L1902:
13525	movs	r1, #0
13526	adds	r5, r5, #1
13527	bl	FtlLowFormatEraseBlock
13528	add	r8, r8, r0
13529	uxth	r8, r8
13530	b	.L1898
13531.L1908:
13532	ldr	r3, [r4, #2588]
13533	movw	r5, #65535
13534	str	r3, [r4, #36]
13535	adds	r3, r3, #1
13536	str	r3, [r4, #2588]
13537	ldr	r3, [r4, #72]
13538	ldrh	r1, [r4, #28]
13539	ldr	r6, .L1915+12
13540	strh	r1, [r3, r2, lsl #1]	@ movhi
13541	movs	r3, #0
13542	strh	r3, [r4, #78]	@ movhi
13543	strb	r3, [r4, #82]
13544	ldrh	r3, [r4, #24]
13545	adds	r3, r3, #1
13546	strh	r3, [r4, #76]	@ movhi
13547	movs	r3, #1
13548	strb	r3, [r4, #84]
13549.L1909:
13550	mov	r0, r6
13551	bl	make_superblock
13552	ldrb	r3, [r4, #83]	@ zero_extendqisi2
13553	ldrh	r2, [r4, #76]
13554	cbnz	r3, .L1910
13555	ldr	r3, [r4, #72]
13556	strh	r5, [r3, r2, lsl #1]	@ movhi
13557	ldrh	r3, [r4, #76]
13558	adds	r3, r3, #1
13559	strh	r3, [r4, #76]	@ movhi
13560	b	.L1909
13561.L1910:
13562	ldr	r3, [r4, #2588]
13563	movw	r5, #65535
13564	str	r3, [r4, #88]
13565	adds	r3, r3, #1
13566	str	r3, [r4, #2588]
13567	ldr	r3, [r4, #72]
13568	ldrh	r1, [r4, #80]
13569	strh	r1, [r3, r2, lsl #1]	@ movhi
13570	strh	r5, [r4, #124]	@ movhi
13571	bl	FtlFreeSysBlkQueueOut
13572	movs	r3, #0
13573	strh	r3, [r4, #2626]	@ movhi
13574	ldr	r3, [r4, #3672]
13575	strh	r3, [r4, #2630]	@ movhi
13576	ldr	r3, [r4, #2588]
13577	str	r3, [r4, #2632]
13578	strh	r0, [r4, #2624]	@ movhi
13579	adds	r3, r3, #1
13580	strh	r5, [r4, #2628]	@ movhi
13581	str	r3, [r4, #2588]
13582	bl	FtlVpcTblFlush
13583	bl	FtlSysBlkInit
13584	cbnz	r0, .L1911
13585	ldr	r3, .L1915+16
13586	movs	r2, #1
13587	str	r2, [r3]
13588.L1911:
13589	movs	r0, #0
13590	pop	{r3, r4, r5, r6, r7, r8, r9, pc}
13591.L1916:
13592	.align	2
13593.L1915:
13594	.word	.LANCHOR0
13595	.word	168778952
13596	.word	.LANCHOR0+24
13597	.word	.LANCHOR0+76
13598	.word	.LANCHOR2
13599	.fnend
13600	.size	ftl_low_format, .-ftl_low_format
13601	.align	1
13602	.global	sftl_init
13603	.syntax unified
13604	.thumb
13605	.thumb_func
13606	.fpu softvfp
13607	.type	sftl_init, %function
13608sftl_init:
13609	.fnstart
13610	@ args = 0, pretend = 0, frame = 0
13611	@ frame_needed = 0, uses_anonymous_args = 0
13612	push	{r3, r4, r5, lr}
13613	.save {r3, r4, r5, lr}
13614	mov	r3, #-1
13615	ldr	r5, .L1921
13616	ldr	r4, .L1921+4
13617	ldr	r1, .L1921+8
13618	ldr	r0, .L1921+12
13619	str	r3, [r5]
13620	bl	sftl_printk
13621	mov	r0, r4
13622	bl	FtlConstantsInit
13623	bl	FtlMemInit
13624	bl	FtlVariablesInit
13625	ldrh	r0, [r4, #236]
13626	bl	FtlFreeSysBlkQueueInit
13627	bl	FtlLoadBbt
13628	cbnz	r0, .L1918
13629	bl	FtlSysBlkInit
13630	cbnz	r0, .L1918
13631	movs	r3, #1
13632	str	r3, [r5]
13633	ldrh	r3, [r4, #224]
13634	cmp	r3, #15
13635	bhi	.L1918
13636	movw	r4, #8129
13637.L1919:
13638	movs	r1, #1
13639	movs	r0, #0
13640	bl	rk_ftl_garbage_collect
13641	subs	r4, r4, #1
13642	bne	.L1919
13643.L1918:
13644	movs	r0, #0
13645	pop	{r3, r4, r5, pc}
13646.L1922:
13647	.align	2
13648.L1921:
13649	.word	.LANCHOR2
13650	.word	.LANCHOR0
13651	.word	.LC0
13652	.word	.LC77
13653	.fnend
13654	.size	sftl_init, .-sftl_init
13655	.section	.rodata.str1.1
13656.LC130:
13657	.ascii	"write_idblock %x %x\012\000"
13658.LC131:
13659	.ascii	"write_idblock fail! %x %x %x %x\012\000"
13660.LC132:
13661	.ascii	"%s idb buffer alloc fail\012\000"
13662	.text
13663	.align	1
13664	.global	FtlWriteToIDB
13665	.syntax unified
13666	.thumb
13667	.thumb_func
13668	.fpu softvfp
13669	.type	FtlWriteToIDB, %function
13670FtlWriteToIDB:
13671	.fnstart
13672	@ args = 0, pretend = 0, frame = 104
13673	@ frame_needed = 0, uses_anonymous_args = 0
13674	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
13675	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
13676	add	r8, r1, r0
13677	add	r9, r8, #-1
13678	.pad #116
13679	sub	sp, sp, #116
13680	ldr	r5, .L1988
13681	mov	r3, sp
13682	mov	r4, r0
13683	bic	r3, r3, #8160
13684	mov	r6, r1
13685	bic	r3, r3, #31
13686	mov	r7, r2
13687	cmp	r9, #63
13688	ldr	r3, [r3, #24]
13689	str	r3, [sp, #108]
13690	bls	.L1924
13691	cmp	r0, #576
13692	bcc	.L1925
13693.L1924:
13694	ldr	r3, [r5, #3676]
13695	cbnz	r3, .L1926
13696.L1987:
13697	movs	r4, #0
13698	b	.L1923
13699.L1926:
13700	ldr	r3, [r5, #3680]
13701	str	r3, [sp, #12]
13702	ldr	r2, [r3]
13703	ldr	r3, .L1988+4
13704	cmp	r2, r3
13705	bne	.L1928
13706	ldr	r3, [sp, #12]
13707	movs	r2, #0
13708	ldrh	r1, [r5, #10]
13709	add	r0, r3, #260096
13710	movw	r3, #65023
13711.L1932:
13712	ldr	r4, [r0, #-4]!
13713	cbnz	r4, .L1929
13714	ldr	r4, [sp, #12]
13715	subs	r3, r3, #1
13716	ldr	r4, [r4, r2, lsl #2]
13717	adds	r2, r2, #1
13718	cmp	r2, #4096
13719	str	r4, [r0, #2048]
13720	it	hi
13721	movhi	r2, #0
13722	cmp	r3, #4096
13723	bne	.L1932
13724	mov	r9, #512
13725	b	.L1931
13726.L1929:
13727	adds	r3, r3, #127
13728	lsr	r9, r3, #7
13729.L1931:
13730	lsls	r1, r1, #2
13731	add	r0, r9, #4
13732	ldr	r4, .L1988
13733	uxth	r1, r1
13734	bl	__aeabi_uidiv
13735	adds	r3, r0, #1
13736	mov	r2, r3
13737	ldr	r0, .L1988+8
13738	mov	r1, r9
13739	str	r3, [sp, #16]
13740	bl	sftl_printk
13741	lsl	r3, r9, #7
13742	str	r3, [sp, #32]
13743	movs	r3, #0
13744	mov	fp, r3
13745	str	r3, [sp, #20]
13746.L1933:
13747	ldr	r3, [sp, #16]
13748	add	r3, r3, fp
13749	str	r3, [sp, #24]
13750	cmp	r3, #8
13751	bls	.L1955
13752	ldr	r3, [sp, #20]
13753	cmp	r3, #0
13754	bne	.L1954
13755.L1928:
13756	mov	r9, #-1
13757	b	.L1954
13758.L1955:
13759	ldr	r0, [r4, #3684]
13760	mov	r2, #512
13761	movs	r1, #0
13762	bl	memset
13763	ldrh	r6, [r4, #10]
13764	mul	r3, r6, fp
13765	str	r3, [sp, #28]
13766	ldr	r3, [r4, #3260]
13767	cmp	r3, #0
13768	beq	.L1964
13769	ldr	r3, [r4, #3264]
13770	cmp	r3, #0
13771	ite	eq
13772	moveq	r8, #6
13773	movne	r8, #9
13774.L1934:
13775	mul	r7, r6, fp
13776	movs	r5, #0
13777.L1935:
13778	ldr	r3, [r4, #3248]
13779	mov	r1, r7
13780	movs	r0, #0
13781	adds	r5, r5, #1
13782	blx	r3
13783	ldr	r3, [sp, #16]
13784	add	r7, r7, r6
13785	cmp	r3, r5
13786	bhi	.L1935
13787	cmp	r8, #9
13788	bne	.L1966
13789	ldr	r5, [r4, #3684]
13790	mov	r2, #1024
13791	movs	r1, #0
13792	mov	r0, r5
13793	bl	ftl_memset
13794	ldr	r3, .L1988+12
13795	movs	r1, #12
13796	strd	r3, r1, [r5]
13797	movs	r3, #0
13798	str	r3, [r5, #12]
13799	mov	r3, #1024
13800	strh	r3, [r5, #16]	@ movhi
13801	ldrh	r3, [r4, #10]
13802	adds	r0, r5, r1
13803	strh	r3, [r5, #18]	@ movhi
13804	mov	r3, #4096
13805	str	r3, [r5, #20]
13806	bl	js_hash
13807	str	r0, [r5, #8]
13808.L1936:
13809	ldr	r3, [sp, #16]
13810	ldr	r10, [sp, #12]
13811	muls	r3, r6, r3
13812	movs	r6, #0
13813	str	r3, [sp, #36]
13814.L1937:
13815	ldr	r3, [sp, #36]
13816	cmp	r6, r3
13817	beq	.L1944
13818	cmp	r8, #9
13819	ite	eq
13820	addeq	r3, r6, #1
13821	lslne	r3, r6, #2
13822	str	r3, [sp, #44]
13823	movw	r3, #61424
13824	str	r3, [sp, #48]
13825	cmp	r6, #0
13826	bne	.L1940
13827	cmp	r8, #9
13828	bne	.L1940
13829	ldr	r3, [r4, #3260]
13830	movs	r0, #70
13831	blx	r3
13832	ldr	r7, [r4, #3252]
13833	ldr	r1, [sp, #28]
13834	add	r3, sp, #44
13835	mov	r2, r5
13836	mov	r0, r6
13837	blx	r7
13838	ldr	r3, [r4, #3260]
13839	mov	r7, r0
13840	ldrb	r0, [r4, #22]	@ zero_extendqisi2
13841	blx	r3
13842	adds	r7, r7, #1
13843	bne	.L1941
13844.L1944:
13845	ldrb	r3, [r4, #14]	@ zero_extendqisi2
13846	ldrh	r10, [r4, #10]
13847	str	r3, [sp, #28]
13848	ldr	r3, [r4, #3260]
13849	ldr	r5, [r4, #3684]
13850	mul	r7, r10, fp
13851	cmp	r3, #0
13852	bne	.L1942
13853	mov	r8, #6
13854.L1943:
13855	ldr	r3, [sp, #16]
13856	movs	r6, #0
13857	mul	r10, r10, r3
13858.L1946:
13859	cmp	r6, r10
13860	beq	.L1950
13861	cmp	r6, #0
13862	bne	.L1947
13863	cmp	r8, #9
13864	bne	.L1947
13865	ldr	r3, [r4, #3260]
13866	movs	r0, #70
13867	blx	r3
13868	ldr	r3, [r4, #3264]
13869	movs	r0, #2
13870	blx	r3
13871	mov	r2, r5
13872	ldr	ip, [r4, #3256]
13873	mov	r1, r7
13874	add	r3, sp, #44
13875	mov	r0, r6
13876	blx	ip
13877	ldr	r3, [r4, #3264]
13878	ldr	r0, [sp, #28]
13879	blx	r3
13880	ldr	r3, [r4, #3260]
13881	ldrb	r0, [r4, #22]	@ zero_extendqisi2
13882	blx	r3
13883	ldr	r3, [r5]
13884	ldr	r2, .L1988+12
13885	cmp	r3, r2
13886	beq	.L1948
13887.L1950:
13888	ldr	r0, [r4, #3684]
13889	movs	r5, #0
13890	ldr	r1, [sp, #12]
13891	mov	ip, r0
13892.L1949:
13893	mov	r6, ip
13894	mov	r7, r1
13895	add	ip, ip, #4
13896	adds	r1, r1, #4
13897	ldr	r2, [r6]
13898	ldr	r3, [r7]
13899	cmp	r2, r3
13900	beq	.L1952
13901	mov	r2, #512
13902	movs	r1, #0
13903	bl	memset
13904	str	r5, [sp]
13905	ldr	r3, [r7]
13906	mov	r1, fp
13907	ldr	r0, .L1988+16
13908	ldr	r2, [r6]
13909	bl	sftl_printk
13910	ldrh	r1, [r4, #10]
13911	ldr	r3, [r4, #3248]
13912	movs	r0, #0
13913	mul	r1, fp, r1
13914	blx	r3
13915.L1953:
13916	ldr	fp, [sp, #24]
13917	b	.L1933
13918.L1964:
13919	mov	r8, #6
13920	b	.L1934
13921.L1966:
13922	movs	r5, #0
13923	b	.L1936
13924.L1940:
13925	ldr	r1, [sp, #28]
13926	add	r3, sp, #44
13927	ldr	r7, [r4, #3252]
13928	mov	r2, r10
13929	add	r1, r1, r6
13930	movs	r0, #0
13931	blx	r7
13932	adds	r0, r0, #1
13933	beq	.L1944
13934	add	r10, r10, #2048
13935.L1941:
13936	adds	r6, r6, #1
13937	b	.L1937
13938.L1942:
13939	ldr	r3, [r4, #3264]
13940	cmp	r3, #0
13941	ite	eq
13942	moveq	r8, #6
13943	movne	r8, #9
13944	b	.L1943
13945.L1947:
13946	ldr	ip, [r4, #3256]
13947	add	r3, sp, #44
13948	mov	r2, r5
13949	adds	r1, r7, r6
13950	movs	r0, #0
13951	blx	ip
13952	adds	r0, r0, #1
13953	beq	.L1950
13954	ldr	r1, [sp, #48]
13955	movw	r3, #61424
13956	cmp	r1, r3
13957	bne	.L1950
13958	add	r5, r5, #2048
13959.L1948:
13960	adds	r6, r6, #1
13961	b	.L1946
13962.L1989:
13963	.align	2
13964.L1988:
13965	.word	.LANCHOR0
13966	.word	-52655045
13967	.word	.LC130
13968	.word	1179535694
13969	.word	.LC131
13970.L1952:
13971	ldr	r3, [sp, #32]
13972	adds	r5, r5, #1
13973	cmp	r5, r3
13974	bcc	.L1949
13975	ldr	r3, [sp, #20]
13976	adds	r3, r3, #1
13977	str	r3, [sp, #20]
13978	cmp	r3, #5
13979	bls	.L1953
13980.L1954:
13981	ldr	r5, .L1990
13982	movs	r3, #0
13983	mov	r4, r9
13984	ldr	r0, [r5, #3680]
13985	str	r3, [r5, #3676]
13986	bl	kfree
13987	ldr	r0, [r5, #3684]
13988	bl	kfree
13989.L1923:
13990	mov	r3, sp
13991	ldr	r2, [sp, #108]
13992	bic	r3, r3, #8160
13993	bic	r3, r3, #31
13994	ldr	r3, [r3, #24]
13995	cmp	r2, r3
13996	beq	.L1963
13997	bl	__stack_chk_fail
13998.L1925:
13999	cmp	r0, #64
14000	bne	.L1956
14001	mov	r0, #262144
14002	bl	ftl_malloc
14003	str	r0, [r5, #3680]
14004	mov	r0, #262144
14005	bl	ftl_malloc
14006	mov	r3, r0
14007	str	r0, [r5, #3684]
14008	ldr	r0, [r5, #3680]
14009	cbz	r0, .L1957
14010	cbz	r3, .L1957
14011	mov	r2, #262144
14012	movs	r1, #0
14013	movs	r3, #1
14014	str	r3, [r5, #3676]
14015	bl	ftl_memset
14016.L1958:
14017	cmp	r4, #63
14018	ldr	r0, [r5, #3680]
14019	sub	r3, r4, #64
14020	ittte	ls
14021	rsbls	r4, r4, #64
14022	addls	r6, r6, r3
14023	addls	r7, r7, r4, lsl #9
14024	addhi	r0, r0, r3, lsl #9
14025	cmp	r9, #576
14026	mov	r1, r7
14027	itt	cs
14028	subcs	r6, r6, r8
14029	subcs	r6, r6, #446
14030	lsls	r2, r6, #9
14031	bl	ftl_memcpy
14032	b	.L1987
14033.L1957:
14034	ldr	r1, .L1990+4
14035	ldr	r0, .L1990+8
14036	bl	sftl_printk
14037.L1956:
14038	ldr	r3, [r5, #3676]
14039	cmp	r3, #0
14040	bne	.L1958
14041	b	.L1987
14042.L1963:
14043	mov	r0, r4
14044	add	sp, sp, #116
14045	@ sp needed
14046	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
14047.L1991:
14048	.align	2
14049.L1990:
14050	.word	.LANCHOR0
14051	.word	.LANCHOR1+633
14052	.word	.LC132
14053	.fnend
14054	.size	FtlWriteToIDB, .-FtlWriteToIDB
14055	.align	1
14056	.global	sftl_write
14057	.syntax unified
14058	.thumb
14059	.thumb_func
14060	.fpu softvfp
14061	.type	sftl_write, %function
14062sftl_write:
14063	.fnstart
14064	@ args = 0, pretend = 0, frame = 0
14065	@ frame_needed = 0, uses_anonymous_args = 0
14066	push	{r4, r5, r6, lr}
14067	.save {r4, r5, r6, lr}
14068	mov	r5, r1
14069	mov	r6, r2
14070	mov	r4, r0
14071	bl	FtlWriteToIDB
14072	mov	r3, r6
14073	mov	r2, r5
14074	mov	r1, r4
14075	movs	r0, #0
14076	pop	{r4, r5, r6, lr}
14077	b	FtlWrite
14078	.fnend
14079	.size	sftl_write, .-sftl_write
14080	.align	1
14081	.global	rk_sftl_vendor_dev_ops_register
14082	.syntax unified
14083	.thumb
14084	.thumb_func
14085	.fpu softvfp
14086	.type	rk_sftl_vendor_dev_ops_register, %function
14087rk_sftl_vendor_dev_ops_register:
14088	.fnstart
14089	@ args = 0, pretend = 0, frame = 0
14090	@ frame_needed = 0, uses_anonymous_args = 0
14091	@ link register save eliminated.
14092	ldr	r3, .L1996
14093	mov	r2, r0
14094	ldr	r0, [r3, #3688]
14095	cbnz	r0, .L1995
14096	str	r2, [r3, #3688]
14097	str	r1, [r3, #3692]
14098	bx	lr
14099.L1995:
14100	mov	r0, #-1
14101	bx	lr
14102.L1997:
14103	.align	2
14104.L1996:
14105	.word	.LANCHOR0
14106	.fnend
14107	.size	rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register
14108	.align	1
14109	.global	rk_sftl_vendor_storage_init
14110	.syntax unified
14111	.thumb
14112	.thumb_func
14113	.fpu softvfp
14114	.type	rk_sftl_vendor_storage_init, %function
14115rk_sftl_vendor_storage_init:
14116	.fnstart
14117	@ args = 0, pretend = 0, frame = 0
14118	@ frame_needed = 0, uses_anonymous_args = 0
14119	push	{r3, r4, r5, r6, r7, r8, r9, lr}
14120	.save {r3, r4, r5, r6, r7, r8, r9, lr}
14121	mov	r0, #65536
14122	ldr	r5, .L2006
14123	bl	ftl_malloc
14124	str	r0, [r5, #3696]
14125	cmp	r0, #0
14126	beq	.L2004
14127	ldr	r9, .L2006+4
14128	mov	r8, #0
14129	mov	r7, r8
14130	mov	r6, r8
14131.L2002:
14132	ldr	r3, [r5, #3688]
14133	lsls	r0, r6, #7
14134	ldr	r2, [r5, #3696]
14135	movs	r1, #128
14136	blx	r3
14137	mov	r4, r0
14138	cbnz	r0, .L2000
14139	ldr	r3, [r5, #3696]
14140	ldr	r2, [r3]
14141	cmp	r2, r9
14142	bne	.L2001
14143	add	r2, r3, #61440
14144	ldr	r1, [r3, #4]
14145	ldr	r2, [r2, #4092]
14146	cmp	r2, r1
14147	bne	.L2001
14148	cmp	r2, r7
14149	itt	hi
14150	movhi	r8, r6
14151	movhi	r7, r2
14152.L2001:
14153	cbz	r6, .L2005
14154	cbz	r7, .L2003
14155	ldr	r4, [r5, #3688]
14156	mov	r2, r3
14157	lsl	r0, r8, #7
14158	movs	r1, #128
14159	blx	r4
14160	mov	r4, r0
14161	cbz	r0, .L1998
14162.L2000:
14163	ldr	r0, [r5, #3696]
14164	mov	r4, #-1
14165	bl	kfree
14166	movs	r3, #0
14167	str	r3, [r5, #3696]
14168	b	.L1998
14169.L2005:
14170	movs	r6, #1
14171	b	.L2002
14172.L2003:
14173	mov	r2, #65536
14174	mov	r1, r7
14175	mov	r0, r3
14176	bl	memset
14177	add	r2, r0, #61440
14178	strd	r9, r6, [r0]
14179	str	r6, [r2, #4092]
14180	movw	r2, #64504
14181	strh	r2, [r0, #14]	@ movhi
14182.L1998:
14183	mov	r0, r4
14184	pop	{r3, r4, r5, r6, r7, r8, r9, pc}
14185.L2004:
14186	mvn	r4, #11
14187	b	.L1998
14188.L2007:
14189	.align	2
14190.L2006:
14191	.word	.LANCHOR0
14192	.word	1380668996
14193	.fnend
14194	.size	rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init
14195	.align	1
14196	.global	rk_sftl_vendor_read
14197	.syntax unified
14198	.thumb
14199	.thumb_func
14200	.fpu softvfp
14201	.type	rk_sftl_vendor_read, %function
14202rk_sftl_vendor_read:
14203	.fnstart
14204	@ args = 0, pretend = 0, frame = 0
14205	@ frame_needed = 0, uses_anonymous_args = 0
14206	push	{r3, r4, r5, r6, r7, lr}
14207	.save {r3, r4, r5, r6, r7, lr}
14208	mov	r6, r0
14209	ldr	r3, .L2014
14210	mov	r0, r1
14211	ldr	r5, [r3, #3696]
14212	cbz	r5, .L2013
14213	ldrh	r1, [r5, #10]
14214	add	r4, r5, #16
14215	movs	r3, #0
14216.L2010:
14217	cmp	r1, r3
14218	bhi	.L2012
14219.L2013:
14220	mov	r0, #-1
14221	b	.L2008
14222.L2012:
14223	ldrh	r7, [r4, r3, lsl #3]
14224	cmp	r7, r6
14225	bne	.L2011
14226	add	r3, r5, r3, lsl #3
14227	ldrh	r4, [r3, #20]
14228	ldrh	r1, [r3, #18]
14229	cmp	r4, r2
14230	it	cs
14231	movcs	r4, r2
14232	add	r1, r1, #1024
14233	mov	r2, r4
14234	add	r1, r1, r5
14235	bl	memcpy
14236	mov	r0, r4
14237.L2008:
14238	pop	{r3, r4, r5, r6, r7, pc}
14239.L2011:
14240	adds	r3, r3, #1
14241	b	.L2010
14242.L2015:
14243	.align	2
14244.L2014:
14245	.word	.LANCHOR0
14246	.fnend
14247	.size	rk_sftl_vendor_read, .-rk_sftl_vendor_read
14248	.align	1
14249	.global	rk_sftl_vendor_write
14250	.syntax unified
14251	.thumb
14252	.thumb_func
14253	.fpu softvfp
14254	.type	rk_sftl_vendor_write, %function
14255rk_sftl_vendor_write:
14256	.fnstart
14257	@ args = 0, pretend = 0, frame = 24
14258	@ frame_needed = 0, uses_anonymous_args = 0
14259	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
14260	.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
14261	mov	r9, r1
14262	ldr	r5, .L2035
14263	.pad #28
14264	sub	sp, sp, #28
14265	mov	r8, r2
14266	ldr	r4, [r5, #3696]
14267	str	r0, [sp, #4]
14268	cmp	r4, #0
14269	beq	.L2031
14270	ldrh	r3, [r4, #8]
14271	add	r7, r8, #63
14272	ldrh	r2, [r4, #10]
14273	bic	r7, r7, #63
14274	str	r3, [sp, #8]
14275	add	r3, r4, #16
14276	movs	r6, #0
14277.L2018:
14278	cmp	r6, r2
14279	bcc	.L2026
14280	ldrh	r1, [r4, #14]
14281	cmp	r1, r7
14282	bcc	.L2031
14283	add	r3, r4, r2, lsl #3
14284	ldr	r2, [sp, #4]
14285	uxth	r7, r7
14286	strh	r2, [r3, #16]	@ movhi
14287	mov	r2, r8
14288	ldrh	r0, [r4, #12]
14289	strh	r0, [r3, #18]	@ movhi
14290	strh	r8, [r3, #20]	@ movhi
14291	adds	r3, r0, r7
14292	add	r0, r0, #1024
14293	subs	r7, r1, r7
14294	strh	r3, [r4, #12]	@ movhi
14295	mov	r1, r9
14296	add	r0, r0, r4
14297	strh	r7, [r4, #14]	@ movhi
14298	bl	memcpy
14299	ldrh	r3, [r4, #10]
14300	add	r2, r4, #61440
14301	adds	r3, r3, #1
14302	strh	r3, [r4, #10]	@ movhi
14303	ldr	r3, [r4, #4]
14304	adds	r3, r3, #1
14305	str	r3, [r4, #4]
14306	str	r3, [r2, #4092]
14307	ldrh	r3, [r4, #8]
14308	adds	r3, r3, #1
14309	uxth	r3, r3
14310	cmp	r3, #1
14311	it	hi
14312	movhi	r3, #0
14313	strh	r3, [r4, #8]	@ movhi
14314	ldr	r3, [r5, #3692]
14315	b	.L2034
14316.L2026:
14317	ldrh	r1, [r3, r6, lsl #3]
14318	ldr	r0, [sp, #4]
14319	cmp	r1, r0
14320	bne	.L2019
14321	add	r5, r4, r6, lsl #3
14322	add	r3, r4, #1024
14323	ldrh	r1, [r5, #20]
14324	adds	r1, r1, #63
14325	bic	r1, r1, #63
14326	str	r1, [sp, #12]
14327	cmp	r8, r1
14328	bls	.L2020
14329	ldrh	r1, [r4, #14]
14330	cmp	r1, r7
14331	bcc	.L2031
14332	ldrh	fp, [r5, #18]
14333	subs	r2, r2, #1
14334	str	r2, [sp, #16]
14335.L2021:
14336	ldr	r2, [sp, #16]
14337	uxth	r10, fp
14338	adds	r5, r5, #8
14339	cmp	r2, r6
14340	bhi	.L2022
14341	add	r6, r4, r6, lsl #3
14342	ldr	r2, [sp, #4]
14343	uxtah	r0, r3, fp
14344	mov	r1, r9
14345	strh	r2, [r6, #16]	@ movhi
14346	mov	r2, r8
14347	strh	r10, [r6, #18]	@ movhi
14348	strh	r8, [r6, #20]	@ movhi
14349	bl	memcpy
14350	uxth	r3, r7
14351	ldrh	r7, [r4, #14]
14352	add	r10, r10, r3
14353	strh	r10, [r4, #12]	@ movhi
14354	subs	r7, r7, r3
14355	ldr	r3, [sp, #12]
14356	add	r7, r7, r3
14357	strh	r7, [r4, #14]	@ movhi
14358.L2023:
14359	add	r2, r4, #61440
14360	ldr	r3, [r4, #4]
14361	adds	r3, r3, #1
14362	str	r3, [r4, #4]
14363	str	r3, [r2, #4092]
14364	ldrh	r3, [r4, #8]
14365	adds	r3, r3, #1
14366	uxth	r3, r3
14367	cmp	r3, #1
14368	it	hi
14369	movhi	r3, #0
14370	strh	r3, [r4, #8]	@ movhi
14371	ldr	r3, .L2035
14372	ldr	r3, [r3, #3692]
14373.L2034:
14374	ldr	r0, [sp, #8]
14375	mov	r2, r4
14376	movs	r1, #128
14377	lsls	r0, r0, #7
14378	blx	r3
14379	movs	r0, #0
14380.L2016:
14381	add	sp, sp, #28
14382	@ sp needed
14383	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
14384.L2022:
14385	ldrh	r2, [r5, #16]
14386	add	r0, r3, fp
14387	strh	r2, [r5, #8]	@ movhi
14388	adds	r6, r6, #1
14389	ldrh	r2, [r5, #20]
14390	ldrh	r1, [r5, #18]
14391	strh	r2, [r5, #12]	@ movhi
14392	adds	r2, r2, #63
14393	strh	r10, [r5, #10]	@ movhi
14394	bic	r10, r2, #63
14395	add	r1, r1, r3
14396	mov	r2, r10
14397	str	r3, [sp, #20]
14398	add	fp, fp, r10
14399	bl	memcpy
14400	ldr	r3, [sp, #20]
14401	b	.L2021
14402.L2020:
14403	ldrh	r0, [r5, #18]
14404	mov	r2, r8
14405	mov	r1, r9
14406	add	r0, r0, r3
14407	bl	memcpy
14408	strh	r8, [r5, #20]	@ movhi
14409	b	.L2023
14410.L2019:
14411	adds	r6, r6, #1
14412	b	.L2018
14413.L2031:
14414	mov	r0, #-1
14415	b	.L2016
14416.L2036:
14417	.align	2
14418.L2035:
14419	.word	.LANCHOR0
14420	.fnend
14421	.size	rk_sftl_vendor_write, .-rk_sftl_vendor_write
14422	.section	.rodata.str1.1
14423.LC133:
14424	.ascii	"copy_from_user error %d %p %p\012\000"
14425	.text
14426	.align	1
14427	.global	rk_sftl_vendor_storage_ioctl
14428	.syntax unified
14429	.thumb
14430	.thumb_func
14431	.fpu softvfp
14432	.type	rk_sftl_vendor_storage_ioctl, %function
14433rk_sftl_vendor_storage_ioctl:
14434	.fnstart
14435	@ args = 0, pretend = 0, frame = 0
14436	@ frame_needed = 0, uses_anonymous_args = 0
14437	push	{r4, r5, r6, lr}
14438	.save {r4, r5, r6, lr}
14439	mov	r0, #4096
14440	mov	r6, r1
14441	mov	r4, r2
14442	bl	ftl_malloc
14443	mov	r5, r0
14444	cmp	r0, #0
14445	beq	.L2048
14446	ldr	r3, .L2055
14447	cmp	r6, r3
14448	beq	.L2039
14449	adds	r3, r3, #1
14450	cmp	r6, r3
14451	beq	.L2040
14452.L2053:
14453	mvn	r4, #13
14454.L2041:
14455	mov	r0, r5
14456	bl	kfree
14457.L2037:
14458	mov	r0, r4
14459	pop	{r4, r5, r6, pc}
14460.L2039:
14461	mov	r1, r4
14462	movs	r2, #8
14463	bl	_copy_from_user
14464	cbz	r0, .L2042
14465	mov	r2, r4
14466	mov	r1, #256
14467.L2054:
14468	ldr	r0, .L2055+4
14469	bl	sftl_printk
14470	b	.L2053
14471.L2042:
14472	ldr	r2, [r5]
14473	ldr	r3, .L2055+8
14474	cmp	r2, r3
14475	beq	.L2043
14476.L2044:
14477	mov	r4, #-1
14478	b	.L2041
14479.L2043:
14480	ldrh	r2, [r5, #6]
14481	add	r1, r5, #8
14482	ldrh	r0, [r5, #4]
14483	bl	rk_sftl_vendor_read
14484	adds	r3, r0, #1
14485	beq	.L2044
14486	mov	r3, sp
14487	strh	r0, [r5, #6]	@ movhi
14488	bic	r3, r3, #8160
14489	uxth	r2, r0
14490	bic	r3, r3, #31
14491	adds	r2, r2, #8
14492	ldr	r3, [r3, #8]
14493	.syntax unified
14494@ 177 "./include/linux/uaccess.h" 1
14495	.syntax unified
14496adds r1, r4, r2; sbcscc r1, r1, r3; movcc r3, #0
14497@ 0 "" 2
14498	.thumb
14499	.syntax unified
14500	cmp	r3, #0
14501	bne	.L2053
14502	mov	r0, r4
14503	mov	r1, r5
14504	bl	arm_copy_to_user
14505	mov	r4, r0
14506	cmp	r0, #0
14507	beq	.L2041
14508	b	.L2053
14509.L2040:
14510	mov	r1, r4
14511	movs	r2, #8
14512	bl	_copy_from_user
14513	cbz	r0, .L2046
14514	mov	r2, r4
14515	mov	r1, #276
14516	b	.L2054
14517.L2046:
14518	ldr	r2, [r5]
14519	ldr	r3, .L2055+8
14520	cmp	r2, r3
14521	bne	.L2044
14522	ldrh	r2, [r5, #6]
14523	movw	r3, #4087
14524	cmp	r2, r3
14525	bhi	.L2044
14526	adds	r2, r2, #8
14527	mov	r1, r4
14528	mov	r0, r5
14529	uxth	r2, r2
14530	bl	_copy_from_user
14531	cbz	r0, .L2047
14532	mov	r2, r4
14533	movw	r1, #283
14534	b	.L2054
14535.L2047:
14536	ldrh	r2, [r5, #6]
14537	add	r1, r5, #8
14538	ldrh	r0, [r5, #4]
14539	bl	rk_sftl_vendor_write
14540	mov	r4, r0
14541	b	.L2041
14542.L2048:
14543	mov	r4, #-1
14544	b	.L2037
14545.L2056:
14546	.align	2
14547.L2055:
14548	.word	1074034177
14549	.word	.LC133
14550	.word	1448232273
14551	.fnend
14552	.size	rk_sftl_vendor_storage_ioctl, .-rk_sftl_vendor_storage_ioctl
14553	.align	1
14554	.global	rk_sftl_vendor_register
14555	.syntax unified
14556	.thumb
14557	.thumb_func
14558	.fpu softvfp
14559	.type	rk_sftl_vendor_register, %function
14560rk_sftl_vendor_register:
14561	.fnstart
14562	@ args = 0, pretend = 0, frame = 0
14563	@ frame_needed = 0, uses_anonymous_args = 0
14564	@ link register save eliminated.
14565	ldr	r0, .L2058
14566	b	misc_register
14567.L2059:
14568	.align	2
14569.L2058:
14570	.word	.LANCHOR2+12
14571	.fnend
14572	.size	rk_sftl_vendor_register, .-rk_sftl_vendor_register
14573	.section	.rodata.str1.1
14574.LC134:
14575	.ascii	"vendor_storage\000"
14576	.global	g_nand_ops
14577	.global	g_nand_phy_info
14578	.global	gc_ink_free_return_value
14579	.global	check_vpc_table
14580	.global	FtlUpdateVaildLpnCount
14581	.global	g_ect_tbl_power_up_flush
14582	.global	power_up_flag
14583	.global	gFtlInitStatus
14584	.global	DeviceCapacity
14585	.global	g_power_lost_recovery_flag
14586	.global	c_mlc_erase_count_value
14587	.global	g_recovery_ppa_tbl
14588	.global	g_recovery_page_min_ver
14589	.global	g_recovery_page_num
14590	.global	sftl_nand_check_spare_buf
14591	.global	sftl_temp_buf
14592	.global	sftl_nand_check_buf
14593	.global	g_cur_erase_blk
14594	.global	g_gc_skip_write_count
14595	.global	g_gc_head_data_block_count
14596	.global	g_gc_head_data_block
14597	.global	g_ftl_nand_free_count
14598	.global	g_in_swl_replace
14599	.global	g_in_gc_progress
14600	.global	g_max_erase_count
14601	.global	g_totle_sys_slc_erase_count
14602	.global	g_totle_slc_erase_count
14603	.global	g_min_erase_count
14604	.global	g_totle_avg_erase_count
14605	.global	g_totle_mlc_erase_count
14606	.global	g_totle_l2p_write_count
14607	.global	g_totle_cache_write_count
14608	.global	g_tmp_data_superblock_id
14609	.global	g_totle_read_page_count
14610	.global	g_totle_discard_page_count
14611	.global	g_totle_read_sector
14612	.global	g_totle_write_sector
14613	.global	g_totle_write_page_count
14614	.global	g_totle_gc_page_count
14615	.global	g_gc_blk_index
14616	.global	g_gc_merge_free_blk_threshold
14617	.global	g_gc_free_blk_threshold
14618	.global	g_gc_bad_block_temp_tbl
14619	.global	g_gc_bad_block_gc_index
14620	.global	g_gc_bad_block_temp_num
14621	.global	g_gc_next_blk_1
14622	.global	g_gc_next_blk
14623	.global	g_gc_cur_blk_max_valid_pages
14624	.global	g_gc_cur_blk_valid_pages
14625	.global	g_gc_page_offset
14626	.global	g_gc_blk_num
14627	.global	p_gc_blk_tbl
14628	.global	p_gc_page_info
14629	.global	g_sys_ext_data
14630	.global	g_sys_save_data
14631	.global	gp_last_act_superblock
14632	.global	g_gc_superblock
14633	.global	g_gc_temp_superblock
14634	.global	g_buffer_superblock
14635	.global	g_active_superblock
14636	.global	g_num_data_superblocks
14637	.global	g_num_free_superblocks
14638	.global	p_data_block_list_tail
14639	.global	p_data_block_list_head
14640	.global	p_free_data_block_list_head
14641	.global	p_data_block_list_table
14642	.global	g_l2p_last_update_region_id
14643	.global	p_l2p_map_buf
14644	.global	p_l2p_ram_map
14645	.global	g_totle_vendor_block
14646	.global	p_vendor_region_ppn_table
14647	.global	p_vendor_block_ver_table
14648	.global	p_vendor_block_valid_page_count
14649	.global	p_vendor_block_table
14650	.global	g_totle_map_block
14651	.global	p_map_region_ppn_table
14652	.global	p_map_block_ver_table
14653	.global	p_map_block_valid_page_count
14654	.global	p_map_block_table
14655	.global	p_valid_page_count_check_table
14656	.global	p_valid_page_count_table
14657	.global	g_totle_swl_count
14658	.global	p_swl_mul_table
14659	.global	p_erase_count_table
14660	.global	g_ect_tbl_info_size
14661	.global	gp_ect_tbl_info
14662	.global	g_gc_num_req
14663	.global	c_gc_page_buf_num
14664	.global	gp_gc_page_buf_info
14665	.global	p_gc_data_buf
14666	.global	p_gc_spare_buf
14667	.global	p_io_spare_buf
14668	.global	p_io_data_buf_1
14669	.global	p_io_data_buf_0
14670	.global	p_sys_spare_buf
14671	.global	p_vendor_data_buf
14672	.global	p_sys_data_buf_1
14673	.global	p_sys_data_buf
14674	.global	p_plane_order_table
14675	.global	req_gc_dst
14676	.global	req_gc
14677	.global	req_erase
14678	.global	req_prgm
14679	.global	req_read
14680	.global	req_sys
14681	.global	gVendorBlkInfo
14682	.global	gL2pMapInfo
14683	.global	gSysFreeQueue
14684	.global	gSysInfo
14685	.global	gBbtInfo
14686	.global	g_MaxLbn
14687	.global	g_VaildLpn
14688	.global	g_MaxLpn
14689	.global	g_MaxLbaSector
14690	.global	g_GlobalDataVersion
14691	.global	g_GlobalSysVersion
14692	.global	ftl_gc_temp_power_lost_recovery_flag
14693	.global	c_ftl_nand_max_data_blks
14694	.global	c_ftl_nand_data_op_blks_per_plane
14695	.global	c_ftl_nand_data_blks_per_plane
14696	.global	c_ftl_nand_max_sys_blks
14697	.global	c_ftl_nand_init_sys_blks_per_plane
14698	.global	c_ftl_nand_sys_blks_per_plane
14699	.global	c_ftl_vendor_part_size
14700	.global	c_ftl_nand_max_vendor_blks
14701	.global	c_ftl_nand_max_map_blks
14702	.global	c_ftl_nand_map_blks_per_plane
14703	.global	c_ftl_nand_vendor_region_num
14704	.global	c_ftl_nand_l2pmap_ram_region_num
14705	.global	c_ftl_nand_map_region_num
14706	.global	c_ftl_nand_totle_phy_blks
14707	.global	c_ftl_nand_reserved_blks
14708	.global	c_ftl_nand_byte_pre_oob
14709	.global	c_ftl_nand_byte_pre_page
14710	.global	c_ftl_nand_sec_pre_page_shift
14711	.global	c_ftl_nand_sec_pre_page
14712	.global	c_ftl_nand_page_pre_super_blk
14713	.global	c_ftl_nand_page_pre_slc_blk
14714	.global	c_ftl_nand_page_pre_blk
14715	.global	c_ftl_nand_bbm_buf_size
14716	.global	c_ftl_nand_ext_blk_pre_plane
14717	.global	c_ftl_nand_blk_pre_plane
14718	.global	c_ftl_nand_planes_num
14719	.global	c_ftl_nand_blks_per_die_shift
14720	.global	c_ftl_nand_blks_per_die
14721	.global	c_ftl_nand_planes_per_die
14722	.global	c_ftl_nand_die_num
14723	.global	c_ftl_nand_type
14724	.section	.rodata
14725	.align	2
14726	.set	.LANCHOR1,. + 0
14727	.type	__func__.30, %object
14728	.size	__func__.30, 17
14729__func__.30:
14730	.ascii	"INSERT_DATA_LIST\000"
14731	.type	__func__.31, %object
14732	.size	__func__.31, 17
14733__func__.31:
14734	.ascii	"INSERT_FREE_LIST\000"
14735	.type	__func__.29, %object
14736	.size	__func__.29, 17
14737__func__.29:
14738	.ascii	"List_remove_node\000"
14739	.type	__func__.28, %object
14740	.size	__func__.28, 22
14741__func__.28:
14742	.ascii	"List_update_data_list\000"
14743	.type	__func__.22, %object
14744	.size	__func__.22, 22
14745__func__.22:
14746	.ascii	"select_l2p_ram_region\000"
14747	.type	__func__.14, %object
14748	.size	__func__.14, 16
14749__func__.14:
14750	.ascii	"make_superblock\000"
14751	.type	__func__.8, %object
14752	.size	__func__.8, 19
14753__func__.8:
14754	.ascii	"get_new_active_ppa\000"
14755	.type	__func__.1, %object
14756	.size	__func__.1, 17
14757__func__.1:
14758	.ascii	"FlashEraseBlocks\000"
14759	.type	__func__.26, %object
14760	.size	__func__.26, 26
14761__func__.26:
14762	.ascii	"ftl_map_blk_alloc_new_blk\000"
14763	.type	__func__.37, %object
14764	.size	__func__.37, 11
14765__func__.37:
14766	.ascii	"FtlMemInit\000"
14767	.type	__func__.34, %object
14768	.size	__func__.34, 14
14769__func__.34:
14770	.ascii	"FtlBbt2Bitmap\000"
14771	.type	__func__.13, %object
14772	.size	__func__.13, 18
14773__func__.13:
14774	.ascii	"SupperBlkListInit\000"
14775	.type	__func__.3, %object
14776	.size	__func__.3, 15
14777__func__.3:
14778	.ascii	"FlashReadPages\000"
14779	.type	__func__.19, %object
14780	.size	__func__.19, 14
14781__func__.19:
14782	.ascii	"FtlScanSysBlk\000"
14783	.type	__func__.32, %object
14784	.size	__func__.32, 11
14785__func__.32:
14786	.ascii	"FtlLoadBbt\000"
14787	.type	__func__.2, %object
14788	.size	__func__.2, 15
14789__func__.2:
14790	.ascii	"FlashProgPages\000"
14791	.type	__func__.10, %object
14792	.size	__func__.10, 25
14793__func__.10:
14794	.ascii	"allocate_data_superblock\000"
14795	.type	__func__.7, %object
14796	.size	__func__.7, 16
14797__func__.7:
14798	.ascii	"update_vpc_list\000"
14799	.type	__func__.6, %object
14800	.size	__func__.6, 20
14801__func__.6:
14802	.ascii	"decrement_vpc_count\000"
14803	.type	__func__.23, %object
14804	.size	__func__.23, 16
14805__func__.23:
14806	.ascii	"FtlMapWritePage\000"
14807	.type	__func__.27, %object
14808	.size	__func__.27, 16
14809__func__.27:
14810	.ascii	"load_l2p_region\000"
14811	.type	__func__.25, %object
14812	.size	__func__.25, 15
14813__func__.25:
14814	.ascii	"ftl_map_blk_gc\000"
14815	.type	__func__.24, %object
14816	.size	__func__.24, 31
14817__func__.24:
14818	.ascii	"Ftl_write_map_blk_to_last_page\000"
14819	.type	__func__.21, %object
14820	.size	__func__.21, 9
14821__func__.21:
14822	.ascii	"log2phys\000"
14823	.type	__func__.16, %object
14824	.size	__func__.16, 16
14825__func__.16:
14826	.ascii	"FtlReUsePrevPpa\000"
14827	.type	__func__.15, %object
14828	.size	__func__.15, 22
14829__func__.15:
14830	.ascii	"FtlRecoverySuperblock\000"
14831	.type	__func__.11, %object
14832	.size	__func__.11, 14
14833__func__.11:
14834	.ascii	"ftl_check_vpc\000"
14835	.type	__func__.20, %object
14836	.size	__func__.20, 15
14837__func__.20:
14838	.ascii	"FtlVpcTblFlush\000"
14839	.type	__func__.12, %object
14840	.size	__func__.12, 21
14841__func__.12:
14842	.ascii	"FtlVpcCheckAndModify\000"
14843	.type	__func__.9, %object
14844	.size	__func__.9, 29
14845__func__.9:
14846	.ascii	"allocate_new_data_superblock\000"
14847	.type	__func__.36, %object
14848	.size	__func__.36, 13
14849__func__.36:
14850	.ascii	"FtlProgPages\000"
14851	.type	__func__.5, %object
14852	.size	__func__.5, 19
14853__func__.5:
14854	.ascii	"FtlGcFreeTempBlock\000"
14855	.type	__func__.4, %object
14856	.size	__func__.4, 23
14857__func__.4:
14858	.ascii	"rk_ftl_garbage_collect\000"
14859	.type	__func__.35, %object
14860	.size	__func__.35, 9
14861__func__.35:
14862	.ascii	"FtlWrite\000"
14863	.type	__func__.18, %object
14864	.size	__func__.18, 15
14865__func__.18:
14866	.ascii	"FtlLoadSysInfo\000"
14867	.type	__func__.17, %object
14868	.size	__func__.17, 18
14869__func__.17:
14870	.ascii	"FtlMapTblRecovery\000"
14871	.type	__func__.0, %object
14872	.size	__func__.0, 14
14873__func__.0:
14874	.ascii	"FtlWriteToIDB\000"
14875	.space	1
14876	.type	rk_sftl_vendor_storage_fops, %object
14877	.size	rk_sftl_vendor_storage_fops, 128
14878rk_sftl_vendor_storage_fops:
14879	.space	40
14880	.word	rk_sftl_vendor_storage_ioctl
14881	.word	rk_sftl_vendor_storage_ioctl
14882	.space	80
14883	.data
14884	.align	2
14885	.set	.LANCHOR2,. + 0
14886	.type	gFtlInitStatus, %object
14887	.size	gFtlInitStatus, 4
14888gFtlInitStatus:
14889	.word	-1
14890	.type	ftl_gc_temp_block_bops_scan_page_addr, %object
14891	.size	ftl_gc_temp_block_bops_scan_page_addr, 2
14892ftl_gc_temp_block_bops_scan_page_addr:
14893	.short	-1
14894	.space	2
14895	.type	power_up_flag, %object
14896	.size	power_up_flag, 4
14897power_up_flag:
14898	.word	1
14899	.type	rkflash_vender_storage_dev, %object
14900	.size	rkflash_vender_storage_dev, 40
14901rkflash_vender_storage_dev:
14902	.word	255
14903	.word	.LC134
14904	.word	rk_sftl_vendor_storage_fops
14905	.space	28
14906	.bss
14907	.align	2
14908	.set	.LANCHOR0,. + 0
14909	.type	g_nand_phy_info, %object
14910	.size	g_nand_phy_info, 24
14911g_nand_phy_info:
14912	.space	24
14913	.type	g_active_superblock, %object
14914	.size	g_active_superblock, 48
14915g_active_superblock:
14916	.space	48
14917	.type	p_valid_page_count_table, %object
14918	.size	p_valid_page_count_table, 4
14919p_valid_page_count_table:
14920	.space	4
14921	.type	g_buffer_superblock, %object
14922	.size	g_buffer_superblock, 48
14923g_buffer_superblock:
14924	.space	48
14925	.type	g_gc_temp_superblock, %object
14926	.size	g_gc_temp_superblock, 48
14927g_gc_temp_superblock:
14928	.space	48
14929	.type	g_gc_superblock, %object
14930	.size	g_gc_superblock, 48
14931g_gc_superblock:
14932	.space	48
14933	.type	g_gc_next_blk_1, %object
14934	.size	g_gc_next_blk_1, 2
14935g_gc_next_blk_1:
14936	.space	2
14937	.type	g_gc_next_blk, %object
14938	.size	g_gc_next_blk, 2
14939g_gc_next_blk:
14940	.space	2
14941	.type	g_num_free_superblocks, %object
14942	.size	g_num_free_superblocks, 2
14943g_num_free_superblocks:
14944	.space	2
14945	.space	2
14946	.type	c_ftl_nand_sys_blks_per_plane, %object
14947	.size	c_ftl_nand_sys_blks_per_plane, 4
14948c_ftl_nand_sys_blks_per_plane:
14949	.space	4
14950	.type	c_ftl_nand_planes_num, %object
14951	.size	c_ftl_nand_planes_num, 2
14952c_ftl_nand_planes_num:
14953	.space	2
14954	.space	2
14955	.type	c_ftl_nand_max_sys_blks, %object
14956	.size	c_ftl_nand_max_sys_blks, 4
14957c_ftl_nand_max_sys_blks:
14958	.space	4
14959	.type	c_ftl_nand_data_blks_per_plane, %object
14960	.size	c_ftl_nand_data_blks_per_plane, 2
14961c_ftl_nand_data_blks_per_plane:
14962	.space	2
14963	.type	c_ftl_nand_blk_pre_plane, %object
14964	.size	c_ftl_nand_blk_pre_plane, 2
14965c_ftl_nand_blk_pre_plane:
14966	.space	2
14967	.type	c_ftl_nand_max_data_blks, %object
14968	.size	c_ftl_nand_max_data_blks, 4
14969c_ftl_nand_max_data_blks:
14970	.space	4
14971	.type	c_ftl_nand_totle_phy_blks, %object
14972	.size	c_ftl_nand_totle_phy_blks, 4
14973c_ftl_nand_totle_phy_blks:
14974	.space	4
14975	.type	c_ftl_nand_type, %object
14976	.size	c_ftl_nand_type, 2
14977c_ftl_nand_type:
14978	.space	2
14979	.type	c_ftl_nand_die_num, %object
14980	.size	c_ftl_nand_die_num, 2
14981c_ftl_nand_die_num:
14982	.space	2
14983	.type	c_ftl_nand_planes_per_die, %object
14984	.size	c_ftl_nand_planes_per_die, 2
14985c_ftl_nand_planes_per_die:
14986	.space	2
14987	.type	c_ftl_nand_sec_pre_page, %object
14988	.size	c_ftl_nand_sec_pre_page, 2
14989c_ftl_nand_sec_pre_page:
14990	.space	2
14991	.type	p_plane_order_table, %object
14992	.size	p_plane_order_table, 32
14993p_plane_order_table:
14994	.space	32
14995	.type	c_mlc_erase_count_value, %object
14996	.size	c_mlc_erase_count_value, 2
14997c_mlc_erase_count_value:
14998	.space	2
14999	.type	c_ftl_nand_ext_blk_pre_plane, %object
15000	.size	c_ftl_nand_ext_blk_pre_plane, 2
15001c_ftl_nand_ext_blk_pre_plane:
15002	.space	2
15003	.type	c_ftl_vendor_part_size, %object
15004	.size	c_ftl_vendor_part_size, 2
15005c_ftl_vendor_part_size:
15006	.space	2
15007	.type	c_ftl_nand_blks_per_die, %object
15008	.size	c_ftl_nand_blks_per_die, 2
15009c_ftl_nand_blks_per_die:
15010	.space	2
15011	.type	c_ftl_nand_blks_per_die_shift, %object
15012	.size	c_ftl_nand_blks_per_die_shift, 2
15013c_ftl_nand_blks_per_die_shift:
15014	.space	2
15015	.type	c_ftl_nand_page_pre_blk, %object
15016	.size	c_ftl_nand_page_pre_blk, 2
15017c_ftl_nand_page_pre_blk:
15018	.space	2
15019	.type	c_ftl_nand_page_pre_slc_blk, %object
15020	.size	c_ftl_nand_page_pre_slc_blk, 2
15021c_ftl_nand_page_pre_slc_blk:
15022	.space	2
15023	.type	c_ftl_nand_page_pre_super_blk, %object
15024	.size	c_ftl_nand_page_pre_super_blk, 2
15025c_ftl_nand_page_pre_super_blk:
15026	.space	2
15027	.type	c_ftl_nand_sec_pre_page_shift, %object
15028	.size	c_ftl_nand_sec_pre_page_shift, 2
15029c_ftl_nand_sec_pre_page_shift:
15030	.space	2
15031	.type	c_ftl_nand_byte_pre_page, %object
15032	.size	c_ftl_nand_byte_pre_page, 2
15033c_ftl_nand_byte_pre_page:
15034	.space	2
15035	.type	c_ftl_nand_byte_pre_oob, %object
15036	.size	c_ftl_nand_byte_pre_oob, 2
15037c_ftl_nand_byte_pre_oob:
15038	.space	2
15039	.type	c_ftl_nand_reserved_blks, %object
15040	.size	c_ftl_nand_reserved_blks, 2
15041c_ftl_nand_reserved_blks:
15042	.space	2
15043	.type	DeviceCapacity, %object
15044	.size	DeviceCapacity, 4
15045DeviceCapacity:
15046	.space	4
15047	.type	c_ftl_nand_max_vendor_blks, %object
15048	.size	c_ftl_nand_max_vendor_blks, 2
15049c_ftl_nand_max_vendor_blks:
15050	.space	2
15051	.type	c_ftl_nand_vendor_region_num, %object
15052	.size	c_ftl_nand_vendor_region_num, 2
15053c_ftl_nand_vendor_region_num:
15054	.space	2
15055	.type	c_ftl_nand_map_blks_per_plane, %object
15056	.size	c_ftl_nand_map_blks_per_plane, 2
15057c_ftl_nand_map_blks_per_plane:
15058	.space	2
15059	.space	2
15060	.type	c_ftl_nand_max_map_blks, %object
15061	.size	c_ftl_nand_max_map_blks, 4
15062c_ftl_nand_max_map_blks:
15063	.space	4
15064	.type	c_ftl_nand_init_sys_blks_per_plane, %object
15065	.size	c_ftl_nand_init_sys_blks_per_plane, 4
15066c_ftl_nand_init_sys_blks_per_plane:
15067	.space	4
15068	.type	c_ftl_nand_map_region_num, %object
15069	.size	c_ftl_nand_map_region_num, 2
15070c_ftl_nand_map_region_num:
15071	.space	2
15072	.type	c_ftl_nand_l2pmap_ram_region_num, %object
15073	.size	c_ftl_nand_l2pmap_ram_region_num, 2
15074c_ftl_nand_l2pmap_ram_region_num:
15075	.space	2
15076	.type	g_MaxLbaSector, %object
15077	.size	g_MaxLbaSector, 4
15078g_MaxLbaSector:
15079	.space	4
15080	.type	g_totle_vendor_block, %object
15081	.size	g_totle_vendor_block, 2
15082g_totle_vendor_block:
15083	.space	2
15084	.space	2
15085	.type	p_vendor_block_table, %object
15086	.size	p_vendor_block_table, 4
15087p_vendor_block_table:
15088	.space	4
15089	.type	gBbtInfo, %object
15090	.size	gBbtInfo, 60
15091gBbtInfo:
15092	.space	60
15093	.type	gSysFreeQueue, %object
15094	.size	gSysFreeQueue, 2056
15095gSysFreeQueue:
15096	.space	2056
15097	.type	g_sys_save_data, %object
15098	.size	g_sys_save_data, 48
15099g_sys_save_data:
15100	.space	48
15101	.type	p_data_block_list_table, %object
15102	.size	p_data_block_list_table, 4
15103p_data_block_list_table:
15104	.space	4
15105	.type	p_data_block_list_head, %object
15106	.size	p_data_block_list_head, 4
15107p_data_block_list_head:
15108	.space	4
15109	.type	p_data_block_list_tail, %object
15110	.size	p_data_block_list_tail, 4
15111p_data_block_list_tail:
15112	.space	4
15113	.type	g_num_data_superblocks, %object
15114	.size	g_num_data_superblocks, 2
15115g_num_data_superblocks:
15116	.space	2
15117	.space	2
15118	.type	p_free_data_block_list_head, %object
15119	.size	p_free_data_block_list_head, 4
15120p_free_data_block_list_head:
15121	.space	4
15122	.type	p_erase_count_table, %object
15123	.size	p_erase_count_table, 4
15124p_erase_count_table:
15125	.space	4
15126	.type	p_l2p_ram_map, %object
15127	.size	p_l2p_ram_map, 4
15128p_l2p_ram_map:
15129	.space	4
15130	.type	g_l2p_last_update_region_id, %object
15131	.size	g_l2p_last_update_region_id, 2
15132g_l2p_last_update_region_id:
15133	.space	2
15134	.type	FtlUpdateVaildLpnCount, %object
15135	.size	FtlUpdateVaildLpnCount, 2
15136FtlUpdateVaildLpnCount:
15137	.space	2
15138	.type	g_VaildLpn, %object
15139	.size	g_VaildLpn, 4
15140g_VaildLpn:
15141	.space	4
15142	.type	g_MaxLpn, %object
15143	.size	g_MaxLpn, 4
15144g_MaxLpn:
15145	.space	4
15146	.type	g_totle_read_page_count, %object
15147	.size	g_totle_read_page_count, 4
15148g_totle_read_page_count:
15149	.space	4
15150	.type	g_totle_discard_page_count, %object
15151	.size	g_totle_discard_page_count, 4
15152g_totle_discard_page_count:
15153	.space	4
15154	.type	g_totle_write_page_count, %object
15155	.size	g_totle_write_page_count, 4
15156g_totle_write_page_count:
15157	.space	4
15158	.type	g_totle_cache_write_count, %object
15159	.size	g_totle_cache_write_count, 4
15160g_totle_cache_write_count:
15161	.space	4
15162	.type	g_totle_l2p_write_count, %object
15163	.size	g_totle_l2p_write_count, 4
15164g_totle_l2p_write_count:
15165	.space	4
15166	.type	g_totle_gc_page_count, %object
15167	.size	g_totle_gc_page_count, 4
15168g_totle_gc_page_count:
15169	.space	4
15170	.type	g_totle_write_sector, %object
15171	.size	g_totle_write_sector, 4
15172g_totle_write_sector:
15173	.space	4
15174	.type	g_totle_read_sector, %object
15175	.size	g_totle_read_sector, 4
15176g_totle_read_sector:
15177	.space	4
15178	.type	g_GlobalSysVersion, %object
15179	.size	g_GlobalSysVersion, 4
15180g_GlobalSysVersion:
15181	.space	4
15182	.type	g_GlobalDataVersion, %object
15183	.size	g_GlobalDataVersion, 4
15184g_GlobalDataVersion:
15185	.space	4
15186	.type	g_totle_mlc_erase_count, %object
15187	.size	g_totle_mlc_erase_count, 4
15188g_totle_mlc_erase_count:
15189	.space	4
15190	.type	g_totle_slc_erase_count, %object
15191	.size	g_totle_slc_erase_count, 4
15192g_totle_slc_erase_count:
15193	.space	4
15194	.type	g_totle_avg_erase_count, %object
15195	.size	g_totle_avg_erase_count, 4
15196g_totle_avg_erase_count:
15197	.space	4
15198	.type	g_totle_sys_slc_erase_count, %object
15199	.size	g_totle_sys_slc_erase_count, 4
15200g_totle_sys_slc_erase_count:
15201	.space	4
15202	.type	g_max_erase_count, %object
15203	.size	g_max_erase_count, 4
15204g_max_erase_count:
15205	.space	4
15206	.type	g_min_erase_count, %object
15207	.size	g_min_erase_count, 4
15208g_min_erase_count:
15209	.space	4
15210	.type	c_ftl_nand_data_op_blks_per_plane, %object
15211	.size	c_ftl_nand_data_op_blks_per_plane, 2
15212c_ftl_nand_data_op_blks_per_plane:
15213	.space	2
15214	.space	2
15215	.type	gSysInfo, %object
15216	.size	gSysInfo, 16
15217gSysInfo:
15218	.space	16
15219	.type	g_sys_ext_data, %object
15220	.size	g_sys_ext_data, 512
15221g_sys_ext_data:
15222	.space	512
15223	.type	g_gc_free_blk_threshold, %object
15224	.size	g_gc_free_blk_threshold, 2
15225g_gc_free_blk_threshold:
15226	.space	2
15227	.type	g_gc_merge_free_blk_threshold, %object
15228	.size	g_gc_merge_free_blk_threshold, 2
15229g_gc_merge_free_blk_threshold:
15230	.space	2
15231	.type	g_gc_skip_write_count, %object
15232	.size	g_gc_skip_write_count, 4
15233g_gc_skip_write_count:
15234	.space	4
15235	.type	g_gc_blk_index, %object
15236	.size	g_gc_blk_index, 2
15237g_gc_blk_index:
15238	.space	2
15239	.space	2
15240	.type	g_in_swl_replace, %object
15241	.size	g_in_swl_replace, 4
15242g_in_swl_replace:
15243	.space	4
15244	.type	g_gc_num_req, %object
15245	.size	g_gc_num_req, 4
15246g_gc_num_req:
15247	.space	4
15248	.type	gp_gc_page_buf_info, %object
15249	.size	gp_gc_page_buf_info, 4
15250gp_gc_page_buf_info:
15251	.space	4
15252	.type	p_gc_data_buf, %object
15253	.size	p_gc_data_buf, 4
15254p_gc_data_buf:
15255	.space	4
15256	.type	p_gc_spare_buf, %object
15257	.size	p_gc_spare_buf, 4
15258p_gc_spare_buf:
15259	.space	4
15260	.type	req_gc, %object
15261	.size	req_gc, 4
15262req_gc:
15263	.space	4
15264	.type	c_gc_page_buf_num, %object
15265	.size	c_gc_page_buf_num, 4
15266c_gc_page_buf_num:
15267	.space	4
15268	.type	p_gc_blk_tbl, %object
15269	.size	p_gc_blk_tbl, 4
15270p_gc_blk_tbl:
15271	.space	4
15272	.type	g_gc_blk_num, %object
15273	.size	g_gc_blk_num, 2
15274g_gc_blk_num:
15275	.space	2
15276	.space	2
15277	.type	p_gc_page_info, %object
15278	.size	p_gc_page_info, 4
15279p_gc_page_info:
15280	.space	4
15281	.type	g_gc_page_offset, %object
15282	.size	g_gc_page_offset, 2
15283g_gc_page_offset:
15284	.space	2
15285	.type	g_gc_bad_block_temp_num, %object
15286	.size	g_gc_bad_block_temp_num, 2
15287g_gc_bad_block_temp_num:
15288	.space	2
15289	.type	g_gc_bad_block_temp_tbl, %object
15290	.size	g_gc_bad_block_temp_tbl, 34
15291g_gc_bad_block_temp_tbl:
15292	.space	34
15293	.type	g_gc_bad_block_gc_index, %object
15294	.size	g_gc_bad_block_gc_index, 2
15295g_gc_bad_block_gc_index:
15296	.space	2
15297	.type	g_nand_ops, %object
15298	.size	g_nand_ops, 24
15299g_nand_ops:
15300	.space	24
15301	.type	req_erase, %object
15302	.size	req_erase, 4
15303req_erase:
15304	.space	4
15305	.type	g_in_gc_progress, %object
15306	.size	g_in_gc_progress, 4
15307g_in_gc_progress:
15308	.space	4
15309	.type	g_gc_head_data_block, %object
15310	.size	g_gc_head_data_block, 4
15311g_gc_head_data_block:
15312	.space	4
15313	.type	g_gc_head_data_block_count, %object
15314	.size	g_gc_head_data_block_count, 4
15315g_gc_head_data_block_count:
15316	.space	4
15317	.type	g_cur_erase_blk, %object
15318	.size	g_cur_erase_blk, 4
15319g_cur_erase_blk:
15320	.space	4
15321	.type	req_read, %object
15322	.size	req_read, 4
15323req_read:
15324	.space	4
15325	.type	req_gc_dst, %object
15326	.size	req_gc_dst, 4
15327req_gc_dst:
15328	.space	4
15329	.type	req_prgm, %object
15330	.size	req_prgm, 4
15331req_prgm:
15332	.space	4
15333	.type	p_sys_data_buf, %object
15334	.size	p_sys_data_buf, 4
15335p_sys_data_buf:
15336	.space	4
15337	.type	p_sys_data_buf_1, %object
15338	.size	p_sys_data_buf_1, 4
15339p_sys_data_buf_1:
15340	.space	4
15341	.type	p_vendor_data_buf, %object
15342	.size	p_vendor_data_buf, 4
15343p_vendor_data_buf:
15344	.space	4
15345	.type	p_io_data_buf_0, %object
15346	.size	p_io_data_buf_0, 4
15347p_io_data_buf_0:
15348	.space	4
15349	.type	p_io_data_buf_1, %object
15350	.size	p_io_data_buf_1, 4
15351p_io_data_buf_1:
15352	.space	4
15353	.type	sftl_nand_check_buf, %object
15354	.size	sftl_nand_check_buf, 4
15355sftl_nand_check_buf:
15356	.space	4
15357	.type	sftl_temp_buf, %object
15358	.size	sftl_temp_buf, 4
15359sftl_temp_buf:
15360	.space	4
15361	.type	sftl_nand_check_spare_buf, %object
15362	.size	sftl_nand_check_spare_buf, 4
15363sftl_nand_check_spare_buf:
15364	.space	4
15365	.type	p_sys_spare_buf, %object
15366	.size	p_sys_spare_buf, 4
15367p_sys_spare_buf:
15368	.space	4
15369	.type	p_io_spare_buf, %object
15370	.size	p_io_spare_buf, 4
15371p_io_spare_buf:
15372	.space	4
15373	.type	g_ect_tbl_info_size, %object
15374	.size	g_ect_tbl_info_size, 2
15375g_ect_tbl_info_size:
15376	.space	2
15377	.space	2
15378	.type	p_swl_mul_table, %object
15379	.size	p_swl_mul_table, 4
15380p_swl_mul_table:
15381	.space	4
15382	.type	gp_ect_tbl_info, %object
15383	.size	gp_ect_tbl_info, 4
15384gp_ect_tbl_info:
15385	.space	4
15386	.type	p_valid_page_count_check_table, %object
15387	.size	p_valid_page_count_check_table, 4
15388p_valid_page_count_check_table:
15389	.space	4
15390	.type	p_map_block_table, %object
15391	.size	p_map_block_table, 4
15392p_map_block_table:
15393	.space	4
15394	.type	p_map_block_valid_page_count, %object
15395	.size	p_map_block_valid_page_count, 4
15396p_map_block_valid_page_count:
15397	.space	4
15398	.type	p_vendor_block_valid_page_count, %object
15399	.size	p_vendor_block_valid_page_count, 4
15400p_vendor_block_valid_page_count:
15401	.space	4
15402	.type	p_vendor_block_ver_table, %object
15403	.size	p_vendor_block_ver_table, 4
15404p_vendor_block_ver_table:
15405	.space	4
15406	.type	p_vendor_region_ppn_table, %object
15407	.size	p_vendor_region_ppn_table, 4
15408p_vendor_region_ppn_table:
15409	.space	4
15410	.type	p_map_region_ppn_table, %object
15411	.size	p_map_region_ppn_table, 4
15412p_map_region_ppn_table:
15413	.space	4
15414	.type	p_map_block_ver_table, %object
15415	.size	p_map_block_ver_table, 4
15416p_map_block_ver_table:
15417	.space	4
15418	.type	p_l2p_map_buf, %object
15419	.size	p_l2p_map_buf, 4
15420p_l2p_map_buf:
15421	.space	4
15422	.type	c_ftl_nand_bbm_buf_size, %object
15423	.size	c_ftl_nand_bbm_buf_size, 2
15424c_ftl_nand_bbm_buf_size:
15425	.space	2
15426	.space	2
15427	.type	gL2pMapInfo, %object
15428	.size	gL2pMapInfo, 44
15429gL2pMapInfo:
15430	.space	44
15431	.type	g_totle_map_block, %object
15432	.size	g_totle_map_block, 2
15433g_totle_map_block:
15434	.space	2
15435	.type	g_tmp_data_superblock_id, %object
15436	.size	g_tmp_data_superblock_id, 2
15437g_tmp_data_superblock_id:
15438	.space	2
15439	.type	g_totle_swl_count, %object
15440	.size	g_totle_swl_count, 4
15441g_totle_swl_count:
15442	.space	4
15443	.type	ftl_gc_temp_power_lost_recovery_flag, %object
15444	.size	ftl_gc_temp_power_lost_recovery_flag, 4
15445ftl_gc_temp_power_lost_recovery_flag:
15446	.space	4
15447	.type	g_recovery_page_min_ver, %object
15448	.size	g_recovery_page_min_ver, 4
15449g_recovery_page_min_ver:
15450	.space	4
15451	.type	req_sys, %object
15452	.size	req_sys, 20
15453req_sys:
15454	.space	20
15455	.type	g_power_lost_recovery_flag, %object
15456	.size	g_power_lost_recovery_flag, 2
15457g_power_lost_recovery_flag:
15458	.space	2
15459	.space	2
15460	.type	g_recovery_page_num, %object
15461	.size	g_recovery_page_num, 4
15462g_recovery_page_num:
15463	.space	4
15464	.type	g_recovery_ppa_tbl, %object
15465	.size	g_recovery_ppa_tbl, 128
15466g_recovery_ppa_tbl:
15467	.space	128
15468	.type	gVendorBlkInfo, %object
15469	.size	gVendorBlkInfo, 44
15470gVendorBlkInfo:
15471	.space	44
15472	.type	g_ect_tbl_power_up_flush, %object
15473	.size	g_ect_tbl_power_up_flush, 2
15474g_ect_tbl_power_up_flush:
15475	.space	2
15476	.space	2
15477	.type	gc_discard_updated, %object
15478	.size	gc_discard_updated, 4
15479gc_discard_updated:
15480	.space	4
15481	.type	gc_ink_free_return_value, %object
15482	.size	gc_ink_free_return_value, 2
15483gc_ink_free_return_value:
15484	.space	2
15485	.type	g_gc_cur_blk_valid_pages, %object
15486	.size	g_gc_cur_blk_valid_pages, 2
15487g_gc_cur_blk_valid_pages:
15488	.space	2
15489	.type	g_gc_cur_blk_max_valid_pages, %object
15490	.size	g_gc_cur_blk_max_valid_pages, 2
15491g_gc_cur_blk_max_valid_pages:
15492	.space	2
15493	.space	2
15494	.type	g_ftl_nand_free_count, %object
15495	.size	g_ftl_nand_free_count, 4
15496g_ftl_nand_free_count:
15497	.space	4
15498	.type	g_MaxLbn, %object
15499	.size	g_MaxLbn, 4
15500g_MaxLbn:
15501	.space	4
15502	.type	idb_need_write_back, %object
15503	.size	idb_need_write_back, 4
15504idb_need_write_back:
15505	.space	4
15506	.type	idb_buf, %object
15507	.size	idb_buf, 4
15508idb_buf:
15509	.space	4
15510	.type	gp_flash_check_buf, %object
15511	.size	gp_flash_check_buf, 4
15512gp_flash_check_buf:
15513	.space	4
15514	.type	_flash_read, %object
15515	.size	_flash_read, 4
15516_flash_read:
15517	.space	4
15518	.type	_flash_write, %object
15519	.size	_flash_write, 4
15520_flash_write:
15521	.space	4
15522	.type	g_vendor, %object
15523	.size	g_vendor, 4
15524g_vendor:
15525	.space	4
15526	.type	check_vpc_table, %object
15527	.size	check_vpc_table, 16384
15528check_vpc_table:
15529	.space	16384
15530	.type	gp_last_act_superblock, %object
15531	.size	gp_last_act_superblock, 4
15532gp_last_act_superblock:
15533	.space	4
15534	.ident	"GCC: (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621"
15535	.section	.note.GNU-stack,"",%progbits
15536