xref: /rk3399_rockchip-uboot/drivers/rkflash/rk_sftl_arm_v7.S (revision f36ea2f6e17621c4d9dd97c4dbfab62d03d061df)
1/*
2 * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
3 *
4 * SPDX-License-Identifier:    GPL-2.0
5 * date: 2021-03-29
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_log2,"ax",%progbits
62	.align	1
63	.global	Ftl_log2
64	.syntax unified
65	.thumb
66	.thumb_func
67	.fpu softvfp
68	.type	Ftl_log2, %function
69Ftl_log2:
70	@ args = 0, pretend = 0, frame = 0
71	@ frame_needed = 0, uses_anonymous_args = 0
72	@ link register save eliminated.
73	movs	r1, #0
74	movs	r2, #1
75.L6:
76	cmp	r2, r0
77	uxth	r3, r1
78	add	r1, r1, #1
79	bls	.L7
80	subs	r0, r3, #1
81	uxth	r0, r0
82	bx	lr
83.L7:
84	lsls	r2, r2, #1
85	b	.L6
86	.size	Ftl_log2, .-Ftl_log2
87	.section	.text.FtlPrintInfo,"ax",%progbits
88	.align	1
89	.global	FtlPrintInfo
90	.syntax unified
91	.thumb
92	.thumb_func
93	.fpu softvfp
94	.type	FtlPrintInfo, %function
95FtlPrintInfo:
96	@ args = 0, pretend = 0, frame = 0
97	@ frame_needed = 0, uses_anonymous_args = 0
98	@ link register save eliminated.
99	bx	lr
100	.size	FtlPrintInfo, .-FtlPrintInfo
101	.section	.text.FtlSysBlkNumInit,"ax",%progbits
102	.align	1
103	.global	FtlSysBlkNumInit
104	.syntax unified
105	.thumb
106	.thumb_func
107	.fpu softvfp
108	.type	FtlSysBlkNumInit, %function
109FtlSysBlkNumInit:
110	@ args = 0, pretend = 0, frame = 0
111	@ frame_needed = 0, uses_anonymous_args = 0
112	@ link register save eliminated.
113	ldr	r3, .L10
114	cmp	r0, #24
115	it	cc
116	movcc	r0, #24
117	ldr	r2, .L10+4
118	str	r0, [r3]
119	ldr	r3, .L10+8
120	ldrh	r3, [r3]
121	muls	r3, r0, r3
122	str	r3, [r2]
123	ldr	r2, .L10+12
124	ldrh	r2, [r2]
125	subs	r0, r2, r0
126	ldr	r2, .L10+16
127	strh	r0, [r2]	@ movhi
128	movs	r0, #0
129	ldr	r2, .L10+20
130	ldr	r2, [r2]
131	subs	r3, r2, r3
132	ldr	r2, .L10+24
133	str	r3, [r2]
134	bx	lr
135.L11:
136	.align	2
137.L10:
138	.word	.LANCHOR1
139	.word	.LANCHOR3
140	.word	.LANCHOR2
141	.word	.LANCHOR5
142	.word	.LANCHOR4
143	.word	.LANCHOR7
144	.word	.LANCHOR6
145	.size	FtlSysBlkNumInit, .-FtlSysBlkNumInit
146	.global	__aeabi_idiv
147	.section	.text.FtlConstantsInit,"ax",%progbits
148	.align	1
149	.global	FtlConstantsInit
150	.syntax unified
151	.thumb
152	.thumb_func
153	.fpu softvfp
154	.type	FtlConstantsInit, %function
155FtlConstantsInit:
156	@ args = 0, pretend = 0, frame = 8
157	@ frame_needed = 0, uses_anonymous_args = 0
158	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
159	mov	r3, r0
160	ldrh	r4, [r0]
161	ldr	r2, .L23
162	ldrh	r5, [r0, #2]
163	ldrh	r7, [r3, #14]
164	strh	r4, [r2]	@ movhi
165	ldr	r2, .L23+4
166	ldrh	ip, [r0, #4]
167	cmp	r7, #4
168	ldr	r0, .L23+8
169	strh	r5, [r2]	@ movhi
170	ldr	r1, .L23+12
171	ldrh	r2, [r3, #6]
172	ldr	r6, .L23+16
173	strh	ip, [r0]	@ movhi
174	strh	r2, [r1]	@ movhi
175	strh	r7, [r6]	@ movhi
176	bne	.L13
177	lsrs	r2, r2, #1
178	strh	r2, [r1]	@ movhi
179	movs	r2, #8
180	strh	r2, [r6]	@ movhi
181.L14:
182	ldr	r7, .L23+20
183	movs	r2, #0
184.L15:
185	strb	r2, [r2, r7]
186	adds	r2, r2, #1
187	cmp	r2, #32
188	bne	.L15
189	ldr	r2, .L23+24
190	cmp	r4, #1
191	mov	r7, #5
192	ldrh	r0, [r0]
193	mov	ip, #0
194	str	r3, [sp, #4]
195	strh	r7, [r2]	@ movhi
196	it	eq
197	strheq	r4, [r2]	@ movhi
198	mov	r4, #640
199	ldr	r2, .L23+28
200	smulbb	r5, r5, r0
201	ldr	r7, .L23+32
202	strh	r4, [r2]	@ movhi
203	uxth	r5, r5
204	ldrh	r4, [r1]
205	ldr	r2, .L23+36
206	strh	ip, [r7]	@ movhi
207	ldr	r7, .L23+40
208	smulbb	r0, r0, r4
209	strh	r5, [r2]	@ movhi
210	ldr	r2, .L23+44
211	uxth	r0, r0
212	strh	r0, [r2]	@ movhi
213	bl	Ftl_log2
214	ldr	r3, [sp, #4]
215	ldr	r2, .L23+48
216	ldrh	fp, [r6]
217	ldrh	r8, [r3, #12]
218	strh	r0, [r2]	@ movhi
219	ldr	r2, .L23+52
220	mov	r0, fp
221	strh	r8, [r7]	@ movhi
222	smulbb	r1, r5, r8
223	ldr	r6, .L23+56
224	strh	r8, [r2]	@ movhi
225	ldr	r2, .L23+60
226	strh	r1, [r2]	@ movhi
227	bl	Ftl_log2
228	lsl	r2, fp, #9
229	ldr	r1, .L23+64
230	ldr	r3, [sp, #4]
231	mov	r10, r0
232	uxth	r2, r2
233	strh	r0, [r6]	@ movhi
234	mov	r0, #5120
235	strh	r2, [r1]	@ movhi
236	lsrs	r2, r2, #8
237	ldr	r1, .L23+68
238	strh	r2, [r1]	@ movhi
239	mul	r1, r8, fp
240	ldrh	r2, [r3, #20]
241	ldr	r3, .L23+72
242	strh	r2, [r3]	@ movhi
243	mul	r3, r4, r5
244	ldr	r2, .L23+76
245	lsls	r4, r4, #6
246	str	r3, [r2]
247	mul	r3, fp, r3
248	ldr	r2, .L23+80
249	mul	r3, r8, r3
250	ldr	r8, .L23+116
251	asrs	r3, r3, #11
252	str	r3, [r2]
253	bl	__aeabi_idiv
254	uxth	r0, r0
255	ldr	r2, .L23+84
256	mov	r1, r5
257	cmp	r0, #4
258	itet	ls
259	movls	r3, #4
260	strhhi	r0, [r8]	@ movhi
261	strhls	r3, [r8]	@ movhi
262	mov	r3, #640
263	asr	r3, r3, r10
264	add	r10, r10, #9
265	asr	r4, r4, r10
266	ldr	r10, .L23+120
267	adds	r3, r3, #2
268	ldrh	r0, [r8]
269	strh	r3, [r2]	@ movhi
270	ldr	r3, .L23+88
271	strh	r4, [r3]	@ movhi
272	uxth	r4, r4
273	mul	r3, r5, r4
274	adds	r4, r4, #8
275	str	r3, [r10]
276	bl	__aeabi_uidiv
277	uxtah	r0, r4, r0
278	ldr	r4, .L23+92
279	cmp	r5, #1
280	it	eq
281	addeq	r0, r0, #4
282	str	r0, [r4]
283	ldrh	r0, [r4]
284	bl	FtlSysBlkNumInit
285	ldr	r2, [r4]
286	movs	r0, #0
287	ldr	r3, .L23+96
288	str	r2, [r3]
289	ldr	r3, .L23+100
290	ldr	r2, [r3]
291	ldrh	r3, [r7]
292	lsls	r2, r2, #2
293	muls	r3, r2, r3
294	ldrh	r2, [r6]
295	adds	r2, r2, #9
296	lsrs	r3, r3, r2
297	ldr	r2, .L23+104
298	adds	r3, r3, #2
299	strh	r3, [r2]	@ movhi
300	movs	r2, #32
301	ldr	r3, .L23+108
302	strh	r2, [r3]	@ movhi
303	ldr	r3, .L23+112
304	str	r0, [r3]
305	ldrh	r3, [r8]
306	adds	r3, r3, #3
307	strh	r3, [r8]	@ movhi
308	ldr	r3, [r10]
309	adds	r3, r3, #3
310	str	r3, [r10]
311	add	sp, sp, #8
312	@ sp needed
313	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
314.L13:
315	cmp	r7, #8
316	bne	.L14
317	cmp	ip, #1
318	itttt	eq
319	lsreq	r2, r2, #1
320	strheq	r2, [r1]	@ movhi
321	moveq	r2, #2
322	strheq	r2, [r0]	@ movhi
323	b	.L14
324.L24:
325	.align	2
326.L23:
327	.word	.LANCHOR8
328	.word	.LANCHOR9
329	.word	.LANCHOR10
330	.word	.LANCHOR5
331	.word	.LANCHOR11
332	.word	.LANCHOR12
333	.word	.LANCHOR13
334	.word	.LANCHOR15
335	.word	.LANCHOR14
336	.word	.LANCHOR2
337	.word	.LANCHOR18
338	.word	.LANCHOR16
339	.word	.LANCHOR17
340	.word	.LANCHOR19
341	.word	.LANCHOR21
342	.word	.LANCHOR20
343	.word	.LANCHOR22
344	.word	.LANCHOR23
345	.word	.LANCHOR24
346	.word	.LANCHOR7
347	.word	.LANCHOR25
348	.word	.LANCHOR27
349	.word	.LANCHOR28
350	.word	.LANCHOR1
351	.word	.LANCHOR30
352	.word	.LANCHOR6
353	.word	.LANCHOR31
354	.word	.LANCHOR32
355	.word	.LANCHOR33
356	.word	.LANCHOR26
357	.word	.LANCHOR29
358	.size	FtlConstantsInit, .-FtlConstantsInit
359	.section	.text.IsBlkInVendorPart,"ax",%progbits
360	.align	1
361	.global	IsBlkInVendorPart
362	.syntax unified
363	.thumb
364	.thumb_func
365	.fpu softvfp
366	.type	IsBlkInVendorPart, %function
367IsBlkInVendorPart:
368	@ args = 0, pretend = 0, frame = 0
369	@ frame_needed = 0, uses_anonymous_args = 0
370	@ link register save eliminated.
371	ldr	r3, .L32
372	ldrh	r3, [r3]
373	cbz	r3, .L31
374	ldr	r3, .L32+4
375	ldr	r2, .L32+8
376	ldr	r3, [r3]
377	ldrh	r2, [r2]
378	add	r2, r3, r2, lsl #1
379.L27:
380	cmp	r3, r2
381	bne	.L28
382.L31:
383	movs	r0, #0
384	bx	lr
385.L28:
386	ldrh	r1, [r3], #2
387	cmp	r0, r1
388	bne	.L27
389	movs	r0, #1
390	bx	lr
391.L33:
392	.align	2
393.L32:
394	.word	.LANCHOR34
395	.word	.LANCHOR35
396	.word	.LANCHOR26
397	.size	IsBlkInVendorPart, .-IsBlkInVendorPart
398	.section	.text.FtlCacheWriteBack,"ax",%progbits
399	.align	1
400	.global	FtlCacheWriteBack
401	.syntax unified
402	.thumb
403	.thumb_func
404	.fpu softvfp
405	.type	FtlCacheWriteBack, %function
406FtlCacheWriteBack:
407	@ args = 0, pretend = 0, frame = 0
408	@ frame_needed = 0, uses_anonymous_args = 0
409	@ link register save eliminated.
410	movs	r0, #0
411	bx	lr
412	.size	FtlCacheWriteBack, .-FtlCacheWriteBack
413	.section	.text.sftl_get_density,"ax",%progbits
414	.align	1
415	.global	sftl_get_density
416	.syntax unified
417	.thumb
418	.thumb_func
419	.fpu softvfp
420	.type	sftl_get_density, %function
421sftl_get_density:
422	@ args = 0, pretend = 0, frame = 0
423	@ frame_needed = 0, uses_anonymous_args = 0
424	@ link register save eliminated.
425	ldr	r3, .L36
426	ldr	r0, [r3]
427	bx	lr
428.L37:
429	.align	2
430.L36:
431	.word	.LANCHOR33
432	.size	sftl_get_density, .-sftl_get_density
433	.global	__aeabi_uidivmod
434	.section	.text.FtlBbmMapBadBlock,"ax",%progbits
435	.align	1
436	.global	FtlBbmMapBadBlock
437	.syntax unified
438	.thumb
439	.thumb_func
440	.fpu softvfp
441	.type	FtlBbmMapBadBlock, %function
442FtlBbmMapBadBlock:
443	@ args = 0, pretend = 0, frame = 0
444	@ frame_needed = 0, uses_anonymous_args = 0
445	ldr	r3, .L39
446	push	{r0, r1, r2, r4, r5, r6, r7, lr}
447	mov	r5, r0
448	ldrh	r4, [r3]
449	mov	r1, r4
450	bl	__aeabi_uidiv
451	mov	r1, r4
452	ldr	r4, .L39+4
453	uxth	r6, r0
454	mov	r0, r5
455	bl	__aeabi_uidivmod
456	add	r2, r4, r6, lsl #2
457	uxth	r3, r1
458	ldr	r2, [r2, #28]
459	lsrs	r1, r3, #5
460	and	r7, r3, #31
461	movs	r0, #1
462	lsls	r0, r0, r7
463	ldr	r7, [r2, r1, lsl #2]
464	orrs	r0, r0, r7
465	str	r0, [r2, r1, lsl #2]
466	mov	r2, r6
467	str	r0, [sp]
468	mov	r1, r5
469	ldr	r0, .L39+8
470	bl	printf
471	ldrh	r3, [r4, #6]
472	movs	r0, #0
473	adds	r3, r3, #1
474	strh	r3, [r4, #6]	@ movhi
475	add	sp, sp, #12
476	@ sp needed
477	pop	{r4, r5, r6, r7, pc}
478.L40:
479	.align	2
480.L39:
481	.word	.LANCHOR16
482	.word	.LANCHOR36
483	.word	.LC0
484	.size	FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
485	.section	.text.FtlBbmIsBadBlock,"ax",%progbits
486	.align	1
487	.global	FtlBbmIsBadBlock
488	.syntax unified
489	.thumb
490	.thumb_func
491	.fpu softvfp
492	.type	FtlBbmIsBadBlock, %function
493FtlBbmIsBadBlock:
494	@ args = 0, pretend = 0, frame = 0
495	@ frame_needed = 0, uses_anonymous_args = 0
496	ldr	r3, .L42
497	push	{r4, r5, r6, lr}
498	mov	r6, r0
499	ldrh	r5, [r3]
500	mov	r1, r5
501	bl	__aeabi_uidivmod
502	mov	r0, r6
503	uxth	r4, r1
504	mov	r1, r5
505	bl	__aeabi_uidiv
506	ldr	r3, .L42+4
507	uxth	r0, r0
508	lsrs	r2, r4, #5
509	and	r4, r4, #31
510	add	r0, r3, r0, lsl #2
511	ldr	r3, [r0, #28]
512	ldr	r0, [r3, r2, lsl #2]
513	lsrs	r0, r0, r4
514	and	r0, r0, #1
515	pop	{r4, r5, r6, pc}
516.L43:
517	.align	2
518.L42:
519	.word	.LANCHOR16
520	.word	.LANCHOR36
521	.size	FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
522	.section	.text.FtlBbtInfoPrint,"ax",%progbits
523	.align	1
524	.global	FtlBbtInfoPrint
525	.syntax unified
526	.thumb
527	.thumb_func
528	.fpu softvfp
529	.type	FtlBbtInfoPrint, %function
530FtlBbtInfoPrint:
531	@ args = 0, pretend = 0, frame = 0
532	@ frame_needed = 0, uses_anonymous_args = 0
533	@ link register save eliminated.
534	bx	lr
535	.size	FtlBbtInfoPrint, .-FtlBbtInfoPrint
536	.section	.text.V2P_block,"ax",%progbits
537	.align	1
538	.global	V2P_block
539	.syntax unified
540	.thumb
541	.thumb_func
542	.fpu softvfp
543	.type	V2P_block, %function
544V2P_block:
545	@ args = 0, pretend = 0, frame = 0
546	@ frame_needed = 0, uses_anonymous_args = 0
547	push	{r3, r4, r5, r6, r7, lr}
548	mov	r5, r1
549	ldr	r3, .L46
550	mov	r7, r0
551	ldrh	r6, [r3]
552	mov	r1, r6
553	bl	__aeabi_uidiv
554	ldr	r3, .L46+4
555	smulbb	r5, r6, r5
556	mov	r1, r6
557	ldrh	r4, [r3]
558	smulbb	r4, r4, r0
559	mov	r0, r7
560	bl	__aeabi_uidivmod
561	adds	r0, r5, r1
562	add	r0, r0, r4
563	uxth	r0, r0
564	pop	{r3, r4, r5, r6, r7, pc}
565.L47:
566	.align	2
567.L46:
568	.word	.LANCHOR10
569	.word	.LANCHOR16
570	.size	V2P_block, .-V2P_block
571	.section	.text.P2V_plane,"ax",%progbits
572	.align	1
573	.global	P2V_plane
574	.syntax unified
575	.thumb
576	.thumb_func
577	.fpu softvfp
578	.type	P2V_plane, %function
579P2V_plane:
580	@ args = 0, pretend = 0, frame = 0
581	@ frame_needed = 0, uses_anonymous_args = 0
582	ldr	r3, .L49
583	push	{r4, r5, r6, lr}
584	mov	r6, r0
585	ldrh	r5, [r3]
586	ldr	r3, .L49+4
587	ldrh	r1, [r3]
588	bl	__aeabi_uidiv
589	smulbb	r4, r0, r5
590	mov	r1, r5
591	mov	r0, r6
592	bl	__aeabi_uidivmod
593	add	r1, r1, r4
594	uxth	r0, r1
595	pop	{r4, r5, r6, pc}
596.L50:
597	.align	2
598.L49:
599	.word	.LANCHOR10
600	.word	.LANCHOR16
601	.size	P2V_plane, .-P2V_plane
602	.section	.text.P2V_block_in_plane,"ax",%progbits
603	.align	1
604	.global	P2V_block_in_plane
605	.syntax unified
606	.thumb
607	.thumb_func
608	.fpu softvfp
609	.type	P2V_block_in_plane, %function
610P2V_block_in_plane:
611	@ args = 0, pretend = 0, frame = 0
612	@ frame_needed = 0, uses_anonymous_args = 0
613	push	{r3, lr}
614	ldr	r3, .L52
615	ldrh	r1, [r3]
616	bl	__aeabi_uidivmod
617	ldr	r3, .L52+4
618	uxth	r0, r1
619	ldrh	r1, [r3]
620	bl	__aeabi_uidiv
621	uxth	r0, r0
622	pop	{r3, pc}
623.L53:
624	.align	2
625.L52:
626	.word	.LANCHOR16
627	.word	.LANCHOR10
628	.size	P2V_block_in_plane, .-P2V_block_in_plane
629	.section	.text.ftl_cmp_data_ver,"ax",%progbits
630	.align	1
631	.global	ftl_cmp_data_ver
632	.syntax unified
633	.thumb
634	.thumb_func
635	.fpu softvfp
636	.type	ftl_cmp_data_ver, %function
637ftl_cmp_data_ver:
638	@ args = 0, pretend = 0, frame = 0
639	@ frame_needed = 0, uses_anonymous_args = 0
640	@ link register save eliminated.
641	cmp	r0, r1
642	bls	.L55
643	subs	r0, r0, r1
644	cmp	r0, #-2147483648
645	ite	hi
646	movhi	r0, #0
647	movls	r0, #1
648	bx	lr
649.L55:
650	subs	r0, r1, r0
651	cmp	r0, #-2147483648
652	ite	ls
653	movls	r0, #0
654	movhi	r0, #1
655	bx	lr
656	.size	ftl_cmp_data_ver, .-ftl_cmp_data_ver
657	.section	.text.FtlFreeSysBlkQueueEmpty,"ax",%progbits
658	.align	1
659	.global	FtlFreeSysBlkQueueEmpty
660	.syntax unified
661	.thumb
662	.thumb_func
663	.fpu softvfp
664	.type	FtlFreeSysBlkQueueEmpty, %function
665FtlFreeSysBlkQueueEmpty:
666	@ args = 0, pretend = 0, frame = 0
667	@ frame_needed = 0, uses_anonymous_args = 0
668	@ link register save eliminated.
669	ldr	r3, .L58
670	ldrh	r0, [r3, #6]
671	clz	r0, r0
672	lsrs	r0, r0, #5
673	bx	lr
674.L59:
675	.align	2
676.L58:
677	.word	.LANCHOR37
678	.size	FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
679	.section	.text.FtlFreeSysBlkQueueFull,"ax",%progbits
680	.align	1
681	.global	FtlFreeSysBlkQueueFull
682	.syntax unified
683	.thumb
684	.thumb_func
685	.fpu softvfp
686	.type	FtlFreeSysBlkQueueFull, %function
687FtlFreeSysBlkQueueFull:
688	@ args = 0, pretend = 0, frame = 0
689	@ frame_needed = 0, uses_anonymous_args = 0
690	@ link register save eliminated.
691	ldr	r3, .L61
692	ldrh	r0, [r3, #6]
693	sub	r3, r0, #1024
694	rsbs	r0, r3, #0
695	adcs	r0, r0, r3
696	bx	lr
697.L62:
698	.align	2
699.L61:
700	.word	.LANCHOR37
701	.size	FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
702	.section	.text.FtlFreeSysBLkSort,"ax",%progbits
703	.align	1
704	.global	FtlFreeSysBLkSort
705	.syntax unified
706	.thumb
707	.thumb_func
708	.fpu softvfp
709	.type	FtlFreeSysBLkSort, %function
710FtlFreeSysBLkSort:
711	@ args = 0, pretend = 0, frame = 0
712	@ frame_needed = 0, uses_anonymous_args = 0
713	ldr	r3, .L72
714	push	{r4, r5, r6, lr}
715	ldrh	r2, [r3, #6]
716	cbz	r2, .L63
717	ldr	r2, .L72+4
718	movs	r6, #0
719	ldrh	r1, [r3, #2]
720	mov	r5, r6
721	ldrh	r4, [r2, #28]
722	ldrh	r2, [r3, #4]
723	and	r4, r4, #31
724.L65:
725	uxth	r0, r6
726	adds	r6, r6, #1
727	cmp	r4, r0
728	bgt	.L66
729	cbz	r5, .L63
730	strh	r1, [r3, #2]	@ movhi
731	strh	r2, [r3, #4]	@ movhi
732.L63:
733	pop	{r4, r5, r6, pc}
734.L66:
735	adds	r0, r1, #4
736	adds	r1, r1, #1
737	ldrh	r5, [r3, r0, lsl #1]
738	adds	r0, r2, #4
739	ubfx	r1, r1, #0, #10
740	strh	r5, [r3, r0, lsl #1]	@ movhi
741	movs	r5, #1
742	add	r2, r2, r5
743	ubfx	r2, r2, #0, #10
744	b	.L65
745.L73:
746	.align	2
747.L72:
748	.word	.LANCHOR37
749	.word	.LANCHOR38
750	.size	FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
751	.section	.text.IsInFreeQueue,"ax",%progbits
752	.align	1
753	.global	IsInFreeQueue
754	.syntax unified
755	.thumb
756	.thumb_func
757	.fpu softvfp
758	.type	IsInFreeQueue, %function
759IsInFreeQueue:
760	@ args = 0, pretend = 0, frame = 0
761	@ frame_needed = 0, uses_anonymous_args = 0
762	ldr	r3, .L80
763	push	{r4, r5, lr}
764	ldrh	r4, [r3, #6]
765	cmp	r4, #1024
766	beq	.L78
767	ldrh	r5, [r3, #2]
768	movs	r1, #0
769.L76:
770	cmp	r1, r4
771	bcc	.L77
772.L78:
773	movs	r0, #0
774	pop	{r4, r5, pc}
775.L77:
776	adds	r2, r1, r5
777	ubfx	r2, r2, #0, #10
778	adds	r2, r2, #4
779	ldrh	r2, [r3, r2, lsl #1]
780	cmp	r2, r0
781	beq	.L79
782	adds	r1, r1, #1
783	b	.L76
784.L79:
785	movs	r0, #1
786	pop	{r4, r5, pc}
787.L81:
788	.align	2
789.L80:
790	.word	.LANCHOR37
791	.size	IsInFreeQueue, .-IsInFreeQueue
792	.section	.text.insert_data_list,"ax",%progbits
793	.align	1
794	.global	insert_data_list
795	.syntax unified
796	.thumb
797	.thumb_func
798	.fpu softvfp
799	.type	insert_data_list, %function
800insert_data_list:
801	@ args = 0, pretend = 0, frame = 0
802	@ frame_needed = 0, uses_anonymous_args = 0
803	ldr	r3, .L97
804	push	{r4, r5, r6, r7, r8, r10, fp, lr}
805	ldrh	r8, [r3]
806	cmp	r8, r0
807	bls	.L84
808	ldr	r3, .L97+4
809	movs	r5, #6
810	muls	r5, r0, r5
811	ldr	r4, [r3]
812	movw	r3, #65535
813	adds	r1, r4, r5
814	strh	r3, [r1, #2]	@ movhi
815	strh	r3, [r4, r5]	@ movhi
816	ldr	r3, .L97+8
817	ldr	ip, [r3]
818	cmp	ip, #0
819	bne	.L85
820.L96:
821	str	r1, [r3]
822.L84:
823	movs	r0, #0
824	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
825.L85:
826	ldr	r3, .L97+12
827	ldrh	r6, [r1, #4]
828	ldr	r10, [r3]
829	ldrh	r3, [r10, r0, lsl #1]
830	cbz	r6, .L92
831	muls	r6, r3, r6
832.L86:
833	sub	r2, ip, r4
834	movs	r7, #0
835	asrs	r3, r2, #1
836	ldr	r2, .L97+16
837	muls	r2, r3, r2
838	mov	r3, ip
839	uxth	r2, r2
840.L90:
841	adds	r7, r7, #1
842	uxth	r7, r7
843	cmp	r8, r7
844	bcc	.L84
845	cmp	r2, r0
846	beq	.L84
847	ldrh	lr, [r3, #4]
848	cmp	lr, #0
849	beq	.L88
850	ldrh	fp, [r10, r2, lsl #1]
851	mul	lr, lr, fp
852	cmp	r6, lr
853	bls	.L88
854	ldrh	lr, [r3]
855	movw	fp, #65535
856	cmp	lr, fp
857	bne	.L89
858	strh	r2, [r1, #2]	@ movhi
859	strh	r0, [r3]	@ movhi
860	ldr	r3, .L97+20
861	b	.L96
862.L92:
863	mov	r6, #-1
864	b	.L86
865.L89:
866	movs	r3, #6
867	mov	r2, lr
868	mla	r3, r3, lr, r4
869	b	.L90
870.L88:
871	strh	r2, [r4, r5]	@ movhi
872	cmp	r3, ip
873	ldrh	r2, [r3, #2]
874	strh	r2, [r1, #2]	@ movhi
875	bne	.L91
876	strh	r0, [r3, #2]	@ movhi
877	ldr	r3, .L97+8
878	b	.L96
879.L91:
880	ldrh	r1, [r3, #2]
881	movs	r2, #6
882	muls	r2, r1, r2
883	strh	r0, [r4, r2]	@ movhi
884	strh	r0, [r3, #2]	@ movhi
885	b	.L84
886.L98:
887	.align	2
888.L97:
889	.word	.LANCHOR4
890	.word	.LANCHOR39
891	.word	.LANCHOR40
892	.word	.LANCHOR41
893	.word	-1431655765
894	.word	.LANCHOR42
895	.size	insert_data_list, .-insert_data_list
896	.section	.text.INSERT_DATA_LIST,"ax",%progbits
897	.align	1
898	.global	INSERT_DATA_LIST
899	.syntax unified
900	.thumb
901	.thumb_func
902	.fpu softvfp
903	.type	INSERT_DATA_LIST, %function
904INSERT_DATA_LIST:
905	@ args = 0, pretend = 0, frame = 0
906	@ frame_needed = 0, uses_anonymous_args = 0
907	push	{r3, lr}
908	bl	insert_data_list
909	ldr	r2, .L101
910	ldrh	r3, [r2]
911	adds	r3, r3, #1
912	uxth	r3, r3
913	strh	r3, [r2]	@ movhi
914	ldr	r2, .L101+4
915	ldrh	r2, [r2]
916	cmp	r2, r3
917	bcs	.L99
918	movs	r2, #214
919	ldr	r1, .L101+8
920	ldr	r0, .L101+12
921	pop	{r3, lr}
922	b	printf
923.L99:
924	pop	{r3, pc}
925.L102:
926	.align	2
927.L101:
928	.word	.LANCHOR43
929	.word	.LANCHOR4
930	.word	.LANCHOR44
931	.word	.LC1
932	.size	INSERT_DATA_LIST, .-INSERT_DATA_LIST
933	.section	.text.insert_free_list,"ax",%progbits
934	.align	1
935	.global	insert_free_list
936	.syntax unified
937	.thumb
938	.thumb_func
939	.fpu softvfp
940	.type	insert_free_list, %function
941insert_free_list:
942	@ args = 0, pretend = 0, frame = 0
943	@ frame_needed = 0, uses_anonymous_args = 0
944	movw	r1, #65535
945	push	{r4, r5, r6, r7, r8, r10, fp, lr}
946	cmp	r0, r1
947	beq	.L104
948	ldr	r3, .L110
949	mov	r10, #6
950	mul	r7, r10, r0
951	ldr	r4, [r3]
952	ldr	r3, .L110+4
953	adds	r5, r4, r7
954	ldr	r6, [r3]
955	mov	lr, r3
956	strh	r1, [r5, #2]	@ movhi
957	strh	r1, [r4, r7]	@ movhi
958	cbnz	r6, .L105
959	str	r5, [r3]
960.L104:
961	movs	r0, #0
962	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
963.L105:
964	ldr	r3, .L110+8
965	subs	r2, r6, r4
966	mov	fp, r1
967	ldr	ip, [r3]
968	asrs	r3, r2, #1
969	ldr	r2, .L110+12
970	ldrh	r8, [ip, r0, lsl #1]
971	muls	r2, r3, r2
972	mov	r3, r6
973	uxth	r2, r2
974.L108:
975	ldrh	r1, [ip, r2, lsl #1]
976	cmp	r1, r8
977	bcs	.L106
978	ldrh	r1, [r3]
979	cmp	r1, fp
980	bne	.L107
981	strh	r2, [r5, #2]	@ movhi
982	strh	r0, [r3]	@ movhi
983	b	.L104
984.L107:
985	mla	r3, r10, r1, r4
986	mov	r2, r1
987	b	.L108
988.L106:
989	ldrh	r1, [r3, #2]
990	cmp	r3, r6
991	strh	r1, [r5, #2]	@ movhi
992	it	ne
993	ldrhne	r1, [r3, #2]
994	strh	r2, [r4, r7]	@ movhi
995	iteet	ne
996	movne	r2, #6
997	strheq	r0, [r3, #2]	@ movhi
998	streq	r5, [lr]
999	mulne	r2, r2, r1
1000	itt	ne
1001	strhne	r0, [r4, r2]	@ movhi
1002	strhne	r0, [r3, #2]	@ movhi
1003	b	.L104
1004.L111:
1005	.align	2
1006.L110:
1007	.word	.LANCHOR39
1008	.word	.LANCHOR45
1009	.word	.LANCHOR46
1010	.word	-1431655765
1011	.size	insert_free_list, .-insert_free_list
1012	.section	.text.INSERT_FREE_LIST,"ax",%progbits
1013	.align	1
1014	.global	INSERT_FREE_LIST
1015	.syntax unified
1016	.thumb
1017	.thumb_func
1018	.fpu softvfp
1019	.type	INSERT_FREE_LIST, %function
1020INSERT_FREE_LIST:
1021	@ args = 0, pretend = 0, frame = 0
1022	@ frame_needed = 0, uses_anonymous_args = 0
1023	push	{r3, lr}
1024	bl	insert_free_list
1025	ldr	r2, .L114
1026	ldrh	r3, [r2]
1027	adds	r3, r3, #1
1028	uxth	r3, r3
1029	strh	r3, [r2]	@ movhi
1030	ldr	r2, .L114+4
1031	ldrh	r2, [r2]
1032	cmp	r2, r3
1033	bcs	.L112
1034	movs	r2, #207
1035	ldr	r1, .L114+8
1036	ldr	r0, .L114+12
1037	pop	{r3, lr}
1038	b	printf
1039.L112:
1040	pop	{r3, pc}
1041.L115:
1042	.align	2
1043.L114:
1044	.word	.LANCHOR47
1045	.word	.LANCHOR4
1046	.word	.LANCHOR48
1047	.word	.LC1
1048	.size	INSERT_FREE_LIST, .-INSERT_FREE_LIST
1049	.section	.text.List_remove_node,"ax",%progbits
1050	.align	1
1051	.global	List_remove_node
1052	.syntax unified
1053	.thumb
1054	.thumb_func
1055	.fpu softvfp
1056	.type	List_remove_node, %function
1057List_remove_node:
1058	@ args = 0, pretend = 0, frame = 0
1059	@ frame_needed = 0, uses_anonymous_args = 0
1060	push	{r4, r5, r6, r7, r8, lr}
1061	movs	r6, #6
1062	ldr	r5, .L122
1063	muls	r6, r1, r6
1064	movw	r3, #65535
1065	mov	r8, r0
1066	ldr	r7, [r5]
1067	adds	r4, r7, r6
1068	ldrh	r2, [r4, #2]
1069	cmp	r2, r3
1070	bne	.L117
1071	ldr	r3, [r0]
1072	cmp	r4, r3
1073	beq	.L117
1074	mov	r2, #372
1075	ldr	r1, .L122+4
1076	ldr	r0, .L122+8
1077	bl	printf
1078.L117:
1079	ldr	r3, [r8]
1080	movw	r1, #65535
1081	cmp	r4, r3
1082	ldrh	r3, [r7, r6]
1083	bne	.L118
1084	cmp	r3, r1
1085	ittee	ne
1086	ldrne	r0, [r5]
1087	movne	r2, #6
1088	moveq	r3, #0
1089	streq	r3, [r8]
1090	ittt	ne
1091	mlane	r3, r2, r3, r0
1092	strne	r3, [r8]
1093	strhne	r1, [r3, #2]	@ movhi
1094.L120:
1095	movw	r3, #65535
1096	movs	r0, #0
1097	strh	r3, [r7, r6]	@ movhi
1098	strh	r3, [r4, #2]	@ movhi
1099	pop	{r4, r5, r6, r7, r8, pc}
1100.L118:
1101	cmp	r3, r1
1102	ldrh	r1, [r4, #2]
1103	bne	.L121
1104	cmp	r1, r3
1105	beq	.L120
1106	movs	r2, #6
1107	ldr	r0, [r5]
1108	muls	r1, r2, r1
1109	strh	r3, [r0, r1]	@ movhi
1110	b	.L120
1111.L121:
1112	ldr	r0, [r5]
1113	movs	r2, #6
1114	mla	r5, r2, r3, r0
1115	strh	r1, [r5, #2]	@ movhi
1116	ldrh	r1, [r4, #2]
1117	muls	r2, r1, r2
1118	strh	r3, [r0, r2]	@ movhi
1119	b	.L120
1120.L123:
1121	.align	2
1122.L122:
1123	.word	.LANCHOR39
1124	.word	.LANCHOR49
1125	.word	.LC1
1126	.size	List_remove_node, .-List_remove_node
1127	.section	.text.List_pop_index_node,"ax",%progbits
1128	.align	1
1129	.global	List_pop_index_node
1130	.syntax unified
1131	.thumb
1132	.thumb_func
1133	.fpu softvfp
1134	.type	List_pop_index_node, %function
1135List_pop_index_node:
1136	@ args = 0, pretend = 0, frame = 0
1137	@ frame_needed = 0, uses_anonymous_args = 0
1138	ldr	r3, [r0]
1139	push	{r4, r5, r6, lr}
1140	cbz	r3, .L130
1141	ldr	r2, .L131
1142	movw	r5, #65535
1143	movs	r6, #6
1144	ldr	r2, [r2]
1145.L126:
1146	cbnz	r1, .L127
1147.L129:
1148	ldr	r4, .L131+4
1149	subs	r3, r3, r2
1150	asrs	r3, r3, #1
1151	muls	r4, r3, r4
1152	uxth	r1, r4
1153	bl	List_remove_node
1154	uxth	r0, r4
1155	pop	{r4, r5, r6, pc}
1156.L127:
1157	ldrh	r4, [r3]
1158	cmp	r4, r5
1159	beq	.L129
1160	subs	r1, r1, #1
1161	mla	r3, r6, r4, r2
1162	uxth	r1, r1
1163	b	.L126
1164.L130:
1165	movw	r0, #65535
1166	pop	{r4, r5, r6, pc}
1167.L132:
1168	.align	2
1169.L131:
1170	.word	.LANCHOR39
1171	.word	-1431655765
1172	.size	List_pop_index_node, .-List_pop_index_node
1173	.section	.text.List_pop_head_node,"ax",%progbits
1174	.align	1
1175	.global	List_pop_head_node
1176	.syntax unified
1177	.thumb
1178	.thumb_func
1179	.fpu softvfp
1180	.type	List_pop_head_node, %function
1181List_pop_head_node:
1182	@ args = 0, pretend = 0, frame = 0
1183	@ frame_needed = 0, uses_anonymous_args = 0
1184	@ link register save eliminated.
1185	movs	r1, #0
1186	b	List_pop_index_node
1187	.size	List_pop_head_node, .-List_pop_head_node
1188	.section	.text.List_get_gc_head_node,"ax",%progbits
1189	.align	1
1190	.global	List_get_gc_head_node
1191	.syntax unified
1192	.thumb
1193	.thumb_func
1194	.fpu softvfp
1195	.type	List_get_gc_head_node, %function
1196List_get_gc_head_node:
1197	@ args = 0, pretend = 0, frame = 0
1198	@ frame_needed = 0, uses_anonymous_args = 0
1199	ldr	r3, .L140
1200	push	{r4, lr}
1201	ldr	r3, [r3]
1202	cbz	r3, .L139
1203	ldr	r2, .L140+4
1204	movs	r4, #6
1205	ldr	r1, [r2]
1206	movw	r2, #65535
1207.L136:
1208	cbz	r0, .L137
1209	ldrh	r3, [r3]
1210	cmp	r3, r2
1211	bne	.L138
1212.L139:
1213	movw	r0, #65535
1214	pop	{r4, pc}
1215.L138:
1216	subs	r0, r0, #1
1217	mla	r3, r4, r3, r1
1218	uxth	r0, r0
1219	b	.L136
1220.L137:
1221	ldr	r0, .L140+8
1222	subs	r3, r3, r1
1223	asrs	r3, r3, #1
1224	muls	r3, r0, r3
1225	uxth	r0, r3
1226	pop	{r4, pc}
1227.L141:
1228	.align	2
1229.L140:
1230	.word	.LANCHOR40
1231	.word	.LANCHOR39
1232	.word	-1431655765
1233	.size	List_get_gc_head_node, .-List_get_gc_head_node
1234	.section	.text.List_update_data_list,"ax",%progbits
1235	.align	1
1236	.global	List_update_data_list
1237	.syntax unified
1238	.thumb
1239	.thumb_func
1240	.fpu softvfp
1241	.type	List_update_data_list, %function
1242List_update_data_list:
1243	@ args = 0, pretend = 0, frame = 0
1244	@ frame_needed = 0, uses_anonymous_args = 0
1245	ldr	r3, .L153
1246	push	{r4, r5, r6, r7, r8, r10, fp, lr}
1247	mov	r4, r0
1248	ldrh	r3, [r3]
1249	cmp	r3, r0
1250	beq	.L144
1251	ldr	r3, .L153+4
1252	ldrh	r3, [r3]
1253	cmp	r3, r0
1254	beq	.L144
1255	ldr	r3, .L153+8
1256	ldrh	r3, [r3]
1257	cmp	r3, r0
1258	beq	.L144
1259	ldr	r7, .L153+12
1260	movs	r6, #6
1261	ldr	r3, .L153+16
1262	muls	r6, r0, r6
1263	ldr	fp, [r7]
1264	ldr	r3, [r3]
1265	add	r10, fp, r6
1266	cmp	r10, r3
1267	beq	.L144
1268	ldr	r3, .L153+20
1269	ldrh	r5, [r10, #4]
1270	ldr	r2, [r3]
1271	mov	r8, r3
1272	ldrh	r2, [r2, r0, lsl #1]
1273	cmp	r5, #0
1274	beq	.L151
1275	muls	r5, r2, r5
1276.L146:
1277	ldrh	r3, [r10, #2]
1278	movw	r2, #65535
1279	cmp	r3, r2
1280	bne	.L147
1281	ldrh	r2, [fp, r6]
1282	cmp	r2, r3
1283	bne	.L147
1284	movw	r2, #463
1285	ldr	r1, .L153+24
1286	ldr	r0, .L153+28
1287	bl	printf
1288.L147:
1289	ldrh	r3, [r10, #2]
1290	movw	r2, #65535
1291	cmp	r3, r2
1292	bne	.L148
1293	ldrh	r2, [fp, r6]
1294	cmp	r2, r3
1295	beq	.L144
1296.L148:
1297	movs	r2, #6
1298	muls	r2, r3, r2
1299	ldr	r3, .L153+32
1300	asrs	r1, r2, #1
1301	muls	r3, r1, r3
1302	ldr	r1, [r8]
1303	ldrh	r0, [r1, r3, lsl #1]
1304	ldr	r1, [r7]
1305	add	r2, r2, r1
1306	ldrh	r3, [r2, #4]
1307	cbz	r3, .L152
1308	muls	r3, r0, r3
1309.L149:
1310	cmp	r5, r3
1311	bcs	.L144
1312	ldr	r5, .L153+36
1313	mov	r1, r4
1314	ldr	r0, .L153+16
1315	bl	List_remove_node
1316	ldrh	r3, [r5]
1317	cbnz	r3, .L150
1318	mov	r2, #474
1319	ldr	r1, .L153+24
1320	ldr	r0, .L153+28
1321	bl	printf
1322.L150:
1323	ldrh	r3, [r5]
1324	mov	r0, r4
1325	subs	r3, r3, #1
1326	strh	r3, [r5]	@ movhi
1327	bl	INSERT_DATA_LIST
1328.L144:
1329	movs	r0, #0
1330	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
1331.L151:
1332	mov	r5, #-1
1333	b	.L146
1334.L152:
1335	mov	r3, #-1
1336	b	.L149
1337.L154:
1338	.align	2
1339.L153:
1340	.word	.LANCHOR50
1341	.word	.LANCHOR51
1342	.word	.LANCHOR52
1343	.word	.LANCHOR39
1344	.word	.LANCHOR40
1345	.word	.LANCHOR41
1346	.word	.LANCHOR53
1347	.word	.LC1
1348	.word	-1431655765
1349	.word	.LANCHOR43
1350	.size	List_update_data_list, .-List_update_data_list
1351	.section	.text.select_l2p_ram_region,"ax",%progbits
1352	.align	1
1353	.global	select_l2p_ram_region
1354	.syntax unified
1355	.thumb
1356	.thumb_func
1357	.fpu softvfp
1358	.type	select_l2p_ram_region, %function
1359select_l2p_ram_region:
1360	@ args = 0, pretend = 0, frame = 0
1361	@ frame_needed = 0, uses_anonymous_args = 0
1362	push	{r3, r4, r5, r6, r7, lr}
1363	movs	r1, #0
1364	ldr	r3, .L165
1365	movs	r0, #12
1366	movw	r5, #65535
1367	ldrh	r2, [r3]
1368	ldr	r3, .L165+4
1369	ldr	r3, [r3]
1370.L156:
1371	uxth	r4, r1
1372	cmp	r4, r2
1373	bcc	.L158
1374	mov	r4, r2
1375	movs	r1, #0
1376	mov	r6, #-2147483648
1377	movs	r7, #12
1378.L159:
1379	uxth	r5, r1
1380	cmp	r5, r2
1381	bcc	.L161
1382	cmp	r4, r2
1383	bcc	.L157
1384	ldr	r1, .L165+8
1385	mov	r4, r2
1386	mov	r0, #-1
1387	ldrh	r7, [r1]
1388	movs	r1, #0
1389.L162:
1390	uxth	r5, r1
1391	cmp	r5, r2
1392	bcc	.L164
1393	cmp	r4, r2
1394	bcc	.L157
1395	mov	r2, #796
1396	ldr	r1, .L165+12
1397	ldr	r0, .L165+16
1398	bl	printf
1399	b	.L157
1400.L158:
1401	adds	r1, r1, #1
1402	mla	r6, r0, r1, r3
1403	ldrh	r6, [r6, #-12]
1404	cmp	r6, r5
1405	bne	.L156
1406.L157:
1407	mov	r0, r4
1408	pop	{r3, r4, r5, r6, r7, pc}
1409.L161:
1410	mla	r0, r7, r1, r3
1411	ldr	r0, [r0, #4]
1412	cmp	r0, #0
1413	blt	.L160
1414	cmp	r6, r0
1415	itt	hi
1416	movhi	r6, r0
1417	movhi	r4, r5
1418.L160:
1419	adds	r1, r1, #1
1420	b	.L159
1421.L164:
1422	ldr	r6, [r3, #4]
1423	cmp	r0, r6
1424	bls	.L163
1425	ldrh	ip, [r3]
1426	cmp	ip, r7
1427	itt	ne
1428	movne	r0, r6
1429	movne	r4, r5
1430.L163:
1431	adds	r1, r1, #1
1432	adds	r3, r3, #12
1433	b	.L162
1434.L166:
1435	.align	2
1436.L165:
1437	.word	.LANCHOR32
1438	.word	.LANCHOR54
1439	.word	.LANCHOR55
1440	.word	.LANCHOR56
1441	.word	.LC1
1442	.size	select_l2p_ram_region, .-select_l2p_ram_region
1443	.section	.text.FtlUpdateVaildLpn,"ax",%progbits
1444	.align	1
1445	.global	FtlUpdateVaildLpn
1446	.syntax unified
1447	.thumb
1448	.thumb_func
1449	.fpu softvfp
1450	.type	FtlUpdateVaildLpn, %function
1451FtlUpdateVaildLpn:
1452	@ args = 0, pretend = 0, frame = 0
1453	@ frame_needed = 0, uses_anonymous_args = 0
1454	ldr	r2, .L177
1455	push	{r4, r5, r6, lr}
1456	mov	r1, r2
1457	ldrh	r3, [r2]
1458	cmp	r3, #4
1459	bhi	.L168
1460	cbnz	r0, .L168
1461	adds	r3, r3, #1
1462	strh	r3, [r2]	@ movhi
1463	pop	{r4, r5, r6, pc}
1464.L168:
1465	movs	r3, #0
1466	ldr	r0, .L177+4
1467	strh	r3, [r1]	@ movhi
1468	movw	r6, #65535
1469	ldr	r1, .L177+8
1470	ldrh	r4, [r0]
1471	mov	r0, r3
1472	ldr	r2, .L177+12
1473	ldr	r1, [r1]
1474	str	r3, [r2]
1475	add	r4, r1, r4, lsl #1
1476.L169:
1477	cmp	r1, r4
1478	bne	.L171
1479	cbz	r3, .L167
1480	str	r0, [r2]
1481.L167:
1482	pop	{r4, r5, r6, pc}
1483.L171:
1484	ldrh	r5, [r1], #2
1485	cmp	r5, r6
1486	itt	ne
1487	addne	r0, r0, r5
1488	movne	r3, #1
1489	b	.L169
1490.L178:
1491	.align	2
1492.L177:
1493	.word	.LANCHOR57
1494	.word	.LANCHOR4
1495	.word	.LANCHOR41
1496	.word	.LANCHOR58
1497	.size	FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
1498	.section	.text.ftl_sb_update_avl_pages,"ax",%progbits
1499	.align	1
1500	.global	ftl_sb_update_avl_pages
1501	.syntax unified
1502	.thumb
1503	.thumb_func
1504	.fpu softvfp
1505	.type	ftl_sb_update_avl_pages, %function
1506ftl_sb_update_avl_pages:
1507	@ args = 0, pretend = 0, frame = 0
1508	@ frame_needed = 0, uses_anonymous_args = 0
1509	movs	r3, #0
1510	push	{r4, r5, r6, lr}
1511	strh	r3, [r0, #4]	@ movhi
1512	movw	r6, #65535
1513	ldr	r3, .L186
1514	ldrh	r4, [r3]
1515	add	r3, r0, r2, lsl #1
1516	adds	r3, r3, #14
1517.L180:
1518	cmp	r2, r4
1519	bcc	.L182
1520	ldr	r3, .L186+4
1521	add	r5, r0, #16
1522	movw	r6, #65535
1523	ldrh	r3, [r3]
1524	subs	r3, r3, #1
1525	subs	r1, r3, r1
1526	movs	r3, #0
1527	uxth	r1, r1
1528.L183:
1529	uxth	r2, r3
1530	cmp	r4, r2
1531	bhi	.L185
1532	pop	{r4, r5, r6, pc}
1533.L182:
1534	ldrh	r5, [r3, #2]!
1535	adds	r2, r2, #1
1536	uxth	r2, r2
1537	cmp	r5, r6
1538	ittt	ne
1539	ldrhne	r5, [r0, #4]
1540	addne	r5, r5, #1
1541	strhne	r5, [r0, #4]	@ movhi
1542	b	.L180
1543.L185:
1544	ldrh	r2, [r5], #2
1545	adds	r3, r3, #1
1546	cmp	r2, r6
1547	ittt	ne
1548	ldrhne	r2, [r0, #4]
1549	addne	r2, r2, r1
1550	strhne	r2, [r0, #4]	@ movhi
1551	b	.L183
1552.L187:
1553	.align	2
1554.L186:
1555	.word	.LANCHOR2
1556	.word	.LANCHOR18
1557	.size	ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
1558	.section	.text.FtlSlcSuperblockCheck,"ax",%progbits
1559	.align	1
1560	.global	FtlSlcSuperblockCheck
1561	.syntax unified
1562	.thumb
1563	.thumb_func
1564	.fpu softvfp
1565	.type	FtlSlcSuperblockCheck, %function
1566FtlSlcSuperblockCheck:
1567	@ args = 0, pretend = 0, frame = 0
1568	@ frame_needed = 0, uses_anonymous_args = 0
1569	ldrh	r3, [r0, #4]
1570	push	{r4, r5, lr}
1571	cbz	r3, .L188
1572	ldrh	r2, [r0]
1573	movw	r3, #65535
1574	cmp	r2, r3
1575	beq	.L188
1576	ldrb	r2, [r0, #6]	@ zero_extendqisi2
1577	movs	r5, #0
1578	adds	r2, r2, #8
1579	ldrh	r1, [r0, r2, lsl #1]
1580	ldr	r2, .L194
1581	ldrh	r4, [r2]
1582	mov	r2, r3
1583.L191:
1584	cmp	r1, r2
1585	beq	.L193
1586.L188:
1587	pop	{r4, r5, pc}
1588.L193:
1589	ldrb	r3, [r0, #6]	@ zero_extendqisi2
1590	adds	r3, r3, #1
1591	uxtb	r3, r3
1592	cmp	r3, r4
1593	strb	r3, [r0, #6]
1594	itttt	eq
1595	ldrheq	r3, [r0, #2]
1596	strbeq	r5, [r0, #6]
1597	addeq	r3, r3, #1
1598	strheq	r3, [r0, #2]	@ movhi
1599	ldrb	r3, [r0, #6]	@ zero_extendqisi2
1600	adds	r3, r3, #8
1601	ldrh	r1, [r0, r3, lsl #1]
1602	b	.L191
1603.L195:
1604	.align	2
1605.L194:
1606	.word	.LANCHOR2
1607	.size	FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
1608	.section	.text.make_superblock,"ax",%progbits
1609	.align	1
1610	.global	make_superblock
1611	.syntax unified
1612	.thumb
1613	.thumb_func
1614	.fpu softvfp
1615	.type	make_superblock, %function
1616make_superblock:
1617	@ args = 0, pretend = 0, frame = 0
1618	@ frame_needed = 0, uses_anonymous_args = 0
1619	ldr	r3, .L202
1620	ldrh	r2, [r0]
1621	push	{r4, r5, r6, r7, r8, r10, fp, lr}
1622	mov	r4, r0
1623	ldrh	r3, [r3]
1624	cmp	r2, r3
1625	bcc	.L197
1626	movw	r2, #2157
1627	ldr	r1, .L202+4
1628	ldr	r0, .L202+8
1629	bl	printf
1630.L197:
1631	ldr	r3, .L202+12
1632	add	r6, r4, #16
1633	ldr	r10, .L202+24
1634	movw	r7, #65535
1635	movs	r5, #0
1636	ldrh	r8, [r3]
1637	strh	r5, [r4, #4]	@ movhi
1638	strb	r5, [r4, #7]
1639.L198:
1640	uxth	r3, r5
1641	ldrh	r1, [r4]
1642	cmp	r8, r3
1643	bhi	.L200
1644	ldr	r2, .L202+16
1645	movs	r0, #0
1646	ldrb	r3, [r4, #7]	@ zero_extendqisi2
1647	ldrh	r2, [r2]
1648	smulbb	r3, r3, r2
1649	strh	r3, [r4, #4]	@ movhi
1650	movs	r3, #0
1651	strb	r3, [r4, #9]
1652	ldr	r3, .L202+20
1653	ldr	r3, [r3]
1654	ldrh	r2, [r3, r1, lsl #1]
1655	movw	r3, #10000
1656	cmp	r2, r3
1657	itt	hi
1658	movhi	r3, #1
1659	strbhi	r3, [r4, #9]
1660	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
1661.L200:
1662	ldrb	r0, [r10, r5]	@ zero_extendqisi2
1663	bl	V2P_block
1664	strh	r7, [r6]	@ movhi
1665	mov	fp, r0
1666	bl	FtlBbmIsBadBlock
1667	cbnz	r0, .L199
1668	strh	fp, [r6]	@ movhi
1669	ldrb	r3, [r4, #7]	@ zero_extendqisi2
1670	adds	r3, r3, #1
1671	strb	r3, [r4, #7]
1672.L199:
1673	adds	r5, r5, #1
1674	adds	r6, r6, #2
1675	b	.L198
1676.L203:
1677	.align	2
1678.L202:
1679	.word	.LANCHOR4
1680	.word	.LANCHOR59
1681	.word	.LC1
1682	.word	.LANCHOR2
1683	.word	.LANCHOR18
1684	.word	.LANCHOR46
1685	.word	.LANCHOR12
1686	.size	make_superblock, .-make_superblock
1687	.section	.text.update_multiplier_value,"ax",%progbits
1688	.align	1
1689	.global	update_multiplier_value
1690	.syntax unified
1691	.thumb
1692	.thumb_func
1693	.fpu softvfp
1694	.type	update_multiplier_value, %function
1695update_multiplier_value:
1696	@ args = 0, pretend = 0, frame = 0
1697	@ frame_needed = 0, uses_anonymous_args = 0
1698	push	{r3, r4, r5, r6, r7, r8, r10, lr}
1699	movs	r5, #0
1700	ldr	r3, .L210
1701	mov	r6, r0
1702	mov	r4, r5
1703	ldr	r10, .L210+12
1704	ldrh	r7, [r3]
1705	ldr	r3, .L210+4
1706	ldrh	r8, [r3]
1707.L205:
1708	uxth	r3, r5
1709	cmp	r7, r3
1710	bhi	.L207
1711	cbz	r4, .L209
1712	mov	r1, r4
1713	mov	r0, #32768
1714	bl	__aeabi_idiv
1715.L208:
1716	ldr	r3, .L210+8
1717	movs	r2, #6
1718	ldr	r3, [r3]
1719	mla	r6, r2, r6, r3
1720	strh	r0, [r6, #4]	@ movhi
1721	movs	r0, #0
1722	pop	{r3, r4, r5, r6, r7, r8, r10, pc}
1723.L207:
1724	mov	r1, r6
1725	ldrb	r0, [r10, r5]	@ zero_extendqisi2
1726	bl	V2P_block
1727	bl	FtlBbmIsBadBlock
1728	cbnz	r0, .L206
1729	add	r4, r4, r8
1730	uxth	r4, r4
1731.L206:
1732	adds	r5, r5, #1
1733	b	.L205
1734.L209:
1735	mov	r0, r4
1736	b	.L208
1737.L211:
1738	.align	2
1739.L210:
1740	.word	.LANCHOR2
1741	.word	.LANCHOR18
1742	.word	.LANCHOR39
1743	.word	.LANCHOR12
1744	.size	update_multiplier_value, .-update_multiplier_value
1745	.section	.text.GetFreeBlockMinEraseCount,"ax",%progbits
1746	.align	1
1747	.global	GetFreeBlockMinEraseCount
1748	.syntax unified
1749	.thumb
1750	.thumb_func
1751	.fpu softvfp
1752	.type	GetFreeBlockMinEraseCount, %function
1753GetFreeBlockMinEraseCount:
1754	@ args = 0, pretend = 0, frame = 0
1755	@ frame_needed = 0, uses_anonymous_args = 0
1756	@ link register save eliminated.
1757	ldr	r3, .L215
1758	ldr	r0, [r3]
1759	cbz	r0, .L213
1760	ldr	r3, .L215+4
1761	ldr	r3, [r3]
1762	subs	r0, r0, r3
1763	ldr	r3, .L215+8
1764	asrs	r0, r0, #1
1765	muls	r0, r3, r0
1766	ldr	r3, .L215+12
1767	ldr	r3, [r3]
1768	uxth	r0, r0
1769	ldrh	r0, [r3, r0, lsl #1]
1770.L213:
1771	bx	lr
1772.L216:
1773	.align	2
1774.L215:
1775	.word	.LANCHOR45
1776	.word	.LANCHOR39
1777	.word	-1431655765
1778	.word	.LANCHOR46
1779	.size	GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
1780	.section	.text.GetFreeBlockMaxEraseCount,"ax",%progbits
1781	.align	1
1782	.global	GetFreeBlockMaxEraseCount
1783	.syntax unified
1784	.thumb
1785	.thumb_func
1786	.fpu softvfp
1787	.type	GetFreeBlockMaxEraseCount, %function
1788GetFreeBlockMaxEraseCount:
1789	@ args = 0, pretend = 0, frame = 0
1790	@ frame_needed = 0, uses_anonymous_args = 0
1791	ldr	r3, .L225
1792	push	{r4, r5, r6, lr}
1793	ldr	r3, [r3]
1794	cbz	r3, .L223
1795	ldr	r2, .L225+4
1796	movs	r5, #6
1797	movw	r6, #65535
1798	ldrh	r2, [r2]
1799	rsb	r2, r2, r2, lsl #3
1800	asrs	r2, r2, #3
1801	cmp	r0, r2
1802	it	gt
1803	uxthgt	r0, r2
1804	ldr	r2, .L225+8
1805	ldr	r1, [r2]
1806	ldr	r2, .L225+12
1807	subs	r3, r3, r1
1808	asrs	r3, r3, #1
1809	muls	r3, r2, r3
1810	movs	r2, #0
1811	uxth	r3, r3
1812.L220:
1813	uxth	r4, r2
1814	cmp	r0, r4
1815	bls	.L222
1816	mul	r4, r5, r3
1817	adds	r2, r2, #1
1818	ldrh	r4, [r1, r4]
1819	cmp	r4, r6
1820	bne	.L224
1821.L222:
1822	ldr	r2, .L225+16
1823	ldr	r2, [r2]
1824	ldrh	r0, [r2, r3, lsl #1]
1825	pop	{r4, r5, r6, pc}
1826.L224:
1827	mov	r3, r4
1828	b	.L220
1829.L223:
1830	mov	r0, r3
1831	pop	{r4, r5, r6, pc}
1832.L226:
1833	.align	2
1834.L225:
1835	.word	.LANCHOR45
1836	.word	.LANCHOR47
1837	.word	.LANCHOR39
1838	.word	-1431655765
1839	.word	.LANCHOR46
1840	.size	GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
1841	.section	.text.free_data_superblock,"ax",%progbits
1842	.align	1
1843	.global	free_data_superblock
1844	.syntax unified
1845	.thumb
1846	.thumb_func
1847	.fpu softvfp
1848	.type	free_data_superblock, %function
1849free_data_superblock:
1850	@ args = 0, pretend = 0, frame = 0
1851	@ frame_needed = 0, uses_anonymous_args = 0
1852	movw	r2, #65535
1853	push	{r3, lr}
1854	cmp	r0, r2
1855	beq	.L228
1856	ldr	r2, .L229
1857	movs	r1, #0
1858	ldr	r2, [r2]
1859	strh	r1, [r2, r0, lsl #1]	@ movhi
1860	bl	INSERT_FREE_LIST
1861.L228:
1862	movs	r0, #0
1863	pop	{r3, pc}
1864.L230:
1865	.align	2
1866.L229:
1867	.word	.LANCHOR41
1868	.size	free_data_superblock, .-free_data_superblock
1869	.section	.text.get_new_active_ppa,"ax",%progbits
1870	.align	1
1871	.global	get_new_active_ppa
1872	.syntax unified
1873	.thumb
1874	.thumb_func
1875	.fpu softvfp
1876	.type	get_new_active_ppa, %function
1877get_new_active_ppa:
1878	@ args = 0, pretend = 0, frame = 0
1879	@ frame_needed = 0, uses_anonymous_args = 0
1880	ldrh	r2, [r0]
1881	push	{r3, r4, r5, r6, r7, lr}
1882	movw	r3, #65535
1883	mov	r4, r0
1884	cmp	r2, r3
1885	bne	.L232
1886	movw	r2, #2792
1887	ldr	r1, .L246
1888	ldr	r0, .L246+4
1889	bl	printf
1890.L232:
1891	ldr	r6, .L246+8
1892	ldrh	r2, [r4, #2]
1893	ldrh	r3, [r6]
1894	cmp	r2, r3
1895	bne	.L233
1896	movw	r2, #2793
1897	ldr	r1, .L246
1898	ldr	r0, .L246+4
1899	bl	printf
1900.L233:
1901	ldrh	r3, [r4, #4]
1902	cbnz	r3, .L234
1903	movw	r2, #2794
1904	ldr	r1, .L246
1905	ldr	r0, .L246+4
1906	bl	printf
1907.L234:
1908	ldrb	r2, [r4, #6]	@ zero_extendqisi2
1909	movs	r3, #0
1910	strb	r3, [r4, #10]
1911	movw	r5, #65535
1912	adds	r2, r2, #8
1913	ldrh	r0, [r4, r2, lsl #1]
1914	ldr	r2, .L246+12
1915	ldrh	r1, [r2]
1916	mov	r2, r3
1917.L235:
1918	cmp	r0, r5
1919	beq	.L237
1920	ldrh	r5, [r4, #2]
1921	ldrh	r6, [r6]
1922	cmp	r5, r6
1923	bcs	.L241
1924	ldrh	r2, [r4, #4]
1925	orr	r5, r5, r0, lsl #10
1926	ldrb	r3, [r4, #6]	@ zero_extendqisi2
1927	movw	r0, #65535
1928	subs	r2, r2, #1
1929	uxth	r2, r2
1930	strh	r2, [r4, #4]	@ movhi
1931.L240:
1932	adds	r3, r3, #1
1933	uxtb	r3, r3
1934	cmp	r1, r3
1935	itttt	eq
1936	ldrheq	r3, [r4, #2]
1937	addeq	r3, r3, #1
1938	strheq	r3, [r4, #2]	@ movhi
1939	moveq	r3, #0
1940	add	r7, r3, #8
1941	ldrh	r7, [r4, r7, lsl #1]
1942	cmp	r7, r0
1943	beq	.L240
1944	strb	r3, [r4, #6]
1945	ldrh	r3, [r4, #2]
1946	cmp	r3, r6
1947	bne	.L231
1948	cbz	r2, .L231
1949	movw	r2, #2817
1950	ldr	r1, .L246
1951	ldr	r0, .L246+4
1952	bl	printf
1953.L231:
1954	mov	r0, r5
1955	pop	{r3, r4, r5, r6, r7, pc}
1956.L237:
1957	ldrb	r3, [r4, #6]	@ zero_extendqisi2
1958	adds	r3, r3, #1
1959	uxtb	r3, r3
1960	cmp	r3, r1
1961	strb	r3, [r4, #6]
1962	itttt	eq
1963	ldrheq	r3, [r4, #2]
1964	strbeq	r2, [r4, #6]
1965	addeq	r3, r3, #1
1966	strheq	r3, [r4, #2]	@ movhi
1967	ldrb	r3, [r4, #6]	@ zero_extendqisi2
1968	adds	r3, r3, #8
1969	ldrh	r0, [r4, r3, lsl #1]
1970	b	.L235
1971.L241:
1972	movw	r5, #65535
1973	b	.L231
1974.L247:
1975	.align	2
1976.L246:
1977	.word	.LANCHOR60
1978	.word	.LC1
1979	.word	.LANCHOR18
1980	.word	.LANCHOR2
1981	.size	get_new_active_ppa, .-get_new_active_ppa
1982	.section	.text.FtlGcBufInit,"ax",%progbits
1983	.align	1
1984	.global	FtlGcBufInit
1985	.syntax unified
1986	.thumb
1987	.thumb_func
1988	.fpu softvfp
1989	.type	FtlGcBufInit, %function
1990FtlGcBufInit:
1991	@ args = 0, pretend = 0, frame = 8
1992	@ frame_needed = 0, uses_anonymous_args = 0
1993	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
1994	movs	r3, #0
1995	ldr	r1, .L253
1996	mov	fp, #1
1997	ldr	r2, .L253+4
1998	ldr	r5, [r1]
1999	ldr	r1, .L253+8
2000	str	r3, [r2]
2001	ldr	r2, .L253+12
2002	mov	r0, r5
2003	ldr	r1, [r1]
2004	ldrh	r2, [r2]
2005	str	r1, [sp, #4]
2006	ldr	r1, .L253+16
2007	ldrh	r1, [r1]
2008	str	r1, [sp]
2009	ldr	r1, .L253+20
2010	ldr	r10, [r1]
2011	ldr	r1, .L253+24
2012	ldrh	r7, [r1]
2013	ldr	r1, .L253+28
2014	ldr	r4, [r1]
2015	movs	r1, #12
2016	mla	r1, r2, r1, r1
2017	adds	r4, r4, #8
2018	add	r8, r5, r1
2019	mov	r1, r3
2020.L249:
2021	adds	r0, r0, #12
2022	ldr	r6, [sp]
2023	cmp	r0, r8
2024	add	ip, r3, r7
2025	add	r4, r4, #20
2026	add	lr, r1, r6
2027	bne	.L250
2028	ldr	r3, .L253+32
2029	mov	lr, #12
2030	mov	r8, #0
2031	ldr	r0, [r3]
2032	ldr	r3, .L253+8
2033	ldr	r4, [r3]
2034	ldr	r3, .L253+20
2035	ldr	ip, [r3]
2036.L251:
2037	cmp	r2, r0
2038	bcc	.L252
2039	add	sp, sp, #8
2040	@ sp needed
2041	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
2042.L250:
2043	bic	r1, r1, #3
2044	bic	r3, r3, #3
2045	mov	r6, r1
2046	ldr	r1, [sp, #4]
2047	add	r3, r3, r10
2048	str	fp, [r0, #-4]
2049	str	r3, [r0, #-8]
2050	add	r6, r6, r1
2051	mov	r1, lr
2052	str	r6, [r0, #-12]
2053	str	r3, [r4, #-16]
2054	mov	r3, ip
2055	str	r6, [r4, #-20]
2056	b	.L249
2057.L252:
2058	ldr	r3, [sp]
2059	mul	r10, lr, r2
2060	muls	r3, r2, r3
2061	add	r1, r5, r10
2062	str	r8, [r1, #8]
2063	bic	r3, r3, #3
2064	add	r3, r3, r4
2065	str	r3, [r5, r10]
2066	mul	r3, r2, r7
2067	adds	r2, r2, #1
2068	uxth	r2, r2
2069	bic	r3, r3, #3
2070	add	r3, r3, ip
2071	str	r3, [r1, #4]
2072	b	.L251
2073.L254:
2074	.align	2
2075.L253:
2076	.word	.LANCHOR62
2077	.word	.LANCHOR61
2078	.word	.LANCHOR63
2079	.word	.LANCHOR2
2080	.word	.LANCHOR22
2081	.word	.LANCHOR64
2082	.word	.LANCHOR23
2083	.word	.LANCHOR65
2084	.word	.LANCHOR66
2085	.size	FtlGcBufInit, .-FtlGcBufInit
2086	.section	.text.FtlGcBufFree,"ax",%progbits
2087	.align	1
2088	.global	FtlGcBufFree
2089	.syntax unified
2090	.thumb
2091	.thumb_func
2092	.fpu softvfp
2093	.type	FtlGcBufFree, %function
2094FtlGcBufFree:
2095	@ args = 0, pretend = 0, frame = 0
2096	@ frame_needed = 0, uses_anonymous_args = 0
2097	ldr	r3, .L262
2098	mov	ip, #12
2099	push	{r4, r5, r6, r7, r8, r10, fp, lr}
2100	movs	r4, #0
2101	mov	fp, #20
2102	mov	lr, r4
2103	ldr	r7, [r3]
2104	ldr	r3, .L262+4
2105	ldr	r5, [r3]
2106.L256:
2107	uxth	r3, r4
2108	cmp	r1, r3
2109	bls	.L255
2110	mla	r8, fp, r3, r0
2111	movs	r2, #0
2112.L257:
2113	uxth	r3, r2
2114	cmp	r7, r3
2115	bls	.L258
2116	mul	r3, ip, r3
2117	ldr	r6, [r8, #8]
2118	adds	r2, r2, #1
2119	add	r10, r5, r3
2120	ldr	r3, [r5, r3]
2121	cmp	r3, r6
2122	bne	.L257
2123	str	lr, [r10, #8]
2124.L258:
2125	adds	r4, r4, #1
2126	b	.L256
2127.L255:
2128	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
2129.L263:
2130	.align	2
2131.L262:
2132	.word	.LANCHOR66
2133	.word	.LANCHOR62
2134	.size	FtlGcBufFree, .-FtlGcBufFree
2135	.section	.text.FtlGcBufAlloc,"ax",%progbits
2136	.align	1
2137	.global	FtlGcBufAlloc
2138	.syntax unified
2139	.thumb
2140	.thumb_func
2141	.fpu softvfp
2142	.type	FtlGcBufAlloc, %function
2143FtlGcBufAlloc:
2144	@ args = 0, pretend = 0, frame = 0
2145	@ frame_needed = 0, uses_anonymous_args = 0
2146	ldr	r3, .L271
2147	movs	r2, #0
2148	push	{r4, r5, r6, r7, r8, r10, lr}
2149	mov	ip, #12
2150	movs	r7, #1
2151	mov	lr, #20
2152	ldr	r4, [r3]
2153	ldr	r3, .L271+4
2154	ldr	r5, [r3]
2155.L265:
2156	uxth	r8, r2
2157	cmp	r1, r8
2158	bhi	.L269
2159	pop	{r4, r5, r6, r7, r8, r10, pc}
2160.L269:
2161	mov	r10, #0
2162.L266:
2163	uxth	r3, r10
2164	cmp	r4, r3
2165	bls	.L267
2166	mla	r3, ip, r3, r5
2167	add	r10, r10, #1
2168	ldr	r6, [r3, #8]
2169	cmp	r6, #0
2170	bne	.L266
2171	mla	r8, lr, r8, r0
2172	str	r7, [r3, #8]
2173	ldr	r6, [r3]
2174	ldr	r3, [r3, #4]
2175	str	r6, [r8, #8]
2176	str	r3, [r8, #12]
2177.L267:
2178	adds	r2, r2, #1
2179	b	.L265
2180.L272:
2181	.align	2
2182.L271:
2183	.word	.LANCHOR66
2184	.word	.LANCHOR62
2185	.size	FtlGcBufAlloc, .-FtlGcBufAlloc
2186	.section	.text.IsBlkInGcList,"ax",%progbits
2187	.align	1
2188	.global	IsBlkInGcList
2189	.syntax unified
2190	.thumb
2191	.thumb_func
2192	.fpu softvfp
2193	.type	IsBlkInGcList, %function
2194IsBlkInGcList:
2195	@ args = 0, pretend = 0, frame = 0
2196	@ frame_needed = 0, uses_anonymous_args = 0
2197	@ link register save eliminated.
2198	ldr	r3, .L278
2199	ldr	r2, .L278+4
2200	ldr	r3, [r3]
2201	ldrh	r2, [r2]
2202	add	r2, r3, r2, lsl #1
2203.L274:
2204	cmp	r3, r2
2205	bne	.L276
2206	movs	r0, #0
2207	bx	lr
2208.L276:
2209	ldrh	r1, [r3], #2
2210	cmp	r1, r0
2211	bne	.L274
2212	movs	r0, #1
2213	bx	lr
2214.L279:
2215	.align	2
2216.L278:
2217	.word	.LANCHOR67
2218	.word	.LANCHOR68
2219	.size	IsBlkInGcList, .-IsBlkInGcList
2220	.section	.text.FtlGcUpdatePage,"ax",%progbits
2221	.align	1
2222	.global	FtlGcUpdatePage
2223	.syntax unified
2224	.thumb
2225	.thumb_func
2226	.fpu softvfp
2227	.type	FtlGcUpdatePage, %function
2228FtlGcUpdatePage:
2229	@ args = 0, pretend = 0, frame = 0
2230	@ frame_needed = 0, uses_anonymous_args = 0
2231	push	{r3, r4, r5, r6, r7, lr}
2232	mov	r5, r0
2233	ldr	r4, .L284
2234	ubfx	r0, r0, #10, #16
2235	mov	r6, r1
2236	mov	r7, r2
2237	bl	P2V_block_in_plane
2238	ldr	r3, .L284+4
2239	ldrh	r1, [r4]
2240	ldr	r2, [r3]
2241	movs	r3, #0
2242.L281:
2243	uxth	ip, r3
2244	cmp	ip, r1
2245	bcc	.L283
2246	bne	.L282
2247	strh	r0, [r2, ip, lsl #1]	@ movhi
2248	ldrh	r3, [r4]
2249	adds	r3, r3, #1
2250	strh	r3, [r4]	@ movhi
2251	b	.L282
2252.L283:
2253	adds	r3, r3, #1
2254	add	ip, r2, r3, lsl #1
2255	ldrh	ip, [ip, #-2]
2256	cmp	ip, r0
2257	bne	.L281
2258.L282:
2259	ldr	r2, .L284+8
2260	movs	r0, #12
2261	ldr	r1, .L284+12
2262	ldrh	r3, [r2]
2263	ldr	r1, [r1]
2264	muls	r0, r3, r0
2265	adds	r3, r3, #1
2266	adds	r4, r1, r0
2267	str	r6, [r4, #4]
2268	str	r7, [r4, #8]
2269	str	r5, [r1, r0]
2270	strh	r3, [r2]	@ movhi
2271	pop	{r3, r4, r5, r6, r7, pc}
2272.L285:
2273	.align	2
2274.L284:
2275	.word	.LANCHOR68
2276	.word	.LANCHOR67
2277	.word	.LANCHOR69
2278	.word	.LANCHOR70
2279	.size	FtlGcUpdatePage, .-FtlGcUpdatePage
2280	.section	.text.FtlGcRefreshBlock,"ax",%progbits
2281	.align	1
2282	.global	FtlGcRefreshBlock
2283	.syntax unified
2284	.thumb
2285	.thumb_func
2286	.fpu softvfp
2287	.type	FtlGcRefreshBlock, %function
2288FtlGcRefreshBlock:
2289	@ args = 0, pretend = 0, frame = 0
2290	@ frame_needed = 0, uses_anonymous_args = 0
2291	push	{r4, r5, lr}
2292	ldr	r4, .L289
2293	ldrh	r5, [r4]
2294	cmp	r5, r0
2295	beq	.L287
2296	ldr	r3, .L289+4
2297	ldrh	r1, [r3]
2298	cmp	r0, r1
2299	beq	.L287
2300	movw	r2, #65535
2301	cmp	r5, r2
2302	bne	.L288
2303	strh	r0, [r4]	@ movhi
2304.L287:
2305	movs	r0, #0
2306	pop	{r4, r5, pc}
2307.L288:
2308	cmp	r1, r2
2309	it	eq
2310	strheq	r0, [r3]	@ movhi
2311	b	.L287
2312.L290:
2313	.align	2
2314.L289:
2315	.word	.LANCHOR71
2316	.word	.LANCHOR72
2317	.size	FtlGcRefreshBlock, .-FtlGcRefreshBlock
2318	.section	.text.FtlGcMarkBadPhyBlk,"ax",%progbits
2319	.align	1
2320	.global	FtlGcMarkBadPhyBlk
2321	.syntax unified
2322	.thumb
2323	.thumb_func
2324	.fpu softvfp
2325	.type	FtlGcMarkBadPhyBlk, %function
2326FtlGcMarkBadPhyBlk:
2327	@ args = 0, pretend = 0, frame = 0
2328	@ frame_needed = 0, uses_anonymous_args = 0
2329	push	{r3, r4, r5, lr}
2330	mov	r4, r0
2331	bl	P2V_block_in_plane
2332	bl	FtlGcRefreshBlock
2333	ldr	r2, .L295
2334	movs	r1, #0
2335	ldr	r5, .L295+4
2336	ldrh	r3, [r2]
2337.L292:
2338	uxth	r0, r1
2339	cmp	r3, r0
2340	bhi	.L294
2341	cmp	r3, #15
2342	itttt	ls
2343	addls	r1, r3, #1
2344	strhls	r1, [r2]	@ movhi
2345	ldrls	r2, .L295+4
2346	strhls	r4, [r2, r3, lsl #1]	@ movhi
2347	b	.L293
2348.L294:
2349	adds	r1, r1, #1
2350	add	r0, r5, r1, lsl #1
2351	ldrh	r0, [r0, #-2]
2352	cmp	r0, r4
2353	bne	.L292
2354.L293:
2355	movs	r0, #0
2356	pop	{r3, r4, r5, pc}
2357.L296:
2358	.align	2
2359.L295:
2360	.word	.LANCHOR73
2361	.word	.LANCHOR74
2362	.size	FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
2363	.section	.text.FtlGcReFreshBadBlk,"ax",%progbits
2364	.align	1
2365	.global	FtlGcReFreshBadBlk
2366	.syntax unified
2367	.thumb
2368	.thumb_func
2369	.fpu softvfp
2370	.type	FtlGcReFreshBadBlk, %function
2371FtlGcReFreshBadBlk:
2372	@ args = 0, pretend = 0, frame = 0
2373	@ frame_needed = 0, uses_anonymous_args = 0
2374	ldr	r3, .L303
2375	push	{r4, lr}
2376	ldrh	r3, [r3]
2377	cbz	r3, .L298
2378	ldr	r2, .L303+4
2379	ldrh	r1, [r2]
2380	movw	r2, #65535
2381	cmp	r1, r2
2382	bne	.L298
2383	ldr	r4, .L303+8
2384	ldrh	r2, [r4]
2385	cmp	r2, r3
2386	itt	cs
2387	movcs	r3, #0
2388	strhcs	r3, [r4]	@ movhi
2389	ldr	r3, .L303+12
2390	ldrh	r2, [r4]
2391	ldrh	r0, [r3, r2, lsl #1]
2392	bl	P2V_block_in_plane
2393	bl	FtlGcRefreshBlock
2394	ldrh	r3, [r4]
2395	adds	r3, r3, #1
2396	strh	r3, [r4]	@ movhi
2397.L298:
2398	movs	r0, #0
2399	pop	{r4, pc}
2400.L304:
2401	.align	2
2402.L303:
2403	.word	.LANCHOR73
2404	.word	.LANCHOR71
2405	.word	.LANCHOR75
2406	.word	.LANCHOR74
2407	.size	FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
2408	.section	.text.ftl_malloc,"ax",%progbits
2409	.align	1
2410	.global	ftl_malloc
2411	.syntax unified
2412	.thumb
2413	.thumb_func
2414	.fpu softvfp
2415	.type	ftl_malloc, %function
2416ftl_malloc:
2417	@ args = 0, pretend = 0, frame = 0
2418	@ frame_needed = 0, uses_anonymous_args = 0
2419	@ link register save eliminated.
2420	movs	r1, #0
2421	b	kmalloc
2422	.size	ftl_malloc, .-ftl_malloc
2423	.section	.text.ftl_free,"ax",%progbits
2424	.align	1
2425	.global	ftl_free
2426	.syntax unified
2427	.thumb
2428	.thumb_func
2429	.fpu softvfp
2430	.type	ftl_free, %function
2431ftl_free:
2432	@ args = 0, pretend = 0, frame = 0
2433	@ frame_needed = 0, uses_anonymous_args = 0
2434	@ link register save eliminated.
2435	b	free
2436	.size	ftl_free, .-ftl_free
2437	.section	.text.rknand_print_hex,"ax",%progbits
2438	.align	1
2439	.global	rknand_print_hex
2440	.syntax unified
2441	.thumb
2442	.thumb_func
2443	.fpu softvfp
2444	.type	rknand_print_hex, %function
2445rknand_print_hex:
2446	@ args = 0, pretend = 0, frame = 0
2447	@ frame_needed = 0, uses_anonymous_args = 0
2448	push	{r4, r5, r6, r7, r8, r10, fp, lr}
2449	movs	r6, #0
2450	mov	fp, r0
2451	mov	r7, r1
2452	mov	r8, r2
2453	mov	r10, r3
2454	mov	r5, r6
2455	mov	r4, r6
2456.L308:
2457	cmp	r4, r10
2458	bcc	.L314
2459	ldr	r0, .L317
2460	pop	{r4, r5, r6, r7, r8, r10, fp, lr}
2461	b	printf
2462.L314:
2463	cbnz	r5, .L309
2464	mov	r2, r6
2465	mov	r1, fp
2466	ldr	r0, .L317+4
2467	bl	printf
2468.L309:
2469	cmp	r8, #4
2470	bne	.L310
2471	ldr	r1, [r7, r4, lsl #2]
2472.L316:
2473	ldr	r0, .L317+8
2474.L315:
2475	adds	r5, r5, #1
2476	bl	printf
2477	cmp	r5, #15
2478	bls	.L313
2479	movs	r5, #0
2480	ldr	r0, .L317
2481	bl	printf
2482.L313:
2483	adds	r4, r4, #1
2484	add	r6, r6, r8
2485	b	.L308
2486.L310:
2487	cmp	r8, #2
2488	bne	.L312
2489	ldrh	r1, [r7, r4, lsl #1]
2490	b	.L316
2491.L312:
2492	ldrb	r1, [r7, r4]	@ zero_extendqisi2
2493	ldr	r0, .L317+12
2494	b	.L315
2495.L318:
2496	.align	2
2497.L317:
2498	.word	.LC5
2499	.word	.LC2
2500	.word	.LC3
2501	.word	.LC4
2502	.size	rknand_print_hex, .-rknand_print_hex
2503	.section	.text.FlashEraseBlocks,"ax",%progbits
2504	.align	1
2505	.global	FlashEraseBlocks
2506	.syntax unified
2507	.thumb
2508	.thumb_func
2509	.fpu softvfp
2510	.type	FlashEraseBlocks, %function
2511FlashEraseBlocks:
2512	@ args = 0, pretend = 0, frame = 16
2513	@ frame_needed = 0, uses_anonymous_args = 0
2514	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
2515	mov	r4, r0
2516	ldr	r6, .L335
2517	add	r8, r0, #4
2518	movs	r7, #0
2519	ldr	fp, .L335+20
2520	ldrh	r10, [r6, #12]
2521	str	r2, [sp]
2522	lsl	r3, r10, #3
2523	str	r3, [sp, #4]
2524.L320:
2525	ldr	r3, [sp]
2526	cmp	r7, r3
2527	beq	.L334
2528	add	r2, sp, #8
2529	add	r1, sp, #12
2530	ldr	r0, [r8]
2531	bl	l2p_addr_tran.isra.0
2532	ldr	r5, [sp, #8]
2533	cbnz	r5, .L321
2534	ldr	r2, [sp, #12]
2535	ldr	r3, [sp, #4]
2536	cmp	r3, r2
2537	bls	.L321
2538	ldr	r6, .L335+4
2539	ldr	r7, .L335+8
2540.L322:
2541	ldr	r3, [sp]
2542	adds	r4, r4, #20
2543	cmp	r5, r3
2544	bne	.L323
2545.L334:
2546	movs	r0, #0
2547	add	sp, sp, #16
2548	@ sp needed
2549	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
2550.L323:
2551	mov	r3, #-1
2552	ldr	r2, [sp, #12]
2553	str	r3, [r4, #-20]
2554	mov	r1, r6
2555	mov	r0, r7
2556	adds	r5, r5, #1
2557	bl	printf
2558	movs	r3, #16
2559	movs	r2, #4
2560	ldr	r1, [r4, #-12]
2561	ldr	r0, .L335+12
2562	bl	rknand_print_hex
2563	movs	r3, #4
2564	ldr	r1, [r4, #-8]
2565	mov	r2, r3
2566	ldr	r0, .L335+16
2567	bl	rknand_print_hex
2568	b	.L322
2569.L321:
2570	ldr	r2, [fp, #4]
2571	uxtb	r0, r5
2572	ldr	r1, [sp, #12]
2573	blx	r2
2574	cbnz	r0, .L324
2575	str	r0, [r8, #-4]
2576.L325:
2577	ldrh	r2, [r6, #14]
2578	cmp	r2, #4
2579	bne	.L327
2580	ldr	r1, [sp, #12]
2581	ldr	r2, [fp, #4]
2582	ldrb	r0, [sp, #8]	@ zero_extendqisi2
2583	add	r1, r1, r10
2584	blx	r2
2585	cbz	r0, .L327
2586	mov	r2, #-1
2587	str	r2, [r8, #-4]
2588.L327:
2589	adds	r7, r7, #1
2590	add	r8, r8, #20
2591	b	.L320
2592.L324:
2593	mov	r2, #-1
2594	str	r2, [r8, #-4]
2595	b	.L325
2596.L336:
2597	.align	2
2598.L335:
2599	.word	.LANCHOR0
2600	.word	.LANCHOR76
2601	.word	.LC6
2602	.word	.LC7
2603	.word	.LC8
2604	.word	.LANCHOR77
2605	.size	FlashEraseBlocks, .-FlashEraseBlocks
2606	.section	.text.FtlFreeSysBlkQueueIn,"ax",%progbits
2607	.align	1
2608	.global	FtlFreeSysBlkQueueIn
2609	.syntax unified
2610	.thumb
2611	.thumb_func
2612	.fpu softvfp
2613	.type	FtlFreeSysBlkQueueIn, %function
2614FtlFreeSysBlkQueueIn:
2615	@ args = 0, pretend = 0, frame = 0
2616	@ frame_needed = 0, uses_anonymous_args = 0
2617	subs	r3, r0, #1
2618	movw	r2, #65533
2619	uxth	r3, r3
2620	push	{r4, r5, r6, lr}
2621	mov	r5, r0
2622	cmp	r3, r2
2623	bhi	.L337
2624	ldr	r4, .L346
2625	ldrh	r3, [r4, #6]
2626	cmp	r3, #1024
2627	beq	.L337
2628	cbz	r1, .L339
2629	bl	P2V_block_in_plane
2630	ldr	r3, .L346+4
2631	mov	r6, r0
2632	movs	r2, #1
2633	mov	r1, r2
2634	ldr	r0, [r3]
2635	lsls	r3, r5, #10
2636	str	r3, [r0, #4]
2637	bl	FlashEraseBlocks
2638	ldr	r3, .L346+8
2639	ldr	r2, [r3]
2640	ldrh	r3, [r2, r6, lsl #1]
2641	adds	r3, r3, #1
2642	strh	r3, [r2, r6, lsl #1]	@ movhi
2643	ldr	r2, .L346+12
2644	ldr	r3, [r2]
2645	adds	r3, r3, #1
2646	str	r3, [r2]
2647.L339:
2648	ldrh	r3, [r4, #6]
2649	adds	r3, r3, #1
2650	strh	r3, [r4, #6]	@ movhi
2651	ldrh	r3, [r4, #4]
2652	adds	r2, r3, #4
2653	adds	r3, r3, #1
2654	ubfx	r3, r3, #0, #10
2655	strh	r5, [r4, r2, lsl #1]	@ movhi
2656	strh	r3, [r4, #4]	@ movhi
2657.L337:
2658	pop	{r4, r5, r6, pc}
2659.L347:
2660	.align	2
2661.L346:
2662	.word	.LANCHOR37
2663	.word	.LANCHOR78
2664	.word	.LANCHOR46
2665	.word	.LANCHOR79
2666	.size	FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
2667	.section	.text.FtlFreeSysBlkQueueOut,"ax",%progbits
2668	.align	1
2669	.global	FtlFreeSysBlkQueueOut
2670	.syntax unified
2671	.thumb
2672	.thumb_func
2673	.fpu softvfp
2674	.type	FtlFreeSysBlkQueueOut, %function
2675FtlFreeSysBlkQueueOut:
2676	@ args = 0, pretend = 0, frame = 0
2677	@ frame_needed = 0, uses_anonymous_args = 0
2678	push	{r3, r4, r5, lr}
2679	ldr	r4, .L353
2680	ldrh	r2, [r4, #6]
2681	cbz	r2, .L352
2682	ldrh	r3, [r4, #2]
2683	subs	r2, r2, #1
2684	strh	r2, [r4, #6]	@ movhi
2685	movs	r2, #1
2686	adds	r1, r3, #4
2687	adds	r3, r3, #1
2688	ubfx	r3, r3, #0, #10
2689	ldrh	r5, [r4, r1, lsl #1]
2690	strh	r3, [r4, #2]	@ movhi
2691	mov	r1, r2
2692	ldr	r3, .L353+4
2693	ldr	r0, [r3]
2694	lsls	r3, r5, #10
2695	str	r3, [r0, #4]
2696	bl	FlashEraseBlocks
2697	ldr	r2, .L353+8
2698	ldr	r3, [r2]
2699	adds	r3, r3, #1
2700	str	r3, [r2]
2701.L349:
2702	subs	r3, r5, #1
2703	movw	r2, #65533
2704	uxth	r3, r3
2705	cmp	r3, r2
2706	bls	.L350
2707	ldrh	r2, [r4, #6]
2708	mov	r1, r5
2709	ldr	r0, .L353+12
2710	bl	printf
2711.L351:
2712	b	.L351
2713.L352:
2714	movw	r5, #65535
2715	b	.L349
2716.L350:
2717	mov	r0, r5
2718	pop	{r3, r4, r5, pc}
2719.L354:
2720	.align	2
2721.L353:
2722	.word	.LANCHOR37
2723	.word	.LANCHOR78
2724	.word	.LANCHOR79
2725	.word	.LC9
2726	.size	FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
2727	.section	.text.ftl_map_blk_alloc_new_blk,"ax",%progbits
2728	.align	1
2729	.global	ftl_map_blk_alloc_new_blk
2730	.syntax unified
2731	.thumb
2732	.thumb_func
2733	.fpu softvfp
2734	.type	ftl_map_blk_alloc_new_blk, %function
2735ftl_map_blk_alloc_new_blk:
2736	@ args = 0, pretend = 0, frame = 0
2737	@ frame_needed = 0, uses_anonymous_args = 0
2738	ldrh	r1, [r0, #10]
2739	ldr	r2, [r0, #12]
2740	push	{r3, r4, r5, r6, r7, lr}
2741	mov	r4, r0
2742	movs	r3, #0
2743.L356:
2744	uxth	r5, r3
2745	cmp	r5, r1
2746	bcs	.L359
2747	mov	r7, r2
2748	adds	r3, r3, #1
2749	ldrh	r6, [r7]
2750	adds	r2, r2, #2
2751	cmp	r6, #0
2752	bne	.L356
2753	bl	FtlFreeSysBlkQueueOut
2754	subs	r3, r0, #1
2755	movw	r2, #65533
2756	uxth	r3, r3
2757	mov	r1, r0
2758	strh	r0, [r7]	@ movhi
2759	cmp	r3, r2
2760	bls	.L357
2761	ldr	r3, .L363
2762	ldr	r0, .L363+4
2763	ldrh	r2, [r3, #6]
2764	bl	printf
2765.L358:
2766	b	.L358
2767.L357:
2768	ldr	r3, [r4, #28]
2769	strh	r6, [r4, #2]	@ movhi
2770	strh	r5, [r4]	@ movhi
2771	adds	r3, r3, #1
2772	str	r3, [r4, #28]
2773	ldrh	r3, [r4, #8]
2774	adds	r3, r3, #1
2775	strh	r3, [r4, #8]	@ movhi
2776.L359:
2777	ldrh	r3, [r4, #10]
2778	cmp	r3, r5
2779	bhi	.L361
2780	movw	r2, #578
2781	ldr	r1, .L363+8
2782	ldr	r0, .L363+12
2783	bl	printf
2784.L361:
2785	movs	r0, #0
2786	pop	{r3, r4, r5, r6, r7, pc}
2787.L364:
2788	.align	2
2789.L363:
2790	.word	.LANCHOR37
2791	.word	.LC10
2792	.word	.LANCHOR80
2793	.word	.LC1
2794	.size	ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
2795	.section	.text.ftl_memset,"ax",%progbits
2796	.align	1
2797	.global	ftl_memset
2798	.syntax unified
2799	.thumb
2800	.thumb_func
2801	.fpu softvfp
2802	.type	ftl_memset, %function
2803ftl_memset:
2804	@ args = 0, pretend = 0, frame = 0
2805	@ frame_needed = 0, uses_anonymous_args = 0
2806	@ link register save eliminated.
2807	b	memset
2808	.size	ftl_memset, .-ftl_memset
2809	.section	.text.FtlMemInit,"ax",%progbits
2810	.align	1
2811	.global	FtlMemInit
2812	.syntax unified
2813	.thumb
2814	.thumb_func
2815	.fpu softvfp
2816	.type	FtlMemInit, %function
2817FtlMemInit:
2818	@ args = 0, pretend = 0, frame = 0
2819	@ frame_needed = 0, uses_anonymous_args = 0
2820	ldr	r3, .L371
2821	push	{r4, r5, r6, r7, r8, r10, fp, lr}
2822	movs	r4, #0
2823	ldr	r2, .L371+4
2824	movs	r6, #12
2825	str	r4, [r3]
2826	ldr	r3, .L371+8
2827	ldr	r5, .L371+12
2828	ldr	r10, .L371+292
2829	str	r4, [r3]
2830	ldr	r3, .L371+16
2831	ldrh	r0, [r5]
2832	ldr	r8, .L371+296
2833	str	r4, [r3]
2834	ldr	r3, .L371+20
2835	lsls	r0, r0, #1
2836	ldr	fp, .L371+300
2837	str	r4, [r3]
2838	ldr	r3, .L371+24
2839	str	r4, [r3]
2840	ldr	r3, .L371+28
2841	str	r4, [r3]
2842	ldr	r3, .L371+32
2843	str	r4, [r3]
2844	ldr	r3, .L371+36
2845	str	r4, [r3]
2846	ldr	r3, .L371+40
2847	str	r4, [r3]
2848	ldr	r3, .L371+44
2849	str	r4, [r3]
2850	ldr	r3, .L371+48
2851	str	r4, [r3]
2852	ldr	r3, .L371+52
2853	str	r4, [r3]
2854	ldr	r3, .L371+56
2855	str	r4, [r3]
2856	ldr	r3, .L371+60
2857	str	r4, [r3]
2858	ldr	r3, .L371+64
2859	str	r4, [r3]
2860	movw	r3, #65535
2861	str	r3, [r2]
2862	ldr	r2, .L371+68
2863	str	r4, [r2]
2864	ldr	r2, .L371+72
2865	str	r4, [r2]
2866	ldr	r2, .L371+76
2867	str	r4, [r2]
2868	ldr	r2, .L371+80
2869	strh	r3, [r2]	@ movhi
2870	ldr	r2, .L371+84
2871	strh	r3, [r2]	@ movhi
2872	movs	r2, #32
2873	ldr	r3, .L371+88
2874	strh	r2, [r3]	@ movhi
2875	movs	r2, #128
2876	ldr	r3, .L371+92
2877	strh	r2, [r3]	@ movhi
2878	ldr	r3, .L371+96
2879	strh	r4, [r3]	@ movhi
2880	ldr	r3, .L371+100
2881	strh	r4, [r3]	@ movhi
2882	ldr	r3, .L371+104
2883	strh	r4, [r3]	@ movhi
2884	bl	ftl_malloc
2885	ldr	r3, .L371+108
2886	str	r0, [r3]
2887	ldrh	r0, [r5]
2888	movs	r5, #20
2889	muls	r0, r6, r0
2890	bl	ftl_malloc
2891	ldr	r3, .L371+112
2892	str	r0, [r3]
2893	ldrh	r3, [r10]
2894	muls	r5, r3, r5
2895	lsls	r7, r5, #2
2896	mov	r0, r7
2897	bl	ftl_malloc
2898	ldr	r3, .L371+116
2899	str	r0, [r3]
2900	mov	r0, r5
2901	bl	ftl_malloc
2902	ldr	r3, .L371+120
2903	str	r0, [r3]
2904	mov	r0, r7
2905	bl	ftl_malloc
2906	ldr	r3, .L371+124
2907	ldr	r7, .L371+128
2908	str	r0, [r3]
2909	mov	r0, r5
2910	bl	ftl_malloc
2911	ldr	r3, .L371+132
2912	str	r0, [r3]
2913	mov	r0, r5
2914	bl	ftl_malloc
2915	ldr	r3, .L371+136
2916	ldrh	r5, [r7]
2917	str	r0, [r3]
2918	ldrh	r3, [r10]
2919	mov	r0, r5
2920	lsls	r3, r3, #1
2921	adds	r3, r3, #1
2922	str	r3, [r8]
2923	bl	ftl_malloc
2924	ldr	r3, .L371+140
2925	str	r0, [r3]
2926	mov	r0, r5
2927	bl	ftl_malloc
2928	ldr	r3, .L371+144
2929	str	r0, [r3]
2930	mov	r0, r5
2931	bl	ftl_malloc
2932	ldr	r3, .L371+148
2933	str	r0, [r3]
2934	ldr	r0, [r8]
2935	muls	r0, r5, r0
2936	bl	ftl_malloc
2937	ldr	r3, .L371+152
2938	str	r0, [r3]
2939	mov	r0, r5
2940	bl	ftl_malloc
2941	ldr	r3, .L371+156
2942	str	r0, [r3]
2943	mov	r0, r5
2944	bl	ftl_malloc
2945	ldr	r3, .L371+160
2946	str	r0, [r3]
2947	ldr	r0, [r8]
2948	muls	r0, r6, r0
2949	bl	ftl_malloc
2950	ldr	r3, .L371+164
2951	str	r0, [r3]
2952	mov	r0, r5
2953	bl	ftl_malloc
2954	ldr	r3, .L371+168
2955	str	r0, [r3]
2956	mov	r0, r5
2957	bl	ftl_malloc
2958	ldr	r3, .L371+172
2959	str	r0, [r3]
2960	ldr	r3, .L371+176
2961	ldrh	r0, [r3]
2962	lsls	r0, r0, #2
2963	bl	ftl_malloc
2964	ldr	r3, .L371+180
2965	ldrh	r5, [r10]
2966	ldr	r10, .L371+304
2967	str	r0, [r3]
2968	ldrh	r3, [fp]
2969	muls	r5, r3, r5
2970	mov	r0, r5
2971	bl	ftl_malloc
2972	ldr	r3, .L371+184
2973	str	r0, [r3]
2974	lsls	r0, r5, #2
2975	ldr	r5, .L371+188
2976	bl	ftl_malloc
2977	ldr	r3, .L371+192
2978	str	r0, [r3]
2979	ldrh	r3, [fp]
2980	ldr	r0, [r8]
2981	ldr	r8, .L371+308
2982	muls	r0, r3, r0
2983	bl	ftl_malloc
2984	ldr	r3, .L371+196
2985	str	r0, [r3]
2986	ldrh	r0, [r5]
2987	lsls	r0, r0, #1
2988	uxth	r0, r0
2989	strh	r0, [r8]	@ movhi
2990	bl	ftl_malloc
2991	ldr	r3, .L371+200
2992	str	r0, [r3]
2993	ldrh	r3, [r8]
2994	ldr	r0, .L371+204
2995	addw	r3, r3, #547
2996	lsrs	r3, r3, #9
2997	and	r0, r0, r3, lsl #9
2998	strh	r3, [r8]	@ movhi
2999	bl	ftl_malloc
3000	ldr	r3, .L371+208
3001	str	r0, [r3]
3002	adds	r0, r0, #32
3003	ldr	r3, .L371+212
3004	str	r0, [r3]
3005	ldrh	r0, [r5]
3006	lsls	r0, r0, #1
3007	bl	ftl_malloc
3008	ldr	r3, .L371+216
3009	str	r0, [r3]
3010	ldr	r3, [r10]
3011	lsl	r8, r3, #1
3012	mov	r0, r8
3013	bl	ftl_malloc
3014	ldr	r3, .L371+220
3015	str	r0, [r3]
3016	mov	r0, r8
3017	bl	ftl_malloc
3018	ldr	r8, .L371+312
3019	ldr	r3, .L371+224
3020	str	r0, [r3]
3021	ldrh	r0, [r8]
3022	lsls	r0, r0, #1
3023	bl	ftl_malloc
3024	ldr	r3, .L371+228
3025	str	r0, [r3]
3026	ldrh	r0, [r8]
3027	lsls	r0, r0, #1
3028	bl	ftl_malloc
3029	ldr	r3, .L371+232
3030	str	r0, [r3]
3031	ldrh	r0, [r8]
3032	ldr	r8, .L371+316
3033	lsls	r0, r0, #2
3034	bl	ftl_malloc
3035	ldr	r3, .L371+236
3036	str	r0, [r3]
3037	ldrh	r0, [r8]
3038	lsls	r0, r0, #2
3039	bl	ftl_malloc
3040	ldrh	r2, [r8]
3041	mov	r1, r4
3042	ldr	r3, .L371+240
3043	ldr	r4, .L371+244
3044	lsls	r2, r2, #2
3045	str	r0, [r3]
3046	bl	ftl_memset
3047	ldr	r3, .L371+248
3048	ldrh	r0, [r3]
3049	lsls	r0, r0, #2
3050	bl	ftl_malloc
3051	ldr	r3, .L371+252
3052	str	r0, [r3]
3053	ldr	r0, [r10]
3054	lsls	r0, r0, #2
3055	bl	ftl_malloc
3056	ldr	r3, .L371+256
3057	str	r0, [r3]
3058	ldrh	r0, [r4]
3059	muls	r0, r6, r0
3060	ldr	r6, .L371+260
3061	bl	ftl_malloc
3062	ldr	r3, .L371+264
3063	str	r0, [r3]
3064	ldrh	r3, [r4]
3065	ldrh	r0, [r7]
3066	muls	r0, r3, r0
3067	bl	ftl_malloc
3068	ldr	r3, .L371+268
3069	str	r0, [r3]
3070	movs	r0, #6
3071	ldrh	r3, [r5]
3072	ldr	r5, .L371+272
3073	muls	r0, r3, r0
3074	bl	ftl_malloc
3075	ldr	r3, .L371+276
3076	str	r0, [r3]
3077	ldr	r3, .L371+280
3078	ldrh	r0, [r3]
3079	ldrh	r3, [r6]
3080	adds	r0, r0, #31
3081	asrs	r0, r0, #5
3082	strh	r0, [r5]	@ movhi
3083	muls	r0, r3, r0
3084	lsls	r0, r0, #2
3085	bl	ftl_malloc
3086	ldrh	r1, [r5]
3087	movs	r2, #1
3088	ldr	r3, .L371+284
3089	ldrh	r6, [r6]
3090	lsls	r1, r1, #2
3091	mov	r4, r3
3092	str	r0, [r4, #28]!
3093	mov	r0, r1
3094.L367:
3095	cmp	r2, r6
3096	bcc	.L368
3097	add	r3, r3, r2, lsl #2
3098	ldr	r2, .L371+288
3099	movs	r1, #0
3100	adds	r3, r3, #24
3101.L369:
3102	cmp	r3, r2
3103	bne	.L370
3104	movs	r0, #0
3105	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
3106.L372:
3107	.align	2
3108.L371:
3109	.word	.LANCHOR81
3110	.word	.LANCHOR95
3111	.word	.LANCHOR82
3112	.word	.LANCHOR20
3113	.word	.LANCHOR83
3114	.word	.LANCHOR84
3115	.word	.LANCHOR85
3116	.word	.LANCHOR86
3117	.word	.LANCHOR87
3118	.word	.LANCHOR88
3119	.word	.LANCHOR89
3120	.word	.LANCHOR90
3121	.word	.LANCHOR79
3122	.word	.LANCHOR91
3123	.word	.LANCHOR92
3124	.word	.LANCHOR93
3125	.word	.LANCHOR94
3126	.word	.LANCHOR96
3127	.word	.LANCHOR97
3128	.word	.LANCHOR98
3129	.word	.LANCHOR71
3130	.word	.LANCHOR72
3131	.word	.LANCHOR99
3132	.word	.LANCHOR100
3133	.word	.LANCHOR101
3134	.word	.LANCHOR73
3135	.word	.LANCHOR75
3136	.word	.LANCHOR67
3137	.word	.LANCHOR70
3138	.word	.LANCHOR102
3139	.word	.LANCHOR103
3140	.word	.LANCHOR104
3141	.word	.LANCHOR22
3142	.word	.LANCHOR78
3143	.word	.LANCHOR65
3144	.word	.LANCHOR105
3145	.word	.LANCHOR106
3146	.word	.LANCHOR107
3147	.word	.LANCHOR63
3148	.word	.LANCHOR108
3149	.word	.LANCHOR109
3150	.word	.LANCHOR62
3151	.word	.LANCHOR110
3152	.word	.LANCHOR111
3153	.word	.LANCHOR11
3154	.word	.LANCHOR112
3155	.word	.LANCHOR113
3156	.word	.LANCHOR5
3157	.word	.LANCHOR114
3158	.word	.LANCHOR64
3159	.word	.LANCHOR116
3160	.word	33553920
3161	.word	.LANCHOR117
3162	.word	.LANCHOR46
3163	.word	.LANCHOR41
3164	.word	.LANCHOR118
3165	.word	.LANCHOR119
3166	.word	.LANCHOR35
3167	.word	.LANCHOR120
3168	.word	.LANCHOR121
3169	.word	.LANCHOR122
3170	.word	.LANCHOR32
3171	.word	.LANCHOR31
3172	.word	.LANCHOR123
3173	.word	.LANCHOR124
3174	.word	.LANCHOR9
3175	.word	.LANCHOR54
3176	.word	.LANCHOR125
3177	.word	.LANCHOR126
3178	.word	.LANCHOR39
3179	.word	.LANCHOR16
3180	.word	.LANCHOR36
3181	.word	.LANCHOR36+56
3182	.word	.LANCHOR2
3183	.word	.LANCHOR66
3184	.word	.LANCHOR23
3185	.word	.LANCHOR29
3186	.word	.LANCHOR115
3187	.word	.LANCHOR26
3188	.word	.LANCHOR27
3189.L368:
3190	ldr	r5, [r3, #28]
3191	adds	r2, r2, #1
3192	add	r5, r5, r0
3193	add	r0, r0, r1
3194	str	r5, [r4, #4]!
3195	b	.L367
3196.L370:
3197	str	r1, [r3, #4]!
3198	b	.L369
3199	.size	FtlMemInit, .-FtlMemInit
3200	.section	.text.FtlBbt2Bitmap,"ax",%progbits
3201	.align	1
3202	.global	FtlBbt2Bitmap
3203	.syntax unified
3204	.thumb
3205	.thumb_func
3206	.fpu softvfp
3207	.type	FtlBbt2Bitmap, %function
3208FtlBbt2Bitmap:
3209	@ args = 0, pretend = 0, frame = 0
3210	@ frame_needed = 0, uses_anonymous_args = 0
3211	ldr	r3, .L379
3212	push	{r4, r5, r6, r7, r8, lr}
3213	mov	r5, r0
3214	ldr	r7, .L379+4
3215	mov	r6, r1
3216	subs	r4, r5, #2
3217	addw	r5, r5, #1022
3218	ldrh	r2, [r3]
3219	movs	r1, #0
3220	ldr	r8, .L379+12
3221	mov	r0, r6
3222	lsls	r2, r2, #2
3223	bl	ftl_memset
3224.L376:
3225	ldrh	r3, [r4, #2]
3226	movw	r2, #65535
3227	cmp	r3, r2
3228	beq	.L373
3229	ldrh	r2, [r7]
3230	cmp	r2, r3
3231	bhi	.L375
3232	movs	r2, #74
3233	mov	r1, r8
3234	ldr	r0, .L379+8
3235	bl	printf
3236.L375:
3237	ldrh	r3, [r4, #2]!
3238	movs	r2, #1
3239	cmp	r5, r4
3240	lsr	r1, r3, #5
3241	and	r3, r3, #31
3242	lsl	r3, r2, r3
3243	ldr	r2, [r6, r1, lsl #2]
3244	orr	r2, r2, r3
3245	str	r2, [r6, r1, lsl #2]
3246	bne	.L376
3247.L373:
3248	pop	{r4, r5, r6, r7, r8, pc}
3249.L380:
3250	.align	2
3251.L379:
3252	.word	.LANCHOR126
3253	.word	.LANCHOR16
3254	.word	.LC1
3255	.word	.LANCHOR127
3256	.size	FtlBbt2Bitmap, .-FtlBbt2Bitmap
3257	.section	.text.FtlBbtMemInit,"ax",%progbits
3258	.align	1
3259	.global	FtlBbtMemInit
3260	.syntax unified
3261	.thumb
3262	.thumb_func
3263	.fpu softvfp
3264	.type	FtlBbtMemInit, %function
3265FtlBbtMemInit:
3266	@ args = 0, pretend = 0, frame = 0
3267	@ frame_needed = 0, uses_anonymous_args = 0
3268	@ link register save eliminated.
3269	ldr	r0, .L382
3270	movw	r3, #65535
3271	movs	r2, #16
3272	movs	r1, #255
3273	strh	r3, [r0]	@ movhi
3274	movs	r3, #0
3275	strh	r3, [r0, #6]	@ movhi
3276	adds	r0, r0, #12
3277	b	ftl_memset
3278.L383:
3279	.align	2
3280.L382:
3281	.word	.LANCHOR36
3282	.size	FtlBbtMemInit, .-FtlBbtMemInit
3283	.section	.text.FtlFreeSysBlkQueueInit,"ax",%progbits
3284	.align	1
3285	.global	FtlFreeSysBlkQueueInit
3286	.syntax unified
3287	.thumb
3288	.thumb_func
3289	.fpu softvfp
3290	.type	FtlFreeSysBlkQueueInit, %function
3291FtlFreeSysBlkQueueInit:
3292	@ args = 0, pretend = 0, frame = 0
3293	@ frame_needed = 0, uses_anonymous_args = 0
3294	ldr	r3, .L385
3295	mov	r2, #2048
3296	push	{r4, lr}
3297	movs	r4, #0
3298	mov	r1, r4
3299	strh	r4, [r3, #2]	@ movhi
3300	strh	r4, [r3, #4]	@ movhi
3301	strh	r4, [r3, #6]	@ movhi
3302	strh	r0, [r3], #8	@ movhi
3303	mov	r0, r3
3304	bl	ftl_memset
3305	mov	r0, r4
3306	pop	{r4, pc}
3307.L386:
3308	.align	2
3309.L385:
3310	.word	.LANCHOR37
3311	.size	FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
3312	.section	.text.ftl_free_no_use_map_blk,"ax",%progbits
3313	.align	1
3314	.global	ftl_free_no_use_map_blk
3315	.syntax unified
3316	.thumb
3317	.thumb_func
3318	.fpu softvfp
3319	.type	ftl_free_no_use_map_blk, %function
3320ftl_free_no_use_map_blk:
3321	@ args = 0, pretend = 0, frame = 8
3322	@ frame_needed = 0, uses_anonymous_args = 0
3323	ldrh	r2, [r0, #10]
3324	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
3325	mov	r4, r0
3326	ldr	r5, [r0, #20]
3327	movs	r1, #0
3328	ldr	r7, [r0, #12]
3329	lsls	r2, r2, #1
3330	ldr	r6, [r0, #24]
3331	mov	r0, r5
3332	bl	ftl_memset
3333	movs	r3, #0
3334.L388:
3335	ldrh	r1, [r4, #6]
3336	uxth	r2, r3
3337	cmp	r1, r2
3338	bhi	.L392
3339	ldr	r3, .L407
3340	movs	r6, #0
3341	mov	r10, r6
3342	ldrh	r2, [r3]
3343	ldrh	r3, [r4]
3344	strh	r2, [r5, r3, lsl #1]	@ movhi
3345	mov	r2, r6
3346	ldrh	fp, [r5]
3347.L393:
3348	ldrh	r3, [r4, #10]
3349	uxth	ip, r6
3350	cmp	r3, ip
3351	bhi	.L397
3352	mov	r0, r10
3353	add	sp, sp, #8
3354	@ sp needed
3355	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
3356.L392:
3357	uxth	r2, r3
3358	ldr	r1, [r6, r2, lsl #2]
3359	movs	r2, #0
3360	ubfx	r1, r1, #10, #16
3361.L389:
3362	ldrh	ip, [r4, #10]
3363	uxth	r0, r2
3364	cmp	ip, r0
3365	bhi	.L391
3366	adds	r3, r3, #1
3367	b	.L388
3368.L391:
3369	uxth	r0, r2
3370	ldrh	ip, [r7, r0, lsl #1]
3371	cmp	ip, r1
3372	bne	.L390
3373	cbz	r1, .L390
3374	ldrh	ip, [r5, r0, lsl #1]
3375	add	ip, ip, #1
3376	strh	ip, [r5, r0, lsl #1]	@ movhi
3377.L390:
3378	adds	r2, r2, #1
3379	b	.L389
3380.L397:
3381	uxth	r1, r6
3382	ldrh	r3, [r5, r1, lsl #1]
3383	lsl	r8, r1, #1
3384	cmp	fp, r3
3385	bls	.L394
3386	ldrh	r0, [r7, r1, lsl #1]
3387	add	r8, r8, r7
3388	cbnz	r0, .L395
3389.L396:
3390	adds	r6, r6, #1
3391	b	.L393
3392.L394:
3393	cmp	r3, #0
3394	bne	.L396
3395	ldrh	r0, [r7, r1, lsl #1]
3396	add	r8, r8, r7
3397	cmp	r0, #0
3398	beq	.L396
3399.L398:
3400	movs	r1, #1
3401	str	r2, [sp, #4]
3402	bl	FtlFreeSysBlkQueueIn
3403	ldr	r2, [sp, #4]
3404	strh	r2, [r8]	@ movhi
3405	ldrh	r3, [r4, #8]
3406	subs	r3, r3, #1
3407	strh	r3, [r4, #8]	@ movhi
3408	b	.L396
3409.L395:
3410	mov	r10, ip
3411	mov	fp, r3
3412	cmp	r3, #0
3413	beq	.L398
3414	b	.L396
3415.L408:
3416	.align	2
3417.L407:
3418	.word	.LANCHOR19
3419	.size	ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
3420	.section	.text.FtlL2PDataInit,"ax",%progbits
3421	.align	1
3422	.global	FtlL2PDataInit
3423	.syntax unified
3424	.thumb
3425	.thumb_func
3426	.fpu softvfp
3427	.type	FtlL2PDataInit, %function
3428FtlL2PDataInit:
3429	@ args = 0, pretend = 0, frame = 0
3430	@ frame_needed = 0, uses_anonymous_args = 0
3431	push	{r4, r5, r6, r7, r8, lr}
3432	movs	r1, #0
3433	ldr	r5, .L412
3434	ldr	r4, .L412+4
3435	ldr	r2, [r5]
3436	ldr	r7, .L412+8
3437	ldr	r6, .L412+12
3438	ldr	r0, [r4]
3439	lsls	r2, r2, #1
3440	ldr	r8, .L412+44
3441	bl	ftl_memset
3442	ldrh	r3, [r7]
3443	movs	r1, #255
3444	ldrh	r2, [r6]
3445	ldr	r0, [r8]
3446	muls	r2, r3, r2
3447	bl	ftl_memset
3448	ldr	r3, .L412+16
3449	movw	r0, #65535
3450	ldrh	r1, [r6]
3451	ldr	ip, [r8]
3452	ldr	r2, [r3]
3453	movs	r3, #12
3454	ldrh	r7, [r7]
3455	mla	r3, r1, r3, r3
3456	adds	r1, r2, r3
3457	movs	r3, #0
3458	mov	lr, r3
3459.L410:
3460	adds	r2, r2, #12
3461	adds	r6, r3, r7
3462	cmp	r2, r1
3463	bne	.L411
3464	ldr	r3, .L412+20
3465	ldr	r2, [r5]
3466	strh	r0, [r3, #2]	@ movhi
3467	strh	r2, [r3, #10]	@ movhi
3468	movw	r2, #61634
3469	strh	r2, [r3, #4]	@ movhi
3470	ldr	r2, .L412+24
3471	strh	r0, [r3]	@ movhi
3472	ldrh	r2, [r2]
3473	strh	r2, [r3, #8]	@ movhi
3474	ldr	r2, .L412+28
3475	ldrh	r2, [r2]
3476	strh	r2, [r3, #6]	@ movhi
3477	ldr	r2, .L412+32
3478	ldr	r2, [r2]
3479	str	r2, [r3, #12]
3480	ldr	r2, .L412+36
3481	ldr	r2, [r2]
3482	str	r2, [r3, #16]
3483	ldr	r2, [r4]
3484	str	r2, [r3, #20]
3485	ldr	r2, .L412+40
3486	ldr	r2, [r2]
3487	str	r2, [r3, #24]
3488	pop	{r4, r5, r6, r7, r8, pc}
3489.L411:
3490	bic	r3, r3, #3
3491	str	lr, [r2, #-8]
3492	add	r3, r3, ip
3493	strh	r0, [r2, #-12]	@ movhi
3494	str	r3, [r2, #-4]
3495	mov	r3, r6
3496	b	.L410
3497.L413:
3498	.align	2
3499.L412:
3500	.word	.LANCHOR29
3501	.word	.LANCHOR119
3502	.word	.LANCHOR22
3503	.word	.LANCHOR32
3504	.word	.LANCHOR54
3505	.word	.LANCHOR128
3506	.word	.LANCHOR129
3507	.word	.LANCHOR31
3508	.word	.LANCHOR118
3509	.word	.LANCHOR124
3510	.word	.LANCHOR123
3511	.word	.LANCHOR125
3512	.size	FtlL2PDataInit, .-FtlL2PDataInit
3513	.section	.text.FtlVariablesInit,"ax",%progbits
3514	.align	1
3515	.global	FtlVariablesInit
3516	.syntax unified
3517	.thumb
3518	.thumb_func
3519	.fpu softvfp
3520	.type	FtlVariablesInit, %function
3521FtlVariablesInit:
3522	@ args = 0, pretend = 0, frame = 0
3523	@ frame_needed = 0, uses_anonymous_args = 0
3524	push	{r3, r4, r5, lr}
3525	movw	r2, #65535
3526	ldr	r3, .L415
3527	movs	r4, #0
3528	mov	r1, r4
3529	ldr	r5, .L415+4
3530	strh	r2, [r3]	@ movhi
3531	mov	r2, #-1
3532	ldr	r3, .L415+8
3533	str	r4, [r3]
3534	ldr	r3, .L415+12
3535	str	r4, [r3]
3536	ldr	r3, .L415+16
3537	str	r2, [r3]
3538	ldr	r3, .L415+20
3539	strh	r4, [r3]	@ movhi
3540	ldr	r3, .L415+24
3541	ldrh	r2, [r3]
3542	ldr	r3, .L415+28
3543	lsls	r2, r2, #1
3544	ldr	r0, [r3]
3545	bl	ftl_memset
3546	ldrh	r2, [r5]
3547	mov	r1, r4
3548	ldr	r3, .L415+32
3549	lsls	r2, r2, #1
3550	ldr	r0, [r3]
3551	bl	ftl_memset
3552	ldrh	r2, [r5]
3553	mov	r1, r4
3554	ldr	r3, .L415+36
3555	lsls	r2, r2, #1
3556	ldr	r0, [r3]
3557	bl	ftl_memset
3558	mov	r1, r4
3559	movs	r2, #48
3560	ldr	r0, .L415+40
3561	bl	ftl_memset
3562	mov	r2, #512
3563	mov	r1, r4
3564	ldr	r0, .L415+44
3565	bl	ftl_memset
3566	bl	FtlGcBufInit
3567	bl	FtlL2PDataInit
3568	mov	r0, r4
3569	pop	{r3, r4, r5, pc}
3570.L416:
3571	.align	2
3572.L415:
3573	.word	.LANCHOR130
3574	.word	.LANCHOR5
3575	.word	.LANCHOR131
3576	.word	.LANCHOR132
3577	.word	.LANCHOR133
3578	.word	.LANCHOR34
3579	.word	.LANCHOR26
3580	.word	.LANCHOR35
3581	.word	.LANCHOR46
3582	.word	.LANCHOR116
3583	.word	.LANCHOR38
3584	.word	.LANCHOR134
3585	.size	FtlVariablesInit, .-FtlVariablesInit
3586	.section	.text.SupperBlkListInit,"ax",%progbits
3587	.align	1
3588	.global	SupperBlkListInit
3589	.syntax unified
3590	.thumb
3591	.thumb_func
3592	.fpu softvfp
3593	.type	SupperBlkListInit, %function
3594SupperBlkListInit:
3595	@ args = 0, pretend = 0, frame = 16
3596	@ frame_needed = 0, uses_anonymous_args = 0
3597	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
3598	movs	r2, #6
3599	ldr	r3, .L428
3600	movs	r1, #0
3601	movs	r4, #0
3602	ldr	r6, .L428+4
3603	mov	r8, r4
3604	ldrh	r3, [r3]
3605	mov	r5, r4
3606	ldr	r0, [r6]
3607	mov	r10, r6
3608	muls	r2, r3, r2
3609	bl	ftl_memset
3610	ldr	r3, .L428+8
3611	ldr	r2, .L428+12
3612	str	r4, [r3]
3613	ldr	r3, .L428+16
3614	strh	r4, [r2]	@ movhi
3615	str	r2, [sp, #4]
3616	str	r4, [r3]
3617	ldr	r3, .L428+20
3618	str	r4, [r3]
3619	ldr	r3, .L428+24
3620	mov	fp, r3
3621	strh	r4, [r3]	@ movhi
3622.L418:
3623	ldr	r3, .L428+28
3624	uxth	r7, r4
3625	ldrh	r3, [r3]
3626	cmp	r7, r3
3627	bcs	.L425
3628	ldr	r3, .L428+32
3629	ldrh	r2, [r3]
3630	ldr	r3, .L428+36
3631	ldrh	r3, [r3]
3632	str	r3, [sp]
3633	movs	r3, #0
3634	mov	r6, r3
3635	b	.L426
3636.L420:
3637	str	r2, [sp, #12]
3638	mov	r1, r7
3639	ldr	r2, .L428+40
3640	str	r3, [sp, #8]
3641	ldrb	r0, [r2, r3]	@ zero_extendqisi2
3642	bl	V2P_block
3643	bl	FtlBbmIsBadBlock
3644	ldr	r3, [sp, #8]
3645	ldr	r2, [sp, #12]
3646	cbnz	r0, .L419
3647	ldr	r1, [sp]
3648	add	r6, r6, r1
3649	uxth	r6, r6
3650.L419:
3651	adds	r3, r3, #1
3652.L426:
3653	uxth	r1, r3
3654	cmp	r2, r1
3655	bhi	.L420
3656	uxth	r3, r4
3657	cbz	r6, .L421
3658	mov	r1, r6
3659	str	r3, [sp]
3660	mov	r0, #32768
3661	bl	__aeabi_idiv
3662	ldr	r3, [sp]
3663	uxth	r6, r0
3664.L422:
3665	ldr	r1, [r10]
3666	movs	r2, #6
3667	mla	r2, r2, r3, r1
3668	strh	r6, [r2, #4]	@ movhi
3669	ldr	r2, .L428+44
3670	ldrh	r2, [r2]
3671	cmp	r2, r7
3672	beq	.L423
3673	ldr	r2, .L428+48
3674	ldrh	r2, [r2]
3675	cmp	r2, r7
3676	beq	.L423
3677	ldr	r2, .L428+52
3678	ldrh	r2, [r2]
3679	cmp	r2, r7
3680	beq	.L423
3681	ldr	r2, .L428+56
3682	ldr	r2, [r2]
3683	ldrh	r3, [r2, r3, lsl #1]
3684	cbnz	r3, .L424
3685	add	r8, r8, #1
3686	mov	r0, r7
3687	uxth	r8, r8
3688	bl	INSERT_FREE_LIST
3689.L423:
3690	adds	r4, r4, #1
3691	b	.L418
3692.L421:
3693	ldr	r2, .L428+56
3694	movw	r1, #65535
3695	ldr	r2, [r2]
3696	strh	r1, [r2, r3, lsl #1]	@ movhi
3697	b	.L422
3698.L424:
3699	adds	r5, r5, #1
3700	mov	r0, r7
3701	uxth	r5, r5
3702	bl	INSERT_DATA_LIST
3703	b	.L423
3704.L425:
3705	ldr	r2, [sp, #4]
3706	strh	r8, [fp]	@ movhi
3707	strh	r5, [r2]	@ movhi
3708	add	r5, r5, r8
3709	cmp	r5, r3
3710	ble	.L427
3711	movw	r2, #2219
3712	ldr	r1, .L428+60
3713	ldr	r0, .L428+64
3714	bl	printf
3715.L427:
3716	movs	r0, #0
3717	add	sp, sp, #16
3718	@ sp needed
3719	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
3720.L429:
3721	.align	2
3722.L428:
3723	.word	.LANCHOR5
3724	.word	.LANCHOR39
3725	.word	.LANCHOR45
3726	.word	.LANCHOR43
3727	.word	.LANCHOR40
3728	.word	.LANCHOR42
3729	.word	.LANCHOR47
3730	.word	.LANCHOR4
3731	.word	.LANCHOR2
3732	.word	.LANCHOR18
3733	.word	.LANCHOR12
3734	.word	.LANCHOR50
3735	.word	.LANCHOR51
3736	.word	.LANCHOR52
3737	.word	.LANCHOR41
3738	.word	.LANCHOR135
3739	.word	.LC1
3740	.size	SupperBlkListInit, .-SupperBlkListInit
3741	.section	.text.FtlGcPageVarInit,"ax",%progbits
3742	.align	1
3743	.global	FtlGcPageVarInit
3744	.syntax unified
3745	.thumb
3746	.thumb_func
3747	.fpu softvfp
3748	.type	FtlGcPageVarInit, %function
3749FtlGcPageVarInit:
3750	@ args = 0, pretend = 0, frame = 0
3751	@ frame_needed = 0, uses_anonymous_args = 0
3752	ldr	r2, .L431
3753	movs	r3, #0
3754	push	{r4, lr}
3755	movs	r1, #255
3756	ldr	r4, .L431+4
3757	strh	r3, [r2]	@ movhi
3758	ldr	r2, .L431+8
3759	strh	r3, [r2]	@ movhi
3760	ldrh	r2, [r4]
3761	ldr	r3, .L431+12
3762	lsls	r2, r2, #1
3763	ldr	r0, [r3]
3764	bl	ftl_memset
3765	ldrh	r3, [r4]
3766	movs	r2, #12
3767	movs	r1, #255
3768	muls	r2, r3, r2
3769	ldr	r3, .L431+16
3770	ldr	r0, [r3]
3771	bl	ftl_memset
3772	pop	{r4, lr}
3773	b	FtlGcBufInit
3774.L432:
3775	.align	2
3776.L431:
3777	.word	.LANCHOR68
3778	.word	.LANCHOR20
3779	.word	.LANCHOR69
3780	.word	.LANCHOR67
3781	.word	.LANCHOR70
3782	.size	FtlGcPageVarInit, .-FtlGcPageVarInit
3783	.section	.text.FlashGetBadBlockList,"ax",%progbits
3784	.align	1
3785	.global	FlashGetBadBlockList
3786	.syntax unified
3787	.thumb
3788	.thumb_func
3789	.fpu softvfp
3790	.type	FlashGetBadBlockList, %function
3791FlashGetBadBlockList:
3792	@ args = 0, pretend = 0, frame = 0
3793	@ frame_needed = 0, uses_anonymous_args = 0
3794	push	{r3, r4, r5, lr}
3795	mov	r2, #256
3796	mov	r5, r1
3797	movs	r1, #255
3798	mov	r4, r0
3799	bl	ftl_memset
3800	ldr	r3, .L440
3801	mov	r1, r5
3802	mov	r0, r4
3803	ldr	r3, [r3]
3804	blx	r3
3805	uxth	r0, r0
3806	cmp	r0, #50
3807	bls	.L434
3808	mov	r2, #256
3809	movs	r1, #255
3810	mov	r0, r4
3811	bl	ftl_memset
3812	movs	r0, #0
3813.L434:
3814	ldr	r3, .L440+4
3815	ldrh	r3, [r3, #14]
3816	cmp	r3, #4
3817	bne	.L439
3818	add	r1, r4, r0, lsl #1
3819	mov	r3, r4
3820.L436:
3821	cmp	r3, r1
3822	bne	.L437
3823.L439:
3824	pop	{r3, r4, r5, pc}
3825.L437:
3826	ldrh	r2, [r3]
3827	lsrs	r2, r2, #1
3828	strh	r2, [r3], #2	@ movhi
3829	b	.L436
3830.L441:
3831	.align	2
3832.L440:
3833	.word	.LANCHOR77
3834	.word	.LANCHOR0
3835	.size	FlashGetBadBlockList, .-FlashGetBadBlockList
3836	.section	.text.ftl_memcpy,"ax",%progbits
3837	.align	1
3838	.global	ftl_memcpy
3839	.syntax unified
3840	.thumb
3841	.thumb_func
3842	.fpu softvfp
3843	.type	ftl_memcpy, %function
3844ftl_memcpy:
3845	@ args = 0, pretend = 0, frame = 0
3846	@ frame_needed = 0, uses_anonymous_args = 0
3847	@ link register save eliminated.
3848	b	memcpy
3849	.size	ftl_memcpy, .-ftl_memcpy
3850	.section	.text.FlashReadPages,"ax",%progbits
3851	.align	1
3852	.global	FlashReadPages
3853	.syntax unified
3854	.thumb
3855	.thumb_func
3856	.fpu softvfp
3857	.type	FlashReadPages, %function
3858FlashReadPages:
3859	@ args = 0, pretend = 0, frame = 16
3860	@ frame_needed = 0, uses_anonymous_args = 0
3861	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
3862	mov	fp, r1
3863	ldr	r3, .L483
3864	mov	r4, r0
3865	mov	r10, #0
3866	ldrh	r2, [r3, #12]
3867	str	r3, [sp, #4]
3868	str	r2, [sp]
3869.L444:
3870	cmp	r10, fp
3871	bne	.L458
3872	movs	r0, #0
3873	add	sp, sp, #16
3874	@ sp needed
3875	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
3876.L458:
3877	ldr	r3, [r4, #8]
3878	cbz	r3, .L445
3879	ldr	r3, [r4, #12]
3880	cbnz	r3, .L446
3881.L445:
3882	movs	r2, #90
3883	ldr	r1, .L483+4
3884	ldr	r0, .L483+8
3885	bl	printf
3886.L446:
3887	add	r2, sp, #8
3888	add	r1, sp, #12
3889	ldr	r0, [r4, #4]
3890	bl	l2p_addr_tran.isra.0
3891	ldr	r0, [sp, #8]
3892	cmp	r0, #3
3893	bls	.L447
3894	mov	r3, #-1
3895	str	r3, [r4]
3896.L448:
3897	add	r10, r10, #1
3898	adds	r4, r4, #20
3899	b	.L444
3900.L447:
3901	ldr	r5, [r4, #8]
3902	uxtb	r0, r0
3903	ldr	r8, .L483+32
3904	ldr	r7, .L483+12
3905	tst	r5, #63
3906	ldr	r3, [r4, #12]
3907	it	ne
3908	ldrne	r5, [r8]
3909	ldr	r1, [sp, #12]
3910	ldr	r6, [r7, #12]
3911	mov	r2, r5
3912	blx	r6
3913	ldr	r3, [sp, #4]
3914	str	r0, [r4]
3915	ldrh	r3, [r3, #14]
3916	cmp	r3, #4
3917	bne	.L451
3918	ldr	r0, [sp]
3919	add	r2, r5, #2048
3920	ldr	r3, [r4, #12]
3921	ldr	r1, [sp, #12]
3922	ldr	r7, [r7, #12]
3923	adds	r3, r3, #8
3924	add	r1, r1, r0
3925	ldrb	r0, [sp, #8]	@ zero_extendqisi2
3926	blx	r7
3927	adds	r1, r0, #1
3928	beq	.L452
3929	ldr	r3, [r4, #12]
3930	ldr	r2, [r3, #12]
3931	adds	r2, r2, #1
3932	bne	.L453
3933	ldr	r2, [r3, #8]
3934	adds	r2, r2, #1
3935	bne	.L453
3936	ldr	r3, [r3]
3937	adds	r3, r3, #1
3938	beq	.L453
3939.L452:
3940	mov	r3, #-1
3941	str	r3, [r4]
3942.L453:
3943	ldr	r3, [r4]
3944	adds	r3, r3, #1
3945	beq	.L454
3946	cmp	r0, #256
3947	it	eq
3948	streq	r0, [r4]
3949.L454:
3950	ldr	r3, [r4]
3951	adds	r2, r3, #1
3952	beq	.L455
3953	cmp	r3, #256
3954	bne	.L451
3955.L455:
3956	ldr	r1, [r4, #4]
3957	ldr	r2, [sp, #12]
3958	ldr	r0, .L483+16
3959	bl	printf
3960	ldr	r1, [r4, #8]
3961	cbz	r1, .L457
3962	movs	r3, #4
3963	ldr	r0, .L483+20
3964	mov	r2, r3
3965	bl	rknand_print_hex
3966.L457:
3967	ldr	r1, [r4, #12]
3968	cbz	r1, .L451
3969	movs	r3, #4
3970	ldr	r0, .L483+24
3971	mov	r2, r3
3972	bl	rknand_print_hex
3973.L451:
3974	ldr	r3, [r8]
3975	cmp	r5, r3
3976	bne	.L448
3977	ldr	r0, [r4, #8]
3978	cmp	r5, r0
3979	beq	.L448
3980	ldr	r3, .L483+28
3981	mov	r1, r5
3982	ldrh	r2, [r3]
3983	lsls	r2, r2, #9
3984	bl	ftl_memcpy
3985	b	.L448
3986.L484:
3987	.align	2
3988.L483:
3989	.word	.LANCHOR0
3990	.word	.LANCHOR136
3991	.word	.LC1
3992	.word	.LANCHOR77
3993	.word	.LC11
3994	.word	.LC12
3995	.word	.LC13
3996	.word	.LANCHOR11
3997	.word	.LANCHOR110
3998	.size	FlashReadPages, .-FlashReadPages
3999	.section	.text.FtlLoadFactoryBbt,"ax",%progbits
4000	.align	1
4001	.global	FtlLoadFactoryBbt
4002	.syntax unified
4003	.thumb
4004	.thumb_func
4005	.fpu softvfp
4006	.type	FtlLoadFactoryBbt, %function
4007FtlLoadFactoryBbt:
4008	@ args = 0, pretend = 0, frame = 0
4009	@ frame_needed = 0, uses_anonymous_args = 0
4010	ldr	r3, .L495
4011	push	{r4, r5, r6, r7, r8, r10, fp, lr}
4012	movs	r6, #0
4013	ldr	r5, .L495+4
4014	ldr	r3, [r3]
4015	ldr	r7, .L495+8
4016	ldr	r10, .L495+20
4017	str	r3, [r5, #8]
4018	ldr	r3, .L495+12
4019	ldr	r8, [r3]
4020	str	r8, [r5, #12]
4021.L486:
4022	ldr	r3, .L495+16
4023	ldrh	r3, [r3]
4024	cmp	r6, r3
4025	bcc	.L491
4026	movs	r0, #0
4027	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
4028.L491:
4029	ldrh	r4, [r10]
4030	movw	r3, #65535
4031	ldr	fp, .L495+4
4032	strh	r3, [r7, #2]!	@ movhi
4033	subs	r4, r4, #1
4034	uxth	r4, r4
4035.L487:
4036	ldrh	r3, [r10]
4037	sub	r2, r3, #15
4038	cmp	r2, r4
4039	bgt	.L489
4040	mla	r3, r6, r3, r4
4041	movs	r2, #1
4042	mov	r1, r2
4043	mov	r0, fp
4044	lsls	r3, r3, #10
4045	str	r3, [r5, #4]
4046	bl	FlashReadPages
4047	ldr	r3, [r5]
4048	adds	r3, r3, #1
4049	beq	.L488
4050	ldrh	r2, [r8]
4051	movw	r3, #61664
4052	cmp	r2, r3
4053	bne	.L488
4054	strh	r4, [r7]	@ movhi
4055.L489:
4056	adds	r6, r6, #1
4057	b	.L486
4058.L488:
4059	subs	r4, r4, #1
4060	uxth	r4, r4
4061	b	.L487
4062.L496:
4063	.align	2
4064.L495:
4065	.word	.LANCHOR105
4066	.word	.LANCHOR137
4067	.word	.LANCHOR36+10
4068	.word	.LANCHOR113
4069	.word	.LANCHOR9
4070	.word	.LANCHOR16
4071	.size	FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
4072	.section	.text.FtlGetLastWrittenPage,"ax",%progbits
4073	.align	1
4074	.global	FtlGetLastWrittenPage
4075	.syntax unified
4076	.thumb
4077	.thumb_func
4078	.fpu softvfp
4079	.type	FtlGetLastWrittenPage, %function
4080FtlGetLastWrittenPage:
4081	@ args = 0, pretend = 0, frame = 88
4082	@ frame_needed = 0, uses_anonymous_args = 0
4083	cmp	r1, #1
4084	push	{r4, r5, r6, r7, r8, lr}
4085	it	eq
4086	ldreq	r3, .L509
4087	sub	sp, sp, #88
4088	lsl	r7, r0, #10
4089	mov	r2, r1
4090	it	ne
4091	ldrne	r3, .L509+4
4092	mov	r6, r1
4093	add	r0, sp, #4
4094	movs	r1, #1
4095	ldrh	r5, [r3]
4096	ldr	r3, .L509+8
4097	subs	r5, r5, #1
4098	ldr	r3, [r3]
4099	sxth	r5, r5
4100	str	r3, [sp, #12]
4101	add	r3, sp, #24
4102	str	r3, [sp, #16]
4103	orr	r3, r5, r7
4104	str	r3, [sp, #8]
4105	bl	FlashReadPages
4106	ldr	r3, [sp, #24]
4107	adds	r3, r3, #1
4108	bne	.L500
4109	mov	r8, #0
4110.L501:
4111	cmp	r8, r5
4112	ble	.L504
4113.L500:
4114	mov	r0, r5
4115	add	sp, sp, #88
4116	@ sp needed
4117	pop	{r4, r5, r6, r7, r8, pc}
4118.L504:
4119	add	r3, r8, r5
4120	mov	r2, r6
4121	add	r3, r3, r3, lsr #31
4122	movs	r1, #1
4123	add	r0, sp, #4
4124	asrs	r4, r3, #1
4125	sxth	r3, r4
4126	orrs	r3, r3, r7
4127	str	r3, [sp, #8]
4128	bl	FlashReadPages
4129	ldr	r3, [sp, #24]
4130	adds	r3, r3, #1
4131	bne	.L502
4132	ldr	r3, [sp, #28]
4133	adds	r3, r3, #1
4134	bne	.L502
4135	ldr	r3, [sp, #4]
4136	adds	r3, r3, #1
4137	beq	.L502
4138	subs	r4, r4, #1
4139	sxth	r5, r4
4140	b	.L501
4141.L502:
4142	adds	r4, r4, #1
4143	sxth	r8, r4
4144	b	.L501
4145.L510:
4146	.align	2
4147.L509:
4148	.word	.LANCHOR19
4149	.word	.LANCHOR18
4150	.word	.LANCHOR111
4151	.size	FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
4152	.section	.text.FtlScanSysBlk,"ax",%progbits
4153	.align	1
4154	.global	FtlScanSysBlk
4155	.syntax unified
4156	.thumb
4157	.thumb_func
4158	.fpu softvfp
4159	.type	FtlScanSysBlk, %function
4160FtlScanSysBlk:
4161	@ args = 0, pretend = 0, frame = 32
4162	@ frame_needed = 0, uses_anonymous_args = 0
4163	push	{r4, r5, r6, r7, r8, r10, fp, lr}
4164	movs	r4, #0
4165	ldr	r5, .L592
4166	sub	sp, sp, #32
4167	mov	r1, r4
4168	ldr	r3, .L592+4
4169	ldr	r2, [r5]
4170	ldr	r6, .L592+8
4171	strh	r4, [r3]	@ movhi
4172	ldr	r3, .L592+12
4173	lsls	r2, r2, #2
4174	strh	r4, [r6]	@ movhi
4175	ldr	r7, .L592+16
4176	ldr	r0, [r3]
4177	bl	ftl_memset
4178	ldr	r2, [r5]
4179	mov	r1, r4
4180	ldr	r3, .L592+20
4181	lsls	r2, r2, #1
4182	ldr	r0, [r3]
4183	bl	ftl_memset
4184	ldrh	r2, [r7]
4185	mov	r1, r4
4186	ldr	r3, .L592+24
4187	lsls	r2, r2, #2
4188	ldr	r0, [r3]
4189	bl	ftl_memset
4190	ldrh	r2, [r7]
4191	mov	r1, r4
4192	ldr	r3, .L592+28
4193	lsls	r2, r2, #1
4194	ldr	r0, [r3]
4195	bl	ftl_memset
4196	movs	r2, #16
4197	movs	r1, #255
4198	ldr	r0, .L592+32
4199	bl	ftl_memset
4200	ldr	r3, .L592+36
4201	str	r6, [sp, #12]
4202	str	r5, [sp, #16]
4203	ldrh	r3, [r3]
4204	str	r3, [sp, #4]
4205.L512:
4206	ldr	r3, .L592+40
4207	ldr	r2, [sp, #4]
4208	ldrh	r3, [r3]
4209	cmp	r3, r2
4210	bls	.L553
4211	ldr	r3, .L592+44
4212	movs	r5, #0
4213	ldr	r1, .L592+48
4214	mov	fp, r5
4215	movs	r7, #20
4216	ldrh	r8, [r3]
4217	ldr	r3, .L592+52
4218	ldr	r2, [r1]
4219	ldr	r1, .L592+56
4220	ldr	r6, [r3]
4221	ldr	r3, .L592+60
4222	str	r2, [sp, #8]
4223	ldrh	r10, [r1]
4224	ldr	r3, [r3]
4225	ldr	r2, .L592+64
4226	b	.L554
4227.L514:
4228	ldrb	r0, [r2, r5]	@ zero_extendqisi2
4229	ldr	r1, [sp, #4]
4230	str	r3, [sp, #28]
4231	str	r2, [sp, #24]
4232	bl	V2P_block
4233	str	r0, [sp, #20]
4234	bl	FtlBbmIsBadBlock
4235	ldr	r2, [sp, #24]
4236	ldr	r3, [sp, #28]
4237	cbnz	r0, .L513
4238	ldr	r1, [sp, #20]
4239	mla	r0, r7, fp, r6
4240	ldr	r4, [sp, #8]
4241	lsls	r1, r1, #10
4242	str	r3, [r0, #8]
4243	str	r1, [r0, #4]
4244	mul	r1, r10, fp
4245	bic	r1, r1, #3
4246	add	r1, r1, r4
4247	str	r1, [r0, #12]
4248	add	r1, fp, #1
4249	uxth	fp, r1
4250.L513:
4251	adds	r5, r5, #1
4252.L554:
4253	uxth	r1, r5
4254	cmp	r8, r1
4255	bhi	.L514
4256	cmp	fp, #0
4257	bne	.L515
4258.L552:
4259	ldr	r3, [sp, #4]
4260	adds	r3, r3, #1
4261	uxth	r3, r3
4262	str	r3, [sp, #4]
4263	b	.L512
4264.L515:
4265	movs	r7, #0
4266	movs	r2, #1
4267	mov	r1, fp
4268	mov	r0, r6
4269	bl	FlashReadPages
4270.L516:
4271	uxth	r3, r7
4272	cmp	fp, r3
4273	bls	.L552
4274	ldr	r3, .L592+52
4275	mov	r8, #20
4276	mul	r8, r8, r7
4277	ldr	r3, [r3]
4278	add	r2, r3, r8
4279	ldr	r3, [r3, r8]
4280	ldr	r5, [r2, #4]
4281	ldr	r6, [r2, #12]
4282	adds	r3, r3, #1
4283	ubfx	r5, r5, #10, #16
4284	bne	.L519
4285	mov	r10, #16
4286.L521:
4287	ldr	r3, .L592+52
4288	movs	r2, #1
4289	mov	r1, r2
4290	ldr	r0, [r3]
4291	add	r0, r0, r8
4292	ldr	r3, [r0, #4]
4293	adds	r3, r3, #1
4294	str	r3, [r0, #4]
4295	bl	FlashReadPages
4296	ldrh	r2, [r6]
4297	movw	r3, #65535
4298	cmp	r2, r3
4299	ldr	r3, .L592+52
4300	ldr	r3, [r3]
4301	bne	.L518
4302	mov	r2, #-1
4303	str	r2, [r3, r8]
4304	ldr	r3, .L592+52
4305	ldr	r3, [r3]
4306	ldr	r3, [r3, r8]
4307	cmp	r3, r2
4308	bne	.L519
4309.L520:
4310	movs	r1, #1
4311	b	.L591
4312.L518:
4313	ldr	r3, [r3, r8]
4314	adds	r3, r3, #1
4315	bne	.L519
4316	add	r10, r10, #-1
4317	uxth	r10, r10
4318	cmp	r10, #0
4319	bne	.L521
4320	b	.L520
4321.L519:
4322	ldr	r3, .L592+68
4323	ldr	r2, [r3]
4324	ldr	r3, [r6, #4]
4325	adds	r1, r2, #1
4326	beq	.L522
4327	cmp	r2, r3
4328	bhi	.L523
4329.L522:
4330	adds	r2, r3, #1
4331	ittt	ne
4332	ldrne	r1, .L592+68
4333	addne	r2, r3, #1
4334	strne	r2, [r1]
4335.L523:
4336	ldrh	r2, [r6]
4337	movw	r1, #61604
4338	cmp	r2, r1
4339	beq	.L525
4340	bhi	.L526
4341	movw	r3, #61574
4342	cmp	r2, r3
4343	beq	.L527
4344.L524:
4345	adds	r7, r7, #1
4346	b	.L516
4347.L526:
4348	movw	r3, #61634
4349	cmp	r2, r3
4350	beq	.L528
4351	movw	r3, #65535
4352	cmp	r2, r3
4353	bne	.L524
4354	movs	r1, #0
4355.L591:
4356	mov	r0, r5
4357	bl	FtlFreeSysBlkQueueIn
4358	b	.L524
4359.L528:
4360	ldr	r3, .L592+8
4361	ldrh	r2, [r3]
4362	ldr	r3, .L592
4363	ldr	r3, [r3]
4364	cmp	r2, r3
4365	bls	.L530
4366	mov	r2, #1232
4367	ldr	r1, .L592+72
4368	ldr	r0, .L592+76
4369	bl	printf
4370.L530:
4371	ldr	r3, [sp, #16]
4372	ldr	r2, [sp, #12]
4373	ldr	r1, [r3]
4374	ldrh	r0, [r2]
4375	ldr	r2, .L592+12
4376	uxth	r10, r1
4377	ldr	ip, [r2]
4378	add	r3, r10, #-1
4379	sub	r10, r10, r0
4380	add	r10, r10, #-1
4381	sxth	r3, r3
4382	sxth	r10, r10
4383.L531:
4384	cmp	r3, r10
4385	bgt	.L537
4386	cmp	r3, #0
4387	bge	.L569
4388	b	.L524
4389.L537:
4390	ldr	r2, [ip, r3, lsl #2]
4391	add	r8, ip, r3, lsl #2
4392	ldr	r4, [r6, #4]
4393	cmp	r4, r2
4394	bls	.L532
4395	ldr	r2, [ip]
4396	cbnz	r2, .L533
4397	cmp	r1, r0
4398	ittt	ne
4399	ldrne	r2, .L592+8
4400	addne	r0, r0, #1
4401	strhne	r0, [r2]	@ movhi
4402.L533:
4403	ldr	r2, .L592+20
4404	uxth	r10, r3
4405	ldr	r0, [r2]
4406	movs	r2, #0
4407.L534:
4408	uxth	lr, r2
4409	sxth	r1, r2
4410	cmp	r10, lr
4411	bhi	.L535
4412	ldr	r2, [r6, #4]
4413	cmp	r3, #0
4414	str	r2, [r8]
4415	strh	r5, [r0, r3, lsl #1]	@ movhi
4416	blt	.L524
4417	ldr	r2, .L592+8
4418	ldrh	r0, [r2]
4419	ldr	r2, .L592
4420	ldr	r2, [r2]
4421	subs	r2, r2, r0
4422	subs	r2, r2, #1
4423	sxth	r2, r2
4424	cmp	r3, r2
4425	bgt	.L524
4426.L569:
4427	ldr	r2, .L592+8
4428	adds	r0, r0, #1
4429	strh	r0, [r2]	@ movhi
4430	ldr	r2, [r6, #4]
4431	str	r2, [ip, r3, lsl #2]
4432	ldr	r2, .L592+20
4433.L589:
4434	ldr	r2, [r2]
4435	strh	r5, [r2, r3, lsl #1]	@ movhi
4436	b	.L524
4437.L535:
4438	add	lr, ip, r1, lsl #2
4439	adds	r2, r2, #1
4440	ldr	r4, [lr, #4]
4441	add	lr, r0, r1, lsl #1
4442	ldrh	lr, [lr, #2]
4443	str	r4, [ip, r1, lsl #2]
4444	strh	lr, [r0, r1, lsl #1]	@ movhi
4445	b	.L534
4446.L532:
4447	subs	r3, r3, #1
4448	sxth	r3, r3
4449	b	.L531
4450.L593:
4451	.align	2
4452.L592:
4453	.word	.LANCHOR29
4454	.word	.LANCHOR34
4455	.word	.LANCHOR129
4456	.word	.LANCHOR124
4457	.word	.LANCHOR26
4458	.word	.LANCHOR118
4459	.word	.LANCHOR121
4460	.word	.LANCHOR35
4461	.word	.LANCHOR138
4462	.word	.LANCHOR4
4463	.word	.LANCHOR5
4464	.word	.LANCHOR2
4465	.word	.LANCHOR64
4466	.word	.LANCHOR102
4467	.word	.LANCHOR23
4468	.word	.LANCHOR63
4469	.word	.LANCHOR12
4470	.word	.LANCHOR81
4471	.word	.LANCHOR139
4472	.word	.LC1
4473.L527:
4474	ldr	r8, .L594+12
4475	ldr	r10, .L594+20
4476	ldrh	r2, [r8]
4477	ldrh	r3, [r10]
4478	cmp	r2, r3
4479	bls	.L540
4480	movw	r2, #1273
4481	ldr	r1, .L594
4482	ldr	r0, .L594+4
4483	bl	printf
4484.L540:
4485	ldr	r2, .L594+8
4486	ldrh	lr, [r10]
4487	ldrh	ip, [r8]
4488	ldr	r0, [r2]
4489	add	r10, lr, #-1
4490	sxth	r3, r10
4491	sub	r10, r10, ip
4492.L541:
4493	cmp	r3, r10
4494	ble	.L546
4495	ldr	r1, [r6, #4]
4496	add	r8, r0, r3, lsl #2
4497	ldr	r2, [r0, r3, lsl #2]
4498	cmp	r1, r2
4499	bls	.L542
4500	ldr	r2, [r0]
4501	cbnz	r2, .L543
4502	cmp	lr, ip
4503	ittt	ne
4504	ldrne	r2, .L594+12
4505	addne	ip, ip, #1
4506	strhne	ip, [r2]	@ movhi
4507.L543:
4508	ldr	r2, .L594+16
4509	uxth	r10, r3
4510	ldr	ip, [r2]
4511	movs	r2, #0
4512.L544:
4513	uxth	lr, r2
4514	sxth	r1, r2
4515	cmp	r10, lr
4516	bhi	.L545
4517	ldr	r2, [r6, #4]
4518	str	r2, [r8]
4519	strh	r5, [ip, r3, lsl #1]	@ movhi
4520.L546:
4521	cmp	r3, #0
4522	blt	.L524
4523	ldr	r2, .L594+20
4524	ldr	ip, .L594+12
4525	ldrh	r2, [r2]
4526	ldrh	r1, [ip]
4527	subs	r2, r2, #1
4528	subs	r2, r2, r1
4529	sxth	r2, r2
4530	cmp	r3, r2
4531	bgt	.L524
4532	ldr	r2, [r6, #4]
4533	adds	r1, r1, #1
4534	strh	r1, [ip]	@ movhi
4535	str	r2, [r0, r3, lsl #2]
4536	ldr	r2, .L594+16
4537	b	.L589
4538.L545:
4539	add	lr, r0, r1, lsl #2
4540	adds	r2, r2, #1
4541	ldr	r4, [lr, #4]
4542	add	lr, ip, r1, lsl #1
4543	ldrh	lr, [lr, #2]
4544	str	r4, [r0, r1, lsl #2]
4545	strh	lr, [ip, r1, lsl #1]	@ movhi
4546	b	.L544
4547.L542:
4548	subs	r3, r3, #1
4549	sxth	r3, r3
4550	b	.L541
4551.L525:
4552	ldr	r8, .L594+40
4553	movw	r2, #65535
4554	ldrh	r1, [r8]
4555	cmp	r1, r2
4556	bne	.L548
4557.L590:
4558	strh	r5, [r8]	@ movhi
4559	str	r3, [r8, #8]
4560	b	.L524
4561.L548:
4562	ldrh	r0, [r8, #4]
4563	cmp	r0, r2
4564	beq	.L549
4565	movs	r1, #1
4566	bl	FtlFreeSysBlkQueueIn
4567.L549:
4568	ldr	r3, [r6, #4]
4569	ldr	r2, [r8, #8]
4570	cmp	r2, r3
4571	bcs	.L550
4572	ldrh	r2, [r8]
4573	strh	r2, [r8, #4]	@ movhi
4574	b	.L590
4575.L550:
4576	strh	r5, [r8, #4]	@ movhi
4577	b	.L524
4578.L553:
4579	ldr	r3, .L594+24
4580	ldr	r2, [r3]
4581	ldrh	r3, [r2]
4582	cbz	r3, .L555
4583.L558:
4584	ldr	r3, .L594+16
4585	ldr	r4, [r3]
4586	ldrh	r2, [r4]
4587	cmp	r2, #0
4588	beq	.L556
4589.L557:
4590	ldr	r3, .L594+28
4591	ldrh	r2, [r3]
4592	ldr	r3, .L594+32
4593	ldr	r3, [r3]
4594	cmp	r2, r3
4595	bls	.L588
4596	movw	r2, #1398
4597	ldr	r1, .L594
4598	ldr	r0, .L594+4
4599	bl	printf
4600.L588:
4601	movs	r0, #0
4602	add	sp, sp, #32
4603	@ sp needed
4604	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
4605.L555:
4606	ldr	r1, .L594+28
4607	ldrh	r1, [r1]
4608	cmp	r1, #0
4609	beq	.L558
4610	ldr	r5, .L594+32
4611	ldr	r0, [r5]
4612.L559:
4613	sxth	r1, r3
4614	cmp	r1, r0
4615	bcs	.L558
4616	ldrh	r4, [r2, r1, lsl #1]
4617	adds	r3, r3, #1
4618	cmp	r4, #0
4619	beq	.L559
4620	ldr	r3, .L594+36
4621	movs	r6, #0
4622	ldr	r0, [r3]
4623	mov	r3, r1
4624.L560:
4625	ldr	r4, [r5]
4626	cmp	r3, r4
4627	bcs	.L558
4628	ldrh	r7, [r2, r3, lsl #1]
4629	subs	r4, r3, r1
4630	strh	r7, [r2, r4, lsl #1]	@ movhi
4631	ldr	r7, [r0, r3, lsl #2]
4632	str	r7, [r0, r4, lsl #2]
4633	strh	r6, [r2, r3, lsl #1]	@ movhi
4634	adds	r3, r3, #1
4635	sxth	r3, r3
4636	b	.L560
4637.L556:
4638	ldr	r3, .L594+12
4639	ldrh	r3, [r3]
4640	cmp	r3, #0
4641	beq	.L557
4642	ldr	r5, .L594+20
4643	ldrh	r1, [r5]
4644.L565:
4645	sxth	r3, r2
4646	cmp	r3, r1
4647	mov	r6, r3
4648	bge	.L557
4649	ldrh	r0, [r4, r3, lsl #1]
4650	adds	r2, r2, #1
4651	cmp	r0, #0
4652	beq	.L565
4653	ldr	r2, .L594+8
4654	movs	r0, #0
4655	ldr	r2, [r2]
4656.L566:
4657	ldrh	r1, [r5]
4658	cmp	r3, r1
4659	bge	.L557
4660	ldrh	r7, [r4, r3, lsl #1]
4661	subs	r1, r3, r6
4662	strh	r7, [r4, r1, lsl #1]	@ movhi
4663	ldr	r7, [r2, r3, lsl #2]
4664	str	r7, [r2, r1, lsl #2]
4665	adds	r1, r3, #1
4666	strh	r0, [r4, r3, lsl #1]	@ movhi
4667	sxth	r3, r1
4668	b	.L566
4669.L595:
4670	.align	2
4671.L594:
4672	.word	.LANCHOR139
4673	.word	.LC1
4674	.word	.LANCHOR121
4675	.word	.LANCHOR34
4676	.word	.LANCHOR35
4677	.word	.LANCHOR26
4678	.word	.LANCHOR118
4679	.word	.LANCHOR129
4680	.word	.LANCHOR29
4681	.word	.LANCHOR124
4682	.word	.LANCHOR138
4683	.size	FtlScanSysBlk, .-FtlScanSysBlk
4684	.section	.text.FtlLoadBbt,"ax",%progbits
4685	.align	1
4686	.global	FtlLoadBbt
4687	.syntax unified
4688	.thumb
4689	.thumb_func
4690	.fpu softvfp
4691	.type	FtlLoadBbt, %function
4692FtlLoadBbt:
4693	@ args = 0, pretend = 0, frame = 0
4694	@ frame_needed = 0, uses_anonymous_args = 0
4695	push	{r3, r4, r5, r6, r7, r8, r10, lr}
4696	ldr	r8, .L625+40
4697	ldr	r4, .L625
4698	ldr	r3, [r8]
4699	ldr	r7, .L625+4
4700	mov	r10, r4
4701	str	r3, [r4, #8]
4702	ldr	r3, .L625+8
4703	ldr	r6, [r3]
4704	str	r6, [r4, #12]
4705	bl	FtlBbtMemInit
4706	ldrh	r5, [r7]
4707	subs	r5, r5, #1
4708	uxth	r5, r5
4709.L597:
4710	ldrh	r3, [r7]
4711	subs	r3, r3, #15
4712	cmp	r3, r5
4713	bgt	.L600
4714	lsls	r3, r5, #10
4715	movs	r2, #1
4716	mov	r1, r2
4717	mov	r0, r10
4718	str	r3, [r4, #4]
4719	bl	FlashReadPages
4720	ldr	r3, [r4]
4721	adds	r3, r3, #1
4722	bne	.L598
4723	ldr	r3, [r4, #4]
4724	movs	r2, #1
4725	mov	r1, r2
4726	mov	r0, r10
4727	adds	r3, r3, #1
4728	str	r3, [r4, #4]
4729	bl	FlashReadPages
4730.L598:
4731	ldr	r3, [r4]
4732	adds	r3, r3, #1
4733	beq	.L599
4734	ldrh	r2, [r6]
4735	movw	r3, #61649
4736	cmp	r2, r3
4737	bne	.L599
4738	ldr	r3, .L625+12
4739	ldr	r2, [r6, #4]
4740	strh	r5, [r3]	@ movhi
4741	str	r2, [r3, #8]
4742	ldrh	r2, [r6, #8]
4743	strh	r2, [r3, #4]	@ movhi
4744.L600:
4745	ldr	r5, .L625+12
4746	movw	r2, #65535
4747	ldrh	r3, [r5]
4748	cmp	r3, r2
4749	beq	.L614
4750	ldrh	r3, [r5, #4]
4751	cmp	r3, r2
4752	beq	.L604
4753	lsls	r3, r3, #10
4754	movs	r2, #1
4755	mov	r1, r2
4756	ldr	r0, .L625
4757	str	r3, [r4, #4]
4758	bl	FlashReadPages
4759	ldr	r3, [r4]
4760	adds	r3, r3, #1
4761	beq	.L604
4762	ldrh	r2, [r6]
4763	movw	r3, #61649
4764	cmp	r2, r3
4765	bne	.L604
4766	ldr	r3, [r6, #4]
4767	ldr	r2, [r5, #8]
4768	cmp	r3, r2
4769	bls	.L604
4770	ldrh	r2, [r5, #4]
4771	str	r3, [r5, #8]
4772	ldrh	r3, [r6, #8]
4773	strh	r2, [r5]	@ movhi
4774	strh	r3, [r5, #4]	@ movhi
4775.L604:
4776	ldr	r10, .L625
4777	movs	r1, #1
4778	ldrh	r0, [r5]
4779	bl	FtlGetLastWrittenPage
4780	sxth	r7, r0
4781	adds	r0, r0, #1
4782	strh	r0, [r5, #2]	@ movhi
4783.L606:
4784	cmp	r7, #0
4785	bge	.L609
4786	movs	r2, #251
4787	ldr	r1, .L625+16
4788	ldr	r0, .L625+20
4789	bl	printf
4790.L608:
4791	ldrh	r3, [r6, #10]
4792	ldrh	r0, [r6, #12]
4793	strh	r3, [r5, #6]	@ movhi
4794	movw	r3, #65535
4795	cmp	r0, r3
4796	beq	.L611
4797	ldr	r3, .L625+24
4798	ldr	r2, [r3]
4799	cmp	r0, r2
4800	beq	.L611
4801	ldr	r3, .L625+28
4802	ldrh	r3, [r3]
4803	lsrs	r3, r3, #2
4804	cmp	r2, r3
4805	bcs	.L611
4806	cmp	r0, r3
4807	bcs	.L611
4808	bl	FtlSysBlkNumInit
4809.L611:
4810	ldr	r6, .L625+32
4811	movs	r5, #0
4812	ldr	r7, .L625+36
4813	ldr	r8, .L625+44
4814.L612:
4815	ldrh	r3, [r7]
4816	cmp	r5, r3
4817	bcc	.L613
4818	movs	r0, #0
4819	pop	{r3, r4, r5, r6, r7, r8, r10, pc}
4820.L599:
4821	subs	r5, r5, #1
4822	uxth	r5, r5
4823	b	.L597
4824.L609:
4825	ldrh	r3, [r5]
4826	movs	r2, #1
4827	mov	r1, r2
4828	mov	r0, r10
4829	orr	r3, r7, r3, lsl #10
4830	str	r3, [r4, #4]
4831	ldr	r3, [r8]
4832	str	r3, [r4, #8]
4833	bl	FlashReadPages
4834	ldr	r3, [r4]
4835	adds	r3, r3, #1
4836	beq	.L607
4837	ldrh	r2, [r6]
4838	movw	r3, #61649
4839	cmp	r2, r3
4840	beq	.L608
4841.L607:
4842	subs	r7, r7, #1
4843	sxth	r7, r7
4844	b	.L606
4845.L613:
4846	ldrh	r2, [r8]
4847	ldr	r1, [r4, #8]
4848	ldr	r0, [r6, #4]!
4849	lsls	r2, r2, #2
4850	mla	r1, r5, r2, r1
4851	adds	r5, r5, #1
4852	bl	ftl_memcpy
4853	b	.L612
4854.L614:
4855	mov	r0, #-1
4856	pop	{r3, r4, r5, r6, r7, r8, r10, pc}
4857.L626:
4858	.align	2
4859.L625:
4860	.word	.LANCHOR137
4861	.word	.LANCHOR16
4862	.word	.LANCHOR113
4863	.word	.LANCHOR36
4864	.word	.LANCHOR140
4865	.word	.LC1
4866	.word	.LANCHOR1
4867	.word	.LANCHOR5
4868	.word	.LANCHOR36+24
4869	.word	.LANCHOR9
4870	.word	.LANCHOR105
4871	.word	.LANCHOR126
4872	.size	FtlLoadBbt, .-FtlLoadBbt
4873	.section	.text.FlashProgPages,"ax",%progbits
4874	.align	1
4875	.global	FlashProgPages
4876	.syntax unified
4877	.thumb
4878	.thumb_func
4879	.fpu softvfp
4880	.type	FlashProgPages, %function
4881FlashProgPages:
4882	@ args = 0, pretend = 0, frame = 48
4883	@ frame_needed = 0, uses_anonymous_args = 0
4884	ldr	r3, .L665
4885	push	{r4, r5, r6, r7, r8, r10, fp, lr}
4886	sub	sp, sp, #48
4887	ldr	fp, .L665+52
4888	mov	r10, r1
4889	mov	r4, r0
4890	mov	r5, r0
4891	ldrh	r3, [r3, #12]
4892	mov	r8, #0
4893	str	r2, [sp, #12]
4894	str	r3, [sp, #4]
4895	lsls	r3, r3, #3
4896	str	r3, [sp, #8]
4897.L628:
4898	cmp	r8, r10
4899	bne	.L641
4900	ldr	r6, .L665+4
4901	movs	r5, #0
4902.L642:
4903	cmp	r8, r5
4904	beq	.L663
4905	ldr	r7, .L665+8
4906	movs	r1, #0
4907	ldr	r2, [r6]
4908	add	r0, sp, #28
4909	ldr	r3, [r7]
4910	str	r1, [r2]
4911	str	r1, [r3]
4912	ldr	r1, [r4, #4]
4913	str	r2, [sp, #36]
4914	ldr	r2, [sp, #12]
4915	str	r1, [sp, #32]
4916	movs	r1, #1
4917	str	r3, [sp, #40]
4918	bl	FlashReadPages
4919	ldr	r10, [sp, #28]
4920	cmp	r10, #-1
4921	bne	.L643
4922	ldr	r1, [r4, #4]
4923	ldr	r0, .L665+12
4924	bl	printf
4925	str	r10, [r4]
4926.L643:
4927	ldr	r10, [sp, #28]
4928	cmp	r10, #256
4929	bne	.L644
4930	ldr	r1, [r4, #4]
4931	ldr	r0, .L665+16
4932	bl	printf
4933	str	r10, [r4]
4934.L644:
4935	ldr	r3, [r4, #12]
4936	cbz	r3, .L645
4937	ldr	r2, [r3]
4938	ldr	r3, [r7]
4939	ldr	r3, [r3]
4940	cmp	r2, r3
4941	beq	.L645
4942	ldr	r1, [r4, #4]
4943	ldr	r0, .L665+20
4944	bl	printf
4945	mov	r3, #-1
4946	str	r3, [r4]
4947.L645:
4948	ldr	r3, [r4, #8]
4949	cbz	r3, .L646
4950	ldr	r2, [r3]
4951	ldr	r3, [r6]
4952	ldr	r3, [r3]
4953	cmp	r2, r3
4954	beq	.L646
4955	ldr	r1, [r4, #4]
4956	ldr	r0, .L665+24
4957	bl	printf
4958	mov	r3, #-1
4959	str	r3, [r4]
4960.L646:
4961	adds	r5, r5, #1
4962	adds	r4, r4, #20
4963	b	.L642
4964.L641:
4965	ldr	r3, [r5, #8]
4966	cbz	r3, .L629
4967	ldr	r3, [r5, #12]
4968	cbnz	r3, .L630
4969.L629:
4970	movs	r2, #142
4971	ldr	r1, .L665+28
4972	ldr	r0, .L665+32
4973	bl	printf
4974.L630:
4975	add	r2, sp, #20
4976	add	r1, sp, #24
4977	ldr	r0, [r5, #4]
4978	bl	l2p_addr_tran.isra.0
4979	ldr	r6, [sp, #20]
4980	cmp	r6, #3
4981	bls	.L631
4982.L664:
4983	mov	r3, #-1
4984	str	r3, [r5]
4985	b	.L632
4986.L631:
4987	cbnz	r6, .L633
4988	ldr	r3, [sp, #24]
4989	ldr	r2, [sp, #8]
4990	cmp	r2, r3
4991	bls	.L633
4992	ldr	r5, .L665+28
4993	ldr	r7, .L665+36
4994	b	.L662
4995.L635:
4996	mov	r3, #-1
4997	ldr	r2, [r4, #-16]
4998	str	r3, [r4, #-20]
4999	mov	r1, r5
5000	mov	r0, r7
5001	adds	r6, r6, #1
5002	bl	printf
5003	movs	r3, #16
5004	movs	r2, #4
5005	ldr	r1, [r4, #-12]
5006	ldr	r0, .L665+40
5007	bl	rknand_print_hex
5008	movs	r3, #4
5009	ldr	r1, [r4, #-8]
5010	mov	r2, r3
5011	ldr	r0, .L665+44
5012	bl	rknand_print_hex
5013.L662:
5014	cmp	r6, r10
5015	add	r4, r4, #20
5016	bne	.L635
5017.L663:
5018	movs	r0, #0
5019	add	sp, sp, #48
5020	@ sp needed
5021	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
5022.L633:
5023	ldr	r1, [r5, #8]
5024	lsls	r3, r1, #26
5025	beq	.L649
5026	ldr	r3, .L665+4
5027	ldr	r6, [r3]
5028	cmp	r1, r6
5029	beq	.L636
5030	ldr	r3, .L665+48
5031	mov	r0, r6
5032	ldrh	r2, [r3]
5033	lsls	r2, r2, #9
5034	bl	ftl_memcpy
5035.L636:
5036	ldr	r3, [r5, #12]
5037	mov	r2, r6
5038	ldr	r1, [sp, #24]
5039	ldrb	r0, [sp, #20]	@ zero_extendqisi2
5040	ldr	r7, [fp, #8]
5041	blx	r7
5042	cbnz	r0, .L637
5043	str	r0, [r5]
5044.L638:
5045	ldr	r3, .L665
5046	ldrh	r3, [r3, #14]
5047	cmp	r3, #4
5048	bne	.L632
5049	ldr	r0, [sp, #4]
5050	add	r2, r6, #2048
5051	ldr	r3, [r5, #12]
5052	ldr	r1, [sp, #24]
5053	ldr	r6, [fp, #8]
5054	adds	r3, r3, #8
5055	add	r1, r1, r0
5056	ldrb	r0, [sp, #20]	@ zero_extendqisi2
5057	blx	r6
5058	cmp	r0, #0
5059	bne	.L664
5060.L632:
5061	add	r8, r8, #1
5062	adds	r5, r5, #20
5063	b	.L628
5064.L649:
5065	mov	r6, r1
5066	b	.L636
5067.L637:
5068	mov	r3, #-1
5069	str	r3, [r5]
5070	b	.L638
5071.L666:
5072	.align	2
5073.L665:
5074	.word	.LANCHOR0
5075	.word	.LANCHOR110
5076	.word	.LANCHOR112
5077	.word	.LC14
5078	.word	.LC15
5079	.word	.LC16
5080	.word	.LC17
5081	.word	.LANCHOR141
5082	.word	.LC1
5083	.word	.LC6
5084	.word	.LC7
5085	.word	.LC8
5086	.word	.LANCHOR11
5087	.word	.LANCHOR77
5088	.size	FlashProgPages, .-FlashProgPages
5089	.section	.text.FtlLowFormatEraseBlock,"ax",%progbits
5090	.align	1
5091	.global	FtlLowFormatEraseBlock
5092	.syntax unified
5093	.thumb
5094	.thumb_func
5095	.fpu softvfp
5096	.type	FtlLowFormatEraseBlock, %function
5097FtlLowFormatEraseBlock:
5098	@ args = 0, pretend = 0, frame = 32
5099	@ frame_needed = 0, uses_anonymous_args = 0
5100	ldr	r3, .L710
5101	push	{r4, r5, r6, r7, r8, r10, fp, lr}
5102	sub	sp, sp, #32
5103	ldr	r7, .L710+4
5104	mov	r8, #0
5105	mov	r6, r1
5106	mov	r5, r8
5107	str	r0, [r3]
5108	mov	r4, r8
5109	ldr	r3, .L710+8
5110	mov	fp, #20
5111	ldr	r10, [r7]
5112	str	r0, [sp, #4]
5113	ldrh	r3, [r3]
5114	str	r3, [sp, #12]
5115	ldr	r3, .L710+12
5116	ldr	r3, [r3]
5117	str	r3, [sp, #16]
5118	ldr	r3, .L710+16
5119	ldr	r3, [r3]
5120	str	r3, [sp, #20]
5121	ldr	r3, .L710+20
5122	ldrh	r3, [r3]
5123	str	r3, [sp, #24]
5124.L668:
5125	ldr	r3, [sp, #12]
5126	uxth	r2, r8
5127	cmp	r3, r2
5128	bhi	.L672
5129	cmp	r5, #0
5130	beq	.L667
5131	mov	r0, r10
5132	mov	r8, #0
5133	mov	r10, #20
5134	mov	r2, r5
5135	movs	r1, #0
5136	bl	FlashEraseBlocks
5137.L675:
5138	uxth	r3, r8
5139	cmp	r5, r3
5140	bhi	.L677
5141	cmp	r6, #0
5142	beq	.L693
5143	ldr	r3, .L710+24
5144	mov	r10, #1
5145	ldrh	r3, [r3]
5146	str	r3, [sp, #8]
5147.L678:
5148	movs	r7, #0
5149.L687:
5150	ldr	r3, .L710+8
5151	mov	r8, #0
5152	mov	r5, r8
5153	ldrh	r3, [r3]
5154	str	r3, [sp, #16]
5155	ldr	r3, .L710+4
5156	ldr	fp, [r3]
5157	ldr	r3, .L710+28
5158	ldr	r3, [r3]
5159	str	r3, [sp, #20]
5160	ldr	r3, .L710+12
5161	ldr	r3, [r3]
5162	str	r3, [sp, #24]
5163	ldr	r3, .L710+20
5164	ldrh	r3, [r3]
5165	str	r3, [sp, #28]
5166.L679:
5167	ldr	r3, [sp, #16]
5168	uxth	r2, r8
5169	cmp	r3, r2
5170	bhi	.L682
5171	cbz	r5, .L667
5172	mov	r0, fp
5173	ldr	fp, .L710+4
5174	movs	r3, #1
5175	mov	r2, r10
5176	mov	r1, r5
5177	mov	r8, #0
5178	bl	FlashProgPages
5179	movs	r3, #20
5180.L684:
5181	uxth	r2, r8
5182	cmp	r5, r2
5183	bhi	.L686
5184	adds	r7, r7, #1
5185	ldr	r2, [sp, #8]
5186	uxth	r3, r7
5187	cmp	r2, r3
5188	bhi	.L687
5189	ldr	r8, .L710+4
5190	movs	r7, #0
5191	mov	fp, #20
5192.L688:
5193	uxth	r3, r7
5194	cmp	r5, r3
5195	bhi	.L690
5196	ldr	r3, [sp, #4]
5197	cmp	r3, #63
5198	bls	.L691
5199	cbz	r6, .L667
5200.L691:
5201	ldr	r3, .L710+4
5202	mov	r2, r5
5203	mov	r1, r10
5204	ldr	r0, [r3]
5205	bl	FlashEraseBlocks
5206.L667:
5207	mov	r0, r4
5208	add	sp, sp, #32
5209	@ sp needed
5210	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
5211.L672:
5212	mul	r2, fp, r8
5213	movs	r3, #0
5214	ldr	r1, [sp, #4]
5215	str	r3, [r10, r2]
5216	ldr	r3, .L710+32
5217	ldrb	r0, [r3, r8]	@ zero_extendqisi2
5218	bl	V2P_block
5219	str	r0, [sp, #8]
5220	cbz	r6, .L669
5221	bl	IsBlkInVendorPart
5222	cbnz	r0, .L670
5223.L669:
5224	ldr	r0, [sp, #8]
5225	bl	FtlBbmIsBadBlock
5226	cbnz	r0, .L671
5227	ldr	r3, [sp, #8]
5228	mla	r1, fp, r5, r10
5229	lsls	r2, r3, #10
5230	ldr	r3, [sp, #16]
5231	str	r2, [r1, #4]
5232	str	r3, [r1, #8]
5233	ldr	r3, [sp, #24]
5234	mul	r2, r3, r5
5235	ldr	r3, [sp, #20]
5236	adds	r5, r5, #1
5237	uxth	r5, r5
5238	bic	r2, r2, #3
5239	add	r2, r2, r3
5240	str	r2, [r1, #12]
5241.L670:
5242	add	r8, r8, #1
5243	b	.L668
5244.L671:
5245	adds	r4, r4, #1
5246	uxth	r4, r4
5247	b	.L670
5248.L677:
5249	mul	r3, r10, r8
5250	ldr	r2, [r7]
5251	adds	r1, r2, r3
5252	ldr	r3, [r2, r3]
5253	adds	r3, r3, #1
5254	bne	.L676
5255	ldr	r0, [r1, #4]
5256	adds	r4, r4, #1
5257	uxth	r4, r4
5258	ubfx	r0, r0, #10, #16
5259	bl	FtlBbmMapBadBlock
5260.L676:
5261	add	r8, r8, #1
5262	b	.L675
5263.L693:
5264	movs	r3, #2
5265	mov	r10, r6
5266	str	r3, [sp, #8]
5267	b	.L678
5268.L682:
5269	movs	r3, #20
5270	ldr	r1, [sp, #4]
5271	mul	r2, r3, r8
5272	movs	r3, #0
5273	str	r3, [fp, r2]
5274	ldr	r3, .L710+32
5275	ldrb	r0, [r3, r8]	@ zero_extendqisi2
5276	bl	V2P_block
5277	str	r0, [sp, #12]
5278	cbz	r6, .L680
5279	bl	IsBlkInVendorPart
5280	cbnz	r0, .L681
5281.L680:
5282	ldr	r0, [sp, #12]
5283	bl	FtlBbmIsBadBlock
5284	cbnz	r0, .L681
5285	movs	r3, #20
5286	mla	r1, r3, r5, fp
5287	ldr	r3, [sp, #12]
5288	add	r2, r7, r3, lsl #10
5289	ldr	r3, [sp, #20]
5290	str	r2, [r1, #4]
5291	str	r3, [r1, #8]
5292	ldr	r3, [sp, #28]
5293	mul	r2, r3, r5
5294	ldr	r3, [sp, #24]
5295	adds	r5, r5, #1
5296	uxth	r5, r5
5297	bic	r2, r2, #3
5298	add	r2, r2, r3
5299	str	r2, [r1, #12]
5300.L681:
5301	add	r8, r8, #1
5302	b	.L679
5303.L686:
5304	mul	r2, r3, r8
5305	ldr	r1, [fp]
5306	adds	r0, r1, r2
5307	ldr	r2, [r1, r2]
5308	cbz	r2, .L685
5309	ldr	r0, [r0, #4]
5310	adds	r4, r4, #1
5311	str	r3, [sp, #12]
5312	uxth	r4, r4
5313	ubfx	r0, r0, #10, #16
5314	bl	FtlBbmMapBadBlock
5315	ldr	r3, [sp, #12]
5316.L685:
5317	add	r8, r8, #1
5318	b	.L684
5319.L690:
5320	cbz	r6, .L689
5321	mul	r3, fp, r7
5322	ldr	r2, [r8]
5323	adds	r1, r2, r3
5324	ldr	r3, [r2, r3]
5325	cbnz	r3, .L689
5326	ldr	r0, [r1, #4]
5327	movs	r1, #1
5328	ubfx	r0, r0, #10, #16
5329	bl	FtlFreeSysBlkQueueIn
5330.L689:
5331	adds	r7, r7, #1
5332	b	.L688
5333.L711:
5334	.align	2
5335.L710:
5336	.word	.LANCHOR98
5337	.word	.LANCHOR78
5338	.word	.LANCHOR2
5339	.word	.LANCHOR109
5340	.word	.LANCHOR114
5341	.word	.LANCHOR23
5342	.word	.LANCHOR19
5343	.word	.LANCHOR108
5344	.word	.LANCHOR12
5345	.size	FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
5346	.section	.text.FlashTestBlk,"ax",%progbits
5347	.align	1
5348	.global	FlashTestBlk
5349	.syntax unified
5350	.thumb
5351	.thumb_func
5352	.fpu softvfp
5353	.type	FlashTestBlk, %function
5354FlashTestBlk:
5355	@ args = 0, pretend = 0, frame = 88
5356	@ frame_needed = 0, uses_anonymous_args = 0
5357	cmp	r0, #11
5358	push	{r4, r5, lr}
5359	mov	r5, r0
5360	sub	sp, sp, #92
5361	bls	.L715
5362	ldr	r4, .L717
5363	add	r0, sp, #24
5364	movs	r2, #32
5365	movs	r1, #165
5366	str	r0, [sp, #16]
5367	lsls	r5, r5, #10
5368	ldr	r3, [r4]
5369	str	r3, [sp, #12]
5370	bl	ftl_memset
5371	movs	r2, #8
5372	movs	r1, #90
5373	ldr	r0, [r4]
5374	bl	ftl_memset
5375	movs	r2, #1
5376	add	r0, sp, #4
5377	mov	r1, r2
5378	str	r5, [sp, #8]
5379	bl	FlashEraseBlocks
5380	movs	r3, #1
5381	add	r0, sp, #4
5382	mov	r2, r3
5383	mov	r1, r3
5384	bl	FlashProgPages
5385	ldr	r3, [sp, #4]
5386	cbnz	r3, .L716
5387	adds	r3, r5, #1
5388	add	r0, sp, #4
5389	str	r3, [sp, #8]
5390	movs	r3, #1
5391	mov	r2, r3
5392	mov	r1, r3
5393	bl	FlashProgPages
5394	ldr	r4, [sp, #4]
5395	adds	r4, r4, #0
5396	it	ne
5397	movne	r4, #1
5398	negs	r4, r4
5399.L714:
5400	movs	r2, #1
5401	movs	r1, #0
5402	add	r0, sp, #4
5403	str	r5, [sp, #8]
5404	bl	FlashEraseBlocks
5405.L712:
5406	mov	r0, r4
5407	add	sp, sp, #92
5408	@ sp needed
5409	pop	{r4, r5, pc}
5410.L716:
5411	mov	r4, #-1
5412	b	.L714
5413.L715:
5414	movs	r4, #0
5415	b	.L712
5416.L718:
5417	.align	2
5418.L717:
5419	.word	.LANCHOR111
5420	.size	FlashTestBlk, .-FlashTestBlk
5421	.section	.text.FtlBbmTblFlush,"ax",%progbits
5422	.align	1
5423	.global	FtlBbmTblFlush
5424	.syntax unified
5425	.thumb
5426	.thumb_func
5427	.fpu softvfp
5428	.type	FtlBbmTblFlush, %function
5429FtlBbmTblFlush:
5430	@ args = 0, pretend = 0, frame = 8
5431	@ frame_needed = 0, uses_anonymous_args = 0
5432	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
5433	movs	r1, #0
5434	ldr	r7, .L733
5435	movs	r4, #0
5436	ldr	r5, .L733+4
5437	ldr	r3, [r7]
5438	ldr	fp, .L733+52
5439	ldr	r6, .L733+8
5440	str	r3, [r5, #12]
5441	ldr	r3, .L733+12
5442	ldr	r0, [fp]
5443	ldr	r8, .L733+56
5444	ldrh	r2, [r3]
5445	str	r0, [r5, #8]
5446	bl	ftl_memset
5447	str	r7, [sp, #12]
5448	ldr	r7, .L733+16
5449.L720:
5450	ldrh	r3, [r7]
5451	cmp	r4, r3
5452	blt	.L721
5453	ldr	r6, [r5, #12]
5454	movs	r2, #16
5455	ldr	r4, .L733+20
5456	movs	r1, #255
5457	movs	r7, #0
5458	mov	r0, r6
5459	mov	r8, r7
5460	bl	ftl_memset
5461	movw	r3, #61649
5462	mov	r10, r4
5463	strh	r3, [r6]	@ movhi
5464	ldr	r3, [r4, #8]
5465	str	r3, [r6, #4]
5466	ldrh	r3, [r4]
5467	strh	r3, [r6, #2]	@ movhi
5468	ldrh	r3, [r4, #4]
5469	strh	r3, [r6, #8]	@ movhi
5470	ldrh	r3, [r4, #6]
5471	strh	r3, [r6, #10]	@ movhi
5472	ldr	r3, .L733+24
5473	ldr	r3, [r3]
5474	strh	r3, [r6, #12]	@ movhi
5475	ldr	r3, .L733+28
5476	ldr	r3, [r3]
5477	strh	r3, [r6, #14]	@ movhi
5478.L722:
5479	ldr	r3, [fp]
5480	ldrh	r2, [r4, #2]
5481	ldrh	r1, [r4]
5482	str	r3, [r5, #8]
5483	ldr	r3, [sp, #12]
5484	ldrh	r0, [r6, #10]
5485	ldr	r3, [r3]
5486	str	r3, [r5, #12]
5487	movs	r3, #0
5488	str	r3, [r5]
5489	orr	r3, r2, r1, lsl #10
5490	str	r3, [r5, #4]
5491	ldrh	r3, [r4, #4]
5492	str	r0, [sp]
5493	ldr	r0, .L733+32
5494	bl	printf
5495	ldr	r3, .L733+36
5496	ldrh	r2, [r4, #2]
5497	ldrh	r3, [r3]
5498	subs	r3, r3, #1
5499	cmp	r2, r3
5500	blt	.L723
5501	ldr	r3, [r4, #8]
5502	mov	r1, #0	@ movhi
5503	ldrh	r2, [r4]
5504	strh	r1, [r4, #2]	@ movhi
5505	adds	r3, r3, #1
5506	str	r3, [r4, #8]
5507	str	r3, [r6, #4]
5508	strh	r2, [r6, #8]	@ movhi
5509	ldrh	r3, [r4, #4]
5510	strh	r2, [r4, #4]	@ movhi
5511	ldr	r2, .L733+40
5512	strh	r3, [r4]	@ movhi
5513	lsls	r3, r3, #10
5514	ldr	r0, [r2]
5515	movs	r2, #1
5516	str	r3, [r5, #4]
5517	mov	r1, r2
5518	str	r3, [r0, #4]
5519	bl	FlashEraseBlocks
5520.L723:
5521	movs	r3, #1
5522	ldr	r0, .L733+4
5523	mov	r2, r3
5524	mov	r1, r3
5525	bl	FlashProgPages
5526	ldrh	r3, [r10, #2]
5527	adds	r3, r3, #1
5528	strh	r3, [r10, #2]	@ movhi
5529	ldr	r3, [r5]
5530	adds	r2, r3, #1
5531	bne	.L724
5532	adds	r7, r7, #1
5533	ldr	r1, [r5, #4]
5534	uxth	r7, r7
5535	ldr	r0, .L733+44
5536	bl	printf
5537	cmp	r7, #3
5538	bls	.L722
5539	mov	r2, r7
5540	ldr	r1, [r5, #4]
5541	ldr	r0, .L733+48
5542	bl	printf
5543.L726:
5544	b	.L726
5545.L721:
5546	ldrh	r2, [r8]
5547	ldr	r3, [r5, #8]
5548	ldr	r1, [r6, #4]!
5549	mul	r0, r2, r4
5550	lsls	r2, r2, #2
5551	adds	r4, r4, #1
5552	add	r0, r3, r0, lsl #2
5553	bl	ftl_memcpy
5554	b	.L720
5555.L724:
5556	add	r8, r8, #1
5557	cmp	r8, #1
5558	beq	.L722
5559	cmp	r3, #256
5560	beq	.L722
5561	movs	r0, #0
5562	add	sp, sp, #16
5563	@ sp needed
5564	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
5565.L734:
5566	.align	2
5567.L733:
5568	.word	.LANCHOR113
5569	.word	.LANCHOR137
5570	.word	.LANCHOR36+24
5571	.word	.LANCHOR22
5572	.word	.LANCHOR9
5573	.word	.LANCHOR36
5574	.word	.LANCHOR1
5575	.word	.LANCHOR142
5576	.word	.LC18
5577	.word	.LANCHOR19
5578	.word	.LANCHOR78
5579	.word	.LC19
5580	.word	.LC20
5581	.word	.LANCHOR105
5582	.word	.LANCHOR126
5583	.size	FtlBbmTblFlush, .-FtlBbmTblFlush
5584	.section	.text.allocate_data_superblock,"ax",%progbits
5585	.align	1
5586	.global	allocate_data_superblock
5587	.syntax unified
5588	.thumb
5589	.thumb_func
5590	.fpu softvfp
5591	.type	allocate_data_superblock, %function
5592allocate_data_superblock:
5593	@ args = 0, pretend = 0, frame = 8
5594	@ frame_needed = 0, uses_anonymous_args = 0
5595	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
5596	mov	r4, r0
5597	ldr	r10, .L774
5598.L736:
5599	ldr	r3, .L774
5600	ldr	r8, .L774+80
5601	ldr	r7, .L774+4
5602	ldrh	r3, [r3]
5603	ldrh	r2, [r8]
5604	add	r3, r3, r2
5605	ldrh	r2, [r7]
5606	cmp	r3, r2
5607	ble	.L737
5608	movw	r2, #2667
5609	ldr	r1, .L774+8
5610	ldr	r0, .L774+12
5611	bl	printf
5612.L737:
5613	ldr	r3, .L774+16
5614	cmp	r4, r3
5615	bne	.L763
5616	ldr	r2, .L774+20
5617	ldrh	r3, [r10]
5618	ldr	r2, [r2]
5619	lsrs	r1, r3, #1
5620	muls	r2, r3, r2
5621	adds	r1, r1, #1
5622	add	r1, r1, r2, lsr #2
5623	uxth	r1, r1
5624	cbz	r1, .L738
5625	subs	r1, r1, #1
5626	uxth	r1, r1
5627.L738:
5628	ldr	r0, .L774+24
5629	bl	List_pop_index_node
5630	ldrh	r3, [r10]
5631	mov	r5, r0
5632	uxth	fp, r0
5633	cbnz	r3, .L739
5634	movw	r2, #2676
5635	ldr	r1, .L774+8
5636	ldr	r0, .L774+12
5637	bl	printf
5638.L739:
5639	ldrh	r3, [r10]
5640	subs	r3, r3, #1
5641	strh	r3, [r10]	@ movhi
5642	ldrh	r3, [r7]
5643	cmp	r3, fp
5644	bls	.L736
5645	uxth	r5, r5
5646	lsls	r3, r5, #1
5647	str	r3, [sp]
5648	ldr	r3, .L774+28
5649	ldr	r3, [r3]
5650	ldrh	r6, [r3, r5, lsl #1]
5651	cmp	r6, #0
5652	bne	.L736
5653	strh	fp, [r4]	@ movhi
5654	mov	r0, r4
5655	bl	make_superblock
5656	ldrb	r3, [r4, #7]	@ zero_extendqisi2
5657	cbnz	r3, .L741
5658	ldr	r3, .L774+28
5659	movw	r2, #65535
5660	mov	r0, fp
5661	ldr	r3, [r3]
5662	strh	r2, [r3, r5, lsl #1]	@ movhi
5663	bl	INSERT_DATA_LIST
5664	ldrh	r2, [r8]
5665	ldrh	r3, [r10]
5666	add	r3, r3, r2
5667	ldrh	r2, [r7]
5668	cmp	r3, r2
5669	ble	.L736
5670	movw	r2, #2690
5671	ldr	r1, .L774+8
5672	ldr	r0, .L774+12
5673	bl	printf
5674	b	.L736
5675.L763:
5676	movs	r1, #0
5677	b	.L738
5678.L741:
5679	ldrh	r2, [r8]
5680	ldrh	r3, [r10]
5681	add	r3, r3, r2
5682	ldrh	r2, [r7]
5683	cmp	r3, r2
5684	ble	.L743
5685	movw	r2, #2693
5686	ldr	r1, .L774+8
5687	ldr	r0, .L774+12
5688	bl	printf
5689.L743:
5690	ldr	r3, .L774+32
5691	add	lr, r4, #16
5692	ldr	r2, .L774+36
5693	mov	r8, #0
5694	ldr	ip, [r3]
5695	ldrh	r0, [r2]
5696	movs	r2, #20
5697	str	r2, [sp, #4]
5698	mov	r3, ip
5699	mla	r0, r2, r0, ip
5700.L744:
5701	cmp	r0, r3
5702	bne	.L746
5703	cbnz	r6, .L747
5704	mov	r2, #2704
5705	ldr	r1, .L774+8
5706	ldr	r0, .L774+12
5707	bl	printf
5708.L747:
5709	ldr	r3, .L774+40
5710	ldrh	r3, [r3]
5711	cmp	r3, fp
5712	bne	.L748
5713	movw	r2, #2706
5714	ldr	r1, .L774+8
5715	ldr	r0, .L774+12
5716	bl	printf
5717.L748:
5718	ldrb	r3, [r4, #8]	@ zero_extendqisi2
5719	ldr	r0, .L774+44
5720	ldr	ip, .L774+84
5721	ldr	r1, .L774+48
5722	ldr	r2, .L774+52
5723	ldr	lr, [r0]
5724	cmp	r3, #0
5725	bne	.L749
5726	ldrh	r3, [lr, r5, lsl #1]
5727	cmp	r3, #0
5728	beq	.L750
5729	ldrh	r8, [ip]
5730	add	r3, r3, r8
5731.L773:
5732	strh	r3, [lr, r5, lsl #1]	@ movhi
5733	ldr	r3, [r1]
5734	adds	r3, r3, #1
5735	str	r3, [r1]
5736.L752:
5737	ldr	r3, [r0]
5738	ldr	r0, .L774+56
5739	ldrh	lr, [r3, r5, lsl #1]
5740	ldr	r3, [r0]
5741	cmp	lr, r3
5742	ldr	r3, [r2]
5743	it	hi
5744	strhi	lr, [r0]
5745	ldrh	r0, [ip]
5746	ldr	ip, [r1]
5747	ldrh	r1, [r7]
5748	ldr	r7, .L774+60
5749	mla	r0, ip, r0, r3
5750	bl	__aeabi_uidiv
5751	ldr	r3, .L774+64
5752	str	r0, [r3]
5753	ldr	r3, .L774+68
5754	ldr	r2, [r3]
5755	ldr	r3, [r2, #16]
5756	adds	r3, r3, #1
5757	str	r3, [r2, #16]
5758	movs	r2, #20
5759	ldr	r3, .L774+32
5760	ldr	r0, [r3]
5761	adds	r3, r0, #4
5762	mla	r2, r2, r6, r0
5763	adds	r2, r2, #24
5764.L754:
5765	adds	r3, r3, #20
5766	cmp	r2, r3
5767	bne	.L755
5768	movs	r7, #0
5769	mov	r2, r6
5770	mov	r8, r7
5771	ldrb	r1, [r4, #8]	@ zero_extendqisi2
5772	bl	FlashEraseBlocks
5773.L756:
5774	uxth	r3, r7
5775	cmp	r6, r3
5776	bhi	.L758
5777	cmp	r8, #0
5778	beq	.L759
5779	mov	r0, fp
5780	bl	update_multiplier_value
5781	bl	FtlBbmTblFlush
5782.L759:
5783	ldrb	r2, [r4, #7]	@ zero_extendqisi2
5784	cmp	r2, #0
5785	bne	.L760
5786	ldr	r3, .L774+28
5787	movw	r2, #65535
5788	ldr	r3, [r3]
5789	strh	r2, [r3, r5, lsl #1]	@ movhi
5790	b	.L736
5791.L746:
5792	ldrh	r1, [lr], #2
5793	movw	r2, #65535
5794	str	r8, [r3, #8]
5795	str	r8, [r3, #12]
5796	cmp	r1, r2
5797	beq	.L745
5798	ldr	r2, [sp, #4]
5799	lsls	r1, r1, #10
5800	mla	r2, r2, r6, ip
5801	adds	r6, r6, #1
5802	uxth	r6, r6
5803	str	r1, [r2, #4]
5804.L745:
5805	adds	r3, r3, #20
5806	b	.L744
5807.L750:
5808	movs	r3, #2
5809	b	.L773
5810.L749:
5811	ldrh	r3, [lr, r5, lsl #1]
5812	adds	r3, r3, #1
5813	strh	r3, [lr, r5, lsl #1]	@ movhi
5814	ldr	r3, [r2]
5815	adds	r3, r3, #1
5816	str	r3, [r2]
5817	b	.L752
5818.L755:
5819	ldr	r1, [r3, #-20]
5820	ands	r1, r1, r7
5821	str	r1, [r3, #-20]
5822	b	.L754
5823.L758:
5824	ldr	r2, .L774+32
5825	movs	r3, #20
5826	muls	r3, r7, r3
5827	ldr	r2, [r2]
5828	adds	r1, r2, r3
5829	ldr	r2, [r2, r3]
5830	adds	r3, r2, #1
5831	bne	.L757
5832	ldr	r0, [r1, #4]
5833	add	r8, r8, #1
5834	str	r2, [sp, #4]
5835	ubfx	r0, r0, #10, #16
5836	bl	FtlBbmMapBadBlock
5837	ldr	r2, [sp, #4]
5838	add	r3, r4, r7, lsl #1
5839	strh	r2, [r3, #16]	@ movhi
5840	ldrb	r3, [r4, #7]	@ zero_extendqisi2
5841	subs	r3, r3, #1
5842	strb	r3, [r4, #7]
5843.L757:
5844	adds	r7, r7, #1
5845	b	.L756
5846.L760:
5847	ldr	r3, .L774+72
5848	ldr	r1, .L774+76
5849	ldrh	r3, [r3]
5850	strh	fp, [r4]	@ movhi
5851	smulbb	r3, r3, r2
5852	movs	r2, #0
5853	strh	r2, [r4, #2]	@ movhi
5854	strb	r2, [r4, #6]
5855	ldr	r2, [r1]
5856	uxth	r3, r3
5857	strh	r3, [r4, #4]	@ movhi
5858	str	r2, [r4, #12]
5859	adds	r2, r2, #1
5860	str	r2, [r1]
5861	ldr	r2, .L774+28
5862	ldr	r1, [sp]
5863	ldr	r2, [r2]
5864	strh	r3, [r2, r1]	@ movhi
5865	ldrh	r3, [r4, #4]
5866	cbz	r3, .L761
5867	ldrb	r3, [r4, #7]	@ zero_extendqisi2
5868	cbnz	r3, .L762
5869.L761:
5870	movw	r2, #2759
5871	ldr	r1, .L774+8
5872	ldr	r0, .L774+12
5873	bl	printf
5874.L762:
5875	movs	r0, #0
5876	add	sp, sp, #8
5877	@ sp needed
5878	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
5879.L775:
5880	.align	2
5881.L774:
5882	.word	.LANCHOR47
5883	.word	.LANCHOR4
5884	.word	.LANCHOR143
5885	.word	.LC1
5886	.word	.LANCHOR52
5887	.word	.LANCHOR94
5888	.word	.LANCHOR45
5889	.word	.LANCHOR41
5890	.word	.LANCHOR78
5891	.word	.LANCHOR2
5892	.word	.LANCHOR144
5893	.word	.LANCHOR46
5894	.word	.LANCHOR89
5895	.word	.LANCHOR90
5896	.word	.LANCHOR91
5897	.word	-1024
5898	.word	.LANCHOR142
5899	.word	.LANCHOR117
5900	.word	.LANCHOR18
5901	.word	.LANCHOR81
5902	.word	.LANCHOR43
5903	.word	.LANCHOR13
5904	.size	allocate_data_superblock, .-allocate_data_superblock
5905	.section	.text.FtlGcFreeBadSuperBlk,"ax",%progbits
5906	.align	1
5907	.global	FtlGcFreeBadSuperBlk
5908	.syntax unified
5909	.thumb
5910	.thumb_func
5911	.fpu softvfp
5912	.type	FtlGcFreeBadSuperBlk, %function
5913FtlGcFreeBadSuperBlk:
5914	@ args = 0, pretend = 0, frame = 8
5915	@ frame_needed = 0, uses_anonymous_args = 0
5916	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
5917	mov	r10, r0
5918	ldr	r4, .L788
5919	ldrh	r3, [r4]
5920	cbz	r3, .L777
5921	ldr	r8, .L788+12
5922	movs	r7, #0
5923.L778:
5924	ldr	r3, .L788+4
5925	ldrh	r2, [r3]
5926	uxth	r3, r7
5927	cmp	r2, r3
5928	bhi	.L784
5929	bl	FtlGcReFreshBadBlk
5930.L777:
5931	movs	r0, #0
5932	add	sp, sp, #8
5933	@ sp needed
5934	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
5935.L784:
5936	ldr	r2, .L788+8
5937	uxth	r3, r7
5938	mov	r1, r10
5939	mov	fp, #0
5940	ldrb	r0, [r2, r3]	@ zero_extendqisi2
5941	bl	V2P_block
5942	mov	r1, r0
5943.L779:
5944	ldrh	r3, [r4]
5945	uxth	r5, fp
5946	cmp	r3, r5
5947	bhi	.L783
5948	adds	r7, r7, #1
5949	b	.L778
5950.L783:
5951	uxth	r6, fp
5952	ldrh	r3, [r8, r6, lsl #1]
5953	cmp	r3, r1
5954	bne	.L780
5955	mov	r0, r1
5956	str	r1, [sp, #4]
5957	bl	FtlBbmMapBadBlock
5958	bl	FtlBbmTblFlush
5959	ldrh	r2, [r4]
5960	add	r3, r8, r6, lsl #1
5961	ldr	r1, [sp, #4]
5962.L781:
5963	cmp	r5, r2
5964	bcc	.L782
5965	subs	r2, r2, #1
5966	strh	r2, [r4]	@ movhi
5967.L780:
5968	add	fp, fp, #1
5969	b	.L779
5970.L782:
5971	ldrh	r0, [r3, #2]!
5972	adds	r5, r5, #1
5973	uxth	r5, r5
5974	strh	r0, [r3, #-2]	@ movhi
5975	b	.L781
5976.L789:
5977	.align	2
5978.L788:
5979	.word	.LANCHOR73
5980	.word	.LANCHOR2
5981	.word	.LANCHOR12
5982	.word	.LANCHOR74
5983	.size	FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
5984	.section	.text.update_vpc_list,"ax",%progbits
5985	.align	1
5986	.global	update_vpc_list
5987	.syntax unified
5988	.thumb
5989	.thumb_func
5990	.fpu softvfp
5991	.type	update_vpc_list, %function
5992update_vpc_list:
5993	@ args = 0, pretend = 0, frame = 0
5994	@ frame_needed = 0, uses_anonymous_args = 0
5995	push	{r3, r4, r5, lr}
5996	mov	r4, r0
5997	ldr	r3, .L802
5998	ldr	r3, [r3]
5999	ldrh	r3, [r3, r0, lsl #1]
6000	cmp	r3, #0
6001	bne	.L791
6002	ldr	r3, .L802+4
6003	ldrh	r2, [r3]
6004	cmp	r2, r0
6005	itt	eq
6006	movweq	r2, #65535
6007	strheq	r2, [r3]	@ movhi
6008	ldr	r3, .L802+8
6009	ldrh	r2, [r3]
6010	cmp	r2, r0
6011	itt	eq
6012	movweq	r2, #65535
6013	strheq	r2, [r3]	@ movhi
6014	ldr	r3, .L802+12
6015	ldrh	r2, [r3]
6016	cmp	r2, r0
6017	bne	.L794
6018	movw	r2, #65535
6019	strh	r2, [r3]	@ movhi
6020.L795:
6021	ldr	r5, .L802+16
6022	mov	r1, r4
6023	ldr	r0, .L802+20
6024	bl	List_remove_node
6025	ldrh	r3, [r5]
6026	cbnz	r3, .L797
6027	movw	r2, #2835
6028	ldr	r1, .L802+24
6029	ldr	r0, .L802+28
6030	bl	printf
6031.L797:
6032	ldrh	r3, [r5]
6033	mov	r0, r4
6034	subs	r3, r3, #1
6035	strh	r3, [r5]	@ movhi
6036	bl	free_data_superblock
6037	mov	r0, r4
6038	bl	FtlGcFreeBadSuperBlk
6039	ldr	r3, .L802+32
6040	ldrh	r2, [r5]
6041	ldrh	r3, [r3]
6042	add	r3, r3, r2
6043	ldr	r2, .L802+36
6044	ldrh	r2, [r2]
6045	cmp	r3, r2
6046	ble	.L801
6047	movw	r2, #2838
6048	ldr	r1, .L802+24
6049	ldr	r0, .L802+28
6050	bl	printf
6051.L801:
6052	movs	r0, #1
6053	pop	{r3, r4, r5, pc}
6054.L794:
6055	ldr	r3, .L802+40
6056	ldrh	r3, [r3]
6057	cmp	r3, r0
6058	beq	.L800
6059	ldr	r3, .L802+44
6060	ldrh	r3, [r3]
6061	cmp	r3, r0
6062	beq	.L800
6063	ldr	r3, .L802+48
6064	ldrh	r3, [r3]
6065	cmp	r3, r0
6066	bne	.L795
6067.L800:
6068	movs	r0, #0
6069	pop	{r3, r4, r5, pc}
6070.L791:
6071	bl	List_update_data_list
6072	b	.L800
6073.L803:
6074	.align	2
6075.L802:
6076	.word	.LANCHOR41
6077	.word	.LANCHOR71
6078	.word	.LANCHOR72
6079	.word	.LANCHOR144
6080	.word	.LANCHOR43
6081	.word	.LANCHOR40
6082	.word	.LANCHOR145
6083	.word	.LC1
6084	.word	.LANCHOR47
6085	.word	.LANCHOR4
6086	.word	.LANCHOR50
6087	.word	.LANCHOR51
6088	.word	.LANCHOR52
6089	.size	update_vpc_list, .-update_vpc_list
6090	.section	.text.decrement_vpc_count,"ax",%progbits
6091	.align	1
6092	.global	decrement_vpc_count
6093	.syntax unified
6094	.thumb
6095	.thumb_func
6096	.fpu softvfp
6097	.type	decrement_vpc_count, %function
6098decrement_vpc_count:
6099	@ args = 0, pretend = 0, frame = 0
6100	@ frame_needed = 0, uses_anonymous_args = 0
6101	movw	r3, #65535
6102	push	{r4, r5, r6, lr}
6103	cmp	r0, r3
6104	mov	r4, r0
6105	beq	.L805
6106	ldr	r5, .L813
6107	ldr	r3, [r5]
6108	ldrh	r2, [r3, r0, lsl #1]
6109	cbnz	r2, .L806
6110	mov	r1, r0
6111	ldr	r0, .L813+4
6112	bl	printf
6113	ldr	r3, [r5]
6114	ldrh	r5, [r3, r4, lsl #1]
6115	cbz	r5, .L807
6116.L811:
6117	movs	r5, #0
6118.L804:
6119	mov	r0, r5
6120	pop	{r4, r5, r6, pc}
6121.L807:
6122	movw	r2, #2853
6123.L812:
6124	ldr	r1, .L813+8
6125	ldr	r0, .L813+12
6126	bl	printf
6127	b	.L804
6128.L806:
6129	subs	r2, r2, #1
6130	strh	r2, [r3, r0, lsl #1]	@ movhi
6131.L805:
6132	ldr	r6, .L813+16
6133	movw	r3, #65535
6134	ldrh	r0, [r6]
6135	cmp	r0, r3
6136	bne	.L809
6137	strh	r4, [r6]	@ movhi
6138	b	.L811
6139.L809:
6140	cmp	r4, r0
6141	beq	.L811
6142	bl	update_vpc_list
6143	ldr	r3, .L813+20
6144	adds	r5, r0, #0
6145	ldr	r2, .L813+24
6146	it	ne
6147	movne	r5, #1
6148	strh	r4, [r6]	@ movhi
6149	ldr	r3, [r3]
6150	ldr	r2, [r2]
6151	subs	r3, r3, r2
6152	asrs	r2, r3, #1
6153	ldr	r3, .L813+28
6154	muls	r3, r2, r3
6155	ldr	r2, .L813
6156	ldr	r2, [r2]
6157	uxth	r1, r3
6158	ldrh	r2, [r2, r1, lsl #1]
6159	cmp	r2, #0
6160	bne	.L804
6161	cmp	r4, r1
6162	beq	.L804
6163	movw	r2, #2869
6164	b	.L812
6165.L814:
6166	.align	2
6167.L813:
6168	.word	.LANCHOR41
6169	.word	.LC21
6170	.word	.LANCHOR146
6171	.word	.LC1
6172	.word	.LANCHOR130
6173	.word	.LANCHOR40
6174	.word	.LANCHOR39
6175	.word	-1431655765
6176	.size	decrement_vpc_count, .-decrement_vpc_count
6177	.section	.text.FtlSuperblockPowerLostFix,"ax",%progbits
6178	.align	1
6179	.global	FtlSuperblockPowerLostFix
6180	.syntax unified
6181	.thumb
6182	.thumb_func
6183	.fpu softvfp
6184	.type	FtlSuperblockPowerLostFix, %function
6185FtlSuperblockPowerLostFix:
6186	@ args = 0, pretend = 0, frame = 24
6187	@ frame_needed = 0, uses_anonymous_args = 0
6188	push	{r4, r5, r6, r7, r8, lr}
6189	mov	r3, #-1
6190	sub	sp, sp, #24
6191	ldr	r2, .L828
6192	movs	r6, #0
6193	mov	r4, r0
6194	str	r3, [sp, #20]
6195	ldr	r3, .L828+4
6196	ldr	r5, [r2]
6197	mvn	r2, #2
6198	ldr	r8, .L828+16
6199	ldr	r3, [r3]
6200	str	r5, [sp, #16]
6201	str	r3, [sp, #12]
6202	str	r2, [r5, #8]
6203	mvn	r2, #1
6204	str	r2, [r5, #12]
6205	ldrh	r2, [r0]
6206	strh	r6, [r5]	@ movhi
6207	strh	r2, [r5, #2]	@ movhi
6208	movw	r2, #61589
6209	str	r2, [r3]
6210	add	r2, r2, #304087040
6211	add	r2, r2, #1269760
6212	addw	r2, r2, #1507
6213	str	r2, [r3, #4]
6214	ldrh	r3, [r0, #4]
6215	tst	r3, #1
6216	ite	eq
6217	moveq	r7, #6
6218	movne	r7, #7
6219.L821:
6220	ldrh	r3, [r4, #4]
6221	cbnz	r3, .L817
6222.L818:
6223	ldr	r3, .L828+8
6224	ldrh	r1, [r4]
6225	ldrh	r0, [r4, #4]
6226	ldr	r2, [r3]
6227	ldrh	r3, [r2, r1, lsl #1]
6228	subs	r3, r3, r0
6229	strh	r3, [r2, r1, lsl #1]	@ movhi
6230	ldr	r3, .L828+12
6231	ldrh	r3, [r3]
6232	strh	r3, [r4, #2]	@ movhi
6233	movs	r3, #0
6234	strb	r3, [r4, #6]
6235	strh	r3, [r4, #4]	@ movhi
6236	add	sp, sp, #24
6237	@ sp needed
6238	pop	{r4, r5, r6, r7, r8, pc}
6239.L817:
6240	mov	r0, r4
6241	bl	get_new_active_ppa
6242	str	r0, [sp, #8]
6243	adds	r0, r0, #1
6244	beq	.L818
6245	ldr	r3, [r8]
6246	movs	r1, #1
6247	add	r0, sp, #4
6248	str	r3, [r5, #4]
6249	adds	r3, r3, #1
6250	adds	r2, r3, #1
6251	it	eq
6252	moveq	r3, r6
6253	str	r3, [r8]
6254	movs	r3, #0
6255	mov	r2, r3
6256	bl	FlashProgPages
6257	ldrh	r0, [r4]
6258	bl	decrement_vpc_count
6259	subs	r7, r7, #1
6260	bne	.L821
6261	b	.L818
6262.L829:
6263	.align	2
6264.L828:
6265	.word	.LANCHOR113
6266	.word	.LANCHOR105
6267	.word	.LANCHOR41
6268	.word	.LANCHOR18
6269	.word	.LANCHOR82
6270	.size	FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
6271	.section	.text.FtlMakeBbt,"ax",%progbits
6272	.align	1
6273	.global	FtlMakeBbt
6274	.syntax unified
6275	.thumb
6276	.thumb_func
6277	.fpu softvfp
6278	.type	FtlMakeBbt, %function
6279FtlMakeBbt:
6280	@ args = 0, pretend = 0, frame = 8
6281	@ frame_needed = 0, uses_anonymous_args = 0
6282	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
6283	movs	r6, #0
6284	ldr	r7, .L849
6285	bl	FtlBbtMemInit
6286	sub	r8, r7, #18
6287	bl	FtlLoadFactoryBbt
6288.L831:
6289	ldr	r3, .L849+4
6290	ldrh	r3, [r3]
6291	cmp	r6, r3
6292	bcc	.L837
6293	ldr	r5, .L849+8
6294	movs	r4, #0
6295.L838:
6296	ldrh	r3, [r5]
6297	uxth	r0, r4
6298	adds	r4, r4, #1
6299	cmp	r3, r0
6300	bhi	.L839
6301	ldr	r4, .L849+12
6302	movw	r6, #65535
6303	ldrh	r5, [r4, #12]
6304	subs	r5, r5, #1
6305	uxth	r5, r5
6306.L840:
6307	ldrh	r3, [r4, #12]
6308	subs	r3, r3, #47
6309	cmp	r3, r5
6310	bgt	.L844
6311	mov	r0, r5
6312	bl	FtlBbmIsBadBlock
6313	cmp	r0, #1
6314	beq	.L841
6315	mov	r0, r5
6316	bl	FlashTestBlk
6317	cmp	r0, #0
6318	beq	.L842
6319	mov	r0, r5
6320	bl	FtlBbmMapBadBlock
6321.L841:
6322	subs	r5, r5, #1
6323	uxth	r5, r5
6324	b	.L840
6325.L837:
6326	ldr	r3, .L849+16
6327	ldr	r5, .L849+20
6328	ldrh	r2, [r8, #2]!
6329	ldr	r4, .L849+24
6330	ldr	r0, [r3]
6331	movw	r3, #65535
6332	ldr	r10, [r5]
6333	cmp	r2, r3
6334	mov	fp, r4
6335	ldr	r3, .L849+28
6336	str	r0, [r4, #8]
6337	str	r10, [r4, #12]
6338	beq	.L832
6339	ldrh	r5, [r3]
6340	mov	r0, r4
6341	str	r3, [sp]
6342	mla	r5, r6, r5, r2
6343	lsls	r2, r5, #10
6344	str	r2, [r4, #4]
6345	movs	r2, #1
6346	mov	r1, r2
6347	bl	FlashReadPages
6348	ldr	r3, [sp]
6349	ldr	r1, [r4, #8]
6350	ldr	r0, [r7]
6351	ldrh	r2, [r3]
6352	adds	r2, r2, #7
6353	asrs	r2, r2, #3
6354	bl	ftl_memcpy
6355.L833:
6356	uxth	r0, r5
6357	adds	r6, r6, #1
6358	adds	r7, r7, #4
6359	bl	FtlBbmMapBadBlock
6360	b	.L831
6361.L832:
6362	mov	r1, r6
6363	str	r3, [sp]
6364	bl	FlashGetBadBlockList
6365	ldr	r0, [r4, #8]
6366	ldr	r1, [r7]
6367	bl	FtlBbt2Bitmap
6368	ldr	r3, [sp]
6369	str	r5, [sp, #4]
6370	ldrh	r4, [r3]
6371	subs	r4, r4, #1
6372	uxth	r4, r4
6373.L834:
6374	ldr	r3, [sp]
6375	ldrh	r0, [r3]
6376	smlabb	r0, r0, r6, r4
6377	uxth	r0, r0
6378	bl	FtlBbmIsBadBlock
6379	cmp	r0, #1
6380	beq	.L835
6381	ldr	r3, [sp, #4]
6382	movs	r2, #16
6383	movs	r1, #0
6384	strh	r4, [r8]	@ movhi
6385	ldr	r0, [r3]
6386	bl	ftl_memset
6387	ldr	r3, .L849+16
6388	mov	r2, #4096
6389	movs	r1, #0
6390	ldr	r0, [r3]
6391	bl	ftl_memset
6392	ldr	r2, [sp]
6393	movw	r3, #61664
6394	strh	r3, [r10]	@ movhi
6395	movs	r3, #0
6396	str	r3, [r10, #4]
6397	ldrh	r5, [r2]
6398	ldrh	r3, [r8]
6399	ldr	r1, [r7]
6400	ldr	r0, [fp, #8]
6401	strh	r3, [r10, #2]	@ movhi
6402	mla	r5, r6, r5, r3
6403	lsls	r3, r5, #10
6404	str	r3, [fp, #4]
6405	ldr	r3, .L849+32
6406	ldrh	r2, [r3]
6407	lsls	r2, r2, #2
6408	bl	ftl_memcpy
6409	movs	r2, #1
6410	ldr	r0, .L849+24
6411	mov	r1, r2
6412	bl	FlashEraseBlocks
6413	movs	r3, #1
6414	ldr	r0, .L849+24
6415	mov	r2, r3
6416	mov	r1, r3
6417	bl	FlashProgPages
6418	ldr	r3, [fp]
6419	adds	r3, r3, #1
6420	bne	.L833
6421	uxth	r0, r5
6422	bl	FtlBbmMapBadBlock
6423	b	.L834
6424.L835:
6425	subs	r4, r4, #1
6426	uxth	r4, r4
6427	b	.L834
6428.L839:
6429	bl	FtlBbmMapBadBlock
6430	b	.L838
6431.L842:
6432	ldrh	r3, [r4]
6433	cmp	r3, r6
6434	bne	.L843
6435	strh	r5, [r4]	@ movhi
6436	b	.L841
6437.L843:
6438	strh	r5, [r4, #4]	@ movhi
6439.L844:
6440	ldr	r3, .L849+36
6441	movs	r5, #0
6442	str	r5, [r4, #8]
6443	movs	r1, #1
6444	movs	r2, #2
6445	strh	r5, [r4, #2]	@ movhi
6446	ldr	r0, [r3]
6447	ldrh	r3, [r4]
6448	lsls	r3, r3, #10
6449	str	r3, [r0, #4]
6450	ldrh	r3, [r4, #4]
6451	lsls	r3, r3, #10
6452	str	r3, [r0, #24]
6453	bl	FlashEraseBlocks
6454	ldrh	r0, [r4]
6455	bl	FtlBbmMapBadBlock
6456	ldrh	r0, [r4, #4]
6457	bl	FtlBbmMapBadBlock
6458	bl	FtlBbmTblFlush
6459	ldr	r3, [r4, #8]
6460	ldrh	r2, [r4, #4]
6461	strh	r5, [r4, #2]	@ movhi
6462	adds	r3, r3, #1
6463	str	r3, [r4, #8]
6464	ldrh	r3, [r4]
6465	strh	r2, [r4]	@ movhi
6466	strh	r3, [r4, #4]	@ movhi
6467	bl	FtlBbmTblFlush
6468	mov	r0, r5
6469	add	sp, sp, #8
6470	@ sp needed
6471	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
6472.L850:
6473	.align	2
6474.L849:
6475	.word	.LANCHOR36+28
6476	.word	.LANCHOR9
6477	.word	.LANCHOR24
6478	.word	.LANCHOR36
6479	.word	.LANCHOR105
6480	.word	.LANCHOR113
6481	.word	.LANCHOR137
6482	.word	.LANCHOR16
6483	.word	.LANCHOR126
6484	.word	.LANCHOR78
6485	.size	FtlMakeBbt, .-FtlMakeBbt
6486	.section	.text.ftl_memcmp,"ax",%progbits
6487	.align	1
6488	.global	ftl_memcmp
6489	.syntax unified
6490	.thumb
6491	.thumb_func
6492	.fpu softvfp
6493	.type	ftl_memcmp, %function
6494ftl_memcmp:
6495	@ args = 0, pretend = 0, frame = 0
6496	@ frame_needed = 0, uses_anonymous_args = 0
6497	@ link register save eliminated.
6498	b	memcmp
6499	.size	ftl_memcmp, .-ftl_memcmp
6500	.section	.text.js_hash,"ax",%progbits
6501	.align	1
6502	.global	js_hash
6503	.syntax unified
6504	.thumb
6505	.thumb_func
6506	.fpu softvfp
6507	.type	js_hash, %function
6508js_hash:
6509	@ args = 0, pretend = 0, frame = 0
6510	@ frame_needed = 0, uses_anonymous_args = 0
6511	ldr	r3, .L855
6512	add	r1, r1, r0
6513	push	{r4, lr}
6514.L853:
6515	cmp	r0, r1
6516	bne	.L854
6517	mov	r0, r3
6518	pop	{r4, pc}
6519.L854:
6520	lsrs	r2, r3, #2
6521	ldrb	r4, [r0], #1	@ zero_extendqisi2
6522	add	r2, r2, r3, lsl #5
6523	add	r2, r2, r4
6524	eors	r3, r3, r2
6525	b	.L853
6526.L856:
6527	.align	2
6528.L855:
6529	.word	1204201446
6530	.size	js_hash, .-js_hash
6531	.section	.text.Ftl_write_map_blk_to_last_page,"ax",%progbits
6532	.align	1
6533	.global	Ftl_write_map_blk_to_last_page
6534	.syntax unified
6535	.thumb
6536	.thumb_func
6537	.fpu softvfp
6538	.type	Ftl_write_map_blk_to_last_page, %function
6539Ftl_write_map_blk_to_last_page:
6540	@ args = 0, pretend = 0, frame = 0
6541	@ frame_needed = 0, uses_anonymous_args = 0
6542	push	{r3, r4, r5, r6, r7, r8, r10, lr}
6543	movw	r2, #65535
6544	ldrh	r3, [r0]
6545	mov	r4, r0
6546	ldr	r5, [r0, #12]
6547	cmp	r3, r2
6548	bne	.L858
6549	ldrh	r3, [r0, #8]
6550	cbz	r3, .L859
6551	movw	r2, #641
6552	ldr	r1, .L867
6553	ldr	r0, .L867+4
6554	bl	printf
6555.L859:
6556	ldrh	r3, [r4, #8]
6557	adds	r3, r3, #1
6558	strh	r3, [r4, #8]	@ movhi
6559	bl	FtlFreeSysBlkQueueOut
6560	movs	r3, #0
6561	strh	r0, [r5]	@ movhi
6562	strh	r3, [r4, #2]	@ movhi
6563	strh	r3, [r4]	@ movhi
6564	ldr	r3, [r4, #28]
6565	adds	r3, r3, #1
6566	str	r3, [r4, #28]
6567.L860:
6568	movs	r0, #0
6569	pop	{r3, r4, r5, r6, r7, r8, r10, pc}
6570.L858:
6571	ldrh	r7, [r5, r3, lsl #1]
6572	movs	r1, #255
6573	ldrh	r3, [r0, #2]
6574	ldr	r6, .L867+8
6575	ldr	r10, .L867+24
6576	ldr	r8, [r0, #24]
6577	orr	r3, r3, r7, lsl #10
6578	ldr	r0, [r10]
6579	str	r3, [r6, #4]
6580	ldr	r3, .L867+12
6581	str	r0, [r6, #8]
6582	ldr	r5, [r3]
6583	ldr	r3, [r4, #28]
6584	str	r5, [r6, #12]
6585	str	r3, [r5, #4]
6586	movw	r3, #64245
6587	strh	r3, [r5, #8]	@ movhi
6588	ldrh	r3, [r4, #4]
6589	strh	r7, [r5, #2]	@ movhi
6590	strh	r3, [r5]	@ movhi
6591	ldr	r3, .L867+16
6592	ldrh	r2, [r3]
6593	lsls	r2, r2, #3
6594	bl	ftl_memset
6595	ldrh	ip, [r4, #6]
6596	movs	r3, #0
6597	ldr	r1, [r10]
6598	mov	r2, r3
6599.L861:
6600	uxth	r0, r3
6601	cmp	ip, r0
6602	bhi	.L863
6603	ldr	r3, .L867+20
6604	ldr	r0, [r6, #8]
6605	ldrh	r1, [r3]
6606	bl	js_hash
6607	movs	r2, #1
6608	str	r0, [r5, #12]
6609	movs	r3, #0
6610	mov	r1, r2
6611	ldr	r0, .L867+8
6612	bl	FlashProgPages
6613	ldrh	r3, [r4, #2]
6614	mov	r0, r4
6615	adds	r3, r3, #1
6616	strh	r3, [r4, #2]	@ movhi
6617	bl	ftl_map_blk_gc
6618	b	.L860
6619.L863:
6620	ldr	r0, [r8, r3, lsl #2]
6621	cmp	r7, r0, lsr #10
6622	bne	.L862
6623	adds	r2, r2, #1
6624	uxth	r2, r2
6625	str	r3, [r1, r2, lsl #3]
6626	add	lr, r1, r2, lsl #3
6627	ldr	r0, [r8, r3, lsl #2]
6628	str	r0, [lr, #4]
6629.L862:
6630	adds	r3, r3, #1
6631	b	.L861
6632.L868:
6633	.align	2
6634.L867:
6635	.word	.LANCHOR147
6636	.word	.LC1
6637	.word	.LANCHOR137
6638	.word	.LANCHOR113
6639	.word	.LANCHOR19
6640	.word	.LANCHOR22
6641	.word	.LANCHOR105
6642	.size	Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
6643	.section	.text.FtlMapWritePage,"ax",%progbits
6644	.align	1
6645	.global	FtlMapWritePage
6646	.syntax unified
6647	.thumb
6648	.thumb_func
6649	.fpu softvfp
6650	.type	FtlMapWritePage, %function
6651FtlMapWritePage:
6652	@ args = 0, pretend = 0, frame = 8
6653	@ frame_needed = 0, uses_anonymous_args = 0
6654	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
6655	lsl	r10, r1, #2
6656	ldr	r8, .L894+32
6657	mov	r4, r0
6658	mov	r7, r1
6659	movs	r6, #0
6660	str	r2, [sp]
6661	mov	fp, r8
6662.L870:
6663	ldr	r2, .L894
6664	ldr	r3, [r2]
6665	adds	r3, r3, #1
6666	str	r3, [r2]
6667	ldrh	r3, [r8]
6668	ldrh	r2, [r4, #2]
6669	subs	r3, r3, #1
6670	cmp	r2, r3
6671	bge	.L871
6672	ldrh	r2, [r4]
6673	movw	r3, #65535
6674	cmp	r2, r3
6675	bne	.L872
6676.L871:
6677	mov	r0, r4
6678	bl	Ftl_write_map_blk_to_last_page
6679.L872:
6680	ldrh	r2, [r4]
6681	ldr	r3, [r4, #12]
6682	ldrh	r3, [r3, r2, lsl #1]
6683	cbnz	r3, .L873
6684	mov	r2, #700
6685	ldr	r1, .L894+4
6686	ldr	r0, .L894+8
6687	bl	printf
6688.L873:
6689	ldrh	r2, [r4]
6690	ldrh	r3, [r4, #10]
6691	cmp	r2, r3
6692	bcc	.L874
6693	movw	r2, #701
6694	ldr	r1, .L894+4
6695	ldr	r0, .L894+8
6696	bl	printf
6697.L874:
6698	ldrh	r2, [r4]
6699	movs	r1, #0
6700	ldr	r3, [r4, #12]
6701	ldr	r5, .L894+12
6702	ldrh	r3, [r3, r2, lsl #1]
6703	ldrh	r2, [r4, #2]
6704	str	r3, [sp, #4]
6705	orr	r2, r2, r3, lsl #10
6706	ldr	r3, [sp]
6707	str	r2, [r5, #4]
6708	ldr	r2, .L894+16
6709	str	r3, [r5, #8]
6710	ldr	r0, [r2]
6711	movs	r2, #16
6712	str	r0, [r5, #12]
6713	bl	ftl_memset
6714	ldr	r2, [r5, #12]
6715	ldr	r1, [r4, #28]
6716	ldr	r3, [sp, #4]
6717	strh	r7, [r2, #8]	@ movhi
6718	str	r1, [r2, #4]
6719	ldrh	r1, [r4, #4]
6720	strh	r3, [r2, #2]	@ movhi
6721	ldr	r3, .L894+20
6722	strh	r1, [r2]	@ movhi
6723	ldr	r0, [r5, #8]
6724	ldrh	r1, [r3]
6725	str	r2, [sp, #4]
6726	bl	js_hash
6727	ldr	r2, [sp, #4]
6728	movs	r3, #1
6729	mov	r1, r3
6730	str	r0, [r2, #12]
6731	mov	r2, r3
6732	mov	r0, r5
6733	bl	FlashProgPages
6734	ldrh	r2, [r4, #2]
6735	ldr	r3, [r5]
6736	adds	r2, r2, #1
6737	uxth	r2, r2
6738	adds	r3, r3, #1
6739	strh	r2, [r4, #2]	@ movhi
6740	bne	.L875
6741	ldr	r1, [r5, #4]
6742	adds	r6, r6, #1
6743	ldr	r0, .L894+24
6744	uxth	r6, r6
6745	str	r5, [sp, #4]
6746	bl	printf
6747	ldrh	r2, [r4, #2]
6748	ldr	r3, [sp, #4]
6749	cmp	r2, #2
6750	ittt	ls
6751	ldrhls	r2, [fp]
6752	addls	r2, r2, #-1
6753	strhls	r2, [r4, #2]	@ movhi
6754	cmp	r6, #3
6755	bls	.L877
6756	mov	r2, r6
6757	ldr	r1, [r3, #4]
6758	ldr	r0, .L894+28
6759	bl	printf
6760.L878:
6761	b	.L878
6762.L877:
6763	ldr	r3, [r4, #32]
6764	cmp	r3, #0
6765	beq	.L870
6766.L893:
6767	b	.L893
6768.L875:
6769	ldr	r1, [r5, #4]
6770	cmp	r2, #1
6771	ldr	r3, [r4, #24]
6772	str	r1, [r3, r10]
6773	beq	.L881
6774	ldr	r3, [r5]
6775	cmp	r3, #256
6776	beq	.L881
6777	ldr	r2, [r4, #36]
6778	cbz	r2, .L882
6779.L881:
6780	movs	r3, #0
6781	str	r3, [r4, #36]
6782	b	.L870
6783.L882:
6784	adds	r3, r3, #1
6785	bne	.L883
6786	movw	r2, #745
6787	ldr	r1, .L894+4
6788	ldr	r0, .L894+8
6789	bl	printf
6790.L883:
6791	movs	r0, #0
6792	add	sp, sp, #8
6793	@ sp needed
6794	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
6795.L895:
6796	.align	2
6797.L894:
6798	.word	.LANCHOR87
6799	.word	.LANCHOR148
6800	.word	.LC1
6801	.word	.LANCHOR137
6802	.word	.LANCHOR113
6803	.word	.LANCHOR22
6804	.word	.LC22
6805	.word	.LC23
6806	.word	.LANCHOR19
6807	.size	FtlMapWritePage, .-FtlMapWritePage
6808	.section	.text.load_l2p_region,"ax",%progbits
6809	.align	1
6810	.global	load_l2p_region
6811	.syntax unified
6812	.thumb
6813	.thumb_func
6814	.fpu softvfp
6815	.type	load_l2p_region, %function
6816load_l2p_region:
6817	@ args = 0, pretend = 0, frame = 8
6818	@ frame_needed = 0, uses_anonymous_args = 0
6819	ldr	r3, .L903
6820	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
6821	mov	r5, r0
6822	mov	r10, r1
6823	ldrh	r2, [r3]
6824	str	r3, [sp, #4]
6825	cmp	r2, r0
6826	bcs	.L897
6827	movw	r2, #485
6828	ldr	r1, .L903+4
6829	ldr	r0, .L903+8
6830	bl	printf
6831.L897:
6832	ldr	fp, .L903+48
6833	movs	r4, #12
6834	ldr	r7, .L903+12
6835	ldr	r3, [fp]
6836	ldr	r8, [r3, r5, lsl #2]
6837	cmp	r8, #0
6838	bne	.L898
6839	mul	r4, r4, r10
6840	ldr	r2, [r7]
6841	movs	r1, #255
6842	adds	r0, r2, r4
6843	ldr	r2, .L903+16
6844	ldr	r0, [r0, #8]
6845	ldrh	r2, [r2]
6846	bl	ftl_memset
6847	ldr	r2, [r7]
6848	adds	r1, r2, r4
6849	strh	r5, [r2, r4]	@ movhi
6850	str	r8, [r1, #4]
6851.L899:
6852	movs	r0, #0
6853	add	sp, sp, #8
6854	@ sp needed
6855	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
6856.L898:
6857	mul	r4, r4, r10
6858	ldr	r2, [r7]
6859	ldr	r6, .L903+20
6860	add	r2, r2, r4
6861	mov	r0, r6
6862	ldr	r2, [r2, #8]
6863	str	r8, [r6, #4]
6864	str	r2, [r6, #8]
6865	ldr	r2, .L903+24
6866	ldr	r2, [r2]
6867	str	r2, [r6, #12]
6868	movs	r2, #1
6869	mov	r1, r2
6870	bl	FlashReadPages
6871	ldr	r10, [r6, #12]
6872	ldrh	r2, [r10, #8]
6873	cmp	r2, r5
6874	beq	.L900
6875	mov	r2, r8
6876	mov	r1, r5
6877	ldr	r0, .L903+28
6878	bl	printf
6879	movs	r3, #4
6880	ldr	r1, [r6, #12]
6881	mov	r2, r3
6882	ldr	r0, .L903+32
6883	bl	rknand_print_hex
6884	ldr	r3, [sp, #4]
6885	movs	r2, #4
6886	ldr	r1, [fp]
6887	ldr	r0, .L903+36
6888	ldrh	r3, [r3]
6889	bl	rknand_print_hex
6890.L901:
6891	ldrh	r3, [r10, #8]
6892	cmp	r3, r5
6893	beq	.L902
6894	mov	r2, #508
6895	ldr	r1, .L903+4
6896	ldr	r0, .L903+8
6897	bl	printf
6898.L902:
6899	ldr	r3, [r7]
6900	movs	r1, #0
6901	adds	r2, r3, r4
6902	str	r1, [r2, #4]
6903	strh	r5, [r3, r4]	@ movhi
6904	b	.L899
6905.L900:
6906	ldr	r2, [r6]
6907	cmp	r2, #256
6908	bne	.L901
6909	mov	r2, r8
6910	mov	r1, r5
6911	ldr	r0, .L903+40
6912	bl	printf
6913	ldr	r3, [r7]
6914	mov	r1, r5
6915	ldr	r0, .L903+44
6916	add	r3, r3, r4
6917	ldr	r2, [r3, #8]
6918	bl	FtlMapWritePage
6919	b	.L901
6920.L904:
6921	.align	2
6922.L903:
6923	.word	.LANCHOR31
6924	.word	.LANCHOR149
6925	.word	.LC1
6926	.word	.LANCHOR54
6927	.word	.LANCHOR22
6928	.word	.LANCHOR137
6929	.word	.LANCHOR113
6930	.word	.LC24
6931	.word	.LC13
6932	.word	.LC25
6933	.word	.LC26
6934	.word	.LANCHOR128
6935	.word	.LANCHOR123
6936	.size	load_l2p_region, .-load_l2p_region
6937	.section	.text.ftl_map_blk_gc,"ax",%progbits
6938	.align	1
6939	.global	ftl_map_blk_gc
6940	.syntax unified
6941	.thumb
6942	.thumb_func
6943	.fpu softvfp
6944	.type	ftl_map_blk_gc, %function
6945ftl_map_blk_gc:
6946	@ args = 0, pretend = 0, frame = 8
6947	@ frame_needed = 0, uses_anonymous_args = 0
6948	ldr	r3, [r0, #24]
6949	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
6950	mov	r4, r0
6951	ldr	r5, [r0, #12]
6952	str	r3, [sp]
6953	bl	ftl_free_no_use_map_blk
6954	ldrh	r3, [r4, #10]
6955	ldrh	r2, [r4, #8]
6956	subs	r3, r3, #5
6957	cmp	r2, r3
6958	blt	.L906
6959	uxth	r0, r0
6960	ldrh	r8, [r5, r0, lsl #1]
6961	cmp	r8, #0
6962	beq	.L906
6963	ldr	r3, [r4, #32]
6964	cbnz	r3, .L906
6965	movs	r2, #1
6966	str	r2, [r4, #32]
6967	strh	r3, [r5, r0, lsl #1]	@ movhi
6968	ldrh	r3, [r4, #8]
6969	ldrh	r2, [r4, #2]
6970	subs	r3, r3, #1
6971	strh	r3, [r4, #8]	@ movhi
6972	ldr	r3, .L921
6973	ldrh	r3, [r3]
6974	cmp	r2, r3
6975	bcc	.L907
6976	mov	r0, r4
6977	bl	ftl_map_blk_alloc_new_blk
6978.L907:
6979	ldr	r5, .L921+4
6980	movs	r6, #0
6981.L908:
6982	ldrh	r3, [r4, #6]
6983	uxth	r10, r6
6984	cmp	r3, r10
6985	bhi	.L915
6986	movs	r1, #1
6987	mov	r0, r8
6988	bl	FtlFreeSysBlkQueueIn
6989	movs	r3, #0
6990	str	r3, [r4, #32]
6991.L906:
6992	ldr	r3, .L921
6993	ldrh	r2, [r4, #2]
6994	ldrh	r3, [r3]
6995	cmp	r2, r3
6996	bcc	.L916
6997	mov	r0, r4
6998	bl	ftl_map_blk_alloc_new_blk
6999.L916:
7000	movs	r0, #0
7001	add	sp, sp, #8
7002	@ sp needed
7003	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
7004.L915:
7005	ldr	r3, [sp]
7006	uxth	fp, r6
7007	add	r3, r3, fp, lsl #2
7008	str	r3, [sp, #4]
7009	ldr	r3, [sp]
7010	ldr	r2, [r3, fp, lsl #2]
7011	cmp	r8, r2, lsr #10
7012	bne	.L909
7013	ldr	r3, .L921+8
7014	str	r2, [r5, #4]
7015	movs	r2, #1
7016	ldr	r0, .L921+4
7017	ldr	r1, [r3]
7018	str	r1, [r5, #8]
7019	ldr	r1, .L921+12
7020	ldr	r7, [r1]
7021	mov	r1, r2
7022	str	r7, [r5, #12]
7023	bl	FlashReadPages
7024	ldrh	r2, [r7, #8]
7025	cmp	r2, r10
7026	beq	.L910
7027	movw	r2, #611
7028	ldr	r1, .L921+16
7029	ldr	r0, .L921+20
7030	bl	printf
7031.L910:
7032	ldr	r2, [r5]
7033	adds	r2, r2, #1
7034	bne	.L911
7035.L913:
7036	ldr	r2, [sp, #4]
7037	movs	r3, #0
7038	str	r3, [r2]
7039.L912:
7040	b	.L912
7041.L911:
7042	ldrh	r2, [r7, #8]
7043	cmp	r2, r10
7044	bne	.L913
7045	ldrh	r1, [r7]
7046	ldrh	r2, [r4, #4]
7047	cmp	r1, r2
7048	bne	.L913
7049	ldr	r2, [r5, #8]
7050	mov	r1, fp
7051	mov	r0, r4
7052	bl	FtlMapWritePage
7053.L909:
7054	adds	r6, r6, #1
7055	b	.L908
7056.L922:
7057	.align	2
7058.L921:
7059	.word	.LANCHOR19
7060	.word	.LANCHOR137
7061	.word	.LANCHOR106
7062	.word	.LANCHOR113
7063	.word	.LANCHOR150
7064	.word	.LC1
7065	.size	ftl_map_blk_gc, .-ftl_map_blk_gc
7066	.section	.text.flush_l2p_region,"ax",%progbits
7067	.align	1
7068	.global	flush_l2p_region
7069	.syntax unified
7070	.thumb
7071	.thumb_func
7072	.fpu softvfp
7073	.type	flush_l2p_region, %function
7074flush_l2p_region:
7075	@ args = 0, pretend = 0, frame = 0
7076	@ frame_needed = 0, uses_anonymous_args = 0
7077	push	{r3, r4, r5, lr}
7078	movs	r4, #12
7079	ldr	r5, .L924
7080	muls	r4, r0, r4
7081	ldr	r0, .L924+4
7082	ldr	r3, [r5]
7083	adds	r2, r3, r4
7084	ldrh	r1, [r3, r4]
7085	ldr	r2, [r2, #8]
7086	bl	FtlMapWritePage
7087	ldr	r3, [r5]
7088	movs	r0, #0
7089	add	r4, r4, r3
7090	ldr	r3, [r4, #4]
7091	bic	r3, r3, #-2147483648
7092	str	r3, [r4, #4]
7093	pop	{r3, r4, r5, pc}
7094.L925:
7095	.align	2
7096.L924:
7097	.word	.LANCHOR54
7098	.word	.LANCHOR128
7099	.size	flush_l2p_region, .-flush_l2p_region
7100	.section	.text.l2p_flush,"ax",%progbits
7101	.align	1
7102	.global	l2p_flush
7103	.syntax unified
7104	.thumb
7105	.thumb_func
7106	.fpu softvfp
7107	.type	l2p_flush, %function
7108l2p_flush:
7109	@ args = 0, pretend = 0, frame = 0
7110	@ frame_needed = 0, uses_anonymous_args = 0
7111	push	{r4, r5, r6, lr}
7112	movs	r4, #0
7113	ldr	r5, .L930
7114	ldr	r6, .L930+4
7115.L927:
7116	ldrh	r3, [r5]
7117	uxth	r0, r4
7118	cmp	r3, r0
7119	bhi	.L929
7120	movs	r0, #0
7121	pop	{r4, r5, r6, pc}
7122.L929:
7123	ldr	r2, [r6]
7124	uxth	r3, r4
7125	movs	r1, #12
7126	mla	r3, r1, r3, r2
7127	ldr	r3, [r3, #4]
7128	cmp	r3, #0
7129	bge	.L928
7130	bl	flush_l2p_region
7131.L928:
7132	adds	r4, r4, #1
7133	b	.L927
7134.L931:
7135	.align	2
7136.L930:
7137	.word	.LANCHOR32
7138	.word	.LANCHOR54
7139	.size	l2p_flush, .-l2p_flush
7140	.section	.text.log2phys,"ax",%progbits
7141	.align	1
7142	.global	log2phys
7143	.syntax unified
7144	.thumb
7145	.thumb_func
7146	.fpu softvfp
7147	.type	log2phys, %function
7148log2phys:
7149	@ args = 0, pretend = 0, frame = 8
7150	@ frame_needed = 0, uses_anonymous_args = 0
7151	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
7152	mov	r7, r2
7153	ldr	r4, .L945
7154	mov	r10, r0
7155	mov	r5, r1
7156	ldr	r3, .L945+4
7157	ldr	r2, [r4]
7158	ldrh	fp, [r3]
7159	cmp	r0, r2
7160	bcc	.L933
7161	mov	r2, #820
7162	ldr	r1, .L945+8
7163	ldr	r0, .L945+12
7164	bl	printf
7165.L933:
7166	ldr	r3, [r4]
7167	cmp	r10, r3
7168	bcs	.L934
7169	ldr	r3, .L945+16
7170	add	fp, fp, #7
7171	lsr	r6, r10, fp
7172	movs	r2, #0
7173	ldrh	r1, [r3]
7174	uxth	r6, r6
7175	ldr	r3, .L945+20
7176	ldr	r0, [r3]
7177	mov	r8, r3
7178	movs	r3, #12
7179.L935:
7180	uxth	r4, r2
7181	cmp	r4, r1
7182	bcc	.L940
7183	str	r3, [sp, #4]
7184	bl	select_l2p_ram_region
7185	ldr	r3, [sp, #4]
7186	mov	r4, r0
7187	ldr	r2, [r8]
7188	muls	r3, r0, r3
7189	adds	r1, r2, r3
7190	ldrh	r2, [r2, r3]
7191	movw	r3, #65535
7192	cmp	r2, r3
7193	beq	.L941
7194	ldr	r3, [r1, #4]
7195	cmp	r3, #0
7196	bge	.L941
7197	bl	flush_l2p_region
7198.L941:
7199	mov	r1, r4
7200	mov	r0, r6
7201	bl	load_l2p_region
7202	b	.L937
7203.L934:
7204	mov	r0, #-1
7205	cbnz	r7, .L932
7206	str	r0, [r5]
7207.L932:
7208	add	sp, sp, #8
7209	@ sp needed
7210	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
7211.L940:
7212	adds	r2, r2, #1
7213	mla	ip, r3, r2, r0
7214	ldrh	ip, [ip, #-12]
7215	cmp	ip, r6
7216	bne	.L935
7217.L937:
7218	movs	r0, #1
7219	ldr	r2, [r8]
7220	lsl	r0, r0, fp
7221	movs	r3, #12
7222	subs	r0, r0, #1
7223	and	r0, r0, r10
7224	uxth	r0, r0
7225	mla	r3, r3, r4, r2
7226	cbnz	r7, .L938
7227	ldr	r3, [r3, #8]
7228	ldr	r3, [r3, r0, lsl #2]
7229	str	r3, [r5]
7230.L939:
7231	ldr	r2, [r8]
7232	movs	r3, #12
7233	mla	r4, r3, r4, r2
7234	ldr	r3, [r4, #4]
7235	adds	r2, r3, #1
7236	beq	.L943
7237	adds	r3, r3, #1
7238	str	r3, [r4, #4]
7239.L943:
7240	movs	r0, #0
7241	b	.L932
7242.L938:
7243	ldr	r1, [r5]
7244	ldr	r2, [r3, #8]
7245	str	r1, [r2, r0, lsl #2]
7246	ldr	r2, [r3, #4]
7247	orr	r2, r2, #-2147483648
7248	str	r2, [r3, #4]
7249	ldr	r3, .L945+24
7250	strh	r6, [r3]	@ movhi
7251	b	.L939
7252.L946:
7253	.align	2
7254.L945:
7255	.word	.LANCHOR151
7256	.word	.LANCHOR21
7257	.word	.LANCHOR152
7258	.word	.LC1
7259	.word	.LANCHOR32
7260	.word	.LANCHOR54
7261	.word	.LANCHOR55
7262	.size	log2phys, .-log2phys
7263	.section	.text.FtlReUsePrevPpa,"ax",%progbits
7264	.align	1
7265	.global	FtlReUsePrevPpa
7266	.syntax unified
7267	.thumb
7268	.thumb_func
7269	.fpu softvfp
7270	.type	FtlReUsePrevPpa, %function
7271FtlReUsePrevPpa:
7272	@ args = 0, pretend = 0, frame = 8
7273	@ frame_needed = 0, uses_anonymous_args = 0
7274	push	{r0, r1, r4, r5, r6, r7, r8, lr}
7275	mov	r6, r0
7276	ldr	r5, .L957
7277	ubfx	r0, r1, #10, #16
7278	str	r1, [sp, #4]
7279	bl	P2V_block_in_plane
7280	ldr	r2, [r5]
7281	mov	r7, r0
7282	ldrh	r3, [r2, r0, lsl #1]
7283	cbnz	r3, .L948
7284	ldr	r2, .L957+4
7285	ldr	r4, [r2]
7286	cmp	r4, #0
7287	beq	.L949
7288	ldr	r2, .L957+8
7289	movw	lr, #65535
7290	ldr	ip, .L957+24
7291	ldr	r0, .L957+12
7292	ldr	r2, [r2]
7293	ldrh	r1, [r0]
7294	mov	r8, r0
7295	subs	r4, r4, r2
7296	asrs	r4, r4, #1
7297	mul	r4, ip, r4
7298	mov	ip, #6
7299	uxth	r4, r4
7300.L950:
7301	uxth	r0, r3
7302	cmp	r1, r0
7303	bls	.L949
7304	cmp	r4, r7
7305	bne	.L951
7306	mov	r1, r4
7307	ldr	r0, .L957+4
7308	bl	List_remove_node
7309	ldrh	r3, [r8]
7310	cbnz	r3, .L952
7311	movw	r2, #1742
7312	ldr	r1, .L957+16
7313	ldr	r0, .L957+20
7314	bl	printf
7315.L952:
7316	ldrh	r3, [r8]
7317	mov	r0, r4
7318	subs	r3, r3, #1
7319	strh	r3, [r8]	@ movhi
7320	bl	INSERT_DATA_LIST
7321	ldr	r2, [r5]
7322	ldrh	r3, [r2, r7, lsl #1]
7323.L948:
7324	adds	r3, r3, #1
7325	strh	r3, [r2, r7, lsl #1]	@ movhi
7326	b	.L949
7327.L951:
7328	mul	r4, ip, r4
7329	adds	r3, r3, #1
7330	ldrh	r4, [r2, r4]
7331	cmp	r4, lr
7332	bne	.L950
7333.L949:
7334	movs	r2, #1
7335	add	r1, sp, #4
7336	mov	r0, r6
7337	bl	log2phys
7338	add	sp, sp, #8
7339	@ sp needed
7340	pop	{r4, r5, r6, r7, r8, pc}
7341.L958:
7342	.align	2
7343.L957:
7344	.word	.LANCHOR41
7345	.word	.LANCHOR45
7346	.word	.LANCHOR39
7347	.word	.LANCHOR47
7348	.word	.LANCHOR153
7349	.word	.LC1
7350	.word	-1431655765
7351	.size	FtlReUsePrevPpa, .-FtlReUsePrevPpa
7352	.section	.text.FtlRecoverySuperblock,"ax",%progbits
7353	.align	1
7354	.global	FtlRecoverySuperblock
7355	.syntax unified
7356	.thumb
7357	.thumb_func
7358	.fpu softvfp
7359	.type	FtlRecoverySuperblock, %function
7360FtlRecoverySuperblock:
7361	@ args = 0, pretend = 0, frame = 48
7362	@ frame_needed = 0, uses_anonymous_args = 0
7363	ldrh	r3, [r0]
7364	movw	r2, #65535
7365	push	{r4, r5, r6, r7, r8, r10, fp, lr}
7366	mov	r8, r0
7367	sub	sp, sp, #48
7368	cmp	r3, r2
7369	beq	.L1091
7370	ldrh	r3, [r0, #2]
7371	str	r3, [sp, #4]
7372	ldrb	r3, [r0, #6]	@ zero_extendqisi2
7373	ldr	r1, [sp, #4]
7374	str	r3, [sp, #20]
7375	ldr	r3, .L1100
7376	ldrh	r3, [r3]
7377	cmp	r3, r1
7378	mov	r3, #0
7379	bne	.L962
7380	strh	r3, [r0, #4]	@ movhi
7381.L1098:
7382	strb	r3, [r8, #6]
7383.L1091:
7384	movs	r0, #0
7385	add	sp, sp, #48
7386	@ sp needed
7387	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
7388.L962:
7389	ldrh	r0, [r0, #16]
7390.L963:
7391	cmp	r0, r2
7392	uxth	r5, r3
7393	add	r3, r3, #1
7394	beq	.L964
7395	movs	r1, #1
7396	bl	FtlGetLastWrittenPage
7397	mov	r4, r0
7398	adds	r0, r0, #1
7399	beq	.L965
7400	ldr	r3, .L1100+4
7401	movs	r2, #0
7402	mov	r5, r2
7403	movw	fp, #65535
7404	mov	r10, #20
7405	ldrh	ip, [r3]
7406	ldr	r3, .L1100+8
7407	ldr	r0, [r3]
7408	ldr	r3, .L1100+12
7409	ldr	r3, [r3]
7410	str	r3, [sp, #8]
7411	ldr	r3, .L1100+16
7412	ldrh	r7, [r3]
7413	ldr	r3, .L1100+20
7414	ldr	r3, [r3]
7415	str	r3, [sp, #12]
7416	ldr	r3, .L1100+24
7417	ldrh	lr, [r3]
7418	add	r3, r8, #16
7419	str	r3, [sp, #16]
7420	str	r3, [sp]
7421.L966:
7422	uxth	r3, r2
7423	cmp	ip, r3
7424	bhi	.L970
7425	movs	r2, #0
7426	mov	r1, r5
7427	bl	FlashReadPages
7428	ldr	r2, .L1100+28
7429	uxth	r1, r4
7430	movw	fp, #65535
7431	str	r1, [sp, #12]
7432	ldr	r3, [r2]
7433	subs	r3, r3, #1
7434	str	r3, [sp]
7435	ldr	r3, .L1100+8
7436	ldr	r10, [r3]
7437	movs	r3, #0
7438	mov	r7, r10
7439.L971:
7440	uxth	r1, r3
7441	cmp	r5, r1
7442	bhi	.L976
7443	bne	.L974
7444	adds	r3, r4, #1
7445	uxth	r3, r3
7446	str	r3, [sp, #8]
7447.L1092:
7448	ldr	r0, [r10, #4]
7449	ubfx	r0, r0, #10, #16
7450	bl	P2V_plane
7451	ldr	r3, .L1100
7452	mov	r10, r0
7453	ldr	r2, [sp, #8]
7454	ldrh	r3, [r3]
7455	cmp	r3, r2
7456	bne	.L978
7457	ldrh	r3, [sp, #8]
7458	strh	r3, [r8, #2]	@ movhi
7459	movs	r3, #0
7460	strb	r3, [r8, #6]
7461	strh	r3, [r8, #4]	@ movhi
7462.L978:
7463	ldr	r3, [sp, #8]
7464	ldr	r2, [sp, #4]
7465	cmp	r3, r2
7466	bne	.L979
7467	ldr	r3, [sp, #20]
7468	cmp	r10, r3
7469	bne	.L979
7470	ldr	r1, [sp, #8]
7471	mov	r2, r10
7472.L1099:
7473	mov	r0, r8
7474	bl	ftl_sb_update_avl_pages
7475	b	.L1091
7476.L964:
7477	uxth	r1, r3
7478	adds	r1, r1, #8
7479	ldrh	r0, [r8, r1, lsl #1]
7480	b	.L963
7481.L965:
7482	ldr	r3, [sp, #4]
7483	cbz	r3, .L967
7484	movw	r2, #1809
7485	ldr	r1, .L1100+32
7486	ldr	r0, .L1100+36
7487	bl	printf
7488.L967:
7489	ldr	r3, [sp, #20]
7490	cbz	r3, .L968
7491	cmp	r5, r3
7492	beq	.L968
7493	movw	r2, #1810
7494	ldr	r1, .L1100+32
7495	ldr	r0, .L1100+36
7496	bl	printf
7497.L968:
7498	movs	r3, #0
7499	strh	r3, [r8, #2]	@ movhi
7500	b	.L1098
7501.L970:
7502	ldr	r1, [sp]
7503	ldrh	r3, [r1], #2
7504	cmp	r3, fp
7505	str	r1, [sp]
7506	beq	.L969
7507	mla	r1, r10, r5, r0
7508	ldr	r6, [sp, #8]
7509	orr	r3, r4, r3, lsl #10
7510	str	r3, [r1, #4]
7511	mul	r3, r7, r5
7512	bic	r3, r3, #3
7513	add	r3, r3, r6
7514	ldr	r6, [sp, #12]
7515	str	r3, [r1, #8]
7516	mul	r3, lr, r5
7517	adds	r5, r5, #1
7518	uxth	r5, r5
7519	bic	r3, r3, #3
7520	add	r3, r3, r6
7521	str	r3, [r1, #12]
7522.L969:
7523	adds	r2, r2, #1
7524	b	.L966
7525.L976:
7526	ldr	r1, [r7]
7527	cbnz	r1, .L972
7528	ldr	r1, [r7, #12]
7529	ldr	r6, [r1, #4]
7530	str	r1, [sp, #8]
7531	adds	r1, r6, #1
7532	beq	.L973
7533	ldr	r1, [r2]
7534	mov	r0, r6
7535	bl	ftl_cmp_data_ver
7536	cbz	r0, .L973
7537	adds	r6, r6, #1
7538	str	r6, [r2]
7539.L973:
7540	ldr	r1, [sp, #8]
7541	ldr	r1, [r1]
7542	adds	r1, r1, #1
7543	bne	.L975
7544.L974:
7545	uxth	r2, r4
7546	uxth	r3, r3
7547	str	r2, [sp, #8]
7548	movs	r2, #20
7549	mla	r10, r2, r3, r10
7550	b	.L1092
7551.L972:
7552	ldr	fp, [sp, #12]
7553.L975:
7554	adds	r3, r3, #1
7555	adds	r7, r7, #20
7556	b	.L971
7557.L979:
7558	movw	r3, #65535
7559	cmp	fp, r3
7560	bne	.L980
7561	ldrb	r3, [r8, #8]	@ zero_extendqisi2
7562	cmp	r3, #0
7563	bne	.L981
7564.L980:
7565	ldr	r3, .L1100+40
7566	uxth	r6, r4
7567	uxth	r4, r4
7568	ldr	r7, .L1100+8
7569	ldr	r2, [r3]
7570	adds	r2, r2, #1
7571	itt	eq
7572	ldreq	r2, [sp]
7573	streq	r2, [r3]
7574	ldr	r3, [sp, #4]
7575	adds	r3, r3, #7
7576	cmp	r4, r3
7577	itet	gt
7578	subgt	r4, r6, #7
7579	ldrle	r4, [sp, #4]
7580	uxthgt	r4, r4
7581.L984:
7582	cmp	r4, r6
7583	bhi	.L994
7584	ldr	r3, .L1100+4
7585	movw	lr, #65535
7586	ldr	r0, [r7]
7587	mov	ip, #20
7588	ldrh	fp, [r3]
7589	ldr	r3, [sp, #16]
7590	str	r3, [sp, #12]
7591	movs	r3, #0
7592	mov	r5, r3
7593	b	.L995
7594.L986:
7595	ldr	r1, [sp, #12]
7596	ldrh	r2, [r1], #2
7597	cmp	r2, lr
7598	str	r1, [sp, #12]
7599	beq	.L985
7600	mla	r1, ip, r5, r0
7601	adds	r5, r5, #1
7602	orr	r2, r4, r2, lsl #10
7603	uxth	r5, r5
7604	str	r2, [r1, #4]
7605.L985:
7606	adds	r3, r3, #1
7607.L995:
7608	uxth	r2, r3
7609	cmp	fp, r2
7610	bhi	.L986
7611	mov	r1, r5
7612	movs	r2, #0
7613	bl	FlashReadPages
7614	ldr	r3, .L1100+40
7615	movs	r1, #20
7616	movs	r0, #0
7617	movw	ip, #65535
7618	ldr	r2, [r3]
7619	ldr	r3, [r7]
7620	mla	r5, r1, r5, r3
7621.L987:
7622	cmp	r5, r3
7623	bne	.L992
7624	cbz	r0, .L993
7625	ldr	r3, .L1100+40
7626	str	r2, [r3]
7627.L993:
7628	adds	r4, r4, #1
7629	uxth	r4, r4
7630	b	.L984
7631.L1101:
7632	.align	2
7633.L1100:
7634	.word	.LANCHOR18
7635	.word	.LANCHOR2
7636	.word	.LANCHOR102
7637	.word	.LANCHOR63
7638	.word	.LANCHOR22
7639	.word	.LANCHOR64
7640	.word	.LANCHOR23
7641	.word	.LANCHOR82
7642	.word	.LANCHOR154
7643	.word	.LC1
7644	.word	.LANCHOR133
7645.L992:
7646	ldr	r1, [r3]
7647	cmp	r1, #0
7648	beq	.L988
7649	cbz	r0, .L981
7650.L1093:
7651	ldr	r3, .L1102
7652	str	r2, [r3]
7653.L981:
7654	ldr	fp, [sp, #4]
7655	movs	r2, #1
7656	ldr	r6, .L1102+4
7657	ldr	r3, .L1102+8
7658	strh	r2, [r3]	@ movhi
7659.L996:
7660	ldr	r3, .L1102+12
7661	movw	lr, #65535
7662	ldr	r0, [r6]
7663	movs	r7, #20
7664	ldr	r1, [sp, #16]
7665	ldrh	r4, [r3]
7666	movs	r3, #0
7667	str	r3, [sp, #12]
7668.L997:
7669	uxth	r2, r3
7670	cmp	r4, r2
7671	bhi	.L999
7672	movs	r2, #0
7673	ldr	r1, [sp, #12]
7674	bl	FlashReadPages
7675	movs	r3, #0
7676.L1097:
7677	str	r3, [sp, #24]
7678	ldr	r2, [sp, #12]
7679	ldrh	r3, [sp, #24]
7680	cmp	r2, r3
7681	bhi	.L1028
7682	ldr	r3, .L1102+16
7683	add	fp, fp, #1
7684	uxth	fp, fp
7685	ldrh	r3, [r3]
7686	cmp	r3, fp
7687	bne	.L996
7688	ldr	r2, .L1102+12
7689	movw	r0, #65535
7690	movs	r3, #0
7691	strh	fp, [r8, #2]	@ movhi
7692	strh	r3, [r8, #4]	@ movhi
7693	ldrh	r2, [r2]
7694.L1029:
7695	uxth	r1, r3
7696	cmp	r1, r2
7697	bcs	.L1091
7698	ldr	r1, [sp, #16]
7699	ldrh	r4, [r1], #2
7700	cmp	r4, r0
7701	str	r1, [sp, #16]
7702	add	r1, r3, #1
7703	bne	.L1098
7704	mov	r3, r1
7705	b	.L1029
7706.L988:
7707	ldr	r1, [r3, #12]
7708	ldrh	lr, [r1]
7709	cmp	lr, ip
7710	beq	.L991
7711	ldr	r1, [r1, #4]
7712	cmp	r1, #-1
7713	itt	ne
7714	movne	r2, r1
7715	movne	r0, #1
7716.L991:
7717	adds	r3, r3, #20
7718	b	.L987
7719.L994:
7720	mov	r2, #-1
7721	b	.L1093
7722.L999:
7723	ldrh	r2, [r1], #2
7724	cmp	r2, lr
7725	beq	.L998
7726	ldr	r5, [sp, #12]
7727	orr	r2, fp, r2, lsl #10
7728	mla	ip, r7, r5, r0
7729	str	r2, [ip, #4]
7730	mov	r2, r5
7731	adds	r2, r2, #1
7732	uxth	r2, r2
7733	str	r2, [sp, #12]
7734.L998:
7735	adds	r3, r3, #1
7736	b	.L997
7737.L1028:
7738	ldr	r3, [sp, #24]
7739	movs	r5, #20
7740	muls	r5, r3, r5
7741	ldr	r3, [r6]
7742	str	r3, [sp, #28]
7743	adds	r7, r3, r5
7744	ldr	r4, [r7, #4]
7745	ubfx	r0, r4, #10, #16
7746	str	r4, [sp, #44]
7747	bl	P2V_plane
7748	ldr	r3, [sp, #4]
7749	cmp	fp, r3
7750	bcc	.L1001
7751	ldr	r3, [sp, #28]
7752	bne	.L1002
7753	ldr	r2, [sp, #20]
7754	cmp	r2, r0
7755	bhi	.L1001
7756.L1002:
7757	ldr	r2, [sp, #8]
7758	cmp	fp, r2
7759	bne	.L1003
7760	cmp	r10, r0
7761	beq	.L1004
7762.L1003:
7763	ldr	r3, [r3, r5]
7764	adds	r3, r3, #1
7765	beq	.L1005
7766	ldr	r3, [r7, #12]
7767	movw	r2, #61589
7768	ldrh	r1, [r3]
7769	cmp	r1, r2
7770	beq	.L1006
7771	ldrh	r0, [r8]
7772.L1094:
7773	bl	decrement_vpc_count
7774	b	.L1001
7775.L1006:
7776	ldr	r2, [r3, #4]
7777	str	r2, [sp]
7778	adds	r2, r2, #1
7779	beq	.L1007
7780	ldr	r2, .L1102+20
7781	ldr	r0, [sp]
7782	ldr	r1, [r2]
7783	bl	ftl_cmp_data_ver
7784	cbz	r0, .L1007
7785	ldr	r1, [sp]
7786	adds	r1, r1, #1
7787	str	r1, [r2]
7788.L1007:
7789	ldr	r4, [r3, #8]
7790	add	r1, sp, #40
7791	ldr	r3, [r3, #12]
7792	movs	r2, #0
7793	mov	r0, r4
7794	str	r3, [sp, #36]
7795	bl	log2phys
7796	ldr	r3, .L1102
7797	ldr	r1, [r3]
7798	adds	r3, r1, #1
7799	beq	.L1008
7800	ldr	r0, [sp]
7801	bl	ftl_cmp_data_ver
7802	cmp	r0, #0
7803	beq	.L1008
7804	ldr	r3, [sp, #36]
7805	adds	r7, r3, #1
7806	beq	.L1009
7807	ldr	r0, [r6]
7808	movs	r2, #0
7809	movs	r1, #1
7810	add	r0, r0, r5
7811	str	r3, [r0, #4]
7812	ldr	r7, [r0, #12]
7813	bl	FlashReadPages
7814	ldr	r2, [r6]
7815	ldr	r1, [r2, r5]
7816	adds	r3, r2, r5
7817	adds	r1, r1, #1
7818	bne	.L1010
7819.L1011:
7820	mov	r3, #-1
7821	str	r3, [sp, #36]
7822.L1018:
7823	ldr	r7, [sp, #36]
7824	adds	r0, r7, #1
7825	beq	.L1001
7826.L1032:
7827	ubfx	r0, r7, #10, #16
7828	bl	P2V_block_in_plane
7829	ldr	r3, .L1102+24
7830	mov	r4, r0
7831	ldrh	r3, [r3]
7832	cmp	r3, r0
7833	bhi	.L1024
7834	movw	r2, #2066
7835	ldr	r1, .L1102+28
7836	ldr	r0, .L1102+32
7837	bl	printf
7838.L1024:
7839	ldr	r3, .L1102+36
7840	ldr	r3, [r3]
7841	ldrh	r3, [r3, r4, lsl #1]
7842	cmp	r3, #0
7843	beq	.L1025
7844	mov	r0, r4
7845	b	.L1094
7846.L1009:
7847	ldr	r3, [sp, #44]
7848	ldr	r2, [sp, #40]
7849	cmp	r2, r3
7850	bne	.L1001
7851	movs	r2, #1
7852	add	r1, sp, #36
7853	mov	r0, r4
7854	bl	log2phys
7855.L1001:
7856	ldr	r3, [sp, #24]
7857	adds	r3, r3, #1
7858	b	.L1097
7859.L1010:
7860	ldr	r1, [r7, #8]
7861	cmp	r4, r1
7862	bne	.L1011
7863	ldr	r0, .L1102
7864	ldr	r1, [r7, #4]
7865	ldr	r0, [r0]
7866	str	r1, [sp, #28]
7867	bl	ftl_cmp_data_ver
7868	cmp	r0, #0
7869	beq	.L1011
7870	ldr	r1, [sp, #40]
7871	ldr	r0, [sp, #44]
7872	cmp	r1, r0
7873	bne	.L1013
7874.L1016:
7875	ldr	r1, [sp, #36]
7876	mov	r0, r4
7877	bl	FtlReUsePrevPpa
7878	b	.L1011
7879.L1013:
7880	ldr	r0, [sp, #36]
7881	cmp	r1, r0
7882	beq	.L1011
7883	adds	r0, r1, #1
7884	beq	.L1014
7885	str	r1, [r3, #4]
7886	movs	r2, #0
7887	movs	r1, #1
7888	mov	r0, r3
7889	ldr	r7, [r3, #12]
7890	bl	FlashReadPages
7891.L1015:
7892	ldr	r3, [r6]
7893	ldr	r3, [r3, r5]
7894	adds	r3, r3, #1
7895	beq	.L1016
7896	ldr	r3, [r7, #4]
7897	ldr	r2, .L1102
7898	mov	r1, r3
7899	ldr	r0, [r2]
7900	bl	ftl_cmp_data_ver
7901	cmp	r0, #0
7902	beq	.L1016
7903	mov	r1, r3
7904	ldr	r0, [sp, #28]
7905	bl	ftl_cmp_data_ver
7906	cmp	r0, #0
7907	beq	.L1011
7908	b	.L1016
7909.L1014:
7910	str	r1, [r2, r5]
7911	b	.L1015
7912.L1008:
7913	ldr	r3, [sp, #44]
7914	ldr	r2, [sp, #40]
7915	cmp	r2, r3
7916	beq	.L1018
7917	ldr	r1, [sp, #36]
7918	adds	r7, r1, #1
7919	beq	.L1020
7920	ldr	r3, .L1102+40
7921	ldr	r3, [r3]
7922	cmp	r3, r1, lsr #10
7923	bhi	.L1020
7924	ldr	r0, .L1102+44
7925.L1096:
7926	bl	printf
7927	b	.L1001
7928.L1103:
7929	.align	2
7930.L1102:
7931	.word	.LANCHOR133
7932	.word	.LANCHOR102
7933	.word	.LANCHOR155
7934	.word	.LANCHOR2
7935	.word	.LANCHOR18
7936	.word	.LANCHOR82
7937	.word	.LANCHOR4
7938	.word	.LANCHOR154
7939	.word	.LC1
7940	.word	.LANCHOR41
7941	.word	.LANCHOR7
7942	.word	.LC27
7943.L1020:
7944	movs	r2, #1
7945	add	r1, sp, #44
7946	mov	r0, r4
7947	bl	log2phys
7948	ldr	r7, [sp, #40]
7949	adds	r5, r7, #1
7950	beq	.L1018
7951	ldr	r3, [sp, #36]
7952	cmp	r7, r3
7953	beq	.L1032
7954	ubfx	r0, r7, #10, #16
7955	bl	P2V_block_in_plane
7956	ldr	r3, .L1104
7957	ldrh	r3, [r3]
7958	cmp	r3, r0
7959	beq	.L1023
7960	ldr	r3, .L1104+4
7961	ldrh	r3, [r3]
7962	cmp	r3, r0
7963	beq	.L1023
7964	ldr	r3, .L1104+8
7965	ldrh	r3, [r3]
7966	cmp	r3, r0
7967	bne	.L1018
7968.L1023:
7969	ldr	r0, [r6]
7970	movs	r2, #0
7971	movs	r1, #1
7972	str	r7, [r0, #4]
7973	ldr	r5, [r0, #12]
7974	bl	FlashReadPages
7975	ldr	r3, [r6]
7976	ldr	r3, [r3]
7977	adds	r3, r3, #1
7978	beq	.L1018
7979	ldr	r1, [r5, #4]
7980	ldr	r0, [sp]
7981	bl	ftl_cmp_data_ver
7982	cmp	r0, #0
7983	bne	.L1018
7984	movs	r2, #1
7985	add	r1, sp, #40
7986	mov	r0, r4
7987	bl	log2phys
7988	b	.L1018
7989.L1025:
7990	mov	r1, r4
7991	ldr	r0, .L1104+12
7992	b	.L1096
7993.L1005:
7994	ldr	r3, .L1104+16
7995	ldr	r3, [r3]
7996	cmp	r3, #31
7997	bhi	.L1026
7998	ldr	r2, .L1104+20
7999	str	r4, [r2, r3, lsl #2]
8000	adds	r3, r3, #1
8001	ldr	r2, .L1104+16
8002	str	r3, [r2]
8003.L1026:
8004	ldrh	r0, [r8]
8005	bl	decrement_vpc_count
8006	ldr	r3, .L1104+24
8007	ldr	r2, [r3]
8008	adds	r1, r2, #1
8009	bne	.L1027
8010	ldr	r2, [sp]
8011.L1095:
8012	str	r2, [r3]
8013	b	.L1001
8014.L1027:
8015	ldr	r1, [sp]
8016	cmp	r1, r2
8017	bcs	.L1001
8018	mov	r2, r1
8019	b	.L1095
8020.L1004:
8021	strb	r10, [r8, #6]
8022	mov	r2, r10
8023	strh	fp, [r8, #2]	@ movhi
8024	mov	r1, fp
8025	b	.L1099
8026.L1105:
8027	.align	2
8028.L1104:
8029	.word	.LANCHOR50
8030	.word	.LANCHOR51
8031	.word	.LANCHOR52
8032	.word	.LC28
8033	.word	.LANCHOR156
8034	.word	.LANCHOR157
8035	.word	.LANCHOR133
8036	.size	FtlRecoverySuperblock, .-FtlRecoverySuperblock
8037	.section	.text.ftl_check_vpc,"ax",%progbits
8038	.align	1
8039	.global	ftl_check_vpc
8040	.syntax unified
8041	.thumb
8042	.thumb_func
8043	.fpu softvfp
8044	.type	ftl_check_vpc, %function
8045ftl_check_vpc:
8046	@ args = 0, pretend = 0, frame = 8
8047	@ frame_needed = 0, uses_anonymous_args = 0
8048	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
8049	movs	r4, #0
8050	ldr	r6, .L1130
8051	ldr	r5, .L1130+4
8052	ldr	r1, .L1130+8
8053	ldr	r0, .L1130+12
8054	bl	printf
8055	mov	r2, #8192
8056	movs	r1, #0
8057	ldr	r0, .L1130+4
8058	bl	ftl_memset
8059.L1107:
8060	ldr	r3, [r6]
8061	cmp	r4, r3
8062	bcc	.L1109
8063	ldr	r10, .L1130+48
8064	movs	r4, #0
8065	ldr	r7, .L1130+16
8066	mov	r6, r4
8067.L1110:
8068	ldrh	r2, [r10]
8069	uxth	r3, r4
8070	cmp	r2, r3
8071	bhi	.L1112
8072	ldr	r3, .L1130+20
8073	ldr	r4, [r3]
8074	cbz	r4, .L1113
8075	ldr	r3, .L1130+24
8076	mov	r8, #0
8077	ldr	r5, .L1130+28
8078	ldr	r10, .L1130+16
8079	ldrh	r7, [r3]
8080	ldr	r3, [r5]
8081	ldr	fp, .L1130+4
8082	subs	r4, r4, r3
8083	ldr	r3, .L1130+32
8084	asrs	r4, r4, #1
8085	muls	r4, r3, r4
8086	uxth	r4, r4
8087.L1114:
8088	uxth	r3, r8
8089	cmp	r7, r3
8090	bls	.L1113
8091	ldr	r3, [r10]
8092	ldrh	r2, [r3, r4, lsl #1]
8093	cbz	r2, .L1115
8094	movs	r6, #1
8095	ldrh	r3, [fp, r4, lsl #1]
8096	mov	r1, r4
8097	ldr	r0, .L1130+36
8098	bl	printf
8099.L1115:
8100	movs	r3, #6
8101	ldr	r2, [r5]
8102	muls	r4, r3, r4
8103	movw	r3, #65535
8104	add	r8, r8, #1
8105	ldrh	r4, [r2, r4]
8106	cmp	r4, r3
8107	bne	.L1114
8108.L1113:
8109	cbz	r6, .L1106
8110	movw	r2, #2394
8111	ldr	r1, .L1130+8
8112	ldr	r0, .L1130+40
8113	bl	printf
8114.L1106:
8115	add	sp, sp, #8
8116	@ sp needed
8117	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
8118.L1109:
8119	movs	r2, #0
8120	add	r1, sp, #4
8121	mov	r0, r4
8122	bl	log2phys
8123	ldr	r0, [sp, #4]
8124	adds	r3, r0, #1
8125	beq	.L1108
8126	ubfx	r0, r0, #10, #16
8127	bl	P2V_block_in_plane
8128	ldrh	r3, [r5, r0, lsl #1]
8129	adds	r3, r3, #1
8130	strh	r3, [r5, r0, lsl #1]	@ movhi
8131.L1108:
8132	adds	r4, r4, #1
8133	b	.L1107
8134.L1112:
8135	ldr	r3, [r7]
8136	uxth	r5, r4
8137	ldr	r8, .L1130+4
8138	ldrh	r2, [r3, r5, lsl #1]
8139	ldrh	r3, [r8, r5, lsl #1]
8140	cmp	r2, r3
8141	beq	.L1111
8142	mov	r1, r5
8143	ldr	r0, .L1130+44
8144	bl	printf
8145	ldr	r3, [r7]
8146	movw	r2, #65535
8147	ldrh	r3, [r3, r5, lsl #1]
8148	cmp	r3, r2
8149	beq	.L1111
8150	ldrh	r2, [r8, r5, lsl #1]
8151	cmp	r2, r3
8152	it	hi
8153	movhi	r6, #1
8154.L1111:
8155	adds	r4, r4, #1
8156	b	.L1110
8157.L1131:
8158	.align	2
8159.L1130:
8160	.word	.LANCHOR151
8161	.word	check_vpc_table
8162	.word	.LANCHOR158
8163	.word	.LC29
8164	.word	.LANCHOR41
8165	.word	.LANCHOR45
8166	.word	.LANCHOR47
8167	.word	.LANCHOR39
8168	.word	-1431655765
8169	.word	.LC31
8170	.word	.LC1
8171	.word	.LC30
8172	.word	.LANCHOR4
8173	.size	ftl_check_vpc, .-ftl_check_vpc
8174	.section	.text.ftl_scan_all_data,"ax",%progbits
8175	.align	1
8176	.global	ftl_scan_all_data
8177	.syntax unified
8178	.thumb
8179	.thumb_func
8180	.fpu softvfp
8181	.type	ftl_scan_all_data, %function
8182ftl_scan_all_data:
8183	@ args = 0, pretend = 0, frame = 8
8184	@ frame_needed = 0, uses_anonymous_args = 0
8185	push	{r4, r5, r6, r7, r8, lr}
8186	movs	r5, #0
8187	ldr	r7, .L1146
8188	sub	sp, sp, #32
8189	movs	r1, #0
8190	ldr	r8, .L1146+24
8191	ldr	r0, .L1146+4
8192	bl	printf
8193.L1133:
8194	ldr	r3, [r7]
8195	cmp	r5, r3
8196	bcc	.L1139
8197	add	sp, sp, #32
8198	@ sp needed
8199	pop	{r4, r5, r6, r7, r8, pc}
8200.L1139:
8201	movs	r2, #0
8202	add	r1, sp, #28
8203	mov	r0, r5
8204	bl	log2phys
8205	ubfx	r3, r5, #0, #11
8206	cbnz	r3, .L1134
8207	ldr	r2, [sp, #28]
8208	mov	r1, r5
8209	mov	r0, r8
8210	bl	printf
8211.L1134:
8212	ldr	r3, [sp, #28]
8213	adds	r2, r3, #1
8214	beq	.L1136
8215	ldr	r4, .L1146+8
8216	movs	r2, #0
8217	movs	r1, #1
8218	str	r3, [r4, #4]
8219	mov	r0, r4
8220	ldr	r3, .L1146+12
8221	str	r5, [r4, #16]
8222	str	r2, [r4]
8223	ldr	r3, [r3]
8224	str	r3, [r4, #8]
8225	ldr	r3, .L1146+16
8226	ldr	r6, [r3]
8227	str	r6, [r4, #12]
8228	bl	FlashReadPages
8229	ldr	r3, [r4]
8230	cmp	r3, #256
8231	beq	.L1137
8232	adds	r3, r3, #1
8233	beq	.L1137
8234	ldr	r3, [r6, #8]
8235	cmp	r5, r3
8236	beq	.L1136
8237.L1137:
8238	ldr	r2, [r4, #8]
8239	ldr	r3, [r4, #12]
8240	ldr	r0, .L1146+20
8241	ldr	r1, [r2, #4]
8242	str	r1, [sp, #16]
8243	mov	r1, r5
8244	ldr	r2, [r2]
8245	str	r2, [sp, #12]
8246	ldr	r2, [r3, #12]
8247	str	r2, [sp, #8]
8248	ldr	r2, [r3, #8]
8249	str	r2, [sp, #4]
8250	ldr	r2, [r3, #4]
8251	str	r2, [sp]
8252	ldr	r2, [r4, #4]
8253	ldr	r3, [r3]
8254	bl	printf
8255.L1136:
8256	adds	r5, r5, #1
8257	b	.L1133
8258.L1147:
8259	.align	2
8260.L1146:
8261	.word	.LANCHOR151
8262	.word	.LC32
8263	.word	.LANCHOR137
8264	.word	.LANCHOR105
8265	.word	.LANCHOR113
8266	.word	.LC34
8267	.word	.LC33
8268	.size	ftl_scan_all_data, .-ftl_scan_all_data
8269	.section	.text.FtlGcScanTempBlk,"ax",%progbits
8270	.align	1
8271	.global	FtlGcScanTempBlk
8272	.syntax unified
8273	.thumb
8274	.thumb_func
8275	.fpu softvfp
8276	.type	FtlGcScanTempBlk, %function
8277FtlGcScanTempBlk:
8278	@ args = 0, pretend = 0, frame = 48
8279	@ frame_needed = 0, uses_anonymous_args = 0
8280	ldr	r3, .L1180
8281	movw	r2, #65535
8282	push	{r4, r5, r6, r7, r8, r10, fp, lr}
8283	sub	sp, sp, #48
8284	mov	r4, r0
8285	ldrh	r5, [r3]
8286	str	r3, [sp, #20]
8287	cmp	r5, r2
8288	beq	.L1170
8289	cbnz	r5, .L1149
8290.L1150:
8291	bl	FtlGcPageVarInit
8292	b	.L1151
8293.L1170:
8294	movs	r5, #0
8295.L1149:
8296	ldr	r3, .L1180+4
8297	ldrh	r3, [r3]
8298	cmp	r3, r1
8299	beq	.L1150
8300.L1151:
8301	ldr	fp, .L1180+56
8302.L1167:
8303	ldrh	r2, [r4]
8304	movs	r3, #0
8305	strb	r3, [r4, #8]
8306	movw	r3, #65535
8307	cmp	r2, r3
8308	beq	.L1152
8309.L1169:
8310	ldr	r3, .L1180+8
8311	movs	r2, #0
8312	ldr	r0, [fp]
8313	mov	r10, r2
8314	movw	lr, #65535
8315	mov	r8, #20
8316	ldrh	r3, [r3]
8317	str	r3, [sp, #8]
8318	ldr	r3, .L1180+12
8319	ldr	r3, [r3]
8320	str	r3, [sp, #12]
8321	ldr	r3, .L1180+16
8322	ldrh	r3, [r3]
8323	str	r3, [sp, #16]
8324	ldr	r3, .L1180+20
8325	ldr	r7, [r3]
8326	ldr	r3, .L1180+24
8327	ldrh	ip, [r3]
8328	add	r3, r4, #16
8329	str	r3, [sp, #4]
8330.L1153:
8331	ldr	r1, [sp, #8]
8332	uxth	r3, r2
8333	cmp	r1, r3
8334	bhi	.L1155
8335	mov	r8, #0
8336	movs	r2, #0
8337	mov	r1, r10
8338	bl	FlashReadPages
8339.L1156:
8340	uxth	r3, r8
8341	cmp	r10, r3
8342	bhi	.L1168
8343	ldr	r3, .L1180+4
8344	adds	r5, r5, #1
8345	uxth	r5, r5
8346	ldrh	r3, [r3]
8347	cmp	r3, r5
8348	bhi	.L1169
8349.L1152:
8350	ldr	r2, [sp, #20]
8351	movw	r3, #65535
8352	mov	r0, r4
8353	strh	r5, [r4, #2]	@ movhi
8354	mov	r1, r5
8355	strh	r3, [r2]	@ movhi
8356	movs	r2, #0
8357	strb	r2, [r4, #6]
8358	bl	ftl_sb_update_avl_pages
8359	mov	r0, #-1
8360	add	sp, sp, #48
8361	@ sp needed
8362	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
8363.L1155:
8364	ldr	r1, [sp, #4]
8365	ldrh	r3, [r1], #2
8366	cmp	r3, lr
8367	str	r1, [sp, #4]
8368	beq	.L1154
8369	mla	r1, r8, r10, r0
8370	orr	r3, r5, r3, lsl #10
8371	str	r3, [r1, #4]
8372	ldr	r3, [sp, #16]
8373	mul	r3, r3, r10
8374	bic	r3, r3, #3
8375	mov	r6, r3
8376	ldr	r3, [sp, #12]
8377	add	r6, r6, r3
8378	mul	r3, ip, r10
8379	str	r6, [r1, #8]
8380	bic	r3, r3, #3
8381	add	r3, r3, r7
8382	str	r3, [r1, #12]
8383	add	r3, r10, #1
8384	uxth	r10, r3
8385.L1154:
8386	adds	r2, r2, #1
8387	b	.L1153
8388.L1168:
8389	movs	r3, #20
8390	ldr	r2, [fp]
8391	mul	r3, r3, r8
8392	adds	r1, r2, r3
8393	ldr	r6, [r2, r3]
8394	ldr	r0, [r1, #4]
8395	ldr	r7, [r1, #12]
8396	str	r0, [sp, #4]
8397	cmp	r6, #0
8398	bne	.L1157
8399	ldrh	r1, [r7]
8400	movw	r2, #65535
8401	cmp	r1, r2
8402	beq	.L1178
8403	ldr	r2, .L1180+28
8404	ldr	r0, [r7, #8]
8405	ldr	r2, [r2]
8406	cmp	r0, r2
8407	bls	.L1159
8408.L1178:
8409	ldr	r3, .L1180+32
8410	movs	r1, #0
8411	ldrh	r2, [r4]
8412	movs	r5, #0
8413	ldr	r3, [r3]
8414	strh	r1, [r3, r2, lsl #1]	@ movhi
8415	ldrh	r0, [r4]
8416	bl	INSERT_FREE_LIST
8417	ldr	r2, .L1180+36
8418	movw	r3, #65535
8419	strh	r3, [r4]	@ movhi
8420	strh	r3, [r2]	@ movhi
8421	bl	FtlGcPageVarInit
8422	b	.L1167
8423.L1159:
8424	mov	r2, r6
8425	add	r1, sp, #24
8426	str	r3, [sp, #8]
8427	bl	log2phys
8428	ldr	r2, [r7, #12]
8429	ldr	r1, [sp, #24]
8430	ldr	r3, [sp, #8]
8431	cmp	r2, r1
8432	beq	.L1161
8433.L1163:
8434	ldr	r2, [r7, #8]
8435.L1179:
8436	ldr	r1, [sp, #4]
8437	add	r8, r8, #1
8438	ldr	r0, [r7, #12]
8439	bl	FtlGcUpdatePage
8440	b	.L1156
8441.L1161:
8442	str	r3, [sp, #8]
8443	adds	r3, r2, #1
8444	beq	.L1163
8445	str	r2, [sp, #32]
8446	movs	r1, #1
8447	ldr	r2, .L1180+40
8448	add	r0, sp, #28
8449	ldr	r2, [r2]
8450	str	r2, [sp, #36]
8451	ldr	r2, .L1180+44
8452	ldr	r2, [r2]
8453	str	r2, [sp, #40]
8454	mov	r2, r6
8455	bl	FlashReadPages
8456	ldr	r2, .L1180+48
8457	ldr	r1, [fp]
8458	ldr	r3, [sp, #8]
8459	ldrh	r2, [r2]
8460	ldr	r0, [sp, #36]
8461	add	ip, r3, r1
8462	lsls	r2, r2, #7
8463.L1164:
8464	cmp	r6, r2
8465	beq	.L1163
8466	ldr	r1, [ip, #8]
8467	ldr	r3, [r0, r6, lsl #2]
8468	ldr	r1, [r1, r6, lsl #2]
8469	cmp	r1, r3
8470	beq	.L1165
8471	ldr	r2, [sp, #32]
8472	ldrh	r1, [r4]
8473	ldr	r0, .L1180+52
8474	bl	printf
8475	b	.L1178
8476.L1165:
8477	adds	r6, r6, #1
8478	b	.L1164
8479.L1157:
8480	mov	r2, #-1
8481	b	.L1179
8482.L1181:
8483	.align	2
8484.L1180:
8485	.word	.LANCHOR159
8486	.word	.LANCHOR18
8487	.word	.LANCHOR2
8488	.word	.LANCHOR63
8489	.word	.LANCHOR22
8490	.word	.LANCHOR64
8491	.word	.LANCHOR23
8492	.word	.LANCHOR151
8493	.word	.LANCHOR41
8494	.word	.LANCHOR144
8495	.word	.LANCHOR109
8496	.word	.LANCHOR114
8497	.word	.LANCHOR11
8498	.word	.LC35
8499	.word	.LANCHOR102
8500	.size	FtlGcScanTempBlk, .-FtlGcScanTempBlk
8501	.section	.text.FtlVendorPartWrite,"ax",%progbits
8502	.align	1
8503	.global	FtlVendorPartWrite
8504	.syntax unified
8505	.thumb
8506	.thumb_func
8507	.fpu softvfp
8508	.type	FtlVendorPartWrite, %function
8509FtlVendorPartWrite:
8510	@ args = 0, pretend = 0, frame = 104
8511	@ frame_needed = 0, uses_anonymous_args = 0
8512	ldr	r3, .L1194
8513	push	{r4, r5, r6, r7, r8, r10, fp, lr}
8514	sub	sp, sp, #104
8515	str	r2, [sp]
8516	adds	r2, r0, r1
8517	mov	r7, r0
8518	mov	r5, r1
8519	ldrh	r3, [r3]
8520	cmp	r2, r3
8521	bhi	.L1190
8522	ldr	r3, .L1194+4
8523	mov	r8, #0
8524	ldrh	r6, [r3]
8525	lsr	r6, r0, r6
8526	lsl	fp, r6, #2
8527.L1184:
8528	cbnz	r5, .L1189
8529.L1182:
8530	mov	r0, r8
8531	add	sp, sp, #104
8532	@ sp needed
8533	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
8534.L1189:
8535	ldr	r3, .L1194+8
8536	mov	r0, r7
8537	ldr	r10, .L1194+24
8538	ldr	r3, [r3]
8539	ldr	r2, [r3, fp]
8540	ldr	r3, .L1194+12
8541	str	r2, [sp, #12]
8542	ldrh	r3, [r3]
8543	mov	r1, r3
8544	str	r3, [sp, #8]
8545	bl	__aeabi_uidivmod
8546	ldr	r3, [sp, #8]
8547	ldr	r2, [sp, #12]
8548	str	r1, [sp, #4]
8549	subs	r4, r3, r1
8550	uxth	r4, r4
8551	cmp	r5, r4
8552	it	cc
8553	uxthcc	r4, r5
8554	cbz	r2, .L1186
8555	cmp	r4, r3
8556	beq	.L1186
8557	ldr	r3, [r10]
8558	add	r0, sp, #20
8559	str	r2, [sp, #24]
8560	movs	r2, #1
8561	mov	r1, r2
8562	str	r3, [sp, #28]
8563	add	r3, sp, #40
8564	str	r3, [sp, #32]
8565	bl	FlashReadPages
8566.L1187:
8567	lsls	r3, r4, #9
8568	ldr	r0, [r10]
8569	subs	r5, r5, r4
8570	mov	r2, r3
8571	str	r3, [sp, #8]
8572	ldm	sp, {r1, r3}
8573	add	r7, r7, r4
8574	add	fp, fp, #4
8575	add	r0, r0, r3, lsl #9
8576	bl	ftl_memcpy
8577	ldr	r2, [r10]
8578	mov	r1, r6
8579	ldr	r0, .L1194+16
8580	adds	r6, r6, #1
8581	bl	FtlMapWritePage
8582	ldr	r3, [sp]
8583	adds	r0, r0, #1
8584	it	eq
8585	moveq	r8, #-1
8586	mov	r2, r3
8587	ldr	r3, [sp, #8]
8588	add	r2, r2, r3
8589	str	r2, [sp]
8590	b	.L1184
8591.L1186:
8592	ldr	r3, .L1194+20
8593	movs	r1, #0
8594	ldr	r0, [r10]
8595	ldrh	r2, [r3]
8596	bl	ftl_memset
8597	b	.L1187
8598.L1190:
8599	mov	r8, #-1
8600	b	.L1182
8601.L1195:
8602	.align	2
8603.L1194:
8604	.word	.LANCHOR15
8605	.word	.LANCHOR21
8606	.word	.LANCHOR122
8607	.word	.LANCHOR11
8608	.word	.LANCHOR160
8609	.word	.LANCHOR22
8610	.word	.LANCHOR107
8611	.size	FtlVendorPartWrite, .-FtlVendorPartWrite
8612	.section	.text.Ftl_save_ext_data,"ax",%progbits
8613	.align	1
8614	.global	Ftl_save_ext_data
8615	.syntax unified
8616	.thumb
8617	.thumb_func
8618	.fpu softvfp
8619	.type	Ftl_save_ext_data, %function
8620Ftl_save_ext_data:
8621	@ args = 0, pretend = 0, frame = 0
8622	@ frame_needed = 0, uses_anonymous_args = 0
8623	@ link register save eliminated.
8624	ldr	r2, .L1198
8625	ldr	r3, .L1198+4
8626	ldr	r1, [r2]
8627	cmp	r1, r3
8628	bne	.L1196
8629	ldr	r3, .L1198+8
8630	movs	r1, #1
8631	movs	r0, #0
8632	str	r3, [r2, #4]
8633	ldr	r3, .L1198+12
8634	ldr	r3, [r3]
8635	str	r3, [r2, #88]
8636	ldr	r3, .L1198+16
8637	ldr	r3, [r3]
8638	str	r3, [r2, #92]
8639	ldr	r3, .L1198+20
8640	ldr	r3, [r3]
8641	str	r3, [r2, #8]
8642	ldr	r3, .L1198+24
8643	ldr	r3, [r3]
8644	str	r3, [r2, #12]
8645	ldr	r3, .L1198+28
8646	ldr	r3, [r3]
8647	str	r3, [r2, #16]
8648	ldr	r3, .L1198+32
8649	ldr	r3, [r3]
8650	str	r3, [r2, #20]
8651	ldr	r3, .L1198+36
8652	ldr	r3, [r3]
8653	str	r3, [r2, #28]
8654	ldr	r3, .L1198+40
8655	ldr	r3, [r3]
8656	str	r3, [r2, #32]
8657	ldr	r3, .L1198+44
8658	ldr	r3, [r3]
8659	str	r3, [r2, #36]
8660	ldr	r3, .L1198+48
8661	ldr	r3, [r3]
8662	str	r3, [r2, #40]
8663	ldr	r3, .L1198+52
8664	ldr	r3, [r3]
8665	str	r3, [r2, #44]
8666	ldr	r3, .L1198+56
8667	ldr	r3, [r3]
8668	str	r3, [r2, #48]
8669	b	FtlVendorPartWrite
8670.L1196:
8671	bx	lr
8672.L1199:
8673	.align	2
8674.L1198:
8675	.word	.LANCHOR134
8676	.word	1179929683
8677	.word	1342177366
8678	.word	.LANCHOR161
8679	.word	.LANCHOR162
8680	.word	.LANCHOR83
8681	.word	.LANCHOR84
8682	.word	.LANCHOR88
8683	.word	.LANCHOR87
8684	.word	.LANCHOR90
8685	.word	.LANCHOR79
8686	.word	.LANCHOR85
8687	.word	.LANCHOR86
8688	.word	.LANCHOR91
8689	.word	.LANCHOR92
8690	.size	Ftl_save_ext_data, .-Ftl_save_ext_data
8691	.section	.text.FtlEctTblFlush,"ax",%progbits
8692	.align	1
8693	.global	FtlEctTblFlush
8694	.syntax unified
8695	.thumb
8696	.thumb_func
8697	.fpu softvfp
8698	.type	FtlEctTblFlush, %function
8699FtlEctTblFlush:
8700	@ args = 0, pretend = 0, frame = 0
8701	@ frame_needed = 0, uses_anonymous_args = 0
8702	ldr	r2, .L1205
8703	push	{r3, lr}
8704	ldrh	r3, [r2]
8705	cmp	r3, #31
8706	itett	ls
8707	addls	r3, r3, #1
8708	movhi	r3, #32
8709	strhls	r3, [r2]	@ movhi
8710	movls	r3, #1
8711	ldr	r2, .L1205+4
8712	cbnz	r0, .L1202
8713	ldr	r1, [r2]
8714	ldr	r0, [r1, #20]
8715	ldr	r1, [r1, #16]
8716	add	r3, r3, r0
8717	cmp	r1, r3
8718	bcc	.L1203
8719.L1202:
8720	ldr	r2, [r2]
8721	movs	r0, #64
8722	ldr	r3, [r2, #16]
8723	str	r3, [r2, #20]
8724	ldr	r3, .L1205+8
8725	str	r3, [r2]
8726	ldr	r3, .L1205+12
8727	ldrh	r1, [r3]
8728	lsls	r3, r1, #9
8729	str	r3, [r2, #12]
8730	ldr	r3, [r2, #8]
8731	adds	r3, r3, #1
8732	str	r3, [r2, #8]
8733	movs	r3, #0
8734	str	r3, [r2, #4]
8735	bl	FtlVendorPartWrite
8736	bl	Ftl_save_ext_data
8737.L1203:
8738	movs	r0, #0
8739	pop	{r3, pc}
8740.L1206:
8741	.align	2
8742.L1205:
8743	.word	.LANCHOR163
8744	.word	.LANCHOR117
8745	.word	1112818501
8746	.word	.LANCHOR115
8747	.size	FtlEctTblFlush, .-FtlEctTblFlush
8748	.section	.text.sftl_vendor_write,"ax",%progbits
8749	.align	1
8750	.global	sftl_vendor_write
8751	.syntax unified
8752	.thumb
8753	.thumb_func
8754	.fpu softvfp
8755	.type	sftl_vendor_write, %function
8756sftl_vendor_write:
8757	@ args = 0, pretend = 0, frame = 0
8758	@ frame_needed = 0, uses_anonymous_args = 0
8759	@ link register save eliminated.
8760	add	r0, r0, #256
8761	b	FtlVendorPartWrite
8762	.size	sftl_vendor_write, .-sftl_vendor_write
8763	.section	.text.FtlVendorPartRead,"ax",%progbits
8764	.align	1
8765	.global	FtlVendorPartRead
8766	.syntax unified
8767	.thumb
8768	.thumb_func
8769	.fpu softvfp
8770	.type	FtlVendorPartRead, %function
8771FtlVendorPartRead:
8772	@ args = 0, pretend = 0, frame = 104
8773	@ frame_needed = 0, uses_anonymous_args = 0
8774	ldr	r3, .L1218
8775	push	{r4, r5, r6, r7, r8, r10, fp, lr}
8776	mov	r10, r2
8777	adds	r2, r0, r1
8778	sub	sp, sp, #104
8779	mov	r7, r0
8780	mov	r6, r1
8781	ldrh	r3, [r3]
8782	cmp	r2, r3
8783	bhi	.L1217
8784	ldr	r3, .L1218+4
8785	mov	r8, #0
8786	ldr	fp, .L1218+28
8787	ldrh	r5, [r3]
8788	lsr	r5, r0, r5
8789	lsls	r3, r5, #2
8790	str	r3, [sp]
8791.L1210:
8792	cbnz	r6, .L1216
8793.L1208:
8794	mov	r0, r8
8795	add	sp, sp, #104
8796	@ sp needed
8797	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
8798.L1216:
8799	ldr	r3, .L1218+8
8800	mov	r0, r7
8801	ldr	r2, [sp]
8802	ldr	r3, [r3]
8803	ldr	r3, [r3, r2]
8804	ldr	r2, .L1218+12
8805	str	r3, [sp, #8]
8806	ldrh	r4, [r2]
8807	mov	r1, r4
8808	bl	__aeabi_uidivmod
8809	subs	r4, r4, r1
8810	ldr	r3, [sp, #8]
8811	uxth	r4, r4
8812	str	r1, [sp, #4]
8813	cmp	r6, r4
8814	it	cc
8815	uxthcc	r4, r6
8816	lsls	r2, r4, #9
8817	str	r2, [sp, #8]
8818	cmp	r3, #0
8819	beq	.L1212
8820	ldr	r2, [fp]
8821	add	r0, sp, #20
8822	str	r3, [sp, #24]
8823	str	r3, [sp, #12]
8824	str	r2, [sp, #28]
8825	add	r2, sp, #40
8826	str	r2, [sp, #32]
8827	movs	r2, #1
8828	mov	r1, r2
8829	bl	FlashReadPages
8830	ldr	r2, [sp, #20]
8831	ldr	r3, [sp, #12]
8832	adds	r2, r2, #1
8833	ldr	r2, .L1218+16
8834	it	eq
8835	moveq	r8, #-1
8836	ldr	r2, [r2]
8837	cmp	r2, #256
8838	bne	.L1214
8839	mov	r2, r3
8840	mov	r1, r5
8841	ldr	r0, .L1218+20
8842	bl	printf
8843	ldr	r2, [fp]
8844	mov	r1, r5
8845	ldr	r0, .L1218+24
8846	bl	FtlMapWritePage
8847.L1214:
8848	ldr	r1, [fp]
8849	lsls	r2, r4, #9
8850	ldr	r3, [sp, #4]
8851	mov	r0, r10
8852	add	r1, r1, r3, lsl #9
8853	bl	ftl_memcpy
8854.L1215:
8855	ldr	r3, [sp, #8]
8856	adds	r5, r5, #1
8857	subs	r6, r6, r4
8858	add	r7, r7, r4
8859	add	r10, r10, r3
8860	ldr	r3, [sp]
8861	adds	r3, r3, #4
8862	str	r3, [sp]
8863	b	.L1210
8864.L1212:
8865	lsls	r2, r4, #9
8866	mov	r1, r3
8867	mov	r0, r10
8868	bl	ftl_memset
8869	b	.L1215
8870.L1217:
8871	mov	r8, #-1
8872	b	.L1208
8873.L1219:
8874	.align	2
8875.L1218:
8876	.word	.LANCHOR15
8877	.word	.LANCHOR21
8878	.word	.LANCHOR122
8879	.word	.LANCHOR11
8880	.word	.LANCHOR137
8881	.word	.LC36
8882	.word	.LANCHOR160
8883	.word	.LANCHOR107
8884	.size	FtlVendorPartRead, .-FtlVendorPartRead
8885	.section	.text.FtlLoadEctTbl,"ax",%progbits
8886	.align	1
8887	.global	FtlLoadEctTbl
8888	.syntax unified
8889	.thumb
8890	.thumb_func
8891	.fpu softvfp
8892	.type	FtlLoadEctTbl, %function
8893FtlLoadEctTbl:
8894	@ args = 0, pretend = 0, frame = 0
8895	@ frame_needed = 0, uses_anonymous_args = 0
8896	push	{r3, r4, r5, lr}
8897	movs	r0, #64
8898	ldr	r4, .L1222
8899	ldr	r5, .L1222+4
8900	ldr	r2, [r4]
8901	ldrh	r1, [r5]
8902	bl	FtlVendorPartRead
8903	ldr	r3, [r4]
8904	ldr	r2, [r3]
8905	ldr	r3, .L1222+8
8906	cmp	r2, r3
8907	beq	.L1221
8908	ldr	r1, .L1222+12
8909	ldr	r0, .L1222+16
8910	bl	printf
8911	ldrh	r2, [r5]
8912	movs	r1, #0
8913	ldr	r0, [r4]
8914	lsls	r2, r2, #9
8915	bl	ftl_memset
8916.L1221:
8917	movs	r0, #0
8918	pop	{r3, r4, r5, pc}
8919.L1223:
8920	.align	2
8921.L1222:
8922	.word	.LANCHOR117
8923	.word	.LANCHOR115
8924	.word	1112818501
8925	.word	.LC37
8926	.word	.LC38
8927	.size	FtlLoadEctTbl, .-FtlLoadEctTbl
8928	.section	.text.Ftl_load_ext_data,"ax",%progbits
8929	.align	1
8930	.global	Ftl_load_ext_data
8931	.syntax unified
8932	.thumb
8933	.thumb_func
8934	.fpu softvfp
8935	.type	Ftl_load_ext_data, %function
8936Ftl_load_ext_data:
8937	@ args = 0, pretend = 0, frame = 0
8938	@ frame_needed = 0, uses_anonymous_args = 0
8939	push	{r3, r4, r5, lr}
8940	movs	r1, #1
8941	ldr	r4, .L1227
8942	movs	r0, #0
8943	ldr	r5, .L1227+4
8944	mov	r2, r4
8945	bl	FtlVendorPartRead
8946	ldr	r3, [r4]
8947	cmp	r3, r5
8948	beq	.L1225
8949	mov	r2, #512
8950	movs	r1, #0
8951	mov	r0, r4
8952	bl	ftl_memset
8953	str	r5, [r4]
8954.L1225:
8955	ldr	r3, [r4]
8956	cmp	r3, r5
8957	ldr	r3, .L1227+8
8958	bne	.L1226
8959	ldr	r1, [r4, #88]
8960	ldr	r2, .L1227+12
8961	str	r1, [r2]
8962	ldr	r1, [r4, #92]
8963	ldr	r2, .L1227+16
8964	str	r1, [r2]
8965	ldr	r1, [r4, #8]
8966	ldr	r2, .L1227+20
8967	str	r1, [r2]
8968	ldr	r1, [r4, #12]
8969	ldr	r2, .L1227+24
8970	str	r1, [r2]
8971	ldr	r1, [r4, #16]
8972	ldr	r2, .L1227+28
8973	str	r1, [r2]
8974	ldr	r1, [r4, #20]
8975	ldr	r2, .L1227+32
8976	str	r1, [r2]
8977	ldr	r2, [r4, #28]
8978	ldr	r1, [r4, #32]
8979	str	r2, [r3]
8980	ldr	r2, .L1227+36
8981	str	r1, [r2]
8982	ldr	r1, [r4, #36]
8983	ldr	r2, .L1227+40
8984	str	r1, [r2]
8985	ldr	r1, [r4, #40]
8986	ldr	r2, .L1227+44
8987	str	r1, [r2]
8988	ldr	r1, [r4, #44]
8989	ldr	r2, .L1227+48
8990	str	r1, [r2]
8991	ldr	r1, [r4, #48]
8992	ldr	r2, .L1227+52
8993	str	r1, [r2]
8994.L1226:
8995	ldr	r1, .L1227+56
8996	ldr	r2, .L1227+60
8997	ldr	r3, [r3]
8998	ldr	r0, [r1]
8999	ldrh	r2, [r2]
9000	ldr	r1, .L1227+64
9001	mla	r0, r0, r2, r3
9002	ldrh	r1, [r1]
9003	bl	__aeabi_uidiv
9004	ldr	r3, .L1227+68
9005	str	r0, [r3]
9006	pop	{r3, r4, r5, pc}
9007.L1228:
9008	.align	2
9009.L1227:
9010	.word	.LANCHOR134
9011	.word	1179929683
9012	.word	.LANCHOR90
9013	.word	.LANCHOR161
9014	.word	.LANCHOR162
9015	.word	.LANCHOR83
9016	.word	.LANCHOR84
9017	.word	.LANCHOR88
9018	.word	.LANCHOR87
9019	.word	.LANCHOR79
9020	.word	.LANCHOR85
9021	.word	.LANCHOR86
9022	.word	.LANCHOR91
9023	.word	.LANCHOR92
9024	.word	.LANCHOR89
9025	.word	.LANCHOR13
9026	.word	.LANCHOR4
9027	.word	.LANCHOR142
9028	.size	Ftl_load_ext_data, .-Ftl_load_ext_data
9029	.section	.text.sftl_vendor_read,"ax",%progbits
9030	.align	1
9031	.global	sftl_vendor_read
9032	.syntax unified
9033	.thumb
9034	.thumb_func
9035	.fpu softvfp
9036	.type	sftl_vendor_read, %function
9037sftl_vendor_read:
9038	@ args = 0, pretend = 0, frame = 0
9039	@ frame_needed = 0, uses_anonymous_args = 0
9040	@ link register save eliminated.
9041	add	r0, r0, #256
9042	b	FtlVendorPartRead
9043	.size	sftl_vendor_read, .-sftl_vendor_read
9044	.section	.text.FtlMapBlkWriteDump_data,"ax",%progbits
9045	.align	1
9046	.global	FtlMapBlkWriteDump_data
9047	.syntax unified
9048	.thumb
9049	.thumb_func
9050	.fpu softvfp
9051	.type	FtlMapBlkWriteDump_data, %function
9052FtlMapBlkWriteDump_data:
9053	@ args = 0, pretend = 0, frame = 0
9054	@ frame_needed = 0, uses_anonymous_args = 0
9055	push	{r3, r4, r5, r6, r7, r8, r10, lr}
9056	mov	r4, r0
9057	ldr	r3, [r0, #36]
9058	cmp	r3, #0
9059	beq	.L1230
9060	movs	r3, #0
9061	ldr	r5, .L1242
9062	str	r3, [r0, #36]
9063	ldr	r3, .L1242+4
9064	ldrh	r6, [r0, #6]
9065	mov	r7, r5
9066	ldr	r10, [r0, #24]
9067	ldr	r3, [r3]
9068	str	r3, [r5, #8]
9069	ldr	r3, .L1242+8
9070	ldr	r8, [r3]
9071	ldrh	r3, [r0, #2]
9072	str	r8, [r5, #12]
9073	cbz	r3, .L1232
9074	ldr	r2, .L1242+12
9075	ldrh	r2, [r2]
9076	subs	r2, r2, #1
9077	cmp	r3, r2
9078	bge	.L1232
9079	ldrh	r2, [r0]
9080	movw	r1, #65535
9081	cmp	r2, r1
9082	beq	.L1232
9083	ldr	r1, [r0, #12]
9084	subs	r3, r3, #1
9085	mov	r0, r5
9086	ldrh	r2, [r1, r2, lsl #1]
9087	orr	r3, r3, r2, lsl #10
9088	movs	r2, #1
9089	mov	r1, r2
9090	str	r3, [r5, #4]
9091	bl	FlashReadPages
9092	ldr	r3, [r5]
9093	adds	r3, r3, #1
9094	beq	.L1232
9095	ldr	r3, [r4, #24]
9096	ldrh	r1, [r8, #8]
9097	ldr	r2, [r3, r1, lsl #2]
9098	ldr	r3, [r5, #4]
9099	cmp	r2, r3
9100	bne	.L1232
9101	ldr	r2, [r5, #8]
9102.L1241:
9103	mov	r0, r4
9104	pop	{r3, r4, r5, r6, r7, r8, r10, lr}
9105	b	FtlMapWritePage
9106.L1232:
9107	subs	r6, r6, #1
9108	uxth	r6, r6
9109	ldr	r3, [r10, r6, lsl #2]
9110	str	r3, [r7, #4]
9111	cbz	r3, .L1233
9112	movs	r2, #1
9113	ldr	r0, .L1242
9114	mov	r1, r2
9115	bl	FlashReadPages
9116.L1234:
9117	ldr	r2, [r7, #8]
9118	mov	r1, r6
9119	b	.L1241
9120.L1233:
9121	ldr	r3, .L1242+16
9122	movs	r1, #255
9123	ldr	r0, [r7, #8]
9124	ldrh	r2, [r3]
9125	bl	ftl_memset
9126	b	.L1234
9127.L1230:
9128	pop	{r3, r4, r5, r6, r7, r8, r10, pc}
9129.L1243:
9130	.align	2
9131.L1242:
9132	.word	.LANCHOR137
9133	.word	.LANCHOR106
9134	.word	.LANCHOR113
9135	.word	.LANCHOR19
9136	.word	.LANCHOR22
9137	.size	FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data
9138	.section	.text.FtlVpcTblFlush,"ax",%progbits
9139	.align	1
9140	.global	FtlVpcTblFlush
9141	.syntax unified
9142	.thumb
9143	.thumb_func
9144	.fpu softvfp
9145	.type	FtlVpcTblFlush, %function
9146FtlVpcTblFlush:
9147	@ args = 0, pretend = 0, frame = 8
9148	@ frame_needed = 0, uses_anonymous_args = 0
9149	push	{r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
9150	mov	r8, #0
9151	ldr	r3, .L1259
9152	ldr	r5, .L1259+4
9153	ldr	fp, .L1259+72
9154	ldr	r0, [r3]
9155	ldr	r6, .L1259+8
9156	ldr	r7, [fp]
9157	ldrh	r2, [r5]
9158	str	r0, [r6, #8]
9159	str	r7, [r6, #12]
9160	strh	r2, [r7, #2]	@ movhi
9161	movw	r2, #61604
9162	strh	r2, [r7]	@ movhi
9163	ldr	r2, [r5, #8]
9164	ldr	r4, .L1259+12
9165	ldr	ip, .L1259+76
9166	str	r2, [r7, #4]
9167	ldr	r2, .L1259+16
9168	str	r8, [r7, #8]
9169	str	r8, [r7, #12]
9170	stm	r4, {r2, ip}
9171	ldrh	r2, [r5, #6]
9172	str	r3, [sp]
9173	ldr	r10, .L1259+80
9174	strh	r2, [r4, #8]	@ movhi
9175	ldr	r2, .L1259+20
9176	ldr	r3, .L1259+24
9177	ldrh	r2, [r2]
9178	strb	r2, [r4, #10]
9179	ldr	r2, .L1259+28
9180	ldrh	r1, [r2]
9181	ldrh	ip, [r2, #2]
9182	strh	r1, [r4, #14]	@ movhi
9183	ldrb	r1, [r2, #6]	@ zero_extendqisi2
9184	ldrb	r2, [r2, #8]	@ zero_extendqisi2
9185	strb	r2, [r4, #11]
9186	orr	r1, r1, ip, lsl #6
9187	ldr	r2, .L1259+32
9188	strh	r1, [r4, #16]	@ movhi
9189	ldrh	r1, [r2]
9190	ldrh	ip, [r2, #2]
9191	strh	r1, [r4, #18]	@ movhi
9192	ldrb	r1, [r2, #6]	@ zero_extendqisi2
9193	ldrb	r2, [r2, #8]	@ zero_extendqisi2
9194	orr	r1, r1, ip, lsl #6
9195	strh	r1, [r4, #20]	@ movhi
9196	strb	r2, [r4, #12]
9197	ldr	r2, .L1259+36
9198	ldrh	r1, [r2]
9199	ldrh	ip, [r2, #2]
9200	strh	r1, [r4, #22]	@ movhi
9201	ldrb	r1, [r2, #6]	@ zero_extendqisi2
9202	ldrb	r2, [r2, #8]	@ zero_extendqisi2
9203	strb	r2, [r4, #13]
9204	orr	r1, r1, ip, lsl #6
9205	ldr	r2, .L1259+40
9206	strh	r1, [r4, #24]	@ movhi
9207	movs	r1, #255
9208	ldr	r2, [r2]
9209	str	r2, [r4, #32]
9210	ldr	r2, [r10]
9211	str	r2, [r4, #40]
9212	ldr	r2, .L1259+44
9213	ldr	r2, [r2]
9214	str	r2, [r4, #36]
9215	ldrh	r2, [r3]
9216	bl	ftl_memset
9217	mov	r1, r4
9218	movs	r2, #48
9219	ldr	r0, [r6, #8]
9220	movw	r4, #65535
9221	bl	ftl_memcpy
9222	ldr	r2, .L1259+48
9223	ldr	r0, [r6, #8]
9224	ldr	r1, .L1259+52
9225	ldrh	r2, [r2]
9226	adds	r0, r0, #48
9227	ldr	r1, [r1]
9228	lsls	r2, r2, #1
9229	bl	ftl_memcpy
9230	mov	r0, r8
9231	bl	FtlUpdateVaildLpn
9232	ldr	r3, .L1259+24
9233	str	r3, [sp, #4]
9234.L1245:
9235	ldr	r3, [sp]
9236	ldrh	r1, [r5, #2]
9237	ldrh	r2, [r5]
9238	ldr	r3, [r3]
9239	str	r3, [r6, #8]
9240	ldr	r3, [fp]
9241	str	r3, [r6, #12]
9242	orr	r3, r1, r2, lsl #10
9243	str	r3, [r6, #4]
9244	ldr	r3, .L1259+56
9245	ldrh	r3, [r3]
9246	subs	r3, r3, #1
9247	cmp	r1, r3
9248	blt	.L1246
9249	movs	r3, #0
9250	ldrh	r4, [r5, #4]
9251	strh	r3, [r5, #2]	@ movhi
9252	strh	r2, [r5, #4]	@ movhi
9253	bl	FtlFreeSysBlkQueueOut
9254	ldr	r3, [r10]
9255	strh	r0, [r5]	@ movhi
9256	adds	r2, r3, #1
9257	str	r3, [r5, #8]
9258	str	r2, [r10]
9259	lsls	r2, r0, #10
9260	str	r2, [r6, #4]
9261	str	r3, [r7, #4]
9262	strh	r0, [r7, #2]	@ movhi
9263.L1246:
9264	ldr	r3, [sp, #4]
9265	ldrh	r1, [r3]
9266	ldr	r3, [sp]
9267	ldr	r0, [r3]
9268	bl	js_hash
9269	movs	r3, #1
9270	str	r0, [r7, #12]
9271	mov	r2, r3
9272	mov	r1, r3
9273	ldr	r0, .L1259+8
9274	bl	FlashProgPages
9275	ldrh	r3, [r5, #2]
9276	ldr	r2, [r6]
9277	adds	r3, r3, #1
9278	uxth	r3, r3
9279	adds	r1, r2, #1
9280	strh	r3, [r5, #2]	@ movhi
9281	bne	.L1247
9282	cmp	r3, #1
9283	bne	.L1248
9284	movw	r2, #1145
9285	ldr	r1, .L1259+60
9286	ldr	r0, .L1259+64
9287	bl	printf
9288.L1248:
9289	ldrh	r3, [r5, #2]
9290	add	r8, r8, #1
9291	uxth	r8, r8
9292	cmp	r3, #1
9293	itttt	eq
9294	ldreq	r3, .L1259+56
9295	ldrheq	r3, [r3]
9296	addeq	r3, r3, #-1
9297	strheq	r3, [r5, #2]	@ movhi
9298	cmp	r8, #3
9299	bls	.L1245
9300	mov	r2, r8
9301	ldr	r1, [r6, #4]
9302	ldr	r0, .L1259+68
9303	bl	printf
9304.L1251:
9305	b	.L1251
9306.L1247:
9307	cmp	r3, #1
9308	beq	.L1245
9309	cmp	r2, #256
9310	beq	.L1245
9311	movw	r3, #65535
9312	cmp	r4, r3
9313	beq	.L1252
9314	movs	r1, #1
9315	mov	r0, r4
9316	bl	FtlFreeSysBlkQueueIn
9317.L1252:
9318	movs	r0, #0
9319	add	sp, sp, #8
9320	@ sp needed
9321	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
9322.L1260:
9323	.align	2
9324.L1259:
9325	.word	.LANCHOR105
9326	.word	.LANCHOR138
9327	.word	.LANCHOR137
9328	.word	.LANCHOR38
9329	.word	1179929683
9330	.word	.LANCHOR9
9331	.word	.LANCHOR22
9332	.word	.LANCHOR50
9333	.word	.LANCHOR51
9334	.word	.LANCHOR52
9335	.word	.LANCHOR89
9336	.word	.LANCHOR82
9337	.word	.LANCHOR4
9338	.word	.LANCHOR41
9339	.word	.LANCHOR19
9340	.word	.LANCHOR164
9341	.word	.LC1
9342	.word	.LC39
9343	.word	.LANCHOR113
9344	.word	1342177366
9345	.word	.LANCHOR81
9346	.size	FtlVpcTblFlush, .-FtlVpcTblFlush
9347	.section	.text.FtlSysFlush,"ax",%progbits
9348	.align	1
9349	.global	FtlSysFlush
9350	.syntax unified
9351	.thumb
9352	.thumb_func
9353	.fpu softvfp
9354	.type	FtlSysFlush, %function
9355FtlSysFlush:
9356	@ args = 0, pretend = 0, frame = 0
9357	@ frame_needed = 0, uses_anonymous_args = 0
9358	push	{r3, lr}
9359	bl	l2p_flush
9360	movs	r0, #1
9361	bl	FtlEctTblFlush
9362	bl	FtlVpcTblFlush
9363	movs	r0, #0
9364	pop	{r3, pc}
9365	.size	FtlSysFlush, .-FtlSysFlush
9366	.section	.text.sftl_deinit,"ax",%progbits
9367	.align	1
9368	.global	sftl_deinit
9369	.syntax unified
9370	.thumb
9371	.thumb_func
9372	.fpu softvfp
9373	.type	sftl_deinit, %function
9374sftl_deinit:
9375	@ args = 0, pretend = 0, frame = 0
9376	@ frame_needed = 0, uses_anonymous_args = 0
9377	push	{r3, lr}
9378	ldr	r3, .L1264
9379	ldr	r3, [r3]
9380	cmp	r3, #1
9381	bne	.L1263
9382	bl	FtlSysFlush
9383.L1263:
9384	movs	r0, #0
9385	pop	{r3, pc}
9386.L1265:
9387	.align	2
9388.L1264:
9389	.word	.LANCHOR165
9390	.size	sftl_deinit, .-sftl_deinit
9391	.section	.text.FtlDiscard,"ax",%progbits
9392	.align	1
9393	.global	FtlDiscard
9394	.syntax unified
9395	.thumb
9396	.thumb_func
9397	.fpu softvfp
9398	.type	FtlDiscard, %function
9399FtlDiscard:
9400	@ args = 0, pretend = 0, frame = 8
9401	@ frame_needed = 0, uses_anonymous_args = 0
9402	ldr	r3, .L1283
9403	push	{r0, r1, r4, r5, r6, r7, r8, lr}
9404	mov	r6, r0
9405	mov	r4, r1
9406	ldr	r3, [r3]
9407	cmp	r3, r0
9408	bls	.L1276
9409	cmp	r3, r1
9410	bcc	.L1276
9411	adds	r2, r0, r1
9412	cmp	r3, r2
9413	bcc	.L1276
9414	cmp	r1, #31
9415	bhi	.L1268
9416.L1273:
9417	movs	r0, #0
9418.L1266:
9419	add	sp, sp, #8
9420	@ sp needed
9421	pop	{r4, r5, r6, r7, r8, pc}
9422.L1268:
9423	ldr	r8, .L1283+12
9424	ldrh	r5, [r8]
9425	mov	r1, r5
9426	bl	__aeabi_uidiv
9427	smulbb	r3, r0, r5
9428	mov	r7, r0
9429	subs	r6, r6, r3
9430	uxth	r6, r6
9431	cbz	r6, .L1269
9432	subs	r5, r5, r6
9433	adds	r7, r7, #1
9434	cmp	r5, r4
9435	it	cs
9436	movcs	r5, r4
9437	uxth	r5, r5
9438	subs	r4, r4, r5
9439.L1269:
9440	ldr	r5, .L1283+4
9441	mov	r3, #-1
9442	ldr	r6, .L1283+8
9443	str	r3, [sp, #4]
9444.L1270:
9445	ldrh	r3, [r8]
9446	cmp	r4, r3
9447	bcs	.L1272
9448	ldr	r3, .L1283+4
9449	ldr	r2, [r3]
9450	cmp	r2, #32
9451	bls	.L1273
9452	movs	r4, #0
9453	str	r4, [r3]
9454	bl	l2p_flush
9455	bl	FtlVpcTblFlush
9456	b	.L1273
9457.L1272:
9458	movs	r2, #0
9459	mov	r1, sp
9460	mov	r0, r7
9461	bl	log2phys
9462	ldr	r3, [sp]
9463	adds	r3, r3, #1
9464	beq	.L1271
9465	ldr	r3, [r5]
9466	movs	r2, #1
9467	add	r1, sp, #4
9468	mov	r0, r7
9469	adds	r3, r3, #1
9470	str	r3, [r5]
9471	ldr	r3, [r6]
9472	adds	r3, r3, #1
9473	str	r3, [r6]
9474	bl	log2phys
9475	ldr	r0, [sp]
9476	ubfx	r0, r0, #10, #16
9477	bl	P2V_block_in_plane
9478	bl	decrement_vpc_count
9479.L1271:
9480	ldrh	r3, [r8]
9481	adds	r7, r7, #1
9482	subs	r4, r4, r3
9483	b	.L1270
9484.L1276:
9485	mov	r0, #-1
9486	b	.L1266
9487.L1284:
9488	.align	2
9489.L1283:
9490	.word	.LANCHOR33
9491	.word	.LANCHOR166
9492	.word	.LANCHOR85
9493	.word	.LANCHOR11
9494	.size	FtlDiscard, .-FtlDiscard
9495	.section	.text.allocate_new_data_superblock,"ax",%progbits
9496	.align	1
9497	.global	allocate_new_data_superblock
9498	.syntax unified
9499	.thumb
9500	.thumb_func
9501	.fpu softvfp
9502	.type	allocate_new_data_superblock, %function
9503allocate_new_data_superblock:
9504	@ args = 0, pretend = 0, frame = 0
9505	@ frame_needed = 0, uses_anonymous_args = 0
9506	ldr	r3, .L1295
9507	push	{r4, r5, r6, lr}
9508	mov	r6, r0
9509	ldrh	r4, [r0]
9510	ldrh	r3, [r3]
9511	cmp	r3, r4
9512	bcs	.L1286
9513	movw	r2, #2766
9514	ldr	r1, .L1295+4
9515	ldr	r0, .L1295+8
9516	bl	printf
9517.L1286:
9518	movw	r3, #65535
9519	cmp	r4, r3
9520	beq	.L1287
9521	ldr	r3, .L1295+12
9522	mov	r0, r4
9523	ldr	r3, [r3]
9524	ldrh	r3, [r3, r4, lsl #1]
9525	cbz	r3, .L1288
9526	bl	INSERT_DATA_LIST
9527.L1287:
9528	ldr	r5, .L1295+16
9529	movw	r2, #65535
9530	movs	r3, #1
9531	strb	r3, [r6, #8]
9532	ldrh	r0, [r5]
9533	cmp	r0, r2
9534	beq	.L1289
9535	cmp	r4, r0
9536	bne	.L1290
9537	ldr	r3, .L1295+12
9538	ldr	r3, [r3]
9539	ldrh	r3, [r3, r0, lsl #1]
9540	cbz	r3, .L1291
9541.L1290:
9542	bl	update_vpc_list
9543.L1291:
9544	movw	r3, #65535
9545	strh	r3, [r5]	@ movhi
9546.L1289:
9547	mov	r0, r6
9548	bl	allocate_data_superblock
9549	bl	l2p_flush
9550	movs	r0, #0
9551	bl	FtlEctTblFlush
9552	bl	FtlVpcTblFlush
9553	movs	r0, #0
9554	pop	{r4, r5, r6, pc}
9555.L1288:
9556	bl	INSERT_FREE_LIST
9557	b	.L1287
9558.L1296:
9559	.align	2
9560.L1295:
9561	.word	.LANCHOR4
9562	.word	.LANCHOR167
9563	.word	.LC1
9564	.word	.LANCHOR41
9565	.word	.LANCHOR130
9566	.size	allocate_new_data_superblock, .-allocate_new_data_superblock
9567	.section	.text.FtlProgPages,"ax",%progbits
9568	.align	1
9569	.global	FtlProgPages
9570	.syntax unified
9571	.thumb
9572	.thumb_func
9573	.fpu softvfp
9574	.type	FtlProgPages, %function
9575FtlProgPages:
9576	@ args = 0, pretend = 0, frame = 16
9577	@ frame_needed = 0, uses_anonymous_args = 0
9578	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
9579	movs	r6, #0
9580	ldr	r10, .L1316+20
9581	mov	r5, r3
9582	movs	r2, #0
9583	mov	r4, r0
9584	ldr	fp, .L1316
9585	mov	r8, r1
9586	ldrb	r3, [r3, #9]	@ zero_extendqisi2
9587	bl	FlashProgPages
9588.L1298:
9589	cmp	r6, r8
9590	bne	.L1305
9591	ldr	r3, .L1316
9592	ldrb	r2, [r5, #6]	@ zero_extendqisi2
9593	ldrh	r3, [r3]
9594	cmp	r2, r3
9595	bcc	.L1297
9596	mov	r2, #1000
9597	ldr	r1, .L1316+4
9598	ldr	r0, .L1316+8
9599	bl	printf
9600.L1297:
9601	add	sp, sp, #16
9602	@ sp needed
9603	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
9604.L1300:
9605	ldr	r1, [r4, #4]
9606	mov	r0, r10
9607	bl	printf
9608	ldr	r0, [r4, #4]
9609	ubfx	r0, r0, #10, #16
9610	bl	P2V_block_in_plane
9611	bl	decrement_vpc_count
9612	ldrh	r3, [r5, #4]
9613	cbnz	r3, .L1299
9614	mov	r0, r5
9615	bl	allocate_new_data_superblock
9616.L1299:
9617	mov	r0, r5
9618	bl	get_new_active_ppa
9619	movs	r2, #0
9620	str	r0, [r4, #4]
9621	str	r0, [sp, #12]
9622	movs	r1, #1
9623	ldrb	r3, [r5, #9]	@ zero_extendqisi2
9624	mov	r0, r4
9625	bl	FlashProgPages
9626.L1305:
9627	ldr	r2, [r4]
9628	adds	r3, r2, #1
9629	beq	.L1300
9630	cmp	r2, #256
9631	beq	.L1300
9632	ldrb	r2, [r5, #6]	@ zero_extendqisi2
9633	ldrh	r3, [fp]
9634	cmp	r2, r3
9635	bcc	.L1301
9636	movw	r2, #985
9637	ldr	r1, .L1316+4
9638	ldr	r0, .L1316+8
9639	bl	printf
9640.L1301:
9641	ldr	r3, [r4, #4]
9642	add	r1, sp, #16
9643	movs	r2, #1
9644	ldr	r0, [r4, #16]
9645	str	r3, [r1, #-4]!
9646	bl	log2phys
9647	ldr	r3, [r4, #12]
9648	ldr	r3, [r3, #12]
9649	ubfx	r0, r3, #10, #16
9650	str	r3, [sp, #4]
9651	bl	P2V_block_in_plane
9652	ldr	r3, [sp, #4]
9653	mov	r7, r0
9654	adds	r3, r3, #1
9655	beq	.L1302
9656	ldr	r3, .L1316+12
9657	ldr	r3, [r3]
9658	ldrh	r2, [r3, r0, lsl #1]
9659	cbnz	r2, .L1303
9660	mov	r1, r0
9661	ldr	r0, .L1316+16
9662	bl	printf
9663.L1303:
9664	mov	r0, r7
9665	bl	decrement_vpc_count
9666.L1302:
9667	adds	r6, r6, #1
9668	adds	r4, r4, #20
9669	b	.L1298
9670.L1317:
9671	.align	2
9672.L1316:
9673	.word	.LANCHOR2
9674	.word	.LANCHOR168
9675	.word	.LC1
9676	.word	.LANCHOR41
9677	.word	.LC41
9678	.word	.LC40
9679	.size	FtlProgPages, .-FtlProgPages
9680	.section	.text.FtlGcFreeTempBlock,"ax",%progbits
9681	.align	1
9682	.global	FtlGcFreeTempBlock
9683	.syntax unified
9684	.thumb
9685	.thumb_func
9686	.fpu softvfp
9687	.type	FtlGcFreeTempBlock, %function
9688FtlGcFreeTempBlock:
9689	@ args = 0, pretend = 0, frame = 16
9690	@ frame_needed = 0, uses_anonymous_args = 0
9691	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
9692	movw	r3, #65535
9693	ldr	r4, .L1333
9694	ldrh	r2, [r4]
9695	cmp	r2, r3
9696	beq	.L1319
9697	ldr	r3, .L1333+4
9698	mov	r0, r4
9699	ldrh	r1, [r3]
9700	bl	FtlGcScanTempBlk
9701	str	r0, [sp, #12]
9702.L1319:
9703	ldr	r3, .L1333+8
9704	movs	r2, #0
9705	str	r2, [r3]
9706	movw	r3, #65535
9707	ldrh	r2, [r4]
9708	cmp	r2, r3
9709	beq	.L1321
9710	ldr	r6, .L1333+4
9711	ldrb	r0, [r4, #7]	@ zero_extendqisi2
9712	ldr	r5, .L1333+12
9713	ldrh	r2, [r6]
9714	ldrh	r1, [r5]
9715	muls	r2, r0, r2
9716	cmp	r1, r2
9717	beq	.L1322
9718	movs	r2, #164
9719	ldr	r1, .L1333+16
9720	ldr	r0, .L1333+20
9721	bl	printf
9722.L1322:
9723	ldrh	r6, [r6]
9724	ldrb	r3, [r4, #7]	@ zero_extendqisi2
9725	ldr	r2, .L1333+24
9726	ldrh	r0, [r4]
9727	ldr	fp, .L1333+56
9728	smulbb	r3, r3, r6
9729	ldr	r1, [r2]
9730	movs	r6, #0
9731	mov	r10, r2
9732	strh	r3, [r1, r0, lsl #1]	@ movhi
9733	ldr	r1, .L1333+28
9734	ldrh	r3, [r5]
9735	ldr	r0, [r1]
9736	add	r3, r3, r0
9737	str	r3, [r1]
9738.L1323:
9739	ldrh	r2, [r5]
9740	uxth	r3, r6
9741	cmp	r2, r3
9742	bhi	.L1327
9743	movw	r0, #65535
9744	bl	decrement_vpc_count
9745	ldrh	r0, [r4]
9746	ldr	r3, [r10]
9747	ldrh	r3, [r3, r0, lsl #1]
9748	cmp	r3, #0
9749	beq	.L1328
9750	bl	INSERT_DATA_LIST
9751.L1329:
9752	ldr	r2, .L1333+32
9753	movs	r3, #0
9754	movw	r6, #65535
9755	strh	r3, [r5]	@ movhi
9756	strh	r6, [r4]	@ movhi
9757	strh	r3, [r2]	@ movhi
9758	bl	l2p_flush
9759	bl	FtlVpcTblFlush
9760	ldr	r3, .L1333+36
9761	strh	r6, [r3]	@ movhi
9762	ldr	r3, .L1333+40
9763	ldrh	r2, [r3]
9764	ldr	r3, .L1333+44
9765	ldrh	r3, [r3]
9766	add	r3, r3, r3, lsl #1
9767	cmp	r2, r3, asr #2
9768	ittt	gt
9769	ldrgt	r3, .L1333+48
9770	movgt	r2, #20
9771	strhgt	r2, [r3]	@ movhi
9772.L1321:
9773	movs	r0, #0
9774	add	sp, sp, #16
9775	@ sp needed
9776	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
9777.L1327:
9778	uxth	r3, r6
9779	mov	r8, #12
9780	ldr	r2, [fp]
9781	mul	r8, r8, r3
9782	ldr	r3, .L1333+52
9783	ldr	r3, [r3]
9784	add	r7, r3, r8
9785	ldr	r0, [r7, #8]
9786	cmp	r0, r2
9787	bcc	.L1324
9788.L1331:
9789	ldrh	r0, [r4]
9790	b	.L1332
9791.L1324:
9792	movs	r2, #0
9793	add	r1, sp, #12
9794	str	r3, [sp, #4]
9795	bl	log2phys
9796	ldr	r3, [sp, #4]
9797	ldr	r2, [sp, #12]
9798	ldr	r0, [r3, r8]
9799	cmp	r0, r2
9800	bne	.L1326
9801	ubfx	r0, r0, #10, #16
9802	bl	P2V_block_in_plane
9803	movs	r2, #1
9804	mov	r8, r0
9805	adds	r1, r7, #4
9806	ldr	r0, [r7, #8]
9807	bl	log2phys
9808	mov	r0, r8
9809.L1332:
9810	bl	decrement_vpc_count
9811	b	.L1325
9812.L1326:
9813	ldr	r3, [r7, #4]
9814	cmp	r2, r3
9815	bne	.L1331
9816.L1325:
9817	adds	r6, r6, #1
9818	b	.L1323
9819.L1328:
9820	bl	INSERT_FREE_LIST
9821	b	.L1329
9822.L1334:
9823	.align	2
9824.L1333:
9825	.word	.LANCHOR52
9826	.word	.LANCHOR18
9827	.word	.LANCHOR132
9828	.word	.LANCHOR69
9829	.word	.LANCHOR169
9830	.word	.LC1
9831	.word	.LANCHOR41
9832	.word	.LANCHOR83
9833	.word	.LANCHOR68
9834	.word	.LANCHOR144
9835	.word	.LANCHOR47
9836	.word	.LANCHOR170
9837	.word	.LANCHOR99
9838	.word	.LANCHOR70
9839	.word	.LANCHOR151
9840	.size	FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
9841	.section	.text.FtlGcPageRecovery,"ax",%progbits
9842	.align	1
9843	.global	FtlGcPageRecovery
9844	.syntax unified
9845	.thumb
9846	.thumb_func
9847	.fpu softvfp
9848	.type	FtlGcPageRecovery, %function
9849FtlGcPageRecovery:
9850	@ args = 0, pretend = 0, frame = 0
9851	@ frame_needed = 0, uses_anonymous_args = 0
9852	push	{r3, r4, r5, lr}
9853	ldr	r4, .L1337
9854	ldr	r5, .L1337+4
9855	ldrh	r1, [r4]
9856	mov	r0, r5
9857	bl	FtlGcScanTempBlk
9858	ldrh	r2, [r5, #2]
9859	ldrh	r3, [r4]
9860	cmp	r2, r3
9861	bcc	.L1335
9862	ldr	r0, .L1337+8
9863	bl	FtlMapBlkWriteDump_data
9864	movs	r0, #0
9865	bl	FtlGcFreeTempBlock
9866	ldr	r3, .L1337+12
9867	movs	r2, #0
9868	str	r2, [r3]
9869.L1335:
9870	pop	{r3, r4, r5, pc}
9871.L1338:
9872	.align	2
9873.L1337:
9874	.word	.LANCHOR18
9875	.word	.LANCHOR52
9876	.word	.LANCHOR128
9877	.word	.LANCHOR132
9878	.size	FtlGcPageRecovery, .-FtlGcPageRecovery
9879	.section	.text.FtlPowerLostRecovery,"ax",%progbits
9880	.align	1
9881	.global	FtlPowerLostRecovery
9882	.syntax unified
9883	.thumb
9884	.thumb_func
9885	.fpu softvfp
9886	.type	FtlPowerLostRecovery, %function
9887FtlPowerLostRecovery:
9888	@ args = 0, pretend = 0, frame = 0
9889	@ frame_needed = 0, uses_anonymous_args = 0
9890	push	{r3, r4, r5, lr}
9891	movs	r4, #0
9892	ldr	r5, .L1340
9893	ldr	r3, .L1340+4
9894	mov	r0, r5
9895	str	r4, [r3]
9896	bl	FtlRecoverySuperblock
9897	mov	r0, r5
9898	ldr	r5, .L1340+8
9899	bl	FtlSlcSuperblockCheck
9900	mov	r0, r5
9901	bl	FtlRecoverySuperblock
9902	mov	r0, r5
9903	bl	FtlSlcSuperblockCheck
9904	bl	FtlGcPageRecovery
9905	movw	r0, #65535
9906	bl	decrement_vpc_count
9907	mov	r0, r4
9908	pop	{r3, r4, r5, pc}
9909.L1341:
9910	.align	2
9911.L1340:
9912	.word	.LANCHOR50
9913	.word	.LANCHOR156
9914	.word	.LANCHOR51
9915	.size	FtlPowerLostRecovery, .-FtlPowerLostRecovery
9916	.section	.text.Ftl_gc_temp_data_write_back,"ax",%progbits
9917	.align	1
9918	.global	Ftl_gc_temp_data_write_back
9919	.syntax unified
9920	.thumb
9921	.thumb_func
9922	.fpu softvfp
9923	.type	Ftl_gc_temp_data_write_back, %function
9924Ftl_gc_temp_data_write_back:
9925	@ args = 0, pretend = 0, frame = 0
9926	@ frame_needed = 0, uses_anonymous_args = 0
9927	push	{r3, r4, r5, r6, r7, lr}
9928	movs	r3, #0
9929	ldr	r4, .L1350
9930	movs	r6, #0
9931	movs	r7, #20
9932	mov	r2, r3
9933	ldr	r5, .L1350+4
9934	ldr	r1, [r4]
9935	ldr	r0, [r5]
9936	bl	FlashProgPages
9937.L1343:
9938	ldr	r1, [r4]
9939	uxth	r3, r6
9940	cmp	r1, r3
9941	bhi	.L1346
9942	ldr	r0, [r5]
9943	bl	FtlGcBufFree
9944	ldr	r3, .L1350+8
9945	movs	r0, #0
9946	str	r0, [r4]
9947	ldrh	r3, [r3, #4]
9948	cbnz	r3, .L1342
9949	movs	r0, #1
9950	bl	FtlGcFreeTempBlock
9951	movs	r0, #1
9952.L1342:
9953	pop	{r3, r4, r5, r6, r7, pc}
9954.L1346:
9955	muls	r3, r7, r3
9956	ldr	r2, [r5]
9957	adds	r6, r6, #1
9958	adds	r1, r2, r3
9959	ldr	r2, [r2, r3]
9960	ldr	r0, [r1, #12]
9961	ldr	r1, [r1, #4]
9962	adds	r3, r2, #1
9963	it	ne
9964	ldrne	r2, [r0, #8]
9965	ldr	r0, [r0, #12]
9966	bl	FtlGcUpdatePage
9967	b	.L1343
9968.L1351:
9969	.align	2
9970.L1350:
9971	.word	.LANCHOR61
9972	.word	.LANCHOR103
9973	.word	.LANCHOR52
9974	.size	Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
9975	.section	.text.Ftl_get_new_temp_ppa,"ax",%progbits
9976	.align	1
9977	.global	Ftl_get_new_temp_ppa
9978	.syntax unified
9979	.thumb
9980	.thumb_func
9981	.fpu softvfp
9982	.type	Ftl_get_new_temp_ppa, %function
9983Ftl_get_new_temp_ppa:
9984	@ args = 0, pretend = 0, frame = 0
9985	@ frame_needed = 0, uses_anonymous_args = 0
9986	push	{r3, r4, r5, lr}
9987	movw	r3, #65535
9988	ldr	r4, .L1355
9989	ldrh	r2, [r4]
9990	cmp	r2, r3
9991	beq	.L1353
9992	ldrh	r3, [r4, #4]
9993	cbnz	r3, .L1354
9994.L1353:
9995	movs	r0, #0
9996	movs	r5, #0
9997	bl	FtlGcFreeTempBlock
9998	ldr	r0, .L1355
9999	strb	r5, [r4, #8]
10000	bl	allocate_data_superblock
10001	ldr	r3, .L1355+4
10002	strh	r5, [r3]	@ movhi
10003	ldr	r3, .L1355+8
10004	strh	r5, [r3]	@ movhi
10005	bl	l2p_flush
10006	mov	r0, r5
10007	bl	FtlEctTblFlush
10008	bl	FtlVpcTblFlush
10009.L1354:
10010	ldr	r0, .L1355
10011	pop	{r3, r4, r5, lr}
10012	b	get_new_active_ppa
10013.L1356:
10014	.align	2
10015.L1355:
10016	.word	.LANCHOR52
10017	.word	.LANCHOR68
10018	.word	.LANCHOR69
10019	.size	Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
10020	.section	.text.rk_ftl_garbage_collect,"ax",%progbits
10021	.align	1
10022	.global	rk_ftl_garbage_collect
10023	.syntax unified
10024	.thumb
10025	.thumb_func
10026	.fpu softvfp
10027	.type	rk_ftl_garbage_collect, %function
10028rk_ftl_garbage_collect:
10029	@ args = 0, pretend = 0, frame = 40
10030	@ frame_needed = 0, uses_anonymous_args = 0
10031	ldr	r3, .L1447
10032	push	{r4, r5, r6, r7, r8, r10, fp, lr}
10033	sub	sp, sp, #48
10034	str	r0, [sp, #28]
10035	ldr	r0, [r3]
10036	cmp	r0, #0
10037	bne	.L1414
10038	ldr	r3, .L1447+4
10039	ldrh	r3, [r3]
10040	cmp	r3, #47
10041	bls	.L1357
10042	ldr	r3, .L1447+8
10043	movw	r4, #65535
10044	ldrh	r0, [r3]
10045	cmp	r0, r4
10046	beq	.L1359
10047	ldr	r1, .L1447+12
10048	ldrh	r2, [r1]
10049	cmp	r2, r4
10050	itt	eq
10051	strheq	r0, [r1]	@ movhi
10052	strheq	r2, [r3]	@ movhi
10053.L1359:
10054	ldr	r3, [sp, #28]
10055	cmp	r3, #0
10056	bne	.L1416
10057	ldr	r3, .L1447+16
10058	ldrh	r3, [r3]
10059	cmp	r3, #24
10060	bhi	.L1417
10061	ldr	r2, .L1447+20
10062	cmp	r3, #16
10063	ldrh	r4, [r2]
10064	bls	.L1362
10065	lsrs	r4, r4, #5
10066.L1361:
10067	ldr	r2, .L1447+24
10068	ldrh	r1, [r2]
10069	cmp	r1, r3
10070	mov	r1, r2
10071	bcs	.L1365
10072	ldr	r3, .L1447+28
10073	movw	r0, #65535
10074	ldrh	r3, [r3]
10075	cmp	r3, r0
10076	bne	.L1366
10077	ldr	r0, .L1447+12
10078	ldrh	r0, [r0]
10079	cmp	r0, r3
10080	bne	.L1366
10081	ldr	r3, .L1447+32
10082	ldrh	r0, [r3]
10083	cbnz	r0, .L1367
10084	ldr	r3, .L1447+36
10085	ldr	r4, .L1447+40
10086	ldr	r3, [r3]
10087	ldr	r4, [r4]
10088	add	r3, r3, r3, lsl #1
10089	cmp	r4, r3, lsr #2
10090	bcs	.L1368
10091.L1367:
10092	ldr	r3, .L1447+44
10093	ldrh	r3, [r3]
10094	add	r3, r3, r3, lsl #1
10095	asrs	r3, r3, #2
10096	strh	r3, [r1]	@ movhi
10097.L1369:
10098	ldr	r3, .L1447+48
10099	movs	r2, #0
10100	str	r2, [r3]
10101.L1357:
10102	add	sp, sp, #48
10103	@ sp needed
10104	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
10105.L1362:
10106	cmp	r3, #12
10107	bls	.L1363
10108	lsrs	r4, r4, #4
10109	b	.L1361
10110.L1363:
10111	cmp	r3, #8
10112	bls	.L1361
10113	lsrs	r4, r4, #2
10114	b	.L1361
10115.L1417:
10116	movs	r4, #1
10117	b	.L1361
10118.L1368:
10119	movs	r3, #18
10120	strh	r3, [r2]	@ movhi
10121	b	.L1369
10122.L1366:
10123	ldr	r3, .L1447+44
10124	ldrh	r3, [r3]
10125	add	r3, r3, r3, lsl #1
10126	asrs	r3, r3, #2
10127	strh	r3, [r1]	@ movhi
10128.L1365:
10129	ldr	r3, .L1447+52
10130	ldrh	r3, [r3]
10131	cbz	r3, .L1360
10132	adds	r4, r4, #32
10133	uxth	r4, r4
10134.L1360:
10135	ldr	r5, .L1447+56
10136	movw	r3, #65535
10137	ldrh	r2, [r5]
10138	cmp	r2, r3
10139	bne	.L1372
10140	ldr	r3, .L1447+12
10141	ldrh	r1, [r3]
10142	cmp	r1, r2
10143	beq	.L1373
10144	ldr	r0, .L1447+60
10145	ldr	r0, [r0]
10146	ldrh	r1, [r0, r1, lsl #1]
10147	cbnz	r1, .L1374
10148	strh	r2, [r3]	@ movhi
10149.L1374:
10150	ldrh	r2, [r3]
10151	strh	r2, [r5]	@ movhi
10152	movw	r2, #65535
10153	strh	r2, [r3]	@ movhi
10154.L1373:
10155	ldrh	r0, [r5]
10156	movw	r6, #65535
10157	movs	r3, #0
10158	strb	r3, [r5, #8]
10159	cmp	r0, r6
10160	beq	.L1372
10161	bl	IsBlkInGcList
10162	cbz	r0, .L1376
10163	strh	r6, [r5]	@ movhi
10164.L1376:
10165	ldrh	r2, [r5]
10166	movw	r3, #65535
10167	cmp	r2, r3
10168	beq	.L1372
10169	ldr	r0, .L1447+56
10170	bl	make_superblock
10171	ldr	r2, .L1447+64
10172	movs	r3, #0
10173	strh	r3, [r5, #2]	@ movhi
10174	strb	r3, [r5, #6]
10175	strh	r3, [r2]	@ movhi
10176	ldr	r3, .L1447+60
10177	ldrh	r2, [r5]
10178	ldr	r3, [r3]
10179	ldrh	r2, [r3, r2, lsl #1]
10180	ldr	r3, .L1447+68
10181	strh	r2, [r3]	@ movhi
10182.L1372:
10183	ldr	r2, .L1447+72
10184	ldrh	r3, [r5]
10185	ldrh	r2, [r2]
10186	cmp	r2, r3
10187	beq	.L1377
10188	ldr	r2, .L1447+76
10189	ldrh	r2, [r2]
10190	cmp	r2, r3
10191	beq	.L1377
10192	ldr	r2, .L1447+28
10193	ldrh	r2, [r2]
10194	cmp	r2, r3
10195	bne	.L1378
10196.L1377:
10197	movw	r3, #65535
10198	strh	r3, [r5]	@ movhi
10199.L1378:
10200	ldr	r5, .L1447+56
10201	mov	r6, r5
10202.L1413:
10203	ldrh	r2, [r5]
10204	movw	r3, #65535
10205	cmp	r2, r3
10206	bne	.L1379
10207	ldr	fp, .L1447+88
10208	movs	r2, #0
10209	ldr	r3, .L1447+48
10210	mov	r8, fp
10211	str	r2, [r3]
10212.L1380:
10213	ldrh	r7, [fp]
10214	mov	r0, r7
10215	bl	List_get_gc_head_node
10216	uxth	r3, r0
10217	movw	r1, #65535
10218	cmp	r3, r1
10219	strh	r3, [r6]	@ movhi
10220	bne	.L1381
10221	movs	r3, #0
10222	movs	r0, #8
10223	strh	r3, [fp]	@ movhi
10224	b	.L1357
10225.L1416:
10226	movs	r4, #1
10227	b	.L1360
10228.L1381:
10229	str	r0, [sp, #16]
10230	mov	r0, r3
10231	str	r3, [sp, #12]
10232	adds	r7, r7, #1
10233	bl	IsBlkInGcList
10234	ldr	r3, [sp, #12]
10235	ldr	r2, [sp, #16]
10236	cbz	r0, .L1382
10237	strh	r7, [fp]	@ movhi
10238	b	.L1380
10239.L1382:
10240	uxth	r0, r2
10241	ldr	r2, .L1447+20
10242	ldr	r10, .L1447+60
10243	uxth	r7, r7
10244	ldrh	lr, [r2]
10245	ldr	r2, .L1447+80
10246	ldr	r1, [r10]
10247	strh	r7, [fp]	@ movhi
10248	ldrh	r2, [r2]
10249	ldrh	ip, [r1, r0, lsl #1]
10250	mul	r2, r2, lr
10251	cmp	ip, r2, asr #1
10252	bgt	.L1384
10253	cmp	r7, #48
10254	bls	.L1385
10255	cmp	ip, #8
10256	bls	.L1385
10257	ldr	r7, .L1447+84
10258	ldrh	r7, [r7]
10259	cmp	r7, #35
10260	bhi	.L1385
10261.L1384:
10262	movs	r7, #0
10263	strh	r7, [r8]	@ movhi
10264.L1385:
10265	ldrh	r1, [r1, r0, lsl #1]
10266	cmp	r2, r1
10267	bgt	.L1386
10268	ldrh	r2, [r8]
10269	cmp	r2, #3
10270	bhi	.L1386
10271	movw	r3, #65535
10272	strh	r3, [r6]	@ movhi
10273	movs	r3, #0
10274	strh	r3, [r8]	@ movhi
10275.L1446:
10276	ldr	r3, .L1447+32
10277	ldrh	r0, [r3]
10278	b	.L1357
10279.L1386:
10280	cbnz	r1, .L1387
10281	movw	r0, #65535
10282	bl	decrement_vpc_count
10283	ldrh	r3, [r8]
10284	adds	r3, r3, #1
10285	strh	r3, [r8]	@ movhi
10286	b	.L1380
10287.L1448:
10288	.align	2
10289.L1447:
10290	.word	.LANCHOR93
10291	.word	.LANCHOR43
10292	.word	.LANCHOR72
10293	.word	.LANCHOR71
10294	.word	.LANCHOR47
10295	.word	.LANCHOR18
10296	.word	.LANCHOR99
10297	.word	.LANCHOR52
10298	.word	.LANCHOR171
10299	.word	.LANCHOR151
10300	.word	.LANCHOR58
10301	.word	.LANCHOR170
10302	.word	.LANCHOR94
10303	.word	.LANCHOR73
10304	.word	.LANCHOR144
10305	.word	.LANCHOR41
10306	.word	.LANCHOR172
10307	.word	.LANCHOR173
10308	.word	.LANCHOR50
10309	.word	.LANCHOR51
10310	.word	.LANCHOR2
10311	.word	.LANCHOR68
10312	.word	.LANCHOR101
10313.L1387:
10314	movs	r2, #0
10315	strb	r2, [r6, #8]
10316	ldr	r2, .L1449
10317	ldrh	r2, [r2]
10318	cmp	r2, r3
10319	bne	.L1388
10320	movw	r2, #717
10321	ldr	r1, .L1449+4
10322	ldr	r0, .L1449+8
10323	bl	printf
10324.L1388:
10325	ldr	r3, .L1449+12
10326	ldrh	r2, [r6]
10327	ldrh	r3, [r3]
10328	cmp	r2, r3
10329	bne	.L1389
10330	movw	r2, #718
10331	ldr	r1, .L1449+4
10332	ldr	r0, .L1449+8
10333	bl	printf
10334.L1389:
10335	ldr	r3, .L1449+16
10336	ldrh	r2, [r6]
10337	ldrh	r3, [r3]
10338	cmp	r2, r3
10339	bne	.L1390
10340	movw	r2, #719
10341	ldr	r1, .L1449+4
10342	ldr	r0, .L1449+8
10343	bl	printf
10344.L1390:
10345	mov	r0, r5
10346	bl	make_superblock
10347	ldr	r2, .L1449+20
10348	movs	r3, #0
10349	ldrh	r1, [r6]
10350	strh	r3, [r2]	@ movhi
10351	ldr	r2, [r10]
10352	ldrh	r1, [r2, r1, lsl #1]
10353	ldr	r2, .L1449+24
10354	strh	r3, [r6, #2]	@ movhi
10355	strb	r3, [r6, #6]
10356	strh	r1, [r2]	@ movhi
10357.L1379:
10358	ldr	r3, .L1449+28
10359	movs	r2, #1
10360	str	r2, [r3]
10361	ldr	r3, .L1449+32
10362	ldrh	r3, [r3]
10363	str	r3, [sp, #16]
10364	ldr	r3, [sp, #28]
10365	cbz	r3, .L1391
10366	ldr	r3, .L1449+36
10367	ldr	r2, [sp, #16]
10368	ldrh	r1, [r6]
10369	ldrh	r3, [r3]
10370	muls	r3, r2, r3
10371	ldr	r2, .L1449+40
10372	ldr	r2, [r2]
10373	ldrh	r2, [r2, r1, lsl #1]
10374	subs	r3, r3, r2
10375	it	mi
10376	addmi	r3, r3, #3
10377	add	r4, r4, r3, asr #2
10378	uxth	r4, r4
10379.L1391:
10380	ldrh	r3, [r6, #2]
10381	ldr	r1, [sp, #16]
10382	ldr	fp, .L1449+64
10383	adds	r2, r3, r4
10384	cmp	r2, r1
10385	itt	gt
10386	movgt	r2, r1
10387	subgt	r4, r2, r3
10388	mov	r3, #0
10389	it	gt
10390	uxthgt	r4, r4
10391	str	r3, [sp, #24]
10392.L1394:
10393	ldrh	r3, [sp, #24]
10394	cmp	r4, r3
10395	bls	.L1402
10396	ldr	r3, .L1449+36
10397	movw	r10, #65535
10398	ldrh	r1, [r5, #2]
10399	mov	ip, #20
10400	ldr	r0, [fp]
10401	ldrh	lr, [r3]
10402	ldr	r3, [sp, #24]
10403	ldr	r7, .L1449+44
10404	adds	r3, r1, r3
10405	str	r3, [sp, #20]
10406	movs	r3, #0
10407	str	r3, [sp, #12]
10408	b	.L1403
10409.L1396:
10410	ldrh	r2, [r7, #2]!
10411	cmp	r2, r10
10412	beq	.L1395
10413	ldr	r1, [sp, #12]
10414	mla	r8, ip, r1, r0
10415	ldr	r1, [sp, #20]
10416	orr	r2, r1, r2, lsl #10
10417	str	r2, [r8, #4]
10418	ldr	r2, [sp, #12]
10419	adds	r2, r2, #1
10420	uxth	r2, r2
10421	str	r2, [sp, #12]
10422.L1395:
10423	adds	r3, r3, #1
10424.L1403:
10425	uxth	r2, r3
10426	cmp	lr, r2
10427	bhi	.L1396
10428	ldrb	r2, [r5, #8]	@ zero_extendqisi2
10429	ldr	r1, [sp, #12]
10430	bl	FlashReadPages
10431	movs	r3, #0
10432.L1445:
10433	str	r3, [sp, #20]
10434	ldr	r2, [sp, #12]
10435	ldrh	r3, [sp, #20]
10436	cmp	r2, r3
10437	bhi	.L1401
10438	ldr	r3, [sp, #24]
10439	adds	r3, r3, #1
10440	str	r3, [sp, #24]
10441	b	.L1394
10442.L1401:
10443	ldr	r3, [sp, #20]
10444	movs	r7, #20
10445	muls	r7, r3, r7
10446	ldr	r3, [fp]
10447	adds	r2, r3, r7
10448	ldr	r3, [r3, r7]
10449	adds	r3, r3, #1
10450	beq	.L1398
10451	ldr	r8, [r2, #12]
10452	movw	r3, #61589
10453	ldrh	r2, [r8]
10454	cmp	r2, r3
10455	bne	.L1398
10456	ldr	r10, [r8, #8]
10457	cmp	r10, #-1
10458	bne	.L1399
10459	movw	r2, #753
10460	ldr	r1, .L1449+4
10461	ldr	r0, .L1449+8
10462	bl	printf
10463.L1399:
10464	movs	r2, #0
10465	add	r1, sp, #40
10466	mov	r0, r10
10467	bl	log2phys
10468	ldr	r0, [fp]
10469	ldr	r3, [sp, #40]
10470	add	r0, r0, r7
10471	ldr	r2, [r0, #4]
10472	cmp	r2, r3
10473	bne	.L1398
10474	ldr	r2, .L1449+20
10475	ldr	r10, .L1449+60
10476	ldr	r1, .L1449+48
10477	ldrh	r3, [r2]
10478	str	r1, [sp, #36]
10479	adds	r3, r3, #1
10480	strh	r3, [r2]	@ movhi
10481	ldr	r2, [r1]
10482	movs	r1, #20
10483	ldr	r3, [r10]
10484	mla	r3, r1, r3, r2
10485	ldr	r2, [r0, #16]
10486	str	r2, [r3, #16]
10487	str	r3, [sp, #32]
10488	bl	Ftl_get_new_temp_ppa
10489	ldr	r3, [sp, #32]
10490	ldr	r1, [sp, #36]
10491	str	r0, [r3, #4]
10492	ldr	r2, [r1]
10493	movs	r1, #20
10494	ldr	r3, [r10]
10495	ldr	r0, [fp]
10496	mla	r2, r1, r3, r2
10497	add	r0, r0, r7
10498	ldr	r7, .L1449+16
10499	ldr	r1, [r0, #8]
10500	adds	r3, r3, #1
10501	str	r1, [r2, #8]
10502	ldr	r1, [r0, #12]
10503	str	r1, [r2, #12]
10504	movs	r1, #1
10505	ldr	r2, [sp, #40]
10506	str	r2, [r8, #12]
10507	ldrh	r2, [r7]
10508	strh	r2, [r8, #2]	@ movhi
10509	ldr	r2, .L1449+52
10510	str	r3, [r10]
10511	ldr	r2, [r2]
10512	str	r2, [r8, #4]
10513	bl	FtlGcBufAlloc
10514	ldrb	r2, [r7, #7]	@ zero_extendqisi2
10515	ldr	r3, [r10]
10516	cmp	r2, r3
10517	beq	.L1400
10518	ldrh	r3, [r7, #4]
10519	cbnz	r3, .L1398
10520.L1400:
10521	bl	Ftl_gc_temp_data_write_back
10522	cbz	r0, .L1398
10523	ldr	r3, .L1449+28
10524	movs	r2, #0
10525	movw	r1, #65535
10526	str	r2, [r3]
10527	ldr	r3, .L1449+56
10528	strh	r1, [r3]	@ movhi
10529	strh	r2, [r3, #2]	@ movhi
10530	b	.L1446
10531.L1398:
10532	ldr	r3, [sp, #20]
10533	adds	r3, r3, #1
10534	b	.L1445
10535.L1402:
10536	ldrh	r3, [r5, #2]
10537	add	r4, r4, r3
10538	ldr	r3, [sp, #16]
10539	uxth	r4, r4
10540	cmp	r3, r4
10541	strh	r4, [r5, #2]	@ movhi
10542	bhi	.L1404
10543	ldr	r3, .L1449+60
10544	ldr	r3, [r3]
10545	cbz	r3, .L1405
10546	bl	Ftl_gc_temp_data_write_back
10547	cbz	r0, .L1405
10548	ldr	r3, .L1449+28
10549	movs	r2, #0
10550	str	r2, [r3]
10551	b	.L1446
10552.L1450:
10553	.align	2
10554.L1449:
10555	.word	.LANCHOR50
10556	.word	.LANCHOR174
10557	.word	.LC1
10558	.word	.LANCHOR51
10559	.word	.LANCHOR52
10560	.word	.LANCHOR172
10561	.word	.LANCHOR173
10562	.word	.LANCHOR93
10563	.word	.LANCHOR18
10564	.word	.LANCHOR2
10565	.word	.LANCHOR41
10566	.word	.LANCHOR144+14
10567	.word	.LANCHOR103
10568	.word	.LANCHOR82
10569	.word	.LANCHOR144
10570	.word	.LANCHOR61
10571	.word	.LANCHOR65
10572.L1405:
10573	ldr	r3, .L1451
10574	ldrh	r4, [r3]
10575	cmp	r4, #0
10576	bne	.L1406
10577	ldr	r8, .L1451+28
10578	ldrh	r1, [r5]
10579	ldr	r3, [r8]
10580	ldrh	r3, [r3, r1, lsl #1]
10581	cmp	r3, #0
10582	beq	.L1406
10583	ldr	r0, .L1451+4
10584	ldr	r10, .L1451+32
10585	ldrh	r2, [r5, #2]
10586	ldrh	r0, [r0]
10587	str	r3, [sp]
10588	mov	r3, r4
10589	str	r0, [sp, #4]
10590	ldr	r0, .L1451+8
10591	bl	printf
10592.L1407:
10593	ldr	r3, [r10]
10594	cmp	r4, r3
10595	bcs	.L1409
10596	movs	r2, #0
10597	add	r1, sp, #44
10598	mov	r0, r4
10599	bl	log2phys
10600	ldr	r7, [sp, #44]
10601	adds	r3, r7, #1
10602	beq	.L1408
10603	ubfx	r0, r7, #10, #16
10604	bl	P2V_block_in_plane
10605	ldrh	r3, [r5]
10606	cmp	r3, r0
10607	bne	.L1408
10608	mov	r2, r7
10609	mov	r1, r4
10610	ldr	r0, .L1451+12
10611	bl	printf
10612.L1409:
10613	ldr	r3, [r10]
10614	cmp	r4, r3
10615	bcc	.L1406
10616	ldrh	r2, [r5]
10617	movs	r1, #0
10618	ldr	r3, [r8]
10619	strh	r1, [r3, r2, lsl #1]	@ movhi
10620	ldrh	r0, [r5]
10621	bl	update_vpc_list
10622	bl	l2p_flush
10623	bl	FtlVpcTblFlush
10624.L1406:
10625	movw	r3, #65535
10626	strh	r3, [r5]	@ movhi
10627.L1404:
10628	ldr	r3, .L1451+16
10629	movs	r2, #0
10630	str	r2, [r3]
10631	ldr	r3, .L1451+20
10632	ldrh	r0, [r3]
10633	cmp	r0, #2
10634	bhi	.L1412
10635	ldr	r3, .L1451+24
10636	ldrh	r4, [r3]
10637	b	.L1413
10638.L1408:
10639	adds	r4, r4, #1
10640	b	.L1407
10641.L1412:
10642	adds	r0, r0, #1
10643	b	.L1357
10644.L1414:
10645	movs	r0, #0
10646	b	.L1357
10647.L1452:
10648	.align	2
10649.L1451:
10650	.word	.LANCHOR172
10651	.word	.LANCHOR173
10652	.word	.LC42
10653	.word	.LC43
10654	.word	.LANCHOR93
10655	.word	.LANCHOR47
10656	.word	.LANCHOR18
10657	.word	.LANCHOR41
10658	.word	.LANCHOR151
10659	.size	rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
10660	.section	.text.FtlRead,"ax",%progbits
10661	.align	1
10662	.global	FtlRead
10663	.syntax unified
10664	.thumb
10665	.thumb_func
10666	.fpu softvfp
10667	.type	FtlRead, %function
10668FtlRead:
10669	@ args = 0, pretend = 0, frame = 56
10670	@ frame_needed = 0, uses_anonymous_args = 0
10671	cmp	r0, #16
10672	push	{r4, r5, r6, r7, r8, r10, fp, lr}
10673	sub	sp, sp, #56
10674	mov	r5, r1
10675	mov	r10, r3
10676	str	r2, [sp, #4]
10677	bne	.L1454
10678	mov	r2, r3
10679	ldr	r1, [sp, #4]
10680	add	r0, r5, #256
10681	bl	FtlVendorPartRead
10682	mov	r4, r0
10683.L1453:
10684	mov	r0, r4
10685	add	sp, sp, #56
10686	@ sp needed
10687	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
10688.L1454:
10689	ldr	r3, .L1488
10690	ldr	r3, [r3]
10691	cmp	r1, r3
10692	bcs	.L1477
10693	ldr	r2, [sp, #4]
10694	cmp	r2, r3
10695	bhi	.L1477
10696	adds	r2, r1, r2
10697	cmp	r3, r2
10698	str	r2, [sp, #12]
10699	bcc	.L1477
10700	ldr	r3, .L1488+4
10701	ldr	r4, [r3]
10702	adds	r6, r4, #1
10703	beq	.L1453
10704	ldr	r3, .L1488+8
10705	mov	r0, r5
10706	mov	r8, #0
10707	mov	r7, r8
10708	ldrh	r4, [r3]
10709	mov	r1, r4
10710	bl	__aeabi_uidiv
10711	ldr	r3, [sp, #12]
10712	mov	r1, r4
10713	str	r0, [sp, #16]
10714	mov	r4, r8
10715	subs	r0, r3, #1
10716	bl	__aeabi_uidiv
10717	ldr	r3, [sp, #16]
10718	ldr	r2, .L1488+12
10719	ldr	r1, [sp, #4]
10720	rsb	r3, r3, #1
10721	ldr	r6, [sp, #16]
10722	add	r3, r3, r0
10723	str	r0, [sp, #20]
10724	str	r3, [sp, #8]
10725	ldr	r3, [r2]
10726	str	r8, [sp, #28]
10727	str	r8, [sp, #24]
10728	add	r3, r3, r1
10729	ldr	r1, [sp, #8]
10730	str	r3, [r2]
10731	ldr	r2, .L1488+16
10732	ldr	r3, [r2]
10733	add	r3, r3, r1
10734	str	r3, [r2]
10735.L1456:
10736	ldr	r3, [sp, #8]
10737	cbnz	r3, .L1473
10738	ldr	r3, .L1488+20
10739	ldrh	r3, [r3]
10740	cbnz	r3, .L1474
10741	ldr	r3, .L1488+24
10742	ldrh	r3, [r3]
10743	cmp	r3, #31
10744	bhi	.L1453
10745.L1474:
10746	movs	r1, #1
10747	movs	r0, #0
10748	bl	rk_ftl_garbage_collect
10749	b	.L1453
10750.L1473:
10751	movs	r2, #0
10752	add	r1, sp, #52
10753	mov	r0, r6
10754	bl	log2phys
10755	ldr	r3, [sp, #52]
10756	adds	r0, r3, #1
10757	bne	.L1457
10758	ldr	r3, .L1488+8
10759	mov	fp, #0
10760.L1458:
10761	ldrh	r0, [r3]
10762	cmp	fp, r0
10763	bcc	.L1460
10764.L1461:
10765	ldr	r3, [sp, #8]
10766	adds	r6, r6, #1
10767	subs	r3, r3, #1
10768	str	r3, [sp, #8]
10769	beq	.L1465
10770	ldr	r3, .L1488+28
10771	ldrh	r3, [r3]
10772	cmp	r7, r3, lsl #2
10773	bne	.L1456
10774.L1465:
10775	cmp	r7, #0
10776	beq	.L1456
10777	ldr	r3, .L1488+32
10778	movs	r2, #0
10779	mov	r1, r7
10780	mov	fp, #0
10781	ldr	r0, [r3]
10782	bl	FlashReadPages
10783	lsl	r3, r8, #9
10784	str	r3, [sp, #44]
10785	ldr	r3, [sp, #24]
10786	lsls	r3, r3, #9
10787	str	r3, [sp, #36]
10788	ldr	r3, [sp, #28]
10789	lsls	r3, r3, #9
10790	str	r3, [sp, #40]
10791.L1472:
10792	movs	r3, #20
10793	mul	r3, r3, fp
10794	str	r3, [sp, #32]
10795	ldr	r3, .L1488+32
10796	ldr	r2, [r3]
10797	ldr	r3, [sp, #32]
10798	add	r2, r2, r3
10799	ldr	r3, [sp, #16]
10800	ldr	r1, [r2, #16]
10801	cmp	r3, r1
10802	bne	.L1467
10803	ldr	r1, [r2, #8]
10804	ldr	r2, .L1488+36
10805	ldr	r2, [r2]
10806	cmp	r1, r2
10807	bne	.L1468
10808	ldr	r3, [sp, #36]
10809	mov	r0, r10
10810	ldr	r2, [sp, #40]
10811	add	r1, r1, r3
10812.L1487:
10813	bl	ftl_memcpy
10814.L1468:
10815	ldr	r3, .L1488+32
10816	ldr	r2, [sp, #32]
10817	ldr	r3, [r3]
10818	adds	r2, r3, r2
10819	ldr	r0, [r2, #12]
10820	ldr	r1, [r2, #16]
10821	ldr	r0, [r0, #8]
10822	cmp	r1, r0
10823	itttt	ne
10824	ldrne	r0, .L1488+40
10825	ldrne	r1, [r0, #72]
10826	addne	r1, r1, #1
10827	strne	r1, [r0, #72]
10828	ldr	r1, [sp, #32]
10829	ldr	r3, [r3, r1]
10830	adds	r1, r3, #1
10831	bne	.L1470
10832	ldr	r1, .L1488+40
10833	mov	r4, r3
10834	ldr	r2, [r1, #72]
10835	adds	r2, r2, #1
10836	str	r2, [r1, #72]
10837.L1471:
10838	add	fp, fp, #1
10839	cmp	r7, fp
10840	bne	.L1472
10841	movs	r7, #0
10842	b	.L1456
10843.L1460:
10844	mla	r0, r0, r6, fp
10845	cmp	r5, r0
10846	bhi	.L1459
10847	ldr	r2, [sp, #12]
10848	cmp	r2, r0
10849	bls	.L1459
10850	subs	r0, r0, r5
10851	mov	r2, #512
10852	movs	r1, #0
10853	add	r0, r10, r0, lsl #9
10854	str	r3, [sp, #32]
10855	bl	ftl_memset
10856	ldr	r3, [sp, #32]
10857.L1459:
10858	add	fp, fp, #1
10859	b	.L1458
10860.L1457:
10861	ldr	r2, .L1488+32
10862	mov	fp, #20
10863	ldr	r2, [r2]
10864	mla	fp, fp, r7, r2
10865	str	r3, [fp, #4]
10866	ldr	r3, [sp, #16]
10867	cmp	r6, r3
10868	ldr	r3, .L1488+8
10869	bne	.L1462
10870	ldr	r2, .L1488+36
10871	mov	r0, r5
10872	ldrh	r3, [r3]
10873	ldr	r2, [r2]
10874	mov	r1, r3
10875	str	r3, [sp, #28]
10876	str	r2, [fp, #8]
10877	bl	__aeabi_uidivmod
10878	ldr	r3, [sp, #28]
10879	str	r1, [sp, #24]
10880	subs	r2, r3, r1
10881	ldr	r1, [sp, #4]
10882	cmp	r2, r1
10883	it	cs
10884	movcs	r2, r1
10885	cmp	r3, r2
10886	str	r2, [sp, #28]
10887	bne	.L1463
10888	str	r10, [fp, #8]
10889.L1463:
10890	ldr	r3, .L1488+44
10891	ldr	r2, .L1488+48
10892	str	r6, [fp, #16]
10893	ldrh	r3, [r3]
10894	ldr	r2, [r2]
10895	muls	r3, r7, r3
10896	adds	r7, r7, #1
10897	bic	r3, r3, #3
10898	add	r3, r3, r2
10899	str	r3, [fp, #12]
10900	b	.L1461
10901.L1462:
10902	ldr	r2, [sp, #20]
10903	cmp	r6, r2
10904	bne	.L1464
10905	ldr	r2, .L1488+52
10906	ldr	r1, [sp, #12]
10907	ldr	r2, [r2]
10908	str	r2, [fp, #8]
10909	ldrh	r2, [r3]
10910	mul	r3, r2, r6
10911	sub	r8, r1, r3
10912	cmp	r2, r8
10913	bne	.L1463
10914.L1486:
10915	subs	r3, r3, r5
10916	add	r3, r10, r3, lsl #9
10917	str	r3, [fp, #8]
10918	b	.L1463
10919.L1464:
10920	ldrh	r3, [r3]
10921	muls	r3, r6, r3
10922	b	.L1486
10923.L1467:
10924	ldr	r3, [sp, #20]
10925	cmp	r3, r1
10926	bne	.L1468
10927	ldr	r3, .L1488+52
10928	ldr	r1, [r2, #8]
10929	ldr	r2, [r3]
10930	cmp	r1, r2
10931	bne	.L1468
10932	ldr	r2, .L1488+8
10933	ldr	r3, [sp, #20]
10934	ldrh	r0, [r2]
10935	ldr	r2, [sp, #44]
10936	muls	r0, r3, r0
10937	subs	r0, r0, r5
10938	add	r0, r10, r0, lsl #9
10939	b	.L1487
10940.L1470:
10941	cmp	r3, #256
10942	bne	.L1471
10943	ldr	r0, [r2, #4]
10944	ubfx	r0, r0, #10, #16
10945	bl	P2V_block_in_plane
10946	bl	FtlGcRefreshBlock
10947	b	.L1471
10948.L1477:
10949	mov	r4, #-1
10950	b	.L1453
10951.L1489:
10952	.align	2
10953.L1488:
10954	.word	.LANCHOR33
10955	.word	.LANCHOR165
10956	.word	.LANCHOR11
10957	.word	.LANCHOR162
10958	.word	.LANCHOR88
10959	.word	.LANCHOR73
10960	.word	.LANCHOR47
10961	.word	.LANCHOR2
10962	.word	.LANCHOR102
10963	.word	.LANCHOR108
10964	.word	.LANCHOR134
10965	.word	.LANCHOR23
10966	.word	.LANCHOR114
10967	.word	.LANCHOR109
10968	.size	FtlRead, .-FtlRead
10969	.section	.text.sftl_read,"ax",%progbits
10970	.align	1
10971	.global	sftl_read
10972	.syntax unified
10973	.thumb
10974	.thumb_func
10975	.fpu softvfp
10976	.type	sftl_read, %function
10977sftl_read:
10978	@ args = 0, pretend = 0, frame = 0
10979	@ frame_needed = 0, uses_anonymous_args = 0
10980	@ link register save eliminated.
10981	mov	r3, r2
10982	mov	r2, r1
10983	mov	r1, r0
10984	movs	r0, #0
10985	b	FtlRead
10986	.size	sftl_read, .-sftl_read
10987	.section	.text.FtlWrite,"ax",%progbits
10988	.align	1
10989	.global	FtlWrite
10990	.syntax unified
10991	.thumb
10992	.thumb_func
10993	.fpu softvfp
10994	.type	FtlWrite, %function
10995FtlWrite:
10996	@ args = 0, pretend = 0, frame = 72
10997	@ frame_needed = 0, uses_anonymous_args = 0
10998	cmp	r0, #16
10999	push	{r4, r5, r6, r7, r8, r10, fp, lr}
11000	sub	sp, sp, #72
11001	mov	r10, r1
11002	str	r2, [sp, #16]
11003	str	r3, [sp, #20]
11004	bne	.L1492
11005	mov	r2, r3
11006	ldr	r1, [sp, #16]
11007	add	r0, r10, #256
11008	bl	FtlVendorPartWrite
11009.L1491:
11010	add	sp, sp, #72
11011	@ sp needed
11012	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
11013.L1492:
11014	ldr	r3, .L1538
11015	ldr	r3, [r3]
11016	cmp	r1, r3
11017	bcs	.L1527
11018	ldr	r2, [sp, #16]
11019	cmp	r2, r3
11020	bhi	.L1527
11021	adds	r4, r1, r2
11022	cmp	r3, r4
11023	bcc	.L1527
11024	ldr	r3, .L1538+4
11025	ldr	r0, [r3]
11026	adds	r1, r0, #1
11027	beq	.L1491
11028	ldr	r3, .L1538+8
11029	mov	r2, #2048
11030	mov	r0, r10
11031	ldr	r7, .L1538+12
11032	str	r2, [r3]
11033	ldr	r3, .L1538+16
11034	ldrh	r5, [r3]
11035	mov	r1, r5
11036	bl	__aeabi_uidiv
11037	mov	r1, r5
11038	str	r0, [sp, #12]
11039	subs	r0, r4, #1
11040	bl	__aeabi_uidiv
11041	ldr	r2, [sp, #12]
11042	ldr	r1, [sp, #16]
11043	ldr	r5, [sp, #12]
11044	subs	r3, r0, r2
11045	ldr	r2, .L1538+20
11046	str	r3, [sp, #32]
11047	adds	r3, r3, #1
11048	str	r3, [sp, #8]
11049	ldr	r3, [r2]
11050	str	r0, [sp, #28]
11051	add	r3, r3, r1
11052	ldr	r1, [sp, #8]
11053	str	r3, [r2]
11054	ldr	r2, .L1538+24
11055	ldr	r3, [r2]
11056	add	r3, r3, r1
11057	str	r3, [r2]
11058.L1494:
11059	ldr	r3, [sp, #8]
11060	cbnz	r3, .L1520
11061	ldr	r5, .L1538+28
11062	mov	r0, r3
11063	ldr	r1, [sp, #32]
11064	bl	rk_ftl_garbage_collect
11065	ldrh	r2, [r5]
11066	cmp	r2, #5
11067	bls	.L1521
11068.L1523:
11069	movs	r0, #0
11070	b	.L1491
11071.L1520:
11072	ldr	r4, .L1538+32
11073	ldrb	r2, [r7, #6]	@ zero_extendqisi2
11074	ldrh	r3, [r4]
11075	cmp	r2, r3
11076	bcc	.L1495
11077	movw	r2, #1041
11078	ldr	r1, .L1538+36
11079	ldr	r0, .L1538+40
11080	bl	printf
11081.L1495:
11082	ldrh	r3, [r7, #4]
11083	cbnz	r3, .L1496
11084	mov	r0, r7
11085	bl	allocate_new_data_superblock
11086.L1496:
11087	ldrb	r3, [r7, #7]	@ zero_extendqisi2
11088	ldrh	r2, [r7, #4]
11089	lsls	r3, r3, #2
11090	cmp	r3, r2
11091	it	cs
11092	movcs	r3, r2
11093	ldr	r2, [sp, #8]
11094	cmp	r3, r2
11095	it	cs
11096	movcs	r3, r2
11097	ldrb	r2, [r7, #6]	@ zero_extendqisi2
11098	str	r3, [sp, #44]
11099	ldrh	r3, [r4]
11100	cmp	r2, r3
11101	bcc	.L1497
11102	movw	r2, #1074
11103	ldr	r1, .L1538+36
11104	ldr	r0, .L1538+40
11105	bl	printf
11106.L1497:
11107	ldr	r8, .L1538+44
11108	movs	r3, #0
11109	str	r3, [sp, #4]
11110.L1498:
11111	ldr	r3, [sp, #4]
11112	ldr	r2, [sp, #44]
11113	cmp	r3, r2
11114	bne	.L1518
11115.L1499:
11116	ldr	r0, .L1538+44
11117	mov	r3, r7
11118	movs	r2, #0
11119	ldr	r1, [sp, #4]
11120	ldr	r0, [r0]
11121	bl	FtlProgPages
11122	ldr	r3, [sp, #4]
11123	ldr	r2, [sp, #8]
11124	cmp	r3, r2
11125	bls	.L1519
11126	mov	r2, #1152
11127	ldr	r1, .L1538+36
11128	ldr	r0, .L1538+40
11129	bl	printf
11130.L1519:
11131	ldr	r3, [sp, #8]
11132	ldr	r2, [sp, #4]
11133	subs	r3, r3, r2
11134	str	r3, [sp, #8]
11135	b	.L1494
11136.L1518:
11137	ldrh	r3, [r7, #4]
11138	cmp	r3, #0
11139	beq	.L1499
11140	movs	r2, #0
11141	add	r1, sp, #48
11142	mov	r0, r5
11143	movs	r6, #20
11144	bl	log2phys
11145	mov	r0, r7
11146	bl	get_new_active_ppa
11147	ldr	r2, .L1538+48
11148	ldr	r1, [sp, #4]
11149	ldr	r3, [sp, #4]
11150	ldrh	r2, [r2]
11151	muls	r6, r3, r6
11152	ldr	r3, [r8]
11153	muls	r1, r2, r1
11154	add	r3, r3, r6
11155	str	r0, [r3, #4]
11156	bic	r1, r1, #3
11157	str	r5, [r3, #16]
11158	str	r1, [sp, #36]
11159	ldr	r1, .L1538+52
11160	ldr	r0, [sp, #36]
11161	ldr	r1, [r1]
11162	add	fp, r1, r0
11163	str	r1, [sp, #40]
11164	str	fp, [r3, #12]
11165	movs	r1, #0
11166	mov	r0, fp
11167	bl	ftl_memset
11168	ldr	r3, [sp, #12]
11169	ldr	r2, .L1538+16
11170	cmp	r5, r3
11171	beq	.L1500
11172	ldr	r3, [sp, #28]
11173	cmp	r5, r3
11174	bne	.L1533
11175	ldrh	r2, [r2]
11176	ldr	r3, [sp, #16]
11177	smulbb	r2, r2, r5
11178	add	r4, r10, r3
11179	movs	r3, #0
11180	str	r3, [sp, #24]
11181	subs	r4, r4, r2
11182	uxth	r4, r4
11183	b	.L1503
11184.L1500:
11185	ldrh	r4, [r2]
11186	mov	r0, r10
11187	mov	r1, r4
11188	bl	__aeabi_uidivmod
11189	ldr	r3, [sp, #16]
11190	subs	r4, r4, r1
11191	str	r1, [sp, #24]
11192	cmp	r4, r3
11193	it	cs
11194	movcs	r4, r3
11195.L1503:
11196	ldr	r3, .L1538+16
11197	ldrh	r3, [r3]
11198	cmp	r4, r3
11199	ldr	r3, [sp, #12]
11200	bne	.L1504
11201	cmp	r5, r3
11202	ldr	r3, [r8]
11203	add	r6, r6, r3
11204	bne	.L1505
11205	ldr	r3, [sp, #20]
11206.L1535:
11207	str	r3, [r6, #8]
11208	b	.L1506
11209.L1505:
11210	muls	r4, r5, r4
11211	ldr	r3, [sp, #20]
11212	sub	r4, r4, r10
11213	add	r4, r3, r4, lsl #9
11214	str	r4, [r6, #8]
11215.L1506:
11216	ldr	r3, .L1538+32
11217	ldrb	r2, [r7, #6]	@ zero_extendqisi2
11218	ldrh	r3, [r3]
11219	cmp	r2, r3
11220	bcc	.L1515
11221	movw	r2, #1143
11222	ldr	r1, .L1538+36
11223	ldr	r0, .L1538+40
11224	bl	printf
11225.L1515:
11226	ldr	r2, [sp, #40]
11227	movw	r3, #61589
11228	ldr	r1, [sp, #36]
11229	strh	r3, [r2, r1]	@ movhi
11230	ldr	r2, .L1538+56
11231	str	r5, [fp, #8]
11232	adds	r5, r5, #1
11233	ldr	r3, [r2]
11234	str	r3, [fp, #4]
11235	adds	r3, r3, #1
11236	adds	r1, r3, #1
11237	it	eq
11238	moveq	r3, #0
11239	str	r3, [r2]
11240	ldr	r3, [sp, #48]
11241	str	r3, [fp, #12]
11242	ldrh	r3, [r7]
11243	strh	r3, [fp, #2]	@ movhi
11244	ldr	r3, [sp, #4]
11245	adds	r3, r3, #1
11246	str	r3, [sp, #4]
11247	b	.L1498
11248.L1504:
11249	cmp	r5, r3
11250	ldr	r3, [r8]
11251	ite	eq
11252	ldreq	r2, .L1538+60
11253	ldrne	r2, .L1538+64
11254	add	r3, r3, r6
11255	ldr	r2, [r2]
11256	str	r2, [r3, #8]
11257	ldr	r3, [sp, #48]
11258	adds	r2, r3, #1
11259	beq	.L1509
11260	str	r3, [sp, #56]
11261	movs	r1, #1
11262	ldr	r3, [r8]
11263	add	r0, sp, #52
11264	str	r5, [sp, #68]
11265	add	r3, r3, r6
11266	ldr	r2, [r3, #8]
11267	ldr	r3, [r3, #12]
11268	str	r2, [sp, #60]
11269	movs	r2, #0
11270	str	r3, [sp, #64]
11271	bl	FlashReadPages
11272	ldr	r3, [sp, #52]
11273	adds	r0, r3, #1
11274	bne	.L1510
11275	ldr	r1, .L1538+68
11276	ldr	r0, .L1538+72
11277	ldr	r2, [r1, #72]
11278	adds	r2, r2, #1
11279	str	r2, [r1, #72]
11280	mov	r2, r5
11281	ldr	r1, [fp, #8]
11282	bl	printf
11283.L1513:
11284	ldr	r3, [sp, #12]
11285	lsls	r2, r4, #9
11286	cmp	r5, r3
11287	bne	.L1514
11288	ldr	r3, [r8]
11289	ldr	r1, [sp, #20]
11290	add	r6, r6, r3
11291	ldr	r3, [sp, #24]
11292	ldr	r0, [r6, #8]
11293	add	r0, r0, r3, lsl #9
11294.L1536:
11295	bl	ftl_memcpy
11296	b	.L1506
11297.L1510:
11298	ldr	r1, [fp, #8]
11299	cmp	r5, r1
11300	beq	.L1512
11301	ldr	r2, .L1538+68
11302	ldr	r0, .L1538+76
11303	ldr	r3, [r2, #72]
11304	adds	r3, r3, #1
11305	str	r3, [r2, #72]
11306	mov	r2, r5
11307	bl	printf
11308.L1512:
11309	ldr	r3, [fp, #8]
11310	cmp	r5, r3
11311	beq	.L1513
11312	mov	r2, #1128
11313	ldr	r1, .L1538+36
11314	ldr	r0, .L1538+40
11315	bl	printf
11316	b	.L1513
11317.L1539:
11318	.align	2
11319.L1538:
11320	.word	.LANCHOR33
11321	.word	.LANCHOR165
11322	.word	.LANCHOR175
11323	.word	.LANCHOR50
11324	.word	.LANCHOR11
11325	.word	.LANCHOR161
11326	.word	.LANCHOR84
11327	.word	.LANCHOR47
11328	.word	.LANCHOR2
11329	.word	.LANCHOR176
11330	.word	.LC1
11331	.word	.LANCHOR104
11332	.word	.LANCHOR23
11333	.word	.LANCHOR114
11334	.word	.LANCHOR82
11335	.word	.LANCHOR108
11336	.word	.LANCHOR109
11337	.word	.LANCHOR134
11338	.word	.LC44
11339	.word	.LC45
11340.L1509:
11341	ldr	r3, [r8]
11342	movs	r1, #0
11343	ldr	r2, .L1540
11344	add	r3, r3, r6
11345	ldrh	r2, [r2]
11346	ldr	r0, [r3, #8]
11347	bl	ftl_memset
11348	b	.L1513
11349.L1514:
11350	ldr	r3, .L1540+4
11351	ldrh	r1, [r3]
11352	ldr	r3, [r8]
11353	muls	r1, r5, r1
11354	add	r6, r6, r3
11355	ldr	r3, [sp, #20]
11356	ldr	r0, [r6, #8]
11357	sub	r1, r1, r10
11358	add	r1, r3, r1, lsl #9
11359	b	.L1536
11360.L1533:
11361	ldr	r3, [r8]
11362	add	r6, r6, r3
11363	ldrh	r3, [r2]
11364	ldr	r2, [sp, #20]
11365	muls	r3, r5, r3
11366	sub	r3, r3, r10
11367	add	r3, r2, r3, lsl #9
11368	b	.L1535
11369.L1521:
11370	ldr	r6, .L1540+8
11371	mov	r4, #256
11372	ldr	r7, .L1540+12
11373.L1524:
11374	ldrh	r3, [r6]
11375	movw	r2, #65535
11376	cmp	r3, r2
11377	bne	.L1522
11378	ldrh	r2, [r7]
11379	cmp	r2, r3
11380	bne	.L1522
11381	movs	r0, #0
11382	bl	List_get_gc_head_node
11383	uxth	r0, r0
11384	bl	FtlGcRefreshBlock
11385.L1522:
11386	ldr	r2, .L1540+16
11387	movs	r3, #128
11388	movs	r1, #1
11389	mov	r0, r1
11390	strh	r3, [r2]	@ movhi
11391	ldr	r2, .L1540+20
11392	strh	r3, [r2]	@ movhi
11393	bl	rk_ftl_garbage_collect
11394	movs	r1, #1
11395	movs	r0, #0
11396	bl	rk_ftl_garbage_collect
11397	ldrh	r3, [r5]
11398	cmp	r3, #2
11399	bhi	.L1523
11400	subs	r4, r4, #1
11401	bne	.L1524
11402	b	.L1523
11403.L1527:
11404	mov	r0, #-1
11405	b	.L1491
11406.L1541:
11407	.align	2
11408.L1540:
11409	.word	.LANCHOR22
11410	.word	.LANCHOR11
11411	.word	.LANCHOR144
11412	.word	.LANCHOR71
11413	.word	.LANCHOR100
11414	.word	.LANCHOR99
11415	.size	FtlWrite, .-FtlWrite
11416	.section	.text.sftl_gc,"ax",%progbits
11417	.align	1
11418	.global	sftl_gc
11419	.syntax unified
11420	.thumb
11421	.thumb_func
11422	.fpu softvfp
11423	.type	sftl_gc, %function
11424sftl_gc:
11425	@ args = 0, pretend = 0, frame = 0
11426	@ frame_needed = 0, uses_anonymous_args = 0
11427	@ link register save eliminated.
11428	movs	r1, #1
11429	mov	r0, r1
11430	b	rk_ftl_garbage_collect
11431	.size	sftl_gc, .-sftl_gc
11432	.section	.text.FtlLoadSysInfo,"ax",%progbits
11433	.align	1
11434	.global	FtlLoadSysInfo
11435	.syntax unified
11436	.thumb
11437	.thumb_func
11438	.fpu softvfp
11439	.type	FtlLoadSysInfo, %function
11440FtlLoadSysInfo:
11441	@ args = 0, pretend = 0, frame = 8
11442	@ frame_needed = 0, uses_anonymous_args = 0
11443	push	{r4, r5, r6, r7, r8, r10, fp, lr}
11444	movs	r1, #0
11445	ldr	r8, .L1573+140
11446	sub	sp, sp, #24
11447	ldr	r7, .L1573
11448	ldr	r3, [r8]
11449	ldr	r4, .L1573+4
11450	ldr	fp, .L1573+144
11451	ldrh	r2, [r7]
11452	ldr	r5, .L1573+8
11453	str	r3, [r4, #8]
11454	ldr	r6, .L1573+12
11455	ldr	r3, [fp]
11456	lsls	r2, r2, #1
11457	ldr	r0, [r5]
11458	str	r3, [r4, #12]
11459	bl	ftl_memset
11460	ldrh	r0, [r6]
11461	movw	r3, #65535
11462	str	r5, [sp, #16]
11463	cmp	r0, r3
11464	bne	.L1544
11465.L1555:
11466	mov	r0, #-1
11467.L1543:
11468	add	sp, sp, #24
11469	@ sp needed
11470	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
11471.L1544:
11472	movs	r1, #1
11473	bl	FtlGetLastWrittenPage
11474	ldrsh	r10, [r6]
11475	sxth	r5, r0
11476	adds	r0, r0, #1
11477	strh	r0, [r6, #2]	@ movhi
11478.L1546:
11479	cmp	r5, #0
11480	bge	.L1552
11481	movw	r2, #1474
11482	ldr	r1, .L1573+16
11483	ldr	r0, .L1573+20
11484	bl	printf
11485	b	.L1551
11486.L1552:
11487	orr	r3, r5, r10, lsl #10
11488	movs	r2, #1
11489	mov	r1, r2
11490	ldr	r0, .L1573+4
11491	str	r3, [r4, #4]
11492	ldr	r3, [r8]
11493	str	r3, [r4, #8]
11494	bl	FlashReadPages
11495	ldr	r3, [r4, #12]
11496	ldr	r3, [r3, #12]
11497	str	r3, [sp, #20]
11498	cbz	r3, .L1547
11499	ldr	r2, [r4]
11500	adds	r2, r2, #1
11501	beq	.L1547
11502	ldr	r2, .L1573+24
11503	ldr	r0, [r4, #8]
11504	ldrh	r1, [r2]
11505	bl	js_hash
11506	ldr	r3, [sp, #20]
11507	cmp	r3, r0
11508	beq	.L1547
11509	str	r0, [sp, #8]
11510	mov	r2, r10
11511	str	r3, [sp, #4]
11512	ldrh	r3, [r6, #4]
11513	ldr	r1, .L1573+16
11514	ldr	r0, .L1573+28
11515	str	r3, [sp]
11516	mov	r3, r5
11517	bl	printf
11518	cbnz	r5, .L1548
11519	ldrh	r3, [r6, #4]
11520	cmp	r10, r3
11521	beq	.L1548
11522	sxth	r10, r3
11523	ldr	r3, .L1573+32
11524	ldrh	r5, [r3]
11525.L1550:
11526	subs	r5, r5, #1
11527	sxth	r5, r5
11528	b	.L1546
11529.L1548:
11530	mov	r3, #-1
11531	str	r3, [r4]
11532.L1547:
11533	ldr	r3, [r4]
11534	adds	r3, r3, #1
11535	beq	.L1550
11536	ldr	r3, [r8]
11537	ldr	r2, .L1573+36
11538	ldr	r3, [r3]
11539	cmp	r3, r2
11540	bne	.L1550
11541	ldr	r3, [fp]
11542	ldrh	r2, [r3]
11543	movw	r3, #61604
11544	cmp	r2, r3
11545	bne	.L1550
11546.L1551:
11547	ldr	r2, .L1573+24
11548	ldrh	r3, [r7]
11549	ldrh	r2, [r2]
11550	adds	r3, r3, #24
11551	cmp	r2, r3, lsl #1
11552	bcs	.L1554
11553	movw	r2, #1476
11554	ldr	r1, .L1573+16
11555	ldr	r0, .L1573+20
11556	bl	printf
11557.L1554:
11558	ldr	r5, .L1573+40
11559	movs	r2, #48
11560	ldr	r1, [r4, #8]
11561	mov	r0, r5
11562	bl	ftl_memcpy
11563	ldrh	r2, [r7]
11564	ldr	r1, [r4, #8]
11565	mov	r4, r5
11566	ldr	r3, [sp, #16]
11567	lsls	r2, r2, #1
11568	adds	r1, r1, #48
11569	ldr	r0, [r3]
11570	bl	ftl_memcpy
11571	ldr	r2, [r5]
11572	ldr	r3, .L1573+36
11573	cmp	r2, r3
11574	bne	.L1555
11575	ldr	r3, .L1573+44
11576	ldrb	r2, [r4, #10]	@ zero_extendqisi2
11577	ldrh	r5, [r5, #8]
11578	ldrh	r3, [r3]
11579	strh	r5, [r6, #6]	@ movhi
11580	cmp	r2, r3
11581	bne	.L1555
11582	ldr	r3, .L1573+48
11583	ldr	r2, .L1573+52
11584	str	r5, [r3]
11585	ldr	r3, .L1573+56
11586	ldrh	r3, [r3]
11587	muls	r3, r5, r3
11588	str	r3, [r2]
11589	ldr	r2, .L1573+60
11590	ldrh	r2, [r2]
11591	muls	r3, r2, r3
11592	ldr	r2, .L1573+64
11593	str	r3, [r2]
11594	ldr	r3, .L1573+68
11595	ldr	r6, [r3]
11596	ldr	r3, .L1573+72
11597	ldrh	r0, [r3, #6]
11598	ldr	r3, .L1573+76
11599	subs	r0, r6, r0
11600	ldrh	r1, [r3]
11601	subs	r0, r0, r5
11602	bl	__aeabi_uidiv
11603	ldr	r3, .L1573+80
11604	cmp	r5, r6
11605	strh	r0, [r3]	@ movhi
11606	bls	.L1556
11607	movw	r2, #1498
11608	ldr	r1, .L1573+16
11609	ldr	r0, .L1573+20
11610	bl	printf
11611.L1556:
11612	ldrh	r2, [r4, #16]
11613	ldr	r3, .L1573+84
11614	ldrh	ip, [r4, #14]
11615	ldr	r7, .L1573+88
11616	lsrs	r1, r2, #6
11617	and	r2, r2, #63
11618	strb	r2, [r3, #6]
11619	ldrb	r2, [r4, #11]	@ zero_extendqisi2
11620	strh	r1, [r3, #2]	@ movhi
11621	ldr	r1, .L1573+92
11622	strb	r2, [r3, #8]
11623	ldrh	r2, [r4, #18]
11624	strh	ip, [r3]	@ movhi
11625	movw	r3, #65535
11626	strh	r3, [r7]	@ movhi
11627	movs	r3, #0
11628	strh	r2, [r1]	@ movhi
11629	ldrh	r2, [r4, #20]
11630	strh	r3, [r7, #2]	@ movhi
11631	strb	r3, [r7, #6]
11632	strb	r3, [r7, #8]
11633	lsrs	r5, r2, #6
11634	and	r2, r2, #63
11635	strb	r2, [r1, #6]
11636	ldrb	r2, [r4, #12]	@ zero_extendqisi2
11637	strh	r5, [r1, #2]	@ movhi
11638	ldrh	r5, [r4, #22]
11639	strb	r2, [r1, #8]
11640	ldr	r2, .L1573+96
11641	strh	r5, [r2]	@ movhi
11642	ldrh	r5, [r4, #24]
11643	lsrs	r6, r5, #6
11644	and	r5, r5, #63
11645	strb	r5, [r2, #6]
11646	ldrb	r5, [r4, #13]	@ zero_extendqisi2
11647	strh	r6, [r2, #2]	@ movhi
11648	ldr	r6, [r4, #32]
11649	strb	r5, [r2, #8]
11650	ldr	r5, .L1573+100
11651	str	r3, [r5]
11652	ldr	r5, .L1573+104
11653	str	r3, [r5]
11654	ldr	r5, .L1573+108
11655	str	r3, [r5]
11656	ldr	r5, .L1573+112
11657	str	r3, [r5]
11658	ldr	r5, .L1573+116
11659	str	r6, [r5]
11660	mov	r6, r1
11661	ldr	r5, .L1573+120
11662	str	r3, [r5]
11663	ldr	r5, .L1573+124
11664	str	r3, [r5]
11665	ldr	r5, .L1573+128
11666	ldr	lr, [r4, #40]
11667	str	r3, [r5]
11668	ldr	r3, .L1573+132
11669	ldr	r5, [r3]
11670	cmp	lr, r5
11671	mov	r5, r2
11672	it	hi
11673	strhi	lr, [r3]
11674	ldr	r3, .L1573+136
11675	ldr	r2, [r4, #36]
11676	ldr	r1, [r3]
11677	cmp	r2, r1
11678	it	hi
11679	strhi	r2, [r3]
11680	movw	r3, #65535
11681	cmp	ip, r3
11682	beq	.L1559
11683	ldr	r0, .L1573+84
11684	bl	make_superblock
11685.L1559:
11686	ldrh	r2, [r6]
11687	movw	r3, #65535
11688	cmp	r2, r3
11689	beq	.L1560
11690	ldr	r0, .L1573+92
11691	bl	make_superblock
11692.L1560:
11693	ldrh	r2, [r5]
11694	movw	r3, #65535
11695	cmp	r2, r3
11696	beq	.L1561
11697	ldr	r0, .L1573+96
11698	bl	make_superblock
11699.L1561:
11700	ldrh	r2, [r7]
11701	movw	r3, #65535
11702	cmp	r2, r3
11703	beq	.L1562
11704	ldr	r0, .L1573+88
11705	bl	make_superblock
11706.L1562:
11707	movs	r0, #0
11708	b	.L1543
11709.L1574:
11710	.align	2
11711.L1573:
11712	.word	.LANCHOR4
11713	.word	.LANCHOR137
11714	.word	.LANCHOR41
11715	.word	.LANCHOR138
11716	.word	.LANCHOR177
11717	.word	.LC1
11718	.word	.LANCHOR22
11719	.word	.LC46
11720	.word	.LANCHOR19
11721	.word	1179929683
11722	.word	.LANCHOR38
11723	.word	.LANCHOR9
11724	.word	.LANCHOR178
11725	.word	.LANCHOR151
11726	.word	.LANCHOR18
11727	.word	.LANCHOR11
11728	.word	.LANCHOR33
11729	.word	.LANCHOR6
11730	.word	.LANCHOR36
11731	.word	.LANCHOR2
11732	.word	.LANCHOR170
11733	.word	.LANCHOR50
11734	.word	.LANCHOR144
11735	.word	.LANCHOR51
11736	.word	.LANCHOR52
11737	.word	.LANCHOR83
11738	.word	.LANCHOR84
11739	.word	.LANCHOR88
11740	.word	.LANCHOR87
11741	.word	.LANCHOR89
11742	.word	.LANCHOR90
11743	.word	.LANCHOR91
11744	.word	.LANCHOR86
11745	.word	.LANCHOR81
11746	.word	.LANCHOR82
11747	.word	.LANCHOR105
11748	.word	.LANCHOR113
11749	.size	FtlLoadSysInfo, .-FtlLoadSysInfo
11750	.section	.text.FtlMapTblRecovery,"ax",%progbits
11751	.align	1
11752	.global	FtlMapTblRecovery
11753	.syntax unified
11754	.thumb
11755	.thumb_func
11756	.fpu softvfp
11757	.type	FtlMapTblRecovery, %function
11758FtlMapTblRecovery:
11759	@ args = 0, pretend = 0, frame = 32
11760	@ frame_needed = 0, uses_anonymous_args = 0
11761	ldr	r3, [r0, #24]
11762	movs	r1, #0
11763	push	{r4, r5, r6, r7, r8, r10, fp, lr}
11764	sub	sp, sp, #40
11765	mov	r4, r0
11766	ldr	r8, [r0, #12]
11767	movs	r7, #0
11768	str	r3, [sp, #8]
11769	ldr	r3, [r0, #16]
11770	ldr	r6, .L1616
11771	str	r3, [sp, #24]
11772	ldrh	r3, [r0, #6]
11773	str	r3, [sp, #12]
11774	ldrh	r3, [r0, #8]
11775	ldr	r0, [sp, #8]
11776	str	r3, [sp, #16]
11777	ldr	r3, [sp, #12]
11778	lsls	r2, r3, #2
11779	bl	ftl_memset
11780	ldr	r3, .L1616+4
11781	str	r7, [r4, #32]
11782	str	r7, [r4, #28]
11783	ldr	r2, [r3]
11784	str	r3, [sp, #20]
11785	str	r2, [r6, #8]
11786	ldr	r2, .L1616+8
11787	ldr	fp, [r2]
11788	movw	r2, #65535
11789	str	fp, [r6, #12]
11790	strh	r2, [r4]	@ movhi
11791	strh	r2, [r4, #2]	@ movhi
11792	movs	r2, #1
11793	str	r2, [r4, #36]
11794.L1576:
11795	ldr	r3, [sp, #16]
11796	sxth	r5, r7
11797	cmp	r5, r3
11798	bge	.L1595
11799	ldr	r3, [sp, #16]
11800	subs	r3, r3, #1
11801	cmp	r5, r3
11802	bne	.L1577
11803	movs	r1, #1
11804	ldrh	r0, [r8, r5, lsl #1]
11805	bl	FtlGetLastWrittenPage
11806	sxth	r3, r0
11807	ldr	r6, .L1616
11808	add	r10, r8, r5, lsl #1
11809	strh	r7, [r4]	@ movhi
11810	str	r3, [sp, #16]
11811	movs	r7, #0
11812	ldr	r3, [sp, #24]
11813	adds	r0, r0, #1
11814	strh	r0, [r4, #2]	@ movhi
11815	ldr	r3, [r3, r5, lsl #2]
11816	str	r3, [r4, #28]
11817.L1578:
11818	ldr	r3, [sp, #16]
11819	sxth	r8, r7
11820	cmp	r8, r3
11821	ble	.L1581
11822.L1595:
11823	mov	r0, r4
11824	bl	ftl_free_no_use_map_blk
11825	ldr	r3, .L1616+12
11826	ldrh	r2, [r4, #2]
11827	ldrh	r3, [r3]
11828	cmp	r2, r3
11829	bne	.L1583
11830	mov	r0, r4
11831	bl	ftl_map_blk_alloc_new_blk
11832.L1583:
11833	mov	r0, r4
11834	bl	ftl_map_blk_gc
11835	mov	r0, r4
11836	bl	ftl_map_blk_gc
11837	movs	r0, #0
11838	add	sp, sp, #40
11839	@ sp needed
11840	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
11841.L1581:
11842	ldrh	r2, [r10]
11843	ldr	r0, .L1616
11844	orr	r2, r8, r2, lsl #10
11845	str	r2, [r6, #4]
11846	movs	r2, #1
11847	mov	r1, r2
11848	bl	FlashReadPages
11849	ldr	r2, [r6, #12]
11850	ldr	r2, [r2, #12]
11851	str	r2, [sp, #20]
11852	cbz	r2, .L1579
11853	ldr	r1, [r6]
11854	adds	r1, r1, #1
11855	beq	.L1579
11856	ldr	r3, .L1616+16
11857	ldr	r0, [r6, #8]
11858	ldrh	r1, [r3]
11859	bl	js_hash
11860	ldr	r2, [sp, #20]
11861	cmp	r2, r0
11862	beq	.L1579
11863	str	r0, [sp, #4]
11864	mov	r3, r8
11865	str	r2, [sp]
11866	mov	r2, r5
11867	ldr	r1, .L1616+20
11868	ldr	r0, .L1616+24
11869	bl	printf
11870	mov	r3, #-1
11871	str	r3, [r6]
11872.L1579:
11873	ldr	r3, [r6]
11874	adds	r3, r3, #1
11875	beq	.L1580
11876	ldrh	r3, [fp, #8]
11877	ldr	r2, [sp, #12]
11878	cmp	r2, r3
11879	bls	.L1580
11880	ldrh	r1, [fp]
11881	ldrh	r2, [r4, #4]
11882	cmp	r1, r2
11883	ittt	eq
11884	ldreq	r2, [r6, #4]
11885	ldreq	r1, [sp, #8]
11886	streq	r2, [r1, r3, lsl #2]
11887.L1580:
11888	adds	r7, r7, #1
11889	b	.L1578
11890.L1577:
11891	ldr	r3, [sp, #20]
11892	ldr	r10, .L1616+12
11893	ldrh	r2, [r8, r5, lsl #1]
11894	ldr	r3, [r3]
11895	ldr	r0, .L1616
11896	str	r3, [r6, #8]
11897	add	r3, r8, r5, lsl #1
11898	str	r3, [sp, #28]
11899	ldrh	r3, [r10]
11900	subs	r3, r3, #1
11901	orr	r3, r3, r2, lsl #10
11902	movs	r2, #1
11903	mov	r1, r2
11904	str	r3, [r6, #4]
11905	bl	FlashReadPages
11906	ldr	r3, [r6]
11907	adds	r3, r3, #1
11908	beq	.L1597
11909	ldrh	r2, [fp]
11910	ldrh	r3, [r4, #4]
11911	cmp	r2, r3
11912	bne	.L1597
11913	ldrh	r2, [fp, #8]
11914	movw	r3, #64245
11915	cmp	r2, r3
11916	beq	.L1585
11917.L1597:
11918	mov	r10, #0
11919.L1586:
11920	ldr	r2, .L1616+12
11921	sxth	r3, r10
11922	ldrh	r2, [r2]
11923	cmp	r3, r2
11924	bge	.L1593
11925	ldr	r2, [sp, #28]
11926	ldr	r0, .L1616
11927	str	r3, [sp, #36]
11928	ldrh	r2, [r2]
11929	orr	r2, r3, r2, lsl #10
11930	str	r2, [r6, #4]
11931	movs	r2, #1
11932	mov	r1, r2
11933	bl	FlashReadPages
11934	ldr	r2, [r6, #12]
11935	ldr	r2, [r2, #12]
11936	str	r2, [sp, #32]
11937	cbz	r2, .L1590
11938	ldr	r1, [r6]
11939	adds	r1, r1, #1
11940	beq	.L1590
11941	ldr	r1, .L1616+16
11942	ldr	r0, [r6, #8]
11943	ldrh	r1, [r1]
11944	bl	js_hash
11945	ldr	r2, [sp, #32]
11946	cmp	r2, r0
11947	beq	.L1590
11948	str	r0, [sp, #4]
11949	str	r2, [sp]
11950	mov	r2, r5
11951	ldr	r3, [sp, #36]
11952	ldr	r1, .L1616+20
11953	ldr	r0, .L1616+28
11954	bl	printf
11955	mov	r3, #-1
11956	str	r3, [r6]
11957.L1590:
11958	ldr	r3, [r6]
11959	adds	r3, r3, #1
11960	beq	.L1591
11961	ldrh	r3, [fp, #8]
11962	ldr	r2, [sp, #12]
11963	cmp	r2, r3
11964	bls	.L1591
11965	ldrh	r1, [fp]
11966	ldrh	r2, [r4, #4]
11967	cmp	r1, r2
11968	ittt	eq
11969	ldreq	r2, [r6, #4]
11970	ldreq	r1, [sp, #8]
11971	streq	r2, [r1, r3, lsl #2]
11972.L1591:
11973	add	r10, r10, #1
11974	b	.L1586
11975.L1585:
11976	ldr	r3, [sp, #20]
11977	movs	r1, #0
11978	ldrh	r2, [r10]
11979	ldr	r0, [r3]
11980	add	lr, r2, #-1
11981.L1587:
11982	sxth	r3, r1
11983	cmp	r3, lr
11984	blt	.L1589
11985.L1593:
11986	adds	r7, r7, #1
11987	b	.L1576
11988.L1589:
11989	lsls	r5, r3, #3
11990	ldr	r3, [r0, r3, lsl #3]
11991	ldr	r2, [sp, #12]
11992	uxth	ip, r3
11993	cmp	r2, ip
11994	bls	.L1588
11995	add	r5, r5, r0
11996	ldr	r2, [sp, #8]
11997	ldr	r5, [r5, #4]
11998	str	r5, [r2, ip, lsl #2]
11999.L1588:
12000	adds	r1, r1, #1
12001	b	.L1587
12002.L1617:
12003	.align	2
12004.L1616:
12005	.word	.LANCHOR137
12006	.word	.LANCHOR105
12007	.word	.LANCHOR113
12008	.word	.LANCHOR19
12009	.word	.LANCHOR22
12010	.word	.LANCHOR179
12011	.word	.LC47
12012	.word	.LC48
12013	.size	FtlMapTblRecovery, .-FtlMapTblRecovery
12014	.section	.text.FtlLoadVonderInfo,"ax",%progbits
12015	.align	1
12016	.global	FtlLoadVonderInfo
12017	.syntax unified
12018	.thumb
12019	.thumb_func
12020	.fpu softvfp
12021	.type	FtlLoadVonderInfo, %function
12022FtlLoadVonderInfo:
12023	@ args = 0, pretend = 0, frame = 0
12024	@ frame_needed = 0, uses_anonymous_args = 0
12025	push	{r3, lr}
12026	ldr	r3, .L1619
12027	ldr	r0, .L1619+4
12028	ldrh	r3, [r3]
12029	strh	r3, [r0, #10]	@ movhi
12030	movw	r3, #61574
12031	strh	r3, [r0, #4]	@ movhi
12032	ldr	r3, .L1619+8
12033	ldrh	r3, [r3]
12034	strh	r3, [r0, #8]	@ movhi
12035	ldr	r3, .L1619+12
12036	ldrh	r3, [r3]
12037	strh	r3, [r0, #6]	@ movhi
12038	ldr	r3, .L1619+16
12039	ldr	r3, [r3]
12040	str	r3, [r0, #12]
12041	ldr	r3, .L1619+20
12042	ldr	r3, [r3]
12043	str	r3, [r0, #16]
12044	ldr	r3, .L1619+24
12045	ldr	r3, [r3]
12046	str	r3, [r0, #20]
12047	ldr	r3, .L1619+28
12048	ldr	r3, [r3]
12049	str	r3, [r0, #24]
12050	bl	FtlMapTblRecovery
12051	movs	r0, #0
12052	pop	{r3, pc}
12053.L1620:
12054	.align	2
12055.L1619:
12056	.word	.LANCHOR26
12057	.word	.LANCHOR160
12058	.word	.LANCHOR34
12059	.word	.LANCHOR27
12060	.word	.LANCHOR35
12061	.word	.LANCHOR121
12062	.word	.LANCHOR120
12063	.word	.LANCHOR122
12064	.size	FtlLoadVonderInfo, .-FtlLoadVonderInfo
12065	.section	.text.FtlLoadMapInfo,"ax",%progbits
12066	.align	1
12067	.global	FtlLoadMapInfo
12068	.syntax unified
12069	.thumb
12070	.thumb_func
12071	.fpu softvfp
12072	.type	FtlLoadMapInfo, %function
12073FtlLoadMapInfo:
12074	@ args = 0, pretend = 0, frame = 0
12075	@ frame_needed = 0, uses_anonymous_args = 0
12076	push	{r3, lr}
12077	bl	FtlL2PDataInit
12078	ldr	r0, .L1622
12079	bl	FtlMapTblRecovery
12080	movs	r0, #0
12081	pop	{r3, pc}
12082.L1623:
12083	.align	2
12084.L1622:
12085	.word	.LANCHOR128
12086	.size	FtlLoadMapInfo, .-FtlLoadMapInfo
12087	.section	.text.FtlSysBlkInit,"ax",%progbits
12088	.align	1
12089	.global	FtlSysBlkInit
12090	.syntax unified
12091	.thumb
12092	.thumb_func
12093	.fpu softvfp
12094	.type	FtlSysBlkInit, %function
12095FtlSysBlkInit:
12096	@ args = 0, pretend = 0, frame = 0
12097	@ frame_needed = 0, uses_anonymous_args = 0
12098	push	{r3, r4, r5, r6, r7, lr}
12099	movs	r3, #0
12100	ldr	r4, .L1637
12101	strh	r3, [r4]	@ movhi
12102	ldr	r3, .L1637+4
12103	ldrh	r0, [r3]
12104	bl	FtlFreeSysBlkQueueInit
12105	bl	FtlScanSysBlk
12106	ldr	r3, .L1637+8
12107	ldrh	r2, [r3]
12108	movw	r3, #65535
12109	cmp	r2, r3
12110	bne	.L1625
12111.L1627:
12112	mov	r6, #-1
12113.L1624:
12114	mov	r0, r6
12115	pop	{r3, r4, r5, r6, r7, pc}
12116.L1625:
12117	bl	FtlLoadSysInfo
12118	mov	r6, r0
12119	cmp	r0, #0
12120	bne	.L1627
12121	bl	FtlLoadMapInfo
12122	bl	FtlLoadVonderInfo
12123	bl	Ftl_load_ext_data
12124	bl	FtlLoadEctTbl
12125	bl	FtlFreeSysBLkSort
12126	bl	SupperBlkListInit
12127	bl	FtlPowerLostRecovery
12128	movs	r0, #1
12129	bl	FtlUpdateVaildLpn
12130	ldr	r3, .L1637+12
12131	movs	r0, #12
12132	ldrh	r1, [r3]
12133	ldr	r3, .L1637+16
12134	ldr	r2, [r3]
12135	mov	r3, r6
12136.L1628:
12137	cmp	r3, r1
12138	bge	.L1633
12139	mla	r5, r0, r3, r2
12140	ldr	r5, [r5, #4]
12141	cmp	r5, #0
12142	bge	.L1629
12143.L1633:
12144	ldr	r0, .L1637+20
12145	cmp	r3, r1
12146	ldr	r2, [r0]
12147	add	r2, r2, #32
12148	str	r2, [r0]
12149	bge	.L1635
12150.L1630:
12151	ldr	r5, .L1637+24
12152	ldr	r4, .L1637+28
12153	mov	r0, r5
12154	bl	FtlSuperblockPowerLostFix
12155	mov	r0, r4
12156	bl	FtlSuperblockPowerLostFix
12157	ldr	r3, .L1637+32
12158	ldrh	r1, [r5]
12159	ldrh	r0, [r5, #4]
12160	ldr	r2, [r3]
12161	ldrh	r3, [r2, r1, lsl #1]
12162	subs	r3, r3, r0
12163	ldr	r0, .L1637+36
12164	strh	r3, [r2, r1, lsl #1]	@ movhi
12165	ldrh	r7, [r4, #4]
12166	ldrh	r3, [r0]
12167	strh	r3, [r5, #2]	@ movhi
12168	movs	r3, #0
12169	strb	r3, [r5, #6]
12170	strh	r3, [r5, #4]	@ movhi
12171	ldrh	r5, [r4]
12172	ldrh	r1, [r2, r5, lsl #1]
12173	subs	r1, r1, r7
12174	strh	r1, [r2, r5, lsl #1]	@ movhi
12175	ldrh	r2, [r0]
12176	strb	r3, [r4, #6]
12177	strh	r3, [r4, #4]	@ movhi
12178	strh	r2, [r4, #2]	@ movhi
12179	ldr	r2, .L1637+40
12180	ldrh	r3, [r2, #30]
12181	adds	r3, r3, #1
12182	strh	r3, [r2, #30]	@ movhi
12183	bl	l2p_flush
12184	bl	FtlVpcTblFlush
12185.L1636:
12186	bl	FtlVpcTblFlush
12187	b	.L1624
12188.L1629:
12189	adds	r3, r3, #1
12190	b	.L1628
12191.L1635:
12192	ldrh	r3, [r4]
12193	cmp	r3, #0
12194	bne	.L1630
12195	bl	l2p_flush
12196	b	.L1636
12197.L1638:
12198	.align	2
12199.L1637:
12200	.word	.LANCHOR155
12201	.word	.LANCHOR3
12202	.word	.LANCHOR138
12203	.word	.LANCHOR32
12204	.word	.LANCHOR54
12205	.word	.LANCHOR82
12206	.word	.LANCHOR50
12207	.word	.LANCHOR51
12208	.word	.LANCHOR41
12209	.word	.LANCHOR18
12210	.word	.LANCHOR38
12211	.size	FtlSysBlkInit, .-FtlSysBlkInit
12212	.section	.text.ftl_low_format,"ax",%progbits
12213	.align	1
12214	.global	ftl_low_format
12215	.syntax unified
12216	.thumb
12217	.thumb_func
12218	.fpu softvfp
12219	.type	ftl_low_format, %function
12220ftl_low_format:
12221	@ args = 0, pretend = 0, frame = 16
12222	@ frame_needed = 0, uses_anonymous_args = 0
12223	push	{r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
12224	movs	r3, #0
12225	ldr	r2, .L1663
12226	ldr	r4, .L1663+4
12227	str	r3, [r2]
12228	ldr	r5, .L1663+8
12229	ldr	r2, .L1663+12
12230	mov	r8, r4
12231	ldrh	r0, [r4]
12232	str	r3, [r5]
12233	str	r3, [r2]
12234	bl	FtlFreeSysBlkQueueInit
12235	bl	FtlLoadBbt
12236	cbz	r0, .L1640
12237	bl	FtlMakeBbt
12238.L1640:
12239	ldr	r3, .L1663+16
12240	ldr	r2, .L1663+20
12241	ldr	r7, .L1663+24
12242	ldrh	r1, [r3]
12243	ldr	r4, [r2]
12244	ldr	r2, .L1663+28
12245	str	r3, [sp, #4]
12246	lsls	r1, r1, #7
12247	ldr	r6, [r2]
12248	movs	r2, #0
12249.L1641:
12250	uxth	r3, r2
12251	adds	r2, r2, #1
12252	cmp	r3, r1
12253	blt	.L1642
12254	ldr	r7, .L1663+32
12255	mov	r10, #0
12256	ldr	r6, .L1663+36
12257	ldrh	r4, [r7]
12258	mov	fp, r6
12259.L1643:
12260	ldrh	r3, [r6]
12261	cmp	r3, r4
12262	bhi	.L1644
12263	ldr	r6, .L1663+40
12264	sub	r3, r10, #2
12265	ldrh	r1, [r6]
12266	cmp	r3, r1, lsl #1
12267	bgt	.L1645
12268.L1649:
12269	movs	r4, #0
12270	mov	r8, r4
12271.L1646:
12272	ldrh	r3, [r7]
12273	uxth	r0, r4
12274	adds	r4, r4, #1
12275	cmp	r3, r0
12276	bhi	.L1650
12277	ldrh	r2, [fp]
12278	ldr	r3, .L1663+44
12279	ldrh	r4, [r6]
12280	ldr	r6, .L1663+48
12281	str	r2, [r3]
12282	ldr	r3, .L1663+52
12283	mov	r1, r4
12284	ldr	r7, .L1663+56
12285	ldr	r2, [r3]
12286	mov	r0, r2
12287	str	r2, [sp, #12]
12288	bl	__aeabi_uidiv
12289	ubfx	r10, r0, #5, #16
12290	mov	r3, r0
12291	add	r1, r10, #36
12292	str	r0, [r7]
12293	strh	r1, [r6]	@ movhi
12294	movs	r1, #24
12295	muls	r1, r4, r1
12296	cmp	r8, r1
12297	ble	.L1651
12298	ldr	r2, [sp, #12]
12299	mov	r1, r4
12300	str	r0, [sp, #8]
12301	sub	r0, r2, r8
12302	bl	__aeabi_uidiv
12303	ldr	r3, [sp, #8]
12304	str	r0, [r7]
12305	lsrs	r0, r0, #5
12306	adds	r0, r0, #24
12307	strh	r0, [r6]	@ movhi
12308.L1651:
12309	ldr	r2, .L1663+60
12310	ldrh	r2, [r2]
12311	cbz	r2, .L1653
12312	ldrh	r1, [r6]
12313	add	r1, r1, r2, lsr #1
12314	strh	r1, [r6]	@ movhi
12315	mul	r1, r4, r2
12316	cmp	r8, r1
12317	itttt	lt
12318	addlt	r2, r2, #32
12319	strlt	r3, [r7]
12320	addlt	r2, r2, r10
12321	strhlt	r2, [r6]	@ movhi
12322.L1653:
12323	ldrh	r2, [r6]
12324	ldr	r3, [r7]
12325	ldr	r6, .L1663+64
12326	subs	r3, r3, r2
12327	muls	r4, r3, r4
12328	ldr	r3, .L1663+68
12329	ldrh	r3, [r3]
12330	str	r4, [r6]
12331	muls	r4, r3, r4
12332	ldr	r3, [sp, #4]
12333	ldrh	r3, [r3]
12334	str	r4, [r7]
12335	ldr	r7, .L1663+72
12336	muls	r4, r3, r4
12337	ldr	r3, .L1663+76
12338	str	r4, [r3]
12339	bl	FtlBbmTblFlush
12340	ldrh	r2, [fp]
12341	movs	r1, #0
12342	ldr	r0, [r7]
12343	ldr	r4, .L1663+80
12344	lsls	r2, r2, #1
12345	mov	r10, r4
12346	bl	ftl_memset
12347	ldr	r2, .L1663+84
12348	movs	r3, #0
12349	movw	r1, #65535
12350	strh	r3, [r4, #2]	@ movhi
12351	mov	r8, r1
12352	strb	r3, [r4, #6]
12353	str	r3, [r2]
12354	ldr	r2, .L1663+88
12355	strh	r3, [r4]	@ movhi
12356	strh	r3, [r2, #2]	@ movhi
12357	strb	r3, [r2, #6]
12358	strb	r3, [r2, #8]
12359	movs	r3, #1
12360	strh	r1, [r2]	@ movhi
12361	strb	r3, [r4, #8]
12362.L1655:
12363	mov	r0, r10
12364	bl	make_superblock
12365	ldrb	r3, [r4, #7]	@ zero_extendqisi2
12366	ldrh	r2, [r4]
12367	cmp	r3, #0
12368	bne	.L1656
12369	ldr	r3, [r7]
12370	strh	r8, [r3, r2, lsl #1]	@ movhi
12371	ldrh	r3, [r4]
12372	adds	r3, r3, #1
12373	strh	r3, [r4]	@ movhi
12374	b	.L1655
12375.L1642:
12376	mvns	r0, r3
12377	orr	r0, r3, r0, lsl #16
12378	str	r0, [r4, r3, lsl #2]
12379	str	r7, [r6, r3, lsl #2]
12380	b	.L1641
12381.L1644:
12382	mov	r0, r4
12383	movs	r1, #1
12384	bl	FtlLowFormatEraseBlock
12385	adds	r4, r4, #1
12386	add	r10, r10, r0
12387	uxth	r10, r10
12388	uxth	r4, r4
12389	b	.L1643
12390.L1645:
12391	mov	r0, r10
12392	bl	__aeabi_uidiv
12393	ldr	r3, .L1663+92
12394	ldr	r3, [r3]
12395	add	r0, r0, r3
12396	uxth	r0, r0
12397	bl	FtlSysBlkNumInit
12398	ldrh	r0, [r8]
12399	bl	FtlFreeSysBlkQueueInit
12400	ldrh	r4, [r7]
12401.L1647:
12402	ldrh	r3, [fp]
12403	cmp	r3, r4
12404	bls	.L1649
12405	mov	r0, r4
12406	movs	r1, #1
12407	adds	r4, r4, #1
12408	bl	FtlLowFormatEraseBlock
12409	uxth	r4, r4
12410	b	.L1647
12411.L1650:
12412	movs	r1, #0
12413	bl	FtlLowFormatEraseBlock
12414	add	r8, r8, r0
12415	uxth	r8, r8
12416	b	.L1646
12417.L1656:
12418	ldr	r3, [r5]
12419	movw	r8, #65535
12420	ldrh	r1, [r4, #4]
12421	str	r3, [r4, #12]
12422	adds	r3, r3, #1
12423	str	r3, [r5]
12424	ldr	r3, [r7]
12425	strh	r1, [r3, r2, lsl #1]	@ movhi
12426	movs	r2, #0
12427	ldr	r3, .L1663+96
12428	strh	r2, [r3, #2]	@ movhi
12429	mov	r10, r3
12430	strb	r2, [r3, #6]
12431	ldrh	r2, [r4]
12432	mov	r4, r3
12433	adds	r2, r2, #1
12434	strh	r2, [r3]	@ movhi
12435	movs	r2, #1
12436	strb	r2, [r3, #8]
12437.L1657:
12438	mov	r0, r10
12439	bl	make_superblock
12440	ldrb	r3, [r4, #7]	@ zero_extendqisi2
12441	ldrh	r2, [r4]
12442	cbnz	r3, .L1658
12443	ldr	r3, [r7]
12444	strh	r8, [r3, r2, lsl #1]	@ movhi
12445	ldrh	r3, [r4]
12446	adds	r3, r3, #1
12447	strh	r3, [r4]	@ movhi
12448	b	.L1657
12449.L1658:
12450	ldr	r3, [r5]
12451	ldrh	r1, [r4, #4]
12452	str	r3, [r4, #12]
12453	adds	r3, r3, #1
12454	str	r3, [r5]
12455	movw	r4, #65535
12456	ldr	r3, [r7]
12457	strh	r1, [r3, r2, lsl #1]	@ movhi
12458	ldr	r3, .L1663+100
12459	strh	r4, [r3]	@ movhi
12460	bl	FtlFreeSysBlkQueueOut
12461	ldr	r3, .L1663+104
12462	movs	r2, #0
12463	strh	r2, [r3, #2]	@ movhi
12464	ldr	r2, [r6]
12465	strh	r0, [r3]	@ movhi
12466	strh	r4, [r3, #4]	@ movhi
12467	strh	r2, [r3, #6]	@ movhi
12468	ldr	r2, [r5]
12469	str	r2, [r3, #8]
12470	adds	r2, r2, #1
12471	str	r2, [r5]
12472	bl	FtlVpcTblFlush
12473	bl	FtlSysBlkInit
12474	cbnz	r0, .L1659
12475	ldr	r3, .L1663+108
12476	movs	r2, #1
12477	str	r2, [r3]
12478.L1659:
12479	movs	r0, #0
12480	add	sp, sp, #16
12481	@ sp needed
12482	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
12483.L1664:
12484	.align	2
12485.L1663:
12486	.word	.LANCHOR82
12487	.word	.LANCHOR3
12488	.word	.LANCHOR81
12489	.word	.LANCHOR142
12490	.word	.LANCHOR11
12491	.word	.LANCHOR108
12492	.word	168778952
12493	.word	.LANCHOR109
12494	.word	.LANCHOR4
12495	.word	.LANCHOR5
12496	.word	.LANCHOR2
12497	.word	.LANCHOR98
12498	.word	.LANCHOR170
12499	.word	.LANCHOR6
12500	.word	.LANCHOR151
12501	.word	.LANCHOR14
12502	.word	.LANCHOR178
12503	.word	.LANCHOR18
12504	.word	.LANCHOR41
12505	.word	.LANCHOR33
12506	.word	.LANCHOR50
12507	.word	.LANCHOR58
12508	.word	.LANCHOR144
12509	.word	.LANCHOR30
12510	.word	.LANCHOR51
12511	.word	.LANCHOR52
12512	.word	.LANCHOR138
12513	.word	.LANCHOR165
12514	.size	ftl_low_format, .-ftl_low_format
12515	.section	.text.sftl_init,"ax",%progbits
12516	.align	1
12517	.global	sftl_init
12518	.syntax unified
12519	.thumb
12520	.thumb_func
12521	.fpu softvfp
12522	.type	sftl_init, %function
12523sftl_init:
12524	@ args = 0, pretend = 0, frame = 0
12525	@ frame_needed = 0, uses_anonymous_args = 0
12526	push	{r4, r5, r6, lr}
12527	mov	r3, #-1
12528	ldr	r4, .L1677
12529	movs	r6, #0
12530	ldr	r1, .L1677+4
12531	ldr	r0, .L1677+8
12532	str	r3, [r4]
12533	bl	printf
12534	ldr	r0, .L1677+12
12535	bl	FtlConstantsInit
12536	ldr	r5, .L1677+16
12537	bl	FtlMemInit
12538	bl	FtlVariablesInit
12539	ldr	r3, .L1677+20
12540	ldrh	r0, [r3]
12541	bl	FtlFreeSysBlkQueueInit
12542.L1666:
12543	bl	FtlLoadBbt
12544	cbz	r0, .L1667
12545.L1676:
12546	ldr	r3, [r5]
12547	cmp	r3, #1
12548	bne	.L1666
12549	str	r6, [r5]
12550	bl	ftl_low_format
12551	b	.L1666
12552.L1667:
12553	bl	FtlSysBlkInit
12554	cmp	r0, #0
12555	bne	.L1676
12556	movs	r3, #1
12557	str	r3, [r4]
12558	pop	{r4, r5, r6, pc}
12559.L1678:
12560	.align	2
12561.L1677:
12562	.word	.LANCHOR165
12563	.word	.LC49
12564	.word	.LC38
12565	.word	.LANCHOR0
12566	.word	.LANCHOR180
12567	.word	.LANCHOR3
12568	.size	sftl_init, .-sftl_init
12569	.section	.text.FtlWriteToIDB,"ax",%progbits
12570	.align	1
12571	.global	FtlWriteToIDB
12572	.syntax unified
12573	.thumb
12574	.thumb_func
12575	.fpu softvfp
12576	.type	FtlWriteToIDB, %function
12577FtlWriteToIDB:
12578	@ args = 0, pretend = 0, frame = 96
12579	@ frame_needed = 0, uses_anonymous_args = 0
12580	push	{r4, r5, r6, r7, r8, r10, fp, lr}
12581	adds	r7, r1, r0
12582	add	r8, r7, #-1
12583	sub	sp, sp, #104
12584	cmp	r8, #63
12585	mov	r4, r0
12586	mov	r5, r1
12587	mov	r6, r2
12588	ldr	r10, .L1747+16
12589	bls	.L1680
12590	cmp	r0, #576
12591	bcc	.L1681
12592.L1680:
12593	ldr	r3, [r10]
12594	cbnz	r3, .L1682
12595.L1746:
12596	movs	r4, #0
12597	b	.L1679
12598.L1682:
12599	ldr	r3, .L1747
12600	ldr	fp, [r3]
12601	ldr	r3, .L1747+4
12602	ldr	r2, [fp]
12603	cmp	r2, r3
12604	bne	.L1684
12605	ldr	r3, .L1747+8
12606	add	r0, fp, #260096
12607	movs	r2, #0
12608	ldrh	r1, [r3, #10]
12609	movw	r3, #65023
12610.L1688:
12611	ldr	r4, [r0, #-4]!
12612	cbnz	r4, .L1685
12613	ldr	r4, [fp, r2, lsl #2]
12614	adds	r2, r2, #1
12615	cmp	r2, #4096
12616	add	r3, r3, #-1
12617	it	hi
12618	movhi	r2, #0
12619	cmp	r3, #4096
12620	str	r4, [r0, #2048]
12621	bne	.L1688
12622	mov	r3, #512
12623	b	.L1743
12624.L1685:
12625	adds	r3, r3, #127
12626	lsrs	r3, r3, #7
12627.L1743:
12628	str	r3, [sp, #8]
12629	lsls	r1, r1, #2
12630	ldr	r3, [sp, #8]
12631	uxth	r1, r1
12632	adds	r0, r3, #4
12633	bl	__aeabi_uidiv
12634	adds	r3, r0, #1
12635	ldr	r1, [sp, #8]
12636	mov	r2, r3
12637	ldr	r0, .L1747+12
12638	str	r3, [sp, #16]
12639	bl	printf
12640	ldr	r3, [sp, #8]
12641	lsls	r3, r3, #7
12642	str	r3, [sp, #32]
12643	movs	r3, #0
12644	str	r3, [sp, #20]
12645.L1745:
12646	str	r3, [sp, #12]
12647	ldr	r2, [sp, #12]
12648	ldr	r3, [sp, #16]
12649	add	r3, r3, r2
12650	cmp	r3, #8
12651	str	r3, [sp, #28]
12652	bls	.L1711
12653	ldr	r3, [sp, #20]
12654	cbnz	r3, .L1712
12655.L1684:
12656	mov	r3, #-1
12657	str	r3, [sp, #8]
12658.L1712:
12659	ldr	r3, .L1747+16
12660	movs	r2, #0
12661	ldr	r4, [sp, #8]
12662	str	r2, [r3]
12663	ldr	r3, .L1747
12664	ldr	r0, [r3]
12665	bl	free
12666	ldr	r3, .L1747+20
12667	ldr	r0, [r3]
12668	bl	free
12669.L1679:
12670	mov	r0, r4
12671	add	sp, sp, #104
12672	@ sp needed
12673	pop	{r4, r5, r6, r7, r8, r10, fp, pc}
12674.L1711:
12675	ldr	r3, .L1747+20
12676	mov	r2, #512
12677	movs	r1, #0
12678	ldr	r0, [r3]
12679	bl	memset
12680	ldr	r3, .L1747+8
12681	ldrh	r5, [r3, #10]
12682	ldr	r3, [sp, #12]
12683	muls	r3, r5, r3
12684	str	r3, [sp, #24]
12685	ldr	r3, .L1747+24
12686	ldr	r2, [r3, #16]
12687	cmp	r2, #0
12688	beq	.L1719
12689	ldr	r3, [r3, #20]
12690	cmp	r3, #0
12691	ite	eq
12692	moveq	r6, #6
12693	movne	r6, #9
12694.L1690:
12695	ldr	r7, [sp, #24]
12696	movs	r4, #0
12697	ldr	r8, .L1747+24
12698.L1691:
12699	mov	r1, r7
12700	ldr	r3, [r8, #4]
12701	movs	r0, #0
12702	adds	r4, r4, #1
12703	blx	r3
12704	ldr	r3, [sp, #16]
12705	add	r7, r7, r5
12706	cmp	r3, r4
12707	bhi	.L1691
12708	cmp	r6, #9
12709	bne	.L1721
12710	ldr	r3, .L1747+20
12711	mov	r2, #1024
12712	movs	r1, #0
12713	ldr	r4, [r3]
12714	mov	r0, r4
12715	bl	ftl_memset
12716	movs	r2, #4
12717	ldr	r3, .L1747+28
12718	strb	r2, [r4, #17]
12719	movs	r1, #12
12720	ldr	r2, .L1747+8
12721	adds	r0, r4, r1
12722	str	r3, [r4]
12723	movs	r3, #0
12724	str	r1, [r4, #4]
12725	ldrh	r2, [r2, #10]
12726	str	r3, [r4, #12]
12727	strb	r3, [r4, #16]
12728	strh	r2, [r4, #18]	@ movhi
12729	movs	r2, #16
12730	strb	r3, [r4, #20]
12731	strb	r2, [r4, #21]
12732	strh	r3, [r4, #22]	@ movhi
12733	bl	js_hash
12734	str	r0, [r4, #8]
12735.L1692:
12736	ldr	r3, [sp, #16]
12737	mov	r10, fp
12738	ldr	r8, .L1747+24
12739	muls	r3, r5, r3
12740	movs	r5, #0
12741	str	r3, [sp, #36]
12742.L1693:
12743	ldr	r3, [sp, #36]
12744	cmp	r5, r3
12745	beq	.L1700
12746	cmp	r6, #9
12747	ite	ne
12748	lslne	r3, r5, #2
12749	addeq	r3, r5, #1
12750	str	r3, [sp, #40]
12751	movw	r3, #61424
12752	str	r3, [sp, #44]
12753	cmp	r5, #0
12754	bne	.L1696
12755	cmp	r6, #9
12756	bne	.L1696
12757	ldr	r3, [r8, #16]
12758	movs	r0, #70
12759	blx	r3
12760	ldr	r7, [r8, #8]
12761	add	r3, sp, #40
12762	mov	r2, r4
12763	ldr	r1, [sp, #24]
12764	mov	r0, r5
12765	blx	r7
12766	ldr	r2, .L1747+8
12767	mov	r7, r0
12768	ldr	r3, [r8, #16]
12769	ldrb	r0, [r2, #22]	@ zero_extendqisi2
12770	blx	r3
12771	adds	r7, r7, #1
12772	bne	.L1697
12773.L1700:
12774	ldr	r3, .L1747+20
12775	ldr	r7, [r3]
12776	ldr	r3, .L1747+8
12777	ldrb	r2, [r3, #14]	@ zero_extendqisi2
12778	ldrh	r3, [r3, #10]
12779	str	r2, [sp, #24]
12780	ldr	r2, [sp, #12]
12781	mul	r10, r3, r2
12782	ldr	r2, .L1747+24
12783	ldr	r1, [r2, #16]
12784	cmp	r1, #0
12785	bne	.L1698
12786	mov	r8, #6
12787.L1699:
12788	ldr	r2, [sp, #16]
12789	movs	r4, #0
12790	ldr	r5, .L1747+24
12791	muls	r3, r2, r3
12792	str	r3, [sp, #36]
12793.L1702:
12794	ldr	r3, [sp, #36]
12795	cmp	r4, r3
12796	beq	.L1706
12797	cmp	r4, #0
12798	bne	.L1703
12799	cmp	r8, #9
12800	bne	.L1703
12801	ldr	r3, [r5, #16]
12802	movs	r0, #70
12803	blx	r3
12804	ldr	r3, [r5, #20]
12805	movs	r0, #2
12806	blx	r3
12807	mov	r2, r7
12808	mov	r1, r10
12809	add	r3, sp, #40
12810	mov	r0, r4
12811	ldr	r6, [r5, #12]
12812	blx	r6
12813	ldr	r3, [r5, #20]
12814	ldr	r0, [sp, #24]
12815	blx	r3
12816	ldr	r2, .L1747+8
12817	ldr	r3, [r5, #16]
12818	ldrb	r0, [r2, #22]	@ zero_extendqisi2
12819	blx	r3
12820	ldr	r3, [r7]
12821	ldr	r2, .L1747+28
12822	cmp	r3, r2
12823	beq	.L1704
12824.L1706:
12825	ldr	r3, .L1747+20
12826	mov	r1, fp
12827	movs	r4, #0
12828	ldr	r0, [r3]
12829.L1705:
12830	mov	r6, r1
12831	ldr	r2, [r0, r4, lsl #2]
12832	ldr	r3, [r6]
12833	lsls	r5, r4, #2
12834	adds	r1, r1, #4
12835	cmp	r2, r3
12836	beq	.L1708
12837	mov	r2, #512
12838	movs	r1, #0
12839	bl	memset
12840	ldr	r3, .L1747+20
12841	ldr	r1, [sp, #12]
12842	ldr	r0, .L1747+32
12843	ldr	r2, [r3]
12844	str	r4, [sp]
12845	ldr	r3, [r6]
12846	ldr	r2, [r2, r5]
12847	bl	printf
12848	ldr	r3, .L1747+8
12849	movs	r0, #0
12850	ldr	r2, [sp, #12]
12851	ldrh	r1, [r3, #10]
12852	ldr	r3, .L1747+24
12853	muls	r2, r1, r2
12854	ldr	r3, [r3, #4]
12855	mov	r1, r2
12856	blx	r3
12857.L1709:
12858	ldr	r3, [sp, #28]
12859	b	.L1745
12860.L1719:
12861	movs	r6, #6
12862	b	.L1690
12863.L1721:
12864	movs	r4, #0
12865	b	.L1692
12866.L1696:
12867	ldr	r1, [sp, #24]
12868	add	r3, sp, #40
12869	ldr	r7, [r8, #8]
12870	mov	r2, r10
12871	movs	r0, #0
12872	add	r1, r1, r5
12873	blx	r7
12874	adds	r0, r0, #1
12875	beq	.L1700
12876	add	r10, r10, #2048
12877.L1697:
12878	adds	r5, r5, #1
12879	b	.L1693
12880.L1698:
12881	ldr	r2, [r2, #20]
12882	cmp	r2, #0
12883	ite	eq
12884	moveq	r8, #6
12885	movne	r8, #9
12886	b	.L1699
12887.L1703:
12888	add	r3, sp, #40
12889	mov	r2, r7
12890	add	r1, r10, r4
12891	movs	r0, #0
12892	ldr	r6, [r5, #12]
12893	blx	r6
12894	adds	r0, r0, #1
12895	beq	.L1706
12896	ldr	r2, [sp, #44]
12897	movw	r3, #61424
12898	cmp	r2, r3
12899	bne	.L1706
12900	add	r7, r7, #2048
12901.L1704:
12902	adds	r4, r4, #1
12903	b	.L1702
12904.L1708:
12905	ldr	r3, [sp, #32]
12906	adds	r4, r4, #1
12907	cmp	r4, r3
12908	bne	.L1705
12909	ldr	r3, [sp, #20]
12910	adds	r3, r3, #1
12911	cmp	r3, #5
12912	str	r3, [sp, #20]
12913	bls	.L1709
12914	b	.L1712
12915.L1748:
12916	.align	2
12917.L1747:
12918	.word	.LANCHOR182
12919	.word	-52655045
12920	.word	.LANCHOR0
12921	.word	.LC50
12922	.word	.LANCHOR181
12923	.word	.LANCHOR183
12924	.word	.LANCHOR77
12925	.word	1179535694
12926	.word	.LC51
12927.L1681:
12928	cmp	r0, #64
12929	bne	.L1713
12930	ldr	fp, .L1749+4
12931	mov	r0, #262144
12932	bl	ftl_malloc
12933	str	r0, [fp]
12934	mov	r0, #262144
12935	bl	ftl_malloc
12936	ldr	r3, .L1749
12937	str	r0, [r3]
12938	ldr	r3, [fp]
12939	cbz	r3, .L1714
12940	cbz	r0, .L1714
12941	movs	r2, #1
12942	movs	r1, #0
12943	str	r2, [r10]
12944	mov	r0, r3
12945	mov	r2, #262144
12946	bl	ftl_memset
12947.L1713:
12948	ldr	r3, [r10]
12949	cmp	r3, #0
12950	beq	.L1746
12951	ldr	r3, .L1749+4
12952	cmp	r4, #63
12953	itett	ls
12954	rsbls	r1, r4, #64
12955	movhi	r1, r6
12956	subls	r5, r5, r1
12957	addls	r1, r6, r1, lsl #9
12958	ldr	r0, [r3]
12959	ittt	hi
12960	ldrhi	r3, .L1749+8
12961	addhi	r3, r3, r4
12962	addhi	r0, r0, r3, lsl #9
12963	cmp	r8, #576
12964	itt	cs
12965	subcs	r5, r5, r7
12966	subcs	r5, r5, #446
12967	lsls	r2, r5, #9
12968	bl	ftl_memcpy
12969	b	.L1746
12970.L1714:
12971	ldr	r1, .L1749+12
12972	ldr	r0, .L1749+16
12973	bl	printf
12974	b	.L1713
12975.L1750:
12976	.align	2
12977.L1749:
12978	.word	.LANCHOR183
12979	.word	.LANCHOR182
12980	.word	8388544
12981	.word	.LANCHOR184
12982	.word	.LC52
12983	.size	FtlWriteToIDB, .-FtlWriteToIDB
12984	.section	.text.sftl_write,"ax",%progbits
12985	.align	1
12986	.global	sftl_write
12987	.syntax unified
12988	.thumb
12989	.thumb_func
12990	.fpu softvfp
12991	.type	sftl_write, %function
12992sftl_write:
12993	@ args = 0, pretend = 0, frame = 0
12994	@ frame_needed = 0, uses_anonymous_args = 0
12995	push	{r4, r5, r6, lr}
12996	mov	r6, r0
12997	mov	r4, r1
12998	mov	r5, r2
12999	add	r6, r6, r4
13000	bl	FtlWriteToIDB
13001.L1752:
13002	cmp	r4, #256
13003	sub	r1, r6, r4
13004	mov	r3, r5
13005	bhi	.L1754
13006	mov	r2, r4
13007	movs	r0, #0
13008	pop	{r4, r5, r6, lr}
13009	b	FtlWrite
13010.L1754:
13011	mov	r2, #256
13012	movs	r0, #0
13013	bl	FtlWrite
13014	cbnz	r0, .L1751
13015	add	r5, r5, #131072
13016	sub	r4, r4, #256
13017	b	.L1752
13018.L1751:
13019	pop	{r4, r5, r6, pc}
13020	.size	sftl_write, .-sftl_write
13021	.global	g_nand_ops
13022	.global	g_nand_phy_info
13023	.global	gc_ink_free_return_value
13024	.global	check_vpc_table
13025	.global	FtlUpdateVaildLpnCount
13026	.global	g_ect_tbl_power_up_flush
13027	.global	power_up_flag
13028	.global	low_format_en
13029	.global	gFtlInitStatus
13030	.global	DeviceCapacity
13031	.global	g_power_lost_recovery_flag
13032	.global	c_mlc_erase_count_value
13033	.global	g_recovery_ppa_tbl
13034	.global	g_recovery_page_min_ver
13035	.global	g_recovery_page_num
13036	.global	sftl_nand_check_spare_buf
13037	.global	sftl_temp_buf
13038	.global	sftl_nand_check_buf
13039	.global	g_cur_erase_blk
13040	.global	g_gc_skip_write_count
13041	.global	g_gc_head_data_block_count
13042	.global	g_gc_head_data_block
13043	.global	g_ftl_nand_free_count
13044	.global	g_in_swl_replace
13045	.global	g_in_gc_progress
13046	.global	g_max_erase_count
13047	.global	g_totle_sys_slc_erase_count
13048	.global	g_totle_slc_erase_count
13049	.global	g_min_erase_count
13050	.global	g_totle_avg_erase_count
13051	.global	g_totle_mlc_erase_count
13052	.global	g_totle_l2p_write_count
13053	.global	g_totle_cache_write_count
13054	.global	g_tmp_data_superblock_id
13055	.global	g_totle_read_page_count
13056	.global	g_totle_discard_page_count
13057	.global	g_totle_read_sector
13058	.global	g_totle_write_sector
13059	.global	g_totle_write_page_count
13060	.global	g_totle_gc_page_count
13061	.global	g_gc_blk_index
13062	.global	g_gc_merge_free_blk_threshold
13063	.global	g_gc_free_blk_threshold
13064	.global	g_gc_bad_block_temp_tbl
13065	.global	g_gc_bad_block_gc_index
13066	.global	g_gc_bad_block_temp_num
13067	.global	g_gc_next_blk_1
13068	.global	g_gc_next_blk
13069	.global	g_gc_cur_blk_max_valid_pages
13070	.global	g_gc_cur_blk_valid_pages
13071	.global	g_gc_page_offset
13072	.global	g_gc_blk_num
13073	.global	p_gc_blk_tbl
13074	.global	p_gc_page_info
13075	.global	g_sys_ext_data
13076	.global	g_sys_save_data
13077	.global	gp_last_act_superblock
13078	.global	g_gc_superblock
13079	.global	g_gc_temp_superblock
13080	.global	g_buffer_superblock
13081	.global	g_active_superblock
13082	.global	g_num_data_superblocks
13083	.global	g_num_free_superblocks
13084	.global	p_data_block_list_tail
13085	.global	p_data_block_list_head
13086	.global	p_free_data_block_list_head
13087	.global	p_data_block_list_table
13088	.global	g_l2p_last_update_region_id
13089	.global	p_l2p_map_buf
13090	.global	p_l2p_ram_map
13091	.global	g_totle_vendor_block
13092	.global	p_vendor_region_ppn_table
13093	.global	p_vendor_block_ver_table
13094	.global	p_vendor_block_valid_page_count
13095	.global	p_vendor_block_table
13096	.global	g_totle_map_block
13097	.global	p_map_region_ppn_table
13098	.global	p_map_block_ver_table
13099	.global	p_map_block_valid_page_count
13100	.global	p_map_block_table
13101	.global	p_valid_page_count_check_table
13102	.global	p_valid_page_count_table
13103	.global	g_totle_swl_count
13104	.global	p_swl_mul_table
13105	.global	p_erase_count_table
13106	.global	g_ect_tbl_info_size
13107	.global	gp_ect_tbl_info
13108	.global	g_gc_num_req
13109	.global	c_gc_page_buf_num
13110	.global	gp_gc_page_buf_info
13111	.global	p_gc_data_buf
13112	.global	p_gc_spare_buf
13113	.global	p_io_spare_buf
13114	.global	p_io_data_buf_1
13115	.global	p_io_data_buf_0
13116	.global	p_sys_spare_buf
13117	.global	p_vendor_data_buf
13118	.global	p_sys_data_buf_1
13119	.global	p_sys_data_buf
13120	.global	p_plane_order_table
13121	.global	req_gc_dst
13122	.global	req_gc
13123	.global	req_erase
13124	.global	req_prgm
13125	.global	req_read
13126	.global	req_sys
13127	.global	gVendorBlkInfo
13128	.global	gL2pMapInfo
13129	.global	gSysFreeQueue
13130	.global	gSysInfo
13131	.global	gBbtInfo
13132	.global	g_MaxLbn
13133	.global	g_VaildLpn
13134	.global	g_MaxLpn
13135	.global	g_MaxLbaSector
13136	.global	g_GlobalDataVersion
13137	.global	g_GlobalSysVersion
13138	.global	ftl_gc_temp_power_lost_recovery_flag
13139	.global	c_ftl_nand_max_data_blks
13140	.global	c_ftl_nand_data_op_blks_per_plane
13141	.global	c_ftl_nand_data_blks_per_plane
13142	.global	c_ftl_nand_max_sys_blks
13143	.global	c_ftl_nand_init_sys_blks_per_plane
13144	.global	c_ftl_nand_sys_blks_per_plane
13145	.global	c_ftl_vendor_part_size
13146	.global	c_ftl_nand_max_vendor_blks
13147	.global	c_ftl_nand_max_map_blks
13148	.global	c_ftl_nand_map_blks_per_plane
13149	.global	c_ftl_nand_vendor_region_num
13150	.global	c_ftl_nand_l2pmap_ram_region_num
13151	.global	c_ftl_nand_map_region_num
13152	.global	c_ftl_nand_totle_phy_blks
13153	.global	c_ftl_nand_reserved_blks
13154	.global	c_ftl_nand_byte_pre_oob
13155	.global	c_ftl_nand_byte_pre_page
13156	.global	c_ftl_nand_sec_pre_page_shift
13157	.global	c_ftl_nand_sec_pre_page
13158	.global	c_ftl_nand_page_pre_super_blk
13159	.global	c_ftl_nand_page_pre_slc_blk
13160	.global	c_ftl_nand_page_pre_blk
13161	.global	c_ftl_nand_bbm_buf_size
13162	.global	c_ftl_nand_ext_blk_pre_plane
13163	.global	c_ftl_nand_blk_pre_plane
13164	.global	c_ftl_nand_planes_num
13165	.global	c_ftl_nand_blks_per_die_shift
13166	.global	c_ftl_nand_blks_per_die
13167	.global	c_ftl_nand_planes_per_die
13168	.global	c_ftl_nand_die_num
13169	.global	c_ftl_nand_type
13170	.section	.bss.DeviceCapacity,"aw",%nobits
13171	.align	2
13172	.set	.LANCHOR25,. + 0
13173	.type	DeviceCapacity, %object
13174	.size	DeviceCapacity, 4
13175DeviceCapacity:
13176	.space	4
13177	.section	.bss.FtlUpdateVaildLpnCount,"aw",%nobits
13178	.align	1
13179	.set	.LANCHOR57,. + 0
13180	.type	FtlUpdateVaildLpnCount, %object
13181	.size	FtlUpdateVaildLpnCount, 2
13182FtlUpdateVaildLpnCount:
13183	.space	2
13184	.section	.bss.c_ftl_nand_bbm_buf_size,"aw",%nobits
13185	.align	1
13186	.set	.LANCHOR126,. + 0
13187	.type	c_ftl_nand_bbm_buf_size, %object
13188	.size	c_ftl_nand_bbm_buf_size, 2
13189c_ftl_nand_bbm_buf_size:
13190	.space	2
13191	.section	.bss.c_ftl_nand_blk_pre_plane,"aw",%nobits
13192	.align	1
13193	.set	.LANCHOR5,. + 0
13194	.type	c_ftl_nand_blk_pre_plane, %object
13195	.size	c_ftl_nand_blk_pre_plane, 2
13196c_ftl_nand_blk_pre_plane:
13197	.space	2
13198	.section	.bss.c_ftl_nand_blks_per_die,"aw",%nobits
13199	.align	1
13200	.set	.LANCHOR16,. + 0
13201	.type	c_ftl_nand_blks_per_die, %object
13202	.size	c_ftl_nand_blks_per_die, 2
13203c_ftl_nand_blks_per_die:
13204	.space	2
13205	.section	.bss.c_ftl_nand_blks_per_die_shift,"aw",%nobits
13206	.align	1
13207	.set	.LANCHOR17,. + 0
13208	.type	c_ftl_nand_blks_per_die_shift, %object
13209	.size	c_ftl_nand_blks_per_die_shift, 2
13210c_ftl_nand_blks_per_die_shift:
13211	.space	2
13212	.section	.bss.c_ftl_nand_byte_pre_oob,"aw",%nobits
13213	.align	1
13214	.set	.LANCHOR23,. + 0
13215	.type	c_ftl_nand_byte_pre_oob, %object
13216	.size	c_ftl_nand_byte_pre_oob, 2
13217c_ftl_nand_byte_pre_oob:
13218	.space	2
13219	.section	.bss.c_ftl_nand_byte_pre_page,"aw",%nobits
13220	.align	1
13221	.set	.LANCHOR22,. + 0
13222	.type	c_ftl_nand_byte_pre_page, %object
13223	.size	c_ftl_nand_byte_pre_page, 2
13224c_ftl_nand_byte_pre_page:
13225	.space	2
13226	.section	.bss.c_ftl_nand_data_blks_per_plane,"aw",%nobits
13227	.align	1
13228	.set	.LANCHOR4,. + 0
13229	.type	c_ftl_nand_data_blks_per_plane, %object
13230	.size	c_ftl_nand_data_blks_per_plane, 2
13231c_ftl_nand_data_blks_per_plane:
13232	.space	2
13233	.section	.bss.c_ftl_nand_data_op_blks_per_plane,"aw",%nobits
13234	.align	1
13235	.set	.LANCHOR170,. + 0
13236	.type	c_ftl_nand_data_op_blks_per_plane, %object
13237	.size	c_ftl_nand_data_op_blks_per_plane, 2
13238c_ftl_nand_data_op_blks_per_plane:
13239	.space	2
13240	.section	.bss.c_ftl_nand_die_num,"aw",%nobits
13241	.align	1
13242	.set	.LANCHOR9,. + 0
13243	.type	c_ftl_nand_die_num, %object
13244	.size	c_ftl_nand_die_num, 2
13245c_ftl_nand_die_num:
13246	.space	2
13247	.section	.bss.c_ftl_nand_ext_blk_pre_plane,"aw",%nobits
13248	.align	1
13249	.set	.LANCHOR14,. + 0
13250	.type	c_ftl_nand_ext_blk_pre_plane, %object
13251	.size	c_ftl_nand_ext_blk_pre_plane, 2
13252c_ftl_nand_ext_blk_pre_plane:
13253	.space	2
13254	.section	.bss.c_ftl_nand_init_sys_blks_per_plane,"aw",%nobits
13255	.align	2
13256	.set	.LANCHOR30,. + 0
13257	.type	c_ftl_nand_init_sys_blks_per_plane, %object
13258	.size	c_ftl_nand_init_sys_blks_per_plane, 4
13259c_ftl_nand_init_sys_blks_per_plane:
13260	.space	4
13261	.section	.bss.c_ftl_nand_l2pmap_ram_region_num,"aw",%nobits
13262	.align	1
13263	.set	.LANCHOR32,. + 0
13264	.type	c_ftl_nand_l2pmap_ram_region_num, %object
13265	.size	c_ftl_nand_l2pmap_ram_region_num, 2
13266c_ftl_nand_l2pmap_ram_region_num:
13267	.space	2
13268	.section	.bss.c_ftl_nand_map_blks_per_plane,"aw",%nobits
13269	.align	1
13270	.set	.LANCHOR28,. + 0
13271	.type	c_ftl_nand_map_blks_per_plane, %object
13272	.size	c_ftl_nand_map_blks_per_plane, 2
13273c_ftl_nand_map_blks_per_plane:
13274	.space	2
13275	.section	.bss.c_ftl_nand_map_region_num,"aw",%nobits
13276	.align	1
13277	.set	.LANCHOR31,. + 0
13278	.type	c_ftl_nand_map_region_num, %object
13279	.size	c_ftl_nand_map_region_num, 2
13280c_ftl_nand_map_region_num:
13281	.space	2
13282	.section	.bss.c_ftl_nand_max_data_blks,"aw",%nobits
13283	.align	2
13284	.set	.LANCHOR6,. + 0
13285	.type	c_ftl_nand_max_data_blks, %object
13286	.size	c_ftl_nand_max_data_blks, 4
13287c_ftl_nand_max_data_blks:
13288	.space	4
13289	.section	.bss.c_ftl_nand_max_map_blks,"aw",%nobits
13290	.align	2
13291	.set	.LANCHOR29,. + 0
13292	.type	c_ftl_nand_max_map_blks, %object
13293	.size	c_ftl_nand_max_map_blks, 4
13294c_ftl_nand_max_map_blks:
13295	.space	4
13296	.section	.bss.c_ftl_nand_max_sys_blks,"aw",%nobits
13297	.align	2
13298	.set	.LANCHOR3,. + 0
13299	.type	c_ftl_nand_max_sys_blks, %object
13300	.size	c_ftl_nand_max_sys_blks, 4
13301c_ftl_nand_max_sys_blks:
13302	.space	4
13303	.section	.bss.c_ftl_nand_max_vendor_blks,"aw",%nobits
13304	.align	1
13305	.set	.LANCHOR26,. + 0
13306	.type	c_ftl_nand_max_vendor_blks, %object
13307	.size	c_ftl_nand_max_vendor_blks, 2
13308c_ftl_nand_max_vendor_blks:
13309	.space	2
13310	.section	.bss.c_ftl_nand_page_pre_blk,"aw",%nobits
13311	.align	1
13312	.set	.LANCHOR18,. + 0
13313	.type	c_ftl_nand_page_pre_blk, %object
13314	.size	c_ftl_nand_page_pre_blk, 2
13315c_ftl_nand_page_pre_blk:
13316	.space	2
13317	.section	.bss.c_ftl_nand_page_pre_slc_blk,"aw",%nobits
13318	.align	1
13319	.set	.LANCHOR19,. + 0
13320	.type	c_ftl_nand_page_pre_slc_blk, %object
13321	.size	c_ftl_nand_page_pre_slc_blk, 2
13322c_ftl_nand_page_pre_slc_blk:
13323	.space	2
13324	.section	.bss.c_ftl_nand_page_pre_super_blk,"aw",%nobits
13325	.align	1
13326	.set	.LANCHOR20,. + 0
13327	.type	c_ftl_nand_page_pre_super_blk, %object
13328	.size	c_ftl_nand_page_pre_super_blk, 2
13329c_ftl_nand_page_pre_super_blk:
13330	.space	2
13331	.section	.bss.c_ftl_nand_planes_num,"aw",%nobits
13332	.align	1
13333	.set	.LANCHOR2,. + 0
13334	.type	c_ftl_nand_planes_num, %object
13335	.size	c_ftl_nand_planes_num, 2
13336c_ftl_nand_planes_num:
13337	.space	2
13338	.section	.bss.c_ftl_nand_planes_per_die,"aw",%nobits
13339	.align	1
13340	.set	.LANCHOR10,. + 0
13341	.type	c_ftl_nand_planes_per_die, %object
13342	.size	c_ftl_nand_planes_per_die, 2
13343c_ftl_nand_planes_per_die:
13344	.space	2
13345	.section	.bss.c_ftl_nand_reserved_blks,"aw",%nobits
13346	.align	1
13347	.set	.LANCHOR24,. + 0
13348	.type	c_ftl_nand_reserved_blks, %object
13349	.size	c_ftl_nand_reserved_blks, 2
13350c_ftl_nand_reserved_blks:
13351	.space	2
13352	.section	.bss.c_ftl_nand_sec_pre_page,"aw",%nobits
13353	.align	1
13354	.set	.LANCHOR11,. + 0
13355	.type	c_ftl_nand_sec_pre_page, %object
13356	.size	c_ftl_nand_sec_pre_page, 2
13357c_ftl_nand_sec_pre_page:
13358	.space	2
13359	.section	.bss.c_ftl_nand_sec_pre_page_shift,"aw",%nobits
13360	.align	1
13361	.set	.LANCHOR21,. + 0
13362	.type	c_ftl_nand_sec_pre_page_shift, %object
13363	.size	c_ftl_nand_sec_pre_page_shift, 2
13364c_ftl_nand_sec_pre_page_shift:
13365	.space	2
13366	.section	.bss.c_ftl_nand_sys_blks_per_plane,"aw",%nobits
13367	.align	2
13368	.set	.LANCHOR1,. + 0
13369	.type	c_ftl_nand_sys_blks_per_plane, %object
13370	.size	c_ftl_nand_sys_blks_per_plane, 4
13371c_ftl_nand_sys_blks_per_plane:
13372	.space	4
13373	.section	.bss.c_ftl_nand_totle_phy_blks,"aw",%nobits
13374	.align	2
13375	.set	.LANCHOR7,. + 0
13376	.type	c_ftl_nand_totle_phy_blks, %object
13377	.size	c_ftl_nand_totle_phy_blks, 4
13378c_ftl_nand_totle_phy_blks:
13379	.space	4
13380	.section	.bss.c_ftl_nand_type,"aw",%nobits
13381	.align	1
13382	.set	.LANCHOR8,. + 0
13383	.type	c_ftl_nand_type, %object
13384	.size	c_ftl_nand_type, 2
13385c_ftl_nand_type:
13386	.space	2
13387	.section	.bss.c_ftl_nand_vendor_region_num,"aw",%nobits
13388	.align	1
13389	.set	.LANCHOR27,. + 0
13390	.type	c_ftl_nand_vendor_region_num, %object
13391	.size	c_ftl_nand_vendor_region_num, 2
13392c_ftl_nand_vendor_region_num:
13393	.space	2
13394	.section	.bss.c_ftl_vendor_part_size,"aw",%nobits
13395	.align	1
13396	.set	.LANCHOR15,. + 0
13397	.type	c_ftl_vendor_part_size, %object
13398	.size	c_ftl_vendor_part_size, 2
13399c_ftl_vendor_part_size:
13400	.space	2
13401	.section	.bss.c_gc_page_buf_num,"aw",%nobits
13402	.align	2
13403	.set	.LANCHOR66,. + 0
13404	.type	c_gc_page_buf_num, %object
13405	.size	c_gc_page_buf_num, 4
13406c_gc_page_buf_num:
13407	.space	4
13408	.section	.bss.c_mlc_erase_count_value,"aw",%nobits
13409	.align	1
13410	.set	.LANCHOR13,. + 0
13411	.type	c_mlc_erase_count_value, %object
13412	.size	c_mlc_erase_count_value, 2
13413c_mlc_erase_count_value:
13414	.space	2
13415	.section	.bss.check_vpc_table,"aw",%nobits
13416	.align	1
13417	.type	check_vpc_table, %object
13418	.size	check_vpc_table, 16384
13419check_vpc_table:
13420	.space	16384
13421	.section	.bss.ftl_gc_temp_power_lost_recovery_flag,"aw",%nobits
13422	.align	2
13423	.set	.LANCHOR132,. + 0
13424	.type	ftl_gc_temp_power_lost_recovery_flag, %object
13425	.size	ftl_gc_temp_power_lost_recovery_flag, 4
13426ftl_gc_temp_power_lost_recovery_flag:
13427	.space	4
13428	.section	.bss.gBbtInfo,"aw",%nobits
13429	.align	2
13430	.set	.LANCHOR36,. + 0
13431	.type	gBbtInfo, %object
13432	.size	gBbtInfo, 60
13433gBbtInfo:
13434	.space	60
13435	.section	.bss.gL2pMapInfo,"aw",%nobits
13436	.align	2
13437	.set	.LANCHOR128,. + 0
13438	.type	gL2pMapInfo, %object
13439	.size	gL2pMapInfo, 44
13440gL2pMapInfo:
13441	.space	44
13442	.section	.bss.gSysFreeQueue,"aw",%nobits
13443	.align	1
13444	.set	.LANCHOR37,. + 0
13445	.type	gSysFreeQueue, %object
13446	.size	gSysFreeQueue, 2056
13447gSysFreeQueue:
13448	.space	2056
13449	.section	.bss.gSysInfo,"aw",%nobits
13450	.align	2
13451	.set	.LANCHOR138,. + 0
13452	.type	gSysInfo, %object
13453	.size	gSysInfo, 16
13454gSysInfo:
13455	.space	16
13456	.section	.bss.gVendorBlkInfo,"aw",%nobits
13457	.align	2
13458	.set	.LANCHOR160,. + 0
13459	.type	gVendorBlkInfo, %object
13460	.size	gVendorBlkInfo, 44
13461gVendorBlkInfo:
13462	.space	44
13463	.section	.bss.g_GlobalDataVersion,"aw",%nobits
13464	.align	2
13465	.set	.LANCHOR82,. + 0
13466	.type	g_GlobalDataVersion, %object
13467	.size	g_GlobalDataVersion, 4
13468g_GlobalDataVersion:
13469	.space	4
13470	.section	.bss.g_GlobalSysVersion,"aw",%nobits
13471	.align	2
13472	.set	.LANCHOR81,. + 0
13473	.type	g_GlobalSysVersion, %object
13474	.size	g_GlobalSysVersion, 4
13475g_GlobalSysVersion:
13476	.space	4
13477	.section	.bss.g_MaxLbaSector,"aw",%nobits
13478	.align	2
13479	.set	.LANCHOR33,. + 0
13480	.type	g_MaxLbaSector, %object
13481	.size	g_MaxLbaSector, 4
13482g_MaxLbaSector:
13483	.space	4
13484	.section	.bss.g_MaxLbn,"aw",%nobits
13485	.align	2
13486	.set	.LANCHOR178,. + 0
13487	.type	g_MaxLbn, %object
13488	.size	g_MaxLbn, 4
13489g_MaxLbn:
13490	.space	4
13491	.section	.bss.g_MaxLpn,"aw",%nobits
13492	.align	2
13493	.set	.LANCHOR151,. + 0
13494	.type	g_MaxLpn, %object
13495	.size	g_MaxLpn, 4
13496g_MaxLpn:
13497	.space	4
13498	.section	.bss.g_VaildLpn,"aw",%nobits
13499	.align	2
13500	.set	.LANCHOR58,. + 0
13501	.type	g_VaildLpn, %object
13502	.size	g_VaildLpn, 4
13503g_VaildLpn:
13504	.space	4
13505	.section	.bss.g_active_superblock,"aw",%nobits
13506	.align	2
13507	.set	.LANCHOR50,. + 0
13508	.type	g_active_superblock, %object
13509	.size	g_active_superblock, 48
13510g_active_superblock:
13511	.space	48
13512	.section	.bss.g_buffer_superblock,"aw",%nobits
13513	.align	2
13514	.set	.LANCHOR51,. + 0
13515	.type	g_buffer_superblock, %object
13516	.size	g_buffer_superblock, 48
13517g_buffer_superblock:
13518	.space	48
13519	.section	.bss.g_cur_erase_blk,"aw",%nobits
13520	.align	2
13521	.set	.LANCHOR98,. + 0
13522	.type	g_cur_erase_blk, %object
13523	.size	g_cur_erase_blk, 4
13524g_cur_erase_blk:
13525	.space	4
13526	.section	.bss.g_ect_tbl_info_size,"aw",%nobits
13527	.align	1
13528	.set	.LANCHOR115,. + 0
13529	.type	g_ect_tbl_info_size, %object
13530	.size	g_ect_tbl_info_size, 2
13531g_ect_tbl_info_size:
13532	.space	2
13533	.section	.bss.g_ect_tbl_power_up_flush,"aw",%nobits
13534	.align	1
13535	.set	.LANCHOR163,. + 0
13536	.type	g_ect_tbl_power_up_flush, %object
13537	.size	g_ect_tbl_power_up_flush, 2
13538g_ect_tbl_power_up_flush:
13539	.space	2
13540	.section	.bss.g_ftl_nand_free_count,"aw",%nobits
13541	.align	2
13542	.set	.LANCHOR175,. + 0
13543	.type	g_ftl_nand_free_count, %object
13544	.size	g_ftl_nand_free_count, 4
13545g_ftl_nand_free_count:
13546	.space	4
13547	.section	.bss.g_gc_bad_block_gc_index,"aw",%nobits
13548	.align	1
13549	.set	.LANCHOR75,. + 0
13550	.type	g_gc_bad_block_gc_index, %object
13551	.size	g_gc_bad_block_gc_index, 2
13552g_gc_bad_block_gc_index:
13553	.space	2
13554	.section	.bss.g_gc_bad_block_temp_num,"aw",%nobits
13555	.align	1
13556	.set	.LANCHOR73,. + 0
13557	.type	g_gc_bad_block_temp_num, %object
13558	.size	g_gc_bad_block_temp_num, 2
13559g_gc_bad_block_temp_num:
13560	.space	2
13561	.section	.bss.g_gc_bad_block_temp_tbl,"aw",%nobits
13562	.align	1
13563	.set	.LANCHOR74,. + 0
13564	.type	g_gc_bad_block_temp_tbl, %object
13565	.size	g_gc_bad_block_temp_tbl, 34
13566g_gc_bad_block_temp_tbl:
13567	.space	34
13568	.section	.bss.g_gc_blk_index,"aw",%nobits
13569	.align	1
13570	.set	.LANCHOR101,. + 0
13571	.type	g_gc_blk_index, %object
13572	.size	g_gc_blk_index, 2
13573g_gc_blk_index:
13574	.space	2
13575	.section	.bss.g_gc_blk_num,"aw",%nobits
13576	.align	1
13577	.set	.LANCHOR68,. + 0
13578	.type	g_gc_blk_num, %object
13579	.size	g_gc_blk_num, 2
13580g_gc_blk_num:
13581	.space	2
13582	.section	.bss.g_gc_cur_blk_max_valid_pages,"aw",%nobits
13583	.align	1
13584	.set	.LANCHOR173,. + 0
13585	.type	g_gc_cur_blk_max_valid_pages, %object
13586	.size	g_gc_cur_blk_max_valid_pages, 2
13587g_gc_cur_blk_max_valid_pages:
13588	.space	2
13589	.section	.bss.g_gc_cur_blk_valid_pages,"aw",%nobits
13590	.align	1
13591	.set	.LANCHOR172,. + 0
13592	.type	g_gc_cur_blk_valid_pages, %object
13593	.size	g_gc_cur_blk_valid_pages, 2
13594g_gc_cur_blk_valid_pages:
13595	.space	2
13596	.section	.bss.g_gc_free_blk_threshold,"aw",%nobits
13597	.align	1
13598	.set	.LANCHOR99,. + 0
13599	.type	g_gc_free_blk_threshold, %object
13600	.size	g_gc_free_blk_threshold, 2
13601g_gc_free_blk_threshold:
13602	.space	2
13603	.section	.bss.g_gc_head_data_block,"aw",%nobits
13604	.align	2
13605	.set	.LANCHOR95,. + 0
13606	.type	g_gc_head_data_block, %object
13607	.size	g_gc_head_data_block, 4
13608g_gc_head_data_block:
13609	.space	4
13610	.section	.bss.g_gc_head_data_block_count,"aw",%nobits
13611	.align	2
13612	.set	.LANCHOR96,. + 0
13613	.type	g_gc_head_data_block_count, %object
13614	.size	g_gc_head_data_block_count, 4
13615g_gc_head_data_block_count:
13616	.space	4
13617	.section	.bss.g_gc_merge_free_blk_threshold,"aw",%nobits
13618	.align	1
13619	.set	.LANCHOR100,. + 0
13620	.type	g_gc_merge_free_blk_threshold, %object
13621	.size	g_gc_merge_free_blk_threshold, 2
13622g_gc_merge_free_blk_threshold:
13623	.space	2
13624	.section	.bss.g_gc_next_blk,"aw",%nobits
13625	.align	1
13626	.set	.LANCHOR71,. + 0
13627	.type	g_gc_next_blk, %object
13628	.size	g_gc_next_blk, 2
13629g_gc_next_blk:
13630	.space	2
13631	.section	.bss.g_gc_next_blk_1,"aw",%nobits
13632	.align	1
13633	.set	.LANCHOR72,. + 0
13634	.type	g_gc_next_blk_1, %object
13635	.size	g_gc_next_blk_1, 2
13636g_gc_next_blk_1:
13637	.space	2
13638	.section	.bss.g_gc_num_req,"aw",%nobits
13639	.align	2
13640	.set	.LANCHOR61,. + 0
13641	.type	g_gc_num_req, %object
13642	.size	g_gc_num_req, 4
13643g_gc_num_req:
13644	.space	4
13645	.section	.bss.g_gc_page_offset,"aw",%nobits
13646	.align	1
13647	.set	.LANCHOR69,. + 0
13648	.type	g_gc_page_offset, %object
13649	.size	g_gc_page_offset, 2
13650g_gc_page_offset:
13651	.space	2
13652	.section	.bss.g_gc_skip_write_count,"aw",%nobits
13653	.align	2
13654	.set	.LANCHOR97,. + 0
13655	.type	g_gc_skip_write_count, %object
13656	.size	g_gc_skip_write_count, 4
13657g_gc_skip_write_count:
13658	.space	4
13659	.section	.bss.g_gc_superblock,"aw",%nobits
13660	.align	2
13661	.set	.LANCHOR144,. + 0
13662	.type	g_gc_superblock, %object
13663	.size	g_gc_superblock, 48
13664g_gc_superblock:
13665	.space	48
13666	.section	.bss.g_gc_temp_superblock,"aw",%nobits
13667	.align	2
13668	.set	.LANCHOR52,. + 0
13669	.type	g_gc_temp_superblock, %object
13670	.size	g_gc_temp_superblock, 48
13671g_gc_temp_superblock:
13672	.space	48
13673	.section	.bss.g_in_gc_progress,"aw",%nobits
13674	.align	2
13675	.set	.LANCHOR93,. + 0
13676	.type	g_in_gc_progress, %object
13677	.size	g_in_gc_progress, 4
13678g_in_gc_progress:
13679	.space	4
13680	.section	.bss.g_in_swl_replace,"aw",%nobits
13681	.align	2
13682	.set	.LANCHOR94,. + 0
13683	.type	g_in_swl_replace, %object
13684	.size	g_in_swl_replace, 4
13685g_in_swl_replace:
13686	.space	4
13687	.section	.bss.g_l2p_last_update_region_id,"aw",%nobits
13688	.align	1
13689	.set	.LANCHOR55,. + 0
13690	.type	g_l2p_last_update_region_id, %object
13691	.size	g_l2p_last_update_region_id, 2
13692g_l2p_last_update_region_id:
13693	.space	2
13694	.section	.bss.g_max_erase_count,"aw",%nobits
13695	.align	2
13696	.set	.LANCHOR91,. + 0
13697	.type	g_max_erase_count, %object
13698	.size	g_max_erase_count, 4
13699g_max_erase_count:
13700	.space	4
13701	.section	.bss.g_min_erase_count,"aw",%nobits
13702	.align	2
13703	.set	.LANCHOR92,. + 0
13704	.type	g_min_erase_count, %object
13705	.size	g_min_erase_count, 4
13706g_min_erase_count:
13707	.space	4
13708	.section	.bss.g_nand_ops,"aw",%nobits
13709	.align	2
13710	.set	.LANCHOR77,. + 0
13711	.type	g_nand_ops, %object
13712	.size	g_nand_ops, 24
13713g_nand_ops:
13714	.space	24
13715	.section	.bss.g_nand_phy_info,"aw",%nobits
13716	.align	1
13717	.set	.LANCHOR0,. + 0
13718	.type	g_nand_phy_info, %object
13719	.size	g_nand_phy_info, 24
13720g_nand_phy_info:
13721	.space	24
13722	.section	.bss.g_num_data_superblocks,"aw",%nobits
13723	.align	1
13724	.set	.LANCHOR43,. + 0
13725	.type	g_num_data_superblocks, %object
13726	.size	g_num_data_superblocks, 2
13727g_num_data_superblocks:
13728	.space	2
13729	.section	.bss.g_num_free_superblocks,"aw",%nobits
13730	.align	1
13731	.set	.LANCHOR47,. + 0
13732	.type	g_num_free_superblocks, %object
13733	.size	g_num_free_superblocks, 2
13734g_num_free_superblocks:
13735	.space	2
13736	.section	.bss.g_power_lost_recovery_flag,"aw",%nobits
13737	.align	1
13738	.set	.LANCHOR155,. + 0
13739	.type	g_power_lost_recovery_flag, %object
13740	.size	g_power_lost_recovery_flag, 2
13741g_power_lost_recovery_flag:
13742	.space	2
13743	.section	.bss.g_recovery_page_min_ver,"aw",%nobits
13744	.align	2
13745	.set	.LANCHOR133,. + 0
13746	.type	g_recovery_page_min_ver, %object
13747	.size	g_recovery_page_min_ver, 4
13748g_recovery_page_min_ver:
13749	.space	4
13750	.section	.bss.g_recovery_page_num,"aw",%nobits
13751	.align	2
13752	.set	.LANCHOR156,. + 0
13753	.type	g_recovery_page_num, %object
13754	.size	g_recovery_page_num, 4
13755g_recovery_page_num:
13756	.space	4
13757	.section	.bss.g_recovery_ppa_tbl,"aw",%nobits
13758	.align	2
13759	.set	.LANCHOR157,. + 0
13760	.type	g_recovery_ppa_tbl, %object
13761	.size	g_recovery_ppa_tbl, 128
13762g_recovery_ppa_tbl:
13763	.space	128
13764	.section	.bss.g_sys_ext_data,"aw",%nobits
13765	.align	2
13766	.set	.LANCHOR134,. + 0
13767	.type	g_sys_ext_data, %object
13768	.size	g_sys_ext_data, 512
13769g_sys_ext_data:
13770	.space	512
13771	.section	.bss.g_sys_save_data,"aw",%nobits
13772	.align	2
13773	.set	.LANCHOR38,. + 0
13774	.type	g_sys_save_data, %object
13775	.size	g_sys_save_data, 48
13776g_sys_save_data:
13777	.space	48
13778	.section	.bss.g_tmp_data_superblock_id,"aw",%nobits
13779	.align	1
13780	.set	.LANCHOR130,. + 0
13781	.type	g_tmp_data_superblock_id, %object
13782	.size	g_tmp_data_superblock_id, 2
13783g_tmp_data_superblock_id:
13784	.space	2
13785	.section	.bss.g_totle_avg_erase_count,"aw",%nobits
13786	.align	2
13787	.set	.LANCHOR142,. + 0
13788	.type	g_totle_avg_erase_count, %object
13789	.size	g_totle_avg_erase_count, 4
13790g_totle_avg_erase_count:
13791	.space	4
13792	.section	.bss.g_totle_cache_write_count,"aw",%nobits
13793	.align	2
13794	.set	.LANCHOR86,. + 0
13795	.type	g_totle_cache_write_count, %object
13796	.size	g_totle_cache_write_count, 4
13797g_totle_cache_write_count:
13798	.space	4
13799	.section	.bss.g_totle_discard_page_count,"aw",%nobits
13800	.align	2
13801	.set	.LANCHOR85,. + 0
13802	.type	g_totle_discard_page_count, %object
13803	.size	g_totle_discard_page_count, 4
13804g_totle_discard_page_count:
13805	.space	4
13806	.section	.bss.g_totle_gc_page_count,"aw",%nobits
13807	.align	2
13808	.set	.LANCHOR83,. + 0
13809	.type	g_totle_gc_page_count, %object
13810	.size	g_totle_gc_page_count, 4
13811g_totle_gc_page_count:
13812	.space	4
13813	.section	.bss.g_totle_l2p_write_count,"aw",%nobits
13814	.align	2
13815	.set	.LANCHOR87,. + 0
13816	.type	g_totle_l2p_write_count, %object
13817	.size	g_totle_l2p_write_count, 4
13818g_totle_l2p_write_count:
13819	.space	4
13820	.section	.bss.g_totle_map_block,"aw",%nobits
13821	.align	1
13822	.set	.LANCHOR129,. + 0
13823	.type	g_totle_map_block, %object
13824	.size	g_totle_map_block, 2
13825g_totle_map_block:
13826	.space	2
13827	.section	.bss.g_totle_mlc_erase_count,"aw",%nobits
13828	.align	2
13829	.set	.LANCHOR89,. + 0
13830	.type	g_totle_mlc_erase_count, %object
13831	.size	g_totle_mlc_erase_count, 4
13832g_totle_mlc_erase_count:
13833	.space	4
13834	.section	.bss.g_totle_read_page_count,"aw",%nobits
13835	.align	2
13836	.set	.LANCHOR88,. + 0
13837	.type	g_totle_read_page_count, %object
13838	.size	g_totle_read_page_count, 4
13839g_totle_read_page_count:
13840	.space	4
13841	.section	.bss.g_totle_read_sector,"aw",%nobits
13842	.align	2
13843	.set	.LANCHOR162,. + 0
13844	.type	g_totle_read_sector, %object
13845	.size	g_totle_read_sector, 4
13846g_totle_read_sector:
13847	.space	4
13848	.section	.bss.g_totle_slc_erase_count,"aw",%nobits
13849	.align	2
13850	.set	.LANCHOR90,. + 0
13851	.type	g_totle_slc_erase_count, %object
13852	.size	g_totle_slc_erase_count, 4
13853g_totle_slc_erase_count:
13854	.space	4
13855	.section	.bss.g_totle_swl_count,"aw",%nobits
13856	.align	2
13857	.set	.LANCHOR131,. + 0
13858	.type	g_totle_swl_count, %object
13859	.size	g_totle_swl_count, 4
13860g_totle_swl_count:
13861	.space	4
13862	.section	.bss.g_totle_sys_slc_erase_count,"aw",%nobits
13863	.align	2
13864	.set	.LANCHOR79,. + 0
13865	.type	g_totle_sys_slc_erase_count, %object
13866	.size	g_totle_sys_slc_erase_count, 4
13867g_totle_sys_slc_erase_count:
13868	.space	4
13869	.section	.bss.g_totle_vendor_block,"aw",%nobits
13870	.align	1
13871	.set	.LANCHOR34,. + 0
13872	.type	g_totle_vendor_block, %object
13873	.size	g_totle_vendor_block, 2
13874g_totle_vendor_block:
13875	.space	2
13876	.section	.bss.g_totle_write_page_count,"aw",%nobits
13877	.align	2
13878	.set	.LANCHOR84,. + 0
13879	.type	g_totle_write_page_count, %object
13880	.size	g_totle_write_page_count, 4
13881g_totle_write_page_count:
13882	.space	4
13883	.section	.bss.g_totle_write_sector,"aw",%nobits
13884	.align	2
13885	.set	.LANCHOR161,. + 0
13886	.type	g_totle_write_sector, %object
13887	.size	g_totle_write_sector, 4
13888g_totle_write_sector:
13889	.space	4
13890	.section	.bss.gc_discard_updated,"aw",%nobits
13891	.align	2
13892	.set	.LANCHOR166,. + 0
13893	.type	gc_discard_updated, %object
13894	.size	gc_discard_updated, 4
13895gc_discard_updated:
13896	.space	4
13897	.section	.bss.gc_ink_free_return_value,"aw",%nobits
13898	.align	1
13899	.set	.LANCHOR171,. + 0
13900	.type	gc_ink_free_return_value, %object
13901	.size	gc_ink_free_return_value, 2
13902gc_ink_free_return_value:
13903	.space	2
13904	.section	.bss.gp_ect_tbl_info,"aw",%nobits
13905	.align	2
13906	.set	.LANCHOR117,. + 0
13907	.type	gp_ect_tbl_info, %object
13908	.size	gp_ect_tbl_info, 4
13909gp_ect_tbl_info:
13910	.space	4
13911	.section	.bss.gp_flash_check_buf,"aw",%nobits
13912	.align	2
13913	.set	.LANCHOR183,. + 0
13914	.type	gp_flash_check_buf, %object
13915	.size	gp_flash_check_buf, 4
13916gp_flash_check_buf:
13917	.space	4
13918	.section	.bss.gp_gc_page_buf_info,"aw",%nobits
13919	.align	2
13920	.set	.LANCHOR62,. + 0
13921	.type	gp_gc_page_buf_info, %object
13922	.size	gp_gc_page_buf_info, 4
13923gp_gc_page_buf_info:
13924	.space	4
13925	.section	.bss.gp_last_act_superblock,"aw",%nobits
13926	.align	2
13927	.type	gp_last_act_superblock, %object
13928	.size	gp_last_act_superblock, 4
13929gp_last_act_superblock:
13930	.space	4
13931	.section	.bss.idb_buf,"aw",%nobits
13932	.align	2
13933	.set	.LANCHOR182,. + 0
13934	.type	idb_buf, %object
13935	.size	idb_buf, 4
13936idb_buf:
13937	.space	4
13938	.section	.bss.idb_need_write_back,"aw",%nobits
13939	.align	2
13940	.set	.LANCHOR181,. + 0
13941	.type	idb_need_write_back, %object
13942	.size	idb_need_write_back, 4
13943idb_need_write_back:
13944	.space	4
13945	.section	.bss.low_format_en,"aw",%nobits
13946	.align	2
13947	.set	.LANCHOR180,. + 0
13948	.type	low_format_en, %object
13949	.size	low_format_en, 4
13950low_format_en:
13951	.space	4
13952	.section	.bss.p_data_block_list_head,"aw",%nobits
13953	.align	2
13954	.set	.LANCHOR40,. + 0
13955	.type	p_data_block_list_head, %object
13956	.size	p_data_block_list_head, 4
13957p_data_block_list_head:
13958	.space	4
13959	.section	.bss.p_data_block_list_table,"aw",%nobits
13960	.align	2
13961	.set	.LANCHOR39,. + 0
13962	.type	p_data_block_list_table, %object
13963	.size	p_data_block_list_table, 4
13964p_data_block_list_table:
13965	.space	4
13966	.section	.bss.p_data_block_list_tail,"aw",%nobits
13967	.align	2
13968	.set	.LANCHOR42,. + 0
13969	.type	p_data_block_list_tail, %object
13970	.size	p_data_block_list_tail, 4
13971p_data_block_list_tail:
13972	.space	4
13973	.section	.bss.p_erase_count_table,"aw",%nobits
13974	.align	2
13975	.set	.LANCHOR46,. + 0
13976	.type	p_erase_count_table, %object
13977	.size	p_erase_count_table, 4
13978p_erase_count_table:
13979	.space	4
13980	.section	.bss.p_free_data_block_list_head,"aw",%nobits
13981	.align	2
13982	.set	.LANCHOR45,. + 0
13983	.type	p_free_data_block_list_head, %object
13984	.size	p_free_data_block_list_head, 4
13985p_free_data_block_list_head:
13986	.space	4
13987	.section	.bss.p_gc_blk_tbl,"aw",%nobits
13988	.align	2
13989	.set	.LANCHOR67,. + 0
13990	.type	p_gc_blk_tbl, %object
13991	.size	p_gc_blk_tbl, 4
13992p_gc_blk_tbl:
13993	.space	4
13994	.section	.bss.p_gc_data_buf,"aw",%nobits
13995	.align	2
13996	.set	.LANCHOR63,. + 0
13997	.type	p_gc_data_buf, %object
13998	.size	p_gc_data_buf, 4
13999p_gc_data_buf:
14000	.space	4
14001	.section	.bss.p_gc_page_info,"aw",%nobits
14002	.align	2
14003	.set	.LANCHOR70,. + 0
14004	.type	p_gc_page_info, %object
14005	.size	p_gc_page_info, 4
14006p_gc_page_info:
14007	.space	4
14008	.section	.bss.p_gc_spare_buf,"aw",%nobits
14009	.align	2
14010	.set	.LANCHOR64,. + 0
14011	.type	p_gc_spare_buf, %object
14012	.size	p_gc_spare_buf, 4
14013p_gc_spare_buf:
14014	.space	4
14015	.section	.bss.p_io_data_buf_0,"aw",%nobits
14016	.align	2
14017	.set	.LANCHOR108,. + 0
14018	.type	p_io_data_buf_0, %object
14019	.size	p_io_data_buf_0, 4
14020p_io_data_buf_0:
14021	.space	4
14022	.section	.bss.p_io_data_buf_1,"aw",%nobits
14023	.align	2
14024	.set	.LANCHOR109,. + 0
14025	.type	p_io_data_buf_1, %object
14026	.size	p_io_data_buf_1, 4
14027p_io_data_buf_1:
14028	.space	4
14029	.section	.bss.p_io_spare_buf,"aw",%nobits
14030	.align	2
14031	.set	.LANCHOR114,. + 0
14032	.type	p_io_spare_buf, %object
14033	.size	p_io_spare_buf, 4
14034p_io_spare_buf:
14035	.space	4
14036	.section	.bss.p_l2p_map_buf,"aw",%nobits
14037	.align	2
14038	.set	.LANCHOR125,. + 0
14039	.type	p_l2p_map_buf, %object
14040	.size	p_l2p_map_buf, 4
14041p_l2p_map_buf:
14042	.space	4
14043	.section	.bss.p_l2p_ram_map,"aw",%nobits
14044	.align	2
14045	.set	.LANCHOR54,. + 0
14046	.type	p_l2p_ram_map, %object
14047	.size	p_l2p_ram_map, 4
14048p_l2p_ram_map:
14049	.space	4
14050	.section	.bss.p_map_block_table,"aw",%nobits
14051	.align	2
14052	.set	.LANCHOR118,. + 0
14053	.type	p_map_block_table, %object
14054	.size	p_map_block_table, 4
14055p_map_block_table:
14056	.space	4
14057	.section	.bss.p_map_block_valid_page_count,"aw",%nobits
14058	.align	2
14059	.set	.LANCHOR119,. + 0
14060	.type	p_map_block_valid_page_count, %object
14061	.size	p_map_block_valid_page_count, 4
14062p_map_block_valid_page_count:
14063	.space	4
14064	.section	.bss.p_map_block_ver_table,"aw",%nobits
14065	.align	2
14066	.set	.LANCHOR124,. + 0
14067	.type	p_map_block_ver_table, %object
14068	.size	p_map_block_ver_table, 4
14069p_map_block_ver_table:
14070	.space	4
14071	.section	.bss.p_map_region_ppn_table,"aw",%nobits
14072	.align	2
14073	.set	.LANCHOR123,. + 0
14074	.type	p_map_region_ppn_table, %object
14075	.size	p_map_region_ppn_table, 4
14076p_map_region_ppn_table:
14077	.space	4
14078	.section	.bss.p_plane_order_table,"aw",%nobits
14079	.set	.LANCHOR12,. + 0
14080	.type	p_plane_order_table, %object
14081	.size	p_plane_order_table, 32
14082p_plane_order_table:
14083	.space	32
14084	.section	.bss.p_swl_mul_table,"aw",%nobits
14085	.align	2
14086	.set	.LANCHOR116,. + 0
14087	.type	p_swl_mul_table, %object
14088	.size	p_swl_mul_table, 4
14089p_swl_mul_table:
14090	.space	4
14091	.section	.bss.p_sys_data_buf,"aw",%nobits
14092	.align	2
14093	.set	.LANCHOR105,. + 0
14094	.type	p_sys_data_buf, %object
14095	.size	p_sys_data_buf, 4
14096p_sys_data_buf:
14097	.space	4
14098	.section	.bss.p_sys_data_buf_1,"aw",%nobits
14099	.align	2
14100	.set	.LANCHOR106,. + 0
14101	.type	p_sys_data_buf_1, %object
14102	.size	p_sys_data_buf_1, 4
14103p_sys_data_buf_1:
14104	.space	4
14105	.section	.bss.p_sys_spare_buf,"aw",%nobits
14106	.align	2
14107	.set	.LANCHOR113,. + 0
14108	.type	p_sys_spare_buf, %object
14109	.size	p_sys_spare_buf, 4
14110p_sys_spare_buf:
14111	.space	4
14112	.section	.bss.p_valid_page_count_check_table,"aw",%nobits
14113	.align	2
14114	.type	p_valid_page_count_check_table, %object
14115	.size	p_valid_page_count_check_table, 4
14116p_valid_page_count_check_table:
14117	.space	4
14118	.section	.bss.p_valid_page_count_table,"aw",%nobits
14119	.align	2
14120	.set	.LANCHOR41,. + 0
14121	.type	p_valid_page_count_table, %object
14122	.size	p_valid_page_count_table, 4
14123p_valid_page_count_table:
14124	.space	4
14125	.section	.bss.p_vendor_block_table,"aw",%nobits
14126	.align	2
14127	.set	.LANCHOR35,. + 0
14128	.type	p_vendor_block_table, %object
14129	.size	p_vendor_block_table, 4
14130p_vendor_block_table:
14131	.space	4
14132	.section	.bss.p_vendor_block_valid_page_count,"aw",%nobits
14133	.align	2
14134	.set	.LANCHOR120,. + 0
14135	.type	p_vendor_block_valid_page_count, %object
14136	.size	p_vendor_block_valid_page_count, 4
14137p_vendor_block_valid_page_count:
14138	.space	4
14139	.section	.bss.p_vendor_block_ver_table,"aw",%nobits
14140	.align	2
14141	.set	.LANCHOR121,. + 0
14142	.type	p_vendor_block_ver_table, %object
14143	.size	p_vendor_block_ver_table, 4
14144p_vendor_block_ver_table:
14145	.space	4
14146	.section	.bss.p_vendor_data_buf,"aw",%nobits
14147	.align	2
14148	.set	.LANCHOR107,. + 0
14149	.type	p_vendor_data_buf, %object
14150	.size	p_vendor_data_buf, 4
14151p_vendor_data_buf:
14152	.space	4
14153	.section	.bss.p_vendor_region_ppn_table,"aw",%nobits
14154	.align	2
14155	.set	.LANCHOR122,. + 0
14156	.type	p_vendor_region_ppn_table, %object
14157	.size	p_vendor_region_ppn_table, 4
14158p_vendor_region_ppn_table:
14159	.space	4
14160	.section	.bss.req_erase,"aw",%nobits
14161	.align	2
14162	.set	.LANCHOR78,. + 0
14163	.type	req_erase, %object
14164	.size	req_erase, 4
14165req_erase:
14166	.space	4
14167	.section	.bss.req_gc,"aw",%nobits
14168	.align	2
14169	.set	.LANCHOR65,. + 0
14170	.type	req_gc, %object
14171	.size	req_gc, 4
14172req_gc:
14173	.space	4
14174	.section	.bss.req_gc_dst,"aw",%nobits
14175	.align	2
14176	.set	.LANCHOR103,. + 0
14177	.type	req_gc_dst, %object
14178	.size	req_gc_dst, 4
14179req_gc_dst:
14180	.space	4
14181	.section	.bss.req_prgm,"aw",%nobits
14182	.align	2
14183	.set	.LANCHOR104,. + 0
14184	.type	req_prgm, %object
14185	.size	req_prgm, 4
14186req_prgm:
14187	.space	4
14188	.section	.bss.req_read,"aw",%nobits
14189	.align	2
14190	.set	.LANCHOR102,. + 0
14191	.type	req_read, %object
14192	.size	req_read, 4
14193req_read:
14194	.space	4
14195	.section	.bss.req_sys,"aw",%nobits
14196	.align	2
14197	.set	.LANCHOR137,. + 0
14198	.type	req_sys, %object
14199	.size	req_sys, 20
14200req_sys:
14201	.space	20
14202	.section	.bss.sftl_nand_check_buf,"aw",%nobits
14203	.align	2
14204	.set	.LANCHOR110,. + 0
14205	.type	sftl_nand_check_buf, %object
14206	.size	sftl_nand_check_buf, 4
14207sftl_nand_check_buf:
14208	.space	4
14209	.section	.bss.sftl_nand_check_spare_buf,"aw",%nobits
14210	.align	2
14211	.set	.LANCHOR112,. + 0
14212	.type	sftl_nand_check_spare_buf, %object
14213	.size	sftl_nand_check_spare_buf, 4
14214sftl_nand_check_spare_buf:
14215	.space	4
14216	.section	.bss.sftl_temp_buf,"aw",%nobits
14217	.align	2
14218	.set	.LANCHOR111,. + 0
14219	.type	sftl_temp_buf, %object
14220	.size	sftl_temp_buf, 4
14221sftl_temp_buf:
14222	.space	4
14223	.section	.data.ftl_gc_temp_block_bops_scan_page_addr,"aw",%progbits
14224	.align	1
14225	.set	.LANCHOR159,. + 0
14226	.type	ftl_gc_temp_block_bops_scan_page_addr, %object
14227	.size	ftl_gc_temp_block_bops_scan_page_addr, 2
14228ftl_gc_temp_block_bops_scan_page_addr:
14229	.short	-1
14230	.section	.data.gFtlInitStatus,"aw",%progbits
14231	.align	2
14232	.set	.LANCHOR165,. + 0
14233	.type	gFtlInitStatus, %object
14234	.size	gFtlInitStatus, 4
14235gFtlInitStatus:
14236	.word	-1
14237	.section	.data.power_up_flag,"aw",%progbits
14238	.align	2
14239	.type	power_up_flag, %object
14240	.size	power_up_flag, 4
14241power_up_flag:
14242	.word	1
14243	.section	.rodata.FlashEraseBlocks.str1.1,"aMS",%progbits,1
14244.LC6:
14245	.ascii	"%s: addr: %x is in id block!!!!!!!!!!\012\000"
14246.LC7:
14247	.ascii	"not free: w: d:\000"
14248.LC8:
14249	.ascii	"not free: w: s:\000"
14250	.section	.rodata.FlashProgPages.str1.1,"aMS",%progbits,1
14251.LC14:
14252	.ascii	"prog read error: = %x\012\000"
14253.LC15:
14254	.ascii	"prog read REFRESH: = %x\012\000"
14255.LC16:
14256	.ascii	"prog read s error: = %x %x %x\012\000"
14257.LC17:
14258	.ascii	"prog read d error: = %x %x %x\012\000"
14259	.section	.rodata.FlashReadPages.str1.1,"aMS",%progbits,1
14260.LC11:
14261	.ascii	"FlashReadPages %x %x error_ecc_bits %d\012\000"
14262.LC12:
14263	.ascii	"data:\000"
14264.LC13:
14265	.ascii	"spare:\000"
14266	.section	.rodata.FtlBbmMapBadBlock.str1.1,"aMS",%progbits,1
14267.LC0:
14268	.ascii	"phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
14269	.ascii	"\000"
14270	.section	.rodata.FtlBbmTblFlush.str1.1,"aMS",%progbits,1
14271.LC18:
14272	.ascii	"FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
14273.LC19:
14274	.ascii	"FtlBbmTblFlush error:%x\012\000"
14275.LC20:
14276	.ascii	"FtlBbmTblFlush error = %x error count = %d\012\000"
14277	.section	.rodata.FtlFreeSysBlkQueueOut.str1.1,"aMS",%progbits,1
14278.LC9:
14279	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d, error\012"
14280	.ascii	"\000"
14281	.section	.rodata.FtlGcScanTempBlk.str1.1,"aMS",%progbits,1
14282.LC35:
14283	.ascii	"FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000"
14284	.section	.rodata.FtlLoadEctTbl.str1.1,"aMS",%progbits,1
14285.LC37:
14286	.ascii	"no ect\000"
14287.LC38:
14288	.ascii	"%s\012\000"
14289	.section	.rodata.FtlLoadSysInfo.str1.1,"aMS",%progbits,1
14290.LC46:
14291	.ascii	"%s hash error this.id =%x page =%x pre_id =%x hash "
14292	.ascii	"=%x hash_r =%x\012\000"
14293	.section	.rodata.FtlMapTblRecovery.str1.1,"aMS",%progbits,1
14294.LC47:
14295	.ascii	"%s last blk_id =%x page =%x hash error hash =%x has"
14296	.ascii	"h_r =%x\012\000"
14297.LC48:
14298	.ascii	"%s scan blk_id =%x page =%x hash error hash =%x has"
14299	.ascii	"h_r =%x\012\000"
14300	.section	.rodata.FtlMapWritePage.str1.1,"aMS",%progbits,1
14301.LC22:
14302	.ascii	"FtlMapWritePage error = %x \012\000"
14303.LC23:
14304	.ascii	"FtlMapWritePage error = %x error count = %d\012\000"
14305	.section	.rodata.FtlProgPages.str1.1,"aMS",%progbits,1
14306.LC40:
14307	.ascii	"FtlProgPages error %x = %d\012\000"
14308.LC41:
14309	.ascii	"Ftlwrite decrement_vpc_count %x = %d\012\000"
14310	.section	.rodata.FtlRecoverySuperblock.str1.1,"aMS",%progbits,1
14311.LC27:
14312	.ascii	"data prev_ppa = %x error...................\012\000"
14313.LC28:
14314	.ascii	"spuer block %x vpn is 0\012 \000"
14315	.section	.rodata.FtlVendorPartRead.str1.1,"aMS",%progbits,1
14316.LC36:
14317	.ascii	"FtlVendorPartRead refresh = %x phyAddr = %x\012\000"
14318	.section	.rodata.FtlVpcTblFlush.str1.1,"aMS",%progbits,1
14319.LC39:
14320	.ascii	"FtlVpcTblFlush error = %x error count = %d\012\000"
14321	.section	.rodata.FtlWrite.str1.1,"aMS",%progbits,1
14322.LC44:
14323	.ascii	"FtlWrite: ecc error:%x %x %x\012\000"
14324.LC45:
14325	.ascii	"FtlWrite: lpa error:%x %x\012\000"
14326	.section	.rodata.FtlWriteToIDB.str1.1,"aMS",%progbits,1
14327.LC50:
14328	.ascii	"write_idblock %x %x\012\000"
14329.LC51:
14330	.ascii	"write_idblock fail! %x %x %x %x\012\000"
14331.LC52:
14332	.ascii	"%s idb buffer alloc fail\012\000"
14333	.section	.rodata.INSERT_DATA_LIST.str1.1,"aMS",%progbits,1
14334.LC1:
14335	.ascii	"\012!!!!! error @ func:%s - line:%d\012\000"
14336	.section	.rodata.__func__.10032,"a",%progbits
14337	.set	.LANCHOR169,. + 0
14338	.type	__func__.10032, %object
14339	.size	__func__.10032, 19
14340__func__.10032:
14341	.ascii	"FtlGcFreeTempBlock\000"
14342	.section	.rodata.__func__.10131,"a",%progbits
14343	.set	.LANCHOR174,. + 0
14344	.type	__func__.10131, %object
14345	.size	__func__.10131, 23
14346__func__.10131:
14347	.ascii	"rk_ftl_garbage_collect\000"
14348	.section	.rodata.__func__.10399,"a",%progbits
14349	.set	.LANCHOR136,. + 0
14350	.type	__func__.10399, %object
14351	.size	__func__.10399, 15
14352__func__.10399:
14353	.ascii	"FlashReadPages\000"
14354	.section	.rodata.__func__.10418,"a",%progbits
14355	.set	.LANCHOR141,. + 0
14356	.type	__func__.10418, %object
14357	.size	__func__.10418, 15
14358__func__.10418:
14359	.ascii	"FlashProgPages\000"
14360	.section	.rodata.__func__.10442,"a",%progbits
14361	.set	.LANCHOR76,. + 0
14362	.type	__func__.10442, %object
14363	.size	__func__.10442, 17
14364__func__.10442:
14365	.ascii	"FlashEraseBlocks\000"
14366	.section	.rodata.__func__.10561,"a",%progbits
14367	.set	.LANCHOR184,. + 0
14368	.type	__func__.10561, %object
14369	.size	__func__.10561, 14
14370__func__.10561:
14371	.ascii	"FtlWriteToIDB\000"
14372	.section	.rodata.__func__.9055,"a",%progbits
14373	.set	.LANCHOR168,. + 0
14374	.type	__func__.9055, %object
14375	.size	__func__.9055, 13
14376__func__.9055:
14377	.ascii	"FtlProgPages\000"
14378	.section	.rodata.__func__.9083,"a",%progbits
14379	.set	.LANCHOR176,. + 0
14380	.type	__func__.9083, %object
14381	.size	__func__.9083, 9
14382__func__.9083:
14383	.ascii	"FtlWrite\000"
14384	.section	.rodata.__func__.9165,"a",%progbits
14385	.set	.LANCHOR127,. + 0
14386	.type	__func__.9165, %object
14387	.size	__func__.9165, 14
14388__func__.9165:
14389	.ascii	"FtlBbt2Bitmap\000"
14390	.section	.rodata.__func__.9200,"a",%progbits
14391	.set	.LANCHOR140,. + 0
14392	.type	__func__.9200, %object
14393	.size	__func__.9200, 11
14394__func__.9200:
14395	.ascii	"FtlLoadBbt\000"
14396	.section	.rodata.__func__.9315,"a",%progbits
14397	.set	.LANCHOR48,. + 0
14398	.type	__func__.9315, %object
14399	.size	__func__.9315, 17
14400__func__.9315:
14401	.ascii	"INSERT_FREE_LIST\000"
14402	.section	.rodata.__func__.9320,"a",%progbits
14403	.set	.LANCHOR44,. + 0
14404	.type	__func__.9320, %object
14405	.size	__func__.9320, 17
14406__func__.9320:
14407	.ascii	"INSERT_DATA_LIST\000"
14408	.section	.rodata.__func__.9351,"a",%progbits
14409	.set	.LANCHOR49,. + 0
14410	.type	__func__.9351, %object
14411	.size	__func__.9351, 17
14412__func__.9351:
14413	.ascii	"List_remove_node\000"
14414	.section	.rodata.__func__.9383,"a",%progbits
14415	.set	.LANCHOR53,. + 0
14416	.type	__func__.9383, %object
14417	.size	__func__.9383, 22
14418__func__.9383:
14419	.ascii	"List_update_data_list\000"
14420	.section	.rodata.__func__.9392,"a",%progbits
14421	.set	.LANCHOR149,. + 0
14422	.type	__func__.9392, %object
14423	.size	__func__.9392, 16
14424__func__.9392:
14425	.ascii	"load_l2p_region\000"
14426	.section	.rodata.__func__.9425,"a",%progbits
14427	.set	.LANCHOR80,. + 0
14428	.type	__func__.9425, %object
14429	.size	__func__.9425, 26
14430__func__.9425:
14431	.ascii	"ftl_map_blk_alloc_new_blk\000"
14432	.section	.rodata.__func__.9436,"a",%progbits
14433	.set	.LANCHOR150,. + 0
14434	.type	__func__.9436, %object
14435	.size	__func__.9436, 15
14436__func__.9436:
14437	.ascii	"ftl_map_blk_gc\000"
14438	.section	.rodata.__func__.9451,"a",%progbits
14439	.set	.LANCHOR147,. + 0
14440	.type	__func__.9451, %object
14441	.size	__func__.9451, 31
14442__func__.9451:
14443	.ascii	"Ftl_write_map_blk_to_last_page\000"
14444	.section	.rodata.__func__.9465,"a",%progbits
14445	.set	.LANCHOR148,. + 0
14446	.type	__func__.9465, %object
14447	.size	__func__.9465, 16
14448__func__.9465:
14449	.ascii	"FtlMapWritePage\000"
14450	.section	.rodata.__func__.9490,"a",%progbits
14451	.set	.LANCHOR56,. + 0
14452	.type	__func__.9490, %object
14453	.size	__func__.9490, 22
14454__func__.9490:
14455	.ascii	"select_l2p_ram_region\000"
14456	.section	.rodata.__func__.9507,"a",%progbits
14457	.set	.LANCHOR152,. + 0
14458	.type	__func__.9507, %object
14459	.size	__func__.9507, 9
14460__func__.9507:
14461	.ascii	"log2phys\000"
14462	.section	.rodata.__func__.9571,"a",%progbits
14463	.set	.LANCHOR164,. + 0
14464	.type	__func__.9571, %object
14465	.size	__func__.9571, 15
14466__func__.9571:
14467	.ascii	"FtlVpcTblFlush\000"
14468	.section	.rodata.__func__.9593,"a",%progbits
14469	.set	.LANCHOR139,. + 0
14470	.type	__func__.9593, %object
14471	.size	__func__.9593, 14
14472__func__.9593:
14473	.ascii	"FtlScanSysBlk\000"
14474	.section	.rodata.__func__.9642,"a",%progbits
14475	.set	.LANCHOR177,. + 0
14476	.type	__func__.9642, %object
14477	.size	__func__.9642, 15
14478__func__.9642:
14479	.ascii	"FtlLoadSysInfo\000"
14480	.section	.rodata.__func__.9664,"a",%progbits
14481	.set	.LANCHOR179,. + 0
14482	.type	__func__.9664, %object
14483	.size	__func__.9664, 18
14484__func__.9664:
14485	.ascii	"FtlMapTblRecovery\000"
14486	.section	.rodata.__func__.9710,"a",%progbits
14487	.set	.LANCHOR153,. + 0
14488	.type	__func__.9710, %object
14489	.size	__func__.9710, 16
14490__func__.9710:
14491	.ascii	"FtlReUsePrevPpa\000"
14492	.section	.rodata.__func__.9744,"a",%progbits
14493	.set	.LANCHOR154,. + 0
14494	.type	__func__.9744, %object
14495	.size	__func__.9744, 22
14496__func__.9744:
14497	.ascii	"FtlRecoverySuperblock\000"
14498	.section	.rodata.__func__.9801,"a",%progbits
14499	.set	.LANCHOR59,. + 0
14500	.type	__func__.9801, %object
14501	.size	__func__.9801, 16
14502__func__.9801:
14503	.ascii	"make_superblock\000"
14504	.section	.rodata.__func__.9822,"a",%progbits
14505	.set	.LANCHOR135,. + 0
14506	.type	__func__.9822, %object
14507	.size	__func__.9822, 18
14508__func__.9822:
14509	.ascii	"SupperBlkListInit\000"
14510	.section	.rodata.__func__.9849,"a",%progbits
14511	.set	.LANCHOR158,. + 0
14512	.type	__func__.9849, %object
14513	.size	__func__.9849, 14
14514__func__.9849:
14515	.ascii	"ftl_check_vpc\000"
14516	.section	.rodata.__func__.9914,"a",%progbits
14517	.set	.LANCHOR143,. + 0
14518	.type	__func__.9914, %object
14519	.size	__func__.9914, 25
14520__func__.9914:
14521	.ascii	"allocate_data_superblock\000"
14522	.section	.rodata.__func__.9935,"a",%progbits
14523	.set	.LANCHOR167,. + 0
14524	.type	__func__.9935, %object
14525	.size	__func__.9935, 29
14526__func__.9935:
14527	.ascii	"allocate_new_data_superblock\000"
14528	.section	.rodata.__func__.9942,"a",%progbits
14529	.set	.LANCHOR60,. + 0
14530	.type	__func__.9942, %object
14531	.size	__func__.9942, 19
14532__func__.9942:
14533	.ascii	"get_new_active_ppa\000"
14534	.section	.rodata.__func__.9955,"a",%progbits
14535	.set	.LANCHOR145,. + 0
14536	.type	__func__.9955, %object
14537	.size	__func__.9955, 16
14538__func__.9955:
14539	.ascii	"update_vpc_list\000"
14540	.section	.rodata.__func__.9962,"a",%progbits
14541	.set	.LANCHOR146,. + 0
14542	.type	__func__.9962, %object
14543	.size	__func__.9962, 20
14544__func__.9962:
14545	.ascii	"decrement_vpc_count\000"
14546	.section	.rodata.decrement_vpc_count.str1.1,"aMS",%progbits,1
14547.LC21:
14548	.ascii	"decrement_vpc_count %x = %d\012\000"
14549	.section	.rodata.ftl_check_vpc.str1.1,"aMS",%progbits,1
14550.LC29:
14551	.ascii	"...%s enter...\012\000"
14552.LC30:
14553	.ascii	"FtlCheckVpc2 %x = %x  %x\012\000"
14554.LC31:
14555	.ascii	"free blk vpc error %x = %x  %x\012\000"
14556	.section	.rodata.ftl_map_blk_alloc_new_blk.str1.1,"aMS",%progbits,1
14557.LC10:
14558	.ascii	"FtlFreeSysBlkQueueOut = %x, free count = %d\012\000"
14559	.section	.rodata.ftl_scan_all_data.str1.1,"aMS",%progbits,1
14560.LC32:
14561	.ascii	"ftl_scan_all_data = %x\012\000"
14562.LC33:
14563	.ascii	"scan lpa = %x ppa= %x\012\000"
14564.LC34:
14565	.ascii	"lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
14566	.ascii	"\000"
14567	.section	.rodata.load_l2p_region.str1.1,"aMS",%progbits,1
14568.LC24:
14569	.ascii	"region_id = %x phyAddr = %x\012\000"
14570.LC25:
14571	.ascii	"map_ppn:\000"
14572.LC26:
14573	.ascii	"load_l2p_region refresh = %x phyAddr = %x\012\000"
14574	.section	.rodata.rk_ftl_garbage_collect.str1.1,"aMS",%progbits,1
14575.LC42:
14576	.ascii	"g_gc_superblock_free %x %x %x %x %x\012\000"
14577.LC43:
14578	.ascii	"lpa=%x, ppa=%x\012\000"
14579	.section	.rodata.rknand_print_hex.str1.1,"aMS",%progbits,1
14580.LC2:
14581	.ascii	"%s 0x%x:\000"
14582.LC3:
14583	.ascii	"%x \000"
14584.LC4:
14585	.ascii	"%02x \000"
14586.LC5:
14587	.ascii	"\012\000"
14588	.section	.rodata.sftl_init.str1.1,"aMS",%progbits,1
14589.LC49:
14590	.ascii	"SFTL version: 5.0.56 20210329\000"
14591	.hidden	free
14592