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