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