xref: /rk3399_rockchip-uboot/drivers/rkflash/rk_sftl_arm_v8.S (revision b8fa3d2a17dce6006a8a5f46cbc978a19a3fdf82)
1/*
2 * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
3 *
4 * SPDX-License-Identifier:	GPL-2.0
5 * date: 2018-08-02
6 */
7	.arch armv8-a+nosimd
8	.file	"rk_sftl.c"
9	.section	.text.l2p_addr_tran.isra.0,"ax",@progbits
10	.align	2
11	.type	l2p_addr_tran.isra.0, %function
12l2p_addr_tran.isra.0:
13	adrp	x4, .LANCHOR0
14	add	x4, x4, :lo12:.LANCHOR0
15	ldrh	w3, [x4, 8]
16	ldrh	w6, [x4, 10]
17	ldrh	w4, [x4, 14]
18	cmp	w4, 4
19	bne	.L2
20	lsr	w3, w3, 1
21	ubfiz	w6, w6, 1, 15
22.L2:
23	lsr	w5, w0, 10
24	and	w0, w0, 1023
25	and	w4, w5, 65535
26	and	w5, w5, 65535
27	udiv	w4, w4, w3
28	msub	w3, w3, w4, w5
29	madd	w3, w3, w6, w0
30	mov	w0, 0
31	str	w3, [x1]
32	str	w4, [x2]
33	ret
34	.size	l2p_addr_tran.isra.0, .-l2p_addr_tran.isra.0
35	.section	.text.ftl_set_blk_mode.part.6,"ax",@progbits
36	.align	2
37	.type	ftl_set_blk_mode.part.6, %function
38ftl_set_blk_mode.part.6:
39	and	w0, w0, 65535
40	adrp	x2, .LANCHOR1
41	ubfx	x1, x0, 5, 11
42	ldr	x3, [x2, #:lo12:.LANCHOR1]
43	lsl	x1, x1, 2
44	mov	w2, 1
45	lsl	w2, w2, w0
46	ldr	w0, [x3, x1]
47	orr	w0, w0, w2
48	str	w0, [x3, x1]
49	ret
50	.size	ftl_set_blk_mode.part.6, .-ftl_set_blk_mode.part.6
51	.section	.text.Ftl_log2,"ax",@progbits
52	.align	2
53	.global	Ftl_log2
54	.type	Ftl_log2, %function
55Ftl_log2:
56	mov	w2, 1
57	mov	w1, 0
58.L5:
59	cmp	w2, w0
60	bls	.L6
61	sub	w0, w1, #1
62	ret
63.L6:
64	add	w1, w1, 1
65	lsl	w2, w2, 1
66	and	w1, w1, 65535
67	b	.L5
68	.size	Ftl_log2, .-Ftl_log2
69	.section	.text.FtlPrintInfo,"ax",@progbits
70	.align	2
71	.global	FtlPrintInfo
72	.type	FtlPrintInfo, %function
73FtlPrintInfo:
74	ret
75	.size	FtlPrintInfo, .-FtlPrintInfo
76	.section	.text.FtlSysBlkNumInit,"ax",@progbits
77	.align	2
78	.global	FtlSysBlkNumInit
79	.type	FtlSysBlkNumInit, %function
80FtlSysBlkNumInit:
81	and	w0, w0, 65535
82	mov	w1, 24
83	cmp	w0, 24
84	adrp	x2, .LANCHOR4
85	csel	w0, w0, w1, cs
86	adrp	x1, .LANCHOR2
87	and	w0, w0, 65535
88	str	w0, [x1, #:lo12:.LANCHOR2]
89	adrp	x1, .LANCHOR3
90	ldrh	w1, [x1, #:lo12:.LANCHOR3]
91	mul	w1, w1, w0
92	str	w1, [x2, #:lo12:.LANCHOR4]
93	adrp	x2, .LANCHOR6
94	ldrh	w2, [x2, #:lo12:.LANCHOR6]
95	sub	w0, w2, w0
96	adrp	x2, .LANCHOR5
97	strh	w0, [x2, #:lo12:.LANCHOR5]
98	adrp	x0, .LANCHOR8
99	ldr	w0, [x0, #:lo12:.LANCHOR8]
100	sub	w1, w0, w1
101	adrp	x0, .LANCHOR7
102	str	w1, [x0, #:lo12:.LANCHOR7]
103	mov	w0, 0
104	ret
105	.size	FtlSysBlkNumInit, .-FtlSysBlkNumInit
106	.section	.text.FtlConstantsInit,"ax",@progbits
107	.align	2
108	.global	FtlConstantsInit
109	.type	FtlConstantsInit, %function
110FtlConstantsInit:
111	stp	x29, x30, [sp, -16]!
112	mov	x5, x0
113	adrp	x1, .LANCHOR11
114	add	x29, sp, 0
115	ldrh	w2, [x0]
116	adrp	x0, .LANCHOR9
117	ldrh	w4, [x5, 2]
118	strh	w2, [x0, #:lo12:.LANCHOR9]
119	adrp	x0, .LANCHOR10
120	strh	w4, [x0, #:lo12:.LANCHOR10]
121	ldrh	w0, [x5, 4]
122	strh	w0, [x1, #:lo12:.LANCHOR11]
123	ldrh	w1, [x5, 14]
124	cmp	w1, 4
125	bne	.L10
126	ldrh	w1, [x5, 6]
127	adrp	x3, .LANCHOR6
128	lsr	w1, w1, 1
129	strh	w1, [x3, #:lo12:.LANCHOR6]
130	adrp	x1, .LANCHOR12
131	mov	w3, 8
132	strh	w3, [x1, #:lo12:.LANCHOR12]
133.L10:
134	adrp	x3, .LANCHOR13
135	add	x3, x3, :lo12:.LANCHOR13
136	mov	x1, 0
137.L11:
138	strb	w1, [x1, x3]
139	add	x1, x1, 1
140	cmp	x1, 32
141	bne	.L11
142	adrp	x1, .LANCHOR14
143	mov	w3, 5
144	cmp	w2, 1
145	strh	w3, [x1, #:lo12:.LANCHOR14]
146	adrp	x3, .LANCHOR15
147	strh	wzr, [x3, #:lo12:.LANCHOR15]
148	bne	.L12
149	strh	w2, [x1, #:lo12:.LANCHOR14]
150.L12:
151	adrp	x1, .LANCHOR16
152	mov	w2, 640
153	mul	w4, w4, w0
154	strh	w2, [x1, #:lo12:.LANCHOR16]
155	adrp	x1, .LANCHOR3
156	and	w4, w4, 65535
157	strh	w4, [x1, #:lo12:.LANCHOR3]
158	adrp	x1, .LANCHOR6
159	ldrh	w3, [x1, #:lo12:.LANCHOR6]
160	adrp	x1, .LANCHOR17
161	mul	w0, w0, w3
162	and	w0, w0, 65535
163	strh	w0, [x1, #:lo12:.LANCHOR17]
164	bl	Ftl_log2
165	ldrh	w7, [x5, 12]
166	adrp	x1, .LANCHOR18
167	adrp	x8, .LANCHOR19
168	strh	w0, [x1, #:lo12:.LANCHOR18]
169	adrp	x0, .LANCHOR20
170	mul	w1, w4, w7
171	strh	w7, [x8, #:lo12:.LANCHOR19]
172	strh	w7, [x0, #:lo12:.LANCHOR20]
173	adrp	x0, .LANCHOR21
174	strh	w1, [x0, #:lo12:.LANCHOR21]
175	adrp	x0, .LANCHOR12
176	ldrh	w6, [x0, #:lo12:.LANCHOR12]
177	mov	w0, w6
178	bl	Ftl_log2
179	and	w1, w0, 65535
180	adrp	x2, .LANCHOR22
181	adrp	x10, .LANCHOR23
182	ldrh	w5, [x5, 20]
183	strh	w0, [x2, #:lo12:.LANCHOR22]
184	ubfiz	w0, w6, 9, 7
185	strh	w0, [x10, #:lo12:.LANCHOR23]
186	adrp	x10, .LANCHOR24
187	ubfx	w0, w0, 8, 8
188	strh	w0, [x10, #:lo12:.LANCHOR24]
189	adrp	x0, .LANCHOR25
190	strh	w5, [x0, #:lo12:.LANCHOR25]
191	mul	w0, w4, w3
192	adrp	x5, .LANCHOR8
193	str	w0, [x5, #:lo12:.LANCHOR8]
194	adrp	x5, .LANCHOR26
195	mul	w0, w0, w6
196	mul	w6, w6, w7
197	mul	w0, w0, w7
198	mov	x7, x2
199	asr	w0, w0, 11
200	str	w0, [x5, #:lo12:.LANCHOR26]
201	mov	w0, 5120
202	adrp	x5, .LANCHOR27
203	sdiv	w0, w0, w6
204	and	w0, w0, 65535
205	cmp	w0, 4
206	bls	.L13
207.L19:
208	strh	w0, [x5, #:lo12:.LANCHOR27]
209	adrp	x2, .LANCHOR28
210	mov	w0, 640
211	lsl	w3, w3, 6
212	asr	w0, w0, w1
213	add	w0, w0, 2
214	add	w1, w1, 9
215	strh	w0, [x2, #:lo12:.LANCHOR28]
216	adrp	x0, .LANCHOR29
217	cmp	w4, 1
218	asr	w3, w3, w1
219	adrp	x1, .LANCHOR30
220	strh	w3, [x0, #:lo12:.LANCHOR29]
221	and	w3, w3, 65535
222	adrp	x6, .LANCHOR2
223	mul	w0, w3, w4
224	add	w3, w3, 8
225	str	w0, [x1, #:lo12:.LANCHOR30]
226	ldrh	w0, [x5, #:lo12:.LANCHOR27]
227	udiv	w0, w0, w4
228	mov	x4, x1
229	add	w3, w0, w3
230	beq	.L15
231.L20:
232	str	w3, [x6, #:lo12:.LANCHOR2]
233	ldrh	w0, [x6, #:lo12:.LANCHOR2]
234	bl	FtlSysBlkNumInit
235	ldr	w1, [x6, #:lo12:.LANCHOR2]
236	adrp	x0, .LANCHOR31
237	ldp	x29, x30, [sp], 16
238	str	w1, [x0, #:lo12:.LANCHOR31]
239	adrp	x0, .LANCHOR7
240	ldrh	w1, [x8, #:lo12:.LANCHOR19]
241	ldr	w0, [x0, #:lo12:.LANCHOR7]
242	lsl	w0, w0, 2
243	mul	w0, w0, w1
244	ldrh	w1, [x7, #:lo12:.LANCHOR22]
245	add	w1, w1, 9
246	lsr	w0, w0, w1
247	adrp	x1, .LANCHOR32
248	add	w0, w0, 2
249	strh	w0, [x1, #:lo12:.LANCHOR32]
250	adrp	x0, .LANCHOR33
251	mov	w1, 32
252	strh	w1, [x0, #:lo12:.LANCHOR33]
253	adrp	x0, .LANCHOR34
254	str	wzr, [x0, #:lo12:.LANCHOR34]
255	ldrh	w0, [x5, #:lo12:.LANCHOR27]
256	add	w0, w0, 3
257	strh	w0, [x5, #:lo12:.LANCHOR27]
258	ldr	w0, [x4, #:lo12:.LANCHOR30]
259	add	w0, w0, 3
260	str	w0, [x4, #:lo12:.LANCHOR30]
261	mov	w0, 0
262	ret
263.L13:
264	mov	w0, 4
265	b	.L19
266.L15:
267	add	w3, w3, 4
268	b	.L20
269	.size	FtlConstantsInit, .-FtlConstantsInit
270	.section	.text.IsBlkInVendorPart,"ax",@progbits
271	.align	2
272	.global	IsBlkInVendorPart
273	.type	IsBlkInVendorPart, %function
274IsBlkInVendorPart:
275	adrp	x1, .LANCHOR35
276	and	w0, w0, 65535
277	ldrh	w1, [x1, #:lo12:.LANCHOR35]
278	cbz	w1, .L25
279	adrp	x1, .LANCHOR27
280	ldrh	w2, [x1, #:lo12:.LANCHOR27]
281	adrp	x1, .LANCHOR36
282	ldr	x3, [x1, #:lo12:.LANCHOR36]
283	mov	x1, 0
284.L23:
285	cmp	w2, w1, uxth
286	bhi	.L24
287.L25:
288	mov	w0, 0
289	ret
290.L24:
291	add	x1, x1, 1
292	add	x4, x3, x1, lsl 1
293	ldrh	w4, [x4, -2]
294	cmp	w4, w0
295	bne	.L23
296	mov	w0, 1
297	ret
298	.size	IsBlkInVendorPart, .-IsBlkInVendorPart
299	.section	.text.FtlCacheWriteBack,"ax",@progbits
300	.align	2
301	.global	FtlCacheWriteBack
302	.type	FtlCacheWriteBack, %function
303FtlCacheWriteBack:
304	mov	w0, 0
305	ret
306	.size	FtlCacheWriteBack, .-FtlCacheWriteBack
307	.section	.text.sftl_get_density,"ax",@progbits
308	.align	2
309	.global	sftl_get_density
310	.type	sftl_get_density, %function
311sftl_get_density:
312	adrp	x0, .LANCHOR34
313	ldr	w0, [x0, #:lo12:.LANCHOR34]
314	ret
315	.size	sftl_get_density, .-sftl_get_density
316	.section	.text.FtlBbmMapBadBlock,"ax",@progbits
317	.align	2
318	.global	FtlBbmMapBadBlock
319	.type	FtlBbmMapBadBlock, %function
320FtlBbmMapBadBlock:
321	stp	x29, x30, [sp, -32]!
322	and	w1, w0, 65535
323	adrp	x0, .LANCHOR17
324	mov	w4, 1
325	add	x29, sp, 0
326	ldrh	w0, [x0, #:lo12:.LANCHOR17]
327	str	x19, [sp, 16]
328	adrp	x19, .LANCHOR37
329	add	x19, x19, :lo12:.LANCHOR37
330	udiv	w3, w1, w0
331	and	w2, w3, 65535
332	msub	w3, w3, w0, w1
333	add	x0, x19, x2, uxth 3
334	and	w3, w3, 65535
335	ldr	x0, [x0, 32]
336	ubfx	x5, x3, 5, 11
337	lsl	x5, x5, 2
338	lsl	w4, w4, w3
339	ldr	w6, [x0, x5]
340	orr	w4, w4, w6
341	str	w4, [x0, x5]
342	adrp	x0, .LC0
343	add	x0, x0, :lo12:.LC0
344	bl	printf
345	ldrh	w0, [x19, 6]
346	add	w0, w0, 1
347	strh	w0, [x19, 6]
348	mov	w0, 0
349	ldr	x19, [sp, 16]
350	ldp	x29, x30, [sp], 32
351	ret
352	.size	FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
353	.section	.text.FtlBbmIsBadBlock,"ax",@progbits
354	.align	2
355	.global	FtlBbmIsBadBlock
356	.type	FtlBbmIsBadBlock, %function
357FtlBbmIsBadBlock:
358	adrp	x1, .LANCHOR17
359	and	w0, w0, 65535
360	ldrh	w1, [x1, #:lo12:.LANCHOR17]
361	udiv	w2, w0, w1
362	msub	w0, w2, w1, w0
363	adrp	x1, .LANCHOR37
364	add	x1, x1, :lo12:.LANCHOR37
365	add	x2, x1, x2, uxth 3
366	and	w0, w0, 65535
367	ubfx	x3, x0, 5, 11
368	ldr	x1, [x2, 32]
369	ldr	w1, [x1, x3, lsl 2]
370	lsr	w0, w1, w0
371	and	w0, w0, 1
372	ret
373	.size	FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
374	.section	.text.FtlBbtInfoPrint,"ax",@progbits
375	.align	2
376	.global	FtlBbtInfoPrint
377	.type	FtlBbtInfoPrint, %function
378FtlBbtInfoPrint:
379	ret
380	.size	FtlBbtInfoPrint, .-FtlBbtInfoPrint
381	.section	.text.FtlBbtCalcTotleCnt,"ax",@progbits
382	.align	2
383	.global	FtlBbtCalcTotleCnt
384	.type	FtlBbtCalcTotleCnt, %function
385FtlBbtCalcTotleCnt:
386	adrp	x0, .LANCHOR17
387	mov	w4, 0
388	mov	w5, 0
389	ldrh	w6, [x0, #:lo12:.LANCHOR17]
390	adrp	x0, .LANCHOR10
391	ldrh	w0, [x0, #:lo12:.LANCHOR10]
392	mul	w6, w6, w0
393	cmp	w4, w6
394	blt	.L43
395	mov	w0, w5
396	ret
397.L43:
398	stp	x29, x30, [sp, -16]!
399	add	x29, sp, 0
400.L36:
401	mov	w0, w4
402	bl	FtlBbmIsBadBlock
403	cbz	w0, .L35
404	add	w5, w5, 1
405	and	w5, w5, 65535
406.L35:
407	add	w4, w4, 1
408	and	w4, w4, 65535
409	cmp	w4, w6
410	blt	.L36
411	mov	w0, w5
412	ldp	x29, x30, [sp], 16
413	ret
414	.size	FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
415	.section	.text.V2P_block,"ax",@progbits
416	.align	2
417	.global	V2P_block
418	.type	V2P_block, %function
419V2P_block:
420	adrp	x2, .LANCHOR11
421	and	w0, w0, 65535
422	adrp	x4, .LANCHOR17
423	and	w1, w1, 65535
424	ldrh	w2, [x2, #:lo12:.LANCHOR11]
425	ldrh	w4, [x4, #:lo12:.LANCHOR17]
426	udiv	w3, w0, w2
427	msub	w0, w3, w2, w0
428	madd	w2, w2, w1, w0
429	madd	w0, w3, w4, w2
430	ret
431	.size	V2P_block, .-V2P_block
432	.section	.text.P2V_plane,"ax",@progbits
433	.align	2
434	.global	P2V_plane
435	.type	P2V_plane, %function
436P2V_plane:
437	and	w3, w0, 65535
438	adrp	x0, .LANCHOR11
439	ldrh	w1, [x0, #:lo12:.LANCHOR11]
440	adrp	x0, .LANCHOR17
441	ldrh	w2, [x0, #:lo12:.LANCHOR17]
442	udiv	w0, w3, w1
443	udiv	w2, w3, w2
444	msub	w0, w0, w1, w3
445	madd	w0, w1, w2, w0
446	ret
447	.size	P2V_plane, .-P2V_plane
448	.section	.text.P2V_block_in_plane,"ax",@progbits
449	.align	2
450	.global	P2V_block_in_plane
451	.type	P2V_block_in_plane, %function
452P2V_block_in_plane:
453	and	w2, w0, 65535
454	adrp	x0, .LANCHOR17
455	ldrh	w1, [x0, #:lo12:.LANCHOR17]
456	udiv	w0, w2, w1
457	msub	w0, w0, w1, w2
458	adrp	x1, .LANCHOR11
459	ldrh	w1, [x1, #:lo12:.LANCHOR11]
460	and	w0, w0, 65535
461	udiv	w0, w0, w1
462	ret
463	.size	P2V_block_in_plane, .-P2V_block_in_plane
464	.section	.text.ftl_cmp_data_ver,"ax",@progbits
465	.align	2
466	.global	ftl_cmp_data_ver
467	.type	ftl_cmp_data_ver, %function
468ftl_cmp_data_ver:
469	cmp	w0, w1
470	mov	w2, -2147483648
471	bls	.L48
472	sub	w1, w0, w1
473	cmp	w1, w2
474	cset	w0, ls
475	ret
476.L48:
477	sub	w1, w1, w0
478	cmp	w1, w2
479	cset	w0, hi
480	ret
481	.size	ftl_cmp_data_ver, .-ftl_cmp_data_ver
482	.section	.text.FtlFreeSysBlkQueueEmpty,"ax",@progbits
483	.align	2
484	.global	FtlFreeSysBlkQueueEmpty
485	.type	FtlFreeSysBlkQueueEmpty, %function
486FtlFreeSysBlkQueueEmpty:
487	adrp	x0, .LANCHOR38+6
488	ldrh	w0, [x0, #:lo12:.LANCHOR38+6]
489	cmp	w0, 0
490	cset	w0, eq
491	ret
492	.size	FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
493	.section	.text.FtlFreeSysBlkQueueFull,"ax",@progbits
494	.align	2
495	.global	FtlFreeSysBlkQueueFull
496	.type	FtlFreeSysBlkQueueFull, %function
497FtlFreeSysBlkQueueFull:
498	adrp	x0, .LANCHOR38+6
499	ldrh	w0, [x0, #:lo12:.LANCHOR38+6]
500	cmp	w0, 1024
501	cset	w0, eq
502	ret
503	.size	FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
504	.section	.text.FtlFreeSysBLkSort,"ax",@progbits
505	.align	2
506	.global	FtlFreeSysBLkSort
507	.type	FtlFreeSysBLkSort, %function
508FtlFreeSysBLkSort:
509	adrp	x0, .LANCHOR38
510	add	x1, x0, :lo12:.LANCHOR38
511	ldrh	w2, [x1, 6]
512	cbz	w2, .L52
513	adrp	x2, .LANCHOR39+28
514	ldrh	w3, [x1, 2]
515	mov	w6, 0
516	mov	w4, 0
517	ldrh	w5, [x2, #:lo12:.LANCHOR39+28]
518	ldrh	w2, [x1, 4]
519	and	w5, w5, 31
520.L54:
521	cmp	w5, w4
522	bgt	.L55
523	cbz	w6, .L52
524	add	x0, x0, :lo12:.LANCHOR38
525	strh	w3, [x0, 2]
526	strh	w2, [x0, 4]
527.L52:
528	ret
529.L55:
530	add	x6, x1, x3, sxtw 1
531	add	w4, w4, 1
532	add	w3, w3, 1
533	and	w4, w4, 65535
534	and	w3, w3, 1023
535	ldrh	w7, [x6, 8]
536	add	x6, x1, x2, sxtw 1
537	strh	w7, [x6, 8]
538	mov	w6, 1
539	add	w2, w2, w6
540	and	w2, w2, 1023
541	b	.L54
542	.size	FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
543	.section	.text.IsInFreeQueue,"ax",@progbits
544	.align	2
545	.global	IsInFreeQueue
546	.type	IsInFreeQueue, %function
547IsInFreeQueue:
548	adrp	x1, .LANCHOR38
549	add	x1, x1, :lo12:.LANCHOR38
550	and	w0, w0, 65535
551	ldrh	w4, [x1, 6]
552	cmp	w4, 1024
553	beq	.L65
554	ldrh	w5, [x1, 2]
555	mov	w3, 0
556.L63:
557	cmp	w3, w4
558	bcc	.L64
559.L65:
560	mov	w0, 0
561	ret
562.L64:
563	add	w2, w3, w5
564	ubfiz	x2, x2, 1, 10
565	add	x2, x1, x2
566	ldrh	w2, [x2, 8]
567	cmp	w2, w0
568	beq	.L66
569	add	w3, w3, 1
570	b	.L63
571.L66:
572	mov	w0, 1
573	ret
574	.size	IsInFreeQueue, .-IsInFreeQueue
575	.section	.text.insert_data_list,"ax",@progbits
576	.align	2
577	.global	insert_data_list
578	.type	insert_data_list, %function
579insert_data_list:
580	adrp	x1, .LANCHOR5
581	and	w0, w0, 65535
582	ldrh	w14, [x1, #:lo12:.LANCHOR5]
583	cmp	w14, w0
584	bls	.L83
585	adrp	x1, .LANCHOR40
586	mov	w3, 6
587	ldr	x6, [x1, #:lo12:.LANCHOR40]
588	umull	x13, w0, w3
589	mov	w1, -1
590	add	x5, x6, x13
591	strh	w1, [x5, 2]
592	strh	w1, [x6, x13]
593	adrp	x1, .LANCHOR41
594	mov	x15, x1
595	ldr	x12, [x1, #:lo12:.LANCHOR41]
596	cbnz	x12, .L70
597	str	x5, [x1, #:lo12:.LANCHOR41]
598.L83:
599	mov	w0, 0
600	ret
601.L70:
602	stp	x29, x30, [sp, -32]!
603	adrp	x1, .LANCHOR42
604	ubfiz	x2, x0, 1, 16
605	mov	x4, -6148914691236517206
606	add	x29, sp, 0
607	ldr	x16, [x1, #:lo12:.LANCHOR42]
608	movk	x4, 0xaaab, lsl 0
609	ldrh	w1, [x5, 4]
610	mov	w8, -1
611	mov	w11, w8
612	stp	x19, x20, [sp, 16]
613	cmp	w1, 0
614	mov	w20, 65535
615	ldrh	w7, [x16, x2]
616	mul	w7, w7, w1
617	sub	x1, x12, x6
618	asr	x1, x1, 1
619	csel	w7, w7, w8, ne
620	mov	w8, w3
621	mul	x1, x1, x4
622	adrp	x4, .LANCHOR43
623	ldr	x17, [x4, #:lo12:.LANCHOR43]
624	and	w1, w1, 65535
625	mov	x4, x12
626	add	x10, x17, x2
627	mov	w2, 0
628.L78:
629	add	w2, w2, 1
630	and	w2, w2, 65535
631	cmp	w14, w2
632	bcc	.L69
633	cmp	w1, w0
634	beq	.L69
635	ubfiz	x30, x1, 1, 16
636	ldrh	w19, [x4, 4]
637	cmp	w19, 0
638	ldrh	w3, [x16, x30]
639	mul	w3, w3, w19
640	csel	w3, w3, w11, ne
641	cmp	w7, w3
642	bne	.L74
643	ldrh	w19, [x17, x30]
644	ldrh	w3, [x10]
645	cmp	w19, w3
646	bcc	.L76
647.L75:
648	strh	w1, [x6, x13]
649	cmp	x4, x12
650	ldrh	w1, [x4, 2]
651	strh	w1, [x5, 2]
652	bne	.L79
653	strh	w0, [x4, 2]
654	str	x5, [x15, #:lo12:.LANCHOR41]
655	b	.L69
656.L74:
657	bcc	.L75
658.L76:
659	ldrh	w3, [x4]
660	cmp	w3, w20
661	bne	.L77
662	strh	w1, [x5, 2]
663	strh	w0, [x4]
664	adrp	x0, .LANCHOR44
665	str	x5, [x0, #:lo12:.LANCHOR44]
666.L69:
667	mov	w0, 0
668	ldp	x19, x20, [sp, 16]
669	ldp	x29, x30, [sp], 32
670	ret
671.L77:
672	umaddl	x4, w3, w8, x6
673	mov	w1, w3
674	b	.L78
675.L79:
676	ldrh	w1, [x4, 2]
677	mov	w2, 6
678	umull	x1, w1, w2
679	strh	w0, [x6, x1]
680	strh	w0, [x4, 2]
681	b	.L69
682	.size	insert_data_list, .-insert_data_list
683	.section	.text.INSERT_DATA_LIST,"ax",@progbits
684	.align	2
685	.global	INSERT_DATA_LIST
686	.type	INSERT_DATA_LIST, %function
687INSERT_DATA_LIST:
688	stp	x29, x30, [sp, -16]!
689	add	x29, sp, 0
690	bl	insert_data_list
691	adrp	x1, .LANCHOR45
692	ldrh	w0, [x1, #:lo12:.LANCHOR45]
693	add	w0, w0, 1
694	and	w0, w0, 65535
695	strh	w0, [x1, #:lo12:.LANCHOR45]
696	adrp	x1, .LANCHOR5
697	ldrh	w1, [x1, #:lo12:.LANCHOR5]
698	cmp	w1, w0
699	bcs	.L85
700	ldp	x29, x30, [sp], 16
701	mov	w2, 221
702	adrp	x1, .LANCHOR46
703	adrp	x0, .LC1
704	add	x1, x1, :lo12:.LANCHOR46
705	add	x0, x0, :lo12:.LC1
706	b	printf
707.L85:
708	ldp	x29, x30, [sp], 16
709	ret
710	.size	INSERT_DATA_LIST, .-INSERT_DATA_LIST
711	.section	.text.insert_free_list,"ax",@progbits
712	.align	2
713	.global	insert_free_list
714	.type	insert_free_list, %function
715insert_free_list:
716	and	w0, w0, 65535
717	mov	w7, 65535
718	cmp	w0, w7
719	beq	.L89
720	adrp	x1, .LANCHOR40
721	mov	w6, 6
722	ldr	x3, [x1, #:lo12:.LANCHOR40]
723	umull	x8, w0, w6
724	mov	w1, -1
725	add	x4, x3, x8
726	strh	w1, [x4, 2]
727	strh	w1, [x3, x8]
728	adrp	x1, .LANCHOR47
729	mov	x12, x1
730	ldr	x5, [x1, #:lo12:.LANCHOR47]
731	cbnz	x5, .L90
732	str	x4, [x1, #:lo12:.LANCHOR47]
733.L89:
734	mov	w0, 0
735	ret
736.L90:
737	adrp	x1, .LANCHOR43
738	mov	x2, -6148914691236517206
739	movk	x2, 0xaaab, lsl 0
740	ldr	x11, [x1, #:lo12:.LANCHOR43]
741	ubfiz	x1, x0, 1, 16
742	ldrh	w13, [x11, x1]
743	sub	x1, x5, x3
744	asr	x1, x1, 1
745	mul	x1, x1, x2
746	mov	x2, x5
747	and	w1, w1, 65535
748.L93:
749	ubfiz	x10, x1, 1, 16
750	ldrh	w10, [x11, x10]
751	cmp	w10, w13
752	bcs	.L91
753	ldrh	w10, [x2]
754	cmp	w10, w7
755	bne	.L92
756	strh	w1, [x4, 2]
757	strh	w0, [x2]
758	b	.L89
759.L92:
760	umaddl	x2, w10, w6, x3
761	mov	w1, w10
762	b	.L93
763.L91:
764	ldrh	w6, [x2, 2]
765	cmp	x2, x5
766	strh	w6, [x4, 2]
767	strh	w1, [x3, x8]
768	bne	.L94
769	strh	w0, [x2, 2]
770	str	x4, [x12, #:lo12:.LANCHOR47]
771	b	.L89
772.L94:
773	ldrh	w1, [x2, 2]
774	mov	w4, 6
775	umull	x1, w1, w4
776	strh	w0, [x3, x1]
777	strh	w0, [x2, 2]
778	b	.L89
779	.size	insert_free_list, .-insert_free_list
780	.section	.text.INSERT_FREE_LIST,"ax",@progbits
781	.align	2
782	.global	INSERT_FREE_LIST
783	.type	INSERT_FREE_LIST, %function
784INSERT_FREE_LIST:
785	stp	x29, x30, [sp, -16]!
786	add	x29, sp, 0
787	bl	insert_free_list
788	adrp	x1, .LANCHOR48
789	ldrh	w0, [x1, #:lo12:.LANCHOR48]
790	add	w0, w0, 1
791	and	w0, w0, 65535
792	strh	w0, [x1, #:lo12:.LANCHOR48]
793	adrp	x1, .LANCHOR5
794	ldrh	w1, [x1, #:lo12:.LANCHOR5]
795	cmp	w1, w0
796	bcs	.L95
797	ldp	x29, x30, [sp], 16
798	mov	w2, 214
799	adrp	x1, .LANCHOR49
800	adrp	x0, .LC1
801	add	x1, x1, :lo12:.LANCHOR49
802	add	x0, x0, :lo12:.LC1
803	b	printf
804.L95:
805	ldp	x29, x30, [sp], 16
806	ret
807	.size	INSERT_FREE_LIST, .-INSERT_FREE_LIST
808	.section	.text.List_remove_node,"ax",@progbits
809	.align	2
810	.global	List_remove_node
811	.type	List_remove_node, %function
812List_remove_node:
813	stp	x29, x30, [sp, -64]!
814	and	w1, w1, 65535
815	add	x29, sp, 0
816	stp	x19, x20, [sp, 16]
817	adrp	x20, .LANCHOR40
818	stp	x21, x22, [sp, 32]
819	mov	x22, x0
820	mov	w0, 6
821	str	x23, [sp, 48]
822	ldr	x23, [x20, #:lo12:.LANCHOR40]
823	umull	x21, w1, w0
824	mov	w0, 65535
825	add	x19, x23, x21
826	ldrh	w1, [x19, 2]
827	cmp	w1, w0
828	bne	.L99
829	ldr	x0, [x22]
830	cmp	x19, x0
831	beq	.L99
832	adrp	x1, .LANCHOR50
833	adrp	x0, .LC1
834	mov	w2, 379
835	add	x1, x1, :lo12:.LANCHOR50
836	add	x0, x0, :lo12:.LC1
837	bl	printf
838.L99:
839	ldr	x0, [x22]
840	mov	w1, 65535
841	cmp	x19, x0
842	ldrh	w0, [x23, x21]
843	bne	.L100
844	cmp	w0, w1
845	bne	.L101
846	str	xzr, [x22]
847.L102:
848	mov	w0, -1
849	strh	w0, [x23, x21]
850	strh	w0, [x19, 2]
851	mov	w0, 0
852	ldp	x19, x20, [sp, 16]
853	ldp	x21, x22, [sp, 32]
854	ldr	x23, [sp, 48]
855	ldp	x29, x30, [sp], 64
856	ret
857.L101:
858	ldr	x1, [x20, #:lo12:.LANCHOR40]
859	mov	w2, 6
860	umaddl	x0, w0, w2, x1
861	mov	w1, -1
862	str	x0, [x22]
863	strh	w1, [x0, 2]
864	b	.L102
865.L100:
866	cmp	w0, w1
867	ldrh	w1, [x19, 2]
868	bne	.L103
869	cmp	w1, w0
870	beq	.L102
871	mov	w0, 6
872	mov	w2, -1
873	umull	x1, w1, w0
874	ldr	x0, [x20, #:lo12:.LANCHOR40]
875	strh	w2, [x0, x1]
876	b	.L102
877.L103:
878	ldr	x2, [x20, #:lo12:.LANCHOR40]
879	mov	w3, 6
880	umaddl	x4, w0, w3, x2
881	strh	w1, [x4, 2]
882	ldrh	w1, [x19, 2]
883	umull	x1, w1, w3
884	strh	w0, [x2, x1]
885	b	.L102
886	.size	List_remove_node, .-List_remove_node
887	.section	.text.List_pop_index_node,"ax",@progbits
888	.align	2
889	.global	List_pop_index_node
890	.type	List_pop_index_node, %function
891List_pop_index_node:
892	ldr	x2, [x0]
893	cbz	x2, .L111
894	stp	x29, x30, [sp, -32]!
895	adrp	x3, .LANCHOR40
896	and	w1, w1, 65535
897	mov	w4, 65535
898	add	x29, sp, 0
899	str	x19, [sp, 16]
900	mov	w5, 6
901	ldr	x19, [x3, #:lo12:.LANCHOR40]
902.L107:
903	cbnz	w1, .L108
904.L110:
905	sub	x19, x2, x19
906	mov	x2, -6148914691236517206
907	asr	x19, x19, 1
908	movk	x2, 0xaaab, lsl 0
909	mul	x19, x19, x2
910	and	w19, w19, 65535
911	mov	w1, w19
912	bl	List_remove_node
913	mov	w0, w19
914	ldr	x19, [sp, 16]
915	ldp	x29, x30, [sp], 32
916	ret
917.L108:
918	ldrh	w3, [x2]
919	cmp	w3, w4
920	beq	.L110
921	sub	w1, w1, #1
922	umaddl	x2, w3, w5, x19
923	and	w1, w1, 65535
924	b	.L107
925.L111:
926	mov	w0, 65535
927	ret
928	.size	List_pop_index_node, .-List_pop_index_node
929	.section	.text.List_pop_head_node,"ax",@progbits
930	.align	2
931	.global	List_pop_head_node
932	.type	List_pop_head_node, %function
933List_pop_head_node:
934	mov	w1, 0
935	b	List_pop_index_node
936	.size	List_pop_head_node, .-List_pop_head_node
937	.section	.text.List_get_gc_head_node,"ax",@progbits
938	.align	2
939	.global	List_get_gc_head_node
940	.type	List_get_gc_head_node, %function
941List_get_gc_head_node:
942	and	w2, w0, 65535
943	adrp	x0, .LANCHOR41
944	ldr	x1, [x0, #:lo12:.LANCHOR41]
945	cbz	x1, .L122
946	adrp	x0, .LANCHOR40
947	mov	w4, 6
948	ldr	x3, [x0, #:lo12:.LANCHOR40]
949	mov	w0, 65535
950.L119:
951	cbz	w2, .L120
952	ldrh	w1, [x1]
953	cmp	w1, w0
954	bne	.L121
955	ret
956.L121:
957	sub	w2, w2, #1
958	umaddl	x1, w1, w4, x3
959	and	w2, w2, 65535
960	b	.L119
961.L122:
962	mov	w0, 65535
963	ret
964.L120:
965	sub	x0, x1, x3
966	mov	x1, -6148914691236517206
967	asr	x0, x0, 1
968	movk	x1, 0xaaab, lsl 0
969	mul	x0, x0, x1
970	and	w0, w0, 65535
971	ret
972	.size	List_get_gc_head_node, .-List_get_gc_head_node
973	.section	.text.List_update_data_list,"ax",@progbits
974	.align	2
975	.global	List_update_data_list
976	.type	List_update_data_list, %function
977List_update_data_list:
978	stp	x29, x30, [sp, -80]!
979	add	x29, sp, 0
980	stp	x19, x20, [sp, 16]
981	and	w19, w0, 65535
982	adrp	x0, .LANCHOR51
983	stp	x21, x22, [sp, 32]
984	stp	x23, x24, [sp, 48]
985	ldrh	w0, [x0, #:lo12:.LANCHOR51]
986	stp	x25, x26, [sp, 64]
987	cmp	w0, w19
988	beq	.L125
989	adrp	x0, .LANCHOR52
990	ldrh	w0, [x0, #:lo12:.LANCHOR52]
991	cmp	w0, w19
992	beq	.L125
993	adrp	x0, .LANCHOR53
994	ldrh	w0, [x0, #:lo12:.LANCHOR53]
995	cmp	w0, w19
996	beq	.L125
997	adrp	x0, .LANCHOR40
998	mov	w21, 6
999	adrp	x24, .LANCHOR41
1000	mov	x26, x0
1001	umull	x21, w19, w21
1002	ldr	x23, [x0, #:lo12:.LANCHOR40]
1003	ldr	x1, [x24, #:lo12:.LANCHOR41]
1004	add	x22, x23, x21
1005	cmp	x22, x1
1006	beq	.L125
1007	adrp	x1, .LANCHOR42
1008	ubfiz	x0, x19, 1, 16
1009	mov	x25, x1
1010	ldr	x2, [x1, #:lo12:.LANCHOR42]
1011	mov	w1, 65535
1012	ldrh	w20, [x2, x0]
1013	ldrh	w0, [x22, 4]
1014	cmp	w0, 0
1015	mul	w20, w20, w0
1016	ldrh	w0, [x22, 2]
1017	csinv	w20, w20, wzr, ne
1018	cmp	w0, w1
1019	bne	.L128
1020	ldrh	w1, [x23, x21]
1021	cmp	w1, w0
1022	bne	.L128
1023	adrp	x1, .LANCHOR54
1024	adrp	x0, .LC1
1025	mov	w2, 470
1026	add	x1, x1, :lo12:.LANCHOR54
1027	add	x0, x0, :lo12:.LC1
1028	bl	printf
1029.L128:
1030	ldrh	w0, [x22, 2]
1031	mov	w1, 65535
1032	cmp	w0, w1
1033	bne	.L129
1034	ldrh	w1, [x23, x21]
1035	cmp	w1, w0
1036	beq	.L125
1037.L129:
1038	mov	w1, 6
1039	mov	x2, -6148914691236517206
1040	movk	x2, 0xaaab, lsl 0
1041	umull	x0, w0, w1
1042	asr	x1, x0, 1
1043	mul	x1, x1, x2
1044	ldr	x2, [x25, #:lo12:.LANCHOR42]
1045	ldrh	w1, [x2, x1, lsl 1]
1046	ldr	x2, [x26, #:lo12:.LANCHOR40]
1047	add	x0, x2, x0
1048	ldrh	w2, [x0, 4]
1049	cmp	w2, 0
1050	mul	w0, w1, w2
1051	csinv	w0, w0, wzr, ne
1052	cmp	w20, w0
1053	bcs	.L125
1054	adrp	x20, .LANCHOR45
1055	mov	w1, w19
1056	add	x0, x24, :lo12:.LANCHOR41
1057	bl	List_remove_node
1058	ldrh	w0, [x20, #:lo12:.LANCHOR45]
1059	cbnz	w0, .L131
1060	adrp	x1, .LANCHOR54
1061	adrp	x0, .LC1
1062	mov	w2, 481
1063	add	x1, x1, :lo12:.LANCHOR54
1064	add	x0, x0, :lo12:.LC1
1065	bl	printf
1066.L131:
1067	ldrh	w0, [x20, #:lo12:.LANCHOR45]
1068	sub	w0, w0, #1
1069	strh	w0, [x20, #:lo12:.LANCHOR45]
1070	mov	w0, w19
1071	bl	INSERT_DATA_LIST
1072.L125:
1073	mov	w0, 0
1074	ldp	x19, x20, [sp, 16]
1075	ldp	x21, x22, [sp, 32]
1076	ldp	x23, x24, [sp, 48]
1077	ldp	x25, x26, [sp, 64]
1078	ldp	x29, x30, [sp], 80
1079	ret
1080	.size	List_update_data_list, .-List_update_data_list
1081	.section	.text.select_l2p_ram_region,"ax",@progbits
1082	.align	2
1083	.global	select_l2p_ram_region
1084	.type	select_l2p_ram_region, %function
1085select_l2p_ram_region:
1086	stp	x29, x30, [sp, -32]!
1087	adrp	x0, .LANCHOR33
1088	mov	x1, 0
1089	mov	w3, 65535
1090	add	x29, sp, 0
1091	ldrh	w2, [x0, #:lo12:.LANCHOR33]
1092	adrp	x0, .LANCHOR55
1093	str	x19, [sp, 16]
1094	ldr	x0, [x0, #:lo12:.LANCHOR55]
1095.L136:
1096	and	w19, w1, 65535
1097	cmp	w19, w2
1098	bcc	.L138
1099	add	x3, x0, 4
1100	mov	w19, w2
1101	mov	w5, -2147483648
1102	mov	w1, 0
1103.L139:
1104	cmp	w1, w2
1105	bne	.L141
1106	cmp	w19, w2
1107	bcc	.L137
1108	adrp	x1, .LANCHOR56
1109	mov	w19, w2
1110	mov	w3, -1
1111	ldrh	w4, [x1, #:lo12:.LANCHOR56]
1112	mov	w1, 0
1113.L142:
1114	cmp	w1, w2
1115	bne	.L144
1116	cmp	w19, w1
1117	bcc	.L137
1118	mov	w2, 784
1119	adrp	x1, .LANCHOR57
1120	adrp	x0, .LC1
1121	add	x1, x1, :lo12:.LANCHOR57
1122	add	x0, x0, :lo12:.LC1
1123	bl	printf
1124	b	.L137
1125.L138:
1126	add	x1, x1, 1
1127	add	x4, x0, x1, lsl 4
1128	ldrh	w4, [x4, -16]
1129	cmp	w4, w3
1130	bne	.L136
1131.L137:
1132	mov	w0, w19
1133	ldr	x19, [sp, 16]
1134	ldp	x29, x30, [sp], 32
1135	ret
1136.L141:
1137	ldr	w4, [x3]
1138	tbnz	w4, #31, .L140
1139	cmp	w5, w4
1140	bls	.L140
1141	mov	w5, w4
1142	mov	w19, w1
1143.L140:
1144	add	w1, w1, 1
1145	add	x3, x3, 16
1146	and	w1, w1, 65535
1147	b	.L139
1148.L144:
1149	ldr	w6, [x0, 4]
1150	cmp	w3, w6
1151	bls	.L143
1152	ldrh	w5, [x0]
1153	cmp	w5, w4
1154	csel	w3, w3, w6, eq
1155	csel	w19, w19, w1, eq
1156.L143:
1157	add	w1, w1, 1
1158	add	x0, x0, 16
1159	and	w1, w1, 65535
1160	b	.L142
1161	.size	select_l2p_ram_region, .-select_l2p_ram_region
1162	.section	.text.FtlUpdateVaildLpn,"ax",@progbits
1163	.align	2
1164	.global	FtlUpdateVaildLpn
1165	.type	FtlUpdateVaildLpn, %function
1166FtlUpdateVaildLpn:
1167	adrp	x2, .LANCHOR58
1168	mov	x3, x2
1169	ldrh	w1, [x2, #:lo12:.LANCHOR58]
1170	cmp	w1, 4
1171	bhi	.L147
1172	cbnz	w0, .L147
1173	add	w1, w1, 1
1174	strh	w1, [x2, #:lo12:.LANCHOR58]
1175	ret
1176.L147:
1177	adrp	x1, .LANCHOR5
1178	adrp	x0, .LANCHOR59
1179	strh	wzr, [x3, #:lo12:.LANCHOR58]
1180	mov	w2, 0
1181	ldrh	w5, [x1, #:lo12:.LANCHOR5]
1182	adrp	x1, .LANCHOR42
1183	str	wzr, [x0, #:lo12:.LANCHOR59]
1184	mov	w3, 0
1185	ldr	x6, [x1, #:lo12:.LANCHOR42]
1186	mov	w7, 65535
1187	mov	x1, 0
1188.L148:
1189	cmp	w5, w1, uxth
1190	bhi	.L150
1191	cbz	w3, .L146
1192	str	w2, [x0, #:lo12:.LANCHOR59]
1193.L146:
1194	ret
1195.L150:
1196	ldrh	w4, [x6, x1, lsl 1]
1197	cmp	w4, w7
1198	beq	.L149
1199	add	w2, w2, w4
1200	mov	w3, 1
1201.L149:
1202	add	x1, x1, 1
1203	b	.L148
1204	.size	FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
1205	.section	.text.ftl_set_blk_mode,"ax",@progbits
1206	.align	2
1207	.global	ftl_set_blk_mode
1208	.type	ftl_set_blk_mode, %function
1209ftl_set_blk_mode:
1210	and	w0, w0, 65535
1211	cbz	w1, .L157
1212	b	ftl_set_blk_mode.part.6
1213.L157:
1214	adrp	x1, .LANCHOR1
1215	ubfx	x2, x0, 5, 11
1216	lsl	x2, x2, 2
1217	ldr	x3, [x1, #:lo12:.LANCHOR1]
1218	mov	w1, 1
1219	lsl	w0, w1, w0
1220	ldr	w1, [x3, x2]
1221	bic	w0, w1, w0
1222	str	w0, [x3, x2]
1223	ret
1224	.size	ftl_set_blk_mode, .-ftl_set_blk_mode
1225	.section	.text.ftl_get_blk_mode,"ax",@progbits
1226	.align	2
1227	.global	ftl_get_blk_mode
1228	.type	ftl_get_blk_mode, %function
1229ftl_get_blk_mode:
1230	and	w1, w0, 65535
1231	adrp	x0, .LANCHOR1
1232	ldr	x0, [x0, #:lo12:.LANCHOR1]
1233	ubfx	x2, x1, 5, 11
1234	ldr	w0, [x0, x2, lsl 2]
1235	lsr	w0, w0, w1
1236	and	w0, w0, 1
1237	ret
1238	.size	ftl_get_blk_mode, .-ftl_get_blk_mode
1239	.section	.text.ftl_sb_update_avl_pages,"ax",@progbits
1240	.align	2
1241	.global	ftl_sb_update_avl_pages
1242	.type	ftl_sb_update_avl_pages, %function
1243ftl_sb_update_avl_pages:
1244	and	w2, w2, 65535
1245	and	w6, w1, 65535
1246	ubfiz	x4, x2, 1, 16
1247	adrp	x1, .LANCHOR3
1248	add	x4, x4, 16
1249	strh	wzr, [x0, 4]
1250	add	x4, x0, x4
1251	ldrh	w3, [x1, #:lo12:.LANCHOR3]
1252	mov	w1, 65535
1253.L160:
1254	cmp	w2, w3
1255	bcc	.L162
1256	adrp	x1, .LANCHOR19
1257	ubfiz	x3, x3, 1, 16
1258	add	x3, x3, 16
1259	add	x2, x0, 16
1260	ldrh	w1, [x1, #:lo12:.LANCHOR19]
1261	add	x3, x0, x3
1262	mov	w5, 65535
1263	sub	w1, w1, #1
1264	and	w1, w1, 65535
1265	sub	w1, w1, w6
1266.L163:
1267	cmp	x2, x3
1268	bne	.L165
1269	ret
1270.L162:
1271	ldrh	w5, [x4]
1272	cmp	w5, w1
1273	beq	.L161
1274	ldrh	w5, [x0, 4]
1275	add	w5, w5, 1
1276	strh	w5, [x0, 4]
1277.L161:
1278	add	w2, w2, 1
1279	add	x4, x4, 2
1280	and	w2, w2, 65535
1281	b	.L160
1282.L165:
1283	ldrh	w4, [x2]
1284	cmp	w4, w5
1285	beq	.L164
1286	ldrh	w4, [x0, 4]
1287	add	w4, w1, w4
1288	strh	w4, [x0, 4]
1289.L164:
1290	add	x2, x2, 2
1291	b	.L163
1292	.size	ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
1293	.section	.text.FtlSlcSuperblockCheck,"ax",@progbits
1294	.align	2
1295	.global	FtlSlcSuperblockCheck
1296	.type	FtlSlcSuperblockCheck, %function
1297FtlSlcSuperblockCheck:
1298	ldrh	w1, [x0, 4]
1299	cbz	w1, .L166
1300	ldrh	w2, [x0]
1301	mov	w1, 65535
1302	cmp	w2, w1
1303	beq	.L166
1304	ldrb	w2, [x0, 6]
1305	add	x2, x2, 8
1306	ldrh	w3, [x0, x2, lsl 1]
1307	adrp	x2, .LANCHOR3
1308	ldrh	w4, [x2, #:lo12:.LANCHOR3]
1309	mov	w2, w1
1310.L169:
1311	cmp	w3, w2
1312	beq	.L171
1313.L166:
1314	ret
1315.L171:
1316	ldrb	w1, [x0, 6]
1317	add	w1, w1, 1
1318	and	w1, w1, 255
1319	strb	w1, [x0, 6]
1320	cmp	w1, w4
1321	bne	.L170
1322	ldrh	w1, [x0, 2]
1323	strb	wzr, [x0, 6]
1324	add	w1, w1, 1
1325	strh	w1, [x0, 2]
1326.L170:
1327	ldrb	w1, [x0, 6]
1328	add	x1, x1, 8
1329	ldrh	w3, [x0, x1, lsl 1]
1330	b	.L169
1331	.size	FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
1332	.section	.text.make_superblock,"ax",@progbits
1333	.align	2
1334	.global	make_superblock
1335	.type	make_superblock, %function
1336make_superblock:
1337	stp	x29, x30, [sp, -32]!
1338	add	x29, sp, 0
1339	ldrh	w1, [x0]
1340	str	x19, [sp, 16]
1341	mov	x19, x0
1342	adrp	x0, .LANCHOR5
1343	ldrh	w0, [x0, #:lo12:.LANCHOR5]
1344	cmp	w1, w0
1345	bcc	.L173
1346	adrp	x1, .LANCHOR60
1347	adrp	x0, .LC1
1348	mov	w2, 2097
1349	add	x1, x1, :lo12:.LANCHOR60
1350	add	x0, x0, :lo12:.LC1
1351	bl	printf
1352.L173:
1353	adrp	x0, .LANCHOR3
1354	adrp	x7, .LANCHOR13
1355	add	x6, x19, 16
1356	add	x7, x7, :lo12:.LANCHOR13
1357	ldrh	w8, [x0, #:lo12:.LANCHOR3]
1358	mov	x5, 0
1359	strh	wzr, [x19, 4]
1360	mov	w10, -1
1361	strb	wzr, [x19, 7]
1362.L174:
1363	cmp	w8, w5, uxth
1364	bhi	.L176
1365	adrp	x1, .LANCHOR19
1366	ldrb	w0, [x19, 7]
1367	ldrh	w1, [x1, #:lo12:.LANCHOR19]
1368	mul	w0, w0, w1
1369	strh	w0, [x19, 4]
1370	mov	w0, 1
1371	strb	w0, [x19, 9]
1372	mov	w0, 0
1373	ldr	x19, [sp, 16]
1374	ldp	x29, x30, [sp], 32
1375	ret
1376.L176:
1377	ldrh	w1, [x19]
1378	ldrb	w0, [x7, x5]
1379	bl	V2P_block
1380	mov	w4, w0
1381	strh	w10, [x6]
1382	bl	FtlBbmIsBadBlock
1383	cbnz	w0, .L175
1384	strh	w4, [x6]
1385	ldrb	w0, [x19, 7]
1386	add	w0, w0, 1
1387	strb	w0, [x19, 7]
1388.L175:
1389	add	x5, x5, 1
1390	add	x6, x6, 2
1391	b	.L174
1392	.size	make_superblock, .-make_superblock
1393	.section	.text.update_multiplier_value,"ax",@progbits
1394	.align	2
1395	.global	update_multiplier_value
1396	.type	update_multiplier_value, %function
1397update_multiplier_value:
1398	and	w6, w0, 65535
1399	adrp	x0, .LANCHOR3
1400	mov	x7, 0
1401	adrp	x8, .LANCHOR13
1402	ldrh	w10, [x0, #:lo12:.LANCHOR3]
1403	adrp	x0, .LANCHOR19
1404	mov	w5, 0
1405	add	x8, x8, :lo12:.LANCHOR13
1406	ldrh	w11, [x0, #:lo12:.LANCHOR19]
1407	cmp	w10, w7, uxth
1408	bhi	.L190
1409	cbz	w5, .L188
1410	mov	w0, 32768
1411	sdiv	w5, w0, w5
1412.L189:
1413	adrp	x0, .LANCHOR40
1414	mov	w1, 6
1415	ldr	x0, [x0, #:lo12:.LANCHOR40]
1416	umaddl	x6, w6, w1, x0
1417	mov	w0, 0
1418	strh	w5, [x6, 4]
1419	ret
1420.L183:
1421	mov	w5, 0
1422	b	.L182
1423.L188:
1424	mov	w5, 0
1425	b	.L189
1426.L190:
1427	stp	x29, x30, [sp, -16]!
1428	add	x29, sp, 0
1429.L181:
1430	ldrb	w0, [x8, x7]
1431	mov	w1, w6
1432	bl	V2P_block
1433	bl	FtlBbmIsBadBlock
1434	cbnz	w0, .L180
1435	add	w5, w5, w11
1436	and	w5, w5, 65535
1437.L180:
1438	add	x7, x7, 1
1439	cmp	w10, w7, uxth
1440	bhi	.L181
1441	cbz	w5, .L183
1442	mov	w0, 32768
1443	sdiv	w5, w0, w5
1444.L182:
1445	adrp	x0, .LANCHOR40
1446	mov	w1, 6
1447	ldr	x0, [x0, #:lo12:.LANCHOR40]
1448	umaddl	x6, w6, w1, x0
1449	mov	w0, 0
1450	strh	w5, [x6, 4]
1451	ldp	x29, x30, [sp], 16
1452	ret
1453	.size	update_multiplier_value, .-update_multiplier_value
1454	.section	.text.GetFreeBlockMinEraseCount,"ax",@progbits
1455	.align	2
1456	.global	GetFreeBlockMinEraseCount
1457	.type	GetFreeBlockMinEraseCount, %function
1458GetFreeBlockMinEraseCount:
1459	adrp	x0, .LANCHOR47
1460	ldr	x0, [x0, #:lo12:.LANCHOR47]
1461	cbz	x0, .L193
1462	adrp	x1, .LANCHOR40
1463	ldr	x1, [x1, #:lo12:.LANCHOR40]
1464	sub	x0, x0, x1
1465	mov	x1, -6148914691236517206
1466	asr	x0, x0, 1
1467	movk	x1, 0xaaab, lsl 0
1468	mul	x0, x0, x1
1469	adrp	x1, .LANCHOR43
1470	ldr	x1, [x1, #:lo12:.LANCHOR43]
1471	and	x0, x0, 65535
1472	ldrh	w0, [x1, x0, lsl 1]
1473	ret
1474.L193:
1475	mov	w0, 0
1476	ret
1477	.size	GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
1478	.section	.text.GetFreeBlockMaxEraseCount,"ax",@progbits
1479	.align	2
1480	.global	GetFreeBlockMaxEraseCount
1481	.type	GetFreeBlockMaxEraseCount, %function
1482GetFreeBlockMaxEraseCount:
1483	adrp	x1, .LANCHOR47
1484	and	w0, w0, 65535
1485	ldr	x1, [x1, #:lo12:.LANCHOR47]
1486	cbz	x1, .L201
1487	adrp	x2, .LANCHOR48
1488	mov	w3, 7
1489	mov	w5, 6
1490	mov	w6, 65535
1491	ldrh	w2, [x2, #:lo12:.LANCHOR48]
1492	mul	w2, w2, w3
1493	asr	w2, w2, 3
1494	cmp	w0, w2
1495	csel	w0, w2, w0, gt
1496	adrp	x2, .LANCHOR40
1497	ldr	x3, [x2, #:lo12:.LANCHOR40]
1498	mov	x2, -6148914691236517206
1499	movk	x2, 0xaaab, lsl 0
1500	sub	x1, x1, x3
1501	asr	x1, x1, 1
1502	mul	x1, x1, x2
1503	mov	w2, 0
1504	and	w1, w1, 65535
1505.L197:
1506	cmp	w0, w2
1507	beq	.L200
1508	umull	x4, w1, w5
1509	ldrh	w4, [x3, x4]
1510	cmp	w4, w6
1511	bne	.L198
1512.L200:
1513	adrp	x0, .LANCHOR43
1514	ubfiz	x1, x1, 1, 16
1515	ldr	x0, [x0, #:lo12:.LANCHOR43]
1516	ldrh	w0, [x0, x1]
1517	ret
1518.L198:
1519	add	w2, w2, 1
1520	mov	w1, w4
1521	and	w2, w2, 65535
1522	b	.L197
1523.L201:
1524	mov	w0, 0
1525	ret
1526	.size	GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
1527	.section	.text.FtlPrintInfo2buf,"ax",@progbits
1528	.align	2
1529	.global	FtlPrintInfo2buf
1530	.type	FtlPrintInfo2buf, %function
1531FtlPrintInfo2buf:
1532	stp	x29, x30, [sp, -96]!
1533	adrp	x1, .LC2
1534	add	x1, x1, :lo12:.LC2
1535	add	x29, sp, 0
1536	stp	x19, x20, [sp, 16]
1537	adrp	x19, .LANCHOR37
1538	stp	x21, x22, [sp, 32]
1539	mov	x21, x0
1540	stp	x23, x24, [sp, 48]
1541	adrp	x23, .LANCHOR48
1542	stp	x25, x26, [sp, 64]
1543	adrp	x22, .LANCHOR39
1544	str	x27, [sp, 80]
1545	bl	sprintf
1546	add	x20, x21, x0, sxtw
1547	adrp	x0, .LANCHOR26
1548	adrp	x1, .LC3
1549	add	x1, x1, :lo12:.LC3
1550	ldr	w2, [x0, #:lo12:.LANCHOR26]
1551	mov	x0, x20
1552	add	x22, x22, :lo12:.LANCHOR39
1553	adrp	x24, .LANCHOR51
1554	adrp	x25, .LANCHOR80
1555	bl	sprintf
1556	add	x20, x20, x0, sxtw
1557	mov	x0, x20
1558	adrp	x1, .LC4
1559	add	x1, x1, :lo12:.LC4
1560	bl	sprintf
1561	add	x20, x20, x0, sxtw
1562	adrp	x0, .LANCHOR61
1563	adrp	x1, .LC5
1564	add	x1, x1, :lo12:.LC5
1565	ldr	w2, [x0, #:lo12:.LANCHOR61]
1566	mov	x0, x20
1567	bl	sprintf
1568	add	x20, x20, x0, sxtw
1569	adrp	x0, .LANCHOR59
1570	adrp	x1, .LC6
1571	add	x1, x1, :lo12:.LC6
1572	ldr	w2, [x0, #:lo12:.LANCHOR59]
1573	mov	x0, x20
1574	bl	sprintf
1575	add	x20, x20, x0, sxtw
1576	adrp	x0, .LANCHOR62
1577	adrp	x1, .LC7
1578	add	x1, x1, :lo12:.LC7
1579	ldr	w2, [x0, #:lo12:.LANCHOR62]
1580	mov	x0, x20
1581	bl	sprintf
1582	add	x20, x20, x0, sxtw
1583	adrp	x0, .LANCHOR63
1584	adrp	x1, .LC8
1585	add	x1, x1, :lo12:.LC8
1586	ldr	w2, [x0, #:lo12:.LANCHOR63]
1587	mov	x0, x20
1588	bl	sprintf
1589	add	x20, x20, x0, sxtw
1590	adrp	x0, .LANCHOR64
1591	adrp	x1, .LC9
1592	add	x1, x1, :lo12:.LC9
1593	ldr	w2, [x0, #:lo12:.LANCHOR64]
1594	mov	x0, x20
1595	bl	sprintf
1596	add	x20, x20, x0, sxtw
1597	adrp	x0, .LANCHOR65
1598	adrp	x1, .LC10
1599	add	x1, x1, :lo12:.LC10
1600	ldr	w2, [x0, #:lo12:.LANCHOR65]
1601	mov	x0, x20
1602	bl	sprintf
1603	add	x20, x20, x0, sxtw
1604	adrp	x0, .LANCHOR66
1605	adrp	x1, .LC11
1606	add	x1, x1, :lo12:.LC11
1607	ldr	w2, [x0, #:lo12:.LANCHOR66]
1608	mov	x0, x20
1609	bl	sprintf
1610	add	x20, x20, x0, sxtw
1611	adrp	x0, .LANCHOR67
1612	adrp	x1, .LC12
1613	add	x1, x1, :lo12:.LC12
1614	ldr	w2, [x0, #:lo12:.LANCHOR67]
1615	mov	x0, x20
1616	bl	sprintf
1617	add	x20, x20, x0, sxtw
1618	adrp	x0, .LANCHOR68
1619	adrp	x1, .LC13
1620	add	x1, x1, :lo12:.LC13
1621	ldr	w2, [x0, #:lo12:.LANCHOR68]
1622	mov	x0, x20
1623	lsr	w2, w2, 11
1624	bl	sprintf
1625	add	x20, x20, x0, sxtw
1626	adrp	x0, .LANCHOR69
1627	adrp	x1, .LC14
1628	add	x1, x1, :lo12:.LC14
1629	ldr	w2, [x0, #:lo12:.LANCHOR69]
1630	mov	x0, x20
1631	lsr	w2, w2, 11
1632	bl	sprintf
1633	add	x20, x20, x0, sxtw
1634	adrp	x0, .LANCHOR70
1635	adrp	x1, .LC15
1636	add	x1, x1, :lo12:.LC15
1637	ldr	w2, [x0, #:lo12:.LANCHOR70]
1638	mov	x0, x20
1639	bl	sprintf
1640	add	x20, x20, x0, sxtw
1641	adrp	x0, .LANCHOR71
1642	adrp	x1, .LC16
1643	add	x1, x1, :lo12:.LC16
1644	ldr	w2, [x0, #:lo12:.LANCHOR71]
1645	mov	x0, x20
1646	bl	sprintf
1647	add	x20, x20, x0, sxtw
1648	add	x0, x19, :lo12:.LANCHOR37
1649	adrp	x1, .LC17
1650	add	x1, x1, :lo12:.LC17
1651	ldrh	w2, [x0, 6]
1652	mov	x0, x20
1653	bl	sprintf
1654	add	x20, x20, x0, sxtw
1655	ldrh	w2, [x23, #:lo12:.LANCHOR48]
1656	mov	x0, x20
1657	adrp	x1, .LC18
1658	add	x1, x1, :lo12:.LC18
1659	bl	sprintf
1660	add	x20, x20, x0, sxtw
1661	adrp	x0, .LANCHOR72
1662	adrp	x1, .LC19
1663	add	x1, x1, :lo12:.LC19
1664	ldr	w2, [x0, #:lo12:.LANCHOR72]
1665	mov	x0, x20
1666	bl	sprintf
1667	add	x20, x20, x0, sxtw
1668	adrp	x0, .LANCHOR73
1669	adrp	x1, .LC20
1670	add	x1, x1, :lo12:.LC20
1671	ldr	w2, [x0, #:lo12:.LANCHOR73]
1672	mov	x0, x20
1673	bl	sprintf
1674	add	x20, x20, x0, sxtw
1675	adrp	x0, .LANCHOR74
1676	adrp	x1, .LC21
1677	add	x1, x1, :lo12:.LC21
1678	ldr	w2, [x0, #:lo12:.LANCHOR74]
1679	mov	x0, x20
1680	bl	sprintf
1681	add	x20, x20, x0, sxtw
1682	adrp	x0, .LANCHOR75
1683	adrp	x1, .LC22
1684	add	x1, x1, :lo12:.LC22
1685	ldr	w2, [x0, #:lo12:.LANCHOR75]
1686	mov	x0, x20
1687	bl	sprintf
1688	add	x20, x20, x0, sxtw
1689	adrp	x0, .LANCHOR76
1690	adrp	x1, .LC23
1691	add	x1, x1, :lo12:.LC23
1692	ldr	w2, [x0, #:lo12:.LANCHOR76]
1693	mov	x0, x20
1694	bl	sprintf
1695	add	x20, x20, x0, sxtw
1696	adrp	x0, .LANCHOR77
1697	adrp	x1, .LC24
1698	add	x1, x1, :lo12:.LC24
1699	ldr	w2, [x0, #:lo12:.LANCHOR77]
1700	mov	x0, x20
1701	bl	sprintf
1702	add	x20, x20, x0, sxtw
1703	ldrh	w2, [x22, 30]
1704	mov	x0, x20
1705	adrp	x1, .LC25
1706	add	x1, x1, :lo12:.LC25
1707	bl	sprintf
1708	add	x20, x20, x0, sxtw
1709	ldrh	w2, [x22, 28]
1710	mov	x0, x20
1711	adrp	x1, .LC26
1712	add	x1, x1, :lo12:.LC26
1713	adrp	x22, .LANCHOR42
1714	bl	sprintf
1715	add	x20, x20, x0, sxtw
1716	adrp	x0, .LANCHOR34
1717	adrp	x1, .LC27
1718	add	x1, x1, :lo12:.LC27
1719	ldr	w2, [x0, #:lo12:.LANCHOR34]
1720	mov	x0, x20
1721	bl	sprintf
1722	add	x20, x20, x0, sxtw
1723	adrp	x0, .LANCHOR31
1724	adrp	x1, .LC28
1725	add	x1, x1, :lo12:.LC28
1726	ldr	w2, [x0, #:lo12:.LANCHOR31]
1727	mov	x0, x20
1728	bl	sprintf
1729	add	x20, x20, x0, sxtw
1730	adrp	x0, .LANCHOR2
1731	adrp	x1, .LC29
1732	add	x1, x1, :lo12:.LC29
1733	ldr	w2, [x0, #:lo12:.LANCHOR2]
1734	mov	x0, x20
1735	bl	sprintf
1736	add	x20, x20, x0, sxtw
1737	adrp	x0, .LANCHOR38+6
1738	adrp	x1, .LC30
1739	add	x1, x1, :lo12:.LC30
1740	ldrh	w2, [x0, #:lo12:.LANCHOR38+6]
1741	mov	x0, x20
1742	bl	sprintf
1743	add	x20, x20, x0, sxtw
1744	adrp	x0, .LANCHOR5
1745	adrp	x1, .LC31
1746	add	x1, x1, :lo12:.LC31
1747	ldrh	w2, [x0, #:lo12:.LANCHOR5]
1748	mov	x0, x20
1749	bl	sprintf
1750	add	x20, x20, x0, sxtw
1751	adrp	x0, .LANCHOR78
1752	adrp	x1, .LC32
1753	add	x1, x1, :lo12:.LC32
1754	ldrh	w2, [x0, #:lo12:.LANCHOR78]
1755	mov	x0, x20
1756	bl	sprintf
1757	add	x20, x20, x0, sxtw
1758	adrp	x0, .LANCHOR7
1759	adrp	x1, .LC33
1760	add	x1, x1, :lo12:.LC33
1761	ldr	w2, [x0, #:lo12:.LANCHOR7]
1762	mov	x0, x20
1763	bl	sprintf
1764	add	x20, x20, x0, sxtw
1765	adrp	x0, .LANCHOR79
1766	adrp	x1, .LC34
1767	add	x1, x1, :lo12:.LC34
1768	ldrh	w2, [x0, #:lo12:.LANCHOR79]
1769	mov	x0, x20
1770	bl	sprintf
1771	add	x20, x20, x0, sxtw
1772	ldrh	w2, [x19, #:lo12:.LANCHOR37]
1773	add	x19, x24, :lo12:.LANCHOR51
1774	mov	x0, x20
1775	adrp	x1, .LC35
1776	add	x1, x1, :lo12:.LC35
1777	bl	sprintf
1778	add	x20, x20, x0, sxtw
1779	ldrh	w2, [x19, 2]
1780	mov	x0, x20
1781	adrp	x1, .LC36
1782	add	x1, x1, :lo12:.LC36
1783	bl	sprintf
1784	add	x20, x20, x0, sxtw
1785	ldrb	w2, [x19, 6]
1786	mov	x0, x20
1787	adrp	x1, .LC37
1788	add	x1, x1, :lo12:.LC37
1789	bl	sprintf
1790	add	x20, x20, x0, sxtw
1791	ldrh	w2, [x24, #:lo12:.LANCHOR51]
1792	mov	x0, x20
1793	adrp	x1, .LC38
1794	add	x1, x1, :lo12:.LC38
1795	bl	sprintf
1796	add	x20, x20, x0, sxtw
1797	ldrb	w2, [x19, 8]
1798	mov	x0, x20
1799	adrp	x1, .LC39
1800	add	x1, x1, :lo12:.LC39
1801	bl	sprintf
1802	add	x20, x20, x0, sxtw
1803	ldrh	w2, [x19, 4]
1804	mov	x0, x20
1805	adrp	x1, .LC40
1806	add	x1, x1, :lo12:.LC40
1807	bl	sprintf
1808	add	x20, x20, x0, sxtw
1809	ldrh	w1, [x24, #:lo12:.LANCHOR51]
1810	adrp	x24, .LANCHOR52
1811	ldr	x0, [x22, #:lo12:.LANCHOR42]
1812	add	x19, x24, :lo12:.LANCHOR52
1813	ldrh	w2, [x0, x1, lsl 1]
1814	mov	x0, x20
1815	adrp	x1, .LC41
1816	add	x1, x1, :lo12:.LC41
1817	bl	sprintf
1818	add	x20, x20, x0, sxtw
1819	ldrh	w2, [x19, 2]
1820	mov	x0, x20
1821	adrp	x1, .LC42
1822	add	x1, x1, :lo12:.LC42
1823	bl	sprintf
1824	add	x20, x20, x0, sxtw
1825	ldrb	w2, [x19, 6]
1826	mov	x0, x20
1827	adrp	x1, .LC43
1828	add	x1, x1, :lo12:.LC43
1829	bl	sprintf
1830	add	x20, x20, x0, sxtw
1831	ldrh	w2, [x24, #:lo12:.LANCHOR52]
1832	mov	x0, x20
1833	adrp	x1, .LC44
1834	add	x1, x1, :lo12:.LC44
1835	bl	sprintf
1836	add	x20, x20, x0, sxtw
1837	ldrb	w2, [x19, 8]
1838	mov	x0, x20
1839	adrp	x1, .LC45
1840	add	x1, x1, :lo12:.LC45
1841	bl	sprintf
1842	add	x20, x20, x0, sxtw
1843	ldrh	w2, [x19, 4]
1844	mov	x0, x20
1845	adrp	x1, .LC46
1846	add	x1, x1, :lo12:.LC46
1847	bl	sprintf
1848	add	x20, x20, x0, sxtw
1849	ldrh	w1, [x24, #:lo12:.LANCHOR52]
1850	adrp	x24, .LANCHOR53
1851	ldr	x0, [x22, #:lo12:.LANCHOR42]
1852	add	x19, x24, :lo12:.LANCHOR53
1853	ldrh	w2, [x0, x1, lsl 1]
1854	mov	x0, x20
1855	adrp	x1, .LC47
1856	add	x1, x1, :lo12:.LC47
1857	bl	sprintf
1858	add	x20, x20, x0, sxtw
1859	ldrh	w2, [x19, 2]
1860	mov	x0, x20
1861	adrp	x1, .LC48
1862	add	x1, x1, :lo12:.LC48
1863	bl	sprintf
1864	add	x20, x20, x0, sxtw
1865	ldrb	w2, [x19, 6]
1866	mov	x0, x20
1867	adrp	x1, .LC49
1868	add	x1, x1, :lo12:.LC49
1869	bl	sprintf
1870	add	x20, x20, x0, sxtw
1871	ldrh	w2, [x24, #:lo12:.LANCHOR53]
1872	mov	x0, x20
1873	adrp	x1, .LC50
1874	add	x1, x1, :lo12:.LC50
1875	adrp	x24, .LANCHOR81
1876	add	x24, x24, :lo12:.LANCHOR81
1877	bl	sprintf
1878	add	x20, x20, x0, sxtw
1879	ldrb	w2, [x19, 8]
1880	mov	x0, x20
1881	adrp	x1, .LC51
1882	add	x1, x1, :lo12:.LC51
1883	bl	sprintf
1884	add	x20, x20, x0, sxtw
1885	ldrh	w2, [x19, 4]
1886	add	x19, x25, :lo12:.LANCHOR80
1887	mov	x0, x20
1888	adrp	x1, .LC52
1889	add	x1, x1, :lo12:.LC52
1890	bl	sprintf
1891	add	x20, x20, x0, sxtw
1892	ldrh	w2, [x19, 2]
1893	mov	x0, x20
1894	adrp	x1, .LC53
1895	add	x1, x1, :lo12:.LC53
1896	bl	sprintf
1897	add	x20, x20, x0, sxtw
1898	ldrb	w2, [x19, 6]
1899	mov	x0, x20
1900	adrp	x1, .LC54
1901	add	x1, x1, :lo12:.LC54
1902	bl	sprintf
1903	add	x20, x20, x0, sxtw
1904	ldrh	w2, [x25, #:lo12:.LANCHOR80]
1905	mov	x0, x20
1906	adrp	x1, .LC55
1907	add	x1, x1, :lo12:.LC55
1908	bl	sprintf
1909	add	x20, x20, x0, sxtw
1910	ldrb	w2, [x19, 8]
1911	mov	x0, x20
1912	adrp	x1, .LC56
1913	add	x1, x1, :lo12:.LC56
1914	bl	sprintf
1915	add	x20, x20, x0, sxtw
1916	ldrh	w2, [x19, 4]
1917	mov	x0, x20
1918	adrp	x1, .LC57
1919	add	x1, x1, :lo12:.LC57
1920	bl	sprintf
1921	add	x20, x20, x0, sxtw
1922	ldp	w4, w2, [x24, 76]
1923	adrp	x1, .LC58
1924	ldr	w3, [x24, 84]
1925	add	x1, x1, :lo12:.LC58
1926	mov	x0, x20
1927	bl	sprintf
1928	add	x19, x20, x0, sxtw
1929	ldr	w2, [x24, 72]
1930	mov	x0, x19
1931	adrp	x1, .LC59
1932	add	x1, x1, :lo12:.LC59
1933	bl	sprintf
1934	add	x19, x19, x0, sxtw
1935	ldr	w2, [x24, 96]
1936	mov	x0, x19
1937	adrp	x1, .LC60
1938	add	x1, x1, :lo12:.LC60
1939	bl	sprintf
1940	add	x19, x19, x0, sxtw
1941	adrp	x0, .LANCHOR82
1942	adrp	x1, .LC61
1943	add	x1, x1, :lo12:.LC61
1944	ldrh	w2, [x0, #:lo12:.LANCHOR82]
1945	mov	x0, x19
1946	bl	sprintf
1947	add	x19, x19, x0, sxtw
1948	adrp	x0, .LANCHOR83
1949	adrp	x1, .LC62
1950	add	x1, x1, :lo12:.LC62
1951	ldrh	w2, [x0, #:lo12:.LANCHOR83]
1952	mov	x0, x19
1953	bl	sprintf
1954	add	x19, x19, x0, sxtw
1955	adrp	x0, .LANCHOR84
1956	adrp	x1, .LC63
1957	add	x1, x1, :lo12:.LC63
1958	ldr	w2, [x0, #:lo12:.LANCHOR84]
1959	mov	x0, x19
1960	bl	sprintf
1961	add	x19, x19, x0, sxtw
1962	adrp	x0, .LANCHOR85
1963	adrp	x1, .LC64
1964	add	x1, x1, :lo12:.LC64
1965	ldrh	w2, [x0, #:lo12:.LANCHOR85]
1966	mov	x0, x19
1967	bl	sprintf
1968	add	x19, x19, x0, sxtw
1969	bl	GetFreeBlockMinEraseCount
1970	and	w2, w0, 65535
1971	adrp	x1, .LC65
1972	mov	x0, x19
1973	add	x1, x1, :lo12:.LC65
1974	bl	sprintf
1975	add	x19, x19, x0, sxtw
1976	ldrh	w0, [x23, #:lo12:.LANCHOR48]
1977	bl	GetFreeBlockMaxEraseCount
1978	and	w2, w0, 65535
1979	adrp	x1, .LC66
1980	mov	x0, x19
1981	add	x1, x1, :lo12:.LC66
1982	bl	sprintf
1983	add	x19, x19, x0, sxtw
1984	adrp	x0, .LANCHOR86
1985	ldr	w0, [x0, #:lo12:.LANCHOR86]
1986	cmp	w0, 1
1987	beq	.L203
1988.L208:
1989	sub	w0, w19, w21
1990	ldr	x27, [sp, 80]
1991	ldp	x19, x20, [sp, 16]
1992	ldp	x21, x22, [sp, 32]
1993	ldp	x23, x24, [sp, 48]
1994	ldp	x25, x26, [sp, 64]
1995	ldp	x29, x30, [sp], 96
1996	ret
1997.L203:
1998	ldrh	w0, [x25, #:lo12:.LANCHOR80]
1999	mov	w1, 65535
2000	cmp	w0, w1
2001	beq	.L205
2002	ldr	x1, [x22, #:lo12:.LANCHOR42]
2003	ubfiz	x0, x0, 1, 16
2004	ldrh	w2, [x1, x0]
2005	mov	x0, x19
2006	adrp	x1, .LC67
2007	add	x1, x1, :lo12:.LC67
2008	bl	sprintf
2009	add	x19, x19, x0, sxtw
2010.L205:
2011	mov	w0, 0
2012	adrp	x24, .LC68
2013	bl	List_get_gc_head_node
2014	add	x24, x24, :lo12:.LC68
2015	and	w3, w0, 65535
2016	mov	w23, 0
2017	mov	w27, 65535
2018	adrp	x20, .LANCHOR40
2019	mov	w26, 6
2020.L207:
2021	cmp	w3, w27
2022	beq	.L206
2023	adrp	x0, .LANCHOR43
2024	umull	x25, w3, w26
2025	ldr	x2, [x22, #:lo12:.LANCHOR42]
2026	ubfiz	x1, x3, 1, 16
2027	ldr	x4, [x0, #:lo12:.LANCHOR43]
2028	ldr	x0, [x20, #:lo12:.LANCHOR40]
2029	add	x0, x0, x25
2030	ldrh	w6, [x4, x1]
2031	ldrh	w4, [x2, x1]
2032	mov	w2, w23
2033	ldrh	w5, [x0, 4]
2034	mov	x1, x24
2035	mov	x0, x19
2036	add	w23, w23, 1
2037	bl	sprintf
2038	add	x19, x19, x0, sxtw
2039	ldr	x0, [x20, #:lo12:.LANCHOR40]
2040	cmp	w23, 16
2041	ldrh	w3, [x0, x25]
2042	bne	.L207
2043.L206:
2044	adrp	x0, .LANCHOR47
2045	adrp	x23, .LC69
2046	add	x23, x23, :lo12:.LC69
2047	mov	w22, 0
2048	ldr	x3, [x0, #:lo12:.LANCHOR47]
2049	mov	w25, 65535
2050	ldr	x0, [x20, #:lo12:.LANCHOR40]
2051	mov	w26, 6
2052	adrp	x27, .LANCHOR43
2053	sub	x3, x3, x0
2054	mov	x0, -6148914691236517206
2055	asr	x3, x3, 1
2056	movk	x0, 0xaaab, lsl 0
2057	mul	x3, x3, x0
2058	and	w3, w3, 65535
2059.L209:
2060	cmp	w3, w25
2061	beq	.L208
2062	umull	x24, w3, w26
2063	ldr	x0, [x20, #:lo12:.LANCHOR40]
2064	ldr	x2, [x27, #:lo12:.LANCHOR43]
2065	ubfiz	x1, x3, 1, 16
2066	add	x0, x0, x24
2067	ldrh	w5, [x2, x1]
2068	mov	w2, w22
2069	ldrh	w4, [x0, 4]
2070	mov	x1, x23
2071	mov	x0, x19
2072	add	w22, w22, 1
2073	bl	sprintf
2074	add	x19, x19, x0, sxtw
2075	cmp	w22, 4
2076	beq	.L208
2077	ldr	x0, [x20, #:lo12:.LANCHOR40]
2078	ldrh	w3, [x0, x24]
2079	b	.L209
2080	.size	FtlPrintInfo2buf, .-FtlPrintInfo2buf
2081	.section	.text.rknand_proc_ftlread,"ax",@progbits
2082	.align	2
2083	.global	rknand_proc_ftlread
2084	.type	rknand_proc_ftlread, %function
2085rknand_proc_ftlread:
2086	stp	x29, x30, [sp, -32]!
2087	adrp	x2, .LC70
2088	adrp	x1, .LC71
2089	add	x2, x2, :lo12:.LC70
2090	add	x29, sp, 0
2091	add	x1, x1, :lo12:.LC71
2092	stp	x19, x20, [sp, 16]
2093	mov	x20, x0
2094	bl	sprintf
2095	add	x19, x20, x0, sxtw
2096	mov	x0, x19
2097	bl	FtlPrintInfo2buf
2098	add	x0, x19, x0, sxtw
2099	sub	w0, w0, w20
2100	ldp	x19, x20, [sp, 16]
2101	ldp	x29, x30, [sp], 32
2102	ret
2103	.size	rknand_proc_ftlread, .-rknand_proc_ftlread
2104	.section	.text.GetSwlReplaceBlock,"ax",@progbits
2105	.align	2
2106	.global	GetSwlReplaceBlock
2107	.type	GetSwlReplaceBlock, %function
2108GetSwlReplaceBlock:
2109	stp	x29, x30, [sp, -32]!
2110	adrp	x2, .LANCHOR74
2111	adrp	x8, .LANCHOR77
2112	add	x29, sp, 0
2113	str	x19, [sp, 16]
2114	ldr	w3, [x2, #:lo12:.LANCHOR74]
2115	ldr	w7, [x8, #:lo12:.LANCHOR77]
2116	cmp	w3, w7
2117	bcs	.L218
2118	adrp	x1, .LANCHOR5
2119	adrp	x0, .LANCHOR72
2120	mov	w5, 0
2121	mov	w4, 0
2122	ldrh	w3, [x1, #:lo12:.LANCHOR5]
2123	adrp	x1, .LANCHOR43
2124	str	wzr, [x0, #:lo12:.LANCHOR72]
2125	ldr	x6, [x1, #:lo12:.LANCHOR43]
2126	mov	x1, 0
2127.L219:
2128	cmp	w3, w1
2129	bhi	.L220
2130	cbz	w5, .L221
2131	str	w4, [x0, #:lo12:.LANCHOR72]
2132.L221:
2133	ldr	w1, [x0, #:lo12:.LANCHOR72]
2134	udiv	w3, w1, w3
2135	str	w3, [x2, #:lo12:.LANCHOR74]
2136	adrp	x3, .LANCHOR73
2137	ldr	w3, [x3, #:lo12:.LANCHOR73]
2138	sub	w1, w1, w3
2139	adrp	x3, .LANCHOR14
2140	ldrh	w3, [x3, #:lo12:.LANCHOR14]
2141	udiv	w1, w1, w3
2142	str	w1, [x0, #:lo12:.LANCHOR72]
2143.L222:
2144	ldr	w10, [x2, #:lo12:.LANCHOR74]
2145	add	w0, w7, 256
2146	cmp	w0, w10
2147	bls	.L227
2148	adrp	x1, .LANCHOR76
2149	add	w0, w7, 768
2150	ldr	w1, [x1, #:lo12:.LANCHOR76]
2151	cmp	w0, w1
2152	bls	.L227
2153.L229:
2154	mov	w19, 65535
2155.L228:
2156	mov	w0, w19
2157	ldr	x19, [sp, 16]
2158	ldp	x29, x30, [sp], 32
2159	ret
2160.L220:
2161	ldrh	w5, [x6, x1, lsl 1]
2162	add	x1, x1, 1
2163	add	w4, w4, w5
2164	mov	w5, 1
2165	b	.L219
2166.L218:
2167	adrp	x1, .LANCHOR76
2168	ldr	w0, [x1, #:lo12:.LANCHOR76]
2169	cmp	w3, w0
2170	bls	.L222
2171	add	w0, w0, 1
2172	str	w0, [x1, #:lo12:.LANCHOR76]
2173	adrp	x0, .LANCHOR43
2174	adrp	x1, .LANCHOR5
2175	add	x1, x1, :lo12:.LANCHOR5
2176	ldr	x4, [x0, #:lo12:.LANCHOR43]
2177	mov	w0, 0
2178.L224:
2179	ldrh	w3, [x1]
2180	cmp	w0, w3
2181	bcs	.L222
2182	ubfiz	x5, x0, 1, 32
2183	add	w0, w0, 1
2184	ldrh	w3, [x4, x5]
2185	add	w3, w3, 1
2186	strh	w3, [x4, x5]
2187	b	.L224
2188.L227:
2189	adrp	x0, .LANCHOR48
2190	ldrh	w0, [x0, #:lo12:.LANCHOR48]
2191	add	w0, w0, w0, lsl 1
2192	lsr	w0, w0, 2
2193	bl	GetFreeBlockMaxEraseCount
2194	and	w6, w0, 65535
2195	add	w0, w7, 64
2196	cmp	w6, w0
2197	bcc	.L229
2198	adrp	x0, .LANCHOR41
2199	ldr	x0, [x0, #:lo12:.LANCHOR41]
2200	cbz	x0, .L229
2201	adrp	x1, .LANCHOR5
2202	mov	w3, 65535
2203	mov	x14, -6148914691236517206
2204	mov	w2, w3
2205	ldrh	w13, [x1, #:lo12:.LANCHOR5]
2206	adrp	x1, .LANCHOR40
2207	mov	w12, w3
2208	movk	x14, 0xaaab, lsl 0
2209	ldr	x11, [x1, #:lo12:.LANCHOR40]
2210	adrp	x1, .LANCHOR43
2211	mov	w15, 6
2212	ldr	x4, [x1, #:lo12:.LANCHOR43]
2213	mov	w1, 0
2214.L230:
2215	ldrh	w5, [x0]
2216	cmp	w5, w12
2217	bne	.L233
2218	mov	w19, w2
2219.L232:
2220	mov	w0, 65535
2221	cmp	w19, w0
2222	beq	.L229
2223	ubfiz	x2, x19, 1, 32
2224	ldrh	w5, [x4, x2]
2225	cmp	w7, w5
2226	bcs	.L234
2227	bl	GetFreeBlockMinEraseCount
2228	cmp	w7, w0, uxth
2229	bcs	.L234
2230	str	w3, [x8, #:lo12:.LANCHOR77]
2231.L234:
2232	cmp	w10, w5
2233	bls	.L229
2234	add	w0, w5, 128
2235	cmp	w6, w0
2236	ble	.L229
2237	add	w0, w5, 256
2238	adrp	x1, .LANCHOR76
2239	cmp	w10, w0
2240	bhi	.L235
2241	ldr	w3, [x1, #:lo12:.LANCHOR76]
2242	add	w0, w5, 768
2243	cmp	w0, w3
2244	bcs	.L229
2245.L235:
2246	adrp	x0, .LANCHOR42
2247	ldr	w3, [x1, #:lo12:.LANCHOR76]
2248	mov	w1, w19
2249	ldr	x0, [x0, #:lo12:.LANCHOR42]
2250	ldrh	w4, [x0, x2]
2251	mov	w2, w10
2252	adrp	x0, .LC72
2253	add	x0, x0, :lo12:.LC72
2254	bl	printf
2255	adrp	x0, .LANCHOR87
2256	mov	w1, 1
2257	str	w1, [x0, #:lo12:.LANCHOR87]
2258	b	.L228
2259.L233:
2260	add	w1, w1, 1
2261	and	w1, w1, 65535
2262	cmp	w1, w13
2263	bhi	.L229
2264	ldrh	w16, [x0, 4]
2265	cbz	w16, .L231
2266	sub	x0, x0, x11
2267	asr	x0, x0, 1
2268	mul	x0, x0, x14
2269	and	w19, w0, 65535
2270	and	x0, x0, 65535
2271	ldrh	w0, [x4, x0, lsl 1]
2272	cmp	w7, w0
2273	bcs	.L232
2274	cmp	w3, w0
2275	bls	.L231
2276	mov	w3, w0
2277	mov	w2, w19
2278.L231:
2279	umaddl	x0, w5, w15, x11
2280	b	.L230
2281	.size	GetSwlReplaceBlock, .-GetSwlReplaceBlock
2282	.section	.text.free_data_superblock,"ax",@progbits
2283	.align	2
2284	.global	free_data_superblock
2285	.type	free_data_superblock, %function
2286free_data_superblock:
2287	and	w0, w0, 65535
2288	mov	w1, 65535
2289	cmp	w0, w1
2290	beq	.L249
2291	stp	x29, x30, [sp, -16]!
2292	adrp	x2, .LANCHOR42
2293	ubfiz	x1, x0, 1, 16
2294	add	x29, sp, 0
2295	ldr	x2, [x2, #:lo12:.LANCHOR42]
2296	strh	wzr, [x2, x1]
2297	bl	INSERT_FREE_LIST
2298	mov	w0, 0
2299	ldp	x29, x30, [sp], 16
2300	ret
2301.L249:
2302	mov	w0, 0
2303	ret
2304	.size	free_data_superblock, .-free_data_superblock
2305	.section	.text.get_new_active_ppa,"ax",@progbits
2306	.align	2
2307	.global	get_new_active_ppa
2308	.type	get_new_active_ppa, %function
2309get_new_active_ppa:
2310	stp	x29, x30, [sp, -48]!
2311	add	x29, sp, 0
2312	stp	x19, x20, [sp, 16]
2313	mov	x19, x0
2314	ldrh	w1, [x0]
2315	mov	w0, 65535
2316	str	x21, [sp, 32]
2317	cmp	w1, w0
2318	bne	.L253
2319	adrp	x1, .LANCHOR88
2320	adrp	x0, .LC1
2321	mov	w2, 2710
2322	add	x1, x1, :lo12:.LANCHOR88
2323	add	x0, x0, :lo12:.LC1
2324	bl	printf
2325.L253:
2326	adrp	x20, .LANCHOR19
2327	ldrh	w1, [x19, 2]
2328	ldrh	w0, [x20, #:lo12:.LANCHOR19]
2329	cmp	w1, w0
2330	bne	.L254
2331	adrp	x1, .LANCHOR88
2332	adrp	x0, .LC1
2333	mov	w2, 2711
2334	add	x1, x1, :lo12:.LANCHOR88
2335	add	x0, x0, :lo12:.LC1
2336	bl	printf
2337.L254:
2338	ldrh	w0, [x19, 4]
2339	cbnz	w0, .L255
2340	adrp	x1, .LANCHOR88
2341	adrp	x0, .LC1
2342	mov	w2, 2712
2343	add	x1, x1, :lo12:.LANCHOR88
2344	add	x0, x0, :lo12:.LC1
2345	bl	printf
2346.L255:
2347	ldrb	w0, [x19, 6]
2348	adrp	x1, .LANCHOR3
2349	strb	wzr, [x19, 10]
2350	add	x0, x0, 8
2351	ldrh	w2, [x1, #:lo12:.LANCHOR3]
2352	mov	w1, 65535
2353	ldrh	w0, [x19, x0, lsl 1]
2354.L256:
2355	cmp	w0, w1
2356	beq	.L258
2357	ldrh	w21, [x19, 2]
2358	mov	w3, 65535
2359	ldrh	w1, [x19, 4]
2360	orr	w21, w21, w0, lsl 10
2361	ldrb	w0, [x19, 6]
2362	sub	w1, w1, #1
2363	and	w1, w1, 65535
2364	strh	w1, [x19, 4]
2365.L260:
2366	add	w0, w0, 1
2367	and	w0, w0, 255
2368	cmp	w2, w0
2369	bne	.L259
2370	ldrh	w0, [x19, 2]
2371	add	w0, w0, 1
2372	strh	w0, [x19, 2]
2373	mov	w0, 0
2374.L259:
2375	add	x4, x19, x0, sxtw 1
2376	ldrh	w4, [x4, 16]
2377	cmp	w4, w3
2378	beq	.L260
2379	strb	w0, [x19, 6]
2380	ldrh	w2, [x19, 2]
2381	ldrh	w0, [x20, #:lo12:.LANCHOR19]
2382	cmp	w2, w0
2383	bne	.L252
2384	cbz	w1, .L252
2385	adrp	x1, .LANCHOR88
2386	adrp	x0, .LC1
2387	mov	w2, 2733
2388	add	x1, x1, :lo12:.LANCHOR88
2389	add	x0, x0, :lo12:.LC1
2390	bl	printf
2391.L252:
2392	mov	w0, w21
2393	ldr	x21, [sp, 32]
2394	ldp	x19, x20, [sp, 16]
2395	ldp	x29, x30, [sp], 48
2396	ret
2397.L258:
2398	ldrb	w0, [x19, 6]
2399	add	w0, w0, 1
2400	and	w0, w0, 255
2401	strb	w0, [x19, 6]
2402	cmp	w0, w2
2403	bne	.L257
2404	ldrh	w0, [x19, 2]
2405	strb	wzr, [x19, 6]
2406	add	w0, w0, 1
2407	strh	w0, [x19, 2]
2408.L257:
2409	ldrb	w0, [x19, 6]
2410	add	x0, x0, 8
2411	ldrh	w0, [x19, x0, lsl 1]
2412	b	.L256
2413	.size	get_new_active_ppa, .-get_new_active_ppa
2414	.section	.text.FtlGcBufInit,"ax",@progbits
2415	.align	2
2416	.global	FtlGcBufInit
2417	.type	FtlGcBufInit, %function
2418FtlGcBufInit:
2419	adrp	x1, .LANCHOR90
2420	adrp	x0, .LANCHOR89
2421	adrp	x7, .LANCHOR91
2422	adrp	x6, .LANCHOR92
2423	ldr	x5, [x1, #:lo12:.LANCHOR90]
2424	adrp	x1, .LANCHOR23
2425	str	wzr, [x0, #:lo12:.LANCHOR89]
2426	adrp	x0, .LANCHOR3
2427	ldrh	w10, [x1, #:lo12:.LANCHOR23]
2428	adrp	x1, .LANCHOR24
2429	ldrh	w0, [x0, #:lo12:.LANCHOR3]
2430	mov	w8, 24
2431	ldrh	w11, [x1, #:lo12:.LANCHOR24]
2432	adrp	x1, .LANCHOR93
2433	ldr	x14, [x7, #:lo12:.LANCHOR91]
2434	mov	x3, x5
2435	ldr	x4, [x1, #:lo12:.LANCHOR93]
2436	mov	w2, 0
2437	ldr	x15, [x6, #:lo12:.LANCHOR92]
2438	nop // between mem op and mult-accumulate
2439	umaddl	x8, w0, w8, x5
2440	add	x4, x4, 8
2441	mov	w1, 0
2442	mov	w16, 1
2443.L268:
2444	add	w13, w2, w10
2445	add	w12, w1, w11
2446	cmp	x3, x8
2447	bne	.L269
2448	adrp	x1, .LANCHOR94
2449	ldr	x7, [x7, #:lo12:.LANCHOR91]
2450	ldr	x6, [x6, #:lo12:.LANCHOR92]
2451	mov	w8, 24
2452	ldr	w4, [x1, #:lo12:.LANCHOR94]
2453.L270:
2454	cmp	w0, w4
2455	bcc	.L271
2456	ret
2457.L269:
2458	asr	w2, w2, 2
2459	asr	w1, w1, 2
2460	add	x2, x14, x2, sxtw 2
2461	add	x1, x15, x1, sxtw 2
2462	str	w16, [x3, 16]
2463	stp	x2, x1, [x3]
2464	add	x3, x3, 24
2465	stp	x2, x1, [x4]
2466	add	x4, x4, 32
2467	mov	w1, w12
2468	mov	w2, w13
2469	b	.L268
2470.L271:
2471	umull	x3, w0, w8
2472	mul	w1, w10, w0
2473	add	x2, x5, x3
2474	asr	w1, w1, 2
2475	add	x1, x7, x1, sxtw 2
2476	str	wzr, [x2, 16]
2477	str	x1, [x5, x3]
2478	mul	w1, w11, w0
2479	add	w0, w0, 1
2480	and	w0, w0, 65535
2481	asr	w1, w1, 2
2482	add	x1, x6, x1, sxtw 2
2483	str	x1, [x2, 8]
2484	b	.L270
2485	.size	FtlGcBufInit, .-FtlGcBufInit
2486	.section	.text.FtlGcBufFree,"ax",@progbits
2487	.align	2
2488	.global	FtlGcBufFree
2489	.type	FtlGcBufFree, %function
2490FtlGcBufFree:
2491	adrp	x2, .LANCHOR94
2492	mov	w3, 0
2493	mov	w8, 24
2494	ldr	w7, [x2, #:lo12:.LANCHOR94]
2495	adrp	x2, .LANCHOR90
2496	ldr	x5, [x2, #:lo12:.LANCHOR90]
2497.L273:
2498	cmp	w3, w1
2499	bcs	.L272
2500	ubfiz	x4, x3, 5, 16
2501	mov	w2, 0
2502	add	x4, x0, x4
2503	b	.L278
2504.L274:
2505	add	w2, w2, 1
2506	and	w2, w2, 65535
2507.L278:
2508	cmp	w2, w7
2509	bcs	.L275
2510	umull	x6, w2, w8
2511	add	x10, x5, x6
2512	ldr	x11, [x5, x6]
2513	ldr	x6, [x4, 8]
2514	cmp	x11, x6
2515	bne	.L274
2516	str	wzr, [x10, 16]
2517.L275:
2518	add	w3, w3, 1
2519	and	w3, w3, 65535
2520	b	.L273
2521.L272:
2522	ret
2523	.size	FtlGcBufFree, .-FtlGcBufFree
2524	.section	.text.FtlGcBufAlloc,"ax",@progbits
2525	.align	2
2526	.global	FtlGcBufAlloc
2527	.type	FtlGcBufAlloc, %function
2528FtlGcBufAlloc:
2529	adrp	x2, .LANCHOR94
2530	mov	w3, 0
2531	mov	w7, 24
2532	mov	w8, 1
2533	ldr	w5, [x2, #:lo12:.LANCHOR94]
2534	adrp	x2, .LANCHOR90
2535	ldr	x6, [x2, #:lo12:.LANCHOR90]
2536.L280:
2537	cmp	w3, w1
2538	bcs	.L279
2539	mov	w2, 0
2540	b	.L285
2541.L281:
2542	add	w2, w2, 1
2543	and	w2, w2, 65535
2544.L285:
2545	cmp	w2, w5
2546	bcs	.L282
2547	umaddl	x4, w2, w7, x6
2548	ldr	w10, [x4, 16]
2549	cbnz	w10, .L281
2550	ubfiz	x2, x3, 5, 16
2551	ldr	x10, [x4]
2552	add	x2, x0, x2
2553	str	w8, [x4, 16]
2554	ldr	x4, [x4, 8]
2555	stp	x10, x4, [x2, 8]
2556.L282:
2557	add	w3, w3, 1
2558	and	w3, w3, 65535
2559	b	.L280
2560.L279:
2561	ret
2562	.size	FtlGcBufAlloc, .-FtlGcBufAlloc
2563	.section	.text.IsBlkInGcList,"ax",@progbits
2564	.align	2
2565	.global	IsBlkInGcList
2566	.type	IsBlkInGcList, %function
2567IsBlkInGcList:
2568	adrp	x1, .LANCHOR95
2569	and	w0, w0, 65535
2570	ldrh	w2, [x1, #:lo12:.LANCHOR95]
2571	adrp	x1, .LANCHOR96
2572	ldr	x3, [x1, #:lo12:.LANCHOR96]
2573	mov	x1, 0
2574.L287:
2575	cmp	w2, w1, uxth
2576	bhi	.L289
2577	mov	w0, 0
2578	ret
2579.L289:
2580	add	x1, x1, 1
2581	add	x4, x3, x1, lsl 1
2582	ldrh	w4, [x4, -2]
2583	cmp	w4, w0
2584	bne	.L287
2585	mov	w0, 1
2586	ret
2587	.size	IsBlkInGcList, .-IsBlkInGcList
2588	.section	.text.FtlGcUpdatePage,"ax",@progbits
2589	.align	2
2590	.global	FtlGcUpdatePage
2591	.type	FtlGcUpdatePage, %function
2592FtlGcUpdatePage:
2593	mov	w6, w0
2594	mov	w10, w1
2595	mov	w8, w2
2596	stp	x29, x30, [sp, -16]!
2597	lsr	w0, w0, 10
2598	add	x29, sp, 0
2599	bl	P2V_block_in_plane
2600	and	w7, w0, 65535
2601	adrp	x4, .LANCHOR95
2602	adrp	x2, .LANCHOR96
2603	mov	x3, 0
2604	ldrh	w1, [x4, #:lo12:.LANCHOR95]
2605	ldr	x5, [x2, #:lo12:.LANCHOR96]
2606.L292:
2607	and	w2, w3, 65535
2608	cmp	w2, w1
2609	bcc	.L294
2610	bne	.L293
2611	and	x3, x3, 65535
2612	strh	w0, [x5, x3, lsl 1]
2613	ldrh	w0, [x4, #:lo12:.LANCHOR95]
2614	add	w0, w0, 1
2615	strh	w0, [x4, #:lo12:.LANCHOR95]
2616	b	.L293
2617.L294:
2618	add	x3, x3, 1
2619	add	x2, x5, x3, lsl 1
2620	ldrh	w2, [x2, -2]
2621	cmp	w2, w7
2622	bne	.L292
2623.L293:
2624	adrp	x4, .LANCHOR97
2625	adrp	x1, .LANCHOR98
2626	mov	w3, 12
2627	ldrh	w0, [x4, #:lo12:.LANCHOR97]
2628	ldr	x5, [x1, #:lo12:.LANCHOR98]
2629	umull	x3, w0, w3
2630	add	w0, w0, 1
2631	add	x7, x5, x3
2632	stp	w10, w8, [x7, 4]
2633	str	w6, [x5, x3]
2634	strh	w0, [x4, #:lo12:.LANCHOR97]
2635	ldp	x29, x30, [sp], 16
2636	ret
2637	.size	FtlGcUpdatePage, .-FtlGcUpdatePage
2638	.section	.text.FtlGcRefreshBlock,"ax",@progbits
2639	.align	2
2640	.global	FtlGcRefreshBlock
2641	.type	FtlGcRefreshBlock, %function
2642FtlGcRefreshBlock:
2643	stp	x29, x30, [sp, -32]!
2644	add	x29, sp, 0
2645	str	x19, [sp, 16]
2646	and	w19, w0, 65535
2647	mov	w1, w19
2648	adrp	x0, .LC73
2649	add	x0, x0, :lo12:.LC73
2650	bl	printf
2651	adrp	x3, .LANCHOR99
2652	ldrh	w4, [x3, #:lo12:.LANCHOR99]
2653	cmp	w19, w4
2654	beq	.L297
2655	adrp	x0, .LANCHOR100
2656	ldrh	w2, [x0, #:lo12:.LANCHOR100]
2657	cmp	w19, w2
2658	beq	.L297
2659	mov	w1, 65535
2660	cmp	w4, w1
2661	bne	.L298
2662	strh	w19, [x3, #:lo12:.LANCHOR99]
2663.L297:
2664	mov	w0, 0
2665	ldr	x19, [sp, 16]
2666	ldp	x29, x30, [sp], 32
2667	ret
2668.L298:
2669	cmp	w2, w1
2670	bne	.L297
2671	strh	w19, [x0, #:lo12:.LANCHOR100]
2672	b	.L297
2673	.size	FtlGcRefreshBlock, .-FtlGcRefreshBlock
2674	.section	.text.FtlGcMarkBadPhyBlk,"ax",@progbits
2675	.align	2
2676	.global	FtlGcMarkBadPhyBlk
2677	.type	FtlGcMarkBadPhyBlk, %function
2678FtlGcMarkBadPhyBlk:
2679	stp	x29, x30, [sp, -48]!
2680	add	x29, sp, 0
2681	stp	x19, x20, [sp, 16]
2682	and	w20, w0, 65535
2683	adrp	x19, .LANCHOR101
2684	str	x21, [sp, 32]
2685	mov	w0, w20
2686	bl	P2V_block_in_plane
2687	ldrh	w1, [x19, #:lo12:.LANCHOR101]
2688	mov	w2, w20
2689	mov	w21, w0
2690	adrp	x0, .LC74
2691	add	x0, x0, :lo12:.LC74
2692	bl	printf
2693	mov	w0, w21
2694	bl	FtlGcRefreshBlock
2695	ldrh	w0, [x19, #:lo12:.LANCHOR101]
2696	adrp	x2, .LANCHOR102
2697	add	x2, x2, :lo12:.LANCHOR102
2698	mov	x1, 0
2699.L301:
2700	cmp	w0, w1, uxth
2701	bhi	.L303
2702	cmp	w0, 15
2703	bhi	.L302
2704	add	w1, w0, 1
2705	strh	w1, [x19, #:lo12:.LANCHOR101]
2706	adrp	x1, .LANCHOR102
2707	add	x1, x1, :lo12:.LANCHOR102
2708	strh	w20, [x1, w0, sxtw 1]
2709	b	.L302
2710.L303:
2711	add	x1, x1, 1
2712	add	x3, x2, x1, lsl 1
2713	ldrh	w3, [x3, -2]
2714	cmp	w3, w20
2715	bne	.L301
2716.L302:
2717	mov	w0, 0
2718	ldr	x21, [sp, 32]
2719	ldp	x19, x20, [sp, 16]
2720	ldp	x29, x30, [sp], 48
2721	ret
2722	.size	FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
2723	.section	.text.FtlGcReFreshBadBlk,"ax",@progbits
2724	.align	2
2725	.global	FtlGcReFreshBadBlk
2726	.type	FtlGcReFreshBadBlk, %function
2727FtlGcReFreshBadBlk:
2728	adrp	x0, .LANCHOR101
2729	ldrh	w0, [x0, #:lo12:.LANCHOR101]
2730	cbz	w0, .L312
2731	adrp	x1, .LANCHOR99
2732	ldrh	w2, [x1, #:lo12:.LANCHOR99]
2733	mov	w1, 65535
2734	cmp	w2, w1
2735	bne	.L312
2736	stp	x29, x30, [sp, -32]!
2737	add	x29, sp, 0
2738	str	x19, [sp, 16]
2739	adrp	x19, .LANCHOR103
2740	ldrh	w1, [x19, #:lo12:.LANCHOR103]
2741	cmp	w1, w0
2742	bcc	.L307
2743	strh	wzr, [x19, #:lo12:.LANCHOR103]
2744.L307:
2745	ldrh	w1, [x19, #:lo12:.LANCHOR103]
2746	adrp	x0, .LANCHOR102
2747	add	x0, x0, :lo12:.LANCHOR102
2748	ldrh	w0, [x0, x1, lsl 1]
2749	bl	P2V_block_in_plane
2750	bl	FtlGcRefreshBlock
2751	ldrh	w0, [x19, #:lo12:.LANCHOR103]
2752	add	w0, w0, 1
2753	strh	w0, [x19, #:lo12:.LANCHOR103]
2754	mov	w0, 0
2755	ldr	x19, [sp, 16]
2756	ldp	x29, x30, [sp], 32
2757	ret
2758.L312:
2759	mov	w0, 0
2760	ret
2761	.size	FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
2762	.section	.text.ftl_malloc,"ax",@progbits
2763	.align	2
2764	.global	ftl_malloc
2765	.type	ftl_malloc, %function
2766ftl_malloc:
2767	mov	w1, 0
2768	sxtw	x0, w0
2769	b	kmalloc
2770	.size	ftl_malloc, .-ftl_malloc
2771	.section	.text.ftl_free,"ax",@progbits
2772	.align	2
2773	.global	ftl_free
2774	.type	ftl_free, %function
2775ftl_free:
2776	b	free
2777	.size	ftl_free, .-ftl_free
2778	.section	.text.rknand_print_hex,"ax",@progbits
2779	.align	2
2780	.global	rknand_print_hex
2781	.type	rknand_print_hex, %function
2782rknand_print_hex:
2783	stp	x29, x30, [sp, -96]!
2784	add	x29, sp, 0
2785	stp	x21, x22, [sp, 32]
2786	mov	x22, x1
2787	stp	x23, x24, [sp, 48]
2788	adrp	x24, .LC75
2789	stp	x25, x26, [sp, 64]
2790	mov	w23, w2
2791	stp	x27, x28, [sp, 80]
2792	adrp	x25, .LC77
2793	mov	x28, x0
2794	mov	w27, w3
2795	add	x24, x24, :lo12:.LC75
2796	add	x25, x25, :lo12:.LC77
2797	stp	x19, x20, [sp, 16]
2798	mov	w21, 0
2799	mov	x19, 0
2800	mov	w20, 0
2801	adrp	x26, .LC76
2802.L318:
2803	cmp	w27, w19
2804	bhi	.L324
2805	ldp	x19, x20, [sp, 16]
2806	adrp	x0, .LC78
2807	ldp	x21, x22, [sp, 32]
2808	add	x0, x0, :lo12:.LC78
2809	ldp	x23, x24, [sp, 48]
2810	ldp	x25, x26, [sp, 64]
2811	ldp	x27, x28, [sp, 80]
2812	ldp	x29, x30, [sp], 96
2813	b	printf
2814.L324:
2815	cbnz	w20, .L319
2816	mov	w2, w21
2817	mov	x1, x28
2818	mov	x0, x24
2819	bl	printf
2820.L319:
2821	cmp	w23, 4
2822	bne	.L320
2823	ldr	w1, [x22, x19, lsl 2]
2824.L327:
2825	add	x0, x26, :lo12:.LC76
2826.L326:
2827	bl	printf
2828	add	w20, w20, 1
2829	cmp	w20, 15
2830	bls	.L323
2831	mov	w20, 0
2832	adrp	x0, .LC78
2833	add	x0, x0, :lo12:.LC78
2834	bl	printf
2835.L323:
2836	add	x19, x19, 1
2837	add	w21, w21, w23
2838	b	.L318
2839.L320:
2840	cmp	w23, 2
2841	bne	.L322
2842	ldrsh	w1, [x22, x19, lsl 1]
2843	b	.L327
2844.L322:
2845	ldrb	w1, [x22, x19]
2846	mov	x0, x25
2847	b	.L326
2848	.size	rknand_print_hex, .-rknand_print_hex
2849	.section	.text.FlashReadPages,"ax",@progbits
2850	.align	2
2851	.global	FlashReadPages
2852	.type	FlashReadPages, %function
2853FlashReadPages:
2854	stp	x29, x30, [sp, -96]!
2855	adrp	x2, .LANCHOR0
2856	add	x3, x2, :lo12:.LANCHOR0
2857	ubfiz	x1, x1, 5, 32
2858	add	x29, sp, 0
2859	str	x25, [sp, 64]
2860	ldrh	w25, [x3, 12]
2861	stp	x21, x22, [sp, 32]
2862	adrp	x21, .LANCHOR104
2863	stp	x23, x24, [sp, 48]
2864	adrp	x22, .LC1
2865	stp	x19, x20, [sp, 16]
2866	add	x24, x0, x1
2867	mov	x19, x0
2868	mov	x23, x2
2869	add	x21, x21, :lo12:.LANCHOR104
2870	add	x22, x22, :lo12:.LC1
2871.L329:
2872	cmp	x19, x24
2873	bne	.L336
2874	ldp	x19, x20, [sp, 16]
2875	mov	w0, 0
2876	ldp	x21, x22, [sp, 32]
2877	ldp	x23, x24, [sp, 48]
2878	ldr	x25, [sp, 64]
2879	ldp	x29, x30, [sp], 96
2880	ret
2881.L336:
2882	ldr	x0, [x19, 8]
2883	cbz	x0, .L330
2884	ldr	x0, [x19, 16]
2885	cbnz	x0, .L331
2886.L330:
2887	mov	w2, 96
2888	mov	x1, x21
2889	mov	x0, x22
2890	bl	printf
2891.L331:
2892	ldr	w0, [x19, 4]
2893	adrp	x20, .LANCHOR105
2894	add	x20, x20, :lo12:.LANCHOR105
2895	add	x2, x29, 88
2896	add	x1, x29, 92
2897	bl	l2p_addr_tran.isra.0
2898	ldrb	w0, [x29, 88]
2899	ldr	w1, [x29, 92]
2900	ldp	x2, x3, [x19, 8]
2901	ldr	x4, [x20, 24]
2902	blr	x4
2903	str	w0, [x19]
2904	add	x0, x23, :lo12:.LANCHOR0
2905	ldrh	w0, [x0, 14]
2906	cmp	w0, 4
2907	bne	.L333
2908	ldrb	w0, [x29, 88]
2909	ldr	x4, [x20, 24]
2910	ldp	x2, x3, [x19, 8]
2911	ldr	w1, [x29, 92]
2912	add	x3, x3, 8
2913	add	x2, x2, 2048
2914	add	w1, w25, w1
2915	blr	x4
2916	cmn	w0, #1
2917	beq	.L334
2918	ldr	x0, [x19, 16]
2919	ldr	w1, [x0, 12]
2920	cmn	w1, #1
2921	bne	.L333
2922	ldr	w1, [x0, 8]
2923	cmn	w1, #1
2924	bne	.L333
2925	ldr	w0, [x0]
2926	cmn	w0, #1
2927	beq	.L333
2928.L334:
2929	mov	w0, -1
2930	str	w0, [x19]
2931.L333:
2932	add	x19, x19, 32
2933	b	.L329
2934	.size	FlashReadPages, .-FlashReadPages
2935	.section	.text.FtlLoadFactoryBbt,"ax",@progbits
2936	.align	2
2937	.global	FtlLoadFactoryBbt
2938	.type	FtlLoadFactoryBbt, %function
2939FtlLoadFactoryBbt:
2940	stp	x29, x30, [sp, -112]!
2941	adrp	x2, .LANCHOR107
2942	adrp	x0, .LANCHOR106
2943	add	x1, x0, :lo12:.LANCHOR106
2944	add	x29, sp, 0
2945	ldr	x2, [x2, #:lo12:.LANCHOR107]
2946	stp	x21, x22, [sp, 32]
2947	mov	x22, x0
2948	stp	x25, x26, [sp, 64]
2949	adrp	x26, .LANCHOR17
2950	stp	x27, x28, [sp, 80]
2951	add	x28, x26, :lo12:.LANCHOR17
2952	stp	x19, x20, [sp, 16]
2953	adrp	x20, .LANCHOR37
2954	stp	x23, x24, [sp, 48]
2955	add	x20, x20, :lo12:.LANCHOR37
2956	str	x2, [x1, 8]
2957	adrp	x2, .LANCHOR108
2958	adrp	x23, .LANCHOR10
2959	add	x20, x20, 12
2960	ldr	x25, [x2, #:lo12:.LANCHOR108]
2961	add	x23, x23, :lo12:.LANCHOR10
2962	mov	w21, 0
2963	mov	w27, -1
2964	str	x25, [x1, 16]
2965.L348:
2966	ldrh	w0, [x23]
2967	cmp	w21, w0
2968	bcc	.L353
2969	ldp	x19, x20, [sp, 16]
2970	mov	w0, 0
2971	ldp	x21, x22, [sp, 32]
2972	ldp	x23, x24, [sp, 48]
2973	ldp	x25, x26, [sp, 64]
2974	ldp	x27, x28, [sp, 80]
2975	ldp	x29, x30, [sp], 112
2976	ret
2977.L353:
2978	ldrh	w19, [x26, #:lo12:.LANCHOR17]
2979	add	x24, x22, :lo12:.LANCHOR106
2980	strh	w27, [x20]
2981	mov	w3, 61664
2982	sub	w19, w19, #1
2983	and	w19, w19, 65535
2984.L349:
2985	ldrh	w0, [x28]
2986	sub	w1, w0, #15
2987	cmp	w1, w19
2988	bgt	.L351
2989	madd	w0, w0, w21, w19
2990	mov	w2, 1
2991	str	w3, [x29, 108]
2992	mov	w1, w2
2993	lsl	w0, w0, 10
2994	str	w0, [x24, 4]
2995	mov	x0, x24
2996	bl	FlashReadPages
2997	ldr	w0, [x24]
2998	ldr	w3, [x29, 108]
2999	cmn	w0, #1
3000	beq	.L350
3001	ldrh	w0, [x25]
3002	cmp	w0, w3
3003	bne	.L350
3004	strh	w19, [x20]
3005.L351:
3006	add	w21, w21, 1
3007	add	x20, x20, 2
3008	b	.L348
3009.L350:
3010	sub	w19, w19, #1
3011	and	w19, w19, 65535
3012	b	.L349
3013	.size	FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
3014	.section	.text.FtlGetLastWrittenPage,"ax",@progbits
3015	.align	2
3016	.global	FtlGetLastWrittenPage
3017	.type	FtlGetLastWrittenPage, %function
3018FtlGetLastWrittenPage:
3019	stp	x29, x30, [sp, -160]!
3020	cmp	w1, 1
3021	add	x29, sp, 0
3022	stp	x23, x24, [sp, 48]
3023	mov	w23, w1
3024	stp	x19, x20, [sp, 16]
3025	stp	x21, x22, [sp, 32]
3026	bne	.L359
3027	adrp	x1, .LANCHOR20
3028	ldrh	w19, [x1, #:lo12:.LANCHOR20]
3029.L360:
3030	sub	w19, w19, #1
3031	adrp	x1, ftl_temp_buf
3032	sxth	w19, w19
3033	add	x1, x1, :lo12:ftl_temp_buf
3034	lsl	w21, w0, 10
3035	str	x1, [x29, 72]
3036	orr	w0, w19, w21
3037	add	x1, x29, 96
3038	str	w0, [x29, 68]
3039	mov	w2, w23
3040	str	x1, [x29, 80]
3041	add	x0, x29, 64
3042	mov	w1, 1
3043	bl	FlashReadPages
3044	ldr	w0, [x29, 96]
3045	cmn	w0, #1
3046	bne	.L361
3047	mov	w22, 0
3048	mov	w24, 2
3049.L362:
3050	cmp	w22, w19
3051	ble	.L365
3052.L361:
3053	mov	w0, w19
3054	ldp	x19, x20, [sp, 16]
3055	ldp	x21, x22, [sp, 32]
3056	ldp	x23, x24, [sp, 48]
3057	ldp	x29, x30, [sp], 160
3058	ret
3059.L359:
3060	adrp	x1, .LANCHOR19
3061	ldrh	w19, [x1, #:lo12:.LANCHOR19]
3062	b	.L360
3063.L365:
3064	add	w20, w22, w19
3065	mov	w2, w23
3066	mov	w1, 1
3067	sdiv	w20, w20, w24
3068	sxth	w0, w20
3069	orr	w0, w0, w21
3070	str	w0, [x29, 68]
3071	add	x0, x29, 64
3072	bl	FlashReadPages
3073	ldr	w0, [x29, 96]
3074	cmn	w0, #1
3075	bne	.L363
3076	ldr	w0, [x29, 100]
3077	cmn	w0, #1
3078	bne	.L363
3079	sub	w19, w20, #1
3080	sxth	w19, w19
3081	b	.L362
3082.L363:
3083	add	w20, w20, 1
3084	sxth	w22, w20
3085	b	.L362
3086	.size	FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
3087	.section	.text.FlashProgPages,"ax",@progbits
3088	.align	2
3089	.global	FlashProgPages
3090	.type	FlashProgPages, %function
3091FlashProgPages:
3092	stp	x29, x30, [sp, -144]!
3093	ubfiz	x1, x1, 5, 32
3094	add	x29, sp, 0
3095	stp	x25, x26, [sp, 64]
3096	mov	w25, w2
3097	mov	w26, w3
3098	adrp	x2, .LANCHOR0
3099	add	x3, x2, :lo12:.LANCHOR0
3100	stp	x27, x28, [sp, 80]
3101	stp	x19, x20, [sp, 16]
3102	mov	x20, x0
3103	stp	x21, x22, [sp, 32]
3104	mov	x19, x0
3105	ldrh	w27, [x3, 12]
3106	adrp	x21, .LANCHOR109
3107	stp	x23, x24, [sp, 48]
3108	adrp	x22, .LANCHOR105
3109	add	x24, x0, x1
3110	mov	x23, x2
3111	add	x21, x21, :lo12:.LANCHOR109
3112	add	x28, x22, :lo12:.LANCHOR105
3113.L368:
3114	cmp	x19, x24
3115	bne	.L376
3116	cbnz	w26, .L377
3117.L395:
3118	ldp	x19, x20, [sp, 16]
3119	mov	w0, 0
3120	ldp	x21, x22, [sp, 32]
3121	ldp	x23, x24, [sp, 48]
3122	ldp	x25, x26, [sp, 64]
3123	ldp	x27, x28, [sp, 80]
3124	ldp	x29, x30, [sp], 144
3125	ret
3126.L376:
3127	ldr	x0, [x19, 8]
3128	cbz	x0, .L369
3129	ldr	x0, [x19, 16]
3130	cbnz	x0, .L370
3131.L369:
3132	adrp	x0, .LC1
3133	mov	w2, 126
3134	mov	x1, x21
3135	add	x0, x0, :lo12:.LC1
3136	bl	printf
3137.L370:
3138	ldr	w0, [x19, 4]
3139	add	x2, x29, 104
3140	add	x1, x29, 108
3141	bl	l2p_addr_tran.isra.0
3142	add	x0, x22, :lo12:.LANCHOR105
3143	ldr	w1, [x29, 108]
3144	ldp	x2, x3, [x19, 8]
3145	ldr	x4, [x0, 16]
3146	ldrb	w0, [x29, 104]
3147	blr	x4
3148	cbnz	w0, .L371
3149	str	wzr, [x19]
3150.L372:
3151	add	x0, x23, :lo12:.LANCHOR0
3152	ldrh	w0, [x0, 14]
3153	cmp	w0, 4
3154	bne	.L374
3155	ldrb	w0, [x29, 104]
3156	ldr	x4, [x28, 16]
3157	ldp	x2, x3, [x19, 8]
3158	ldr	w1, [x29, 108]
3159	add	x3, x3, 8
3160	add	x2, x2, 2048
3161	add	w1, w27, w1
3162	blr	x4
3163	cbz	w0, .L374
3164	mov	w0, -1
3165	str	w0, [x19]
3166.L374:
3167	add	x19, x19, 32
3168	b	.L368
3169.L371:
3170	mov	w0, -1
3171	str	w0, [x19]
3172	b	.L372
3173.L381:
3174	str	wzr, [x22]
3175	mov	w2, w25
3176	str	wzr, [x24]
3177	mov	w1, 1
3178	stp	x22, x24, [x29, 120]
3179	ldr	w0, [x20, 4]
3180	str	w0, [x29, 116]
3181	add	x0, x29, 112
3182	bl	FlashReadPages
3183	ldr	w26, [x29, 112]
3184	cmn	w26, #1
3185	bne	.L378
3186	ldr	w1, [x20, 4]
3187	adrp	x0, .LC79
3188	add	x0, x0, :lo12:.LC79
3189	bl	printf
3190	str	w26, [x20]
3191.L378:
3192	ldr	x0, [x20, 16]
3193	cbz	x0, .L379
3194	ldr	w3, [x23, #:lo12:.LANCHOR110]
3195	ldr	w2, [x0]
3196	cmp	w2, w3
3197	beq	.L379
3198	ldr	w1, [x20, 4]
3199	adrp	x0, .LC80
3200	add	x0, x0, :lo12:.LC80
3201	bl	printf
3202	mov	w0, -1
3203	str	w0, [x20]
3204.L379:
3205	ldr	x0, [x20, 8]
3206	cbz	x0, .L380
3207	ldr	w3, [x21, #:lo12:check_buf]
3208	ldr	w2, [x0]
3209	cmp	w2, w3
3210	beq	.L380
3211	ldr	w1, [x20, 4]
3212	adrp	x0, .LC81
3213	add	x0, x0, :lo12:.LC81
3214	bl	printf
3215	mov	w0, -1
3216	str	w0, [x20]
3217.L380:
3218	add	x20, x20, 32
3219.L396:
3220	cmp	x20, x19
3221	bne	.L381
3222	b	.L395
3223.L377:
3224	adrp	x21, check_buf
3225	adrp	x23, .LANCHOR110
3226	add	x22, x21, :lo12:check_buf
3227	add	x24, x23, :lo12:.LANCHOR110
3228	b	.L396
3229	.size	FlashProgPages, .-FlashProgPages
3230	.section	.text.FlashEraseBlocks,"ax",@progbits
3231	.align	2
3232	.global	FlashEraseBlocks
3233	.type	FlashEraseBlocks, %function
3234FlashEraseBlocks:
3235	stp	x29, x30, [sp, -80]!
3236	adrp	x1, .LANCHOR0
3237	add	x3, x1, :lo12:.LANCHOR0
3238	ubfiz	x2, x2, 5, 32
3239	add	x29, sp, 0
3240	stp	x23, x24, [sp, 48]
3241	add	x2, x2, 4
3242	ldrh	w23, [x3, 12]
3243	stp	x19, x20, [sp, 16]
3244	add	x19, x0, 4
3245	stp	x21, x22, [sp, 32]
3246	mov	x20, x1
3247	adrp	x21, .LANCHOR105
3248	add	x22, x0, x2
3249	add	x24, x21, :lo12:.LANCHOR105
3250.L399:
3251	cmp	x19, x22
3252	bne	.L405
3253	ldp	x19, x20, [sp, 16]
3254	mov	w0, 0
3255	ldp	x21, x22, [sp, 32]
3256	ldp	x23, x24, [sp, 48]
3257	ldp	x29, x30, [sp], 80
3258	ret
3259.L405:
3260	ldr	w0, [x19]
3261	add	x2, x29, 72
3262	add	x1, x29, 76
3263	bl	l2p_addr_tran.isra.0
3264	add	x0, x21, :lo12:.LANCHOR105
3265	ldr	w1, [x29, 76]
3266	ldr	x2, [x0, 8]
3267	ldrb	w0, [x29, 72]
3268	blr	x2
3269	cbnz	w0, .L400
3270	str	wzr, [x19, -4]
3271.L401:
3272	add	x0, x20, :lo12:.LANCHOR0
3273	ldrh	w0, [x0, 14]
3274	cmp	w0, 4
3275	bne	.L403
3276	ldrb	w0, [x29, 72]
3277	ldr	x2, [x24, 8]
3278	ldr	w1, [x29, 76]
3279	add	w1, w23, w1
3280	blr	x2
3281	cbz	w0, .L403
3282	mov	w0, -1
3283	str	w0, [x19, -4]
3284.L403:
3285	add	x19, x19, 32
3286	b	.L399
3287.L400:
3288	mov	w0, -1
3289	str	w0, [x19, -4]
3290	b	.L401
3291	.size	FlashEraseBlocks, .-FlashEraseBlocks
3292	.section	.text.FtlFreeSysBlkQueueIn,"ax",@progbits
3293	.align	2
3294	.global	FtlFreeSysBlkQueueIn
3295	.type	FtlFreeSysBlkQueueIn, %function
3296FtlFreeSysBlkQueueIn:
3297	stp	x29, x30, [sp, -48]!
3298	add	x29, sp, 0
3299	stp	x19, x20, [sp, 16]
3300	and	w20, w0, 65535
3301	str	x21, [sp, 32]
3302	sub	w2, w20, #1
3303	mov	w0, 65533
3304	cmp	w0, w2, uxth
3305	bcc	.L410
3306	adrp	x0, .LANCHOR38
3307	add	x2, x0, :lo12:.LANCHOR38
3308	mov	x19, x0
3309	ldrh	w2, [x2, 6]
3310	cmp	w2, 1024
3311	beq	.L410
3312	and	w1, w1, 65535
3313	cbz	w1, .L412
3314	mov	w0, w20
3315	bl	P2V_block_in_plane
3316	and	w21, w0, 65535
3317	adrp	x0, .LANCHOR111
3318	lsl	w1, w20, 10
3319	mov	w2, 1
3320	ldr	x0, [x0, #:lo12:.LANCHOR111]
3321	str	w1, [x0, 4]
3322	mov	w1, w2
3323	bl	FlashEraseBlocks
3324	adrp	x1, .LANCHOR43
3325	ubfiz	x0, x21, 1, 16
3326	ldr	x2, [x1, #:lo12:.LANCHOR43]
3327	ldrh	w1, [x2, x0]
3328	add	w1, w1, 1
3329	strh	w1, [x2, x0]
3330	adrp	x1, .LANCHOR75
3331	ldr	w0, [x1, #:lo12:.LANCHOR75]
3332	add	w0, w0, 1
3333	str	w0, [x1, #:lo12:.LANCHOR75]
3334.L412:
3335	add	x0, x19, :lo12:.LANCHOR38
3336	ldrh	w1, [x0, 6]
3337	add	w1, w1, 1
3338	strh	w1, [x0, 6]
3339	ldrh	w1, [x0, 4]
3340	add	x2, x0, x1, sxtw 1
3341	add	w1, w1, 1
3342	and	w1, w1, 1023
3343	strh	w1, [x0, 4]
3344	strh	w20, [x2, 8]
3345.L410:
3346	ldp	x19, x20, [sp, 16]
3347	ldr	x21, [sp, 32]
3348	ldp	x29, x30, [sp], 48
3349	ret
3350	.size	FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
3351	.section	.text.FtlLowFormatEraseBlock,"ax",@progbits
3352	.align	2
3353	.global	FtlLowFormatEraseBlock
3354	.type	FtlLowFormatEraseBlock, %function
3355FtlLowFormatEraseBlock:
3356	stp	x29, x30, [sp, -144]!
3357	adrp	x7, .LANCHOR13
3358	add	x7, x7, :lo12:.LANCHOR13
3359	mov	x5, 0
3360	add	x29, sp, 0
3361	stp	x23, x24, [sp, 48]
3362	and	w24, w0, 65535
3363	adrp	x0, .LANCHOR112
3364	stp	x19, x20, [sp, 16]
3365	stp	x21, x22, [sp, 32]
3366	and	w23, w1, 255
3367	str	w24, [x0, #:lo12:.LANCHOR112]
3368	adrp	x0, .LANCHOR114
3369	adrp	x1, .LANCHOR113
3370	adrp	x20, .LANCHOR3
3371	adrp	x21, .LANCHOR111
3372	ldr	x11, [x0, #:lo12:.LANCHOR114]
3373	adrp	x0, .LANCHOR24
3374	ldrh	w8, [x20, #:lo12:.LANCHOR3]
3375	ldr	x6, [x21, #:lo12:.LANCHOR111]
3376	mov	w22, 0
3377	ldr	x10, [x1, #:lo12:.LANCHOR113]
3378	mov	w19, 0
3379	ldrh	w12, [x0, #:lo12:.LANCHOR24]
3380	stp	x25, x26, [sp, 64]
3381	stp	x27, x28, [sp, 80]
3382	stp	x0, x1, [x29, 120]
3383.L421:
3384	cmp	w8, w5, uxth
3385	bhi	.L425
3386	cbz	w22, .L420
3387	mov	w2, w22
3388	ubfiz	x22, x22, 5, 16
3389	mov	x25, 0
3390	mov	w1, 0
3391	mov	x0, x6
3392	bl	FlashEraseBlocks
3393.L429:
3394	ldr	x0, [x21, #:lo12:.LANCHOR111]
3395	add	x1, x0, x25
3396	ldr	w0, [x0, x25]
3397	cmn	w0, #1
3398	bne	.L428
3399	ldr	w0, [x1, 4]
3400	add	w19, w19, 1
3401	and	w19, w19, 65535
3402	lsr	w0, w0, 10
3403	bl	FtlBbmMapBadBlock
3404.L428:
3405	add	x25, x25, 32
3406	cmp	x25, x22
3407	bne	.L429
3408	cbz	w23, .L442
3409	adrp	x0, .LANCHOR20
3410	mov	w25, 1
3411	ldrh	w26, [x0, #:lo12:.LANCHOR20]
3412	lsr	w28, w26, 2
3413.L430:
3414	add	x0, x20, :lo12:.LANCHOR3
3415	adrp	x27, .LANCHOR13
3416	str	x0, [x29, 136]
3417	mov	w22, 0
3418	add	x0, x27, :lo12:.LANCHOR13
3419	str	x0, [x29, 112]
3420.L438:
3421	ldr	x0, [x29, 136]
3422	mov	x5, 0
3423	ldr	x6, [x21, #:lo12:.LANCHOR111]
3424	mov	w20, 0
3425	ldrh	w7, [x0]
3426	adrp	x0, .LANCHOR115
3427	ldr	x8, [x0, #:lo12:.LANCHOR115]
3428	ldr	x0, [x29, 128]
3429	ldr	x10, [x0, #:lo12:.LANCHOR113]
3430	ldr	x0, [x29, 120]
3431	ldrh	w11, [x0, #:lo12:.LANCHOR24]
3432.L431:
3433	cmp	w7, w5, uxth
3434	bhi	.L434
3435	cbz	w20, .L420
3436	mov	w1, w20
3437	mov	w3, 1
3438	mov	w2, w25
3439	mov	x0, x6
3440	bl	FlashProgPages
3441	mov	x27, 0
3442	ubfiz	x1, x20, 5, 16
3443.L437:
3444	ldr	x0, [x21, #:lo12:.LANCHOR111]
3445	add	x3, x0, x27
3446	ldr	w0, [x0, x27]
3447	cbz	w0, .L436
3448	ldr	w0, [x3, 4]
3449	add	w19, w19, 1
3450	str	x1, [x29, 104]
3451	and	w19, w19, 65535
3452	lsr	w0, w0, 10
3453	bl	FtlBbmMapBadBlock
3454	ldr	x1, [x29, 104]
3455.L436:
3456	add	x27, x27, 32
3457	cmp	x1, x27
3458	bne	.L437
3459	add	w22, w22, w28
3460	and	w22, w22, 65535
3461	cmp	w26, w22
3462	bhi	.L438
3463	mov	x22, 0
3464.L440:
3465	cbz	w23, .L439
3466	ldr	x0, [x21, #:lo12:.LANCHOR111]
3467	add	x1, x0, x22
3468	ldr	w0, [x0, x22]
3469	cbnz	w0, .L439
3470	ldr	w0, [x1, 4]
3471	mov	w1, 1
3472	lsr	w0, w0, 10
3473	bl	FtlFreeSysBlkQueueIn
3474.L439:
3475	add	x22, x22, 32
3476	cmp	x22, x27
3477	bne	.L440
3478	cmp	w24, 63
3479	ccmp	w23, 0, 0, hi
3480	beq	.L420
3481	ldr	x0, [x21, #:lo12:.LANCHOR111]
3482	mov	w2, w20
3483	mov	w1, w25
3484	bl	FlashEraseBlocks
3485.L420:
3486	mov	w0, w19
3487	ldp	x19, x20, [sp, 16]
3488	ldp	x21, x22, [sp, 32]
3489	ldp	x23, x24, [sp, 48]
3490	ldp	x25, x26, [sp, 64]
3491	ldp	x27, x28, [sp, 80]
3492	ldp	x29, x30, [sp], 144
3493	ret
3494.L425:
3495	lsl	x0, x5, 5
3496	mov	w1, w24
3497	str	wzr, [x6, x0]
3498	ldrb	w0, [x7, x5]
3499	bl	V2P_block
3500	and	w13, w0, 65535
3501	mov	w14, w13
3502	cbz	w23, .L422
3503	bl	IsBlkInVendorPart
3504	cbnz	w0, .L423
3505.L422:
3506	mov	w0, w14
3507	bl	FtlBbmIsBadBlock
3508	cbnz	w0, .L424
3509	ubfiz	x0, x22, 5, 16
3510	mul	w1, w22, w12
3511	add	x0, x6, x0
3512	add	w22, w22, 1
3513	and	w22, w22, 65535
3514	lsl	w13, w13, 10
3515	asr	w1, w1, 2
3516	add	x1, x11, x1, sxtw 2
3517	str	w13, [x0, 4]
3518	stp	x10, x1, [x0, 8]
3519.L423:
3520	add	x5, x5, 1
3521	b	.L421
3522.L424:
3523	add	w19, w19, 1
3524	and	w19, w19, 65535
3525	b	.L423
3526.L442:
3527	mov	w25, 0
3528	mov	w28, 6
3529	mov	w26, 1
3530	b	.L430
3531.L434:
3532	lsl	x0, x5, 5
3533	mov	w1, w24
3534	str	wzr, [x6, x0]
3535	ldr	x0, [x29, 112]
3536	ldrb	w0, [x0, x5]
3537	bl	V2P_block
3538	and	w12, w0, 65535
3539	mov	w13, w12
3540	cbz	w23, .L432
3541	bl	IsBlkInVendorPart
3542	cbnz	w0, .L433
3543.L432:
3544	mov	w0, w13
3545	bl	FtlBbmIsBadBlock
3546	cbnz	w0, .L433
3547	ubfiz	x0, x20, 5, 16
3548	mul	w1, w20, w11
3549	add	x0, x6, x0
3550	add	w20, w20, 1
3551	and	w20, w20, 65535
3552	add	w12, w22, w12, lsl 10
3553	asr	w1, w1, 2
3554	add	x1, x10, x1, sxtw 2
3555	str	w12, [x0, 4]
3556	stp	x8, x1, [x0, 8]
3557.L433:
3558	add	x5, x5, 1
3559	b	.L431
3560	.size	FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
3561	.section	.text.FtlFreeSysBlkQueueOut,"ax",@progbits
3562	.align	2
3563	.global	FtlFreeSysBlkQueueOut
3564	.type	FtlFreeSysBlkQueueOut, %function
3565FtlFreeSysBlkQueueOut:
3566	stp	x29, x30, [sp, -64]!
3567	add	x29, sp, 0
3568	stp	x19, x20, [sp, 16]
3569	adrp	x19, .LANCHOR38
3570	stp	x21, x22, [sp, 32]
3571	add	x19, x19, :lo12:.LANCHOR38
3572	adrp	x21, .LANCHOR75
3573	str	x23, [sp, 48]
3574	add	x21, x21, :lo12:.LANCHOR75
3575	adrp	x23, .LC83
3576	add	x23, x23, :lo12:.LC83
3577.L464:
3578	ldrh	w1, [x19, 6]
3579	cbz	w1, .L465
3580	ldrh	w0, [x19, 2]
3581	sub	w1, w1, #1
3582	strh	w1, [x19, 6]
3583	add	x2, x19, x0, sxtw 1
3584	add	w0, w0, 1
3585	and	w0, w0, 1023
3586	strh	w0, [x19, 2]
3587	ldrh	w20, [x2, 8]
3588	mov	w0, w20
3589	bl	P2V_block_in_plane
3590	and	w22, w0, 65535
3591	adrp	x0, .LANCHOR111
3592	lsl	w1, w20, 10
3593	mov	w2, 1
3594	ldr	x0, [x0, #:lo12:.LANCHOR111]
3595	str	w1, [x0, 4]
3596	mov	w1, w2
3597	bl	FlashEraseBlocks
3598	adrp	x1, .LANCHOR43
3599	ubfiz	x0, x22, 1, 16
3600	ldr	x2, [x1, #:lo12:.LANCHOR43]
3601	ldrh	w1, [x2, x0]
3602	add	w1, w1, 1
3603	strh	w1, [x2, x0]
3604	ldr	w0, [x21]
3605	sub	w1, w20, #1
3606	add	w0, w0, 1
3607	str	w0, [x21]
3608	mov	w0, 65533
3609	cmp	w0, w1, uxth
3610	bcc	.L466
3611	mov	w0, w20
3612	ldr	x23, [sp, 48]
3613	ldp	x19, x20, [sp, 16]
3614	ldp	x21, x22, [sp, 32]
3615	ldp	x29, x30, [sp], 64
3616	ret
3617.L465:
3618	adrp	x0, .LC82
3619	mov	w1, 0
3620	add	x0, x0, :lo12:.LC82
3621	bl	printf
3622.L468:
3623	b	.L468
3624.L466:
3625	ldrh	w2, [x19, 6]
3626	mov	w1, w20
3627	mov	x0, x23
3628	bl	printf
3629	b	.L464
3630	.size	FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
3631	.section	.text.ftl_map_blk_alloc_new_blk,"ax",@progbits
3632	.align	2
3633	.global	ftl_map_blk_alloc_new_blk
3634	.type	ftl_map_blk_alloc_new_blk, %function
3635ftl_map_blk_alloc_new_blk:
3636	stp	x29, x30, [sp, -48]!
3637	add	x29, sp, 0
3638	stp	x19, x20, [sp, 16]
3639	mov	x19, x0
3640	ldrh	w1, [x0, 10]
3641	mov	w20, 0
3642	ldr	x0, [x0, 16]
3643	str	x21, [sp, 32]
3644.L472:
3645	cmp	w20, w1
3646	beq	.L476
3647	mov	x21, x0
3648	ldrh	w2, [x0], 2
3649	cbnz	w2, .L473
3650	bl	FtlFreeSysBlkQueueOut
3651	and	w1, w0, 65535
3652	strh	w0, [x21]
3653	sub	w2, w1, #1
3654	mov	w0, 65533
3655	cmp	w0, w2, uxth
3656	bcs	.L474
3657	adrp	x0, .LANCHOR38+6
3658	ldrh	w2, [x0, #:lo12:.LANCHOR38+6]
3659	adrp	x0, .LC84
3660	add	x0, x0, :lo12:.LC84
3661	bl	printf
3662.L475:
3663	b	.L475
3664.L474:
3665	ldr	w0, [x19, 48]
3666	strh	wzr, [x19, 2]
3667	add	w0, w0, 1
3668	str	w0, [x19, 48]
3669	ldrh	w0, [x19, 8]
3670	strh	w20, [x19]
3671	add	w0, w0, 1
3672	strh	w0, [x19, 8]
3673.L476:
3674	ldrh	w0, [x19, 10]
3675	cmp	w0, w20
3676	bhi	.L478
3677	adrp	x1, .LANCHOR116
3678	adrp	x0, .LC1
3679	mov	w2, 581
3680	add	x1, x1, :lo12:.LANCHOR116
3681	add	x0, x0, :lo12:.LC1
3682	bl	printf
3683.L478:
3684	mov	w0, 0
3685	ldr	x21, [sp, 32]
3686	ldp	x19, x20, [sp, 16]
3687	ldp	x29, x30, [sp], 48
3688	ret
3689.L473:
3690	add	w20, w20, 1
3691	and	w20, w20, 65535
3692	b	.L472
3693	.size	ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
3694	.section	.text.ftl_memset,"ax",@progbits
3695	.align	2
3696	.global	ftl_memset
3697	.type	ftl_memset, %function
3698ftl_memset:
3699	uxtw	x2, w2
3700	b	memset
3701	.size	ftl_memset, .-ftl_memset
3702	.section	.text.FtlMemInit,"ax",@progbits
3703	.align	2
3704	.global	FtlMemInit
3705	.type	FtlMemInit, %function
3706FtlMemInit:
3707	stp	x29, x30, [sp, -208]!
3708	adrp	x0, .LANCHOR70
3709	mov	w1, 65535
3710	add	x29, sp, 0
3711	str	wzr, [x0, #:lo12:.LANCHOR70]
3712	adrp	x0, .LANCHOR71
3713	stp	x19, x20, [sp, 16]
3714	adrp	x19, .LANCHOR21
3715	str	wzr, [x0, #:lo12:.LANCHOR71]
3716	adrp	x0, .LANCHOR67
3717	stp	x21, x22, [sp, 32]
3718	adrp	x22, .LANCHOR3
3719	str	wzr, [x0, #:lo12:.LANCHOR67]
3720	adrp	x0, .LANCHOR64
3721	stp	x23, x24, [sp, 48]
3722	adrp	x21, .LANCHOR23
3723	str	wzr, [x0, #:lo12:.LANCHOR64]
3724	adrp	x0, .LANCHOR63
3725	stp	x25, x26, [sp, 64]
3726	adrp	x24, .LANCHOR108
3727	str	wzr, [x0, #:lo12:.LANCHOR63]
3728	adrp	x0, .LANCHOR65
3729	stp	x27, x28, [sp, 80]
3730	adrp	x23, .LANCHOR114
3731	str	wzr, [x0, #:lo12:.LANCHOR65]
3732	adrp	x0, .LANCHOR66
3733	adrp	x25, .LANCHOR42
3734	adrp	x27, .LANCHOR129
3735	str	wzr, [x0, #:lo12:.LANCHOR66]
3736	adrp	x0, .LANCHOR62
3737	adrp	x26, .LANCHOR130
3738	str	wzr, [x0, #:lo12:.LANCHOR62]
3739	adrp	x0, .LANCHOR72
3740	str	wzr, [x0, #:lo12:.LANCHOR72]
3741	adrp	x0, .LANCHOR73
3742	str	wzr, [x0, #:lo12:.LANCHOR73]
3743	adrp	x0, .LANCHOR75
3744	str	wzr, [x0, #:lo12:.LANCHOR75]
3745	adrp	x0, .LANCHOR76
3746	str	wzr, [x0, #:lo12:.LANCHOR76]
3747	adrp	x0, .LANCHOR77
3748	str	wzr, [x0, #:lo12:.LANCHOR77]
3749	adrp	x0, .LANCHOR117
3750	str	wzr, [x0, #:lo12:.LANCHOR117]
3751	adrp	x0, .LANCHOR87
3752	str	wzr, [x0, #:lo12:.LANCHOR87]
3753	adrp	x0, .LANCHOR118
3754	str	w1, [x0, #:lo12:.LANCHOR118]
3755	adrp	x0, .LANCHOR119
3756	adrp	x1, .LANCHOR99
3757	str	wzr, [x0, #:lo12:.LANCHOR119]
3758	adrp	x0, .LANCHOR84
3759	str	wzr, [x0, #:lo12:.LANCHOR84]
3760	adrp	x0, .LANCHOR112
3761	str	wzr, [x0, #:lo12:.LANCHOR112]
3762	mov	w0, -1
3763	strh	w0, [x1, #:lo12:.LANCHOR99]
3764	adrp	x1, .LANCHOR100
3765	strh	w0, [x1, #:lo12:.LANCHOR100]
3766	adrp	x0, .LANCHOR82
3767	mov	w1, 32
3768	strh	w1, [x0, #:lo12:.LANCHOR82]
3769	adrp	x0, .LANCHOR83
3770	mov	w1, 128
3771	strh	w1, [x0, #:lo12:.LANCHOR83]
3772	adrp	x0, .LANCHOR85
3773	strh	wzr, [x0, #:lo12:.LANCHOR85]
3774	adrp	x0, .LANCHOR101
3775	strh	wzr, [x0, #:lo12:.LANCHOR101]
3776	adrp	x0, .LANCHOR103
3777	strh	wzr, [x0, #:lo12:.LANCHOR103]
3778	ldrh	w0, [x19, #:lo12:.LANCHOR21]
3779	lsl	w0, w0, 1
3780	bl	ftl_malloc
3781	adrp	x1, .LANCHOR96
3782	str	x0, [x1, #:lo12:.LANCHOR96]
3783	mov	w0, 12
3784	ldrh	w1, [x19, #:lo12:.LANCHOR21]
3785	mul	w0, w1, w0
3786	bl	ftl_malloc
3787	ldrh	w19, [x22, #:lo12:.LANCHOR3]
3788	adrp	x3, .LANCHOR98
3789	str	x3, [x29, 104]
3790	lsl	w20, w19, 5
3791	lsl	w19, w19, 7
3792	str	x0, [x3, #:lo12:.LANCHOR98]
3793	mov	w0, w19
3794	bl	ftl_malloc
3795	adrp	x15, .LANCHOR120
3796	str	x15, [x29, 112]
3797	str	x0, [x15, #:lo12:.LANCHOR120]
3798	mov	w0, w20
3799	bl	ftl_malloc
3800	adrp	x11, .LANCHOR121
3801	str	x11, [x29, 120]
3802	str	x0, [x11, #:lo12:.LANCHOR121]
3803	mov	w0, w19
3804	bl	ftl_malloc
3805	adrp	x14, .LANCHOR122
3806	str	x14, [x29, 128]
3807	str	x0, [x14, #:lo12:.LANCHOR122]
3808	mov	w0, w20
3809	bl	ftl_malloc
3810	adrp	x13, .LANCHOR111
3811	str	x13, [x29, 136]
3812	str	x0, [x13, #:lo12:.LANCHOR111]
3813	mov	w0, w20
3814	bl	ftl_malloc
3815	adrp	x20, .LANCHOR94
3816	adrp	x12, .LANCHOR93
3817	ldrh	w19, [x21, #:lo12:.LANCHOR23]
3818	str	x12, [x29, 144]
3819	str	x0, [x12, #:lo12:.LANCHOR93]
3820	ldrh	w0, [x22, #:lo12:.LANCHOR3]
3821	lsl	w0, w0, 1
3822	add	w0, w0, 1
3823	str	w0, [x20, #:lo12:.LANCHOR94]
3824	mov	w0, w19
3825	bl	ftl_malloc
3826	adrp	x10, .LANCHOR107
3827	str	x10, [x29, 152]
3828	str	x0, [x10, #:lo12:.LANCHOR107]
3829	mov	w0, w19
3830	bl	ftl_malloc
3831	adrp	x8, .LANCHOR123
3832	str	x8, [x29, 160]
3833	str	x0, [x8, #:lo12:.LANCHOR123]
3834	mov	w0, w19
3835	bl	ftl_malloc
3836	adrp	x7, .LANCHOR124
3837	str	x7, [x29, 168]
3838	str	x0, [x7, #:lo12:.LANCHOR124]
3839	ldr	w0, [x20, #:lo12:.LANCHOR94]
3840	mul	w0, w19, w0
3841	bl	ftl_malloc
3842	adrp	x6, .LANCHOR91
3843	str	x6, [x29, 176]
3844	str	x0, [x6, #:lo12:.LANCHOR91]
3845	mov	w0, w19
3846	bl	ftl_malloc
3847	adrp	x5, .LANCHOR115
3848	str	x5, [x29, 184]
3849	str	x0, [x5, #:lo12:.LANCHOR115]
3850	mov	w0, w19
3851	bl	ftl_malloc
3852	adrp	x19, .LANCHOR24
3853	adrp	x4, .LANCHOR113
3854	ldr	w2, [x20, #:lo12:.LANCHOR94]
3855	str	x4, [x29, 192]
3856	str	x0, [x4, #:lo12:.LANCHOR113]
3857	mov	w0, 24
3858	mul	w0, w2, w0
3859	bl	ftl_malloc
3860	ldrh	w28, [x19, #:lo12:.LANCHOR24]
3861	adrp	x1, .LANCHOR90
3862	str	x0, [x1, #:lo12:.LANCHOR90]
3863	ldrh	w0, [x22, #:lo12:.LANCHOR3]
3864	adrp	x22, .LANCHOR92
3865	mul	w28, w28, w0
3866	mov	w0, w28
3867	bl	ftl_malloc
3868	str	x0, [x24, #:lo12:.LANCHOR108]
3869	lsl	w0, w28, 2
3870	bl	ftl_malloc
3871	str	x0, [x23, #:lo12:.LANCHOR114]
3872	ldrh	w1, [x19, #:lo12:.LANCHOR24]
3873	adrp	x28, .LANCHOR125
3874	ldr	w0, [x20, #:lo12:.LANCHOR94]
3875	adrp	x20, .LANCHOR6
3876	mul	w0, w1, w0
3877	bl	ftl_malloc
3878	str	x0, [x22, #:lo12:.LANCHOR92]
3879	ldrh	w0, [x20, #:lo12:.LANCHOR6]
3880	ubfiz	w0, w0, 1, 15
3881	strh	w0, [x28, #:lo12:.LANCHOR125]
3882	and	w0, w0, 65534
3883	bl	ftl_malloc
3884	adrp	x1, .LANCHOR126
3885	str	x0, [x1, #:lo12:.LANCHOR126]
3886	ldrh	w0, [x28, #:lo12:.LANCHOR125]
3887	add	x0, x0, 547
3888	lsr	x0, x0, 9
3889	strh	w0, [x28, #:lo12:.LANCHOR125]
3890	lsl	w0, w0, 9
3891	bl	ftl_malloc
3892	adrp	x1, .LANCHOR127
3893	ldrh	w28, [x20, #:lo12:.LANCHOR6]
3894	str	x0, [x1, #:lo12:.LANCHOR127]
3895	adrp	x1, .LANCHOR43
3896	lsl	w28, w28, 1
3897	add	x0, x0, 32
3898	str	x0, [x1, #:lo12:.LANCHOR43]
3899	mov	w0, w28
3900	bl	ftl_malloc
3901	adrp	x1, .LANCHOR128
3902	str	x0, [x1, #:lo12:.LANCHOR128]
3903	mov	w0, w28
3904	adrp	x28, .LANCHOR30
3905	bl	ftl_malloc
3906	str	x0, [x25, #:lo12:.LANCHOR42]
3907	ldr	w1, [x28, #:lo12:.LANCHOR30]
3908	lsl	w19, w1, 1
3909	mov	w0, w19
3910	bl	ftl_malloc
3911	str	x0, [x27, #:lo12:.LANCHOR129]
3912	mov	w0, w19
3913	bl	ftl_malloc
3914	str	x0, [x26, #:lo12:.LANCHOR130]
3915	ldrh	w0, [x20, #:lo12:.LANCHOR6]
3916	adrp	x19, .LANCHOR27
3917	lsr	w0, w0, 3
3918	add	w0, w0, 4
3919	bl	ftl_malloc
3920	adrp	x1, .LANCHOR1
3921	str	x0, [x1, #:lo12:.LANCHOR1]
3922	ldrh	w0, [x19, #:lo12:.LANCHOR27]
3923	lsl	w0, w0, 1
3924	bl	ftl_malloc
3925	adrp	x2, .LANCHOR36
3926	str	x0, [x2, #:lo12:.LANCHOR36]
3927	ldrh	w0, [x19, #:lo12:.LANCHOR27]
3928	lsl	w0, w0, 1
3929	bl	ftl_malloc
3930	adrp	x2, .LANCHOR131
3931	str	x0, [x2, #:lo12:.LANCHOR131]
3932	ldrh	w0, [x19, #:lo12:.LANCHOR27]
3933	adrp	x19, .LANCHOR43
3934	lsl	w0, w0, 2
3935	bl	ftl_malloc
3936	adrp	x1, .LANCHOR132
3937	str	x0, [x1, #:lo12:.LANCHOR132]
3938	adrp	x1, .LANCHOR28
3939	str	x1, [x29, 200]
3940	ldrh	w0, [x1, #:lo12:.LANCHOR28]
3941	lsl	w0, w0, 2
3942	bl	ftl_malloc
3943	ldr	x1, [x29, 200]
3944	adrp	x2, .LANCHOR133
3945	str	x0, [x2, #:lo12:.LANCHOR133]
3946	ldrh	w2, [x1, #:lo12:.LANCHOR28]
3947	mov	w1, 0
3948	lsl	w2, w2, 2
3949	bl	ftl_memset
3950	adrp	x0, .LANCHOR32
3951	ldrh	w0, [x0, #:lo12:.LANCHOR32]
3952	lsl	w0, w0, 2
3953	bl	ftl_malloc
3954	adrp	x1, .LANCHOR134
3955	str	x0, [x1, #:lo12:.LANCHOR134]
3956	ldr	w0, [x28, #:lo12:.LANCHOR30]
3957	adrp	x28, .LANCHOR33
3958	lsl	w0, w0, 2
3959	bl	ftl_malloc
3960	adrp	x1, .LANCHOR135
3961	str	x0, [x1, #:lo12:.LANCHOR135]
3962	ldrh	w0, [x28, #:lo12:.LANCHOR33]
3963	lsl	w0, w0, 4
3964	bl	ftl_malloc
3965	adrp	x1, .LANCHOR55
3966	str	x0, [x1, #:lo12:.LANCHOR55]
3967	ldrh	w1, [x28, #:lo12:.LANCHOR33]
3968	ldrh	w0, [x21, #:lo12:.LANCHOR23]
3969	adrp	x21, .LANCHOR10
3970	mul	w0, w1, w0
3971	bl	ftl_malloc
3972	adrp	x1, .LANCHOR136
3973	str	x0, [x1, #:lo12:.LANCHOR136]
3974	mov	w0, 6
3975	ldrh	w1, [x20, #:lo12:.LANCHOR6]
3976	adrp	x20, .LANCHOR137
3977	mul	w0, w1, w0
3978	bl	ftl_malloc
3979	adrp	x1, .LANCHOR40
3980	str	x0, [x1, #:lo12:.LANCHOR40]
3981	adrp	x0, .LANCHOR17
3982	ldrh	w1, [x21, #:lo12:.LANCHOR10]
3983	ldrh	w0, [x0, #:lo12:.LANCHOR17]
3984	add	w0, w0, 31
3985	asr	w0, w0, 5
3986	strh	w0, [x20, #:lo12:.LANCHOR137]
3987	mul	w0, w1, w0
3988	lsl	w0, w0, 2
3989	bl	ftl_malloc
3990	ldp	x3, x15, [x29, 104]
3991	adrp	x1, .LANCHOR37
3992	ldrh	w20, [x20, #:lo12:.LANCHOR137]
3993	add	x2, x1, :lo12:.LANCHOR37
3994	ldp	x11, x14, [x29, 120]
3995	mov	w30, w20
3996	ldp	x13, x12, [x29, 136]
3997	mov	x16, x3
3998	ldp	x10, x8, [x29, 152]
3999	str	x0, [x2, 32]
4000	ldp	x7, x6, [x29, 168]
4001	adrp	x17, .LANCHOR96
4002	ldp	x5, x4, [x29, 184]
4003	adrp	x3, .LANCHOR90
4004	ldrh	w28, [x21, #:lo12:.LANCHOR10]
4005	add	x21, x2, 40
4006	mov	x0, 1
4007	str	x19, [x29, 200]
4008.L482:
4009	cmp	w0, w28
4010	bcc	.L483
4011	mov	w2, 8
4012	sub	w2, w2, w0
4013	add	x2, x2, 1
4014	add	x1, x1, :lo12:.LANCHOR37
4015	mov	x19, 0
4016.L484:
4017	add	x19, x19, 1
4018	cmp	x19, x2
4019	bne	.L485
4020	ldr	x0, [x27, #:lo12:.LANCHOR129]
4021	cbnz	x0, .L486
4022.L488:
4023	adrp	x1, .LANCHOR138
4024	adrp	x0, .LC85
4025	add	x1, x1, :lo12:.LANCHOR138
4026	add	x0, x0, :lo12:.LC85
4027	bl	printf
4028	mov	w0, -1
4029.L481:
4030	ldp	x19, x20, [sp, 16]
4031	ldp	x21, x22, [sp, 32]
4032	ldp	x23, x24, [sp, 48]
4033	ldp	x25, x26, [sp, 64]
4034	ldp	x27, x28, [sp, 80]
4035	ldp	x29, x30, [sp], 208
4036	ret
4037.L483:
4038	ldr	x19, [x2, 32]
4039	add	w0, w0, 1
4040	add	x19, x19, x30, uxtw 2
4041	add	w30, w30, w20
4042	str	x19, [x21], 8
4043	b	.L482
4044.L485:
4045	add	x20, x0, x19
4046	add	x20, x1, x20, lsl 3
4047	str	xzr, [x20, 24]
4048	b	.L484
4049.L486:
4050	ldr	x0, [x26, #:lo12:.LANCHOR130]
4051	cbz	x0, .L488
4052	adrp	x0, .LANCHOR134
4053	ldr	x0, [x0, #:lo12:.LANCHOR134]
4054	cbz	x0, .L488
4055	adrp	x0, .LANCHOR135
4056	ldr	x0, [x0, #:lo12:.LANCHOR135]
4057	cbz	x0, .L488
4058	adrp	x0, .LANCHOR55
4059	ldr	x0, [x0, #:lo12:.LANCHOR55]
4060	cbz	x0, .L488
4061	adrp	x0, .LANCHOR136
4062	ldr	x0, [x0, #:lo12:.LANCHOR136]
4063	cbz	x0, .L488
4064	adrp	x0, .LANCHOR40
4065	ldr	x0, [x0, #:lo12:.LANCHOR40]
4066	cbz	x0, .L488
4067	adrp	x0, .LANCHOR37+32
4068	ldr	x0, [x0, #:lo12:.LANCHOR37+32]
4069	cbz	x0, .L488
4070	ldr	x0, [x25, #:lo12:.LANCHOR42]
4071	cbz	x0, .L488
4072	ldr	x0, [x17, #:lo12:.LANCHOR96]
4073	cbz	x0, .L488
4074	ldr	x0, [x16, #:lo12:.LANCHOR98]
4075	cbz	x0, .L488
4076	ldr	x0, [x15, #:lo12:.LANCHOR120]
4077	cbz	x0, .L488
4078	ldr	x0, [x14, #:lo12:.LANCHOR122]
4079	cbz	x0, .L488
4080	ldr	x0, [x13, #:lo12:.LANCHOR111]
4081	cbz	x0, .L488
4082	ldr	x0, [x12, #:lo12:.LANCHOR93]
4083	cbz	x0, .L488
4084	ldr	x0, [x11, #:lo12:.LANCHOR121]
4085	cbz	x0, .L488
4086	ldr	x0, [x10, #:lo12:.LANCHOR107]
4087	cbz	x0, .L488
4088	ldr	x0, [x8, #:lo12:.LANCHOR123]
4089	cbz	x0, .L488
4090	ldr	x0, [x7, #:lo12:.LANCHOR124]
4091	cbz	x0, .L488
4092	ldr	x0, [x6, #:lo12:.LANCHOR91]
4093	cbz	x0, .L488
4094	ldr	x0, [x5, #:lo12:.LANCHOR115]
4095	cbz	x0, .L488
4096	ldr	x0, [x4, #:lo12:.LANCHOR113]
4097	cbz	x0, .L488
4098	ldr	x0, [x3, #:lo12:.LANCHOR90]
4099	cbz	x0, .L488
4100	ldr	x0, [x24, #:lo12:.LANCHOR108]
4101	cbz	x0, .L488
4102	ldr	x0, [x23, #:lo12:.LANCHOR114]
4103	cbz	x0, .L488
4104	ldr	x0, [x22, #:lo12:.LANCHOR92]
4105	cbz	x0, .L488
4106	ldr	x0, [x29, 200]
4107	ldr	x0, [x0, #:lo12:.LANCHOR43]
4108	cbz	x0, .L488
4109	adrp	x0, .LANCHOR126
4110	ldr	x0, [x0, #:lo12:.LANCHOR126]
4111	cbz	x0, .L488
4112	adrp	x0, .LANCHOR36
4113	ldr	x0, [x0, #:lo12:.LANCHOR36]
4114	cbz	x0, .L488
4115	adrp	x0, .LANCHOR131
4116	ldr	x0, [x0, #:lo12:.LANCHOR131]
4117	cbz	x0, .L488
4118	adrp	x0, .LANCHOR132
4119	ldr	x0, [x0, #:lo12:.LANCHOR132]
4120	cbz	x0, .L488
4121	adrp	x0, .LANCHOR133
4122	ldr	x0, [x0, #:lo12:.LANCHOR133]
4123	cbz	x0, .L488
4124	mov	w0, 0
4125	b	.L481
4126	.size	FtlMemInit, .-FtlMemInit
4127	.section	.text.FtlBbt2Bitmap,"ax",@progbits
4128	.align	2
4129	.global	FtlBbt2Bitmap
4130	.type	FtlBbt2Bitmap, %function
4131FtlBbt2Bitmap:
4132	stp	x29, x30, [sp, -64]!
4133	add	x29, sp, 0
4134	stp	x21, x22, [sp, 32]
4135	mov	x22, x0
4136	adrp	x0, .LANCHOR137
4137	stp	x23, x24, [sp, 48]
4138	adrp	x21, .LANCHOR17
4139	adrp	x23, .LANCHOR139
4140	ldrh	w2, [x0, #:lo12:.LANCHOR137]
4141	add	x21, x21, :lo12:.LANCHOR17
4142	add	x23, x23, :lo12:.LANCHOR139
4143	stp	x19, x20, [sp, 16]
4144	mov	w24, 65535
4145	mov	x19, 0
4146	mov	x20, x1
4147	lsl	w2, w2, 2
4148	mov	w1, 0
4149	mov	x0, x20
4150	bl	ftl_memset
4151.L586:
4152	ldrh	w0, [x22, x19]
4153	cmp	w0, w24
4154	beq	.L583
4155	ldrh	w1, [x21]
4156	cmp	w1, w0
4157	bhi	.L585
4158	adrp	x0, .LC1
4159	mov	w2, 74
4160	mov	x1, x23
4161	add	x0, x0, :lo12:.LC1
4162	bl	printf
4163.L585:
4164	ldrh	w2, [x22, x19]
4165	mov	w1, 1
4166	add	x19, x19, 2
4167	cmp	x19, 1024
4168	ubfx	x0, x2, 5, 11
4169	lsl	w2, w1, w2
4170	lsl	x0, x0, 2
4171	ldr	w1, [x20, x0]
4172	orr	w1, w1, w2
4173	str	w1, [x20, x0]
4174	bne	.L586
4175.L583:
4176	ldp	x19, x20, [sp, 16]
4177	ldp	x21, x22, [sp, 32]
4178	ldp	x23, x24, [sp, 48]
4179	ldp	x29, x30, [sp], 64
4180	ret
4181	.size	FtlBbt2Bitmap, .-FtlBbt2Bitmap
4182	.section	.text.FtlBbtMemInit,"ax",@progbits
4183	.align	2
4184	.global	FtlBbtMemInit
4185	.type	FtlBbtMemInit, %function
4186FtlBbtMemInit:
4187	adrp	x1, .LANCHOR37
4188	add	x0, x1, :lo12:.LANCHOR37
4189	mov	w2, -1
4190	add	x0, x0, 12
4191	strh	w2, [x1, #:lo12:.LANCHOR37]
4192	mov	w2, 16
4193	strh	wzr, [x0, -6]
4194	mov	w1, 255
4195	b	ftl_memset
4196	.size	FtlBbtMemInit, .-FtlBbtMemInit
4197	.section	.text.FtlFreeSysBlkQueueInit,"ax",@progbits
4198	.align	2
4199	.global	FtlFreeSysBlkQueueInit
4200	.type	FtlFreeSysBlkQueueInit, %function
4201FtlFreeSysBlkQueueInit:
4202	stp	x29, x30, [sp, -16]!
4203	adrp	x1, .LANCHOR38
4204	add	x3, x1, :lo12:.LANCHOR38
4205	mov	w2, 2048
4206	add	x29, sp, 0
4207	strh	w0, [x1, #:lo12:.LANCHOR38]
4208	mov	w1, 0
4209	strh	wzr, [x3, 2]
4210	add	x0, x3, 8
4211	strh	wzr, [x3, 4]
4212	strh	wzr, [x3, 6]
4213	bl	ftl_memset
4214	mov	w0, 0
4215	ldp	x29, x30, [sp], 16
4216	ret
4217	.size	FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
4218	.section	.text.load_l2p_region,"ax",@progbits
4219	.align	2
4220	.global	load_l2p_region
4221	.type	load_l2p_region, %function
4222load_l2p_region:
4223	stp	x29, x30, [sp, -80]!
4224	add	x29, sp, 0
4225	stp	x23, x24, [sp, 48]
4226	adrp	x23, .LANCHOR32
4227	stp	x19, x20, [sp, 16]
4228	and	x19, x1, 65535
4229	stp	x21, x22, [sp, 32]
4230	and	w21, w0, 65535
4231	stp	x25, x26, [sp, 64]
4232	ldrh	w0, [x23, #:lo12:.LANCHOR32]
4233	cmp	w0, w21
4234	bcs	.L594
4235	adrp	x1, .LANCHOR140
4236	adrp	x0, .LC1
4237	mov	w2, 492
4238	add	x1, x1, :lo12:.LANCHOR140
4239	add	x0, x0, :lo12:.LC1
4240	bl	printf
4241.L594:
4242	adrp	x26, .LANCHOR134
4243	ubfiz	x0, x21, 2, 16
4244	adrp	x22, .LANCHOR55
4245	ldr	x1, [x26, #:lo12:.LANCHOR134]
4246	ldr	w24, [x1, x0]
4247	cbnz	w24, .L595
4248	ldr	x0, [x22, #:lo12:.LANCHOR55]
4249	lsl	x19, x19, 4
4250	adrp	x1, .LANCHOR23
4251	add	x0, x0, x19
4252	ldrh	w2, [x1, #:lo12:.LANCHOR23]
4253	mov	w1, 255
4254	ldr	x0, [x0, 8]
4255	bl	ftl_memset
4256	ldr	x0, [x22, #:lo12:.LANCHOR55]
4257	add	x1, x0, x19
4258	strh	w21, [x0, x19]
4259	str	wzr, [x1, 4]
4260.L596:
4261	mov	w0, 0
4262	ldp	x19, x20, [sp, 16]
4263	ldp	x21, x22, [sp, 32]
4264	ldp	x23, x24, [sp, 48]
4265	ldp	x25, x26, [sp, 64]
4266	ldp	x29, x30, [sp], 80
4267	ret
4268.L595:
4269	ldr	x0, [x22, #:lo12:.LANCHOR55]
4270	lsl	x19, x19, 4
4271	adrp	x20, .LANCHOR106
4272	add	x20, x20, :lo12:.LANCHOR106
4273	add	x0, x0, x19
4274	mov	w2, 1
4275	mov	w1, w2
4276	str	w24, [x20, 4]
4277	ldr	x0, [x0, 8]
4278	str	x0, [x20, 8]
4279	adrp	x0, .LANCHOR108
4280	ldr	x0, [x0, #:lo12:.LANCHOR108]
4281	str	x0, [x20, 16]
4282	mov	x0, x20
4283	bl	FlashReadPages
4284	ldr	x25, [x20, 16]
4285	ldrh	w0, [x25, 8]
4286	cmp	w0, w21
4287	beq	.L597
4288	mov	w2, w24
4289	mov	w1, w21
4290	adrp	x0, .LC86
4291	add	x0, x0, :lo12:.LC86
4292	bl	printf
4293	ldr	x1, [x20, 16]
4294	mov	w3, 4
4295	adrp	x0, .LC87
4296	mov	w2, w3
4297	add	x0, x0, :lo12:.LC87
4298	bl	rknand_print_hex
4299	ldrh	w3, [x23, #:lo12:.LANCHOR32]
4300	adrp	x0, .LC88
4301	ldr	x1, [x26, #:lo12:.LANCHOR134]
4302	mov	w2, 4
4303	add	x0, x0, :lo12:.LC88
4304	bl	rknand_print_hex
4305.L597:
4306	ldrh	w0, [x25, 8]
4307	cmp	w0, w21
4308	beq	.L598
4309	adrp	x1, .LANCHOR140
4310	adrp	x0, .LC1
4311	mov	w2, 513
4312	add	x1, x1, :lo12:.LANCHOR140
4313	add	x0, x0, :lo12:.LC1
4314	bl	printf
4315.L598:
4316	ldr	x0, [x22, #:lo12:.LANCHOR55]
4317	add	x1, x0, x19
4318	str	wzr, [x1, 4]
4319	strh	w21, [x0, x19]
4320	b	.L596
4321	.size	load_l2p_region, .-load_l2p_region
4322	.section	.text.ftl_free_no_use_map_blk,"ax",@progbits
4323	.align	2
4324	.global	ftl_free_no_use_map_blk
4325	.type	ftl_free_no_use_map_blk, %function
4326ftl_free_no_use_map_blk:
4327	stp	x29, x30, [sp, -80]!
4328	mov	w1, 0
4329	add	x29, sp, 0
4330	stp	x19, x20, [sp, 16]
4331	mov	x19, x0
4332	ldrh	w2, [x0, 10]
4333	stp	x21, x22, [sp, 32]
4334	ldp	x21, x20, [x0, 32]
4335	stp	x23, x24, [sp, 48]
4336	stp	x25, x26, [sp, 64]
4337	lsl	w2, w2, 1
4338	ldr	x23, [x0, 16]
4339	mov	x0, x21
4340	bl	ftl_memset
4341	mov	w0, 0
4342.L601:
4343	ldrh	w1, [x19, 6]
4344	cmp	w1, w0
4345	bhi	.L605
4346	ldrh	w26, [x21]
4347	adrp	x24, .LANCHOR20
4348	add	x24, x24, :lo12:.LANCHOR20
4349	mov	w25, 0
4350	mov	w20, 0
4351.L606:
4352	ldrh	w0, [x19, 10]
4353	cmp	w0, w20
4354	bhi	.L610
4355	mov	w0, w25
4356	ldp	x19, x20, [sp, 16]
4357	ldp	x21, x22, [sp, 32]
4358	ldp	x23, x24, [sp, 48]
4359	ldp	x25, x26, [sp, 64]
4360	ldp	x29, x30, [sp], 80
4361	ret
4362.L605:
4363	ubfiz	x1, x0, 2, 16
4364	ldr	w2, [x20, x1]
4365	mov	w1, 0
4366	ubfx	x2, x2, 10, 16
4367.L602:
4368	ldrh	w3, [x19, 10]
4369	cmp	w3, w1
4370	bhi	.L604
4371	add	w0, w0, 1
4372	and	w0, w0, 65535
4373	b	.L601
4374.L604:
4375	ubfiz	x3, x1, 1, 16
4376	ldrh	w4, [x23, x3]
4377	cmp	w4, w2
4378	bne	.L603
4379	ldrh	w4, [x21, x3]
4380	add	w4, w4, 1
4381	strh	w4, [x21, x3]
4382.L603:
4383	add	w1, w1, 1
4384	and	w1, w1, 65535
4385	b	.L602
4386.L610:
4387	ldrh	w0, [x19]
4388	uxtw	x22, w20
4389	cmp	w0, w20
4390	bne	.L607
4391	ldrh	w0, [x24]
4392	ldrh	w1, [x19, 2]
4393	cmp	w1, w0
4394	bcs	.L607
4395	strh	w0, [x21, x22, lsl 1]
4396.L607:
4397	lsl	x22, x22, 1
4398	ldrh	w0, [x21, x22]
4399	cmp	w26, w0
4400	bls	.L608
4401	mov	w25, w20
4402	mov	w26, w0
4403.L608:
4404	cbnz	w0, .L609
4405	ldrh	w0, [x23, x22]
4406	cbz	w0, .L609
4407	mov	w1, 1
4408	bl	FtlFreeSysBlkQueueIn
4409	strh	wzr, [x23, x22]
4410	ldrh	w0, [x19, 8]
4411	sub	w0, w0, #1
4412	strh	w0, [x19, 8]
4413.L609:
4414	add	w20, w20, 1
4415	and	w20, w20, 65535
4416	b	.L606
4417	.size	ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
4418	.section	.text.Ftl_write_map_blk_to_last_page,"ax",@progbits
4419	.align	2
4420	.global	Ftl_write_map_blk_to_last_page
4421	.type	Ftl_write_map_blk_to_last_page, %function
4422Ftl_write_map_blk_to_last_page:
4423	stp	x29, x30, [sp, -64]!
4424	mov	w1, 65535
4425	add	x29, sp, 0
4426	stp	x19, x20, [sp, 16]
4427	mov	x19, x0
4428	ldr	x20, [x0, 16]
4429	stp	x21, x22, [sp, 32]
4430	ldrh	w0, [x0]
4431	str	x23, [sp, 48]
4432	cmp	w0, w1
4433	bne	.L616
4434	ldrh	w0, [x19, 8]
4435	cbz	w0, .L617
4436	adrp	x1, .LANCHOR141
4437	adrp	x0, .LC1
4438	mov	w2, 641
4439	add	x1, x1, :lo12:.LANCHOR141
4440	add	x0, x0, :lo12:.LC1
4441	bl	printf
4442.L617:
4443	ldrh	w0, [x19, 8]
4444	add	w0, w0, 1
4445	strh	w0, [x19, 8]
4446	bl	FtlFreeSysBlkQueueOut
4447	strh	w0, [x20]
4448	ldr	w0, [x19, 48]
4449	strh	wzr, [x19, 2]
4450	add	w0, w0, 1
4451	strh	wzr, [x19]
4452	str	w0, [x19, 48]
4453.L618:
4454	mov	w0, 0
4455	ldr	x23, [sp, 48]
4456	ldp	x19, x20, [sp, 16]
4457	ldp	x21, x22, [sp, 32]
4458	ldp	x29, x30, [sp], 64
4459	ret
4460.L616:
4461	ubfiz	x0, x0, 1, 16
4462	adrp	x1, .LANCHOR108
4463	adrp	x23, .LANCHOR107
4464	ldr	x22, [x19, 40]
4465	ldr	x1, [x1, #:lo12:.LANCHOR108]
4466	ldrh	w21, [x20, x0]
4467	adrp	x20, .LANCHOR106
4468	ldrh	w0, [x19, 2]
4469	add	x2, x20, :lo12:.LANCHOR106
4470	orr	w0, w0, w21, lsl 10
4471	str	w0, [x2, 4]
4472	ldr	x0, [x23, #:lo12:.LANCHOR107]
4473	str	x1, [x2, 16]
4474	str	x0, [x2, 8]
4475	ldr	w2, [x19, 48]
4476	str	w2, [x1, 4]
4477	mov	w2, -1291
4478	strh	w2, [x1, 8]
4479	ldrh	w2, [x19, 4]
4480	strh	w2, [x1]
4481	strh	w21, [x1, 2]
4482	adrp	x1, .LANCHOR20
4483	ldrh	w2, [x1, #:lo12:.LANCHOR20]
4484	mov	w1, 255
4485	lsl	w2, w2, 3
4486	bl	ftl_memset
4487	ldrh	w4, [x19, 6]
4488	mov	x1, 0
4489	ldr	x3, [x23, #:lo12:.LANCHOR107]
4490	mov	w2, 0
4491.L619:
4492	cmp	w4, w1, uxth
4493	bhi	.L621
4494	mov	w2, 1
4495	mov	w3, 0
4496	mov	w1, w2
4497	add	x0, x20, :lo12:.LANCHOR106
4498	bl	FlashProgPages
4499	ldrh	w0, [x19, 2]
4500	add	w0, w0, 1
4501	strh	w0, [x19, 2]
4502	mov	x0, x19
4503	bl	ftl_map_blk_gc
4504	b	.L618
4505.L621:
4506	ldr	w0, [x22, x1, lsl 2]
4507	cmp	w21, w0, lsr 10
4508	bne	.L620
4509	add	w2, w2, 1
4510	and	w2, w2, 65535
4511	ubfiz	x0, x2, 1, 16
4512	str	w1, [x3, x0, lsl 2]
4513	add	x0, x0, 1
4514	ldr	w5, [x22, x1, lsl 2]
4515	str	w5, [x3, x0, lsl 2]
4516.L620:
4517	add	x1, x1, 1
4518	b	.L619
4519	.size	Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
4520	.section	.text.FtlMapWritePage,"ax",@progbits
4521	.align	2
4522	.global	FtlMapWritePage
4523	.type	FtlMapWritePage, %function
4524FtlMapWritePage:
4525	stp	x29, x30, [sp, -112]!
4526	add	x29, sp, 0
4527	stp	x23, x24, [sp, 48]
4528	adrp	x23, .LANCHOR66
4529	stp	x25, x26, [sp, 64]
4530	adrp	x24, .LANCHOR142
4531	stp	x27, x28, [sp, 80]
4532	adrp	x26, .LANCHOR20
4533	stp	x19, x20, [sp, 16]
4534	mov	w25, w1
4535	mov	x19, x0
4536	mov	x27, x2
4537	add	x23, x23, :lo12:.LANCHOR66
4538	add	x24, x24, :lo12:.LANCHOR142
4539	add	x28, x26, :lo12:.LANCHOR20
4540	stp	x21, x22, [sp, 32]
4541	mov	w22, 0
4542.L627:
4543	ldr	w0, [x23]
4544	ldrh	w1, [x19, 2]
4545	add	w0, w0, 1
4546	str	w0, [x23]
4547	ldrh	w0, [x26, #:lo12:.LANCHOR20]
4548	sub	w0, w0, #1
4549	cmp	w1, w0
4550	bge	.L628
4551	ldrh	w1, [x19]
4552	mov	w0, 65535
4553	cmp	w1, w0
4554	bne	.L629
4555.L628:
4556	mov	x0, x19
4557	bl	Ftl_write_map_blk_to_last_page
4558.L629:
4559	ldrh	w1, [x19]
4560	ldr	x0, [x19, 16]
4561	ldrh	w0, [x0, x1, lsl 1]
4562	cbnz	w0, .L630
4563	adrp	x0, .LC1
4564	mov	w2, 699
4565	mov	x1, x24
4566	add	x0, x0, :lo12:.LC1
4567	bl	printf
4568.L630:
4569	ldrh	w1, [x19]
4570	ldrh	w0, [x19, 10]
4571	cmp	w1, w0
4572	bcc	.L631
4573	adrp	x0, .LC1
4574	mov	w2, 700
4575	mov	x1, x24
4576	add	x0, x0, :lo12:.LC1
4577	bl	printf
4578.L631:
4579	ldrh	w1, [x19]
4580	adrp	x21, .LANCHOR106
4581	ldr	x0, [x19, 16]
4582	add	x20, x21, :lo12:.LANCHOR106
4583	mov	w2, 16
4584	ldrh	w3, [x0, x1, lsl 1]
4585	mov	w1, 0
4586	ldrh	w0, [x19, 2]
4587	str	w3, [x29, 108]
4588	str	x27, [x20, 8]
4589	orr	w0, w0, w3, lsl 10
4590	str	w0, [x20, 4]
4591	adrp	x0, .LANCHOR108
4592	ldr	x0, [x0, #:lo12:.LANCHOR108]
4593	str	x0, [x20, 16]
4594	bl	ftl_memset
4595	ldr	x0, [x20, 16]
4596	ldr	w1, [x19, 48]
4597	ldr	w3, [x29, 108]
4598	str	w1, [x0, 4]
4599	ldrh	w1, [x19, 4]
4600	strh	w1, [x0]
4601	strh	w3, [x0, 2]
4602	mov	w3, 1
4603	strh	w25, [x0, 8]
4604	mov	w1, w3
4605	mov	w2, w3
4606	mov	x0, x20
4607	bl	FlashProgPages
4608	ldrh	w0, [x19, 2]
4609	ldr	w1, [x21, #:lo12:.LANCHOR106]
4610	add	w0, w0, 1
4611	and	w0, w0, 65535
4612	strh	w0, [x19, 2]
4613	cmn	w1, #1
4614	bne	.L632
4615	ldr	w1, [x20, 4]
4616	adrp	x0, .LC89
4617	add	x0, x0, :lo12:.LC89
4618	add	w22, w22, 1
4619	and	w22, w22, 65535
4620	bl	printf
4621	ldrh	w0, [x19, 2]
4622	cmp	w0, 2
4623	bhi	.L633
4624	ldrh	w0, [x28]
4625	sub	w0, w0, #1
4626	strh	w0, [x19, 2]
4627.L633:
4628	cmp	w22, 3
4629	bls	.L634
4630	add	x21, x21, :lo12:.LANCHOR106
4631	adrp	x0, .LC90
4632	mov	w2, w22
4633	add	x0, x0, :lo12:.LC90
4634	ldr	w1, [x21, 4]
4635	bl	printf
4636.L635:
4637	b	.L635
4638.L634:
4639	ldr	w0, [x19, 52]
4640	cbz	w0, .L627
4641.L644:
4642	b	.L644
4643.L632:
4644	cmp	w0, 1
4645	beq	.L627
4646	ldr	x0, [x19, 40]
4647	ldr	w1, [x20, 4]
4648	ldp	x21, x22, [sp, 32]
4649	ldp	x23, x24, [sp, 48]
4650	ldp	x27, x28, [sp, 80]
4651	str	w1, [x0, w25, uxtw 2]
4652	ldp	x19, x20, [sp, 16]
4653	mov	w0, 0
4654	ldp	x25, x26, [sp, 64]
4655	ldp	x29, x30, [sp], 112
4656	ret
4657	.size	FtlMapWritePage, .-FtlMapWritePage
4658	.section	.text.ftl_map_blk_gc,"ax",@progbits
4659	.align	2
4660	.global	ftl_map_blk_gc
4661	.type	ftl_map_blk_gc, %function
4662ftl_map_blk_gc:
4663	stp	x29, x30, [sp, -96]!
4664	add	x29, sp, 0
4665	stp	x19, x20, [sp, 16]
4666	mov	x19, x0
4667	stp	x23, x24, [sp, 48]
4668	adrp	x23, .LANCHOR20
4669	stp	x21, x22, [sp, 32]
4670	stp	x25, x26, [sp, 64]
4671	stp	x27, x28, [sp, 80]
4672	ldr	x20, [x0, 16]
4673	ldr	x24, [x0, 40]
4674	bl	ftl_free_no_use_map_blk
4675	ldrh	w1, [x19, 10]
4676	ldrh	w2, [x19, 8]
4677	sub	w1, w1, #4
4678	cmp	w2, w1
4679	blt	.L647
4680	ubfiz	x0, x0, 1, 16
4681	ldrh	w21, [x20, x0]
4682	cbz	w21, .L647
4683	ldr	w1, [x19, 52]
4684	cbnz	w1, .L647
4685	mov	w1, 1
4686	str	w1, [x19, 52]
4687	strh	wzr, [x20, x0]
4688	ldrh	w0, [x19, 8]
4689	ldrh	w1, [x19, 2]
4690	sub	w0, w0, #1
4691	strh	w0, [x19, 8]
4692	ldrh	w0, [x23, #:lo12:.LANCHOR20]
4693	cmp	w1, w0
4694	bcc	.L648
4695	mov	x0, x19
4696	bl	ftl_map_blk_alloc_new_blk
4697.L648:
4698	adrp	x25, .LANCHOR106
4699	adrp	x22, .LANCHOR143
4700	add	x26, x25, :lo12:.LANCHOR106
4701	add	x22, x22, :lo12:.LANCHOR143
4702	mov	w20, 0
4703.L649:
4704	ldrh	w0, [x19, 6]
4705	cmp	w0, w20
4706	bhi	.L653
4707	mov	w1, 1
4708	mov	w0, w21
4709	bl	FtlFreeSysBlkQueueIn
4710	str	wzr, [x19, 52]
4711.L647:
4712	ldrh	w1, [x19, 2]
4713	ldrh	w0, [x23, #:lo12:.LANCHOR20]
4714	cmp	w1, w0
4715	bcc	.L654
4716	mov	x0, x19
4717	bl	ftl_map_blk_alloc_new_blk
4718.L654:
4719	mov	w0, 0
4720	ldp	x19, x20, [sp, 16]
4721	ldp	x21, x22, [sp, 32]
4722	ldp	x23, x24, [sp, 48]
4723	ldp	x25, x26, [sp, 64]
4724	ldp	x27, x28, [sp, 80]
4725	ldp	x29, x30, [sp], 96
4726	ret
4727.L653:
4728	ubfiz	x27, x20, 2, 16
4729	ldr	w1, [x24, x27]
4730	cmp	w21, w1, lsr 10
4731	bne	.L650
4732	adrp	x2, .LANCHOR123
4733	add	x0, x25, :lo12:.LANCHOR106
4734	ldr	x2, [x2, #:lo12:.LANCHOR123]
4735	str	x2, [x0, 8]
4736	adrp	x2, .LANCHOR108
4737	str	w1, [x0, 4]
4738	ldr	x28, [x2, #:lo12:.LANCHOR108]
4739	mov	w2, 1
4740	str	x28, [x0, 16]
4741	mov	w1, w2
4742	bl	FlashReadPages
4743	ldrh	w0, [x28, 8]
4744	cmp	w0, w20
4745	beq	.L651
4746	adrp	x0, .LC1
4747	mov	w2, 613
4748	mov	x1, x22
4749	add	x0, x0, :lo12:.LC1
4750	bl	printf
4751.L651:
4752	ldr	w0, [x26]
4753	cmn	w0, #1
4754	bne	.L652
4755	str	wzr, [x24, x27]
4756.L650:
4757	add	w20, w20, 1
4758	and	w20, w20, 65535
4759	b	.L649
4760.L652:
4761	ldr	x2, [x26, 8]
4762	mov	w1, w20
4763	mov	x0, x19
4764	bl	FtlMapWritePage
4765	b	.L650
4766	.size	ftl_map_blk_gc, .-ftl_map_blk_gc
4767	.section	.text.flush_l2p_region,"ax",@progbits
4768	.align	2
4769	.global	flush_l2p_region
4770	.type	flush_l2p_region, %function
4771flush_l2p_region:
4772	stp	x29, x30, [sp, -32]!
4773	add	x29, sp, 0
4774	stp	x19, x20, [sp, 16]
4775	adrp	x20, .LANCHOR55
4776	ubfiz	x19, x0, 4, 16
4777	ldr	x0, [x20, #:lo12:.LANCHOR55]
4778	add	x1, x0, x19
4779	ldr	x2, [x1, 8]
4780	ldrh	w1, [x0, x19]
4781	adrp	x0, .LANCHOR144
4782	add	x0, x0, :lo12:.LANCHOR144
4783	bl	FtlMapWritePage
4784	ldr	x0, [x20, #:lo12:.LANCHOR55]
4785	add	x0, x0, x19
4786	ldp	x19, x20, [sp, 16]
4787	ldr	w1, [x0, 4]
4788	and	w1, w1, 2147483647
4789	str	w1, [x0, 4]
4790	mov	w0, 0
4791	ldp	x29, x30, [sp], 32
4792	ret
4793	.size	flush_l2p_region, .-flush_l2p_region
4794	.section	.text.log2phys,"ax",@progbits
4795	.align	2
4796	.global	log2phys
4797	.type	log2phys, %function
4798log2phys:
4799	stp	x29, x30, [sp, -80]!
4800	add	x29, sp, 0
4801	stp	x23, x24, [sp, 48]
4802	mov	x23, x1
4803	adrp	x1, .LANCHOR22
4804	stp	x19, x20, [sp, 16]
4805	stp	x21, x22, [sp, 32]
4806	mov	w24, w2
4807	ldrh	w19, [x1, #:lo12:.LANCHOR22]
4808	str	x25, [sp, 64]
4809	add	w1, w19, 7
4810	mov	x19, 1
4811	lsr	w22, w0, w1
4812	and	w22, w22, 65535
4813	lsl	x19, x19, x1
4814	adrp	x1, .LANCHOR61
4815	sub	w19, w19, #1
4816	ldr	w1, [x1, #:lo12:.LANCHOR61]
4817	and	w19, w19, w0
4818	and	x19, x19, 65535
4819	cmp	w0, w1
4820	bcc	.L662
4821	adrp	x1, .LANCHOR145
4822	adrp	x0, .LC1
4823	mov	w2, 808
4824	add	x1, x1, :lo12:.LANCHOR145
4825	add	x0, x0, :lo12:.LC1
4826	bl	printf
4827.L662:
4828	adrp	x21, .LANCHOR55
4829	adrp	x0, .LANCHOR33
4830	ldr	x2, [x21, #:lo12:.LANCHOR55]
4831	ldrh	w1, [x0, #:lo12:.LANCHOR33]
4832	mov	x0, 0
4833.L663:
4834	and	x20, x0, 65535
4835	cmp	w20, w1
4836	bcc	.L668
4837	bl	select_l2p_ram_region
4838	and	x20, x0, 65535
4839	ldr	x2, [x21, #:lo12:.LANCHOR55]
4840	ubfiz	x1, x20, 4, 16
4841	mov	w25, w0
4842	add	x3, x2, x1
4843	ldrh	w2, [x2, x1]
4844	mov	w1, 65535
4845	cmp	w2, w1
4846	beq	.L669
4847	ldr	w1, [x3, 4]
4848	tbz	w1, #31, .L669
4849	bl	flush_l2p_region
4850.L669:
4851	mov	w1, w25
4852	mov	w0, w22
4853	bl	load_l2p_region
4854	b	.L664
4855.L668:
4856	add	x0, x0, 1
4857	add	x3, x2, x0, lsl 4
4858	ldrh	w3, [x3, -16]
4859	cmp	w3, w22
4860	bne	.L663
4861.L664:
4862	ldr	x0, [x21, #:lo12:.LANCHOR55]
4863	add	x0, x0, x20, lsl 4
4864	cbnz	w24, .L665
4865	ldr	x0, [x0, 8]
4866	ldr	w0, [x0, x19, lsl 2]
4867	str	w0, [x23]
4868.L666:
4869	ldr	x0, [x21, #:lo12:.LANCHOR55]
4870	add	x20, x0, x20, lsl 4
4871	ldr	w0, [x20, 4]
4872	cmn	w0, #1
4873	beq	.L671
4874	add	w0, w0, 1
4875	str	w0, [x20, 4]
4876.L671:
4877	mov	w0, 0
4878	ldr	x25, [sp, 64]
4879	ldp	x19, x20, [sp, 16]
4880	ldp	x21, x22, [sp, 32]
4881	ldp	x23, x24, [sp, 48]
4882	ldp	x29, x30, [sp], 80
4883	ret
4884.L665:
4885	ldr	x1, [x0, 8]
4886	ldr	w2, [x23]
4887	str	w2, [x1, x19, lsl 2]
4888	ldr	w1, [x0, 4]
4889	orr	w1, w1, -2147483648
4890	str	w1, [x0, 4]
4891	adrp	x0, .LANCHOR56
4892	strh	w22, [x0, #:lo12:.LANCHOR56]
4893	b	.L666
4894	.size	log2phys, .-log2phys
4895	.section	.text.FtlReUsePrevPpa,"ax",@progbits
4896	.align	2
4897	.global	FtlReUsePrevPpa
4898	.type	FtlReUsePrevPpa, %function
4899FtlReUsePrevPpa:
4900	stp	x29, x30, [sp, -80]!
4901	add	x29, sp, 0
4902	stp	x21, x22, [sp, 32]
4903	adrp	x22, .LANCHOR42
4904	stp	x19, x20, [sp, 16]
4905	mov	w21, w0
4906	str	w1, [x29, 76]
4907	lsr	w0, w1, 10
4908	str	x23, [sp, 48]
4909	bl	P2V_block_in_plane
4910	ldr	x2, [x22, #:lo12:.LANCHOR42]
4911	and	w3, w0, 65535
4912	ubfiz	x20, x3, 1, 16
4913	ldrh	w1, [x2, x20]
4914	cbnz	w1, .L677
4915	adrp	x0, .LANCHOR47
4916	ldr	x19, [x0, #:lo12:.LANCHOR47]
4917	cbz	x19, .L678
4918	adrp	x2, .LANCHOR40
4919	mov	x5, -6148914691236517206
4920	movk	x5, 0xaaab, lsl 0
4921	adrp	x23, .LANCHOR48
4922	ldr	x2, [x2, #:lo12:.LANCHOR40]
4923	mov	w6, 65535
4924	ldrh	w4, [x23, #:lo12:.LANCHOR48]
4925	sub	x19, x19, x2
4926	asr	x19, x19, 1
4927	mul	x19, x19, x5
4928	mov	w5, 6
4929	and	w19, w19, 65535
4930.L679:
4931	cmp	w1, w4
4932	beq	.L678
4933	cmp	w19, w3
4934	bne	.L680
4935	mov	w1, w19
4936	add	x0, x0, :lo12:.LANCHOR47
4937	bl	List_remove_node
4938	ldrh	w0, [x23, #:lo12:.LANCHOR48]
4939	cbnz	w0, .L681
4940	adrp	x1, .LANCHOR146
4941	adrp	x0, .LC1
4942	mov	w2, 1688
4943	add	x1, x1, :lo12:.LANCHOR146
4944	add	x0, x0, :lo12:.LC1
4945	bl	printf
4946.L681:
4947	ldrh	w0, [x23, #:lo12:.LANCHOR48]
4948	sub	w0, w0, #1
4949	strh	w0, [x23, #:lo12:.LANCHOR48]
4950	mov	w0, w19
4951	bl	INSERT_DATA_LIST
4952	ldr	x1, [x22, #:lo12:.LANCHOR42]
4953	ldrh	w0, [x1, x20]
4954	add	w0, w0, 1
4955	strh	w0, [x1, x20]
4956.L678:
4957	add	x1, x29, 76
4958	mov	w2, 1
4959	mov	w0, w21
4960	bl	log2phys
4961	ldp	x19, x20, [sp, 16]
4962	ldp	x21, x22, [sp, 32]
4963	ldr	x23, [sp, 48]
4964	ldp	x29, x30, [sp], 80
4965	ret
4966.L680:
4967	umull	x19, w19, w5
4968	ldrh	w19, [x2, x19]
4969	cmp	w19, w6
4970	beq	.L678
4971	add	w1, w1, 1
4972	and	w1, w1, 65535
4973	b	.L679
4974.L677:
4975	add	w1, w1, 1
4976	strh	w1, [x2, x20]
4977	b	.L678
4978	.size	FtlReUsePrevPpa, .-FtlReUsePrevPpa
4979	.section	.text.ftl_scan_all_data,"ax",@progbits
4980	.align	2
4981	.global	ftl_scan_all_data
4982	.type	ftl_scan_all_data, %function
4983ftl_scan_all_data:
4984	sub	sp, sp, #96
4985	adrp	x0, .LC91
4986	mov	w1, 0
4987	add	x0, x0, :lo12:.LC91
4988	stp	x29, x30, [sp, 16]
4989	add	x29, sp, 16
4990	stp	x19, x20, [sp, 32]
4991	adrp	x20, .LANCHOR106
4992	stp	x21, x22, [sp, 48]
4993	mov	w19, 0
4994	adrp	x21, .LANCHOR61
4995	add	x22, x20, :lo12:.LANCHOR106
4996	add	x21, x21, :lo12:.LANCHOR61
4997	str	x23, [sp, 64]
4998	bl	printf
4999.L688:
5000	ldr	w0, [x21]
5001	cmp	w19, w0
5002	bcc	.L694
5003	ldp	x19, x20, [sp, 32]
5004	ldp	x21, x22, [sp, 48]
5005	ldp	x29, x30, [sp, 16]
5006	ldr	x23, [sp, 64]
5007	add	sp, sp, 96
5008	ret
5009.L694:
5010	mov	w2, 0
5011	add	x1, x29, 76
5012	mov	w0, w19
5013	bl	log2phys
5014	tst	x19, 2047
5015	bne	.L689
5016	ldr	w2, [x29, 76]
5017	adrp	x0, .LC92
5018	mov	w1, w19
5019	add	x0, x0, :lo12:.LC92
5020	bl	printf
5021.L689:
5022	ldr	w1, [x29, 76]
5023	cmn	w1, #1
5024	beq	.L691
5025	add	x0, x20, :lo12:.LANCHOR106
5026	str	wzr, [x20, #:lo12:.LANCHOR106]
5027	mov	w2, 0
5028	str	w1, [x0, 4]
5029	adrp	x1, .LANCHOR107
5030	str	w19, [x0, 24]
5031	ldr	x1, [x1, #:lo12:.LANCHOR107]
5032	str	x1, [x0, 8]
5033	adrp	x1, .LANCHOR108
5034	ldr	x23, [x1, #:lo12:.LANCHOR108]
5035	mov	w1, 1
5036	str	x23, [x0, 16]
5037	bl	FlashReadPages
5038	ldr	w0, [x20, #:lo12:.LANCHOR106]
5039	cmp	w0, 256
5040	ccmn	w0, #1, 4, ne
5041	beq	.L692
5042	ldr	w0, [x23, 8]
5043	cmp	w19, w0
5044	beq	.L691
5045.L692:
5046	ldp	x1, x0, [x22, 8]
5047	ldr	w2, [x1, 4]
5048	str	w2, [sp]
5049	ldr	w2, [x22, 4]
5050	ldp	w3, w4, [x0]
5051	ldp	w5, w6, [x0, 8]
5052	adrp	x0, .LC93
5053	ldr	w7, [x1]
5054	add	x0, x0, :lo12:.LC93
5055	mov	w1, w19
5056	bl	printf
5057.L691:
5058	add	w19, w19, 1
5059	b	.L688
5060	.size	ftl_scan_all_data, .-ftl_scan_all_data
5061	.section	.text.FtlReadRefresh,"ax",@progbits
5062	.align	2
5063	.global	FtlReadRefresh
5064	.type	FtlReadRefresh, %function
5065FtlReadRefresh:
5066	adrp	x1, .LANCHOR81
5067	add	x0, x1, :lo12:.LANCHOR81
5068	ldr	w2, [x0, 80]
5069	cbz	w2, .L697
5070	adrp	x1, .LANCHOR61
5071	ldr	w3, [x0, 84]
5072	ldr	w2, [x1, #:lo12:.LANCHOR61]
5073	cmp	w3, w2
5074	bcs	.L698
5075	stp	x29, x30, [sp, -160]!
5076	add	x29, sp, 0
5077	stp	x19, x20, [sp, 16]
5078	mov	x19, x0
5079	add	x20, x1, :lo12:.LANCHOR61
5080	str	x21, [sp, 32]
5081	mov	w21, 2048
5082.L703:
5083	ldr	w0, [x19, 84]
5084	ldr	w1, [x20]
5085	cmp	w0, w1
5086	bcs	.L700
5087	add	x1, x29, 60
5088	mov	w2, 0
5089	bl	log2phys
5090	ldr	w0, [x19, 84]
5091	ldr	w1, [x29, 60]
5092	add	w0, w0, 1
5093	str	w0, [x19, 84]
5094	cmn	w1, #1
5095	beq	.L701
5096	str	w0, [x29, 88]
5097	adrp	x0, ftl_temp_buf
5098	add	x0, x0, :lo12:ftl_temp_buf
5099	str	x0, [x29, 72]
5100	add	x0, x29, 96
5101	str	x0, [x29, 80]
5102	add	x0, x29, 160
5103	str	w1, [x29, 68]
5104	mov	w2, 0
5105	mov	w1, 1
5106	str	wzr, [x0, -96]!
5107	bl	FlashReadPages
5108	ldr	w0, [x29, 64]
5109	cmp	w0, 256
5110	bne	.L700
5111	ldr	w0, [x29, 60]
5112	lsr	w0, w0, 10
5113	bl	P2V_block_in_plane
5114	bl	FtlGcRefreshBlock
5115.L700:
5116	ldp	x19, x20, [sp, 16]
5117	mov	w0, -1
5118	ldr	x21, [sp, 32]
5119	ldp	x29, x30, [sp], 160
5120	ret
5121.L701:
5122	subs	w21, w21, #1
5123	bne	.L703
5124	b	.L700
5125.L698:
5126	adrp	x1, .LANCHOR62
5127	str	wzr, [x0, 84]
5128	ldr	w1, [x1, #:lo12:.LANCHOR62]
5129	stp	w1, wzr, [x0, 76]
5130.L707:
5131	mov	w0, 0
5132	ret
5133.L697:
5134	ldr	w4, [x0, 76]
5135	adrp	x0, .LANCHOR62
5136	ldr	w2, [x0, #:lo12:.LANCHOR62]
5137	add	w0, w2, 1048576
5138	cmp	w4, w0
5139	bhi	.L706
5140	adrp	x0, .LANCHOR76
5141	ldr	w0, [x0, #:lo12:.LANCHOR76]
5142	lsr	w3, w0, 10
5143	mov	w0, 33554432
5144	asr	w0, w0, w3
5145	add	w0, w0, w4
5146	cmp	w2, w0
5147	bhi	.L706
5148	adrp	x0, .LANCHOR39+28
5149	ldrb	w0, [x0, #:lo12:.LANCHOR39+28]
5150	cbnz	w0, .L707
5151.L706:
5152	add	x0, x1, :lo12:.LANCHOR81
5153	mov	w1, 1
5154	str	wzr, [x0, 84]
5155	stp	w2, w1, [x0, 76]
5156	b	.L707
5157	.size	FtlReadRefresh, .-FtlReadRefresh
5158	.section	.text.FtlMapBlkWriteDump_data,"ax",@progbits
5159	.align	2
5160	.global	FtlMapBlkWriteDump_data
5161	.type	FtlMapBlkWriteDump_data, %function
5162FtlMapBlkWriteDump_data:
5163	ldr	w1, [x0, 56]
5164	cbz	w1, .L713
5165	stp	x29, x30, [sp, -48]!
5166	adrp	x1, .LANCHOR106
5167	adrp	x2, .LANCHOR108
5168	add	x29, sp, 0
5169	stp	x19, x20, [sp, 16]
5170	mov	x19, x0
5171	ldrh	w20, [x0, 6]
5172	adrp	x0, .LANCHOR123
5173	ldr	x2, [x2, #:lo12:.LANCHOR108]
5174	ldr	x3, [x0, #:lo12:.LANCHOR123]
5175	add	x0, x1, :lo12:.LANCHOR106
5176	sub	w20, w20, #1
5177	ldr	x4, [x19, 40]
5178	and	w20, w20, 65535
5179	str	x21, [sp, 32]
5180	stp	x3, x2, [x0, 8]
5181	ubfiz	x2, x20, 2, 16
5182	str	wzr, [x19, 56]
5183	mov	x21, x1
5184	ldr	w2, [x4, x2]
5185	str	w2, [x0, 4]
5186	cbz	w2, .L715
5187	mov	w2, 1
5188	mov	w1, w2
5189	bl	FlashReadPages
5190.L716:
5191	add	x1, x21, :lo12:.LANCHOR106
5192	mov	x0, x19
5193	ldr	x21, [sp, 32]
5194	ldr	x2, [x1, 8]
5195	mov	w1, w20
5196	ldp	x19, x20, [sp, 16]
5197	ldp	x29, x30, [sp], 48
5198	b	FtlMapWritePage
5199.L715:
5200	adrp	x0, .LANCHOR23
5201	mov	w1, 255
5202	ldrh	w2, [x0, #:lo12:.LANCHOR23]
5203	mov	x0, x3
5204	bl	ftl_memset
5205	b	.L716
5206.L713:
5207	ret
5208	.size	FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data
5209	.section	.text.FtlScanSysBlk,"ax",@progbits
5210	.align	2
5211	.global	FtlScanSysBlk
5212	.type	FtlScanSysBlk, %function
5213FtlScanSysBlk:
5214	stp	x29, x30, [sp, -176]!
5215	mov	w1, 0
5216	add	x29, sp, 0
5217	stp	x25, x26, [sp, 64]
5218	adrp	x25, .LANCHOR135
5219	stp	x21, x22, [sp, 32]
5220	adrp	x21, .LANCHOR30
5221	ldr	x0, [x25, #:lo12:.LANCHOR135]
5222	adrp	x22, .LANCHOR132
5223	ldr	w2, [x21, #:lo12:.LANCHOR30]
5224	stp	x19, x20, [sp, 16]
5225	adrp	x20, .LANCHOR147
5226	stp	x23, x24, [sp, 48]
5227	adrp	x23, .LANCHOR35
5228	stp	x27, x28, [sp, 80]
5229	adrp	x27, .LANCHOR129
5230	lsl	w2, w2, 2
5231	strh	wzr, [x20, #:lo12:.LANCHOR147]
5232	strh	wzr, [x23, #:lo12:.LANCHOR35]
5233	bl	ftl_memset
5234	ldr	x0, [x27, #:lo12:.LANCHOR129]
5235	mov	w1, 0
5236	ldr	w2, [x21, #:lo12:.LANCHOR30]
5237	adrp	x19, .LANCHOR27
5238	adrp	x28, .LANCHOR36
5239	adrp	x24, .LANCHOR79
5240	lsl	w2, w2, 1
5241	bl	ftl_memset
5242	ldr	x0, [x22, #:lo12:.LANCHOR132]
5243	mov	w1, 0
5244	ldrh	w2, [x19, #:lo12:.LANCHOR27]
5245	lsl	w2, w2, 2
5246	bl	ftl_memset
5247	ldr	x0, [x28, #:lo12:.LANCHOR36]
5248	mov	w1, 0
5249	ldrh	w2, [x19, #:lo12:.LANCHOR27]
5250	lsl	w2, w2, 1
5251	bl	ftl_memset
5252	mov	w2, 12
5253	mov	w1, 255
5254	add	x0, x24, :lo12:.LANCHOR79
5255	bl	ftl_memset
5256	adrp	x0, .LANCHOR5
5257	stp	x22, x25, [x29, 144]
5258	str	x27, [x29, 160]
5259	ldrh	w0, [x0, #:lo12:.LANCHOR5]
5260	str	w0, [x29, 172]
5261	adrp	x0, .LANCHOR6
5262	add	x0, x0, :lo12:.LANCHOR6
5263	str	x0, [x29, 120]
5264	adrp	x0, .LANCHOR70
5265	add	x0, x0, :lo12:.LANCHOR70
5266	str	x0, [x29, 112]
5267.L721:
5268	ldr	x0, [x29, 120]
5269	ldr	w1, [x29, 172]
5270	ldrh	w0, [x0]
5271	cmp	w0, w1
5272	bls	.L761
5273	adrp	x0, .LANCHOR3
5274	adrp	x25, .LANCHOR120
5275	adrp	x6, .LANCHOR13
5276	mov	x5, 0
5277	ldrh	w12, [x0, #:lo12:.LANCHOR3]
5278	adrp	x0, .LANCHOR91
5279	ldr	x7, [x25, #:lo12:.LANCHOR120]
5280	mov	w22, 0
5281	ldr	x11, [x0, #:lo12:.LANCHOR91]
5282	adrp	x0, .LANCHOR92
5283	add	x6, x6, :lo12:.LANCHOR13
5284	ldr	x10, [x0, #:lo12:.LANCHOR92]
5285	adrp	x0, .LANCHOR24
5286	ldrh	w8, [x0, #:lo12:.LANCHOR24]
5287	b	.L762
5288.L723:
5289	ldrh	w1, [x29, 172]
5290	ldrb	w0, [x6, x5]
5291	bl	V2P_block
5292	and	w4, w0, 65535
5293	bl	FtlBbmIsBadBlock
5294	cbnz	w0, .L722
5295	ubfiz	x0, x22, 5, 16
5296	mul	w1, w22, w8
5297	add	x0, x7, x0
5298	add	w22, w22, 1
5299	and	w22, w22, 65535
5300	lsl	w4, w4, 10
5301	asr	w1, w1, 2
5302	add	x1, x10, x1, sxtw 2
5303	str	w4, [x0, 4]
5304	stp	x11, x1, [x0, 8]
5305.L722:
5306	add	x5, x5, 1
5307.L762:
5308	cmp	w12, w5, uxth
5309	bhi	.L723
5310	cbnz	w22, .L724
5311.L760:
5312	ldr	w0, [x29, 172]
5313	add	w26, w0, 1
5314	and	w0, w26, 65535
5315	str	w0, [x29, 172]
5316	b	.L721
5317.L724:
5318	mov	w1, w22
5319	mov	w2, 1
5320	mov	x0, x7
5321	bl	FlashReadPages
5322	ubfiz	x0, x22, 5, 16
5323	mov	x22, 0
5324	str	x0, [x29, 128]
5325	adrp	x0, .LANCHOR148
5326	add	x0, x0, :lo12:.LANCHOR148
5327	str	x0, [x29, 136]
5328.L759:
5329	ldr	x0, [x25, #:lo12:.LANCHOR120]
5330	add	x1, x0, x22
5331	ldr	w0, [x0, x22]
5332	ldr	w3, [x1, 4]
5333	cmn	w0, #1
5334	ldr	x27, [x1, 16]
5335	ubfx	x26, x3, 10, 16
5336	bne	.L727
5337	mov	w5, 16
5338	mov	w7, 65535
5339.L729:
5340	ldr	x0, [x25, #:lo12:.LANCHOR120]
5341	add	x6, x25, :lo12:.LANCHOR120
5342	mov	w2, 1
5343	str	w7, [x29, 100]
5344	add	x0, x0, x22
5345	str	x6, [x29, 104]
5346	str	w5, [x29, 168]
5347	ldr	w1, [x0, 4]
5348	add	w1, w1, 1
5349	str	w1, [x0, 4]
5350	mov	w1, w2
5351	bl	FlashReadPages
5352	ldrh	w0, [x27]
5353	ldr	w7, [x29, 100]
5354	ldr	w5, [x29, 168]
5355	cmp	w0, w7
5356	ldr	x6, [x29, 104]
5357	bne	.L726
5358	ldr	x0, [x6]
5359	mov	w1, -1
5360	str	w1, [x0, x22]
5361	ldr	x0, [x6]
5362	ldr	w0, [x0, x22]
5363	cmp	w0, w1
5364	bne	.L727
5365.L728:
5366	mov	w1, 0
5367	mov	w0, w26
5368	bl	FtlFreeSysBlkQueueIn
5369	b	.L732
5370.L726:
5371	ldr	x0, [x25, #:lo12:.LANCHOR120]
5372	ldr	w0, [x0, x22]
5373	cmn	w0, #1
5374	bne	.L727
5375	sub	w5, w5, #1
5376	ands	w5, w5, 65535
5377	bne	.L729
5378	b	.L728
5379.L727:
5380	adrp	x0, .LANCHOR70
5381	ldr	w1, [x0, #:lo12:.LANCHOR70]
5382	ldr	w0, [x27, 4]
5383	cmn	w1, #1
5384	beq	.L730
5385	cmp	w1, w0
5386	bhi	.L731
5387.L730:
5388	cmn	w0, #1
5389	beq	.L731
5390	ldr	x2, [x29, 112]
5391	add	w1, w0, 1
5392	str	w1, [x2]
5393.L731:
5394	ldrh	w1, [x27]
5395	mov	w2, 61604
5396	cmp	w1, w2
5397	beq	.L733
5398	bhi	.L734
5399	mov	w0, 61574
5400	cmp	w1, w0
5401	beq	.L735
5402.L732:
5403	ldr	x0, [x29, 128]
5404	add	x22, x22, 32
5405	cmp	x0, x22
5406	bne	.L759
5407	b	.L760
5408.L734:
5409	mov	w0, 61634
5410	cmp	w1, w0
5411	beq	.L736
5412	mov	w0, 65535
5413	cmp	w1, w0
5414	beq	.L728
5415	b	.L732
5416.L736:
5417	ldrh	w1, [x20, #:lo12:.LANCHOR147]
5418	ldr	w0, [x21, #:lo12:.LANCHOR30]
5419	cmp	w1, w0
5420	bls	.L738
5421	ldr	x1, [x29, 136]
5422	adrp	x0, .LC1
5423	mov	w2, 1211
5424	add	x0, x0, :lo12:.LC1
5425	bl	printf
5426.L738:
5427	ldr	w6, [x21, #:lo12:.LANCHOR30]
5428	ldr	x3, [x29, 152]
5429	ldrh	w1, [x20, #:lo12:.LANCHOR147]
5430	and	w2, w6, 65535
5431	sub	w0, w2, #1
5432	sub	w2, w2, w1
5433	sxth	x0, w0
5434	sub	w2, w2, #1
5435	ldr	x5, [x3, #:lo12:.LANCHOR135]
5436	sxth	w2, w2
5437.L739:
5438	cmp	w0, w2
5439	bgt	.L745
5440	tbz	w0, #31, .L779
5441	b	.L732
5442.L745:
5443	sxtw	x8, w0
5444	ldr	w11, [x27, 4]
5445	lsl	x7, x8, 2
5446	add	x10, x5, x7
5447	ldr	w7, [x5, x7]
5448	cmp	w11, w7
5449	bls	.L740
5450	ldr	w2, [x5]
5451	cbnz	w2, .L741
5452	cmp	w6, w1
5453	beq	.L741
5454	add	w1, w1, 1
5455	strh	w1, [x20, #:lo12:.LANCHOR147]
5456.L741:
5457	ldr	x1, [x29, 160]
5458	ldr	x6, [x1, #:lo12:.LANCHOR129]
5459	mov	w1, 0
5460.L742:
5461	cmp	w1, w0
5462	bne	.L743
5463	ldr	w1, [x27, 4]
5464	str	w1, [x10]
5465	strh	w26, [x6, x8, lsl 1]
5466	tbnz	w0, #31, .L732
5467	ldrh	w1, [x20, #:lo12:.LANCHOR147]
5468	ldr	w2, [x21, #:lo12:.LANCHOR30]
5469	sub	w2, w2, w1
5470	sub	w2, w2, #1
5471	cmp	w0, w2, sxth
5472	bgt	.L732
5473.L779:
5474	add	w1, w1, 1
5475	strh	w1, [x20, #:lo12:.LANCHOR147]
5476	ldr	w1, [x27, 4]
5477	str	w1, [x5, x0, lsl 2]
5478	ldr	x1, [x29, 160]
5479	ldr	x1, [x1, #:lo12:.LANCHOR129]
5480.L797:
5481	strh	w26, [x1, x0, lsl 1]
5482	b	.L732
5483.L743:
5484	sxtw	x2, w1
5485	add	w1, w1, 1
5486	lsl	x7, x2, 2
5487	lsl	x2, x2, 1
5488	add	x11, x5, x7
5489	sxth	w1, w1
5490	ldr	w11, [x11, 4]
5491	str	w11, [x5, x7]
5492	add	x7, x6, x2
5493	ldrh	w7, [x7, 2]
5494	strh	w7, [x6, x2]
5495	b	.L742
5496.L740:
5497	sub	w0, w0, #1
5498	sxth	x0, w0
5499	b	.L739
5500.L735:
5501	ldrh	w1, [x23, #:lo12:.LANCHOR35]
5502	ldrh	w0, [x19, #:lo12:.LANCHOR27]
5503	cmp	w1, w0
5504	bls	.L748
5505	ldr	x1, [x29, 136]
5506	adrp	x0, .LC1
5507	mov	w2, 1252
5508	add	x0, x0, :lo12:.LC1
5509	bl	printf
5510.L748:
5511	ldrh	w6, [x19, #:lo12:.LANCHOR27]
5512	ldrh	w2, [x23, #:lo12:.LANCHOR35]
5513	sub	w1, w6, #1
5514	sxth	x0, w1
5515	sub	w5, w1, w2
5516	ldr	x1, [x29, 144]
5517	ldr	x1, [x1, #:lo12:.LANCHOR132]
5518.L749:
5519	cmp	w0, w5
5520	ble	.L754
5521	sxtw	x7, w0
5522	ldr	w11, [x27, 4]
5523	lsl	x8, x7, 2
5524	add	x10, x1, x8
5525	ldr	w8, [x1, x8]
5526	cmp	w11, w8
5527	bls	.L750
5528	ldr	w5, [x1]
5529	cbnz	w5, .L751
5530	cmp	w6, w2
5531	beq	.L751
5532	add	w2, w2, 1
5533	strh	w2, [x23, #:lo12:.LANCHOR35]
5534.L751:
5535	ldr	x6, [x28, #:lo12:.LANCHOR36]
5536	mov	w2, 0
5537.L752:
5538	cmp	w2, w0
5539	bne	.L753
5540	ldr	w2, [x27, 4]
5541	str	w2, [x10]
5542	strh	w26, [x6, x7, lsl 1]
5543.L754:
5544	tbnz	w0, #31, .L732
5545	ldrh	w2, [x19, #:lo12:.LANCHOR27]
5546	ldrh	w5, [x23, #:lo12:.LANCHOR35]
5547	sub	w2, w2, #1
5548	sub	w2, w2, w5
5549	cmp	w0, w2, sxth
5550	bgt	.L732
5551	add	w5, w5, 1
5552	ldr	w2, [x27, 4]
5553	strh	w5, [x23, #:lo12:.LANCHOR35]
5554	str	w2, [x1, x0, lsl 2]
5555	ldr	x1, [x28, #:lo12:.LANCHOR36]
5556	b	.L797
5557.L753:
5558	sxtw	x5, w2
5559	add	w2, w2, 1
5560	lsl	x8, x5, 2
5561	lsl	x5, x5, 1
5562	add	x11, x1, x8
5563	sxth	w2, w2
5564	ldr	w11, [x11, 4]
5565	str	w11, [x1, x8]
5566	add	x8, x6, x5
5567	ldrh	w8, [x8, 2]
5568	strh	w8, [x6, x5]
5569	b	.L752
5570.L750:
5571	sub	w0, w0, #1
5572	sxth	x0, w0
5573	b	.L749
5574.L733:
5575	ldrh	w5, [x24, #:lo12:.LANCHOR79]
5576	mov	w1, 65535
5577	add	x2, x24, :lo12:.LANCHOR79
5578	cmp	w5, w1
5579	bne	.L756
5580	strh	w26, [x24, #:lo12:.LANCHOR79]
5581	str	w0, [x2, 8]
5582	b	.L732
5583.L756:
5584	ldrh	w0, [x2, 4]
5585	cmp	w0, w1
5586	beq	.L757
5587	mov	w1, 1
5588	bl	FtlFreeSysBlkQueueIn
5589.L757:
5590	add	x0, x24, :lo12:.LANCHOR79
5591	ldr	w1, [x27, 4]
5592	ldr	w2, [x0, 8]
5593	cmp	w2, w1
5594	bcs	.L758
5595	ldrh	w2, [x24, #:lo12:.LANCHOR79]
5596	strh	w2, [x0, 4]
5597	strh	w26, [x24, #:lo12:.LANCHOR79]
5598	str	w1, [x0, 8]
5599	b	.L732
5600.L758:
5601	strh	w26, [x0, 4]
5602	b	.L732
5603.L761:
5604	ldr	x0, [x29, 160]
5605	ldr	x2, [x0, #:lo12:.LANCHOR129]
5606	ldrh	w0, [x2]
5607	cbz	w0, .L763
5608.L766:
5609	ldr	x1, [x28, #:lo12:.LANCHOR36]
5610	ldrh	w0, [x1]
5611	cbz	w0, .L764
5612.L765:
5613	ldrh	w1, [x20, #:lo12:.LANCHOR147]
5614	ldr	w0, [x21, #:lo12:.LANCHOR30]
5615	cmp	w1, w0
5616	bls	.L795
5617	adrp	x1, .LANCHOR148
5618	adrp	x0, .LC1
5619	mov	w2, 1377
5620	add	x1, x1, :lo12:.LANCHOR148
5621	add	x0, x0, :lo12:.LC1
5622	bl	printf
5623.L795:
5624	ldp	x19, x20, [sp, 16]
5625	mov	w0, 0
5626	ldp	x21, x22, [sp, 32]
5627	ldp	x23, x24, [sp, 48]
5628	ldp	x25, x26, [sp, 64]
5629	ldp	x27, x28, [sp, 80]
5630	ldp	x29, x30, [sp], 176
5631	ret
5632.L763:
5633	ldrh	w0, [x20, #:lo12:.LANCHOR147]
5634	cbz	w0, .L766
5635	ldr	w1, [x21, #:lo12:.LANCHOR30]
5636	mov	w0, 0
5637.L767:
5638	cmp	w0, w1
5639	bcs	.L766
5640	ldrh	w3, [x2, w0, sxtw 1]
5641	cbz	w3, .L768
5642	ldr	x1, [x29, 152]
5643	add	x7, x21, :lo12:.LANCHOR30
5644	ldr	x4, [x1, #:lo12:.LANCHOR135]
5645	mov	w1, w0
5646.L769:
5647	ldr	w3, [x7]
5648	cmp	w1, w3
5649	bcs	.L766
5650	sxtw	x6, w1
5651	sub	w3, w1, w0
5652	lsl	x5, x6, 1
5653	sxtw	x3, w3
5654	add	w1, w1, 1
5655	ldr	w6, [x4, x6, lsl 2]
5656	sxth	w1, w1
5657	ldrh	w8, [x2, x5]
5658	strh	w8, [x2, x3, lsl 1]
5659	str	w6, [x4, x3, lsl 2]
5660	strh	wzr, [x2, x5]
5661	b	.L769
5662.L768:
5663	add	w0, w0, 1
5664	sxth	w0, w0
5665	b	.L767
5666.L764:
5667	ldrh	w0, [x23, #:lo12:.LANCHOR35]
5668	cbz	w0, .L765
5669	ldrh	w2, [x19, #:lo12:.LANCHOR27]
5670	mov	w0, 0
5671.L774:
5672	mov	w6, w0
5673	cmp	w0, w2
5674	bge	.L765
5675	ldrh	w3, [x1, w0, sxtw 1]
5676	cbz	w3, .L775
5677	ldr	x2, [x29, 144]
5678	add	x19, x19, :lo12:.LANCHOR27
5679	ldr	x3, [x2, #:lo12:.LANCHOR132]
5680.L776:
5681	ldrh	w2, [x19]
5682	cmp	w0, w2
5683	bge	.L765
5684	sxtw	x5, w0
5685	sub	w2, w0, w6
5686	lsl	x4, x5, 1
5687	sxtw	x2, w2
5688	add	w0, w0, 1
5689	ldr	w5, [x3, x5, lsl 2]
5690	sxth	w0, w0
5691	ldrh	w7, [x1, x4]
5692	strh	w7, [x1, x2, lsl 1]
5693	str	w5, [x3, x2, lsl 2]
5694	strh	wzr, [x1, x4]
5695	b	.L776
5696.L775:
5697	add	w0, w0, 1
5698	sxth	w0, w0
5699	b	.L774
5700	.size	FtlScanSysBlk, .-FtlScanSysBlk
5701	.section	.text.FtlMapTblRecovery,"ax",@progbits
5702	.align	2
5703	.global	FtlMapTblRecovery
5704	.type	FtlMapTblRecovery, %function
5705FtlMapTblRecovery:
5706	stp	x29, x30, [sp, -144]!
5707	mov	w1, 0
5708	add	x29, sp, 0
5709	stp	x19, x20, [sp, 16]
5710	mov	x19, x0
5711	stp	x23, x24, [sp, 48]
5712	adrp	x20, .LANCHOR106
5713	ldrh	w23, [x0, 6]
5714	adrp	x24, .LANCHOR20
5715	stp	x21, x22, [sp, 32]
5716	ldr	x21, [x0, 40]
5717	ldr	x22, [x0, 16]
5718	lsl	w2, w23, 2
5719	ldr	x0, [x0, 24]
5720	str	x0, [x29, 128]
5721	ldrh	w0, [x19, 8]
5722	stp	x25, x26, [sp, 64]
5723	stp	x27, x28, [sp, 80]
5724	mov	w27, 0
5725	str	w0, [x29, 140]
5726	mov	x0, x21
5727	bl	ftl_memset
5728	str	x20, [x29, 120]
5729	adrp	x7, .LANCHOR107
5730	add	x3, x20, :lo12:.LANCHOR106
5731	mov	x26, x7
5732	mov	x20, x3
5733	ldr	x0, [x7, #:lo12:.LANCHOR107]
5734	str	x0, [x3, 8]
5735	adrp	x0, .LANCHOR108
5736	stp	wzr, wzr, [x19, 48]
5737	ldr	x25, [x0, #:lo12:.LANCHOR108]
5738	mov	w0, -1
5739	str	x25, [x3, 16]
5740	strh	w0, [x19]
5741	strh	w0, [x19, 2]
5742	mov	w0, 1
5743	str	w0, [x19, 56]
5744	ldr	w0, [x29, 140]
5745	sub	w0, w0, #1
5746	str	w0, [x29, 136]
5747	add	x0, x24, :lo12:.LANCHOR20
5748	str	x0, [x29, 112]
5749.L799:
5750	ldr	w0, [x29, 140]
5751	cmp	w27, w0
5752	bge	.L816
5753	ldr	w0, [x29, 136]
5754	sxtw	x28, w27
5755	cmp	w27, w0
5756	bne	.L800
5757	lsl	x0, x28, 1
5758	mov	w1, 1
5759	add	x24, x22, x0
5760	ldrh	w0, [x22, x0]
5761	mov	w22, 0
5762	bl	FtlGetLastWrittenPage
5763	sxth	w26, w0
5764	add	w0, w0, 1
5765	strh	w0, [x19, 2]
5766	ldr	x0, [x29, 128]
5767	strh	w27, [x19]
5768	ldr	w0, [x0, x28, lsl 2]
5769	str	w0, [x19, 48]
5770	ldr	x0, [x29, 120]
5771	add	x20, x0, :lo12:.LANCHOR106
5772.L801:
5773	cmp	w22, w26
5774	ble	.L803
5775.L816:
5776	mov	x0, x19
5777	bl	ftl_free_no_use_map_blk
5778	adrp	x0, .LANCHOR20
5779	ldrh	w1, [x19, 2]
5780	ldrh	w0, [x0, #:lo12:.LANCHOR20]
5781	cmp	w1, w0
5782	bne	.L805
5783	mov	x0, x19
5784	bl	ftl_map_blk_alloc_new_blk
5785.L805:
5786	mov	x0, x19
5787	bl	ftl_map_blk_gc
5788	mov	x0, x19
5789	bl	ftl_map_blk_gc
5790	mov	w0, 0
5791	ldp	x19, x20, [sp, 16]
5792	ldp	x21, x22, [sp, 32]
5793	ldp	x23, x24, [sp, 48]
5794	ldp	x25, x26, [sp, 64]
5795	ldp	x27, x28, [sp, 80]
5796	ldp	x29, x30, [sp], 144
5797	ret
5798.L803:
5799	ldrh	w0, [x24]
5800	mov	w2, 1
5801	mov	w1, w2
5802	orr	w0, w22, w0, lsl 10
5803	str	w0, [x20, 4]
5804	mov	x0, x20
5805	bl	FlashReadPages
5806	ldr	w0, [x20]
5807	cmn	w0, #1
5808	beq	.L802
5809	ldrh	w0, [x25, 8]
5810	cmp	w23, w0
5811	bls	.L802
5812	ldrh	w2, [x25]
5813	ldrh	w1, [x19, 4]
5814	cmp	w2, w1
5815	bne	.L802
5816	ubfiz	x0, x0, 2, 16
5817	ldr	w1, [x20, 4]
5818	str	w1, [x21, x0]
5819.L802:
5820	add	w22, w22, 1
5821	sxth	w22, w22
5822	b	.L801
5823.L800:
5824	ldr	x0, [x26, #:lo12:.LANCHOR107]
5825	mov	w2, 1
5826	str	x0, [x20, 8]
5827	lsl	x0, x28, 1
5828	ldrh	w1, [x24, #:lo12:.LANCHOR20]
5829	add	x28, x22, x0
5830	ldrh	w0, [x22, x0]
5831	sub	w1, w1, #1
5832	orr	w0, w1, w0, lsl 10
5833	mov	w1, w2
5834	str	w0, [x20, 4]
5835	mov	x0, x20
5836	bl	FlashReadPages
5837	ldr	w0, [x20]
5838	cmn	w0, #1
5839	beq	.L818
5840	ldrh	w1, [x25]
5841	ldrh	w0, [x19, 4]
5842	cmp	w1, w0
5843	bne	.L818
5844	ldrh	w1, [x25, 8]
5845	mov	w0, 64245
5846	cmp	w1, w0
5847	beq	.L807
5848.L818:
5849	mov	w5, 0
5850.L808:
5851	ldr	x0, [x29, 112]
5852	ldrh	w0, [x0]
5853	cmp	w5, w0
5854	bge	.L814
5855	ldrh	w0, [x28]
5856	mov	w2, 1
5857	str	w5, [x29, 108]
5858	mov	w1, w2
5859	orr	w0, w5, w0, lsl 10
5860	str	w0, [x20, 4]
5861	mov	x0, x20
5862	bl	FlashReadPages
5863	ldr	w0, [x20]
5864	ldr	w5, [x29, 108]
5865	cmn	w0, #1
5866	beq	.L812
5867	ldrh	w0, [x25, 8]
5868	cmp	w23, w0
5869	bls	.L812
5870	ldrh	w2, [x25]
5871	ldrh	w1, [x19, 4]
5872	cmp	w2, w1
5873	bne	.L812
5874	ubfiz	x0, x0, 2, 16
5875	ldr	w1, [x20, 4]
5876	str	w1, [x21, x0]
5877.L812:
5878	add	w5, w5, 1
5879	sxth	w5, w5
5880	b	.L808
5881.L807:
5882	ldrh	w5, [x24, #:lo12:.LANCHOR20]
5883	mov	w0, 0
5884	ldr	x10, [x26, #:lo12:.LANCHOR107]
5885	sub	w5, w5, #1
5886.L809:
5887	cmp	w0, w5
5888	blt	.L811
5889.L814:
5890	add	w4, w27, 1
5891	sxth	w27, w4
5892	b	.L799
5893.L811:
5894	lsl	w2, w0, 1
5895	sxtw	x2, w2
5896	lsl	x1, x2, 2
5897	ldrh	w1, [x10, x1]
5898	cmp	w23, w1
5899	bls	.L810
5900	add	x2, x2, 1
5901	ubfiz	x1, x1, 2, 16
5902	ldr	w2, [x10, x2, lsl 2]
5903	str	w2, [x21, x1]
5904.L810:
5905	add	w0, w0, 1
5906	sxth	w0, w0
5907	b	.L809
5908	.size	FtlMapTblRecovery, .-FtlMapTblRecovery
5909	.section	.text.FtlLoadVonderInfo,"ax",@progbits
5910	.align	2
5911	.global	FtlLoadVonderInfo
5912	.type	FtlLoadVonderInfo, %function
5913FtlLoadVonderInfo:
5914	stp	x29, x30, [sp, -16]!
5915	adrp	x1, .LANCHOR27
5916	adrp	x0, .LANCHOR149
5917	add	x0, x0, :lo12:.LANCHOR149
5918	add	x29, sp, 0
5919	ldrh	w1, [x1, #:lo12:.LANCHOR27]
5920	strh	w1, [x0, 10]
5921	mov	w1, -3962
5922	strh	w1, [x0, 4]
5923	adrp	x1, .LANCHOR35
5924	ldrh	w1, [x1, #:lo12:.LANCHOR35]
5925	strh	w1, [x0, 8]
5926	adrp	x1, .LANCHOR28
5927	ldrh	w1, [x1, #:lo12:.LANCHOR28]
5928	strh	w1, [x0, 6]
5929	adrp	x1, .LANCHOR36
5930	ldr	x1, [x1, #:lo12:.LANCHOR36]
5931	str	x1, [x0, 16]
5932	adrp	x1, .LANCHOR132
5933	ldr	x1, [x1, #:lo12:.LANCHOR132]
5934	str	x1, [x0, 24]
5935	adrp	x1, .LANCHOR131
5936	ldr	x1, [x1, #:lo12:.LANCHOR131]
5937	str	x1, [x0, 32]
5938	adrp	x1, .LANCHOR133
5939	ldr	x1, [x1, #:lo12:.LANCHOR133]
5940	str	x1, [x0, 40]
5941	bl	FtlMapTblRecovery
5942	mov	w0, 0
5943	ldp	x29, x30, [sp], 16
5944	ret
5945	.size	FtlLoadVonderInfo, .-FtlLoadVonderInfo
5946	.section	.text.FtlL2PDataInit,"ax",@progbits
5947	.align	2
5948	.global	FtlL2PDataInit
5949	.type	FtlL2PDataInit, %function
5950FtlL2PDataInit:
5951	stp	x29, x30, [sp, -64]!
5952	mov	w1, 0
5953	add	x29, sp, 0
5954	stp	x19, x20, [sp, 16]
5955	adrp	x19, .LANCHOR130
5956	adrp	x20, .LANCHOR30
5957	stp	x21, x22, [sp, 32]
5958	ldr	x0, [x19, #:lo12:.LANCHOR130]
5959	adrp	x22, .LANCHOR23
5960	ldr	w2, [x20, #:lo12:.LANCHOR30]
5961	adrp	x21, .LANCHOR33
5962	str	x23, [sp, 48]
5963	adrp	x23, .LANCHOR136
5964	lsl	w2, w2, 1
5965	bl	ftl_memset
5966	ldrh	w0, [x21, #:lo12:.LANCHOR33]
5967	mov	w1, 255
5968	ldrh	w2, [x22, #:lo12:.LANCHOR23]
5969	mul	w2, w2, w0
5970	ldr	x0, [x23, #:lo12:.LANCHOR136]
5971	bl	ftl_memset
5972	adrp	x0, .LANCHOR55
5973	ldrh	w3, [x21, #:lo12:.LANCHOR33]
5974	ldr	x6, [x23, #:lo12:.LANCHOR136]
5975	mov	x1, 0
5976	ldr	x0, [x0, #:lo12:.LANCHOR55]
5977	mov	w2, -1
5978	ldrh	w5, [x22, #:lo12:.LANCHOR23]
5979	add	x3, x0, x3, lsl 4
5980.L829:
5981	add	x4, x1, x5
5982	cmp	x0, x3
5983	bne	.L830
5984	adrp	x1, .LANCHOR144
5985	add	x0, x1, :lo12:.LANCHOR144
5986	ldp	x21, x22, [sp, 32]
5987	strh	w2, [x1, #:lo12:.LANCHOR144]
5988	ldr	w1, [x20, #:lo12:.LANCHOR30]
5989	strh	w1, [x0, 10]
5990	mov	w1, -3902
5991	strh	w1, [x0, 4]
5992	adrp	x1, .LANCHOR147
5993	ldr	x23, [sp, 48]
5994	strh	w2, [x0, 2]
5995	ldrh	w1, [x1, #:lo12:.LANCHOR147]
5996	strh	w1, [x0, 8]
5997	adrp	x1, .LANCHOR32
5998	ldrh	w1, [x1, #:lo12:.LANCHOR32]
5999	strh	w1, [x0, 6]
6000	adrp	x1, .LANCHOR129
6001	ldr	x1, [x1, #:lo12:.LANCHOR129]
6002	str	x1, [x0, 16]
6003	adrp	x1, .LANCHOR135
6004	ldr	x1, [x1, #:lo12:.LANCHOR135]
6005	str	x1, [x0, 24]
6006	ldr	x1, [x19, #:lo12:.LANCHOR130]
6007	ldp	x19, x20, [sp, 16]
6008	str	x1, [x0, 32]
6009	adrp	x1, .LANCHOR134
6010	ldr	x1, [x1, #:lo12:.LANCHOR134]
6011	str	x1, [x0, 40]
6012	ldp	x29, x30, [sp], 64
6013	ret
6014.L830:
6015	and	x1, x1, -4
6016	strh	w2, [x0]
6017	add	x1, x6, x1
6018	str	wzr, [x0, 4]
6019	str	x1, [x0, 8]
6020	add	x0, x0, 16
6021	mov	x1, x4
6022	b	.L829
6023	.size	FtlL2PDataInit, .-FtlL2PDataInit
6024	.section	.text.FtlLoadMapInfo,"ax",@progbits
6025	.align	2
6026	.global	FtlLoadMapInfo
6027	.type	FtlLoadMapInfo, %function
6028FtlLoadMapInfo:
6029	stp	x29, x30, [sp, -16]!
6030	add	x29, sp, 0
6031	bl	FtlL2PDataInit
6032	adrp	x0, .LANCHOR144
6033	add	x0, x0, :lo12:.LANCHOR144
6034	bl	FtlMapTblRecovery
6035	mov	w0, 0
6036	ldp	x29, x30, [sp], 16
6037	ret
6038	.size	FtlLoadMapInfo, .-FtlLoadMapInfo
6039	.section	.text.FtlVariablesInit,"ax",@progbits
6040	.align	2
6041	.global	FtlVariablesInit
6042	.type	FtlVariablesInit, %function
6043FtlVariablesInit:
6044	stp	x29, x30, [sp, -32]!
6045	adrp	x0, .LANCHOR150
6046	mov	w1, -1
6047	add	x29, sp, 0
6048	strh	w1, [x0, #:lo12:.LANCHOR150]
6049	adrp	x0, .LANCHOR151
6050	mov	w1, -1
6051	str	x19, [sp, 16]
6052	str	wzr, [x0, #:lo12:.LANCHOR151]
6053	adrp	x0, .LANCHOR152
6054	adrp	x19, .LANCHOR6
6055	str	wzr, [x0, #:lo12:.LANCHOR152]
6056	adrp	x0, .LANCHOR153
6057	str	w1, [x0, #:lo12:.LANCHOR153]
6058	adrp	x0, .LANCHOR35
6059	mov	w1, 0
6060	strh	wzr, [x0, #:lo12:.LANCHOR35]
6061	adrp	x0, .LANCHOR27
6062	ldrh	w2, [x0, #:lo12:.LANCHOR27]
6063	adrp	x0, .LANCHOR36
6064	ldr	x0, [x0, #:lo12:.LANCHOR36]
6065	lsl	w2, w2, 1
6066	bl	ftl_memset
6067	adrp	x0, .LANCHOR43
6068	ldrh	w2, [x19, #:lo12:.LANCHOR6]
6069	mov	w1, 0
6070	ldr	x0, [x0, #:lo12:.LANCHOR43]
6071	lsl	w2, w2, 1
6072	bl	ftl_memset
6073	adrp	x0, .LANCHOR126
6074	ldrh	w2, [x19, #:lo12:.LANCHOR6]
6075	mov	w1, 0
6076	ldr	x0, [x0, #:lo12:.LANCHOR126]
6077	lsl	w2, w2, 1
6078	bl	ftl_memset
6079	mov	w2, 48
6080	mov	w1, 0
6081	adrp	x0, .LANCHOR39
6082	add	x0, x0, :lo12:.LANCHOR39
6083	bl	ftl_memset
6084	mov	w2, 512
6085	mov	w1, 0
6086	adrp	x0, .LANCHOR81
6087	add	x0, x0, :lo12:.LANCHOR81
6088	bl	ftl_memset
6089	bl	FtlGcBufInit
6090	bl	FtlL2PDataInit
6091	ldr	x19, [sp, 16]
6092	mov	w0, 0
6093	ldp	x29, x30, [sp], 32
6094	ret
6095	.size	FtlVariablesInit, .-FtlVariablesInit
6096	.section	.text.SupperBlkListInit,"ax",@progbits
6097	.align	2
6098	.global	SupperBlkListInit
6099	.type	SupperBlkListInit, %function
6100SupperBlkListInit:
6101	stp	x29, x30, [sp, -96]!
6102	adrp	x0, .LANCHOR6
6103	mov	w1, 0
6104	add	x29, sp, 0
6105	ldrh	w2, [x0, #:lo12:.LANCHOR6]
6106	mov	w0, 6
6107	stp	x23, x24, [sp, 48]
6108	adrp	x24, .LANCHOR40
6109	stp	x19, x20, [sp, 16]
6110	adrp	x23, .LANCHOR45
6111	stp	x21, x22, [sp, 32]
6112	adrp	x22, .LANCHOR48
6113	mul	w2, w2, w0
6114	ldr	x0, [x24, #:lo12:.LANCHOR40]
6115	stp	x25, x26, [sp, 64]
6116	adrp	x25, .LANCHOR5
6117	str	x27, [sp, 80]
6118	adrp	x26, .LANCHOR13
6119	add	x25, x25, :lo12:.LANCHOR5
6120	add	x26, x26, :lo12:.LANCHOR13
6121	bl	ftl_memset
6122	mov	w21, 0
6123	adrp	x0, .LANCHOR47
6124	mov	w20, 0
6125	mov	w19, 0
6126	strh	wzr, [x23, #:lo12:.LANCHOR45]
6127	str	xzr, [x0, #:lo12:.LANCHOR47]
6128	adrp	x0, .LANCHOR41
6129	strh	wzr, [x22, #:lo12:.LANCHOR48]
6130	adrp	x27, .LANCHOR3
6131	str	xzr, [x0, #:lo12:.LANCHOR41]
6132	adrp	x0, .LANCHOR44
6133	str	xzr, [x0, #:lo12:.LANCHOR44]
6134.L837:
6135	ldrh	w0, [x25]
6136	cmp	w19, w0
6137	bcs	.L843
6138	adrp	x0, .LANCHOR19
6139	ldrh	w8, [x27, #:lo12:.LANCHOR3]
6140	mov	x6, 0
6141	mov	w5, 0
6142	ldrh	w7, [x0, #:lo12:.LANCHOR19]
6143	b	.L844
6144.L839:
6145	ldrb	w0, [x26, x6]
6146	mov	w1, w19
6147	bl	V2P_block
6148	bl	FtlBbmIsBadBlock
6149	cbnz	w0, .L838
6150	add	w5, w5, w7
6151	and	w5, w5, 65535
6152.L838:
6153	add	x6, x6, 1
6154.L844:
6155	cmp	w8, w6, uxth
6156	bhi	.L839
6157	cbz	w5, .L846
6158	mov	w0, 32768
6159	sdiv	w5, w0, w5
6160.L840:
6161	ldr	x1, [x24, #:lo12:.LANCHOR40]
6162	mov	w0, 6
6163	umaddl	x0, w19, w0, x1
6164	strh	w5, [x0, 4]
6165	adrp	x0, .LANCHOR51
6166	ldrh	w0, [x0, #:lo12:.LANCHOR51]
6167	cmp	w0, w19
6168	beq	.L841
6169	adrp	x0, .LANCHOR52
6170	ldrh	w0, [x0, #:lo12:.LANCHOR52]
6171	cmp	w0, w19
6172	beq	.L841
6173	adrp	x0, .LANCHOR53
6174	ldrh	w0, [x0, #:lo12:.LANCHOR53]
6175	cmp	w0, w19
6176	beq	.L841
6177	adrp	x1, .LANCHOR42
6178	ubfiz	x0, x19, 1, 16
6179	ldr	x1, [x1, #:lo12:.LANCHOR42]
6180	ldrh	w0, [x1, x0]
6181	cbnz	w0, .L842
6182	add	w21, w21, 1
6183	mov	w0, w19
6184	and	w21, w21, 65535
6185	bl	INSERT_FREE_LIST
6186.L841:
6187	add	w19, w19, 1
6188	and	w19, w19, 65535
6189	b	.L837
6190.L846:
6191	mov	w5, 0
6192	b	.L840
6193.L842:
6194	add	w20, w20, 1
6195	mov	w0, w19
6196	and	w20, w20, 65535
6197	bl	INSERT_DATA_LIST
6198	b	.L841
6199.L843:
6200	strh	w20, [x23, #:lo12:.LANCHOR45]
6201	add	w20, w20, w21
6202	strh	w21, [x22, #:lo12:.LANCHOR48]
6203	cmp	w20, w0
6204	ble	.L845
6205	adrp	x1, .LANCHOR154
6206	adrp	x0, .LC1
6207	mov	w2, 2154
6208	add	x1, x1, :lo12:.LANCHOR154
6209	add	x0, x0, :lo12:.LC1
6210	bl	printf
6211.L845:
6212	mov	w0, 0
6213	ldr	x27, [sp, 80]
6214	ldp	x19, x20, [sp, 16]
6215	ldp	x21, x22, [sp, 32]
6216	ldp	x23, x24, [sp, 48]
6217	ldp	x25, x26, [sp, 64]
6218	ldp	x29, x30, [sp], 96
6219	ret
6220	.size	SupperBlkListInit, .-SupperBlkListInit
6221	.section	.text.ftl_check_vpc,"ax",@progbits
6222	.align	2
6223	.global	ftl_check_vpc
6224	.type	ftl_check_vpc, %function
6225ftl_check_vpc:
6226	stp	x29, x30, [sp, -112]!
6227	adrp	x0, .LC94
6228	add	x0, x0, :lo12:.LC94
6229	add	x29, sp, 0
6230	stp	x23, x24, [sp, 48]
6231	adrp	x23, .LANCHOR61
6232	add	x23, x23, :lo12:.LANCHOR61
6233	stp	x21, x22, [sp, 32]
6234	mov	w22, 0
6235	stp	x19, x20, [sp, 16]
6236	stp	x25, x26, [sp, 64]
6237	adrp	x21, .LANCHOR155
6238	stp	x27, x28, [sp, 80]
6239	add	x1, x21, :lo12:.LANCHOR155
6240	adrp	x20, check_vpc_table
6241	bl	printf
6242	add	x19, x20, :lo12:check_vpc_table
6243	mov	w2, 8192
6244	mov	w1, 0
6245	mov	x0, x19
6246	bl	ftl_memset
6247.L849:
6248	ldr	w0, [x23]
6249	cmp	w22, w0
6250	bcc	.L851
6251	adrp	x22, .LANCHOR5
6252	adrp	x24, .LC95
6253	add	x22, x22, :lo12:.LANCHOR5
6254	add	x26, x20, :lo12:check_vpc_table
6255	add	x24, x24, :lo12:.LC95
6256	mov	w23, 0
6257	mov	w19, 0
6258	adrp	x25, .LANCHOR42
6259.L852:
6260	ldrh	w0, [x22]
6261	cmp	w0, w19
6262	bhi	.L854
6263	adrp	x0, .LANCHOR47
6264	ldr	x19, [x0, #:lo12:.LANCHOR47]
6265	cbz	x19, .L855
6266	adrp	x0, .LANCHOR48
6267	adrp	x25, .LC96
6268	add	x20, x20, :lo12:check_vpc_table
6269	add	x25, x25, :lo12:.LC96
6270	ldrh	w26, [x0, #:lo12:.LANCHOR48]
6271	adrp	x0, .LANCHOR40
6272	mov	x24, x0
6273	mov	w22, 0
6274	ldr	x1, [x0, #:lo12:.LANCHOR40]
6275	adrp	x27, .LANCHOR42
6276	mov	w28, 6
6277	sub	x19, x19, x1
6278	mov	x1, -6148914691236517206
6279	asr	x19, x19, 1
6280	movk	x1, 0xaaab, lsl 0
6281	mul	x19, x19, x1
6282	and	w19, w19, 65535
6283.L856:
6284	cmp	w22, w26
6285	bne	.L858
6286.L855:
6287	cbz	w23, .L848
6288	adrp	x0, .LC1
6289	mov	w2, 2321
6290	add	x1, x21, :lo12:.LANCHOR155
6291	add	x0, x0, :lo12:.LC1
6292	bl	printf
6293.L848:
6294	ldp	x19, x20, [sp, 16]
6295	ldp	x21, x22, [sp, 32]
6296	ldp	x23, x24, [sp, 48]
6297	ldp	x25, x26, [sp, 64]
6298	ldp	x27, x28, [sp, 80]
6299	ldp	x29, x30, [sp], 112
6300	ret
6301.L851:
6302	mov	w2, 0
6303	add	x1, x29, 108
6304	mov	w0, w22
6305	bl	log2phys
6306	ldr	w0, [x29, 108]
6307	cmn	w0, #1
6308	beq	.L850
6309	lsr	w0, w0, 10
6310	bl	P2V_block_in_plane
6311	and	x0, x0, 65535
6312	ldrh	w1, [x19, x0, lsl 1]
6313	add	w1, w1, 1
6314	strh	w1, [x19, x0, lsl 1]
6315.L850:
6316	add	w22, w22, 1
6317	b	.L849
6318.L854:
6319	ldr	x0, [x25, #:lo12:.LANCHOR42]
6320	ubfiz	x28, x19, 1, 16
6321	sxtw	x27, w19
6322	ldrh	w2, [x0, x28]
6323	ldrh	w3, [x26, x27, lsl 1]
6324	cmp	w2, w3
6325	beq	.L853
6326	mov	w1, w19
6327	mov	x0, x24
6328	bl	printf
6329	ldr	x0, [x25, #:lo12:.LANCHOR42]
6330	mov	w1, 65535
6331	ldrh	w0, [x0, x28]
6332	cmp	w0, w1
6333	beq	.L853
6334	ldrh	w1, [x26, x27, lsl 1]
6335	cmp	w1, w0
6336	csinc	w23, w23, wzr, ls
6337.L853:
6338	add	w19, w19, 1
6339	and	w19, w19, 65535
6340	b	.L852
6341.L858:
6342	ldr	x1, [x27, #:lo12:.LANCHOR42]
6343	ubfiz	x0, x19, 1, 16
6344	ldrh	w2, [x1, x0]
6345	cbz	w2, .L857
6346	ldrh	w3, [x20, w19, sxtw 1]
6347	mov	w23, 1
6348	mov	w1, w19
6349	mov	x0, x25
6350	bl	printf
6351.L857:
6352	ldr	x0, [x24, #:lo12:.LANCHOR40]
6353	umull	x19, w19, w28
6354	ldrh	w19, [x0, x19]
6355	mov	w0, 65535
6356	cmp	w19, w0
6357	beq	.L855
6358	add	w22, w22, 1
6359	and	w22, w22, 65535
6360	b	.L856
6361	.size	ftl_check_vpc, .-ftl_check_vpc
6362	.section	.text.FtlGcPageVarInit,"ax",@progbits
6363	.align	2
6364	.global	FtlGcPageVarInit
6365	.type	FtlGcPageVarInit, %function
6366FtlGcPageVarInit:
6367	stp	x29, x30, [sp, -32]!
6368	adrp	x0, .LANCHOR95
6369	mov	w1, 255
6370	add	x29, sp, 0
6371	strh	wzr, [x0, #:lo12:.LANCHOR95]
6372	adrp	x0, .LANCHOR97
6373	str	x19, [sp, 16]
6374	adrp	x19, .LANCHOR21
6375	strh	wzr, [x0, #:lo12:.LANCHOR97]
6376	adrp	x0, .LANCHOR96
6377	ldrh	w2, [x19, #:lo12:.LANCHOR21]
6378	ldr	x0, [x0, #:lo12:.LANCHOR96]
6379	lsl	w2, w2, 1
6380	bl	ftl_memset
6381	ldrh	w2, [x19, #:lo12:.LANCHOR21]
6382	mov	w0, 12
6383	mov	w1, 255
6384	mul	w2, w2, w0
6385	adrp	x0, .LANCHOR98
6386	ldr	x0, [x0, #:lo12:.LANCHOR98]
6387	bl	ftl_memset
6388	ldr	x19, [sp, 16]
6389	ldp	x29, x30, [sp], 32
6390	b	FtlGcBufInit
6391	.size	FtlGcPageVarInit, .-FtlGcPageVarInit
6392	.section	.text.FtlGcScanTempBlk,"ax",@progbits
6393	.align	2
6394	.global	FtlGcScanTempBlk
6395	.type	FtlGcScanTempBlk, %function
6396FtlGcScanTempBlk:
6397	stp	x29, x30, [sp, -112]!
6398	add	x29, sp, 0
6399	stp	x21, x22, [sp, 32]
6400	adrp	x21, .LANCHOR156
6401	stp	x19, x20, [sp, 16]
6402	mov	x20, x0
6403	stp	x27, x28, [sp, 80]
6404	mov	w0, 65535
6405	ldrh	w19, [x21, #:lo12:.LANCHOR156]
6406	mov	w28, w1
6407	stp	x23, x24, [sp, 48]
6408	stp	x25, x26, [sp, 64]
6409	cmp	w19, w0
6410	beq	.L892
6411	cbnz	w19, .L876
6412.L877:
6413	bl	FtlGcPageVarInit
6414	b	.L878
6415.L892:
6416	mov	w19, 0
6417.L876:
6418	adrp	x0, .LANCHOR19
6419	ldrh	w0, [x0, #:lo12:.LANCHOR19]
6420	cmp	w0, w28
6421	beq	.L877
6422.L878:
6423	adrp	x27, .LANCHOR23
6424	add	x27, x27, :lo12:.LANCHOR23
6425	mov	w22, 0
6426	mov	w23, 65535
6427.L886:
6428	ldrh	w0, [x20]
6429	strb	wzr, [x20, 8]
6430	cmp	w0, w23
6431	beq	.L893
6432	adrp	x25, .LANCHOR24
6433	adrp	x26, .LANCHOR3
6434	add	x25, x25, :lo12:.LANCHOR24
6435	add	x26, x26, :lo12:.LANCHOR3
6436.L889:
6437	adrp	x1, .LANCHOR91
6438	adrp	x24, .LANCHOR120
6439	ldrh	w7, [x27]
6440	add	x5, x20, 16
6441	ldr	x6, [x1, #:lo12:.LANCHOR91]
6442	adrp	x1, .LANCHOR92
6443	ldr	x0, [x24, #:lo12:.LANCHOR120]
6444	mov	w3, 0
6445	ldr	x8, [x1, #:lo12:.LANCHOR92]
6446	ldrh	w1, [x26]
6447	ldrh	w10, [x25]
6448	add	x1, x1, 8
6449	add	x1, x20, x1, lsl 1
6450.L880:
6451	cmp	x1, x5
6452	bne	.L882
6453	mov	w1, w3
6454	str	w3, [x29, 108]
6455	mov	w2, 0
6456	bl	FlashReadPages
6457	ldr	w3, [x29, 108]
6458	mov	x11, 0
6459	ubfiz	x12, x3, 5, 16
6460.L883:
6461	cmp	x11, x12
6462	bne	.L887
6463	add	w19, w19, 1
6464	add	w22, w22, 1
6465	and	w19, w19, 65535
6466	cmp	w28, w22
6467	adrp	x1, .LANCHOR19
6468	bls	.L888
6469.L890:
6470	ldrh	w0, [x1, #:lo12:.LANCHOR19]
6471	cmp	w0, w19
6472	bhi	.L889
6473.L893:
6474	mov	w2, 0
6475	b	.L879
6476.L882:
6477	ldrh	w4, [x5]
6478	cmp	w4, w23
6479	beq	.L881
6480	ubfiz	x2, x3, 5, 16
6481	orr	w4, w19, w4, lsl 10
6482	add	x2, x0, x2
6483	str	w4, [x2, 4]
6484	mul	w4, w3, w7
6485	asr	w4, w4, 2
6486	add	x4, x6, x4, sxtw 2
6487	str	x4, [x2, 8]
6488	mul	w4, w3, w10
6489	add	w3, w3, 1
6490	and	w3, w3, 65535
6491	asr	w4, w4, 2
6492	add	x4, x8, x4, sxtw 2
6493	str	x4, [x2, 16]
6494.L881:
6495	add	x5, x5, 2
6496	b	.L880
6497.L887:
6498	ldr	x6, [x24, #:lo12:.LANCHOR120]
6499	add	x5, x6, x11
6500	ldr	w4, [x5, 4]
6501	lsr	w0, w4, 10
6502	bl	P2V_plane
6503	and	w2, w0, 65535
6504	ldr	w0, [x6, x11]
6505	cbnz	w0, .L884
6506	ldr	x0, [x5, 16]
6507	add	x11, x11, 32
6508	ldrh	w1, [x0]
6509	cmp	w1, w23
6510	bne	.L885
6511	adrp	x0, .LANCHOR152
6512	mov	w1, 1
6513	str	w1, [x0, #:lo12:.LANCHOR152]
6514.L879:
6515	strh	w19, [x20, 2]
6516	mov	w0, -1
6517	strb	w2, [x20, 6]
6518	mov	w1, w19
6519	strh	w0, [x21, #:lo12:.LANCHOR156]
6520	mov	x0, x20
6521	bl	ftl_sb_update_avl_pages
6522	b	.L891
6523.L885:
6524	ldp	w2, w0, [x0, 8]
6525	mov	w1, w4
6526	bl	FtlGcUpdatePage
6527	b	.L883
6528.L884:
6529	adrp	x0, .LANCHOR42
6530	ldrh	w1, [x20]
6531	mov	w19, 0
6532	ldr	x0, [x0, #:lo12:.LANCHOR42]
6533	strh	wzr, [x0, x1, lsl 1]
6534	ldrh	w0, [x20]
6535	bl	INSERT_FREE_LIST
6536	mov	w0, -1
6537	strh	w0, [x20]
6538	bl	FtlGcPageVarInit
6539	b	.L886
6540.L888:
6541	ldrh	w0, [x21, #:lo12:.LANCHOR156]
6542	cmp	w0, w23
6543	beq	.L890
6544	add	w0, w0, w22
6545	strh	w0, [x21, #:lo12:.LANCHOR156]
6546	ldrh	w0, [x1, #:lo12:.LANCHOR19]
6547	cmp	w0, w19
6548	bls	.L890
6549.L891:
6550	ldp	x19, x20, [sp, 16]
6551	mov	w0, -1
6552	ldp	x21, x22, [sp, 32]
6553	ldp	x23, x24, [sp, 48]
6554	ldp	x25, x26, [sp, 64]
6555	ldp	x27, x28, [sp, 80]
6556	ldp	x29, x30, [sp], 112
6557	ret
6558	.size	FtlGcScanTempBlk, .-FtlGcScanTempBlk
6559	.section	.text.FlashTestBlk,"ax",@progbits
6560	.align	2
6561	.global	FlashTestBlk
6562	.type	FlashTestBlk, %function
6563FlashTestBlk:
6564	stp	x29, x30, [sp, -128]!
6565	add	x29, sp, 0
6566	stp	x19, x20, [sp, 16]
6567	and	w19, w0, 65535
6568	cmp	w19, 11
6569	bls	.L901
6570	add	x0, x29, 64
6571	mov	w2, 32
6572	mov	w1, 165
6573	adrp	x20, ftl_temp_buf
6574	add	x20, x20, :lo12:ftl_temp_buf
6575	stp	x20, x0, [x29, 40]
6576	bl	ftl_memset
6577	lsl	w19, w19, 10
6578	mov	w2, 8
6579	mov	w1, 90
6580	mov	x0, x20
6581	bl	ftl_memset
6582	mov	w2, 1
6583	str	w19, [x29, 36]
6584	mov	w1, w2
6585	add	x0, x29, 32
6586	bl	FlashEraseBlocks
6587	mov	w3, 1
6588	add	x0, x29, 32
6589	mov	w2, w3
6590	mov	w1, w3
6591	bl	FlashProgPages
6592	ldr	w0, [x29, 32]
6593	mov	w2, 1
6594	mov	w1, 0
6595	cmp	w0, 0
6596	add	x0, x29, 32
6597	csetm	w19, ne
6598	bl	FlashEraseBlocks
6599.L899:
6600	mov	w0, w19
6601	ldp	x19, x20, [sp, 16]
6602	ldp	x29, x30, [sp], 128
6603	ret
6604.L901:
6605	mov	w19, 0
6606	b	.L899
6607	.size	FlashTestBlk, .-FlashTestBlk
6608	.section	.text.FlashGetBadBlockList,"ax",@progbits
6609	.align	2
6610	.global	FlashGetBadBlockList
6611	.type	FlashGetBadBlockList, %function
6612FlashGetBadBlockList:
6613	stp	x29, x30, [sp, -32]!
6614	mov	w2, 256
6615	add	x29, sp, 0
6616	stp	x19, x20, [sp, 16]
6617	mov	x19, x0
6618	mov	w20, w1
6619	mov	w1, 255
6620	bl	ftl_memset
6621	adrp	x0, .LANCHOR105
6622	mov	w1, w20
6623	ldr	x2, [x0, #:lo12:.LANCHOR105]
6624	mov	x0, x19
6625	blr	x2
6626	and	w0, w0, 65535
6627	cmp	w0, 50
6628	bls	.L904
6629	mov	w2, 256
6630	mov	w1, 255
6631	mov	x0, x19
6632	bl	ftl_memset
6633	mov	w0, 0
6634.L904:
6635	adrp	x1, .LANCHOR0+14
6636	ldrh	w1, [x1, #:lo12:.LANCHOR0+14]
6637	cmp	w1, 4
6638	bne	.L908
6639	mov	x1, 0
6640.L906:
6641	cmp	w0, w1, uxth
6642	bhi	.L907
6643.L908:
6644	ldp	x19, x20, [sp, 16]
6645	ldp	x29, x30, [sp], 32
6646	ret
6647.L907:
6648	ldrh	w2, [x19, x1, lsl 1]
6649	lsr	w2, w2, 1
6650	strh	w2, [x19, x1, lsl 1]
6651	add	x1, x1, 1
6652	b	.L906
6653	.size	FlashGetBadBlockList, .-FlashGetBadBlockList
6654	.section	.text.ftl_memcpy,"ax",@progbits
6655	.align	2
6656	.global	ftl_memcpy
6657	.type	ftl_memcpy, %function
6658ftl_memcpy:
6659	uxtw	x2, w2
6660	b	memcpy
6661	.size	ftl_memcpy, .-ftl_memcpy
6662	.section	.text.FtlBbmTblFlush,"ax",@progbits
6663	.align	2
6664	.global	FtlBbmTblFlush
6665	.type	FtlBbmTblFlush, %function
6666FtlBbmTblFlush:
6667	stp	x29, x30, [sp, -96]!
6668	add	x29, sp, 0
6669	stp	x23, x24, [sp, 48]
6670	adrp	x23, .LANCHOR108
6671	stp	x19, x20, [sp, 16]
6672	adrp	x19, .LANCHOR106
6673	stp	x21, x22, [sp, 32]
6674	add	x20, x19, :lo12:.LANCHOR106
6675	adrp	x22, .LANCHOR107
6676	ldr	x1, [x23, #:lo12:.LANCHOR108]
6677	stp	x25, x26, [sp, 64]
6678	adrp	x21, .LANCHOR37
6679	str	x27, [sp, 80]
6680	add	x25, x21, :lo12:.LANCHOR37
6681	ldr	x0, [x22, #:lo12:.LANCHOR107]
6682	adrp	x26, .LANCHOR10
6683	stp	x0, x1, [x20, 8]
6684	adrp	x1, .LANCHOR23
6685	adrp	x27, .LANCHOR137
6686	add	x25, x25, 32
6687	ldrh	w2, [x1, #:lo12:.LANCHOR23]
6688	mov	w24, 0
6689	add	x26, x26, :lo12:.LANCHOR10
6690	add	x27, x27, :lo12:.LANCHOR137
6691	mov	w1, 0
6692	bl	ftl_memset
6693.L912:
6694	ldrh	w0, [x26]
6695	cmp	w24, w0
6696	blt	.L913
6697	add	x19, x19, :lo12:.LANCHOR106
6698	add	x20, x21, :lo12:.LANCHOR37
6699	mov	w2, 16
6700	mov	w1, 255
6701	adrp	x24, .LC97
6702	adrp	x26, .LANCHOR20
6703	ldr	x27, [x19, 16]
6704	add	x24, x24, :lo12:.LC97
6705	add	x26, x26, :lo12:.LANCHOR20
6706	mov	w25, 0
6707	mov	x0, x27
6708	bl	ftl_memset
6709	mov	w0, -3887
6710	strh	w0, [x27]
6711	ldr	w0, [x20, 8]
6712	str	w0, [x27, 4]
6713	ldrh	w0, [x21, #:lo12:.LANCHOR37]
6714	mov	w21, 0
6715	strh	w0, [x27, 2]
6716	ldrh	w0, [x20, 4]
6717	strh	w0, [x27, 8]
6718	ldrh	w0, [x20, 6]
6719	strh	w0, [x27, 10]
6720	adrp	x0, .LANCHOR2
6721	ldr	w0, [x0, #:lo12:.LANCHOR2]
6722	strh	w0, [x27, 12]
6723.L914:
6724	ldrh	w4, [x27, 10]
6725	ldrh	w1, [x20]
6726	ldrh	w2, [x20, 2]
6727	ldrh	w3, [x20, 4]
6728	ldr	x0, [x22, #:lo12:.LANCHOR107]
6729	str	x0, [x19, 8]
6730	ldr	x0, [x23, #:lo12:.LANCHOR108]
6731	str	x0, [x19, 16]
6732	orr	w0, w2, w1, lsl 10
6733	str	wzr, [x19]
6734	str	w0, [x19, 4]
6735	mov	x0, x24
6736	bl	printf
6737	mov	w3, 1
6738	mov	x0, x19
6739	mov	w1, w3
6740	mov	w2, w3
6741	bl	FlashProgPages
6742	ldrh	w0, [x26]
6743	ldrh	w1, [x20, 2]
6744	sub	w0, w0, #1
6745	cmp	w1, w0
6746	blt	.L915
6747	ldr	w0, [x20, 8]
6748	mov	w2, 1
6749	ldrh	w1, [x20, 4]
6750	add	w0, w0, 1
6751	str	w0, [x20, 8]
6752	str	w0, [x27, 4]
6753	ldrh	w0, [x20]
6754	strh	w0, [x27, 8]
6755	strh	w0, [x20, 4]
6756	adrp	x0, .LANCHOR111
6757	strh	w1, [x20]
6758	lsl	w1, w1, 10
6759	ldr	x0, [x0, #:lo12:.LANCHOR111]
6760	str	w1, [x19, 4]
6761	strh	wzr, [x20, 2]
6762	str	w1, [x0, 4]
6763	mov	w1, w2
6764	bl	FlashEraseBlocks
6765	mov	w3, 1
6766	mov	x0, x19
6767	mov	w2, w3
6768	mov	w1, w3
6769	bl	FlashProgPages
6770.L915:
6771	ldrh	w0, [x20, 2]
6772	add	w0, w0, 1
6773	strh	w0, [x20, 2]
6774	ldr	w0, [x19]
6775	cmn	w0, #1
6776	bne	.L916
6777	ldr	w1, [x19, 4]
6778	add	w21, w21, 1
6779	adrp	x0, .LC98
6780	and	w21, w21, 65535
6781	add	x0, x0, :lo12:.LC98
6782	bl	printf
6783	cmp	w21, 3
6784	bls	.L914
6785	ldr	w1, [x19, 4]
6786	adrp	x0, .LC99
6787	mov	w2, w21
6788	add	x0, x0, :lo12:.LC99
6789	bl	printf
6790.L918:
6791	b	.L918
6792.L913:
6793	ldrh	w2, [x27]
6794	ldr	x1, [x25], 8
6795	ldr	x0, [x20, 8]
6796	mul	w3, w24, w2
6797	lsl	w2, w2, 2
6798	add	w24, w24, 1
6799	add	x0, x0, x3, sxtw 2
6800	bl	ftl_memcpy
6801	b	.L912
6802.L919:
6803	mov	w25, 1
6804	b	.L914
6805.L916:
6806	cbz	w25, .L919
6807	mov	w0, 0
6808	ldr	x27, [sp, 80]
6809	ldp	x19, x20, [sp, 16]
6810	ldp	x21, x22, [sp, 32]
6811	ldp	x23, x24, [sp, 48]
6812	ldp	x25, x26, [sp, 64]
6813	ldp	x29, x30, [sp], 96
6814	ret
6815	.size	FtlBbmTblFlush, .-FtlBbmTblFlush
6816	.section	.text.allocate_data_superblock,"ax",@progbits
6817	.align	2
6818	.global	allocate_data_superblock
6819	.type	allocate_data_superblock, %function
6820allocate_data_superblock:
6821	stp	x29, x30, [sp, -112]!
6822	add	x29, sp, 0
6823	stp	x27, x28, [sp, 80]
6824	adrp	x28, .LANCHOR48
6825	stp	x23, x24, [sp, 48]
6826	add	x23, x28, :lo12:.LANCHOR48
6827	stp	x19, x20, [sp, 16]
6828	adrp	x27, .LANCHOR45
6829	mov	x19, x0
6830	stp	x21, x22, [sp, 32]
6831	add	x0, x27, :lo12:.LANCHOR45
6832	stp	x25, x26, [sp, 64]
6833	str	x0, [x29, 104]
6834.L922:
6835	ldr	x1, [x29, 104]
6836	adrp	x24, .LANCHOR5
6837	ldrh	w0, [x28, #:lo12:.LANCHOR48]
6838	ldrh	w1, [x1]
6839	add	w0, w0, w1
6840	ldrh	w1, [x24, #:lo12:.LANCHOR5]
6841	cmp	w0, w1
6842	ble	.L923
6843	adrp	x1, .LANCHOR157
6844	adrp	x0, .LC1
6845	mov	w2, 2588
6846	add	x1, x1, :lo12:.LANCHOR157
6847	add	x0, x0, :lo12:.LC1
6848	bl	printf
6849.L923:
6850	adrp	x0, .LANCHOR53
6851	add	x0, x0, :lo12:.LANCHOR53
6852	cmp	x19, x0
6853	bne	.L948
6854	adrp	x1, .LANCHOR87
6855	ldrh	w0, [x23]
6856	ldr	w1, [x1, #:lo12:.LANCHOR87]
6857	mul	w1, w0, w1
6858	lsr	w0, w0, 1
6859	add	w0, w0, 1
6860	add	w1, w0, w1, lsr 2
6861	ands	w1, w1, 65535
6862	beq	.L924
6863	sub	w1, w1, #1
6864	and	w1, w1, 65535
6865.L924:
6866	adrp	x0, .LANCHOR47
6867	add	x0, x0, :lo12:.LANCHOR47
6868	bl	List_pop_index_node
6869	and	w20, w0, 65535
6870	ldrh	w0, [x23]
6871	cbnz	w0, .L925
6872	adrp	x1, .LANCHOR157
6873	adrp	x0, .LC1
6874	mov	w2, 2597
6875	add	x1, x1, :lo12:.LANCHOR157
6876	add	x0, x0, :lo12:.LC1
6877	bl	printf
6878.L925:
6879	ldrh	w0, [x23]
6880	sub	w0, w0, #1
6881	strh	w0, [x23]
6882	strh	w20, [x19]
6883	mov	x0, x19
6884	bl	make_superblock
6885	ldrb	w0, [x19, 7]
6886	cbnz	w0, .L926
6887	adrp	x1, .LANCHOR42
6888	ubfiz	x0, x20, 1, 16
6889	mov	w2, -1
6890	ldr	x1, [x1, #:lo12:.LANCHOR42]
6891	strh	w2, [x1, x0]
6892	mov	w0, w20
6893	bl	INSERT_DATA_LIST
6894	ldrh	w1, [x27, #:lo12:.LANCHOR45]
6895	ldrh	w0, [x23]
6896	add	w0, w0, w1
6897	ldrh	w1, [x24, #:lo12:.LANCHOR5]
6898	cmp	w0, w1
6899	ble	.L922
6900	mov	w2, 2608
6901	adrp	x1, .LANCHOR157
6902	adrp	x0, .LC1
6903	add	x1, x1, :lo12:.LANCHOR157
6904	add	x0, x0, :lo12:.LC1
6905	bl	printf
6906	b	.L922
6907.L948:
6908	mov	w1, 0
6909	b	.L924
6910.L926:
6911	ldrh	w1, [x27, #:lo12:.LANCHOR45]
6912	ldrh	w0, [x23]
6913	add	w0, w0, w1
6914	ldrh	w1, [x24, #:lo12:.LANCHOR5]
6915	cmp	w0, w1
6916	ble	.L928
6917	adrp	x1, .LANCHOR157
6918	adrp	x0, .LC1
6919	mov	w2, 2611
6920	add	x1, x1, :lo12:.LANCHOR157
6921	add	x0, x0, :lo12:.LC1
6922	bl	printf
6923.L928:
6924	adrp	x0, .LANCHOR3
6925	adrp	x25, .LANCHOR111
6926	add	x26, x19, 16
6927	mov	w21, 0
6928	ldrh	w0, [x0, #:lo12:.LANCHOR3]
6929	mov	x4, x26
6930	ldr	x3, [x25, #:lo12:.LANCHOR111]
6931	mov	w6, 65535
6932	ubfiz	x0, x0, 5, 16
6933	add	x1, x3, 8
6934	add	x0, x0, 8
6935	add	x0, x3, x0
6936.L929:
6937	cmp	x0, x1
6938	bne	.L931
6939	cbnz	w21, .L932
6940	adrp	x1, .LANCHOR157
6941	adrp	x0, .LC1
6942	mov	w2, 2622
6943	add	x1, x1, :lo12:.LANCHOR157
6944	add	x0, x0, :lo12:.LC1
6945	bl	printf
6946.L932:
6947	adrp	x0, .LANCHOR80
6948	ldrh	w0, [x0, #:lo12:.LANCHOR80]
6949	cmp	w0, w20
6950	bne	.L933
6951	adrp	x1, .LANCHOR157
6952	adrp	x0, .LC1
6953	mov	w2, 2624
6954	add	x1, x1, :lo12:.LANCHOR157
6955	add	x0, x0, :lo12:.LC1
6956	bl	printf
6957.L933:
6958	ldrb	w0, [x19, 8]
6959	uxtw	x22, w20
6960	adrp	x6, .LANCHOR43
6961	adrp	x7, .LANCHOR14
6962	adrp	x5, .LANCHOR72
6963	adrp	x4, .LANCHOR73
6964	cbnz	w0, .L934
6965	ldr	x2, [x6, #:lo12:.LANCHOR43]
6966	lsl	x1, x22, 1
6967	ldrh	w0, [x2, x1]
6968	cbz	w0, .L935
6969	ldrh	w3, [x7, #:lo12:.LANCHOR14]
6970	add	w0, w0, w3
6971.L959:
6972	strh	w0, [x2, x1]
6973	mov	w1, 0
6974	ldr	w0, [x5, #:lo12:.LANCHOR72]
6975	add	w0, w0, 1
6976	str	w0, [x5, #:lo12:.LANCHOR72]
6977	mov	w0, w20
6978	bl	ftl_set_blk_mode
6979.L937:
6980	ldr	x0, [x6, #:lo12:.LANCHOR43]
6981	lsl	x22, x22, 1
6982	ldrh	w1, [x0, x22]
6983	adrp	x0, .LANCHOR76
6984	ldr	w2, [x0, #:lo12:.LANCHOR76]
6985	cmp	w1, w2
6986	bls	.L938
6987	str	w1, [x0, #:lo12:.LANCHOR76]
6988.L938:
6989	ldr	w2, [x5, #:lo12:.LANCHOR72]
6990	ldr	w1, [x4, #:lo12:.LANCHOR73]
6991	ldrh	w0, [x7, #:lo12:.LANCHOR14]
6992	madd	w0, w0, w2, w1
6993	ldrh	w1, [x24, #:lo12:.LANCHOR5]
6994	udiv	w0, w0, w1
6995	adrp	x1, .LANCHOR74
6996	str	w0, [x1, #:lo12:.LANCHOR74]
6997	adrp	x0, .LANCHOR127
6998	ldr	x1, [x0, #:lo12:.LANCHOR127]
6999	ldr	w0, [x1, 16]
7000	add	w0, w0, 1
7001	str	w0, [x1, 16]
7002	ldr	x0, [x25, #:lo12:.LANCHOR111]
7003	ubfiz	x1, x21, 5, 16
7004	add	x1, x1, 4
7005	add	x2, x0, 4
7006	add	x1, x0, x1
7007.L939:
7008	cmp	x1, x2
7009	bne	.L940
7010	ldrb	w1, [x19, 8]
7011	mov	w2, w21
7012	mov	x24, 0
7013	bl	FlashEraseBlocks
7014	mov	w1, 0
7015.L941:
7016	cmp	w21, w24, uxth
7017	bhi	.L943
7018	cbz	w1, .L944
7019	mov	w0, w20
7020	bl	update_multiplier_value
7021	bl	FtlBbmTblFlush
7022.L944:
7023	ldrb	w0, [x19, 7]
7024	adrp	x2, .LANCHOR42
7025	cbnz	w0, .L945
7026	ldr	x0, [x2, #:lo12:.LANCHOR42]
7027	mov	w1, -1
7028	strh	w1, [x0, x22]
7029	mov	w0, w20
7030	bl	INSERT_DATA_LIST
7031	b	.L922
7032.L931:
7033	ldrh	w2, [x4]
7034	stp	xzr, xzr, [x1]
7035	cmp	w2, w6
7036	beq	.L930
7037	ubfiz	x5, x21, 5, 16
7038	add	w21, w21, 1
7039	add	x5, x3, x5
7040	and	w21, w21, 65535
7041	lsl	w2, w2, 10
7042	str	w2, [x5, 4]
7043.L930:
7044	add	x1, x1, 32
7045	add	x4, x4, 2
7046	b	.L929
7047.L935:
7048	mov	w0, 2
7049	b	.L959
7050.L934:
7051	ldr	x2, [x6, #:lo12:.LANCHOR43]
7052	lsl	x0, x22, 1
7053	ldrh	w1, [x2, x0]
7054	add	w1, w1, 1
7055	strh	w1, [x2, x0]
7056	ldr	w0, [x4, #:lo12:.LANCHOR73]
7057	add	w0, w0, 1
7058	str	w0, [x4, #:lo12:.LANCHOR73]
7059	mov	w0, w20
7060	bl	ftl_set_blk_mode.part.6
7061	b	.L937
7062.L940:
7063	ldr	w3, [x2]
7064	and	w3, w3, -1024
7065	str	w3, [x2], 32
7066	b	.L939
7067.L943:
7068	ldr	x2, [x25, #:lo12:.LANCHOR111]
7069	lsl	x0, x24, 5
7070	add	x3, x2, x0
7071	ldr	w2, [x2, x0]
7072	cmn	w2, #1
7073	bne	.L942
7074	add	w1, w1, 1
7075	ldr	w0, [x3, 4]
7076	stp	w2, w1, [x29, 96]
7077	lsr	w0, w0, 10
7078	bl	FtlBbmMapBadBlock
7079	ldp	w2, w1, [x29, 96]
7080	strh	w2, [x26]
7081	ldrb	w0, [x19, 7]
7082	sub	w0, w0, #1
7083	strb	w0, [x19, 7]
7084.L942:
7085	add	x24, x24, 1
7086	add	x26, x26, 2
7087	b	.L941
7088.L945:
7089	adrp	x1, .LANCHOR19
7090	adrp	x3, .LANCHOR70
7091	strb	wzr, [x19, 6]
7092	ldrh	w1, [x1, #:lo12:.LANCHOR19]
7093	strh	wzr, [x19, 2]
7094	strh	w20, [x19]
7095	mul	w0, w0, w1
7096	ldr	w1, [x3, #:lo12:.LANCHOR70]
7097	str	w1, [x19, 12]
7098	add	w1, w1, 1
7099	str	w1, [x3, #:lo12:.LANCHOR70]
7100	ldr	x1, [x2, #:lo12:.LANCHOR42]
7101	and	w0, w0, 65535
7102	strh	w0, [x19, 4]
7103	strh	w0, [x1, x22]
7104	ldrh	w0, [x19, 4]
7105	cbz	w0, .L946
7106	ldrb	w0, [x19, 7]
7107	cbnz	w0, .L947
7108.L946:
7109	adrp	x1, .LANCHOR157
7110	adrp	x0, .LC1
7111	mov	w2, 2677
7112	add	x1, x1, :lo12:.LANCHOR157
7113	add	x0, x0, :lo12:.LC1
7114	bl	printf
7115.L947:
7116	ldp	x19, x20, [sp, 16]
7117	mov	w0, 0
7118	ldp	x21, x22, [sp, 32]
7119	ldp	x23, x24, [sp, 48]
7120	ldp	x25, x26, [sp, 64]
7121	ldp	x27, x28, [sp, 80]
7122	ldp	x29, x30, [sp], 112
7123	ret
7124	.size	allocate_data_superblock, .-allocate_data_superblock
7125	.section	.text.FtlGcFreeBadSuperBlk,"ax",@progbits
7126	.align	2
7127	.global	FtlGcFreeBadSuperBlk
7128	.type	FtlGcFreeBadSuperBlk, %function
7129FtlGcFreeBadSuperBlk:
7130	stp	x29, x30, [sp, -96]!
7131	add	x29, sp, 0
7132	stp	x21, x22, [sp, 32]
7133	adrp	x21, .LANCHOR101
7134	stp	x25, x26, [sp, 64]
7135	and	w25, w0, 65535
7136	ldrh	w0, [x21, #:lo12:.LANCHOR101]
7137	stp	x19, x20, [sp, 16]
7138	stp	x23, x24, [sp, 48]
7139	str	x27, [sp, 80]
7140	cbz	w0, .L961
7141	adrp	x23, .LANCHOR102
7142	add	x24, x23, :lo12:.LANCHOR102
7143	mov	w19, 0
7144.L962:
7145	adrp	x0, .LANCHOR3
7146	ldrh	w0, [x0, #:lo12:.LANCHOR3]
7147	cmp	w0, w19
7148	bhi	.L968
7149	bl	FtlGcReFreshBadBlk
7150.L961:
7151	mov	w0, 0
7152	ldr	x27, [sp, 80]
7153	ldp	x19, x20, [sp, 16]
7154	ldp	x21, x22, [sp, 32]
7155	ldp	x23, x24, [sp, 48]
7156	ldp	x25, x26, [sp, 64]
7157	ldp	x29, x30, [sp], 96
7158	ret
7159.L968:
7160	adrp	x0, .LANCHOR13
7161	add	x0, x0, :lo12:.LANCHOR13
7162	mov	w1, w25
7163	add	x22, x21, :lo12:.LANCHOR101
7164	mov	w20, 0
7165	ldrb	w0, [x0, w19, sxtw]
7166	bl	V2P_block
7167	and	w26, w0, 65535
7168.L963:
7169	ldrh	w0, [x22]
7170	cmp	w0, w20
7171	bhi	.L967
7172	add	w19, w19, 1
7173	and	w19, w19, 65535
7174	b	.L962
7175.L967:
7176	add	x0, x23, :lo12:.LANCHOR102
7177	add	w27, w20, 1
7178	ldrh	w0, [x0, w20, sxtw 1]
7179	cmp	w0, w26
7180	bne	.L964
7181	mov	w1, w26
7182	adrp	x0, .LC100
7183	add	x0, x0, :lo12:.LC100
7184	bl	printf
7185	mov	w0, w26
7186	bl	FtlBbmMapBadBlock
7187	bl	FtlBbmTblFlush
7188	ldrh	w1, [x22]
7189	sxtw	x3, w27
7190	and	x4, x20, 65535
7191	mov	x0, 0
7192.L965:
7193	add	w2, w20, w0
7194	cmp	w1, w2, uxth
7195	bhi	.L966
7196	sub	w1, w1, #1
7197	strh	w1, [x22]
7198.L964:
7199	and	w20, w27, 65535
7200	b	.L963
7201.L966:
7202	add	x2, x3, x0
7203	ldrh	w5, [x24, x2, lsl 1]
7204	add	x2, x4, x0
7205	add	x0, x0, 1
7206	strh	w5, [x24, x2, lsl 1]
7207	b	.L965
7208	.size	FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
7209	.section	.text.update_vpc_list,"ax",@progbits
7210	.align	2
7211	.global	update_vpc_list
7212	.type	update_vpc_list, %function
7213update_vpc_list:
7214	stp	x29, x30, [sp, -32]!
7215	adrp	x1, .LANCHOR42
7216	add	x29, sp, 0
7217	stp	x19, x20, [sp, 16]
7218	and	w19, w0, 65535
7219	ldr	x1, [x1, #:lo12:.LANCHOR42]
7220	ubfiz	x0, x19, 1, 16
7221	ldrh	w0, [x1, x0]
7222	cbnz	w0, .L974
7223	adrp	x0, .LANCHOR80
7224	ldrh	w1, [x0, #:lo12:.LANCHOR80]
7225	cmp	w1, w19
7226	bne	.L975
7227	mov	w1, -1
7228	strh	w1, [x0, #:lo12:.LANCHOR80]
7229.L976:
7230	adrp	x20, .LANCHOR45
7231	mov	w1, w19
7232	adrp	x0, .LANCHOR41
7233	add	x0, x0, :lo12:.LANCHOR41
7234	bl	List_remove_node
7235	ldrh	w0, [x20, #:lo12:.LANCHOR45]
7236	cbnz	w0, .L978
7237	adrp	x1, .LANCHOR158
7238	adrp	x0, .LC1
7239	mov	w2, 2747
7240	add	x1, x1, :lo12:.LANCHOR158
7241	add	x0, x0, :lo12:.LC1
7242	bl	printf
7243.L978:
7244	ldrh	w0, [x20, #:lo12:.LANCHOR45]
7245	sub	w0, w0, #1
7246	strh	w0, [x20, #:lo12:.LANCHOR45]
7247	mov	w0, w19
7248	bl	free_data_superblock
7249	mov	w0, w19
7250	bl	FtlGcFreeBadSuperBlk
7251	adrp	x0, .LANCHOR48
7252	ldrh	w1, [x20, #:lo12:.LANCHOR45]
7253	ldrh	w0, [x0, #:lo12:.LANCHOR48]
7254	add	w0, w0, w1
7255	adrp	x1, .LANCHOR5
7256	ldrh	w1, [x1, #:lo12:.LANCHOR5]
7257	cmp	w0, w1
7258	ble	.L982
7259	adrp	x1, .LANCHOR158
7260	adrp	x0, .LC1
7261	mov	w2, 2750
7262	add	x1, x1, :lo12:.LANCHOR158
7263	add	x0, x0, :lo12:.LC1
7264	bl	printf
7265.L982:
7266	mov	w0, 1
7267	b	.L973
7268.L975:
7269	adrp	x0, .LANCHOR51
7270	ldrh	w0, [x0, #:lo12:.LANCHOR51]
7271	cmp	w0, w19
7272	beq	.L981
7273	adrp	x0, .LANCHOR52
7274	ldrh	w0, [x0, #:lo12:.LANCHOR52]
7275	cmp	w0, w19
7276	beq	.L981
7277	adrp	x0, .LANCHOR53
7278	ldrh	w0, [x0, #:lo12:.LANCHOR53]
7279	cmp	w0, w19
7280	bne	.L976
7281.L981:
7282	mov	w0, 0
7283.L973:
7284	ldp	x19, x20, [sp, 16]
7285	ldp	x29, x30, [sp], 32
7286	ret
7287.L974:
7288	mov	w0, w19
7289	bl	List_update_data_list
7290	b	.L981
7291	.size	update_vpc_list, .-update_vpc_list
7292	.section	.text.decrement_vpc_count,"ax",@progbits
7293	.align	2
7294	.global	decrement_vpc_count
7295	.type	decrement_vpc_count, %function
7296decrement_vpc_count:
7297	stp	x29, x30, [sp, -48]!
7298	add	x29, sp, 0
7299	stp	x19, x20, [sp, 16]
7300	and	w19, w0, 65535
7301	str	x21, [sp, 32]
7302	mov	w0, 65535
7303	cmp	w19, w0
7304	beq	.L985
7305	adrp	x21, .LANCHOR42
7306	ubfiz	x20, x19, 1, 16
7307	ldr	x1, [x21, #:lo12:.LANCHOR42]
7308	ldrh	w0, [x1, x20]
7309	cbnz	w0, .L986
7310	mov	w2, 0
7311	mov	w1, w19
7312	adrp	x0, .LC101
7313	add	x0, x0, :lo12:.LC101
7314	bl	printf
7315	ldr	x0, [x21, #:lo12:.LANCHOR42]
7316	ldrh	w0, [x0, x20]
7317	cbz	w0, .L987
7318.L992:
7319	mov	w20, 0
7320.L984:
7321	mov	w0, w20
7322	ldr	x21, [sp, 32]
7323	ldp	x19, x20, [sp, 16]
7324	ldp	x29, x30, [sp], 48
7325	ret
7326.L987:
7327	mov	w2, 2765
7328	adrp	x1, .LANCHOR159
7329	adrp	x0, .LC1
7330	add	x1, x1, :lo12:.LANCHOR159
7331	add	x0, x0, :lo12:.LC1
7332	bl	printf
7333	b	.L992
7334.L986:
7335	sub	w0, w0, #1
7336	strh	w0, [x1, x20]
7337.L985:
7338	adrp	x21, .LANCHOR150
7339	mov	w1, 65535
7340	ldrh	w0, [x21, #:lo12:.LANCHOR150]
7341	cmp	w0, w1
7342	bne	.L989
7343	strh	w19, [x21, #:lo12:.LANCHOR150]
7344	b	.L992
7345.L989:
7346	cmp	w19, w0
7347	beq	.L992
7348	bl	update_vpc_list
7349	cmp	w0, 0
7350	adrp	x1, .LANCHOR40
7351	adrp	x0, .LANCHOR41
7352	strh	w19, [x21, #:lo12:.LANCHOR150]
7353	cset	w20, ne
7354	ldr	x1, [x1, #:lo12:.LANCHOR40]
7355	ldr	x0, [x0, #:lo12:.LANCHOR41]
7356	sub	x0, x0, x1
7357	mov	x1, -6148914691236517206
7358	asr	x0, x0, 1
7359	movk	x1, 0xaaab, lsl 0
7360	mul	x0, x0, x1
7361	adrp	x1, .LANCHOR42
7362	ldr	x1, [x1, #:lo12:.LANCHOR42]
7363	and	x2, x0, 65535
7364	ldrh	w1, [x1, x2, lsl 1]
7365	cbnz	w1, .L984
7366	cmp	w19, w0, uxth
7367	beq	.L984
7368	mov	w2, 2781
7369	adrp	x1, .LANCHOR159
7370	adrp	x0, .LC1
7371	add	x1, x1, :lo12:.LANCHOR159
7372	add	x0, x0, :lo12:.LC1
7373	bl	printf
7374	b	.L984
7375	.size	decrement_vpc_count, .-decrement_vpc_count
7376	.section	.text.FtlWriteDump_data,"ax",@progbits
7377	.align	2
7378	.global	FtlWriteDump_data
7379	.type	FtlWriteDump_data, %function
7380FtlWriteDump_data:
7381	stp	x29, x30, [sp, -128]!
7382	add	x29, sp, 0
7383	stp	x19, x20, [sp, 16]
7384	adrp	x19, .LANCHOR51
7385	add	x0, x19, :lo12:.LANCHOR51
7386	stp	x21, x22, [sp, 32]
7387	stp	x23, x24, [sp, 48]
7388	ldrh	w2, [x0, 4]
7389	str	x25, [sp, 64]
7390	cbz	w2, .L994
7391	ldrb	w1, [x0, 8]
7392	cbnz	w1, .L994
7393	adrp	x3, .LANCHOR19
7394	ldrb	w1, [x0, 7]
7395	ldrh	w3, [x3, #:lo12:.LANCHOR19]
7396	mul	w1, w1, w3
7397	cmp	w2, w1
7398	beq	.L994
7399	ldrb	w0, [x0, 10]
7400	cbnz	w0, .L993
7401	adrp	x0, .LANCHOR61
7402	mov	w2, 0
7403	add	x1, x29, 92
7404	ldr	w21, [x0, #:lo12:.LANCHOR61]
7405	adrp	x0, .LANCHOR3
7406	sub	w21, w21, #1
7407	ldrh	w25, [x0, #:lo12:.LANCHOR3]
7408	mov	w0, w21
7409	bl	log2phys
7410	adrp	x2, .LANCHOR108
7411	adrp	x0, .LANCHOR107
7412	ldr	w1, [x29, 92]
7413	ldr	x20, [x2, #:lo12:.LANCHOR108]
7414	ldr	x0, [x0, #:lo12:.LANCHOR107]
7415	cmn	w1, #1
7416	str	w1, [x29, 100]
7417	stp	x0, x20, [x29, 104]
7418	str	w21, [x29, 120]
7419	str	wzr, [x20, 4]
7420	beq	.L996
7421	mov	w2, 0
7422	mov	w1, 1
7423	add	x0, x29, 96
7424	bl	FlashReadPages
7425.L997:
7426	adrp	x23, .LANCHOR71
7427	lsl	w25, w25, 2
7428	add	x22, x19, :lo12:.LANCHOR51
7429	add	x23, x23, :lo12:.LANCHOR71
7430	mov	w0, -3947
7431	mov	w24, 0
7432	strh	w0, [x20]
7433.L998:
7434	cmp	w25, w24
7435	bne	.L1002
7436.L999:
7437	add	x19, x19, :lo12:.LANCHOR51
7438	mov	w0, 1
7439	strb	w0, [x19, 10]
7440.L993:
7441	ldp	x19, x20, [sp, 16]
7442	ldp	x21, x22, [sp, 32]
7443	ldp	x23, x24, [sp, 48]
7444	ldr	x25, [sp, 64]
7445	ldp	x29, x30, [sp], 128
7446	ret
7447.L996:
7448	adrp	x1, .LANCHOR23
7449	ldrh	w2, [x1, #:lo12:.LANCHOR23]
7450	mov	w1, 255
7451	bl	ftl_memset
7452	b	.L997
7453.L1002:
7454	ldrh	w0, [x22, 4]
7455	cbz	w0, .L999
7456	ldr	w0, [x29, 100]
7457	add	w24, w24, 1
7458	stp	w21, w0, [x20, 8]
7459	ldrh	w0, [x22]
7460	strh	w0, [x20, 2]
7461	mov	x0, x22
7462	bl	get_new_active_ppa
7463	str	w0, [x29, 100]
7464	ldr	w0, [x23]
7465	mov	w3, 0
7466	str	w0, [x20, 4]
7467	mov	w2, 0
7468	add	w0, w0, 1
7469	mov	w1, 1
7470	cmn	w0, #1
7471	csel	w0, w0, wzr, ne
7472	str	w0, [x23]
7473	add	x0, x29, 96
7474	bl	FlashProgPages
7475	ldrh	w0, [x22]
7476	bl	decrement_vpc_count
7477	b	.L998
7478.L994:
7479	add	x19, x19, :lo12:.LANCHOR51
7480	strb	wzr, [x19, 10]
7481	b	.L993
7482	.size	FtlWriteDump_data, .-FtlWriteDump_data
7483	.section	.text.l2p_flush,"ax",@progbits
7484	.align	2
7485	.global	l2p_flush
7486	.type	l2p_flush, %function
7487l2p_flush:
7488	stp	x29, x30, [sp, -48]!
7489	add	x29, sp, 0
7490	stp	x19, x20, [sp, 16]
7491	adrp	x20, .LANCHOR33
7492	add	x20, x20, :lo12:.LANCHOR33
7493	str	x21, [sp, 32]
7494	mov	w19, 0
7495	adrp	x21, .LANCHOR55
7496	bl	FtlWriteDump_data
7497.L1012:
7498	ldrh	w0, [x20]
7499	cmp	w0, w19
7500	bhi	.L1014
7501	mov	w0, 0
7502	ldr	x21, [sp, 32]
7503	ldp	x19, x20, [sp, 16]
7504	ldp	x29, x30, [sp], 48
7505	ret
7506.L1014:
7507	ldr	x1, [x21, #:lo12:.LANCHOR55]
7508	ubfiz	x0, x19, 4, 16
7509	add	x0, x1, x0
7510	ldr	w0, [x0, 4]
7511	tbz	w0, #31, .L1013
7512	mov	w0, w19
7513	bl	flush_l2p_region
7514.L1013:
7515	add	w19, w19, 1
7516	and	w19, w19, 65535
7517	b	.L1012
7518	.size	l2p_flush, .-l2p_flush
7519	.section	.text.FtlRecoverySuperblock,"ax",@progbits
7520	.align	2
7521	.global	FtlRecoverySuperblock
7522	.type	FtlRecoverySuperblock, %function
7523FtlRecoverySuperblock:
7524	stp	x29, x30, [sp, -192]!
7525	mov	w1, 65535
7526	add	x29, sp, 0
7527	stp	x19, x20, [sp, 16]
7528	mov	x19, x0
7529	stp	x21, x22, [sp, 32]
7530	ldrh	w0, [x0]
7531	stp	x23, x24, [sp, 48]
7532	stp	x25, x26, [sp, 64]
7533	cmp	w0, w1
7534	stp	x27, x28, [sp, 80]
7535	beq	.L1140
7536	ldrb	w0, [x19, 6]
7537	str	w0, [x29, 164]
7538	adrp	x0, .LANCHOR19
7539	ldrh	w26, [x19, 2]
7540	str	x0, [x29, 128]
7541	ldrh	w2, [x0, #:lo12:.LANCHOR19]
7542	cmp	w2, w26
7543	bne	.L1019
7544	strh	wzr, [x19, 4]
7545.L1146:
7546	strb	wzr, [x19, 6]
7547.L1140:
7548	ldp	x19, x20, [sp, 16]
7549	mov	w0, 0
7550	ldp	x21, x22, [sp, 32]
7551	ldp	x23, x24, [sp, 48]
7552	ldp	x25, x26, [sp, 64]
7553	ldp	x27, x28, [sp, 80]
7554	ldp	x29, x30, [sp], 192
7555	ret
7556.L1019:
7557	ldrh	w0, [x19, 16]
7558	mov	w20, 0
7559.L1020:
7560	cmp	w0, w1
7561	beq	.L1021
7562	mov	w1, 1
7563	bl	FtlGetLastWrittenPage
7564	mov	w23, w0
7565	cmn	w0, #1
7566	beq	.L1022
7567	adrp	x1, .LANCHOR91
7568	adrp	x2, .LANCHOR3
7569	adrp	x20, .LANCHOR120
7570	add	x4, x19, 16
7571	ldr	x5, [x1, #:lo12:.LANCHOR91]
7572	adrp	x1, .LANCHOR23
7573	ldr	x0, [x20, #:lo12:.LANCHOR120]
7574	mov	w22, 0
7575	ldrh	w6, [x1, #:lo12:.LANCHOR23]
7576	adrp	x1, .LANCHOR92
7577	mov	w10, 65535
7578	str	x2, [x29, 152]
7579	ldr	x7, [x1, #:lo12:.LANCHOR92]
7580	adrp	x1, .LANCHOR24
7581	ldrh	w8, [x1, #:lo12:.LANCHOR24]
7582	add	x1, x19, 16
7583	str	x1, [x29, 168]
7584	ldrh	w1, [x2, #:lo12:.LANCHOR3]
7585	add	x1, x1, 8
7586	add	x1, x19, x1, lsl 1
7587.L1023:
7588	cmp	x4, x1
7589	bne	.L1027
7590	mov	w2, 0
7591	mov	w1, w22
7592	bl	FlashReadPages
7593	adrp	x0, .LANCHOR71
7594	ldr	x4, [x20, #:lo12:.LANCHOR120]
7595	and	w10, w23, 65535
7596	add	x7, x0, :lo12:.LANCHOR71
7597	ldr	w21, [x0, #:lo12:.LANCHOR71]
7598	mov	x11, x4
7599	mov	w6, 65535
7600	mov	w3, 0
7601	sub	w21, w21, #1
7602	str	x0, [x29, 144]
7603.L1028:
7604	cmp	w22, w3
7605	bne	.L1033
7606	add	w22, w23, 1
7607	ldr	w0, [x4, 4]
7608	and	w22, w22, 65535
7609.L1142:
7610	lsr	w0, w0, 10
7611	bl	P2V_plane
7612	and	w27, w0, 65535
7613	ldr	x0, [x29, 128]
7614	ldrh	w0, [x0, #:lo12:.LANCHOR19]
7615	cmp	w0, w22
7616	bne	.L1035
7617	strh	w22, [x19, 2]
7618	strb	wzr, [x19, 6]
7619	strh	wzr, [x19, 4]
7620.L1035:
7621	ldr	w0, [x29, 164]
7622	cmp	w22, w26
7623	cset	w1, eq
7624	cmp	w27, w0
7625	cset	w0, eq
7626	tst	w1, w0
7627	beq	.L1036
7628.L1147:
7629	mov	w2, w27
7630	mov	w1, w22
7631	mov	x0, x19
7632	bl	ftl_sb_update_avl_pages
7633	b	.L1140
7634.L1021:
7635	add	w20, w20, 1
7636	and	w20, w20, 65535
7637	add	x0, x19, x20, sxtw 1
7638	ldrh	w0, [x0, 16]
7639	b	.L1020
7640.L1022:
7641	cbz	w26, .L1024
7642	adrp	x1, .LANCHOR160
7643	adrp	x0, .LC1
7644	mov	w2, 1755
7645	add	x1, x1, :lo12:.LANCHOR160
7646	add	x0, x0, :lo12:.LC1
7647	bl	printf
7648.L1024:
7649	ldr	w0, [x29, 164]
7650	cmp	w0, 0
7651	ccmp	w20, w0, 4, ne
7652	beq	.L1025
7653	adrp	x1, .LANCHOR160
7654	adrp	x0, .LC1
7655	mov	w2, 1756
7656	add	x1, x1, :lo12:.LANCHOR160
7657	add	x0, x0, :lo12:.LC1
7658	bl	printf
7659.L1025:
7660	strh	wzr, [x19, 2]
7661	b	.L1146
7662.L1027:
7663	ldrh	w3, [x4]
7664	cmp	w3, w10
7665	beq	.L1026
7666	ubfiz	x2, x22, 5, 16
7667	orr	w3, w23, w3, lsl 10
7668	add	x2, x0, x2
7669	str	w3, [x2, 4]
7670	mul	w3, w22, w6
7671	asr	w3, w3, 2
7672	add	x3, x5, x3, sxtw 2
7673	str	x3, [x2, 8]
7674	mul	w3, w22, w8
7675	add	w22, w22, 1
7676	and	w22, w22, 65535
7677	asr	w3, w3, 2
7678	add	x3, x7, x3, sxtw 2
7679	str	x3, [x2, 16]
7680.L1026:
7681	add	x4, x4, 2
7682	b	.L1023
7683.L1033:
7684	ldr	w0, [x11]
7685	cbnz	w0, .L1029
7686	ldr	x8, [x11, 16]
7687	ldr	w5, [x8, 4]
7688	cmn	w5, #1
7689	beq	.L1030
7690	ldr	w1, [x7]
7691	mov	w0, w5
7692	bl	ftl_cmp_data_ver
7693	cbz	w0, .L1030
7694	add	w5, w5, 1
7695	str	w5, [x7]
7696.L1030:
7697	ldr	w0, [x8]
7698	cmn	w0, #1
7699	bne	.L1032
7700	ubfiz	x3, x3, 5, 16
7701	and	w22, w23, 65535
7702	add	x3, x4, x3
7703	ldr	w0, [x3, 4]
7704	b	.L1142
7705.L1029:
7706	mov	w6, w10
7707.L1032:
7708	add	w3, w3, 1
7709	add	x11, x11, 32
7710	and	w3, w3, 65535
7711	b	.L1028
7712.L1036:
7713	mov	w0, 65535
7714	cmp	w6, w0
7715	bne	.L1037
7716	ldrb	w0, [x19, 8]
7717	cbnz	w0, .L1038
7718.L1037:
7719	adrp	x25, .LANCHOR153
7720	and	w28, w23, 65535
7721	ldr	w0, [x25, #:lo12:.LANCHOR153]
7722	cmn	w0, #1
7723	bne	.L1039
7724	str	w21, [x25, #:lo12:.LANCHOR153]
7725.L1039:
7726	add	w0, w26, 7
7727	cmp	w0, w23, uxth
7728	bge	.L1089
7729	sub	w24, w28, #7
7730	and	w24, w24, 65535
7731.L1040:
7732	ldr	x0, [x29, 152]
7733	mov	w3, 65535
7734	mov	w5, 1
7735	add	x4, x0, :lo12:.LANCHOR3
7736.L1041:
7737	cmp	w24, w28
7738	bhi	.L1051
7739	ldrh	w1, [x4]
7740	mov	w23, 0
7741	ldr	x0, [x20, #:lo12:.LANCHOR120]
7742	add	x1, x1, 8
7743	ldr	x2, [x29, 168]
7744	add	x1, x19, x1, lsl 1
7745	b	.L1052
7746.L1089:
7747	mov	w24, w26
7748	b	.L1040
7749.L1043:
7750	ldrh	w6, [x2]
7751	cmp	w6, w3
7752	beq	.L1042
7753	ubfiz	x7, x23, 5, 16
7754	add	w23, w23, 1
7755	add	x7, x0, x7
7756	and	w23, w23, 65535
7757	orr	w6, w24, w6, lsl 10
7758	str	w6, [x7, 4]
7759.L1042:
7760	add	x2, x2, 2
7761.L1052:
7762	cmp	x2, x1
7763	bne	.L1043
7764	mov	w1, w23
7765	mov	w2, 0
7766	str	w5, [x29, 112]
7767	ubfiz	x23, x23, 5, 16
7768	str	w3, [x29, 120]
7769	add	x23, x23, 16
7770	str	x4, [x29, 136]
7771	bl	FlashReadPages
7772	ldr	x2, [x20, #:lo12:.LANCHOR120]
7773	ldr	w1, [x25, #:lo12:.LANCHOR153]
7774	ldr	w5, [x29, 112]
7775	add	x0, x2, 16
7776	ldr	w3, [x29, 120]
7777	add	x23, x2, x23
7778	ldr	x4, [x29, 136]
7779	mov	w2, 0
7780.L1044:
7781	cmp	x23, x0
7782	bne	.L1049
7783	cbz	w2, .L1050
7784	str	w1, [x25, #:lo12:.LANCHOR153]
7785.L1050:
7786	add	w24, w24, 1
7787	and	w24, w24, 65535
7788	b	.L1041
7789.L1049:
7790	ldr	w6, [x0, -16]
7791	cbz	w6, .L1045
7792	cbz	w2, .L1038
7793	str	w1, [x25, #:lo12:.LANCHOR153]
7794.L1038:
7795	mov	w1, 1
7796	adrp	x0, .LANCHOR161
7797	mov	w23, w26
7798	adrp	x28, .LANCHOR153
7799	strh	w1, [x0, #:lo12:.LANCHOR161]
7800	adrp	x0, .LANCHOR144
7801	add	x0, x0, :lo12:.LANCHOR144
7802	bl	FtlMapBlkWriteDump_data
7803	add	x0, x28, :lo12:.LANCHOR153
7804	str	x0, [x29, 104]
7805.L1053:
7806	ldr	x1, [x29, 152]
7807	mov	w24, 0
7808	ldr	x0, [x20, #:lo12:.LANCHOR120]
7809	mov	w5, 65535
7810	ldr	x2, [x29, 168]
7811	ldrh	w1, [x1, #:lo12:.LANCHOR3]
7812	add	x1, x1, 8
7813	add	x1, x19, x1, lsl 1
7814.L1054:
7815	cmp	x1, x2
7816	bne	.L1056
7817	mov	w2, 0
7818	mov	w1, w24
7819	bl	FlashReadPages
7820	mov	x25, 0
7821	ubfiz	x0, x24, 5, 16
7822	str	x0, [x29, 112]
7823	adrp	x0, .LANCHOR162
7824	add	x0, x0, :lo12:.LANCHOR162
7825	str	x0, [x29, 120]
7826.L1057:
7827	ldr	x0, [x29, 112]
7828	cmp	x25, x0
7829	bne	.L1083
7830	ldr	x0, [x29, 128]
7831	add	w23, w23, 1
7832	and	w23, w23, 65535
7833	ldrh	w0, [x0, #:lo12:.LANCHOR19]
7834	cmp	w0, w23
7835	bne	.L1053
7836	ldr	x0, [x29, 152]
7837	mov	w2, 65535
7838	strh	w23, [x19, 2]
7839	strh	wzr, [x19, 4]
7840	ldrh	w1, [x0, #:lo12:.LANCHOR3]
7841	mov	w0, 0
7842.L1084:
7843	cmp	w0, w1
7844	beq	.L1140
7845	ldr	x4, [x29, 168]
7846	ldrh	w3, [x4], 2
7847	str	x4, [x29, 168]
7848	cmp	w3, w2
7849	beq	.L1085
7850	strb	w0, [x19, 6]
7851	b	.L1140
7852.L1045:
7853	ldr	x6, [x0]
7854	ldrh	w7, [x6]
7855	cmp	w7, w3
7856	beq	.L1048
7857	ldr	w6, [x6, 4]
7858	cmn	w6, #1
7859	csel	w1, w1, w6, eq
7860	csel	w2, w2, w5, eq
7861.L1048:
7862	add	x0, x0, 32
7863	b	.L1044
7864.L1051:
7865	mov	w0, -1
7866	str	w0, [x25, #:lo12:.LANCHOR153]
7867	b	.L1038
7868.L1056:
7869	ldrh	w3, [x2]
7870	cmp	w3, w5
7871	beq	.L1055
7872	ubfiz	x4, x24, 5, 16
7873	add	w24, w24, 1
7874	add	x4, x0, x4
7875	and	w24, w24, 65535
7876	orr	w3, w23, w3, lsl 10
7877	str	w3, [x4, 4]
7878.L1055:
7879	add	x2, x2, 2
7880	b	.L1054
7881.L1083:
7882	ldr	x4, [x20, #:lo12:.LANCHOR120]
7883	add	x4, x4, x25
7884	ldr	w5, [x4, 4]
7885	str	w5, [x29, 188]
7886	lsr	w0, w5, 10
7887	bl	P2V_plane
7888	and	w0, w0, 65535
7889	cmp	w23, w26
7890	bcc	.L1058
7891	ldr	w1, [x29, 164]
7892	ccmp	w1, w0, 0, eq
7893	bhi	.L1058
7894	cmp	w23, w22
7895	ccmp	w27, w0, 0, eq
7896	beq	.L1059
7897	ldr	w0, [x4]
7898	cmn	w0, #1
7899	beq	.L1060
7900	ldr	x3, [x4, 16]
7901	mov	w0, 61589
7902	ldrh	w1, [x3]
7903	cmp	w1, w0
7904	beq	.L1061
7905.L1067:
7906	ldrh	w0, [x19]
7907.L1145:
7908	bl	decrement_vpc_count
7909.L1058:
7910	add	x25, x25, 32
7911	b	.L1057
7912.L1061:
7913	ldr	w21, [x3, 4]
7914	cmn	w21, #1
7915	beq	.L1062
7916	ldr	x0, [x29, 144]
7917	ldr	w1, [x0, #:lo12:.LANCHOR71]
7918	mov	w0, w21
7919	bl	ftl_cmp_data_ver
7920	cbz	w0, .L1062
7921	ldr	x1, [x29, 144]
7922	add	w0, w21, 1
7923	str	w0, [x1, #:lo12:.LANCHOR71]
7924.L1062:
7925	ldp	w24, w0, [x3, 8]
7926	add	x1, x29, 184
7927	str	w0, [x29, 180]
7928	mov	w2, 0
7929	mov	w0, w24
7930	bl	log2phys
7931	ldr	w1, [x28, #:lo12:.LANCHOR153]
7932	cmn	w1, #1
7933	beq	.L1063
7934	mov	w0, w21
7935	bl	ftl_cmp_data_ver
7936	cbz	w0, .L1063
7937	ldr	w1, [x29, 180]
7938	cmn	w1, #1
7939	beq	.L1064
7940	ldr	x0, [x20, #:lo12:.LANCHOR120]
7941	mov	w2, 0
7942	add	x0, x0, x25
7943	ldr	x3, [x0, 16]
7944	str	w1, [x0, 4]
7945	mov	w1, 1
7946	str	x3, [x29, 136]
7947	bl	FlashReadPages
7948	ldr	x0, [x20, #:lo12:.LANCHOR120]
7949	ldr	x3, [x29, 136]
7950	add	x4, x0, x25
7951	ldr	w0, [x0, x25]
7952	cmn	w0, #1
7953	bne	.L1065
7954.L1066:
7955	mov	w0, -1
7956	str	w0, [x29, 180]
7957	ldrh	w0, [x19]
7958	bl	decrement_vpc_count
7959.L1074:
7960	ldr	w3, [x29, 180]
7961	cmn	w3, #1
7962	beq	.L1058
7963.L1088:
7964	lsr	w0, w3, 10
7965	bl	P2V_block_in_plane
7966	and	w24, w0, 65535
7967	adrp	x0, .LANCHOR5
7968	mov	w3, w24
7969	ldrh	w0, [x0, #:lo12:.LANCHOR5]
7970	cmp	w0, w24
7971	bhi	.L1079
7972	mov	w2, 2006
7973	adrp	x1, .LANCHOR160
7974	adrp	x0, .LC1
7975	add	x1, x1, :lo12:.LANCHOR160
7976	add	x0, x0, :lo12:.LC1
7977	str	w24, [x29, 136]
7978	bl	printf
7979	ldr	w3, [x29, 136]
7980.L1079:
7981	adrp	x1, .LANCHOR42
7982	ubfiz	x0, x24, 1, 16
7983	ldr	x1, [x1, #:lo12:.LANCHOR42]
7984	ldrh	w0, [x1, x0]
7985	cbz	w0, .L1080
7986	mov	w0, w3
7987	b	.L1145
7988.L1064:
7989	ldp	w1, w0, [x29, 184]
7990	cmp	w1, w0
7991	bne	.L1067
7992	mov	w2, 1
7993	add	x1, x29, 180
7994	mov	w0, w24
7995	bl	log2phys
7996	b	.L1067
7997.L1065:
7998	ldr	w0, [x3, 8]
7999	cmp	w24, w0
8000	bne	.L1066
8001	ldr	w0, [x3, 4]
8002	str	w0, [x29, 136]
8003	str	x3, [x29, 96]
8004	uxtw	x1, w0
8005	ldr	w0, [x28, #:lo12:.LANCHOR153]
8006	bl	ftl_cmp_data_ver
8007	cbz	w0, .L1066
8008	ldp	w0, w1, [x29, 184]
8009	ldr	x3, [x29, 96]
8010	cmp	w0, w1
8011	ldr	w1, [x29, 180]
8012	bne	.L1069
8013.L1143:
8014	mov	w0, w24
8015	bl	FtlReUsePrevPpa
8016	b	.L1066
8017.L1069:
8018	cmp	w0, w1
8019	beq	.L1066
8020	cmn	w0, #1
8021	beq	.L1070
8022	ldr	x3, [x4, 16]
8023	mov	w2, 0
8024	str	w0, [x4, 4]
8025	mov	w1, 1
8026	str	x3, [x29, 96]
8027	mov	x0, x4
8028	bl	FlashReadPages
8029	ldr	x3, [x29, 96]
8030.L1071:
8031	ldr	x0, [x20, #:lo12:.LANCHOR120]
8032	ldr	w0, [x0, x25]
8033	cmn	w0, #1
8034	beq	.L1072
8035	ldr	x0, [x29, 104]
8036	ldr	w3, [x3, 4]
8037	mov	w1, w3
8038	ldr	w0, [x0]
8039	bl	ftl_cmp_data_ver
8040	cbz	w0, .L1072
8041	ldr	w0, [x29, 136]
8042	mov	w1, w3
8043	bl	ftl_cmp_data_ver
8044	cbz	w0, .L1066
8045.L1072:
8046	ldr	w1, [x29, 180]
8047	b	.L1143
8048.L1070:
8049	str	w0, [x4]
8050	b	.L1071
8051.L1063:
8052	ldp	w1, w0, [x29, 184]
8053	cmp	w1, w0
8054	beq	.L1074
8055	mov	w2, 1
8056	add	x1, x29, 188
8057	mov	w0, w24
8058	bl	log2phys
8059	ldr	w3, [x29, 184]
8060	cmn	w3, #1
8061	beq	.L1074
8062	ldr	w0, [x29, 180]
8063	cmp	w3, w0
8064	beq	.L1088
8065	lsr	w0, w3, 10
8066	bl	P2V_block_in_plane
8067	adrp	x1, .LANCHOR51
8068	and	w0, w0, 65535
8069	ldrh	w1, [x1, #:lo12:.LANCHOR51]
8070	cmp	w1, w0
8071	beq	.L1078
8072	adrp	x1, .LANCHOR52
8073	ldrh	w1, [x1, #:lo12:.LANCHOR52]
8074	cmp	w1, w0
8075	beq	.L1078
8076	adrp	x1, .LANCHOR53
8077	ldrh	w1, [x1, #:lo12:.LANCHOR53]
8078	cmp	w1, w0
8079	bne	.L1074
8080.L1078:
8081	ldr	x0, [x20, #:lo12:.LANCHOR120]
8082	mov	w2, 0
8083	mov	w1, 1
8084	ldr	x4, [x0, 16]
8085	str	w3, [x0, 4]
8086	str	x4, [x29, 136]
8087	bl	FlashReadPages
8088	ldr	x0, [x20, #:lo12:.LANCHOR120]
8089	ldr	w0, [x0]
8090	cmn	w0, #1
8091	beq	.L1074
8092	ldr	x4, [x29, 136]
8093	mov	w0, w21
8094	ldr	w1, [x4, 4]
8095	bl	ftl_cmp_data_ver
8096	cbnz	w0, .L1074
8097	mov	w2, 1
8098	add	x1, x29, 184
8099	mov	w0, w24
8100	bl	log2phys
8101	b	.L1074
8102.L1080:
8103	mov	w1, w24
8104	adrp	x0, .LC102
8105	add	x0, x0, :lo12:.LC102
8106	bl	printf
8107	b	.L1058
8108.L1060:
8109	ldr	x0, [x29, 120]
8110	ldr	w0, [x0]
8111	cmp	w0, 31
8112	bhi	.L1081
8113	adrp	x1, .LANCHOR163
8114	add	x1, x1, :lo12:.LANCHOR163
8115	str	w5, [x1, w0, uxtw 2]
8116	add	w0, w0, 1
8117	ldr	x1, [x29, 120]
8118	str	w0, [x1]
8119.L1081:
8120	ldrh	w0, [x19]
8121	bl	decrement_vpc_count
8122	ldr	w0, [x28, #:lo12:.LANCHOR153]
8123	cmn	w0, #1
8124	bne	.L1082
8125.L1144:
8126	str	w21, [x28, #:lo12:.LANCHOR153]
8127	b	.L1058
8128.L1082:
8129	cmp	w21, w0
8130	bcs	.L1058
8131	b	.L1144
8132.L1085:
8133	add	w0, w0, 1
8134	and	w0, w0, 65535
8135	b	.L1084
8136.L1059:
8137	strb	w27, [x19, 6]
8138	strh	w22, [x19, 2]
8139	b	.L1147
8140	.size	FtlRecoverySuperblock, .-FtlRecoverySuperblock
8141	.section	.text.FtlSuperblockPowerLostFix,"ax",@progbits
8142	.align	2
8143	.global	FtlSuperblockPowerLostFix
8144	.type	FtlSuperblockPowerLostFix, %function
8145FtlSuperblockPowerLostFix:
8146	stp	x29, x30, [sp, -80]!
8147	adrp	x1, .LANCHOR108
8148	add	x29, sp, 0
8149	stp	x19, x20, [sp, 16]
8150	mov	x19, x0
8151	mov	w0, -1
8152	ldr	x20, [x1, #:lo12:.LANCHOR108]
8153	str	w0, [x29, 72]
8154	adrp	x0, .LANCHOR107
8155	stp	x21, x22, [sp, 32]
8156	mov	w1, -3
8157	ldr	x0, [x0, #:lo12:.LANCHOR107]
8158	adrp	x21, .LANCHOR71
8159	str	x20, [x29, 64]
8160	add	x21, x21, :lo12:.LANCHOR71
8161	str	x0, [x29, 56]
8162	mov	w22, 7
8163	str	w1, [x20, 8]
8164	mov	w1, -2
8165	str	w1, [x20, 12]
8166	ldrh	w1, [x19]
8167	strh	w1, [x20, 2]
8168	strh	wzr, [x20]
8169	mov	w1, 61589
8170	str	w1, [x0]
8171	mov	w1, 22136
8172	movk	w1, 0x1234, lsl 16
8173	str	w1, [x0, 4]
8174.L1149:
8175	subs	w22, w22, #1
8176	beq	.L1151
8177	ldrh	w0, [x19, 4]
8178	cbnz	w0, .L1150
8179.L1151:
8180	ldrh	w0, [x19]
8181	adrp	x1, .LANCHOR42
8182	ldrh	w3, [x19, 4]
8183	ldr	x2, [x1, #:lo12:.LANCHOR42]
8184	lsl	x0, x0, 1
8185	ldrh	w1, [x2, x0]
8186	sub	w1, w1, w3
8187	strh	w1, [x2, x0]
8188	adrp	x0, .LANCHOR19
8189	strb	wzr, [x19, 6]
8190	strh	wzr, [x19, 4]
8191	ldrh	w0, [x0, #:lo12:.LANCHOR19]
8192	strh	w0, [x19, 2]
8193	ldp	x21, x22, [sp, 32]
8194	ldp	x19, x20, [sp, 16]
8195	ldp	x29, x30, [sp], 80
8196	ret
8197.L1150:
8198	mov	x0, x19
8199	bl	get_new_active_ppa
8200	str	w0, [x29, 52]
8201	cmn	w0, #1
8202	beq	.L1151
8203	ldr	w0, [x21]
8204	mov	w3, 0
8205	str	w0, [x20, 4]
8206	mov	w2, 0
8207	add	w0, w0, 1
8208	mov	w1, 1
8209	cmn	w0, #1
8210	csel	w0, w0, wzr, ne
8211	str	w0, [x21]
8212	add	x0, x29, 48
8213	bl	FlashProgPages
8214	ldrh	w0, [x19]
8215	bl	decrement_vpc_count
8216	b	.L1149
8217	.size	FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
8218	.section	.text.FtlLoadBbt,"ax",@progbits
8219	.align	2
8220	.global	FtlLoadBbt
8221	.type	FtlLoadBbt, %function
8222FtlLoadBbt:
8223	stp	x29, x30, [sp, -80]!
8224	add	x29, sp, 0
8225	stp	x23, x24, [sp, 48]
8226	adrp	x23, .LANCHOR107
8227	stp	x19, x20, [sp, 16]
8228	adrp	x24, .LANCHOR17
8229	stp	x21, x22, [sp, 32]
8230	adrp	x22, .LANCHOR106
8231	add	x20, x22, :lo12:.LANCHOR106
8232	ldr	x0, [x23, #:lo12:.LANCHOR107]
8233	str	x25, [sp, 64]
8234	mov	w25, 61649
8235	str	x0, [x20, 8]
8236	adrp	x0, .LANCHOR108
8237	ldr	x21, [x0, #:lo12:.LANCHOR108]
8238	str	x21, [x20, 16]
8239	bl	FtlBbtMemInit
8240	ldrh	w19, [x24, #:lo12:.LANCHOR17]
8241	add	x24, x24, :lo12:.LANCHOR17
8242	sub	w19, w19, #1
8243	and	w19, w19, 65535
8244.L1161:
8245	ldrh	w0, [x24]
8246	sub	w0, w0, #15
8247	cmp	w0, w19
8248	bgt	.L1164
8249	lsl	w0, w19, 10
8250	mov	w2, 1
8251	str	w0, [x20, 4]
8252	mov	w1, w2
8253	mov	x0, x20
8254	bl	FlashReadPages
8255	ldr	w0, [x20]
8256	cmn	w0, #1
8257	bne	.L1162
8258	ldr	w0, [x20, 4]
8259	mov	w2, 1
8260	mov	w1, w2
8261	add	w0, w0, 1
8262	str	w0, [x20, 4]
8263	mov	x0, x20
8264	bl	FlashReadPages
8265.L1162:
8266	ldr	w0, [x20]
8267	cmn	w0, #1
8268	beq	.L1163
8269	ldrh	w0, [x21]
8270	cmp	w0, w25
8271	bne	.L1163
8272	adrp	x1, .LANCHOR37
8273	add	x0, x1, :lo12:.LANCHOR37
8274	strh	w19, [x1, #:lo12:.LANCHOR37]
8275	ldr	w1, [x21, 4]
8276	str	w1, [x0, 8]
8277	ldrh	w1, [x21, 8]
8278	strh	w1, [x0, 4]
8279.L1164:
8280	adrp	x19, .LANCHOR37
8281	mov	w0, 65535
8282	add	x20, x19, :lo12:.LANCHOR37
8283	ldrh	w1, [x19, #:lo12:.LANCHOR37]
8284	cmp	w1, w0
8285	beq	.L1178
8286	ldrh	w1, [x20, 4]
8287	cmp	w1, w0
8288	beq	.L1168
8289	add	x0, x22, :lo12:.LANCHOR106
8290	lsl	w1, w1, 10
8291	mov	w2, 1
8292	str	w1, [x0, 4]
8293	mov	w1, w2
8294	bl	FlashReadPages
8295	ldr	w0, [x22, #:lo12:.LANCHOR106]
8296	cmn	w0, #1
8297	beq	.L1168
8298	ldrh	w1, [x21]
8299	mov	w0, 61649
8300	cmp	w1, w0
8301	bne	.L1168
8302	ldr	w1, [x20, 8]
8303	ldr	w0, [x21, 4]
8304	cmp	w0, w1
8305	bls	.L1168
8306	ldrh	w1, [x20, 4]
8307	str	w0, [x20, 8]
8308	ldrh	w0, [x21, 8]
8309	strh	w1, [x19, #:lo12:.LANCHOR37]
8310	strh	w0, [x20, 4]
8311.L1168:
8312	ldrh	w0, [x19, #:lo12:.LANCHOR37]
8313	add	x24, x19, :lo12:.LANCHOR37
8314	mov	w1, 1
8315	mov	w25, 61649
8316	bl	FtlGetLastWrittenPage
8317	sxth	w20, w0
8318	add	w0, w0, 1
8319	strh	w0, [x24, 2]
8320	add	x24, x22, :lo12:.LANCHOR106
8321.L1170:
8322	tbz	w20, #31, .L1173
8323	adrp	x1, .LANCHOR164
8324	adrp	x0, .LC1
8325	mov	w2, 254
8326	add	x1, x1, :lo12:.LANCHOR164
8327	add	x0, x0, :lo12:.LC1
8328	bl	printf
8329.L1172:
8330	add	x0, x19, :lo12:.LANCHOR37
8331	ldrh	w1, [x21, 10]
8332	strh	w1, [x0, 6]
8333	mov	w1, 65535
8334	ldrh	w0, [x21, 12]
8335	cmp	w0, w1
8336	beq	.L1175
8337	adrp	x1, .LANCHOR2
8338	ldr	w2, [x1, #:lo12:.LANCHOR2]
8339	cmp	w0, w2
8340	beq	.L1175
8341	adrp	x1, .LANCHOR6
8342	ldrh	w1, [x1, #:lo12:.LANCHOR6]
8343	lsr	w1, w1, 2
8344	cmp	w2, w1
8345	bcs	.L1175
8346	cmp	w0, w1
8347	bcs	.L1175
8348	bl	FtlSysBlkNumInit
8349.L1175:
8350	add	x19, x19, :lo12:.LANCHOR37
8351	adrp	x21, .LANCHOR10
8352	adrp	x23, .LANCHOR137
8353	add	x19, x19, 32
8354	add	x21, x21, :lo12:.LANCHOR10
8355	add	x23, x23, :lo12:.LANCHOR137
8356	add	x22, x22, :lo12:.LANCHOR106
8357	mov	w20, 0
8358.L1176:
8359	ldrh	w0, [x21]
8360	cmp	w20, w0
8361	bcc	.L1177
8362	mov	w0, 0
8363.L1160:
8364	ldp	x19, x20, [sp, 16]
8365	ldp	x21, x22, [sp, 32]
8366	ldp	x23, x24, [sp, 48]
8367	ldr	x25, [sp, 64]
8368	ldp	x29, x30, [sp], 80
8369	ret
8370.L1163:
8371	sub	w19, w19, #1
8372	and	w19, w19, 65535
8373	b	.L1161
8374.L1173:
8375	ldrh	w0, [x19, #:lo12:.LANCHOR37]
8376	mov	w2, 1
8377	mov	w1, w2
8378	orr	w0, w20, w0, lsl 10
8379	str	w0, [x24, 4]
8380	ldr	x0, [x23, #:lo12:.LANCHOR107]
8381	str	x0, [x24, 8]
8382	mov	x0, x24
8383	bl	FlashReadPages
8384	ldr	w0, [x24]
8385	cmn	w0, #1
8386	beq	.L1171
8387	ldrh	w0, [x21]
8388	cmp	w0, w25
8389	beq	.L1172
8390.L1171:
8391	sub	w20, w20, #1
8392	sxth	w20, w20
8393	b	.L1170
8394.L1177:
8395	ldrh	w2, [x23]
8396	ldr	x0, [x22, 8]
8397	mul	w1, w2, w20
8398	lsl	w2, w2, 2
8399	add	w20, w20, 1
8400	add	x1, x0, x1, lsl 2
8401	ldr	x0, [x19], 8
8402	bl	ftl_memcpy
8403	b	.L1176
8404.L1178:
8405	mov	w0, -1
8406	b	.L1160
8407	.size	FtlLoadBbt, .-FtlLoadBbt
8408	.section	.text.FtlMakeBbt,"ax",@progbits
8409	.align	2
8410	.global	FtlMakeBbt
8411	.type	FtlMakeBbt, %function
8412FtlMakeBbt:
8413	stp	x29, x30, [sp, -128]!
8414	add	x29, sp, 0
8415	stp	x21, x22, [sp, 32]
8416	mov	w22, 0
8417	stp	x19, x20, [sp, 16]
8418	adrp	x20, .LANCHOR37
8419	stp	x23, x24, [sp, 48]
8420	add	x21, x20, :lo12:.LANCHOR37
8421	stp	x25, x26, [sp, 64]
8422	add	x24, x21, 32
8423	stp	x27, x28, [sp, 80]
8424	bl	FtlBbtMemInit
8425	bl	FtlLoadFactoryBbt
8426	adrp	x28, .LANCHOR106
8427	add	x21, x21, 12
8428	add	x25, x28, :lo12:.LANCHOR106
8429	adrp	x0, .LANCHOR10
8430	add	x0, x0, :lo12:.LANCHOR10
8431	str	x0, [x29, 120]
8432.L1191:
8433	ldr	x0, [x29, 120]
8434	ldrh	w0, [x0]
8435	cmp	w22, w0
8436	bcc	.L1197
8437	adrp	x21, .LANCHOR25
8438	add	x21, x21, :lo12:.LANCHOR25
8439	mov	w19, 0
8440.L1198:
8441	ldrh	w0, [x21]
8442	cmp	w0, w19
8443	bhi	.L1199
8444	add	x21, x20, :lo12:.LANCHOR37
8445	mov	w22, 65535
8446	ldrh	w19, [x21, 12]
8447	sub	w19, w19, #1
8448	and	w19, w19, 65535
8449.L1200:
8450	ldrh	w0, [x21, 12]
8451	sub	w0, w0, #47
8452	cmp	w0, w19
8453	bgt	.L1204
8454	mov	w0, w19
8455	bl	FtlBbmIsBadBlock
8456	cmp	w0, 1
8457	beq	.L1201
8458	mov	w0, w19
8459	bl	FlashTestBlk
8460	cbz	w0, .L1202
8461	mov	w0, w19
8462	bl	FtlBbmMapBadBlock
8463.L1201:
8464	sub	w19, w19, #1
8465	and	w19, w19, 65535
8466	b	.L1200
8467.L1197:
8468	adrp	x2, .LANCHOR108
8469	adrp	x0, .LANCHOR107
8470	add	x19, x28, :lo12:.LANCHOR106
8471	ldrh	w1, [x21]
8472	ldr	x0, [x0, #:lo12:.LANCHOR107]
8473	mov	w3, 65535
8474	ldr	x26, [x2, #:lo12:.LANCHOR108]
8475	cmp	w1, w3
8476	stp	x0, x26, [x19, 8]
8477	adrp	x23, .LANCHOR17
8478	str	x2, [x29, 112]
8479	beq	.L1192
8480	ldrh	w4, [x23, #:lo12:.LANCHOR17]
8481	mov	w2, 1
8482	madd	w27, w4, w22, w1
8483	mov	w1, w2
8484	lsl	w0, w27, 10
8485	str	w0, [x19, 4]
8486	mov	x0, x19
8487	bl	FlashReadPages
8488	ldr	x1, [x19, 8]
8489	ldr	x0, [x24]
8490	ldrh	w2, [x23, #:lo12:.LANCHOR17]
8491	add	w2, w2, 7
8492	lsr	w2, w2, 3
8493	bl	ftl_memcpy
8494.L1193:
8495	mov	w0, w27
8496	add	w22, w22, 1
8497	bl	FtlBbmMapBadBlock
8498	add	x24, x24, 8
8499	add	x21, x21, 2
8500	b	.L1191
8501.L1192:
8502	mov	w1, w22
8503	bl	FlashGetBadBlockList
8504	ldr	x0, [x19, 8]
8505	ldr	x1, [x24]
8506	bl	FtlBbt2Bitmap
8507	ldrh	w19, [x23, #:lo12:.LANCHOR17]
8508	add	x23, x23, :lo12:.LANCHOR17
8509	adrp	x0, .LANCHOR137
8510	sub	w19, w19, #1
8511	add	x0, x0, :lo12:.LANCHOR137
8512	and	w19, w19, 65535
8513	str	x0, [x29, 104]
8514.L1194:
8515	ldrh	w0, [x23]
8516	madd	w0, w22, w0, w19
8517	bl	FtlBbmIsBadBlock
8518	cmp	w0, 1
8519	beq	.L1195
8520	ldr	x0, [x29, 112]
8521	mov	w2, 16
8522	strh	w19, [x21]
8523	mov	w1, 0
8524	ldr	x0, [x0, #:lo12:.LANCHOR108]
8525	bl	ftl_memset
8526	adrp	x0, .LANCHOR107
8527	mov	w2, 4096
8528	mov	w1, 0
8529	ldr	x0, [x0, #:lo12:.LANCHOR107]
8530	bl	ftl_memset
8531	mov	w0, -3872
8532	strh	w0, [x26]
8533	ldrh	w4, [x23]
8534	ldrh	w0, [x21]
8535	strh	w0, [x26, 2]
8536	ldr	x1, [x24]
8537	str	wzr, [x26, 4]
8538	madd	w27, w4, w22, w0
8539	lsl	w0, w27, 10
8540	str	w0, [x25, 4]
8541	ldr	x0, [x29, 104]
8542	ldrh	w2, [x0]
8543	ldr	x0, [x25, 8]
8544	lsl	w2, w2, 2
8545	bl	ftl_memcpy
8546	mov	w2, 1
8547	mov	x0, x25
8548	mov	w1, w2
8549	bl	FlashEraseBlocks
8550	mov	w3, 1
8551	mov	x0, x25
8552	mov	w2, w3
8553	mov	w1, w3
8554	bl	FlashProgPages
8555	ldr	w0, [x25]
8556	cmn	w0, #1
8557	bne	.L1193
8558	mov	w0, w27
8559	bl	FtlBbmMapBadBlock
8560	b	.L1194
8561.L1195:
8562	sub	w19, w19, #1
8563	and	w19, w19, 65535
8564	b	.L1194
8565.L1199:
8566	mov	w0, w19
8567	add	w19, w19, 1
8568	bl	FtlBbmMapBadBlock
8569	and	w19, w19, 65535
8570	b	.L1198
8571.L1202:
8572	ldrh	w0, [x21]
8573	cmp	w0, w22
8574	bne	.L1203
8575	strh	w19, [x21]
8576	b	.L1201
8577.L1203:
8578	strh	w19, [x21, 4]
8579.L1204:
8580	adrp	x0, .LANCHOR111
8581	add	x19, x20, :lo12:.LANCHOR37
8582	ldrh	w1, [x20, #:lo12:.LANCHOR37]
8583	mov	w2, 2
8584	ldr	x0, [x0, #:lo12:.LANCHOR111]
8585	str	wzr, [x19, 8]
8586	lsl	w1, w1, 10
8587	strh	wzr, [x19, 2]
8588	str	w1, [x0, 4]
8589	ldrh	w1, [x19, 4]
8590	lsl	w1, w1, 10
8591	str	w1, [x0, 36]
8592	mov	w1, 1
8593	bl	FlashEraseBlocks
8594	ldrh	w0, [x20, #:lo12:.LANCHOR37]
8595	bl	FtlBbmMapBadBlock
8596	ldrh	w0, [x19, 4]
8597	bl	FtlBbmMapBadBlock
8598	bl	FtlBbmTblFlush
8599	strh	wzr, [x19, 2]
8600	ldr	w0, [x19, 8]
8601	ldrh	w1, [x19, 4]
8602	add	w0, w0, 1
8603	str	w0, [x19, 8]
8604	ldrh	w0, [x20, #:lo12:.LANCHOR37]
8605	strh	w0, [x19, 4]
8606	strh	w1, [x20, #:lo12:.LANCHOR37]
8607	bl	FtlBbmTblFlush
8608	mov	w0, 0
8609	ldp	x19, x20, [sp, 16]
8610	ldp	x21, x22, [sp, 32]
8611	ldp	x23, x24, [sp, 48]
8612	ldp	x25, x26, [sp, 64]
8613	ldp	x27, x28, [sp, 80]
8614	ldp	x29, x30, [sp], 128
8615	ret
8616	.size	FtlMakeBbt, .-FtlMakeBbt
8617	.section	.text.FtlVendorPartWrite,"ax",@progbits
8618	.align	2
8619	.global	FtlVendorPartWrite
8620	.type	FtlVendorPartWrite, %function
8621FtlVendorPartWrite:
8622	stp	x29, x30, [sp, -208]!
8623	add	x29, sp, 0
8624	stp	x19, x20, [sp, 16]
8625	mov	w20, w1
8626	stp	x27, x28, [sp, 80]
8627	add	w1, w0, w1
8628	mov	w28, w0
8629	adrp	x0, .LANCHOR16
8630	stp	x21, x22, [sp, 32]
8631	ldrh	w0, [x0, #:lo12:.LANCHOR16]
8632	stp	x23, x24, [sp, 48]
8633	stp	x25, x26, [sp, 64]
8634	cmp	w1, w0
8635	bhi	.L1218
8636	adrp	x0, .LANCHOR22
8637	adrp	x25, .LANCHOR12
8638	adrp	x26, .LANCHOR23
8639	mov	x24, x2
8640	ldrh	w21, [x0, #:lo12:.LANCHOR22]
8641	add	x25, x25, :lo12:.LANCHOR12
8642	add	x26, x26, :lo12:.LANCHOR23
8643	mov	w23, 0
8644	lsr	w21, w28, w21
8645.L1212:
8646	cbnz	w20, .L1217
8647.L1210:
8648	mov	w0, w23
8649	ldp	x19, x20, [sp, 16]
8650	ldp	x21, x22, [sp, 32]
8651	ldp	x23, x24, [sp, 48]
8652	ldp	x25, x26, [sp, 64]
8653	ldp	x27, x28, [sp, 80]
8654	ldp	x29, x30, [sp], 208
8655	ret
8656.L1217:
8657	ldrh	w1, [x25]
8658	adrp	x0, .LANCHOR133
8659	adrp	x27, .LANCHOR124
8660	ldr	x0, [x0, #:lo12:.LANCHOR133]
8661	udiv	w22, w28, w1
8662	ldr	w2, [x0, w21, uxtw 2]
8663	and	w0, w20, 65535
8664	msub	w22, w22, w1, w28
8665	sub	w19, w1, w22
8666	and	w19, w19, 65535
8667	cmp	w20, w19
8668	csel	w19, w0, w19, cc
8669	cbz	w2, .L1214
8670	cmp	w19, w1
8671	beq	.L1214
8672	ldr	x0, [x27, #:lo12:.LANCHOR124]
8673	str	x0, [x29, 120]
8674	add	x0, x29, 144
8675	str	w2, [x29, 116]
8676	mov	w2, 1
8677	str	x0, [x29, 128]
8678	mov	w1, w2
8679	add	x0, x29, 112
8680	bl	FlashReadPages
8681.L1215:
8682	lsl	w4, w19, 9
8683	ldr	x0, [x27, #:lo12:.LANCHOR124]
8684	lsl	w22, w22, 7
8685	mov	w2, w4
8686	mov	x1, x24
8687	str	w4, [x29, 108]
8688	add	x0, x0, x22, sxtw 2
8689	bl	ftl_memcpy
8690	ldr	x2, [x27, #:lo12:.LANCHOR124]
8691	mov	w1, w21
8692	adrp	x0, .LANCHOR149
8693	add	x0, x0, :lo12:.LANCHOR149
8694	sub	w20, w20, w19
8695	add	w28, w28, w19
8696	add	w21, w21, 1
8697	bl	FtlMapWritePage
8698	cmn	w0, #1
8699	ldr	w4, [x29, 108]
8700	csinv	w23, w23, wzr, ne
8701	add	x24, x24, x4, sxtw
8702	b	.L1212
8703.L1214:
8704	ldrh	w2, [x26]
8705	mov	w1, 0
8706	ldr	x0, [x27, #:lo12:.LANCHOR124]
8707	bl	ftl_memset
8708	b	.L1215
8709.L1218:
8710	mov	w23, -1
8711	b	.L1210
8712	.size	FtlVendorPartWrite, .-FtlVendorPartWrite
8713	.section	.text.Ftl_save_ext_data,"ax",@progbits
8714	.align	2
8715	.global	Ftl_save_ext_data
8716	.type	Ftl_save_ext_data, %function
8717Ftl_save_ext_data:
8718	adrp	x0, .LANCHOR81
8719	add	x2, x0, :lo12:.LANCHOR81
8720	ldr	w1, [x0, #:lo12:.LANCHOR81]
8721	mov	w0, 19539
8722	movk	w0, 0x4654, lsl 16
8723	cmp	w1, w0
8724	bne	.L1223
8725	mov	w0, 68
8726	mov	w1, 1
8727	movk	w0, 0x5000, lsl 16
8728	str	w0, [x2, 4]
8729	adrp	x0, .LANCHOR68
8730	ldr	w0, [x0, #:lo12:.LANCHOR68]
8731	str	w0, [x2, 88]
8732	adrp	x0, .LANCHOR69
8733	ldr	w0, [x0, #:lo12:.LANCHOR69]
8734	str	w0, [x2, 92]
8735	adrp	x0, .LANCHOR67
8736	ldr	w0, [x0, #:lo12:.LANCHOR67]
8737	str	w0, [x2, 8]
8738	adrp	x0, .LANCHOR64
8739	ldr	w0, [x0, #:lo12:.LANCHOR64]
8740	str	w0, [x2, 12]
8741	adrp	x0, .LANCHOR62
8742	ldr	w0, [x0, #:lo12:.LANCHOR62]
8743	str	w0, [x2, 16]
8744	adrp	x0, .LANCHOR66
8745	ldr	w0, [x0, #:lo12:.LANCHOR66]
8746	str	w0, [x2, 20]
8747	adrp	x0, .LANCHOR73
8748	ldr	w0, [x0, #:lo12:.LANCHOR73]
8749	str	w0, [x2, 28]
8750	adrp	x0, .LANCHOR75
8751	ldr	w0, [x0, #:lo12:.LANCHOR75]
8752	str	w0, [x2, 32]
8753	adrp	x0, .LANCHOR63
8754	ldr	w0, [x0, #:lo12:.LANCHOR63]
8755	str	w0, [x2, 36]
8756	adrp	x0, .LANCHOR65
8757	ldr	w0, [x0, #:lo12:.LANCHOR65]
8758	str	w0, [x2, 40]
8759	adrp	x0, .LANCHOR76
8760	ldr	w0, [x0, #:lo12:.LANCHOR76]
8761	str	w0, [x2, 44]
8762	adrp	x0, .LANCHOR77
8763	ldr	w0, [x0, #:lo12:.LANCHOR77]
8764	str	w0, [x2, 48]
8765	mov	w0, 0
8766	b	FtlVendorPartWrite
8767.L1223:
8768	ret
8769	.size	Ftl_save_ext_data, .-Ftl_save_ext_data
8770	.section	.text.FtlEctTblFlush,"ax",@progbits
8771	.align	2
8772	.global	FtlEctTblFlush
8773	.type	FtlEctTblFlush, %function
8774FtlEctTblFlush:
8775	adrp	x2, .LANCHOR165
8776	ldrh	w1, [x2, #:lo12:.LANCHOR165]
8777	cmp	w1, 31
8778	bhi	.L1229
8779	add	w1, w1, 1
8780	strh	w1, [x2, #:lo12:.LANCHOR165]
8781	mov	w1, 1
8782.L1226:
8783	adrp	x2, .LANCHOR127
8784	cbnz	w0, .L1227
8785	ldr	x0, [x2, #:lo12:.LANCHOR127]
8786	ldr	w3, [x0, 20]
8787	ldr	w0, [x0, 16]
8788	add	w1, w1, w3
8789	cmp	w0, w1
8790	bcc	.L1231
8791.L1227:
8792	stp	x29, x30, [sp, -16]!
8793	add	x29, sp, 0
8794	ldr	x2, [x2, #:lo12:.LANCHOR127]
8795	ldr	w0, [x2, 16]
8796	str	w0, [x2, 20]
8797	mov	w0, 17221
8798	str	wzr, [x2, 4]
8799	movk	w0, 0x4254, lsl 16
8800	str	w0, [x2]
8801	adrp	x0, .LANCHOR125
8802	ldrh	w1, [x0, #:lo12:.LANCHOR125]
8803	lsl	w0, w1, 9
8804	str	w0, [x2, 12]
8805	ldr	w0, [x2, 8]
8806	add	w0, w0, 1
8807	str	w0, [x2, 8]
8808	mov	w0, 64
8809	bl	FtlVendorPartWrite
8810	bl	Ftl_save_ext_data
8811	mov	w0, 0
8812	ldp	x29, x30, [sp], 16
8813	ret
8814.L1229:
8815	mov	w1, 32
8816	b	.L1226
8817.L1231:
8818	mov	w0, 0
8819	ret
8820	.size	FtlEctTblFlush, .-FtlEctTblFlush
8821	.section	.text.sftl_vendor_write,"ax",@progbits
8822	.align	2
8823	.global	sftl_vendor_write
8824	.type	sftl_vendor_write, %function
8825sftl_vendor_write:
8826	add	w0, w0, 256
8827	b	FtlVendorPartWrite
8828	.size	sftl_vendor_write, .-sftl_vendor_write
8829	.section	.text.FtlVendorPartRead,"ax",@progbits
8830	.align	2
8831	.global	FtlVendorPartRead
8832	.type	FtlVendorPartRead, %function
8833FtlVendorPartRead:
8834	stp	x29, x30, [sp, -208]!
8835	add	x29, sp, 0
8836	stp	x19, x20, [sp, 16]
8837	mov	w20, w1
8838	stp	x21, x22, [sp, 32]
8839	add	w1, w0, w1
8840	mov	w21, w0
8841	adrp	x0, .LANCHOR16
8842	stp	x23, x24, [sp, 48]
8843	ldrh	w0, [x0, #:lo12:.LANCHOR16]
8844	stp	x25, x26, [sp, 64]
8845	stp	x27, x28, [sp, 80]
8846	cmp	w1, w0
8847	bhi	.L1242
8848	adrp	x0, .LANCHOR22
8849	adrp	x24, .LANCHOR12
8850	mov	x23, x2
8851	add	x24, x24, :lo12:.LANCHOR12
8852	ldrh	w3, [x0, #:lo12:.LANCHOR22]
8853	mov	w22, 0
8854	adrp	x25, .LANCHOR133
8855	lsr	w26, w21, w3
8856.L1236:
8857	cbnz	w20, .L1241
8858.L1234:
8859	mov	w0, w22
8860	ldp	x19, x20, [sp, 16]
8861	ldp	x21, x22, [sp, 32]
8862	ldp	x23, x24, [sp, 48]
8863	ldp	x25, x26, [sp, 64]
8864	ldp	x27, x28, [sp, 80]
8865	ldp	x29, x30, [sp], 208
8866	ret
8867.L1241:
8868	ldrh	w19, [x24]
8869	ldr	x0, [x25, #:lo12:.LANCHOR133]
8870	udiv	w27, w21, w19
8871	ldr	w1, [x0, w26, uxtw 2]
8872	and	w0, w20, 65535
8873	msub	w27, w27, w19, w21
8874	sub	w19, w19, w27
8875	and	w19, w19, 65535
8876	cmp	w20, w19
8877	csel	w19, w0, w19, cc
8878	lsl	w28, w19, 9
8879	cbz	w1, .L1238
8880	adrp	x4, .LANCHOR124
8881	mov	w2, 1
8882	str	x4, [x29, 104]
8883	lsl	w27, w27, 7
8884	ldr	x0, [x4, #:lo12:.LANCHOR124]
8885	str	x0, [x29, 120]
8886	add	x0, x29, 144
8887	str	w1, [x29, 116]
8888	mov	w1, w2
8889	str	x0, [x29, 128]
8890	add	x0, x29, 112
8891	bl	FlashReadPages
8892	ldr	x4, [x29, 104]
8893	mov	w2, w28
8894	ldr	w0, [x29, 112]
8895	cmn	w0, #1
8896	mov	x0, x23
8897	ldr	x1, [x4, #:lo12:.LANCHOR124]
8898	csinv	w22, w22, wzr, ne
8899	add	x1, x1, x27, sxtw 2
8900	bl	ftl_memcpy
8901.L1240:
8902	add	w26, w26, 1
8903	sub	w20, w20, w19
8904	add	w21, w21, w19
8905	add	x23, x23, x28, sxtw
8906	b	.L1236
8907.L1238:
8908	mov	w2, w28
8909	mov	w1, 0
8910	mov	x0, x23
8911	bl	ftl_memset
8912	b	.L1240
8913.L1242:
8914	mov	w22, -1
8915	b	.L1234
8916	.size	FtlVendorPartRead, .-FtlVendorPartRead
8917	.section	.text.FtlLoadEctTbl,"ax",@progbits
8918	.align	2
8919	.global	FtlLoadEctTbl
8920	.type	FtlLoadEctTbl, %function
8921FtlLoadEctTbl:
8922	stp	x29, x30, [sp, -32]!
8923	mov	w0, 64
8924	add	x29, sp, 0
8925	stp	x19, x20, [sp, 16]
8926	adrp	x19, .LANCHOR127
8927	adrp	x20, .LANCHOR125
8928	ldr	x2, [x19, #:lo12:.LANCHOR127]
8929	ldrh	w1, [x20, #:lo12:.LANCHOR125]
8930	bl	FtlVendorPartRead
8931	ldr	x0, [x19, #:lo12:.LANCHOR127]
8932	ldr	w1, [x0]
8933	mov	w0, 17221
8934	movk	w0, 0x4254, lsl 16
8935	cmp	w1, w0
8936	beq	.L1245
8937	adrp	x1, .LC103
8938	adrp	x0, .LC71
8939	add	x1, x1, :lo12:.LC103
8940	add	x0, x0, :lo12:.LC71
8941	bl	printf
8942	ldr	x0, [x19, #:lo12:.LANCHOR127]
8943	mov	w1, 0
8944	ldrh	w2, [x20, #:lo12:.LANCHOR125]
8945	lsl	w2, w2, 9
8946	bl	ftl_memset
8947.L1245:
8948	mov	w0, 0
8949	ldp	x19, x20, [sp, 16]
8950	ldp	x29, x30, [sp], 32
8951	ret
8952	.size	FtlLoadEctTbl, .-FtlLoadEctTbl
8953	.section	.text.Ftl_load_ext_data,"ax",@progbits
8954	.align	2
8955	.global	Ftl_load_ext_data
8956	.type	Ftl_load_ext_data, %function
8957Ftl_load_ext_data:
8958	stp	x29, x30, [sp, -48]!
8959	mov	w1, 1
8960	mov	w0, 0
8961	add	x29, sp, 0
8962	stp	x19, x20, [sp, 16]
8963	adrp	x19, .LANCHOR81
8964	str	x21, [sp, 32]
8965	add	x21, x19, :lo12:.LANCHOR81
8966	mov	x2, x21
8967	bl	FtlVendorPartRead
8968	ldr	w0, [x19, #:lo12:.LANCHOR81]
8969	mov	w20, 19539
8970	movk	w20, 0x4654, lsl 16
8971	cmp	w0, w20
8972	beq	.L1248
8973	mov	w2, 512
8974	mov	w1, 0
8975	mov	x0, x21
8976	bl	ftl_memset
8977	str	w20, [x19, #:lo12:.LANCHOR81]
8978.L1248:
8979	ldr	w1, [x19, #:lo12:.LANCHOR81]
8980	add	x0, x19, :lo12:.LANCHOR81
8981	cmp	w1, w20
8982	adrp	x1, .LANCHOR73
8983	bne	.L1249
8984	adrp	x2, .LANCHOR68
8985	ldr	w3, [x0, 88]
8986	str	w3, [x2, #:lo12:.LANCHOR68]
8987	adrp	x2, .LANCHOR69
8988	ldr	w3, [x0, 92]
8989	str	w3, [x2, #:lo12:.LANCHOR69]
8990	adrp	x2, .LANCHOR67
8991	ldr	w3, [x0, 8]
8992	str	w3, [x2, #:lo12:.LANCHOR67]
8993	adrp	x2, .LANCHOR64
8994	ldr	w3, [x0, 12]
8995	str	w3, [x2, #:lo12:.LANCHOR64]
8996	adrp	x2, .LANCHOR62
8997	ldr	w3, [x0, 16]
8998	str	w3, [x2, #:lo12:.LANCHOR62]
8999	adrp	x2, .LANCHOR66
9000	ldr	w3, [x0, 20]
9001	str	w3, [x2, #:lo12:.LANCHOR66]
9002	ldp	w2, w3, [x0, 28]
9003	str	w2, [x1, #:lo12:.LANCHOR73]
9004	adrp	x2, .LANCHOR75
9005	str	w3, [x2, #:lo12:.LANCHOR75]
9006	adrp	x2, .LANCHOR63
9007	ldr	w3, [x0, 36]
9008	str	w3, [x2, #:lo12:.LANCHOR63]
9009	adrp	x2, .LANCHOR65
9010	ldr	w3, [x0, 40]
9011	str	w3, [x2, #:lo12:.LANCHOR65]
9012	adrp	x2, .LANCHOR76
9013	ldr	w3, [x0, 44]
9014	str	w3, [x2, #:lo12:.LANCHOR76]
9015	ldr	w2, [x0, 48]
9016	adrp	x0, .LANCHOR77
9017	str	w2, [x0, #:lo12:.LANCHOR77]
9018.L1249:
9019	adrp	x0, .LANCHOR14
9020	adrp	x2, .LANCHOR72
9021	ldr	w1, [x1, #:lo12:.LANCHOR73]
9022	ldrh	w0, [x0, #:lo12:.LANCHOR14]
9023	ldr	w2, [x2, #:lo12:.LANCHOR72]
9024	ldp	x19, x20, [sp, 16]
9025	ldr	x21, [sp, 32]
9026	madd	w0, w0, w2, w1
9027	adrp	x1, .LANCHOR5
9028	ldp	x29, x30, [sp], 48
9029	ldrh	w1, [x1, #:lo12:.LANCHOR5]
9030	udiv	w0, w0, w1
9031	adrp	x1, .LANCHOR74
9032	str	w0, [x1, #:lo12:.LANCHOR74]
9033	ret
9034	.size	Ftl_load_ext_data, .-Ftl_load_ext_data
9035	.section	.text.sftl_vendor_read,"ax",@progbits
9036	.align	2
9037	.global	sftl_vendor_read
9038	.type	sftl_vendor_read, %function
9039sftl_vendor_read:
9040	add	w0, w0, 256
9041	b	FtlVendorPartRead
9042	.size	sftl_vendor_read, .-sftl_vendor_read
9043	.section	.text.FtlVpcTblFlush,"ax",@progbits
9044	.align	2
9045	.global	FtlVpcTblFlush
9046	.type	FtlVpcTblFlush, %function
9047FtlVpcTblFlush:
9048	stp	x29, x30, [sp, -112]!
9049	adrp	x1, .LANCHOR79
9050	mov	w2, 19539
9051	add	x29, sp, 0
9052	stp	x25, x26, [sp, 64]
9053	adrp	x25, .LANCHOR108
9054	stp	x21, x22, [sp, 32]
9055	adrp	x22, .LANCHOR106
9056	stp	x23, x24, [sp, 48]
9057	adrp	x24, .LANCHOR107
9058	stp	x27, x28, [sp, 80]
9059	add	x28, x22, :lo12:.LANCHOR106
9060	ldr	x21, [x25, #:lo12:.LANCHOR108]
9061	movk	w2, 0x4654, lsl 16
9062	stp	x19, x20, [sp, 16]
9063	add	x19, x1, :lo12:.LANCHOR79
9064	ldr	x0, [x24, #:lo12:.LANCHOR107]
9065	adrp	x23, .LANCHOR70
9066	ldrh	w1, [x1, #:lo12:.LANCHOR79]
9067	adrp	x27, .LANCHOR20
9068	stp	x0, x21, [x28, 8]
9069	mov	w26, 65535
9070	strh	w1, [x21, 2]
9071	mov	w1, -3932
9072	strh	w1, [x21]
9073	ldr	w1, [x19, 8]
9074	stp	w1, wzr, [x21, 4]
9075	adrp	x1, .LANCHOR39
9076	add	x20, x1, :lo12:.LANCHOR39
9077	str	wzr, [x21, 12]
9078	str	w2, [x1, #:lo12:.LANCHOR39]
9079	mov	w1, 68
9080	movk	w1, 0x5000, lsl 16
9081	str	w1, [x20, 4]
9082	ldrh	w1, [x19, 6]
9083	adrp	x2, .LANCHOR51
9084	strh	w1, [x20, 8]
9085	adrp	x1, .LANCHOR10
9086	ldrh	w1, [x1, #:lo12:.LANCHOR10]
9087	strb	w1, [x20, 10]
9088	add	x1, x2, :lo12:.LANCHOR51
9089	ldrh	w2, [x2, #:lo12:.LANCHOR51]
9090	strh	w2, [x20, 14]
9091	ldrh	w2, [x1, 2]
9092	ldrb	w3, [x1, 6]
9093	ldrb	w1, [x1, 8]
9094	strb	w1, [x20, 11]
9095	orr	w2, w3, w2, lsl 6
9096	strh	w2, [x20, 16]
9097	adrp	x2, .LANCHOR52
9098	add	x1, x2, :lo12:.LANCHOR52
9099	ldrh	w2, [x2, #:lo12:.LANCHOR52]
9100	ldrb	w3, [x1, 6]
9101	strh	w2, [x20, 18]
9102	ldrh	w2, [x1, 2]
9103	ldrb	w1, [x1, 8]
9104	strb	w1, [x20, 12]
9105	orr	w2, w3, w2, lsl 6
9106	strh	w2, [x20, 20]
9107	adrp	x2, .LANCHOR53
9108	add	x1, x2, :lo12:.LANCHOR53
9109	ldrh	w2, [x2, #:lo12:.LANCHOR53]
9110	ldrb	w3, [x1, 6]
9111	strh	w2, [x20, 22]
9112	ldrh	w2, [x1, 2]
9113	ldrb	w1, [x1, 8]
9114	strb	w1, [x20, 13]
9115	adrp	x1, .LANCHOR72
9116	orr	w2, w3, w2, lsl 6
9117	strh	w2, [x20, 24]
9118	ldr	w1, [x1, #:lo12:.LANCHOR72]
9119	str	w1, [x20, 32]
9120	ldr	w1, [x23, #:lo12:.LANCHOR70]
9121	str	w1, [x20, 40]
9122	adrp	x1, .LANCHOR71
9123	ldr	w1, [x1, #:lo12:.LANCHOR71]
9124	str	w1, [x20, 36]
9125	adrp	x1, .LANCHOR23
9126	ldrh	w2, [x1, #:lo12:.LANCHOR23]
9127	mov	w1, 255
9128	bl	ftl_memset
9129	ldr	x0, [x28, 8]
9130	mov	x1, x20
9131	mov	w2, 48
9132	adrp	x20, .LANCHOR5
9133	bl	ftl_memcpy
9134	adrp	x1, .LANCHOR42
9135	ldrh	w2, [x20, #:lo12:.LANCHOR5]
9136	ldr	x0, [x28, 8]
9137	ldr	x1, [x1, #:lo12:.LANCHOR42]
9138	lsl	w2, w2, 1
9139	add	x0, x0, 48
9140	bl	ftl_memcpy
9141	ldrh	w0, [x20, #:lo12:.LANCHOR5]
9142	adrp	x1, .LANCHOR1
9143	ldr	x3, [x28, 8]
9144	mov	w20, 0
9145	ldr	x1, [x1, #:lo12:.LANCHOR1]
9146	lsr	w2, w0, 3
9147	ubfiz	x0, x0, 1, 16
9148	add	w2, w2, 4
9149	add	x0, x0, 48
9150	and	x0, x0, -4
9151	add	x0, x3, x0
9152	bl	ftl_memcpy
9153	mov	w0, 0
9154	bl	FtlUpdateVaildLpn
9155	add	x0, x27, :lo12:.LANCHOR20
9156	str	x0, [x29, 104]
9157.L1253:
9158	ldr	x0, [x24, #:lo12:.LANCHOR107]
9159	mov	w3, 1
9160	str	x0, [x28, 8]
9161	mov	w2, w3
9162	ldr	x0, [x25, #:lo12:.LANCHOR108]
9163	ldrh	w1, [x19, 2]
9164	str	x0, [x28, 16]
9165	ldrh	w0, [x19]
9166	orr	w0, w1, w0, lsl 10
9167	mov	w1, w3
9168	str	w0, [x28, 4]
9169	mov	x0, x28
9170	bl	FlashProgPages
9171	ldrh	w0, [x27, #:lo12:.LANCHOR20]
9172	ldrh	w1, [x19, 2]
9173	sub	w0, w0, #1
9174	cmp	w1, w0
9175	blt	.L1254
9176	ldrh	w0, [x19]
9177	ldrh	w26, [x19, 4]
9178	strh	wzr, [x19, 2]
9179	strh	w0, [x19, 4]
9180	bl	FtlFreeSysBlkQueueOut
9181	strh	w0, [x19]
9182	ldr	w1, [x23, #:lo12:.LANCHOR70]
9183	mov	w3, 1
9184	str	w1, [x19, 8]
9185	add	w2, w1, 1
9186	str	w2, [x23, #:lo12:.LANCHOR70]
9187	ubfiz	w2, w0, 10, 16
9188	str	w2, [x28, 4]
9189	strh	w0, [x21, 2]
9190	mov	w2, w3
9191	str	w1, [x21, 4]
9192	mov	x0, x28
9193	mov	w1, w3
9194	bl	FlashProgPages
9195.L1254:
9196	ldrh	w0, [x19, 2]
9197	ldr	w1, [x28]
9198	add	w0, w0, 1
9199	and	w0, w0, 65535
9200	strh	w0, [x19, 2]
9201	cmn	w1, #1
9202	bne	.L1255
9203	cmp	w0, 1
9204	bne	.L1256
9205	adrp	x1, .LANCHOR166
9206	adrp	x0, .LC1
9207	mov	w2, 1124
9208	add	x1, x1, :lo12:.LANCHOR166
9209	add	x0, x0, :lo12:.LC1
9210	bl	printf
9211.L1256:
9212	ldrh	w0, [x19, 2]
9213	cmp	w0, 1
9214	bne	.L1257
9215	ldr	x0, [x29, 104]
9216	ldrh	w0, [x0]
9217	sub	w0, w0, #1
9218	strh	w0, [x19, 2]
9219.L1257:
9220	add	w20, w20, 1
9221	and	w20, w20, 65535
9222	cmp	w20, 3
9223	bls	.L1253
9224	add	x22, x22, :lo12:.LANCHOR106
9225	adrp	x0, .LC104
9226	mov	w2, w20
9227	add	x0, x0, :lo12:.LC104
9228	ldr	w1, [x22, 4]
9229	bl	printf
9230.L1259:
9231	b	.L1259
9232.L1255:
9233	cmp	w0, 1
9234	beq	.L1253
9235	mov	w0, 65535
9236	cmp	w26, w0
9237	beq	.L1260
9238	mov	w1, 1
9239	mov	w0, w26
9240	bl	FtlFreeSysBlkQueueIn
9241.L1260:
9242	ldp	x19, x20, [sp, 16]
9243	mov	w0, 0
9244	ldp	x21, x22, [sp, 32]
9245	ldp	x23, x24, [sp, 48]
9246	ldp	x25, x26, [sp, 64]
9247	ldp	x27, x28, [sp, 80]
9248	ldp	x29, x30, [sp], 112
9249	ret
9250	.size	FtlVpcTblFlush, .-FtlVpcTblFlush
9251	.section	.text.FtlSysFlush,"ax",@progbits
9252	.align	2
9253	.global	FtlSysFlush
9254	.type	FtlSysFlush, %function
9255FtlSysFlush:
9256	stp	x29, x30, [sp, -16]!
9257	add	x29, sp, 0
9258	bl	l2p_flush
9259	mov	w0, 1
9260	bl	FtlEctTblFlush
9261	bl	FtlVpcTblFlush
9262	mov	w0, 0
9263	ldp	x29, x30, [sp], 16
9264	ret
9265	.size	FtlSysFlush, .-FtlSysFlush
9266	.section	.text.sftl_deinit,"ax",@progbits
9267	.align	2
9268	.global	sftl_deinit
9269	.type	sftl_deinit, %function
9270sftl_deinit:
9271	adrp	x0, .LANCHOR86
9272	ldr	w0, [x0, #:lo12:.LANCHOR86]
9273	cmp	w0, 1
9274	bne	.L1270
9275	stp	x29, x30, [sp, -16]!
9276	add	x29, sp, 0
9277	bl	FtlSysFlush
9278	mov	w0, 0
9279	ldp	x29, x30, [sp], 16
9280	ret
9281.L1270:
9282	mov	w0, 0
9283	ret
9284	.size	sftl_deinit, .-sftl_deinit
9285	.section	.text.FtlDiscard,"ax",@progbits
9286	.align	2
9287	.global	FtlDiscard
9288	.type	FtlDiscard, %function
9289FtlDiscard:
9290	stp	x29, x30, [sp, -80]!
9291	add	w2, w0, w1
9292	add	x29, sp, 0
9293	stp	x19, x20, [sp, 16]
9294	mov	w19, w1
9295	adrp	x1, .LANCHOR34
9296	stp	x21, x22, [sp, 32]
9297	str	x23, [sp, 48]
9298	ldr	w1, [x1, #:lo12:.LANCHOR34]
9299	cmp	w2, w1
9300	bhi	.L1281
9301	cmp	w19, 31
9302	bhi	.L1275
9303.L1289:
9304	mov	w0, 0
9305.L1273:
9306	ldp	x19, x20, [sp, 16]
9307	ldp	x21, x22, [sp, 32]
9308	ldr	x23, [sp, 48]
9309	ldp	x29, x30, [sp], 80
9310	ret
9311.L1275:
9312	adrp	x21, .LANCHOR12
9313	ldrh	w1, [x21, #:lo12:.LANCHOR12]
9314	udiv	w20, w0, w1
9315	msub	w0, w1, w20, w0
9316	ands	w0, w0, 65535
9317	beq	.L1276
9318	sub	w1, w1, w0
9319	add	w20, w20, 1
9320	cmp	w1, w19
9321	csel	w1, w1, w19, ls
9322	sub	w19, w19, w1, uxth
9323.L1276:
9324	adrp	x22, .LANCHOR167
9325	adrp	x23, .LANCHOR63
9326	add	x22, x22, :lo12:.LANCHOR167
9327	add	x23, x23, :lo12:.LANCHOR63
9328	mov	w0, -1
9329	str	w0, [x29, 76]
9330.L1277:
9331	ldrh	w0, [x21, #:lo12:.LANCHOR12]
9332	cmp	w19, w0
9333	bcs	.L1279
9334	adrp	x0, .LANCHOR167
9335	ldr	w1, [x0, #:lo12:.LANCHOR167]
9336	cmp	w1, 32
9337	bls	.L1289
9338	str	wzr, [x0, #:lo12:.LANCHOR167]
9339	bl	l2p_flush
9340	bl	FtlVpcTblFlush
9341	b	.L1289
9342.L1279:
9343	mov	w2, 0
9344	add	x1, x29, 72
9345	mov	w0, w20
9346	bl	log2phys
9347	ldr	w0, [x29, 72]
9348	cmn	w0, #1
9349	beq	.L1278
9350	ldr	w0, [x22]
9351	mov	w2, 1
9352	add	x1, x29, 76
9353	add	w0, w0, 1
9354	str	w0, [x22]
9355	ldr	w0, [x23]
9356	add	w0, w0, 1
9357	str	w0, [x23]
9358	mov	w0, w20
9359	bl	log2phys
9360	ldr	w0, [x29, 72]
9361	lsr	w0, w0, 10
9362	bl	P2V_block_in_plane
9363	bl	decrement_vpc_count
9364.L1278:
9365	ldrh	w0, [x21, #:lo12:.LANCHOR12]
9366	add	w20, w20, 1
9367	sub	w19, w19, w0
9368	b	.L1277
9369.L1281:
9370	mov	w0, -1
9371	b	.L1273
9372	.size	FtlDiscard, .-FtlDiscard
9373	.section	.text.FtlVpcCheckAndModify,"ax",@progbits
9374	.align	2
9375	.global	FtlVpcCheckAndModify
9376	.type	FtlVpcCheckAndModify, %function
9377FtlVpcCheckAndModify:
9378	stp	x29, x30, [sp, -96]!
9379	adrp	x1, .LANCHOR168
9380	adrp	x0, .LC94
9381	add	x1, x1, :lo12:.LANCHOR168
9382	add	x29, sp, 0
9383	stp	x19, x20, [sp, 16]
9384	add	x0, x0, :lo12:.LC94
9385	stp	x21, x22, [sp, 32]
9386	adrp	x20, .LANCHOR128
9387	stp	x23, x24, [sp, 48]
9388	adrp	x21, .LANCHOR61
9389	str	x25, [sp, 64]
9390	bl	printf
9391	adrp	x0, .LANCHOR6
9392	mov	w19, 0
9393	add	x21, x21, :lo12:.LANCHOR61
9394	mov	w1, 0
9395	ldrh	w2, [x0, #:lo12:.LANCHOR6]
9396	ldr	x0, [x20, #:lo12:.LANCHOR128]
9397	lsl	w2, w2, 1
9398	bl	ftl_memset
9399.L1291:
9400	ldr	w0, [x21]
9401	cmp	w19, w0
9402	bcc	.L1293
9403	adrp	x22, .LANCHOR5
9404	adrp	x23, .LC105
9405	add	x22, x22, :lo12:.LANCHOR5
9406	add	x23, x23, :lo12:.LC105
9407	mov	w19, 0
9408	adrp	x25, .LANCHOR42
9409	mov	w24, 65535
9410.L1294:
9411	ldrh	w0, [x22]
9412	cmp	w0, w19
9413	bhi	.L1298
9414	ldp	x19, x20, [sp, 16]
9415	ldp	x21, x22, [sp, 32]
9416	ldp	x23, x24, [sp, 48]
9417	ldr	x25, [sp, 64]
9418	ldp	x29, x30, [sp], 96
9419	ret
9420.L1293:
9421	mov	w2, 0
9422	add	x1, x29, 92
9423	mov	w0, w19
9424	bl	log2phys
9425	ldr	w0, [x29, 92]
9426	cmn	w0, #1
9427	beq	.L1292
9428	lsr	w0, w0, 10
9429	bl	P2V_block_in_plane
9430	ldr	x2, [x20, #:lo12:.LANCHOR128]
9431	ubfiz	x0, x0, 1, 16
9432	ldrh	w1, [x2, x0]
9433	add	w1, w1, 1
9434	strh	w1, [x2, x0]
9435.L1292:
9436	add	w19, w19, 1
9437	b	.L1291
9438.L1298:
9439	ldr	x0, [x25, #:lo12:.LANCHOR42]
9440	ubfiz	x21, x19, 1, 16
9441	ldrh	w2, [x0, x21]
9442	ldr	x0, [x20, #:lo12:.LANCHOR128]
9443	ldrh	w3, [x0, x21]
9444	cmp	w2, w3
9445	beq	.L1296
9446	cmp	w2, w24
9447	beq	.L1296
9448	mov	w1, w19
9449	mov	x0, x23
9450	bl	printf
9451	adrp	x0, .LANCHOR51
9452	ldrh	w0, [x0, #:lo12:.LANCHOR51]
9453	cmp	w0, w19
9454	beq	.L1296
9455	adrp	x0, .LANCHOR53
9456	ldrh	w0, [x0, #:lo12:.LANCHOR53]
9457	cmp	w0, w19
9458	beq	.L1296
9459	adrp	x0, .LANCHOR52
9460	ldrh	w0, [x0, #:lo12:.LANCHOR52]
9461	cmp	w0, w19
9462	beq	.L1296
9463	ldr	x0, [x20, #:lo12:.LANCHOR128]
9464	ldrh	w1, [x0, x21]
9465	ldr	x0, [x25, #:lo12:.LANCHOR42]
9466	strh	w1, [x0, x21]
9467	mov	w0, w19
9468	bl	update_vpc_list
9469	bl	l2p_flush
9470	bl	FtlVpcTblFlush
9471.L1296:
9472	add	w19, w19, 1
9473	and	w19, w19, 65535
9474	b	.L1294
9475	.size	FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
9476	.section	.text.allocate_new_data_superblock,"ax",@progbits
9477	.align	2
9478	.global	allocate_new_data_superblock
9479	.type	allocate_new_data_superblock, %function
9480allocate_new_data_superblock:
9481	stp	x29, x30, [sp, -48]!
9482	add	x29, sp, 0
9483	stp	x19, x20, [sp, 16]
9484	ldrh	w19, [x0]
9485	str	x21, [sp, 32]
9486	mov	x21, x0
9487	adrp	x0, .LANCHOR5
9488	ldrh	w0, [x0, #:lo12:.LANCHOR5]
9489	cmp	w0, w19
9490	bcs	.L1304
9491	adrp	x1, .LANCHOR169
9492	adrp	x0, .LC1
9493	mov	w2, 2684
9494	add	x1, x1, :lo12:.LANCHOR169
9495	add	x0, x0, :lo12:.LC1
9496	bl	printf
9497.L1304:
9498	mov	w0, 65535
9499	cmp	w19, w0
9500	beq	.L1305
9501	adrp	x1, .LANCHOR42
9502	ubfiz	x0, x19, 1, 16
9503	ldr	x1, [x1, #:lo12:.LANCHOR42]
9504	ldrh	w0, [x1, x0]
9505	cbz	w0, .L1306
9506	mov	w0, w19
9507	bl	INSERT_DATA_LIST
9508.L1305:
9509	adrp	x1, .LANCHOR150
9510	mov	w0, 1
9511	strb	w0, [x21, 8]
9512	mov	w2, 65535
9513	ldrh	w0, [x1, #:lo12:.LANCHOR150]
9514	mov	x20, x1
9515	cmp	w0, w2
9516	beq	.L1307
9517	cmp	w19, w0
9518	bne	.L1308
9519	adrp	x2, .LANCHOR42
9520	ubfiz	x1, x0, 1, 16
9521	ldr	x2, [x2, #:lo12:.LANCHOR42]
9522	ldrh	w1, [x2, x1]
9523	cbz	w1, .L1309
9524.L1308:
9525	bl	update_vpc_list
9526.L1309:
9527	mov	w0, -1
9528	strh	w0, [x20, #:lo12:.LANCHOR150]
9529.L1307:
9530	mov	x0, x21
9531	bl	allocate_data_superblock
9532	bl	l2p_flush
9533	mov	w0, 0
9534	bl	FtlEctTblFlush
9535	bl	FtlVpcTblFlush
9536	ldr	x21, [sp, 32]
9537	mov	w0, 0
9538	ldp	x19, x20, [sp, 16]
9539	ldp	x29, x30, [sp], 48
9540	ret
9541.L1306:
9542	mov	w0, w19
9543	bl	INSERT_FREE_LIST
9544	b	.L1305
9545	.size	allocate_new_data_superblock, .-allocate_new_data_superblock
9546	.section	.text.FtlProgPages,"ax",@progbits
9547	.align	2
9548	.global	FtlProgPages
9549	.type	FtlProgPages, %function
9550FtlProgPages:
9551	stp	x29, x30, [sp, -96]!
9552	mov	w2, 0
9553	add	x29, sp, 0
9554	stp	x19, x20, [sp, 16]
9555	mov	x19, x3
9556	stp	x23, x24, [sp, 48]
9557	add	x20, x0, 4
9558	stp	x21, x22, [sp, 32]
9559	mov	w21, w1
9560	str	x25, [sp, 64]
9561	ubfiz	x21, x21, 5, 32
9562	add	x21, x21, 4
9563	adrp	x24, .LANCHOR19
9564	ldrb	w3, [x3, 9]
9565	adrp	x23, .LANCHOR81
9566	add	x21, x0, x21
9567	add	x24, x24, :lo12:.LANCHOR19
9568	add	x23, x23, :lo12:.LANCHOR81
9569	bl	FlashProgPages
9570.L1315:
9571	cmp	x20, x21
9572	beq	.L1322
9573	sub	x22, x20, #4
9574	adrp	x25, .LANCHOR42
9575	b	.L1323
9576.L1318:
9577	ldr	w0, [x20]
9578	lsr	w0, w0, 10
9579	bl	P2V_block_in_plane
9580	ldrh	w1, [x19]
9581	cmp	w1, w0, uxth
9582	bne	.L1316
9583	ldr	x2, [x25, #:lo12:.LANCHOR42]
9584	ubfiz	x1, x1, 1, 16
9585	ldrh	w3, [x19, 4]
9586	ldrh	w0, [x2, x1]
9587	sub	w0, w0, w3
9588	strh	w0, [x2, x1]
9589	strb	wzr, [x19, 6]
9590	ldrh	w0, [x24]
9591	strh	w0, [x19, 2]
9592	strh	wzr, [x19, 4]
9593.L1316:
9594	ldrh	w0, [x19, 4]
9595	cbnz	w0, .L1317
9596	mov	x0, x19
9597	bl	allocate_new_data_superblock
9598.L1317:
9599	ldr	w0, [x23, 96]
9600	add	w0, w0, 1
9601	str	w0, [x23, 96]
9602	ldr	w0, [x20]
9603	lsr	w0, w0, 10
9604	bl	FtlGcMarkBadPhyBlk
9605	mov	x0, x19
9606	bl	get_new_active_ppa
9607	str	w0, [x20]
9608	mov	w2, 0
9609	str	w0, [x29, 92]
9610	mov	w1, 1
9611	ldrb	w3, [x19, 9]
9612	mov	x0, x22
9613	bl	FlashProgPages
9614.L1323:
9615	ldr	w0, [x20, -4]
9616	cmn	w0, #1
9617	beq	.L1318
9618	adrp	x0, .LANCHOR3
9619	ldrb	w1, [x19, 6]
9620	ldrh	w0, [x0, #:lo12:.LANCHOR3]
9621	cmp	w1, w0
9622	bcc	.L1319
9623	adrp	x1, .LANCHOR170
9624	adrp	x0, .LC1
9625	mov	w2, 933
9626	add	x1, x1, :lo12:.LANCHOR170
9627	add	x0, x0, :lo12:.LC1
9628	bl	printf
9629.L1319:
9630	add	x1, x29, 96
9631	ldr	w0, [x22, 4]
9632	mov	w2, 1
9633	str	w0, [x1, -4]!
9634	ldr	w0, [x22, 24]
9635	bl	log2phys
9636	ldr	x0, [x22, 16]
9637	ldr	w3, [x0, 12]
9638	lsr	w0, w3, 10
9639	bl	P2V_block_in_plane
9640	and	w1, w0, 65535
9641	mov	w22, w1
9642	cmn	w3, #1
9643	beq	.L1320
9644	adrp	x2, .LANCHOR42
9645	ubfiz	x0, x1, 1, 16
9646	ldr	x2, [x2, #:lo12:.LANCHOR42]
9647	ldrh	w0, [x2, x0]
9648	cbnz	w0, .L1321
9649	adrp	x0, .LC106
9650	mov	w2, 0
9651	add	x0, x0, :lo12:.LC106
9652	bl	printf
9653.L1321:
9654	mov	w0, w22
9655	bl	decrement_vpc_count
9656.L1320:
9657	add	x20, x20, 32
9658	b	.L1315
9659.L1322:
9660	adrp	x0, .LANCHOR3
9661	ldrb	w1, [x19, 6]
9662	ldrh	w0, [x0, #:lo12:.LANCHOR3]
9663	cmp	w1, w0
9664	bcc	.L1314
9665	adrp	x1, .LANCHOR170
9666	adrp	x0, .LC1
9667	mov	w2, 948
9668	add	x1, x1, :lo12:.LANCHOR170
9669	add	x0, x0, :lo12:.LC1
9670	bl	printf
9671.L1314:
9672	ldp	x19, x20, [sp, 16]
9673	ldp	x21, x22, [sp, 32]
9674	ldp	x23, x24, [sp, 48]
9675	ldr	x25, [sp, 64]
9676	ldp	x29, x30, [sp], 96
9677	ret
9678	.size	FtlProgPages, .-FtlProgPages
9679	.section	.text.FtlGcFreeTempBlock,"ax",@progbits
9680	.align	2
9681	.global	FtlGcFreeTempBlock
9682	.type	FtlGcFreeTempBlock, %function
9683FtlGcFreeTempBlock:
9684	stp	x29, x30, [sp, -112]!
9685	mov	w2, 65535
9686	add	x29, sp, 0
9687	stp	x19, x20, [sp, 16]
9688	adrp	x19, .LANCHOR53
9689	stp	x21, x22, [sp, 32]
9690	adrp	x21, .LANCHOR19
9691	ldrh	w20, [x19, #:lo12:.LANCHOR53]
9692	stp	x23, x24, [sp, 48]
9693	stp	x25, x26, [sp, 64]
9694	cmp	w20, w2
9695	str	x27, [sp, 80]
9696	ldrh	w1, [x21, #:lo12:.LANCHOR19]
9697	bne	.L1330
9698.L1340:
9699	adrp	x0, .LANCHOR152
9700	ldrh	w2, [x19, #:lo12:.LANCHOR53]
9701	mov	w1, 65535
9702	str	wzr, [x0, #:lo12:.LANCHOR152]
9703	cmp	w2, w1
9704	add	x0, x19, :lo12:.LANCHOR53
9705	bne	.L1353
9706.L1356:
9707	mov	w0, 0
9708.L1329:
9709	ldp	x19, x20, [sp, 16]
9710	ldp	x21, x22, [sp, 32]
9711	ldp	x23, x24, [sp, 48]
9712	ldp	x25, x26, [sp, 64]
9713	ldr	x27, [sp, 80]
9714	ldp	x29, x30, [sp], 112
9715	ret
9716.L1330:
9717	cbz	w0, .L1333
9718	adrp	x0, .LANCHOR156
9719	ldrh	w3, [x0, #:lo12:.LANCHOR156]
9720	cmp	w3, w2
9721	beq	.L1334
9722.L1335:
9723	mov	w1, 2
9724.L1333:
9725	add	x0, x19, :lo12:.LANCHOR53
9726	bl	FtlGcScanTempBlk
9727	str	w0, [x29, 108]
9728	cmn	w0, #1
9729	beq	.L1336
9730	adrp	x0, .LANCHOR43
9731	ubfiz	x20, x20, 1, 16
9732	ldr	x1, [x0, #:lo12:.LANCHOR43]
9733	ldrh	w0, [x1, x20]
9734	cmp	w0, 4
9735	bls	.L1337
9736	sub	w0, w0, #5
9737	strh	w0, [x1, x20]
9738	mov	w0, 1
9739	bl	FtlEctTblFlush
9740.L1337:
9741	adrp	x0, .LANCHOR152
9742	mov	x19, x0
9743	ldr	w1, [x0, #:lo12:.LANCHOR152]
9744	cbnz	w1, .L1338
9745	adrp	x0, .LANCHOR81
9746	add	x0, x0, :lo12:.LANCHOR81
9747	ldr	w1, [x0, 96]
9748	add	w1, w1, 1
9749	str	w1, [x0, 96]
9750	ldr	w0, [x29, 108]
9751	lsr	w0, w0, 10
9752	bl	FtlBbmMapBadBlock
9753	bl	FtlBbmTblFlush
9754.L1338:
9755	str	wzr, [x19, #:lo12:.LANCHOR152]
9756.L1349:
9757	mov	w0, 1
9758	b	.L1329
9759.L1334:
9760	strh	wzr, [x0, #:lo12:.LANCHOR156]
9761	adrp	x0, .LANCHOR48
9762	ldrh	w0, [x0, #:lo12:.LANCHOR48]
9763	cmp	w0, 17
9764	bhi	.L1335
9765	b	.L1333
9766.L1336:
9767	adrp	x0, .LANCHOR156
9768	ldrh	w1, [x0, #:lo12:.LANCHOR156]
9769	mov	w0, 65535
9770	cmp	w1, w0
9771	bne	.L1349
9772	b	.L1340
9773.L1353:
9774	ldrb	w0, [x0, 7]
9775	adrp	x20, .LANCHOR97
9776	ldrh	w2, [x21, #:lo12:.LANCHOR19]
9777	ldrh	w1, [x20, #:lo12:.LANCHOR97]
9778	mul	w0, w0, w2
9779	cmp	w1, w0
9780	beq	.L1341
9781	adrp	x1, .LANCHOR171
9782	adrp	x0, .LC1
9783	mov	w2, 162
9784	add	x1, x1, :lo12:.LANCHOR171
9785	add	x0, x0, :lo12:.LC1
9786	bl	printf
9787.L1341:
9788	add	x0, x19, :lo12:.LANCHOR53
9789	adrp	x23, .LANCHOR42
9790	ldrh	w3, [x21, #:lo12:.LANCHOR19]
9791	adrp	x25, .LANCHOR61
9792	ldrh	w2, [x19, #:lo12:.LANCHOR53]
9793	adrp	x26, .LANCHOR171
9794	ldrb	w0, [x0, 7]
9795	add	x25, x25, :lo12:.LANCHOR61
9796	ldr	x1, [x23, #:lo12:.LANCHOR42]
9797	add	x26, x26, :lo12:.LANCHOR171
9798	mov	w21, 0
9799	mul	w0, w0, w3
9800	strh	w0, [x1, x2, lsl 1]
9801	adrp	x1, .LANCHOR67
9802	ldrh	w0, [x20, #:lo12:.LANCHOR97]
9803	ldr	w2, [x1, #:lo12:.LANCHOR67]
9804	add	w0, w0, w2
9805	str	w0, [x1, #:lo12:.LANCHOR67]
9806.L1342:
9807	ldrh	w0, [x20, #:lo12:.LANCHOR97]
9808	cmp	w0, w21
9809	bhi	.L1346
9810	mov	w0, -1
9811	bl	decrement_vpc_count
9812	ldrh	w0, [x19, #:lo12:.LANCHOR53]
9813	ldr	x2, [x23, #:lo12:.LANCHOR42]
9814	ubfiz	x1, x0, 1, 16
9815	ldrh	w1, [x2, x1]
9816	cbz	w1, .L1347
9817	bl	INSERT_DATA_LIST
9818.L1348:
9819	adrp	x0, .LANCHOR95
9820	mov	w21, -1
9821	strh	wzr, [x20, #:lo12:.LANCHOR97]
9822	strh	w21, [x19, #:lo12:.LANCHOR53]
9823	strh	wzr, [x0, #:lo12:.LANCHOR95]
9824	bl	l2p_flush
9825	bl	FtlVpcTblFlush
9826	adrp	x0, .LANCHOR48
9827	ldrh	w1, [x0, #:lo12:.LANCHOR48]
9828	adrp	x0, .LANCHOR78
9829	ldrh	w0, [x0, #:lo12:.LANCHOR78]
9830	add	w0, w0, w0, lsl 1
9831	cmp	w1, w0, lsr 2
9832	ble	.L1356
9833	adrp	x0, .LANCHOR80
9834	mov	w1, 20
9835	strh	w21, [x0, #:lo12:.LANCHOR80]
9836	adrp	x0, .LANCHOR82
9837	strh	w1, [x0, #:lo12:.LANCHOR82]
9838	b	.L1356
9839.L1346:
9840	adrp	x0, .LANCHOR98
9841	mov	w24, 12
9842	ldr	x27, [x0, #:lo12:.LANCHOR98]
9843	umull	x24, w21, w24
9844	ldr	w0, [x25]
9845	add	x22, x27, x24
9846	ldr	w1, [x22, 8]
9847	cmp	w1, w0
9848	bcc	.L1343
9849	adrp	x0, .LC1
9850	mov	w2, 168
9851	mov	x1, x26
9852	add	x0, x0, :lo12:.LC1
9853	bl	printf
9854.L1343:
9855	ldr	w0, [x22, 8]
9856	add	x1, x29, 108
9857	mov	w2, 0
9858	bl	log2phys
9859	ldr	w0, [x27, x24]
9860	ldr	w1, [x29, 108]
9861	cmp	w0, w1
9862	bne	.L1344
9863	lsr	w0, w0, 10
9864	bl	P2V_block_in_plane
9865	mov	w24, w0
9866	ldr	w0, [x22, 8]
9867	mov	w2, 1
9868	add	x1, x22, 4
9869	bl	log2phys
9870	mov	w0, w24
9871.L1355:
9872	bl	decrement_vpc_count
9873.L1345:
9874	add	w21, w21, 1
9875	and	w21, w21, 65535
9876	b	.L1342
9877.L1344:
9878	ldr	w0, [x22, 4]
9879	cmp	w1, w0
9880	beq	.L1345
9881	ldrh	w0, [x19, #:lo12:.LANCHOR53]
9882	b	.L1355
9883.L1347:
9884	bl	INSERT_FREE_LIST
9885	b	.L1348
9886	.size	FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
9887	.section	.text.FtlGcPageRecovery,"ax",@progbits
9888	.align	2
9889	.global	FtlGcPageRecovery
9890	.type	FtlGcPageRecovery, %function
9891FtlGcPageRecovery:
9892	stp	x29, x30, [sp, -32]!
9893	add	x29, sp, 0
9894	stp	x19, x20, [sp, 16]
9895	adrp	x20, .LANCHOR19
9896	adrp	x19, .LANCHOR53
9897	add	x19, x19, :lo12:.LANCHOR53
9898	ldrh	w1, [x20, #:lo12:.LANCHOR19]
9899	mov	x0, x19
9900	bl	FtlGcScanTempBlk
9901	ldrh	w1, [x19, 2]
9902	ldrh	w0, [x20, #:lo12:.LANCHOR19]
9903	cmp	w1, w0
9904	bcc	.L1357
9905	adrp	x0, .LANCHOR144
9906	add	x0, x0, :lo12:.LANCHOR144
9907	bl	FtlMapBlkWriteDump_data
9908	mov	w0, 0
9909	bl	FtlGcFreeTempBlock
9910	adrp	x0, .LANCHOR152
9911	str	wzr, [x0, #:lo12:.LANCHOR152]
9912.L1357:
9913	ldp	x19, x20, [sp, 16]
9914	ldp	x29, x30, [sp], 32
9915	ret
9916	.size	FtlGcPageRecovery, .-FtlGcPageRecovery
9917	.section	.text.FtlPowerLostRecovery,"ax",@progbits
9918	.align	2
9919	.global	FtlPowerLostRecovery
9920	.type	FtlPowerLostRecovery, %function
9921FtlPowerLostRecovery:
9922	stp	x29, x30, [sp, -32]!
9923	adrp	x0, .LANCHOR162
9924	add	x29, sp, 0
9925	str	x19, [sp, 16]
9926	adrp	x19, .LANCHOR51
9927	add	x19, x19, :lo12:.LANCHOR51
9928	str	wzr, [x0, #:lo12:.LANCHOR162]
9929	mov	x0, x19
9930	bl	FtlRecoverySuperblock
9931	mov	x0, x19
9932	adrp	x19, .LANCHOR52
9933	bl	FtlSlcSuperblockCheck
9934	add	x19, x19, :lo12:.LANCHOR52
9935	mov	x0, x19
9936	bl	FtlRecoverySuperblock
9937	mov	x0, x19
9938	bl	FtlSlcSuperblockCheck
9939	bl	FtlGcPageRecovery
9940	mov	w0, -1
9941	bl	decrement_vpc_count
9942	mov	w0, 0
9943	ldr	x19, [sp, 16]
9944	ldp	x29, x30, [sp], 32
9945	ret
9946	.size	FtlPowerLostRecovery, .-FtlPowerLostRecovery
9947	.section	.text.Ftl_gc_temp_data_write_back,"ax",@progbits
9948	.align	2
9949	.global	Ftl_gc_temp_data_write_back
9950	.type	Ftl_gc_temp_data_write_back, %function
9951Ftl_gc_temp_data_write_back:
9952	stp	x29, x30, [sp, -32]!
9953	mov	w3, 0
9954	mov	w2, 0
9955	add	x29, sp, 0
9956	stp	x19, x20, [sp, 16]
9957	adrp	x19, .LANCHOR89
9958	adrp	x20, .LANCHOR121
9959	ldr	w1, [x19, #:lo12:.LANCHOR89]
9960	add	x19, x19, :lo12:.LANCHOR89
9961	ldr	x0, [x20, #:lo12:.LANCHOR121]
9962	bl	FlashProgPages
9963	mov	w11, 0
9964.L1363:
9965	ldr	w1, [x19]
9966	cmp	w11, w1
9967	bcc	.L1366
9968	ldr	x0, [x20, #:lo12:.LANCHOR121]
9969	bl	FtlGcBufFree
9970	str	wzr, [x19]
9971	adrp	x0, .LANCHOR53+4
9972	ldrh	w0, [x0, #:lo12:.LANCHOR53+4]
9973	cbnz	w0, .L1367
9974	mov	w0, 1
9975	bl	FtlGcFreeTempBlock
9976	b	.L1369
9977.L1366:
9978	ldr	x2, [x20, #:lo12:.LANCHOR121]
9979	ubfiz	x0, x11, 5, 16
9980	add	x1, x2, x0
9981	ldr	w2, [x2, x0]
9982	cmn	w2, #1
9983	bne	.L1364
9984	adrp	x0, .LANCHOR53
9985	adrp	x3, .LANCHOR42
9986	ldrh	w4, [x0, #:lo12:.LANCHOR53]
9987	ldr	x3, [x3, #:lo12:.LANCHOR42]
9988	strh	wzr, [x3, x4, lsl 1]
9989	strh	w2, [x0, #:lo12:.LANCHOR53]
9990	adrp	x0, .LANCHOR81
9991	add	x0, x0, :lo12:.LANCHOR81
9992	ldr	w2, [x0, 96]
9993	add	w2, w2, 1
9994	str	w2, [x0, 96]
9995	ldr	w0, [x1, 4]
9996	lsr	w0, w0, 10
9997	bl	FtlBbmMapBadBlock
9998	bl	FtlBbmTblFlush
9999	bl	FtlGcPageVarInit
10000.L1369:
10001	mov	w0, 1
10002.L1362:
10003	ldp	x19, x20, [sp, 16]
10004	ldp	x29, x30, [sp], 32
10005	ret
10006.L1364:
10007	ldr	x0, [x1, 16]
10008	ldr	w1, [x1, 4]
10009	ldp	w2, w0, [x0, 8]
10010	bl	FtlGcUpdatePage
10011	add	w11, w11, 1
10012	and	w11, w11, 65535
10013	b	.L1363
10014.L1367:
10015	mov	w0, 0
10016	b	.L1362
10017	.size	Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
10018	.section	.text.Ftl_get_new_temp_ppa,"ax",@progbits
10019	.align	2
10020	.global	Ftl_get_new_temp_ppa
10021	.type	Ftl_get_new_temp_ppa, %function
10022Ftl_get_new_temp_ppa:
10023	stp	x29, x30, [sp, -32]!
10024	adrp	x0, .LANCHOR53
10025	mov	w2, 65535
10026	add	x29, sp, 0
10027	str	x19, [sp, 16]
10028	mov	x19, x0
10029	ldrh	w3, [x0, #:lo12:.LANCHOR53]
10030	cmp	w3, w2
10031	beq	.L1371
10032	add	x1, x0, :lo12:.LANCHOR53
10033	ldrh	w0, [x1, 4]
10034	cbnz	w0, .L1372
10035.L1371:
10036	mov	w0, 0
10037	bl	FtlGcFreeTempBlock
10038	add	x0, x19, :lo12:.LANCHOR53
10039	strb	wzr, [x0, 8]
10040	bl	allocate_data_superblock
10041	adrp	x0, .LANCHOR95
10042	strh	wzr, [x0, #:lo12:.LANCHOR95]
10043	adrp	x0, .LANCHOR97
10044	strh	wzr, [x0, #:lo12:.LANCHOR97]
10045	bl	l2p_flush
10046	mov	w0, 0
10047	bl	FtlEctTblFlush
10048	bl	FtlVpcTblFlush
10049.L1372:
10050	add	x0, x19, :lo12:.LANCHOR53
10051	ldr	x19, [sp, 16]
10052	ldp	x29, x30, [sp], 32
10053	b	get_new_active_ppa
10054	.size	Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
10055	.section	.text.rk_ftl_garbage_collect,"ax",@progbits
10056	.align	2
10057	.global	rk_ftl_garbage_collect
10058	.type	rk_ftl_garbage_collect, %function
10059rk_ftl_garbage_collect:
10060	stp	x29, x30, [sp, -192]!
10061	add	x29, sp, 0
10062	stp	x21, x22, [sp, 32]
10063	adrp	x22, .LANCHOR117
10064	stp	x19, x20, [sp, 16]
10065	ldr	w1, [x22, #:lo12:.LANCHOR117]
10066	stp	x23, x24, [sp, 48]
10067	stp	x25, x26, [sp, 64]
10068	stp	x27, x28, [sp, 80]
10069	cbnz	w1, .L1446
10070	adrp	x1, .LANCHOR45
10071	ldrh	w1, [x1, #:lo12:.LANCHOR45]
10072	cmp	w1, 47
10073	bls	.L1446
10074	mov	w24, w0
10075	adrp	x0, .LANCHOR156
10076	ldrh	w1, [x0, #:lo12:.LANCHOR156]
10077	mov	w0, 65535
10078	cmp	w1, w0
10079	bne	.L1376
10080.L1379:
10081	adrp	x0, .LANCHOR100
10082	mov	w3, 65535
10083	ldrh	w2, [x0, #:lo12:.LANCHOR100]
10084	cmp	w2, w3
10085	bne	.L1377
10086.L1378:
10087	adrp	x2, .LANCHOR84
10088	adrp	x19, .LANCHOR80
10089	mov	w20, 65535
10090	ldr	w1, [x2, #:lo12:.LANCHOR84]
10091	ldrh	w0, [x19, #:lo12:.LANCHOR80]
10092	add	w1, w1, 1
10093	add	w1, w1, w24, lsl 7
10094	str	w1, [x2, #:lo12:.LANCHOR84]
10095	cmp	w0, w20
10096	bne	.L1380
10097	adrp	x3, .LANCHOR53
10098	ldrh	w20, [x3, #:lo12:.LANCHOR53]
10099	cmp	w20, w0
10100	bne	.L1449
10101	adrp	x0, .LANCHOR99
10102	ldrh	w21, [x0, #:lo12:.LANCHOR99]
10103	cmp	w21, w20
10104	bne	.L1380
10105	adrp	x23, .LANCHOR48
10106	mov	w3, 1024
10107	ldrh	w0, [x23, #:lo12:.LANCHOR48]
10108	cmp	w0, 24
10109	mov	w0, 5120
10110	csel	w0, w0, w3, cc
10111	cmp	w1, w0
10112	bls	.L1452
10113	adrp	x0, .LANCHOR172
10114	str	wzr, [x2, #:lo12:.LANCHOR84]
10115	strh	wzr, [x0, #:lo12:.LANCHOR172]
10116	bl	GetSwlReplaceBlock
10117	and	w20, w0, 65535
10118	cmp	w20, w21
10119	bne	.L1453
10120	adrp	x5, .LANCHOR83
10121	ldrh	w1, [x23, #:lo12:.LANCHOR48]
10122	ldrh	w0, [x5, #:lo12:.LANCHOR83]
10123	cmp	w1, w0
10124	bcs	.L1383
10125	mov	w0, 64
10126	bl	List_get_gc_head_node
10127	and	w0, w0, 65535
10128	cmp	w0, w20
10129	beq	.L1385
10130	adrp	x1, .LANCHOR42
10131	ubfiz	x0, x0, 1, 16
10132	ldr	x1, [x1, #:lo12:.LANCHOR42]
10133	ldrh	w0, [x1, x0]
10134	cmp	w0, 7
10135	bhi	.L1386
10136	mov	w0, 0
10137	bl	List_get_gc_head_node
10138	and	w21, w0, 65535
10139	mov	w0, 128
10140	strh	w0, [x5, #:lo12:.LANCHOR83]
10141	cmp	w21, w20
10142	bne	.L1382
10143.L1385:
10144	bl	FtlGcReFreshBadBlk
10145.L1380:
10146	cmp	w24, 0
10147	mov	w0, 65535
10148	ccmp	w20, w0, 0, eq
10149	bne	.L1388
10150	adrp	x0, .LANCHOR48
10151	ldrh	w0, [x0, #:lo12:.LANCHOR48]
10152	cmp	w0, 24
10153	bhi	.L1454
10154	adrp	x1, .LANCHOR19
10155	cmp	w0, 16
10156	ldrh	w21, [x1, #:lo12:.LANCHOR19]
10157	bls	.L1390
10158	lsr	w21, w21, 5
10159.L1389:
10160	adrp	x2, .LANCHOR82
10161	mov	x3, x2
10162	ldrh	w1, [x2, #:lo12:.LANCHOR82]
10163	cmp	w1, w0
10164	bcs	.L1393
10165	adrp	x0, .LANCHOR53
10166	mov	w1, 65535
10167	ldrh	w0, [x0, #:lo12:.LANCHOR53]
10168	cmp	w0, w1
10169	bne	.L1394
10170	adrp	x1, .LANCHOR99
10171	ldrh	w1, [x1, #:lo12:.LANCHOR99]
10172	cmp	w1, w0
10173	bne	.L1394
10174	adrp	x0, .LANCHOR172
10175	ldrh	w0, [x0, #:lo12:.LANCHOR172]
10176	cbnz	w0, .L1395
10177	adrp	x1, .LANCHOR61
10178	adrp	x4, .LANCHOR59
10179	ldr	w1, [x1, #:lo12:.LANCHOR61]
10180	ldr	w4, [x4, #:lo12:.LANCHOR59]
10181	add	w1, w1, w1, lsl 1
10182	cmp	w4, w1, lsr 2
10183	bcs	.L1396
10184.L1395:
10185	adrp	x1, .LANCHOR78
10186	ldrh	w1, [x1, #:lo12:.LANCHOR78]
10187	add	w1, w1, w1, lsl 1
10188	asr	w1, w1, 2
10189	strh	w1, [x3, #:lo12:.LANCHOR82]
10190.L1397:
10191	adrp	x1, .LANCHOR87
10192	str	wzr, [x1, #:lo12:.LANCHOR87]
10193.L1374:
10194	ldp	x19, x20, [sp, 16]
10195	ldp	x21, x22, [sp, 32]
10196	ldp	x23, x24, [sp, 48]
10197	ldp	x25, x26, [sp, 64]
10198	ldp	x27, x28, [sp, 80]
10199	ldp	x29, x30, [sp], 192
10200	ret
10201.L1376:
10202	adrp	x1, .LANCHOR53
10203	ldrh	w1, [x1, #:lo12:.LANCHOR53]
10204	cmp	w1, w0
10205	beq	.L1379
10206	mov	w0, 1
10207	bl	FtlGcFreeTempBlock
10208	cbz	w0, .L1379
10209	mov	w0, 1
10210	b	.L1374
10211.L1377:
10212	adrp	x1, .LANCHOR99
10213	ldrh	w4, [x1, #:lo12:.LANCHOR99]
10214	cmp	w4, w3
10215	bne	.L1378
10216	strh	w2, [x1, #:lo12:.LANCHOR99]
10217	mov	w1, -1
10218	strh	w1, [x0, #:lo12:.LANCHOR100]
10219	b	.L1378
10220.L1386:
10221	mov	w0, 64
10222.L1478:
10223	strh	w0, [x5, #:lo12:.LANCHOR83]
10224	b	.L1385
10225.L1383:
10226	mov	w0, 80
10227	b	.L1478
10228.L1453:
10229	mov	w21, w20
10230.L1382:
10231	adrp	x1, .LANCHOR43
10232	ubfiz	x0, x21, 1, 32
10233	adrp	x3, .LANCHOR82
10234	mov	w20, w21
10235	ldr	x2, [x1, #:lo12:.LANCHOR43]
10236	adrp	x1, .LANCHOR42
10237	ldrh	w5, [x3, #:lo12:.LANCHOR82]
10238	ldr	x1, [x1, #:lo12:.LANCHOR42]
10239	ldrh	w4, [x2, x0]
10240	ldrh	w2, [x23, #:lo12:.LANCHOR48]
10241	ldrh	w3, [x1, x0]
10242	mov	w1, w21
10243	adrp	x0, .LC107
10244	add	x0, x0, :lo12:.LC107
10245	bl	printf
10246	b	.L1385
10247.L1449:
10248	mov	w20, w0
10249	b	.L1380
10250.L1452:
10251	mov	w20, w21
10252	b	.L1380
10253.L1390:
10254	cmp	w0, 12
10255	bls	.L1391
10256	lsr	w21, w21, 4
10257	b	.L1389
10258.L1391:
10259	cmp	w0, 8
10260	bls	.L1389
10261	lsr	w21, w21, 2
10262	b	.L1389
10263.L1454:
10264	mov	w21, 1
10265	b	.L1389
10266.L1396:
10267	mov	w1, 18
10268	strh	w1, [x2, #:lo12:.LANCHOR82]
10269	b	.L1397
10270.L1394:
10271	adrp	x0, .LANCHOR78
10272	ldrh	w0, [x0, #:lo12:.LANCHOR78]
10273	add	w0, w0, w0, lsl 1
10274	asr	w0, w0, 2
10275	strh	w0, [x3, #:lo12:.LANCHOR82]
10276.L1393:
10277	adrp	x0, .LANCHOR101
10278	ldrh	w0, [x0, #:lo12:.LANCHOR101]
10279	cbz	w0, .L1455
10280	add	w21, w21, 32
10281	and	w21, w21, 65535
10282.L1455:
10283	mov	w20, 65535
10284.L1399:
10285	ldrh	w0, [x19, #:lo12:.LANCHOR80]
10286	mov	w1, 65535
10287	cmp	w0, w1
10288	bne	.L1408
10289	cmp	w20, w0
10290	beq	.L1409
10291	strh	w20, [x19, #:lo12:.LANCHOR80]
10292.L1410:
10293	add	x0, x19, :lo12:.LANCHOR80
10294	mov	w1, 65535
10295	strb	wzr, [x0, 8]
10296	ldrh	w0, [x19, #:lo12:.LANCHOR80]
10297	cmp	w0, w1
10298	beq	.L1408
10299	bl	IsBlkInGcList
10300	cbz	w0, .L1413
10301	mov	w0, -1
10302	strh	w0, [x19, #:lo12:.LANCHOR80]
10303.L1413:
10304	ldrh	w1, [x19, #:lo12:.LANCHOR80]
10305	mov	w0, 65535
10306	add	x23, x19, :lo12:.LANCHOR80
10307	cmp	w1, w0
10308	beq	.L1408
10309	mov	x0, x23
10310	bl	make_superblock
10311	adrp	x0, .LANCHOR173
10312	ldrh	w1, [x19, #:lo12:.LANCHOR80]
10313	strh	wzr, [x23, 2]
10314	strh	wzr, [x0, #:lo12:.LANCHOR173]
10315	adrp	x0, .LANCHOR42
10316	strb	wzr, [x23, 6]
10317	ldr	x0, [x0, #:lo12:.LANCHOR42]
10318	ldrh	w1, [x0, x1, lsl 1]
10319	adrp	x0, .LANCHOR174
10320	strh	w1, [x0, #:lo12:.LANCHOR174]
10321.L1408:
10322	adrp	x0, .LANCHOR51
10323	ldrh	w1, [x19, #:lo12:.LANCHOR80]
10324	str	x0, [x29, 136]
10325	ldrh	w2, [x0, #:lo12:.LANCHOR51]
10326	cmp	w2, w1
10327	beq	.L1414
10328	adrp	x0, .LANCHOR52
10329	str	x0, [x29, 128]
10330	ldrh	w2, [x0, #:lo12:.LANCHOR52]
10331	cmp	w2, w1
10332	beq	.L1414
10333	adrp	x24, .LANCHOR85
10334	add	x0, x24, :lo12:.LANCHOR85
10335	str	x0, [x29, 160]
10336.L1415:
10337	ldrh	w1, [x19, #:lo12:.LANCHOR80]
10338	mov	w0, 65535
10339	cmp	w1, w0
10340	bne	.L1416
10341	adrp	x0, .LANCHOR87
10342	adrp	x25, .LANCHOR19
10343	add	x25, x25, :lo12:.LANCHOR19
10344	str	wzr, [x0, #:lo12:.LANCHOR87]
10345.L1417:
10346	ldrh	w5, [x24, #:lo12:.LANCHOR85]
10347	add	x7, x24, :lo12:.LANCHOR85
10348	mov	w0, w5
10349	bl	List_get_gc_head_node
10350	and	w6, w0, 65535
10351	strh	w6, [x19, #:lo12:.LANCHOR80]
10352	mov	w0, 65535
10353	cmp	w6, w0
10354	bne	.L1418
10355	strh	wzr, [x7]
10356	mov	w0, 8
10357	b	.L1374
10358.L1388:
10359	adrp	x1, .LANCHOR53
10360	ldrh	w1, [x1, #:lo12:.LANCHOR53]
10361	cmp	w1, w0
10362	bne	.L1458
10363	adrp	x0, .LANCHOR99
10364	ldrh	w0, [x0, #:lo12:.LANCHOR99]
10365	cmp	w0, w1
10366	bne	.L1458
10367	cmp	w20, w0
10368	bne	.L1458
10369	ldrh	w0, [x19, #:lo12:.LANCHOR80]
10370	cmp	w0, w20
10371	beq	.L1400
10372.L1458:
10373	mov	w21, 1
10374	b	.L1399
10375.L1400:
10376	adrp	x0, .LANCHOR87
10377	adrp	x21, .LANCHOR48
10378	adrp	x23, .LANCHOR172
10379	str	wzr, [x0, #:lo12:.LANCHOR87]
10380	adrp	x0, .LANCHOR82
10381	ldrh	w6, [x21, #:lo12:.LANCHOR48]
10382	mov	x2, x0
10383	ldrh	w1, [x0, #:lo12:.LANCHOR82]
10384	cmp	w1, w6
10385	ldrh	w1, [x23, #:lo12:.LANCHOR172]
10386	bcs	.L1401
10387	cbnz	w1, .L1402
10388	adrp	x1, .LANCHOR61
10389	adrp	x3, .LANCHOR59
10390	ldr	w1, [x1, #:lo12:.LANCHOR61]
10391	ldr	w3, [x3, #:lo12:.LANCHOR59]
10392	add	w1, w1, w1, lsl 1
10393	cmp	w3, w1, lsr 2
10394	bcs	.L1403
10395.L1402:
10396	adrp	x0, .LANCHOR78
10397	ldrh	w0, [x0, #:lo12:.LANCHOR78]
10398	add	w0, w0, w0, lsl 1
10399	asr	w0, w0, 2
10400	strh	w0, [x2, #:lo12:.LANCHOR82]
10401.L1479:
10402	bl	FtlReadRefresh
10403	ldrh	w0, [x23, #:lo12:.LANCHOR172]
10404	b	.L1374
10405.L1403:
10406	mov	w1, 18
10407	strh	w1, [x0, #:lo12:.LANCHOR82]
10408	b	.L1479
10409.L1401:
10410	cbnz	w1, .L1458
10411	adrp	x1, .LANCHOR78
10412	ldrh	w5, [x1, #:lo12:.LANCHOR78]
10413	add	w1, w5, w5, lsl 1
10414	asr	w1, w1, 2
10415	strh	w1, [x0, #:lo12:.LANCHOR82]
10416	mov	w0, 0
10417	bl	List_get_gc_head_node
10418	ubfiz	x0, x0, 1, 16
10419	adrp	x1, .LANCHOR42
10420	adrp	x2, .LANCHOR3
10421	ldr	x1, [x1, #:lo12:.LANCHOR42]
10422	ldrh	w2, [x2, #:lo12:.LANCHOR3]
10423	ldrh	w1, [x1, x0]
10424	adrp	x0, .LANCHOR20
10425	ldrh	w0, [x0, #:lo12:.LANCHOR20]
10426	mul	w0, w0, w2
10427	cmp	w1, w0, asr 1
10428	ble	.L1406
10429	sub	w5, w5, #1
10430	cmp	w6, w5
10431	bge	.L1479
10432.L1406:
10433	cbnz	w1, .L1458
10434	mov	w0, -1
10435	bl	decrement_vpc_count
10436	ldrh	w0, [x21, #:lo12:.LANCHOR48]
10437	add	w0, w0, 1
10438	b	.L1374
10439.L1409:
10440	adrp	x0, .LANCHOR99
10441	ldrh	w1, [x0, #:lo12:.LANCHOR99]
10442	cmp	w1, w20
10443	beq	.L1410
10444	adrp	x2, .LANCHOR42
10445	ubfiz	x1, x1, 1, 16
10446	ldr	x2, [x2, #:lo12:.LANCHOR42]
10447	ldrh	w1, [x2, x1]
10448	cbnz	w1, .L1411
10449	mov	w1, -1
10450	strh	w1, [x0, #:lo12:.LANCHOR99]
10451.L1411:
10452	ldrh	w1, [x0, #:lo12:.LANCHOR99]
10453	strh	w1, [x19, #:lo12:.LANCHOR80]
10454	mov	w1, -1
10455	strh	w1, [x0, #:lo12:.LANCHOR99]
10456	b	.L1410
10457.L1414:
10458	mov	w0, -1
10459	strh	w0, [x19, #:lo12:.LANCHOR80]
10460.L1480:
10461	adrp	x0, .LANCHOR172
10462	ldrh	w0, [x0, #:lo12:.LANCHOR172]
10463	b	.L1374
10464.L1418:
10465	mov	w0, w6
10466	bl	IsBlkInGcList
10467	add	w5, w5, 1
10468	cbz	w0, .L1419
10469	strh	w5, [x24, #:lo12:.LANCHOR85]
10470	b	.L1417
10471.L1419:
10472	adrp	x23, .LANCHOR42
10473	adrp	x4, .LANCHOR3
10474	ldrh	w0, [x25]
10475	ubfiz	x1, x6, 1, 16
10476	ldr	x2, [x23, #:lo12:.LANCHOR42]
10477	and	w5, w5, 65535
10478	ldrh	w4, [x4, #:lo12:.LANCHOR3]
10479	strh	w5, [x24, #:lo12:.LANCHOR85]
10480	ldrh	w3, [x2, x1]
10481	mul	w0, w0, w4
10482	cmp	w3, w0, asr 1
10483	bgt	.L1421
10484	cmp	w5, 48
10485	bls	.L1422
10486	cmp	w3, 8
10487	bls	.L1422
10488	adrp	x3, .LANCHOR95
10489	ldrh	w3, [x3, #:lo12:.LANCHOR95]
10490	cmp	w3, 35
10491	bhi	.L1422
10492.L1421:
10493	ldr	x3, [x29, 160]
10494	strh	wzr, [x3]
10495.L1422:
10496	ldrh	w1, [x2, x1]
10497	cmp	w0, w1
10498	bgt	.L1423
10499	mov	w0, 65535
10500	cmp	w20, w0
10501	bne	.L1423
10502	mov	w0, -1
10503	strh	w0, [x19, #:lo12:.LANCHOR80]
10504	adrp	x0, .LANCHOR85
10505	strh	wzr, [x0, #:lo12:.LANCHOR85]
10506	b	.L1480
10507.L1423:
10508	cbnz	w1, .L1424
10509	mov	w0, -1
10510	bl	decrement_vpc_count
10511	ldr	x0, [x29, 160]
10512	ldr	x1, [x29, 160]
10513	ldrh	w0, [x0]
10514	add	w0, w0, 1
10515	strh	w0, [x1]
10516	b	.L1417
10517.L1424:
10518	add	x0, x19, :lo12:.LANCHOR80
10519	strb	wzr, [x0, 8]
10520	ldr	x0, [x29, 136]
10521	ldrh	w0, [x0, #:lo12:.LANCHOR51]
10522	cmp	w0, w6
10523	bne	.L1425
10524	adrp	x1, .LANCHOR175
10525	adrp	x0, .LC1
10526	mov	w2, 658
10527	add	x1, x1, :lo12:.LANCHOR175
10528	add	x0, x0, :lo12:.LC1
10529	bl	printf
10530.L1425:
10531	ldr	x0, [x29, 128]
10532	ldrh	w1, [x19, #:lo12:.LANCHOR80]
10533	ldrh	w0, [x0, #:lo12:.LANCHOR52]
10534	cmp	w1, w0
10535	bne	.L1426
10536	adrp	x1, .LANCHOR175
10537	adrp	x0, .LC1
10538	mov	w2, 659
10539	add	x1, x1, :lo12:.LANCHOR175
10540	add	x0, x0, :lo12:.LC1
10541	bl	printf
10542.L1426:
10543	adrp	x0, .LANCHOR53
10544	ldrh	w1, [x19, #:lo12:.LANCHOR80]
10545	ldrh	w0, [x0, #:lo12:.LANCHOR53]
10546	cmp	w1, w0
10547	bne	.L1427
10548	adrp	x1, .LANCHOR175
10549	adrp	x0, .LC1
10550	mov	w2, 660
10551	add	x1, x1, :lo12:.LANCHOR175
10552	add	x0, x0, :lo12:.LC1
10553	bl	printf
10554.L1427:
10555	add	x25, x19, :lo12:.LANCHOR80
10556	mov	x0, x25
10557	bl	make_superblock
10558	adrp	x0, .LANCHOR173
10559	ldrh	w1, [x19, #:lo12:.LANCHOR80]
10560	strh	wzr, [x0, #:lo12:.LANCHOR173]
10561	ldr	x0, [x23, #:lo12:.LANCHOR42]
10562	ldrh	w1, [x0, x1, lsl 1]
10563	adrp	x0, .LANCHOR174
10564	strh	wzr, [x25, 2]
10565	strh	w1, [x0, #:lo12:.LANCHOR174]
10566	strb	wzr, [x25, 6]
10567.L1416:
10568	bl	FtlReadRefresh
10569	adrp	x1, .LANCHOR19
10570	mov	w0, 1
10571	str	w0, [x22, #:lo12:.LANCHOR117]
10572	ldrh	w0, [x1, #:lo12:.LANCHOR19]
10573	str	w0, [x29, 172]
10574	add	x0, x19, :lo12:.LANCHOR80
10575	str	x1, [x29, 120]
10576	ldr	w3, [x29, 172]
10577	ldrh	w0, [x0, 2]
10578	add	w2, w0, w21
10579	cmp	w2, w3
10580	ble	.L1428
10581	sub	w21, w3, w0
10582	and	w21, w21, 65535
10583.L1428:
10584	adrp	x0, .LANCHOR173
10585	mov	w27, 0
10586	add	x0, x0, :lo12:.LANCHOR173
10587	str	x0, [x29, 152]
10588.L1429:
10589	cmp	w21, w27, uxth
10590	bls	.L1437
10591	add	x1, x19, :lo12:.LANCHOR80
10592	adrp	x0, .LANCHOR3
10593	adrp	x25, .LANCHOR93
10594	add	x1, x1, 16
10595	ldrh	w7, [x0, #:lo12:.LANCHOR3]
10596	mov	w23, 0
10597	ldrh	w4, [x1, -14]
10598	mov	w2, 0
10599	ldr	x0, [x25, #:lo12:.LANCHOR93]
10600	mov	w6, 65535
10601	add	w4, w4, w27
10602	b	.L1438
10603.L1431:
10604	ldrh	w3, [x1]
10605	cmp	w3, w6
10606	beq	.L1430
10607	ubfiz	x5, x23, 5, 16
10608	add	w23, w23, 1
10609	add	x5, x0, x5
10610	and	w23, w23, 65535
10611	orr	w3, w4, w3, lsl 10
10612	str	w3, [x5, 4]
10613.L1430:
10614	add	w2, w2, 1
10615	add	x1, x1, 2
10616	and	w2, w2, 65535
10617.L1438:
10618	cmp	w2, w7
10619	bne	.L1431
10620	add	x1, x19, :lo12:.LANCHOR80
10621	adrp	x26, .LANCHOR89
10622	add	x26, x26, :lo12:.LANCHOR89
10623	ldrb	w2, [x1, 8]
10624	mov	w1, w23
10625	bl	FlashReadPages
10626	ubfiz	x0, x23, 5, 16
10627	mov	x23, 0
10628	str	x0, [x29, 144]
10629.L1432:
10630	ldr	x0, [x29, 144]
10631	cmp	x0, x23
10632	bne	.L1436
10633	add	w27, w27, 1
10634	b	.L1429
10635.L1436:
10636	ldr	x0, [x25, #:lo12:.LANCHOR93]
10637	add	x1, x0, x23
10638	ldr	w0, [x0, x23]
10639	cmn	w0, #1
10640	beq	.L1433
10641	ldr	x28, [x1, 16]
10642	mov	w0, 61589
10643	ldrh	w1, [x28]
10644	cmp	w1, w0
10645	bne	.L1433
10646	ldr	w4, [x28, 8]
10647	cmn	w4, #1
10648	bne	.L1434
10649	str	w4, [x29, 112]
10650	mov	w2, 696
10651	adrp	x1, .LANCHOR175
10652	adrp	x0, .LC1
10653	add	x1, x1, :lo12:.LANCHOR175
10654	add	x0, x0, :lo12:.LC1
10655	bl	printf
10656	ldr	w4, [x29, 112]
10657.L1434:
10658	mov	w2, 0
10659	add	x1, x29, 188
10660	mov	w0, w4
10661	bl	log2phys
10662	ldr	x0, [x25, #:lo12:.LANCHOR93]
10663	ldr	w1, [x29, 188]
10664	add	x0, x0, x23
10665	ldr	w2, [x0, 4]
10666	cmp	w2, w1
10667	bne	.L1433
10668	ldr	x1, [x29, 152]
10669	adrp	x4, .LANCHOR121
10670	ldr	x2, [x29, 152]
10671	ldr	w0, [x0, 24]
10672	ldrh	w1, [x1]
10673	add	w1, w1, 1
10674	strh	w1, [x2]
10675	ldr	x2, [x4, #:lo12:.LANCHOR121]
10676	ldr	w1, [x26]
10677	add	x1, x2, x1, lsl 5
10678	stp	x4, x1, [x29, 104]
10679	str	w0, [x1, 24]
10680	bl	Ftl_get_new_temp_ppa
10681	ldp	x4, x1, [x29, 104]
10682	ldr	x2, [x4, #:lo12:.LANCHOR121]
10683	str	w0, [x1, 4]
10684	ldr	w1, [x26]
10685	ubfiz	x0, x1, 5, 32
10686	add	w1, w1, 1
10687	add	x2, x2, x0
10688	ldr	x0, [x25, #:lo12:.LANCHOR93]
10689	add	x0, x0, x23
10690	ldr	x4, [x0, 8]
10691	str	x4, [x2, 8]
10692	ldr	x4, [x0, 16]
10693	str	x4, [x2, 16]
10694	ldr	w2, [x29, 188]
10695	str	w2, [x28, 12]
10696	adrp	x2, .LANCHOR53
10697	add	x11, x2, :lo12:.LANCHOR53
10698	ldrh	w2, [x2, #:lo12:.LANCHOR53]
10699	strh	w2, [x28, 2]
10700	adrp	x2, .LANCHOR71
10701	str	w1, [x26]
10702	mov	w1, 1
10703	ldr	w2, [x2, #:lo12:.LANCHOR71]
10704	str	w2, [x28, 4]
10705	bl	FtlGcBufAlloc
10706	ldrb	w1, [x11, 7]
10707	ldr	w0, [x26]
10708	cmp	w1, w0
10709	beq	.L1435
10710	ldrh	w0, [x11, 4]
10711	cbnz	w0, .L1433
10712.L1435:
10713	bl	Ftl_gc_temp_data_write_back
10714	cbz	w0, .L1433
10715.L1481:
10716	str	wzr, [x22, #:lo12:.LANCHOR117]
10717	b	.L1480
10718.L1433:
10719	add	x23, x23, 32
10720	b	.L1432
10721.L1437:
10722	add	x1, x19, :lo12:.LANCHOR80
10723	ldrh	w0, [x1, 2]
10724	add	w21, w21, w0
10725	ldr	w0, [x29, 172]
10726	and	w21, w21, 65535
10727	strh	w21, [x1, 2]
10728	cmp	w0, w21
10729	bls	.L1439
10730	adrp	x0, .LANCHOR173
10731	ldrh	w1, [x0, #:lo12:.LANCHOR173]
10732	adrp	x0, .LANCHOR174
10733	ldrh	w0, [x0, #:lo12:.LANCHOR174]
10734	cmp	w1, w0
10735	bne	.L1440
10736.L1439:
10737	adrp	x0, .LANCHOR89
10738	ldr	w0, [x0, #:lo12:.LANCHOR89]
10739	cbz	w0, .L1441
10740	bl	Ftl_gc_temp_data_write_back
10741	cbnz	w0, .L1481
10742.L1441:
10743	adrp	x0, .LANCHOR173
10744	ldrh	w0, [x0, #:lo12:.LANCHOR173]
10745	cbnz	w0, .L1442
10746	ldrh	w0, [x19, #:lo12:.LANCHOR80]
10747	adrp	x1, .LANCHOR42
10748	ldr	x1, [x1, #:lo12:.LANCHOR42]
10749	lsl	x0, x0, 1
10750	ldrh	w2, [x1, x0]
10751	cbz	w2, .L1442
10752	strh	wzr, [x1, x0]
10753	ldrh	w0, [x19, #:lo12:.LANCHOR80]
10754	bl	update_vpc_list
10755	bl	l2p_flush
10756	bl	FtlVpcTblFlush
10757.L1442:
10758	mov	w0, -1
10759	strh	w0, [x19, #:lo12:.LANCHOR80]
10760.L1440:
10761	adrp	x0, .LANCHOR48
10762	ldrh	w0, [x0, #:lo12:.LANCHOR48]
10763	cmp	w0, 2
10764	bhi	.L1443
10765	ldr	x0, [x29, 120]
10766	ldrh	w21, [x0, #:lo12:.LANCHOR19]
10767	b	.L1415
10768.L1443:
10769	adrp	x1, .LANCHOR172
10770	str	wzr, [x22, #:lo12:.LANCHOR117]
10771	ldrh	w1, [x1, #:lo12:.LANCHOR172]
10772	cmp	w1, 0
10773	csinc	w0, w1, w0, ne
10774	b	.L1374
10775.L1446:
10776	mov	w0, 0
10777	b	.L1374
10778	.size	rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
10779	.section	.text.sftl_gc,"ax",@progbits
10780	.align	2
10781	.global	sftl_gc
10782	.type	sftl_gc, %function
10783sftl_gc:
10784	mov	w1, 1
10785	mov	w0, w1
10786	b	rk_ftl_garbage_collect
10787	.size	sftl_gc, .-sftl_gc
10788	.section	.text.FtlRead,"ax",@progbits
10789	.align	2
10790	.global	FtlRead
10791	.type	FtlRead, %function
10792FtlRead:
10793	stp	x29, x30, [sp, -176]!
10794	and	w0, w0, 255
10795	cmp	w0, 16
10796	add	x29, sp, 0
10797	stp	x19, x20, [sp, 16]
10798	mov	w19, w1
10799	stp	x23, x24, [sp, 48]
10800	mov	x23, x3
10801	stp	x27, x28, [sp, 80]
10802	mov	w27, w2
10803	stp	x21, x22, [sp, 32]
10804	stp	x25, x26, [sp, 64]
10805	bne	.L1484
10806	mov	x2, x3
10807	mov	w1, w27
10808	add	w0, w19, 256
10809	bl	FtlVendorPartRead
10810	mov	w21, w0
10811.L1483:
10812	mov	w0, w21
10813	ldp	x19, x20, [sp, 16]
10814	ldp	x21, x22, [sp, 32]
10815	ldp	x23, x24, [sp, 48]
10816	ldp	x25, x26, [sp, 64]
10817	ldp	x27, x28, [sp, 80]
10818	ldp	x29, x30, [sp], 176
10819	ret
10820.L1484:
10821	add	w0, w1, w2
10822	str	w0, [x29, 140]
10823	adrp	x0, .LANCHOR34
10824	add	w1, w1, w2
10825	ldr	w0, [x0, #:lo12:.LANCHOR34]
10826	cmp	w1, w0
10827	bhi	.L1504
10828	adrp	x0, .LANCHOR86
10829	ldr	w21, [x0, #:lo12:.LANCHOR86]
10830	cmn	w21, #1
10831	beq	.L1483
10832	adrp	x22, .LANCHOR12
10833	sub	w24, w1, #1
10834	adrp	x1, .LANCHOR62
10835	mov	w25, 0
10836	ldrh	w0, [x22, #:lo12:.LANCHOR12]
10837	mov	w21, 0
10838	adrp	x28, .LANCHOR120
10839	stp	wzr, wzr, [x29, 144]
10840	udiv	w26, w19, w0
10841	udiv	w24, w24, w0
10842	mov	w20, w26
10843	sub	w0, w24, w26
10844	add	w0, w0, 1
10845	stp	wzr, w0, [x29, 152]
10846	ldr	w0, [x1, #:lo12:.LANCHOR62]
10847	ldr	w2, [x29, 156]
10848	add	w0, w0, w2
10849	str	w0, [x1, #:lo12:.LANCHOR62]
10850	adrp	x0, .LANCHOR81
10851	add	x0, x0, :lo12:.LANCHOR81
10852	str	x0, [x29, 128]
10853.L1486:
10854	ldr	w0, [x29, 156]
10855	cbnz	w0, .L1502
10856	adrp	x0, .LANCHOR101
10857	ldrh	w0, [x0, #:lo12:.LANCHOR101]
10858	cbnz	w0, .L1503
10859	adrp	x0, .LANCHOR48
10860	ldrh	w0, [x0, #:lo12:.LANCHOR48]
10861	cmp	w0, 31
10862	bhi	.L1483
10863.L1503:
10864	mov	w1, 1
10865	mov	w0, 0
10866	bl	rk_ftl_garbage_collect
10867	b	.L1483
10868.L1502:
10869	add	x1, x29, 172
10870	mov	w2, 0
10871	mov	w0, w20
10872	bl	log2phys
10873	ldr	w1, [x29, 172]
10874	cmn	w1, #1
10875	bne	.L1487
10876	add	x5, x22, :lo12:.LANCHOR12
10877	mov	w4, 0
10878.L1488:
10879	ldrh	w0, [x5]
10880	cmp	w4, w0
10881	bcc	.L1490
10882.L1491:
10883	ldr	w0, [x29, 156]
10884	add	w20, w20, 1
10885	subs	w0, w0, #1
10886	str	w0, [x29, 156]
10887	beq	.L1495
10888	adrp	x0, .LANCHOR3
10889	ldrh	w0, [x0, #:lo12:.LANCHOR3]
10890	cmp	w25, w0, lsl 2
10891	bne	.L1486
10892.L1495:
10893	cbz	w25, .L1486
10894	ldr	x0, [x28, #:lo12:.LANCHOR120]
10895	mov	w1, w25
10896	mov	w2, 0
10897	bl	FlashReadPages
10898	ldr	w0, [x29, 144]
10899	lsl	w0, w0, 9
10900	str	w0, [x29, 136]
10901	ldr	w0, [x29, 152]
10902	lsl	w0, w0, 9
10903	str	x0, [x29, 120]
10904	ldr	w0, [x29, 148]
10905	lsl	w0, w0, 9
10906	str	w0, [x29, 112]
10907	ubfiz	x0, x25, 5, 32
10908	mov	x25, 0
10909	str	x0, [x29, 104]
10910	add	x0, x22, :lo12:.LANCHOR12
10911	str	x0, [x29, 96]
10912.L1501:
10913	ldr	x0, [x28, #:lo12:.LANCHOR120]
10914	add	x0, x0, x25
10915	ldr	w1, [x0, 24]
10916	cmp	w26, w1
10917	bne	.L1497
10918	ldr	x1, [x0, 8]
10919	adrp	x0, .LANCHOR115
10920	ldr	x0, [x0, #:lo12:.LANCHOR115]
10921	cmp	x1, x0
10922	bne	.L1498
10923	ldr	x0, [x29, 120]
10924	ldr	w2, [x29, 112]
10925	add	x1, x1, x0
10926	mov	x0, x23
10927.L1515:
10928	bl	ftl_memcpy
10929.L1498:
10930	ldr	x0, [x28, #:lo12:.LANCHOR120]
10931	add	x1, x0, x25
10932	ldr	w0, [x0, x25]
10933	cmn	w0, #1
10934	bne	.L1499
10935	ldr	x1, [x29, 128]
10936	mov	w21, w0
10937	ldr	x2, [x29, 128]
10938	ldr	w1, [x1, 72]
10939	add	w1, w1, 1
10940	str	w1, [x2, 72]
10941.L1500:
10942	ldr	x0, [x29, 104]
10943	add	x25, x25, 32
10944	cmp	x0, x25
10945	bne	.L1501
10946	mov	w25, 0
10947	b	.L1486
10948.L1490:
10949	madd	w0, w20, w0, w4
10950	cmp	w19, w0
10951	bhi	.L1489
10952	ldr	w1, [x29, 140]
10953	cmp	w1, w0
10954	bls	.L1489
10955	sub	w0, w0, w19
10956	str	x5, [x29, 112]
10957	lsl	w0, w0, 9
10958	str	w4, [x29, 120]
10959	mov	w2, 512
10960	mov	w1, 0
10961	add	x0, x23, x0
10962	bl	ftl_memset
10963	ldr	w4, [x29, 120]
10964	ldr	x5, [x29, 112]
10965.L1489:
10966	add	w4, w4, 1
10967	b	.L1488
10968.L1487:
10969	ldr	x2, [x28, #:lo12:.LANCHOR120]
10970	ubfiz	x0, x25, 5, 32
10971	cmp	w20, w26
10972	add	x0, x2, x0
10973	str	w1, [x0, 4]
10974	bne	.L1492
10975	adrp	x1, .LANCHOR115
10976	ldr	x1, [x1, #:lo12:.LANCHOR115]
10977	str	x1, [x0, 8]
10978	ldrh	w1, [x22, #:lo12:.LANCHOR12]
10979	udiv	w2, w19, w1
10980	msub	w2, w2, w1, w19
10981	str	w2, [x29, 152]
10982	sub	w2, w1, w2
10983	cmp	w27, w2
10984	csel	w2, w27, w2, ls
10985	str	w2, [x29, 148]
10986	cmp	w1, w2
10987	bne	.L1493
10988	str	x23, [x0, 8]
10989.L1493:
10990	adrp	x1, .LANCHOR24
10991	adrp	x2, .LANCHOR114
10992	str	w20, [x0, 24]
10993	ldrh	w1, [x1, #:lo12:.LANCHOR24]
10994	ldr	x2, [x2, #:lo12:.LANCHOR114]
10995	mul	w1, w1, w25
10996	add	w25, w25, 1
10997	and	x1, x1, 4294967292
10998	add	x1, x2, x1
10999	str	x1, [x0, 16]
11000	b	.L1491
11001.L1492:
11002	cmp	w20, w24
11003	bne	.L1494
11004	ldrh	w2, [x22, #:lo12:.LANCHOR12]
11005	adrp	x1, .LANCHOR113
11006	ldr	w3, [x29, 140]
11007	ldr	x1, [x1, #:lo12:.LANCHOR113]
11008	str	x1, [x0, 8]
11009	mul	w1, w20, w2
11010	sub	w3, w3, w1
11011	str	w3, [x29, 144]
11012	cmp	w2, w3
11013	bne	.L1493
11014.L1514:
11015	sub	w1, w1, w19
11016	lsl	w1, w1, 9
11017	add	x1, x23, x1
11018	str	x1, [x0, 8]
11019	b	.L1493
11020.L1494:
11021	ldrh	w1, [x22, #:lo12:.LANCHOR12]
11022	mul	w1, w1, w20
11023	b	.L1514
11024.L1497:
11025	cmp	w24, w1
11026	bne	.L1498
11027	ldr	x1, [x0, 8]
11028	adrp	x0, .LANCHOR113
11029	ldr	x0, [x0, #:lo12:.LANCHOR113]
11030	cmp	x1, x0
11031	bne	.L1498
11032	ldr	x0, [x29, 96]
11033	ldr	w2, [x29, 136]
11034	ldrh	w0, [x0]
11035	mul	w0, w0, w24
11036	sub	w0, w0, w19
11037	lsl	w0, w0, 9
11038	add	x0, x23, x0
11039	b	.L1515
11040.L1499:
11041	cmp	w0, 256
11042	bne	.L1500
11043	ldr	w0, [x1, 4]
11044	lsr	w0, w0, 10
11045	bl	P2V_block_in_plane
11046	bl	FtlGcRefreshBlock
11047	b	.L1500
11048.L1504:
11049	mov	w21, -1
11050	b	.L1483
11051	.size	FtlRead, .-FtlRead
11052	.section	.text.sftl_read,"ax",@progbits
11053	.align	2
11054	.global	sftl_read
11055	.type	sftl_read, %function
11056sftl_read:
11057	mov	x3, x2
11058	mov	w2, w1
11059	mov	w1, w0
11060	mov	w0, 0
11061	b	FtlRead
11062	.size	sftl_read, .-sftl_read
11063	.section	.text.FtlWrite,"ax",@progbits
11064	.align	2
11065	.global	FtlWrite
11066	.type	FtlWrite, %function
11067FtlWrite:
11068	stp	x29, x30, [sp, -240]!
11069	and	w0, w0, 255
11070	cmp	w0, 16
11071	add	x29, sp, 0
11072	stp	x21, x22, [sp, 32]
11073	mov	w21, w1
11074	stp	x25, x26, [sp, 64]
11075	mov	x26, x3
11076	stp	x19, x20, [sp, 16]
11077	stp	x23, x24, [sp, 48]
11078	stp	x27, x28, [sp, 80]
11079	str	w2, [x29, 176]
11080	bne	.L1518
11081	add	w0, w1, 256
11082	ldr	w1, [x29, 176]
11083	mov	x2, x3
11084	bl	FtlVendorPartWrite
11085.L1517:
11086	ldp	x19, x20, [sp, 16]
11087	ldp	x21, x22, [sp, 32]
11088	ldp	x23, x24, [sp, 48]
11089	ldp	x25, x26, [sp, 64]
11090	ldp	x27, x28, [sp, 80]
11091	ldp	x29, x30, [sp], 240
11092	ret
11093.L1518:
11094	ldr	w0, [x29, 176]
11095	add	w0, w1, w0
11096	str	w0, [x29, 168]
11097	adrp	x0, .LANCHOR34
11098	ldr	w1, [x29, 168]
11099	ldr	w0, [x0, #:lo12:.LANCHOR34]
11100	cmp	w1, w0
11101	bhi	.L1553
11102	adrp	x0, .LANCHOR86
11103	ldr	w0, [x0, #:lo12:.LANCHOR86]
11104	cmn	w0, #1
11105	beq	.L1517
11106	adrp	x0, .LANCHOR176
11107	mov	w1, 2048
11108	adrp	x22, .LANCHOR12
11109	str	w1, [x0, #:lo12:.LANCHOR176]
11110	ldr	w1, [x29, 168]
11111	ldrh	w0, [x22, #:lo12:.LANCHOR12]
11112	sub	w1, w1, #1
11113	udiv	w25, w21, w0
11114	udiv	w0, w1, w0
11115	adrp	x1, .LANCHOR64
11116	str	w0, [x29, 156]
11117	sub	w0, w0, w25
11118	add	w24, w0, 1
11119	str	w0, [x29, 152]
11120	ldr	w0, [x1, #:lo12:.LANCHOR64]
11121	add	w0, w0, w24
11122	str	w0, [x1, #:lo12:.LANCHOR64]
11123	adrp	x0, .LANCHOR177
11124	str	x0, [x29, 160]
11125	ldr	w1, [x0, #:lo12:.LANCHOR177]
11126	adrp	x0, .LANCHOR51
11127	add	x19, x0, :lo12:.LANCHOR51
11128	cbz	w1, .L1520
11129	ldrh	w0, [x19, 4]
11130	cbnz	w0, .L1520
11131	adrp	x19, .LANCHOR52
11132	add	x19, x19, :lo12:.LANCHOR52
11133.L1520:
11134	mov	w20, w25
11135	adrp	x0, .LANCHOR52
11136	add	x0, x0, :lo12:.LANCHOR52
11137	str	x0, [x29, 96]
11138.L1521:
11139	cbnz	w24, .L1549
11140	ldr	w1, [x29, 152]
11141	mov	w0, 0
11142	bl	rk_ftl_garbage_collect
11143	adrp	x0, .LANCHOR48
11144	mov	x22, x0
11145	ldrh	w1, [x0, #:lo12:.LANCHOR48]
11146	cmp	w1, 15
11147	bls	.L1550
11148.L1552:
11149	mov	w0, 0
11150	b	.L1517
11151.L1549:
11152	adrp	x0, .LANCHOR3
11153	ldrb	w2, [x19, 6]
11154	str	x0, [x29, 120]
11155	ldrh	w1, [x0, #:lo12:.LANCHOR3]
11156	cmp	w2, w1
11157	bcc	.L1522
11158	adrp	x1, .LANCHOR178
11159	adrp	x0, .LC1
11160	mov	w2, 988
11161	add	x1, x1, :lo12:.LANCHOR178
11162	add	x0, x0, :lo12:.LC1
11163	bl	printf
11164.L1522:
11165	ldrh	w0, [x19, 4]
11166	cbnz	w0, .L1523
11167	adrp	x0, .LANCHOR51
11168	add	x0, x0, :lo12:.LANCHOR51
11169	cmp	x19, x0
11170	bne	.L1524
11171	adrp	x0, .LANCHOR52
11172	add	x0, x0, :lo12:.LANCHOR52
11173	ldrh	w1, [x0, 4]
11174	cbnz	w1, .L1525
11175	bl	allocate_new_data_superblock
11176	ldr	x0, [x29, 160]
11177	str	wzr, [x0, #:lo12:.LANCHOR177]
11178.L1525:
11179	adrp	x0, .LANCHOR51
11180	add	x19, x0, :lo12:.LANCHOR51
11181	mov	x0, x19
11182	bl	allocate_new_data_superblock
11183	ldr	x0, [x29, 160]
11184	ldr	w0, [x0, #:lo12:.LANCHOR177]
11185	cmp	w0, 0
11186	ldr	x0, [x29, 96]
11187	csel	x19, x0, x19, ne
11188.L1526:
11189	ldrh	w0, [x19, 4]
11190	cbnz	w0, .L1523
11191	mov	x0, x19
11192	bl	allocate_new_data_superblock
11193.L1523:
11194	ldrh	w0, [x19, 4]
11195	ldrb	w1, [x19, 7]
11196	cmp	w0, w24
11197	csel	w0, w0, w24, ls
11198	lsl	w1, w1, 2
11199	cmp	w1, w0
11200	csel	w0, w1, w0, ls
11201	str	w0, [x29, 148]
11202	ldr	x0, [x29, 120]
11203	ldrb	w1, [x19, 6]
11204	ldrh	w0, [x0, #:lo12:.LANCHOR3]
11205	cmp	w1, w0
11206	bcc	.L1527
11207	adrp	x1, .LANCHOR178
11208	adrp	x0, .LC1
11209	mov	w2, 1021
11210	add	x1, x1, :lo12:.LANCHOR178
11211	add	x0, x0, :lo12:.LC1
11212	bl	printf
11213.L1527:
11214	adrp	x0, .LANCHOR24
11215	add	x0, x0, :lo12:.LANCHOR24
11216	str	xzr, [x29, 184]
11217	str	x0, [x29, 112]
11218	adrp	x0, .LANCHOR23
11219	add	x0, x0, :lo12:.LANCHOR23
11220	str	x0, [x29, 104]
11221.L1528:
11222	ldr	w1, [x29, 148]
11223	adrp	x28, .LANCHOR122
11224	ldr	w23, [x29, 184]
11225	cmp	w23, w1
11226	bcc	.L1547
11227	mov	x23, x1
11228.L1529:
11229	ldr	x0, [x28, #:lo12:.LANCHOR122]
11230	mov	x3, x19
11231	mov	w2, 0
11232	mov	w1, w23
11233	bl	FtlProgPages
11234	cmp	w24, w23
11235	bcs	.L1548
11236	adrp	x1, .LANCHOR178
11237	adrp	x0, .LC1
11238	mov	w2, 1098
11239	add	x1, x1, :lo12:.LANCHOR178
11240	add	x0, x0, :lo12:.LC1
11241	bl	printf
11242.L1548:
11243	sub	w24, w24, w23
11244	b	.L1521
11245.L1524:
11246	ldr	x1, [x29, 160]
11247	str	wzr, [x1, #:lo12:.LANCHOR177]
11248	ldrh	w1, [x0, 4]
11249	cbnz	w1, .L1558
11250	mov	x0, x19
11251	bl	allocate_new_data_superblock
11252	b	.L1526
11253.L1558:
11254	mov	x19, x0
11255	b	.L1523
11256.L1547:
11257	ldrh	w0, [x19, 4]
11258	cbz	w0, .L1529
11259	add	x1, x29, 204
11260	mov	w2, 0
11261	mov	w0, w20
11262	bl	log2phys
11263	mov	x0, x19
11264	bl	get_new_active_ppa
11265	ldr	x1, [x29, 184]
11266	lsl	x27, x1, 5
11267	ldr	x1, [x28, #:lo12:.LANCHOR122]
11268	add	x1, x1, x27
11269	str	w0, [x1, 4]
11270	ldr	x0, [x29, 112]
11271	str	w20, [x1, 24]
11272	ldrh	w2, [x0]
11273	mul	w23, w23, w2
11274	and	x0, x23, 4294967292
11275	str	x0, [x29, 136]
11276	adrp	x0, .LANCHOR114
11277	ldr	x3, [x29, 136]
11278	ldr	x0, [x0, #:lo12:.LANCHOR114]
11279	str	x0, [x29, 128]
11280	add	x23, x0, x3
11281	str	x23, [x1, 16]
11282	mov	x0, x23
11283	mov	w1, 0
11284	bl	ftl_memset
11285	ldr	w0, [x29, 156]
11286	cmp	w20, w25
11287	ccmp	w20, w0, 4, ne
11288	bne	.L1530
11289	cmp	w20, w25
11290	bne	.L1531
11291	ldrh	w2, [x22, #:lo12:.LANCHOR12]
11292	udiv	w0, w21, w2
11293	msub	w0, w0, w2, w21
11294	str	w0, [x29, 172]
11295	sub	w2, w2, w0
11296	ldr	w0, [x29, 176]
11297	cmp	w2, w0
11298	csel	w0, w2, w0, ls
11299	str	w0, [x29, 180]
11300.L1532:
11301	ldrh	w0, [x22, #:lo12:.LANCHOR12]
11302	ldr	w1, [x29, 180]
11303	cmp	w1, w0
11304	ldr	x0, [x28, #:lo12:.LANCHOR122]
11305	bne	.L1533
11306	add	x3, x0, x27
11307	cmp	w20, w25
11308	bne	.L1534
11309	str	x26, [x3, 8]
11310.L1535:
11311	ldr	x0, [x29, 120]
11312	ldrb	w1, [x19, 6]
11313	ldrh	w0, [x0, #:lo12:.LANCHOR3]
11314	cmp	w1, w0
11315	bcc	.L1544
11316	adrp	x1, .LANCHOR178
11317	adrp	x0, .LC1
11318	mov	w2, 1089
11319	add	x1, x1, :lo12:.LANCHOR178
11320	add	x0, x0, :lo12:.LC1
11321	bl	printf
11322.L1544:
11323	ldp	x1, x2, [x29, 128]
11324	mov	w0, -3947
11325	strh	w0, [x1, x2]
11326	adrp	x1, .LANCHOR71
11327	ldr	w0, [x1, #:lo12:.LANCHOR71]
11328	stp	w0, w20, [x23, 4]
11329	add	w20, w20, 1
11330	add	w0, w0, 1
11331	cmn	w0, #1
11332	csel	w0, w0, wzr, ne
11333	str	w0, [x1, #:lo12:.LANCHOR71]
11334	ldr	w0, [x29, 204]
11335	str	w0, [x23, 12]
11336	ldrh	w0, [x19]
11337	strh	w0, [x23, 2]
11338	ldr	x0, [x29, 184]
11339	add	x0, x0, 1
11340	str	x0, [x29, 184]
11341	b	.L1528
11342.L1531:
11343	ldr	w0, [x29, 168]
11344	ldrh	w2, [x22, #:lo12:.LANCHOR12]
11345	str	wzr, [x29, 172]
11346	msub	w2, w20, w2, w0
11347	and	w0, w2, 65535
11348	str	w0, [x29, 180]
11349	b	.L1532
11350.L1534:
11351	ldr	w0, [x29, 180]
11352.L1565:
11353	mul	w0, w0, w20
11354	sub	w0, w0, w21
11355	lsl	w0, w0, 9
11356	add	x0, x26, x0
11357	str	x0, [x3, 8]
11358	b	.L1535
11359.L1533:
11360	add	x0, x0, x27
11361	cmp	w20, w25
11362	bne	.L1536
11363	adrp	x1, .LANCHOR115
11364	ldr	x1, [x1, #:lo12:.LANCHOR115]
11365.L1564:
11366	str	x1, [x0, 8]
11367	ldr	w0, [x29, 204]
11368	cmn	w0, #1
11369	beq	.L1538
11370	str	w0, [x29, 212]
11371	mov	w2, 0
11372	ldr	x0, [x28, #:lo12:.LANCHOR122]
11373	str	w20, [x29, 232]
11374	add	x0, x0, x27
11375	ldp	x1, x0, [x0, 8]
11376	stp	x1, x0, [x29, 216]
11377	mov	w1, 1
11378	add	x0, x29, 208
11379	bl	FlashReadPages
11380	ldr	w0, [x29, 208]
11381	cmn	w0, #1
11382	bne	.L1539
11383	adrp	x0, .LANCHOR81
11384	add	x0, x0, :lo12:.LANCHOR81
11385	ldr	w1, [x0, 72]
11386	add	w1, w1, 1
11387	str	w1, [x0, 72]
11388.L1542:
11389	ldr	w0, [x29, 180]
11390	cmp	w20, w25
11391	lsl	w2, w0, 9
11392	bne	.L1543
11393	ldr	x0, [x28, #:lo12:.LANCHOR122]
11394	mov	x1, x26
11395	add	x3, x0, x27
11396	ldr	w0, [x29, 172]
11397	ldr	x3, [x3, 8]
11398	lsl	w0, w0, 9
11399	add	x0, x3, x0
11400.L1566:
11401	bl	ftl_memcpy
11402	b	.L1535
11403.L1536:
11404	adrp	x1, .LANCHOR113
11405	ldr	x1, [x1, #:lo12:.LANCHOR113]
11406	b	.L1564
11407.L1539:
11408	ldr	w1, [x23, 8]
11409	cmp	w20, w1
11410	beq	.L1541
11411	adrp	x0, .LANCHOR81
11412	add	x0, x0, :lo12:.LANCHOR81
11413	ldr	w2, [x0, 72]
11414	add	w2, w2, 1
11415	str	w2, [x0, 72]
11416	adrp	x0, .LC108
11417	mov	w2, w20
11418	add	x0, x0, :lo12:.LC108
11419	bl	printf
11420.L1541:
11421	ldr	w0, [x23, 8]
11422	cmp	w20, w0
11423	beq	.L1542
11424	mov	w2, 1074
11425	adrp	x1, .LANCHOR178
11426	adrp	x0, .LC1
11427	add	x1, x1, :lo12:.LANCHOR178
11428	add	x0, x0, :lo12:.LC1
11429	bl	printf
11430	b	.L1542
11431.L1538:
11432	ldr	x0, [x28, #:lo12:.LANCHOR122]
11433	ldr	x1, [x29, 104]
11434	add	x0, x0, x27
11435	ldrh	w2, [x1]
11436	mov	w1, 0
11437	ldr	x0, [x0, 8]
11438	bl	ftl_memset
11439	b	.L1542
11440.L1543:
11441	ldrh	w1, [x22, #:lo12:.LANCHOR12]
11442	ldr	x0, [x28, #:lo12:.LANCHOR122]
11443	add	x3, x0, x27
11444	mul	w1, w1, w20
11445	sub	w1, w1, w21
11446	ldr	x0, [x3, 8]
11447	lsl	w1, w1, 9
11448	add	x1, x26, x1
11449	b	.L1566
11450.L1530:
11451	ldr	x0, [x28, #:lo12:.LANCHOR122]
11452	add	x3, x0, x27
11453	ldrh	w0, [x22, #:lo12:.LANCHOR12]
11454	b	.L1565
11455.L1550:
11456	adrp	x21, .LANCHOR99
11457	adrp	x20, .LANCHOR83
11458	adrp	x19, .LANCHOR82
11459	add	x21, x21, :lo12:.LANCHOR99
11460	add	x20, x20, :lo12:.LANCHOR83
11461	add	x19, x19, :lo12:.LANCHOR82
11462.L1562:
11463	adrp	x0, .LANCHOR80
11464	mov	w1, 65535
11465	ldrh	w0, [x0, #:lo12:.LANCHOR80]
11466	cmp	w0, w1
11467	bne	.L1551
11468	ldrh	w1, [x21]
11469	cmp	w1, w0
11470	bne	.L1551
11471	mov	w0, 0
11472	bl	List_get_gc_head_node
11473	bl	FtlGcRefreshBlock
11474.L1551:
11475	mov	w0, 128
11476	mov	w1, 1
11477	strh	w0, [x20]
11478	strh	w0, [x19]
11479	mov	w0, w1
11480	bl	rk_ftl_garbage_collect
11481	mov	w1, 1
11482	mov	w0, 0
11483	bl	rk_ftl_garbage_collect
11484	ldrh	w0, [x22, #:lo12:.LANCHOR48]
11485	cmp	w0, 8
11486	bls	.L1562
11487	b	.L1552
11488.L1553:
11489	mov	w0, -1
11490	b	.L1517
11491	.size	FtlWrite, .-FtlWrite
11492	.section	.text.sftl_write,"ax",@progbits
11493	.align	2
11494	.global	sftl_write
11495	.type	sftl_write, %function
11496sftl_write:
11497	stp	x29, x30, [sp, -240]!
11498	add	w4, w0, w1
11499	sub	w5, w4, #1
11500	add	x29, sp, 0
11501	stp	x19, x20, [sp, 16]
11502	cmp	w5, 63
11503	stp	x21, x22, [sp, 32]
11504	mov	w20, w0
11505	stp	x23, x24, [sp, 48]
11506	mov	w22, w1
11507	stp	x25, x26, [sp, 64]
11508	mov	x24, x2
11509	stp	x27, x28, [sp, 80]
11510	adrp	x25, .LANCHOR179
11511	bls	.L1568
11512	cmp	w0, 576
11513	bls	.L1569
11514.L1568:
11515	ldr	w0, [x25, #:lo12:.LANCHOR179]
11516	cbz	w0, .L1570
11517	adrp	x2, .LANCHOR0
11518	add	x1, x2, :lo12:.LANCHOR0
11519	mov	w21, 512
11520	adrp	x3, idb_buf
11521	mov	x4, -49148
11522	stp	x3, x2, [x29, 144]
11523	ldrh	w0, [x1, 14]
11524	add	x2, x3, :lo12:idb_buf
11525	ldrh	w1, [x1, 10]
11526	mov	x7, 262140
11527	str	w0, [x29, 172]
11528	and	w0, w0, 255
11529	mov	w5, 4097
11530	movk	x4, 0xfffc, lsl 16
11531	mul	w0, w0, w1
11532	mov	x1, 0
11533	and	w0, w0, 65535
11534	str	w0, [x29, 168]
11535	udiv	w21, w21, w0
11536	mov	w0, 0
11537.L1574:
11538	add	x3, x1, x7
11539	ldr	w6, [x3, x2]
11540	cbz	w6, .L1571
11541.L1575:
11542	ldr	w0, [x29, 168]
11543	mov	w19, 0
11544	mov	w26, 0
11545	mul	w0, w0, w21
11546	stp	w0, wzr, [x29, 160]
11547	adrp	x0, .LANCHOR105
11548	add	x23, x0, :lo12:.LANCHOR105
11549.L1572:
11550	adrp	x5, gp_flash_check_buf
11551	mov	x2, 512
11552	mov	w1, 0
11553	add	x0, x5, :lo12:gp_flash_check_buf
11554	str	x5, [x29, 136]
11555	bl	memset
11556	ldr	x0, [x29, 152]
11557	add	x0, x0, :lo12:.LANCHOR0
11558	ldrh	w3, [x0, 14]
11559	ldrh	w2, [x0, 10]
11560	adrp	x0, .LANCHOR105
11561	and	w27, w3, 255
11562	add	x4, x0, :lo12:.LANCHOR105
11563	str	w3, [x29, 120]
11564	mov	w0, 0
11565	udiv	w1, w19, w3
11566	str	x4, [x29, 112]
11567	mul	w2, w27, w2
11568	ldr	x6, [x4, 8]
11569	str	w27, [x29, 128]
11570	and	w28, w2, 65535
11571	blr	x6
11572	cmp	w28, 511
11573	ldr	w3, [x29, 120]
11574	ldr	x4, [x29, 112]
11575	bhi	.L1576
11576	add	w1, w28, w19
11577	ldr	x4, [x4, 8]
11578	mov	w0, 0
11579	udiv	w1, w1, w3
11580	blr	x4
11581.L1576:
11582	udiv	w5, w19, w28
11583	ldr	x0, [x29, 144]
11584	mov	w4, 0
11585	mov	w7, 61424
11586	add	x8, x0, :lo12:idb_buf
11587	msub	w5, w5, w28, w19
11588	sub	w6, w19, w5
11589.L1577:
11590	cmp	w4, 511
11591	bls	.L1578
11592	ldr	x0, [x29, 152]
11593	mov	w27, 0
11594	add	x0, x0, :lo12:.LANCHOR0
11595	ldrh	w4, [x0, 14]
11596	ldrh	w5, [x0, 10]
11597	and	w28, w4, 255
11598	mov	w4, w28
11599	mul	w5, w28, w5
11600	and	w0, w5, 65535
11601	udiv	w5, w19, w0
11602	msub	w5, w5, w0, w19
11603	and	w1, w5, 65535
11604	sub	w6, w19, w5
11605	sdiv	w0, w1, w28
11606	msub	w0, w0, w28, w1
11607	ldr	x1, [x29, 136]
11608	and	w0, w0, 65535
11609	add	x8, x1, :lo12:gp_flash_check_buf
11610.L1579:
11611	cmp	w27, 511
11612	bhi	.L1583
11613	add	w1, w5, w27
11614	sub	w7, w4, w0
11615	add	w0, w0, w6
11616	ldr	x10, [x23, 24]
11617	and	w7, w7, 65535
11618	ubfiz	x2, x27, 9, 16
11619	udiv	w1, w1, w28
11620	add	x2, x8, x2
11621	stp	w4, w7, [x29, 104]
11622	add	x3, x29, 176
11623	str	w5, [x29, 112]
11624	str	w6, [x29, 120]
11625	and	w1, w1, 65535
11626	str	x8, [x29, 128]
11627	madd	w1, w1, w28, w0
11628	mov	w0, 0
11629	udiv	w1, w1, w28
11630	blr	x10
11631	cmn	w0, #1
11632	ldp	w4, w7, [x29, 104]
11633	ldr	w5, [x29, 112]
11634	ldr	w6, [x29, 120]
11635	ldr	x8, [x29, 128]
11636	bne	.L1580
11637.L1583:
11638	ldr	x0, [x29, 144]
11639	mov	x27, 0
11640	add	x1, x0, :lo12:idb_buf
11641	ldr	x0, [x29, 136]
11642	add	x28, x0, :lo12:gp_flash_check_buf
11643.L1581:
11644	lsl	x0, x27, 2
11645	add	x3, x0, x1
11646	ldr	w2, [x0, x28]
11647	ldr	w0, [x0, x1]
11648	cmp	w2, w0
11649	beq	.L1584
11650	mov	x2, 512
11651	mov	w1, 0
11652	str	x3, [x29, 128]
11653	mov	x0, x28
11654	str	w27, [x29, 136]
11655	bl	memset
11656	ldr	w5, [x29, 136]
11657	mov	w4, w27
11658	ldr	x3, [x29, 128]
11659	mov	w1, w19
11660	adrp	x0, .LC109
11661	add	x0, x0, :lo12:.LC109
11662	ldr	w2, [x28, w5, uxtw 2]
11663	ldr	w3, [x3]
11664	bl	printf
11665	ldr	w0, [x29, 172]
11666	ldr	x2, [x23, 8]
11667	udiv	w1, w19, w0
11668	mov	w0, 0
11669	blr	x2
11670	cmp	w21, 1
11671	bls	.L1585
11672	ldr	w0, [x29, 168]
11673	ldr	x2, [x23, 8]
11674	add	w1, w0, w19
11675	ldr	w0, [x29, 172]
11676	udiv	w1, w1, w0
11677	mov	w0, 0
11678	blr	x2
11679.L1585:
11680	ldr	w0, [x29, 160]
11681	add	w26, w26, w21
11682	cmp	w26, 15
11683	add	w19, w19, w0
11684	bls	.L1572
11685.L1590:
11686	str	wzr, [x25, #:lo12:.LANCHOR179]
11687.L1570:
11688	mov	x3, x24
11689	mov	w2, w22
11690	mov	w1, w20
11691	mov	w0, 0
11692	bl	FtlWrite
11693	ldp	x19, x20, [sp, 16]
11694	ldp	x21, x22, [sp, 32]
11695	ldp	x23, x24, [sp, 48]
11696	ldp	x25, x26, [sp, 64]
11697	ldp	x27, x28, [sp, 80]
11698	ldp	x29, x30, [sp], 240
11699	ret
11700.L1571:
11701	ldr	w6, [x2, w0, uxtw 2]
11702	add	w0, w0, 1
11703	str	w6, [x3, x2]
11704	cmp	w0, w5
11705	sub	x1, x1, #4
11706	csel	w0, w0, wzr, cc
11707	cmp	x1, x4
11708	bne	.L1574
11709	b	.L1575
11710.L1578:
11711	add	w0, w5, w4
11712	ldr	x10, [x23, 16]
11713	ubfiz	x2, x4, 9, 16
11714	stp	w5, w7, [x29, 100]
11715	add	x2, x8, x2
11716	stp	w4, w6, [x29, 108]
11717	udiv	w0, w0, w27
11718	str	x8, [x29, 120]
11719	add	x3, x29, 176
11720	and	w0, w0, 65535
11721	mul	w1, w0, w27
11722	stp	w1, w7, [x29, 176]
11723	udiv	w1, w6, w27
11724	add	w1, w1, w0
11725	mov	w0, 0
11726	blr	x10
11727	ldp	w4, w6, [x29, 108]
11728	ldr	w0, [x29, 128]
11729	ldp	w5, w7, [x29, 100]
11730	add	w4, w0, w4
11731	and	w4, w4, 65535
11732	ldr	x8, [x29, 120]
11733	b	.L1577
11734.L1580:
11735	add	w27, w7, w27
11736	mov	w0, 0
11737	and	w27, w27, 65535
11738	b	.L1579
11739.L1584:
11740	add	x27, x27, 1
11741	cmp	x27, 65536
11742	bne	.L1581
11743	ldr	w0, [x29, 164]
11744	add	w0, w0, 1
11745	str	w0, [x29, 164]
11746	cmp	w0, 5
11747	bls	.L1585
11748	b	.L1590
11749.L1569:
11750	cmp	w0, 63
11751	adrp	x3, idb_buf
11752	bhi	.L1587
11753	mov	w1, 64
11754	sub	w1, w1, w0
11755	sub	w2, w22, w1
11756	ubfiz	x1, x1, 9, 25
11757	add	x1, x24, x1
11758	add	x0, x3, :lo12:idb_buf
11759.L1588:
11760	mov	w3, 1
11761	str	w3, [x25, #:lo12:.LANCHOR179]
11762	cmp	w5, 576
11763	bls	.L1589
11764	sub	w2, w2, w4
11765	sub	w2, w2, #447
11766.L1589:
11767	lsl	w2, w2, 9
11768	bl	memcpy
11769	b	.L1570
11770.L1587:
11771	lsl	w0, w0, 7
11772	add	x3, x3, :lo12:idb_buf
11773	sub	w0, w0, #8192
11774	mov	x1, x2
11775	add	x0, x3, x0, lsl 2
11776	mov	w2, w22
11777	b	.L1588
11778	.size	sftl_write, .-sftl_write
11779	.section	.text.FtlLoadSysInfo,"ax",@progbits
11780	.align	2
11781	.global	FtlLoadSysInfo
11782	.type	FtlLoadSysInfo, %function
11783FtlLoadSysInfo:
11784	stp	x29, x30, [sp, -96]!
11785	mov	w1, 0
11786	add	x29, sp, 0
11787	stp	x19, x20, [sp, 16]
11788	adrp	x19, .LANCHOR106
11789	stp	x23, x24, [sp, 48]
11790	adrp	x23, .LANCHOR107
11791	stp	x21, x22, [sp, 32]
11792	add	x21, x19, :lo12:.LANCHOR106
11793	stp	x25, x26, [sp, 64]
11794	adrp	x26, .LANCHOR108
11795	stp	x27, x28, [sp, 80]
11796	adrp	x25, .LANCHOR42
11797	ldr	x0, [x23, #:lo12:.LANCHOR107]
11798	adrp	x24, .LANCHOR5
11799	str	x0, [x21, 8]
11800	adrp	x20, .LANCHOR79
11801	ldr	x0, [x26, #:lo12:.LANCHOR108]
11802	str	x0, [x21, 16]
11803	ldr	x0, [x25, #:lo12:.LANCHOR42]
11804	ldrh	w2, [x24, #:lo12:.LANCHOR5]
11805	lsl	w2, w2, 1
11806	bl	ftl_memset
11807	ldrh	w0, [x20, #:lo12:.LANCHOR79]
11808	mov	w1, 65535
11809	cmp	w0, w1
11810	bne	.L1601
11811.L1609:
11812	mov	w0, -1
11813.L1600:
11814	ldp	x19, x20, [sp, 16]
11815	ldp	x21, x22, [sp, 32]
11816	ldp	x23, x24, [sp, 48]
11817	ldp	x25, x26, [sp, 64]
11818	ldp	x27, x28, [sp, 80]
11819	ldp	x29, x30, [sp], 96
11820	ret
11821.L1601:
11822	add	x27, x20, :lo12:.LANCHOR79
11823	mov	w1, 1
11824	bl	FtlGetLastWrittenPage
11825	sxth	w22, w0
11826	add	w0, w0, 1
11827	mov	w28, 61604
11828	strh	w0, [x27, 2]
11829	mov	w27, 19539
11830	movk	w27, 0x4654, lsl 16
11831.L1603:
11832	tbz	w22, #31, .L1606
11833	adrp	x1, .LANCHOR180
11834	adrp	x0, .LC1
11835	mov	w2, 1437
11836	add	x1, x1, :lo12:.LANCHOR180
11837	add	x0, x0, :lo12:.LC1
11838	bl	printf
11839.L1605:
11840	adrp	x1, .LANCHOR23
11841	ldrh	w0, [x24, #:lo12:.LANCHOR5]
11842	ldrh	w1, [x1, #:lo12:.LANCHOR23]
11843	add	x0, x0, 24
11844	cmp	x1, x0, lsl 1
11845	bcs	.L1608
11846	adrp	x1, .LANCHOR180
11847	adrp	x0, .LC1
11848	mov	w2, 1439
11849	add	x1, x1, :lo12:.LANCHOR180
11850	add	x0, x0, :lo12:.LC1
11851	bl	printf
11852.L1608:
11853	add	x22, x19, :lo12:.LANCHOR106
11854	adrp	x19, .LANCHOR39
11855	add	x21, x19, :lo12:.LANCHOR39
11856	mov	w2, 48
11857	mov	x0, x21
11858	ldr	x1, [x22, 8]
11859	bl	ftl_memcpy
11860	ldr	x0, [x25, #:lo12:.LANCHOR42]
11861	ldrh	w2, [x24, #:lo12:.LANCHOR5]
11862	ldr	x1, [x22, 8]
11863	lsl	w2, w2, 1
11864	add	x1, x1, 48
11865	bl	ftl_memcpy
11866	ldrh	w1, [x24, #:lo12:.LANCHOR5]
11867	ldr	x0, [x22, 8]
11868	lsr	w2, w1, 3
11869	ubfiz	x1, x1, 1, 16
11870	add	x1, x1, 48
11871	add	w2, w2, 4
11872	and	x1, x1, -4
11873	add	x1, x0, x1
11874	adrp	x0, .LANCHOR1
11875	ldr	x0, [x0, #:lo12:.LANCHOR1]
11876	bl	ftl_memcpy
11877	ldr	w1, [x19, #:lo12:.LANCHOR39]
11878	mov	w0, 19539
11879	movk	w0, 0x4654, lsl 16
11880	cmp	w1, w0
11881	bne	.L1609
11882	add	x20, x20, :lo12:.LANCHOR79
11883	adrp	x0, .LANCHOR10
11884	ldrh	w1, [x21, 8]
11885	ldrb	w2, [x21, 10]
11886	ldrh	w0, [x0, #:lo12:.LANCHOR10]
11887	strh	w1, [x20, 6]
11888	cmp	w2, w0
11889	bne	.L1609
11890	adrp	x0, .LANCHOR181
11891	adrp	x2, .LANCHOR61
11892	adrp	x3, .LANCHOR3
11893	str	w1, [x0, #:lo12:.LANCHOR181]
11894	adrp	x0, .LANCHOR19
11895	ldrh	w3, [x3, #:lo12:.LANCHOR3]
11896	ldrh	w0, [x0, #:lo12:.LANCHOR19]
11897	mul	w0, w0, w1
11898	str	w0, [x2, #:lo12:.LANCHOR61]
11899	adrp	x2, .LANCHOR12
11900	ldrh	w2, [x2, #:lo12:.LANCHOR12]
11901	mul	w0, w2, w0
11902	adrp	x2, .LANCHOR34
11903	str	w0, [x2, #:lo12:.LANCHOR34]
11904	adrp	x0, .LANCHOR7
11905	ldr	w2, [x0, #:lo12:.LANCHOR7]
11906	adrp	x0, .LANCHOR37+6
11907	ldrh	w0, [x0, #:lo12:.LANCHOR37+6]
11908	cmp	w1, w2
11909	sub	w0, w2, w0
11910	sub	w0, w0, w1
11911	udiv	w0, w0, w3
11912	adrp	x3, .LANCHOR78
11913	strh	w0, [x3, #:lo12:.LANCHOR78]
11914	bls	.L1610
11915	adrp	x1, .LANCHOR180
11916	adrp	x0, .LC1
11917	mov	w2, 1461
11918	add	x1, x1, :lo12:.LANCHOR180
11919	add	x0, x0, :lo12:.LC1
11920	bl	printf
11921.L1610:
11922	add	x1, x19, :lo12:.LANCHOR39
11923	adrp	x0, .LANCHOR51
11924	add	x3, x0, :lo12:.LANCHOR51
11925	adrp	x20, .LANCHOR80
11926	ldrh	w2, [x1, 16]
11927	ldrh	w6, [x1, 14]
11928	strh	w6, [x0, #:lo12:.LANCHOR51]
11929	lsr	w4, w2, 6
11930	and	w2, w2, 63
11931	strb	w2, [x3, 6]
11932	ldrb	w2, [x1, 11]
11933	strb	w2, [x3, 8]
11934	add	x2, x20, :lo12:.LANCHOR80
11935	strh	w4, [x3, 2]
11936	mov	w3, -1
11937	strh	w3, [x20, #:lo12:.LANCHOR80]
11938	strh	wzr, [x2, 2]
11939	strb	wzr, [x2, 6]
11940	strb	wzr, [x2, 8]
11941	adrp	x2, .LANCHOR52
11942	ldrh	w3, [x1, 18]
11943	add	x4, x2, :lo12:.LANCHOR52
11944	strh	w3, [x2, #:lo12:.LANCHOR52]
11945	mov	x21, x2
11946	ldrh	w3, [x1, 20]
11947	lsr	w5, w3, 6
11948	and	w3, w3, 63
11949	strb	w3, [x4, 6]
11950	ldrb	w3, [x1, 12]
11951	strh	w5, [x4, 2]
11952	strb	w3, [x4, 8]
11953	adrp	x4, .LANCHOR53
11954	ldrh	w3, [x1, 22]
11955	add	x5, x4, :lo12:.LANCHOR53
11956	strh	w3, [x4, #:lo12:.LANCHOR53]
11957	mov	x22, x4
11958	ldrh	w3, [x1, 24]
11959	lsr	w7, w3, 6
11960	and	w3, w3, 63
11961	strb	w3, [x5, 6]
11962	ldrb	w3, [x1, 13]
11963	strb	w3, [x5, 8]
11964	adrp	x3, .LANCHOR67
11965	strh	w7, [x5, 2]
11966	ldr	w5, [x1, 32]
11967	str	wzr, [x3, #:lo12:.LANCHOR67]
11968	adrp	x3, .LANCHOR64
11969	str	wzr, [x3, #:lo12:.LANCHOR64]
11970	adrp	x3, .LANCHOR62
11971	str	wzr, [x3, #:lo12:.LANCHOR62]
11972	adrp	x3, .LANCHOR66
11973	str	wzr, [x3, #:lo12:.LANCHOR66]
11974	adrp	x3, .LANCHOR72
11975	str	w5, [x3, #:lo12:.LANCHOR72]
11976	adrp	x3, .LANCHOR73
11977	str	wzr, [x3, #:lo12:.LANCHOR73]
11978	adrp	x3, .LANCHOR76
11979	str	wzr, [x3, #:lo12:.LANCHOR76]
11980	adrp	x3, .LANCHOR65
11981	str	wzr, [x3, #:lo12:.LANCHOR65]
11982	ldr	w3, [x1, 40]
11983	adrp	x1, .LANCHOR70
11984	ldr	w5, [x1, #:lo12:.LANCHOR70]
11985	cmp	w3, w5
11986	bls	.L1611
11987	str	w3, [x1, #:lo12:.LANCHOR70]
11988.L1611:
11989	add	x19, x19, :lo12:.LANCHOR39
11990	adrp	x1, .LANCHOR71
11991	ldr	w3, [x1, #:lo12:.LANCHOR71]
11992	ldr	w2, [x19, 36]
11993	cmp	w2, w3
11994	bls	.L1612
11995	str	w2, [x1, #:lo12:.LANCHOR71]
11996.L1612:
11997	mov	w1, 65535
11998	cmp	w6, w1
11999	beq	.L1613
12000	add	x0, x0, :lo12:.LANCHOR51
12001	bl	make_superblock
12002.L1613:
12003	ldrh	w2, [x21, #:lo12:.LANCHOR52]
12004	mov	w1, 65535
12005	add	x0, x21, :lo12:.LANCHOR52
12006	cmp	w2, w1
12007	beq	.L1614
12008	bl	make_superblock
12009.L1614:
12010	ldrh	w2, [x22, #:lo12:.LANCHOR53]
12011	mov	w1, 65535
12012	add	x0, x22, :lo12:.LANCHOR53
12013	cmp	w2, w1
12014	beq	.L1615
12015	bl	make_superblock
12016.L1615:
12017	ldrh	w2, [x20, #:lo12:.LANCHOR80]
12018	mov	w1, 65535
12019	add	x0, x20, :lo12:.LANCHOR80
12020	cmp	w2, w1
12021	beq	.L1616
12022	bl	make_superblock
12023.L1616:
12024	mov	w0, 0
12025	b	.L1600
12026.L1606:
12027	ldrh	w0, [x20, #:lo12:.LANCHOR79]
12028	mov	w2, 1
12029	mov	w1, w2
12030	orr	w0, w22, w0, lsl 10
12031	str	w0, [x21, 4]
12032	ldr	x0, [x23, #:lo12:.LANCHOR107]
12033	str	x0, [x21, 8]
12034	mov	x0, x21
12035	bl	FlashReadPages
12036	ldr	w0, [x21]
12037	cmn	w0, #1
12038	beq	.L1604
12039	ldr	x0, [x23, #:lo12:.LANCHOR107]
12040	ldr	w0, [x0]
12041	cmp	w0, w27
12042	bne	.L1604
12043	ldr	x0, [x26, #:lo12:.LANCHOR108]
12044	ldrh	w0, [x0]
12045	cmp	w0, w28
12046	beq	.L1605
12047.L1604:
12048	sub	w22, w22, #1
12049	sxth	w22, w22
12050	b	.L1603
12051	.size	FtlLoadSysInfo, .-FtlLoadSysInfo
12052	.section	.text.FtlSysBlkInit,"ax",@progbits
12053	.align	2
12054	.global	FtlSysBlkInit
12055	.type	FtlSysBlkInit, %function
12056FtlSysBlkInit:
12057	stp	x29, x30, [sp, -64]!
12058	adrp	x0, .LANCHOR4
12059	add	x29, sp, 0
12060	ldrh	w0, [x0, #:lo12:.LANCHOR4]
12061	stp	x19, x20, [sp, 16]
12062	adrp	x20, .LANCHOR161
12063	stp	x21, x22, [sp, 32]
12064	stp	x23, x24, [sp, 48]
12065	strh	wzr, [x20, #:lo12:.LANCHOR161]
12066	bl	FtlFreeSysBlkQueueInit
12067	bl	FtlScanSysBlk
12068	adrp	x0, .LANCHOR79
12069	ldrh	w1, [x0, #:lo12:.LANCHOR79]
12070	mov	w0, 65535
12071	cmp	w1, w0
12072	bne	.L1623
12073.L1625:
12074	mov	w23, -1
12075.L1622:
12076	mov	w0, w23
12077	ldp	x19, x20, [sp, 16]
12078	ldp	x21, x22, [sp, 32]
12079	ldp	x23, x24, [sp, 48]
12080	ldp	x29, x30, [sp], 64
12081	ret
12082.L1623:
12083	bl	FtlLoadSysInfo
12084	mov	w23, w0
12085	cbnz	w0, .L1625
12086	bl	FtlLoadMapInfo
12087	bl	FtlLoadVonderInfo
12088	bl	Ftl_load_ext_data
12089	bl	FtlLoadEctTbl
12090	bl	FtlFreeSysBLkSort
12091	bl	SupperBlkListInit
12092	bl	FtlPowerLostRecovery
12093	mov	w0, 1
12094	bl	FtlUpdateVaildLpn
12095	adrp	x0, .LANCHOR33
12096	ldrh	w2, [x0, #:lo12:.LANCHOR33]
12097	adrp	x0, .LANCHOR55
12098	ldr	x1, [x0, #:lo12:.LANCHOR55]
12099	mov	w0, 0
12100	add	x1, x1, 4
12101.L1626:
12102	cmp	w0, w2
12103	bge	.L1631
12104	ldr	w3, [x1], 16
12105	tbz	w3, #31, .L1627
12106.L1631:
12107	adrp	x19, .LANCHOR39
12108	add	x3, x19, :lo12:.LANCHOR39
12109	cmp	w0, w2
12110	adrp	x22, .LANCHOR51
12111	ldrh	w1, [x3, 28]
12112	add	w1, w1, 1
12113	strh	w1, [x3, 28]
12114	bge	.L1635
12115.L1628:
12116	add	x21, x22, :lo12:.LANCHOR51
12117	adrp	x24, .LANCHOR52
12118	mov	x0, x21
12119	add	x20, x24, :lo12:.LANCHOR52
12120	bl	FtlSuperblockPowerLostFix
12121	mov	x0, x20
12122	bl	FtlSuperblockPowerLostFix
12123	adrp	x0, .LANCHOR42
12124	ldrh	w3, [x21, 4]
12125	ldr	x1, [x0, #:lo12:.LANCHOR42]
12126	ldrh	w0, [x22, #:lo12:.LANCHOR51]
12127	lsl	x0, x0, 1
12128	ldrh	w2, [x1, x0]
12129	sub	w2, w2, w3
12130	adrp	x3, .LANCHOR19
12131	strh	w2, [x1, x0]
12132	strb	wzr, [x21, 6]
12133	ldrh	w0, [x3, #:lo12:.LANCHOR19]
12134	strh	w0, [x21, 2]
12135	ldrh	w0, [x24, #:lo12:.LANCHOR52]
12136	strh	wzr, [x21, 4]
12137	ldrh	w4, [x20, 4]
12138	lsl	x0, x0, 1
12139	ldrh	w2, [x1, x0]
12140	sub	w2, w2, w4
12141	strh	w2, [x1, x0]
12142	strb	wzr, [x20, 6]
12143	ldrh	w0, [x3, #:lo12:.LANCHOR19]
12144	strh	w0, [x20, 2]
12145	strh	wzr, [x20, 4]
12146	adrp	x0, .LANCHOR144
12147	add	x0, x0, :lo12:.LANCHOR144
12148	bl	FtlMapBlkWriteDump_data
12149	adrp	x0, .LANCHOR149
12150	add	x0, x0, :lo12:.LANCHOR149
12151	bl	FtlMapBlkWriteDump_data
12152	add	x1, x19, :lo12:.LANCHOR39
12153	ldrh	w0, [x1, 30]
12154	add	w0, w0, 1
12155	strh	w0, [x1, 30]
12156	bl	l2p_flush
12157	bl	FtlVpcTblFlush
12158.L1637:
12159	bl	FtlVpcTblFlush
12160	add	x21, x22, :lo12:.LANCHOR51
12161	ldrh	w0, [x22, #:lo12:.LANCHOR51]
12162	mov	w1, 65535
12163	cmp	w0, w1
12164	beq	.L1634
12165	ldrh	w1, [x21, 4]
12166	cbnz	w1, .L1634
12167	adrp	x22, .LANCHOR52
12168	add	x20, x22, :lo12:.LANCHOR52
12169	ldrh	w1, [x20, 4]
12170	cbnz	w1, .L1634
12171	bl	FtlGcRefreshBlock
12172	ldrh	w0, [x22, #:lo12:.LANCHOR52]
12173	bl	FtlGcRefreshBlock
12174	mov	x0, x21
12175	bl	allocate_new_data_superblock
12176	mov	x0, x20
12177	bl	allocate_new_data_superblock
12178.L1634:
12179	add	x19, x19, :lo12:.LANCHOR39
12180	ldrh	w0, [x19, 28]
12181	tst	x0, 31
12182	bne	.L1622
12183	bl	FtlVpcCheckAndModify
12184	b	.L1622
12185.L1627:
12186	add	w0, w0, 1
12187	b	.L1626
12188.L1635:
12189	ldrh	w0, [x20, #:lo12:.LANCHOR161]
12190	cbnz	w0, .L1628
12191	bl	l2p_flush
12192	b	.L1637
12193	.size	FtlSysBlkInit, .-FtlSysBlkInit
12194	.section	.text.ftl_low_format,"ax",@progbits
12195	.align	2
12196	.global	ftl_low_format
12197	.type	ftl_low_format, %function
12198ftl_low_format:
12199	stp	x29, x30, [sp, -80]!
12200	adrp	x0, .LANCHOR71
12201	add	x29, sp, 0
12202	stp	x23, x24, [sp, 48]
12203	adrp	x24, .LANCHOR4
12204	str	wzr, [x0, #:lo12:.LANCHOR71]
12205	ldrh	w0, [x24, #:lo12:.LANCHOR4]
12206	stp	x19, x20, [sp, 16]
12207	adrp	x20, .LANCHOR70
12208	stp	x21, x22, [sp, 32]
12209	stp	x25, x26, [sp, 64]
12210	str	wzr, [x20, #:lo12:.LANCHOR70]
12211	bl	FtlFreeSysBlkQueueInit
12212	bl	FtlLoadBbt
12213	cbz	w0, .L1639
12214	bl	FtlMakeBbt
12215.L1639:
12216	adrp	x23, .LANCHOR12
12217	adrp	x0, .LANCHOR115
12218	mov	w6, 23752
12219	ldrh	w1, [x23, #:lo12:.LANCHOR12]
12220	movk	w6, 0xa0f, lsl 16
12221	ldr	x4, [x0, #:lo12:.LANCHOR115]
12222	adrp	x0, .LANCHOR113
12223	lsl	w1, w1, 7
12224	ldr	x5, [x0, #:lo12:.LANCHOR113]
12225	mov	w0, 0
12226.L1640:
12227	cmp	w0, w1
12228	blt	.L1641
12229	adrp	x21, .LANCHOR5
12230	adrp	x22, .LANCHOR6
12231	add	x26, x22, :lo12:.LANCHOR6
12232	mov	w19, 0
12233	ldrh	w25, [x21, #:lo12:.LANCHOR5]
12234.L1642:
12235	ldrh	w0, [x26]
12236	cmp	w0, w25
12237	bhi	.L1643
12238	adrp	x25, .LANCHOR3
12239	sub	w1, w19, #2
12240	ldrh	w0, [x25, #:lo12:.LANCHOR3]
12241	cmp	w1, w0, lsl 1
12242	bgt	.L1644
12243.L1648:
12244	add	x26, x21, :lo12:.LANCHOR5
12245	mov	w19, 0
12246	mov	w24, 0
12247.L1645:
12248	ldrh	w0, [x26]
12249	cmp	w0, w24
12250	bhi	.L1649
12251	adrp	x0, .LANCHOR112
12252	ldrh	w1, [x22, #:lo12:.LANCHOR6]
12253	ldrh	w4, [x25, #:lo12:.LANCHOR3]
12254	adrp	x2, .LANCHOR78
12255	str	w1, [x0, #:lo12:.LANCHOR112]
12256	adrp	x0, .LANCHOR7
12257	adrp	x3, .LANCHOR61
12258	ldr	w1, [x0, #:lo12:.LANCHOR7]
12259	udiv	w5, w1, w4
12260	ubfx	x0, x5, 5, 16
12261	str	w5, [x3, #:lo12:.LANCHOR61]
12262	add	w6, w0, 36
12263	strh	w6, [x2, #:lo12:.LANCHOR78]
12264	mov	w6, 24
12265	mul	w6, w4, w6
12266	cmp	w19, w6
12267	ble	.L1650
12268	sub	w1, w1, w19
12269	udiv	w1, w1, w4
12270	str	w1, [x3, #:lo12:.LANCHOR61]
12271	lsr	w1, w1, 5
12272	add	w1, w1, 24
12273	strh	w1, [x2, #:lo12:.LANCHOR78]
12274.L1650:
12275	adrp	x1, .LANCHOR15
12276	ldrh	w1, [x1, #:lo12:.LANCHOR15]
12277	cbz	w1, .L1652
12278	ldrh	w6, [x2, #:lo12:.LANCHOR78]
12279	add	w6, w6, w1, lsr 1
12280	strh	w6, [x2, #:lo12:.LANCHOR78]
12281	mul	w6, w1, w4
12282	cmp	w19, w6
12283	bge	.L1652
12284	add	w1, w1, 32
12285	str	w5, [x3, #:lo12:.LANCHOR61]
12286	add	w1, w0, w1
12287	strh	w1, [x2, #:lo12:.LANCHOR78]
12288.L1652:
12289	ldrh	w1, [x2, #:lo12:.LANCHOR78]
12290	adrp	x25, .LANCHOR181
12291	ldr	w0, [x3, #:lo12:.LANCHOR61]
12292	adrp	x24, .LANCHOR42
12293	sub	w0, w0, w1
12294	adrp	x1, .LANCHOR19
12295	ldrh	w1, [x1, #:lo12:.LANCHOR19]
12296	mul	w0, w0, w4
12297	str	w0, [x25, #:lo12:.LANCHOR181]
12298	mul	w0, w1, w0
12299	ldrh	w1, [x23, #:lo12:.LANCHOR12]
12300	str	w0, [x3, #:lo12:.LANCHOR61]
12301	mov	w23, -1
12302	mul	w0, w1, w0
12303	adrp	x1, .LANCHOR34
12304	str	w0, [x1, #:lo12:.LANCHOR34]
12305	bl	FtlBbmTblFlush
12306	ldr	x0, [x24, #:lo12:.LANCHOR42]
12307	mov	w1, 0
12308	ldrh	w2, [x22, #:lo12:.LANCHOR6]
12309	lsl	w2, w2, 1
12310	bl	ftl_memset
12311	adrp	x0, .LANCHOR59
12312	adrp	x1, .LANCHOR80
12313	ldrh	w2, [x21, #:lo12:.LANCHOR5]
12314	str	wzr, [x0, #:lo12:.LANCHOR59]
12315	add	x0, x1, :lo12:.LANCHOR80
12316	strh	w23, [x1, #:lo12:.LANCHOR80]
12317	mov	w1, 255
12318	lsr	w2, w2, 3
12319	strh	wzr, [x0, 2]
12320	strb	wzr, [x0, 6]
12321	strb	wzr, [x0, 8]
12322	adrp	x0, .LANCHOR51
12323	add	x19, x0, :lo12:.LANCHOR51
12324	strh	wzr, [x0, #:lo12:.LANCHOR51]
12325	mov	w0, 1
12326	strb	w0, [x19, 8]
12327	adrp	x0, .LANCHOR1
12328	strh	wzr, [x19, 2]
12329	ldr	x0, [x0, #:lo12:.LANCHOR1]
12330	strb	wzr, [x19, 6]
12331	bl	ftl_memset
12332.L1654:
12333	mov	x0, x19
12334	bl	make_superblock
12335	ldrb	w1, [x19, 7]
12336	ldrh	w0, [x19]
12337	cbnz	w1, .L1655
12338	ldr	x1, [x24, #:lo12:.LANCHOR42]
12339	ubfiz	x0, x0, 1, 16
12340	strh	w23, [x1, x0]
12341	ldrh	w0, [x19]
12342	add	w0, w0, 1
12343	strh	w0, [x19]
12344	b	.L1654
12345.L1641:
12346	ubfiz	x3, x0, 2, 16
12347	mvn	w2, w0
12348	orr	w2, w0, w2, lsl 16
12349	add	w0, w0, 1
12350	and	w0, w0, 65535
12351	str	w2, [x4, x3]
12352	str	w6, [x5, x3]
12353	b	.L1640
12354.L1643:
12355	mov	w0, w25
12356	mov	w1, 1
12357	add	w25, w25, 1
12358	bl	FtlLowFormatEraseBlock
12359	add	w19, w19, w0
12360	and	w25, w25, 65535
12361	and	w19, w19, 65535
12362	b	.L1642
12363.L1644:
12364	udiv	w0, w19, w0
12365	adrp	x1, .LANCHOR31
12366	ldr	w19, [x1, #:lo12:.LANCHOR31]
12367	add	w0, w0, w19
12368	bl	FtlSysBlkNumInit
12369	ldrh	w0, [x24, #:lo12:.LANCHOR4]
12370	add	x24, x22, :lo12:.LANCHOR6
12371	bl	FtlFreeSysBlkQueueInit
12372	ldrh	w19, [x21, #:lo12:.LANCHOR5]
12373.L1646:
12374	ldrh	w0, [x24]
12375	cmp	w0, w19
12376	bls	.L1648
12377	mov	w0, w19
12378	add	w19, w19, 1
12379	mov	w1, 1
12380	and	w19, w19, 65535
12381	bl	FtlLowFormatEraseBlock
12382	b	.L1646
12383.L1649:
12384	mov	w0, w24
12385	mov	w1, 0
12386	add	w24, w24, 1
12387	bl	FtlLowFormatEraseBlock
12388	add	w19, w19, w0
12389	and	w24, w24, 65535
12390	and	w19, w19, 65535
12391	b	.L1645
12392.L1655:
12393	ldr	w1, [x20, #:lo12:.LANCHOR70]
12394	ubfiz	x0, x0, 1, 16
12395	str	w1, [x19, 12]
12396	mov	w23, -1
12397	add	w1, w1, 1
12398	str	w1, [x20, #:lo12:.LANCHOR70]
12399	ldr	x1, [x24, #:lo12:.LANCHOR42]
12400	ldrh	w2, [x19, 4]
12401	strh	w2, [x1, x0]
12402	adrp	x2, .LANCHOR52
12403	add	x0, x2, :lo12:.LANCHOR52
12404	ldrh	w1, [x19]
12405	mov	x19, x0
12406	add	w1, w1, 1
12407	strh	wzr, [x0, 2]
12408	strh	w1, [x2, #:lo12:.LANCHOR52]
12409	mov	w1, 1
12410	strb	wzr, [x0, 6]
12411	strb	w1, [x0, 8]
12412.L1656:
12413	mov	x0, x19
12414	bl	make_superblock
12415	ldrb	w1, [x19, 7]
12416	ldrh	w0, [x19]
12417	cbnz	w1, .L1657
12418	ldr	x1, [x24, #:lo12:.LANCHOR42]
12419	ubfiz	x0, x0, 1, 16
12420	strh	w23, [x1, x0]
12421	ldrh	w0, [x19]
12422	add	w0, w0, 1
12423	strh	w0, [x19]
12424	b	.L1656
12425.L1657:
12426	ldr	w1, [x20, #:lo12:.LANCHOR70]
12427	ubfiz	x0, x0, 1, 16
12428	str	w1, [x19, 12]
12429	add	w1, w1, 1
12430	str	w1, [x20, #:lo12:.LANCHOR70]
12431	ldr	x1, [x24, #:lo12:.LANCHOR42]
12432	ldrh	w2, [x19, 4]
12433	mov	w19, -1
12434	strh	w2, [x1, x0]
12435	adrp	x0, .LANCHOR53
12436	strh	w19, [x0, #:lo12:.LANCHOR53]
12437	bl	FtlFreeSysBlkQueueOut
12438	adrp	x2, .LANCHOR79
12439	add	x1, x2, :lo12:.LANCHOR79
12440	strh	w0, [x2, #:lo12:.LANCHOR79]
12441	ldr	w0, [x25, #:lo12:.LANCHOR181]
12442	strh	w0, [x1, 6]
12443	ldr	w0, [x20, #:lo12:.LANCHOR70]
12444	str	w0, [x1, 8]
12445	add	w0, w0, 1
12446	strh	wzr, [x1, 2]
12447	strh	w19, [x1, 4]
12448	str	w0, [x20, #:lo12:.LANCHOR70]
12449	bl	FtlVpcTblFlush
12450	bl	FtlSysBlkInit
12451	cbnz	w0, .L1658
12452	adrp	x0, .LANCHOR86
12453	mov	w1, 1
12454	str	w1, [x0, #:lo12:.LANCHOR86]
12455.L1658:
12456	mov	w0, 0
12457	ldp	x19, x20, [sp, 16]
12458	ldp	x21, x22, [sp, 32]
12459	ldp	x23, x24, [sp, 48]
12460	ldp	x25, x26, [sp, 64]
12461	ldp	x29, x30, [sp], 80
12462	ret
12463	.size	ftl_low_format, .-ftl_low_format
12464	.section	.text.sftl_init,"ax",@progbits
12465	.align	2
12466	.global	sftl_init
12467	.type	sftl_init, %function
12468sftl_init:
12469	stp	x29, x30, [sp, -32]!
12470	adrp	x1, .LC70
12471	add	x1, x1, :lo12:.LC70
12472	mov	w0, -1
12473	add	x29, sp, 0
12474	str	x19, [sp, 16]
12475	adrp	x19, .LANCHOR86
12476	str	w0, [x19, #:lo12:.LANCHOR86]
12477	adrp	x0, .LC71
12478	add	x0, x0, :lo12:.LC71
12479	bl	printf
12480	adrp	x0, .LANCHOR0
12481	add	x0, x0, :lo12:.LANCHOR0
12482	bl	FtlConstantsInit
12483	bl	FtlMemInit
12484	bl	FtlVariablesInit
12485	adrp	x0, .LANCHOR4
12486	ldrh	w0, [x0, #:lo12:.LANCHOR4]
12487	bl	FtlFreeSysBlkQueueInit
12488	bl	FtlLoadBbt
12489	cbnz	w0, .L1667
12490	bl	FtlSysBlkInit
12491	cbnz	w0, .L1667
12492	mov	w0, 1
12493	str	w0, [x19, #:lo12:.LANCHOR86]
12494	adrp	x0, .LANCHOR48
12495	ldrh	w0, [x0, #:lo12:.LANCHOR48]
12496	cmp	w0, 15
12497	bhi	.L1667
12498	mov	w19, 8129
12499.L1666:
12500	mov	w1, 1
12501	mov	w0, 0
12502	bl	rk_ftl_garbage_collect
12503	subs	w19, w19, #1
12504	bne	.L1666
12505.L1667:
12506	mov	w0, 0
12507	ldr	x19, [sp, 16]
12508	ldp	x29, x30, [sp], 32
12509	ret
12510	.size	sftl_init, .-sftl_init
12511	.section	.text.ftl_memcmp,"ax",@progbits
12512	.align	2
12513	.global	ftl_memcmp
12514	.type	ftl_memcmp, %function
12515ftl_memcmp:
12516	uxtw	x2, w2
12517	b	memcmp
12518	.size	ftl_memcmp, .-ftl_memcmp
12519	.global	ftl_temp_buf
12520	.global	g_nand_ops
12521	.global	g_nand_phy_info
12522	.global	gc_ink_free_return_value
12523	.global	check_vpc_table
12524	.global	FtlUpdateVaildLpnCount
12525	.global	g_ect_tbl_power_up_flush
12526	.global	power_up_flag
12527	.global	gFtlInitStatus
12528	.global	DeviceCapacity
12529	.global	g_power_lost_recovery_flag
12530	.global	c_mlc_erase_count_value
12531	.global	g_recovery_ppa_tbl
12532	.global	g_recovery_page_min_ver
12533	.global	g_recovery_page_num
12534	.global	g_cur_erase_blk
12535	.global	g_gc_skip_write_count
12536	.global	g_gc_head_data_block_count
12537	.global	g_gc_head_data_block
12538	.global	g_ftl_nand_free_count
12539	.global	g_in_swl_replace
12540	.global	g_in_gc_progress
12541	.global	g_max_erase_count
12542	.global	g_totle_sys_slc_erase_count
12543	.global	g_totle_slc_erase_count
12544	.global	g_min_erase_count
12545	.global	g_totle_avg_erase_count
12546	.global	g_totle_mlc_erase_count
12547	.global	g_totle_l2p_write_count
12548	.global	g_totle_cache_write_count
12549	.global	g_tmp_data_superblock_id
12550	.global	g_totle_read_page_count
12551	.global	g_totle_discard_page_count
12552	.global	g_totle_read_sector
12553	.global	g_totle_write_sector
12554	.global	g_totle_write_page_count
12555	.global	g_totle_gc_page_count
12556	.global	g_gc_blk_index
12557	.global	g_gc_merge_free_blk_threshold
12558	.global	g_gc_free_blk_threshold
12559	.global	g_gc_bad_block_temp_tbl
12560	.global	g_gc_bad_block_gc_index
12561	.global	g_gc_bad_block_temp_num
12562	.global	g_gc_next_blk_1
12563	.global	g_gc_next_blk
12564	.global	g_gc_cur_blk_max_valid_pages
12565	.global	g_gc_cur_blk_valid_pages
12566	.global	g_gc_page_offset
12567	.global	g_gc_blk_num
12568	.global	p_gc_blk_tbl
12569	.global	p_gc_page_info
12570	.global	g_sys_ext_data
12571	.global	g_sys_save_data
12572	.global	gp_last_act_superblock
12573	.global	g_gc_superblock
12574	.global	g_gc_temp_superblock
12575	.global	g_buffer_superblock
12576	.global	g_active_superblock
12577	.global	g_num_data_superblocks
12578	.global	g_num_free_superblocks
12579	.global	p_data_block_list_tail
12580	.global	p_data_block_list_head
12581	.global	p_free_data_block_list_head
12582	.global	p_data_block_list_table
12583	.global	g_l2p_last_update_region_id
12584	.global	p_l2p_map_buf
12585	.global	p_l2p_ram_map
12586	.global	g_totle_vendor_block
12587	.global	p_vendor_region_ppn_table
12588	.global	p_vendor_block_ver_table
12589	.global	p_vendor_block_valid_page_count
12590	.global	p_vendor_block_table
12591	.global	g_totle_map_block
12592	.global	p_map_region_ppn_table
12593	.global	p_map_block_ver_table
12594	.global	p_map_block_valid_page_count
12595	.global	p_map_block_table
12596	.global	p_blk_mode_table
12597	.global	p_valid_page_count_check_table
12598	.global	p_valid_page_count_table
12599	.global	g_totle_swl_count
12600	.global	p_swl_mul_table
12601	.global	p_erase_count_table
12602	.global	g_ect_tbl_info_size
12603	.global	gp_ect_tbl_info
12604	.global	g_gc_num_req
12605	.global	c_gc_page_buf_num
12606	.global	gp_gc_page_buf_info
12607	.global	p_gc_data_buf
12608	.global	p_gc_spare_buf
12609	.global	p_io_spare_buf
12610	.global	p_io_data_buf_1
12611	.global	p_io_data_buf_0
12612	.global	p_sys_spare_buf
12613	.global	p_vendor_data_buf
12614	.global	p_sys_data_buf_1
12615	.global	p_sys_data_buf
12616	.global	p_plane_order_table
12617	.global	req_gc_dst
12618	.global	req_gc
12619	.global	req_erase
12620	.global	req_prgm
12621	.global	req_read
12622	.global	req_sys
12623	.global	gVendorBlkInfo
12624	.global	gL2pMapInfo
12625	.global	gSysFreeQueue
12626	.global	gSysInfo
12627	.global	gBbtInfo
12628	.global	g_MaxLbn
12629	.global	g_VaildLpn
12630	.global	g_MaxLpn
12631	.global	g_MaxLbaSector
12632	.global	g_GlobalDataVersion
12633	.global	g_GlobalSysVersion
12634	.global	ftl_gc_temp_power_lost_recovery_flag
12635	.global	c_ftl_nand_max_data_blks
12636	.global	c_ftl_nand_data_op_blks_per_plane
12637	.global	c_ftl_nand_data_blks_per_plane
12638	.global	c_ftl_nand_max_sys_blks
12639	.global	c_ftl_nand_init_sys_blks_per_plane
12640	.global	c_ftl_nand_sys_blks_per_plane
12641	.global	c_ftl_vendor_part_size
12642	.global	c_ftl_nand_max_vendor_blks
12643	.global	c_ftl_nand_max_map_blks
12644	.global	c_ftl_nand_map_blks_per_plane
12645	.global	c_ftl_nand_vendor_region_num
12646	.global	c_ftl_nand_l2pmap_ram_region_num
12647	.global	c_ftl_nand_map_region_num
12648	.global	c_ftl_nand_totle_phy_blks
12649	.global	c_ftl_nand_reserved_blks
12650	.global	c_ftl_nand_byte_pre_oob
12651	.global	c_ftl_nand_byte_pre_page
12652	.global	c_ftl_nand_sec_pre_page_shift
12653	.global	c_ftl_nand_sec_pre_page
12654	.global	c_ftl_nand_page_pre_super_blk
12655	.global	c_ftl_nand_page_pre_slc_blk
12656	.global	c_ftl_nand_page_pre_blk
12657	.global	c_ftl_nand_bbm_buf_size
12658	.global	c_ftl_nand_ext_blk_pre_plane
12659	.global	c_ftl_nand_blk_pre_plane
12660	.global	c_ftl_nand_planes_num
12661	.global	c_ftl_nand_blks_per_die_shift
12662	.global	c_ftl_nand_blks_per_die
12663	.global	c_ftl_nand_planes_per_die
12664	.global	c_ftl_nand_die_num
12665	.global	c_ftl_nand_type
12666	.section	.bss.DeviceCapacity,"aw",@nobits
12667	.align	2
12668	.set	.LANCHOR26,. + 0
12669	.type	DeviceCapacity, %object
12670	.size	DeviceCapacity, 4
12671DeviceCapacity:
12672	.zero	4
12673	.section	.bss.FtlUpdateVaildLpnCount,"aw",@nobits
12674	.align	1
12675	.set	.LANCHOR58,. + 0
12676	.type	FtlUpdateVaildLpnCount, %object
12677	.size	FtlUpdateVaildLpnCount, 2
12678FtlUpdateVaildLpnCount:
12679	.zero	2
12680	.section	.bss.c_ftl_nand_bbm_buf_size,"aw",@nobits
12681	.align	1
12682	.set	.LANCHOR137,. + 0
12683	.type	c_ftl_nand_bbm_buf_size, %object
12684	.size	c_ftl_nand_bbm_buf_size, 2
12685c_ftl_nand_bbm_buf_size:
12686	.zero	2
12687	.section	.bss.c_ftl_nand_blk_pre_plane,"aw",@nobits
12688	.align	1
12689	.set	.LANCHOR6,. + 0
12690	.type	c_ftl_nand_blk_pre_plane, %object
12691	.size	c_ftl_nand_blk_pre_plane, 2
12692c_ftl_nand_blk_pre_plane:
12693	.zero	2
12694	.section	.bss.c_ftl_nand_blks_per_die,"aw",@nobits
12695	.align	1
12696	.set	.LANCHOR17,. + 0
12697	.type	c_ftl_nand_blks_per_die, %object
12698	.size	c_ftl_nand_blks_per_die, 2
12699c_ftl_nand_blks_per_die:
12700	.zero	2
12701	.section	.bss.c_ftl_nand_blks_per_die_shift,"aw",@nobits
12702	.align	1
12703	.set	.LANCHOR18,. + 0
12704	.type	c_ftl_nand_blks_per_die_shift, %object
12705	.size	c_ftl_nand_blks_per_die_shift, 2
12706c_ftl_nand_blks_per_die_shift:
12707	.zero	2
12708	.section	.bss.c_ftl_nand_byte_pre_oob,"aw",@nobits
12709	.align	1
12710	.set	.LANCHOR24,. + 0
12711	.type	c_ftl_nand_byte_pre_oob, %object
12712	.size	c_ftl_nand_byte_pre_oob, 2
12713c_ftl_nand_byte_pre_oob:
12714	.zero	2
12715	.section	.bss.c_ftl_nand_byte_pre_page,"aw",@nobits
12716	.align	1
12717	.set	.LANCHOR23,. + 0
12718	.type	c_ftl_nand_byte_pre_page, %object
12719	.size	c_ftl_nand_byte_pre_page, 2
12720c_ftl_nand_byte_pre_page:
12721	.zero	2
12722	.section	.bss.c_ftl_nand_data_blks_per_plane,"aw",@nobits
12723	.align	1
12724	.set	.LANCHOR5,. + 0
12725	.type	c_ftl_nand_data_blks_per_plane, %object
12726	.size	c_ftl_nand_data_blks_per_plane, 2
12727c_ftl_nand_data_blks_per_plane:
12728	.zero	2
12729	.section	.bss.c_ftl_nand_data_op_blks_per_plane,"aw",@nobits
12730	.align	1
12731	.set	.LANCHOR78,. + 0
12732	.type	c_ftl_nand_data_op_blks_per_plane, %object
12733	.size	c_ftl_nand_data_op_blks_per_plane, 2
12734c_ftl_nand_data_op_blks_per_plane:
12735	.zero	2
12736	.section	.bss.c_ftl_nand_die_num,"aw",@nobits
12737	.align	1
12738	.set	.LANCHOR10,. + 0
12739	.type	c_ftl_nand_die_num, %object
12740	.size	c_ftl_nand_die_num, 2
12741c_ftl_nand_die_num:
12742	.zero	2
12743	.section	.bss.c_ftl_nand_ext_blk_pre_plane,"aw",@nobits
12744	.align	1
12745	.set	.LANCHOR15,. + 0
12746	.type	c_ftl_nand_ext_blk_pre_plane, %object
12747	.size	c_ftl_nand_ext_blk_pre_plane, 2
12748c_ftl_nand_ext_blk_pre_plane:
12749	.zero	2
12750	.section	.bss.c_ftl_nand_init_sys_blks_per_plane,"aw",@nobits
12751	.align	2
12752	.set	.LANCHOR31,. + 0
12753	.type	c_ftl_nand_init_sys_blks_per_plane, %object
12754	.size	c_ftl_nand_init_sys_blks_per_plane, 4
12755c_ftl_nand_init_sys_blks_per_plane:
12756	.zero	4
12757	.section	.bss.c_ftl_nand_l2pmap_ram_region_num,"aw",@nobits
12758	.align	1
12759	.set	.LANCHOR33,. + 0
12760	.type	c_ftl_nand_l2pmap_ram_region_num, %object
12761	.size	c_ftl_nand_l2pmap_ram_region_num, 2
12762c_ftl_nand_l2pmap_ram_region_num:
12763	.zero	2
12764	.section	.bss.c_ftl_nand_map_blks_per_plane,"aw",@nobits
12765	.align	1
12766	.set	.LANCHOR29,. + 0
12767	.type	c_ftl_nand_map_blks_per_plane, %object
12768	.size	c_ftl_nand_map_blks_per_plane, 2
12769c_ftl_nand_map_blks_per_plane:
12770	.zero	2
12771	.section	.bss.c_ftl_nand_map_region_num,"aw",@nobits
12772	.align	1
12773	.set	.LANCHOR32,. + 0
12774	.type	c_ftl_nand_map_region_num, %object
12775	.size	c_ftl_nand_map_region_num, 2
12776c_ftl_nand_map_region_num:
12777	.zero	2
12778	.section	.bss.c_ftl_nand_max_data_blks,"aw",@nobits
12779	.align	2
12780	.set	.LANCHOR7,. + 0
12781	.type	c_ftl_nand_max_data_blks, %object
12782	.size	c_ftl_nand_max_data_blks, 4
12783c_ftl_nand_max_data_blks:
12784	.zero	4
12785	.section	.bss.c_ftl_nand_max_map_blks,"aw",@nobits
12786	.align	2
12787	.set	.LANCHOR30,. + 0
12788	.type	c_ftl_nand_max_map_blks, %object
12789	.size	c_ftl_nand_max_map_blks, 4
12790c_ftl_nand_max_map_blks:
12791	.zero	4
12792	.section	.bss.c_ftl_nand_max_sys_blks,"aw",@nobits
12793	.align	2
12794	.set	.LANCHOR4,. + 0
12795	.type	c_ftl_nand_max_sys_blks, %object
12796	.size	c_ftl_nand_max_sys_blks, 4
12797c_ftl_nand_max_sys_blks:
12798	.zero	4
12799	.section	.bss.c_ftl_nand_max_vendor_blks,"aw",@nobits
12800	.align	1
12801	.set	.LANCHOR27,. + 0
12802	.type	c_ftl_nand_max_vendor_blks, %object
12803	.size	c_ftl_nand_max_vendor_blks, 2
12804c_ftl_nand_max_vendor_blks:
12805	.zero	2
12806	.section	.bss.c_ftl_nand_page_pre_blk,"aw",@nobits
12807	.align	1
12808	.set	.LANCHOR19,. + 0
12809	.type	c_ftl_nand_page_pre_blk, %object
12810	.size	c_ftl_nand_page_pre_blk, 2
12811c_ftl_nand_page_pre_blk:
12812	.zero	2
12813	.section	.bss.c_ftl_nand_page_pre_slc_blk,"aw",@nobits
12814	.align	1
12815	.set	.LANCHOR20,. + 0
12816	.type	c_ftl_nand_page_pre_slc_blk, %object
12817	.size	c_ftl_nand_page_pre_slc_blk, 2
12818c_ftl_nand_page_pre_slc_blk:
12819	.zero	2
12820	.section	.bss.c_ftl_nand_page_pre_super_blk,"aw",@nobits
12821	.align	1
12822	.set	.LANCHOR21,. + 0
12823	.type	c_ftl_nand_page_pre_super_blk, %object
12824	.size	c_ftl_nand_page_pre_super_blk, 2
12825c_ftl_nand_page_pre_super_blk:
12826	.zero	2
12827	.section	.bss.c_ftl_nand_planes_num,"aw",@nobits
12828	.align	1
12829	.set	.LANCHOR3,. + 0
12830	.type	c_ftl_nand_planes_num, %object
12831	.size	c_ftl_nand_planes_num, 2
12832c_ftl_nand_planes_num:
12833	.zero	2
12834	.section	.bss.c_ftl_nand_planes_per_die,"aw",@nobits
12835	.align	1
12836	.set	.LANCHOR11,. + 0
12837	.type	c_ftl_nand_planes_per_die, %object
12838	.size	c_ftl_nand_planes_per_die, 2
12839c_ftl_nand_planes_per_die:
12840	.zero	2
12841	.section	.bss.c_ftl_nand_reserved_blks,"aw",@nobits
12842	.align	1
12843	.set	.LANCHOR25,. + 0
12844	.type	c_ftl_nand_reserved_blks, %object
12845	.size	c_ftl_nand_reserved_blks, 2
12846c_ftl_nand_reserved_blks:
12847	.zero	2
12848	.section	.bss.c_ftl_nand_sec_pre_page,"aw",@nobits
12849	.align	1
12850	.set	.LANCHOR12,. + 0
12851	.type	c_ftl_nand_sec_pre_page, %object
12852	.size	c_ftl_nand_sec_pre_page, 2
12853c_ftl_nand_sec_pre_page:
12854	.zero	2
12855	.section	.bss.c_ftl_nand_sec_pre_page_shift,"aw",@nobits
12856	.align	1
12857	.set	.LANCHOR22,. + 0
12858	.type	c_ftl_nand_sec_pre_page_shift, %object
12859	.size	c_ftl_nand_sec_pre_page_shift, 2
12860c_ftl_nand_sec_pre_page_shift:
12861	.zero	2
12862	.section	.bss.c_ftl_nand_sys_blks_per_plane,"aw",@nobits
12863	.align	2
12864	.set	.LANCHOR2,. + 0
12865	.type	c_ftl_nand_sys_blks_per_plane, %object
12866	.size	c_ftl_nand_sys_blks_per_plane, 4
12867c_ftl_nand_sys_blks_per_plane:
12868	.zero	4
12869	.section	.bss.c_ftl_nand_totle_phy_blks,"aw",@nobits
12870	.align	2
12871	.set	.LANCHOR8,. + 0
12872	.type	c_ftl_nand_totle_phy_blks, %object
12873	.size	c_ftl_nand_totle_phy_blks, 4
12874c_ftl_nand_totle_phy_blks:
12875	.zero	4
12876	.section	.bss.c_ftl_nand_type,"aw",@nobits
12877	.align	1
12878	.set	.LANCHOR9,. + 0
12879	.type	c_ftl_nand_type, %object
12880	.size	c_ftl_nand_type, 2
12881c_ftl_nand_type:
12882	.zero	2
12883	.section	.bss.c_ftl_nand_vendor_region_num,"aw",@nobits
12884	.align	1
12885	.set	.LANCHOR28,. + 0
12886	.type	c_ftl_nand_vendor_region_num, %object
12887	.size	c_ftl_nand_vendor_region_num, 2
12888c_ftl_nand_vendor_region_num:
12889	.zero	2
12890	.section	.bss.c_ftl_vendor_part_size,"aw",@nobits
12891	.align	1
12892	.set	.LANCHOR16,. + 0
12893	.type	c_ftl_vendor_part_size, %object
12894	.size	c_ftl_vendor_part_size, 2
12895c_ftl_vendor_part_size:
12896	.zero	2
12897	.section	.bss.c_gc_page_buf_num,"aw",@nobits
12898	.align	2
12899	.set	.LANCHOR94,. + 0
12900	.type	c_gc_page_buf_num, %object
12901	.size	c_gc_page_buf_num, 4
12902c_gc_page_buf_num:
12903	.zero	4
12904	.section	.bss.c_mlc_erase_count_value,"aw",@nobits
12905	.align	1
12906	.set	.LANCHOR14,. + 0
12907	.type	c_mlc_erase_count_value, %object
12908	.size	c_mlc_erase_count_value, 2
12909c_mlc_erase_count_value:
12910	.zero	2
12911	.section	.bss.check_buf,"aw",@nobits
12912	.align	3
12913	.type	check_buf, %object
12914	.size	check_buf, 4096
12915check_buf:
12916	.zero	4096
12917	.section	.bss.check_spare_buf,"aw",@nobits
12918	.align	3
12919	.set	.LANCHOR110,. + 0
12920	.type	check_spare_buf, %object
12921	.size	check_spare_buf, 512
12922check_spare_buf:
12923	.zero	512
12924	.section	.bss.check_vpc_table,"aw",@nobits
12925	.align	3
12926	.type	check_vpc_table, %object
12927	.size	check_vpc_table, 16384
12928check_vpc_table:
12929	.zero	16384
12930	.section	.bss.ftl_gc_temp_power_lost_recovery_flag,"aw",@nobits
12931	.align	2
12932	.set	.LANCHOR152,. + 0
12933	.type	ftl_gc_temp_power_lost_recovery_flag, %object
12934	.size	ftl_gc_temp_power_lost_recovery_flag, 4
12935ftl_gc_temp_power_lost_recovery_flag:
12936	.zero	4
12937	.section	.bss.ftl_temp_buf,"aw",@nobits
12938	.align	3
12939	.type	ftl_temp_buf, %object
12940	.size	ftl_temp_buf, 4096
12941ftl_temp_buf:
12942	.zero	4096
12943	.section	.bss.gBbtInfo,"aw",@nobits
12944	.align	3
12945	.set	.LANCHOR37,. + 0
12946	.type	gBbtInfo, %object
12947	.size	gBbtInfo, 96
12948gBbtInfo:
12949	.zero	96
12950	.section	.bss.gL2pMapInfo,"aw",@nobits
12951	.align	3
12952	.set	.LANCHOR144,. + 0
12953	.type	gL2pMapInfo, %object
12954	.size	gL2pMapInfo, 64
12955gL2pMapInfo:
12956	.zero	64
12957	.section	.bss.gSysFreeQueue,"aw",@nobits
12958	.align	3
12959	.set	.LANCHOR38,. + 0
12960	.type	gSysFreeQueue, %object
12961	.size	gSysFreeQueue, 2056
12962gSysFreeQueue:
12963	.zero	2056
12964	.section	.bss.gSysInfo,"aw",@nobits
12965	.align	3
12966	.set	.LANCHOR79,. + 0
12967	.type	gSysInfo, %object
12968	.size	gSysInfo, 12
12969gSysInfo:
12970	.zero	12
12971	.section	.bss.gVendorBlkInfo,"aw",@nobits
12972	.align	3
12973	.set	.LANCHOR149,. + 0
12974	.type	gVendorBlkInfo, %object
12975	.size	gVendorBlkInfo, 64
12976gVendorBlkInfo:
12977	.zero	64
12978	.section	.bss.g_GlobalDataVersion,"aw",@nobits
12979	.align	2
12980	.set	.LANCHOR71,. + 0
12981	.type	g_GlobalDataVersion, %object
12982	.size	g_GlobalDataVersion, 4
12983g_GlobalDataVersion:
12984	.zero	4
12985	.section	.bss.g_GlobalSysVersion,"aw",@nobits
12986	.align	2
12987	.set	.LANCHOR70,. + 0
12988	.type	g_GlobalSysVersion, %object
12989	.size	g_GlobalSysVersion, 4
12990g_GlobalSysVersion:
12991	.zero	4
12992	.section	.bss.g_MaxLbaSector,"aw",@nobits
12993	.align	2
12994	.set	.LANCHOR34,. + 0
12995	.type	g_MaxLbaSector, %object
12996	.size	g_MaxLbaSector, 4
12997g_MaxLbaSector:
12998	.zero	4
12999	.section	.bss.g_MaxLbn,"aw",@nobits
13000	.align	2
13001	.set	.LANCHOR181,. + 0
13002	.type	g_MaxLbn, %object
13003	.size	g_MaxLbn, 4
13004g_MaxLbn:
13005	.zero	4
13006	.section	.bss.g_MaxLpn,"aw",@nobits
13007	.align	2
13008	.set	.LANCHOR61,. + 0
13009	.type	g_MaxLpn, %object
13010	.size	g_MaxLpn, 4
13011g_MaxLpn:
13012	.zero	4
13013	.section	.bss.g_VaildLpn,"aw",@nobits
13014	.align	2
13015	.set	.LANCHOR59,. + 0
13016	.type	g_VaildLpn, %object
13017	.size	g_VaildLpn, 4
13018g_VaildLpn:
13019	.zero	4
13020	.section	.bss.g_active_superblock,"aw",@nobits
13021	.align	3
13022	.set	.LANCHOR51,. + 0
13023	.type	g_active_superblock, %object
13024	.size	g_active_superblock, 48
13025g_active_superblock:
13026	.zero	48
13027	.section	.bss.g_buffer_superblock,"aw",@nobits
13028	.align	3
13029	.set	.LANCHOR52,. + 0
13030	.type	g_buffer_superblock, %object
13031	.size	g_buffer_superblock, 48
13032g_buffer_superblock:
13033	.zero	48
13034	.section	.bss.g_cur_erase_blk,"aw",@nobits
13035	.align	2
13036	.set	.LANCHOR112,. + 0
13037	.type	g_cur_erase_blk, %object
13038	.size	g_cur_erase_blk, 4
13039g_cur_erase_blk:
13040	.zero	4
13041	.section	.bss.g_ect_tbl_info_size,"aw",@nobits
13042	.align	1
13043	.set	.LANCHOR125,. + 0
13044	.type	g_ect_tbl_info_size, %object
13045	.size	g_ect_tbl_info_size, 2
13046g_ect_tbl_info_size:
13047	.zero	2
13048	.section	.bss.g_ect_tbl_power_up_flush,"aw",@nobits
13049	.align	1
13050	.set	.LANCHOR165,. + 0
13051	.type	g_ect_tbl_power_up_flush, %object
13052	.size	g_ect_tbl_power_up_flush, 2
13053g_ect_tbl_power_up_flush:
13054	.zero	2
13055	.section	.bss.g_ftl_nand_free_count,"aw",@nobits
13056	.align	2
13057	.set	.LANCHOR176,. + 0
13058	.type	g_ftl_nand_free_count, %object
13059	.size	g_ftl_nand_free_count, 4
13060g_ftl_nand_free_count:
13061	.zero	4
13062	.section	.bss.g_gc_bad_block_gc_index,"aw",@nobits
13063	.align	1
13064	.set	.LANCHOR103,. + 0
13065	.type	g_gc_bad_block_gc_index, %object
13066	.size	g_gc_bad_block_gc_index, 2
13067g_gc_bad_block_gc_index:
13068	.zero	2
13069	.section	.bss.g_gc_bad_block_temp_num,"aw",@nobits
13070	.align	1
13071	.set	.LANCHOR101,. + 0
13072	.type	g_gc_bad_block_temp_num, %object
13073	.size	g_gc_bad_block_temp_num, 2
13074g_gc_bad_block_temp_num:
13075	.zero	2
13076	.section	.bss.g_gc_bad_block_temp_tbl,"aw",@nobits
13077	.align	3
13078	.set	.LANCHOR102,. + 0
13079	.type	g_gc_bad_block_temp_tbl, %object
13080	.size	g_gc_bad_block_temp_tbl, 34
13081g_gc_bad_block_temp_tbl:
13082	.zero	34
13083	.section	.bss.g_gc_blk_index,"aw",@nobits
13084	.align	1
13085	.set	.LANCHOR85,. + 0
13086	.type	g_gc_blk_index, %object
13087	.size	g_gc_blk_index, 2
13088g_gc_blk_index:
13089	.zero	2
13090	.section	.bss.g_gc_blk_num,"aw",@nobits
13091	.align	1
13092	.set	.LANCHOR95,. + 0
13093	.type	g_gc_blk_num, %object
13094	.size	g_gc_blk_num, 2
13095g_gc_blk_num:
13096	.zero	2
13097	.section	.bss.g_gc_cur_blk_max_valid_pages,"aw",@nobits
13098	.align	1
13099	.set	.LANCHOR174,. + 0
13100	.type	g_gc_cur_blk_max_valid_pages, %object
13101	.size	g_gc_cur_blk_max_valid_pages, 2
13102g_gc_cur_blk_max_valid_pages:
13103	.zero	2
13104	.section	.bss.g_gc_cur_blk_valid_pages,"aw",@nobits
13105	.align	1
13106	.set	.LANCHOR173,. + 0
13107	.type	g_gc_cur_blk_valid_pages, %object
13108	.size	g_gc_cur_blk_valid_pages, 2
13109g_gc_cur_blk_valid_pages:
13110	.zero	2
13111	.section	.bss.g_gc_free_blk_threshold,"aw",@nobits
13112	.align	1
13113	.set	.LANCHOR82,. + 0
13114	.type	g_gc_free_blk_threshold, %object
13115	.size	g_gc_free_blk_threshold, 2
13116g_gc_free_blk_threshold:
13117	.zero	2
13118	.section	.bss.g_gc_head_data_block,"aw",@nobits
13119	.align	2
13120	.set	.LANCHOR118,. + 0
13121	.type	g_gc_head_data_block, %object
13122	.size	g_gc_head_data_block, 4
13123g_gc_head_data_block:
13124	.zero	4
13125	.section	.bss.g_gc_head_data_block_count,"aw",@nobits
13126	.align	2
13127	.set	.LANCHOR119,. + 0
13128	.type	g_gc_head_data_block_count, %object
13129	.size	g_gc_head_data_block_count, 4
13130g_gc_head_data_block_count:
13131	.zero	4
13132	.section	.bss.g_gc_merge_free_blk_threshold,"aw",@nobits
13133	.align	1
13134	.set	.LANCHOR83,. + 0
13135	.type	g_gc_merge_free_blk_threshold, %object
13136	.size	g_gc_merge_free_blk_threshold, 2
13137g_gc_merge_free_blk_threshold:
13138	.zero	2
13139	.section	.bss.g_gc_next_blk,"aw",@nobits
13140	.align	1
13141	.set	.LANCHOR99,. + 0
13142	.type	g_gc_next_blk, %object
13143	.size	g_gc_next_blk, 2
13144g_gc_next_blk:
13145	.zero	2
13146	.section	.bss.g_gc_next_blk_1,"aw",@nobits
13147	.align	1
13148	.set	.LANCHOR100,. + 0
13149	.type	g_gc_next_blk_1, %object
13150	.size	g_gc_next_blk_1, 2
13151g_gc_next_blk_1:
13152	.zero	2
13153	.section	.bss.g_gc_num_req,"aw",@nobits
13154	.align	2
13155	.set	.LANCHOR89,. + 0
13156	.type	g_gc_num_req, %object
13157	.size	g_gc_num_req, 4
13158g_gc_num_req:
13159	.zero	4
13160	.section	.bss.g_gc_page_offset,"aw",@nobits
13161	.align	1
13162	.set	.LANCHOR97,. + 0
13163	.type	g_gc_page_offset, %object
13164	.size	g_gc_page_offset, 2
13165g_gc_page_offset:
13166	.zero	2
13167	.section	.bss.g_gc_skip_write_count,"aw",@nobits
13168	.align	2
13169	.set	.LANCHOR84,. + 0
13170	.type	g_gc_skip_write_count, %object
13171	.size	g_gc_skip_write_count, 4
13172g_gc_skip_write_count:
13173	.zero	4
13174	.section	.bss.g_gc_superblock,"aw",@nobits
13175	.align	3
13176	.set	.LANCHOR80,. + 0
13177	.type	g_gc_superblock, %object
13178	.size	g_gc_superblock, 48
13179g_gc_superblock:
13180	.zero	48
13181	.section	.bss.g_gc_temp_superblock,"aw",@nobits
13182	.align	3
13183	.set	.LANCHOR53,. + 0
13184	.type	g_gc_temp_superblock, %object
13185	.size	g_gc_temp_superblock, 48
13186g_gc_temp_superblock:
13187	.zero	48
13188	.section	.bss.g_in_gc_progress,"aw",@nobits
13189	.align	2
13190	.set	.LANCHOR117,. + 0
13191	.type	g_in_gc_progress, %object
13192	.size	g_in_gc_progress, 4
13193g_in_gc_progress:
13194	.zero	4
13195	.section	.bss.g_in_swl_replace,"aw",@nobits
13196	.align	2
13197	.set	.LANCHOR87,. + 0
13198	.type	g_in_swl_replace, %object
13199	.size	g_in_swl_replace, 4
13200g_in_swl_replace:
13201	.zero	4
13202	.section	.bss.g_l2p_last_update_region_id,"aw",@nobits
13203	.align	1
13204	.set	.LANCHOR56,. + 0
13205	.type	g_l2p_last_update_region_id, %object
13206	.size	g_l2p_last_update_region_id, 2
13207g_l2p_last_update_region_id:
13208	.zero	2
13209	.section	.bss.g_max_erase_count,"aw",@nobits
13210	.align	2
13211	.set	.LANCHOR76,. + 0
13212	.type	g_max_erase_count, %object
13213	.size	g_max_erase_count, 4
13214g_max_erase_count:
13215	.zero	4
13216	.section	.bss.g_min_erase_count,"aw",@nobits
13217	.align	2
13218	.set	.LANCHOR77,. + 0
13219	.type	g_min_erase_count, %object
13220	.size	g_min_erase_count, 4
13221g_min_erase_count:
13222	.zero	4
13223	.section	.bss.g_nand_ops,"aw",@nobits
13224	.align	3
13225	.set	.LANCHOR105,. + 0
13226	.type	g_nand_ops, %object
13227	.size	g_nand_ops, 32
13228g_nand_ops:
13229	.zero	32
13230	.section	.bss.g_nand_phy_info,"aw",@nobits
13231	.align	3
13232	.set	.LANCHOR0,. + 0
13233	.type	g_nand_phy_info, %object
13234	.size	g_nand_phy_info, 24
13235g_nand_phy_info:
13236	.zero	24
13237	.section	.bss.g_num_data_superblocks,"aw",@nobits
13238	.align	1
13239	.set	.LANCHOR45,. + 0
13240	.type	g_num_data_superblocks, %object
13241	.size	g_num_data_superblocks, 2
13242g_num_data_superblocks:
13243	.zero	2
13244	.section	.bss.g_num_free_superblocks,"aw",@nobits
13245	.align	1
13246	.set	.LANCHOR48,. + 0
13247	.type	g_num_free_superblocks, %object
13248	.size	g_num_free_superblocks, 2
13249g_num_free_superblocks:
13250	.zero	2
13251	.section	.bss.g_power_lost_recovery_flag,"aw",@nobits
13252	.align	1
13253	.set	.LANCHOR161,. + 0
13254	.type	g_power_lost_recovery_flag, %object
13255	.size	g_power_lost_recovery_flag, 2
13256g_power_lost_recovery_flag:
13257	.zero	2
13258	.section	.bss.g_recovery_page_min_ver,"aw",@nobits
13259	.align	2
13260	.set	.LANCHOR153,. + 0
13261	.type	g_recovery_page_min_ver, %object
13262	.size	g_recovery_page_min_ver, 4
13263g_recovery_page_min_ver:
13264	.zero	4
13265	.section	.bss.g_recovery_page_num,"aw",@nobits
13266	.align	2
13267	.set	.LANCHOR162,. + 0
13268	.type	g_recovery_page_num, %object
13269	.size	g_recovery_page_num, 4
13270g_recovery_page_num:
13271	.zero	4
13272	.section	.bss.g_recovery_ppa_tbl,"aw",@nobits
13273	.align	3
13274	.set	.LANCHOR163,. + 0
13275	.type	g_recovery_ppa_tbl, %object
13276	.size	g_recovery_ppa_tbl, 128
13277g_recovery_ppa_tbl:
13278	.zero	128
13279	.section	.bss.g_sys_ext_data,"aw",@nobits
13280	.align	3
13281	.set	.LANCHOR81,. + 0
13282	.type	g_sys_ext_data, %object
13283	.size	g_sys_ext_data, 512
13284g_sys_ext_data:
13285	.zero	512
13286	.section	.bss.g_sys_save_data,"aw",@nobits
13287	.align	3
13288	.set	.LANCHOR39,. + 0
13289	.type	g_sys_save_data, %object
13290	.size	g_sys_save_data, 48
13291g_sys_save_data:
13292	.zero	48
13293	.section	.bss.g_tmp_data_superblock_id,"aw",@nobits
13294	.align	1
13295	.set	.LANCHOR150,. + 0
13296	.type	g_tmp_data_superblock_id, %object
13297	.size	g_tmp_data_superblock_id, 2
13298g_tmp_data_superblock_id:
13299	.zero	2
13300	.section	.bss.g_totle_avg_erase_count,"aw",@nobits
13301	.align	2
13302	.set	.LANCHOR74,. + 0
13303	.type	g_totle_avg_erase_count, %object
13304	.size	g_totle_avg_erase_count, 4
13305g_totle_avg_erase_count:
13306	.zero	4
13307	.section	.bss.g_totle_cache_write_count,"aw",@nobits
13308	.align	2
13309	.set	.LANCHOR65,. + 0
13310	.type	g_totle_cache_write_count, %object
13311	.size	g_totle_cache_write_count, 4
13312g_totle_cache_write_count:
13313	.zero	4
13314	.section	.bss.g_totle_discard_page_count,"aw",@nobits
13315	.align	2
13316	.set	.LANCHOR63,. + 0
13317	.type	g_totle_discard_page_count, %object
13318	.size	g_totle_discard_page_count, 4
13319g_totle_discard_page_count:
13320	.zero	4
13321	.section	.bss.g_totle_gc_page_count,"aw",@nobits
13322	.align	2
13323	.set	.LANCHOR67,. + 0
13324	.type	g_totle_gc_page_count, %object
13325	.size	g_totle_gc_page_count, 4
13326g_totle_gc_page_count:
13327	.zero	4
13328	.section	.bss.g_totle_l2p_write_count,"aw",@nobits
13329	.align	2
13330	.set	.LANCHOR66,. + 0
13331	.type	g_totle_l2p_write_count, %object
13332	.size	g_totle_l2p_write_count, 4
13333g_totle_l2p_write_count:
13334	.zero	4
13335	.section	.bss.g_totle_map_block,"aw",@nobits
13336	.align	1
13337	.set	.LANCHOR147,. + 0
13338	.type	g_totle_map_block, %object
13339	.size	g_totle_map_block, 2
13340g_totle_map_block:
13341	.zero	2
13342	.section	.bss.g_totle_mlc_erase_count,"aw",@nobits
13343	.align	2
13344	.set	.LANCHOR72,. + 0
13345	.type	g_totle_mlc_erase_count, %object
13346	.size	g_totle_mlc_erase_count, 4
13347g_totle_mlc_erase_count:
13348	.zero	4
13349	.section	.bss.g_totle_read_page_count,"aw",@nobits
13350	.align	2
13351	.set	.LANCHOR62,. + 0
13352	.type	g_totle_read_page_count, %object
13353	.size	g_totle_read_page_count, 4
13354g_totle_read_page_count:
13355	.zero	4
13356	.section	.bss.g_totle_read_sector,"aw",@nobits
13357	.align	2
13358	.set	.LANCHOR69,. + 0
13359	.type	g_totle_read_sector, %object
13360	.size	g_totle_read_sector, 4
13361g_totle_read_sector:
13362	.zero	4
13363	.section	.bss.g_totle_slc_erase_count,"aw",@nobits
13364	.align	2
13365	.set	.LANCHOR73,. + 0
13366	.type	g_totle_slc_erase_count, %object
13367	.size	g_totle_slc_erase_count, 4
13368g_totle_slc_erase_count:
13369	.zero	4
13370	.section	.bss.g_totle_swl_count,"aw",@nobits
13371	.align	2
13372	.set	.LANCHOR151,. + 0
13373	.type	g_totle_swl_count, %object
13374	.size	g_totle_swl_count, 4
13375g_totle_swl_count:
13376	.zero	4
13377	.section	.bss.g_totle_sys_slc_erase_count,"aw",@nobits
13378	.align	2
13379	.set	.LANCHOR75,. + 0
13380	.type	g_totle_sys_slc_erase_count, %object
13381	.size	g_totle_sys_slc_erase_count, 4
13382g_totle_sys_slc_erase_count:
13383	.zero	4
13384	.section	.bss.g_totle_vendor_block,"aw",@nobits
13385	.align	1
13386	.set	.LANCHOR35,. + 0
13387	.type	g_totle_vendor_block, %object
13388	.size	g_totle_vendor_block, 2
13389g_totle_vendor_block:
13390	.zero	2
13391	.section	.bss.g_totle_write_page_count,"aw",@nobits
13392	.align	2
13393	.set	.LANCHOR64,. + 0
13394	.type	g_totle_write_page_count, %object
13395	.size	g_totle_write_page_count, 4
13396g_totle_write_page_count:
13397	.zero	4
13398	.section	.bss.g_totle_write_sector,"aw",@nobits
13399	.align	2
13400	.set	.LANCHOR68,. + 0
13401	.type	g_totle_write_sector, %object
13402	.size	g_totle_write_sector, 4
13403g_totle_write_sector:
13404	.zero	4
13405	.section	.bss.gc_discard_updated,"aw",@nobits
13406	.align	2
13407	.set	.LANCHOR167,. + 0
13408	.type	gc_discard_updated, %object
13409	.size	gc_discard_updated, 4
13410gc_discard_updated:
13411	.zero	4
13412	.section	.bss.gc_ink_free_return_value,"aw",@nobits
13413	.align	1
13414	.set	.LANCHOR172,. + 0
13415	.type	gc_ink_free_return_value, %object
13416	.size	gc_ink_free_return_value, 2
13417gc_ink_free_return_value:
13418	.zero	2
13419	.section	.bss.gp_ect_tbl_info,"aw",@nobits
13420	.align	3
13421	.set	.LANCHOR127,. + 0
13422	.type	gp_ect_tbl_info, %object
13423	.size	gp_ect_tbl_info, 8
13424gp_ect_tbl_info:
13425	.zero	8
13426	.section	.bss.gp_flash_check_buf,"aw",@nobits
13427	.align	3
13428	.type	gp_flash_check_buf, %object
13429	.size	gp_flash_check_buf, 262144
13430gp_flash_check_buf:
13431	.zero	262144
13432	.section	.bss.gp_gc_page_buf_info,"aw",@nobits
13433	.align	3
13434	.set	.LANCHOR90,. + 0
13435	.type	gp_gc_page_buf_info, %object
13436	.size	gp_gc_page_buf_info, 8
13437gp_gc_page_buf_info:
13438	.zero	8
13439	.section	.bss.gp_last_act_superblock,"aw",@nobits
13440	.align	3
13441	.type	gp_last_act_superblock, %object
13442	.size	gp_last_act_superblock, 8
13443gp_last_act_superblock:
13444	.zero	8
13445	.section	.bss.idb_buf,"aw",@nobits
13446	.align	3
13447	.type	idb_buf, %object
13448	.size	idb_buf, 262144
13449idb_buf:
13450	.zero	262144
13451	.section	.bss.idb_need_write_back,"aw",@nobits
13452	.align	2
13453	.set	.LANCHOR179,. + 0
13454	.type	idb_need_write_back, %object
13455	.size	idb_need_write_back, 4
13456idb_need_write_back:
13457	.zero	4
13458	.section	.bss.p_blk_mode_table,"aw",@nobits
13459	.align	3
13460	.set	.LANCHOR1,. + 0
13461	.type	p_blk_mode_table, %object
13462	.size	p_blk_mode_table, 8
13463p_blk_mode_table:
13464	.zero	8
13465	.section	.bss.p_data_block_list_head,"aw",@nobits
13466	.align	3
13467	.set	.LANCHOR41,. + 0
13468	.type	p_data_block_list_head, %object
13469	.size	p_data_block_list_head, 8
13470p_data_block_list_head:
13471	.zero	8
13472	.section	.bss.p_data_block_list_table,"aw",@nobits
13473	.align	3
13474	.set	.LANCHOR40,. + 0
13475	.type	p_data_block_list_table, %object
13476	.size	p_data_block_list_table, 8
13477p_data_block_list_table:
13478	.zero	8
13479	.section	.bss.p_data_block_list_tail,"aw",@nobits
13480	.align	3
13481	.set	.LANCHOR44,. + 0
13482	.type	p_data_block_list_tail, %object
13483	.size	p_data_block_list_tail, 8
13484p_data_block_list_tail:
13485	.zero	8
13486	.section	.bss.p_erase_count_table,"aw",@nobits
13487	.align	3
13488	.set	.LANCHOR43,. + 0
13489	.type	p_erase_count_table, %object
13490	.size	p_erase_count_table, 8
13491p_erase_count_table:
13492	.zero	8
13493	.section	.bss.p_free_data_block_list_head,"aw",@nobits
13494	.align	3
13495	.set	.LANCHOR47,. + 0
13496	.type	p_free_data_block_list_head, %object
13497	.size	p_free_data_block_list_head, 8
13498p_free_data_block_list_head:
13499	.zero	8
13500	.section	.bss.p_gc_blk_tbl,"aw",@nobits
13501	.align	3
13502	.set	.LANCHOR96,. + 0
13503	.type	p_gc_blk_tbl, %object
13504	.size	p_gc_blk_tbl, 8
13505p_gc_blk_tbl:
13506	.zero	8
13507	.section	.bss.p_gc_data_buf,"aw",@nobits
13508	.align	3
13509	.set	.LANCHOR91,. + 0
13510	.type	p_gc_data_buf, %object
13511	.size	p_gc_data_buf, 8
13512p_gc_data_buf:
13513	.zero	8
13514	.section	.bss.p_gc_page_info,"aw",@nobits
13515	.align	3
13516	.set	.LANCHOR98,. + 0
13517	.type	p_gc_page_info, %object
13518	.size	p_gc_page_info, 8
13519p_gc_page_info:
13520	.zero	8
13521	.section	.bss.p_gc_spare_buf,"aw",@nobits
13522	.align	3
13523	.set	.LANCHOR92,. + 0
13524	.type	p_gc_spare_buf, %object
13525	.size	p_gc_spare_buf, 8
13526p_gc_spare_buf:
13527	.zero	8
13528	.section	.bss.p_io_data_buf_0,"aw",@nobits
13529	.align	3
13530	.set	.LANCHOR115,. + 0
13531	.type	p_io_data_buf_0, %object
13532	.size	p_io_data_buf_0, 8
13533p_io_data_buf_0:
13534	.zero	8
13535	.section	.bss.p_io_data_buf_1,"aw",@nobits
13536	.align	3
13537	.set	.LANCHOR113,. + 0
13538	.type	p_io_data_buf_1, %object
13539	.size	p_io_data_buf_1, 8
13540p_io_data_buf_1:
13541	.zero	8
13542	.section	.bss.p_io_spare_buf,"aw",@nobits
13543	.align	3
13544	.set	.LANCHOR114,. + 0
13545	.type	p_io_spare_buf, %object
13546	.size	p_io_spare_buf, 8
13547p_io_spare_buf:
13548	.zero	8
13549	.section	.bss.p_l2p_map_buf,"aw",@nobits
13550	.align	3
13551	.set	.LANCHOR136,. + 0
13552	.type	p_l2p_map_buf, %object
13553	.size	p_l2p_map_buf, 8
13554p_l2p_map_buf:
13555	.zero	8
13556	.section	.bss.p_l2p_ram_map,"aw",@nobits
13557	.align	3
13558	.set	.LANCHOR55,. + 0
13559	.type	p_l2p_ram_map, %object
13560	.size	p_l2p_ram_map, 8
13561p_l2p_ram_map:
13562	.zero	8
13563	.section	.bss.p_map_block_table,"aw",@nobits
13564	.align	3
13565	.set	.LANCHOR129,. + 0
13566	.type	p_map_block_table, %object
13567	.size	p_map_block_table, 8
13568p_map_block_table:
13569	.zero	8
13570	.section	.bss.p_map_block_valid_page_count,"aw",@nobits
13571	.align	3
13572	.set	.LANCHOR130,. + 0
13573	.type	p_map_block_valid_page_count, %object
13574	.size	p_map_block_valid_page_count, 8
13575p_map_block_valid_page_count:
13576	.zero	8
13577	.section	.bss.p_map_block_ver_table,"aw",@nobits
13578	.align	3
13579	.set	.LANCHOR135,. + 0
13580	.type	p_map_block_ver_table, %object
13581	.size	p_map_block_ver_table, 8
13582p_map_block_ver_table:
13583	.zero	8
13584	.section	.bss.p_map_region_ppn_table,"aw",@nobits
13585	.align	3
13586	.set	.LANCHOR134,. + 0
13587	.type	p_map_region_ppn_table, %object
13588	.size	p_map_region_ppn_table, 8
13589p_map_region_ppn_table:
13590	.zero	8
13591	.section	.bss.p_plane_order_table,"aw",@nobits
13592	.align	3
13593	.set	.LANCHOR13,. + 0
13594	.type	p_plane_order_table, %object
13595	.size	p_plane_order_table, 32
13596p_plane_order_table:
13597	.zero	32
13598	.section	.bss.p_swl_mul_table,"aw",@nobits
13599	.align	3
13600	.set	.LANCHOR126,. + 0
13601	.type	p_swl_mul_table, %object
13602	.size	p_swl_mul_table, 8
13603p_swl_mul_table:
13604	.zero	8
13605	.section	.bss.p_sys_data_buf,"aw",@nobits
13606	.align	3
13607	.set	.LANCHOR107,. + 0
13608	.type	p_sys_data_buf, %object
13609	.size	p_sys_data_buf, 8
13610p_sys_data_buf:
13611	.zero	8
13612	.section	.bss.p_sys_data_buf_1,"aw",@nobits
13613	.align	3
13614	.set	.LANCHOR123,. + 0
13615	.type	p_sys_data_buf_1, %object
13616	.size	p_sys_data_buf_1, 8
13617p_sys_data_buf_1:
13618	.zero	8
13619	.section	.bss.p_sys_spare_buf,"aw",@nobits
13620	.align	3
13621	.set	.LANCHOR108,. + 0
13622	.type	p_sys_spare_buf, %object
13623	.size	p_sys_spare_buf, 8
13624p_sys_spare_buf:
13625	.zero	8
13626	.section	.bss.p_valid_page_count_check_table,"aw",@nobits
13627	.align	3
13628	.set	.LANCHOR128,. + 0
13629	.type	p_valid_page_count_check_table, %object
13630	.size	p_valid_page_count_check_table, 8
13631p_valid_page_count_check_table:
13632	.zero	8
13633	.section	.bss.p_valid_page_count_table,"aw",@nobits
13634	.align	3
13635	.set	.LANCHOR42,. + 0
13636	.type	p_valid_page_count_table, %object
13637	.size	p_valid_page_count_table, 8
13638p_valid_page_count_table:
13639	.zero	8
13640	.section	.bss.p_vendor_block_table,"aw",@nobits
13641	.align	3
13642	.set	.LANCHOR36,. + 0
13643	.type	p_vendor_block_table, %object
13644	.size	p_vendor_block_table, 8
13645p_vendor_block_table:
13646	.zero	8
13647	.section	.bss.p_vendor_block_valid_page_count,"aw",@nobits
13648	.align	3
13649	.set	.LANCHOR131,. + 0
13650	.type	p_vendor_block_valid_page_count, %object
13651	.size	p_vendor_block_valid_page_count, 8
13652p_vendor_block_valid_page_count:
13653	.zero	8
13654	.section	.bss.p_vendor_block_ver_table,"aw",@nobits
13655	.align	3
13656	.set	.LANCHOR132,. + 0
13657	.type	p_vendor_block_ver_table, %object
13658	.size	p_vendor_block_ver_table, 8
13659p_vendor_block_ver_table:
13660	.zero	8
13661	.section	.bss.p_vendor_data_buf,"aw",@nobits
13662	.align	3
13663	.set	.LANCHOR124,. + 0
13664	.type	p_vendor_data_buf, %object
13665	.size	p_vendor_data_buf, 8
13666p_vendor_data_buf:
13667	.zero	8
13668	.section	.bss.p_vendor_region_ppn_table,"aw",@nobits
13669	.align	3
13670	.set	.LANCHOR133,. + 0
13671	.type	p_vendor_region_ppn_table, %object
13672	.size	p_vendor_region_ppn_table, 8
13673p_vendor_region_ppn_table:
13674	.zero	8
13675	.section	.bss.req_erase,"aw",@nobits
13676	.align	3
13677	.set	.LANCHOR111,. + 0
13678	.type	req_erase, %object
13679	.size	req_erase, 8
13680req_erase:
13681	.zero	8
13682	.section	.bss.req_gc,"aw",@nobits
13683	.align	3
13684	.set	.LANCHOR93,. + 0
13685	.type	req_gc, %object
13686	.size	req_gc, 8
13687req_gc:
13688	.zero	8
13689	.section	.bss.req_gc_dst,"aw",@nobits
13690	.align	3
13691	.set	.LANCHOR121,. + 0
13692	.type	req_gc_dst, %object
13693	.size	req_gc_dst, 8
13694req_gc_dst:
13695	.zero	8
13696	.section	.bss.req_prgm,"aw",@nobits
13697	.align	3
13698	.set	.LANCHOR122,. + 0
13699	.type	req_prgm, %object
13700	.size	req_prgm, 8
13701req_prgm:
13702	.zero	8
13703	.section	.bss.req_read,"aw",@nobits
13704	.align	3
13705	.set	.LANCHOR120,. + 0
13706	.type	req_read, %object
13707	.size	req_read, 8
13708req_read:
13709	.zero	8
13710	.section	.bss.req_sys,"aw",@nobits
13711	.align	3
13712	.set	.LANCHOR106,. + 0
13713	.type	req_sys, %object
13714	.size	req_sys, 32
13715req_sys:
13716	.zero	32
13717	.section	.data.ftl_gc_temp_block_bops_scan_page_addr,"aw",@progbits
13718	.align	1
13719	.set	.LANCHOR156,. + 0
13720	.type	ftl_gc_temp_block_bops_scan_page_addr, %object
13721	.size	ftl_gc_temp_block_bops_scan_page_addr, 2
13722ftl_gc_temp_block_bops_scan_page_addr:
13723	.hword	-1
13724	.section	.data.gFtlInitStatus,"aw",@progbits
13725	.align	2
13726	.set	.LANCHOR86,. + 0
13727	.type	gFtlInitStatus, %object
13728	.size	gFtlInitStatus, 4
13729gFtlInitStatus:
13730	.word	-1
13731	.section	.data.power_up_flag,"aw",@progbits
13732	.align	2
13733	.set	.LANCHOR177,. + 0
13734	.type	power_up_flag, %object
13735	.size	power_up_flag, 4
13736power_up_flag:
13737	.word	1
13738	.section	.rodata.FlashProgPages.str1.1,"aMS",@progbits,1
13739.LC79:
13740	.string	"prog read error: = %x\n"
13741.LC80:
13742	.string	"prog read s error: = %x %x %x\n"
13743.LC81:
13744	.string	"prog read d error: = %x %x %x\n"
13745	.section	.rodata.FtlBbmMapBadBlock.str1.1,"aMS",@progbits,1
13746.LC0:
13747	.string	"phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n"
13748	.section	.rodata.FtlBbmTblFlush.str1.1,"aMS",@progbits,1
13749.LC97:
13750	.string	"FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n"
13751.LC98:
13752	.string	"FtlBbmTblFlush error:%x\n"
13753.LC99:
13754	.string	"FtlBbmTblFlush error = %x error count = %d\n"
13755	.section	.rodata.FtlFreeSysBlkQueueOut.str1.1,"aMS",@progbits,1
13756.LC82:
13757	.string	"FtlFreeSysBlkQueueOut free count = %d\n"
13758.LC83:
13759	.string	"FtlFreeSysBlkQueueOut = %x, free count = %d, error\n"
13760	.section	.rodata.FtlGcFreeBadSuperBlk.str1.1,"aMS",@progbits,1
13761.LC100:
13762	.string	"FtlGcFreeBadSuperBlk 0x%x\n"
13763	.section	.rodata.FtlGcMarkBadPhyBlk.str1.1,"aMS",@progbits,1
13764.LC74:
13765	.string	"FtlGcMarkBadPhyBlk %d 0x%x\n"
13766	.section	.rodata.FtlGcRefreshBlock.str1.1,"aMS",@progbits,1
13767.LC73:
13768	.string	"FtlGcRefreshBlock  0x%x\n"
13769	.section	.rodata.FtlLoadEctTbl.str1.1,"aMS",@progbits,1
13770.LC103:
13771	.string	"no ect"
13772	.section	.rodata.FtlMapWritePage.str1.1,"aMS",@progbits,1
13773.LC89:
13774	.string	"FtlMapWritePage error = %x \n"
13775.LC90:
13776	.string	"FtlMapWritePage error = %x error count = %d\n"
13777	.section	.rodata.FtlMemInit.str1.1,"aMS",@progbits,1
13778.LC85:
13779	.string	"%s error allocating memory. return -1\n"
13780	.section	.rodata.FtlPrintInfo2buf.str1.1,"aMS",@progbits,1
13781.LC2:
13782	.string	"FLASH INFO:\n"
13783.LC3:
13784	.string	"Device Capacity: %d MB\n"
13785.LC4:
13786	.string	"FTL INFO:\n"
13787.LC5:
13788	.string	"g_MaxLpn = 0x%x\n"
13789.LC6:
13790	.string	"g_VaildLpn = 0x%x\n"
13791.LC7:
13792	.string	"read_page_count = 0x%x\n"
13793.LC8:
13794	.string	"discard_page_count = 0x%x\n"
13795.LC9:
13796	.string	"write_page_count = 0x%x\n"
13797.LC10:
13798	.string	"cache_write_count = 0x%x\n"
13799.LC11:
13800	.string	"l2p_write_count = 0x%x\n"
13801.LC12:
13802	.string	"gc_page_count = 0x%x\n"
13803.LC13:
13804	.string	"totle_write = %d MB\n"
13805.LC14:
13806	.string	"totle_read = %d MB\n"
13807.LC15:
13808	.string	"GSV = 0x%x\n"
13809.LC16:
13810	.string	"GDV = 0x%x\n"
13811.LC17:
13812	.string	"bad blk num = %d\n"
13813.LC18:
13814	.string	"free_superblocks = 0x%x\n"
13815.LC19:
13816	.string	"mlc_EC = 0x%x\n"
13817.LC20:
13818	.string	"slc_EC = 0x%x\n"
13819.LC21:
13820	.string	"avg_EC = 0x%x\n"
13821.LC22:
13822	.string	"sys_EC = 0x%x\n"
13823.LC23:
13824	.string	"max_EC = 0x%x\n"
13825.LC24:
13826	.string	"min_EC = 0x%x\n"
13827.LC25:
13828	.string	"PLT = 0x%x\n"
13829.LC26:
13830	.string	"POT = 0x%x\n"
13831.LC27:
13832	.string	"MaxSector = 0x%x\n"
13833.LC28:
13834	.string	"init_sys_blks_pp = 0x%x\n"
13835.LC29:
13836	.string	"sys_blks_pp = 0x%x\n"
13837.LC30:
13838	.string	"free sysblock = 0x%x\n"
13839.LC31:
13840	.string	"data_blks_pp = 0x%x\n"
13841.LC32:
13842	.string	"data_op_blks_pp = 0x%x\n"
13843.LC33:
13844	.string	"max_data_blks = 0x%x\n"
13845.LC34:
13846	.string	"Sys.id = 0x%x\n"
13847.LC35:
13848	.string	"Bbt.id = 0x%x\n"
13849.LC36:
13850	.string	"ACT.page = 0x%x\n"
13851.LC37:
13852	.string	"ACT.plane = 0x%x\n"
13853.LC38:
13854	.string	"ACT.id = 0x%x\n"
13855.LC39:
13856	.string	"ACT.mode = 0x%x\n"
13857.LC40:
13858	.string	"ACT.a_pages = 0x%x\n"
13859.LC41:
13860	.string	"ACT VPC = 0x%x\n"
13861.LC42:
13862	.string	"BUF.page = 0x%x\n"
13863.LC43:
13864	.string	"BUF.plane = 0x%x\n"
13865.LC44:
13866	.string	"BUF.id = 0x%x\n"
13867.LC45:
13868	.string	"BUF.mode = 0x%x\n"
13869.LC46:
13870	.string	"BUF.a_pages = 0x%x\n"
13871.LC47:
13872	.string	"BUF VPC = 0x%x\n"
13873.LC48:
13874	.string	"TMP.page = 0x%x\n"
13875.LC49:
13876	.string	"TMP.plane = 0x%x\n"
13877.LC50:
13878	.string	"TMP.id = 0x%x\n"
13879.LC51:
13880	.string	"TMP.mode = 0x%x\n"
13881.LC52:
13882	.string	"TMP.a_pages = 0x%x\n"
13883.LC53:
13884	.string	"GC.page = 0x%x\n"
13885.LC54:
13886	.string	"GC.plane = 0x%x\n"
13887.LC55:
13888	.string	"GC.id = 0x%x\n"
13889.LC56:
13890	.string	"GC.mode = 0x%x\n"
13891.LC57:
13892	.string	"GC.a_pages = 0x%x\n"
13893.LC58:
13894	.string	"WR_CHK = %x %x %x\n"
13895.LC59:
13896	.string	"Read Err Cnt = 0x%x\n"
13897.LC60:
13898	.string	"Prog Err Cnt = 0x%x\n"
13899.LC61:
13900	.string	"gc_free_blk_th= 0x%x\n"
13901.LC62:
13902	.string	"gc_merge_free_blk_th= 0x%x\n"
13903.LC63:
13904	.string	"gc_skip_write_count= 0x%x\n"
13905.LC64:
13906	.string	"gc_blk_index= 0x%x\n"
13907.LC65:
13908	.string	"free min EC= 0x%x\n"
13909.LC66:
13910	.string	"free max EC= 0x%x\n"
13911.LC67:
13912	.string	"GC__SB VPC = 0x%x\n"
13913.LC68:
13914	.string	"%d. [0x%x]=0x%x 0x%x  0x%x\n"
13915.LC69:
13916	.string	"free %d. [0x%x] 0x%x  0x%x\n"
13917	.section	.rodata.FtlProgPages.str1.1,"aMS",@progbits,1
13918.LC106:
13919	.string	"Ftlwrite decrement_vpc_count %x = %d\n"
13920	.section	.rodata.FtlRecoverySuperblock.str1.1,"aMS",@progbits,1
13921.LC102:
13922	.string	"spuer block %x vpn is 0\n "
13923	.section	.rodata.FtlVpcCheckAndModify.str1.1,"aMS",@progbits,1
13924.LC105:
13925	.string	"FtlCheckVpc %x = %x  %x\n"
13926	.section	.rodata.FtlVpcTblFlush.str1.1,"aMS",@progbits,1
13927.LC104:
13928	.string	"FtlVpcTblFlush error = %x error count = %d\n"
13929	.section	.rodata.FtlWrite.str1.1,"aMS",@progbits,1
13930.LC108:
13931	.string	"FtlWrite: lpa error:%x %x\n"
13932	.section	.rodata.GetSwlReplaceBlock.str1.1,"aMS",@progbits,1
13933.LC72:
13934	.string	"swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n"
13935	.section	.rodata.INSERT_DATA_LIST.str1.1,"aMS",@progbits,1
13936.LC1:
13937	.string	"\n!!!!! error @ func:%s - line:%d\n"
13938	.section	.rodata.__func__.6109,"a",@progbits
13939	.align	3
13940	.set	.LANCHOR138,. + 0
13941	.type	__func__.6109, %object
13942	.size	__func__.6109, 11
13943__func__.6109:
13944	.string	"FtlMemInit"
13945	.section	.rodata.__func__.6233,"a",@progbits
13946	.align	3
13947	.set	.LANCHOR170,. + 0
13948	.type	__func__.6233, %object
13949	.size	__func__.6233, 13
13950__func__.6233:
13951	.string	"FtlProgPages"
13952	.section	.rodata.__func__.6261,"a",@progbits
13953	.align	3
13954	.set	.LANCHOR178,. + 0
13955	.type	__func__.6261, %object
13956	.size	__func__.6261, 9
13957__func__.6261:
13958	.string	"FtlWrite"
13959	.section	.rodata.__func__.6407,"a",@progbits
13960	.align	3
13961	.set	.LANCHOR139,. + 0
13962	.type	__func__.6407, %object
13963	.size	__func__.6407, 14
13964__func__.6407:
13965	.string	"FtlBbt2Bitmap"
13966	.section	.rodata.__func__.6450,"a",@progbits
13967	.align	3
13968	.set	.LANCHOR164,. + 0
13969	.type	__func__.6450, %object
13970	.size	__func__.6450, 11
13971__func__.6450:
13972	.string	"FtlLoadBbt"
13973	.section	.rodata.__func__.6567,"a",@progbits
13974	.align	3
13975	.set	.LANCHOR49,. + 0
13976	.type	__func__.6567, %object
13977	.size	__func__.6567, 17
13978__func__.6567:
13979	.string	"INSERT_FREE_LIST"
13980	.section	.rodata.__func__.6572,"a",@progbits
13981	.align	3
13982	.set	.LANCHOR46,. + 0
13983	.type	__func__.6572, %object
13984	.size	__func__.6572, 17
13985__func__.6572:
13986	.string	"INSERT_DATA_LIST"
13987	.section	.rodata.__func__.6603,"a",@progbits
13988	.align	3
13989	.set	.LANCHOR50,. + 0
13990	.type	__func__.6603, %object
13991	.size	__func__.6603, 17
13992__func__.6603:
13993	.string	"List_remove_node"
13994	.section	.rodata.__func__.6635,"a",@progbits
13995	.align	3
13996	.set	.LANCHOR54,. + 0
13997	.type	__func__.6635, %object
13998	.size	__func__.6635, 22
13999__func__.6635:
14000	.string	"List_update_data_list"
14001	.section	.rodata.__func__.6644,"a",@progbits
14002	.align	3
14003	.set	.LANCHOR140,. + 0
14004	.type	__func__.6644, %object
14005	.size	__func__.6644, 16
14006__func__.6644:
14007	.string	"load_l2p_region"
14008	.section	.rodata.__func__.6677,"a",@progbits
14009	.align	3
14010	.set	.LANCHOR116,. + 0
14011	.type	__func__.6677, %object
14012	.size	__func__.6677, 26
14013__func__.6677:
14014	.string	"ftl_map_blk_alloc_new_blk"
14015	.section	.rodata.__func__.6688,"a",@progbits
14016	.align	3
14017	.set	.LANCHOR143,. + 0
14018	.type	__func__.6688, %object
14019	.size	__func__.6688, 15
14020__func__.6688:
14021	.string	"ftl_map_blk_gc"
14022	.section	.rodata.__func__.6702,"a",@progbits
14023	.align	3
14024	.set	.LANCHOR141,. + 0
14025	.type	__func__.6702, %object
14026	.size	__func__.6702, 31
14027__func__.6702:
14028	.string	"Ftl_write_map_blk_to_last_page"
14029	.section	.rodata.__func__.6716,"a",@progbits
14030	.align	3
14031	.set	.LANCHOR142,. + 0
14032	.type	__func__.6716, %object
14033	.size	__func__.6716, 16
14034__func__.6716:
14035	.string	"FtlMapWritePage"
14036	.section	.rodata.__func__.6741,"a",@progbits
14037	.align	3
14038	.set	.LANCHOR57,. + 0
14039	.type	__func__.6741, %object
14040	.size	__func__.6741, 22
14041__func__.6741:
14042	.string	"select_l2p_ram_region"
14043	.section	.rodata.__func__.6758,"a",@progbits
14044	.align	3
14045	.set	.LANCHOR145,. + 0
14046	.type	__func__.6758, %object
14047	.size	__func__.6758, 9
14048__func__.6758:
14049	.string	"log2phys"
14050	.section	.rodata.__func__.6831,"a",@progbits
14051	.align	3
14052	.set	.LANCHOR166,. + 0
14053	.type	__func__.6831, %object
14054	.size	__func__.6831, 15
14055__func__.6831:
14056	.string	"FtlVpcTblFlush"
14057	.section	.rodata.__func__.6853,"a",@progbits
14058	.align	3
14059	.set	.LANCHOR148,. + 0
14060	.type	__func__.6853, %object
14061	.size	__func__.6853, 14
14062__func__.6853:
14063	.string	"FtlScanSysBlk"
14064	.section	.rodata.__func__.6910,"a",@progbits
14065	.align	3
14066	.set	.LANCHOR180,. + 0
14067	.type	__func__.6910, %object
14068	.size	__func__.6910, 15
14069__func__.6910:
14070	.string	"FtlLoadSysInfo"
14071	.section	.rodata.__func__.6973,"a",@progbits
14072	.align	3
14073	.set	.LANCHOR146,. + 0
14074	.type	__func__.6973, %object
14075	.size	__func__.6973, 16
14076__func__.6973:
14077	.string	"FtlReUsePrevPpa"
14078	.section	.rodata.__func__.7007,"a",@progbits
14079	.align	3
14080	.set	.LANCHOR160,. + 0
14081	.type	__func__.7007, %object
14082	.size	__func__.7007, 22
14083__func__.7007:
14084	.string	"FtlRecoverySuperblock"
14085	.section	.rodata.__func__.7064,"a",@progbits
14086	.align	3
14087	.set	.LANCHOR60,. + 0
14088	.type	__func__.7064, %object
14089	.size	__func__.7064, 16
14090__func__.7064:
14091	.string	"make_superblock"
14092	.section	.rodata.__func__.7085,"a",@progbits
14093	.align	3
14094	.set	.LANCHOR154,. + 0
14095	.type	__func__.7085, %object
14096	.size	__func__.7085, 18
14097__func__.7085:
14098	.string	"SupperBlkListInit"
14099	.section	.rodata.__func__.7110,"a",@progbits
14100	.align	3
14101	.set	.LANCHOR168,. + 0
14102	.type	__func__.7110, %object
14103	.size	__func__.7110, 21
14104__func__.7110:
14105	.string	"FtlVpcCheckAndModify"
14106	.section	.rodata.__func__.7126,"a",@progbits
14107	.align	3
14108	.set	.LANCHOR155,. + 0
14109	.type	__func__.7126, %object
14110	.size	__func__.7126, 14
14111__func__.7126:
14112	.string	"ftl_check_vpc"
14113	.section	.rodata.__func__.7211,"a",@progbits
14114	.align	3
14115	.set	.LANCHOR157,. + 0
14116	.type	__func__.7211, %object
14117	.size	__func__.7211, 25
14118__func__.7211:
14119	.string	"allocate_data_superblock"
14120	.section	.rodata.__func__.7232,"a",@progbits
14121	.align	3
14122	.set	.LANCHOR169,. + 0
14123	.type	__func__.7232, %object
14124	.size	__func__.7232, 29
14125__func__.7232:
14126	.string	"allocate_new_data_superblock"
14127	.section	.rodata.__func__.7239,"a",@progbits
14128	.align	3
14129	.set	.LANCHOR88,. + 0
14130	.type	__func__.7239, %object
14131	.size	__func__.7239, 19
14132__func__.7239:
14133	.string	"get_new_active_ppa"
14134	.section	.rodata.__func__.7252,"a",@progbits
14135	.align	3
14136	.set	.LANCHOR158,. + 0
14137	.type	__func__.7252, %object
14138	.size	__func__.7252, 16
14139__func__.7252:
14140	.string	"update_vpc_list"
14141	.section	.rodata.__func__.7259,"a",@progbits
14142	.align	3
14143	.set	.LANCHOR159,. + 0
14144	.type	__func__.7259, %object
14145	.size	__func__.7259, 20
14146__func__.7259:
14147	.string	"decrement_vpc_count"
14148	.section	.rodata.__func__.7329,"a",@progbits
14149	.align	3
14150	.set	.LANCHOR171,. + 0
14151	.type	__func__.7329, %object
14152	.size	__func__.7329, 19
14153__func__.7329:
14154	.string	"FtlGcFreeTempBlock"
14155	.section	.rodata.__func__.7435,"a",@progbits
14156	.align	3
14157	.set	.LANCHOR175,. + 0
14158	.type	__func__.7435, %object
14159	.size	__func__.7435, 23
14160__func__.7435:
14161	.string	"rk_ftl_garbage_collect"
14162	.section	.rodata.__func__.7702,"a",@progbits
14163	.align	3
14164	.set	.LANCHOR104,. + 0
14165	.type	__func__.7702, %object
14166	.size	__func__.7702, 15
14167__func__.7702:
14168	.string	"FlashReadPages"
14169	.section	.rodata.__func__.7719,"a",@progbits
14170	.align	3
14171	.set	.LANCHOR109,. + 0
14172	.type	__func__.7719, %object
14173	.size	__func__.7719, 15
14174__func__.7719:
14175	.string	"FlashProgPages"
14176	.section	.rodata.decrement_vpc_count.str1.1,"aMS",@progbits,1
14177.LC101:
14178	.string	"decrement_vpc_count %x = %d\n"
14179	.section	.rodata.ftl_check_vpc.str1.1,"aMS",@progbits,1
14180.LC94:
14181	.string	"...%s enter...\n"
14182.LC95:
14183	.string	"FtlCheckVpc2 %x = %x  %x\n"
14184.LC96:
14185	.string	"free blk vpc error %x = %x  %x\n"
14186	.section	.rodata.ftl_map_blk_alloc_new_blk.str1.1,"aMS",@progbits,1
14187.LC84:
14188	.string	"FtlFreeSysBlkQueueOut = %x, free count = %d\n"
14189	.section	.rodata.ftl_scan_all_data.str1.1,"aMS",@progbits,1
14190.LC91:
14191	.string	"ftl_scan_all_data = %x\n"
14192.LC92:
14193	.string	"scan lpa = %x ppa= %x\n"
14194.LC93:
14195	.string	"lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\n"
14196	.section	.rodata.load_l2p_region.str1.1,"aMS",@progbits,1
14197.LC86:
14198	.string	"region_id = %x phyAddr = %x\n"
14199.LC87:
14200	.string	"spare:"
14201.LC88:
14202	.string	"map_ppn:"
14203	.section	.rodata.rk_ftl_garbage_collect.str1.1,"aMS",@progbits,1
14204.LC107:
14205	.string	"SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n"
14206	.section	.rodata.rknand_print_hex.str1.1,"aMS",@progbits,1
14207.LC75:
14208	.string	"%s 0x%x:"
14209.LC76:
14210	.string	"%x "
14211.LC77:
14212	.string	"%02x "
14213.LC78:
14214	.string	"\n"
14215	.section	.rodata.rknand_proc_ftlread.str1.1,"aMS",@progbits,1
14216.LC70:
14217	.string	"SFTL version: 5.0.44 20180713"
14218.LC71:
14219	.string	"%s\n"
14220	.section	.rodata.sftl_write.str1.1,"aMS",@progbits,1
14221.LC109:
14222	.string	"write_idblock fail! %x %x %x %x\n"
14223	.hidden	free
14224