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