xref: /rk3399_rockchip-uboot/drivers/rkflash/rk_sftl_arm_v7.S (revision b8fa3d2a17dce6006a8a5f46cbc978a19a3fdf82)
1/*
2 * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
3 *
4 * SPDX-License-Identifier:	GPL-2.0
5 * date: 2018-08-02
6 */
7	.arch armv7-a
8	.eabi_attribute 20, 1
9	.eabi_attribute 21, 1
10	.eabi_attribute 23, 3
11	.eabi_attribute 24, 1
12	.eabi_attribute 25, 1
13	.eabi_attribute 26, 2
14	.eabi_attribute 30, 4
15	.eabi_attribute 34, 0
16	.eabi_attribute 18, 2
17	.file	"rk_sftl.c"
18	.global	__aeabi_uidiv
19	.section	.text.l2p_addr_tran.isra.0,"ax",%progbits
20	.align	1
21	.syntax unified
22	.thumb
23	.thumb_func
24	.fpu softvfp
25	.type	l2p_addr_tran.isra.0, %function
26l2p_addr_tran.isra.0:
27	@ args = 0, pretend = 0, frame = 0
28	@ frame_needed = 0, uses_anonymous_args = 0
29	push	{r3, r4, r5, r6, r7, r8, r10, lr}
30	lsrs	r7, r0, #10
31	ldr	r3, .L3
32	mov	r8, r1
33	mov	r6, r0
34	uxth	r0, r7
35	mov	r10, r2
36	uxth	r7, r7
37	ldrh	r4, [r3, #8]
38	ubfx	r6, r6, #0, #10
39	ldrh	r5, [r3, #10]
40	ldrh	r3, [r3, #14]
41	cmp	r3, #4
42	itt	eq
43	lsreq	r4, r4, #1
44	lsleq	r5, r5, #1
45	mov	r1, r4
46	it	eq
47	uxtheq	r5, r5
48	bl	__aeabi_uidiv
49	uxth	r0, r0
50	mls	r4, r0, r4, r7
51	mla	r4, r5, r4, r6
52	str	r4, [r8]
53	str	r0, [r10]
54	movs	r0, #0
55	pop	{r3, r4, r5, r6, r7, r8, r10, pc}
56.L4:
57	.align	2
58.L3:
59	.word	.LANCHOR0
60	.size	l2p_addr_tran.isra.0, .-l2p_addr_tran.isra.0
61	.section	.text.ftl_set_blk_mode.part.6,"ax",%progbits
62	.align	1
63	.syntax unified
64	.thumb
65	.thumb_func
66	.fpu softvfp
67	.type	ftl_set_blk_mode.part.6, %function
68ftl_set_blk_mode.part.6:
69	@ args = 0, pretend = 0, frame = 0
70	@ frame_needed = 0, uses_anonymous_args = 0
71	@ link register save eliminated.
72	ldr	r3, .L6
73	lsrs	r1, r0, #5
74	and	r0, r0, #31
75	ldr	r2, [r3]
76	movs	r3, #1
77	lsl	r0, r3, r0
78	ldr	r3, [r2, r1, lsl #2]
79	orrs	r3, r3, r0
80	str	r3, [r2, r1, lsl #2]
81	bx	lr
82.L7:
83	.align	2
84.L6:
85	.word	.LANCHOR1
86	.size	ftl_set_blk_mode.part.6, .-ftl_set_blk_mode.part.6
87	.section	.text.Ftl_log2,"ax",%progbits
88	.align	1
89	.global	Ftl_log2
90	.syntax unified
91	.thumb
92	.thumb_func
93	.fpu softvfp
94	.type	Ftl_log2, %function
95Ftl_log2:
96	@ args = 0, pretend = 0, frame = 0
97	@ frame_needed = 0, uses_anonymous_args = 0
98	@ link register save eliminated.
99	movs	r1, #0
100	movs	r2, #1
101.L9:
102	cmp	r2, r0
103	uxth	r3, r1
104	add	r1, r1, #1
105	bls	.L10
106	subs	r0, r3, #1
107	uxth	r0, r0
108	bx	lr
109.L10:
110	lsls	r2, r2, #1
111	b	.L9
112	.size	Ftl_log2, .-Ftl_log2
113	.section	.text.FtlPrintInfo,"ax",%progbits
114	.align	1
115	.global	FtlPrintInfo
116	.syntax unified
117	.thumb
118	.thumb_func
119	.fpu softvfp
120	.type	FtlPrintInfo, %function
121FtlPrintInfo:
122	@ args = 0, pretend = 0, frame = 0
123	@ frame_needed = 0, uses_anonymous_args = 0
124	@ link register save eliminated.
125	bx	lr
126	.size	FtlPrintInfo, .-FtlPrintInfo
127	.section	.text.FtlSysBlkNumInit,"ax",%progbits
128	.align	1
129	.global	FtlSysBlkNumInit
130	.syntax unified
131	.thumb
132	.thumb_func
133	.fpu softvfp
134	.type	FtlSysBlkNumInit, %function
135FtlSysBlkNumInit:
136	@ args = 0, pretend = 0, frame = 0
137	@ frame_needed = 0, uses_anonymous_args = 0
138	@ link register save eliminated.
139	ldr	r3, .L13
140	cmp	r0, #24
141	it	cc
142	movcc	r0, #24
143	ldr	r2, .L13+4
144	str	r0, [r3]
145	ldr	r3, .L13+8
146	ldrh	r3, [r3]
147	muls	r3, r0, r3
148	str	r3, [r2]
149	ldr	r2, .L13+12
150	ldrh	r2, [r2]
151	subs	r0, r2, r0
152	ldr	r2, .L13+16
153	strh	r0, [r2]	@ movhi
154	movs	r0, #0
155	ldr	r2, .L13+20
156	ldr	r2, [r2]
157	subs	r3, r2, r3
158	ldr	r2, .L13+24
159	str	r3, [r2]
160	bx	lr
161.L14:
162	.align	2
163.L13:
164	.word	.LANCHOR2
165	.word	.LANCHOR4
166	.word	.LANCHOR3
167	.word	.LANCHOR6
168	.word	.LANCHOR5
169	.word	.LANCHOR8
170	.word	.LANCHOR7
171	.size	FtlSysBlkNumInit, .-FtlSysBlkNumInit
172	.global	__aeabi_idiv
173	.section	.text.FtlConstantsInit,"ax",%progbits
174	.align	1
175	.global	FtlConstantsInit
176	.syntax unified
177	.thumb
178	.thumb_func
179	.fpu softvfp
180	.type	FtlConstantsInit, %function
181FtlConstantsInit:
182	@ args = 0, pretend = 0, frame = 0
183	@ frame_needed = 0, uses_anonymous_args = 0
184	ldrh	r1, [r0]
185	ldr	r2, .L25
186	push	{r4, r5, r6, r7, r8, r10, fp, lr}
187	mov	r7, r0
188	ldrh	r5, [r0, #2]
189	strh	r1, [r2]	@ movhi
190	ldr	r2, .L25+4
191	ldrh	r0, [r0, #4]
192	strh	r5, [r2]	@ movhi
193	ldr	r2, .L25+8
194	strh	r0, [r2]	@ movhi
195	ldrh	r2, [r7, #14]
196	cmp	r2, #4
197	bne	.L16
198	ldrh	r2, [r7, #6]
199	ldr	r4, .L25+12
200	lsrs	r2, r2, #1
201	strh	r2, [r4]	@ movhi
202	movs	r4, #8
203	ldr	r2, .L25+16
204	strh	r4, [r2]	@ movhi
205.L16:
206	ldr	r4, .L25+20
207	movs	r2, #0
208.L17:
209	strb	r2, [r2, r4]
210	adds	r2, r2, #1
211	cmp	r2, #32
212	bne	.L17
213	ldr	r2, .L25+24
214	cmp	r1, #1
215	mov	r4, #5
216	smulbb	r5, r5, r0
217	mov	r6, #0
218	strh	r4, [r2]	@ movhi
219	it	eq
220	strheq	r1, [r2]	@ movhi
221	mov	r1, #640
222	ldr	r2, .L25+28
223	uxth	r5, r5
224	ldr	r4, .L25+32
225	strh	r1, [r2]	@ movhi
226	ldr	r2, .L25+36
227	strh	r6, [r4]	@ movhi
228	ldr	r6, .L25+40
229	strh	r5, [r2]	@ movhi
230	ldr	r2, .L25+12
231	ldrh	r4, [r2]
232	ldr	r2, .L25+44
233	smulbb	r0, r0, r4
234	uxth	r0, r0
235	strh	r0, [r2]	@ movhi
236	bl	Ftl_log2
237	ldr	r2, .L25+48
238	ldrh	r8, [r7, #12]
239	ldr	r3, .L25+52
240	strh	r0, [r2]	@ movhi
241	ldr	r2, .L25+56
242	smulbb	r1, r5, r8
243	strh	r8, [r3]	@ movhi
244	strh	r8, [r2]	@ movhi
245	ldr	r2, .L25+60
246	strh	r1, [r2]	@ movhi
247	ldr	r2, .L25+16
248	ldrh	fp, [r2]
249	mov	r0, fp
250	bl	Ftl_log2
251	lsl	r2, fp, #9
252	ldr	r1, .L25+64
253	ldr	r3, .L25+68
254	mov	r10, r0
255	uxth	r2, r2
256	strh	r0, [r6]	@ movhi
257	mov	r0, #5120
258	strh	r2, [r1]	@ movhi
259	lsrs	r2, r2, #8
260	ldr	r1, .L25+72
261	strh	r2, [r1]	@ movhi
262	mul	r1, r8, fp
263	ldrh	r2, [r7, #20]
264	ldr	r7, .L25+52
265	strh	r2, [r3]	@ movhi
266	mul	r3, r4, r5
267	ldr	r2, .L25+76
268	lsls	r4, r4, #6
269	str	r3, [r2]
270	mul	r3, fp, r3
271	ldr	r2, .L25+80
272	mul	r3, r8, r3
273	ldr	r8, .L25+116
274	asrs	r3, r3, #11
275	str	r3, [r2]
276	bl	__aeabi_idiv
277	uxth	r0, r0
278	ldr	r2, .L25+84
279	mov	r1, r5
280	cmp	r0, #4
281	itet	ls
282	movls	r3, #4
283	strhhi	r0, [r8]	@ movhi
284	strhls	r3, [r8]	@ movhi
285	mov	r3, #640
286	asr	r3, r3, r10
287	add	r10, r10, #9
288	asr	r4, r4, r10
289	ldr	r10, .L25+120
290	adds	r3, r3, #2
291	ldrh	r0, [r8]
292	strh	r3, [r2]	@ movhi
293	ldr	r3, .L25+88
294	strh	r4, [r3]	@ movhi
295	uxth	r4, r4
296	mul	r3, r5, r4
297	adds	r4, r4, #8
298	str	r3, [r10]
299	bl	__aeabi_uidiv
300	uxtah	r0, r4, r0
301	ldr	r4, .L25+92
302	cmp	r5, #1
303	it	eq
304	addeq	r0, r0, #4
305	str	r0, [r4]
306	ldrh	r0, [r4]
307	bl	FtlSysBlkNumInit
308	ldr	r2, [r4]
309	movs	r0, #0
310	ldr	r3, .L25+96
311	str	r2, [r3]
312	ldr	r3, .L25+100
313	ldr	r2, [r3]
314	ldrh	r3, [r7]
315	lsls	r2, r2, #2
316	muls	r3, r2, r3
317	ldrh	r2, [r6]
318	adds	r2, r2, #9
319	lsrs	r3, r3, r2
320	ldr	r2, .L25+104
321	adds	r3, r3, #2
322	strh	r3, [r2]	@ movhi
323	movs	r2, #32
324	ldr	r3, .L25+108
325	strh	r2, [r3]	@ movhi
326	ldr	r3, .L25+112
327	str	r0, [r3]
328	ldrh	r3, [r8]
329	adds	r3, r3, #3
330	strh	r3, [r8]	@ movhi
331	ldr	r3, [r10]
332	adds	r3, r3, #3
333	str	r3, [r10]
334	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
335.L26:
336	.align	2
337.L25:
338	.word	.LANCHOR9
339	.word	.LANCHOR10
340	.word	.LANCHOR11
341	.word	.LANCHOR6
342	.word	.LANCHOR12
343	.word	.LANCHOR13
344	.word	.LANCHOR14
345	.word	.LANCHOR16
346	.word	.LANCHOR15
347	.word	.LANCHOR3
348	.word	.LANCHOR22
349	.word	.LANCHOR17
350	.word	.LANCHOR18
351	.word	.LANCHOR19
352	.word	.LANCHOR20
353	.word	.LANCHOR21
354	.word	.LANCHOR23
355	.word	.LANCHOR25
356	.word	.LANCHOR24
357	.word	.LANCHOR8
358	.word	.LANCHOR26
359	.word	.LANCHOR28
360	.word	.LANCHOR29
361	.word	.LANCHOR2
362	.word	.LANCHOR31
363	.word	.LANCHOR7
364	.word	.LANCHOR32
365	.word	.LANCHOR33
366	.word	.LANCHOR34
367	.word	.LANCHOR27
368	.word	.LANCHOR30
369	.size	FtlConstantsInit, .-FtlConstantsInit
370	.section	.text.IsBlkInVendorPart,"ax",%progbits
371	.align	1
372	.global	IsBlkInVendorPart
373	.syntax unified
374	.thumb
375	.thumb_func
376	.fpu softvfp
377	.type	IsBlkInVendorPart, %function
378IsBlkInVendorPart:
379	@ args = 0, pretend = 0, frame = 0
380	@ frame_needed = 0, uses_anonymous_args = 0
381	@ link register save eliminated.
382	ldr	r3, .L34
383	ldrh	r3, [r3]
384	cbz	r3, .L33
385	ldr	r3, .L34+4
386	ldr	r2, .L34+8
387	ldr	r3, [r3]
388	ldrh	r2, [r2]
389	add	r2, r3, r2, lsl #1
390.L29:
391	cmp	r3, r2
392	bne	.L30
393.L33:
394	movs	r0, #0
395	bx	lr
396.L30:
397	ldrh	r1, [r3], #2
398	cmp	r0, r1
399	bne	.L29
400	movs	r0, #1
401	bx	lr
402.L35:
403	.align	2
404.L34:
405	.word	.LANCHOR35
406	.word	.LANCHOR36
407	.word	.LANCHOR27
408	.size	IsBlkInVendorPart, .-IsBlkInVendorPart
409	.section	.text.FtlCacheWriteBack,"ax",%progbits
410	.align	1
411	.global	FtlCacheWriteBack
412	.syntax unified
413	.thumb
414	.thumb_func
415	.fpu softvfp
416	.type	FtlCacheWriteBack, %function
417FtlCacheWriteBack:
418	@ args = 0, pretend = 0, frame = 0
419	@ frame_needed = 0, uses_anonymous_args = 0
420	@ link register save eliminated.
421	movs	r0, #0
422	bx	lr
423	.size	FtlCacheWriteBack, .-FtlCacheWriteBack
424	.section	.text.sftl_get_density,"ax",%progbits
425	.align	1
426	.global	sftl_get_density
427	.syntax unified
428	.thumb
429	.thumb_func
430	.fpu softvfp
431	.type	sftl_get_density, %function
432sftl_get_density:
433	@ args = 0, pretend = 0, frame = 0
434	@ frame_needed = 0, uses_anonymous_args = 0
435	@ link register save eliminated.
436	ldr	r3, .L38
437	ldr	r0, [r3]
438	bx	lr
439.L39:
440	.align	2
441.L38:
442	.word	.LANCHOR34
443	.size	sftl_get_density, .-sftl_get_density
444	.global	__aeabi_uidivmod
445	.section	.text.FtlBbmMapBadBlock,"ax",%progbits
446	.align	1
447	.global	FtlBbmMapBadBlock
448	.syntax unified
449	.thumb
450	.thumb_func
451	.fpu softvfp
452	.type	FtlBbmMapBadBlock, %function
453FtlBbmMapBadBlock:
454	@ args = 0, pretend = 0, frame = 0
455	@ frame_needed = 0, uses_anonymous_args = 0
456	ldr	r3, .L41
457	push	{r0, r1, r2, r4, r5, r6, r7, lr}
458	mov	r5, r0
459	ldrh	r4, [r3]
460	mov	r1, r4
461	bl	__aeabi_uidiv
462	mov	r1, r4
463	ldr	r4, .L41+4
464	uxth	r6, r0
465	mov	r0, r5
466	bl	__aeabi_uidivmod
467	add	r2, r4, r6, lsl #2
468	uxth	r3, r1
469	ldr	r2, [r2, #28]
470	lsrs	r1, r3, #5
471	and	r7, r3, #31
472	movs	r0, #1
473	lsls	r0, r0, r7
474	ldr	r7, [r2, r1, lsl #2]
475	orrs	r0, r0, r7
476	str	r0, [r2, r1, lsl #2]
477	mov	r2, r6
478	str	r0, [sp]
479	mov	r1, r5
480	ldr	r0, .L41+8
481	bl	printf
482	ldrh	r3, [r4, #6]
483	movs	r0, #0
484	adds	r3, r3, #1
485	strh	r3, [r4, #6]	@ movhi
486	add	sp, sp, #12
487	@ sp needed
488	pop	{r4, r5, r6, r7, pc}
489.L42:
490	.align	2
491.L41:
492	.word	.LANCHOR17
493	.word	.LANCHOR37
494	.word	.LC0
495	.size	FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
496	.section	.text.FtlBbmIsBadBlock,"ax",%progbits
497	.align	1
498	.global	FtlBbmIsBadBlock
499	.syntax unified
500	.thumb
501	.thumb_func
502	.fpu softvfp
503	.type	FtlBbmIsBadBlock, %function
504FtlBbmIsBadBlock:
505	@ args = 0, pretend = 0, frame = 0
506	@ frame_needed = 0, uses_anonymous_args = 0
507	ldr	r3, .L44
508	push	{r4, r5, r6, lr}
509	mov	r6, r0
510	ldrh	r5, [r3]
511	mov	r1, r5
512	bl	__aeabi_uidivmod
513	mov	r0, r6
514	uxth	r4, r1
515	mov	r1, r5
516	bl	__aeabi_uidiv
517	ldr	r3, .L44+4
518	uxth	r0, r0
519	lsrs	r2, r4, #5
520	and	r4, r4, #31
521	add	r0, r3, r0, lsl #2
522	ldr	r3, [r0, #28]
523	ldr	r0, [r3, r2, lsl #2]
524	lsrs	r0, r0, r4
525	and	r0, r0, #1
526	pop	{r4, r5, r6, pc}
527.L45:
528	.align	2
529.L44:
530	.word	.LANCHOR17
531	.word	.LANCHOR37
532	.size	FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
533	.section	.text.FtlBbtInfoPrint,"ax",%progbits
534	.align	1
535	.global	FtlBbtInfoPrint
536	.syntax unified
537	.thumb
538	.thumb_func
539	.fpu softvfp
540	.type	FtlBbtInfoPrint, %function
541FtlBbtInfoPrint:
542	@ args = 0, pretend = 0, frame = 0
543	@ frame_needed = 0, uses_anonymous_args = 0
544	@ link register save eliminated.
545	bx	lr
546	.size	FtlBbtInfoPrint, .-FtlBbtInfoPrint
547	.section	.text.FtlBbtCalcTotleCnt,"ax",%progbits
548	.align	1
549	.global	FtlBbtCalcTotleCnt
550	.syntax unified
551	.thumb
552	.thumb_func
553	.fpu softvfp
554	.type	FtlBbtCalcTotleCnt, %function
555FtlBbtCalcTotleCnt:
556	@ args = 0, pretend = 0, frame = 0
557	@ frame_needed = 0, uses_anonymous_args = 0
558	ldr	r3, .L54
559	ldr	r2, .L54+4
560	push	{r4, r5, r6, lr}
561	movs	r5, #0
562	ldrh	r3, [r3]
563	mov	r4, r5
564	ldrh	r6, [r2]
565	muls	r6, r3, r6
566.L48:
567	uxth	r0, r5
568	cmp	r0, r6
569	blt	.L50
570	mov	r0, r4
571	pop	{r4, r5, r6, pc}
572.L50:
573	bl	FtlBbmIsBadBlock
574	cbz	r0, .L49
575	adds	r4, r4, #1
576	uxth	r4, r4
577.L49:
578	adds	r5, r5, #1
579	b	.L48
580.L55:
581	.align	2
582.L54:
583	.word	.LANCHOR17
584	.word	.LANCHOR10
585	.size	FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
586	.section	.text.V2P_block,"ax",%progbits
587	.align	1
588	.global	V2P_block
589	.syntax unified
590	.thumb
591	.thumb_func
592	.fpu softvfp
593	.type	V2P_block, %function
594V2P_block:
595	@ args = 0, pretend = 0, frame = 0
596	@ frame_needed = 0, uses_anonymous_args = 0
597	push	{r3, r4, r5, r6, r7, lr}
598	mov	r5, r1
599	ldr	r3, .L57
600	mov	r7, r0
601	ldrh	r6, [r3]
602	mov	r1, r6
603	bl	__aeabi_uidiv
604	ldr	r3, .L57+4
605	smulbb	r5, r6, r5
606	mov	r1, r6
607	ldrh	r4, [r3]
608	smulbb	r4, r4, r0
609	mov	r0, r7
610	bl	__aeabi_uidivmod
611	adds	r0, r5, r1
612	add	r0, r0, r4
613	uxth	r0, r0
614	pop	{r3, r4, r5, r6, r7, pc}
615.L58:
616	.align	2
617.L57:
618	.word	.LANCHOR11
619	.word	.LANCHOR17
620	.size	V2P_block, .-V2P_block
621	.section	.text.P2V_plane,"ax",%progbits
622	.align	1
623	.global	P2V_plane
624	.syntax unified
625	.thumb
626	.thumb_func
627	.fpu softvfp
628	.type	P2V_plane, %function
629P2V_plane:
630	@ args = 0, pretend = 0, frame = 0
631	@ frame_needed = 0, uses_anonymous_args = 0
632	ldr	r3, .L60
633	push	{r4, r5, r6, lr}
634	mov	r6, r0
635	ldrh	r5, [r3]
636	ldr	r3, .L60+4
637	ldrh	r1, [r3]
638	bl	__aeabi_uidiv
639	smulbb	r4, r0, r5
640	mov	r1, r5
641	mov	r0, r6
642	bl	__aeabi_uidivmod
643	add	r1, r1, r4
644	uxth	r0, r1
645	pop	{r4, r5, r6, pc}
646.L61:
647	.align	2
648.L60:
649	.word	.LANCHOR11
650	.word	.LANCHOR17
651	.size	P2V_plane, .-P2V_plane
652	.section	.text.P2V_block_in_plane,"ax",%progbits
653	.align	1
654	.global	P2V_block_in_plane
655	.syntax unified
656	.thumb
657	.thumb_func
658	.fpu softvfp
659	.type	P2V_block_in_plane, %function
660P2V_block_in_plane:
661	@ args = 0, pretend = 0, frame = 0
662	@ frame_needed = 0, uses_anonymous_args = 0
663	push	{r3, lr}
664	ldr	r3, .L63
665	ldrh	r1, [r3]
666	bl	__aeabi_uidivmod
667	ldr	r3, .L63+4
668	uxth	r0, r1
669	ldrh	r1, [r3]
670	bl	__aeabi_uidiv
671	uxth	r0, r0
672	pop	{r3, pc}
673.L64:
674	.align	2
675.L63:
676	.word	.LANCHOR17
677	.word	.LANCHOR11
678	.size	P2V_block_in_plane, .-P2V_block_in_plane
679	.section	.text.ftl_cmp_data_ver,"ax",%progbits
680	.align	1
681	.global	ftl_cmp_data_ver
682	.syntax unified
683	.thumb
684	.thumb_func
685	.fpu softvfp
686	.type	ftl_cmp_data_ver, %function
687ftl_cmp_data_ver:
688	@ args = 0, pretend = 0, frame = 0
689	@ frame_needed = 0, uses_anonymous_args = 0
690	@ link register save eliminated.
691	cmp	r0, r1
692	bls	.L66
693	subs	r0, r0, r1
694	cmp	r0, #-2147483648
695	ite	hi
696	movhi	r0, #0
697	movls	r0, #1
698	bx	lr
699.L66:
700	subs	r0, r1, r0
701	cmp	r0, #-2147483648
702	ite	ls
703	movls	r0, #0
704	movhi	r0, #1
705	bx	lr
706	.size	ftl_cmp_data_ver, .-ftl_cmp_data_ver
707	.section	.text.FtlFreeSysBlkQueueEmpty,"ax",%progbits
708	.align	1
709	.global	FtlFreeSysBlkQueueEmpty
710	.syntax unified
711	.thumb
712	.thumb_func
713	.fpu softvfp
714	.type	FtlFreeSysBlkQueueEmpty, %function
715FtlFreeSysBlkQueueEmpty:
716	@ args = 0, pretend = 0, frame = 0
717	@ frame_needed = 0, uses_anonymous_args = 0
718	@ link register save eliminated.
719	ldr	r3, .L69
720	ldrh	r0, [r3, #6]
721	clz	r0, r0
722	lsrs	r0, r0, #5
723	bx	lr
724.L70:
725	.align	2
726.L69:
727	.word	.LANCHOR38
728	.size	FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
729	.section	.text.FtlFreeSysBlkQueueFull,"ax",%progbits
730	.align	1
731	.global	FtlFreeSysBlkQueueFull
732	.syntax unified
733	.thumb
734	.thumb_func
735	.fpu softvfp
736	.type	FtlFreeSysBlkQueueFull, %function
737FtlFreeSysBlkQueueFull:
738	@ args = 0, pretend = 0, frame = 0
739	@ frame_needed = 0, uses_anonymous_args = 0
740	@ link register save eliminated.
741	ldr	r3, .L72
742	ldrh	r0, [r3, #6]
743	sub	r3, r0, #1024
744	rsbs	r0, r3, #0
745	adcs	r0, r0, r3
746	bx	lr
747.L73:
748	.align	2
749.L72:
750	.word	.LANCHOR38
751	.size	FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
752	.section	.text.FtlFreeSysBLkSort,"ax",%progbits
753	.align	1
754	.global	FtlFreeSysBLkSort
755	.syntax unified
756	.thumb
757	.thumb_func
758	.fpu softvfp
759	.type	FtlFreeSysBLkSort, %function
760FtlFreeSysBLkSort:
761	@ args = 0, pretend = 0, frame = 0
762	@ frame_needed = 0, uses_anonymous_args = 0
763	ldr	r3, .L83
764	push	{r4, r5, r6, lr}
765	ldrh	r2, [r3, #6]
766	cbz	r2, .L74
767	ldr	r2, .L83+4
768	movs	r6, #0
769	ldrh	r1, [r3, #2]
770	mov	r5, r6
771	ldrh	r4, [r2, #28]
772	ldrh	r2, [r3, #4]
773	and	r4, r4, #31
774.L76:
775	uxth	r0, r6
776	adds	r6, r6, #1
777	cmp	r4, r0
778	bgt	.L77
779	cbz	r5, .L74
780	strh	r1, [r3, #2]	@ movhi
781	strh	r2, [r3, #4]	@ movhi
782.L74:
783	pop	{r4, r5, r6, pc}
784.L77:
785	adds	r0, r1, #4
786	adds	r1, r1, #1
787	ldrh	r5, [r3, r0, lsl #1]
788	adds	r0, r2, #4
789	ubfx	r1, r1, #0, #10
790	strh	r5, [r3, r0, lsl #1]	@ movhi
791	movs	r5, #1
792	add	r2, r2, r5
793	ubfx	r2, r2, #0, #10
794	b	.L76
795.L84:
796	.align	2
797.L83:
798	.word	.LANCHOR38
799	.word	.LANCHOR39
800	.size	FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
801	.section	.text.IsInFreeQueue,"ax",%progbits
802	.align	1
803	.global	IsInFreeQueue
804	.syntax unified
805	.thumb
806	.thumb_func
807	.fpu softvfp
808	.type	IsInFreeQueue, %function
809IsInFreeQueue:
810	@ args = 0, pretend = 0, frame = 0
811	@ frame_needed = 0, uses_anonymous_args = 0
812	ldr	r3, .L91
813	push	{r4, r5, lr}
814	ldrh	r4, [r3, #6]
815	cmp	r4, #1024
816	beq	.L89
817	ldrh	r5, [r3, #2]
818	movs	r1, #0
819.L87:
820	cmp	r1, r4
821	bcc	.L88
822.L89:
823	movs	r0, #0
824	pop	{r4, r5, pc}
825.L88:
826	adds	r2, r1, r5
827	ubfx	r2, r2, #0, #10
828	adds	r2, r2, #4
829	ldrh	r2, [r3, r2, lsl #1]
830	cmp	r2, r0
831	beq	.L90
832	adds	r1, r1, #1
833	b	.L87
834.L90:
835	movs	r0, #1
836	pop	{r4, r5, pc}
837.L92:
838	.align	2
839.L91:
840	.word	.LANCHOR38
841	.size	IsInFreeQueue, .-IsInFreeQueue
842	.section	.text.insert_data_list,"ax",%progbits
843	.align	1
844	.global	insert_data_list
845	.syntax unified
846	.thumb
847	.thumb_func
848	.fpu softvfp
849	.type	insert_data_list, %function
850insert_data_list:
851	@ args = 0, pretend = 0, frame = 16
852	@ frame_needed = 0, uses_anonymous_args = 0
853	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
854	ldr	r3, .L109
855	ldrh	lr, [r3]
856	cmp	lr, r0
857	bls	.L95
858	ldr	r3, .L109+4
859	movs	r5, #6
860	ldr	r4, [r3]
861	mul	r3, r5, r0
862	str	r3, [sp, #4]
863	adds	r1, r4, r3
864	ldr	r2, [sp, #4]
865	movw	r3, #65535
866	strh	r3, [r1, #2]	@ movhi
867	strh	r3, [r4, r2]	@ movhi
868	ldr	r3, .L109+8
869	ldr	ip, [r3]
870	cmp	ip, #0
871	bne	.L96
872.L108:
873	str	r1, [r3]
874.L95:
875	movs	r0, #0
876	add	sp, sp, #16
877	@ sp needed
878	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
879.L96:
880	ldr	r3, .L109+12
881	lsls	r2, r0, #1
882	ldr	r3, [r3]
883	str	r3, [sp, #8]
884	ldrh	r6, [r3, r0, lsl #1]
885	ldrh	r3, [r1, #4]
886	cbz	r3, .L106
887	mul	fp, r3, r6
888.L97:
889	sub	r3, ip, r4
890	asrs	r6, r3, #1
891	ldr	r3, .L109+16
892	muls	r3, r6, r3
893	ldr	r6, .L109+20
894	ldr	r8, [r6]
895	movs	r6, #0
896	uxth	r3, r3
897	add	r2, r8, r2
898	str	r2, [sp, #12]
899	mov	r2, ip
900.L104:
901	adds	r6, r6, #1
902	uxth	r6, r6
903	cmp	lr, r6
904	bcc	.L95
905	cmp	r3, r0
906	beq	.L95
907	ldr	r7, [sp, #8]
908	lsl	r10, r3, #1
909	ldrh	r7, [r7, r3, lsl #1]
910	mov	r5, r7
911	ldrh	r7, [r2, #4]
912	cbz	r7, .L107
913	muls	r7, r5, r7
914.L99:
915	cmp	fp, r7
916	bne	.L100
917	ldr	r5, [sp, #12]
918	ldrh	r10, [r8, r10]
919	ldrh	r7, [r5]
920	cmp	r10, r7
921	bcc	.L102
922.L101:
923	ldr	r5, [sp, #4]
924	cmp	r2, ip
925	strh	r3, [r4, r5]	@ movhi
926	ldrh	r3, [r2, #2]
927	strh	r3, [r1, #2]	@ movhi
928	bne	.L105
929	strh	r0, [r2, #2]	@ movhi
930	ldr	r3, .L109+8
931	b	.L108
932.L106:
933	mov	fp, #-1
934	b	.L97
935.L107:
936	mov	r7, #-1
937	b	.L99
938.L100:
939	bcc	.L101
940.L102:
941	ldrh	r7, [r2]
942	movw	r5, #65535
943	cmp	r7, r5
944	bne	.L103
945	strh	r3, [r1, #2]	@ movhi
946	strh	r0, [r2]	@ movhi
947	ldr	r3, .L109+24
948	b	.L108
949.L103:
950	movs	r3, #6
951	mla	r2, r3, r7, r4
952	mov	r3, r7
953	b	.L104
954.L105:
955	ldrh	r1, [r2, #2]
956	movs	r3, #6
957	muls	r3, r1, r3
958	strh	r0, [r4, r3]	@ movhi
959	strh	r0, [r2, #2]	@ movhi
960	b	.L95
961.L110:
962	.align	2
963.L109:
964	.word	.LANCHOR5
965	.word	.LANCHOR40
966	.word	.LANCHOR41
967	.word	.LANCHOR42
968	.word	-1431655765
969	.word	.LANCHOR43
970	.word	.LANCHOR44
971	.size	insert_data_list, .-insert_data_list
972	.section	.text.INSERT_DATA_LIST,"ax",%progbits
973	.align	1
974	.global	INSERT_DATA_LIST
975	.syntax unified
976	.thumb
977	.thumb_func
978	.fpu softvfp
979	.type	INSERT_DATA_LIST, %function
980INSERT_DATA_LIST:
981	@ args = 0, pretend = 0, frame = 0
982	@ frame_needed = 0, uses_anonymous_args = 0
983	push	{r3, lr}
984	bl	insert_data_list
985	ldr	r2, .L113
986	ldrh	r3, [r2]
987	adds	r3, r3, #1
988	uxth	r3, r3
989	strh	r3, [r2]	@ movhi
990	ldr	r2, .L113+4
991	ldrh	r2, [r2]
992	cmp	r2, r3
993	bcs	.L111
994	movs	r2, #221
995	ldr	r1, .L113+8
996	ldr	r0, .L113+12
997	pop	{r3, lr}
998	b	printf
999.L111:
1000	pop	{r3, pc}
1001.L114:
1002	.align	2
1003.L113:
1004	.word	.LANCHOR45
1005	.word	.LANCHOR5
1006	.word	.LANCHOR46
1007	.word	.LC1
1008	.size	INSERT_DATA_LIST, .-INSERT_DATA_LIST
1009	.section	.text.insert_free_list,"ax",%progbits
1010	.align	1
1011	.global	insert_free_list
1012	.syntax unified
1013	.thumb
1014	.thumb_func
1015	.fpu softvfp
1016	.type	insert_free_list, %function
1017insert_free_list:
1018	@ args = 0, pretend = 0, frame = 0
1019	@ frame_needed = 0, uses_anonymous_args = 0
1020	movw	r1, #65535
1021	push	{r4, r5, r6, r7, r8, r10, fp, lr}
1022	cmp	r0, r1
1023	beq	.L116
1024	ldr	r3, .L122
1025	mov	r10, #6
1026	mul	r7, r10, r0
1027	ldr	r4, [r3]
1028	ldr	r3, .L122+4
1029	adds	r5, r4, r7
1030	ldr	r6, [r3]
1031	mov	lr, r3
1032	strh	r1, [r5, #2]	@ movhi
1033	strh	r1, [r4, r7]	@ movhi
1034	cbnz	r6, .L117
1035	str	r5, [r3]
1036.L116:
1037	movs	r0, #0
1038	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
1039.L117:
1040	ldr	r3, .L122+8
1041	subs	r2, r6, r4
1042	mov	fp, r1
1043	ldr	ip, [r3]
1044	asrs	r3, r2, #1
1045	ldr	r2, .L122+12
1046	ldrh	r8, [ip, r0, lsl #1]
1047	muls	r2, r3, r2
1048	mov	r3, r6
1049	uxth	r2, r2
1050.L120:
1051	ldrh	r1, [ip, r2, lsl #1]
1052	cmp	r1, r8
1053	bcs	.L118
1054	ldrh	r1, [r3]
1055	cmp	r1, fp
1056	bne	.L119
1057	strh	r2, [r5, #2]	@ movhi
1058	strh	r0, [r3]	@ movhi
1059	b	.L116
1060.L119:
1061	mla	r3, r10, r1, r4
1062	mov	r2, r1
1063	b	.L120
1064.L118:
1065	ldrh	r1, [r3, #2]
1066	cmp	r3, r6
1067	strh	r1, [r5, #2]	@ movhi
1068	it	ne
1069	ldrhne	r1, [r3, #2]
1070	strh	r2, [r4, r7]	@ movhi
1071	iteet	ne
1072	movne	r2, #6
1073	strheq	r0, [r3, #2]	@ movhi
1074	streq	r5, [lr]
1075	mulne	r2, r2, r1
1076	itt	ne
1077	strhne	r0, [r4, r2]	@ movhi
1078	strhne	r0, [r3, #2]	@ movhi
1079	b	.L116
1080.L123:
1081	.align	2
1082.L122:
1083	.word	.LANCHOR40
1084	.word	.LANCHOR47
1085	.word	.LANCHOR43
1086	.word	-1431655765
1087	.size	insert_free_list, .-insert_free_list
1088	.section	.text.INSERT_FREE_LIST,"ax",%progbits
1089	.align	1
1090	.global	INSERT_FREE_LIST
1091	.syntax unified
1092	.thumb
1093	.thumb_func
1094	.fpu softvfp
1095	.type	INSERT_FREE_LIST, %function
1096INSERT_FREE_LIST:
1097	@ args = 0, pretend = 0, frame = 0
1098	@ frame_needed = 0, uses_anonymous_args = 0
1099	push	{r3, lr}
1100	bl	insert_free_list
1101	ldr	r2, .L126
1102	ldrh	r3, [r2]
1103	adds	r3, r3, #1
1104	uxth	r3, r3
1105	strh	r3, [r2]	@ movhi
1106	ldr	r2, .L126+4
1107	ldrh	r2, [r2]
1108	cmp	r2, r3
1109	bcs	.L124
1110	movs	r2, #214
1111	ldr	r1, .L126+8
1112	ldr	r0, .L126+12
1113	pop	{r3, lr}
1114	b	printf
1115.L124:
1116	pop	{r3, pc}
1117.L127:
1118	.align	2
1119.L126:
1120	.word	.LANCHOR48
1121	.word	.LANCHOR5
1122	.word	.LANCHOR49
1123	.word	.LC1
1124	.size	INSERT_FREE_LIST, .-INSERT_FREE_LIST
1125	.section	.text.List_remove_node,"ax",%progbits
1126	.align	1
1127	.global	List_remove_node
1128	.syntax unified
1129	.thumb
1130	.thumb_func
1131	.fpu softvfp
1132	.type	List_remove_node, %function
1133List_remove_node:
1134	@ args = 0, pretend = 0, frame = 0
1135	@ frame_needed = 0, uses_anonymous_args = 0
1136	push	{r4, r5, r6, r7, r8, lr}
1137	movs	r6, #6
1138	ldr	r5, .L134
1139	muls	r6, r1, r6
1140	movw	r3, #65535
1141	mov	r8, r0
1142	ldr	r7, [r5]
1143	adds	r4, r7, r6
1144	ldrh	r2, [r4, #2]
1145	cmp	r2, r3
1146	bne	.L129
1147	ldr	r3, [r0]
1148	cmp	r4, r3
1149	beq	.L129
1150	movw	r2, #379
1151	ldr	r1, .L134+4
1152	ldr	r0, .L134+8
1153	bl	printf
1154.L129:
1155	ldr	r3, [r8]
1156	movw	r1, #65535
1157	cmp	r4, r3
1158	ldrh	r3, [r7, r6]
1159	bne	.L130
1160	cmp	r3, r1
1161	ittee	ne
1162	ldrne	r0, [r5]
1163	movne	r2, #6
1164	moveq	r3, #0
1165	streq	r3, [r8]
1166	ittt	ne
1167	mlane	r3, r2, r3, r0
1168	strne	r3, [r8]
1169	strhne	r1, [r3, #2]	@ movhi
1170.L132:
1171	movw	r3, #65535
1172	movs	r0, #0
1173	strh	r3, [r7, r6]	@ movhi
1174	strh	r3, [r4, #2]	@ movhi
1175	pop	{r4, r5, r6, r7, r8, pc}
1176.L130:
1177	cmp	r3, r1
1178	ldrh	r1, [r4, #2]
1179	bne	.L133
1180	cmp	r1, r3
1181	beq	.L132
1182	movs	r2, #6
1183	ldr	r0, [r5]
1184	muls	r1, r2, r1
1185	strh	r3, [r0, r1]	@ movhi
1186	b	.L132
1187.L133:
1188	ldr	r0, [r5]
1189	movs	r2, #6
1190	mla	r5, r2, r3, r0
1191	strh	r1, [r5, #2]	@ movhi
1192	ldrh	r1, [r4, #2]
1193	muls	r2, r1, r2
1194	strh	r3, [r0, r2]	@ movhi
1195	b	.L132
1196.L135:
1197	.align	2
1198.L134:
1199	.word	.LANCHOR40
1200	.word	.LANCHOR50
1201	.word	.LC1
1202	.size	List_remove_node, .-List_remove_node
1203	.section	.text.List_pop_index_node,"ax",%progbits
1204	.align	1
1205	.global	List_pop_index_node
1206	.syntax unified
1207	.thumb
1208	.thumb_func
1209	.fpu softvfp
1210	.type	List_pop_index_node, %function
1211List_pop_index_node:
1212	@ args = 0, pretend = 0, frame = 0
1213	@ frame_needed = 0, uses_anonymous_args = 0
1214	ldr	r3, [r0]
1215	push	{r4, r5, r6, lr}
1216	cbz	r3, .L142
1217	ldr	r2, .L143
1218	movw	r5, #65535
1219	movs	r6, #6
1220	ldr	r2, [r2]
1221.L138:
1222	cbnz	r1, .L139
1223.L141:
1224	ldr	r4, .L143+4
1225	subs	r3, r3, r2
1226	asrs	r3, r3, #1
1227	muls	r4, r3, r4
1228	uxth	r1, r4
1229	bl	List_remove_node
1230	uxth	r0, r4
1231	pop	{r4, r5, r6, pc}
1232.L139:
1233	ldrh	r4, [r3]
1234	cmp	r4, r5
1235	beq	.L141
1236	subs	r1, r1, #1
1237	mla	r3, r6, r4, r2
1238	uxth	r1, r1
1239	b	.L138
1240.L142:
1241	movw	r0, #65535
1242	pop	{r4, r5, r6, pc}
1243.L144:
1244	.align	2
1245.L143:
1246	.word	.LANCHOR40
1247	.word	-1431655765
1248	.size	List_pop_index_node, .-List_pop_index_node
1249	.section	.text.List_pop_head_node,"ax",%progbits
1250	.align	1
1251	.global	List_pop_head_node
1252	.syntax unified
1253	.thumb
1254	.thumb_func
1255	.fpu softvfp
1256	.type	List_pop_head_node, %function
1257List_pop_head_node:
1258	@ args = 0, pretend = 0, frame = 0
1259	@ frame_needed = 0, uses_anonymous_args = 0
1260	@ link register save eliminated.
1261	movs	r1, #0
1262	b	List_pop_index_node
1263	.size	List_pop_head_node, .-List_pop_head_node
1264	.section	.text.List_get_gc_head_node,"ax",%progbits
1265	.align	1
1266	.global	List_get_gc_head_node
1267	.syntax unified
1268	.thumb
1269	.thumb_func
1270	.fpu softvfp
1271	.type	List_get_gc_head_node, %function
1272List_get_gc_head_node:
1273	@ args = 0, pretend = 0, frame = 0
1274	@ frame_needed = 0, uses_anonymous_args = 0
1275	ldr	r3, .L152
1276	push	{r4, lr}
1277	ldr	r3, [r3]
1278	cbz	r3, .L151
1279	ldr	r2, .L152+4
1280	movs	r4, #6
1281	ldr	r1, [r2]
1282	movw	r2, #65535
1283.L148:
1284	cbz	r0, .L149
1285	ldrh	r3, [r3]
1286	cmp	r3, r2
1287	bne	.L150
1288.L151:
1289	movw	r0, #65535
1290	pop	{r4, pc}
1291.L150:
1292	subs	r0, r0, #1
1293	mla	r3, r4, r3, r1
1294	uxth	r0, r0
1295	b	.L148
1296.L149:
1297	ldr	r0, .L152+8
1298	subs	r3, r3, r1
1299	asrs	r3, r3, #1
1300	muls	r3, r0, r3
1301	uxth	r0, r3
1302	pop	{r4, pc}
1303.L153:
1304	.align	2
1305.L152:
1306	.word	.LANCHOR41
1307	.word	.LANCHOR40
1308	.word	-1431655765
1309	.size	List_get_gc_head_node, .-List_get_gc_head_node
1310	.section	.text.List_update_data_list,"ax",%progbits
1311	.align	1
1312	.global	List_update_data_list
1313	.syntax unified
1314	.thumb
1315	.thumb_func
1316	.fpu softvfp
1317	.type	List_update_data_list, %function
1318List_update_data_list:
1319	@ args = 0, pretend = 0, frame = 0
1320	@ frame_needed = 0, uses_anonymous_args = 0
1321	ldr	r3, .L165
1322	push	{r4, r5, r6, r7, r8, r10, fp, lr}
1323	mov	r4, r0
1324	ldrh	r3, [r3]
1325	cmp	r3, r0
1326	beq	.L156
1327	ldr	r3, .L165+4
1328	ldrh	r3, [r3]
1329	cmp	r3, r0
1330	beq	.L156
1331	ldr	r3, .L165+8
1332	ldrh	r3, [r3]
1333	cmp	r3, r0
1334	beq	.L156
1335	ldr	r7, .L165+12
1336	movs	r6, #6
1337	ldr	r3, .L165+16
1338	muls	r6, r0, r6
1339	ldr	fp, [r7]
1340	ldr	r3, [r3]
1341	add	r10, fp, r6
1342	cmp	r10, r3
1343	beq	.L156
1344	ldr	r3, .L165+20
1345	ldrh	r5, [r10, #4]
1346	ldr	r2, [r3]
1347	mov	r8, r3
1348	ldrh	r2, [r2, r0, lsl #1]
1349	cmp	r5, #0
1350	beq	.L163
1351	muls	r5, r2, r5
1352.L158:
1353	ldrh	r3, [r10, #2]
1354	movw	r2, #65535
1355	cmp	r3, r2
1356	bne	.L159
1357	ldrh	r2, [fp, r6]
1358	cmp	r2, r3
1359	bne	.L159
1360	mov	r2, #470
1361	ldr	r1, .L165+24
1362	ldr	r0, .L165+28
1363	bl	printf
1364.L159:
1365	ldrh	r3, [r10, #2]
1366	movw	r2, #65535
1367	cmp	r3, r2
1368	bne	.L160
1369	ldrh	r2, [fp, r6]
1370	cmp	r2, r3
1371	beq	.L156
1372.L160:
1373	movs	r2, #6
1374	muls	r2, r3, r2
1375	ldr	r3, .L165+32
1376	asrs	r1, r2, #1
1377	muls	r3, r1, r3
1378	ldr	r1, [r8]
1379	ldrh	r0, [r1, r3, lsl #1]
1380	ldr	r1, [r7]
1381	add	r2, r2, r1
1382	ldrh	r3, [r2, #4]
1383	cbz	r3, .L164
1384	muls	r3, r0, r3
1385.L161:
1386	cmp	r5, r3
1387	bcs	.L156
1388	ldr	r5, .L165+36
1389	mov	r1, r4
1390	ldr	r0, .L165+16
1391	bl	List_remove_node
1392	ldrh	r3, [r5]
1393	cbnz	r3, .L162
1394	movw	r2, #481
1395	ldr	r1, .L165+24
1396	ldr	r0, .L165+28
1397	bl	printf
1398.L162:
1399	ldrh	r3, [r5]
1400	mov	r0, r4
1401	subs	r3, r3, #1
1402	strh	r3, [r5]	@ movhi
1403	bl	INSERT_DATA_LIST
1404.L156:
1405	movs	r0, #0
1406	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
1407.L163:
1408	mov	r5, #-1
1409	b	.L158
1410.L164:
1411	mov	r3, #-1
1412	b	.L161
1413.L166:
1414	.align	2
1415.L165:
1416	.word	.LANCHOR51
1417	.word	.LANCHOR52
1418	.word	.LANCHOR53
1419	.word	.LANCHOR40
1420	.word	.LANCHOR41
1421	.word	.LANCHOR42
1422	.word	.LANCHOR54
1423	.word	.LC1
1424	.word	-1431655765
1425	.word	.LANCHOR45
1426	.size	List_update_data_list, .-List_update_data_list
1427	.section	.text.select_l2p_ram_region,"ax",%progbits
1428	.align	1
1429	.global	select_l2p_ram_region
1430	.syntax unified
1431	.thumb
1432	.thumb_func
1433	.fpu softvfp
1434	.type	select_l2p_ram_region, %function
1435select_l2p_ram_region:
1436	@ args = 0, pretend = 0, frame = 0
1437	@ frame_needed = 0, uses_anonymous_args = 0
1438	push	{r3, r4, r5, r6, r7, lr}
1439	movs	r1, #0
1440	ldr	r3, .L177
1441	movs	r0, #12
1442	movw	r5, #65535
1443	ldrh	r2, [r3]
1444	ldr	r3, .L177+4
1445	ldr	r3, [r3]
1446.L168:
1447	uxth	r4, r1
1448	cmp	r4, r2
1449	bcc	.L170
1450	mov	r4, r2
1451	movs	r1, #0
1452	mov	r6, #-2147483648
1453	movs	r7, #12
1454.L171:
1455	uxth	r5, r1
1456	cmp	r5, r2
1457	bcc	.L173
1458	cmp	r4, r2
1459	bcc	.L169
1460	ldr	r1, .L177+8
1461	mov	r4, r2
1462	mov	r0, #-1
1463	ldrh	r7, [r1]
1464	movs	r1, #0
1465.L174:
1466	uxth	r5, r1
1467	cmp	r5, r2
1468	bcc	.L176
1469	cmp	r4, r2
1470	bcc	.L169
1471	mov	r2, #784
1472	ldr	r1, .L177+12
1473	ldr	r0, .L177+16
1474	bl	printf
1475	b	.L169
1476.L170:
1477	adds	r1, r1, #1
1478	mla	r6, r0, r1, r3
1479	ldrh	r6, [r6, #-12]
1480	cmp	r6, r5
1481	bne	.L168
1482.L169:
1483	mov	r0, r4
1484	pop	{r3, r4, r5, r6, r7, pc}
1485.L173:
1486	mla	r0, r7, r1, r3
1487	ldr	r0, [r0, #4]
1488	cmp	r0, #0
1489	blt	.L172
1490	cmp	r6, r0
1491	itt	hi
1492	movhi	r6, r0
1493	movhi	r4, r5
1494.L172:
1495	adds	r1, r1, #1
1496	b	.L171
1497.L176:
1498	ldr	r6, [r3, #4]
1499	cmp	r0, r6
1500	bls	.L175
1501	ldrh	ip, [r3]
1502	cmp	ip, r7
1503	itt	ne
1504	movne	r0, r6
1505	movne	r4, r5
1506.L175:
1507	adds	r1, r1, #1
1508	adds	r3, r3, #12
1509	b	.L174
1510.L178:
1511	.align	2
1512.L177:
1513	.word	.LANCHOR33
1514	.word	.LANCHOR55
1515	.word	.LANCHOR56
1516	.word	.LANCHOR57
1517	.word	.LC1
1518	.size	select_l2p_ram_region, .-select_l2p_ram_region
1519	.section	.text.FtlUpdateVaildLpn,"ax",%progbits
1520	.align	1
1521	.global	FtlUpdateVaildLpn
1522	.syntax unified
1523	.thumb
1524	.thumb_func
1525	.fpu softvfp
1526	.type	FtlUpdateVaildLpn, %function
1527FtlUpdateVaildLpn:
1528	@ args = 0, pretend = 0, frame = 0
1529	@ frame_needed = 0, uses_anonymous_args = 0
1530	ldr	r2, .L189
1531	push	{r4, r5, r6, lr}
1532	mov	r1, r2
1533	ldrh	r3, [r2]
1534	cmp	r3, #4
1535	bhi	.L180
1536	cbnz	r0, .L180
1537	adds	r3, r3, #1
1538	strh	r3, [r2]	@ movhi
1539	pop	{r4, r5, r6, pc}
1540.L180:
1541	movs	r3, #0
1542	ldr	r0, .L189+4
1543	strh	r3, [r1]	@ movhi
1544	movw	r6, #65535
1545	ldr	r1, .L189+8
1546	ldrh	r4, [r0]
1547	mov	r0, r3
1548	ldr	r2, .L189+12
1549	ldr	r1, [r1]
1550	str	r3, [r2]
1551	add	r4, r1, r4, lsl #1
1552.L181:
1553	cmp	r1, r4
1554	bne	.L183
1555	cbz	r3, .L179
1556	str	r0, [r2]
1557.L179:
1558	pop	{r4, r5, r6, pc}
1559.L183:
1560	ldrh	r5, [r1], #2
1561	cmp	r5, r6
1562	itt	ne
1563	addne	r0, r0, r5
1564	movne	r3, #1
1565	b	.L181
1566.L190:
1567	.align	2
1568.L189:
1569	.word	.LANCHOR58
1570	.word	.LANCHOR5
1571	.word	.LANCHOR42
1572	.word	.LANCHOR59
1573	.size	FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
1574	.section	.text.ftl_set_blk_mode,"ax",%progbits
1575	.align	1
1576	.global	ftl_set_blk_mode
1577	.syntax unified
1578	.thumb
1579	.thumb_func
1580	.fpu softvfp
1581	.type	ftl_set_blk_mode, %function
1582ftl_set_blk_mode:
1583	@ args = 0, pretend = 0, frame = 0
1584	@ frame_needed = 0, uses_anonymous_args = 0
1585	@ link register save eliminated.
1586	mov	r3, r0
1587	cbz	r1, .L192
1588	b	ftl_set_blk_mode.part.6
1589.L192:
1590	ldr	r2, .L193
1591	lsrs	r0, r0, #5
1592	and	r3, r3, #31
1593	ldr	r1, [r2]
1594	movs	r2, #1
1595	lsl	r3, r2, r3
1596	ldr	r2, [r1, r0, lsl #2]
1597	bic	r2, r2, r3
1598	str	r2, [r1, r0, lsl #2]
1599	bx	lr
1600.L194:
1601	.align	2
1602.L193:
1603	.word	.LANCHOR1
1604	.size	ftl_set_blk_mode, .-ftl_set_blk_mode
1605	.section	.text.ftl_get_blk_mode,"ax",%progbits
1606	.align	1
1607	.global	ftl_get_blk_mode
1608	.syntax unified
1609	.thumb
1610	.thumb_func
1611	.fpu softvfp
1612	.type	ftl_get_blk_mode, %function
1613ftl_get_blk_mode:
1614	@ args = 0, pretend = 0, frame = 0
1615	@ frame_needed = 0, uses_anonymous_args = 0
1616	@ link register save eliminated.
1617	ldr	r3, .L196
1618	lsrs	r2, r0, #5
1619	and	r0, r0, #31
1620	ldr	r3, [r3]
1621	ldr	r3, [r3, r2, lsl #2]
1622	lsr	r0, r3, r0
1623	and	r0, r0, #1
1624	bx	lr
1625.L197:
1626	.align	2
1627.L196:
1628	.word	.LANCHOR1
1629	.size	ftl_get_blk_mode, .-ftl_get_blk_mode
1630	.section	.text.ftl_sb_update_avl_pages,"ax",%progbits
1631	.align	1
1632	.global	ftl_sb_update_avl_pages
1633	.syntax unified
1634	.thumb
1635	.thumb_func
1636	.fpu softvfp
1637	.type	ftl_sb_update_avl_pages, %function
1638ftl_sb_update_avl_pages:
1639	@ args = 0, pretend = 0, frame = 0
1640	@ frame_needed = 0, uses_anonymous_args = 0
1641	movs	r3, #0
1642	push	{r4, r5, r6, lr}
1643	strh	r3, [r0, #4]	@ movhi
1644	movw	r6, #65535
1645	ldr	r3, .L205
1646	ldrh	r4, [r3]
1647	add	r3, r0, r2, lsl #1
1648	adds	r3, r3, #14
1649.L199:
1650	cmp	r2, r4
1651	bcc	.L201
1652	ldr	r3, .L205+4
1653	add	r5, r0, #16
1654	movw	r6, #65535
1655	ldrh	r3, [r3]
1656	subs	r3, r3, #1
1657	subs	r1, r3, r1
1658	movs	r3, #0
1659	uxth	r1, r1
1660.L202:
1661	uxth	r2, r3
1662	cmp	r4, r2
1663	bhi	.L204
1664	pop	{r4, r5, r6, pc}
1665.L201:
1666	ldrh	r5, [r3, #2]!
1667	adds	r2, r2, #1
1668	uxth	r2, r2
1669	cmp	r5, r6
1670	ittt	ne
1671	ldrhne	r5, [r0, #4]
1672	addne	r5, r5, #1
1673	strhne	r5, [r0, #4]	@ movhi
1674	b	.L199
1675.L204:
1676	ldrh	r2, [r5], #2
1677	adds	r3, r3, #1
1678	cmp	r2, r6
1679	ittt	ne
1680	ldrhne	r2, [r0, #4]
1681	addne	r2, r2, r1
1682	strhne	r2, [r0, #4]	@ movhi
1683	b	.L202
1684.L206:
1685	.align	2
1686.L205:
1687	.word	.LANCHOR3
1688	.word	.LANCHOR19
1689	.size	ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
1690	.section	.text.FtlSlcSuperblockCheck,"ax",%progbits
1691	.align	1
1692	.global	FtlSlcSuperblockCheck
1693	.syntax unified
1694	.thumb
1695	.thumb_func
1696	.fpu softvfp
1697	.type	FtlSlcSuperblockCheck, %function
1698FtlSlcSuperblockCheck:
1699	@ args = 0, pretend = 0, frame = 0
1700	@ frame_needed = 0, uses_anonymous_args = 0
1701	ldrh	r3, [r0, #4]
1702	push	{r4, r5, lr}
1703	cbz	r3, .L207
1704	ldrh	r2, [r0]
1705	movw	r3, #65535
1706	cmp	r2, r3
1707	beq	.L207
1708	ldrb	r2, [r0, #6]	@ zero_extendqisi2
1709	movs	r5, #0
1710	adds	r2, r2, #8
1711	ldrh	r1, [r0, r2, lsl #1]
1712	ldr	r2, .L213
1713	ldrh	r4, [r2]
1714	mov	r2, r3
1715.L210:
1716	cmp	r1, r2
1717	beq	.L212
1718.L207:
1719	pop	{r4, r5, pc}
1720.L212:
1721	ldrb	r3, [r0, #6]	@ zero_extendqisi2
1722	adds	r3, r3, #1
1723	uxtb	r3, r3
1724	cmp	r3, r4
1725	strb	r3, [r0, #6]
1726	itttt	eq
1727	ldrheq	r3, [r0, #2]
1728	strbeq	r5, [r0, #6]
1729	addeq	r3, r3, #1
1730	strheq	r3, [r0, #2]	@ movhi
1731	ldrb	r3, [r0, #6]	@ zero_extendqisi2
1732	adds	r3, r3, #8
1733	ldrh	r1, [r0, r3, lsl #1]
1734	b	.L210
1735.L214:
1736	.align	2
1737.L213:
1738	.word	.LANCHOR3
1739	.size	FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
1740	.section	.text.make_superblock,"ax",%progbits
1741	.align	1
1742	.global	make_superblock
1743	.syntax unified
1744	.thumb
1745	.thumb_func
1746	.fpu softvfp
1747	.type	make_superblock, %function
1748make_superblock:
1749	@ args = 0, pretend = 0, frame = 0
1750	@ frame_needed = 0, uses_anonymous_args = 0
1751	ldr	r3, .L220
1752	ldrh	r2, [r0]
1753	push	{r4, r5, r6, r7, r8, r10, fp, lr}
1754	mov	r4, r0
1755	ldrh	r3, [r3]
1756	cmp	r2, r3
1757	bcc	.L216
1758	movw	r2, #2097
1759	ldr	r1, .L220+4
1760	ldr	r0, .L220+8
1761	bl	printf
1762.L216:
1763	ldr	r3, .L220+12
1764	add	r6, r4, #16
1765	ldr	r10, .L220+20
1766	movw	r7, #65535
1767	movs	r5, #0
1768	ldrh	r8, [r3]
1769	strh	r5, [r4, #4]	@ movhi
1770	strb	r5, [r4, #7]
1771.L217:
1772	uxth	r3, r5
1773	cmp	r8, r3
1774	bhi	.L219
1775	ldr	r2, .L220+16
1776	movs	r0, #0
1777	ldrb	r3, [r4, #7]	@ zero_extendqisi2
1778	ldrh	r2, [r2]
1779	smulbb	r3, r3, r2
1780	strh	r3, [r4, #4]	@ movhi
1781	movs	r3, #1
1782	strb	r3, [r4, #9]
1783	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
1784.L219:
1785	ldrh	r1, [r4]
1786	ldrb	r0, [r10, r5]	@ zero_extendqisi2
1787	bl	V2P_block
1788	strh	r7, [r6]	@ movhi
1789	mov	fp, r0
1790	bl	FtlBbmIsBadBlock
1791	cbnz	r0, .L218
1792	strh	fp, [r6]	@ movhi
1793	ldrb	r3, [r4, #7]	@ zero_extendqisi2
1794	adds	r3, r3, #1
1795	strb	r3, [r4, #7]
1796.L218:
1797	adds	r5, r5, #1
1798	adds	r6, r6, #2
1799	b	.L217
1800.L221:
1801	.align	2
1802.L220:
1803	.word	.LANCHOR5
1804	.word	.LANCHOR60
1805	.word	.LC1
1806	.word	.LANCHOR3
1807	.word	.LANCHOR19
1808	.word	.LANCHOR13
1809	.size	make_superblock, .-make_superblock
1810	.section	.text.update_multiplier_value,"ax",%progbits
1811	.align	1
1812	.global	update_multiplier_value
1813	.syntax unified
1814	.thumb
1815	.thumb_func
1816	.fpu softvfp
1817	.type	update_multiplier_value, %function
1818update_multiplier_value:
1819	@ args = 0, pretend = 0, frame = 0
1820	@ frame_needed = 0, uses_anonymous_args = 0
1821	push	{r3, r4, r5, r6, r7, r8, r10, lr}
1822	movs	r5, #0
1823	ldr	r3, .L228
1824	mov	r6, r0
1825	mov	r4, r5
1826	ldr	r10, .L228+12
1827	ldrh	r7, [r3]
1828	ldr	r3, .L228+4
1829	ldrh	r8, [r3]
1830.L223:
1831	uxth	r3, r5
1832	cmp	r7, r3
1833	bhi	.L225
1834	cbz	r4, .L227
1835	mov	r1, r4
1836	mov	r0, #32768
1837	bl	__aeabi_idiv
1838.L226:
1839	ldr	r3, .L228+8
1840	movs	r2, #6
1841	ldr	r3, [r3]
1842	mla	r6, r2, r6, r3
1843	strh	r0, [r6, #4]	@ movhi
1844	movs	r0, #0
1845	pop	{r3, r4, r5, r6, r7, r8, r10, pc}
1846.L225:
1847	mov	r1, r6
1848	ldrb	r0, [r10, r5]	@ zero_extendqisi2
1849	bl	V2P_block
1850	bl	FtlBbmIsBadBlock
1851	cbnz	r0, .L224
1852	add	r4, r4, r8
1853	uxth	r4, r4
1854.L224:
1855	adds	r5, r5, #1
1856	b	.L223
1857.L227:
1858	mov	r0, r4
1859	b	.L226
1860.L229:
1861	.align	2
1862.L228:
1863	.word	.LANCHOR3
1864	.word	.LANCHOR19
1865	.word	.LANCHOR40
1866	.word	.LANCHOR13
1867	.size	update_multiplier_value, .-update_multiplier_value
1868	.section	.text.GetFreeBlockMinEraseCount,"ax",%progbits
1869	.align	1
1870	.global	GetFreeBlockMinEraseCount
1871	.syntax unified
1872	.thumb
1873	.thumb_func
1874	.fpu softvfp
1875	.type	GetFreeBlockMinEraseCount, %function
1876GetFreeBlockMinEraseCount:
1877	@ args = 0, pretend = 0, frame = 0
1878	@ frame_needed = 0, uses_anonymous_args = 0
1879	@ link register save eliminated.
1880	ldr	r3, .L233
1881	ldr	r0, [r3]
1882	cbz	r0, .L231
1883	ldr	r3, .L233+4
1884	ldr	r3, [r3]
1885	subs	r0, r0, r3
1886	ldr	r3, .L233+8
1887	asrs	r0, r0, #1
1888	muls	r0, r3, r0
1889	ldr	r3, .L233+12
1890	ldr	r3, [r3]
1891	uxth	r0, r0
1892	ldrh	r0, [r3, r0, lsl #1]
1893.L231:
1894	bx	lr
1895.L234:
1896	.align	2
1897.L233:
1898	.word	.LANCHOR47
1899	.word	.LANCHOR40
1900	.word	-1431655765
1901	.word	.LANCHOR43
1902	.size	GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
1903	.section	.text.GetFreeBlockMaxEraseCount,"ax",%progbits
1904	.align	1
1905	.global	GetFreeBlockMaxEraseCount
1906	.syntax unified
1907	.thumb
1908	.thumb_func
1909	.fpu softvfp
1910	.type	GetFreeBlockMaxEraseCount, %function
1911GetFreeBlockMaxEraseCount:
1912	@ args = 0, pretend = 0, frame = 0
1913	@ frame_needed = 0, uses_anonymous_args = 0
1914	ldr	r3, .L243
1915	push	{r4, r5, r6, lr}
1916	ldr	r3, [r3]
1917	cbz	r3, .L241
1918	ldr	r2, .L243+4
1919	movs	r5, #6
1920	movw	r6, #65535
1921	ldrh	r2, [r2]
1922	rsb	r2, r2, r2, lsl #3
1923	asrs	r2, r2, #3
1924	cmp	r0, r2
1925	it	gt
1926	uxthgt	r0, r2
1927	ldr	r2, .L243+8
1928	ldr	r1, [r2]
1929	ldr	r2, .L243+12
1930	subs	r3, r3, r1
1931	asrs	r3, r3, #1
1932	muls	r3, r2, r3
1933	movs	r2, #0
1934	uxth	r3, r3
1935.L238:
1936	uxth	r4, r2
1937	cmp	r0, r4
1938	bls	.L240
1939	mul	r4, r5, r3
1940	adds	r2, r2, #1
1941	ldrh	r4, [r1, r4]
1942	cmp	r4, r6
1943	bne	.L242
1944.L240:
1945	ldr	r2, .L243+16
1946	ldr	r2, [r2]
1947	ldrh	r0, [r2, r3, lsl #1]
1948	pop	{r4, r5, r6, pc}
1949.L242:
1950	mov	r3, r4
1951	b	.L238
1952.L241:
1953	mov	r0, r3
1954	pop	{r4, r5, r6, pc}
1955.L244:
1956	.align	2
1957.L243:
1958	.word	.LANCHOR47
1959	.word	.LANCHOR48
1960	.word	.LANCHOR40
1961	.word	-1431655765
1962	.word	.LANCHOR43
1963	.size	GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
1964	.section	.text.FtlPrintInfo2buf,"ax",%progbits
1965	.align	1
1966	.global	FtlPrintInfo2buf
1967	.syntax unified
1968	.thumb
1969	.thumb_func
1970	.fpu softvfp
1971	.type	FtlPrintInfo2buf, %function
1972FtlPrintInfo2buf:
1973	@ args = 0, pretend = 0, frame = 0
1974	@ frame_needed = 0, uses_anonymous_args = 0
1975	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
1976	mov	r8, r0
1977	ldr	r1, .L257
1978	bl	sprintf
1979	ldr	r3, .L257+4
1980	add	r5, r8, r0
1981	ldr	r1, .L257+8
1982	mov	r0, r5
1983	ldr	r4, .L257+12
1984	ldr	r2, [r3]
1985	bl	sprintf
1986	add	r5, r5, r0
1987	ldr	r1, .L257+16
1988	mov	r0, r5
1989	ldr	r10, .L257+352
1990	bl	sprintf
1991	ldr	r3, .L257+20
1992	add	r5, r5, r0
1993	ldr	r1, .L257+24
1994	mov	r0, r5
1995	ldr	r6, .L257+28
1996	ldr	r2, [r3]
1997	bl	sprintf
1998	ldr	r3, .L257+32
1999	add	r5, r5, r0
2000	ldr	r1, .L257+36
2001	mov	r0, r5
2002	ldr	r7, .L257+40
2003	ldr	r2, [r3]
2004	bl	sprintf
2005	ldr	r3, .L257+44
2006	add	r5, r5, r0
2007	ldr	r1, .L257+48
2008	mov	r0, r5
2009	ldr	fp, .L257+356
2010	ldr	r2, [r3]
2011	bl	sprintf
2012	ldr	r3, .L257+52
2013	add	r5, r5, r0
2014	ldr	r1, .L257+56
2015	mov	r0, r5
2016	ldr	r2, [r3]
2017	bl	sprintf
2018	ldr	r3, .L257+60
2019	add	r5, r5, r0
2020	ldr	r1, .L257+64
2021	mov	r0, r5
2022	ldr	r2, [r3]
2023	bl	sprintf
2024	ldr	r3, .L257+68
2025	add	r5, r5, r0
2026	ldr	r1, .L257+72
2027	mov	r0, r5
2028	ldr	r2, [r3]
2029	bl	sprintf
2030	ldr	r3, .L257+76
2031	add	r5, r5, r0
2032	ldr	r1, .L257+80
2033	mov	r0, r5
2034	ldr	r2, [r3]
2035	bl	sprintf
2036	ldr	r3, .L257+84
2037	add	r5, r5, r0
2038	ldr	r1, .L257+88
2039	mov	r0, r5
2040	ldr	r2, [r3]
2041	bl	sprintf
2042	ldr	r3, .L257+92
2043	add	r5, r5, r0
2044	ldr	r1, .L257+96
2045	mov	r0, r5
2046	ldr	r2, [r3]
2047	lsrs	r2, r2, #11
2048	bl	sprintf
2049	ldr	r3, .L257+100
2050	add	r5, r5, r0
2051	ldr	r1, .L257+104
2052	mov	r0, r5
2053	ldr	r2, [r3]
2054	lsrs	r2, r2, #11
2055	bl	sprintf
2056	ldr	r3, .L257+108
2057	add	r5, r5, r0
2058	ldr	r1, .L257+112
2059	mov	r0, r5
2060	ldr	r2, [r3]
2061	bl	sprintf
2062	ldr	r3, .L257+116
2063	add	r5, r5, r0
2064	ldr	r1, .L257+120
2065	mov	r0, r5
2066	ldr	r2, [r3]
2067	bl	sprintf
2068	add	r5, r5, r0
2069	ldrh	r2, [r4, #6]
2070	ldr	r1, .L257+124
2071	mov	r0, r5
2072	bl	sprintf
2073	add	r5, r5, r0
2074	ldrh	r2, [r10]
2075	ldr	r1, .L257+128
2076	mov	r0, r5
2077	bl	sprintf
2078	ldr	r3, .L257+132
2079	add	r5, r5, r0
2080	ldr	r1, .L257+136
2081	mov	r0, r5
2082	ldr	r2, [r3]
2083	bl	sprintf
2084	ldr	r3, .L257+140
2085	add	r5, r5, r0
2086	ldr	r1, .L257+144
2087	mov	r0, r5
2088	ldr	r2, [r3]
2089	bl	sprintf
2090	ldr	r3, .L257+148
2091	add	r5, r5, r0
2092	ldr	r1, .L257+152
2093	mov	r0, r5
2094	ldr	r2, [r3]
2095	bl	sprintf
2096	ldr	r3, .L257+156
2097	add	r5, r5, r0
2098	ldr	r1, .L257+160
2099	mov	r0, r5
2100	ldr	r2, [r3]
2101	bl	sprintf
2102	ldr	r3, .L257+164
2103	add	r5, r5, r0
2104	ldr	r1, .L257+168
2105	mov	r0, r5
2106	ldr	r2, [r3]
2107	bl	sprintf
2108	ldr	r3, .L257+172
2109	add	r5, r5, r0
2110	ldr	r1, .L257+176
2111	mov	r0, r5
2112	ldr	r2, [r3]
2113	bl	sprintf
2114	add	r5, r5, r0
2115	ldrh	r2, [r6, #30]
2116	ldr	r1, .L257+180
2117	mov	r0, r5
2118	bl	sprintf
2119	add	r5, r5, r0
2120	ldrh	r2, [r6, #28]
2121	ldr	r1, .L257+184
2122	mov	r0, r5
2123	bl	sprintf
2124	ldr	r3, .L257+188
2125	add	r5, r5, r0
2126	ldr	r1, .L257+192
2127	mov	r0, r5
2128	ldr	r6, .L257+196
2129	ldr	r2, [r3]
2130	bl	sprintf
2131	ldr	r3, .L257+200
2132	add	r5, r5, r0
2133	ldr	r1, .L257+204
2134	mov	r0, r5
2135	ldr	r2, [r3]
2136	bl	sprintf
2137	ldr	r3, .L257+208
2138	add	r5, r5, r0
2139	ldr	r1, .L257+212
2140	mov	r0, r5
2141	ldr	r2, [r3]
2142	bl	sprintf
2143	ldr	r3, .L257+216
2144	add	r5, r5, r0
2145	ldr	r1, .L257+220
2146	mov	r0, r5
2147	ldrh	r2, [r3, #6]
2148	bl	sprintf
2149	ldr	r3, .L257+224
2150	add	r5, r5, r0
2151	ldr	r1, .L257+228
2152	mov	r0, r5
2153	ldrh	r2, [r3]
2154	bl	sprintf
2155	ldr	r3, .L257+232
2156	add	r5, r5, r0
2157	ldr	r1, .L257+236
2158	mov	r0, r5
2159	ldrh	r2, [r3]
2160	bl	sprintf
2161	ldr	r3, .L257+240
2162	add	r5, r5, r0
2163	ldr	r1, .L257+244
2164	mov	r0, r5
2165	ldr	r2, [r3]
2166	bl	sprintf
2167	ldr	r3, .L257+248
2168	add	r5, r5, r0
2169	ldr	r1, .L257+252
2170	mov	r0, r5
2171	ldrh	r2, [r3]
2172	bl	sprintf
2173	ldrh	r2, [r4]
2174	add	r5, r5, r0
2175	ldr	r4, .L257+256
2176	mov	r0, r5
2177	ldr	r1, .L257+260
2178	bl	sprintf
2179	add	r5, r5, r0
2180	ldrh	r2, [r4, #2]
2181	ldr	r1, .L257+264
2182	mov	r0, r5
2183	bl	sprintf
2184	add	r5, r5, r0
2185	ldrb	r2, [r4, #6]	@ zero_extendqisi2
2186	ldr	r1, .L257+268
2187	mov	r0, r5
2188	bl	sprintf
2189	add	r5, r5, r0
2190	ldrh	r2, [r4]
2191	ldr	r1, .L257+272
2192	mov	r0, r5
2193	bl	sprintf
2194	add	r5, r5, r0
2195	ldrb	r2, [r4, #8]	@ zero_extendqisi2
2196	ldr	r1, .L257+276
2197	mov	r0, r5
2198	bl	sprintf
2199	add	r5, r5, r0
2200	ldrh	r2, [r4, #4]
2201	ldr	r1, .L257+280
2202	mov	r0, r5
2203	bl	sprintf
2204	ldr	r3, [r6]
2205	add	r5, r5, r0
2206	ldrh	r2, [r4]
2207	mov	r0, r5
2208	ldr	r4, .L257+284
2209	ldr	r1, .L257+288
2210	ldrh	r2, [r3, r2, lsl #1]
2211	bl	sprintf
2212	add	r5, r5, r0
2213	ldrh	r2, [r4, #2]
2214	ldr	r1, .L257+292
2215	mov	r0, r5
2216	bl	sprintf
2217	add	r5, r5, r0
2218	ldrb	r2, [r4, #6]	@ zero_extendqisi2
2219	ldr	r1, .L257+296
2220	mov	r0, r5
2221	bl	sprintf
2222	add	r5, r5, r0
2223	ldrh	r2, [r4]
2224	ldr	r1, .L257+300
2225	mov	r0, r5
2226	bl	sprintf
2227	add	r5, r5, r0
2228	ldrb	r2, [r4, #8]	@ zero_extendqisi2
2229	ldr	r1, .L257+304
2230	mov	r0, r5
2231	bl	sprintf
2232	add	r5, r5, r0
2233	ldrh	r2, [r4, #4]
2234	ldr	r1, .L257+308
2235	mov	r0, r5
2236	bl	sprintf
2237	ldr	r3, [r6]
2238	add	r5, r5, r0
2239	ldrh	r2, [r4]
2240	mov	r0, r5
2241	ldr	r4, .L257+312
2242	ldr	r1, .L257+316
2243	ldrh	r2, [r3, r2, lsl #1]
2244	bl	sprintf
2245	add	r5, r5, r0
2246	ldrh	r2, [r4, #2]
2247	ldr	r1, .L257+320
2248	mov	r0, r5
2249	bl	sprintf
2250	add	r5, r5, r0
2251	ldrb	r2, [r4, #6]	@ zero_extendqisi2
2252	ldr	r1, .L257+324
2253	mov	r0, r5
2254	bl	sprintf
2255	add	r5, r5, r0
2256	ldrh	r2, [r4]
2257	ldr	r1, .L257+328
2258	mov	r0, r5
2259	bl	sprintf
2260	add	r5, r5, r0
2261	ldrb	r2, [r4, #8]	@ zero_extendqisi2
2262	ldr	r1, .L257+332
2263	mov	r0, r5
2264	bl	sprintf
2265	add	r5, r5, r0
2266	ldrh	r2, [r4, #4]
2267	ldr	r1, .L257+336
2268	mov	r0, r5
2269	bl	sprintf
2270	add	r5, r5, r0
2271	ldrh	r2, [r7, #2]
2272	ldr	r1, .L257+340
2273	mov	r0, r5
2274	bl	sprintf
2275	add	r5, r5, r0
2276	ldrb	r2, [r7, #6]	@ zero_extendqisi2
2277	ldr	r1, .L257+344
2278	mov	r0, r5
2279	bl	sprintf
2280	add	r5, r5, r0
2281	ldrh	r2, [r7]
2282	ldr	r1, .L257+348
2283	mov	r0, r5
2284	b	.L258
2285.L259:
2286	.align	2
2287.L257:
2288	.word	.LC2
2289	.word	.LANCHOR26
2290	.word	.LC3
2291	.word	.LANCHOR37
2292	.word	.LC4
2293	.word	.LANCHOR61
2294	.word	.LC5
2295	.word	.LANCHOR39
2296	.word	.LANCHOR59
2297	.word	.LC6
2298	.word	.LANCHOR80
2299	.word	.LANCHOR62
2300	.word	.LC7
2301	.word	.LANCHOR63
2302	.word	.LC8
2303	.word	.LANCHOR64
2304	.word	.LC9
2305	.word	.LANCHOR65
2306	.word	.LC10
2307	.word	.LANCHOR66
2308	.word	.LC11
2309	.word	.LANCHOR67
2310	.word	.LC12
2311	.word	.LANCHOR68
2312	.word	.LC13
2313	.word	.LANCHOR69
2314	.word	.LC14
2315	.word	.LANCHOR70
2316	.word	.LC15
2317	.word	.LANCHOR71
2318	.word	.LC16
2319	.word	.LC17
2320	.word	.LC18
2321	.word	.LANCHOR72
2322	.word	.LC19
2323	.word	.LANCHOR73
2324	.word	.LC20
2325	.word	.LANCHOR74
2326	.word	.LC21
2327	.word	.LANCHOR75
2328	.word	.LC22
2329	.word	.LANCHOR76
2330	.word	.LC23
2331	.word	.LANCHOR77
2332	.word	.LC24
2333	.word	.LC25
2334	.word	.LC26
2335	.word	.LANCHOR34
2336	.word	.LC27
2337	.word	.LANCHOR42
2338	.word	.LANCHOR31
2339	.word	.LC28
2340	.word	.LANCHOR2
2341	.word	.LC29
2342	.word	.LANCHOR38
2343	.word	.LC30
2344	.word	.LANCHOR5
2345	.word	.LC31
2346	.word	.LANCHOR78
2347	.word	.LC32
2348	.word	.LANCHOR7
2349	.word	.LC33
2350	.word	.LANCHOR79
2351	.word	.LC34
2352	.word	.LANCHOR51
2353	.word	.LC35
2354	.word	.LC36
2355	.word	.LC37
2356	.word	.LC38
2357	.word	.LC39
2358	.word	.LC40
2359	.word	.LANCHOR52
2360	.word	.LC41
2361	.word	.LC42
2362	.word	.LC43
2363	.word	.LC44
2364	.word	.LC45
2365	.word	.LC46
2366	.word	.LANCHOR53
2367	.word	.LC47
2368	.word	.LC48
2369	.word	.LC49
2370	.word	.LC50
2371	.word	.LC51
2372	.word	.LC52
2373	.word	.LC53
2374	.word	.LC54
2375	.word	.LC55
2376	.word	.LANCHOR48
2377	.word	.LANCHOR81
2378.L258:
2379	bl	sprintf
2380	add	r5, r5, r0
2381	ldrb	r2, [r7, #8]	@ zero_extendqisi2
2382	ldr	r1, .L260
2383	mov	r0, r5
2384	bl	sprintf
2385	add	r5, r5, r0
2386	ldrh	r2, [r7, #4]
2387	ldr	r1, .L260+4
2388	mov	r0, r5
2389	bl	sprintf
2390	ldr	r3, [fp, #76]
2391	add	r5, r5, r0
2392	ldr	r1, .L260+8
2393	mov	r0, r5
2394	str	r3, [sp]
2395	ldr	r3, [fp, #84]
2396	ldr	r2, [fp, #80]
2397	bl	sprintf
2398	adds	r4, r5, r0
2399	ldr	r2, [fp, #72]
2400	ldr	r1, .L260+12
2401	mov	r0, r4
2402	bl	sprintf
2403	add	r4, r4, r0
2404	ldr	r2, [fp, #96]
2405	ldr	r1, .L260+16
2406	mov	r0, r4
2407	bl	sprintf
2408	ldr	r3, .L260+20
2409	add	r4, r4, r0
2410	ldr	r1, .L260+24
2411	mov	r0, r4
2412	ldrh	r2, [r3]
2413	bl	sprintf
2414	ldr	r3, .L260+28
2415	add	r4, r4, r0
2416	ldr	r1, .L260+32
2417	mov	r0, r4
2418	ldrh	r2, [r3]
2419	bl	sprintf
2420	ldr	r3, .L260+36
2421	add	r4, r4, r0
2422	ldr	r1, .L260+40
2423	mov	r0, r4
2424	ldr	r2, [r3]
2425	bl	sprintf
2426	ldr	r3, .L260+44
2427	add	r4, r4, r0
2428	ldr	r1, .L260+48
2429	mov	r0, r4
2430	ldrh	r2, [r3]
2431	bl	sprintf
2432	add	r4, r4, r0
2433	bl	GetFreeBlockMinEraseCount
2434	ldr	r1, .L260+52
2435	mov	r2, r0
2436	mov	r0, r4
2437	bl	sprintf
2438	add	r4, r4, r0
2439	ldrh	r0, [r10]
2440	bl	GetFreeBlockMaxEraseCount
2441	ldr	r1, .L260+56
2442	mov	r2, r0
2443	mov	r0, r4
2444	bl	sprintf
2445	ldr	r3, .L260+60
2446	add	r4, r4, r0
2447	ldr	r3, [r3]
2448	cmp	r3, #1
2449	beq	.L246
2450.L251:
2451	sub	r0, r4, r8
2452	add	sp, sp, #16
2453	@ sp needed
2454	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
2455.L246:
2456	ldrh	r3, [r7]
2457	movw	r2, #65535
2458	cmp	r3, r2
2459	beq	.L248
2460	ldr	r2, [r6]
2461	mov	r0, r4
2462	ldr	r1, .L260+64
2463	ldrh	r2, [r2, r3, lsl #1]
2464	bl	sprintf
2465	add	r4, r4, r0
2466.L248:
2467	movs	r0, #0
2468	ldr	r5, .L260+68
2469	ldr	fp, .L260+84
2470	movs	r7, #0
2471	bl	List_get_gc_head_node
2472	uxth	r3, r0
2473.L250:
2474	movw	r2, #65535
2475	cmp	r3, r2
2476	beq	.L249
2477	ldr	r2, [fp]
2478	mov	r10, #6
2479	mul	r10, r10, r3
2480	mov	r0, r4
2481	ldr	r1, .L260+72
2482	ldrh	r2, [r2, r3, lsl #1]
2483	str	r2, [sp, #8]
2484	ldr	r2, [r5]
2485	add	r2, r2, r10
2486	ldrh	r2, [r2, #4]
2487	str	r2, [sp, #4]
2488	ldr	r2, [r6]
2489	ldrh	r2, [r2, r3, lsl #1]
2490	str	r2, [sp]
2491	mov	r2, r7
2492	bl	sprintf
2493	adds	r7, r7, #1
2494	ldr	r3, [r5]
2495	cmp	r7, #16
2496	add	r4, r4, r0
2497	ldrh	r3, [r3, r10]
2498	bne	.L250
2499.L249:
2500	ldr	r3, .L260+76
2501	movs	r7, #0
2502	ldr	r2, [r5]
2503	ldr	r10, .L260+84
2504	ldr	r3, [r3]
2505	ldr	fp, .L260+88
2506	subs	r3, r3, r2
2507	ldr	r2, .L260+80
2508	asrs	r3, r3, #1
2509	muls	r3, r2, r3
2510	uxth	r3, r3
2511.L252:
2512	movw	r2, #65535
2513	cmp	r3, r2
2514	beq	.L251
2515	ldr	r2, [r10]
2516	movs	r6, #6
2517	muls	r6, r3, r6
2518	mov	r0, r4
2519	mov	r1, fp
2520	ldrh	r2, [r2, r3, lsl #1]
2521	str	r2, [sp, #4]
2522	ldr	r2, [r5]
2523	add	r2, r2, r6
2524	ldrh	r2, [r2, #4]
2525	str	r2, [sp]
2526	mov	r2, r7
2527	adds	r7, r7, #1
2528	bl	sprintf
2529	cmp	r7, #4
2530	add	r4, r4, r0
2531	beq	.L251
2532	ldr	r3, [r5]
2533	ldrh	r3, [r3, r6]
2534	b	.L252
2535.L261:
2536	.align	2
2537.L260:
2538	.word	.LC56
2539	.word	.LC57
2540	.word	.LC58
2541	.word	.LC59
2542	.word	.LC60
2543	.word	.LANCHOR82
2544	.word	.LC61
2545	.word	.LANCHOR83
2546	.word	.LC62
2547	.word	.LANCHOR84
2548	.word	.LC63
2549	.word	.LANCHOR85
2550	.word	.LC64
2551	.word	.LC65
2552	.word	.LC66
2553	.word	.LANCHOR86
2554	.word	.LC67
2555	.word	.LANCHOR40
2556	.word	.LC68
2557	.word	.LANCHOR47
2558	.word	-1431655765
2559	.word	.LANCHOR43
2560	.word	.LC69
2561	.size	FtlPrintInfo2buf, .-FtlPrintInfo2buf
2562	.section	.text.rknand_proc_ftlread,"ax",%progbits
2563	.align	1
2564	.global	rknand_proc_ftlread
2565	.syntax unified
2566	.thumb
2567	.thumb_func
2568	.fpu softvfp
2569	.type	rknand_proc_ftlread, %function
2570rknand_proc_ftlread:
2571	@ args = 0, pretend = 0, frame = 0
2572	@ frame_needed = 0, uses_anonymous_args = 0
2573	push	{r3, r4, r5, lr}
2574	mov	r5, r0
2575	ldr	r2, .L263
2576	ldr	r1, .L263+4
2577	bl	sprintf
2578	adds	r4, r5, r0
2579	mov	r0, r4
2580	bl	FtlPrintInfo2buf
2581	add	r0, r0, r4
2582	subs	r0, r0, r5
2583	pop	{r3, r4, r5, pc}
2584.L264:
2585	.align	2
2586.L263:
2587	.word	.LC70
2588	.word	.LC71
2589	.size	rknand_proc_ftlread, .-rknand_proc_ftlread
2590	.section	.text.GetSwlReplaceBlock,"ax",%progbits
2591	.align	1
2592	.global	GetSwlReplaceBlock
2593	.syntax unified
2594	.thumb
2595	.thumb_func
2596	.fpu softvfp
2597	.type	GetSwlReplaceBlock, %function
2598GetSwlReplaceBlock:
2599	@ args = 0, pretend = 0, frame = 8
2600	@ frame_needed = 0, uses_anonymous_args = 0
2601	push	{r4, r5, r6, r7, r8, r10, fp, lr}
2602	sub	sp, sp, #24
2603	ldr	r3, .L293
2604	ldr	r6, .L293+4
2605	ldr	r5, [r3]
2606	mov	r10, r3
2607	ldr	r1, [r6]
2608	cmp	r1, r5
2609	bcs	.L266
2610	ldr	r2, .L293+8
2611	movs	r3, #0
2612	ldr	r4, .L293+12
2613	mov	r0, r3
2614	ldrh	r1, [r2]
2615	ldr	r2, .L293+16
2616	str	r3, [r4]
2617	ldr	r7, [r2]
2618	mov	r2, r3
2619.L267:
2620	cmp	r2, r1
2621	bcc	.L268
2622	cbz	r3, .L269
2623	str	r0, [r4]
2624.L269:
2625	ldr	r7, [r4]
2626	mov	r0, r7
2627	bl	__aeabi_uidiv
2628	ldr	r3, .L293+20
2629	str	r0, [r6]
2630	ldr	r0, [r3]
2631	ldr	r3, .L293+24
2632	subs	r0, r7, r0
2633	ldrh	r1, [r3]
2634	bl	__aeabi_uidiv
2635	str	r0, [r4]
2636.L270:
2637	ldr	r6, [r6]
2638	add	r3, r5, #256
2639	cmp	r3, r6
2640	bls	.L275
2641	ldr	r2, .L293+28
2642	add	r3, r5, #768
2643	ldr	r2, [r2]
2644	cmp	r3, r2
2645	bls	.L275
2646.L277:
2647	movw	r4, #65535
2648.L276:
2649	mov	r0, r4
2650	add	sp, sp, #24
2651	@ sp needed
2652	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
2653.L268:
2654	ldrh	r3, [r7, r2, lsl #1]
2655	adds	r2, r2, #1
2656	add	r0, r0, r3
2657	movs	r3, #1
2658	b	.L267
2659.L266:
2660	ldr	r2, .L293+28
2661	ldr	r3, [r2]
2662	cmp	r1, r3
2663	bls	.L270
2664	adds	r3, r3, #1
2665	ldr	r0, .L293+8
2666	str	r3, [r2]
2667	movs	r2, #0
2668	ldr	r3, .L293+16
2669	ldr	r3, [r3]
2670	subs	r3, r3, #2
2671.L272:
2672	ldrh	r1, [r0]
2673	cmp	r2, r1
2674	bcs	.L270
2675	ldrh	r1, [r3, #2]
2676	adds	r2, r2, #1
2677	adds	r1, r1, #1
2678	strh	r1, [r3, #2]!	@ movhi
2679	b	.L272
2680.L275:
2681	ldr	r3, .L293+32
2682	ldrh	r0, [r3]
2683	add	r0, r0, r0, lsl #1
2684	ubfx	r0, r0, #2, #16
2685	bl	GetFreeBlockMaxEraseCount
2686	add	r3, r5, #64
2687	mov	r2, r0
2688	cmp	r0, r3
2689	bcc	.L277
2690	ldr	r3, .L293+36
2691	ldr	r3, [r3]
2692	cmp	r3, #0
2693	beq	.L277
2694	ldr	r1, .L293+8
2695	movs	r0, #0
2696	mov	fp, #6
2697	ldrh	r1, [r1]
2698	str	r1, [sp, #20]
2699	ldr	r1, .L293+40
2700	ldr	r8, [r1]
2701	ldr	r1, .L293+16
2702	ldr	r7, [r1]
2703	movw	r1, #65535
2704	mov	ip, r1
2705.L278:
2706	ldrh	lr, [r3]
2707	movw	r4, #65535
2708	cmp	lr, r4
2709	bne	.L281
2710	mov	r4, ip
2711.L280:
2712	movw	r3, #65535
2713	cmp	r4, r3
2714	beq	.L277
2715	ldrh	r7, [r7, r4, lsl #1]
2716	lsl	r8, r4, #1
2717	cmp	r5, r7
2718	bcs	.L282
2719	bl	GetFreeBlockMinEraseCount
2720	cmp	r5, r0
2721	it	cc
2722	strcc	r1, [r10]
2723.L282:
2724	cmp	r6, r7
2725	bls	.L277
2726	add	r3, r7, #128
2727	cmp	r2, r3
2728	ble	.L277
2729	add	r3, r7, #256
2730	ldr	r0, .L293+28
2731	cmp	r6, r3
2732	bhi	.L283
2733	ldr	r1, [r0]
2734	add	r3, r7, #768
2735	cmp	r3, r1
2736	bcs	.L277
2737.L283:
2738	ldr	r3, .L293+44
2739	mov	r1, r4
2740	str	r2, [sp, #8]
2741	mov	r2, r6
2742	str	r7, [sp, #4]
2743	ldr	r3, [r3]
2744	ldrh	r3, [r3, r8]
2745	str	r3, [sp]
2746	ldr	r3, [r0]
2747	ldr	r0, .L293+48
2748	bl	printf
2749	ldr	r3, .L293+52
2750	movs	r2, #1
2751	str	r2, [r3]
2752	b	.L276
2753.L281:
2754	adds	r0, r0, #1
2755	ldr	r4, [sp, #20]
2756	uxth	r0, r0
2757	cmp	r0, r4
2758	bhi	.L277
2759	ldrh	r4, [r3, #4]
2760	cbz	r4, .L279
2761	ldr	r4, .L293+56
2762	sub	r3, r3, r8
2763	asrs	r3, r3, #1
2764	muls	r3, r4, r3
2765	uxth	r4, r3
2766	ldrh	r3, [r7, r4, lsl #1]
2767	cmp	r5, r3
2768	bcs	.L280
2769	cmp	r1, r3
2770	itt	hi
2771	movhi	r1, r3
2772	movhi	ip, r4
2773.L279:
2774	mla	r3, fp, lr, r8
2775	b	.L278
2776.L294:
2777	.align	2
2778.L293:
2779	.word	.LANCHOR77
2780	.word	.LANCHOR74
2781	.word	.LANCHOR5
2782	.word	.LANCHOR72
2783	.word	.LANCHOR43
2784	.word	.LANCHOR73
2785	.word	.LANCHOR14
2786	.word	.LANCHOR76
2787	.word	.LANCHOR48
2788	.word	.LANCHOR41
2789	.word	.LANCHOR40
2790	.word	.LANCHOR42
2791	.word	.LC72
2792	.word	.LANCHOR87
2793	.word	-1431655765
2794	.size	GetSwlReplaceBlock, .-GetSwlReplaceBlock
2795	.section	.text.free_data_superblock,"ax",%progbits
2796	.align	1
2797	.global	free_data_superblock
2798	.syntax unified
2799	.thumb
2800	.thumb_func
2801	.fpu softvfp
2802	.type	free_data_superblock, %function
2803free_data_superblock:
2804	@ args = 0, pretend = 0, frame = 0
2805	@ frame_needed = 0, uses_anonymous_args = 0
2806	movw	r2, #65535
2807	push	{r3, lr}
2808	cmp	r0, r2
2809	beq	.L296
2810	ldr	r2, .L297
2811	movs	r1, #0
2812	ldr	r2, [r2]
2813	strh	r1, [r2, r0, lsl #1]	@ movhi
2814	bl	INSERT_FREE_LIST
2815.L296:
2816	movs	r0, #0
2817	pop	{r3, pc}
2818.L298:
2819	.align	2
2820.L297:
2821	.word	.LANCHOR42
2822	.size	free_data_superblock, .-free_data_superblock
2823	.section	.text.get_new_active_ppa,"ax",%progbits
2824	.align	1
2825	.global	get_new_active_ppa
2826	.syntax unified
2827	.thumb
2828	.thumb_func
2829	.fpu softvfp
2830	.type	get_new_active_ppa, %function
2831get_new_active_ppa:
2832	@ args = 0, pretend = 0, frame = 0
2833	@ frame_needed = 0, uses_anonymous_args = 0
2834	ldrh	r2, [r0]
2835	push	{r3, r4, r5, r6, r7, lr}
2836	movw	r3, #65535
2837	mov	r4, r0
2838	cmp	r2, r3
2839	bne	.L300
2840	movw	r2, #2710
2841	ldr	r1, .L313
2842	ldr	r0, .L313+4
2843	bl	printf
2844.L300:
2845	ldr	r5, .L313+8
2846	ldrh	r2, [r4, #2]
2847	ldrh	r3, [r5]
2848	cmp	r2, r3
2849	bne	.L301
2850	movw	r2, #2711
2851	ldr	r1, .L313
2852	ldr	r0, .L313+4
2853	bl	printf
2854.L301:
2855	ldrh	r3, [r4, #4]
2856	cbnz	r3, .L302
2857	movw	r2, #2712
2858	ldr	r1, .L313
2859	ldr	r0, .L313+4
2860	bl	printf
2861.L302:
2862	ldrb	r2, [r4, #6]	@ zero_extendqisi2
2863	movs	r3, #0
2864	strb	r3, [r4, #10]
2865	movw	r6, #65535
2866	adds	r2, r2, #8
2867	ldrh	r0, [r4, r2, lsl #1]
2868	ldr	r2, .L313+12
2869	ldrh	r1, [r2]
2870	mov	r2, r3
2871.L303:
2872	cmp	r0, r6
2873	ldrb	r3, [r4, #6]	@ zero_extendqisi2
2874	beq	.L305
2875	ldrh	r2, [r4, #4]
2876	ldrh	r6, [r4, #2]
2877	subs	r2, r2, #1
2878	uxth	r2, r2
2879	orr	r6, r6, r0, lsl #10
2880	movw	r0, #65535
2881	strh	r2, [r4, #4]	@ movhi
2882.L307:
2883	adds	r3, r3, #1
2884	uxtb	r3, r3
2885	cmp	r1, r3
2886	itttt	eq
2887	ldrheq	r3, [r4, #2]
2888	addeq	r3, r3, #1
2889	strheq	r3, [r4, #2]	@ movhi
2890	moveq	r3, #0
2891	add	r7, r3, #8
2892	ldrh	r7, [r4, r7, lsl #1]
2893	cmp	r7, r0
2894	beq	.L307
2895	strb	r3, [r4, #6]
2896	ldrh	r1, [r4, #2]
2897	ldrh	r3, [r5]
2898	cmp	r1, r3
2899	bne	.L299
2900	cbz	r2, .L299
2901	movw	r2, #2733
2902	ldr	r1, .L313
2903	ldr	r0, .L313+4
2904	bl	printf
2905.L299:
2906	mov	r0, r6
2907	pop	{r3, r4, r5, r6, r7, pc}
2908.L305:
2909	adds	r3, r3, #1
2910	uxtb	r3, r3
2911	cmp	r3, r1
2912	strb	r3, [r4, #6]
2913	itttt	eq
2914	ldrheq	r3, [r4, #2]
2915	strbeq	r2, [r4, #6]
2916	addeq	r3, r3, #1
2917	strheq	r3, [r4, #2]	@ movhi
2918	ldrb	r3, [r4, #6]	@ zero_extendqisi2
2919	adds	r3, r3, #8
2920	ldrh	r0, [r4, r3, lsl #1]
2921	b	.L303
2922.L314:
2923	.align	2
2924.L313:
2925	.word	.LANCHOR88
2926	.word	.LC1
2927	.word	.LANCHOR19
2928	.word	.LANCHOR3
2929	.size	get_new_active_ppa, .-get_new_active_ppa
2930	.section	.text.FtlGcBufInit,"ax",%progbits
2931	.align	1
2932	.global	FtlGcBufInit
2933	.syntax unified
2934	.thumb
2935	.thumb_func
2936	.fpu softvfp
2937	.type	FtlGcBufInit, %function
2938FtlGcBufInit:
2939	@ args = 0, pretend = 0, frame = 8
2940	@ frame_needed = 0, uses_anonymous_args = 0
2941	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
2942	movs	r3, #0
2943	ldr	r1, .L320
2944	mov	fp, #1
2945	ldr	r2, .L320+4
2946	ldr	r5, [r1]
2947	ldr	r1, .L320+8
2948	str	r3, [r2]
2949	ldr	r2, .L320+12
2950	mov	r0, r5
2951	ldr	r1, [r1]
2952	ldrh	r2, [r2]
2953	str	r1, [sp, #4]
2954	ldr	r1, .L320+16
2955	ldrh	r1, [r1]
2956	str	r1, [sp]
2957	ldr	r1, .L320+20
2958	ldr	r10, [r1]
2959	ldr	r1, .L320+24
2960	ldrh	r7, [r1]
2961	ldr	r1, .L320+28
2962	ldr	r4, [r1]
2963	movs	r1, #12
2964	mla	r1, r2, r1, r1
2965	adds	r4, r4, #8
2966	add	r8, r5, r1
2967	mov	r1, r3
2968.L316:
2969	adds	r0, r0, #12
2970	ldr	r6, [sp]
2971	cmp	r0, r8
2972	add	ip, r3, r7
2973	add	r4, r4, #20
2974	add	lr, r1, r6
2975	bne	.L317
2976	ldr	r3, .L320+32
2977	mov	lr, #12
2978	mov	r8, #0
2979	ldr	r0, [r3]
2980	ldr	r3, .L320+8
2981	ldr	r4, [r3]
2982	ldr	r3, .L320+20
2983	ldr	ip, [r3]
2984.L318:
2985	cmp	r2, r0
2986	bcc	.L319
2987	add	sp, sp, #8
2988	@ sp needed
2989	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
2990.L317:
2991	bic	r1, r1, #3
2992	bic	r3, r3, #3
2993	mov	r6, r1
2994	ldr	r1, [sp, #4]
2995	add	r3, r3, r10
2996	str	fp, [r0, #-4]
2997	str	r3, [r0, #-8]
2998	add	r6, r6, r1
2999	mov	r1, lr
3000	str	r6, [r0, #-12]
3001	str	r3, [r4, #-16]
3002	mov	r3, ip
3003	str	r6, [r4, #-20]
3004	b	.L316
3005.L319:
3006	ldr	r3, [sp]
3007	mul	r10, lr, r2
3008	muls	r3, r2, r3
3009	add	r1, r5, r10
3010	str	r8, [r1, #8]
3011	bic	r3, r3, #3
3012	add	r3, r3, r4
3013	str	r3, [r5, r10]
3014	mul	r3, r2, r7
3015	adds	r2, r2, #1
3016	uxth	r2, r2
3017	bic	r3, r3, #3
3018	add	r3, r3, ip
3019	str	r3, [r1, #4]
3020	b	.L318
3021.L321:
3022	.align	2
3023.L320:
3024	.word	.LANCHOR90
3025	.word	.LANCHOR89
3026	.word	.LANCHOR91
3027	.word	.LANCHOR3
3028	.word	.LANCHOR23
3029	.word	.LANCHOR92
3030	.word	.LANCHOR24
3031	.word	.LANCHOR93
3032	.word	.LANCHOR94
3033	.size	FtlGcBufInit, .-FtlGcBufInit
3034	.section	.text.FtlGcBufFree,"ax",%progbits
3035	.align	1
3036	.global	FtlGcBufFree
3037	.syntax unified
3038	.thumb
3039	.thumb_func
3040	.fpu softvfp
3041	.type	FtlGcBufFree, %function
3042FtlGcBufFree:
3043	@ args = 0, pretend = 0, frame = 0
3044	@ frame_needed = 0, uses_anonymous_args = 0
3045	ldr	r3, .L329
3046	mov	ip, #12
3047	push	{r4, r5, r6, r7, r8, r10, fp, lr}
3048	movs	r4, #0
3049	mov	fp, #20
3050	mov	lr, r4
3051	ldr	r7, [r3]
3052	ldr	r3, .L329+4
3053	ldr	r5, [r3]
3054.L323:
3055	uxth	r3, r4
3056	cmp	r1, r3
3057	bls	.L322
3058	mla	r8, fp, r3, r0
3059	movs	r2, #0
3060.L324:
3061	uxth	r3, r2
3062	cmp	r7, r3
3063	bls	.L325
3064	mul	r3, ip, r3
3065	ldr	r6, [r8, #8]
3066	adds	r2, r2, #1
3067	add	r10, r5, r3
3068	ldr	r3, [r5, r3]
3069	cmp	r3, r6
3070	bne	.L324
3071	str	lr, [r10, #8]
3072.L325:
3073	adds	r4, r4, #1
3074	b	.L323
3075.L322:
3076	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
3077.L330:
3078	.align	2
3079.L329:
3080	.word	.LANCHOR94
3081	.word	.LANCHOR90
3082	.size	FtlGcBufFree, .-FtlGcBufFree
3083	.section	.text.FtlGcBufAlloc,"ax",%progbits
3084	.align	1
3085	.global	FtlGcBufAlloc
3086	.syntax unified
3087	.thumb
3088	.thumb_func
3089	.fpu softvfp
3090	.type	FtlGcBufAlloc, %function
3091FtlGcBufAlloc:
3092	@ args = 0, pretend = 0, frame = 0
3093	@ frame_needed = 0, uses_anonymous_args = 0
3094	ldr	r3, .L338
3095	movs	r2, #0
3096	push	{r4, r5, r6, r7, r8, r10, lr}
3097	mov	ip, #12
3098	movs	r7, #1
3099	mov	lr, #20
3100	ldr	r4, [r3]
3101	ldr	r3, .L338+4
3102	ldr	r5, [r3]
3103.L332:
3104	uxth	r8, r2
3105	cmp	r1, r8
3106	bhi	.L336
3107	pop	{r4, r5, r6, r7, r8, r10, pc}
3108.L336:
3109	mov	r10, #0
3110.L333:
3111	uxth	r3, r10
3112	cmp	r4, r3
3113	bls	.L334
3114	mla	r3, ip, r3, r5
3115	add	r10, r10, #1
3116	ldr	r6, [r3, #8]
3117	cmp	r6, #0
3118	bne	.L333
3119	mla	r8, lr, r8, r0
3120	str	r7, [r3, #8]
3121	ldr	r6, [r3]
3122	ldr	r3, [r3, #4]
3123	str	r6, [r8, #8]
3124	str	r3, [r8, #12]
3125.L334:
3126	adds	r2, r2, #1
3127	b	.L332
3128.L339:
3129	.align	2
3130.L338:
3131	.word	.LANCHOR94
3132	.word	.LANCHOR90
3133	.size	FtlGcBufAlloc, .-FtlGcBufAlloc
3134	.section	.text.IsBlkInGcList,"ax",%progbits
3135	.align	1
3136	.global	IsBlkInGcList
3137	.syntax unified
3138	.thumb
3139	.thumb_func
3140	.fpu softvfp
3141	.type	IsBlkInGcList, %function
3142IsBlkInGcList:
3143	@ args = 0, pretend = 0, frame = 0
3144	@ frame_needed = 0, uses_anonymous_args = 0
3145	@ link register save eliminated.
3146	ldr	r3, .L345
3147	ldr	r2, .L345+4
3148	ldr	r3, [r3]
3149	ldrh	r2, [r2]
3150	add	r2, r3, r2, lsl #1
3151.L341:
3152	cmp	r3, r2
3153	bne	.L343
3154	movs	r0, #0
3155	bx	lr
3156.L343:
3157	ldrh	r1, [r3], #2
3158	cmp	r1, r0
3159	bne	.L341
3160	movs	r0, #1
3161	bx	lr
3162.L346:
3163	.align	2
3164.L345:
3165	.word	.LANCHOR95
3166	.word	.LANCHOR96
3167	.size	IsBlkInGcList, .-IsBlkInGcList
3168	.section	.text.FtlGcUpdatePage,"ax",%progbits
3169	.align	1
3170	.global	FtlGcUpdatePage
3171	.syntax unified
3172	.thumb
3173	.thumb_func
3174	.fpu softvfp
3175	.type	FtlGcUpdatePage, %function
3176FtlGcUpdatePage:
3177	@ args = 0, pretend = 0, frame = 0
3178	@ frame_needed = 0, uses_anonymous_args = 0
3179	push	{r3, r4, r5, r6, r7, lr}
3180	mov	r5, r0
3181	ldr	r4, .L351
3182	ubfx	r0, r0, #10, #16
3183	mov	r6, r1
3184	mov	r7, r2
3185	bl	P2V_block_in_plane
3186	ldr	r3, .L351+4
3187	ldrh	r1, [r4]
3188	ldr	r2, [r3]
3189	movs	r3, #0
3190.L348:
3191	uxth	ip, r3
3192	cmp	ip, r1
3193	bcc	.L350
3194	bne	.L349
3195	strh	r0, [r2, ip, lsl #1]	@ movhi
3196	ldrh	r3, [r4]
3197	adds	r3, r3, #1
3198	strh	r3, [r4]	@ movhi
3199	b	.L349
3200.L350:
3201	adds	r3, r3, #1
3202	add	ip, r2, r3, lsl #1
3203	ldrh	ip, [ip, #-2]
3204	cmp	ip, r0
3205	bne	.L348
3206.L349:
3207	ldr	r2, .L351+8
3208	movs	r0, #12
3209	ldr	r1, .L351+12
3210	ldrh	r3, [r2]
3211	ldr	r1, [r1]
3212	muls	r0, r3, r0
3213	adds	r3, r3, #1
3214	adds	r4, r1, r0
3215	str	r6, [r4, #4]
3216	str	r7, [r4, #8]
3217	str	r5, [r1, r0]
3218	strh	r3, [r2]	@ movhi
3219	pop	{r3, r4, r5, r6, r7, pc}
3220.L352:
3221	.align	2
3222.L351:
3223	.word	.LANCHOR96
3224	.word	.LANCHOR95
3225	.word	.LANCHOR97
3226	.word	.LANCHOR98
3227	.size	FtlGcUpdatePage, .-FtlGcUpdatePage
3228	.section	.text.FtlGcRefreshBlock,"ax",%progbits
3229	.align	1
3230	.global	FtlGcRefreshBlock
3231	.syntax unified
3232	.thumb
3233	.thumb_func
3234	.fpu softvfp
3235	.type	FtlGcRefreshBlock, %function
3236FtlGcRefreshBlock:
3237	@ args = 0, pretend = 0, frame = 0
3238	@ frame_needed = 0, uses_anonymous_args = 0
3239	push	{r3, r4, r5, lr}
3240	mov	r1, r0
3241	mov	r4, r0
3242	ldr	r0, .L356
3243	bl	printf
3244	ldr	r0, .L356+4
3245	ldrh	r5, [r0]
3246	cmp	r4, r5
3247	beq	.L354
3248	ldr	r3, .L356+8
3249	ldrh	r1, [r3]
3250	cmp	r4, r1
3251	beq	.L354
3252	movw	r2, #65535
3253	cmp	r5, r2
3254	bne	.L355
3255	strh	r4, [r0]	@ movhi
3256.L354:
3257	movs	r0, #0
3258	pop	{r3, r4, r5, pc}
3259.L355:
3260	cmp	r1, r2
3261	it	eq
3262	strheq	r4, [r3]	@ movhi
3263	b	.L354
3264.L357:
3265	.align	2
3266.L356:
3267	.word	.LC73
3268	.word	.LANCHOR99
3269	.word	.LANCHOR100
3270	.size	FtlGcRefreshBlock, .-FtlGcRefreshBlock
3271	.section	.text.FtlGcMarkBadPhyBlk,"ax",%progbits
3272	.align	1
3273	.global	FtlGcMarkBadPhyBlk
3274	.syntax unified
3275	.thumb
3276	.thumb_func
3277	.fpu softvfp
3278	.type	FtlGcMarkBadPhyBlk, %function
3279FtlGcMarkBadPhyBlk:
3280	@ args = 0, pretend = 0, frame = 0
3281	@ frame_needed = 0, uses_anonymous_args = 0
3282	push	{r4, r5, r6, lr}
3283	mov	r5, r0
3284	ldr	r4, .L362
3285	bl	P2V_block_in_plane
3286	mov	r2, r5
3287	mov	r6, r0
3288	ldrh	r1, [r4]
3289	ldr	r0, .L362+4
3290	bl	printf
3291	mov	r0, r6
3292	bl	FtlGcRefreshBlock
3293	ldrh	r3, [r4]
3294	movs	r2, #0
3295	ldr	r0, .L362+8
3296.L359:
3297	uxth	r1, r2
3298	cmp	r3, r1
3299	bhi	.L361
3300	cmp	r3, #15
3301	itttt	ls
3302	addls	r2, r3, #1
3303	strhls	r2, [r4]	@ movhi
3304	ldrls	r2, .L362+8
3305	strhls	r5, [r2, r3, lsl #1]	@ movhi
3306	b	.L360
3307.L361:
3308	adds	r2, r2, #1
3309	add	r1, r0, r2, lsl #1
3310	ldrh	r1, [r1, #-2]
3311	cmp	r1, r5
3312	bne	.L359
3313.L360:
3314	movs	r0, #0
3315	pop	{r4, r5, r6, pc}
3316.L363:
3317	.align	2
3318.L362:
3319	.word	.LANCHOR101
3320	.word	.LC74
3321	.word	.LANCHOR102
3322	.size	FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
3323	.section	.text.FtlGcReFreshBadBlk,"ax",%progbits
3324	.align	1
3325	.global	FtlGcReFreshBadBlk
3326	.syntax unified
3327	.thumb
3328	.thumb_func
3329	.fpu softvfp
3330	.type	FtlGcReFreshBadBlk, %function
3331FtlGcReFreshBadBlk:
3332	@ args = 0, pretend = 0, frame = 0
3333	@ frame_needed = 0, uses_anonymous_args = 0
3334	ldr	r3, .L370
3335	push	{r4, lr}
3336	ldrh	r3, [r3]
3337	cbz	r3, .L365
3338	ldr	r2, .L370+4
3339	ldrh	r1, [r2]
3340	movw	r2, #65535
3341	cmp	r1, r2
3342	bne	.L365
3343	ldr	r4, .L370+8
3344	ldrh	r2, [r4]
3345	cmp	r2, r3
3346	itt	cs
3347	movcs	r3, #0
3348	strhcs	r3, [r4]	@ movhi
3349	ldr	r3, .L370+12
3350	ldrh	r2, [r4]
3351	ldrh	r0, [r3, r2, lsl #1]
3352	bl	P2V_block_in_plane
3353	bl	FtlGcRefreshBlock
3354	ldrh	r3, [r4]
3355	adds	r3, r3, #1
3356	strh	r3, [r4]	@ movhi
3357.L365:
3358	movs	r0, #0
3359	pop	{r4, pc}
3360.L371:
3361	.align	2
3362.L370:
3363	.word	.LANCHOR101
3364	.word	.LANCHOR99
3365	.word	.LANCHOR103
3366	.word	.LANCHOR102
3367	.size	FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
3368	.section	.text.ftl_malloc,"ax",%progbits
3369	.align	1
3370	.global	ftl_malloc
3371	.syntax unified
3372	.thumb
3373	.thumb_func
3374	.fpu softvfp
3375	.type	ftl_malloc, %function
3376ftl_malloc:
3377	@ args = 0, pretend = 0, frame = 0
3378	@ frame_needed = 0, uses_anonymous_args = 0
3379	@ link register save eliminated.
3380	movs	r1, #0
3381	b	kmalloc
3382	.size	ftl_malloc, .-ftl_malloc
3383	.section	.text.ftl_free,"ax",%progbits
3384	.align	1
3385	.global	ftl_free
3386	.syntax unified
3387	.thumb
3388	.thumb_func
3389	.fpu softvfp
3390	.type	ftl_free, %function
3391ftl_free:
3392	@ args = 0, pretend = 0, frame = 0
3393	@ frame_needed = 0, uses_anonymous_args = 0
3394	@ link register save eliminated.
3395	b	free
3396	.size	ftl_free, .-ftl_free
3397	.section	.text.rknand_print_hex,"ax",%progbits
3398	.align	1
3399	.global	rknand_print_hex
3400	.syntax unified
3401	.thumb
3402	.thumb_func
3403	.fpu softvfp
3404	.type	rknand_print_hex, %function
3405rknand_print_hex:
3406	@ args = 0, pretend = 0, frame = 0
3407	@ frame_needed = 0, uses_anonymous_args = 0
3408	push	{r4, r5, r6, r7, r8, r10, fp, lr}
3409	movs	r6, #0
3410	mov	fp, r0
3411	mov	r7, r1
3412	mov	r8, r2
3413	mov	r10, r3
3414	mov	r5, r6
3415	mov	r4, r6
3416.L375:
3417	cmp	r4, r10
3418	bcc	.L381
3419	ldr	r0, .L384
3420	pop	{r4, r5, r6, r7, r8, r10, fp, lr}
3421	b	printf
3422.L381:
3423	cbnz	r5, .L376
3424	mov	r2, r6
3425	mov	r1, fp
3426	ldr	r0, .L384+4
3427	bl	printf
3428.L376:
3429	cmp	r8, #4
3430	bne	.L377
3431	ldr	r1, [r7, r4, lsl #2]
3432.L383:
3433	ldr	r0, .L384+8
3434.L382:
3435	adds	r5, r5, #1
3436	bl	printf
3437	cmp	r5, #15
3438	bls	.L380
3439	movs	r5, #0
3440	ldr	r0, .L384
3441	bl	printf
3442.L380:
3443	adds	r4, r4, #1
3444	add	r6, r6, r8
3445	b	.L375
3446.L377:
3447	cmp	r8, #2
3448	bne	.L379
3449	ldrsh	r1, [r7, r4, lsl #1]
3450	b	.L383
3451.L379:
3452	ldrb	r1, [r7, r4]	@ zero_extendqisi2
3453	ldr	r0, .L384+12
3454	b	.L382
3455.L385:
3456	.align	2
3457.L384:
3458	.word	.LC78
3459	.word	.LC75
3460	.word	.LC76
3461	.word	.LC77
3462	.size	rknand_print_hex, .-rknand_print_hex
3463	.section	.text.FlashReadPages,"ax",%progbits
3464	.align	1
3465	.global	FlashReadPages
3466	.syntax unified
3467	.thumb
3468	.thumb_func
3469	.fpu softvfp
3470	.type	FlashReadPages, %function
3471FlashReadPages:
3472	@ args = 0, pretend = 0, frame = 16
3473	@ frame_needed = 0, uses_anonymous_args = 0
3474	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
3475	mov	r8, r1
3476	ldr	r3, .L404
3477	mov	r4, r0
3478	movs	r5, #0
3479	ldr	fp, .L404+12
3480	ldrh	r2, [r3, #12]
3481	mov	r10, r3
3482	str	r2, [sp, #4]
3483.L387:
3484	cmp	r5, r8
3485	bne	.L394
3486	movs	r0, #0
3487	add	sp, sp, #16
3488	@ sp needed
3489	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
3490.L394:
3491	ldr	r3, [r4, #8]
3492	cbz	r3, .L388
3493	ldr	r3, [r4, #12]
3494	cbnz	r3, .L389
3495.L388:
3496	movs	r2, #96
3497	ldr	r1, .L404+4
3498	mov	r0, fp
3499	bl	printf
3500.L389:
3501	ldr	r6, .L404+8
3502	add	r2, sp, #8
3503	add	r1, sp, #12
3504	ldr	r0, [r4, #4]
3505	bl	l2p_addr_tran.isra.0
3506	ldr	r3, [r4, #12]
3507	ldr	r2, [r4, #8]
3508	ldr	r1, [sp, #12]
3509	ldrb	r0, [sp, #8]	@ zero_extendqisi2
3510	ldr	r7, [r6, #12]
3511	blx	r7
3512	ldrh	r3, [r10, #14]
3513	str	r0, [r4]
3514	cmp	r3, #4
3515	bne	.L391
3516	ldr	r0, [sp, #4]
3517	ldr	r3, [r4, #12]
3518	ldr	r2, [r4, #8]
3519	ldr	r1, [sp, #12]
3520	ldr	r6, [r6, #12]
3521	adds	r3, r3, #8
3522	add	r2, r2, #2048
3523	add	r1, r1, r0
3524	ldrb	r0, [sp, #8]	@ zero_extendqisi2
3525	blx	r6
3526	adds	r0, r0, #1
3527	beq	.L392
3528	ldr	r3, [r4, #12]
3529	ldr	r2, [r3, #12]
3530	adds	r2, r2, #1
3531	bne	.L391
3532	ldr	r2, [r3, #8]
3533	adds	r2, r2, #1
3534	bne	.L391
3535	ldr	r3, [r3]
3536	adds	r3, r3, #1
3537	beq	.L391
3538.L392:
3539	mov	r3, #-1
3540	str	r3, [r4]
3541.L391:
3542	adds	r5, r5, #1
3543	adds	r4, r4, #20
3544	b	.L387
3545.L405:
3546	.align	2
3547.L404:
3548	.word	.LANCHOR0
3549	.word	.LANCHOR104
3550	.word	.LANCHOR105
3551	.word	.LC1
3552	.size	FlashReadPages, .-FlashReadPages
3553	.section	.text.FtlLoadFactoryBbt,"ax",%progbits
3554	.align	1
3555	.global	FtlLoadFactoryBbt
3556	.syntax unified
3557	.thumb
3558	.thumb_func
3559	.fpu softvfp
3560	.type	FtlLoadFactoryBbt, %function
3561FtlLoadFactoryBbt:
3562	@ args = 0, pretend = 0, frame = 0
3563	@ frame_needed = 0, uses_anonymous_args = 0
3564	ldr	r3, .L416
3565	push	{r4, r5, r6, r7, r8, r10, fp, lr}
3566	movs	r6, #0
3567	ldr	r5, .L416+4
3568	ldr	r3, [r3]
3569	ldr	r7, .L416+8
3570	ldr	r10, .L416+20
3571	str	r3, [r5, #8]
3572	ldr	r3, .L416+12
3573	ldr	r8, [r3]
3574	str	r8, [r5, #12]
3575.L407:
3576	ldr	r3, .L416+16
3577	ldrh	r3, [r3]
3578	cmp	r6, r3
3579	bcc	.L412
3580	movs	r0, #0
3581	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
3582.L412:
3583	ldrh	r4, [r10]
3584	movw	r3, #65535
3585	ldr	fp, .L416+4
3586	strh	r3, [r7, #2]!	@ movhi
3587	subs	r4, r4, #1
3588	uxth	r4, r4
3589.L408:
3590	ldrh	r3, [r10]
3591	sub	r2, r3, #15
3592	cmp	r2, r4
3593	bgt	.L410
3594	mla	r3, r6, r3, r4
3595	movs	r2, #1
3596	mov	r1, r2
3597	mov	r0, fp
3598	lsls	r3, r3, #10
3599	str	r3, [r5, #4]
3600	bl	FlashReadPages
3601	ldr	r3, [r5]
3602	adds	r3, r3, #1
3603	beq	.L409
3604	ldrh	r2, [r8]
3605	movw	r3, #61664
3606	cmp	r2, r3
3607	bne	.L409
3608	strh	r4, [r7]	@ movhi
3609.L410:
3610	adds	r6, r6, #1
3611	b	.L407
3612.L409:
3613	subs	r4, r4, #1
3614	uxth	r4, r4
3615	b	.L408
3616.L417:
3617	.align	2
3618.L416:
3619	.word	.LANCHOR107
3620	.word	.LANCHOR106
3621	.word	.LANCHOR37+10
3622	.word	.LANCHOR108
3623	.word	.LANCHOR10
3624	.word	.LANCHOR17
3625	.size	FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
3626	.section	.text.FtlGetLastWrittenPage,"ax",%progbits
3627	.align	1
3628	.global	FtlGetLastWrittenPage
3629	.syntax unified
3630	.thumb
3631	.thumb_func
3632	.fpu softvfp
3633	.type	FtlGetLastWrittenPage, %function
3634FtlGetLastWrittenPage:
3635	@ args = 0, pretend = 0, frame = 88
3636	@ frame_needed = 0, uses_anonymous_args = 0
3637	cmp	r1, #1
3638	push	{r4, r5, r6, r7, r8, lr}
3639	it	eq
3640	ldreq	r3, .L427
3641	sub	sp, sp, #88
3642	lsl	r7, r0, #10
3643	mov	r2, r1
3644	it	ne
3645	ldrne	r3, .L427+4
3646	mov	r6, r1
3647	add	r0, sp, #4
3648	movs	r1, #1
3649	ldrh	r5, [r3]
3650	ldr	r3, .L427+8
3651	subs	r5, r5, #1
3652	sxth	r5, r5
3653	str	r3, [sp, #12]
3654	add	r3, sp, #24
3655	str	r3, [sp, #16]
3656	orr	r3, r5, r7
3657	str	r3, [sp, #8]
3658	bl	FlashReadPages
3659	ldr	r3, [sp, #24]
3660	adds	r3, r3, #1
3661	bne	.L421
3662	mov	r8, #0
3663.L422:
3664	cmp	r8, r5
3665	ble	.L425
3666.L421:
3667	mov	r0, r5
3668	add	sp, sp, #88
3669	@ sp needed
3670	pop	{r4, r5, r6, r7, r8, pc}
3671.L425:
3672	add	r3, r8, r5
3673	mov	r2, r6
3674	add	r3, r3, r3, lsr #31
3675	movs	r1, #1
3676	add	r0, sp, #4
3677	asrs	r4, r3, #1
3678	sxth	r3, r4
3679	orrs	r3, r3, r7
3680	str	r3, [sp, #8]
3681	bl	FlashReadPages
3682	ldr	r3, [sp, #24]
3683	adds	r3, r3, #1
3684	bne	.L423
3685	ldr	r3, [sp, #28]
3686	adds	r3, r3, #1
3687	bne	.L423
3688	subs	r4, r4, #1
3689	sxth	r5, r4
3690	b	.L422
3691.L423:
3692	adds	r4, r4, #1
3693	sxth	r8, r4
3694	b	.L422
3695.L428:
3696	.align	2
3697.L427:
3698	.word	.LANCHOR20
3699	.word	.LANCHOR19
3700	.word	ftl_temp_buf
3701	.size	FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
3702	.section	.text.FlashProgPages,"ax",%progbits
3703	.align	1
3704	.global	FlashProgPages
3705	.syntax unified
3706	.thumb
3707	.thumb_func
3708	.fpu softvfp
3709	.type	FlashProgPages, %function
3710FlashProgPages:
3711	@ args = 0, pretend = 0, frame = 40
3712	@ frame_needed = 0, uses_anonymous_args = 0
3713	push	{r4, r5, r6, r7, r8, r10, fp, lr}
3714	sub	sp, sp, #40
3715	str	r3, [sp]
3716	mov	r10, r1
3717	mov	r7, r2
3718	mov	r4, r0
3719	ldr	r3, .L459
3720	mov	r5, r0
3721	movs	r6, #0
3722	ldrh	r8, [r3, #12]
3723	str	r3, [sp, #4]
3724.L430:
3725	cmp	r6, r10
3726	bne	.L438
3727	ldr	r3, [sp]
3728	cmp	r3, #0
3729	bne	.L445
3730.L458:
3731	movs	r0, #0
3732	add	sp, sp, #40
3733	@ sp needed
3734	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
3735.L438:
3736	ldr	r3, [r5, #8]
3737	cbz	r3, .L431
3738	ldr	r3, [r5, #12]
3739	cbnz	r3, .L432
3740.L431:
3741	movs	r2, #126
3742	ldr	r1, .L459+4
3743	ldr	r0, .L459+8
3744	bl	printf
3745.L432:
3746	add	r2, sp, #12
3747	add	r1, sp, #16
3748	ldr	r0, [r5, #4]
3749	bl	l2p_addr_tran.isra.0
3750	ldr	r3, .L459+12
3751	ldr	r2, [r5, #8]
3752	ldr	r1, [sp, #16]
3753	ldr	fp, [r3, #8]
3754	ldrb	r0, [sp, #12]	@ zero_extendqisi2
3755	ldr	r3, [r5, #12]
3756	blx	fp
3757	cbnz	r0, .L433
3758	str	r0, [r5]
3759.L434:
3760	ldr	r3, [sp, #4]
3761	ldrh	r3, [r3, #14]
3762	cmp	r3, #4
3763	bne	.L436
3764	ldr	r1, .L459+12
3765	ldr	r3, [r5, #12]
3766	ldr	r2, [r5, #8]
3767	ldr	fp, [r1, #8]
3768	ldr	r1, [sp, #16]
3769	adds	r3, r3, #8
3770	add	r2, r2, #2048
3771	ldrb	r0, [sp, #12]	@ zero_extendqisi2
3772	add	r1, r1, r8
3773	blx	fp
3774	cbz	r0, .L436
3775	mov	r3, #-1
3776	str	r3, [r5]
3777.L436:
3778	adds	r6, r6, #1
3779	adds	r5, r5, #20
3780	b	.L430
3781.L433:
3782	mov	r3, #-1
3783	str	r3, [r5]
3784	b	.L434
3785.L443:
3786	movs	r3, #0
3787	mov	r2, r7
3788	str	r3, [r8]
3789	movs	r1, #1
3790	str	r3, [r10]
3791	add	r0, sp, #20
3792	ldr	r3, [r4, #4]
3793	str	r8, [sp, #28]
3794	str	r10, [sp, #32]
3795	str	r3, [sp, #24]
3796	bl	FlashReadPages
3797	ldr	fp, [sp, #20]
3798	cmp	fp, #-1
3799	bne	.L440
3800	ldr	r1, [r4, #4]
3801	ldr	r0, .L459+16
3802	bl	printf
3803	str	fp, [r4]
3804.L440:
3805	ldr	r3, [r4, #12]
3806	cbz	r3, .L441
3807	ldr	r2, [r3]
3808	ldr	r3, [r10]
3809	cmp	r2, r3
3810	beq	.L441
3811	ldr	r1, [r4, #4]
3812	ldr	r0, .L459+20
3813	bl	printf
3814	mov	r3, #-1
3815	str	r3, [r4]
3816.L441:
3817	ldr	r3, [r4, #8]
3818	cbz	r3, .L442
3819	ldr	r2, [r3]
3820	ldr	r3, [r8]
3821	cmp	r2, r3
3822	beq	.L442
3823	ldr	r1, [r4, #4]
3824	ldr	r0, .L459+24
3825	bl	printf
3826	mov	r3, #-1
3827	str	r3, [r4]
3828.L442:
3829	adds	r5, r5, #1
3830	adds	r4, r4, #20
3831.L439:
3832	cmp	r6, r5
3833	bne	.L443
3834	b	.L458
3835.L445:
3836	movs	r5, #0
3837	ldr	r8, .L459+28
3838	ldr	r10, .L459+32
3839	b	.L439
3840.L460:
3841	.align	2
3842.L459:
3843	.word	.LANCHOR0
3844	.word	.LANCHOR109
3845	.word	.LC1
3846	.word	.LANCHOR105
3847	.word	.LC79
3848	.word	.LC80
3849	.word	.LC81
3850	.word	check_buf
3851	.word	.LANCHOR110
3852	.size	FlashProgPages, .-FlashProgPages
3853	.section	.text.FlashEraseBlocks,"ax",%progbits
3854	.align	1
3855	.global	FlashEraseBlocks
3856	.syntax unified
3857	.thumb
3858	.thumb_func
3859	.fpu softvfp
3860	.type	FlashEraseBlocks, %function
3861FlashEraseBlocks:
3862	@ args = 0, pretend = 0, frame = 8
3863	@ frame_needed = 0, uses_anonymous_args = 0
3864	push	{r0, r1, r2, r4, r5, r6, r7, r8, r10, lr}
3865	mov	r7, r2
3866	ldr	r5, .L472
3867	adds	r4, r0, #4
3868	movs	r6, #0
3869	ldr	r10, .L472+4
3870	ldrh	r8, [r5, #12]
3871.L462:
3872	cmp	r6, r7
3873	bne	.L468
3874	movs	r0, #0
3875	add	sp, sp, #12
3876	@ sp needed
3877	pop	{r4, r5, r6, r7, r8, r10, pc}
3878.L468:
3879	add	r1, sp, #4
3880	mov	r2, sp
3881	ldr	r0, [r4]
3882	bl	l2p_addr_tran.isra.0
3883	ldr	r3, [r10, #4]
3884	ldr	r1, [sp, #4]
3885	ldrb	r0, [sp]	@ zero_extendqisi2
3886	blx	r3
3887	cbnz	r0, .L463
3888	str	r0, [r4, #-4]
3889.L464:
3890	ldrh	r3, [r5, #14]
3891	cmp	r3, #4
3892	bne	.L466
3893	ldr	r1, [sp, #4]
3894	ldr	r3, [r10, #4]
3895	ldrb	r0, [sp]	@ zero_extendqisi2
3896	add	r1, r1, r8
3897	blx	r3
3898	cbz	r0, .L466
3899	mov	r3, #-1
3900	str	r3, [r4, #-4]
3901.L466:
3902	adds	r6, r6, #1
3903	adds	r4, r4, #20
3904	b	.L462
3905.L463:
3906	mov	r3, #-1
3907	str	r3, [r4, #-4]
3908	b	.L464
3909.L473:
3910	.align	2
3911.L472:
3912	.word	.LANCHOR0
3913	.word	.LANCHOR105
3914	.size	FlashEraseBlocks, .-FlashEraseBlocks
3915	.section	.text.FtlFreeSysBlkQueueIn,"ax",%progbits
3916	.align	1
3917	.global	FtlFreeSysBlkQueueIn
3918	.syntax unified
3919	.thumb
3920	.thumb_func
3921	.fpu softvfp
3922	.type	FtlFreeSysBlkQueueIn, %function
3923FtlFreeSysBlkQueueIn:
3924	@ args = 0, pretend = 0, frame = 0
3925	@ frame_needed = 0, uses_anonymous_args = 0
3926	subs	r3, r0, #1
3927	movw	r2, #65533
3928	uxth	r3, r3
3929	push	{r4, r5, r6, lr}
3930	mov	r5, r0
3931	cmp	r3, r2
3932	bhi	.L474
3933	ldr	r4, .L483
3934	ldrh	r3, [r4, #6]
3935	cmp	r3, #1024
3936	beq	.L474
3937	cbz	r1, .L476
3938	bl	P2V_block_in_plane
3939	ldr	r3, .L483+4
3940	mov	r6, r0
3941	movs	r2, #1
3942	mov	r1, r2
3943	ldr	r0, [r3]
3944	lsls	r3, r5, #10
3945	str	r3, [r0, #4]
3946	bl	FlashEraseBlocks
3947	ldr	r3, .L483+8
3948	ldr	r2, [r3]
3949	ldrh	r3, [r2, r6, lsl #1]
3950	adds	r3, r3, #1
3951	strh	r3, [r2, r6, lsl #1]	@ movhi
3952	ldr	r2, .L483+12
3953	ldr	r3, [r2]
3954	adds	r3, r3, #1
3955	str	r3, [r2]
3956.L476:
3957	ldrh	r3, [r4, #6]
3958	adds	r3, r3, #1
3959	strh	r3, [r4, #6]	@ movhi
3960	ldrh	r3, [r4, #4]
3961	adds	r2, r3, #4
3962	adds	r3, r3, #1
3963	ubfx	r3, r3, #0, #10
3964	strh	r5, [r4, r2, lsl #1]	@ movhi
3965	strh	r3, [r4, #4]	@ movhi
3966.L474:
3967	pop	{r4, r5, r6, pc}
3968.L484:
3969	.align	2
3970.L483:
3971	.word	.LANCHOR38
3972	.word	.LANCHOR111
3973	.word	.LANCHOR43
3974	.word	.LANCHOR75
3975	.size	FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
3976	.section	.text.FtlLowFormatEraseBlock,"ax",%progbits
3977	.align	1
3978	.global	FtlLowFormatEraseBlock
3979	.syntax unified
3980	.thumb
3981	.thumb_func
3982	.fpu softvfp
3983	.type	FtlLowFormatEraseBlock, %function
3984FtlLowFormatEraseBlock:
3985	@ args = 0, pretend = 0, frame = 32
3986	@ frame_needed = 0, uses_anonymous_args = 0
3987	ldr	r3, .L528
3988	push	{r4, r5, r6, r7, r8, r10, fp, lr}
3989	sub	sp, sp, #32
3990	ldr	r6, .L528+4
3991	mov	fp, #0
3992	mov	r5, fp
3993	mov	r4, fp
3994	str	r0, [r3]
3995	mov	r10, #20
3996	ldr	r3, .L528+8
3997	ldr	r8, [r6]
3998	str	r0, [sp, #4]
3999	ldrh	r3, [r3]
4000	str	r1, [sp]
4001	str	r3, [sp, #8]
4002	ldr	r3, .L528+12
4003	ldr	r3, [r3]
4004	str	r3, [sp, #12]
4005	ldr	r3, .L528+16
4006	ldr	r3, [r3]
4007	str	r3, [sp, #16]
4008	ldr	r3, .L528+20
4009	ldrh	r3, [r3]
4010	str	r3, [sp, #20]
4011.L486:
4012	ldr	r3, [sp, #8]
4013	uxth	r2, fp
4014	cmp	r3, r2
4015	bhi	.L490
4016	cmp	r5, #0
4017	beq	.L485
4018	mov	r0, r8
4019	movs	r7, #0
4020	mov	r8, #20
4021	mov	r2, r5
4022	movs	r1, #0
4023	bl	FlashEraseBlocks
4024.L493:
4025	uxth	r3, r7
4026	cmp	r5, r3
4027	bhi	.L495
4028	ldr	r3, [sp]
4029	cmp	r3, #0
4030	beq	.L511
4031	ldr	r3, .L528+24
4032	mov	r8, #1
4033	ldrh	r10, [r3]
4034	lsr	r3, r10, #2
4035	str	r3, [sp, #12]
4036.L496:
4037	movs	r6, #0
4038.L505:
4039	ldr	r3, .L528+8
4040	mov	fp, #0
4041	mov	r5, fp
4042	ldrh	r3, [r3]
4043	str	r3, [sp, #16]
4044	ldr	r3, .L528+4
4045	ldr	r3, [r3]
4046	str	r3, [sp, #8]
4047	ldr	r3, .L528+28
4048	ldr	r3, [r3]
4049	str	r3, [sp, #20]
4050	ldr	r3, .L528+12
4051	ldr	r3, [r3]
4052	str	r3, [sp, #24]
4053	ldr	r3, .L528+20
4054	ldrh	r3, [r3]
4055	str	r3, [sp, #28]
4056.L497:
4057	ldr	r3, [sp, #16]
4058	uxth	r2, fp
4059	cmp	r3, r2
4060	bhi	.L500
4061	cbz	r5, .L485
4062	ldr	fp, .L528+4
4063	movs	r3, #1
4064	mov	r2, r8
4065	mov	r1, r5
4066	ldr	r0, [sp, #8]
4067	movs	r7, #0
4068	bl	FlashProgPages
4069	movs	r3, #20
4070.L502:
4071	uxth	r2, r7
4072	cmp	r5, r2
4073	bhi	.L504
4074	ldr	r3, [sp, #12]
4075	add	r6, r6, r3
4076	uxth	r6, r6
4077	cmp	r10, r6
4078	bhi	.L505
4079	ldr	r7, .L528+4
4080	movs	r6, #0
4081	mov	r10, #20
4082.L506:
4083	uxth	r3, r6
4084	cmp	r5, r3
4085	bhi	.L508
4086	ldr	r3, [sp, #4]
4087	cmp	r3, #63
4088	bls	.L509
4089	ldr	r3, [sp]
4090	cbz	r3, .L485
4091.L509:
4092	ldr	r3, .L528+4
4093	mov	r2, r5
4094	mov	r1, r8
4095	ldr	r0, [r3]
4096	bl	FlashEraseBlocks
4097.L485:
4098	mov	r0, r4
4099	add	sp, sp, #32
4100	@ sp needed
4101	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
4102.L490:
4103	mul	r2, r10, fp
4104	movs	r3, #0
4105	ldr	r1, [sp, #4]
4106	str	r3, [r8, r2]
4107	ldr	r3, .L528+32
4108	ldrb	r0, [r3, fp]	@ zero_extendqisi2
4109	bl	V2P_block
4110	ldr	r3, [sp]
4111	mov	r7, r0
4112	cbz	r3, .L487
4113	bl	IsBlkInVendorPart
4114	cbnz	r0, .L488
4115.L487:
4116	mov	r0, r7
4117	bl	FtlBbmIsBadBlock
4118	cbnz	r0, .L489
4119	mla	r1, r10, r5, r8
4120	ldr	r3, [sp, #12]
4121	lsls	r7, r7, #10
4122	str	r3, [r1, #8]
4123	ldr	r3, [sp, #20]
4124	str	r7, [r1, #4]
4125	mul	r2, r3, r5
4126	ldr	r3, [sp, #16]
4127	adds	r5, r5, #1
4128	uxth	r5, r5
4129	bic	r2, r2, #3
4130	add	r2, r2, r3
4131	str	r2, [r1, #12]
4132.L488:
4133	add	fp, fp, #1
4134	b	.L486
4135.L489:
4136	adds	r4, r4, #1
4137	uxth	r4, r4
4138	b	.L488
4139.L495:
4140	mul	r3, r8, r7
4141	ldr	r2, [r6]
4142	adds	r1, r2, r3
4143	ldr	r3, [r2, r3]
4144	adds	r3, r3, #1
4145	bne	.L494
4146	ldr	r0, [r1, #4]
4147	adds	r4, r4, #1
4148	uxth	r4, r4
4149	ubfx	r0, r0, #10, #16
4150	bl	FtlBbmMapBadBlock
4151.L494:
4152	adds	r7, r7, #1
4153	b	.L493
4154.L511:
4155	movs	r3, #6
4156	ldr	r8, [sp]
4157	str	r3, [sp, #12]
4158	mov	r10, #1
4159	b	.L496
4160.L500:
4161	movs	r3, #20
4162	mul	r2, r3, fp
4163	ldr	r3, [sp, #8]
4164	mov	r1, r3
4165	movs	r3, #0
4166	str	r3, [r1, r2]
4167	ldr	r3, .L528+32
4168	ldr	r1, [sp, #4]
4169	ldrb	r0, [r3, fp]	@ zero_extendqisi2
4170	bl	V2P_block
4171	ldr	r3, [sp]
4172	mov	r7, r0
4173	cbz	r3, .L498
4174	bl	IsBlkInVendorPart
4175	cbnz	r0, .L499
4176.L498:
4177	mov	r0, r7
4178	bl	FtlBbmIsBadBlock
4179	cbnz	r0, .L499
4180	ldr	r3, [sp, #8]
4181	movs	r2, #20
4182	add	r7, r6, r7, lsl #10
4183	mla	r1, r2, r5, r3
4184	ldr	r3, [sp, #20]
4185	str	r3, [r1, #8]
4186	ldr	r3, [sp, #28]
4187	str	r7, [r1, #4]
4188	mul	r2, r3, r5
4189	ldr	r3, [sp, #24]
4190	adds	r5, r5, #1
4191	uxth	r5, r5
4192	bic	r2, r2, #3
4193	add	r2, r2, r3
4194	str	r2, [r1, #12]
4195.L499:
4196	add	fp, fp, #1
4197	b	.L497
4198.L504:
4199	mul	r2, r3, r7
4200	ldr	r1, [fp]
4201	adds	r0, r1, r2
4202	ldr	r2, [r1, r2]
4203	cbz	r2, .L503
4204	ldr	r0, [r0, #4]
4205	adds	r4, r4, #1
4206	str	r3, [sp, #8]
4207	uxth	r4, r4
4208	ubfx	r0, r0, #10, #16
4209	bl	FtlBbmMapBadBlock
4210	ldr	r3, [sp, #8]
4211.L503:
4212	adds	r7, r7, #1
4213	b	.L502
4214.L508:
4215	ldr	r3, [sp]
4216	cbz	r3, .L507
4217	mul	r3, r10, r6
4218	ldr	r2, [r7]
4219	adds	r1, r2, r3
4220	ldr	r3, [r2, r3]
4221	cbnz	r3, .L507
4222	ldr	r0, [r1, #4]
4223	movs	r1, #1
4224	ubfx	r0, r0, #10, #16
4225	bl	FtlFreeSysBlkQueueIn
4226.L507:
4227	adds	r6, r6, #1
4228	b	.L506
4229.L529:
4230	.align	2
4231.L528:
4232	.word	.LANCHOR112
4233	.word	.LANCHOR111
4234	.word	.LANCHOR3
4235	.word	.LANCHOR113
4236	.word	.LANCHOR114
4237	.word	.LANCHOR24
4238	.word	.LANCHOR20
4239	.word	.LANCHOR115
4240	.word	.LANCHOR13
4241	.size	FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
4242	.section	.text.FtlFreeSysBlkQueueOut,"ax",%progbits
4243	.align	1
4244	.global	FtlFreeSysBlkQueueOut
4245	.syntax unified
4246	.thumb
4247	.thumb_func
4248	.fpu softvfp
4249	.type	FtlFreeSysBlkQueueOut, %function
4250FtlFreeSysBlkQueueOut:
4251	@ args = 0, pretend = 0, frame = 0
4252	@ frame_needed = 0, uses_anonymous_args = 0
4253	push	{r3, r4, r5, r6, r7, lr}
4254	ldr	r4, .L537
4255	ldr	r6, .L537+4
4256.L531:
4257	ldrh	r1, [r4, #6]
4258	cbz	r1, .L532
4259	ldrh	r3, [r4, #2]
4260	subs	r1, r1, #1
4261	strh	r1, [r4, #6]	@ movhi
4262	adds	r2, r3, #4
4263	adds	r3, r3, #1
4264	ldrh	r5, [r4, r2, lsl #1]
4265	ubfx	r3, r3, #0, #10
4266	strh	r3, [r4, #2]	@ movhi
4267	mov	r0, r5
4268	bl	P2V_block_in_plane
4269	mov	r7, r0
4270	ldr	r0, [r6]
4271	lsls	r3, r5, #10
4272	movs	r2, #1
4273	mov	r1, r2
4274	str	r3, [r0, #4]
4275	bl	FlashEraseBlocks
4276	ldr	r3, .L537+8
4277	ldr	r2, [r3]
4278	ldrh	r3, [r2, r7, lsl #1]
4279	adds	r3, r3, #1
4280	strh	r3, [r2, r7, lsl #1]	@ movhi
4281	ldr	r2, .L537+12
4282	ldr	r3, [r2]
4283	adds	r3, r3, #1
4284	str	r3, [r2]
4285	subs	r3, r5, #1
4286	uxth	r3, r3
4287	movw	r2, #65533
4288	cmp	r3, r2
4289	bhi	.L533
4290	mov	r0, r5
4291	pop	{r3, r4, r5, r6, r7, pc}
4292.L532:
4293	ldr	r0, .L537+16
4294	bl	printf
4295.L535:
4296	b	.L535
4297.L533:
4298	ldrh	r2, [r4, #6]
4299	mov	r1, r5
4300	ldr	r0, .L537+20
4301	bl	printf
4302	b	.L531
4303.L538:
4304	.align	2
4305.L537:
4306	.word	.LANCHOR38
4307	.word	.LANCHOR111
4308	.word	.LANCHOR43
4309	.word	.LANCHOR75
4310	.word	.LC82
4311	.word	.LC83
4312	.size	FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
4313	.section	.text.ftl_map_blk_alloc_new_blk,"ax",%progbits
4314	.align	1
4315	.global	ftl_map_blk_alloc_new_blk
4316	.syntax unified
4317	.thumb
4318	.thumb_func
4319	.fpu softvfp
4320	.type	ftl_map_blk_alloc_new_blk, %function
4321ftl_map_blk_alloc_new_blk:
4322	@ args = 0, pretend = 0, frame = 0
4323	@ frame_needed = 0, uses_anonymous_args = 0
4324	ldrh	r1, [r0, #10]
4325	ldr	r2, [r0, #12]
4326	push	{r3, r4, r5, r6, r7, lr}
4327	mov	r4, r0
4328	movs	r3, #0
4329.L540:
4330	uxth	r5, r3
4331	cmp	r5, r1
4332	bcs	.L543
4333	mov	r7, r2
4334	adds	r3, r3, #1
4335	ldrh	r6, [r7]
4336	adds	r2, r2, #2
4337	cmp	r6, #0
4338	bne	.L540
4339	bl	FtlFreeSysBlkQueueOut
4340	subs	r3, r0, #1
4341	movw	r2, #65533
4342	uxth	r3, r3
4343	mov	r1, r0
4344	strh	r0, [r7]	@ movhi
4345	cmp	r3, r2
4346	bls	.L541
4347	ldr	r3, .L547
4348	ldr	r0, .L547+4
4349	ldrh	r2, [r3, #6]
4350	bl	printf
4351.L542:
4352	b	.L542
4353.L541:
4354	ldr	r3, [r4, #28]
4355	strh	r6, [r4, #2]	@ movhi
4356	strh	r5, [r4]	@ movhi
4357	adds	r3, r3, #1
4358	str	r3, [r4, #28]
4359	ldrh	r3, [r4, #8]
4360	adds	r3, r3, #1
4361	strh	r3, [r4, #8]	@ movhi
4362.L543:
4363	ldrh	r3, [r4, #10]
4364	cmp	r3, r5
4365	bhi	.L545
4366	movw	r2, #581
4367	ldr	r1, .L547+8
4368	ldr	r0, .L547+12
4369	bl	printf
4370.L545:
4371	movs	r0, #0
4372	pop	{r3, r4, r5, r6, r7, pc}
4373.L548:
4374	.align	2
4375.L547:
4376	.word	.LANCHOR38
4377	.word	.LC84
4378	.word	.LANCHOR116
4379	.word	.LC1
4380	.size	ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
4381	.section	.text.ftl_memset,"ax",%progbits
4382	.align	1
4383	.global	ftl_memset
4384	.syntax unified
4385	.thumb
4386	.thumb_func
4387	.fpu softvfp
4388	.type	ftl_memset, %function
4389ftl_memset:
4390	@ args = 0, pretend = 0, frame = 0
4391	@ frame_needed = 0, uses_anonymous_args = 0
4392	@ link register save eliminated.
4393	b	memset
4394	.size	ftl_memset, .-ftl_memset
4395	.section	.text.FtlMemInit,"ax",%progbits
4396	.align	1
4397	.global	FtlMemInit
4398	.syntax unified
4399	.thumb
4400	.thumb_func
4401	.fpu softvfp
4402	.type	FtlMemInit, %function
4403FtlMemInit:
4404	@ args = 0, pretend = 0, frame = 16
4405	@ frame_needed = 0, uses_anonymous_args = 0
4406	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
4407	movs	r1, #0
4408	ldr	r3, .L651
4409	mov	r8, #12
4410	ldr	r2, .L651+4
4411	str	r1, [r3]
4412	ldr	r3, .L651+8
4413	ldr	r4, .L651+12
4414	str	r1, [sp, #4]
4415	str	r1, [r3]
4416	ldr	r3, .L651+16
4417	ldrh	r0, [r4]
4418	ldr	fp, .L651+288
4419	str	r1, [r3]
4420	ldr	r3, .L651+20
4421	lsls	r0, r0, #1
4422	ldr	r10, .L651+292
4423	ldr	r5, .L651+24
4424	str	r1, [r3]
4425	ldr	r3, .L651+28
4426	ldr	r7, .L651+32
4427	str	r1, [r3]
4428	ldr	r3, .L651+36
4429	str	r1, [r3]
4430	ldr	r3, .L651+40
4431	str	r1, [r3]
4432	ldr	r3, .L651+44
4433	str	r1, [r3]
4434	ldr	r3, .L651+48
4435	str	r1, [r3]
4436	ldr	r3, .L651+52
4437	str	r1, [r3]
4438	ldr	r3, .L651+56
4439	str	r1, [r3]
4440	ldr	r3, .L651+60
4441	str	r1, [r3]
4442	ldr	r3, .L651+64
4443	str	r1, [r3]
4444	ldr	r3, .L651+68
4445	str	r1, [r3]
4446	ldr	r3, .L651+72
4447	str	r1, [r3]
4448	movw	r3, #65535
4449	str	r3, [r2]
4450	ldr	r2, .L651+76
4451	str	r1, [r2]
4452	ldr	r2, .L651+80
4453	str	r1, [r2]
4454	ldr	r2, .L651+84
4455	str	r1, [r2]
4456	ldr	r2, .L651+88
4457	strh	r3, [r2]	@ movhi
4458	ldr	r2, .L651+92
4459	strh	r3, [r2]	@ movhi
4460	movs	r2, #32
4461	ldr	r3, .L651+96
4462	strh	r2, [r3]	@ movhi
4463	movs	r2, #128
4464	ldr	r3, .L651+100
4465	strh	r2, [r3]	@ movhi
4466	ldr	r3, .L651+104
4467	strh	r1, [r3]	@ movhi
4468	ldr	r3, .L651+108
4469	strh	r1, [r3]	@ movhi
4470	ldr	r3, .L651+112
4471	strh	r1, [r3]	@ movhi
4472	bl	ftl_malloc
4473	ldr	r3, .L651+116
4474	str	r0, [r3]
4475	ldrh	r0, [r4]
4476	movs	r4, #20
4477	mul	r0, r8, r0
4478	bl	ftl_malloc
4479	ldrh	r2, [fp]
4480	ldr	r3, .L651+120
4481	muls	r4, r2, r4
4482	str	r0, [r3]
4483	lsls	r6, r4, #2
4484	mov	r0, r6
4485	bl	ftl_malloc
4486	ldr	r3, .L651+124
4487	str	r0, [r3]
4488	mov	r0, r4
4489	bl	ftl_malloc
4490	ldr	r3, .L651+128
4491	str	r0, [r3]
4492	mov	r0, r6
4493	bl	ftl_malloc
4494	ldr	r3, .L651+132
4495	ldr	r6, .L651+136
4496	str	r0, [r3]
4497	mov	r0, r4
4498	bl	ftl_malloc
4499	str	r0, [r10]
4500	mov	r0, r4
4501	bl	ftl_malloc
4502	ldr	r3, .L651+140
4503	ldrh	r2, [fp]
4504	str	r0, [r3]
4505	ldr	r3, .L651+144
4506	lsls	r2, r2, #1
4507	ldrh	r4, [r3]
4508	adds	r2, r2, #1
4509	str	r2, [r5]
4510	mov	r0, r4
4511	bl	ftl_malloc
4512	ldr	r3, .L651+148
4513	str	r0, [r3]
4514	mov	r0, r4
4515	bl	ftl_malloc
4516	ldr	r3, .L651+152
4517	str	r0, [r3]
4518	mov	r0, r4
4519	bl	ftl_malloc
4520	str	r0, [r7]
4521	ldr	r0, [r5]
4522	muls	r0, r4, r0
4523	bl	ftl_malloc
4524	str	r0, [r6]
4525	mov	r0, r4
4526	bl	ftl_malloc
4527	ldr	r2, .L651+156
4528	str	r0, [r2]
4529	mov	r0, r4
4530	bl	ftl_malloc
4531	ldr	r2, .L651+160
4532	ldr	r4, .L651+164
4533	str	r0, [r2]
4534	ldr	r0, [r5]
4535	mul	r0, r8, r0
4536	bl	ftl_malloc
4537	ldr	r2, .L651+168
4538	ldrh	r3, [fp]
4539	str	r0, [r2]
4540	ldrh	r2, [r4]
4541	mul	fp, r3, r2
4542	mov	r0, fp
4543	bl	ftl_malloc
4544	ldr	r2, .L651+172
4545	str	r0, [r2]
4546	lsl	r0, fp, #2
4547	bl	ftl_malloc
4548	ldr	r3, .L651+176
4549	str	r0, [r3]
4550	ldrh	r3, [r4]
4551	ldr	r0, [r5]
4552	ldr	r4, .L651+180
4553	ldr	r5, .L651+184
4554	muls	r0, r3, r0
4555	bl	ftl_malloc
4556	ldr	r3, .L651+188
4557	str	r0, [r3]
4558	ldrh	r0, [r4]
4559	lsls	r0, r0, #1
4560	uxth	r0, r0
4561	strh	r0, [r5]	@ movhi
4562	bl	ftl_malloc
4563	ldr	r3, .L651+192
4564	str	r0, [r3]
4565	ldrh	r3, [r5]
4566	ldr	r0, .L651+196
4567	addw	r3, r3, #547
4568	lsrs	r3, r3, #9
4569	and	r0, r0, r3, lsl #9
4570	strh	r3, [r5]	@ movhi
4571	bl	ftl_malloc
4572	ldrh	fp, [r4]
4573	ldr	r3, .L651+200
4574	str	r0, [r3]
4575	lsl	fp, fp, #1
4576	ldr	r3, .L651+204
4577	adds	r0, r0, #32
4578	str	r0, [r3]
4579	mov	r0, fp
4580	bl	ftl_malloc
4581	ldr	r3, .L651+208
4582	str	r0, [r3]
4583	mov	r0, fp
4584	bl	ftl_malloc
4585	ldr	fp, .L651+296
4586	ldr	r3, .L651+212
4587	str	r0, [r3]
4588	ldr	r3, [fp]
4589	lsls	r5, r3, #1
4590	mov	r0, r5
4591	bl	ftl_malloc
4592	ldr	r2, .L651+216
4593	str	r0, [r2]
4594	mov	r0, r5
4595	bl	ftl_malloc
4596	ldr	r3, .L651+220
4597	ldr	r5, .L651+224
4598	str	r0, [r3]
4599	ldrh	r0, [r4]
4600	lsrs	r0, r0, #3
4601	adds	r0, r0, #4
4602	bl	ftl_malloc
4603	ldr	r3, .L651+228
4604	str	r0, [r3]
4605	ldrh	r0, [r5]
4606	lsls	r0, r0, #1
4607	bl	ftl_malloc
4608	ldr	r2, .L651+232
4609	str	r0, [r2]
4610	ldrh	r0, [r5]
4611	lsls	r0, r0, #1
4612	bl	ftl_malloc
4613	ldr	r2, .L651+236
4614	str	r0, [r2]
4615	ldrh	r0, [r5]
4616	ldr	r5, .L651+120
4617	lsls	r0, r0, #2
4618	bl	ftl_malloc
4619	ldr	r3, .L651+240
4620	str	r0, [r3]
4621	ldr	r3, .L651+244
4622	ldrh	r0, [r3]
4623	str	r3, [sp]
4624	lsls	r0, r0, #2
4625	bl	ftl_malloc
4626	ldr	r3, [sp]
4627	ldr	r2, .L651+248
4628	ldr	r1, [sp, #4]
4629	str	r0, [r2]
4630	ldrh	r2, [r3]
4631	lsls	r2, r2, #2
4632	bl	ftl_memset
4633	ldr	r3, .L651+252
4634	ldrh	r0, [r3]
4635	lsls	r0, r0, #2
4636	bl	ftl_malloc
4637	ldr	r3, .L651+256
4638	str	r0, [r3]
4639	ldr	r0, [fp]
4640	ldr	fp, .L651+300
4641	lsls	r0, r0, #2
4642	bl	ftl_malloc
4643	ldr	r3, .L651+260
4644	str	r0, [r3]
4645	ldrh	r0, [fp]
4646	mul	r0, r8, r0
4647	ldr	r8, .L651+304
4648	bl	ftl_malloc
4649	ldr	r2, .L651+144
4650	ldr	r3, .L651+264
4651	str	r0, [r3]
4652	ldrh	r0, [r2]
4653	ldrh	r3, [fp]
4654	ldr	fp, .L651+132
4655	muls	r0, r3, r0
4656	bl	ftl_malloc
4657	ldr	r3, .L651+268
4658	str	r0, [r3]
4659	movs	r0, #6
4660	ldrh	r3, [r4]
4661	ldr	r4, .L651+272
4662	muls	r0, r3, r0
4663	bl	ftl_malloc
4664	ldr	r3, .L651+276
4665	str	r0, [r3]
4666	ldr	r3, .L651+280
4667	ldrh	r0, [r3]
4668	ldrh	r3, [r8]
4669	adds	r0, r0, #31
4670	asrs	r0, r0, #5
4671	strh	r0, [r4]	@ movhi
4672	muls	r0, r3, r0
4673	lsls	r0, r0, #2
4674	bl	ftl_malloc
4675	ldr	r2, .L651+284
4676	str	r5, [sp, #4]
4677	ldr	r5, .L651+124
4678	mov	r1, r2
4679	ldrh	r3, [r8]
4680	str	r0, [r1, #28]!
4681	ldrh	r0, [r4]
4682	ldr	r8, .L651+140
4683	ldr	lr, .L651+148
4684	b	.L652
4685.L653:
4686	.align	2
4687.L651:
4688	.word	.LANCHOR70
4689	.word	.LANCHOR118
4690	.word	.LANCHOR71
4691	.word	.LANCHOR21
4692	.word	.LANCHOR67
4693	.word	.LANCHOR64
4694	.word	.LANCHOR94
4695	.word	.LANCHOR63
4696	.word	.LANCHOR124
4697	.word	.LANCHOR65
4698	.word	.LANCHOR66
4699	.word	.LANCHOR62
4700	.word	.LANCHOR72
4701	.word	.LANCHOR73
4702	.word	.LANCHOR75
4703	.word	.LANCHOR76
4704	.word	.LANCHOR77
4705	.word	.LANCHOR117
4706	.word	.LANCHOR87
4707	.word	.LANCHOR119
4708	.word	.LANCHOR84
4709	.word	.LANCHOR112
4710	.word	.LANCHOR99
4711	.word	.LANCHOR100
4712	.word	.LANCHOR82
4713	.word	.LANCHOR83
4714	.word	.LANCHOR85
4715	.word	.LANCHOR101
4716	.word	.LANCHOR103
4717	.word	.LANCHOR95
4718	.word	.LANCHOR98
4719	.word	.LANCHOR120
4720	.word	.LANCHOR121
4721	.word	.LANCHOR122
4722	.word	.LANCHOR91
4723	.word	.LANCHOR93
4724	.word	.LANCHOR23
4725	.word	.LANCHOR107
4726	.word	.LANCHOR123
4727	.word	.LANCHOR115
4728	.word	.LANCHOR113
4729	.word	.LANCHOR24
4730	.word	.LANCHOR90
4731	.word	.LANCHOR108
4732	.word	.LANCHOR114
4733	.word	.LANCHOR6
4734	.word	.LANCHOR125
4735	.word	.LANCHOR92
4736	.word	.LANCHOR126
4737	.word	33553920
4738	.word	.LANCHOR127
4739	.word	.LANCHOR43
4740	.word	.LANCHOR128
4741	.word	.LANCHOR42
4742	.word	.LANCHOR129
4743	.word	.LANCHOR130
4744	.word	.LANCHOR27
4745	.word	.LANCHOR1
4746	.word	.LANCHOR36
4747	.word	.LANCHOR131
4748	.word	.LANCHOR132
4749	.word	.LANCHOR28
4750	.word	.LANCHOR133
4751	.word	.LANCHOR32
4752	.word	.LANCHOR134
4753	.word	.LANCHOR135
4754	.word	.LANCHOR55
4755	.word	.LANCHOR136
4756	.word	.LANCHOR137
4757	.word	.LANCHOR40
4758	.word	.LANCHOR17
4759	.word	.LANCHOR37
4760	.word	.LANCHOR3
4761	.word	.LANCHOR111
4762	.word	.LANCHOR30
4763	.word	.LANCHOR33
4764	.word	.LANCHOR10
4765.L652:
4766	ldr	ip, .L654+100
4767	lsls	r0, r0, #2
4768	str	r5, [sp, #8]
4769	ldr	r5, .L654
4770	str	r3, [sp]
4771	mov	r4, r0
4772	movs	r3, #1
4773	str	r5, [sp, #12]
4774.L551:
4775	ldr	r5, [sp]
4776	cmp	r3, r5
4777	bcc	.L552
4778	add	r3, r2, r3, lsl #2
4779	ldr	r1, .L654+4
4780	movs	r0, #0
4781	adds	r3, r3, #24
4782.L553:
4783	cmp	r1, r3
4784	bne	.L554
4785	ldr	r3, .L654+8
4786	ldr	r3, [r3]
4787	cbnz	r3, .L555
4788.L557:
4789	ldr	r1, .L654+12
4790	ldr	r0, .L654+16
4791	bl	printf
4792	mov	r0, #-1
4793.L550:
4794	add	sp, sp, #16
4795	@ sp needed
4796	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
4797.L552:
4798	ldr	r5, [r2, #28]
4799	adds	r3, r3, #1
4800	add	r5, r5, r4
4801	add	r4, r4, r0
4802	str	r5, [r1, #4]!
4803	b	.L551
4804.L554:
4805	str	r0, [r3, #4]!
4806	b	.L553
4807.L555:
4808	ldr	r3, .L654+20
4809	ldr	r3, [r3]
4810	cmp	r3, #0
4811	beq	.L557
4812	ldr	r3, .L654+24
4813	ldr	r3, [r3]
4814	cmp	r3, #0
4815	beq	.L557
4816	ldr	r3, .L654+28
4817	ldr	r3, [r3]
4818	cmp	r3, #0
4819	beq	.L557
4820	ldr	r3, .L654+32
4821	ldr	r3, [r3]
4822	cmp	r3, #0
4823	beq	.L557
4824	ldr	r3, .L654+36
4825	ldr	r3, [r3]
4826	cmp	r3, #0
4827	beq	.L557
4828	ldr	r3, .L654+40
4829	ldr	r3, [r3]
4830	cmp	r3, #0
4831	beq	.L557
4832	ldr	r3, [r2, #28]
4833	cmp	r3, #0
4834	beq	.L557
4835	ldr	r3, .L654+44
4836	ldr	r3, [r3]
4837	cmp	r3, #0
4838	beq	.L557
4839	ldr	r3, .L654+48
4840	ldr	r3, [r3]
4841	cmp	r3, #0
4842	beq	.L557
4843	ldr	r3, [sp, #4]
4844	ldr	r3, [r3]
4845	cmp	r3, #0
4846	beq	.L557
4847	ldr	r3, [sp, #8]
4848	ldr	r3, [r3]
4849	cmp	r3, #0
4850	beq	.L557
4851	ldr	r3, [fp]
4852	cmp	r3, #0
4853	beq	.L557
4854	ldr	r3, [r10]
4855	cmp	r3, #0
4856	beq	.L557
4857	ldr	r3, [r8]
4858	cmp	r3, #0
4859	beq	.L557
4860	ldr	r3, [sp, #12]
4861	ldr	r3, [r3]
4862	cmp	r3, #0
4863	beq	.L557
4864	ldr	r3, [lr]
4865	cmp	r3, #0
4866	beq	.L557
4867	ldr	r3, [ip]
4868	cmp	r3, #0
4869	beq	.L557
4870	ldr	r3, [r7]
4871	cmp	r3, #0
4872	beq	.L557
4873	ldr	r3, [r6]
4874	cmp	r3, #0
4875	beq	.L557
4876	ldr	r3, .L654+52
4877	ldr	r3, [r3]
4878	cmp	r3, #0
4879	beq	.L557
4880	ldr	r3, .L654+56
4881	ldr	r3, [r3]
4882	cmp	r3, #0
4883	beq	.L557
4884	ldr	r3, .L654+60
4885	ldr	r3, [r3]
4886	cmp	r3, #0
4887	beq	.L557
4888	ldr	r3, .L654+64
4889	ldr	r3, [r3]
4890	cmp	r3, #0
4891	beq	.L557
4892	ldr	r3, .L654+68
4893	ldr	r3, [r3]
4894	cmp	r3, #0
4895	beq	.L557
4896	ldr	r3, .L654+72
4897	ldr	r3, [r3]
4898	cmp	r3, #0
4899	beq	.L557
4900	ldr	r3, .L654+76
4901	ldr	r3, [r3]
4902	cmp	r3, #0
4903	beq	.L557
4904	ldr	r3, .L654+80
4905	ldr	r3, [r3]
4906	cmp	r3, #0
4907	beq	.L557
4908	ldr	r3, .L654+84
4909	ldr	r3, [r3]
4910	cmp	r3, #0
4911	beq	.L557
4912	ldr	r3, .L654+88
4913	ldr	r3, [r3]
4914	cmp	r3, #0
4915	beq	.L557
4916	ldr	r3, .L654+92
4917	ldr	r3, [r3]
4918	cmp	r3, #0
4919	beq	.L557
4920	ldr	r3, .L654+96
4921	ldr	r3, [r3]
4922	cmp	r3, #0
4923	beq	.L557
4924	movs	r0, #0
4925	b	.L550
4926.L655:
4927	.align	2
4928.L654:
4929	.word	.LANCHOR121
4930	.word	.LANCHOR37+56
4931	.word	.LANCHOR129
4932	.word	.LANCHOR138
4933	.word	.LC85
4934	.word	.LANCHOR130
4935	.word	.LANCHOR134
4936	.word	.LANCHOR135
4937	.word	.LANCHOR55
4938	.word	.LANCHOR136
4939	.word	.LANCHOR40
4940	.word	.LANCHOR42
4941	.word	.LANCHOR95
4942	.word	.LANCHOR115
4943	.word	.LANCHOR113
4944	.word	.LANCHOR90
4945	.word	.LANCHOR108
4946	.word	.LANCHOR114
4947	.word	.LANCHOR92
4948	.word	.LANCHOR43
4949	.word	.LANCHOR126
4950	.word	.LANCHOR36
4951	.word	.LANCHOR131
4952	.word	.LANCHOR132
4953	.word	.LANCHOR133
4954	.word	.LANCHOR123
4955	.size	FtlMemInit, .-FtlMemInit
4956	.section	.text.FtlBbt2Bitmap,"ax",%progbits
4957	.align	1
4958	.global	FtlBbt2Bitmap
4959	.syntax unified
4960	.thumb
4961	.thumb_func
4962	.fpu softvfp
4963	.type	FtlBbt2Bitmap, %function
4964FtlBbt2Bitmap:
4965	@ args = 0, pretend = 0, frame = 0
4966	@ frame_needed = 0, uses_anonymous_args = 0
4967	ldr	r3, .L662
4968	push	{r4, r5, r6, r7, r8, lr}
4969	mov	r5, r0
4970	ldr	r7, .L662+4
4971	mov	r6, r1
4972	subs	r4, r5, #2
4973	addw	r5, r5, #1022
4974	ldrh	r2, [r3]
4975	movs	r1, #0
4976	ldr	r8, .L662+12
4977	mov	r0, r6
4978	lsls	r2, r2, #2
4979	bl	ftl_memset
4980.L659:
4981	ldrh	r3, [r4, #2]
4982	movw	r2, #65535
4983	cmp	r3, r2
4984	beq	.L656
4985	ldrh	r2, [r7]
4986	cmp	r2, r3
4987	bhi	.L658
4988	movs	r2, #74
4989	mov	r1, r8
4990	ldr	r0, .L662+8
4991	bl	printf
4992.L658:
4993	ldrh	r3, [r4, #2]!
4994	movs	r2, #1
4995	cmp	r5, r4
4996	lsr	r1, r3, #5
4997	and	r3, r3, #31
4998	lsl	r3, r2, r3
4999	ldr	r2, [r6, r1, lsl #2]
5000	orr	r2, r2, r3
5001	str	r2, [r6, r1, lsl #2]
5002	bne	.L659
5003.L656:
5004	pop	{r4, r5, r6, r7, r8, pc}
5005.L663:
5006	.align	2
5007.L662:
5008	.word	.LANCHOR137
5009	.word	.LANCHOR17
5010	.word	.LC1
5011	.word	.LANCHOR139
5012	.size	FtlBbt2Bitmap, .-FtlBbt2Bitmap
5013	.section	.text.FtlBbtMemInit,"ax",%progbits
5014	.align	1
5015	.global	FtlBbtMemInit
5016	.syntax unified
5017	.thumb
5018	.thumb_func
5019	.fpu softvfp
5020	.type	FtlBbtMemInit, %function
5021FtlBbtMemInit:
5022	@ args = 0, pretend = 0, frame = 0
5023	@ frame_needed = 0, uses_anonymous_args = 0
5024	@ link register save eliminated.
5025	ldr	r0, .L665
5026	movw	r3, #65535
5027	movs	r2, #16
5028	movs	r1, #255
5029	strh	r3, [r0]	@ movhi
5030	movs	r3, #0
5031	strh	r3, [r0, #6]	@ movhi
5032	adds	r0, r0, #12
5033	b	ftl_memset
5034.L666:
5035	.align	2
5036.L665:
5037	.word	.LANCHOR37
5038	.size	FtlBbtMemInit, .-FtlBbtMemInit
5039	.section	.text.FtlFreeSysBlkQueueInit,"ax",%progbits
5040	.align	1
5041	.global	FtlFreeSysBlkQueueInit
5042	.syntax unified
5043	.thumb
5044	.thumb_func
5045	.fpu softvfp
5046	.type	FtlFreeSysBlkQueueInit, %function
5047FtlFreeSysBlkQueueInit:
5048	@ args = 0, pretend = 0, frame = 0
5049	@ frame_needed = 0, uses_anonymous_args = 0
5050	ldr	r3, .L668
5051	mov	r2, #2048
5052	push	{r4, lr}
5053	movs	r4, #0
5054	mov	r1, r4
5055	strh	r4, [r3, #2]	@ movhi
5056	strh	r4, [r3, #4]	@ movhi
5057	strh	r4, [r3, #6]	@ movhi
5058	strh	r0, [r3], #8	@ movhi
5059	mov	r0, r3
5060	bl	ftl_memset
5061	mov	r0, r4
5062	pop	{r4, pc}
5063.L669:
5064	.align	2
5065.L668:
5066	.word	.LANCHOR38
5067	.size	FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
5068	.section	.text.load_l2p_region,"ax",%progbits
5069	.align	1
5070	.global	load_l2p_region
5071	.syntax unified
5072	.thumb
5073	.thumb_func
5074	.fpu softvfp
5075	.type	load_l2p_region, %function
5076load_l2p_region:
5077	@ args = 0, pretend = 0, frame = 8
5078	@ frame_needed = 0, uses_anonymous_args = 0
5079	ldr	r3, .L676
5080	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
5081	mov	r5, r0
5082	mov	r10, r1
5083	ldrh	r2, [r3]
5084	str	r3, [sp, #4]
5085	cmp	r2, r0
5086	bcs	.L671
5087	mov	r2, #492
5088	ldr	r1, .L676+4
5089	ldr	r0, .L676+8
5090	bl	printf
5091.L671:
5092	ldr	fp, .L676+40
5093	movs	r4, #12
5094	ldr	r7, .L676+12
5095	ldr	r3, [fp]
5096	ldr	r8, [r3, r5, lsl #2]
5097	cmp	r8, #0
5098	bne	.L672
5099	mul	r4, r4, r10
5100	ldr	r2, [r7]
5101	movs	r1, #255
5102	adds	r0, r2, r4
5103	ldr	r2, .L676+16
5104	ldr	r0, [r0, #8]
5105	ldrh	r2, [r2]
5106	bl	ftl_memset
5107	ldr	r2, [r7]
5108	adds	r1, r2, r4
5109	strh	r5, [r2, r4]	@ movhi
5110	str	r8, [r1, #4]
5111.L673:
5112	movs	r0, #0
5113	add	sp, sp, #8
5114	@ sp needed
5115	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
5116.L672:
5117	mul	r4, r4, r10
5118	ldr	r2, [r7]
5119	ldr	r6, .L676+20
5120	add	r2, r2, r4
5121	mov	r0, r6
5122	ldr	r2, [r2, #8]
5123	str	r8, [r6, #4]
5124	str	r2, [r6, #8]
5125	ldr	r2, .L676+24
5126	ldr	r2, [r2]
5127	str	r2, [r6, #12]
5128	movs	r2, #1
5129	mov	r1, r2
5130	bl	FlashReadPages
5131	ldr	r10, [r6, #12]
5132	ldrh	r2, [r10, #8]
5133	cmp	r2, r5
5134	beq	.L674
5135	mov	r2, r8
5136	mov	r1, r5
5137	ldr	r0, .L676+28
5138	bl	printf
5139	movs	r3, #4
5140	ldr	r1, [r6, #12]
5141	mov	r2, r3
5142	ldr	r0, .L676+32
5143	bl	rknand_print_hex
5144	ldr	r3, [sp, #4]
5145	movs	r2, #4
5146	ldr	r1, [fp]
5147	ldr	r0, .L676+36
5148	ldrh	r3, [r3]
5149	bl	rknand_print_hex
5150.L674:
5151	ldrh	r3, [r10, #8]
5152	cmp	r3, r5
5153	beq	.L675
5154	movw	r2, #513
5155	ldr	r1, .L676+4
5156	ldr	r0, .L676+8
5157	bl	printf
5158.L675:
5159	ldr	r3, [r7]
5160	movs	r1, #0
5161	adds	r2, r3, r4
5162	str	r1, [r2, #4]
5163	strh	r5, [r3, r4]	@ movhi
5164	b	.L673
5165.L677:
5166	.align	2
5167.L676:
5168	.word	.LANCHOR32
5169	.word	.LANCHOR140
5170	.word	.LC1
5171	.word	.LANCHOR55
5172	.word	.LANCHOR23
5173	.word	.LANCHOR106
5174	.word	.LANCHOR108
5175	.word	.LC86
5176	.word	.LC87
5177	.word	.LC88
5178	.word	.LANCHOR134
5179	.size	load_l2p_region, .-load_l2p_region
5180	.section	.text.ftl_free_no_use_map_blk,"ax",%progbits
5181	.align	1
5182	.global	ftl_free_no_use_map_blk
5183	.syntax unified
5184	.thumb
5185	.thumb_func
5186	.fpu softvfp
5187	.type	ftl_free_no_use_map_blk, %function
5188ftl_free_no_use_map_blk:
5189	@ args = 0, pretend = 0, frame = 8
5190	@ frame_needed = 0, uses_anonymous_args = 0
5191	ldrh	r2, [r0, #10]
5192	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
5193	mov	r4, r0
5194	ldr	r5, [r0, #20]
5195	movs	r1, #0
5196	ldr	r10, [r0, #12]
5197	lsls	r2, r2, #1
5198	ldr	r6, [r0, #24]
5199	mov	r0, r5
5200	bl	ftl_memset
5201	movs	r3, #0
5202.L679:
5203	ldrh	r1, [r4, #6]
5204	uxth	r2, r3
5205	cmp	r1, r2
5206	bhi	.L683
5207	ldrh	r3, [r5]
5208	movs	r6, #0
5209	ldr	r2, .L692
5210	mov	fp, r6
5211.L684:
5212	ldrh	r0, [r4, #10]
5213	uxth	r1, r6
5214	cmp	r0, r1
5215	bhi	.L688
5216	mov	r0, fp
5217	add	sp, sp, #8
5218	@ sp needed
5219	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
5220.L683:
5221	uxth	r2, r3
5222	ldr	r1, [r6, r2, lsl #2]
5223	movs	r2, #0
5224	ubfx	r1, r1, #10, #16
5225.L680:
5226	ldrh	r7, [r4, #10]
5227	uxth	r0, r2
5228	cmp	r7, r0
5229	bhi	.L682
5230	adds	r3, r3, #1
5231	b	.L679
5232.L682:
5233	uxth	r0, r2
5234	adds	r2, r2, #1
5235	ldrh	r7, [r10, r0, lsl #1]
5236	cmp	r7, r1
5237	ittt	eq
5238	ldrheq	r7, [r5, r0, lsl #1]
5239	addeq	r7, r7, #1
5240	strheq	r7, [r5, r0, lsl #1]	@ movhi
5241	b	.L680
5242.L688:
5243	ldrh	r0, [r4]
5244	uxth	r7, r6
5245	cmp	r0, r1
5246	bne	.L685
5247	ldrh	r0, [r2]
5248	ldrh	ip, [r4, #2]
5249	cmp	ip, r0
5250	it	cc
5251	strhcc	r0, [r5, r7, lsl #1]	@ movhi
5252.L685:
5253	ldrh	r8, [r5, r7, lsl #1]
5254	cmp	r3, r8
5255	itt	hi
5256	movhi	fp, r1
5257	movhi	r3, r8
5258	cmp	r8, #0
5259	bne	.L687
5260	ldrh	r0, [r10, r7, lsl #1]
5261	cbz	r0, .L687
5262	movs	r1, #1
5263	str	r2, [sp, #4]
5264	str	r3, [sp]
5265	bl	FtlFreeSysBlkQueueIn
5266	strh	r8, [r10, r7, lsl #1]	@ movhi
5267	ldr	r2, [sp, #4]
5268	ldrh	r1, [r4, #8]
5269	ldr	r3, [sp]
5270	subs	r1, r1, #1
5271	strh	r1, [r4, #8]	@ movhi
5272.L687:
5273	adds	r6, r6, #1
5274	b	.L684
5275.L693:
5276	.align	2
5277.L692:
5278	.word	.LANCHOR20
5279	.size	ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
5280	.section	.text.Ftl_write_map_blk_to_last_page,"ax",%progbits
5281	.align	1
5282	.global	Ftl_write_map_blk_to_last_page
5283	.syntax unified
5284	.thumb
5285	.thumb_func
5286	.fpu softvfp
5287	.type	Ftl_write_map_blk_to_last_page, %function
5288Ftl_write_map_blk_to_last_page:
5289	@ args = 0, pretend = 0, frame = 0
5290	@ frame_needed = 0, uses_anonymous_args = 0
5291	push	{r3, r4, r5, r6, r7, lr}
5292	movw	r2, #65535
5293	ldrh	r3, [r0]
5294	mov	r4, r0
5295	ldr	r5, [r0, #12]
5296	cmp	r3, r2
5297	bne	.L695
5298	ldrh	r3, [r0, #8]
5299	cbz	r3, .L696
5300	movw	r2, #641
5301	ldr	r1, .L704
5302	ldr	r0, .L704+4
5303	bl	printf
5304.L696:
5305	ldrh	r3, [r4, #8]
5306	adds	r3, r3, #1
5307	strh	r3, [r4, #8]	@ movhi
5308	bl	FtlFreeSysBlkQueueOut
5309	movs	r3, #0
5310	strh	r0, [r5]	@ movhi
5311	strh	r3, [r4, #2]	@ movhi
5312	strh	r3, [r4]	@ movhi
5313	ldr	r3, [r4, #28]
5314	adds	r3, r3, #1
5315	str	r3, [r4, #28]
5316.L697:
5317	movs	r0, #0
5318	pop	{r3, r4, r5, r6, r7, pc}
5319.L695:
5320	ldrh	r5, [r5, r3, lsl #1]
5321	movs	r1, #255
5322	ldrh	r3, [r0, #2]
5323	ldr	r2, .L704+8
5324	ldr	r7, .L704+12
5325	ldr	r6, [r0, #24]
5326	orr	r3, r3, r5, lsl #10
5327	ldr	r0, [r7]
5328	str	r3, [r2, #4]
5329	ldr	r3, .L704+16
5330	str	r0, [r2, #8]
5331	ldr	r3, [r3]
5332	str	r3, [r2, #12]
5333	ldr	r2, [r4, #28]
5334	str	r2, [r3, #4]
5335	movw	r2, #64245
5336	strh	r2, [r3, #8]	@ movhi
5337	ldrh	r2, [r4, #4]
5338	strh	r5, [r3, #2]	@ movhi
5339	strh	r2, [r3]	@ movhi
5340	ldr	r3, .L704+20
5341	ldrh	r2, [r3]
5342	lsls	r2, r2, #3
5343	bl	ftl_memset
5344	ldrh	ip, [r4, #6]
5345	movs	r3, #0
5346	ldr	r1, [r7]
5347	mov	r2, r3
5348.L698:
5349	uxth	r0, r3
5350	cmp	ip, r0
5351	bhi	.L700
5352	movs	r2, #1
5353	movs	r3, #0
5354	mov	r1, r2
5355	ldr	r0, .L704+8
5356	bl	FlashProgPages
5357	ldrh	r3, [r4, #2]
5358	mov	r0, r4
5359	adds	r3, r3, #1
5360	strh	r3, [r4, #2]	@ movhi
5361	bl	ftl_map_blk_gc
5362	b	.L697
5363.L700:
5364	ldr	r0, [r6, r3, lsl #2]
5365	cmp	r5, r0, lsr #10
5366	bne	.L699
5367	adds	r2, r2, #1
5368	uxth	r2, r2
5369	str	r3, [r1, r2, lsl #3]
5370	add	r7, r1, r2, lsl #3
5371	ldr	r0, [r6, r3, lsl #2]
5372	str	r0, [r7, #4]
5373.L699:
5374	adds	r3, r3, #1
5375	b	.L698
5376.L705:
5377	.align	2
5378.L704:
5379	.word	.LANCHOR141
5380	.word	.LC1
5381	.word	.LANCHOR106
5382	.word	.LANCHOR107
5383	.word	.LANCHOR108
5384	.word	.LANCHOR20
5385	.size	Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
5386	.section	.text.FtlMapWritePage,"ax",%progbits
5387	.align	1
5388	.global	FtlMapWritePage
5389	.syntax unified
5390	.thumb
5391	.thumb_func
5392	.fpu softvfp
5393	.type	FtlMapWritePage, %function
5394FtlMapWritePage:
5395	@ args = 0, pretend = 0, frame = 8
5396	@ frame_needed = 0, uses_anonymous_args = 0
5397	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
5398	mov	r4, r0
5399	ldr	r8, .L725+28
5400	mov	r7, r1
5401	movs	r6, #0
5402	str	r2, [sp, #4]
5403	mov	fp, r8
5404.L707:
5405	ldr	r2, .L725
5406	ldr	r3, [r2]
5407	adds	r3, r3, #1
5408	str	r3, [r2]
5409	ldrh	r3, [r8]
5410	ldrh	r2, [r4, #2]
5411	subs	r3, r3, #1
5412	cmp	r2, r3
5413	bge	.L708
5414	ldrh	r2, [r4]
5415	movw	r3, #65535
5416	cmp	r2, r3
5417	bne	.L709
5418.L708:
5419	mov	r0, r4
5420	bl	Ftl_write_map_blk_to_last_page
5421.L709:
5422	ldrh	r2, [r4]
5423	ldr	r3, [r4, #12]
5424	ldrh	r3, [r3, r2, lsl #1]
5425	cbnz	r3, .L710
5426	movw	r2, #699
5427	ldr	r1, .L725+4
5428	ldr	r0, .L725+8
5429	bl	printf
5430.L710:
5431	ldrh	r2, [r4]
5432	ldrh	r3, [r4, #10]
5433	cmp	r2, r3
5434	bcc	.L711
5435	mov	r2, #700
5436	ldr	r1, .L725+4
5437	ldr	r0, .L725+8
5438	bl	printf
5439.L711:
5440	ldrh	r2, [r4]
5441	movs	r1, #0
5442	ldr	r3, [r4, #12]
5443	ldr	r5, .L725+12
5444	ldrh	r10, [r3, r2, lsl #1]
5445	ldrh	r2, [r4, #2]
5446	ldr	r3, [sp, #4]
5447	orr	r2, r2, r10, lsl #10
5448	str	r3, [r5, #8]
5449	str	r2, [r5, #4]
5450	ldr	r2, .L725+16
5451	ldr	r0, [r2]
5452	movs	r2, #16
5453	str	r0, [r5, #12]
5454	bl	ftl_memset
5455	ldr	r2, [r5, #12]
5456	movs	r3, #1
5457	ldr	r1, [r4, #28]
5458	mov	r0, r5
5459	strh	r7, [r2, #8]	@ movhi
5460	str	r1, [r2, #4]
5461	ldrh	r1, [r4, #4]
5462	strh	r10, [r2, #2]	@ movhi
5463	strh	r1, [r2]	@ movhi
5464	mov	r2, r3
5465	mov	r1, r3
5466	bl	FlashProgPages
5467	ldrh	r2, [r4, #2]
5468	ldr	r3, [r5]
5469	adds	r2, r2, #1
5470	uxth	r2, r2
5471	adds	r3, r3, #1
5472	strh	r2, [r4, #2]	@ movhi
5473	bne	.L712
5474	ldr	r1, [r5, #4]
5475	adds	r6, r6, #1
5476	ldr	r0, .L725+20
5477	uxth	r6, r6
5478	bl	printf
5479	ldrh	r2, [r4, #2]
5480	cmp	r2, #2
5481	ittt	ls
5482	ldrhls	r2, [fp]
5483	addls	r2, r2, #-1
5484	strhls	r2, [r4, #2]	@ movhi
5485	cmp	r6, #3
5486	bls	.L714
5487	mov	r2, r6
5488	ldr	r1, [r5, #4]
5489	ldr	r0, .L725+24
5490	bl	printf
5491.L715:
5492	b	.L715
5493.L714:
5494	ldr	r3, [r4, #32]
5495	cmp	r3, #0
5496	beq	.L707
5497.L724:
5498	b	.L724
5499.L712:
5500	cmp	r2, #1
5501	beq	.L707
5502	ldr	r2, [r5, #4]
5503	movs	r0, #0
5504	ldr	r3, [r4, #24]
5505	str	r2, [r3, r7, lsl #2]
5506	add	sp, sp, #8
5507	@ sp needed
5508	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
5509.L726:
5510	.align	2
5511.L725:
5512	.word	.LANCHOR66
5513	.word	.LANCHOR142
5514	.word	.LC1
5515	.word	.LANCHOR106
5516	.word	.LANCHOR108
5517	.word	.LC89
5518	.word	.LC90
5519	.word	.LANCHOR20
5520	.size	FtlMapWritePage, .-FtlMapWritePage
5521	.section	.text.ftl_map_blk_gc,"ax",%progbits
5522	.align	1
5523	.global	ftl_map_blk_gc
5524	.syntax unified
5525	.thumb
5526	.thumb_func
5527	.fpu softvfp
5528	.type	ftl_map_blk_gc, %function
5529ftl_map_blk_gc:
5530	@ args = 0, pretend = 0, frame = 8
5531	@ frame_needed = 0, uses_anonymous_args = 0
5532	ldr	r3, [r0, #24]
5533	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
5534	mov	r4, r0
5535	ldr	r5, [r0, #12]
5536	str	r3, [sp]
5537	bl	ftl_free_no_use_map_blk
5538	ldrh	r3, [r4, #10]
5539	ldrh	r2, [r4, #8]
5540	subs	r3, r3, #4
5541	cmp	r2, r3
5542	blt	.L728
5543	uxth	r0, r0
5544	ldrh	r7, [r5, r0, lsl #1]
5545	cbz	r7, .L728
5546	ldr	r3, [r4, #32]
5547	cbnz	r3, .L728
5548	movs	r2, #1
5549	str	r2, [r4, #32]
5550	strh	r3, [r5, r0, lsl #1]	@ movhi
5551	ldrh	r3, [r4, #8]
5552	ldrh	r2, [r4, #2]
5553	subs	r3, r3, #1
5554	strh	r3, [r4, #8]	@ movhi
5555	ldr	r3, .L739
5556	ldrh	r3, [r3]
5557	cmp	r2, r3
5558	bcc	.L729
5559	mov	r0, r4
5560	bl	ftl_map_blk_alloc_new_blk
5561.L729:
5562	ldr	r5, .L739+4
5563	movs	r6, #0
5564	ldr	fp, .L739+20
5565.L730:
5566	ldrh	r3, [r4, #6]
5567	uxth	r10, r6
5568	cmp	r3, r10
5569	bhi	.L734
5570	movs	r1, #1
5571	mov	r0, r7
5572	bl	FtlFreeSysBlkQueueIn
5573	movs	r3, #0
5574	str	r3, [r4, #32]
5575.L728:
5576	ldr	r3, .L739
5577	ldrh	r2, [r4, #2]
5578	ldrh	r3, [r3]
5579	cmp	r2, r3
5580	bcc	.L735
5581	mov	r0, r4
5582	bl	ftl_map_blk_alloc_new_blk
5583.L735:
5584	movs	r0, #0
5585	add	sp, sp, #8
5586	@ sp needed
5587	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
5588.L734:
5589	ldr	r3, [sp]
5590	uxth	r8, r6
5591	ldr	r2, [r3, r8, lsl #2]
5592	cmp	r7, r2, lsr #10
5593	bne	.L731
5594	ldr	r3, [fp]
5595	str	r2, [r5, #4]
5596	movs	r2, #1
5597	mov	r1, r2
5598	ldr	r0, .L739+4
5599	str	r3, [r5, #8]
5600	ldr	r3, .L739+8
5601	ldr	r3, [r3]
5602	str	r3, [r5, #12]
5603	str	r3, [sp, #4]
5604	bl	FlashReadPages
5605	ldr	r3, [sp, #4]
5606	ldrh	r3, [r3, #8]
5607	cmp	r3, r10
5608	beq	.L732
5609	movw	r2, #613
5610	ldr	r1, .L739+12
5611	ldr	r0, .L739+16
5612	bl	printf
5613.L732:
5614	ldr	r3, [r5]
5615	adds	r3, r3, #1
5616	bne	.L733
5617	ldr	r2, [sp]
5618	movs	r3, #0
5619	str	r3, [r2, r8, lsl #2]
5620.L731:
5621	adds	r6, r6, #1
5622	b	.L730
5623.L733:
5624	ldr	r2, [r5, #8]
5625	mov	r1, r8
5626	mov	r0, r4
5627	bl	FtlMapWritePage
5628	b	.L731
5629.L740:
5630	.align	2
5631.L739:
5632	.word	.LANCHOR20
5633	.word	.LANCHOR106
5634	.word	.LANCHOR108
5635	.word	.LANCHOR143
5636	.word	.LC1
5637	.word	.LANCHOR123
5638	.size	ftl_map_blk_gc, .-ftl_map_blk_gc
5639	.section	.text.flush_l2p_region,"ax",%progbits
5640	.align	1
5641	.global	flush_l2p_region
5642	.syntax unified
5643	.thumb
5644	.thumb_func
5645	.fpu softvfp
5646	.type	flush_l2p_region, %function
5647flush_l2p_region:
5648	@ args = 0, pretend = 0, frame = 0
5649	@ frame_needed = 0, uses_anonymous_args = 0
5650	push	{r3, r4, r5, lr}
5651	movs	r4, #12
5652	ldr	r5, .L742
5653	muls	r4, r0, r4
5654	ldr	r0, .L742+4
5655	ldr	r3, [r5]
5656	adds	r2, r3, r4
5657	ldrh	r1, [r3, r4]
5658	ldr	r2, [r2, #8]
5659	bl	FtlMapWritePage
5660	ldr	r3, [r5]
5661	movs	r0, #0
5662	add	r4, r4, r3
5663	ldr	r3, [r4, #4]
5664	bic	r3, r3, #-2147483648
5665	str	r3, [r4, #4]
5666	pop	{r3, r4, r5, pc}
5667.L743:
5668	.align	2
5669.L742:
5670	.word	.LANCHOR55
5671	.word	.LANCHOR144
5672	.size	flush_l2p_region, .-flush_l2p_region
5673	.section	.text.log2phys,"ax",%progbits
5674	.align	1
5675	.global	log2phys
5676	.syntax unified
5677	.thumb
5678	.thumb_func
5679	.fpu softvfp
5680	.type	log2phys, %function
5681log2phys:
5682	@ args = 0, pretend = 0, frame = 0
5683	@ frame_needed = 0, uses_anonymous_args = 0
5684	ldr	r3, .L758
5685	push	{r4, r5, r6, r7, r8, r10, fp, lr}
5686	mov	r7, r1
5687	mov	r10, r2
5688	ldrh	r4, [r3]
5689	adds	r3, r4, #7
5690	movs	r4, #1
5691	lsr	r8, r0, r3
5692	lsls	r4, r4, r3
5693	ldr	r3, .L758+4
5694	subs	r4, r4, #1
5695	uxth	r8, r8
5696	ands	r4, r4, r0
5697	ldr	r3, [r3]
5698	uxth	r4, r4
5699	cmp	r0, r3
5700	bcc	.L745
5701	mov	r2, #808
5702	ldr	r1, .L758+8
5703	ldr	r0, .L758+12
5704	bl	printf
5705.L745:
5706	ldr	r6, .L758+16
5707	mov	fp, #12
5708	ldr	r3, .L758+20
5709	ldr	r1, [r6]
5710	ldrh	r2, [r3]
5711	movs	r3, #0
5712.L746:
5713	uxth	r5, r3
5714	cmp	r5, r2
5715	bcc	.L751
5716	bl	select_l2p_ram_region
5717	mul	fp, fp, r0
5718	ldr	r3, [r6]
5719	mov	r5, r0
5720	ldrh	r1, [r3, fp]
5721	add	r2, r3, fp
5722	movw	r3, #65535
5723	cmp	r1, r3
5724	beq	.L752
5725	ldr	r3, [r2, #4]
5726	cmp	r3, #0
5727	bge	.L752
5728	bl	flush_l2p_region
5729.L752:
5730	mov	r1, r5
5731	mov	r0, r8
5732	bl	load_l2p_region
5733	b	.L747
5734.L751:
5735	adds	r3, r3, #1
5736	mla	r0, fp, r3, r1
5737	ldrh	r0, [r0, #-12]
5738	cmp	r0, r8
5739	bne	.L746
5740.L747:
5741	ldr	r2, [r6]
5742	movs	r3, #12
5743	mla	r3, r3, r5, r2
5744	cmp	r10, #0
5745	bne	.L748
5746	ldr	r3, [r3, #8]
5747	ldr	r3, [r3, r4, lsl #2]
5748	str	r3, [r7]
5749.L749:
5750	ldr	r2, [r6]
5751	movs	r3, #12
5752	mla	r5, r3, r5, r2
5753	ldr	r3, [r5, #4]
5754	adds	r2, r3, #1
5755	beq	.L755
5756	adds	r3, r3, #1
5757	str	r3, [r5, #4]
5758.L755:
5759	movs	r0, #0
5760	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
5761.L748:
5762	ldr	r1, [r7]
5763	ldr	r2, [r3, #8]
5764	str	r1, [r2, r4, lsl #2]
5765	ldr	r2, [r3, #4]
5766	orr	r2, r2, #-2147483648
5767	str	r2, [r3, #4]
5768	ldr	r3, .L758+24
5769	strh	r8, [r3]	@ movhi
5770	b	.L749
5771.L759:
5772	.align	2
5773.L758:
5774	.word	.LANCHOR22
5775	.word	.LANCHOR61
5776	.word	.LANCHOR145
5777	.word	.LC1
5778	.word	.LANCHOR55
5779	.word	.LANCHOR33
5780	.word	.LANCHOR56
5781	.size	log2phys, .-log2phys
5782	.section	.text.FtlReUsePrevPpa,"ax",%progbits
5783	.align	1
5784	.global	FtlReUsePrevPpa
5785	.syntax unified
5786	.thumb
5787	.thumb_func
5788	.fpu softvfp
5789	.type	FtlReUsePrevPpa, %function
5790FtlReUsePrevPpa:
5791	@ args = 0, pretend = 0, frame = 8
5792	@ frame_needed = 0, uses_anonymous_args = 0
5793	push	{r0, r1, r4, r5, r6, r7, r8, lr}
5794	mov	r6, r0
5795	ldr	r5, .L770
5796	ubfx	r0, r1, #10, #16
5797	str	r1, [sp, #4]
5798	bl	P2V_block_in_plane
5799	ldr	r2, [r5]
5800	mov	r7, r0
5801	ldrh	r3, [r2, r0, lsl #1]
5802	cbnz	r3, .L761
5803	ldr	r2, .L770+4
5804	ldr	r4, [r2]
5805	cmp	r4, #0
5806	beq	.L762
5807	ldr	r2, .L770+8
5808	movw	lr, #65535
5809	ldr	ip, .L770+24
5810	ldr	r0, .L770+12
5811	ldr	r2, [r2]
5812	ldrh	r1, [r0]
5813	mov	r8, r0
5814	subs	r4, r4, r2
5815	asrs	r4, r4, #1
5816	mul	r4, ip, r4
5817	mov	ip, #6
5818	uxth	r4, r4
5819.L763:
5820	uxth	r0, r3
5821	cmp	r1, r0
5822	bls	.L762
5823	cmp	r4, r7
5824	bne	.L764
5825	mov	r1, r4
5826	ldr	r0, .L770+4
5827	bl	List_remove_node
5828	ldrh	r3, [r8]
5829	cbnz	r3, .L765
5830	mov	r2, #1688
5831	ldr	r1, .L770+16
5832	ldr	r0, .L770+20
5833	bl	printf
5834.L765:
5835	ldrh	r3, [r8]
5836	mov	r0, r4
5837	subs	r3, r3, #1
5838	strh	r3, [r8]	@ movhi
5839	bl	INSERT_DATA_LIST
5840	ldr	r2, [r5]
5841	ldrh	r3, [r2, r7, lsl #1]
5842.L761:
5843	adds	r3, r3, #1
5844	strh	r3, [r2, r7, lsl #1]	@ movhi
5845	b	.L762
5846.L764:
5847	mul	r4, ip, r4
5848	adds	r3, r3, #1
5849	ldrh	r4, [r2, r4]
5850	cmp	r4, lr
5851	bne	.L763
5852.L762:
5853	movs	r2, #1
5854	add	r1, sp, #4
5855	mov	r0, r6
5856	bl	log2phys
5857	add	sp, sp, #8
5858	@ sp needed
5859	pop	{r4, r5, r6, r7, r8, pc}
5860.L771:
5861	.align	2
5862.L770:
5863	.word	.LANCHOR42
5864	.word	.LANCHOR47
5865	.word	.LANCHOR40
5866	.word	.LANCHOR48
5867	.word	.LANCHOR146
5868	.word	.LC1
5869	.word	-1431655765
5870	.size	FtlReUsePrevPpa, .-FtlReUsePrevPpa
5871	.section	.text.ftl_scan_all_data,"ax",%progbits
5872	.align	1
5873	.global	ftl_scan_all_data
5874	.syntax unified
5875	.thumb
5876	.thumb_func
5877	.fpu softvfp
5878	.type	ftl_scan_all_data, %function
5879ftl_scan_all_data:
5880	@ args = 0, pretend = 0, frame = 8
5881	@ frame_needed = 0, uses_anonymous_args = 0
5882	push	{r4, r5, r6, r7, r8, lr}
5883	movs	r5, #0
5884	ldr	r7, .L786
5885	sub	sp, sp, #32
5886	movs	r1, #0
5887	ldr	r8, .L786+24
5888	ldr	r0, .L786+4
5889	bl	printf
5890.L773:
5891	ldr	r3, [r7]
5892	cmp	r5, r3
5893	bcc	.L779
5894	add	sp, sp, #32
5895	@ sp needed
5896	pop	{r4, r5, r6, r7, r8, pc}
5897.L779:
5898	movs	r2, #0
5899	add	r1, sp, #28
5900	mov	r0, r5
5901	bl	log2phys
5902	ubfx	r3, r5, #0, #11
5903	cbnz	r3, .L774
5904	ldr	r2, [sp, #28]
5905	mov	r1, r5
5906	mov	r0, r8
5907	bl	printf
5908.L774:
5909	ldr	r3, [sp, #28]
5910	adds	r2, r3, #1
5911	beq	.L776
5912	ldr	r4, .L786+8
5913	movs	r2, #0
5914	movs	r1, #1
5915	str	r3, [r4, #4]
5916	mov	r0, r4
5917	ldr	r3, .L786+12
5918	str	r5, [r4, #16]
5919	str	r2, [r4]
5920	ldr	r3, [r3]
5921	str	r3, [r4, #8]
5922	ldr	r3, .L786+16
5923	ldr	r6, [r3]
5924	str	r6, [r4, #12]
5925	bl	FlashReadPages
5926	ldr	r3, [r4]
5927	cmp	r3, #256
5928	beq	.L777
5929	adds	r3, r3, #1
5930	beq	.L777
5931	ldr	r3, [r6, #8]
5932	cmp	r5, r3
5933	beq	.L776
5934.L777:
5935	ldr	r2, [r4, #8]
5936	ldr	r3, [r4, #12]
5937	ldr	r0, .L786+20
5938	ldr	r1, [r2, #4]
5939	str	r1, [sp, #16]
5940	mov	r1, r5
5941	ldr	r2, [r2]
5942	str	r2, [sp, #12]
5943	ldr	r2, [r3, #12]
5944	str	r2, [sp, #8]
5945	ldr	r2, [r3, #8]
5946	str	r2, [sp, #4]
5947	ldr	r2, [r3, #4]
5948	str	r2, [sp]
5949	ldr	r2, [r4, #4]
5950	ldr	r3, [r3]
5951	bl	printf
5952.L776:
5953	adds	r5, r5, #1
5954	b	.L773
5955.L787:
5956	.align	2
5957.L786:
5958	.word	.LANCHOR61
5959	.word	.LC91
5960	.word	.LANCHOR106
5961	.word	.LANCHOR107
5962	.word	.LANCHOR108
5963	.word	.LC93
5964	.word	.LC92
5965	.size	ftl_scan_all_data, .-ftl_scan_all_data
5966	.section	.text.FtlReadRefresh,"ax",%progbits
5967	.align	1
5968	.global	FtlReadRefresh
5969	.syntax unified
5970	.thumb
5971	.thumb_func
5972	.fpu softvfp
5973	.type	FtlReadRefresh, %function
5974FtlReadRefresh:
5975	@ args = 0, pretend = 0, frame = 88
5976	@ frame_needed = 0, uses_anonymous_args = 0
5977	ldr	r3, .L801
5978	push	{r4, r5, r6, lr}
5979	sub	sp, sp, #88
5980	mov	r4, r3
5981	ldr	r0, [r3, #80]
5982	cmp	r0, #0
5983	beq	.L789
5984	ldr	r6, .L801+4
5985	ldr	r0, [r3, #84]
5986	ldr	r1, [r6]
5987	cmp	r0, r1
5988	bcs	.L790
5989	mov	r5, #2048
5990.L795:
5991	ldr	r0, [r4, #84]
5992	ldr	r3, [r6]
5993	cmp	r0, r3
5994	bcs	.L792
5995	movs	r2, #0
5996	mov	r1, sp
5997	bl	log2phys
5998	ldr	r2, [sp]
5999	ldr	r3, [r4, #84]
6000	adds	r1, r2, #1
6001	add	r3, r3, #1
6002	str	r3, [r4, #84]
6003	beq	.L793
6004	str	r3, [sp, #20]
6005	add	r0, sp, #88
6006	ldr	r3, .L801+8
6007	movs	r1, #1
6008	str	r2, [sp, #8]
6009	movs	r2, #0
6010	str	r2, [r0, #-84]!
6011	str	r3, [sp, #12]
6012	add	r3, sp, #24
6013	str	r3, [sp, #16]
6014	bl	FlashReadPages
6015	ldr	r3, [sp, #4]
6016	cmp	r3, #256
6017	bne	.L792
6018	ldr	r0, [sp]
6019	ubfx	r0, r0, #10, #16
6020	bl	P2V_block_in_plane
6021	bl	FtlGcRefreshBlock
6022.L792:
6023	mov	r0, #-1
6024.L788:
6025	add	sp, sp, #88
6026	@ sp needed
6027	pop	{r4, r5, r6, pc}
6028.L793:
6029	subs	r5, r5, #1
6030	bne	.L795
6031	b	.L792
6032.L790:
6033	ldr	r2, .L801+12
6034	movs	r0, #0
6035	str	r0, [r3, #80]
6036	str	r0, [r3, #84]
6037	ldr	r2, [r2]
6038	str	r2, [r3, #76]
6039	b	.L788
6040.L789:
6041	ldr	r1, [r3, #76]
6042	ldr	r3, .L801+12
6043	ldr	r5, [r3]
6044	add	r3, r5, #1048576
6045	cmp	r1, r3
6046	bhi	.L798
6047	ldr	r3, .L801+16
6048	ldr	r2, [r3]
6049	mov	r3, #33554432
6050	lsrs	r2, r2, #10
6051	asrs	r3, r3, r2
6052	add	r3, r3, r1
6053	cmp	r5, r3
6054	bhi	.L798
6055	ldr	r3, .L801+20
6056	ldrb	r3, [r3, #28]	@ zero_extendqisi2
6057	cmp	r3, #0
6058	bne	.L788
6059.L798:
6060	movs	r3, #1
6061	movs	r0, #0
6062	str	r3, [r4, #80]
6063	str	r0, [r4, #84]
6064	str	r5, [r4, #76]
6065	b	.L788
6066.L802:
6067	.align	2
6068.L801:
6069	.word	.LANCHOR81
6070	.word	.LANCHOR61
6071	.word	ftl_temp_buf
6072	.word	.LANCHOR62
6073	.word	.LANCHOR76
6074	.word	.LANCHOR39
6075	.size	FtlReadRefresh, .-FtlReadRefresh
6076	.section	.text.FtlMapBlkWriteDump_data,"ax",%progbits
6077	.align	1
6078	.global	FtlMapBlkWriteDump_data
6079	.syntax unified
6080	.thumb
6081	.thumb_func
6082	.fpu softvfp
6083	.type	FtlMapBlkWriteDump_data, %function
6084FtlMapBlkWriteDump_data:
6085	@ args = 0, pretend = 0, frame = 0
6086	@ frame_needed = 0, uses_anonymous_args = 0
6087	ldr	r3, [r0, #36]
6088	push	{r4, r5, r6, lr}
6089	mov	r6, r0
6090	cbz	r3, .L803
6091	ldrh	r5, [r0, #6]
6092	movs	r3, #0
6093	ldr	r2, [r0, #24]
6094	str	r3, [r0, #36]
6095	subs	r5, r5, #1
6096	ldr	r3, .L807
6097	ldr	r1, .L807+4
6098	uxth	r5, r5
6099	ldr	r4, .L807+8
6100	ldr	r2, [r2, r5, lsl #2]
6101	ldr	r0, [r3]
6102	ldr	r1, [r1]
6103	str	r2, [r4, #4]
6104	str	r0, [r4, #8]
6105	str	r1, [r4, #12]
6106	cbz	r2, .L805
6107	movs	r2, #1
6108	mov	r0, r4
6109	mov	r1, r2
6110	bl	FlashReadPages
6111.L806:
6112	ldr	r2, [r4, #8]
6113	mov	r1, r5
6114	mov	r0, r6
6115	pop	{r4, r5, r6, lr}
6116	b	FtlMapWritePage
6117.L805:
6118	ldr	r3, .L807+12
6119	movs	r1, #255
6120	ldrh	r2, [r3]
6121	bl	ftl_memset
6122	b	.L806
6123.L803:
6124	pop	{r4, r5, r6, pc}
6125.L808:
6126	.align	2
6127.L807:
6128	.word	.LANCHOR123
6129	.word	.LANCHOR108
6130	.word	.LANCHOR106
6131	.word	.LANCHOR23
6132	.size	FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data
6133	.section	.text.FtlScanSysBlk,"ax",%progbits
6134	.align	1
6135	.global	FtlScanSysBlk
6136	.syntax unified
6137	.thumb
6138	.thumb_func
6139	.fpu softvfp
6140	.type	FtlScanSysBlk, %function
6141FtlScanSysBlk:
6142	@ args = 0, pretend = 0, frame = 32
6143	@ frame_needed = 0, uses_anonymous_args = 0
6144	push	{r4, r5, r6, r7, r8, r10, fp, lr}
6145	movs	r4, #0
6146	ldr	r5, .L889
6147	sub	sp, sp, #32
6148	mov	r1, r4
6149	ldr	r3, .L889+4
6150	ldr	r2, [r5]
6151	ldr	r6, .L889+8
6152	strh	r4, [r3]	@ movhi
6153	ldr	r3, .L889+12
6154	lsls	r2, r2, #2
6155	strh	r4, [r6]	@ movhi
6156	ldr	r7, .L889+16
6157	ldr	r0, [r3]
6158	bl	ftl_memset
6159	ldr	r2, [r5]
6160	mov	r1, r4
6161	ldr	r3, .L889+20
6162	lsls	r2, r2, #1
6163	ldr	r0, [r3]
6164	bl	ftl_memset
6165	ldrh	r2, [r7]
6166	mov	r1, r4
6167	ldr	r3, .L889+24
6168	lsls	r2, r2, #2
6169	ldr	r0, [r3]
6170	bl	ftl_memset
6171	ldrh	r2, [r7]
6172	mov	r1, r4
6173	ldr	r3, .L889+28
6174	lsls	r2, r2, #1
6175	ldr	r0, [r3]
6176	bl	ftl_memset
6177	movs	r2, #12
6178	movs	r1, #255
6179	ldr	r0, .L889+32
6180	bl	ftl_memset
6181	ldr	r3, .L889+36
6182	str	r6, [sp, #12]
6183	str	r5, [sp, #16]
6184	ldrh	r3, [r3]
6185	str	r3, [sp, #4]
6186.L810:
6187	ldr	r3, .L889+40
6188	ldr	r2, [sp, #4]
6189	ldrh	r3, [r3]
6190	cmp	r3, r2
6191	bls	.L851
6192	ldr	r3, .L889+44
6193	movs	r5, #0
6194	ldr	r1, .L889+48
6195	mov	fp, r5
6196	movs	r7, #20
6197	ldrh	r8, [r3]
6198	ldr	r3, .L889+52
6199	ldr	r2, [r1]
6200	ldr	r1, .L889+56
6201	ldr	r6, [r3]
6202	ldr	r3, .L889+60
6203	str	r2, [sp, #8]
6204	ldrh	r10, [r1]
6205	ldr	r3, [r3]
6206	ldr	r2, .L889+64
6207	b	.L852
6208.L812:
6209	ldrb	r0, [r2, r5]	@ zero_extendqisi2
6210	ldr	r1, [sp, #4]
6211	str	r3, [sp, #28]
6212	str	r2, [sp, #24]
6213	bl	V2P_block
6214	str	r0, [sp, #20]
6215	bl	FtlBbmIsBadBlock
6216	ldr	r2, [sp, #24]
6217	ldr	r3, [sp, #28]
6218	cbnz	r0, .L811
6219	ldr	r1, [sp, #20]
6220	mla	r0, r7, fp, r6
6221	ldr	r4, [sp, #8]
6222	lsls	r1, r1, #10
6223	str	r3, [r0, #8]
6224	str	r1, [r0, #4]
6225	mul	r1, r10, fp
6226	bic	r1, r1, #3
6227	add	r1, r1, r4
6228	str	r1, [r0, #12]
6229	add	r1, fp, #1
6230	uxth	fp, r1
6231.L811:
6232	adds	r5, r5, #1
6233.L852:
6234	uxth	r1, r5
6235	cmp	r8, r1
6236	bhi	.L812
6237	cmp	fp, #0
6238	bne	.L813
6239.L850:
6240	ldr	r3, [sp, #4]
6241	adds	r3, r3, #1
6242	uxth	r3, r3
6243	str	r3, [sp, #4]
6244	b	.L810
6245.L813:
6246	movs	r7, #0
6247	movs	r2, #1
6248	mov	r1, fp
6249	mov	r0, r6
6250	bl	FlashReadPages
6251.L814:
6252	uxth	r3, r7
6253	cmp	fp, r3
6254	bls	.L850
6255	ldr	r3, .L889+52
6256	mov	r8, #20
6257	mul	r8, r8, r7
6258	ldr	r3, [r3]
6259	add	r2, r3, r8
6260	ldr	r3, [r3, r8]
6261	ldr	r5, [r2, #4]
6262	ldr	r6, [r2, #12]
6263	adds	r3, r3, #1
6264	ubfx	r5, r5, #10, #16
6265	bne	.L817
6266	mov	r10, #16
6267.L819:
6268	ldr	r3, .L889+52
6269	movs	r2, #1
6270	mov	r1, r2
6271	ldr	r0, [r3]
6272	add	r0, r0, r8
6273	ldr	r3, [r0, #4]
6274	adds	r3, r3, #1
6275	str	r3, [r0, #4]
6276	bl	FlashReadPages
6277	ldrh	r2, [r6]
6278	movw	r3, #65535
6279	cmp	r2, r3
6280	ldr	r3, .L889+52
6281	ldr	r3, [r3]
6282	bne	.L816
6283	mov	r2, #-1
6284	str	r2, [r3, r8]
6285	ldr	r3, .L889+52
6286	ldr	r3, [r3]
6287	ldr	r3, [r3, r8]
6288	cmp	r3, r2
6289	bne	.L817
6290.L818:
6291	movs	r1, #0
6292	mov	r0, r5
6293	bl	FtlFreeSysBlkQueueIn
6294	b	.L822
6295.L816:
6296	ldr	r3, [r3, r8]
6297	adds	r3, r3, #1
6298	bne	.L817
6299	add	r10, r10, #-1
6300	uxth	r10, r10
6301	cmp	r10, #0
6302	bne	.L819
6303	b	.L818
6304.L817:
6305	ldr	r3, .L889+68
6306	ldr	r2, [r3]
6307	ldr	r3, [r6, #4]
6308	adds	r1, r2, #1
6309	beq	.L820
6310	cmp	r2, r3
6311	bhi	.L821
6312.L820:
6313	adds	r2, r3, #1
6314	ittt	ne
6315	ldrne	r1, .L889+68
6316	addne	r2, r3, #1
6317	strne	r2, [r1]
6318.L821:
6319	ldrh	r2, [r6]
6320	movw	r1, #61604
6321	cmp	r2, r1
6322	beq	.L823
6323	bhi	.L824
6324	movw	r3, #61574
6325	cmp	r2, r3
6326	beq	.L825
6327.L822:
6328	adds	r7, r7, #1
6329	b	.L814
6330.L824:
6331	movw	r3, #61634
6332	cmp	r2, r3
6333	beq	.L826
6334	movw	r3, #65535
6335	cmp	r2, r3
6336	beq	.L818
6337	b	.L822
6338.L826:
6339	ldr	r3, .L889+8
6340	ldrh	r2, [r3]
6341	ldr	r3, .L889
6342	ldr	r3, [r3]
6343	cmp	r2, r3
6344	bls	.L828
6345	movw	r2, #1211
6346	ldr	r1, .L889+72
6347	ldr	r0, .L889+76
6348	bl	printf
6349.L828:
6350	ldr	r3, [sp, #16]
6351	ldr	r2, [sp, #12]
6352	ldr	r1, [r3]
6353	ldrh	r0, [r2]
6354	ldr	r2, .L889+12
6355	uxth	r10, r1
6356	ldr	ip, [r2]
6357	add	r3, r10, #-1
6358	sub	r10, r10, r0
6359	add	r10, r10, #-1
6360	sxth	r3, r3
6361	sxth	r10, r10
6362.L829:
6363	cmp	r3, r10
6364	bgt	.L835
6365	cmp	r3, #0
6366	bge	.L867
6367	b	.L822
6368.L835:
6369	ldr	r2, [ip, r3, lsl #2]
6370	add	r8, ip, r3, lsl #2
6371	ldr	r4, [r6, #4]
6372	cmp	r4, r2
6373	bls	.L830
6374	ldr	r2, [ip]
6375	cbnz	r2, .L831
6376	cmp	r1, r0
6377	ittt	ne
6378	ldrne	r2, .L889+8
6379	addne	r0, r0, #1
6380	strhne	r0, [r2]	@ movhi
6381.L831:
6382	ldr	r2, .L889+20
6383	uxth	r10, r3
6384	ldr	r0, [r2]
6385	movs	r2, #0
6386.L832:
6387	uxth	lr, r2
6388	sxth	r1, r2
6389	cmp	r10, lr
6390	bhi	.L833
6391	ldr	r2, [r6, #4]
6392	cmp	r3, #0
6393	str	r2, [r8]
6394	strh	r5, [r0, r3, lsl #1]	@ movhi
6395	blt	.L822
6396	ldr	r2, .L889+8
6397	ldrh	r0, [r2]
6398	ldr	r2, .L889
6399	ldr	r2, [r2]
6400	subs	r2, r2, r0
6401	subs	r2, r2, #1
6402	sxth	r2, r2
6403	cmp	r3, r2
6404	bgt	.L822
6405.L867:
6406	ldr	r2, .L889+8
6407	adds	r0, r0, #1
6408	strh	r0, [r2]	@ movhi
6409	ldr	r2, [r6, #4]
6410	str	r2, [ip, r3, lsl #2]
6411	ldr	r2, .L889+20
6412.L887:
6413	ldr	r2, [r2]
6414	strh	r5, [r2, r3, lsl #1]	@ movhi
6415	b	.L822
6416.L833:
6417	add	lr, ip, r1, lsl #2
6418	adds	r2, r2, #1
6419	ldr	r4, [lr, #4]
6420	add	lr, r0, r1, lsl #1
6421	ldrh	lr, [lr, #2]
6422	str	r4, [ip, r1, lsl #2]
6423	strh	lr, [r0, r1, lsl #1]	@ movhi
6424	b	.L832
6425.L830:
6426	subs	r3, r3, #1
6427	sxth	r3, r3
6428	b	.L829
6429.L890:
6430	.align	2
6431.L889:
6432	.word	.LANCHOR30
6433	.word	.LANCHOR35
6434	.word	.LANCHOR147
6435	.word	.LANCHOR135
6436	.word	.LANCHOR27
6437	.word	.LANCHOR129
6438	.word	.LANCHOR132
6439	.word	.LANCHOR36
6440	.word	.LANCHOR79
6441	.word	.LANCHOR5
6442	.word	.LANCHOR6
6443	.word	.LANCHOR3
6444	.word	.LANCHOR92
6445	.word	.LANCHOR120
6446	.word	.LANCHOR24
6447	.word	.LANCHOR91
6448	.word	.LANCHOR13
6449	.word	.LANCHOR70
6450	.word	.LANCHOR148
6451	.word	.LC1
6452.L825:
6453	ldr	r8, .L891+12
6454	ldr	r10, .L891+20
6455	ldrh	r2, [r8]
6456	ldrh	r3, [r10]
6457	cmp	r2, r3
6458	bls	.L838
6459	movw	r2, #1252
6460	ldr	r1, .L891
6461	ldr	r0, .L891+4
6462	bl	printf
6463.L838:
6464	ldr	r2, .L891+8
6465	ldrh	lr, [r10]
6466	ldrh	ip, [r8]
6467	ldr	r0, [r2]
6468	add	r10, lr, #-1
6469	sxth	r3, r10
6470	sub	r10, r10, ip
6471.L839:
6472	cmp	r3, r10
6473	ble	.L844
6474	ldr	r1, [r6, #4]
6475	add	r8, r0, r3, lsl #2
6476	ldr	r2, [r0, r3, lsl #2]
6477	cmp	r1, r2
6478	bls	.L840
6479	ldr	r2, [r0]
6480	cbnz	r2, .L841
6481	cmp	lr, ip
6482	ittt	ne
6483	ldrne	r2, .L891+12
6484	addne	ip, ip, #1
6485	strhne	ip, [r2]	@ movhi
6486.L841:
6487	ldr	r2, .L891+16
6488	uxth	r10, r3
6489	ldr	ip, [r2]
6490	movs	r2, #0
6491.L842:
6492	uxth	lr, r2
6493	sxth	r1, r2
6494	cmp	r10, lr
6495	bhi	.L843
6496	ldr	r2, [r6, #4]
6497	str	r2, [r8]
6498	strh	r5, [ip, r3, lsl #1]	@ movhi
6499.L844:
6500	cmp	r3, #0
6501	blt	.L822
6502	ldr	r2, .L891+20
6503	ldr	ip, .L891+12
6504	ldrh	r2, [r2]
6505	ldrh	r1, [ip]
6506	subs	r2, r2, #1
6507	subs	r2, r2, r1
6508	sxth	r2, r2
6509	cmp	r3, r2
6510	bgt	.L822
6511	ldr	r2, [r6, #4]
6512	adds	r1, r1, #1
6513	strh	r1, [ip]	@ movhi
6514	str	r2, [r0, r3, lsl #2]
6515	ldr	r2, .L891+16
6516	b	.L887
6517.L843:
6518	add	lr, r0, r1, lsl #2
6519	adds	r2, r2, #1
6520	ldr	r4, [lr, #4]
6521	add	lr, ip, r1, lsl #1
6522	ldrh	lr, [lr, #2]
6523	str	r4, [r0, r1, lsl #2]
6524	strh	lr, [ip, r1, lsl #1]	@ movhi
6525	b	.L842
6526.L840:
6527	subs	r3, r3, #1
6528	sxth	r3, r3
6529	b	.L839
6530.L823:
6531	ldr	r8, .L891+40
6532	movw	r2, #65535
6533	ldrh	r1, [r8]
6534	cmp	r1, r2
6535	bne	.L846
6536.L888:
6537	strh	r5, [r8]	@ movhi
6538	str	r3, [r8, #8]
6539	b	.L822
6540.L846:
6541	ldrh	r0, [r8, #4]
6542	cmp	r0, r2
6543	beq	.L847
6544	movs	r1, #1
6545	bl	FtlFreeSysBlkQueueIn
6546.L847:
6547	ldr	r3, [r6, #4]
6548	ldr	r2, [r8, #8]
6549	cmp	r2, r3
6550	bcs	.L848
6551	ldrh	r2, [r8]
6552	strh	r2, [r8, #4]	@ movhi
6553	b	.L888
6554.L848:
6555	strh	r5, [r8, #4]	@ movhi
6556	b	.L822
6557.L851:
6558	ldr	r3, .L891+24
6559	ldr	r2, [r3]
6560	ldrh	r3, [r2]
6561	cbz	r3, .L853
6562.L856:
6563	ldr	r3, .L891+16
6564	ldr	r4, [r3]
6565	ldrh	r2, [r4]
6566	cmp	r2, #0
6567	beq	.L854
6568.L855:
6569	ldr	r3, .L891+28
6570	ldrh	r2, [r3]
6571	ldr	r3, .L891+32
6572	ldr	r3, [r3]
6573	cmp	r2, r3
6574	bls	.L886
6575	movw	r2, #1377
6576	ldr	r1, .L891
6577	ldr	r0, .L891+4
6578	bl	printf
6579.L886:
6580	movs	r0, #0
6581	add	sp, sp, #32
6582	@ sp needed
6583	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
6584.L853:
6585	ldr	r1, .L891+28
6586	ldrh	r1, [r1]
6587	cmp	r1, #0
6588	beq	.L856
6589	ldr	r5, .L891+32
6590	ldr	r0, [r5]
6591.L857:
6592	sxth	r1, r3
6593	cmp	r1, r0
6594	bcs	.L856
6595	ldrh	r4, [r2, r1, lsl #1]
6596	adds	r3, r3, #1
6597	cmp	r4, #0
6598	beq	.L857
6599	ldr	r3, .L891+36
6600	movs	r6, #0
6601	ldr	r0, [r3]
6602	mov	r3, r1
6603.L858:
6604	ldr	r4, [r5]
6605	cmp	r3, r4
6606	bcs	.L856
6607	ldrh	r7, [r2, r3, lsl #1]
6608	subs	r4, r3, r1
6609	strh	r7, [r2, r4, lsl #1]	@ movhi
6610	ldr	r7, [r0, r3, lsl #2]
6611	str	r7, [r0, r4, lsl #2]
6612	strh	r6, [r2, r3, lsl #1]	@ movhi
6613	adds	r3, r3, #1
6614	sxth	r3, r3
6615	b	.L858
6616.L854:
6617	ldr	r3, .L891+12
6618	ldrh	r3, [r3]
6619	cmp	r3, #0
6620	beq	.L855
6621	ldr	r5, .L891+20
6622	ldrh	r1, [r5]
6623.L863:
6624	sxth	r3, r2
6625	cmp	r3, r1
6626	mov	r6, r3
6627	bge	.L855
6628	ldrh	r0, [r4, r3, lsl #1]
6629	adds	r2, r2, #1
6630	cmp	r0, #0
6631	beq	.L863
6632	ldr	r2, .L891+8
6633	movs	r0, #0
6634	ldr	r2, [r2]
6635.L864:
6636	ldrh	r1, [r5]
6637	cmp	r3, r1
6638	bge	.L855
6639	ldrh	r7, [r4, r3, lsl #1]
6640	subs	r1, r3, r6
6641	strh	r7, [r4, r1, lsl #1]	@ movhi
6642	ldr	r7, [r2, r3, lsl #2]
6643	str	r7, [r2, r1, lsl #2]
6644	adds	r1, r3, #1
6645	strh	r0, [r4, r3, lsl #1]	@ movhi
6646	sxth	r3, r1
6647	b	.L864
6648.L892:
6649	.align	2
6650.L891:
6651	.word	.LANCHOR148
6652	.word	.LC1
6653	.word	.LANCHOR132
6654	.word	.LANCHOR35
6655	.word	.LANCHOR36
6656	.word	.LANCHOR27
6657	.word	.LANCHOR129
6658	.word	.LANCHOR147
6659	.word	.LANCHOR30
6660	.word	.LANCHOR135
6661	.word	.LANCHOR79
6662	.size	FtlScanSysBlk, .-FtlScanSysBlk
6663	.section	.text.FtlMapTblRecovery,"ax",%progbits
6664	.align	1
6665	.global	FtlMapTblRecovery
6666	.syntax unified
6667	.thumb
6668	.thumb_func
6669	.fpu softvfp
6670	.type	FtlMapTblRecovery, %function
6671FtlMapTblRecovery:
6672	@ args = 0, pretend = 0, frame = 24
6673	@ frame_needed = 0, uses_anonymous_args = 0
6674	ldr	r3, [r0, #16]
6675	movs	r1, #0
6676	push	{r4, r5, r6, r7, r8, r10, fp, lr}
6677	sub	sp, sp, #24
6678	ldrh	fp, [r0, #6]
6679	mov	r4, r0
6680	movs	r6, #0
6681	ldr	r8, [r0, #24]
6682	str	r3, [sp, #12]
6683	ldrh	r3, [r0, #8]
6684	lsl	r2, fp, #2
6685	ldr	r10, [r0, #12]
6686	mov	r0, r8
6687	ldr	r5, .L920
6688	str	r3, [sp, #4]
6689	bl	ftl_memset
6690	ldr	r3, .L920+4
6691	str	r6, [r4, #32]
6692	str	r6, [r4, #28]
6693	ldr	r2, [r3]
6694	str	r3, [sp, #8]
6695	str	r2, [r5, #8]
6696	ldr	r2, .L920+8
6697	ldr	r7, [r2]
6698	movw	r2, #65535
6699	str	r7, [r5, #12]
6700	strh	r2, [r4]	@ movhi
6701	strh	r2, [r4, #2]	@ movhi
6702	movs	r2, #1
6703	str	r2, [r4, #36]
6704.L894:
6705	ldr	r2, [sp, #4]
6706	sxth	r3, r6
6707	cmp	r3, r2
6708	bge	.L911
6709	ldr	r2, [sp, #4]
6710	subs	r2, r2, #1
6711	cmp	r3, r2
6712	lsl	r2, r3, #1
6713	bne	.L895
6714	ldrh	r0, [r10, r3, lsl #1]
6715	movs	r1, #1
6716	add	r5, r10, r2
6717	str	r3, [sp, #4]
6718	bl	FtlGetLastWrittenPage
6719	ldr	r3, [sp, #12]
6720	sxth	r10, r0
6721	strh	r6, [r4]	@ movhi
6722	movs	r6, #0
6723	adds	r0, r0, #1
6724	mov	r2, r3
6725	ldr	r3, [sp, #4]
6726	strh	r0, [r4, #2]	@ movhi
6727	ldr	r3, [r2, r3, lsl #2]
6728	str	r3, [r4, #28]
6729	ldr	r3, .L920
6730.L896:
6731	sxth	r2, r6
6732	cmp	r2, r10
6733	ble	.L898
6734.L911:
6735	mov	r0, r4
6736	bl	ftl_free_no_use_map_blk
6737	ldr	r3, .L920+12
6738	ldrh	r2, [r4, #2]
6739	ldrh	r3, [r3]
6740	cmp	r2, r3
6741	bne	.L900
6742	mov	r0, r4
6743	bl	ftl_map_blk_alloc_new_blk
6744.L900:
6745	mov	r0, r4
6746	bl	ftl_map_blk_gc
6747	mov	r0, r4
6748	bl	ftl_map_blk_gc
6749	movs	r0, #0
6750	add	sp, sp, #24
6751	@ sp needed
6752	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
6753.L898:
6754	ldrh	r1, [r5]
6755	ldr	r0, .L920
6756	str	r3, [sp, #4]
6757	orr	r2, r2, r1, lsl #10
6758	str	r2, [r3, #4]
6759	movs	r2, #1
6760	mov	r1, r2
6761	bl	FlashReadPages
6762	ldr	r3, [sp, #4]
6763	ldr	r2, [r3]
6764	adds	r2, r2, #1
6765	beq	.L897
6766	ldrh	r2, [r7, #8]
6767	cmp	fp, r2
6768	bls	.L897
6769	ldrh	r1, [r4, #4]
6770	ldrh	r0, [r7]
6771	cmp	r0, r1
6772	itt	eq
6773	ldreq	r1, [r3, #4]
6774	streq	r1, [r8, r2, lsl #2]
6775.L897:
6776	adds	r6, r6, #1
6777	b	.L896
6778.L895:
6779	ldr	r1, [sp, #8]
6780	add	r2, r10, r2
6781	str	r2, [sp, #16]
6782	ldr	r0, .L920
6783	ldr	r1, [r1]
6784	str	r1, [r5, #8]
6785	ldrh	r1, [r10, r3, lsl #1]
6786	ldr	r3, .L920+12
6787	ldrh	r2, [r3]
6788	str	r3, [sp, #20]
6789	subs	r2, r2, #1
6790	orr	r2, r2, r1, lsl #10
6791	str	r2, [r5, #4]
6792	movs	r2, #1
6793	mov	r1, r2
6794	bl	FlashReadPages
6795	ldr	r2, [r5]
6796	adds	r2, r2, #1
6797	beq	.L913
6798	ldrh	r1, [r7]
6799	ldrh	r2, [r4, #4]
6800	ldr	r3, [sp, #20]
6801	cmp	r1, r2
6802	bne	.L913
6803	ldrh	r1, [r7, #8]
6804	movw	r2, #64245
6805	cmp	r1, r2
6806	beq	.L902
6807.L913:
6808	movs	r3, #0
6809.L903:
6810	ldr	r1, .L920+12
6811	sxth	r2, r3
6812	ldrh	r1, [r1]
6813	cmp	r2, r1
6814	bge	.L909
6815	str	r3, [sp, #20]
6816	ldr	r3, [sp, #16]
6817	ldr	r0, .L920
6818	ldrh	r1, [r3]
6819	orr	r2, r2, r1, lsl #10
6820	str	r2, [r5, #4]
6821	movs	r2, #1
6822	mov	r1, r2
6823	bl	FlashReadPages
6824	ldr	r2, [r5]
6825	ldr	r3, [sp, #20]
6826	adds	r2, r2, #1
6827	beq	.L907
6828	ldrh	r2, [r7, #8]
6829	cmp	fp, r2
6830	bls	.L907
6831	ldrh	r1, [r4, #4]
6832	ldrh	r0, [r7]
6833	cmp	r0, r1
6834	itt	eq
6835	ldreq	r1, [r5, #4]
6836	streq	r1, [r8, r2, lsl #2]
6837.L907:
6838	adds	r3, r3, #1
6839	b	.L903
6840.L902:
6841	ldrh	r2, [r3]
6842	movs	r1, #0
6843	ldr	r3, [sp, #8]
6844	subs	r2, r2, #1
6845	ldr	ip, [r3]
6846.L904:
6847	sxth	r3, r1
6848	cmp	r3, r2
6849	blt	.L906
6850.L909:
6851	adds	r6, r6, #1
6852	b	.L894
6853.L906:
6854	lsls	r0, r3, #3
6855	ldr	r3, [ip, r3, lsl #3]
6856	adds	r1, r1, #1
6857	uxth	lr, r3
6858	cmp	fp, lr
6859	itttt	hi
6860	addhi	r0, r0, ip
6861	movhi	r3, lr
6862	ldrhi	r0, [r0, #4]
6863	strhi	r0, [r8, r3, lsl #2]
6864	b	.L904
6865.L921:
6866	.align	2
6867.L920:
6868	.word	.LANCHOR106
6869	.word	.LANCHOR107
6870	.word	.LANCHOR108
6871	.word	.LANCHOR20
6872	.size	FtlMapTblRecovery, .-FtlMapTblRecovery
6873	.section	.text.FtlLoadVonderInfo,"ax",%progbits
6874	.align	1
6875	.global	FtlLoadVonderInfo
6876	.syntax unified
6877	.thumb
6878	.thumb_func
6879	.fpu softvfp
6880	.type	FtlLoadVonderInfo, %function
6881FtlLoadVonderInfo:
6882	@ args = 0, pretend = 0, frame = 0
6883	@ frame_needed = 0, uses_anonymous_args = 0
6884	push	{r3, lr}
6885	ldr	r3, .L923
6886	ldr	r0, .L923+4
6887	ldrh	r3, [r3]
6888	strh	r3, [r0, #10]	@ movhi
6889	movw	r3, #61574
6890	strh	r3, [r0, #4]	@ movhi
6891	ldr	r3, .L923+8
6892	ldrh	r3, [r3]
6893	strh	r3, [r0, #8]	@ movhi
6894	ldr	r3, .L923+12
6895	ldrh	r3, [r3]
6896	strh	r3, [r0, #6]	@ movhi
6897	ldr	r3, .L923+16
6898	ldr	r3, [r3]
6899	str	r3, [r0, #12]
6900	ldr	r3, .L923+20
6901	ldr	r3, [r3]
6902	str	r3, [r0, #16]
6903	ldr	r3, .L923+24
6904	ldr	r3, [r3]
6905	str	r3, [r0, #20]
6906	ldr	r3, .L923+28
6907	ldr	r3, [r3]
6908	str	r3, [r0, #24]
6909	bl	FtlMapTblRecovery
6910	movs	r0, #0
6911	pop	{r3, pc}
6912.L924:
6913	.align	2
6914.L923:
6915	.word	.LANCHOR27
6916	.word	.LANCHOR149
6917	.word	.LANCHOR35
6918	.word	.LANCHOR28
6919	.word	.LANCHOR36
6920	.word	.LANCHOR132
6921	.word	.LANCHOR131
6922	.word	.LANCHOR133
6923	.size	FtlLoadVonderInfo, .-FtlLoadVonderInfo
6924	.section	.text.FtlL2PDataInit,"ax",%progbits
6925	.align	1
6926	.global	FtlL2PDataInit
6927	.syntax unified
6928	.thumb
6929	.thumb_func
6930	.fpu softvfp
6931	.type	FtlL2PDataInit, %function
6932FtlL2PDataInit:
6933	@ args = 0, pretend = 0, frame = 0
6934	@ frame_needed = 0, uses_anonymous_args = 0
6935	push	{r4, r5, r6, r7, r8, lr}
6936	movs	r1, #0
6937	ldr	r5, .L928
6938	ldr	r4, .L928+4
6939	ldr	r2, [r5]
6940	ldr	r7, .L928+8
6941	ldr	r6, .L928+12
6942	ldr	r0, [r4]
6943	lsls	r2, r2, #1
6944	ldr	r8, .L928+44
6945	bl	ftl_memset
6946	ldrh	r3, [r7]
6947	movs	r1, #255
6948	ldrh	r2, [r6]
6949	ldr	r0, [r8]
6950	muls	r2, r3, r2
6951	bl	ftl_memset
6952	ldr	r3, .L928+16
6953	movw	r0, #65535
6954	ldrh	r1, [r6]
6955	ldr	ip, [r8]
6956	ldr	r2, [r3]
6957	movs	r3, #12
6958	ldrh	r7, [r7]
6959	mla	r3, r1, r3, r3
6960	adds	r1, r2, r3
6961	movs	r3, #0
6962	mov	lr, r3
6963.L926:
6964	adds	r2, r2, #12
6965	adds	r6, r3, r7
6966	cmp	r2, r1
6967	bne	.L927
6968	ldr	r3, .L928+20
6969	ldr	r2, [r5]
6970	strh	r0, [r3, #2]	@ movhi
6971	strh	r2, [r3, #10]	@ movhi
6972	movw	r2, #61634
6973	strh	r2, [r3, #4]	@ movhi
6974	ldr	r2, .L928+24
6975	strh	r0, [r3]	@ movhi
6976	ldrh	r2, [r2]
6977	strh	r2, [r3, #8]	@ movhi
6978	ldr	r2, .L928+28
6979	ldrh	r2, [r2]
6980	strh	r2, [r3, #6]	@ movhi
6981	ldr	r2, .L928+32
6982	ldr	r2, [r2]
6983	str	r2, [r3, #12]
6984	ldr	r2, .L928+36
6985	ldr	r2, [r2]
6986	str	r2, [r3, #16]
6987	ldr	r2, [r4]
6988	str	r2, [r3, #20]
6989	ldr	r2, .L928+40
6990	ldr	r2, [r2]
6991	str	r2, [r3, #24]
6992	pop	{r4, r5, r6, r7, r8, pc}
6993.L927:
6994	bic	r3, r3, #3
6995	str	lr, [r2, #-8]
6996	add	r3, r3, ip
6997	strh	r0, [r2, #-12]	@ movhi
6998	str	r3, [r2, #-4]
6999	mov	r3, r6
7000	b	.L926
7001.L929:
7002	.align	2
7003.L928:
7004	.word	.LANCHOR30
7005	.word	.LANCHOR130
7006	.word	.LANCHOR23
7007	.word	.LANCHOR33
7008	.word	.LANCHOR55
7009	.word	.LANCHOR144
7010	.word	.LANCHOR147
7011	.word	.LANCHOR32
7012	.word	.LANCHOR129
7013	.word	.LANCHOR135
7014	.word	.LANCHOR134
7015	.word	.LANCHOR136
7016	.size	FtlL2PDataInit, .-FtlL2PDataInit
7017	.section	.text.FtlLoadMapInfo,"ax",%progbits
7018	.align	1
7019	.global	FtlLoadMapInfo
7020	.syntax unified
7021	.thumb
7022	.thumb_func
7023	.fpu softvfp
7024	.type	FtlLoadMapInfo, %function
7025FtlLoadMapInfo:
7026	@ args = 0, pretend = 0, frame = 0
7027	@ frame_needed = 0, uses_anonymous_args = 0
7028	push	{r3, lr}
7029	bl	FtlL2PDataInit
7030	ldr	r0, .L931
7031	bl	FtlMapTblRecovery
7032	movs	r0, #0
7033	pop	{r3, pc}
7034.L932:
7035	.align	2
7036.L931:
7037	.word	.LANCHOR144
7038	.size	FtlLoadMapInfo, .-FtlLoadMapInfo
7039	.section	.text.FtlVariablesInit,"ax",%progbits
7040	.align	1
7041	.global	FtlVariablesInit
7042	.syntax unified
7043	.thumb
7044	.thumb_func
7045	.fpu softvfp
7046	.type	FtlVariablesInit, %function
7047FtlVariablesInit:
7048	@ args = 0, pretend = 0, frame = 0
7049	@ frame_needed = 0, uses_anonymous_args = 0
7050	push	{r3, r4, r5, lr}
7051	movw	r2, #65535
7052	ldr	r3, .L934
7053	movs	r4, #0
7054	mov	r1, r4
7055	ldr	r5, .L934+4
7056	strh	r2, [r3]	@ movhi
7057	mov	r2, #-1
7058	ldr	r3, .L934+8
7059	str	r4, [r3]
7060	ldr	r3, .L934+12
7061	str	r4, [r3]
7062	ldr	r3, .L934+16
7063	str	r2, [r3]
7064	ldr	r3, .L934+20
7065	strh	r4, [r3]	@ movhi
7066	ldr	r3, .L934+24
7067	ldrh	r2, [r3]
7068	ldr	r3, .L934+28
7069	lsls	r2, r2, #1
7070	ldr	r0, [r3]
7071	bl	ftl_memset
7072	ldrh	r2, [r5]
7073	mov	r1, r4
7074	ldr	r3, .L934+32
7075	lsls	r2, r2, #1
7076	ldr	r0, [r3]
7077	bl	ftl_memset
7078	ldrh	r2, [r5]
7079	mov	r1, r4
7080	ldr	r3, .L934+36
7081	lsls	r2, r2, #1
7082	ldr	r0, [r3]
7083	bl	ftl_memset
7084	mov	r1, r4
7085	movs	r2, #48
7086	ldr	r0, .L934+40
7087	bl	ftl_memset
7088	mov	r2, #512
7089	mov	r1, r4
7090	ldr	r0, .L934+44
7091	bl	ftl_memset
7092	bl	FtlGcBufInit
7093	bl	FtlL2PDataInit
7094	mov	r0, r4
7095	pop	{r3, r4, r5, pc}
7096.L935:
7097	.align	2
7098.L934:
7099	.word	.LANCHOR150
7100	.word	.LANCHOR6
7101	.word	.LANCHOR151
7102	.word	.LANCHOR152
7103	.word	.LANCHOR153
7104	.word	.LANCHOR35
7105	.word	.LANCHOR27
7106	.word	.LANCHOR36
7107	.word	.LANCHOR43
7108	.word	.LANCHOR126
7109	.word	.LANCHOR39
7110	.word	.LANCHOR81
7111	.size	FtlVariablesInit, .-FtlVariablesInit
7112	.section	.text.SupperBlkListInit,"ax",%progbits
7113	.align	1
7114	.global	SupperBlkListInit
7115	.syntax unified
7116	.thumb
7117	.thumb_func
7118	.fpu softvfp
7119	.type	SupperBlkListInit, %function
7120SupperBlkListInit:
7121	@ args = 0, pretend = 0, frame = 16
7122	@ frame_needed = 0, uses_anonymous_args = 0
7123	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
7124	movs	r2, #6
7125	ldr	r3, .L947
7126	movs	r1, #0
7127	movs	r4, #0
7128	ldr	r5, .L947+4
7129	mov	r8, r4
7130	ldrh	r3, [r3]
7131	mov	r6, r4
7132	ldr	r0, [r5]
7133	mov	r10, r5
7134	muls	r2, r3, r2
7135	bl	ftl_memset
7136	ldr	r3, .L947+8
7137	ldr	r2, .L947+12
7138	str	r4, [r3]
7139	ldr	r3, .L947+16
7140	strh	r4, [r2]	@ movhi
7141	str	r2, [sp, #4]
7142	str	r4, [r3]
7143	ldr	r3, .L947+20
7144	str	r4, [r3]
7145	ldr	r3, .L947+24
7146	mov	fp, r3
7147	strh	r4, [r3]	@ movhi
7148.L937:
7149	ldr	r3, .L947+28
7150	uxth	r7, r4
7151	ldrh	r3, [r3]
7152	cmp	r7, r3
7153	bcs	.L943
7154	ldr	r3, .L947+32
7155	ldrh	r2, [r3]
7156	ldr	r3, .L947+36
7157	ldrh	r3, [r3]
7158	str	r3, [sp]
7159	movs	r3, #0
7160	mov	r5, r3
7161	b	.L944
7162.L939:
7163	str	r2, [sp, #12]
7164	mov	r1, r7
7165	ldr	r2, .L947+40
7166	str	r3, [sp, #8]
7167	ldrb	r0, [r2, r3]	@ zero_extendqisi2
7168	bl	V2P_block
7169	bl	FtlBbmIsBadBlock
7170	ldr	r3, [sp, #8]
7171	ldr	r2, [sp, #12]
7172	cbnz	r0, .L938
7173	ldr	r1, [sp]
7174	add	r5, r5, r1
7175	uxth	r5, r5
7176.L938:
7177	adds	r3, r3, #1
7178.L944:
7179	uxth	r1, r3
7180	cmp	r2, r1
7181	bhi	.L939
7182	cbz	r5, .L946
7183	mov	r1, r5
7184	mov	r0, #32768
7185	bl	__aeabi_idiv
7186.L940:
7187	ldr	r1, [r10]
7188	uxth	r2, r4
7189	movs	r3, #6
7190	mla	r3, r3, r2, r1
7191	strh	r0, [r3, #4]	@ movhi
7192	ldr	r3, .L947+44
7193	ldrh	r3, [r3]
7194	cmp	r3, r7
7195	beq	.L941
7196	ldr	r3, .L947+48
7197	ldrh	r3, [r3]
7198	cmp	r3, r7
7199	beq	.L941
7200	ldr	r3, .L947+52
7201	ldrh	r3, [r3]
7202	cmp	r3, r7
7203	beq	.L941
7204	ldr	r3, .L947+56
7205	ldr	r3, [r3]
7206	ldrh	r3, [r3, r2, lsl #1]
7207	cbnz	r3, .L942
7208	add	r8, r8, #1
7209	mov	r0, r7
7210	uxth	r8, r8
7211	bl	INSERT_FREE_LIST
7212.L941:
7213	adds	r4, r4, #1
7214	b	.L937
7215.L946:
7216	mov	r0, r5
7217	b	.L940
7218.L942:
7219	adds	r6, r6, #1
7220	mov	r0, r7
7221	uxth	r6, r6
7222	bl	INSERT_DATA_LIST
7223	b	.L941
7224.L943:
7225	ldr	r2, [sp, #4]
7226	strh	r8, [fp]	@ movhi
7227	strh	r6, [r2]	@ movhi
7228	add	r6, r6, r8
7229	cmp	r6, r3
7230	ble	.L945
7231	movw	r2, #2154
7232	ldr	r1, .L947+60
7233	ldr	r0, .L947+64
7234	bl	printf
7235.L945:
7236	movs	r0, #0
7237	add	sp, sp, #16
7238	@ sp needed
7239	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
7240.L948:
7241	.align	2
7242.L947:
7243	.word	.LANCHOR6
7244	.word	.LANCHOR40
7245	.word	.LANCHOR47
7246	.word	.LANCHOR45
7247	.word	.LANCHOR41
7248	.word	.LANCHOR44
7249	.word	.LANCHOR48
7250	.word	.LANCHOR5
7251	.word	.LANCHOR3
7252	.word	.LANCHOR19
7253	.word	.LANCHOR13
7254	.word	.LANCHOR51
7255	.word	.LANCHOR52
7256	.word	.LANCHOR53
7257	.word	.LANCHOR42
7258	.word	.LANCHOR154
7259	.word	.LC1
7260	.size	SupperBlkListInit, .-SupperBlkListInit
7261	.section	.text.ftl_check_vpc,"ax",%progbits
7262	.align	1
7263	.global	ftl_check_vpc
7264	.syntax unified
7265	.thumb
7266	.thumb_func
7267	.fpu softvfp
7268	.type	ftl_check_vpc, %function
7269ftl_check_vpc:
7270	@ args = 0, pretend = 0, frame = 8
7271	@ frame_needed = 0, uses_anonymous_args = 0
7272	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
7273	movs	r4, #0
7274	ldr	r6, .L973
7275	ldr	r5, .L973+4
7276	ldr	r1, .L973+8
7277	ldr	r0, .L973+12
7278	bl	printf
7279	mov	r2, #8192
7280	movs	r1, #0
7281	ldr	r0, .L973+4
7282	bl	ftl_memset
7283.L950:
7284	ldr	r3, [r6]
7285	cmp	r4, r3
7286	bcc	.L952
7287	ldr	r10, .L973+48
7288	movs	r4, #0
7289	ldr	r7, .L973+16
7290	mov	r6, r4
7291.L953:
7292	ldrh	r2, [r10]
7293	uxth	r3, r4
7294	cmp	r2, r3
7295	bhi	.L955
7296	ldr	r3, .L973+20
7297	ldr	r4, [r3]
7298	cbz	r4, .L956
7299	ldr	r3, .L973+24
7300	mov	r8, #0
7301	ldr	r5, .L973+28
7302	ldr	r10, .L973+16
7303	ldrh	r7, [r3]
7304	ldr	r3, [r5]
7305	ldr	fp, .L973+4
7306	subs	r4, r4, r3
7307	ldr	r3, .L973+32
7308	asrs	r4, r4, #1
7309	muls	r4, r3, r4
7310	uxth	r4, r4
7311.L957:
7312	uxth	r3, r8
7313	cmp	r7, r3
7314	bls	.L956
7315	ldr	r3, [r10]
7316	ldrh	r2, [r3, r4, lsl #1]
7317	cbz	r2, .L958
7318	movs	r6, #1
7319	ldrh	r3, [fp, r4, lsl #1]
7320	mov	r1, r4
7321	ldr	r0, .L973+36
7322	bl	printf
7323.L958:
7324	movs	r3, #6
7325	ldr	r2, [r5]
7326	muls	r4, r3, r4
7327	movw	r3, #65535
7328	add	r8, r8, #1
7329	ldrh	r4, [r2, r4]
7330	cmp	r4, r3
7331	bne	.L957
7332.L956:
7333	cbz	r6, .L949
7334	movw	r2, #2321
7335	ldr	r1, .L973+8
7336	ldr	r0, .L973+40
7337	bl	printf
7338.L949:
7339	add	sp, sp, #8
7340	@ sp needed
7341	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
7342.L952:
7343	movs	r2, #0
7344	add	r1, sp, #4
7345	mov	r0, r4
7346	bl	log2phys
7347	ldr	r0, [sp, #4]
7348	adds	r3, r0, #1
7349	beq	.L951
7350	ubfx	r0, r0, #10, #16
7351	bl	P2V_block_in_plane
7352	ldrh	r3, [r5, r0, lsl #1]
7353	adds	r3, r3, #1
7354	strh	r3, [r5, r0, lsl #1]	@ movhi
7355.L951:
7356	adds	r4, r4, #1
7357	b	.L950
7358.L955:
7359	ldr	r3, [r7]
7360	uxth	r5, r4
7361	ldr	r8, .L973+4
7362	ldrh	r2, [r3, r5, lsl #1]
7363	ldrh	r3, [r8, r5, lsl #1]
7364	cmp	r2, r3
7365	beq	.L954
7366	mov	r1, r5
7367	ldr	r0, .L973+44
7368	bl	printf
7369	ldr	r3, [r7]
7370	movw	r2, #65535
7371	ldrh	r3, [r3, r5, lsl #1]
7372	cmp	r3, r2
7373	beq	.L954
7374	ldrh	r2, [r8, r5, lsl #1]
7375	cmp	r2, r3
7376	it	hi
7377	movhi	r6, #1
7378.L954:
7379	adds	r4, r4, #1
7380	b	.L953
7381.L974:
7382	.align	2
7383.L973:
7384	.word	.LANCHOR61
7385	.word	check_vpc_table
7386	.word	.LANCHOR155
7387	.word	.LC94
7388	.word	.LANCHOR42
7389	.word	.LANCHOR47
7390	.word	.LANCHOR48
7391	.word	.LANCHOR40
7392	.word	-1431655765
7393	.word	.LC96
7394	.word	.LC1
7395	.word	.LC95
7396	.word	.LANCHOR5
7397	.size	ftl_check_vpc, .-ftl_check_vpc
7398	.section	.text.FtlGcPageVarInit,"ax",%progbits
7399	.align	1
7400	.global	FtlGcPageVarInit
7401	.syntax unified
7402	.thumb
7403	.thumb_func
7404	.fpu softvfp
7405	.type	FtlGcPageVarInit, %function
7406FtlGcPageVarInit:
7407	@ args = 0, pretend = 0, frame = 0
7408	@ frame_needed = 0, uses_anonymous_args = 0
7409	ldr	r2, .L976
7410	movs	r3, #0
7411	push	{r4, lr}
7412	movs	r1, #255
7413	ldr	r4, .L976+4
7414	strh	r3, [r2]	@ movhi
7415	ldr	r2, .L976+8
7416	strh	r3, [r2]	@ movhi
7417	ldrh	r2, [r4]
7418	ldr	r3, .L976+12
7419	lsls	r2, r2, #1
7420	ldr	r0, [r3]
7421	bl	ftl_memset
7422	ldrh	r3, [r4]
7423	movs	r2, #12
7424	movs	r1, #255
7425	muls	r2, r3, r2
7426	ldr	r3, .L976+16
7427	ldr	r0, [r3]
7428	bl	ftl_memset
7429	pop	{r4, lr}
7430	b	FtlGcBufInit
7431.L977:
7432	.align	2
7433.L976:
7434	.word	.LANCHOR96
7435	.word	.LANCHOR21
7436	.word	.LANCHOR97
7437	.word	.LANCHOR95
7438	.word	.LANCHOR98
7439	.size	FtlGcPageVarInit, .-FtlGcPageVarInit
7440	.section	.text.FtlGcScanTempBlk,"ax",%progbits
7441	.align	1
7442	.global	FtlGcScanTempBlk
7443	.syntax unified
7444	.thumb
7445	.thumb_func
7446	.fpu softvfp
7447	.type	FtlGcScanTempBlk, %function
7448FtlGcScanTempBlk:
7449	@ args = 0, pretend = 0, frame = 24
7450	@ frame_needed = 0, uses_anonymous_args = 0
7451	ldr	r3, .L1001
7452	push	{r4, r5, r6, r7, r8, r10, fp, lr}
7453	sub	sp, sp, #24
7454	mov	r5, r0
7455	str	r1, [sp, #8]
7456	ldrh	r4, [r3]
7457	movw	r3, #65535
7458	cmp	r4, r3
7459	beq	.L995
7460	cbnz	r4, .L979
7461.L980:
7462	bl	FtlGcPageVarInit
7463	b	.L981
7464.L995:
7465	movs	r4, #0
7466.L979:
7467	ldr	r3, .L1001+4
7468	ldr	r2, [sp, #8]
7469	ldrh	r3, [r3]
7470	cmp	r3, r2
7471	beq	.L980
7472.L981:
7473	movs	r7, #0
7474.L989:
7475	ldrh	r2, [r5]
7476	movw	r3, #65535
7477	movs	r0, #0
7478	strb	r0, [r5, #8]
7479	cmp	r2, r3
7480	beq	.L982
7481.L992:
7482	ldr	r3, .L1001+8
7483	movs	r2, #0
7484	add	ip, r5, #16
7485	mov	r6, r2
7486	movw	lr, #65535
7487	mov	r8, #20
7488	ldrh	fp, [r3]
7489	ldr	r3, .L1001+12
7490	ldr	r3, [r3]
7491	str	r3, [sp, #4]
7492	ldr	r3, .L1001+16
7493	ldr	r3, [r3]
7494	str	r3, [sp, #12]
7495	ldr	r3, .L1001+20
7496	ldrh	r3, [r3]
7497	str	r3, [sp, #16]
7498	ldr	r3, .L1001+24
7499	ldr	r3, [r3]
7500	str	r3, [sp, #20]
7501	ldr	r3, .L1001+28
7502	ldrh	r10, [r3]
7503.L983:
7504	uxth	r3, r2
7505	cmp	fp, r3
7506	bhi	.L985
7507	mov	r8, #0
7508	mov	fp, #20
7509	movs	r2, #0
7510	mov	r1, r6
7511	ldr	r0, [sp, #4]
7512	bl	FlashReadPages
7513.L986:
7514	uxth	r3, r8
7515	cmp	r6, r3
7516	bhi	.L990
7517	ldr	r3, [sp, #8]
7518	adds	r7, r7, #1
7519	adds	r4, r4, #1
7520	ldr	r2, .L1001+4
7521	uxth	r4, r4
7522	cmp	r3, r7
7523	bls	.L991
7524.L993:
7525	ldrh	r3, [r2]
7526	cmp	r3, r4
7527	bhi	.L992
7528	movs	r0, #0
7529	b	.L982
7530.L985:
7531	ldrh	r3, [ip], #2
7532	cmp	r3, lr
7533	beq	.L984
7534	ldr	r1, [sp, #4]
7535	orr	r3, r4, r3, lsl #10
7536	ldr	r0, [sp, #12]
7537	mla	r1, r8, r6, r1
7538	str	r3, [r1, #4]
7539	ldr	r3, [sp, #16]
7540	muls	r3, r6, r3
7541	bic	r3, r3, #3
7542	add	r3, r3, r0
7543	ldr	r0, [sp, #20]
7544	str	r3, [r1, #8]
7545	mul	r3, r10, r6
7546	adds	r6, r6, #1
7547	uxth	r6, r6
7548	bic	r3, r3, #3
7549	add	r3, r3, r0
7550	str	r3, [r1, #12]
7551.L984:
7552	adds	r2, r2, #1
7553	b	.L983
7554.L990:
7555	ldr	r3, .L1001+12
7556	mul	r10, fp, r8
7557	ldr	r2, [r3]
7558	add	r3, r2, r10
7559	str	r2, [sp, #16]
7560	ldr	r1, [r3, #4]
7561	str	r3, [sp, #12]
7562	ubfx	r0, r1, #10, #16
7563	str	r1, [sp, #4]
7564	bl	P2V_plane
7565	ldr	r2, [sp, #16]
7566	ldr	r2, [r2, r10]
7567	cbnz	r2, .L987
7568	ldr	r3, [sp, #12]
7569	movw	r2, #65535
7570	add	r8, r8, #1
7571	ldr	r1, [sp, #4]
7572	ldr	r3, [r3, #12]
7573	ldrh	ip, [r3]
7574	cmp	ip, r2
7575	bne	.L988
7576	ldr	r3, .L1001+32
7577	movs	r2, #1
7578	str	r2, [r3]
7579.L982:
7580	ldr	r3, .L1001
7581	movw	r2, #65535
7582	strb	r0, [r5, #6]
7583	mov	r1, r4
7584	strh	r4, [r5, #2]	@ movhi
7585	strh	r2, [r3]	@ movhi
7586	mov	r2, r0
7587	mov	r0, r5
7588	bl	ftl_sb_update_avl_pages
7589	b	.L994
7590.L988:
7591	ldr	r2, [r3, #8]
7592	ldr	r0, [r3, #12]
7593	bl	FtlGcUpdatePage
7594	b	.L986
7595.L987:
7596	ldr	r3, .L1001+36
7597	movs	r4, #0
7598	ldrh	r2, [r5]
7599	ldr	r3, [r3]
7600	strh	r4, [r3, r2, lsl #1]	@ movhi
7601	ldrh	r0, [r5]
7602	bl	INSERT_FREE_LIST
7603	movw	r3, #65535
7604	strh	r3, [r5]	@ movhi
7605	bl	FtlGcPageVarInit
7606	b	.L989
7607.L991:
7608	ldr	r1, .L1001
7609	movw	r0, #65535
7610	ldrh	r3, [r1]
7611	cmp	r3, r0
7612	beq	.L993
7613	add	r3, r3, r7
7614	strh	r3, [r1]	@ movhi
7615	ldrh	r3, [r2]
7616	cmp	r3, r4
7617	bls	.L993
7618.L994:
7619	mov	r0, #-1
7620	add	sp, sp, #24
7621	@ sp needed
7622	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
7623.L1002:
7624	.align	2
7625.L1001:
7626	.word	.LANCHOR156
7627	.word	.LANCHOR19
7628	.word	.LANCHOR3
7629	.word	.LANCHOR120
7630	.word	.LANCHOR91
7631	.word	.LANCHOR23
7632	.word	.LANCHOR92
7633	.word	.LANCHOR24
7634	.word	.LANCHOR152
7635	.word	.LANCHOR42
7636	.size	FtlGcScanTempBlk, .-FtlGcScanTempBlk
7637	.section	.text.FlashTestBlk,"ax",%progbits
7638	.align	1
7639	.global	FlashTestBlk
7640	.syntax unified
7641	.thumb
7642	.thumb_func
7643	.fpu softvfp
7644	.type	FlashTestBlk, %function
7645FlashTestBlk:
7646	@ args = 0, pretend = 0, frame = 88
7647	@ frame_needed = 0, uses_anonymous_args = 0
7648	cmp	r0, #11
7649	push	{r4, r5, lr}
7650	mov	r4, r0
7651	sub	sp, sp, #92
7652	bls	.L1005
7653	ldr	r5, .L1006
7654	add	r0, sp, #24
7655	movs	r2, #32
7656	movs	r1, #165
7657	str	r0, [sp, #16]
7658	lsls	r4, r4, #10
7659	str	r5, [sp, #12]
7660	bl	ftl_memset
7661	movs	r2, #8
7662	movs	r1, #90
7663	mov	r0, r5
7664	bl	ftl_memset
7665	movs	r2, #1
7666	add	r0, sp, #4
7667	mov	r1, r2
7668	str	r4, [sp, #8]
7669	bl	FlashEraseBlocks
7670	movs	r3, #1
7671	add	r0, sp, #4
7672	mov	r2, r3
7673	mov	r1, r3
7674	bl	FlashProgPages
7675	ldr	r4, [sp, #4]
7676	movs	r2, #1
7677	movs	r1, #0
7678	add	r0, sp, #4
7679	adds	r4, r4, #0
7680	it	ne
7681	movne	r4, #1
7682	negs	r4, r4
7683	bl	FlashEraseBlocks
7684.L1003:
7685	mov	r0, r4
7686	add	sp, sp, #92
7687	@ sp needed
7688	pop	{r4, r5, pc}
7689.L1005:
7690	movs	r4, #0
7691	b	.L1003
7692.L1007:
7693	.align	2
7694.L1006:
7695	.word	ftl_temp_buf
7696	.size	FlashTestBlk, .-FlashTestBlk
7697	.section	.text.FlashGetBadBlockList,"ax",%progbits
7698	.align	1
7699	.global	FlashGetBadBlockList
7700	.syntax unified
7701	.thumb
7702	.thumb_func
7703	.fpu softvfp
7704	.type	FlashGetBadBlockList, %function
7705FlashGetBadBlockList:
7706	@ args = 0, pretend = 0, frame = 0
7707	@ frame_needed = 0, uses_anonymous_args = 0
7708	push	{r3, r4, r5, lr}
7709	mov	r2, #256
7710	mov	r5, r1
7711	movs	r1, #255
7712	mov	r4, r0
7713	bl	ftl_memset
7714	ldr	r3, .L1015
7715	mov	r1, r5
7716	mov	r0, r4
7717	ldr	r3, [r3]
7718	blx	r3
7719	uxth	r0, r0
7720	cmp	r0, #50
7721	bls	.L1009
7722	mov	r2, #256
7723	movs	r1, #255
7724	mov	r0, r4
7725	bl	ftl_memset
7726	movs	r0, #0
7727.L1009:
7728	ldr	r3, .L1015+4
7729	ldrh	r3, [r3, #14]
7730	cmp	r3, #4
7731	bne	.L1014
7732	add	r1, r4, r0, lsl #1
7733	mov	r3, r4
7734.L1011:
7735	cmp	r3, r1
7736	bne	.L1012
7737.L1014:
7738	pop	{r3, r4, r5, pc}
7739.L1012:
7740	ldrh	r2, [r3]
7741	lsrs	r2, r2, #1
7742	strh	r2, [r3], #2	@ movhi
7743	b	.L1011
7744.L1016:
7745	.align	2
7746.L1015:
7747	.word	.LANCHOR105
7748	.word	.LANCHOR0
7749	.size	FlashGetBadBlockList, .-FlashGetBadBlockList
7750	.section	.text.ftl_memcpy,"ax",%progbits
7751	.align	1
7752	.global	ftl_memcpy
7753	.syntax unified
7754	.thumb
7755	.thumb_func
7756	.fpu softvfp
7757	.type	ftl_memcpy, %function
7758ftl_memcpy:
7759	@ args = 0, pretend = 0, frame = 0
7760	@ frame_needed = 0, uses_anonymous_args = 0
7761	@ link register save eliminated.
7762	b	memcpy
7763	.size	ftl_memcpy, .-ftl_memcpy
7764	.section	.text.FtlBbmTblFlush,"ax",%progbits
7765	.align	1
7766	.global	FtlBbmTblFlush
7767	.syntax unified
7768	.thumb
7769	.thumb_func
7770	.fpu softvfp
7771	.type	FtlBbmTblFlush, %function
7772FtlBbmTblFlush:
7773	@ args = 0, pretend = 0, frame = 8
7774	@ frame_needed = 0, uses_anonymous_args = 0
7775	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
7776	movs	r4, #0
7777	ldr	r7, .L1027
7778	movs	r1, #0
7779	ldr	r5, .L1027+4
7780	ldr	r3, [r7]
7781	mov	fp, r7
7782	ldr	r8, .L1027+48
7783	ldr	r6, .L1027+8
7784	str	r3, [r5, #12]
7785	ldr	r7, .L1027+12
7786	ldr	r3, .L1027+16
7787	ldr	r10, .L1027+52
7788	ldr	r0, [r8]
7789	ldrh	r2, [r3]
7790	str	r0, [r5, #8]
7791	bl	ftl_memset
7792.L1019:
7793	ldrh	r3, [r7]
7794	cmp	r4, r3
7795	blt	.L1020
7796	ldr	r6, [r5, #12]
7797	movs	r2, #16
7798	ldr	r4, .L1027+20
7799	movs	r1, #255
7800	movs	r7, #0
7801	mov	r0, r6
7802	bl	ftl_memset
7803	movw	r3, #61649
7804	mov	r10, r4
7805	strh	r3, [r6]	@ movhi
7806	ldr	r3, [r4, #8]
7807	str	r7, [sp, #12]
7808	str	r3, [r6, #4]
7809	ldrh	r3, [r4]
7810	strh	r3, [r6, #2]	@ movhi
7811	ldrh	r3, [r4, #4]
7812	strh	r3, [r6, #8]	@ movhi
7813	ldrh	r3, [r4, #6]
7814	strh	r3, [r6, #10]	@ movhi
7815	ldr	r3, .L1027+24
7816	ldr	r3, [r3]
7817	strh	r3, [r6, #12]	@ movhi
7818.L1021:
7819	ldr	r3, [r8]
7820	ldrh	r1, [r4]
7821	ldrh	r2, [r4, #2]
7822	str	r3, [r5, #8]
7823	ldr	r3, [fp]
7824	ldrh	r0, [r6, #10]
7825	str	r3, [r5, #12]
7826	movs	r3, #0
7827	str	r3, [r5]
7828	orr	r3, r2, r1, lsl #10
7829	str	r3, [r5, #4]
7830	ldrh	r3, [r4, #4]
7831	str	r0, [sp]
7832	ldr	r0, .L1027+28
7833	bl	printf
7834	movs	r3, #1
7835	ldr	r0, .L1027+4
7836	mov	r2, r3
7837	mov	r1, r3
7838	bl	FlashProgPages
7839	ldr	r3, .L1027+32
7840	ldrh	r2, [r4, #2]
7841	ldrh	r3, [r3]
7842	subs	r3, r3, #1
7843	cmp	r2, r3
7844	blt	.L1022
7845	ldr	r3, [r4, #8]
7846	mov	r1, #0	@ movhi
7847	ldrh	r2, [r4]
7848	strh	r1, [r4, #2]	@ movhi
7849	adds	r3, r3, #1
7850	str	r3, [r4, #8]
7851	str	r3, [r6, #4]
7852	strh	r2, [r6, #8]	@ movhi
7853	ldrh	r3, [r4, #4]
7854	strh	r2, [r4, #4]	@ movhi
7855	ldr	r2, .L1027+36
7856	strh	r3, [r4]	@ movhi
7857	lsls	r3, r3, #10
7858	ldr	r0, [r2]
7859	movs	r2, #1
7860	str	r3, [r5, #4]
7861	mov	r1, r2
7862	str	r3, [r0, #4]
7863	bl	FlashEraseBlocks
7864	movs	r3, #1
7865	ldr	r0, .L1027+4
7866	mov	r2, r3
7867	mov	r1, r3
7868	bl	FlashProgPages
7869.L1022:
7870	ldrh	r3, [r10, #2]
7871	adds	r3, r3, #1
7872	strh	r3, [r10, #2]	@ movhi
7873	ldr	r3, [r5]
7874	adds	r3, r3, #1
7875	bne	.L1023
7876	adds	r7, r7, #1
7877	ldr	r1, [r5, #4]
7878	uxth	r7, r7
7879	ldr	r0, .L1027+40
7880	bl	printf
7881	cmp	r7, #3
7882	bls	.L1021
7883	mov	r2, r7
7884	ldr	r1, [r5, #4]
7885	ldr	r0, .L1027+44
7886	bl	printf
7887.L1025:
7888	b	.L1025
7889.L1020:
7890	ldrh	r2, [r10]
7891	ldr	r3, [r5, #8]
7892	ldr	r1, [r6, #4]!
7893	mul	r0, r2, r4
7894	lsls	r2, r2, #2
7895	adds	r4, r4, #1
7896	add	r0, r3, r0, lsl #2
7897	bl	ftl_memcpy
7898	b	.L1019
7899.L1026:
7900	movs	r3, #1
7901	str	r3, [sp, #12]
7902	b	.L1021
7903.L1023:
7904	ldr	r3, [sp, #12]
7905	cmp	r3, #0
7906	beq	.L1026
7907	movs	r0, #0
7908	add	sp, sp, #16
7909	@ sp needed
7910	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
7911.L1028:
7912	.align	2
7913.L1027:
7914	.word	.LANCHOR108
7915	.word	.LANCHOR106
7916	.word	.LANCHOR37+24
7917	.word	.LANCHOR10
7918	.word	.LANCHOR23
7919	.word	.LANCHOR37
7920	.word	.LANCHOR2
7921	.word	.LC97
7922	.word	.LANCHOR20
7923	.word	.LANCHOR111
7924	.word	.LC98
7925	.word	.LC99
7926	.word	.LANCHOR107
7927	.word	.LANCHOR137
7928	.size	FtlBbmTblFlush, .-FtlBbmTblFlush
7929	.section	.text.allocate_data_superblock,"ax",%progbits
7930	.align	1
7931	.global	allocate_data_superblock
7932	.syntax unified
7933	.thumb
7934	.thumb_func
7935	.fpu softvfp
7936	.type	allocate_data_superblock, %function
7937allocate_data_superblock:
7938	@ args = 0, pretend = 0, frame = 16
7939	@ frame_needed = 0, uses_anonymous_args = 0
7940	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
7941	mov	r4, r0
7942	ldr	r8, .L1067
7943.L1030:
7944	ldr	r3, .L1067
7945	ldr	r6, .L1067+4
7946	ldr	fp, .L1067+76
7947	ldrh	r3, [r3]
7948	ldrh	r2, [r6]
7949	add	r3, r3, r2
7950	ldrh	r2, [fp]
7951	cmp	r3, r2
7952	ble	.L1031
7953	movw	r2, #2588
7954	ldr	r1, .L1067+8
7955	ldr	r0, .L1067+12
7956	bl	printf
7957.L1031:
7958	ldr	r3, .L1067+16
7959	cmp	r4, r3
7960	bne	.L1056
7961	ldr	r2, .L1067+20
7962	ldrh	r3, [r8]
7963	ldr	r2, [r2]
7964	lsrs	r1, r3, #1
7965	muls	r2, r3, r2
7966	adds	r1, r1, #1
7967	add	r1, r1, r2, lsr #2
7968	uxth	r1, r1
7969	cbz	r1, .L1032
7970	subs	r1, r1, #1
7971	uxth	r1, r1
7972.L1032:
7973	ldr	r0, .L1067+24
7974	bl	List_pop_index_node
7975	ldrh	r3, [r8]
7976	mov	r5, r0
7977	uxth	r7, r0
7978	cbnz	r3, .L1033
7979	movw	r2, #2597
7980	ldr	r1, .L1067+8
7981	ldr	r0, .L1067+12
7982	bl	printf
7983.L1033:
7984	ldrh	r3, [r8]
7985	mov	r0, r4
7986	subs	r3, r3, #1
7987	strh	r3, [r8]	@ movhi
7988	strh	r7, [r4]	@ movhi
7989	bl	make_superblock
7990	ldrb	r3, [r4, #7]	@ zero_extendqisi2
7991	cbnz	r3, .L1034
7992	ldr	r3, .L1067+28
7993	uxth	r5, r5
7994	movw	r2, #65535
7995	mov	r0, r7
7996	ldr	r3, [r3]
7997	strh	r2, [r3, r5, lsl #1]	@ movhi
7998	bl	INSERT_DATA_LIST
7999	ldrh	r2, [r6]
8000	ldrh	r3, [r8]
8001	add	r3, r3, r2
8002	ldrh	r2, [fp]
8003	cmp	r3, r2
8004	ble	.L1030
8005	mov	r2, #2608
8006	ldr	r1, .L1067+8
8007	ldr	r0, .L1067+12
8008	bl	printf
8009	b	.L1030
8010.L1056:
8011	movs	r1, #0
8012	b	.L1032
8013.L1034:
8014	ldrh	r2, [r6]
8015	ldrh	r3, [r8]
8016	add	r3, r3, r2
8017	ldrh	r2, [fp]
8018	cmp	r3, r2
8019	ble	.L1036
8020	movw	r2, #2611
8021	ldr	r1, .L1067+8
8022	ldr	r0, .L1067+12
8023	bl	printf
8024.L1036:
8025	ldr	r3, .L1067+32
8026	movs	r6, #0
8027	ldr	r2, .L1067+36
8028	add	ip, r4, #16
8029	mov	lr, r6
8030	movw	r10, #65535
8031	ldr	r0, [r3]
8032	ldrh	r1, [r2]
8033	movs	r2, #20
8034	str	r2, [sp, #4]
8035	mov	r3, r0
8036	mla	r1, r2, r1, r0
8037	str	r1, [sp]
8038.L1037:
8039	ldr	r2, [sp]
8040	cmp	r2, r3
8041	bne	.L1039
8042	cbnz	r6, .L1040
8043	movw	r2, #2622
8044	ldr	r1, .L1067+8
8045	ldr	r0, .L1067+12
8046	bl	printf
8047.L1040:
8048	ldr	r3, .L1067+40
8049	ldrh	r3, [r3]
8050	cmp	r3, r7
8051	bne	.L1041
8052	mov	r2, #2624
8053	ldr	r1, .L1067+8
8054	ldr	r0, .L1067+12
8055	bl	printf
8056.L1041:
8057	ldrb	r1, [r4, #8]	@ zero_extendqisi2
8058	uxth	r5, r5
8059	ldr	r2, .L1067+44
8060	ldr	r3, .L1067+48
8061	ldr	r10, .L1067+80
8062	cmp	r1, #0
8063	bne	.L1042
8064	ldr	r0, [r2]
8065	ldrh	lr, [r0, r5, lsl #1]
8066	cmp	lr, #0
8067	beq	.L1043
8068	ldr	r1, .L1067+52
8069	ldrh	ip, [r1]
8070	add	r1, lr, ip
8071.L1066:
8072	strh	r1, [r0, r5, lsl #1]	@ movhi
8073	mov	r0, r7
8074	ldr	r1, [r3]
8075	str	r2, [sp, #4]
8076	str	r3, [sp]
8077	adds	r1, r1, #1
8078	str	r1, [r3]
8079	movs	r1, #0
8080	bl	ftl_set_blk_mode
8081	ldr	r3, [sp]
8082	ldr	r2, [sp, #4]
8083.L1045:
8084	ldr	r2, [r2]
8085	lsls	r1, r5, #1
8086	str	r1, [sp]
8087	ldrh	r0, [r2, r5, lsl #1]
8088	ldr	r2, .L1067+56
8089	ldr	r1, [r2]
8090	cmp	r0, r1
8091	ldrh	r1, [fp]
8092	it	hi
8093	strhi	r0, [r2]
8094	ldr	r2, .L1067+52
8095	ldr	r0, [r3]
8096	ldr	r3, [r10]
8097	ldrh	r2, [r2]
8098	mla	r0, r0, r2, r3
8099	bl	__aeabi_uidiv
8100	ldr	r3, .L1067+60
8101	ldr	ip, .L1067+84
8102	str	r0, [r3]
8103	ldr	r3, .L1067+64
8104	ldr	r2, [r3]
8105	ldr	r3, [r2, #16]
8106	adds	r3, r3, #1
8107	str	r3, [r2, #16]
8108	movs	r2, #20
8109	ldr	r3, .L1067+32
8110	ldr	r0, [r3]
8111	adds	r3, r0, #4
8112	mla	r2, r2, r6, r0
8113	adds	r2, r2, #24
8114.L1047:
8115	adds	r3, r3, #20
8116	cmp	r2, r3
8117	bne	.L1048
8118	ldrb	r1, [r4, #8]	@ zero_extendqisi2
8119	mov	r2, r6
8120	mov	r10, #0
8121	bl	FlashEraseBlocks
8122	mov	r3, r10
8123	movs	r1, #20
8124.L1049:
8125	uxth	r2, r10
8126	cmp	r6, r2
8127	bhi	.L1051
8128	cbz	r3, .L1052
8129	mov	r0, r7
8130	bl	update_multiplier_value
8131	bl	FtlBbmTblFlush
8132.L1052:
8133	ldrb	r2, [r4, #7]	@ zero_extendqisi2
8134	ldr	r1, .L1067+28
8135	cmp	r2, #0
8136	bne	.L1053
8137	ldr	r3, [r1]
8138	movw	r2, #65535
8139	mov	r0, r7
8140	strh	r2, [r3, r5, lsl #1]	@ movhi
8141	bl	INSERT_DATA_LIST
8142	b	.L1030
8143.L1039:
8144	ldrh	r1, [ip], #2
8145	str	lr, [r3, #8]
8146	str	lr, [r3, #12]
8147	cmp	r1, r10
8148	beq	.L1038
8149	ldr	r2, [sp, #4]
8150	lsls	r1, r1, #10
8151	mla	r2, r2, r6, r0
8152	adds	r6, r6, #1
8153	uxth	r6, r6
8154	str	r1, [r2, #4]
8155.L1038:
8156	adds	r3, r3, #20
8157	b	.L1037
8158.L1043:
8159	movs	r1, #2
8160	b	.L1066
8161.L1042:
8162	ldr	r0, [r2]
8163	str	r3, [sp, #4]
8164	str	r2, [sp]
8165	ldrh	r1, [r0, r5, lsl #1]
8166	adds	r1, r1, #1
8167	strh	r1, [r0, r5, lsl #1]	@ movhi
8168	mov	r0, r7
8169	ldr	r1, [r10]
8170	adds	r1, r1, #1
8171	str	r1, [r10]
8172	bl	ftl_set_blk_mode.part.6
8173	ldm	sp, {r2, r3}
8174	b	.L1045
8175.L1048:
8176	ldr	r1, [r3, #-20]
8177	and	r1, r1, ip
8178	str	r1, [r3, #-20]
8179	b	.L1047
8180.L1051:
8181	ldr	r0, .L1067+32
8182	mul	r2, r1, r10
8183	ldr	r0, [r0]
8184	add	ip, r0, r2
8185	ldr	r2, [r0, r2]
8186	adds	r0, r2, #1
8187	bne	.L1050
8188	ldr	r0, [ip, #4]
8189	adds	r3, r3, #1
8190	str	r1, [sp, #12]
8191	str	r2, [sp, #8]
8192	ubfx	r0, r0, #10, #16
8193	str	r3, [sp, #4]
8194	bl	FtlBbmMapBadBlock
8195	ldr	r2, [sp, #8]
8196	add	r0, r4, r10, lsl #1
8197	ldr	r1, [sp, #12]
8198	ldr	r3, [sp, #4]
8199	strh	r2, [r0, #16]	@ movhi
8200	ldrb	r2, [r4, #7]	@ zero_extendqisi2
8201	subs	r2, r2, #1
8202	strb	r2, [r4, #7]
8203.L1050:
8204	add	r10, r10, #1
8205	b	.L1049
8206.L1053:
8207	ldr	r3, .L1067+68
8208	ldr	r0, .L1067+72
8209	ldrh	r3, [r3]
8210	strh	r7, [r4]	@ movhi
8211	smulbb	r3, r3, r2
8212	movs	r2, #0
8213	strh	r2, [r4, #2]	@ movhi
8214	strb	r2, [r4, #6]
8215	ldr	r2, [r0]
8216	uxth	r3, r3
8217	strh	r3, [r4, #4]	@ movhi
8218	str	r2, [r4, #12]
8219	adds	r2, r2, #1
8220	str	r2, [r0]
8221	ldr	r2, [r1]
8222	ldr	r1, [sp]
8223	strh	r3, [r2, r1]	@ movhi
8224	ldrh	r3, [r4, #4]
8225	cbz	r3, .L1054
8226	ldrb	r3, [r4, #7]	@ zero_extendqisi2
8227	cbnz	r3, .L1055
8228.L1054:
8229	movw	r2, #2677
8230	ldr	r1, .L1067+8
8231	ldr	r0, .L1067+12
8232	bl	printf
8233.L1055:
8234	movs	r0, #0
8235	add	sp, sp, #16
8236	@ sp needed
8237	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
8238.L1068:
8239	.align	2
8240.L1067:
8241	.word	.LANCHOR48
8242	.word	.LANCHOR45
8243	.word	.LANCHOR157
8244	.word	.LC1
8245	.word	.LANCHOR53
8246	.word	.LANCHOR87
8247	.word	.LANCHOR47
8248	.word	.LANCHOR42
8249	.word	.LANCHOR111
8250	.word	.LANCHOR3
8251	.word	.LANCHOR80
8252	.word	.LANCHOR43
8253	.word	.LANCHOR72
8254	.word	.LANCHOR14
8255	.word	.LANCHOR76
8256	.word	.LANCHOR74
8257	.word	.LANCHOR127
8258	.word	.LANCHOR19
8259	.word	.LANCHOR70
8260	.word	.LANCHOR5
8261	.word	.LANCHOR73
8262	.word	-1024
8263	.size	allocate_data_superblock, .-allocate_data_superblock
8264	.section	.text.FtlGcFreeBadSuperBlk,"ax",%progbits
8265	.align	1
8266	.global	FtlGcFreeBadSuperBlk
8267	.syntax unified
8268	.thumb
8269	.thumb_func
8270	.fpu softvfp
8271	.type	FtlGcFreeBadSuperBlk, %function
8272FtlGcFreeBadSuperBlk:
8273	@ args = 0, pretend = 0, frame = 8
8274	@ frame_needed = 0, uses_anonymous_args = 0
8275	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
8276	mov	r10, r0
8277	ldr	r4, .L1081
8278	ldrh	r3, [r4]
8279	cbz	r3, .L1070
8280	ldr	r8, .L1081+16
8281	movs	r6, #0
8282.L1071:
8283	ldr	r3, .L1081+4
8284	ldrh	r2, [r3]
8285	uxth	r3, r6
8286	cmp	r2, r3
8287	bhi	.L1077
8288	bl	FtlGcReFreshBadBlk
8289.L1070:
8290	movs	r0, #0
8291	add	sp, sp, #8
8292	@ sp needed
8293	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
8294.L1077:
8295	ldr	r2, .L1081+8
8296	uxth	r3, r6
8297	mov	r1, r10
8298	movs	r7, #0
8299	ldrb	r0, [r2, r3]	@ zero_extendqisi2
8300	bl	V2P_block
8301	ldr	r2, .L1081+12
8302	mov	fp, r0
8303.L1072:
8304	ldrh	r3, [r4]
8305	uxth	r5, r7
8306	cmp	r3, r5
8307	bhi	.L1076
8308	adds	r6, r6, #1
8309	b	.L1071
8310.L1076:
8311	uxth	r3, r7
8312	ldrh	r1, [r8, r3, lsl #1]
8313	cmp	r1, fp
8314	bne	.L1073
8315	mov	r1, fp
8316	mov	r0, r2
8317	str	r3, [sp, #4]
8318	str	r2, [sp]
8319	bl	printf
8320	mov	r0, fp
8321	bl	FtlBbmMapBadBlock
8322	bl	FtlBbmTblFlush
8323	ldr	r3, [sp, #4]
8324	ldrh	r1, [r4]
8325	ldr	r2, [sp]
8326	add	r3, r8, r3, lsl #1
8327.L1074:
8328	cmp	r5, r1
8329	bcc	.L1075
8330	subs	r1, r1, #1
8331	strh	r1, [r4]	@ movhi
8332.L1073:
8333	adds	r7, r7, #1
8334	b	.L1072
8335.L1075:
8336	ldrh	r0, [r3, #2]!
8337	adds	r5, r5, #1
8338	uxth	r5, r5
8339	strh	r0, [r3, #-2]	@ movhi
8340	b	.L1074
8341.L1082:
8342	.align	2
8343.L1081:
8344	.word	.LANCHOR101
8345	.word	.LANCHOR3
8346	.word	.LANCHOR13
8347	.word	.LC100
8348	.word	.LANCHOR102
8349	.size	FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
8350	.section	.text.update_vpc_list,"ax",%progbits
8351	.align	1
8352	.global	update_vpc_list
8353	.syntax unified
8354	.thumb
8355	.thumb_func
8356	.fpu softvfp
8357	.type	update_vpc_list, %function
8358update_vpc_list:
8359	@ args = 0, pretend = 0, frame = 0
8360	@ frame_needed = 0, uses_anonymous_args = 0
8361	push	{r3, r4, r5, lr}
8362	mov	r4, r0
8363	ldr	r3, .L1093
8364	ldr	r3, [r3]
8365	ldrh	r3, [r3, r0, lsl #1]
8366	cmp	r3, #0
8367	bne	.L1084
8368	ldr	r2, .L1093+4
8369	ldrh	r1, [r2]
8370	cmp	r1, r0
8371	bne	.L1085
8372	movw	r3, #65535
8373	strh	r3, [r2]	@ movhi
8374.L1086:
8375	ldr	r5, .L1093+8
8376	mov	r1, r4
8377	ldr	r0, .L1093+12
8378	bl	List_remove_node
8379	ldrh	r3, [r5]
8380	cbnz	r3, .L1088
8381	movw	r2, #2747
8382	ldr	r1, .L1093+16
8383	ldr	r0, .L1093+20
8384	bl	printf
8385.L1088:
8386	ldrh	r3, [r5]
8387	mov	r0, r4
8388	subs	r3, r3, #1
8389	strh	r3, [r5]	@ movhi
8390	bl	free_data_superblock
8391	mov	r0, r4
8392	bl	FtlGcFreeBadSuperBlk
8393	ldr	r3, .L1093+24
8394	ldrh	r2, [r5]
8395	ldrh	r3, [r3]
8396	add	r3, r3, r2
8397	ldr	r2, .L1093+28
8398	ldrh	r2, [r2]
8399	cmp	r3, r2
8400	ble	.L1092
8401	movw	r2, #2750
8402	ldr	r1, .L1093+16
8403	ldr	r0, .L1093+20
8404	bl	printf
8405.L1092:
8406	movs	r3, #1
8407	b	.L1083
8408.L1085:
8409	ldr	r2, .L1093+32
8410	ldrh	r2, [r2]
8411	cmp	r2, r0
8412	beq	.L1083
8413	ldr	r2, .L1093+36
8414	ldrh	r2, [r2]
8415	cmp	r2, r0
8416	beq	.L1083
8417	ldr	r2, .L1093+40
8418	ldrh	r2, [r2]
8419	cmp	r2, r0
8420	bne	.L1086
8421.L1083:
8422	mov	r0, r3
8423	pop	{r3, r4, r5, pc}
8424.L1084:
8425	bl	List_update_data_list
8426	movs	r3, #0
8427	b	.L1083
8428.L1094:
8429	.align	2
8430.L1093:
8431	.word	.LANCHOR42
8432	.word	.LANCHOR80
8433	.word	.LANCHOR45
8434	.word	.LANCHOR41
8435	.word	.LANCHOR158
8436	.word	.LC1
8437	.word	.LANCHOR48
8438	.word	.LANCHOR5
8439	.word	.LANCHOR51
8440	.word	.LANCHOR52
8441	.word	.LANCHOR53
8442	.size	update_vpc_list, .-update_vpc_list
8443	.section	.text.decrement_vpc_count,"ax",%progbits
8444	.align	1
8445	.global	decrement_vpc_count
8446	.syntax unified
8447	.thumb
8448	.thumb_func
8449	.fpu softvfp
8450	.type	decrement_vpc_count, %function
8451decrement_vpc_count:
8452	@ args = 0, pretend = 0, frame = 0
8453	@ frame_needed = 0, uses_anonymous_args = 0
8454	movw	r3, #65535
8455	push	{r4, r5, r6, lr}
8456	cmp	r0, r3
8457	mov	r4, r0
8458	beq	.L1096
8459	ldr	r5, .L1104
8460	ldr	r3, [r5]
8461	ldrh	r2, [r3, r0, lsl #1]
8462	cbnz	r2, .L1097
8463	mov	r1, r0
8464	ldr	r0, .L1104+4
8465	bl	printf
8466	ldr	r3, [r5]
8467	ldrh	r5, [r3, r4, lsl #1]
8468	cbz	r5, .L1098
8469.L1102:
8470	movs	r5, #0
8471.L1095:
8472	mov	r0, r5
8473	pop	{r4, r5, r6, pc}
8474.L1098:
8475	movw	r2, #2765
8476.L1103:
8477	ldr	r1, .L1104+8
8478	ldr	r0, .L1104+12
8479	bl	printf
8480	b	.L1095
8481.L1097:
8482	subs	r2, r2, #1
8483	strh	r2, [r3, r0, lsl #1]	@ movhi
8484.L1096:
8485	ldr	r6, .L1104+16
8486	movw	r3, #65535
8487	ldrh	r0, [r6]
8488	cmp	r0, r3
8489	bne	.L1100
8490	strh	r4, [r6]	@ movhi
8491	b	.L1102
8492.L1100:
8493	cmp	r4, r0
8494	beq	.L1102
8495	bl	update_vpc_list
8496	ldr	r3, .L1104+20
8497	adds	r5, r0, #0
8498	ldr	r2, .L1104+24
8499	it	ne
8500	movne	r5, #1
8501	strh	r4, [r6]	@ movhi
8502	ldr	r3, [r3]
8503	ldr	r2, [r2]
8504	subs	r3, r3, r2
8505	asrs	r2, r3, #1
8506	ldr	r3, .L1104+28
8507	muls	r3, r2, r3
8508	ldr	r2, .L1104
8509	ldr	r2, [r2]
8510	uxth	r1, r3
8511	ldrh	r2, [r2, r1, lsl #1]
8512	cmp	r2, #0
8513	bne	.L1095
8514	cmp	r4, r1
8515	beq	.L1095
8516	movw	r2, #2781
8517	b	.L1103
8518.L1105:
8519	.align	2
8520.L1104:
8521	.word	.LANCHOR42
8522	.word	.LC101
8523	.word	.LANCHOR159
8524	.word	.LC1
8525	.word	.LANCHOR150
8526	.word	.LANCHOR41
8527	.word	.LANCHOR40
8528	.word	-1431655765
8529	.size	decrement_vpc_count, .-decrement_vpc_count
8530	.section	.text.FtlWriteDump_data,"ax",%progbits
8531	.align	1
8532	.global	FtlWriteDump_data
8533	.syntax unified
8534	.thumb
8535	.thumb_func
8536	.fpu softvfp
8537	.type	FtlWriteDump_data, %function
8538FtlWriteDump_data:
8539	@ args = 0, pretend = 0, frame = 24
8540	@ frame_needed = 0, uses_anonymous_args = 0
8541	push	{r4, r5, r6, r7, r8, r10, fp, lr}
8542	sub	sp, sp, #24
8543	ldr	r4, .L1125
8544	ldrh	r2, [r4, #4]
8545	cmp	r2, #0
8546	beq	.L1107
8547	ldrb	r3, [r4, #8]	@ zero_extendqisi2
8548	cmp	r3, #0
8549	bne	.L1107
8550	ldr	r3, .L1125+4
8551	ldrb	r1, [r4, #7]	@ zero_extendqisi2
8552	ldrh	r3, [r3]
8553	muls	r3, r1, r3
8554	cmp	r2, r3
8555	beq	.L1107
8556	ldrb	r7, [r4, #10]	@ zero_extendqisi2
8557	cbnz	r7, .L1106
8558	ldr	r3, .L1125+8
8559	mov	r2, r7
8560	mov	r1, sp
8561	ldr	r6, [r3]
8562	ldr	r3, .L1125+12
8563	subs	r6, r6, #1
8564	mov	r0, r6
8565	ldrh	r8, [r3]
8566	bl	log2phys
8567	ldr	r2, .L1125+16
8568	ldr	r3, [sp]
8569	str	r6, [sp, #20]
8570	ldr	r0, [r2]
8571	ldr	r2, .L1125+20
8572	str	r3, [sp, #8]
8573	adds	r3, r3, #1
8574	str	r0, [sp, #12]
8575	ldr	r5, [r2]
8576	str	r5, [sp, #16]
8577	str	r7, [r5, #4]
8578	beq	.L1109
8579	mov	r2, r7
8580	movs	r1, #1
8581	add	r0, sp, #4
8582	bl	FlashReadPages
8583.L1110:
8584	ldr	fp, .L1125
8585	lsl	r8, r8, #2
8586	ldr	r10, .L1125+28
8587	movs	r7, #0
8588	movw	r3, #61589
8589	strh	r3, [r5]	@ movhi
8590.L1111:
8591	cmp	r8, r7
8592	bne	.L1115
8593.L1112:
8594	movs	r3, #1
8595.L1124:
8596	strb	r3, [r4, #10]
8597.L1106:
8598	add	sp, sp, #24
8599	@ sp needed
8600	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
8601.L1109:
8602	ldr	r3, .L1125+24
8603	movs	r1, #255
8604	ldrh	r2, [r3]
8605	bl	ftl_memset
8606	b	.L1110
8607.L1115:
8608	ldrh	r3, [r4, #4]
8609	cmp	r3, #0
8610	beq	.L1112
8611	ldr	r3, [sp, #8]
8612	mov	r0, fp
8613	str	r6, [r5, #8]
8614	adds	r7, r7, #1
8615	str	r3, [r5, #12]
8616	ldrh	r3, [r4]
8617	strh	r3, [r5, #2]	@ movhi
8618	bl	get_new_active_ppa
8619	ldr	r3, [r10]
8620	movs	r1, #1
8621	str	r0, [sp, #8]
8622	add	r0, sp, #4
8623	str	r3, [r5, #4]
8624	adds	r3, r3, #1
8625	adds	r2, r3, #1
8626	it	eq
8627	moveq	r3, #0
8628	str	r3, [r10]
8629	movs	r3, #0
8630	mov	r2, r3
8631	bl	FlashProgPages
8632	ldrh	r0, [r4]
8633	bl	decrement_vpc_count
8634	b	.L1111
8635.L1107:
8636	movs	r3, #0
8637	b	.L1124
8638.L1126:
8639	.align	2
8640.L1125:
8641	.word	.LANCHOR51
8642	.word	.LANCHOR19
8643	.word	.LANCHOR61
8644	.word	.LANCHOR3
8645	.word	.LANCHOR107
8646	.word	.LANCHOR108
8647	.word	.LANCHOR23
8648	.word	.LANCHOR71
8649	.size	FtlWriteDump_data, .-FtlWriteDump_data
8650	.section	.text.l2p_flush,"ax",%progbits
8651	.align	1
8652	.global	l2p_flush
8653	.syntax unified
8654	.thumb
8655	.thumb_func
8656	.fpu softvfp
8657	.type	l2p_flush, %function
8658l2p_flush:
8659	@ args = 0, pretend = 0, frame = 0
8660	@ frame_needed = 0, uses_anonymous_args = 0
8661	push	{r4, r5, r6, lr}
8662	movs	r4, #0
8663	ldr	r5, .L1131
8664	ldr	r6, .L1131+4
8665	bl	FtlWriteDump_data
8666.L1128:
8667	ldrh	r3, [r5]
8668	uxth	r0, r4
8669	cmp	r3, r0
8670	bhi	.L1130
8671	movs	r0, #0
8672	pop	{r4, r5, r6, pc}
8673.L1130:
8674	ldr	r2, [r6]
8675	uxth	r3, r4
8676	movs	r1, #12
8677	mla	r3, r1, r3, r2
8678	ldr	r3, [r3, #4]
8679	cmp	r3, #0
8680	bge	.L1129
8681	bl	flush_l2p_region
8682.L1129:
8683	adds	r4, r4, #1
8684	b	.L1128
8685.L1132:
8686	.align	2
8687.L1131:
8688	.word	.LANCHOR33
8689	.word	.LANCHOR55
8690	.size	l2p_flush, .-l2p_flush
8691	.section	.text.FtlRecoverySuperblock,"ax",%progbits
8692	.align	1
8693	.global	FtlRecoverySuperblock
8694	.syntax unified
8695	.thumb
8696	.thumb_func
8697	.fpu softvfp
8698	.type	FtlRecoverySuperblock, %function
8699FtlRecoverySuperblock:
8700	@ args = 0, pretend = 0, frame = 48
8701	@ frame_needed = 0, uses_anonymous_args = 0
8702	ldrh	r3, [r0]
8703	movw	r2, #65535
8704	push	{r4, r5, r6, r7, r8, r10, fp, lr}
8705	mov	r8, r0
8706	sub	sp, sp, #48
8707	cmp	r3, r2
8708	beq	.L1262
8709	ldrh	r3, [r0, #2]
8710	str	r3, [sp, #4]
8711	ldrb	r3, [r0, #6]	@ zero_extendqisi2
8712	ldr	r1, [sp, #4]
8713	str	r3, [sp, #20]
8714	ldr	r3, .L1270
8715	ldrh	r3, [r3]
8716	cmp	r3, r1
8717	mov	r3, #0
8718	bne	.L1136
8719	strh	r3, [r0, #4]	@ movhi
8720.L1268:
8721	strb	r3, [r8, #6]
8722.L1262:
8723	movs	r0, #0
8724	add	sp, sp, #48
8725	@ sp needed
8726	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
8727.L1136:
8728	ldrh	r0, [r0, #16]
8729.L1137:
8730	cmp	r0, r2
8731	uxth	r5, r3
8732	add	r3, r3, #1
8733	beq	.L1138
8734	movs	r1, #1
8735	bl	FtlGetLastWrittenPage
8736	mov	r4, r0
8737	adds	r0, r0, #1
8738	beq	.L1139
8739	ldr	r3, .L1270+4
8740	movs	r2, #0
8741	mov	r5, r2
8742	movw	fp, #65535
8743	mov	r10, #20
8744	ldrh	ip, [r3]
8745	ldr	r3, .L1270+8
8746	ldr	r0, [r3]
8747	ldr	r3, .L1270+12
8748	ldr	r3, [r3]
8749	str	r3, [sp, #8]
8750	ldr	r3, .L1270+16
8751	ldrh	r7, [r3]
8752	ldr	r3, .L1270+20
8753	ldr	r3, [r3]
8754	str	r3, [sp, #12]
8755	ldr	r3, .L1270+24
8756	ldrh	lr, [r3]
8757	add	r3, r8, #16
8758	str	r3, [sp, #16]
8759	str	r3, [sp]
8760.L1140:
8761	uxth	r3, r2
8762	cmp	ip, r3
8763	bhi	.L1144
8764	movs	r2, #0
8765	mov	r1, r5
8766	bl	FlashReadPages
8767	ldr	r2, .L1270+28
8768	uxth	r1, r4
8769	movw	fp, #65535
8770	str	r1, [sp, #12]
8771	ldr	r3, [r2]
8772	subs	r3, r3, #1
8773	str	r3, [sp]
8774	ldr	r3, .L1270+8
8775	ldr	r10, [r3]
8776	movs	r3, #0
8777	mov	r7, r10
8778.L1145:
8779	uxth	r1, r3
8780	cmp	r5, r1
8781	bhi	.L1150
8782	bne	.L1148
8783	adds	r3, r4, #1
8784	uxth	r3, r3
8785	str	r3, [sp, #8]
8786.L1263:
8787	ldr	r0, [r10, #4]
8788	ubfx	r0, r0, #10, #16
8789	bl	P2V_plane
8790	ldr	r3, .L1270
8791	mov	r10, r0
8792	ldr	r2, [sp, #8]
8793	ldrh	r3, [r3]
8794	cmp	r3, r2
8795	bne	.L1152
8796	ldrh	r3, [sp, #8]
8797	strh	r3, [r8, #2]	@ movhi
8798	movs	r3, #0
8799	strb	r3, [r8, #6]
8800	strh	r3, [r8, #4]	@ movhi
8801.L1152:
8802	ldr	r3, [sp, #8]
8803	ldr	r2, [sp, #4]
8804	cmp	r3, r2
8805	bne	.L1153
8806	ldr	r3, [sp, #20]
8807	cmp	r10, r3
8808	bne	.L1153
8809	ldr	r1, [sp, #8]
8810	mov	r2, r10
8811.L1269:
8812	mov	r0, r8
8813	bl	ftl_sb_update_avl_pages
8814	b	.L1262
8815.L1138:
8816	uxth	r1, r3
8817	adds	r1, r1, #8
8818	ldrh	r0, [r8, r1, lsl #1]
8819	b	.L1137
8820.L1139:
8821	ldr	r3, [sp, #4]
8822	cbz	r3, .L1141
8823	movw	r2, #1755
8824	ldr	r1, .L1270+32
8825	ldr	r0, .L1270+36
8826	bl	printf
8827.L1141:
8828	ldr	r3, [sp, #20]
8829	cbz	r3, .L1142
8830	cmp	r5, r3
8831	beq	.L1142
8832	movw	r2, #1756
8833	ldr	r1, .L1270+32
8834	ldr	r0, .L1270+36
8835	bl	printf
8836.L1142:
8837	movs	r3, #0
8838	strh	r3, [r8, #2]	@ movhi
8839	b	.L1268
8840.L1144:
8841	ldr	r1, [sp]
8842	ldrh	r3, [r1], #2
8843	cmp	r3, fp
8844	str	r1, [sp]
8845	beq	.L1143
8846	mla	r1, r10, r5, r0
8847	ldr	r6, [sp, #8]
8848	orr	r3, r4, r3, lsl #10
8849	str	r3, [r1, #4]
8850	mul	r3, r7, r5
8851	bic	r3, r3, #3
8852	add	r3, r3, r6
8853	ldr	r6, [sp, #12]
8854	str	r3, [r1, #8]
8855	mul	r3, lr, r5
8856	adds	r5, r5, #1
8857	uxth	r5, r5
8858	bic	r3, r3, #3
8859	add	r3, r3, r6
8860	str	r3, [r1, #12]
8861.L1143:
8862	adds	r2, r2, #1
8863	b	.L1140
8864.L1150:
8865	ldr	r1, [r7]
8866	cbnz	r1, .L1146
8867	ldr	r1, [r7, #12]
8868	ldr	r6, [r1, #4]
8869	str	r1, [sp, #8]
8870	adds	r1, r6, #1
8871	beq	.L1147
8872	ldr	r1, [r2]
8873	mov	r0, r6
8874	bl	ftl_cmp_data_ver
8875	cbz	r0, .L1147
8876	adds	r6, r6, #1
8877	str	r6, [r2]
8878.L1147:
8879	ldr	r1, [sp, #8]
8880	ldr	r1, [r1]
8881	adds	r1, r1, #1
8882	bne	.L1149
8883.L1148:
8884	uxth	r2, r4
8885	uxth	r3, r3
8886	str	r2, [sp, #8]
8887	movs	r2, #20
8888	mla	r10, r2, r3, r10
8889	b	.L1263
8890.L1146:
8891	ldr	fp, [sp, #12]
8892.L1149:
8893	adds	r3, r3, #1
8894	adds	r7, r7, #20
8895	b	.L1145
8896.L1153:
8897	movw	r3, #65535
8898	cmp	fp, r3
8899	bne	.L1154
8900	ldrb	r3, [r8, #8]	@ zero_extendqisi2
8901	cmp	r3, #0
8902	bne	.L1155
8903.L1154:
8904	ldr	r3, .L1270+40
8905	uxth	r6, r4
8906	uxth	r4, r4
8907	ldr	r7, .L1270+8
8908	ldr	r2, [r3]
8909	adds	r2, r2, #1
8910	itt	eq
8911	ldreq	r2, [sp]
8912	streq	r2, [r3]
8913	ldr	r3, [sp, #4]
8914	adds	r3, r3, #7
8915	cmp	r4, r3
8916	itet	gt
8917	subgt	r4, r6, #7
8918	ldrle	r4, [sp, #4]
8919	uxthgt	r4, r4
8920.L1158:
8921	cmp	r4, r6
8922	bhi	.L1168
8923	ldr	r3, .L1270+4
8924	movw	lr, #65535
8925	ldr	r0, [r7]
8926	mov	ip, #20
8927	ldrh	fp, [r3]
8928	ldr	r3, [sp, #16]
8929	str	r3, [sp, #12]
8930	movs	r3, #0
8931	mov	r5, r3
8932	b	.L1169
8933.L1160:
8934	ldr	r1, [sp, #12]
8935	ldrh	r2, [r1], #2
8936	cmp	r2, lr
8937	str	r1, [sp, #12]
8938	beq	.L1159
8939	mla	r1, ip, r5, r0
8940	adds	r5, r5, #1
8941	orr	r2, r4, r2, lsl #10
8942	uxth	r5, r5
8943	str	r2, [r1, #4]
8944.L1159:
8945	adds	r3, r3, #1
8946.L1169:
8947	uxth	r2, r3
8948	cmp	fp, r2
8949	bhi	.L1160
8950	mov	r1, r5
8951	movs	r2, #0
8952	bl	FlashReadPages
8953	ldr	r3, .L1270+40
8954	movs	r1, #20
8955	movs	r0, #0
8956	movw	ip, #65535
8957	ldr	r2, [r3]
8958	ldr	r3, [r7]
8959	mla	r5, r1, r5, r3
8960.L1161:
8961	cmp	r3, r5
8962	bne	.L1166
8963	cbz	r0, .L1167
8964	ldr	r3, .L1270+40
8965	str	r2, [r3]
8966.L1167:
8967	adds	r4, r4, #1
8968	uxth	r4, r4
8969	b	.L1158
8970.L1271:
8971	.align	2
8972.L1270:
8973	.word	.LANCHOR19
8974	.word	.LANCHOR3
8975	.word	.LANCHOR120
8976	.word	.LANCHOR91
8977	.word	.LANCHOR23
8978	.word	.LANCHOR92
8979	.word	.LANCHOR24
8980	.word	.LANCHOR71
8981	.word	.LANCHOR160
8982	.word	.LC1
8983	.word	.LANCHOR153
8984.L1166:
8985	ldr	r1, [r3]
8986	cmp	r1, #0
8987	beq	.L1162
8988	cbz	r0, .L1155
8989.L1264:
8990	ldr	r3, .L1272
8991	str	r2, [r3]
8992.L1155:
8993	ldr	r3, .L1272+4
8994	movs	r2, #1
8995	ldr	r0, .L1272+8
8996	ldr	r6, .L1272+12
8997	strh	r2, [r3]	@ movhi
8998	bl	FtlMapBlkWriteDump_data
8999	ldr	fp, [sp, #4]
9000.L1170:
9001	ldr	r3, .L1272+16
9002	movw	lr, #65535
9003	ldr	r0, [r6]
9004	movs	r7, #20
9005	ldr	r1, [sp, #16]
9006	ldrh	r4, [r3]
9007	movs	r3, #0
9008	str	r3, [sp, #12]
9009.L1171:
9010	uxth	r2, r3
9011	cmp	r2, r4
9012	bcc	.L1173
9013	movs	r2, #0
9014	ldr	r1, [sp, #12]
9015	bl	FlashReadPages
9016	movs	r3, #0
9017.L1267:
9018	str	r3, [sp, #24]
9019	ldr	r2, [sp, #12]
9020	ldrh	r3, [sp, #24]
9021	cmp	r2, r3
9022	bhi	.L1202
9023	ldr	r3, .L1272+20
9024	add	fp, fp, #1
9025	uxth	fp, fp
9026	ldrh	r3, [r3]
9027	cmp	r3, fp
9028	bne	.L1170
9029	ldr	r2, .L1272+16
9030	movw	r0, #65535
9031	movs	r3, #0
9032	strh	fp, [r8, #2]	@ movhi
9033	strh	r3, [r8, #4]	@ movhi
9034	ldrh	r2, [r2]
9035.L1203:
9036	uxth	r1, r3
9037	cmp	r1, r2
9038	bcs	.L1262
9039	ldr	r1, [sp, #16]
9040	ldrh	r4, [r1], #2
9041	cmp	r4, r0
9042	str	r1, [sp, #16]
9043	add	r1, r3, #1
9044	bne	.L1268
9045	mov	r3, r1
9046	b	.L1203
9047.L1162:
9048	ldr	r1, [r3, #12]
9049	ldrh	lr, [r1]
9050	cmp	lr, ip
9051	beq	.L1165
9052	ldr	r1, [r1, #4]
9053	cmp	r1, #-1
9054	itt	ne
9055	movne	r2, r1
9056	movne	r0, #1
9057.L1165:
9058	adds	r3, r3, #20
9059	b	.L1161
9060.L1168:
9061	mov	r2, #-1
9062	b	.L1264
9063.L1173:
9064	ldrh	r2, [r1], #2
9065	cmp	r2, lr
9066	beq	.L1172
9067	ldr	r5, [sp, #12]
9068	orr	r2, fp, r2, lsl #10
9069	mla	ip, r7, r5, r0
9070	str	r2, [ip, #4]
9071	mov	r2, r5
9072	adds	r2, r2, #1
9073	uxth	r2, r2
9074	str	r2, [sp, #12]
9075.L1172:
9076	adds	r3, r3, #1
9077	b	.L1171
9078.L1202:
9079	ldr	r3, [sp, #24]
9080	movs	r5, #20
9081	muls	r5, r3, r5
9082	ldr	r3, [r6]
9083	str	r3, [sp, #28]
9084	adds	r7, r3, r5
9085	ldr	r4, [r7, #4]
9086	ubfx	r0, r4, #10, #16
9087	str	r4, [sp, #44]
9088	bl	P2V_plane
9089	ldr	r3, [sp, #4]
9090	cmp	fp, r3
9091	bcc	.L1175
9092	ldr	r3, [sp, #28]
9093	bne	.L1176
9094	ldr	r2, [sp, #20]
9095	cmp	r2, r0
9096	bhi	.L1175
9097.L1176:
9098	ldr	r2, [sp, #8]
9099	cmp	fp, r2
9100	bne	.L1177
9101	cmp	r10, r0
9102	beq	.L1178
9103.L1177:
9104	ldr	r3, [r3, r5]
9105	adds	r3, r3, #1
9106	beq	.L1179
9107	ldr	r3, [r7, #12]
9108	movw	r2, #61589
9109	ldrh	r1, [r3]
9110	cmp	r1, r2
9111	beq	.L1180
9112.L1186:
9113	ldrh	r0, [r8]
9114.L1266:
9115	bl	decrement_vpc_count
9116.L1175:
9117	ldr	r3, [sp, #24]
9118	adds	r3, r3, #1
9119	b	.L1267
9120.L1180:
9121	ldr	r2, [r3, #4]
9122	str	r2, [sp]
9123	adds	r2, r2, #1
9124	beq	.L1181
9125	ldr	r2, .L1272+24
9126	ldr	r0, [sp]
9127	ldr	r1, [r2]
9128	bl	ftl_cmp_data_ver
9129	cbz	r0, .L1181
9130	ldr	r1, [sp]
9131	adds	r1, r1, #1
9132	str	r1, [r2]
9133.L1181:
9134	ldr	r4, [r3, #8]
9135	add	r1, sp, #40
9136	ldr	r3, [r3, #12]
9137	movs	r2, #0
9138	mov	r0, r4
9139	str	r3, [sp, #36]
9140	bl	log2phys
9141	ldr	r3, .L1272
9142	ldr	r1, [r3]
9143	adds	r3, r1, #1
9144	beq	.L1182
9145	ldr	r0, [sp]
9146	bl	ftl_cmp_data_ver
9147	cmp	r0, #0
9148	beq	.L1182
9149	ldr	r3, [sp, #36]
9150	adds	r7, r3, #1
9151	beq	.L1183
9152	ldr	r0, [r6]
9153	movs	r2, #0
9154	movs	r1, #1
9155	add	r0, r0, r5
9156	str	r3, [r0, #4]
9157	ldr	r7, [r0, #12]
9158	bl	FlashReadPages
9159	ldr	r2, [r6]
9160	ldr	r1, [r2, r5]
9161	adds	r3, r2, r5
9162	adds	r1, r1, #1
9163	bne	.L1184
9164.L1185:
9165	mov	r3, #-1
9166	ldrh	r0, [r8]
9167	str	r3, [sp, #36]
9168	bl	decrement_vpc_count
9169.L1193:
9170	ldr	r7, [sp, #36]
9171	adds	r0, r7, #1
9172	beq	.L1175
9173.L1206:
9174	ubfx	r0, r7, #10, #16
9175	bl	P2V_block_in_plane
9176	ldr	r3, .L1272+28
9177	mov	r4, r0
9178	ldrh	r3, [r3]
9179	cmp	r3, r0
9180	bhi	.L1198
9181	movw	r2, #2006
9182	ldr	r1, .L1272+32
9183	ldr	r0, .L1272+36
9184	bl	printf
9185.L1198:
9186	ldr	r3, .L1272+40
9187	ldr	r3, [r3]
9188	ldrh	r3, [r3, r4, lsl #1]
9189	cmp	r3, #0
9190	beq	.L1199
9191	mov	r0, r4
9192	b	.L1266
9193.L1183:
9194	ldr	r3, [sp, #44]
9195	ldr	r2, [sp, #40]
9196	cmp	r2, r3
9197	bne	.L1186
9198	movs	r2, #1
9199	add	r1, sp, #36
9200	mov	r0, r4
9201	bl	log2phys
9202	b	.L1186
9203.L1184:
9204	ldr	r1, [r7, #8]
9205	cmp	r4, r1
9206	bne	.L1185
9207	ldr	r0, .L1272
9208	ldr	r1, [r7, #4]
9209	ldr	r0, [r0]
9210	str	r1, [sp, #28]
9211	bl	ftl_cmp_data_ver
9212	cmp	r0, #0
9213	beq	.L1185
9214	ldr	r1, [sp, #40]
9215	ldr	r0, [sp, #44]
9216	cmp	r1, r0
9217	bne	.L1188
9218.L1191:
9219	ldr	r1, [sp, #36]
9220	mov	r0, r4
9221	bl	FtlReUsePrevPpa
9222	b	.L1185
9223.L1188:
9224	ldr	r0, [sp, #36]
9225	cmp	r1, r0
9226	beq	.L1185
9227	adds	r0, r1, #1
9228	beq	.L1189
9229	str	r1, [r3, #4]
9230	movs	r2, #0
9231	movs	r1, #1
9232	mov	r0, r3
9233	ldr	r7, [r3, #12]
9234	bl	FlashReadPages
9235.L1190:
9236	ldr	r3, [r6]
9237	ldr	r3, [r3, r5]
9238	adds	r3, r3, #1
9239	beq	.L1191
9240	ldr	r3, [r7, #4]
9241	ldr	r2, .L1272
9242	mov	r1, r3
9243	ldr	r0, [r2]
9244	bl	ftl_cmp_data_ver
9245	cmp	r0, #0
9246	beq	.L1191
9247	mov	r1, r3
9248	ldr	r0, [sp, #28]
9249	bl	ftl_cmp_data_ver
9250	cmp	r0, #0
9251	beq	.L1185
9252	b	.L1191
9253.L1189:
9254	str	r1, [r2, r5]
9255	b	.L1190
9256.L1273:
9257	.align	2
9258.L1272:
9259	.word	.LANCHOR153
9260	.word	.LANCHOR161
9261	.word	.LANCHOR144
9262	.word	.LANCHOR120
9263	.word	.LANCHOR3
9264	.word	.LANCHOR19
9265	.word	.LANCHOR71
9266	.word	.LANCHOR5
9267	.word	.LANCHOR160
9268	.word	.LC1
9269	.word	.LANCHOR42
9270.L1182:
9271	ldr	r3, [sp, #44]
9272	ldr	r2, [sp, #40]
9273	cmp	r2, r3
9274	beq	.L1193
9275	movs	r2, #1
9276	add	r1, sp, #44
9277	mov	r0, r4
9278	bl	log2phys
9279	ldr	r7, [sp, #40]
9280	adds	r5, r7, #1
9281	beq	.L1193
9282	ldr	r3, [sp, #36]
9283	cmp	r7, r3
9284	beq	.L1206
9285	ubfx	r0, r7, #10, #16
9286	bl	P2V_block_in_plane
9287	ldr	r3, .L1274
9288	ldrh	r3, [r3]
9289	cmp	r3, r0
9290	beq	.L1197
9291	ldr	r3, .L1274+4
9292	ldrh	r3, [r3]
9293	cmp	r3, r0
9294	beq	.L1197
9295	ldr	r3, .L1274+8
9296	ldrh	r3, [r3]
9297	cmp	r3, r0
9298	bne	.L1193
9299.L1197:
9300	ldr	r0, [r6]
9301	movs	r2, #0
9302	movs	r1, #1
9303	str	r7, [r0, #4]
9304	ldr	r5, [r0, #12]
9305	bl	FlashReadPages
9306	ldr	r3, [r6]
9307	ldr	r3, [r3]
9308	adds	r3, r3, #1
9309	beq	.L1193
9310	ldr	r1, [r5, #4]
9311	ldr	r0, [sp]
9312	bl	ftl_cmp_data_ver
9313	cmp	r0, #0
9314	bne	.L1193
9315	movs	r2, #1
9316	add	r1, sp, #40
9317	mov	r0, r4
9318	bl	log2phys
9319	b	.L1193
9320.L1199:
9321	mov	r1, r4
9322	ldr	r0, .L1274+12
9323	bl	printf
9324	b	.L1175
9325.L1179:
9326	ldr	r3, .L1274+16
9327	ldr	r3, [r3]
9328	cmp	r3, #31
9329	bhi	.L1200
9330	ldr	r2, .L1274+20
9331	str	r4, [r2, r3, lsl #2]
9332	adds	r3, r3, #1
9333	ldr	r2, .L1274+16
9334	str	r3, [r2]
9335.L1200:
9336	ldrh	r0, [r8]
9337	bl	decrement_vpc_count
9338	ldr	r3, .L1274+24
9339	ldr	r2, [r3]
9340	adds	r1, r2, #1
9341	bne	.L1201
9342	ldr	r2, [sp]
9343.L1265:
9344	str	r2, [r3]
9345	b	.L1175
9346.L1201:
9347	ldr	r1, [sp]
9348	cmp	r1, r2
9349	bcs	.L1175
9350	mov	r2, r1
9351	b	.L1265
9352.L1178:
9353	strb	r10, [r8, #6]
9354	mov	r2, r10
9355	strh	fp, [r8, #2]	@ movhi
9356	mov	r1, fp
9357	b	.L1269
9358.L1275:
9359	.align	2
9360.L1274:
9361	.word	.LANCHOR51
9362	.word	.LANCHOR52
9363	.word	.LANCHOR53
9364	.word	.LC102
9365	.word	.LANCHOR162
9366	.word	.LANCHOR163
9367	.word	.LANCHOR153
9368	.size	FtlRecoverySuperblock, .-FtlRecoverySuperblock
9369	.section	.text.FtlSuperblockPowerLostFix,"ax",%progbits
9370	.align	1
9371	.global	FtlSuperblockPowerLostFix
9372	.syntax unified
9373	.thumb
9374	.thumb_func
9375	.fpu softvfp
9376	.type	FtlSuperblockPowerLostFix, %function
9377FtlSuperblockPowerLostFix:
9378	@ args = 0, pretend = 0, frame = 24
9379	@ frame_needed = 0, uses_anonymous_args = 0
9380	push	{r4, r5, r6, r7, r8, lr}
9381	mov	r3, #-1
9382	sub	sp, sp, #24
9383	ldr	r2, .L1287
9384	movs	r6, #0
9385	mov	r4, r0
9386	str	r3, [sp, #20]
9387	movs	r7, #7
9388	ldr	r3, .L1287+4
9389	ldr	r5, [r2]
9390	mvn	r2, #2
9391	ldr	r8, .L1287+16
9392	ldr	r3, [r3]
9393	str	r5, [sp, #16]
9394	str	r3, [sp, #12]
9395	str	r2, [r5, #8]
9396	mvn	r2, #1
9397	str	r2, [r5, #12]
9398	ldrh	r2, [r0]
9399	strh	r6, [r5]	@ movhi
9400	strh	r2, [r5, #2]	@ movhi
9401	movw	r2, #61589
9402	str	r2, [r3]
9403	add	r2, r2, #304087040
9404	add	r2, r2, #1269760
9405	addw	r2, r2, #1507
9406	str	r2, [r3, #4]
9407.L1277:
9408	subs	r7, r7, #1
9409	beq	.L1279
9410	ldrh	r3, [r4, #4]
9411	cbnz	r3, .L1278
9412.L1279:
9413	ldr	r3, .L1287+8
9414	ldrh	r1, [r4]
9415	ldrh	r0, [r4, #4]
9416	ldr	r2, [r3]
9417	ldrh	r3, [r2, r1, lsl #1]
9418	subs	r3, r3, r0
9419	strh	r3, [r2, r1, lsl #1]	@ movhi
9420	ldr	r3, .L1287+12
9421	ldrh	r3, [r3]
9422	strh	r3, [r4, #2]	@ movhi
9423	movs	r3, #0
9424	strb	r3, [r4, #6]
9425	strh	r3, [r4, #4]	@ movhi
9426	add	sp, sp, #24
9427	@ sp needed
9428	pop	{r4, r5, r6, r7, r8, pc}
9429.L1278:
9430	mov	r0, r4
9431	bl	get_new_active_ppa
9432	str	r0, [sp, #8]
9433	adds	r0, r0, #1
9434	beq	.L1279
9435	ldr	r3, [r8]
9436	movs	r1, #1
9437	add	r0, sp, #4
9438	str	r3, [r5, #4]
9439	adds	r3, r3, #1
9440	adds	r2, r3, #1
9441	it	eq
9442	moveq	r3, r6
9443	str	r3, [r8]
9444	movs	r3, #0
9445	mov	r2, r3
9446	bl	FlashProgPages
9447	ldrh	r0, [r4]
9448	bl	decrement_vpc_count
9449	b	.L1277
9450.L1288:
9451	.align	2
9452.L1287:
9453	.word	.LANCHOR108
9454	.word	.LANCHOR107
9455	.word	.LANCHOR42
9456	.word	.LANCHOR19
9457	.word	.LANCHOR71
9458	.size	FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
9459	.section	.text.FtlLoadBbt,"ax",%progbits
9460	.align	1
9461	.global	FtlLoadBbt
9462	.syntax unified
9463	.thumb
9464	.thumb_func
9465	.fpu softvfp
9466	.type	FtlLoadBbt, %function
9467FtlLoadBbt:
9468	@ args = 0, pretend = 0, frame = 0
9469	@ frame_needed = 0, uses_anonymous_args = 0
9470	push	{r3, r4, r5, r6, r7, r8, r10, lr}
9471	ldr	r8, .L1318+40
9472	ldr	r4, .L1318
9473	ldr	r3, [r8]
9474	ldr	r7, .L1318+4
9475	mov	r10, r4
9476	str	r3, [r4, #8]
9477	ldr	r3, .L1318+8
9478	ldr	r6, [r3]
9479	str	r6, [r4, #12]
9480	bl	FtlBbtMemInit
9481	ldrh	r5, [r7]
9482	subs	r5, r5, #1
9483	uxth	r5, r5
9484.L1290:
9485	ldrh	r3, [r7]
9486	subs	r3, r3, #15
9487	cmp	r3, r5
9488	bgt	.L1293
9489	lsls	r3, r5, #10
9490	movs	r2, #1
9491	mov	r1, r2
9492	mov	r0, r10
9493	str	r3, [r4, #4]
9494	bl	FlashReadPages
9495	ldr	r3, [r4]
9496	adds	r3, r3, #1
9497	bne	.L1291
9498	ldr	r3, [r4, #4]
9499	movs	r2, #1
9500	mov	r1, r2
9501	mov	r0, r10
9502	adds	r3, r3, #1
9503	str	r3, [r4, #4]
9504	bl	FlashReadPages
9505.L1291:
9506	ldr	r3, [r4]
9507	adds	r3, r3, #1
9508	beq	.L1292
9509	ldrh	r2, [r6]
9510	movw	r3, #61649
9511	cmp	r2, r3
9512	bne	.L1292
9513	ldr	r3, .L1318+12
9514	ldr	r2, [r6, #4]
9515	strh	r5, [r3]	@ movhi
9516	str	r2, [r3, #8]
9517	ldrh	r2, [r6, #8]
9518	strh	r2, [r3, #4]	@ movhi
9519.L1293:
9520	ldr	r5, .L1318+12
9521	movw	r2, #65535
9522	ldrh	r3, [r5]
9523	cmp	r3, r2
9524	beq	.L1307
9525	ldrh	r3, [r5, #4]
9526	cmp	r3, r2
9527	beq	.L1297
9528	lsls	r3, r3, #10
9529	movs	r2, #1
9530	mov	r1, r2
9531	ldr	r0, .L1318
9532	str	r3, [r4, #4]
9533	bl	FlashReadPages
9534	ldr	r3, [r4]
9535	adds	r3, r3, #1
9536	beq	.L1297
9537	ldrh	r2, [r6]
9538	movw	r3, #61649
9539	cmp	r2, r3
9540	bne	.L1297
9541	ldr	r3, [r6, #4]
9542	ldr	r2, [r5, #8]
9543	cmp	r3, r2
9544	bls	.L1297
9545	ldrh	r2, [r5, #4]
9546	str	r3, [r5, #8]
9547	ldrh	r3, [r6, #8]
9548	strh	r2, [r5]	@ movhi
9549	strh	r3, [r5, #4]	@ movhi
9550.L1297:
9551	ldr	r10, .L1318
9552	movs	r1, #1
9553	ldrh	r0, [r5]
9554	bl	FtlGetLastWrittenPage
9555	sxth	r7, r0
9556	adds	r0, r0, #1
9557	strh	r0, [r5, #2]	@ movhi
9558.L1299:
9559	cmp	r7, #0
9560	bge	.L1302
9561	movs	r2, #254
9562	ldr	r1, .L1318+16
9563	ldr	r0, .L1318+20
9564	bl	printf
9565.L1301:
9566	ldrh	r3, [r6, #10]
9567	ldrh	r0, [r6, #12]
9568	strh	r3, [r5, #6]	@ movhi
9569	movw	r3, #65535
9570	cmp	r0, r3
9571	beq	.L1304
9572	ldr	r3, .L1318+24
9573	ldr	r2, [r3]
9574	cmp	r0, r2
9575	beq	.L1304
9576	ldr	r3, .L1318+28
9577	ldrh	r3, [r3]
9578	lsrs	r3, r3, #2
9579	cmp	r2, r3
9580	bcs	.L1304
9581	cmp	r0, r3
9582	bcs	.L1304
9583	bl	FtlSysBlkNumInit
9584.L1304:
9585	ldr	r6, .L1318+32
9586	movs	r5, #0
9587	ldr	r7, .L1318+36
9588	ldr	r8, .L1318+44
9589.L1305:
9590	ldrh	r3, [r7]
9591	cmp	r5, r3
9592	bcc	.L1306
9593	movs	r0, #0
9594	pop	{r3, r4, r5, r6, r7, r8, r10, pc}
9595.L1292:
9596	subs	r5, r5, #1
9597	uxth	r5, r5
9598	b	.L1290
9599.L1302:
9600	ldrh	r3, [r5]
9601	movs	r2, #1
9602	mov	r1, r2
9603	mov	r0, r10
9604	orr	r3, r7, r3, lsl #10
9605	str	r3, [r4, #4]
9606	ldr	r3, [r8]
9607	str	r3, [r4, #8]
9608	bl	FlashReadPages
9609	ldr	r3, [r4]
9610	adds	r3, r3, #1
9611	beq	.L1300
9612	ldrh	r2, [r6]
9613	movw	r3, #61649
9614	cmp	r2, r3
9615	beq	.L1301
9616.L1300:
9617	subs	r7, r7, #1
9618	sxth	r7, r7
9619	b	.L1299
9620.L1306:
9621	ldrh	r2, [r8]
9622	ldr	r1, [r4, #8]
9623	ldr	r0, [r6, #4]!
9624	lsls	r2, r2, #2
9625	mla	r1, r5, r2, r1
9626	adds	r5, r5, #1
9627	bl	ftl_memcpy
9628	b	.L1305
9629.L1307:
9630	mov	r0, #-1
9631	pop	{r3, r4, r5, r6, r7, r8, r10, pc}
9632.L1319:
9633	.align	2
9634.L1318:
9635	.word	.LANCHOR106
9636	.word	.LANCHOR17
9637	.word	.LANCHOR108
9638	.word	.LANCHOR37
9639	.word	.LANCHOR164
9640	.word	.LC1
9641	.word	.LANCHOR2
9642	.word	.LANCHOR6
9643	.word	.LANCHOR37+24
9644	.word	.LANCHOR10
9645	.word	.LANCHOR107
9646	.word	.LANCHOR137
9647	.size	FtlLoadBbt, .-FtlLoadBbt
9648	.section	.text.FtlMakeBbt,"ax",%progbits
9649	.align	1
9650	.global	FtlMakeBbt
9651	.syntax unified
9652	.thumb
9653	.thumb_func
9654	.fpu softvfp
9655	.type	FtlMakeBbt, %function
9656FtlMakeBbt:
9657	@ args = 0, pretend = 0, frame = 8
9658	@ frame_needed = 0, uses_anonymous_args = 0
9659	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
9660	movs	r6, #0
9661	ldr	r7, .L1339
9662	bl	FtlBbtMemInit
9663	sub	r8, r7, #18
9664	bl	FtlLoadFactoryBbt
9665.L1321:
9666	ldr	r3, .L1339+4
9667	ldrh	r3, [r3]
9668	cmp	r6, r3
9669	bcc	.L1327
9670	ldr	r5, .L1339+8
9671	movs	r4, #0
9672.L1328:
9673	ldrh	r3, [r5]
9674	uxth	r0, r4
9675	adds	r4, r4, #1
9676	cmp	r3, r0
9677	bhi	.L1329
9678	ldr	r4, .L1339+12
9679	movw	r6, #65535
9680	ldrh	r5, [r4, #12]
9681	subs	r5, r5, #1
9682	uxth	r5, r5
9683.L1330:
9684	ldrh	r3, [r4, #12]
9685	subs	r3, r3, #47
9686	cmp	r3, r5
9687	bgt	.L1334
9688	mov	r0, r5
9689	bl	FtlBbmIsBadBlock
9690	cmp	r0, #1
9691	beq	.L1331
9692	mov	r0, r5
9693	bl	FlashTestBlk
9694	cmp	r0, #0
9695	beq	.L1332
9696	mov	r0, r5
9697	bl	FtlBbmMapBadBlock
9698.L1331:
9699	subs	r5, r5, #1
9700	uxth	r5, r5
9701	b	.L1330
9702.L1327:
9703	ldr	r3, .L1339+16
9704	ldr	r5, .L1339+20
9705	ldrh	r2, [r8, #2]!
9706	ldr	r4, .L1339+24
9707	ldr	r0, [r3]
9708	movw	r3, #65535
9709	ldr	r10, [r5]
9710	cmp	r2, r3
9711	mov	fp, r4
9712	ldr	r3, .L1339+28
9713	str	r0, [r4, #8]
9714	str	r10, [r4, #12]
9715	beq	.L1322
9716	ldrh	r5, [r3]
9717	mov	r0, r4
9718	str	r3, [sp]
9719	mla	r5, r6, r5, r2
9720	lsls	r2, r5, #10
9721	str	r2, [r4, #4]
9722	movs	r2, #1
9723	mov	r1, r2
9724	bl	FlashReadPages
9725	ldr	r3, [sp]
9726	ldr	r1, [r4, #8]
9727	ldr	r0, [r7]
9728	ldrh	r2, [r3]
9729	adds	r2, r2, #7
9730	asrs	r2, r2, #3
9731	bl	ftl_memcpy
9732.L1323:
9733	uxth	r0, r5
9734	adds	r6, r6, #1
9735	adds	r7, r7, #4
9736	bl	FtlBbmMapBadBlock
9737	b	.L1321
9738.L1322:
9739	mov	r1, r6
9740	str	r3, [sp]
9741	bl	FlashGetBadBlockList
9742	ldr	r0, [r4, #8]
9743	ldr	r1, [r7]
9744	bl	FtlBbt2Bitmap
9745	ldr	r3, [sp]
9746	str	r5, [sp, #4]
9747	ldrh	r4, [r3]
9748	subs	r4, r4, #1
9749	uxth	r4, r4
9750.L1324:
9751	ldr	r3, [sp]
9752	ldrh	r0, [r3]
9753	smlabb	r0, r0, r6, r4
9754	uxth	r0, r0
9755	bl	FtlBbmIsBadBlock
9756	cmp	r0, #1
9757	beq	.L1325
9758	ldr	r3, [sp, #4]
9759	movs	r2, #16
9760	movs	r1, #0
9761	strh	r4, [r8]	@ movhi
9762	ldr	r0, [r3]
9763	bl	ftl_memset
9764	ldr	r3, .L1339+16
9765	mov	r2, #4096
9766	movs	r1, #0
9767	ldr	r0, [r3]
9768	bl	ftl_memset
9769	ldr	r2, [sp]
9770	movw	r3, #61664
9771	strh	r3, [r10]	@ movhi
9772	movs	r3, #0
9773	str	r3, [r10, #4]
9774	ldrh	r5, [r2]
9775	ldrh	r3, [r8]
9776	ldr	r1, [r7]
9777	ldr	r0, [fp, #8]
9778	strh	r3, [r10, #2]	@ movhi
9779	mla	r5, r6, r5, r3
9780	lsls	r3, r5, #10
9781	str	r3, [fp, #4]
9782	ldr	r3, .L1339+32
9783	ldrh	r2, [r3]
9784	lsls	r2, r2, #2
9785	bl	ftl_memcpy
9786	movs	r2, #1
9787	ldr	r0, .L1339+24
9788	mov	r1, r2
9789	bl	FlashEraseBlocks
9790	movs	r3, #1
9791	ldr	r0, .L1339+24
9792	mov	r2, r3
9793	mov	r1, r3
9794	bl	FlashProgPages
9795	ldr	r3, [fp]
9796	adds	r3, r3, #1
9797	bne	.L1323
9798	uxth	r0, r5
9799	bl	FtlBbmMapBadBlock
9800	b	.L1324
9801.L1325:
9802	subs	r4, r4, #1
9803	uxth	r4, r4
9804	b	.L1324
9805.L1329:
9806	bl	FtlBbmMapBadBlock
9807	b	.L1328
9808.L1332:
9809	ldrh	r3, [r4]
9810	cmp	r3, r6
9811	bne	.L1333
9812	strh	r5, [r4]	@ movhi
9813	b	.L1331
9814.L1333:
9815	strh	r5, [r4, #4]	@ movhi
9816.L1334:
9817	ldr	r3, .L1339+36
9818	movs	r5, #0
9819	str	r5, [r4, #8]
9820	movs	r1, #1
9821	movs	r2, #2
9822	strh	r5, [r4, #2]	@ movhi
9823	ldr	r0, [r3]
9824	ldrh	r3, [r4]
9825	lsls	r3, r3, #10
9826	str	r3, [r0, #4]
9827	ldrh	r3, [r4, #4]
9828	lsls	r3, r3, #10
9829	str	r3, [r0, #24]
9830	bl	FlashEraseBlocks
9831	ldrh	r0, [r4]
9832	bl	FtlBbmMapBadBlock
9833	ldrh	r0, [r4, #4]
9834	bl	FtlBbmMapBadBlock
9835	bl	FtlBbmTblFlush
9836	ldr	r3, [r4, #8]
9837	ldrh	r2, [r4, #4]
9838	strh	r5, [r4, #2]	@ movhi
9839	adds	r3, r3, #1
9840	str	r3, [r4, #8]
9841	ldrh	r3, [r4]
9842	strh	r2, [r4]	@ movhi
9843	strh	r3, [r4, #4]	@ movhi
9844	bl	FtlBbmTblFlush
9845	mov	r0, r5
9846	add	sp, sp, #8
9847	@ sp needed
9848	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
9849.L1340:
9850	.align	2
9851.L1339:
9852	.word	.LANCHOR37+28
9853	.word	.LANCHOR10
9854	.word	.LANCHOR25
9855	.word	.LANCHOR37
9856	.word	.LANCHOR107
9857	.word	.LANCHOR108
9858	.word	.LANCHOR106
9859	.word	.LANCHOR17
9860	.word	.LANCHOR137
9861	.word	.LANCHOR111
9862	.size	FtlMakeBbt, .-FtlMakeBbt
9863	.section	.text.FtlVendorPartWrite,"ax",%progbits
9864	.align	1
9865	.global	FtlVendorPartWrite
9866	.syntax unified
9867	.thumb
9868	.thumb_func
9869	.fpu softvfp
9870	.type	FtlVendorPartWrite, %function
9871FtlVendorPartWrite:
9872	@ args = 0, pretend = 0, frame = 104
9873	@ frame_needed = 0, uses_anonymous_args = 0
9874	ldr	r3, .L1353
9875	push	{r4, r5, r6, r7, r8, r10, fp, lr}
9876	sub	sp, sp, #104
9877	str	r2, [sp]
9878	adds	r2, r0, r1
9879	mov	r7, r0
9880	mov	r5, r1
9881	ldrh	r3, [r3]
9882	cmp	r2, r3
9883	bhi	.L1349
9884	ldr	r3, .L1353+4
9885	mov	r8, #0
9886	ldrh	r6, [r3]
9887	lsr	r6, r0, r6
9888	lsl	fp, r6, #2
9889.L1343:
9890	cbnz	r5, .L1348
9891.L1341:
9892	mov	r0, r8
9893	add	sp, sp, #104
9894	@ sp needed
9895	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
9896.L1348:
9897	ldr	r3, .L1353+8
9898	mov	r0, r7
9899	ldr	r10, .L1353+24
9900	ldr	r3, [r3]
9901	ldr	r2, [r3, fp]
9902	ldr	r3, .L1353+12
9903	str	r2, [sp, #12]
9904	ldrh	r3, [r3]
9905	mov	r1, r3
9906	str	r3, [sp, #8]
9907	bl	__aeabi_uidivmod
9908	ldr	r3, [sp, #8]
9909	ldr	r2, [sp, #12]
9910	str	r1, [sp, #4]
9911	subs	r4, r3, r1
9912	uxth	r4, r4
9913	cmp	r5, r4
9914	it	cc
9915	uxthcc	r4, r5
9916	cbz	r2, .L1345
9917	cmp	r4, r3
9918	beq	.L1345
9919	ldr	r3, [r10]
9920	add	r0, sp, #20
9921	str	r2, [sp, #24]
9922	movs	r2, #1
9923	mov	r1, r2
9924	str	r3, [sp, #28]
9925	add	r3, sp, #40
9926	str	r3, [sp, #32]
9927	bl	FlashReadPages
9928.L1346:
9929	lsls	r3, r4, #9
9930	ldr	r0, [r10]
9931	subs	r5, r5, r4
9932	mov	r2, r3
9933	str	r3, [sp, #8]
9934	ldm	sp, {r1, r3}
9935	add	r7, r7, r4
9936	add	fp, fp, #4
9937	add	r0, r0, r3, lsl #9
9938	bl	ftl_memcpy
9939	ldr	r2, [r10]
9940	mov	r1, r6
9941	ldr	r0, .L1353+16
9942	adds	r6, r6, #1
9943	bl	FtlMapWritePage
9944	ldr	r3, [sp]
9945	adds	r0, r0, #1
9946	it	eq
9947	moveq	r8, #-1
9948	mov	r2, r3
9949	ldr	r3, [sp, #8]
9950	add	r2, r2, r3
9951	str	r2, [sp]
9952	b	.L1343
9953.L1345:
9954	ldr	r3, .L1353+20
9955	movs	r1, #0
9956	ldr	r0, [r10]
9957	ldrh	r2, [r3]
9958	bl	ftl_memset
9959	b	.L1346
9960.L1349:
9961	mov	r8, #-1
9962	b	.L1341
9963.L1354:
9964	.align	2
9965.L1353:
9966	.word	.LANCHOR16
9967	.word	.LANCHOR22
9968	.word	.LANCHOR133
9969	.word	.LANCHOR12
9970	.word	.LANCHOR149
9971	.word	.LANCHOR23
9972	.word	.LANCHOR124
9973	.size	FtlVendorPartWrite, .-FtlVendorPartWrite
9974	.section	.text.Ftl_save_ext_data,"ax",%progbits
9975	.align	1
9976	.global	Ftl_save_ext_data
9977	.syntax unified
9978	.thumb
9979	.thumb_func
9980	.fpu softvfp
9981	.type	Ftl_save_ext_data, %function
9982Ftl_save_ext_data:
9983	@ args = 0, pretend = 0, frame = 0
9984	@ frame_needed = 0, uses_anonymous_args = 0
9985	@ link register save eliminated.
9986	ldr	r2, .L1357
9987	ldr	r3, .L1357+4
9988	ldr	r1, [r2]
9989	cmp	r1, r3
9990	bne	.L1355
9991	ldr	r3, .L1357+8
9992	movs	r1, #1
9993	movs	r0, #0
9994	str	r3, [r2, #4]
9995	ldr	r3, .L1357+12
9996	ldr	r3, [r3]
9997	str	r3, [r2, #88]
9998	ldr	r3, .L1357+16
9999	ldr	r3, [r3]
10000	str	r3, [r2, #92]
10001	ldr	r3, .L1357+20
10002	ldr	r3, [r3]
10003	str	r3, [r2, #8]
10004	ldr	r3, .L1357+24
10005	ldr	r3, [r3]
10006	str	r3, [r2, #12]
10007	ldr	r3, .L1357+28
10008	ldr	r3, [r3]
10009	str	r3, [r2, #16]
10010	ldr	r3, .L1357+32
10011	ldr	r3, [r3]
10012	str	r3, [r2, #20]
10013	ldr	r3, .L1357+36
10014	ldr	r3, [r3]
10015	str	r3, [r2, #28]
10016	ldr	r3, .L1357+40
10017	ldr	r3, [r3]
10018	str	r3, [r2, #32]
10019	ldr	r3, .L1357+44
10020	ldr	r3, [r3]
10021	str	r3, [r2, #36]
10022	ldr	r3, .L1357+48
10023	ldr	r3, [r3]
10024	str	r3, [r2, #40]
10025	ldr	r3, .L1357+52
10026	ldr	r3, [r3]
10027	str	r3, [r2, #44]
10028	ldr	r3, .L1357+56
10029	ldr	r3, [r3]
10030	str	r3, [r2, #48]
10031	b	FtlVendorPartWrite
10032.L1355:
10033	bx	lr
10034.L1358:
10035	.align	2
10036.L1357:
10037	.word	.LANCHOR81
10038	.word	1179929683
10039	.word	1342177348
10040	.word	.LANCHOR68
10041	.word	.LANCHOR69
10042	.word	.LANCHOR67
10043	.word	.LANCHOR64
10044	.word	.LANCHOR62
10045	.word	.LANCHOR66
10046	.word	.LANCHOR73
10047	.word	.LANCHOR75
10048	.word	.LANCHOR63
10049	.word	.LANCHOR65
10050	.word	.LANCHOR76
10051	.word	.LANCHOR77
10052	.size	Ftl_save_ext_data, .-Ftl_save_ext_data
10053	.section	.text.FtlEctTblFlush,"ax",%progbits
10054	.align	1
10055	.global	FtlEctTblFlush
10056	.syntax unified
10057	.thumb
10058	.thumb_func
10059	.fpu softvfp
10060	.type	FtlEctTblFlush, %function
10061FtlEctTblFlush:
10062	@ args = 0, pretend = 0, frame = 0
10063	@ frame_needed = 0, uses_anonymous_args = 0
10064	ldr	r2, .L1364
10065	push	{r3, lr}
10066	ldrh	r3, [r2]
10067	cmp	r3, #31
10068	itett	ls
10069	addls	r3, r3, #1
10070	movhi	r3, #32
10071	strhls	r3, [r2]	@ movhi
10072	movls	r3, #1
10073	ldr	r2, .L1364+4
10074	cbnz	r0, .L1361
10075	ldr	r1, [r2]
10076	ldr	r0, [r1, #20]
10077	ldr	r1, [r1, #16]
10078	add	r3, r3, r0
10079	cmp	r1, r3
10080	bcc	.L1362
10081.L1361:
10082	ldr	r2, [r2]
10083	movs	r0, #64
10084	ldr	r3, [r2, #16]
10085	str	r3, [r2, #20]
10086	ldr	r3, .L1364+8
10087	str	r3, [r2]
10088	ldr	r3, .L1364+12
10089	ldrh	r1, [r3]
10090	lsls	r3, r1, #9
10091	str	r3, [r2, #12]
10092	ldr	r3, [r2, #8]
10093	adds	r3, r3, #1
10094	str	r3, [r2, #8]
10095	movs	r3, #0
10096	str	r3, [r2, #4]
10097	bl	FtlVendorPartWrite
10098	bl	Ftl_save_ext_data
10099.L1362:
10100	movs	r0, #0
10101	pop	{r3, pc}
10102.L1365:
10103	.align	2
10104.L1364:
10105	.word	.LANCHOR165
10106	.word	.LANCHOR127
10107	.word	1112818501
10108	.word	.LANCHOR125
10109	.size	FtlEctTblFlush, .-FtlEctTblFlush
10110	.section	.text.sftl_vendor_write,"ax",%progbits
10111	.align	1
10112	.global	sftl_vendor_write
10113	.syntax unified
10114	.thumb
10115	.thumb_func
10116	.fpu softvfp
10117	.type	sftl_vendor_write, %function
10118sftl_vendor_write:
10119	@ args = 0, pretend = 0, frame = 0
10120	@ frame_needed = 0, uses_anonymous_args = 0
10121	@ link register save eliminated.
10122	add	r0, r0, #256
10123	b	FtlVendorPartWrite
10124	.size	sftl_vendor_write, .-sftl_vendor_write
10125	.section	.text.FtlVendorPartRead,"ax",%progbits
10126	.align	1
10127	.global	FtlVendorPartRead
10128	.syntax unified
10129	.thumb
10130	.thumb_func
10131	.fpu softvfp
10132	.type	FtlVendorPartRead, %function
10133FtlVendorPartRead:
10134	@ args = 0, pretend = 0, frame = 104
10135	@ frame_needed = 0, uses_anonymous_args = 0
10136	ldr	r3, .L1376
10137	push	{r4, r5, r6, r7, r8, r10, fp, lr}
10138	mov	r8, r2
10139	adds	r2, r0, r1
10140	sub	sp, sp, #104
10141	mov	r6, r0
10142	mov	r5, r1
10143	ldrh	r3, [r3]
10144	cmp	r2, r3
10145	bhi	.L1375
10146	ldr	r3, .L1376+4
10147	movs	r7, #0
10148	ldr	fp, .L1376+16
10149	ldrh	r3, [r3]
10150	lsr	r3, r0, r3
10151	lsls	r3, r3, #2
10152	str	r3, [sp, #4]
10153.L1369:
10154	cbnz	r5, .L1374
10155.L1367:
10156	mov	r0, r7
10157	add	sp, sp, #104
10158	@ sp needed
10159	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
10160.L1374:
10161	ldr	r3, .L1376+8
10162	mov	r0, r6
10163	ldr	r2, [sp, #4]
10164	ldr	r3, [r3]
10165	ldr	r3, [r3, r2]
10166	ldr	r2, .L1376+12
10167	str	r3, [sp, #12]
10168	ldrh	r4, [r2]
10169	mov	r1, r4
10170	bl	__aeabi_uidivmod
10171	subs	r4, r4, r1
10172	ldr	r3, [sp, #12]
10173	uxth	r4, r4
10174	str	r1, [sp, #8]
10175	cmp	r5, r4
10176	it	cc
10177	uxthcc	r4, r5
10178	lsl	r10, r4, #9
10179	cbz	r3, .L1371
10180	str	r3, [sp, #24]
10181	movs	r2, #1
10182	ldr	r3, [fp]
10183	mov	r1, r2
10184	add	r0, sp, #20
10185	str	r3, [sp, #28]
10186	add	r3, sp, #40
10187	str	r3, [sp, #32]
10188	bl	FlashReadPages
10189	ldr	r3, [sp, #20]
10190	mov	r2, r10
10191	ldr	r1, [fp]
10192	mov	r0, r8
10193	adds	r3, r3, #1
10194	ldr	r3, [sp, #8]
10195	it	eq
10196	moveq	r7, #-1
10197	add	r1, r1, r3, lsl #9
10198	bl	ftl_memcpy
10199.L1373:
10200	ldr	r3, [sp, #4]
10201	subs	r5, r5, r4
10202	add	r6, r6, r4
10203	add	r8, r8, r10
10204	adds	r3, r3, #4
10205	str	r3, [sp, #4]
10206	b	.L1369
10207.L1371:
10208	mov	r2, r10
10209	mov	r1, r3
10210	mov	r0, r8
10211	bl	ftl_memset
10212	b	.L1373
10213.L1375:
10214	mov	r7, #-1
10215	b	.L1367
10216.L1377:
10217	.align	2
10218.L1376:
10219	.word	.LANCHOR16
10220	.word	.LANCHOR22
10221	.word	.LANCHOR133
10222	.word	.LANCHOR12
10223	.word	.LANCHOR124
10224	.size	FtlVendorPartRead, .-FtlVendorPartRead
10225	.section	.text.FtlLoadEctTbl,"ax",%progbits
10226	.align	1
10227	.global	FtlLoadEctTbl
10228	.syntax unified
10229	.thumb
10230	.thumb_func
10231	.fpu softvfp
10232	.type	FtlLoadEctTbl, %function
10233FtlLoadEctTbl:
10234	@ args = 0, pretend = 0, frame = 0
10235	@ frame_needed = 0, uses_anonymous_args = 0
10236	push	{r3, r4, r5, lr}
10237	movs	r0, #64
10238	ldr	r4, .L1380
10239	ldr	r5, .L1380+4
10240	ldr	r2, [r4]
10241	ldrh	r1, [r5]
10242	bl	FtlVendorPartRead
10243	ldr	r3, [r4]
10244	ldr	r2, [r3]
10245	ldr	r3, .L1380+8
10246	cmp	r2, r3
10247	beq	.L1379
10248	ldr	r1, .L1380+12
10249	ldr	r0, .L1380+16
10250	bl	printf
10251	ldrh	r2, [r5]
10252	movs	r1, #0
10253	ldr	r0, [r4]
10254	lsls	r2, r2, #9
10255	bl	ftl_memset
10256.L1379:
10257	movs	r0, #0
10258	pop	{r3, r4, r5, pc}
10259.L1381:
10260	.align	2
10261.L1380:
10262	.word	.LANCHOR127
10263	.word	.LANCHOR125
10264	.word	1112818501
10265	.word	.LC103
10266	.word	.LC71
10267	.size	FtlLoadEctTbl, .-FtlLoadEctTbl
10268	.section	.text.Ftl_load_ext_data,"ax",%progbits
10269	.align	1
10270	.global	Ftl_load_ext_data
10271	.syntax unified
10272	.thumb
10273	.thumb_func
10274	.fpu softvfp
10275	.type	Ftl_load_ext_data, %function
10276Ftl_load_ext_data:
10277	@ args = 0, pretend = 0, frame = 0
10278	@ frame_needed = 0, uses_anonymous_args = 0
10279	push	{r3, r4, r5, lr}
10280	movs	r1, #1
10281	ldr	r4, .L1385
10282	movs	r0, #0
10283	ldr	r5, .L1385+4
10284	mov	r2, r4
10285	bl	FtlVendorPartRead
10286	ldr	r3, [r4]
10287	cmp	r3, r5
10288	beq	.L1383
10289	mov	r2, #512
10290	movs	r1, #0
10291	mov	r0, r4
10292	bl	ftl_memset
10293	str	r5, [r4]
10294.L1383:
10295	ldr	r3, [r4]
10296	cmp	r3, r5
10297	ldr	r3, .L1385+8
10298	bne	.L1384
10299	ldr	r1, [r4, #88]
10300	ldr	r2, .L1385+12
10301	str	r1, [r2]
10302	ldr	r1, [r4, #92]
10303	ldr	r2, .L1385+16
10304	str	r1, [r2]
10305	ldr	r1, [r4, #8]
10306	ldr	r2, .L1385+20
10307	str	r1, [r2]
10308	ldr	r1, [r4, #12]
10309	ldr	r2, .L1385+24
10310	str	r1, [r2]
10311	ldr	r1, [r4, #16]
10312	ldr	r2, .L1385+28
10313	str	r1, [r2]
10314	ldr	r1, [r4, #20]
10315	ldr	r2, .L1385+32
10316	str	r1, [r2]
10317	ldr	r2, [r4, #28]
10318	ldr	r1, [r4, #32]
10319	str	r2, [r3]
10320	ldr	r2, .L1385+36
10321	str	r1, [r2]
10322	ldr	r1, [r4, #36]
10323	ldr	r2, .L1385+40
10324	str	r1, [r2]
10325	ldr	r1, [r4, #40]
10326	ldr	r2, .L1385+44
10327	str	r1, [r2]
10328	ldr	r1, [r4, #44]
10329	ldr	r2, .L1385+48
10330	str	r1, [r2]
10331	ldr	r1, [r4, #48]
10332	ldr	r2, .L1385+52
10333	str	r1, [r2]
10334.L1384:
10335	ldr	r1, .L1385+56
10336	ldr	r2, .L1385+60
10337	ldr	r3, [r3]
10338	ldr	r0, [r1]
10339	ldrh	r2, [r2]
10340	ldr	r1, .L1385+64
10341	mla	r0, r0, r2, r3
10342	ldrh	r1, [r1]
10343	bl	__aeabi_uidiv
10344	ldr	r3, .L1385+68
10345	str	r0, [r3]
10346	pop	{r3, r4, r5, pc}
10347.L1386:
10348	.align	2
10349.L1385:
10350	.word	.LANCHOR81
10351	.word	1179929683
10352	.word	.LANCHOR73
10353	.word	.LANCHOR68
10354	.word	.LANCHOR69
10355	.word	.LANCHOR67
10356	.word	.LANCHOR64
10357	.word	.LANCHOR62
10358	.word	.LANCHOR66
10359	.word	.LANCHOR75
10360	.word	.LANCHOR63
10361	.word	.LANCHOR65
10362	.word	.LANCHOR76
10363	.word	.LANCHOR77
10364	.word	.LANCHOR72
10365	.word	.LANCHOR14
10366	.word	.LANCHOR5
10367	.word	.LANCHOR74
10368	.size	Ftl_load_ext_data, .-Ftl_load_ext_data
10369	.section	.text.sftl_vendor_read,"ax",%progbits
10370	.align	1
10371	.global	sftl_vendor_read
10372	.syntax unified
10373	.thumb
10374	.thumb_func
10375	.fpu softvfp
10376	.type	sftl_vendor_read, %function
10377sftl_vendor_read:
10378	@ args = 0, pretend = 0, frame = 0
10379	@ frame_needed = 0, uses_anonymous_args = 0
10380	@ link register save eliminated.
10381	add	r0, r0, #256
10382	b	FtlVendorPartRead
10383	.size	sftl_vendor_read, .-sftl_vendor_read
10384	.section	.text.FtlVpcTblFlush,"ax",%progbits
10385	.align	1
10386	.global	FtlVpcTblFlush
10387	.syntax unified
10388	.thumb
10389	.thumb_func
10390	.fpu softvfp
10391	.type	FtlVpcTblFlush, %function
10392FtlVpcTblFlush:
10393	@ args = 0, pretend = 0, frame = 8
10394	@ frame_needed = 0, uses_anonymous_args = 0
10395	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
10396	movs	r6, #0
10397	ldr	r3, .L1400
10398	movw	fp, #65535
10399	ldr	r8, .L1400+80
10400	ldr	r10, .L1400+84
10401	ldrh	r2, [r3]
10402	ldr	r0, [r8]
10403	ldr	r7, [r10]
10404	ldr	r5, .L1400+4
10405	ldr	r4, .L1400+8
10406	ldr	r1, .L1400+12
10407	str	r0, [r5, #8]
10408	str	r7, [r5, #12]
10409	strh	r2, [r7, #2]	@ movhi
10410	movw	r2, #61604
10411	strh	r2, [r7]	@ movhi
10412	ldr	r2, [r3, #8]
10413	str	r6, [r7, #8]
10414	str	r6, [r7, #12]
10415	str	r2, [r7, #4]
10416	ldr	r2, .L1400+16
10417	str	r3, [sp, #4]
10418	stm	r4, {r1, r2}
10419	ldrh	r2, [r3, #6]
10420	strh	r2, [r4, #8]	@ movhi
10421	ldr	r2, .L1400+20
10422	ldrh	r2, [r2]
10423	strb	r2, [r4, #10]
10424	ldr	r2, .L1400+24
10425	ldrh	r1, [r2]
10426	ldrh	ip, [r2, #2]
10427	strh	r1, [r4, #14]	@ movhi
10428	ldrb	r1, [r2, #6]	@ zero_extendqisi2
10429	ldrb	r2, [r2, #8]	@ zero_extendqisi2
10430	strb	r2, [r4, #11]
10431	orr	r1, r1, ip, lsl #6
10432	ldr	r2, .L1400+28
10433	strh	r1, [r4, #16]	@ movhi
10434	ldrh	r1, [r2]
10435	ldrh	ip, [r2, #2]
10436	strh	r1, [r4, #18]	@ movhi
10437	ldrb	r1, [r2, #6]	@ zero_extendqisi2
10438	ldrb	r2, [r2, #8]	@ zero_extendqisi2
10439	orr	r1, r1, ip, lsl #6
10440	strh	r1, [r4, #20]	@ movhi
10441	strb	r2, [r4, #12]
10442	ldr	r2, .L1400+32
10443	ldrh	r1, [r2]
10444	ldrh	ip, [r2, #2]
10445	strh	r1, [r4, #22]	@ movhi
10446	ldrb	r1, [r2, #6]	@ zero_extendqisi2
10447	ldrb	r2, [r2, #8]	@ zero_extendqisi2
10448	strb	r2, [r4, #13]
10449	orr	r1, r1, ip, lsl #6
10450	ldr	r2, .L1400+36
10451	strh	r1, [r4, #24]	@ movhi
10452	movs	r1, #255
10453	ldr	r2, [r2]
10454	str	r2, [r4, #32]
10455	ldr	r2, .L1400+40
10456	ldr	r2, [r2]
10457	str	r2, [r4, #40]
10458	ldr	r2, .L1400+44
10459	ldr	r2, [r2]
10460	str	r2, [r4, #36]
10461	ldr	r2, .L1400+48
10462	ldrh	r2, [r2]
10463	bl	ftl_memset
10464	mov	r1, r4
10465	ldr	r4, .L1400+52
10466	movs	r2, #48
10467	ldr	r0, [r5, #8]
10468	bl	ftl_memcpy
10469	ldrh	r2, [r4]
10470	ldr	r0, [r5, #8]
10471	ldr	r1, .L1400+56
10472	lsls	r2, r2, #1
10473	adds	r0, r0, #48
10474	ldr	r1, [r1]
10475	bl	ftl_memcpy
10476	ldrh	r0, [r4]
10477	ldr	r1, .L1400+60
10478	ldr	r4, [r5, #8]
10479	lsrs	r2, r0, #3
10480	adds	r0, r0, #24
10481	lsls	r0, r0, #1
10482	ldr	r1, [r1]
10483	adds	r2, r2, #4
10484	bic	r0, r0, #3
10485	add	r0, r0, r4
10486	bl	ftl_memcpy
10487	mov	r0, r6
10488	bl	FtlUpdateVaildLpn
10489	ldr	r3, [sp, #4]
10490	mov	r4, r3
10491.L1389:
10492	ldr	r3, [r8]
10493	ldrh	r2, [r4]
10494	ldr	r0, .L1400+4
10495	str	r3, [r5, #8]
10496	ldr	r3, [r10]
10497	str	r3, [r5, #12]
10498	ldrh	r3, [r4, #2]
10499	orr	r3, r3, r2, lsl #10
10500	str	r3, [r5, #4]
10501	movs	r3, #1
10502	mov	r2, r3
10503	mov	r1, r3
10504	bl	FlashProgPages
10505	ldr	r3, .L1400+64
10506	ldrh	r2, [r4, #2]
10507	ldrh	r3, [r3]
10508	subs	r3, r3, #1
10509	cmp	r2, r3
10510	blt	.L1390
10511	ldrh	r3, [r4]
10512	ldrh	fp, [r4, #4]
10513	strh	r3, [r4, #4]	@ movhi
10514	movs	r3, #0
10515	strh	r3, [r4, #2]	@ movhi
10516	bl	FtlFreeSysBlkQueueOut
10517	ldr	r2, .L1400+40
10518	strh	r0, [r4]	@ movhi
10519	ldr	r3, [r2]
10520	adds	r1, r3, #1
10521	str	r3, [r4, #8]
10522	str	r1, [r2]
10523	lsls	r2, r0, #10
10524	str	r2, [r5, #4]
10525	str	r3, [r7, #4]
10526	movs	r3, #1
10527	strh	r0, [r7, #2]	@ movhi
10528	mov	r2, r3
10529	mov	r1, r3
10530	ldr	r0, .L1400+4
10531	bl	FlashProgPages
10532.L1390:
10533	ldrh	r3, [r4, #2]
10534	ldr	r2, [r5]
10535	adds	r3, r3, #1
10536	uxth	r3, r3
10537	adds	r2, r2, #1
10538	strh	r3, [r4, #2]	@ movhi
10539	bne	.L1391
10540	cmp	r3, #1
10541	bne	.L1392
10542	movw	r2, #1124
10543	ldr	r1, .L1400+68
10544	ldr	r0, .L1400+72
10545	bl	printf
10546.L1392:
10547	ldrh	r3, [r4, #2]
10548	adds	r6, r6, #1
10549	uxth	r6, r6
10550	cmp	r3, #1
10551	itttt	eq
10552	ldreq	r3, .L1400+64
10553	ldrheq	r3, [r3]
10554	addeq	r3, r3, #-1
10555	strheq	r3, [r4, #2]	@ movhi
10556	cmp	r6, #3
10557	bls	.L1389
10558	mov	r2, r6
10559	ldr	r1, [r5, #4]
10560	ldr	r0, .L1400+76
10561	bl	printf
10562.L1395:
10563	b	.L1395
10564.L1391:
10565	cmp	r3, #1
10566	beq	.L1389
10567	movw	r3, #65535
10568	cmp	fp, r3
10569	beq	.L1396
10570	movs	r1, #1
10571	mov	r0, fp
10572	bl	FtlFreeSysBlkQueueIn
10573.L1396:
10574	movs	r0, #0
10575	add	sp, sp, #8
10576	@ sp needed
10577	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
10578.L1401:
10579	.align	2
10580.L1400:
10581	.word	.LANCHOR79
10582	.word	.LANCHOR106
10583	.word	.LANCHOR39
10584	.word	1179929683
10585	.word	1342177348
10586	.word	.LANCHOR10
10587	.word	.LANCHOR51
10588	.word	.LANCHOR52
10589	.word	.LANCHOR53
10590	.word	.LANCHOR72
10591	.word	.LANCHOR70
10592	.word	.LANCHOR71
10593	.word	.LANCHOR23
10594	.word	.LANCHOR5
10595	.word	.LANCHOR42
10596	.word	.LANCHOR1
10597	.word	.LANCHOR20
10598	.word	.LANCHOR166
10599	.word	.LC1
10600	.word	.LC104
10601	.word	.LANCHOR107
10602	.word	.LANCHOR108
10603	.size	FtlVpcTblFlush, .-FtlVpcTblFlush
10604	.section	.text.FtlSysFlush,"ax",%progbits
10605	.align	1
10606	.global	FtlSysFlush
10607	.syntax unified
10608	.thumb
10609	.thumb_func
10610	.fpu softvfp
10611	.type	FtlSysFlush, %function
10612FtlSysFlush:
10613	@ args = 0, pretend = 0, frame = 0
10614	@ frame_needed = 0, uses_anonymous_args = 0
10615	push	{r3, lr}
10616	bl	l2p_flush
10617	movs	r0, #1
10618	bl	FtlEctTblFlush
10619	bl	FtlVpcTblFlush
10620	movs	r0, #0
10621	pop	{r3, pc}
10622	.size	FtlSysFlush, .-FtlSysFlush
10623	.section	.text.sftl_deinit,"ax",%progbits
10624	.align	1
10625	.global	sftl_deinit
10626	.syntax unified
10627	.thumb
10628	.thumb_func
10629	.fpu softvfp
10630	.type	sftl_deinit, %function
10631sftl_deinit:
10632	@ args = 0, pretend = 0, frame = 0
10633	@ frame_needed = 0, uses_anonymous_args = 0
10634	push	{r3, lr}
10635	ldr	r3, .L1405
10636	ldr	r3, [r3]
10637	cmp	r3, #1
10638	bne	.L1404
10639	bl	FtlSysFlush
10640.L1404:
10641	movs	r0, #0
10642	pop	{r3, pc}
10643.L1406:
10644	.align	2
10645.L1405:
10646	.word	.LANCHOR86
10647	.size	sftl_deinit, .-sftl_deinit
10648	.section	.text.FtlDiscard,"ax",%progbits
10649	.align	1
10650	.global	FtlDiscard
10651	.syntax unified
10652	.thumb
10653	.thumb_func
10654	.fpu softvfp
10655	.type	FtlDiscard, %function
10656FtlDiscard:
10657	@ args = 0, pretend = 0, frame = 8
10658	@ frame_needed = 0, uses_anonymous_args = 0
10659	ldr	r3, .L1422
10660	adds	r2, r0, r1
10661	push	{r0, r1, r4, r5, r6, r7, r8, lr}
10662	mov	r7, r0
10663	mov	r5, r1
10664	ldr	r3, [r3]
10665	cmp	r2, r3
10666	bhi	.L1415
10667	cmp	r1, #31
10668	bhi	.L1409
10669.L1414:
10670	movs	r0, #0
10671.L1407:
10672	add	sp, sp, #8
10673	@ sp needed
10674	pop	{r4, r5, r6, r7, r8, pc}
10675.L1409:
10676	ldr	r8, .L1422+12
10677	ldrh	r4, [r8]
10678	mov	r1, r4
10679	bl	__aeabi_uidiv
10680	smulbb	r3, r0, r4
10681	mov	r6, r0
10682	subs	r7, r7, r3
10683	uxth	r7, r7
10684	cbz	r7, .L1410
10685	subs	r4, r4, r7
10686	adds	r6, r6, #1
10687	cmp	r4, r5
10688	it	cs
10689	movcs	r4, r5
10690	uxth	r4, r4
10691	subs	r5, r5, r4
10692.L1410:
10693	ldr	r4, .L1422+4
10694	mov	r3, #-1
10695	ldr	r7, .L1422+8
10696	str	r3, [sp, #4]
10697.L1411:
10698	ldrh	r3, [r8]
10699	cmp	r5, r3
10700	bcs	.L1413
10701	ldr	r3, .L1422+4
10702	ldr	r2, [r3]
10703	cmp	r2, #32
10704	bls	.L1414
10705	movs	r4, #0
10706	str	r4, [r3]
10707	bl	l2p_flush
10708	bl	FtlVpcTblFlush
10709	b	.L1414
10710.L1413:
10711	movs	r2, #0
10712	mov	r1, sp
10713	mov	r0, r6
10714	bl	log2phys
10715	ldr	r3, [sp]
10716	adds	r3, r3, #1
10717	beq	.L1412
10718	ldr	r3, [r4]
10719	movs	r2, #1
10720	add	r1, sp, #4
10721	mov	r0, r6
10722	adds	r3, r3, #1
10723	str	r3, [r4]
10724	ldr	r3, [r7]
10725	adds	r3, r3, #1
10726	str	r3, [r7]
10727	bl	log2phys
10728	ldr	r0, [sp]
10729	ubfx	r0, r0, #10, #16
10730	bl	P2V_block_in_plane
10731	bl	decrement_vpc_count
10732.L1412:
10733	ldrh	r3, [r8]
10734	adds	r6, r6, #1
10735	subs	r5, r5, r3
10736	b	.L1411
10737.L1415:
10738	mov	r0, #-1
10739	b	.L1407
10740.L1423:
10741	.align	2
10742.L1422:
10743	.word	.LANCHOR34
10744	.word	.LANCHOR167
10745	.word	.LANCHOR63
10746	.word	.LANCHOR12
10747	.size	FtlDiscard, .-FtlDiscard
10748	.section	.text.FtlVpcCheckAndModify,"ax",%progbits
10749	.align	1
10750	.global	FtlVpcCheckAndModify
10751	.syntax unified
10752	.thumb
10753	.thumb_func
10754	.fpu softvfp
10755	.type	FtlVpcCheckAndModify, %function
10756FtlVpcCheckAndModify:
10757	@ args = 0, pretend = 0, frame = 8
10758	@ frame_needed = 0, uses_anonymous_args = 0
10759	push	{r0, r1, r2, r4, r5, r6, r7, r8, r10, lr}
10760	movs	r5, #0
10761	ldr	r1, .L1436
10762	ldr	r0, .L1436+4
10763	bl	printf
10764	ldr	r3, .L1436+8
10765	movs	r1, #0
10766	ldr	r4, .L1436+12
10767	ldr	r6, .L1436+16
10768	ldrh	r2, [r3]
10769	ldr	r0, [r4]
10770	lsls	r2, r2, #1
10771	bl	ftl_memset
10772.L1425:
10773	ldr	r3, [r6]
10774	cmp	r5, r3
10775	bcc	.L1427
10776	ldr	r10, .L1436+36
10777	movs	r7, #0
10778	ldr	r8, .L1436+40
10779.L1428:
10780	ldrh	r3, [r10]
10781	uxth	r5, r7
10782	cmp	r3, r5
10783	bhi	.L1432
10784	add	sp, sp, #12
10785	@ sp needed
10786	pop	{r4, r5, r6, r7, r8, r10, pc}
10787.L1427:
10788	movs	r2, #0
10789	add	r1, sp, #4
10790	mov	r0, r5
10791	bl	log2phys
10792	ldr	r0, [sp, #4]
10793	adds	r3, r0, #1
10794	beq	.L1426
10795	ubfx	r0, r0, #10, #16
10796	bl	P2V_block_in_plane
10797	ldr	r2, [r4]
10798	ldrh	r3, [r2, r0, lsl #1]
10799	adds	r3, r3, #1
10800	strh	r3, [r2, r0, lsl #1]	@ movhi
10801.L1426:
10802	adds	r5, r5, #1
10803	b	.L1425
10804.L1432:
10805	ldr	r3, [r8]
10806	uxth	r6, r7
10807	ldrh	r2, [r3, r6, lsl #1]
10808	ldr	r3, [r4]
10809	ldrh	r3, [r3, r6, lsl #1]
10810	cmp	r2, r3
10811	beq	.L1430
10812	movw	r1, #65535
10813	cmp	r2, r1
10814	beq	.L1430
10815	mov	r1, r6
10816	ldr	r0, .L1436+20
10817	bl	printf
10818	ldr	r3, .L1436+24
10819	ldrh	r3, [r3]
10820	cmp	r3, r5
10821	beq	.L1430
10822	ldr	r3, .L1436+28
10823	ldrh	r3, [r3]
10824	cmp	r3, r5
10825	beq	.L1430
10826	ldr	r3, .L1436+32
10827	ldrh	r3, [r3]
10828	cmp	r3, r5
10829	beq	.L1430
10830	ldr	r3, [r4]
10831	mov	r0, r5
10832	ldrh	r2, [r3, r6, lsl #1]
10833	ldr	r3, [r8]
10834	strh	r2, [r3, r6, lsl #1]	@ movhi
10835	bl	update_vpc_list
10836	bl	l2p_flush
10837	bl	FtlVpcTblFlush
10838.L1430:
10839	adds	r7, r7, #1
10840	b	.L1428
10841.L1437:
10842	.align	2
10843.L1436:
10844	.word	.LANCHOR168
10845	.word	.LC94
10846	.word	.LANCHOR6
10847	.word	.LANCHOR128
10848	.word	.LANCHOR61
10849	.word	.LC105
10850	.word	.LANCHOR51
10851	.word	.LANCHOR53
10852	.word	.LANCHOR52
10853	.word	.LANCHOR5
10854	.word	.LANCHOR42
10855	.size	FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
10856	.section	.text.allocate_new_data_superblock,"ax",%progbits
10857	.align	1
10858	.global	allocate_new_data_superblock
10859	.syntax unified
10860	.thumb
10861	.thumb_func
10862	.fpu softvfp
10863	.type	allocate_new_data_superblock, %function
10864allocate_new_data_superblock:
10865	@ args = 0, pretend = 0, frame = 0
10866	@ frame_needed = 0, uses_anonymous_args = 0
10867	ldr	r3, .L1448
10868	push	{r4, r5, r6, lr}
10869	mov	r6, r0
10870	ldrh	r4, [r0]
10871	ldrh	r3, [r3]
10872	cmp	r3, r4
10873	bcs	.L1439
10874	movw	r2, #2684
10875	ldr	r1, .L1448+4
10876	ldr	r0, .L1448+8
10877	bl	printf
10878.L1439:
10879	movw	r3, #65535
10880	cmp	r4, r3
10881	beq	.L1440
10882	ldr	r3, .L1448+12
10883	mov	r0, r4
10884	ldr	r3, [r3]
10885	ldrh	r3, [r3, r4, lsl #1]
10886	cbz	r3, .L1441
10887	bl	INSERT_DATA_LIST
10888.L1440:
10889	ldr	r5, .L1448+16
10890	movw	r2, #65535
10891	movs	r3, #1
10892	strb	r3, [r6, #8]
10893	ldrh	r0, [r5]
10894	cmp	r0, r2
10895	beq	.L1442
10896	cmp	r4, r0
10897	bne	.L1443
10898	ldr	r3, .L1448+12
10899	ldr	r3, [r3]
10900	ldrh	r3, [r3, r0, lsl #1]
10901	cbz	r3, .L1444
10902.L1443:
10903	bl	update_vpc_list
10904.L1444:
10905	movw	r3, #65535
10906	strh	r3, [r5]	@ movhi
10907.L1442:
10908	mov	r0, r6
10909	bl	allocate_data_superblock
10910	bl	l2p_flush
10911	movs	r0, #0
10912	bl	FtlEctTblFlush
10913	bl	FtlVpcTblFlush
10914	movs	r0, #0
10915	pop	{r4, r5, r6, pc}
10916.L1441:
10917	bl	INSERT_FREE_LIST
10918	b	.L1440
10919.L1449:
10920	.align	2
10921.L1448:
10922	.word	.LANCHOR5
10923	.word	.LANCHOR169
10924	.word	.LC1
10925	.word	.LANCHOR42
10926	.word	.LANCHOR150
10927	.size	allocate_new_data_superblock, .-allocate_new_data_superblock
10928	.section	.text.FtlProgPages,"ax",%progbits
10929	.align	1
10930	.global	FtlProgPages
10931	.syntax unified
10932	.thumb
10933	.thumb_func
10934	.fpu softvfp
10935	.type	FtlProgPages, %function
10936FtlProgPages:
10937	@ args = 0, pretend = 0, frame = 8
10938	@ frame_needed = 0, uses_anonymous_args = 0
10939	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
10940	movs	r6, #0
10941	ldr	r8, .L1464+24
10942	mov	r4, r3
10943	movs	r2, #0
10944	mov	r5, r0
10945	ldrb	r3, [r3, #9]	@ zero_extendqisi2
10946	mov	r10, r1
10947	bl	FlashProgPages
10948.L1451:
10949	cmp	r6, r10
10950	beq	.L1458
10951	ldr	r7, .L1464
10952	b	.L1459
10953.L1454:
10954	ldr	r0, [r5, #4]
10955	ubfx	r0, r0, #10, #16
10956	bl	P2V_block_in_plane
10957	ldrh	r3, [r4]
10958	cmp	r3, r0
10959	bne	.L1452
10960	ldr	r1, [r8]
10961	ldrh	r0, [r4, #4]
10962	ldrh	r2, [r1, r3, lsl #1]
10963	subs	r2, r2, r0
10964	strh	r2, [r1, r3, lsl #1]	@ movhi
10965	ldrh	r3, [r7]
10966	strh	r3, [r4, #2]	@ movhi
10967	movs	r3, #0
10968	strb	r3, [r4, #6]
10969	strh	r3, [r4, #4]	@ movhi
10970.L1452:
10971	ldrh	r3, [r4, #4]
10972	cbnz	r3, .L1453
10973	mov	r0, r4
10974	bl	allocate_new_data_superblock
10975.L1453:
10976	ldr	r2, .L1464+4
10977	ldr	r3, [r2, #96]
10978	adds	r3, r3, #1
10979	str	r3, [r2, #96]
10980	ldr	r0, [r5, #4]
10981	ubfx	r0, r0, #10, #16
10982	bl	FtlGcMarkBadPhyBlk
10983	mov	r0, r4
10984	bl	get_new_active_ppa
10985	movs	r2, #0
10986	str	r0, [r5, #4]
10987	str	r0, [sp, #4]
10988	movs	r1, #1
10989	ldrb	r3, [r4, #9]	@ zero_extendqisi2
10990	mov	r0, r5
10991	bl	FlashProgPages
10992.L1459:
10993	ldr	r3, [r5]
10994	adds	r3, r3, #1
10995	beq	.L1454
10996	ldr	r3, .L1464+8
10997	ldrb	r2, [r4, #6]	@ zero_extendqisi2
10998	ldrh	r3, [r3]
10999	cmp	r2, r3
11000	bcc	.L1455
11001	movw	r2, #933
11002	ldr	r1, .L1464+12
11003	ldr	r0, .L1464+16
11004	bl	printf
11005.L1455:
11006	ldr	r3, [r5, #4]
11007	add	r1, sp, #8
11008	movs	r2, #1
11009	ldr	r0, [r5, #16]
11010	str	r3, [r1, #-4]!
11011	bl	log2phys
11012	ldr	r3, [r5, #12]
11013	ldr	fp, [r3, #12]
11014	ubfx	r0, fp, #10, #16
11015	bl	P2V_block_in_plane
11016	cmp	fp, #-1
11017	mov	r7, r0
11018	beq	.L1456
11019	ldr	r3, [r8]
11020	ldrh	r2, [r3, r0, lsl #1]
11021	cbnz	r2, .L1457
11022	mov	r1, r0
11023	ldr	r0, .L1464+20
11024	bl	printf
11025.L1457:
11026	mov	r0, r7
11027	bl	decrement_vpc_count
11028.L1456:
11029	adds	r6, r6, #1
11030	adds	r5, r5, #20
11031	b	.L1451
11032.L1458:
11033	ldr	r3, .L1464+8
11034	ldrb	r2, [r4, #6]	@ zero_extendqisi2
11035	ldrh	r3, [r3]
11036	cmp	r2, r3
11037	bcc	.L1450
11038	mov	r2, #948
11039	ldr	r1, .L1464+12
11040	ldr	r0, .L1464+16
11041	bl	printf
11042.L1450:
11043	add	sp, sp, #8
11044	@ sp needed
11045	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
11046.L1465:
11047	.align	2
11048.L1464:
11049	.word	.LANCHOR19
11050	.word	.LANCHOR81
11051	.word	.LANCHOR3
11052	.word	.LANCHOR170
11053	.word	.LC1
11054	.word	.LC106
11055	.word	.LANCHOR42
11056	.size	FtlProgPages, .-FtlProgPages
11057	.section	.text.FtlGcFreeTempBlock,"ax",%progbits
11058	.align	1
11059	.global	FtlGcFreeTempBlock
11060	.syntax unified
11061	.thumb
11062	.thumb_func
11063	.fpu softvfp
11064	.type	FtlGcFreeTempBlock, %function
11065FtlGcFreeTempBlock:
11066	@ args = 0, pretend = 0, frame = 16
11067	@ frame_needed = 0, uses_anonymous_args = 0
11068	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
11069	movw	r2, #65535
11070	ldr	r4, .L1492
11071	ldr	r6, .L1492+4
11072	ldrh	r5, [r4]
11073	ldrh	r1, [r6]
11074	cmp	r5, r2
11075	bne	.L1467
11076.L1477:
11077	ldr	r3, .L1492+8
11078	movs	r2, #0
11079	str	r2, [r3]
11080	movw	r3, #65535
11081	ldrh	r2, [r4]
11082	cmp	r2, r3
11083	bne	.L1490
11084.L1468:
11085	movs	r0, #0
11086.L1466:
11087	add	sp, sp, #16
11088	@ sp needed
11089	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
11090.L1467:
11091	cbz	r0, .L1470
11092	ldr	r3, .L1492+12
11093	ldrh	r0, [r3]
11094	cmp	r0, r2
11095	beq	.L1471
11096.L1472:
11097	movs	r1, #2
11098.L1470:
11099	ldr	r0, .L1492
11100	bl	FtlGcScanTempBlk
11101	str	r0, [sp, #12]
11102	adds	r0, r0, #1
11103	beq	.L1473
11104	ldr	r3, .L1492+16
11105	ldr	r2, [r3]
11106	ldrh	r3, [r2, r5, lsl #1]
11107	cmp	r3, #4
11108	bls	.L1474
11109	subs	r3, r3, #5
11110	movs	r0, #1
11111	strh	r3, [r2, r5, lsl #1]	@ movhi
11112	bl	FtlEctTblFlush
11113.L1474:
11114	ldr	r4, .L1492+8
11115	ldr	r2, [r4]
11116	cbnz	r2, .L1475
11117	ldr	r2, .L1492+20
11118	ldr	r0, [sp, #12]
11119	ldr	r3, [r2, #96]
11120	ubfx	r0, r0, #10, #16
11121	adds	r3, r3, #1
11122	str	r3, [r2, #96]
11123	bl	FtlBbmMapBadBlock
11124	bl	FtlBbmTblFlush
11125.L1475:
11126	movs	r3, #0
11127	str	r3, [r4]
11128.L1486:
11129	movs	r0, #1
11130	b	.L1466
11131.L1471:
11132	movs	r2, #0
11133	strh	r2, [r3]	@ movhi
11134	ldr	r3, .L1492+24
11135	ldrh	r3, [r3]
11136	cmp	r3, #17
11137	bhi	.L1472
11138	b	.L1470
11139.L1473:
11140	ldr	r3, .L1492+12
11141	ldrh	r2, [r3]
11142	movw	r3, #65535
11143	cmp	r2, r3
11144	bne	.L1486
11145	b	.L1477
11146.L1490:
11147	ldrb	r1, [r4, #7]	@ zero_extendqisi2
11148	ldrh	r3, [r6]
11149	ldr	r5, .L1492+28
11150	muls	r3, r1, r3
11151	ldrh	r2, [r5]
11152	cmp	r2, r3
11153	beq	.L1478
11154	movs	r2, #162
11155	ldr	r1, .L1492+32
11156	ldr	r0, .L1492+36
11157	bl	printf
11158.L1478:
11159	ldrh	r6, [r6]
11160	ldrb	r3, [r4, #7]	@ zero_extendqisi2
11161	ldr	r2, .L1492+40
11162	ldrh	r0, [r4]
11163	ldr	fp, .L1492+68
11164	smulbb	r3, r3, r6
11165	ldr	r1, [r2]
11166	movs	r6, #0
11167	str	r2, [sp, #4]
11168	strh	r3, [r1, r0, lsl #1]	@ movhi
11169	ldr	r1, .L1492+44
11170	ldrh	r3, [r5]
11171	ldr	r0, [r1]
11172	add	r3, r3, r0
11173	str	r3, [r1]
11174.L1479:
11175	ldrh	r2, [r5]
11176	uxth	r3, r6
11177	cmp	r2, r3
11178	bhi	.L1483
11179	movw	r0, #65535
11180	bl	decrement_vpc_count
11181	ldr	r3, [sp, #4]
11182	ldrh	r0, [r4]
11183	ldr	r3, [r3]
11184	ldrh	r3, [r3, r0, lsl #1]
11185	cmp	r3, #0
11186	beq	.L1484
11187	bl	INSERT_DATA_LIST
11188.L1485:
11189	ldr	r3, .L1492+48
11190	movw	r6, #65535
11191	strh	r6, [r4]	@ movhi
11192	movs	r4, #0
11193	strh	r4, [r5]	@ movhi
11194	strh	r4, [r3]	@ movhi
11195	bl	l2p_flush
11196	bl	FtlVpcTblFlush
11197	ldr	r3, .L1492+24
11198	ldrh	r2, [r3]
11199	ldr	r3, .L1492+52
11200	ldrh	r3, [r3]
11201	add	r3, r3, r3, lsl #1
11202	cmp	r2, r3, asr #2
11203	ble	.L1468
11204	ldr	r3, .L1492+56
11205	movs	r2, #20
11206	strh	r6, [r3]	@ movhi
11207	ldr	r3, .L1492+60
11208	strh	r2, [r3]	@ movhi
11209	b	.L1468
11210.L1483:
11211	uxth	r3, r6
11212	movs	r7, #12
11213	ldr	r2, [fp]
11214	muls	r7, r3, r7
11215	ldr	r3, .L1492+64
11216	ldr	r8, [r3]
11217	add	r10, r8, r7
11218	ldr	r1, [r10, #8]
11219	cmp	r1, r2
11220	bcc	.L1480
11221	movs	r2, #168
11222	ldr	r1, .L1492+32
11223	ldr	r0, .L1492+36
11224	bl	printf
11225.L1480:
11226	movs	r2, #0
11227	add	r1, sp, #12
11228	ldr	r0, [r10, #8]
11229	bl	log2phys
11230	ldr	r2, [sp, #12]
11231	ldr	r0, [r8, r7]
11232	cmp	r0, r2
11233	bne	.L1481
11234	ubfx	r0, r0, #10, #16
11235	bl	P2V_block_in_plane
11236	movs	r2, #1
11237	mov	r7, r0
11238	add	r1, r10, #4
11239	ldr	r0, [r10, #8]
11240	bl	log2phys
11241	mov	r0, r7
11242.L1491:
11243	bl	decrement_vpc_count
11244.L1482:
11245	adds	r6, r6, #1
11246	b	.L1479
11247.L1481:
11248	ldr	r3, [r10, #4]
11249	cmp	r2, r3
11250	beq	.L1482
11251	ldrh	r0, [r4]
11252	b	.L1491
11253.L1484:
11254	bl	INSERT_FREE_LIST
11255	b	.L1485
11256.L1493:
11257	.align	2
11258.L1492:
11259	.word	.LANCHOR53
11260	.word	.LANCHOR19
11261	.word	.LANCHOR152
11262	.word	.LANCHOR156
11263	.word	.LANCHOR43
11264	.word	.LANCHOR81
11265	.word	.LANCHOR48
11266	.word	.LANCHOR97
11267	.word	.LANCHOR171
11268	.word	.LC1
11269	.word	.LANCHOR42
11270	.word	.LANCHOR67
11271	.word	.LANCHOR96
11272	.word	.LANCHOR78
11273	.word	.LANCHOR80
11274	.word	.LANCHOR82
11275	.word	.LANCHOR98
11276	.word	.LANCHOR61
11277	.size	FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
11278	.section	.text.FtlGcPageRecovery,"ax",%progbits
11279	.align	1
11280	.global	FtlGcPageRecovery
11281	.syntax unified
11282	.thumb
11283	.thumb_func
11284	.fpu softvfp
11285	.type	FtlGcPageRecovery, %function
11286FtlGcPageRecovery:
11287	@ args = 0, pretend = 0, frame = 0
11288	@ frame_needed = 0, uses_anonymous_args = 0
11289	push	{r3, r4, r5, lr}
11290	ldr	r4, .L1496
11291	ldr	r5, .L1496+4
11292	ldrh	r1, [r4]
11293	mov	r0, r5
11294	bl	FtlGcScanTempBlk
11295	ldrh	r2, [r5, #2]
11296	ldrh	r3, [r4]
11297	cmp	r2, r3
11298	bcc	.L1494
11299	ldr	r0, .L1496+8
11300	bl	FtlMapBlkWriteDump_data
11301	movs	r0, #0
11302	bl	FtlGcFreeTempBlock
11303	ldr	r3, .L1496+12
11304	movs	r2, #0
11305	str	r2, [r3]
11306.L1494:
11307	pop	{r3, r4, r5, pc}
11308.L1497:
11309	.align	2
11310.L1496:
11311	.word	.LANCHOR19
11312	.word	.LANCHOR53
11313	.word	.LANCHOR144
11314	.word	.LANCHOR152
11315	.size	FtlGcPageRecovery, .-FtlGcPageRecovery
11316	.section	.text.FtlPowerLostRecovery,"ax",%progbits
11317	.align	1
11318	.global	FtlPowerLostRecovery
11319	.syntax unified
11320	.thumb
11321	.thumb_func
11322	.fpu softvfp
11323	.type	FtlPowerLostRecovery, %function
11324FtlPowerLostRecovery:
11325	@ args = 0, pretend = 0, frame = 0
11326	@ frame_needed = 0, uses_anonymous_args = 0
11327	push	{r3, r4, r5, lr}
11328	movs	r4, #0
11329	ldr	r5, .L1499
11330	ldr	r3, .L1499+4
11331	mov	r0, r5
11332	str	r4, [r3]
11333	bl	FtlRecoverySuperblock
11334	mov	r0, r5
11335	ldr	r5, .L1499+8
11336	bl	FtlSlcSuperblockCheck
11337	mov	r0, r5
11338	bl	FtlRecoverySuperblock
11339	mov	r0, r5
11340	bl	FtlSlcSuperblockCheck
11341	bl	FtlGcPageRecovery
11342	movw	r0, #65535
11343	bl	decrement_vpc_count
11344	mov	r0, r4
11345	pop	{r3, r4, r5, pc}
11346.L1500:
11347	.align	2
11348.L1499:
11349	.word	.LANCHOR51
11350	.word	.LANCHOR162
11351	.word	.LANCHOR52
11352	.size	FtlPowerLostRecovery, .-FtlPowerLostRecovery
11353	.section	.text.Ftl_gc_temp_data_write_back,"ax",%progbits
11354	.align	1
11355	.global	Ftl_gc_temp_data_write_back
11356	.syntax unified
11357	.thumb
11358	.thumb_func
11359	.fpu softvfp
11360	.type	Ftl_gc_temp_data_write_back, %function
11361Ftl_gc_temp_data_write_back:
11362	@ args = 0, pretend = 0, frame = 0
11363	@ frame_needed = 0, uses_anonymous_args = 0
11364	push	{r3, r4, r5, r6, r7, lr}
11365	movs	r3, #0
11366	ldr	r4, .L1508
11367	movs	r6, #0
11368	movs	r7, #20
11369	mov	r2, r3
11370	ldr	r5, .L1508+4
11371	ldr	r1, [r4]
11372	ldr	r0, [r5]
11373	bl	FlashProgPages
11374.L1502:
11375	ldr	r1, [r4]
11376	uxth	r3, r6
11377	cmp	r1, r3
11378	bhi	.L1505
11379	ldr	r0, [r5]
11380	bl	FtlGcBufFree
11381	ldr	r3, .L1508+8
11382	movs	r0, #0
11383	str	r0, [r4]
11384	ldrh	r3, [r3, #4]
11385	cbnz	r3, .L1501
11386	movs	r0, #1
11387	bl	FtlGcFreeTempBlock
11388	b	.L1507
11389.L1505:
11390	muls	r3, r7, r3
11391	ldr	r2, [r5]
11392	adds	r6, r6, #1
11393	adds	r1, r2, r3
11394	ldr	r2, [r2, r3]
11395	adds	r3, r2, #1
11396	bne	.L1503
11397	ldr	r3, .L1508+8
11398	movs	r5, #0
11399	ldr	r0, .L1508+12
11400	ldrh	r4, [r3]
11401	ldr	r0, [r0]
11402	strh	r5, [r0, r4, lsl #1]	@ movhi
11403	strh	r2, [r3]	@ movhi
11404	ldr	r2, .L1508+16
11405	ldr	r0, [r1, #4]
11406	ldr	r3, [r2, #96]
11407	ubfx	r0, r0, #10, #16
11408	adds	r3, r3, #1
11409	str	r3, [r2, #96]
11410	bl	FtlBbmMapBadBlock
11411	bl	FtlBbmTblFlush
11412	bl	FtlGcPageVarInit
11413.L1507:
11414	movs	r0, #1
11415.L1501:
11416	pop	{r3, r4, r5, r6, r7, pc}
11417.L1503:
11418	ldr	r3, [r1, #12]
11419	ldr	r1, [r1, #4]
11420	ldr	r2, [r3, #8]
11421	ldr	r0, [r3, #12]
11422	bl	FtlGcUpdatePage
11423	b	.L1502
11424.L1509:
11425	.align	2
11426.L1508:
11427	.word	.LANCHOR89
11428	.word	.LANCHOR121
11429	.word	.LANCHOR53
11430	.word	.LANCHOR42
11431	.word	.LANCHOR81
11432	.size	Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
11433	.section	.text.Ftl_get_new_temp_ppa,"ax",%progbits
11434	.align	1
11435	.global	Ftl_get_new_temp_ppa
11436	.syntax unified
11437	.thumb
11438	.thumb_func
11439	.fpu softvfp
11440	.type	Ftl_get_new_temp_ppa, %function
11441Ftl_get_new_temp_ppa:
11442	@ args = 0, pretend = 0, frame = 0
11443	@ frame_needed = 0, uses_anonymous_args = 0
11444	push	{r3, r4, r5, lr}
11445	movw	r3, #65535
11446	ldr	r4, .L1513
11447	ldrh	r2, [r4]
11448	cmp	r2, r3
11449	beq	.L1511
11450	ldrh	r3, [r4, #4]
11451	cbnz	r3, .L1512
11452.L1511:
11453	movs	r0, #0
11454	movs	r5, #0
11455	bl	FtlGcFreeTempBlock
11456	ldr	r0, .L1513
11457	strb	r5, [r4, #8]
11458	bl	allocate_data_superblock
11459	ldr	r3, .L1513+4
11460	strh	r5, [r3]	@ movhi
11461	ldr	r3, .L1513+8
11462	strh	r5, [r3]	@ movhi
11463	bl	l2p_flush
11464	mov	r0, r5
11465	bl	FtlEctTblFlush
11466	bl	FtlVpcTblFlush
11467.L1512:
11468	ldr	r0, .L1513
11469	pop	{r3, r4, r5, lr}
11470	b	get_new_active_ppa
11471.L1514:
11472	.align	2
11473.L1513:
11474	.word	.LANCHOR53
11475	.word	.LANCHOR96
11476	.word	.LANCHOR97
11477	.size	Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
11478	.section	.text.rk_ftl_garbage_collect,"ax",%progbits
11479	.align	1
11480	.global	rk_ftl_garbage_collect
11481	.syntax unified
11482	.thumb
11483	.thumb_func
11484	.fpu softvfp
11485	.type	rk_ftl_garbage_collect, %function
11486rk_ftl_garbage_collect:
11487	@ args = 0, pretend = 0, frame = 40
11488	@ frame_needed = 0, uses_anonymous_args = 0
11489	ldr	r3, .L1633
11490	push	{r4, r5, r6, r7, r8, r10, fp, lr}
11491	mov	r7, r0
11492	sub	sp, sp, #48
11493	ldr	r0, [r3]
11494	cmp	r0, #0
11495	bne	.L1590
11496	ldr	r3, .L1633+4
11497	ldrh	r3, [r3]
11498	cmp	r3, #47
11499	bls	.L1515
11500	ldr	r3, .L1633+8
11501	ldrh	r2, [r3]
11502	movw	r3, #65535
11503	cmp	r2, r3
11504	bne	.L1517
11505.L1520:
11506	ldr	r3, .L1633+12
11507	movw	r4, #65535
11508	ldrh	r0, [r3]
11509	cmp	r0, r4
11510	bne	.L1518
11511.L1519:
11512	ldr	r2, .L1633+16
11513	movw	r5, #65535
11514	ldr	r6, .L1633+20
11515	ldr	r3, [r2]
11516	ldrh	r0, [r6]
11517	adds	r3, r3, #1
11518	add	r3, r3, r7, lsl #7
11519	cmp	r0, r5
11520	str	r3, [r2]
11521	bne	.L1521
11522	ldr	r1, .L1633+24
11523	ldrh	r1, [r1]
11524	cmp	r1, r0
11525	bne	.L1522
11526	ldr	r0, .L1633+28
11527	ldrh	r10, [r0]
11528	cmp	r10, r1
11529	bne	.L1523
11530	ldr	r1, .L1633+32
11531	ldrh	r0, [r1]
11532	mov	r8, r1
11533	cmp	r0, #24
11534	ite	cc
11535	movcc	r1, #5120
11536	movcs	r1, #1024
11537	cmp	r3, r1
11538	bls	.L1523
11539	ldr	r3, .L1633+36
11540	movs	r4, #0
11541	str	r4, [r2]
11542	strh	r4, [r3]	@ movhi
11543	bl	GetSwlReplaceBlock
11544	cmp	r0, r10
11545	mov	r5, r0
11546	bne	.L1594
11547	ldr	r10, .L1633+96
11548	ldrh	r2, [r8]
11549	ldrh	r3, [r10]
11550	cmp	r2, r3
11551	bcs	.L1526
11552	movs	r0, #64
11553	bl	List_get_gc_head_node
11554	uxth	r3, r0
11555	cmp	r3, r5
11556	beq	.L1528
11557	mov	r0, r3
11558	ldr	r3, .L1633+40
11559	ldr	r3, [r3]
11560	ldrh	r3, [r3, r0, lsl #1]
11561	cmp	r3, #7
11562	bhi	.L1529
11563	mov	r0, r4
11564	bl	List_get_gc_head_node
11565	uxth	r4, r0
11566	movs	r3, #128
11567	strh	r3, [r10]	@ movhi
11568	cmp	r4, r5
11569	bne	.L1525
11570.L1528:
11571	bl	FtlGcReFreshBadBlk
11572	cmp	r7, #0
11573	bne	.L1531
11574	movw	r3, #65535
11575	cmp	r5, r3
11576	bne	.L1531
11577.L1588:
11578	ldr	r3, .L1633+32
11579	ldrh	r3, [r3]
11580	cmp	r3, #24
11581	bhi	.L1595
11582	ldr	r2, .L1633+44
11583	cmp	r3, #16
11584	ldrh	r4, [r2]
11585	bls	.L1533
11586	lsrs	r4, r4, #5
11587.L1532:
11588	ldr	r2, .L1633+48
11589	ldrh	r1, [r2]
11590	cmp	r1, r3
11591	mov	r1, r2
11592	bcs	.L1536
11593	ldr	r3, .L1633+24
11594	movw	r0, #65535
11595	ldrh	r3, [r3]
11596	cmp	r3, r0
11597	bne	.L1537
11598	ldr	r0, .L1633+28
11599	ldrh	r0, [r0]
11600	cmp	r0, r3
11601	bne	.L1537
11602	ldr	r3, .L1633+36
11603	ldrh	r0, [r3]
11604	cbnz	r0, .L1538
11605	ldr	r3, .L1633+52
11606	ldr	r4, .L1633+56
11607	ldr	r3, [r3]
11608	ldr	r4, [r4]
11609	add	r3, r3, r3, lsl #1
11610	cmp	r4, r3, lsr #2
11611	bcs	.L1539
11612.L1538:
11613	ldr	r3, .L1633+60
11614	ldrh	r3, [r3]
11615	add	r3, r3, r3, lsl #1
11616	asrs	r3, r3, #2
11617	strh	r3, [r1]	@ movhi
11618.L1540:
11619	ldr	r3, .L1633+64
11620	movs	r2, #0
11621	str	r2, [r3]
11622.L1515:
11623	add	sp, sp, #48
11624	@ sp needed
11625	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
11626.L1517:
11627	ldr	r2, .L1633+24
11628	ldrh	r2, [r2]
11629	cmp	r2, r3
11630	beq	.L1520
11631	movs	r0, #1
11632	bl	FtlGcFreeTempBlock
11633	cmp	r0, #0
11634	beq	.L1520
11635	movs	r0, #1
11636	b	.L1515
11637.L1518:
11638	ldr	r1, .L1633+28
11639	ldrh	r2, [r1]
11640	cmp	r2, r4
11641	itt	eq
11642	strheq	r0, [r1]	@ movhi
11643	strheq	r2, [r3]	@ movhi
11644	b	.L1519
11645.L1529:
11646	movs	r3, #64
11647.L1627:
11648	strh	r3, [r10]	@ movhi
11649	b	.L1528
11650.L1526:
11651	movs	r3, #80
11652	b	.L1627
11653.L1594:
11654	mov	r4, r0
11655.L1525:
11656	ldr	r3, .L1633+40
11657	mov	r5, r4
11658	ldr	r1, .L1633+48
11659	ldrh	r2, [r8]
11660	ldr	r3, [r3]
11661	ldrh	r1, [r1]
11662	ldr	r0, .L1633+68
11663	ldrh	r3, [r3, r4, lsl #1]
11664	str	r1, [sp, #4]
11665	ldr	r1, .L1633+72
11666	ldr	r1, [r1]
11667	ldrh	r1, [r1, r4, lsl #1]
11668	str	r1, [sp]
11669	mov	r1, r4
11670	bl	printf
11671	b	.L1528
11672.L1533:
11673	cmp	r3, #12
11674	bls	.L1534
11675	lsrs	r4, r4, #4
11676	b	.L1532
11677.L1534:
11678	cmp	r3, #8
11679	bls	.L1532
11680	lsrs	r4, r4, #2
11681	b	.L1532
11682.L1595:
11683	movs	r4, #1
11684	b	.L1532
11685.L1539:
11686	movs	r3, #18
11687	strh	r3, [r2]	@ movhi
11688	b	.L1540
11689.L1537:
11690	ldr	r3, .L1633+60
11691	ldrh	r3, [r3]
11692	add	r3, r3, r3, lsl #1
11693	asrs	r3, r3, #2
11694	strh	r3, [r1]	@ movhi
11695.L1536:
11696	ldr	r3, .L1633+76
11697	ldrh	r3, [r3]
11698	cbz	r3, .L1596
11699	adds	r4, r4, #32
11700	uxth	r4, r4
11701.L1596:
11702	movw	r5, #65535
11703.L1542:
11704	ldrh	r3, [r6]
11705	movw	r2, #65535
11706	cmp	r3, r2
11707	bne	.L1551
11708	cmp	r5, r3
11709	beq	.L1552
11710	strh	r5, [r6]	@ movhi
11711.L1553:
11712	ldrh	r0, [r6]
11713	movw	r7, #65535
11714	movs	r3, #0
11715	strb	r3, [r6, #8]
11716	cmp	r0, r7
11717	beq	.L1551
11718	bl	IsBlkInGcList
11719	cbz	r0, .L1556
11720	strh	r7, [r6]	@ movhi
11721.L1556:
11722	ldrh	r2, [r6]
11723	movw	r3, #65535
11724	cmp	r2, r3
11725	beq	.L1551
11726	ldr	r0, .L1633+20
11727	bl	make_superblock
11728	ldr	r2, .L1633+80
11729	movs	r3, #0
11730	strh	r3, [r6, #2]	@ movhi
11731	strb	r3, [r6, #6]
11732	strh	r3, [r2]	@ movhi
11733	ldr	r3, .L1633+40
11734	ldrh	r2, [r6]
11735	ldr	r3, [r3]
11736	ldrh	r2, [r3, r2, lsl #1]
11737	ldr	r3, .L1633+84
11738	strh	r2, [r3]	@ movhi
11739.L1551:
11740	ldr	r2, .L1633+88
11741	ldrh	r3, [r6]
11742	ldrh	r2, [r2]
11743	cmp	r2, r3
11744	beq	.L1557
11745	ldr	r2, .L1633+92
11746	ldrh	r2, [r2]
11747	cmp	r2, r3
11748	beq	.L1557
11749	ldr	r6, .L1633+20
11750	mov	fp, r6
11751.L1558:
11752	ldrh	r2, [r6]
11753	movw	r3, #65535
11754	cmp	r2, r3
11755	bne	.L1559
11756	ldr	r8, .L1633+100
11757	movs	r2, #0
11758	ldr	r3, .L1633+64
11759	str	r2, [r3]
11760.L1560:
11761	ldrh	r7, [r8]
11762	mov	r0, r7
11763	bl	List_get_gc_head_node
11764	uxth	r3, r0
11765	movw	r1, #65535
11766	cmp	r3, r1
11767	strh	r3, [fp]	@ movhi
11768	bne	.L1561
11769	movs	r3, #0
11770	movs	r0, #8
11771	strh	r3, [r8]	@ movhi
11772	b	.L1515
11773.L1543:
11774	ldr	r3, .L1633+64
11775	movs	r2, #0
11776	ldr	r1, .L1633+48
11777	ldr	r4, .L1633+32
11778	str	r2, [r3]
11779	ldrh	r3, [r1]
11780	mov	r2, r1
11781	ldrh	r8, [r4]
11782	ldr	r5, .L1633+36
11783	cmp	r3, r8
11784	bcs	.L1544
11785	ldrh	r3, [r5]
11786	cbnz	r3, .L1545
11787	ldr	r3, .L1633+52
11788	ldr	r0, .L1633+56
11789	ldr	r3, [r3]
11790	ldr	r0, [r0]
11791	add	r3, r3, r3, lsl #1
11792	cmp	r0, r3, lsr #2
11793	bcs	.L1546
11794.L1545:
11795	ldr	r3, .L1633+60
11796	ldrh	r3, [r3]
11797	add	r3, r3, r3, lsl #1
11798	asrs	r3, r3, #2
11799	strh	r3, [r2]	@ movhi
11800.L1630:
11801	bl	FtlReadRefresh
11802	ldrh	r0, [r5]
11803	b	.L1515
11804.L1634:
11805	.align	2
11806.L1633:
11807	.word	.LANCHOR117
11808	.word	.LANCHOR45
11809	.word	.LANCHOR156
11810	.word	.LANCHOR100
11811	.word	.LANCHOR84
11812	.word	.LANCHOR80
11813	.word	.LANCHOR53
11814	.word	.LANCHOR99
11815	.word	.LANCHOR48
11816	.word	.LANCHOR172
11817	.word	.LANCHOR42
11818	.word	.LANCHOR19
11819	.word	.LANCHOR82
11820	.word	.LANCHOR61
11821	.word	.LANCHOR59
11822	.word	.LANCHOR78
11823	.word	.LANCHOR87
11824	.word	.LC107
11825	.word	.LANCHOR43
11826	.word	.LANCHOR101
11827	.word	.LANCHOR173
11828	.word	.LANCHOR174
11829	.word	.LANCHOR51
11830	.word	.LANCHOR52
11831	.word	.LANCHOR83
11832	.word	.LANCHOR85
11833.L1546:
11834	movs	r3, #18
11835	strh	r3, [r1]	@ movhi
11836	b	.L1630
11837.L1544:
11838	ldrh	r0, [r5]
11839	cmp	r0, #0
11840	bne	.L1548
11841	ldr	r3, .L1635
11842	ldrh	r7, [r3]
11843	add	r2, r7, r7, lsl #1
11844	asrs	r2, r2, #2
11845	strh	r2, [r1]	@ movhi
11846	bl	List_get_gc_head_node
11847	ldr	r3, .L1635+4
11848	uxth	r0, r0
11849	ldr	r2, .L1635+8
11850	ldr	r3, [r3]
11851	ldrh	r2, [r2]
11852	ldrh	r1, [r3, r0, lsl #1]
11853	ldr	r3, .L1635+12
11854	ldrh	r3, [r3]
11855	muls	r2, r3, r2
11856	cmp	r1, r2, asr #1
11857	ble	.L1549
11858	subs	r3, r7, #1
11859	cmp	r8, r3
11860	bge	.L1630
11861.L1549:
11862	cmp	r1, #0
11863	bne	.L1548
11864	movw	r0, #65535
11865	bl	decrement_vpc_count
11866	ldrh	r0, [r4]
11867	adds	r0, r0, #1
11868	b	.L1515
11869.L1552:
11870	ldr	r3, .L1635+16
11871	ldrh	r2, [r3]
11872	cmp	r2, r5
11873	beq	.L1553
11874	ldr	r1, .L1635+4
11875	ldr	r1, [r1]
11876	ldrh	r2, [r1, r2, lsl #1]
11877	cbnz	r2, .L1554
11878	strh	r5, [r3]	@ movhi
11879.L1554:
11880	ldrh	r2, [r3]
11881	strh	r2, [r6]	@ movhi
11882	movw	r2, #65535
11883	strh	r2, [r3]	@ movhi
11884	b	.L1553
11885.L1557:
11886	movw	r3, #65535
11887	strh	r3, [r6]	@ movhi
11888.L1631:
11889	ldr	r3, .L1635+20
11890	ldrh	r0, [r3]
11891	b	.L1515
11892.L1561:
11893	str	r0, [sp, #16]
11894	mov	r0, r3
11895	str	r3, [sp, #12]
11896	adds	r7, r7, #1
11897	bl	IsBlkInGcList
11898	ldr	r3, [sp, #12]
11899	ldr	r2, [sp, #16]
11900	cbz	r0, .L1562
11901	strh	r7, [r8]	@ movhi
11902	b	.L1560
11903.L1562:
11904	uxth	r0, r2
11905	ldr	r2, .L1635+24
11906	ldr	r10, .L1635+4
11907	uxth	r7, r7
11908	ldrh	lr, [r2]
11909	ldr	r2, .L1635+8
11910	ldr	r1, [r10]
11911	strh	r7, [r8]	@ movhi
11912	ldrh	r2, [r2]
11913	ldrh	ip, [r1, r0, lsl #1]
11914	mul	lr, r2, lr
11915	cmp	ip, lr, asr #1
11916	bgt	.L1564
11917	cmp	r7, #48
11918	bls	.L1565
11919	cmp	ip, #8
11920	bls	.L1565
11921	ldr	r7, .L1635+28
11922	ldrh	r7, [r7]
11923	cmp	r7, #35
11924	bhi	.L1565
11925.L1564:
11926	ldr	r2, .L1635+32
11927	movs	r7, #0
11928	strh	r7, [r2]	@ movhi
11929.L1565:
11930	ldrh	r1, [r1, r0, lsl #1]
11931	cmp	lr, r1
11932	bgt	.L1566
11933	movw	r2, #65535
11934	cmp	r5, r2
11935	bne	.L1566
11936	ldr	r2, .L1635+32
11937	movs	r3, #0
11938	strh	r5, [fp]	@ movhi
11939	strh	r3, [r2]	@ movhi
11940	b	.L1631
11941.L1566:
11942	cbnz	r1, .L1567
11943	movw	r0, #65535
11944	bl	decrement_vpc_count
11945	ldr	r3, .L1635+32
11946	ldr	r2, .L1635+32
11947	ldrh	r3, [r3]
11948	adds	r3, r3, #1
11949	strh	r3, [r2]	@ movhi
11950	b	.L1560
11951.L1567:
11952	movs	r2, #0
11953	strb	r2, [fp, #8]
11954	ldr	r2, .L1635+36
11955	ldrh	r2, [r2]
11956	cmp	r2, r3
11957	bne	.L1568
11958	movw	r2, #658
11959	ldr	r1, .L1635+40
11960	ldr	r0, .L1635+44
11961	bl	printf
11962.L1568:
11963	ldr	r3, .L1635+48
11964	ldrh	r2, [fp]
11965	ldrh	r3, [r3]
11966	cmp	r2, r3
11967	bne	.L1569
11968	movw	r2, #659
11969	ldr	r1, .L1635+40
11970	ldr	r0, .L1635+44
11971	bl	printf
11972.L1569:
11973	ldr	r3, .L1635+52
11974	ldrh	r2, [fp]
11975	ldrh	r3, [r3]
11976	cmp	r2, r3
11977	bne	.L1570
11978	mov	r2, #660
11979	ldr	r1, .L1635+40
11980	ldr	r0, .L1635+44
11981	bl	printf
11982.L1570:
11983	mov	r0, r6
11984	bl	make_superblock
11985	ldr	r2, .L1635+56
11986	movs	r3, #0
11987	ldrh	r1, [fp]
11988	strh	r3, [r2]	@ movhi
11989	ldr	r2, [r10]
11990	ldrh	r1, [r2, r1, lsl #1]
11991	ldr	r2, .L1635+60
11992	strh	r3, [fp, #2]	@ movhi
11993	strb	r3, [fp, #6]
11994	strh	r1, [r2]	@ movhi
11995.L1559:
11996	bl	FtlReadRefresh
11997	ldr	r3, .L1635+64
11998	movs	r2, #1
11999	str	r2, [r3]
12000	ldr	r3, .L1635+24
12001	ldrh	r3, [r3]
12002	str	r3, [sp, #28]
12003	ldrh	r3, [fp, #2]
12004	ldr	r1, [sp, #28]
12005	adds	r2, r3, r4
12006	cmp	r2, r1
12007	itt	gt
12008	movgt	r2, r1
12009	subgt	r4, r2, r3
12010	mov	r3, #0
12011	it	gt
12012	uxthgt	r4, r4
12013.L1629:
12014	str	r3, [sp, #24]
12015	ldrh	r3, [sp, #24]
12016	cmp	r4, r3
12017	bls	.L1580
12018	ldr	r3, .L1635+8
12019	movw	r10, #65535
12020	ldrh	r8, [r6, #2]
12021	ldr	r1, .L1635+68
12022	ldrh	ip, [r3]
12023	ldr	r3, .L1635+72
12024	ldr	r0, [r3]
12025	ldr	r3, [sp, #24]
12026	add	r8, r8, r3
12027	movs	r3, #0
12028	str	r3, [sp, #12]
12029	b	.L1581
12030.L1574:
12031	ldrh	r2, [r1, #2]!
12032	cmp	r2, r10
12033	beq	.L1573
12034	ldr	r7, [sp, #12]
12035	mov	lr, #20
12036	orr	r2, r8, r2, lsl #10
12037	mla	lr, lr, r7, r0
12038	str	r2, [lr, #4]
12039	mov	r2, r7
12040	adds	r2, r2, #1
12041	uxth	r2, r2
12042	str	r2, [sp, #12]
12043.L1573:
12044	adds	r3, r3, #1
12045.L1581:
12046	uxth	r2, r3
12047	cmp	ip, r2
12048	bhi	.L1574
12049	ldrb	r2, [r6, #8]	@ zero_extendqisi2
12050	ldr	r1, [sp, #12]
12051	bl	FlashReadPages
12052	movs	r3, #0
12053.L1628:
12054	str	r3, [sp, #20]
12055	ldr	r2, [sp, #12]
12056	ldrh	r3, [sp, #20]
12057	cmp	r2, r3
12058	bhi	.L1579
12059	ldr	r3, [sp, #24]
12060	adds	r3, r3, #1
12061	b	.L1629
12062.L1636:
12063	.align	2
12064.L1635:
12065	.word	.LANCHOR78
12066	.word	.LANCHOR42
12067	.word	.LANCHOR3
12068	.word	.LANCHOR20
12069	.word	.LANCHOR99
12070	.word	.LANCHOR172
12071	.word	.LANCHOR19
12072	.word	.LANCHOR96
12073	.word	.LANCHOR85
12074	.word	.LANCHOR51
12075	.word	.LANCHOR175
12076	.word	.LC1
12077	.word	.LANCHOR52
12078	.word	.LANCHOR53
12079	.word	.LANCHOR173
12080	.word	.LANCHOR174
12081	.word	.LANCHOR117
12082	.word	.LANCHOR80+14
12083	.word	.LANCHOR93
12084.L1579:
12085	ldr	r3, [sp, #20]
12086	movs	r7, #20
12087	muls	r7, r3, r7
12088	ldr	r3, .L1637
12089	ldr	r3, [r3]
12090	adds	r2, r3, r7
12091	ldr	r3, [r3, r7]
12092	adds	r3, r3, #1
12093	beq	.L1576
12094	ldr	r3, [r2, #12]
12095	ldrh	r2, [r3]
12096	str	r3, [sp, #16]
12097	movw	r3, #61589
12098	cmp	r2, r3
12099	bne	.L1576
12100	ldr	r3, [sp, #16]
12101	ldr	r8, [r3, #8]
12102	cmp	r8, #-1
12103	bne	.L1577
12104	mov	r2, #696
12105	ldr	r1, .L1637+4
12106	ldr	r0, .L1637+8
12107	bl	printf
12108.L1577:
12109	movs	r2, #0
12110	add	r1, sp, #44
12111	mov	r0, r8
12112	bl	log2phys
12113	ldr	r3, .L1637
12114	ldr	r1, [r3]
12115	ldr	r3, [sp, #44]
12116	add	r1, r1, r7
12117	ldr	r2, [r1, #4]
12118	cmp	r2, r3
12119	bne	.L1576
12120	ldr	r2, .L1637+12
12121	mov	r10, #20
12122	ldr	r8, .L1637+36
12123	ldr	r1, [r1, #16]
12124	ldrh	r3, [r2]
12125	adds	r3, r3, #1
12126	strh	r3, [r2]	@ movhi
12127	ldr	r2, .L1637+16
12128	ldr	r3, [r8]
12129	ldr	r0, [r2]
12130	str	r2, [sp, #36]
12131	mla	r3, r10, r3, r0
12132	str	r1, [r3, #16]
12133	str	r3, [sp, #32]
12134	bl	Ftl_get_new_temp_ppa
12135	ldr	r3, [sp, #32]
12136	ldr	r2, [sp, #36]
12137	ldr	r1, [sp, #16]
12138	str	r0, [r3, #4]
12139	ldr	r2, [r2]
12140	ldr	r3, [r8]
12141	mla	r10, r10, r3, r2
12142	ldr	r2, .L1637
12143	adds	r3, r3, #1
12144	ldr	r0, [r2]
12145	add	r0, r0, r7
12146	ldr	r7, .L1637+20
12147	ldr	r2, [r0, #8]
12148	str	r2, [r10, #8]
12149	ldr	r2, [r0, #12]
12150	str	r2, [r10, #12]
12151	ldr	r2, [sp, #44]
12152	str	r2, [r1, #12]
12153	ldrh	r2, [r7]
12154	strh	r2, [r1, #2]	@ movhi
12155	ldr	r2, .L1637+24
12156	str	r3, [r8]
12157	ldr	r2, [r2]
12158	str	r2, [r1, #4]
12159	movs	r1, #1
12160	bl	FtlGcBufAlloc
12161	ldrb	r2, [r7, #7]	@ zero_extendqisi2
12162	ldr	r3, [r8]
12163	cmp	r2, r3
12164	beq	.L1578
12165	ldrh	r3, [r7, #4]
12166	cbnz	r3, .L1576
12167.L1578:
12168	bl	Ftl_gc_temp_data_write_back
12169	cbz	r0, .L1576
12170.L1632:
12171	ldr	r3, .L1637+28
12172	movs	r2, #0
12173	str	r2, [r3]
12174	b	.L1631
12175.L1576:
12176	ldr	r3, [sp, #20]
12177	adds	r3, r3, #1
12178	b	.L1628
12179.L1580:
12180	ldrh	r3, [r6, #2]
12181	add	r4, r4, r3
12182	ldr	r3, [sp, #28]
12183	uxth	r4, r4
12184	cmp	r3, r4
12185	strh	r4, [r6, #2]	@ movhi
12186	bls	.L1582
12187	ldr	r3, .L1637+12
12188	ldrh	r2, [r3]
12189	ldr	r3, .L1637+32
12190	ldrh	r3, [r3]
12191	cmp	r2, r3
12192	bne	.L1583
12193.L1582:
12194	ldr	r3, .L1637+36
12195	ldr	r3, [r3]
12196	cbz	r3, .L1584
12197	bl	Ftl_gc_temp_data_write_back
12198	cmp	r0, #0
12199	bne	.L1632
12200.L1584:
12201	ldr	r3, .L1637+12
12202	ldrh	r1, [r3]
12203	cbnz	r1, .L1585
12204	ldr	r3, .L1637+40
12205	ldrh	r2, [r6]
12206	ldr	r3, [r3]
12207	ldrh	r0, [r3, r2, lsl #1]
12208	cbz	r0, .L1585
12209	strh	r1, [r3, r2, lsl #1]	@ movhi
12210	ldrh	r0, [r6]
12211	bl	update_vpc_list
12212	bl	l2p_flush
12213	bl	FtlVpcTblFlush
12214.L1585:
12215	movw	r3, #65535
12216	strh	r3, [r6]	@ movhi
12217.L1583:
12218	ldr	r3, .L1637+44
12219	ldrh	r3, [r3]
12220	cmp	r3, #2
12221	bhi	.L1586
12222	ldr	r3, .L1637+48
12223	ldrh	r4, [r3]
12224	b	.L1558
12225.L1586:
12226	ldr	r2, .L1637+28
12227	movs	r1, #0
12228	str	r1, [r2]
12229	ldr	r2, .L1637+52
12230	ldrh	r0, [r2]
12231	cmp	r0, #0
12232	bne	.L1515
12233	adds	r0, r3, #1
12234	b	.L1515
12235.L1590:
12236	movs	r0, #0
12237	b	.L1515
12238.L1521:
12239	cmp	r7, #0
12240	beq	.L1588
12241.L1531:
12242	ldr	r3, .L1637+20
12243	ldrh	r2, [r3]
12244	movw	r3, #65535
12245	cmp	r2, r3
12246	bne	.L1599
12247.L1589:
12248	ldr	r3, .L1637+56
12249	movw	r2, #65535
12250	ldrh	r3, [r3]
12251	cmp	r3, r2
12252	bne	.L1599
12253	cmp	r5, r3
12254	bne	.L1599
12255	ldrh	r3, [r6]
12256	cmp	r3, r5
12257	beq	.L1543
12258.L1548:
12259	movw	r5, #65535
12260.L1599:
12261	movs	r4, #1
12262	b	.L1542
12263.L1523:
12264	cmp	r7, #0
12265	beq	.L1588
12266	movw	r5, #65535
12267	b	.L1589
12268.L1522:
12269	cmp	r7, #0
12270	bne	.L1548
12271	b	.L1588
12272.L1638:
12273	.align	2
12274.L1637:
12275	.word	.LANCHOR93
12276	.word	.LANCHOR175
12277	.word	.LC1
12278	.word	.LANCHOR173
12279	.word	.LANCHOR121
12280	.word	.LANCHOR53
12281	.word	.LANCHOR71
12282	.word	.LANCHOR117
12283	.word	.LANCHOR174
12284	.word	.LANCHOR89
12285	.word	.LANCHOR42
12286	.word	.LANCHOR48
12287	.word	.LANCHOR19
12288	.word	.LANCHOR172
12289	.word	.LANCHOR99
12290	.size	rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
12291	.section	.text.sftl_gc,"ax",%progbits
12292	.align	1
12293	.global	sftl_gc
12294	.syntax unified
12295	.thumb
12296	.thumb_func
12297	.fpu softvfp
12298	.type	sftl_gc, %function
12299sftl_gc:
12300	@ args = 0, pretend = 0, frame = 0
12301	@ frame_needed = 0, uses_anonymous_args = 0
12302	@ link register save eliminated.
12303	movs	r1, #1
12304	mov	r0, r1
12305	b	rk_ftl_garbage_collect
12306	.size	sftl_gc, .-sftl_gc
12307	.section	.text.FtlRead,"ax",%progbits
12308	.align	1
12309	.global	FtlRead
12310	.syntax unified
12311	.thumb
12312	.thumb_func
12313	.fpu softvfp
12314	.type	FtlRead, %function
12315FtlRead:
12316	@ args = 0, pretend = 0, frame = 56
12317	@ frame_needed = 0, uses_anonymous_args = 0
12318	cmp	r0, #16
12319	push	{r4, r5, r6, r7, r8, r10, fp, lr}
12320	sub	sp, sp, #56
12321	mov	r6, r1
12322	mov	r8, r3
12323	str	r2, [sp, #32]
12324	bne	.L1641
12325	mov	r2, r3
12326	ldr	r1, [sp, #32]
12327	add	r0, r6, #256
12328	bl	FtlVendorPartRead
12329	str	r0, [sp, #4]
12330.L1640:
12331	ldr	r0, [sp, #4]
12332	add	sp, sp, #56
12333	@ sp needed
12334	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
12335.L1641:
12336	ldr	r3, [sp, #32]
12337	adds	r3, r1, r3
12338	str	r3, [sp, #12]
12339	ldr	r3, .L1672
12340	ldr	r2, [sp, #12]
12341	ldr	r3, [r3]
12342	cmp	r2, r3
12343	bhi	.L1661
12344	ldr	r3, .L1672+4
12345	ldr	r3, [r3]
12346	adds	r0, r3, #1
12347	beq	.L1662
12348	ldr	r3, .L1672+8
12349	mov	r0, r6
12350	movs	r7, #0
12351	mov	r5, r7
12352	ldrh	r4, [r3]
12353	mov	r1, r4
12354	bl	__aeabi_uidiv
12355	ldr	r3, [sp, #12]
12356	mov	r1, r4
12357	str	r0, [sp, #16]
12358	subs	r0, r3, #1
12359	bl	__aeabi_uidiv
12360	ldr	r3, [sp, #16]
12361	ldr	r2, .L1672+12
12362	ldr	r4, [sp, #16]
12363	rsb	r3, r3, #1
12364	str	r0, [sp, #20]
12365	add	r3, r3, r0
12366	str	r7, [sp, #28]
12367	str	r3, [sp, #8]
12368	ldr	r1, [sp, #8]
12369	ldr	r3, [r2]
12370	str	r7, [sp, #24]
12371	str	r7, [sp, #4]
12372	add	r3, r3, r1
12373	str	r3, [r2]
12374.L1643:
12375	ldr	r3, [sp, #8]
12376	cbnz	r3, .L1659
12377	ldr	r3, .L1672+16
12378	ldrh	r3, [r3]
12379	cbnz	r3, .L1660
12380	ldr	r3, .L1672+20
12381	ldrh	r3, [r3]
12382	cmp	r3, #31
12383	bhi	.L1640
12384.L1660:
12385	movs	r1, #1
12386	movs	r0, #0
12387	bl	rk_ftl_garbage_collect
12388	b	.L1640
12389.L1659:
12390	add	r1, sp, #52
12391	movs	r2, #0
12392	mov	r0, r4
12393	bl	log2phys
12394	ldr	r3, [sp, #52]
12395	adds	r1, r3, #1
12396	bne	.L1644
12397	ldr	fp, .L1672+8
12398	mov	r10, #0
12399.L1645:
12400	ldrh	r0, [fp]
12401	cmp	r10, r0
12402	bcc	.L1647
12403.L1648:
12404	ldr	r3, [sp, #8]
12405	adds	r4, r4, #1
12406	subs	r3, r3, #1
12407	str	r3, [sp, #8]
12408	beq	.L1652
12409	ldr	r3, .L1672+24
12410	ldrh	r3, [r3]
12411	cmp	r5, r3, lsl #2
12412	bne	.L1643
12413.L1652:
12414	cmp	r5, #0
12415	beq	.L1643
12416	ldr	r3, .L1672+28
12417	movs	r2, #0
12418	mov	r1, r5
12419	mov	r10, #0
12420	ldr	r0, [r3]
12421	bl	FlashReadPages
12422	lsls	r3, r7, #9
12423	str	r3, [sp, #44]
12424	ldr	r3, [sp, #24]
12425	lsls	r3, r3, #9
12426	str	r3, [sp, #36]
12427	ldr	r3, [sp, #28]
12428	lsls	r3, r3, #9
12429	str	r3, [sp, #40]
12430.L1658:
12431	movs	r3, #20
12432	mul	fp, r3, r10
12433	ldr	r3, .L1672+28
12434	ldr	r2, [r3]
12435	ldr	r3, [sp, #16]
12436	add	r2, r2, fp
12437	ldr	r1, [r2, #16]
12438	cmp	r3, r1
12439	bne	.L1654
12440	ldr	r1, [r2, #8]
12441	ldr	r2, .L1672+32
12442	ldr	r2, [r2]
12443	cmp	r1, r2
12444	bne	.L1655
12445	ldr	r3, [sp, #36]
12446	mov	r0, r8
12447	ldr	r2, [sp, #40]
12448	add	r1, r1, r3
12449.L1671:
12450	bl	ftl_memcpy
12451.L1655:
12452	ldr	r3, .L1672+28
12453	ldr	r2, [r3]
12454	ldr	r3, [r2, fp]
12455	add	r1, r2, fp
12456	adds	r2, r3, #1
12457	bne	.L1656
12458	ldr	r1, .L1672+36
12459	str	r3, [sp, #4]
12460	ldr	r2, [r1, #72]
12461	adds	r2, r2, #1
12462	str	r2, [r1, #72]
12463.L1657:
12464	add	r10, r10, #1
12465	cmp	r5, r10
12466	bne	.L1658
12467	movs	r5, #0
12468	b	.L1643
12469.L1647:
12470	mla	r0, r0, r4, r10
12471	cmp	r6, r0
12472	bhi	.L1646
12473	ldr	r3, [sp, #12]
12474	cmp	r3, r0
12475	bls	.L1646
12476	subs	r0, r0, r6
12477	mov	r2, #512
12478	movs	r1, #0
12479	add	r0, r8, r0, lsl #9
12480	bl	ftl_memset
12481.L1646:
12482	add	r10, r10, #1
12483	b	.L1645
12484.L1644:
12485	ldr	r2, .L1672+28
12486	mov	r10, #20
12487	ldr	r2, [r2]
12488	mla	r10, r10, r5, r2
12489	str	r3, [r10, #4]
12490	ldr	r3, [sp, #16]
12491	cmp	r4, r3
12492	ldr	r3, .L1672+8
12493	bne	.L1649
12494	ldr	r2, .L1672+32
12495	mov	r0, r6
12496	ldrh	fp, [r3]
12497	ldr	r2, [r2]
12498	mov	r1, fp
12499	str	r2, [r10, #8]
12500	bl	__aeabi_uidivmod
12501	ldr	r2, [sp, #32]
12502	sub	r3, fp, r1
12503	str	r1, [sp, #24]
12504	cmp	r3, r2
12505	it	cs
12506	movcs	r3, r2
12507	cmp	fp, r3
12508	str	r3, [sp, #28]
12509	bne	.L1650
12510	str	r8, [r10, #8]
12511.L1650:
12512	ldr	r3, .L1672+40
12513	ldr	r2, .L1672+44
12514	str	r4, [r10, #16]
12515	ldrh	r3, [r3]
12516	ldr	r2, [r2]
12517	muls	r3, r5, r3
12518	adds	r5, r5, #1
12519	bic	r3, r3, #3
12520	add	r3, r3, r2
12521	str	r3, [r10, #12]
12522	b	.L1648
12523.L1649:
12524	ldr	r2, [sp, #20]
12525	cmp	r4, r2
12526	bne	.L1651
12527	ldr	r2, .L1672+48
12528	ldr	r1, [sp, #12]
12529	ldr	r2, [r2]
12530	str	r2, [r10, #8]
12531	ldrh	r2, [r3]
12532	mul	r3, r2, r4
12533	subs	r7, r1, r3
12534	cmp	r2, r7
12535	bne	.L1650
12536.L1670:
12537	subs	r3, r3, r6
12538	add	r3, r8, r3, lsl #9
12539	str	r3, [r10, #8]
12540	b	.L1650
12541.L1651:
12542	ldrh	r3, [r3]
12543	muls	r3, r4, r3
12544	b	.L1670
12545.L1654:
12546	ldr	r3, [sp, #20]
12547	cmp	r3, r1
12548	bne	.L1655
12549	ldr	r3, .L1672+48
12550	ldr	r1, [r2, #8]
12551	ldr	r2, [r3]
12552	cmp	r1, r2
12553	bne	.L1655
12554	ldr	r2, .L1672+8
12555	ldr	r3, [sp, #20]
12556	ldrh	r0, [r2]
12557	ldr	r2, [sp, #44]
12558	muls	r0, r3, r0
12559	subs	r0, r0, r6
12560	add	r0, r8, r0, lsl #9
12561	b	.L1671
12562.L1656:
12563	cmp	r3, #256
12564	bne	.L1657
12565	ldr	r0, [r1, #4]
12566	ubfx	r0, r0, #10, #16
12567	bl	P2V_block_in_plane
12568	bl	FtlGcRefreshBlock
12569	b	.L1657
12570.L1661:
12571	mov	r3, #-1
12572.L1662:
12573	str	r3, [sp, #4]
12574	b	.L1640
12575.L1673:
12576	.align	2
12577.L1672:
12578	.word	.LANCHOR34
12579	.word	.LANCHOR86
12580	.word	.LANCHOR12
12581	.word	.LANCHOR62
12582	.word	.LANCHOR101
12583	.word	.LANCHOR48
12584	.word	.LANCHOR3
12585	.word	.LANCHOR120
12586	.word	.LANCHOR115
12587	.word	.LANCHOR81
12588	.word	.LANCHOR24
12589	.word	.LANCHOR114
12590	.word	.LANCHOR113
12591	.size	FtlRead, .-FtlRead
12592	.section	.text.sftl_read,"ax",%progbits
12593	.align	1
12594	.global	sftl_read
12595	.syntax unified
12596	.thumb
12597	.thumb_func
12598	.fpu softvfp
12599	.type	sftl_read, %function
12600sftl_read:
12601	@ args = 0, pretend = 0, frame = 0
12602	@ frame_needed = 0, uses_anonymous_args = 0
12603	@ link register save eliminated.
12604	mov	r3, r2
12605	mov	r2, r1
12606	mov	r1, r0
12607	movs	r0, #0
12608	b	FtlRead
12609	.size	sftl_read, .-sftl_read
12610	.section	.text.FtlWrite,"ax",%progbits
12611	.align	1
12612	.global	FtlWrite
12613	.syntax unified
12614	.thumb
12615	.thumb_func
12616	.fpu softvfp
12617	.type	FtlWrite, %function
12618FtlWrite:
12619	@ args = 0, pretend = 0, frame = 72
12620	@ frame_needed = 0, uses_anonymous_args = 0
12621	cmp	r0, #16
12622	push	{r4, r5, r6, r7, r8, r10, fp, lr}
12623	sub	sp, sp, #72
12624	str	r1, [sp, #4]
12625	str	r2, [sp, #20]
12626	str	r3, [sp, #16]
12627	bne	.L1676
12628	mov	r2, r3
12629	ldr	r3, [sp, #4]
12630	ldr	r1, [sp, #20]
12631	add	r0, r3, #256
12632	bl	FtlVendorPartWrite
12633.L1675:
12634	add	sp, sp, #72
12635	@ sp needed
12636	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
12637.L1676:
12638	ldr	r3, [sp, #4]
12639	ldr	r2, [sp, #20]
12640	adds	r4, r3, r2
12641	ldr	r3, .L1726
12642	ldr	r3, [r3]
12643	cmp	r4, r3
12644	bhi	.L1712
12645	ldr	r3, .L1726+4
12646	ldr	r0, [r3]
12647	adds	r5, r0, #1
12648	beq	.L1675
12649	ldr	r3, .L1726+8
12650	mov	r2, #2048
12651	ldr	r0, [sp, #4]
12652	str	r2, [r3]
12653	ldr	r3, .L1726+12
12654	ldrh	r5, [r3]
12655	mov	r1, r5
12656	bl	__aeabi_uidiv
12657	mov	r1, r5
12658	str	r0, [sp, #12]
12659	subs	r0, r4, #1
12660	ldr	r5, .L1726+16
12661	bl	__aeabi_uidiv
12662	ldr	r2, [sp, #12]
12663	str	r0, [sp, #28]
12664	subs	r3, r0, r2
12665	ldr	r2, .L1726+20
12666	str	r3, [sp, #32]
12667	adds	r3, r3, #1
12668	str	r3, [sp, #8]
12669	ldr	r1, [sp, #8]
12670	ldr	r3, [r2]
12671	add	r3, r3, r1
12672	str	r3, [r2]
12673	ldr	r3, .L1726+24
12674	ldr	r3, [r3]
12675	cbz	r3, .L1678
12676	ldrh	r2, [r5, #4]
12677	ldr	r3, .L1726+28
12678	cmp	r2, #0
12679	it	eq
12680	moveq	r5, r3
12681.L1678:
12682	ldr	r6, [sp, #12]
12683.L1679:
12684	ldr	r3, [sp, #8]
12685	cbnz	r3, .L1708
12686	ldr	r4, .L1726+32
12687	mov	r0, r3
12688	ldr	r1, [sp, #32]
12689	bl	rk_ftl_garbage_collect
12690	ldrh	r2, [r4]
12691	cmp	r2, #15
12692	bls	.L1709
12693.L1711:
12694	movs	r0, #0
12695	b	.L1675
12696.L1708:
12697	ldr	r3, .L1726+36
12698	ldrb	r2, [r5, #6]	@ zero_extendqisi2
12699	ldrh	r3, [r3]
12700	cmp	r2, r3
12701	bcc	.L1680
12702	mov	r2, #988
12703	ldr	r1, .L1726+40
12704	ldr	r0, .L1726+44
12705	bl	printf
12706.L1680:
12707	ldrh	r2, [r5, #4]
12708	cbnz	r2, .L1681
12709	ldr	r3, .L1726+16
12710	ldr	r4, .L1726+24
12711	cmp	r5, r3
12712	bne	.L1682
12713	ldr	r0, .L1726+28
12714	ldrh	r5, [r0, #4]
12715	cbnz	r5, .L1683
12716	bl	allocate_new_data_superblock
12717	str	r5, [r4]
12718.L1683:
12719	ldr	r0, .L1726+16
12720	bl	allocate_new_data_superblock
12721	ldr	r5, .L1726+16
12722	ldr	r2, [r4]
12723	ldr	r3, .L1726+28
12724	cmp	r2, #0
12725	it	ne
12726	movne	r5, r3
12727.L1684:
12728	ldrh	r3, [r5, #4]
12729	cbnz	r3, .L1681
12730	mov	r0, r5
12731	bl	allocate_new_data_superblock
12732.L1681:
12733	ldrb	r2, [r5, #7]	@ zero_extendqisi2
12734	ldrh	r3, [r5, #4]
12735	ldr	r1, [sp, #8]
12736	lsls	r2, r2, #2
12737	cmp	r3, r1
12738	it	cs
12739	movcs	r3, r1
12740	cmp	r2, r3
12741	it	cs
12742	movcs	r2, r3
12743	ldr	r3, .L1726+36
12744	str	r2, [sp, #44]
12745	ldrb	r2, [r5, #6]	@ zero_extendqisi2
12746	ldrh	r3, [r3]
12747	cmp	r2, r3
12748	bcc	.L1685
12749	movw	r2, #1021
12750	ldr	r1, .L1726+40
12751	ldr	r0, .L1726+44
12752	bl	printf
12753.L1685:
12754	ldr	r8, .L1726+48
12755	mov	fp, #0
12756.L1686:
12757	ldr	r3, [sp, #44]
12758	cmp	fp, r3
12759	bne	.L1706
12760.L1687:
12761	ldr	r0, .L1726+48
12762	mov	r3, r5
12763	movs	r2, #0
12764	mov	r1, fp
12765	ldr	r0, [r0]
12766	bl	FtlProgPages
12767	ldr	r3, [sp, #8]
12768	cmp	fp, r3
12769	bls	.L1707
12770	movw	r2, #1098
12771	ldr	r1, .L1726+40
12772	ldr	r0, .L1726+44
12773	bl	printf
12774.L1707:
12775	ldr	r3, [sp, #8]
12776	sub	r3, r3, fp
12777	str	r3, [sp, #8]
12778	b	.L1679
12779.L1682:
12780	str	r2, [r4]
12781	ldrh	r2, [r3, #4]
12782	cbnz	r2, .L1717
12783	mov	r0, r5
12784	bl	allocate_new_data_superblock
12785	b	.L1684
12786.L1717:
12787	mov	r5, r3
12788	b	.L1681
12789.L1706:
12790	ldrh	r2, [r5, #4]
12791	cmp	r2, #0
12792	beq	.L1687
12793	movs	r2, #0
12794	add	r1, sp, #48
12795	mov	r0, r6
12796	movs	r7, #20
12797	bl	log2phys
12798	mov	r0, r5
12799	mul	r7, r7, fp
12800	bl	get_new_active_ppa
12801	ldr	r3, .L1726+52
12802	ldr	r1, [r8]
12803	ldrh	r2, [r3]
12804	add	r1, r1, r7
12805	str	r0, [r1, #4]
12806	str	r6, [r1, #16]
12807	mul	r0, r2, fp
12808	bic	r3, r0, #3
12809	ldr	r0, .L1726+56
12810	str	r3, [sp, #36]
12811	ldr	r3, [r0]
12812	ldr	r0, [sp, #36]
12813	str	r3, [sp, #40]
12814	add	r10, r3, r0
12815	str	r10, [r1, #12]
12816	mov	r0, r10
12817	movs	r1, #0
12818	bl	ftl_memset
12819	ldr	r3, [sp, #12]
12820	ldr	r2, .L1726+12
12821	cmp	r6, r3
12822	beq	.L1688
12823	ldr	r3, [sp, #28]
12824	cmp	r6, r3
12825	bne	.L1721
12826	ldrh	r2, [r2]
12827	ldr	r3, [sp, #4]
12828	ldr	r1, [sp, #20]
12829	smulbb	r2, r2, r6
12830	adds	r4, r3, r1
12831	movs	r3, #0
12832	subs	r4, r4, r2
12833	str	r3, [sp, #24]
12834	uxth	r4, r4
12835	b	.L1691
12836.L1688:
12837	ldrh	r4, [r2]
12838	ldr	r0, [sp, #4]
12839	mov	r1, r4
12840	bl	__aeabi_uidivmod
12841	ldr	r3, [sp, #20]
12842	subs	r4, r4, r1
12843	str	r1, [sp, #24]
12844	cmp	r4, r3
12845	it	cs
12846	movcs	r4, r3
12847.L1691:
12848	ldr	r2, .L1726+12
12849	ldr	r3, [sp, #12]
12850	ldrh	r2, [r2]
12851	cmp	r4, r2
12852	ldr	r2, [r8]
12853	bne	.L1692
12854	cmp	r6, r3
12855	add	r7, r7, r2
12856	ittet	ne
12857	mulne	r4, r4, r6
12858	ldrne	r3, [sp, #4]
12859	ldreq	r3, [sp, #16]
12860	subne	r4, r4, r3
12861	itett	ne
12862	ldrne	r3, [sp, #16]
12863	streq	r3, [r7, #8]
12864	addne	r4, r3, r4, lsl #9
12865	strne	r4, [r7, #8]
12866.L1694:
12867	ldr	r3, .L1726+36
12868	ldrb	r1, [r5, #6]	@ zero_extendqisi2
12869	ldrh	r2, [r3]
12870	cmp	r1, r2
12871	bcc	.L1703
12872	movw	r2, #1089
12873	ldr	r1, .L1726+40
12874	ldr	r0, .L1726+44
12875	bl	printf
12876.L1703:
12877	ldr	r3, [sp, #40]
12878	movw	r2, #61589
12879	ldr	r1, [sp, #36]
12880	add	fp, fp, #1
12881	strh	r2, [r3, r1]	@ movhi
12882	ldr	r1, .L1726+60
12883	str	r6, [r10, #8]
12884	adds	r6, r6, #1
12885	ldr	r2, [r1]
12886	str	r2, [r10, #4]
12887	adds	r2, r2, #1
12888	adds	r3, r2, #1
12889	it	eq
12890	moveq	r2, #0
12891	str	r2, [r1]
12892	ldr	r2, [sp, #48]
12893	str	r2, [r10, #12]
12894	ldrh	r2, [r5]
12895	strh	r2, [r10, #2]	@ movhi
12896	b	.L1686
12897.L1727:
12898	.align	2
12899.L1726:
12900	.word	.LANCHOR34
12901	.word	.LANCHOR86
12902	.word	.LANCHOR176
12903	.word	.LANCHOR12
12904	.word	.LANCHOR51
12905	.word	.LANCHOR64
12906	.word	.LANCHOR177
12907	.word	.LANCHOR52
12908	.word	.LANCHOR48
12909	.word	.LANCHOR3
12910	.word	.LANCHOR178
12911	.word	.LC1
12912	.word	.LANCHOR122
12913	.word	.LANCHOR24
12914	.word	.LANCHOR114
12915	.word	.LANCHOR71
12916.L1692:
12917	cmp	r6, r3
12918	add	r2, r2, r7
12919	ite	eq
12920	ldreq	r1, .L1728
12921	ldrne	r1, .L1728+4
12922	ldr	r1, [r1]
12923	str	r1, [r2, #8]
12924	ldr	r2, [sp, #48]
12925	adds	r1, r2, #1
12926	beq	.L1697
12927	str	r2, [sp, #56]
12928	add	r0, sp, #52
12929	ldr	r2, [r8]
12930	str	r6, [sp, #68]
12931	add	r2, r2, r7
12932	ldr	r1, [r2, #8]
12933	ldr	r2, [r2, #12]
12934	str	r1, [sp, #60]
12935	movs	r1, #1
12936	str	r2, [sp, #64]
12937	movs	r2, #0
12938	bl	FlashReadPages
12939	ldr	r2, [sp, #52]
12940	adds	r2, r2, #1
12941	bne	.L1698
12942	ldr	r1, .L1728+8
12943	ldr	r2, [r1, #72]
12944	adds	r2, r2, #1
12945	str	r2, [r1, #72]
12946.L1701:
12947	ldr	r3, [sp, #12]
12948	lsls	r2, r4, #9
12949	cmp	r6, r3
12950	bne	.L1702
12951	ldr	r1, [r8]
12952	ldr	r3, [sp, #24]
12953	add	r7, r7, r1
12954	ldr	r1, [sp, #16]
12955	ldr	r0, [r7, #8]
12956	add	r0, r0, r3, lsl #9
12957.L1724:
12958	bl	ftl_memcpy
12959	b	.L1694
12960.L1698:
12961	ldr	r1, [r10, #8]
12962	cmp	r6, r1
12963	beq	.L1700
12964	ldr	r0, .L1728+8
12965	ldr	r2, [r0, #72]
12966	adds	r2, r2, #1
12967	str	r2, [r0, #72]
12968	mov	r2, r6
12969	ldr	r0, .L1728+12
12970	bl	printf
12971.L1700:
12972	ldr	r2, [r10, #8]
12973	cmp	r6, r2
12974	beq	.L1701
12975	movw	r2, #1074
12976	ldr	r1, .L1728+16
12977	ldr	r0, .L1728+20
12978	bl	printf
12979	b	.L1701
12980.L1697:
12981	ldr	r2, [r8]
12982	movs	r1, #0
12983	adds	r0, r2, r7
12984	ldr	r2, .L1728+24
12985	ldr	r0, [r0, #8]
12986	ldrh	r2, [r2]
12987	bl	ftl_memset
12988	b	.L1701
12989.L1702:
12990	ldr	r1, .L1728+28
12991	ldr	r3, [sp, #4]
12992	ldr	r0, [r8]
12993	ldrh	r1, [r1]
12994	add	r7, r7, r0
12995	ldr	r0, [r7, #8]
12996	muls	r1, r6, r1
12997	subs	r1, r1, r3
12998	ldr	r3, [sp, #16]
12999	add	r1, r3, r1, lsl #9
13000	b	.L1724
13001.L1721:
13002	ldrh	r2, [r2]
13003	ldr	r3, [sp, #4]
13004	ldr	r1, [r8]
13005	muls	r2, r6, r2
13006	add	r7, r7, r1
13007	subs	r2, r2, r3
13008	ldr	r3, [sp, #16]
13009	add	r2, r3, r2, lsl #9
13010	str	r2, [r7, #8]
13011	b	.L1694
13012.L1709:
13013	ldr	r5, .L1728+32
13014	ldr	r6, .L1728+36
13015.L1722:
13016	ldrh	r3, [r5]
13017	movw	r2, #65535
13018	cmp	r3, r2
13019	bne	.L1710
13020	ldrh	r2, [r6]
13021	cmp	r2, r3
13022	bne	.L1710
13023	movs	r0, #0
13024	bl	List_get_gc_head_node
13025	uxth	r0, r0
13026	bl	FtlGcRefreshBlock
13027.L1710:
13028	ldr	r2, .L1728+40
13029	movs	r3, #128
13030	movs	r1, #1
13031	mov	r0, r1
13032	strh	r3, [r2]	@ movhi
13033	ldr	r2, .L1728+44
13034	strh	r3, [r2]	@ movhi
13035	bl	rk_ftl_garbage_collect
13036	movs	r1, #1
13037	movs	r0, #0
13038	bl	rk_ftl_garbage_collect
13039	ldrh	r3, [r4]
13040	cmp	r3, #8
13041	bls	.L1722
13042	b	.L1711
13043.L1712:
13044	mov	r0, #-1
13045	b	.L1675
13046.L1729:
13047	.align	2
13048.L1728:
13049	.word	.LANCHOR115
13050	.word	.LANCHOR113
13051	.word	.LANCHOR81
13052	.word	.LC108
13053	.word	.LANCHOR178
13054	.word	.LC1
13055	.word	.LANCHOR23
13056	.word	.LANCHOR12
13057	.word	.LANCHOR80
13058	.word	.LANCHOR99
13059	.word	.LANCHOR83
13060	.word	.LANCHOR82
13061	.size	FtlWrite, .-FtlWrite
13062	.global	__aeabi_idivmod
13063	.section	.text.sftl_write,"ax",%progbits
13064	.align	1
13065	.global	sftl_write
13066	.syntax unified
13067	.thumb
13068	.thumb_func
13069	.fpu softvfp
13070	.type	sftl_write, %function
13071sftl_write:
13072	@ args = 0, pretend = 0, frame = 112
13073	@ frame_needed = 0, uses_anonymous_args = 0
13074	push	{r4, r5, r6, r7, r8, r10, fp, lr}
13075	adds	r4, r0, r1
13076	subs	r5, r4, #1
13077	sub	sp, sp, #120
13078	cmp	r5, #63
13079	str	r0, [sp, #8]
13080	str	r1, [sp, #16]
13081	str	r2, [sp, #36]
13082	ldr	r6, .L1762
13083	bls	.L1731
13084	cmp	r0, #576
13085	bls	.L1732
13086.L1731:
13087	ldr	r3, [r6]
13088	cmp	r3, #0
13089	beq	.L1733
13090	ldr	r2, .L1762+4
13091	mov	r0, #512
13092	ldrh	r3, [r2, #14]
13093	str	r3, [sp, #20]
13094	ldrh	r3, [r2, #10]
13095	ldrb	r1, [sp, #20]	@ zero_extendqisi2
13096	smulbb	r3, r3, r1
13097	uxth	r3, r3
13098	mov	r1, r3
13099	str	r3, [sp, #24]
13100	bl	__aeabi_uidiv
13101	ldr	r2, .L1762+8
13102	movs	r3, #0
13103	ldr	r1, .L1762+12
13104	str	r0, [sp, #12]
13105	sub	r4, r2, #262144
13106.L1737:
13107	ldr	r0, [r2, #-4]
13108	cmp	r0, #0
13109	beq	.L1734
13110.L1738:
13111	ldr	r3, [sp, #12]
13112	movs	r4, #0
13113	ldr	r2, [sp, #24]
13114	ldr	r6, .L1762+16
13115	str	r4, [sp, #28]
13116	muls	r3, r2, r3
13117	str	r3, [sp, #48]
13118	ldr	r3, [sp, #12]
13119	str	r3, [sp, #32]
13120.L1735:
13121	mov	r2, #512
13122	movs	r1, #0
13123	ldr	r0, .L1762+20
13124	bl	memset
13125	ldr	r3, .L1762+4
13126	mov	r0, r4
13127	ldrh	r7, [r3, #14]
13128	mov	r1, r7
13129	uxtb	r8, r7
13130	uxth	r3, r8
13131	str	r3, [sp, #40]
13132	ldr	r3, .L1762+4
13133	ldrh	r5, [r3, #10]
13134	ldrh	r3, [sp, #40]
13135	smulbb	r5, r5, r3
13136	bl	__aeabi_uidiv
13137	uxth	r5, r5
13138	mov	r1, r0
13139	ldr	r3, [r6, #4]
13140	movs	r0, #0
13141	blx	r3
13142	cmp	r5, #512
13143	bcs	.L1739
13144	mov	r1, r7
13145	adds	r0, r5, r4
13146	bl	__aeabi_uidiv
13147	ldr	r3, [r6, #4]
13148	mov	r1, r0
13149	movs	r0, #0
13150	blx	r3
13151.L1739:
13152	mov	r1, r5
13153	mov	r0, r4
13154	bl	__aeabi_uidivmod
13155	movs	r5, #0
13156	mov	r10, r1
13157	subs	r3, r4, r1
13158	str	r3, [sp, #44]
13159.L1740:
13160	cmp	r5, #512
13161	bcc	.L1741
13162	ldr	r3, .L1762+4
13163	mov	r0, r4
13164	movs	r5, #0
13165	ldrb	r8, [r3, #14]	@ zero_extendqisi2
13166	uxth	r3, r8
13167	str	r3, [sp, #40]
13168	ldr	r3, .L1762+4
13169	ldrh	r1, [r3, #10]
13170	ldrh	r3, [sp, #40]
13171	smulbb	r1, r1, r3
13172	uxth	r1, r1
13173	bl	__aeabi_uidivmod
13174	mov	fp, r1
13175	subs	r3, r4, r1
13176	uxth	r0, fp
13177	mov	r1, r8
13178	str	r3, [sp, #44]
13179	bl	__aeabi_idivmod
13180	uxth	r7, r1
13181.L1742:
13182	cmp	r5, #512
13183	bcs	.L1746
13184	ldr	r3, [sp, #40]
13185	mov	r1, r8
13186	add	r0, fp, r5
13187	sub	r10, r3, r7
13188	ldr	r3, .L1762+20
13189	uxth	r10, r10
13190	add	r2, r3, r5, lsl #9
13191	str	r2, [sp, #52]
13192	bl	__aeabi_uidiv
13193	ldr	r3, [sp, #44]
13194	uxth	r0, r0
13195	mov	r1, r8
13196	add	r7, r7, r3
13197	mla	r0, r8, r0, r7
13198	bl	__aeabi_uidiv
13199	ldr	r7, [r6, #12]
13200	mov	r1, r0
13201	add	r3, sp, #56
13202	ldr	r2, [sp, #52]
13203	movs	r0, #0
13204	blx	r7
13205	adds	r0, r0, #1
13206	bne	.L1743
13207.L1746:
13208	ldr	r3, .L1762+24
13209	movs	r5, #0
13210.L1744:
13211	ldr	r2, .L1762+20
13212	mov	r7, r3
13213	adds	r3, r3, #4
13214	ldr	r1, [r2, r5, lsl #2]
13215	ldr	r2, [r7]
13216	cmp	r1, r2
13217	beq	.L1747
13218	mov	r2, #512
13219	movs	r1, #0
13220	ldr	r0, .L1762+20
13221	bl	memset
13222	ldr	r2, .L1762+20
13223	mov	r1, r4
13224	str	r5, [sp]
13225	ldr	r3, [r7]
13226	ldr	r2, [r2, r5, lsl #2]
13227	ldr	r0, .L1762+28
13228	bl	printf
13229	ldr	r1, [sp, #20]
13230	mov	r0, r4
13231	bl	__aeabi_uidiv
13232	ldr	r3, [r6, #4]
13233	mov	r1, r0
13234	movs	r0, #0
13235	blx	r3
13236	ldr	r3, [sp, #12]
13237	cmp	r3, #1
13238	bls	.L1748
13239	ldr	r3, [sp, #24]
13240	ldr	r1, [sp, #20]
13241	adds	r0, r3, r4
13242	bl	__aeabi_uidiv
13243	ldr	r3, [r6, #4]
13244	mov	r1, r0
13245	movs	r0, #0
13246	blx	r3
13247.L1748:
13248	ldr	r2, [sp, #32]
13249	ldr	r3, [sp, #12]
13250	add	r3, r3, r2
13251	ldr	r2, [sp, #48]
13252	add	r4, r4, r2
13253	ldr	r2, [sp, #32]
13254	cmp	r2, #15
13255	bls	.L1754
13256.L1753:
13257	ldr	r3, .L1762
13258	movs	r2, #0
13259	str	r2, [r3]
13260.L1733:
13261	ldr	r3, [sp, #36]
13262	movs	r0, #0
13263	ldr	r2, [sp, #16]
13264	ldr	r1, [sp, #8]
13265	bl	FtlWrite
13266	add	sp, sp, #120
13267	@ sp needed
13268	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
13269.L1734:
13270	ldr	r0, [r4, r3, lsl #2]
13271	adds	r3, r3, #1
13272	cmp	r3, #4096
13273	it	hi
13274	movhi	r3, #0
13275	str	r0, [r2, #-4]!
13276	cmp	r1, r2
13277	bne	.L1737
13278	b	.L1738
13279.L1754:
13280	str	r3, [sp, #32]
13281	b	.L1735
13282.L1741:
13283	mov	r1, r8
13284	add	r0, r10, r5
13285	bl	__aeabi_uidiv
13286	uxth	fp, r0
13287	mov	r1, r8
13288	ldr	r0, [sp, #44]
13289	mul	r3, r8, fp
13290	str	r3, [sp, #56]
13291	movw	r3, #61424
13292	str	r3, [sp, #60]
13293	ldr	r3, .L1762+24
13294	add	r2, r3, r5, lsl #9
13295	str	r2, [sp, #52]
13296	bl	__aeabi_uidiv
13297	add	r3, sp, #56
13298	add	r1, r0, fp
13299	ldr	r2, [sp, #52]
13300	movs	r0, #0
13301	ldr	r7, [r6, #8]
13302	blx	r7
13303	ldr	r3, [sp, #40]
13304	add	r5, r5, r3
13305	uxth	r5, r5
13306	b	.L1740
13307.L1743:
13308	add	r5, r5, r10
13309	movs	r7, #0
13310	uxth	r5, r5
13311	b	.L1742
13312.L1747:
13313	adds	r5, r5, #1
13314	cmp	r5, #65536
13315	bne	.L1744
13316	ldr	r3, [sp, #28]
13317	adds	r3, r3, #1
13318	cmp	r3, #5
13319	str	r3, [sp, #28]
13320	bls	.L1748
13321	b	.L1753
13322.L1732:
13323	ldr	r3, [sp, #8]
13324	ldr	r0, .L1762+24
13325	cmp	r3, #63
13326	bhi	.L1750
13327	rsb	r1, r3, #64
13328	ldr	r3, [sp, #16]
13329	subs	r2, r3, r1
13330	ldr	r3, [sp, #36]
13331	add	r1, r3, r1, lsl #9
13332.L1751:
13333	movs	r3, #1
13334	cmp	r5, #576
13335	str	r3, [r6]
13336	ittt	hi
13337	subhi	r2, r2, r4
13338	mvnhi	r3, #446
13339	addhi	r2, r2, r3
13340	lsls	r2, r2, #9
13341	bl	memcpy
13342	b	.L1733
13343.L1750:
13344	ldr	r2, [sp, #8]
13345	ldr	r3, .L1762+32
13346	ldr	r1, [sp, #36]
13347	add	r3, r3, r2
13348	ldr	r2, [sp, #16]
13349	add	r0, r0, r3, lsl #9
13350	b	.L1751
13351.L1763:
13352	.align	2
13353.L1762:
13354	.word	.LANCHOR179
13355	.word	.LANCHOR0
13356	.word	idb_buf+262144
13357	.word	idb_buf+16388
13358	.word	.LANCHOR105
13359	.word	gp_flash_check_buf
13360	.word	idb_buf
13361	.word	.LC109
13362	.word	8388544
13363	.size	sftl_write, .-sftl_write
13364	.section	.text.FtlLoadSysInfo,"ax",%progbits
13365	.align	1
13366	.global	FtlLoadSysInfo
13367	.syntax unified
13368	.thumb
13369	.thumb_func
13370	.fpu softvfp
13371	.type	FtlLoadSysInfo, %function
13372FtlLoadSysInfo:
13373	@ args = 0, pretend = 0, frame = 8
13374	@ frame_needed = 0, uses_anonymous_args = 0
13375	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
13376	movs	r1, #0
13377	ldr	r8, .L1785+136
13378	ldr	r5, .L1785
13379	ldr	r3, [r8]
13380	ldr	r4, .L1785+4
13381	ldr	r10, .L1785+140
13382	ldrh	r2, [r5]
13383	ldr	r7, .L1785+8
13384	str	r3, [r4, #8]
13385	ldr	r6, .L1785+12
13386	ldr	r3, [r10]
13387	lsls	r2, r2, #1
13388	ldr	r0, [r7]
13389	str	r3, [r4, #12]
13390	bl	ftl_memset
13391	ldrh	r0, [r6]
13392	movw	r3, #65535
13393	str	r7, [sp]
13394	cmp	r0, r3
13395	bne	.L1765
13396.L1773:
13397	mov	r0, #-1
13398.L1764:
13399	add	sp, sp, #8
13400	@ sp needed
13401	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
13402.L1765:
13403	movs	r1, #1
13404	mov	fp, r4
13405	bl	FtlGetLastWrittenPage
13406	ldr	r3, .L1785+16
13407	sxth	r7, r0
13408	adds	r0, r0, #1
13409	strh	r0, [r6, #2]	@ movhi
13410.L1767:
13411	cmp	r7, #0
13412	bge	.L1770
13413	movw	r2, #1437
13414	ldr	r1, .L1785+20
13415	ldr	r0, .L1785+24
13416	bl	printf
13417.L1769:
13418	ldr	r2, .L1785+28
13419	ldrh	r3, [r5]
13420	ldrh	r2, [r2]
13421	adds	r3, r3, #24
13422	cmp	r2, r3, lsl #1
13423	bcs	.L1772
13424	movw	r2, #1439
13425	ldr	r1, .L1785+20
13426	ldr	r0, .L1785+24
13427	bl	printf
13428.L1772:
13429	ldr	r7, .L1785+32
13430	movs	r2, #48
13431	ldr	r1, [r4, #8]
13432	mov	r0, r7
13433	bl	ftl_memcpy
13434	ldrh	r2, [r5]
13435	ldr	r1, [r4, #8]
13436	ldr	r3, [sp]
13437	lsls	r2, r2, #1
13438	adds	r1, r1, #48
13439	ldr	r0, [r3]
13440	bl	ftl_memcpy
13441	ldrh	r1, [r5]
13442	ldr	r3, [r4, #8]
13443	mov	r4, r7
13444	lsrs	r2, r1, #3
13445	adds	r1, r1, #24
13446	lsls	r1, r1, #1
13447	adds	r2, r2, #4
13448	bic	r1, r1, #3
13449	add	r1, r1, r3
13450	ldr	r3, .L1785+36
13451	ldr	r0, [r3]
13452	bl	ftl_memcpy
13453	ldr	r2, [r7]
13454	ldr	r3, .L1785+16
13455	cmp	r2, r3
13456	bne	.L1773
13457	ldr	r3, .L1785+40
13458	ldrb	r2, [r7, #10]	@ zero_extendqisi2
13459	ldrh	r5, [r7, #8]
13460	ldrh	r3, [r3]
13461	strh	r5, [r6, #6]	@ movhi
13462	cmp	r2, r3
13463	bne	.L1773
13464	ldr	r3, .L1785+44
13465	ldr	r2, .L1785+48
13466	str	r5, [r3]
13467	ldr	r3, .L1785+52
13468	ldrh	r3, [r3]
13469	muls	r3, r5, r3
13470	str	r3, [r2]
13471	ldr	r2, .L1785+56
13472	ldrh	r2, [r2]
13473	muls	r3, r2, r3
13474	ldr	r2, .L1785+60
13475	str	r3, [r2]
13476	ldr	r3, .L1785+64
13477	ldr	r6, [r3]
13478	ldr	r3, .L1785+68
13479	ldrh	r0, [r3, #6]
13480	ldr	r3, .L1785+72
13481	subs	r0, r6, r0
13482	ldrh	r1, [r3]
13483	subs	r0, r0, r5
13484	bl	__aeabi_uidiv
13485	ldr	r3, .L1785+76
13486	cmp	r5, r6
13487	strh	r0, [r3]	@ movhi
13488	bls	.L1774
13489	movw	r2, #1461
13490	ldr	r1, .L1785+20
13491	ldr	r0, .L1785+24
13492	bl	printf
13493.L1774:
13494	ldrh	r2, [r4, #16]
13495	ldr	r3, .L1785+80
13496	ldrh	ip, [r4, #14]
13497	ldr	r7, .L1785+84
13498	lsrs	r1, r2, #6
13499	and	r2, r2, #63
13500	strb	r2, [r3, #6]
13501	ldrb	r2, [r4, #11]	@ zero_extendqisi2
13502	strh	r1, [r3, #2]	@ movhi
13503	ldr	r1, .L1785+88
13504	strb	r2, [r3, #8]
13505	ldrh	r2, [r4, #18]
13506	strh	ip, [r3]	@ movhi
13507	movw	r3, #65535
13508	strh	r3, [r7]	@ movhi
13509	movs	r3, #0
13510	strh	r2, [r1]	@ movhi
13511	ldrh	r2, [r4, #20]
13512	strh	r3, [r7, #2]	@ movhi
13513	strb	r3, [r7, #6]
13514	strb	r3, [r7, #8]
13515	lsrs	r5, r2, #6
13516	and	r2, r2, #63
13517	strb	r2, [r1, #6]
13518	ldrb	r2, [r4, #12]	@ zero_extendqisi2
13519	strh	r5, [r1, #2]	@ movhi
13520	ldrh	r5, [r4, #22]
13521	strb	r2, [r1, #8]
13522	ldr	r2, .L1785+92
13523	strh	r5, [r2]	@ movhi
13524	ldrh	r5, [r4, #24]
13525	lsrs	r6, r5, #6
13526	and	r5, r5, #63
13527	strb	r5, [r2, #6]
13528	ldrb	r5, [r4, #13]	@ zero_extendqisi2
13529	strh	r6, [r2, #2]	@ movhi
13530	ldr	r6, [r4, #32]
13531	strb	r5, [r2, #8]
13532	ldr	r5, .L1785+96
13533	str	r3, [r5]
13534	ldr	r5, .L1785+100
13535	str	r3, [r5]
13536	ldr	r5, .L1785+104
13537	str	r3, [r5]
13538	ldr	r5, .L1785+108
13539	str	r3, [r5]
13540	ldr	r5, .L1785+112
13541	str	r6, [r5]
13542	mov	r6, r1
13543	ldr	r5, .L1785+116
13544	str	r3, [r5]
13545	ldr	r5, .L1785+120
13546	str	r3, [r5]
13547	ldr	r5, .L1785+124
13548	ldr	lr, [r4, #40]
13549	str	r3, [r5]
13550	ldr	r3, .L1785+128
13551	ldr	r5, [r3]
13552	cmp	lr, r5
13553	mov	r5, r2
13554	it	hi
13555	strhi	lr, [r3]
13556	ldr	r3, .L1785+132
13557	ldr	r2, [r4, #36]
13558	ldr	r1, [r3]
13559	cmp	r2, r1
13560	it	hi
13561	strhi	r2, [r3]
13562	movw	r3, #65535
13563	cmp	ip, r3
13564	beq	.L1777
13565	ldr	r0, .L1785+80
13566	bl	make_superblock
13567.L1777:
13568	ldrh	r2, [r6]
13569	movw	r3, #65535
13570	cmp	r2, r3
13571	beq	.L1778
13572	ldr	r0, .L1785+88
13573	bl	make_superblock
13574.L1778:
13575	ldrh	r2, [r5]
13576	movw	r3, #65535
13577	cmp	r2, r3
13578	beq	.L1779
13579	ldr	r0, .L1785+92
13580	bl	make_superblock
13581.L1779:
13582	ldrh	r2, [r7]
13583	movw	r3, #65535
13584	cmp	r2, r3
13585	beq	.L1780
13586	ldr	r0, .L1785+84
13587	bl	make_superblock
13588.L1780:
13589	movs	r0, #0
13590	b	.L1764
13591.L1770:
13592	ldrh	r2, [r6]
13593	mov	r0, fp
13594	str	r3, [sp, #4]
13595	orr	r2, r7, r2, lsl #10
13596	str	r2, [r4, #4]
13597	ldr	r2, [r8]
13598	str	r2, [r4, #8]
13599	movs	r2, #1
13600	mov	r1, r2
13601	bl	FlashReadPages
13602	ldr	r2, [r4]
13603	ldr	r3, [sp, #4]
13604	adds	r2, r2, #1
13605	beq	.L1768
13606	ldr	r2, [r8]
13607	ldr	r2, [r2]
13608	cmp	r2, r3
13609	bne	.L1768
13610	ldr	r2, [r10]
13611	ldrh	r1, [r2]
13612	movw	r2, #61604
13613	cmp	r1, r2
13614	beq	.L1769
13615.L1768:
13616	subs	r7, r7, #1
13617	sxth	r7, r7
13618	b	.L1767
13619.L1786:
13620	.align	2
13621.L1785:
13622	.word	.LANCHOR5
13623	.word	.LANCHOR106
13624	.word	.LANCHOR42
13625	.word	.LANCHOR79
13626	.word	1179929683
13627	.word	.LANCHOR180
13628	.word	.LC1
13629	.word	.LANCHOR23
13630	.word	.LANCHOR39
13631	.word	.LANCHOR1
13632	.word	.LANCHOR10
13633	.word	.LANCHOR181
13634	.word	.LANCHOR61
13635	.word	.LANCHOR19
13636	.word	.LANCHOR12
13637	.word	.LANCHOR34
13638	.word	.LANCHOR7
13639	.word	.LANCHOR37
13640	.word	.LANCHOR3
13641	.word	.LANCHOR78
13642	.word	.LANCHOR51
13643	.word	.LANCHOR80
13644	.word	.LANCHOR52
13645	.word	.LANCHOR53
13646	.word	.LANCHOR67
13647	.word	.LANCHOR64
13648	.word	.LANCHOR62
13649	.word	.LANCHOR66
13650	.word	.LANCHOR72
13651	.word	.LANCHOR73
13652	.word	.LANCHOR76
13653	.word	.LANCHOR65
13654	.word	.LANCHOR70
13655	.word	.LANCHOR71
13656	.word	.LANCHOR107
13657	.word	.LANCHOR108
13658	.size	FtlLoadSysInfo, .-FtlLoadSysInfo
13659	.section	.text.FtlSysBlkInit,"ax",%progbits
13660	.align	1
13661	.global	FtlSysBlkInit
13662	.syntax unified
13663	.thumb
13664	.thumb_func
13665	.fpu softvfp
13666	.type	FtlSysBlkInit, %function
13667FtlSysBlkInit:
13668	@ args = 0, pretend = 0, frame = 0
13669	@ frame_needed = 0, uses_anonymous_args = 0
13670	push	{r3, r4, r5, r6, r7, lr}
13671	movs	r3, #0
13672	ldr	r6, .L1802
13673	strh	r3, [r6]	@ movhi
13674	ldr	r3, .L1802+4
13675	ldrh	r0, [r3]
13676	bl	FtlFreeSysBlkQueueInit
13677	bl	FtlScanSysBlk
13678	ldr	r3, .L1802+8
13679	ldrh	r2, [r3]
13680	movw	r3, #65535
13681	cmp	r2, r3
13682	bne	.L1788
13683.L1790:
13684	mov	r7, #-1
13685.L1787:
13686	mov	r0, r7
13687	pop	{r3, r4, r5, r6, r7, pc}
13688.L1788:
13689	bl	FtlLoadSysInfo
13690	mov	r7, r0
13691	cmp	r0, #0
13692	bne	.L1790
13693	bl	FtlLoadMapInfo
13694	bl	FtlLoadVonderInfo
13695	bl	Ftl_load_ext_data
13696	bl	FtlLoadEctTbl
13697	bl	FtlFreeSysBLkSort
13698	bl	SupperBlkListInit
13699	bl	FtlPowerLostRecovery
13700	movs	r0, #1
13701	bl	FtlUpdateVaildLpn
13702	ldr	r3, .L1802+12
13703	movs	r0, #12
13704	ldrh	r1, [r3]
13705	ldr	r3, .L1802+16
13706	ldr	r2, [r3]
13707	mov	r3, r7
13708.L1791:
13709	cmp	r3, r1
13710	bge	.L1796
13711	mla	r4, r0, r3, r2
13712	ldr	r4, [r4, #4]
13713	cmp	r4, #0
13714	bge	.L1792
13715.L1796:
13716	ldr	r4, .L1802+20
13717	cmp	r3, r1
13718	ldr	r5, .L1802+24
13719	ldrh	r2, [r4, #28]
13720	add	r2, r2, #1
13721	strh	r2, [r4, #28]	@ movhi
13722	bge	.L1800
13723.L1793:
13724	ldr	r6, .L1802+28
13725	ldr	r0, .L1802+24
13726	bl	FtlSuperblockPowerLostFix
13727	mov	r0, r6
13728	bl	FtlSuperblockPowerLostFix
13729	ldr	r3, .L1802+32
13730	ldrh	r1, [r5]
13731	ldrh	r0, [r5, #4]
13732	ldr	r2, [r3]
13733	ldrh	r3, [r2, r1, lsl #1]
13734	subs	r3, r3, r0
13735	ldr	r0, .L1802+36
13736	strh	r3, [r2, r1, lsl #1]	@ movhi
13737	ldrh	ip, [r6]
13738	ldrh	r3, [r0]
13739	ldrh	lr, [r6, #4]
13740	strh	r3, [r5, #2]	@ movhi
13741	movs	r3, #0
13742	strb	r3, [r5, #6]
13743	strh	r3, [r5, #4]	@ movhi
13744	ldrh	r1, [r2, ip, lsl #1]
13745	sub	r1, r1, lr
13746	strh	r1, [r2, ip, lsl #1]	@ movhi
13747	ldrh	r2, [r0]
13748	ldr	r0, .L1802+40
13749	strb	r3, [r6, #6]
13750	strh	r2, [r6, #2]	@ movhi
13751	strh	r3, [r6, #4]	@ movhi
13752	bl	FtlMapBlkWriteDump_data
13753	ldr	r0, .L1802+44
13754	bl	FtlMapBlkWriteDump_data
13755	ldrh	r3, [r4, #30]
13756	adds	r3, r3, #1
13757	strh	r3, [r4, #30]	@ movhi
13758	bl	l2p_flush
13759	bl	FtlVpcTblFlush
13760.L1801:
13761	bl	FtlVpcTblFlush
13762	ldrh	r0, [r5]
13763	movw	r3, #65535
13764	cmp	r0, r3
13765	beq	.L1799
13766	ldrh	r3, [r5, #4]
13767	cbnz	r3, .L1799
13768	ldr	r5, .L1802+28
13769	ldrh	r3, [r5, #4]
13770	cbnz	r3, .L1799
13771	bl	FtlGcRefreshBlock
13772	ldrh	r0, [r5]
13773	bl	FtlGcRefreshBlock
13774	ldr	r0, .L1802+24
13775	bl	allocate_new_data_superblock
13776	mov	r0, r5
13777	bl	allocate_new_data_superblock
13778.L1799:
13779	ldrh	r3, [r4, #28]
13780	lsls	r3, r3, #27
13781	bne	.L1787
13782	bl	FtlVpcCheckAndModify
13783	b	.L1787
13784.L1792:
13785	adds	r3, r3, #1
13786	b	.L1791
13787.L1800:
13788	ldrh	r3, [r6]
13789	cmp	r3, #0
13790	bne	.L1793
13791	bl	l2p_flush
13792	b	.L1801
13793.L1803:
13794	.align	2
13795.L1802:
13796	.word	.LANCHOR161
13797	.word	.LANCHOR4
13798	.word	.LANCHOR79
13799	.word	.LANCHOR33
13800	.word	.LANCHOR55
13801	.word	.LANCHOR39
13802	.word	.LANCHOR51
13803	.word	.LANCHOR52
13804	.word	.LANCHOR42
13805	.word	.LANCHOR19
13806	.word	.LANCHOR144
13807	.word	.LANCHOR149
13808	.size	FtlSysBlkInit, .-FtlSysBlkInit
13809	.section	.text.ftl_low_format,"ax",%progbits
13810	.align	1
13811	.global	ftl_low_format
13812	.syntax unified
13813	.thumb
13814	.thumb_func
13815	.fpu softvfp
13816	.type	ftl_low_format, %function
13817ftl_low_format:
13818	@ args = 0, pretend = 0, frame = 16
13819	@ frame_needed = 0, uses_anonymous_args = 0
13820	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
13821	movs	r3, #0
13822	ldr	r6, .L1828
13823	ldr	r2, .L1828+4
13824	ldr	r5, .L1828+8
13825	ldrh	r0, [r6]
13826	str	r3, [r2]
13827	str	r3, [r5]
13828	bl	FtlFreeSysBlkQueueInit
13829	bl	FtlLoadBbt
13830	cbz	r0, .L1805
13831	bl	FtlMakeBbt
13832.L1805:
13833	ldr	r3, .L1828+12
13834	ldr	r2, .L1828+16
13835	ldr	ip, .L1828+100
13836	ldrh	r1, [r3]
13837	ldr	r4, [r2]
13838	ldr	r2, .L1828+20
13839	str	r3, [sp, #4]
13840	lsls	r1, r1, #7
13841	ldr	r7, [r2]
13842	movs	r2, #0
13843.L1806:
13844	uxth	r3, r2
13845	adds	r2, r2, #1
13846	cmp	r3, r1
13847	blt	.L1807
13848	ldr	r3, .L1828+24
13849	movs	r7, #0
13850	ldr	r10, .L1828+104
13851	ldrh	r4, [r3]
13852	mov	r8, r3
13853	mov	fp, r10
13854.L1808:
13855	ldrh	r3, [r10]
13856	cmp	r3, r4
13857	bhi	.L1809
13858	ldr	r4, .L1828+28
13859	subs	r3, r7, #2
13860	ldrh	r1, [r4]
13861	cmp	r3, r1, lsl #1
13862	bgt	.L1810
13863.L1814:
13864	movs	r6, #0
13865	mov	r7, r6
13866.L1811:
13867	ldrh	r3, [r8]
13868	uxth	r0, r6
13869	adds	r6, r6, #1
13870	cmp	r3, r0
13871	bhi	.L1815
13872	ldrh	r2, [fp]
13873	ldr	r3, .L1828+32
13874	ldrh	r4, [r4]
13875	ldr	r6, .L1828+36
13876	str	r2, [r3]
13877	ldr	r3, .L1828+40
13878	mov	r1, r4
13879	ldr	r2, [r3]
13880	mov	r0, r2
13881	str	r2, [sp, #12]
13882	bl	__aeabi_uidiv
13883	ubfx	r10, r0, #5, #16
13884	mov	r3, r0
13885	str	r0, [r6]
13886	add	r1, r10, #36
13887	ldr	r0, .L1828+44
13888	strh	r1, [r0]	@ movhi
13889	movs	r1, #24
13890	muls	r1, r4, r1
13891	str	r0, [sp]
13892	cmp	r7, r1
13893	ble	.L1816
13894	ldr	r2, [sp, #12]
13895	mov	r1, r4
13896	str	r3, [sp, #8]
13897	subs	r0, r2, r7
13898	bl	__aeabi_uidiv
13899	ldr	r3, [sp]
13900	str	r0, [r6]
13901	lsrs	r0, r0, #5
13902	adds	r0, r0, #24
13903	strh	r0, [r3]	@ movhi
13904	ldr	r3, [sp, #8]
13905.L1816:
13906	ldr	r2, .L1828+48
13907	ldrh	r2, [r2]
13908	cbz	r2, .L1818
13909	ldr	r1, .L1828+44
13910	ldrh	r0, [r1]
13911	add	r0, r0, r2, lsr #1
13912	strh	r0, [r1]	@ movhi
13913	mul	r0, r4, r2
13914	cmp	r7, r0
13915	itttt	lt
13916	addlt	r2, r2, #32
13917	strlt	r3, [r6]
13918	addlt	r2, r2, r10
13919	strhlt	r2, [r1]	@ movhi
13920.L1818:
13921	ldr	r3, [sp]
13922	ldr	r7, .L1828+52
13923	ldr	r10, .L1828+108
13924	ldrh	r2, [r3]
13925	ldr	r3, [r6]
13926	subs	r3, r3, r2
13927	muls	r4, r3, r4
13928	ldr	r3, .L1828+56
13929	ldrh	r3, [r3]
13930	str	r4, [r7]
13931	muls	r4, r3, r4
13932	ldr	r3, [sp, #4]
13933	ldrh	r3, [r3]
13934	str	r4, [r6]
13935	ldr	r6, .L1828+60
13936	muls	r4, r3, r4
13937	ldr	r3, .L1828+64
13938	str	r4, [r3]
13939	movw	r4, #65535
13940	bl	FtlBbmTblFlush
13941	ldrh	r2, [fp]
13942	movs	r1, #0
13943	ldr	r0, [r10]
13944	lsls	r2, r2, #1
13945	bl	ftl_memset
13946	ldr	r2, .L1828+68
13947	movs	r3, #0
13948	strh	r3, [r6, #2]	@ movhi
13949	movs	r1, #255
13950	strb	r3, [r6, #6]
13951	str	r3, [r2]
13952	ldr	r2, .L1828+72
13953	strh	r3, [r6]	@ movhi
13954	strh	r3, [r2, #2]	@ movhi
13955	strb	r3, [r2, #6]
13956	strb	r3, [r2, #8]
13957	movs	r3, #1
13958	strh	r4, [r2]	@ movhi
13959	ldrh	r2, [r8]
13960	mov	r8, r10
13961	strb	r3, [r6, #8]
13962	mov	r10, r6
13963	ldr	r3, .L1828+76
13964	lsrs	r2, r2, #3
13965	ldr	r0, [r3]
13966	bl	ftl_memset
13967.L1820:
13968	mov	r0, r10
13969	bl	make_superblock
13970	ldrb	r3, [r6, #7]	@ zero_extendqisi2
13971	ldrh	r2, [r6]
13972	cmp	r3, #0
13973	bne	.L1821
13974	ldr	r3, [r8]
13975	strh	r4, [r3, r2, lsl #1]	@ movhi
13976	ldrh	r3, [r6]
13977	adds	r3, r3, #1
13978	strh	r3, [r6]	@ movhi
13979	b	.L1820
13980.L1807:
13981	mvns	r0, r3
13982	orr	r0, r3, r0, lsl #16
13983	str	r0, [r4, r3, lsl #2]
13984	str	ip, [r7, r3, lsl #2]
13985	b	.L1806
13986.L1809:
13987	mov	r0, r4
13988	movs	r1, #1
13989	bl	FtlLowFormatEraseBlock
13990	adds	r4, r4, #1
13991	add	r7, r7, r0
13992	uxth	r7, r7
13993	uxth	r4, r4
13994	b	.L1808
13995.L1810:
13996	mov	r0, r7
13997	bl	__aeabi_uidiv
13998	ldr	r3, .L1828+80
13999	ldr	r3, [r3]
14000	add	r0, r0, r3
14001	uxth	r0, r0
14002	bl	FtlSysBlkNumInit
14003	ldrh	r0, [r6]
14004	bl	FtlFreeSysBlkQueueInit
14005	ldrh	r6, [r8]
14006.L1812:
14007	ldrh	r3, [fp]
14008	cmp	r3, r6
14009	bls	.L1814
14010	mov	r0, r6
14011	movs	r1, #1
14012	adds	r6, r6, #1
14013	bl	FtlLowFormatEraseBlock
14014	uxth	r6, r6
14015	b	.L1812
14016.L1815:
14017	movs	r1, #0
14018	bl	FtlLowFormatEraseBlock
14019	add	r7, r7, r0
14020	uxth	r7, r7
14021	b	.L1811
14022.L1821:
14023	ldr	r3, [r5]
14024	ldrh	r1, [r6, #4]
14025	ldr	r4, .L1828+84
14026	str	r3, [r6, #12]
14027	adds	r3, r3, #1
14028	str	r3, [r5]
14029	ldr	r3, [r8]
14030	mov	r10, r4
14031	strh	r1, [r3, r2, lsl #1]	@ movhi
14032	movs	r3, #0
14033	strh	r3, [r4, #2]	@ movhi
14034	strb	r3, [r4, #6]
14035	ldrh	r3, [r6]
14036	movw	r6, #65535
14037	adds	r3, r3, #1
14038	strh	r3, [r4]	@ movhi
14039	movs	r3, #1
14040	strb	r3, [r4, #8]
14041.L1822:
14042	mov	r0, r10
14043	bl	make_superblock
14044	ldrb	r3, [r4, #7]	@ zero_extendqisi2
14045	ldrh	r2, [r4]
14046	cbnz	r3, .L1823
14047	ldr	r3, [r8]
14048	strh	r6, [r3, r2, lsl #1]	@ movhi
14049	ldrh	r3, [r4]
14050	adds	r3, r3, #1
14051	strh	r3, [r4]	@ movhi
14052	b	.L1822
14053.L1823:
14054	ldr	r3, [r5]
14055	ldrh	r1, [r4, #4]
14056	str	r3, [r4, #12]
14057	adds	r3, r3, #1
14058	str	r3, [r5]
14059	movw	r4, #65535
14060	ldr	r3, [r8]
14061	strh	r1, [r3, r2, lsl #1]	@ movhi
14062	ldr	r3, .L1828+88
14063	strh	r4, [r3]	@ movhi
14064	bl	FtlFreeSysBlkQueueOut
14065	ldr	r3, .L1828+92
14066	movs	r2, #0
14067	strh	r2, [r3, #2]	@ movhi
14068	ldr	r2, [r7]
14069	strh	r0, [r3]	@ movhi
14070	strh	r4, [r3, #4]	@ movhi
14071	strh	r2, [r3, #6]	@ movhi
14072	ldr	r2, [r5]
14073	str	r2, [r3, #8]
14074	adds	r2, r2, #1
14075	str	r2, [r5]
14076	bl	FtlVpcTblFlush
14077	bl	FtlSysBlkInit
14078	cbnz	r0, .L1824
14079	ldr	r3, .L1828+96
14080	movs	r2, #1
14081	str	r2, [r3]
14082.L1824:
14083	movs	r0, #0
14084	add	sp, sp, #16
14085	@ sp needed
14086	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
14087.L1829:
14088	.align	2
14089.L1828:
14090	.word	.LANCHOR4
14091	.word	.LANCHOR71
14092	.word	.LANCHOR70
14093	.word	.LANCHOR12
14094	.word	.LANCHOR115
14095	.word	.LANCHOR113
14096	.word	.LANCHOR5
14097	.word	.LANCHOR3
14098	.word	.LANCHOR112
14099	.word	.LANCHOR61
14100	.word	.LANCHOR7
14101	.word	.LANCHOR78
14102	.word	.LANCHOR15
14103	.word	.LANCHOR181
14104	.word	.LANCHOR19
14105	.word	.LANCHOR51
14106	.word	.LANCHOR34
14107	.word	.LANCHOR59
14108	.word	.LANCHOR80
14109	.word	.LANCHOR1
14110	.word	.LANCHOR31
14111	.word	.LANCHOR52
14112	.word	.LANCHOR53
14113	.word	.LANCHOR79
14114	.word	.LANCHOR86
14115	.word	168778952
14116	.word	.LANCHOR6
14117	.word	.LANCHOR42
14118	.size	ftl_low_format, .-ftl_low_format
14119	.section	.text.sftl_init,"ax",%progbits
14120	.align	1
14121	.global	sftl_init
14122	.syntax unified
14123	.thumb
14124	.thumb_func
14125	.fpu softvfp
14126	.type	sftl_init, %function
14127sftl_init:
14128	@ args = 0, pretend = 0, frame = 0
14129	@ frame_needed = 0, uses_anonymous_args = 0
14130	push	{r4, lr}
14131	mov	r3, #-1
14132	ldr	r4, .L1836
14133	ldr	r1, .L1836+4
14134	ldr	r0, .L1836+8
14135	str	r3, [r4]
14136	bl	printf
14137	ldr	r0, .L1836+12
14138	bl	FtlConstantsInit
14139	bl	FtlMemInit
14140	bl	FtlVariablesInit
14141	ldr	r3, .L1836+16
14142	ldrh	r0, [r3]
14143	bl	FtlFreeSysBlkQueueInit
14144	bl	FtlLoadBbt
14145	cbnz	r0, .L1834
14146	bl	FtlSysBlkInit
14147	cbnz	r0, .L1834
14148	movs	r3, #1
14149	str	r3, [r4]
14150	ldr	r3, .L1836+20
14151	ldrh	r3, [r3]
14152	cmp	r3, #15
14153	bhi	.L1834
14154	movw	r4, #8129
14155.L1833:
14156	movs	r1, #1
14157	movs	r0, #0
14158	bl	rk_ftl_garbage_collect
14159	subs	r4, r4, #1
14160	bne	.L1833
14161.L1834:
14162	movs	r0, #0
14163	pop	{r4, pc}
14164.L1837:
14165	.align	2
14166.L1836:
14167	.word	.LANCHOR86
14168	.word	.LC70
14169	.word	.LC71
14170	.word	.LANCHOR0
14171	.word	.LANCHOR4
14172	.word	.LANCHOR48
14173	.size	sftl_init, .-sftl_init
14174	.section	.text.ftl_memcmp,"ax",%progbits
14175	.align	1
14176	.global	ftl_memcmp
14177	.syntax unified
14178	.thumb
14179	.thumb_func
14180	.fpu softvfp
14181	.type	ftl_memcmp, %function
14182ftl_memcmp:
14183	@ args = 0, pretend = 0, frame = 0
14184	@ frame_needed = 0, uses_anonymous_args = 0
14185	@ link register save eliminated.
14186	b	memcmp
14187	.size	ftl_memcmp, .-ftl_memcmp
14188	.global	ftl_temp_buf
14189	.global	g_nand_ops
14190	.global	g_nand_phy_info
14191	.global	gc_ink_free_return_value
14192	.global	check_vpc_table
14193	.global	FtlUpdateVaildLpnCount
14194	.global	g_ect_tbl_power_up_flush
14195	.global	power_up_flag
14196	.global	gFtlInitStatus
14197	.global	DeviceCapacity
14198	.global	g_power_lost_recovery_flag
14199	.global	c_mlc_erase_count_value
14200	.global	g_recovery_ppa_tbl
14201	.global	g_recovery_page_min_ver
14202	.global	g_recovery_page_num
14203	.global	g_cur_erase_blk
14204	.global	g_gc_skip_write_count
14205	.global	g_gc_head_data_block_count
14206	.global	g_gc_head_data_block
14207	.global	g_ftl_nand_free_count
14208	.global	g_in_swl_replace
14209	.global	g_in_gc_progress
14210	.global	g_max_erase_count
14211	.global	g_totle_sys_slc_erase_count
14212	.global	g_totle_slc_erase_count
14213	.global	g_min_erase_count
14214	.global	g_totle_avg_erase_count
14215	.global	g_totle_mlc_erase_count
14216	.global	g_totle_l2p_write_count
14217	.global	g_totle_cache_write_count
14218	.global	g_tmp_data_superblock_id
14219	.global	g_totle_read_page_count
14220	.global	g_totle_discard_page_count
14221	.global	g_totle_read_sector
14222	.global	g_totle_write_sector
14223	.global	g_totle_write_page_count
14224	.global	g_totle_gc_page_count
14225	.global	g_gc_blk_index
14226	.global	g_gc_merge_free_blk_threshold
14227	.global	g_gc_free_blk_threshold
14228	.global	g_gc_bad_block_temp_tbl
14229	.global	g_gc_bad_block_gc_index
14230	.global	g_gc_bad_block_temp_num
14231	.global	g_gc_next_blk_1
14232	.global	g_gc_next_blk
14233	.global	g_gc_cur_blk_max_valid_pages
14234	.global	g_gc_cur_blk_valid_pages
14235	.global	g_gc_page_offset
14236	.global	g_gc_blk_num
14237	.global	p_gc_blk_tbl
14238	.global	p_gc_page_info
14239	.global	g_sys_ext_data
14240	.global	g_sys_save_data
14241	.global	gp_last_act_superblock
14242	.global	g_gc_superblock
14243	.global	g_gc_temp_superblock
14244	.global	g_buffer_superblock
14245	.global	g_active_superblock
14246	.global	g_num_data_superblocks
14247	.global	g_num_free_superblocks
14248	.global	p_data_block_list_tail
14249	.global	p_data_block_list_head
14250	.global	p_free_data_block_list_head
14251	.global	p_data_block_list_table
14252	.global	g_l2p_last_update_region_id
14253	.global	p_l2p_map_buf
14254	.global	p_l2p_ram_map
14255	.global	g_totle_vendor_block
14256	.global	p_vendor_region_ppn_table
14257	.global	p_vendor_block_ver_table
14258	.global	p_vendor_block_valid_page_count
14259	.global	p_vendor_block_table
14260	.global	g_totle_map_block
14261	.global	p_map_region_ppn_table
14262	.global	p_map_block_ver_table
14263	.global	p_map_block_valid_page_count
14264	.global	p_map_block_table
14265	.global	p_blk_mode_table
14266	.global	p_valid_page_count_check_table
14267	.global	p_valid_page_count_table
14268	.global	g_totle_swl_count
14269	.global	p_swl_mul_table
14270	.global	p_erase_count_table
14271	.global	g_ect_tbl_info_size
14272	.global	gp_ect_tbl_info
14273	.global	g_gc_num_req
14274	.global	c_gc_page_buf_num
14275	.global	gp_gc_page_buf_info
14276	.global	p_gc_data_buf
14277	.global	p_gc_spare_buf
14278	.global	p_io_spare_buf
14279	.global	p_io_data_buf_1
14280	.global	p_io_data_buf_0
14281	.global	p_sys_spare_buf
14282	.global	p_vendor_data_buf
14283	.global	p_sys_data_buf_1
14284	.global	p_sys_data_buf
14285	.global	p_plane_order_table
14286	.global	req_gc_dst
14287	.global	req_gc
14288	.global	req_erase
14289	.global	req_prgm
14290	.global	req_read
14291	.global	req_sys
14292	.global	gVendorBlkInfo
14293	.global	gL2pMapInfo
14294	.global	gSysFreeQueue
14295	.global	gSysInfo
14296	.global	gBbtInfo
14297	.global	g_MaxLbn
14298	.global	g_VaildLpn
14299	.global	g_MaxLpn
14300	.global	g_MaxLbaSector
14301	.global	g_GlobalDataVersion
14302	.global	g_GlobalSysVersion
14303	.global	ftl_gc_temp_power_lost_recovery_flag
14304	.global	c_ftl_nand_max_data_blks
14305	.global	c_ftl_nand_data_op_blks_per_plane
14306	.global	c_ftl_nand_data_blks_per_plane
14307	.global	c_ftl_nand_max_sys_blks
14308	.global	c_ftl_nand_init_sys_blks_per_plane
14309	.global	c_ftl_nand_sys_blks_per_plane
14310	.global	c_ftl_vendor_part_size
14311	.global	c_ftl_nand_max_vendor_blks
14312	.global	c_ftl_nand_max_map_blks
14313	.global	c_ftl_nand_map_blks_per_plane
14314	.global	c_ftl_nand_vendor_region_num
14315	.global	c_ftl_nand_l2pmap_ram_region_num
14316	.global	c_ftl_nand_map_region_num
14317	.global	c_ftl_nand_totle_phy_blks
14318	.global	c_ftl_nand_reserved_blks
14319	.global	c_ftl_nand_byte_pre_oob
14320	.global	c_ftl_nand_byte_pre_page
14321	.global	c_ftl_nand_sec_pre_page_shift
14322	.global	c_ftl_nand_sec_pre_page
14323	.global	c_ftl_nand_page_pre_super_blk
14324	.global	c_ftl_nand_page_pre_slc_blk
14325	.global	c_ftl_nand_page_pre_blk
14326	.global	c_ftl_nand_bbm_buf_size
14327	.global	c_ftl_nand_ext_blk_pre_plane
14328	.global	c_ftl_nand_blk_pre_plane
14329	.global	c_ftl_nand_planes_num
14330	.global	c_ftl_nand_blks_per_die_shift
14331	.global	c_ftl_nand_blks_per_die
14332	.global	c_ftl_nand_planes_per_die
14333	.global	c_ftl_nand_die_num
14334	.global	c_ftl_nand_type
14335	.section	.bss.DeviceCapacity,"aw",%nobits
14336	.align	2
14337	.set	.LANCHOR26,. + 0
14338	.type	DeviceCapacity, %object
14339	.size	DeviceCapacity, 4
14340DeviceCapacity:
14341	.space	4
14342	.section	.bss.FtlUpdateVaildLpnCount,"aw",%nobits
14343	.align	1
14344	.set	.LANCHOR58,. + 0
14345	.type	FtlUpdateVaildLpnCount, %object
14346	.size	FtlUpdateVaildLpnCount, 2
14347FtlUpdateVaildLpnCount:
14348	.space	2
14349	.section	.bss.c_ftl_nand_bbm_buf_size,"aw",%nobits
14350	.align	1
14351	.set	.LANCHOR137,. + 0
14352	.type	c_ftl_nand_bbm_buf_size, %object
14353	.size	c_ftl_nand_bbm_buf_size, 2
14354c_ftl_nand_bbm_buf_size:
14355	.space	2
14356	.section	.bss.c_ftl_nand_blk_pre_plane,"aw",%nobits
14357	.align	1
14358	.set	.LANCHOR6,. + 0
14359	.type	c_ftl_nand_blk_pre_plane, %object
14360	.size	c_ftl_nand_blk_pre_plane, 2
14361c_ftl_nand_blk_pre_plane:
14362	.space	2
14363	.section	.bss.c_ftl_nand_blks_per_die,"aw",%nobits
14364	.align	1
14365	.set	.LANCHOR17,. + 0
14366	.type	c_ftl_nand_blks_per_die, %object
14367	.size	c_ftl_nand_blks_per_die, 2
14368c_ftl_nand_blks_per_die:
14369	.space	2
14370	.section	.bss.c_ftl_nand_blks_per_die_shift,"aw",%nobits
14371	.align	1
14372	.set	.LANCHOR18,. + 0
14373	.type	c_ftl_nand_blks_per_die_shift, %object
14374	.size	c_ftl_nand_blks_per_die_shift, 2
14375c_ftl_nand_blks_per_die_shift:
14376	.space	2
14377	.section	.bss.c_ftl_nand_byte_pre_oob,"aw",%nobits
14378	.align	1
14379	.set	.LANCHOR24,. + 0
14380	.type	c_ftl_nand_byte_pre_oob, %object
14381	.size	c_ftl_nand_byte_pre_oob, 2
14382c_ftl_nand_byte_pre_oob:
14383	.space	2
14384	.section	.bss.c_ftl_nand_byte_pre_page,"aw",%nobits
14385	.align	1
14386	.set	.LANCHOR23,. + 0
14387	.type	c_ftl_nand_byte_pre_page, %object
14388	.size	c_ftl_nand_byte_pre_page, 2
14389c_ftl_nand_byte_pre_page:
14390	.space	2
14391	.section	.bss.c_ftl_nand_data_blks_per_plane,"aw",%nobits
14392	.align	1
14393	.set	.LANCHOR5,. + 0
14394	.type	c_ftl_nand_data_blks_per_plane, %object
14395	.size	c_ftl_nand_data_blks_per_plane, 2
14396c_ftl_nand_data_blks_per_plane:
14397	.space	2
14398	.section	.bss.c_ftl_nand_data_op_blks_per_plane,"aw",%nobits
14399	.align	1
14400	.set	.LANCHOR78,. + 0
14401	.type	c_ftl_nand_data_op_blks_per_plane, %object
14402	.size	c_ftl_nand_data_op_blks_per_plane, 2
14403c_ftl_nand_data_op_blks_per_plane:
14404	.space	2
14405	.section	.bss.c_ftl_nand_die_num,"aw",%nobits
14406	.align	1
14407	.set	.LANCHOR10,. + 0
14408	.type	c_ftl_nand_die_num, %object
14409	.size	c_ftl_nand_die_num, 2
14410c_ftl_nand_die_num:
14411	.space	2
14412	.section	.bss.c_ftl_nand_ext_blk_pre_plane,"aw",%nobits
14413	.align	1
14414	.set	.LANCHOR15,. + 0
14415	.type	c_ftl_nand_ext_blk_pre_plane, %object
14416	.size	c_ftl_nand_ext_blk_pre_plane, 2
14417c_ftl_nand_ext_blk_pre_plane:
14418	.space	2
14419	.section	.bss.c_ftl_nand_init_sys_blks_per_plane,"aw",%nobits
14420	.align	2
14421	.set	.LANCHOR31,. + 0
14422	.type	c_ftl_nand_init_sys_blks_per_plane, %object
14423	.size	c_ftl_nand_init_sys_blks_per_plane, 4
14424c_ftl_nand_init_sys_blks_per_plane:
14425	.space	4
14426	.section	.bss.c_ftl_nand_l2pmap_ram_region_num,"aw",%nobits
14427	.align	1
14428	.set	.LANCHOR33,. + 0
14429	.type	c_ftl_nand_l2pmap_ram_region_num, %object
14430	.size	c_ftl_nand_l2pmap_ram_region_num, 2
14431c_ftl_nand_l2pmap_ram_region_num:
14432	.space	2
14433	.section	.bss.c_ftl_nand_map_blks_per_plane,"aw",%nobits
14434	.align	1
14435	.set	.LANCHOR29,. + 0
14436	.type	c_ftl_nand_map_blks_per_plane, %object
14437	.size	c_ftl_nand_map_blks_per_plane, 2
14438c_ftl_nand_map_blks_per_plane:
14439	.space	2
14440	.section	.bss.c_ftl_nand_map_region_num,"aw",%nobits
14441	.align	1
14442	.set	.LANCHOR32,. + 0
14443	.type	c_ftl_nand_map_region_num, %object
14444	.size	c_ftl_nand_map_region_num, 2
14445c_ftl_nand_map_region_num:
14446	.space	2
14447	.section	.bss.c_ftl_nand_max_data_blks,"aw",%nobits
14448	.align	2
14449	.set	.LANCHOR7,. + 0
14450	.type	c_ftl_nand_max_data_blks, %object
14451	.size	c_ftl_nand_max_data_blks, 4
14452c_ftl_nand_max_data_blks:
14453	.space	4
14454	.section	.bss.c_ftl_nand_max_map_blks,"aw",%nobits
14455	.align	2
14456	.set	.LANCHOR30,. + 0
14457	.type	c_ftl_nand_max_map_blks, %object
14458	.size	c_ftl_nand_max_map_blks, 4
14459c_ftl_nand_max_map_blks:
14460	.space	4
14461	.section	.bss.c_ftl_nand_max_sys_blks,"aw",%nobits
14462	.align	2
14463	.set	.LANCHOR4,. + 0
14464	.type	c_ftl_nand_max_sys_blks, %object
14465	.size	c_ftl_nand_max_sys_blks, 4
14466c_ftl_nand_max_sys_blks:
14467	.space	4
14468	.section	.bss.c_ftl_nand_max_vendor_blks,"aw",%nobits
14469	.align	1
14470	.set	.LANCHOR27,. + 0
14471	.type	c_ftl_nand_max_vendor_blks, %object
14472	.size	c_ftl_nand_max_vendor_blks, 2
14473c_ftl_nand_max_vendor_blks:
14474	.space	2
14475	.section	.bss.c_ftl_nand_page_pre_blk,"aw",%nobits
14476	.align	1
14477	.set	.LANCHOR19,. + 0
14478	.type	c_ftl_nand_page_pre_blk, %object
14479	.size	c_ftl_nand_page_pre_blk, 2
14480c_ftl_nand_page_pre_blk:
14481	.space	2
14482	.section	.bss.c_ftl_nand_page_pre_slc_blk,"aw",%nobits
14483	.align	1
14484	.set	.LANCHOR20,. + 0
14485	.type	c_ftl_nand_page_pre_slc_blk, %object
14486	.size	c_ftl_nand_page_pre_slc_blk, 2
14487c_ftl_nand_page_pre_slc_blk:
14488	.space	2
14489	.section	.bss.c_ftl_nand_page_pre_super_blk,"aw",%nobits
14490	.align	1
14491	.set	.LANCHOR21,. + 0
14492	.type	c_ftl_nand_page_pre_super_blk, %object
14493	.size	c_ftl_nand_page_pre_super_blk, 2
14494c_ftl_nand_page_pre_super_blk:
14495	.space	2
14496	.section	.bss.c_ftl_nand_planes_num,"aw",%nobits
14497	.align	1
14498	.set	.LANCHOR3,. + 0
14499	.type	c_ftl_nand_planes_num, %object
14500	.size	c_ftl_nand_planes_num, 2
14501c_ftl_nand_planes_num:
14502	.space	2
14503	.section	.bss.c_ftl_nand_planes_per_die,"aw",%nobits
14504	.align	1
14505	.set	.LANCHOR11,. + 0
14506	.type	c_ftl_nand_planes_per_die, %object
14507	.size	c_ftl_nand_planes_per_die, 2
14508c_ftl_nand_planes_per_die:
14509	.space	2
14510	.section	.bss.c_ftl_nand_reserved_blks,"aw",%nobits
14511	.align	1
14512	.set	.LANCHOR25,. + 0
14513	.type	c_ftl_nand_reserved_blks, %object
14514	.size	c_ftl_nand_reserved_blks, 2
14515c_ftl_nand_reserved_blks:
14516	.space	2
14517	.section	.bss.c_ftl_nand_sec_pre_page,"aw",%nobits
14518	.align	1
14519	.set	.LANCHOR12,. + 0
14520	.type	c_ftl_nand_sec_pre_page, %object
14521	.size	c_ftl_nand_sec_pre_page, 2
14522c_ftl_nand_sec_pre_page:
14523	.space	2
14524	.section	.bss.c_ftl_nand_sec_pre_page_shift,"aw",%nobits
14525	.align	1
14526	.set	.LANCHOR22,. + 0
14527	.type	c_ftl_nand_sec_pre_page_shift, %object
14528	.size	c_ftl_nand_sec_pre_page_shift, 2
14529c_ftl_nand_sec_pre_page_shift:
14530	.space	2
14531	.section	.bss.c_ftl_nand_sys_blks_per_plane,"aw",%nobits
14532	.align	2
14533	.set	.LANCHOR2,. + 0
14534	.type	c_ftl_nand_sys_blks_per_plane, %object
14535	.size	c_ftl_nand_sys_blks_per_plane, 4
14536c_ftl_nand_sys_blks_per_plane:
14537	.space	4
14538	.section	.bss.c_ftl_nand_totle_phy_blks,"aw",%nobits
14539	.align	2
14540	.set	.LANCHOR8,. + 0
14541	.type	c_ftl_nand_totle_phy_blks, %object
14542	.size	c_ftl_nand_totle_phy_blks, 4
14543c_ftl_nand_totle_phy_blks:
14544	.space	4
14545	.section	.bss.c_ftl_nand_type,"aw",%nobits
14546	.align	1
14547	.set	.LANCHOR9,. + 0
14548	.type	c_ftl_nand_type, %object
14549	.size	c_ftl_nand_type, 2
14550c_ftl_nand_type:
14551	.space	2
14552	.section	.bss.c_ftl_nand_vendor_region_num,"aw",%nobits
14553	.align	1
14554	.set	.LANCHOR28,. + 0
14555	.type	c_ftl_nand_vendor_region_num, %object
14556	.size	c_ftl_nand_vendor_region_num, 2
14557c_ftl_nand_vendor_region_num:
14558	.space	2
14559	.section	.bss.c_ftl_vendor_part_size,"aw",%nobits
14560	.align	1
14561	.set	.LANCHOR16,. + 0
14562	.type	c_ftl_vendor_part_size, %object
14563	.size	c_ftl_vendor_part_size, 2
14564c_ftl_vendor_part_size:
14565	.space	2
14566	.section	.bss.c_gc_page_buf_num,"aw",%nobits
14567	.align	2
14568	.set	.LANCHOR94,. + 0
14569	.type	c_gc_page_buf_num, %object
14570	.size	c_gc_page_buf_num, 4
14571c_gc_page_buf_num:
14572	.space	4
14573	.section	.bss.c_mlc_erase_count_value,"aw",%nobits
14574	.align	1
14575	.set	.LANCHOR14,. + 0
14576	.type	c_mlc_erase_count_value, %object
14577	.size	c_mlc_erase_count_value, 2
14578c_mlc_erase_count_value:
14579	.space	2
14580	.section	.bss.check_buf,"aw",%nobits
14581	.align	2
14582	.type	check_buf, %object
14583	.size	check_buf, 4096
14584check_buf:
14585	.space	4096
14586	.section	.bss.check_spare_buf,"aw",%nobits
14587	.align	2
14588	.set	.LANCHOR110,. + 0
14589	.type	check_spare_buf, %object
14590	.size	check_spare_buf, 512
14591check_spare_buf:
14592	.space	512
14593	.section	.bss.check_vpc_table,"aw",%nobits
14594	.align	1
14595	.type	check_vpc_table, %object
14596	.size	check_vpc_table, 16384
14597check_vpc_table:
14598	.space	16384
14599	.section	.bss.ftl_gc_temp_power_lost_recovery_flag,"aw",%nobits
14600	.align	2
14601	.set	.LANCHOR152,. + 0
14602	.type	ftl_gc_temp_power_lost_recovery_flag, %object
14603	.size	ftl_gc_temp_power_lost_recovery_flag, 4
14604ftl_gc_temp_power_lost_recovery_flag:
14605	.space	4
14606	.section	.bss.ftl_temp_buf,"aw",%nobits
14607	.align	2
14608	.type	ftl_temp_buf, %object
14609	.size	ftl_temp_buf, 4096
14610ftl_temp_buf:
14611	.space	4096
14612	.section	.bss.gBbtInfo,"aw",%nobits
14613	.align	2
14614	.set	.LANCHOR37,. + 0
14615	.type	gBbtInfo, %object
14616	.size	gBbtInfo, 60
14617gBbtInfo:
14618	.space	60
14619	.section	.bss.gL2pMapInfo,"aw",%nobits
14620	.align	2
14621	.set	.LANCHOR144,. + 0
14622	.type	gL2pMapInfo, %object
14623	.size	gL2pMapInfo, 40
14624gL2pMapInfo:
14625	.space	40
14626	.section	.bss.gSysFreeQueue,"aw",%nobits
14627	.align	1
14628	.set	.LANCHOR38,. + 0
14629	.type	gSysFreeQueue, %object
14630	.size	gSysFreeQueue, 2056
14631gSysFreeQueue:
14632	.space	2056
14633	.section	.bss.gSysInfo,"aw",%nobits
14634	.align	2
14635	.set	.LANCHOR79,. + 0
14636	.type	gSysInfo, %object
14637	.size	gSysInfo, 12
14638gSysInfo:
14639	.space	12
14640	.section	.bss.gVendorBlkInfo,"aw",%nobits
14641	.align	2
14642	.set	.LANCHOR149,. + 0
14643	.type	gVendorBlkInfo, %object
14644	.size	gVendorBlkInfo, 40
14645gVendorBlkInfo:
14646	.space	40
14647	.section	.bss.g_GlobalDataVersion,"aw",%nobits
14648	.align	2
14649	.set	.LANCHOR71,. + 0
14650	.type	g_GlobalDataVersion, %object
14651	.size	g_GlobalDataVersion, 4
14652g_GlobalDataVersion:
14653	.space	4
14654	.section	.bss.g_GlobalSysVersion,"aw",%nobits
14655	.align	2
14656	.set	.LANCHOR70,. + 0
14657	.type	g_GlobalSysVersion, %object
14658	.size	g_GlobalSysVersion, 4
14659g_GlobalSysVersion:
14660	.space	4
14661	.section	.bss.g_MaxLbaSector,"aw",%nobits
14662	.align	2
14663	.set	.LANCHOR34,. + 0
14664	.type	g_MaxLbaSector, %object
14665	.size	g_MaxLbaSector, 4
14666g_MaxLbaSector:
14667	.space	4
14668	.section	.bss.g_MaxLbn,"aw",%nobits
14669	.align	2
14670	.set	.LANCHOR181,. + 0
14671	.type	g_MaxLbn, %object
14672	.size	g_MaxLbn, 4
14673g_MaxLbn:
14674	.space	4
14675	.section	.bss.g_MaxLpn,"aw",%nobits
14676	.align	2
14677	.set	.LANCHOR61,. + 0
14678	.type	g_MaxLpn, %object
14679	.size	g_MaxLpn, 4
14680g_MaxLpn:
14681	.space	4
14682	.section	.bss.g_VaildLpn,"aw",%nobits
14683	.align	2
14684	.set	.LANCHOR59,. + 0
14685	.type	g_VaildLpn, %object
14686	.size	g_VaildLpn, 4
14687g_VaildLpn:
14688	.space	4
14689	.section	.bss.g_active_superblock,"aw",%nobits
14690	.align	2
14691	.set	.LANCHOR51,. + 0
14692	.type	g_active_superblock, %object
14693	.size	g_active_superblock, 48
14694g_active_superblock:
14695	.space	48
14696	.section	.bss.g_buffer_superblock,"aw",%nobits
14697	.align	2
14698	.set	.LANCHOR52,. + 0
14699	.type	g_buffer_superblock, %object
14700	.size	g_buffer_superblock, 48
14701g_buffer_superblock:
14702	.space	48
14703	.section	.bss.g_cur_erase_blk,"aw",%nobits
14704	.align	2
14705	.set	.LANCHOR112,. + 0
14706	.type	g_cur_erase_blk, %object
14707	.size	g_cur_erase_blk, 4
14708g_cur_erase_blk:
14709	.space	4
14710	.section	.bss.g_ect_tbl_info_size,"aw",%nobits
14711	.align	1
14712	.set	.LANCHOR125,. + 0
14713	.type	g_ect_tbl_info_size, %object
14714	.size	g_ect_tbl_info_size, 2
14715g_ect_tbl_info_size:
14716	.space	2
14717	.section	.bss.g_ect_tbl_power_up_flush,"aw",%nobits
14718	.align	1
14719	.set	.LANCHOR165,. + 0
14720	.type	g_ect_tbl_power_up_flush, %object
14721	.size	g_ect_tbl_power_up_flush, 2
14722g_ect_tbl_power_up_flush:
14723	.space	2
14724	.section	.bss.g_ftl_nand_free_count,"aw",%nobits
14725	.align	2
14726	.set	.LANCHOR176,. + 0
14727	.type	g_ftl_nand_free_count, %object
14728	.size	g_ftl_nand_free_count, 4
14729g_ftl_nand_free_count:
14730	.space	4
14731	.section	.bss.g_gc_bad_block_gc_index,"aw",%nobits
14732	.align	1
14733	.set	.LANCHOR103,. + 0
14734	.type	g_gc_bad_block_gc_index, %object
14735	.size	g_gc_bad_block_gc_index, 2
14736g_gc_bad_block_gc_index:
14737	.space	2
14738	.section	.bss.g_gc_bad_block_temp_num,"aw",%nobits
14739	.align	1
14740	.set	.LANCHOR101,. + 0
14741	.type	g_gc_bad_block_temp_num, %object
14742	.size	g_gc_bad_block_temp_num, 2
14743g_gc_bad_block_temp_num:
14744	.space	2
14745	.section	.bss.g_gc_bad_block_temp_tbl,"aw",%nobits
14746	.align	1
14747	.set	.LANCHOR102,. + 0
14748	.type	g_gc_bad_block_temp_tbl, %object
14749	.size	g_gc_bad_block_temp_tbl, 34
14750g_gc_bad_block_temp_tbl:
14751	.space	34
14752	.section	.bss.g_gc_blk_index,"aw",%nobits
14753	.align	1
14754	.set	.LANCHOR85,. + 0
14755	.type	g_gc_blk_index, %object
14756	.size	g_gc_blk_index, 2
14757g_gc_blk_index:
14758	.space	2
14759	.section	.bss.g_gc_blk_num,"aw",%nobits
14760	.align	1
14761	.set	.LANCHOR96,. + 0
14762	.type	g_gc_blk_num, %object
14763	.size	g_gc_blk_num, 2
14764g_gc_blk_num:
14765	.space	2
14766	.section	.bss.g_gc_cur_blk_max_valid_pages,"aw",%nobits
14767	.align	1
14768	.set	.LANCHOR174,. + 0
14769	.type	g_gc_cur_blk_max_valid_pages, %object
14770	.size	g_gc_cur_blk_max_valid_pages, 2
14771g_gc_cur_blk_max_valid_pages:
14772	.space	2
14773	.section	.bss.g_gc_cur_blk_valid_pages,"aw",%nobits
14774	.align	1
14775	.set	.LANCHOR173,. + 0
14776	.type	g_gc_cur_blk_valid_pages, %object
14777	.size	g_gc_cur_blk_valid_pages, 2
14778g_gc_cur_blk_valid_pages:
14779	.space	2
14780	.section	.bss.g_gc_free_blk_threshold,"aw",%nobits
14781	.align	1
14782	.set	.LANCHOR82,. + 0
14783	.type	g_gc_free_blk_threshold, %object
14784	.size	g_gc_free_blk_threshold, 2
14785g_gc_free_blk_threshold:
14786	.space	2
14787	.section	.bss.g_gc_head_data_block,"aw",%nobits
14788	.align	2
14789	.set	.LANCHOR118,. + 0
14790	.type	g_gc_head_data_block, %object
14791	.size	g_gc_head_data_block, 4
14792g_gc_head_data_block:
14793	.space	4
14794	.section	.bss.g_gc_head_data_block_count,"aw",%nobits
14795	.align	2
14796	.set	.LANCHOR119,. + 0
14797	.type	g_gc_head_data_block_count, %object
14798	.size	g_gc_head_data_block_count, 4
14799g_gc_head_data_block_count:
14800	.space	4
14801	.section	.bss.g_gc_merge_free_blk_threshold,"aw",%nobits
14802	.align	1
14803	.set	.LANCHOR83,. + 0
14804	.type	g_gc_merge_free_blk_threshold, %object
14805	.size	g_gc_merge_free_blk_threshold, 2
14806g_gc_merge_free_blk_threshold:
14807	.space	2
14808	.section	.bss.g_gc_next_blk,"aw",%nobits
14809	.align	1
14810	.set	.LANCHOR99,. + 0
14811	.type	g_gc_next_blk, %object
14812	.size	g_gc_next_blk, 2
14813g_gc_next_blk:
14814	.space	2
14815	.section	.bss.g_gc_next_blk_1,"aw",%nobits
14816	.align	1
14817	.set	.LANCHOR100,. + 0
14818	.type	g_gc_next_blk_1, %object
14819	.size	g_gc_next_blk_1, 2
14820g_gc_next_blk_1:
14821	.space	2
14822	.section	.bss.g_gc_num_req,"aw",%nobits
14823	.align	2
14824	.set	.LANCHOR89,. + 0
14825	.type	g_gc_num_req, %object
14826	.size	g_gc_num_req, 4
14827g_gc_num_req:
14828	.space	4
14829	.section	.bss.g_gc_page_offset,"aw",%nobits
14830	.align	1
14831	.set	.LANCHOR97,. + 0
14832	.type	g_gc_page_offset, %object
14833	.size	g_gc_page_offset, 2
14834g_gc_page_offset:
14835	.space	2
14836	.section	.bss.g_gc_skip_write_count,"aw",%nobits
14837	.align	2
14838	.set	.LANCHOR84,. + 0
14839	.type	g_gc_skip_write_count, %object
14840	.size	g_gc_skip_write_count, 4
14841g_gc_skip_write_count:
14842	.space	4
14843	.section	.bss.g_gc_superblock,"aw",%nobits
14844	.align	2
14845	.set	.LANCHOR80,. + 0
14846	.type	g_gc_superblock, %object
14847	.size	g_gc_superblock, 48
14848g_gc_superblock:
14849	.space	48
14850	.section	.bss.g_gc_temp_superblock,"aw",%nobits
14851	.align	2
14852	.set	.LANCHOR53,. + 0
14853	.type	g_gc_temp_superblock, %object
14854	.size	g_gc_temp_superblock, 48
14855g_gc_temp_superblock:
14856	.space	48
14857	.section	.bss.g_in_gc_progress,"aw",%nobits
14858	.align	2
14859	.set	.LANCHOR117,. + 0
14860	.type	g_in_gc_progress, %object
14861	.size	g_in_gc_progress, 4
14862g_in_gc_progress:
14863	.space	4
14864	.section	.bss.g_in_swl_replace,"aw",%nobits
14865	.align	2
14866	.set	.LANCHOR87,. + 0
14867	.type	g_in_swl_replace, %object
14868	.size	g_in_swl_replace, 4
14869g_in_swl_replace:
14870	.space	4
14871	.section	.bss.g_l2p_last_update_region_id,"aw",%nobits
14872	.align	1
14873	.set	.LANCHOR56,. + 0
14874	.type	g_l2p_last_update_region_id, %object
14875	.size	g_l2p_last_update_region_id, 2
14876g_l2p_last_update_region_id:
14877	.space	2
14878	.section	.bss.g_max_erase_count,"aw",%nobits
14879	.align	2
14880	.set	.LANCHOR76,. + 0
14881	.type	g_max_erase_count, %object
14882	.size	g_max_erase_count, 4
14883g_max_erase_count:
14884	.space	4
14885	.section	.bss.g_min_erase_count,"aw",%nobits
14886	.align	2
14887	.set	.LANCHOR77,. + 0
14888	.type	g_min_erase_count, %object
14889	.size	g_min_erase_count, 4
14890g_min_erase_count:
14891	.space	4
14892	.section	.bss.g_nand_ops,"aw",%nobits
14893	.align	2
14894	.set	.LANCHOR105,. + 0
14895	.type	g_nand_ops, %object
14896	.size	g_nand_ops, 16
14897g_nand_ops:
14898	.space	16
14899	.section	.bss.g_nand_phy_info,"aw",%nobits
14900	.align	1
14901	.set	.LANCHOR0,. + 0
14902	.type	g_nand_phy_info, %object
14903	.size	g_nand_phy_info, 24
14904g_nand_phy_info:
14905	.space	24
14906	.section	.bss.g_num_data_superblocks,"aw",%nobits
14907	.align	1
14908	.set	.LANCHOR45,. + 0
14909	.type	g_num_data_superblocks, %object
14910	.size	g_num_data_superblocks, 2
14911g_num_data_superblocks:
14912	.space	2
14913	.section	.bss.g_num_free_superblocks,"aw",%nobits
14914	.align	1
14915	.set	.LANCHOR48,. + 0
14916	.type	g_num_free_superblocks, %object
14917	.size	g_num_free_superblocks, 2
14918g_num_free_superblocks:
14919	.space	2
14920	.section	.bss.g_power_lost_recovery_flag,"aw",%nobits
14921	.align	1
14922	.set	.LANCHOR161,. + 0
14923	.type	g_power_lost_recovery_flag, %object
14924	.size	g_power_lost_recovery_flag, 2
14925g_power_lost_recovery_flag:
14926	.space	2
14927	.section	.bss.g_recovery_page_min_ver,"aw",%nobits
14928	.align	2
14929	.set	.LANCHOR153,. + 0
14930	.type	g_recovery_page_min_ver, %object
14931	.size	g_recovery_page_min_ver, 4
14932g_recovery_page_min_ver:
14933	.space	4
14934	.section	.bss.g_recovery_page_num,"aw",%nobits
14935	.align	2
14936	.set	.LANCHOR162,. + 0
14937	.type	g_recovery_page_num, %object
14938	.size	g_recovery_page_num, 4
14939g_recovery_page_num:
14940	.space	4
14941	.section	.bss.g_recovery_ppa_tbl,"aw",%nobits
14942	.align	2
14943	.set	.LANCHOR163,. + 0
14944	.type	g_recovery_ppa_tbl, %object
14945	.size	g_recovery_ppa_tbl, 128
14946g_recovery_ppa_tbl:
14947	.space	128
14948	.section	.bss.g_sys_ext_data,"aw",%nobits
14949	.align	2
14950	.set	.LANCHOR81,. + 0
14951	.type	g_sys_ext_data, %object
14952	.size	g_sys_ext_data, 512
14953g_sys_ext_data:
14954	.space	512
14955	.section	.bss.g_sys_save_data,"aw",%nobits
14956	.align	2
14957	.set	.LANCHOR39,. + 0
14958	.type	g_sys_save_data, %object
14959	.size	g_sys_save_data, 48
14960g_sys_save_data:
14961	.space	48
14962	.section	.bss.g_tmp_data_superblock_id,"aw",%nobits
14963	.align	1
14964	.set	.LANCHOR150,. + 0
14965	.type	g_tmp_data_superblock_id, %object
14966	.size	g_tmp_data_superblock_id, 2
14967g_tmp_data_superblock_id:
14968	.space	2
14969	.section	.bss.g_totle_avg_erase_count,"aw",%nobits
14970	.align	2
14971	.set	.LANCHOR74,. + 0
14972	.type	g_totle_avg_erase_count, %object
14973	.size	g_totle_avg_erase_count, 4
14974g_totle_avg_erase_count:
14975	.space	4
14976	.section	.bss.g_totle_cache_write_count,"aw",%nobits
14977	.align	2
14978	.set	.LANCHOR65,. + 0
14979	.type	g_totle_cache_write_count, %object
14980	.size	g_totle_cache_write_count, 4
14981g_totle_cache_write_count:
14982	.space	4
14983	.section	.bss.g_totle_discard_page_count,"aw",%nobits
14984	.align	2
14985	.set	.LANCHOR63,. + 0
14986	.type	g_totle_discard_page_count, %object
14987	.size	g_totle_discard_page_count, 4
14988g_totle_discard_page_count:
14989	.space	4
14990	.section	.bss.g_totle_gc_page_count,"aw",%nobits
14991	.align	2
14992	.set	.LANCHOR67,. + 0
14993	.type	g_totle_gc_page_count, %object
14994	.size	g_totle_gc_page_count, 4
14995g_totle_gc_page_count:
14996	.space	4
14997	.section	.bss.g_totle_l2p_write_count,"aw",%nobits
14998	.align	2
14999	.set	.LANCHOR66,. + 0
15000	.type	g_totle_l2p_write_count, %object
15001	.size	g_totle_l2p_write_count, 4
15002g_totle_l2p_write_count:
15003	.space	4
15004	.section	.bss.g_totle_map_block,"aw",%nobits
15005	.align	1
15006	.set	.LANCHOR147,. + 0
15007	.type	g_totle_map_block, %object
15008	.size	g_totle_map_block, 2
15009g_totle_map_block:
15010	.space	2
15011	.section	.bss.g_totle_mlc_erase_count,"aw",%nobits
15012	.align	2
15013	.set	.LANCHOR72,. + 0
15014	.type	g_totle_mlc_erase_count, %object
15015	.size	g_totle_mlc_erase_count, 4
15016g_totle_mlc_erase_count:
15017	.space	4
15018	.section	.bss.g_totle_read_page_count,"aw",%nobits
15019	.align	2
15020	.set	.LANCHOR62,. + 0
15021	.type	g_totle_read_page_count, %object
15022	.size	g_totle_read_page_count, 4
15023g_totle_read_page_count:
15024	.space	4
15025	.section	.bss.g_totle_read_sector,"aw",%nobits
15026	.align	2
15027	.set	.LANCHOR69,. + 0
15028	.type	g_totle_read_sector, %object
15029	.size	g_totle_read_sector, 4
15030g_totle_read_sector:
15031	.space	4
15032	.section	.bss.g_totle_slc_erase_count,"aw",%nobits
15033	.align	2
15034	.set	.LANCHOR73,. + 0
15035	.type	g_totle_slc_erase_count, %object
15036	.size	g_totle_slc_erase_count, 4
15037g_totle_slc_erase_count:
15038	.space	4
15039	.section	.bss.g_totle_swl_count,"aw",%nobits
15040	.align	2
15041	.set	.LANCHOR151,. + 0
15042	.type	g_totle_swl_count, %object
15043	.size	g_totle_swl_count, 4
15044g_totle_swl_count:
15045	.space	4
15046	.section	.bss.g_totle_sys_slc_erase_count,"aw",%nobits
15047	.align	2
15048	.set	.LANCHOR75,. + 0
15049	.type	g_totle_sys_slc_erase_count, %object
15050	.size	g_totle_sys_slc_erase_count, 4
15051g_totle_sys_slc_erase_count:
15052	.space	4
15053	.section	.bss.g_totle_vendor_block,"aw",%nobits
15054	.align	1
15055	.set	.LANCHOR35,. + 0
15056	.type	g_totle_vendor_block, %object
15057	.size	g_totle_vendor_block, 2
15058g_totle_vendor_block:
15059	.space	2
15060	.section	.bss.g_totle_write_page_count,"aw",%nobits
15061	.align	2
15062	.set	.LANCHOR64,. + 0
15063	.type	g_totle_write_page_count, %object
15064	.size	g_totle_write_page_count, 4
15065g_totle_write_page_count:
15066	.space	4
15067	.section	.bss.g_totle_write_sector,"aw",%nobits
15068	.align	2
15069	.set	.LANCHOR68,. + 0
15070	.type	g_totle_write_sector, %object
15071	.size	g_totle_write_sector, 4
15072g_totle_write_sector:
15073	.space	4
15074	.section	.bss.gc_discard_updated,"aw",%nobits
15075	.align	2
15076	.set	.LANCHOR167,. + 0
15077	.type	gc_discard_updated, %object
15078	.size	gc_discard_updated, 4
15079gc_discard_updated:
15080	.space	4
15081	.section	.bss.gc_ink_free_return_value,"aw",%nobits
15082	.align	1
15083	.set	.LANCHOR172,. + 0
15084	.type	gc_ink_free_return_value, %object
15085	.size	gc_ink_free_return_value, 2
15086gc_ink_free_return_value:
15087	.space	2
15088	.section	.bss.gp_ect_tbl_info,"aw",%nobits
15089	.align	2
15090	.set	.LANCHOR127,. + 0
15091	.type	gp_ect_tbl_info, %object
15092	.size	gp_ect_tbl_info, 4
15093gp_ect_tbl_info:
15094	.space	4
15095	.section	.bss.gp_flash_check_buf,"aw",%nobits
15096	.align	2
15097	.type	gp_flash_check_buf, %object
15098	.size	gp_flash_check_buf, 262144
15099gp_flash_check_buf:
15100	.space	262144
15101	.section	.bss.gp_gc_page_buf_info,"aw",%nobits
15102	.align	2
15103	.set	.LANCHOR90,. + 0
15104	.type	gp_gc_page_buf_info, %object
15105	.size	gp_gc_page_buf_info, 4
15106gp_gc_page_buf_info:
15107	.space	4
15108	.section	.bss.gp_last_act_superblock,"aw",%nobits
15109	.align	2
15110	.type	gp_last_act_superblock, %object
15111	.size	gp_last_act_superblock, 4
15112gp_last_act_superblock:
15113	.space	4
15114	.section	.bss.idb_buf,"aw",%nobits
15115	.align	2
15116	.type	idb_buf, %object
15117	.size	idb_buf, 262144
15118idb_buf:
15119	.space	262144
15120	.section	.bss.idb_need_write_back,"aw",%nobits
15121	.align	2
15122	.set	.LANCHOR179,. + 0
15123	.type	idb_need_write_back, %object
15124	.size	idb_need_write_back, 4
15125idb_need_write_back:
15126	.space	4
15127	.section	.bss.p_blk_mode_table,"aw",%nobits
15128	.align	2
15129	.set	.LANCHOR1,. + 0
15130	.type	p_blk_mode_table, %object
15131	.size	p_blk_mode_table, 4
15132p_blk_mode_table:
15133	.space	4
15134	.section	.bss.p_data_block_list_head,"aw",%nobits
15135	.align	2
15136	.set	.LANCHOR41,. + 0
15137	.type	p_data_block_list_head, %object
15138	.size	p_data_block_list_head, 4
15139p_data_block_list_head:
15140	.space	4
15141	.section	.bss.p_data_block_list_table,"aw",%nobits
15142	.align	2
15143	.set	.LANCHOR40,. + 0
15144	.type	p_data_block_list_table, %object
15145	.size	p_data_block_list_table, 4
15146p_data_block_list_table:
15147	.space	4
15148	.section	.bss.p_data_block_list_tail,"aw",%nobits
15149	.align	2
15150	.set	.LANCHOR44,. + 0
15151	.type	p_data_block_list_tail, %object
15152	.size	p_data_block_list_tail, 4
15153p_data_block_list_tail:
15154	.space	4
15155	.section	.bss.p_erase_count_table,"aw",%nobits
15156	.align	2
15157	.set	.LANCHOR43,. + 0
15158	.type	p_erase_count_table, %object
15159	.size	p_erase_count_table, 4
15160p_erase_count_table:
15161	.space	4
15162	.section	.bss.p_free_data_block_list_head,"aw",%nobits
15163	.align	2
15164	.set	.LANCHOR47,. + 0
15165	.type	p_free_data_block_list_head, %object
15166	.size	p_free_data_block_list_head, 4
15167p_free_data_block_list_head:
15168	.space	4
15169	.section	.bss.p_gc_blk_tbl,"aw",%nobits
15170	.align	2
15171	.set	.LANCHOR95,. + 0
15172	.type	p_gc_blk_tbl, %object
15173	.size	p_gc_blk_tbl, 4
15174p_gc_blk_tbl:
15175	.space	4
15176	.section	.bss.p_gc_data_buf,"aw",%nobits
15177	.align	2
15178	.set	.LANCHOR91,. + 0
15179	.type	p_gc_data_buf, %object
15180	.size	p_gc_data_buf, 4
15181p_gc_data_buf:
15182	.space	4
15183	.section	.bss.p_gc_page_info,"aw",%nobits
15184	.align	2
15185	.set	.LANCHOR98,. + 0
15186	.type	p_gc_page_info, %object
15187	.size	p_gc_page_info, 4
15188p_gc_page_info:
15189	.space	4
15190	.section	.bss.p_gc_spare_buf,"aw",%nobits
15191	.align	2
15192	.set	.LANCHOR92,. + 0
15193	.type	p_gc_spare_buf, %object
15194	.size	p_gc_spare_buf, 4
15195p_gc_spare_buf:
15196	.space	4
15197	.section	.bss.p_io_data_buf_0,"aw",%nobits
15198	.align	2
15199	.set	.LANCHOR115,. + 0
15200	.type	p_io_data_buf_0, %object
15201	.size	p_io_data_buf_0, 4
15202p_io_data_buf_0:
15203	.space	4
15204	.section	.bss.p_io_data_buf_1,"aw",%nobits
15205	.align	2
15206	.set	.LANCHOR113,. + 0
15207	.type	p_io_data_buf_1, %object
15208	.size	p_io_data_buf_1, 4
15209p_io_data_buf_1:
15210	.space	4
15211	.section	.bss.p_io_spare_buf,"aw",%nobits
15212	.align	2
15213	.set	.LANCHOR114,. + 0
15214	.type	p_io_spare_buf, %object
15215	.size	p_io_spare_buf, 4
15216p_io_spare_buf:
15217	.space	4
15218	.section	.bss.p_l2p_map_buf,"aw",%nobits
15219	.align	2
15220	.set	.LANCHOR136,. + 0
15221	.type	p_l2p_map_buf, %object
15222	.size	p_l2p_map_buf, 4
15223p_l2p_map_buf:
15224	.space	4
15225	.section	.bss.p_l2p_ram_map,"aw",%nobits
15226	.align	2
15227	.set	.LANCHOR55,. + 0
15228	.type	p_l2p_ram_map, %object
15229	.size	p_l2p_ram_map, 4
15230p_l2p_ram_map:
15231	.space	4
15232	.section	.bss.p_map_block_table,"aw",%nobits
15233	.align	2
15234	.set	.LANCHOR129,. + 0
15235	.type	p_map_block_table, %object
15236	.size	p_map_block_table, 4
15237p_map_block_table:
15238	.space	4
15239	.section	.bss.p_map_block_valid_page_count,"aw",%nobits
15240	.align	2
15241	.set	.LANCHOR130,. + 0
15242	.type	p_map_block_valid_page_count, %object
15243	.size	p_map_block_valid_page_count, 4
15244p_map_block_valid_page_count:
15245	.space	4
15246	.section	.bss.p_map_block_ver_table,"aw",%nobits
15247	.align	2
15248	.set	.LANCHOR135,. + 0
15249	.type	p_map_block_ver_table, %object
15250	.size	p_map_block_ver_table, 4
15251p_map_block_ver_table:
15252	.space	4
15253	.section	.bss.p_map_region_ppn_table,"aw",%nobits
15254	.align	2
15255	.set	.LANCHOR134,. + 0
15256	.type	p_map_region_ppn_table, %object
15257	.size	p_map_region_ppn_table, 4
15258p_map_region_ppn_table:
15259	.space	4
15260	.section	.bss.p_plane_order_table,"aw",%nobits
15261	.set	.LANCHOR13,. + 0
15262	.type	p_plane_order_table, %object
15263	.size	p_plane_order_table, 32
15264p_plane_order_table:
15265	.space	32
15266	.section	.bss.p_swl_mul_table,"aw",%nobits
15267	.align	2
15268	.set	.LANCHOR126,. + 0
15269	.type	p_swl_mul_table, %object
15270	.size	p_swl_mul_table, 4
15271p_swl_mul_table:
15272	.space	4
15273	.section	.bss.p_sys_data_buf,"aw",%nobits
15274	.align	2
15275	.set	.LANCHOR107,. + 0
15276	.type	p_sys_data_buf, %object
15277	.size	p_sys_data_buf, 4
15278p_sys_data_buf:
15279	.space	4
15280	.section	.bss.p_sys_data_buf_1,"aw",%nobits
15281	.align	2
15282	.set	.LANCHOR123,. + 0
15283	.type	p_sys_data_buf_1, %object
15284	.size	p_sys_data_buf_1, 4
15285p_sys_data_buf_1:
15286	.space	4
15287	.section	.bss.p_sys_spare_buf,"aw",%nobits
15288	.align	2
15289	.set	.LANCHOR108,. + 0
15290	.type	p_sys_spare_buf, %object
15291	.size	p_sys_spare_buf, 4
15292p_sys_spare_buf:
15293	.space	4
15294	.section	.bss.p_valid_page_count_check_table,"aw",%nobits
15295	.align	2
15296	.set	.LANCHOR128,. + 0
15297	.type	p_valid_page_count_check_table, %object
15298	.size	p_valid_page_count_check_table, 4
15299p_valid_page_count_check_table:
15300	.space	4
15301	.section	.bss.p_valid_page_count_table,"aw",%nobits
15302	.align	2
15303	.set	.LANCHOR42,. + 0
15304	.type	p_valid_page_count_table, %object
15305	.size	p_valid_page_count_table, 4
15306p_valid_page_count_table:
15307	.space	4
15308	.section	.bss.p_vendor_block_table,"aw",%nobits
15309	.align	2
15310	.set	.LANCHOR36,. + 0
15311	.type	p_vendor_block_table, %object
15312	.size	p_vendor_block_table, 4
15313p_vendor_block_table:
15314	.space	4
15315	.section	.bss.p_vendor_block_valid_page_count,"aw",%nobits
15316	.align	2
15317	.set	.LANCHOR131,. + 0
15318	.type	p_vendor_block_valid_page_count, %object
15319	.size	p_vendor_block_valid_page_count, 4
15320p_vendor_block_valid_page_count:
15321	.space	4
15322	.section	.bss.p_vendor_block_ver_table,"aw",%nobits
15323	.align	2
15324	.set	.LANCHOR132,. + 0
15325	.type	p_vendor_block_ver_table, %object
15326	.size	p_vendor_block_ver_table, 4
15327p_vendor_block_ver_table:
15328	.space	4
15329	.section	.bss.p_vendor_data_buf,"aw",%nobits
15330	.align	2
15331	.set	.LANCHOR124,. + 0
15332	.type	p_vendor_data_buf, %object
15333	.size	p_vendor_data_buf, 4
15334p_vendor_data_buf:
15335	.space	4
15336	.section	.bss.p_vendor_region_ppn_table,"aw",%nobits
15337	.align	2
15338	.set	.LANCHOR133,. + 0
15339	.type	p_vendor_region_ppn_table, %object
15340	.size	p_vendor_region_ppn_table, 4
15341p_vendor_region_ppn_table:
15342	.space	4
15343	.section	.bss.req_erase,"aw",%nobits
15344	.align	2
15345	.set	.LANCHOR111,. + 0
15346	.type	req_erase, %object
15347	.size	req_erase, 4
15348req_erase:
15349	.space	4
15350	.section	.bss.req_gc,"aw",%nobits
15351	.align	2
15352	.set	.LANCHOR93,. + 0
15353	.type	req_gc, %object
15354	.size	req_gc, 4
15355req_gc:
15356	.space	4
15357	.section	.bss.req_gc_dst,"aw",%nobits
15358	.align	2
15359	.set	.LANCHOR121,. + 0
15360	.type	req_gc_dst, %object
15361	.size	req_gc_dst, 4
15362req_gc_dst:
15363	.space	4
15364	.section	.bss.req_prgm,"aw",%nobits
15365	.align	2
15366	.set	.LANCHOR122,. + 0
15367	.type	req_prgm, %object
15368	.size	req_prgm, 4
15369req_prgm:
15370	.space	4
15371	.section	.bss.req_read,"aw",%nobits
15372	.align	2
15373	.set	.LANCHOR120,. + 0
15374	.type	req_read, %object
15375	.size	req_read, 4
15376req_read:
15377	.space	4
15378	.section	.bss.req_sys,"aw",%nobits
15379	.align	2
15380	.set	.LANCHOR106,. + 0
15381	.type	req_sys, %object
15382	.size	req_sys, 20
15383req_sys:
15384	.space	20
15385	.section	.data.ftl_gc_temp_block_bops_scan_page_addr,"aw",%progbits
15386	.align	1
15387	.set	.LANCHOR156,. + 0
15388	.type	ftl_gc_temp_block_bops_scan_page_addr, %object
15389	.size	ftl_gc_temp_block_bops_scan_page_addr, 2
15390ftl_gc_temp_block_bops_scan_page_addr:
15391	.short	-1
15392	.section	.data.gFtlInitStatus,"aw",%progbits
15393	.align	2
15394	.set	.LANCHOR86,. + 0
15395	.type	gFtlInitStatus, %object
15396	.size	gFtlInitStatus, 4
15397gFtlInitStatus:
15398	.word	-1
15399	.section	.data.power_up_flag,"aw",%progbits
15400	.align	2
15401	.set	.LANCHOR177,. + 0
15402	.type	power_up_flag, %object
15403	.size	power_up_flag, 4
15404power_up_flag:
15405	.word	1
15406	.section	.rodata.FlashProgPages.str1.1,"aMS",%progbits,1
15407.LC79:
15408	.ascii	"prog read error: = %x\012\000"
15409.LC80:
15410	.ascii	"prog read s error: = %x %x %x\012\000"
15411.LC81:
15412	.ascii	"prog read d error: = %x %x %x\012\000"
15413	.section	.rodata.FtlBbmMapBadBlock.str1.1,"aMS",%progbits,1
15414.LC0:
15415	.ascii	"phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
15416	.ascii	"\000"
15417	.section	.rodata.FtlBbmTblFlush.str1.1,"aMS",%progbits,1
15418.LC97:
15419	.ascii	"FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
15420.LC98:
15421	.ascii	"FtlBbmTblFlush error:%x\012\000"
15422.LC99:
15423	.ascii	"FtlBbmTblFlush error = %x error count = %d\012\000"
15424	.section	.rodata.FtlFreeSysBlkQueueOut.str1.1,"aMS",%progbits,1
15425.LC82:
15426	.ascii	"FtlFreeSysBlkQueueOut free count = %d\012\000"
15427.LC83:
15428	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d, error\012"
15429	.ascii	"\000"
15430	.section	.rodata.FtlGcFreeBadSuperBlk.str1.1,"aMS",%progbits,1
15431.LC100:
15432	.ascii	"FtlGcFreeBadSuperBlk 0x%x\012\000"
15433	.section	.rodata.FtlGcMarkBadPhyBlk.str1.1,"aMS",%progbits,1
15434.LC74:
15435	.ascii	"FtlGcMarkBadPhyBlk %d 0x%x\012\000"
15436	.section	.rodata.FtlGcRefreshBlock.str1.1,"aMS",%progbits,1
15437.LC73:
15438	.ascii	"FtlGcRefreshBlock  0x%x\012\000"
15439	.section	.rodata.FtlLoadEctTbl.str1.1,"aMS",%progbits,1
15440.LC103:
15441	.ascii	"no ect\000"
15442	.section	.rodata.FtlMapWritePage.str1.1,"aMS",%progbits,1
15443.LC89:
15444	.ascii	"FtlMapWritePage error = %x \012\000"
15445.LC90:
15446	.ascii	"FtlMapWritePage error = %x error count = %d\012\000"
15447	.section	.rodata.FtlMemInit.str1.1,"aMS",%progbits,1
15448.LC85:
15449	.ascii	"%s error allocating memory. return -1\012\000"
15450	.section	.rodata.FtlPrintInfo2buf.str1.1,"aMS",%progbits,1
15451.LC2:
15452	.ascii	"FLASH INFO:\012\000"
15453.LC3:
15454	.ascii	"Device Capacity: %d MB\012\000"
15455.LC4:
15456	.ascii	"FTL INFO:\012\000"
15457.LC5:
15458	.ascii	"g_MaxLpn = 0x%x\012\000"
15459.LC6:
15460	.ascii	"g_VaildLpn = 0x%x\012\000"
15461.LC7:
15462	.ascii	"read_page_count = 0x%x\012\000"
15463.LC8:
15464	.ascii	"discard_page_count = 0x%x\012\000"
15465.LC9:
15466	.ascii	"write_page_count = 0x%x\012\000"
15467.LC10:
15468	.ascii	"cache_write_count = 0x%x\012\000"
15469.LC11:
15470	.ascii	"l2p_write_count = 0x%x\012\000"
15471.LC12:
15472	.ascii	"gc_page_count = 0x%x\012\000"
15473.LC13:
15474	.ascii	"totle_write = %d MB\012\000"
15475.LC14:
15476	.ascii	"totle_read = %d MB\012\000"
15477.LC15:
15478	.ascii	"GSV = 0x%x\012\000"
15479.LC16:
15480	.ascii	"GDV = 0x%x\012\000"
15481.LC17:
15482	.ascii	"bad blk num = %d\012\000"
15483.LC18:
15484	.ascii	"free_superblocks = 0x%x\012\000"
15485.LC19:
15486	.ascii	"mlc_EC = 0x%x\012\000"
15487.LC20:
15488	.ascii	"slc_EC = 0x%x\012\000"
15489.LC21:
15490	.ascii	"avg_EC = 0x%x\012\000"
15491.LC22:
15492	.ascii	"sys_EC = 0x%x\012\000"
15493.LC23:
15494	.ascii	"max_EC = 0x%x\012\000"
15495.LC24:
15496	.ascii	"min_EC = 0x%x\012\000"
15497.LC25:
15498	.ascii	"PLT = 0x%x\012\000"
15499.LC26:
15500	.ascii	"POT = 0x%x\012\000"
15501.LC27:
15502	.ascii	"MaxSector = 0x%x\012\000"
15503.LC28:
15504	.ascii	"init_sys_blks_pp = 0x%x\012\000"
15505.LC29:
15506	.ascii	"sys_blks_pp = 0x%x\012\000"
15507.LC30:
15508	.ascii	"free sysblock = 0x%x\012\000"
15509.LC31:
15510	.ascii	"data_blks_pp = 0x%x\012\000"
15511.LC32:
15512	.ascii	"data_op_blks_pp = 0x%x\012\000"
15513.LC33:
15514	.ascii	"max_data_blks = 0x%x\012\000"
15515.LC34:
15516	.ascii	"Sys.id = 0x%x\012\000"
15517.LC35:
15518	.ascii	"Bbt.id = 0x%x\012\000"
15519.LC36:
15520	.ascii	"ACT.page = 0x%x\012\000"
15521.LC37:
15522	.ascii	"ACT.plane = 0x%x\012\000"
15523.LC38:
15524	.ascii	"ACT.id = 0x%x\012\000"
15525.LC39:
15526	.ascii	"ACT.mode = 0x%x\012\000"
15527.LC40:
15528	.ascii	"ACT.a_pages = 0x%x\012\000"
15529.LC41:
15530	.ascii	"ACT VPC = 0x%x\012\000"
15531.LC42:
15532	.ascii	"BUF.page = 0x%x\012\000"
15533.LC43:
15534	.ascii	"BUF.plane = 0x%x\012\000"
15535.LC44:
15536	.ascii	"BUF.id = 0x%x\012\000"
15537.LC45:
15538	.ascii	"BUF.mode = 0x%x\012\000"
15539.LC46:
15540	.ascii	"BUF.a_pages = 0x%x\012\000"
15541.LC47:
15542	.ascii	"BUF VPC = 0x%x\012\000"
15543.LC48:
15544	.ascii	"TMP.page = 0x%x\012\000"
15545.LC49:
15546	.ascii	"TMP.plane = 0x%x\012\000"
15547.LC50:
15548	.ascii	"TMP.id = 0x%x\012\000"
15549.LC51:
15550	.ascii	"TMP.mode = 0x%x\012\000"
15551.LC52:
15552	.ascii	"TMP.a_pages = 0x%x\012\000"
15553.LC53:
15554	.ascii	"GC.page = 0x%x\012\000"
15555.LC54:
15556	.ascii	"GC.plane = 0x%x\012\000"
15557.LC55:
15558	.ascii	"GC.id = 0x%x\012\000"
15559.LC56:
15560	.ascii	"GC.mode = 0x%x\012\000"
15561.LC57:
15562	.ascii	"GC.a_pages = 0x%x\012\000"
15563.LC58:
15564	.ascii	"WR_CHK = %x %x %x\012\000"
15565.LC59:
15566	.ascii	"Read Err Cnt = 0x%x\012\000"
15567.LC60:
15568	.ascii	"Prog Err Cnt = 0x%x\012\000"
15569.LC61:
15570	.ascii	"gc_free_blk_th= 0x%x\012\000"
15571.LC62:
15572	.ascii	"gc_merge_free_blk_th= 0x%x\012\000"
15573.LC63:
15574	.ascii	"gc_skip_write_count= 0x%x\012\000"
15575.LC64:
15576	.ascii	"gc_blk_index= 0x%x\012\000"
15577.LC65:
15578	.ascii	"free min EC= 0x%x\012\000"
15579.LC66:
15580	.ascii	"free max EC= 0x%x\012\000"
15581.LC67:
15582	.ascii	"GC__SB VPC = 0x%x\012\000"
15583.LC68:
15584	.ascii	"%d. [0x%x]=0x%x 0x%x  0x%x\012\000"
15585.LC69:
15586	.ascii	"free %d. [0x%x] 0x%x  0x%x\012\000"
15587	.section	.rodata.FtlProgPages.str1.1,"aMS",%progbits,1
15588.LC106:
15589	.ascii	"Ftlwrite decrement_vpc_count %x = %d\012\000"
15590	.section	.rodata.FtlRecoverySuperblock.str1.1,"aMS",%progbits,1
15591.LC102:
15592	.ascii	"spuer block %x vpn is 0\012 \000"
15593	.section	.rodata.FtlVpcCheckAndModify.str1.1,"aMS",%progbits,1
15594.LC105:
15595	.ascii	"FtlCheckVpc %x = %x  %x\012\000"
15596	.section	.rodata.FtlVpcTblFlush.str1.1,"aMS",%progbits,1
15597.LC104:
15598	.ascii	"FtlVpcTblFlush error = %x error count = %d\012\000"
15599	.section	.rodata.FtlWrite.str1.1,"aMS",%progbits,1
15600.LC108:
15601	.ascii	"FtlWrite: lpa error:%x %x\012\000"
15602	.section	.rodata.GetSwlReplaceBlock.str1.1,"aMS",%progbits,1
15603.LC72:
15604	.ascii	"swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x"
15605	.ascii	"\012\000"
15606	.section	.rodata.INSERT_DATA_LIST.str1.1,"aMS",%progbits,1
15607.LC1:
15608	.ascii	"\012!!!!! error @ func:%s - line:%d\012\000"
15609	.section	.rodata.__func__.10016,"a",%progbits
15610	.set	.LANCHOR171,. + 0
15611	.type	__func__.10016, %object
15612	.size	__func__.10016, 19
15613__func__.10016:
15614	.ascii	"FtlGcFreeTempBlock\000"
15615	.section	.rodata.__func__.10122,"a",%progbits
15616	.set	.LANCHOR175,. + 0
15617	.type	__func__.10122, %object
15618	.size	__func__.10122, 23
15619__func__.10122:
15620	.ascii	"rk_ftl_garbage_collect\000"
15621	.section	.rodata.__func__.10389,"a",%progbits
15622	.set	.LANCHOR104,. + 0
15623	.type	__func__.10389, %object
15624	.size	__func__.10389, 15
15625__func__.10389:
15626	.ascii	"FlashReadPages\000"
15627	.section	.rodata.__func__.10406,"a",%progbits
15628	.set	.LANCHOR109,. + 0
15629	.type	__func__.10406, %object
15630	.size	__func__.10406, 15
15631__func__.10406:
15632	.ascii	"FlashProgPages\000"
15633	.section	.rodata.__func__.8796,"a",%progbits
15634	.set	.LANCHOR138,. + 0
15635	.type	__func__.8796, %object
15636	.size	__func__.8796, 11
15637__func__.8796:
15638	.ascii	"FtlMemInit\000"
15639	.section	.rodata.__func__.8920,"a",%progbits
15640	.set	.LANCHOR170,. + 0
15641	.type	__func__.8920, %object
15642	.size	__func__.8920, 13
15643__func__.8920:
15644	.ascii	"FtlProgPages\000"
15645	.section	.rodata.__func__.8948,"a",%progbits
15646	.set	.LANCHOR178,. + 0
15647	.type	__func__.8948, %object
15648	.size	__func__.8948, 9
15649__func__.8948:
15650	.ascii	"FtlWrite\000"
15651	.section	.rodata.__func__.9094,"a",%progbits
15652	.set	.LANCHOR139,. + 0
15653	.type	__func__.9094, %object
15654	.size	__func__.9094, 14
15655__func__.9094:
15656	.ascii	"FtlBbt2Bitmap\000"
15657	.section	.rodata.__func__.9137,"a",%progbits
15658	.set	.LANCHOR164,. + 0
15659	.type	__func__.9137, %object
15660	.size	__func__.9137, 11
15661__func__.9137:
15662	.ascii	"FtlLoadBbt\000"
15663	.section	.rodata.__func__.9254,"a",%progbits
15664	.set	.LANCHOR49,. + 0
15665	.type	__func__.9254, %object
15666	.size	__func__.9254, 17
15667__func__.9254:
15668	.ascii	"INSERT_FREE_LIST\000"
15669	.section	.rodata.__func__.9259,"a",%progbits
15670	.set	.LANCHOR46,. + 0
15671	.type	__func__.9259, %object
15672	.size	__func__.9259, 17
15673__func__.9259:
15674	.ascii	"INSERT_DATA_LIST\000"
15675	.section	.rodata.__func__.9290,"a",%progbits
15676	.set	.LANCHOR50,. + 0
15677	.type	__func__.9290, %object
15678	.size	__func__.9290, 17
15679__func__.9290:
15680	.ascii	"List_remove_node\000"
15681	.section	.rodata.__func__.9322,"a",%progbits
15682	.set	.LANCHOR54,. + 0
15683	.type	__func__.9322, %object
15684	.size	__func__.9322, 22
15685__func__.9322:
15686	.ascii	"List_update_data_list\000"
15687	.section	.rodata.__func__.9331,"a",%progbits
15688	.set	.LANCHOR140,. + 0
15689	.type	__func__.9331, %object
15690	.size	__func__.9331, 16
15691__func__.9331:
15692	.ascii	"load_l2p_region\000"
15693	.section	.rodata.__func__.9364,"a",%progbits
15694	.set	.LANCHOR116,. + 0
15695	.type	__func__.9364, %object
15696	.size	__func__.9364, 26
15697__func__.9364:
15698	.ascii	"ftl_map_blk_alloc_new_blk\000"
15699	.section	.rodata.__func__.9375,"a",%progbits
15700	.set	.LANCHOR143,. + 0
15701	.type	__func__.9375, %object
15702	.size	__func__.9375, 15
15703__func__.9375:
15704	.ascii	"ftl_map_blk_gc\000"
15705	.section	.rodata.__func__.9389,"a",%progbits
15706	.set	.LANCHOR141,. + 0
15707	.type	__func__.9389, %object
15708	.size	__func__.9389, 31
15709__func__.9389:
15710	.ascii	"Ftl_write_map_blk_to_last_page\000"
15711	.section	.rodata.__func__.9403,"a",%progbits
15712	.set	.LANCHOR142,. + 0
15713	.type	__func__.9403, %object
15714	.size	__func__.9403, 16
15715__func__.9403:
15716	.ascii	"FtlMapWritePage\000"
15717	.section	.rodata.__func__.9428,"a",%progbits
15718	.set	.LANCHOR57,. + 0
15719	.type	__func__.9428, %object
15720	.size	__func__.9428, 22
15721__func__.9428:
15722	.ascii	"select_l2p_ram_region\000"
15723	.section	.rodata.__func__.9445,"a",%progbits
15724	.set	.LANCHOR145,. + 0
15725	.type	__func__.9445, %object
15726	.size	__func__.9445, 9
15727__func__.9445:
15728	.ascii	"log2phys\000"
15729	.section	.rodata.__func__.9518,"a",%progbits
15730	.set	.LANCHOR166,. + 0
15731	.type	__func__.9518, %object
15732	.size	__func__.9518, 15
15733__func__.9518:
15734	.ascii	"FtlVpcTblFlush\000"
15735	.section	.rodata.__func__.9540,"a",%progbits
15736	.set	.LANCHOR148,. + 0
15737	.type	__func__.9540, %object
15738	.size	__func__.9540, 14
15739__func__.9540:
15740	.ascii	"FtlScanSysBlk\000"
15741	.section	.rodata.__func__.9597,"a",%progbits
15742	.set	.LANCHOR180,. + 0
15743	.type	__func__.9597, %object
15744	.size	__func__.9597, 15
15745__func__.9597:
15746	.ascii	"FtlLoadSysInfo\000"
15747	.section	.rodata.__func__.9660,"a",%progbits
15748	.set	.LANCHOR146,. + 0
15749	.type	__func__.9660, %object
15750	.size	__func__.9660, 16
15751__func__.9660:
15752	.ascii	"FtlReUsePrevPpa\000"
15753	.section	.rodata.__func__.9694,"a",%progbits
15754	.set	.LANCHOR160,. + 0
15755	.type	__func__.9694, %object
15756	.size	__func__.9694, 22
15757__func__.9694:
15758	.ascii	"FtlRecoverySuperblock\000"
15759	.section	.rodata.__func__.9751,"a",%progbits
15760	.set	.LANCHOR60,. + 0
15761	.type	__func__.9751, %object
15762	.size	__func__.9751, 16
15763__func__.9751:
15764	.ascii	"make_superblock\000"
15765	.section	.rodata.__func__.9772,"a",%progbits
15766	.set	.LANCHOR154,. + 0
15767	.type	__func__.9772, %object
15768	.size	__func__.9772, 18
15769__func__.9772:
15770	.ascii	"SupperBlkListInit\000"
15771	.section	.rodata.__func__.9797,"a",%progbits
15772	.set	.LANCHOR168,. + 0
15773	.type	__func__.9797, %object
15774	.size	__func__.9797, 21
15775__func__.9797:
15776	.ascii	"FtlVpcCheckAndModify\000"
15777	.section	.rodata.__func__.9813,"a",%progbits
15778	.set	.LANCHOR155,. + 0
15779	.type	__func__.9813, %object
15780	.size	__func__.9813, 14
15781__func__.9813:
15782	.ascii	"ftl_check_vpc\000"
15783	.section	.rodata.__func__.9898,"a",%progbits
15784	.set	.LANCHOR157,. + 0
15785	.type	__func__.9898, %object
15786	.size	__func__.9898, 25
15787__func__.9898:
15788	.ascii	"allocate_data_superblock\000"
15789	.section	.rodata.__func__.9919,"a",%progbits
15790	.set	.LANCHOR169,. + 0
15791	.type	__func__.9919, %object
15792	.size	__func__.9919, 29
15793__func__.9919:
15794	.ascii	"allocate_new_data_superblock\000"
15795	.section	.rodata.__func__.9926,"a",%progbits
15796	.set	.LANCHOR88,. + 0
15797	.type	__func__.9926, %object
15798	.size	__func__.9926, 19
15799__func__.9926:
15800	.ascii	"get_new_active_ppa\000"
15801	.section	.rodata.__func__.9939,"a",%progbits
15802	.set	.LANCHOR158,. + 0
15803	.type	__func__.9939, %object
15804	.size	__func__.9939, 16
15805__func__.9939:
15806	.ascii	"update_vpc_list\000"
15807	.section	.rodata.__func__.9946,"a",%progbits
15808	.set	.LANCHOR159,. + 0
15809	.type	__func__.9946, %object
15810	.size	__func__.9946, 20
15811__func__.9946:
15812	.ascii	"decrement_vpc_count\000"
15813	.section	.rodata.decrement_vpc_count.str1.1,"aMS",%progbits,1
15814.LC101:
15815	.ascii	"decrement_vpc_count %x = %d\012\000"
15816	.section	.rodata.ftl_check_vpc.str1.1,"aMS",%progbits,1
15817.LC94:
15818	.ascii	"...%s enter...\012\000"
15819.LC95:
15820	.ascii	"FtlCheckVpc2 %x = %x  %x\012\000"
15821.LC96:
15822	.ascii	"free blk vpc error %x = %x  %x\012\000"
15823	.section	.rodata.ftl_map_blk_alloc_new_blk.str1.1,"aMS",%progbits,1
15824.LC84:
15825	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d\012\000"
15826	.section	.rodata.ftl_scan_all_data.str1.1,"aMS",%progbits,1
15827.LC91:
15828	.ascii	"ftl_scan_all_data = %x\012\000"
15829.LC92:
15830	.ascii	"scan lpa = %x ppa= %x\012\000"
15831.LC93:
15832	.ascii	"lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
15833	.ascii	"\000"
15834	.section	.rodata.load_l2p_region.str1.1,"aMS",%progbits,1
15835.LC86:
15836	.ascii	"region_id = %x phyAddr = %x\012\000"
15837.LC87:
15838	.ascii	"spare:\000"
15839.LC88:
15840	.ascii	"map_ppn:\000"
15841	.section	.rodata.rk_ftl_garbage_collect.str1.1,"aMS",%progbits,1
15842.LC107:
15843	.ascii	"SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000"
15844	.section	.rodata.rknand_print_hex.str1.1,"aMS",%progbits,1
15845.LC75:
15846	.ascii	"%s 0x%x:\000"
15847.LC76:
15848	.ascii	"%x \000"
15849.LC77:
15850	.ascii	"%02x \000"
15851.LC78:
15852	.ascii	"\012\000"
15853	.section	.rodata.rknand_proc_ftlread.str1.1,"aMS",%progbits,1
15854.LC70:
15855	.ascii	"SFTL version: 5.0.44 20180713\000"
15856.LC71:
15857	.ascii	"%s\012\000"
15858	.section	.rodata.sftl_write.str1.1,"aMS",%progbits,1
15859.LC109:
15860	.ascii	"write_idblock fail! %x %x %x %x\012\000"
15861	.hidden	free
15862