xref: /OK3568_Linux_fs/kernel/drivers/rkflash/rk_sftl_arm_v8.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1/* SPDX-License-Identifier: GPL-2.0 */
2
3/* Copyright (c) 2018-2021 Rockchip Electronics Co. Ltd.
4 * date: 2022-08-15
5 */
6	.arch armv8-a
7	.file	"rk_sftl.c"
8	.text
9	.align	2
10	.type	uaccess_disable_not_uao, %function
11uaccess_disable_not_uao:
12	hint	25 // paciasp
13#APP
14// 271 "./arch/arm64/include/asm/uaccess.h" 1
15	.if 1 == 1
16661:
17	nop
18662:
19.pushsection .altinstructions,"a"
20 .word 661b - .
21 .word 663f - .
22 .hword 10
23 .byte 662b-661b
24 .byte 664f-663f
25.popsection
26.subsection 1
27663:
28	.inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!1) << 8))
29
30664:
31	.org	. - (664b-663b) + (662b-661b)
32	.org	. - (662b-661b) + (664b-663b)
33	.previous
34.endif
35
36// 0 "" 2
37#NO_APP
38	hint	29 // autiasp
39	ret
40	.size	uaccess_disable_not_uao, .-uaccess_disable_not_uao
41	.align	2
42	.type	uaccess_enable_not_uao, %function
43uaccess_enable_not_uao:
44	hint	25 // paciasp
45#APP
46// 276 "./arch/arm64/include/asm/uaccess.h" 1
47	.if 1 == 1
48661:
49	nop
50662:
51.pushsection .altinstructions,"a"
52 .word 661b - .
53 .word 663f - .
54 .hword 10
55 .byte 662b-661b
56 .byte 664f-663f
57.popsection
58.subsection 1
59663:
60	.inst (0xd500401f | ((0) << 16 | (4) << 5) | ((!!0) << 8))
61
62664:
63	.org	. - (664b-663b) + (662b-661b)
64	.org	. - (662b-661b) + (664b-663b)
65	.previous
66.endif
67
68// 0 "" 2
69#NO_APP
70	hint	29 // autiasp
71	ret
72	.size	uaccess_enable_not_uao, .-uaccess_enable_not_uao
73	.section	.rodata.str1.1,"aMS",@progbits,1
74.LC0:
75	.string	"Buffer overflow detected (%d < %lu)!\n"
76	.text
77	.align	2
78	.type	copy_overflow, %function
79copy_overflow:
80	hint	25 // paciasp
81	stp	x29, x30, [sp, -16]!
82	mov	x2, x1
83	mov	x29, sp
84	mov	w1, w0
85	adrp	x0, .LC0
86	add	x0, x0, :lo12:.LC0
87	bl	__warn_printk
88#APP
89// 147 "./include/linux/thread_info.h" 1
90	.pushsection __bug_table,"aw"; .align 2; 14470: .long 14471f - 14470b; .pushsection .rodata.str,"aMS",@progbits,1; 14472: .string "include/linux/thread_info.h"; .popsection; .long 14472b - 14470b; .short 147; .short (1 << 0)|((1 << 3) | ((9) << 8)); .popsection; 14471: brk 0x800
91// 0 "" 2
92#NO_APP
93	ldp	x29, x30, [sp], 16
94	hint	29 // autiasp
95	ret
96	.size	copy_overflow, .-copy_overflow
97	.align	2
98	.type	__range_ok, %function
99__range_ok:
100#APP
101// 19 "./arch/arm64/include/asm/current.h" 1
102	mrs x3, sp_el0
103// 0 "" 2
104#NO_APP
105	ldr	w4, [x3, 44]
106	hint	25 // paciasp
107	ldr	x2, [x3, 8]
108	tbnz	x4, 21, .L8
109	ldr	x3, [x3]
110	tst	w3, 67108864
111	beq	.L9
112.L8:
113	sbfx	x3, x0, 0, 56
114	and	x0, x0, x3
115.L9:
116#APP
117// 79 "./arch/arm64/include/asm/uaccess.h" 1
118		adds	x0, x0, x1
119	csel	x2, xzr, x2, hi
120	csinv	x0, x0, xzr, cc
121	sbcs	xzr, x0, x2
122	cset	x0, ls
123
124// 0 "" 2
125#NO_APP
126	hint	29 // autiasp
127	ret
128	.size	__range_ok, .-__range_ok
129	.align	2
130	.type	l2p_addr_tran.isra.0, %function
131l2p_addr_tran.isra.0:
132	.section	__patchable_function_entries,"aw",@progbits
133	.align	3
134	.8byte	.LPFE1
135	.text
136.LPFE1:
137	nop
138	nop
139	adrp	x4, .LANCHOR0
140	add	x4, x4, :lo12:.LANCHOR0
141	hint	25 // paciasp
142	ldrh	w3, [x4, 8]
143	ldrh	w5, [x4, 10]
144	ldrh	w4, [x4, 14]
145	cmp	w4, 4
146	bne	.L15
147	lsr	w3, w3, 1
148	ubfiz	w5, w5, 1, 15
149.L15:
150	ubfx	x4, x0, 10, 16
151	ubfx	x6, x0, 10, 16
152	and	w0, w0, 1023
153	hint	29 // autiasp
154	udiv	w4, w4, w3
155	msub	w3, w3, w4, w6
156	madd	w3, w3, w5, w0
157	str	w3, [x1]
158	str	w4, [x2]
159	ret
160	.size	l2p_addr_tran.isra.0, .-l2p_addr_tran.isra.0
161	.align	2
162	.type	_copy_from_user, %function
163_copy_from_user:
164	hint	25 // paciasp
165	stp	x29, x30, [sp, -48]!
166	mov	x29, sp
167	stp	x19, x20, [sp, 16]
168	mov	x20, x1
169	mov	x19, x2
170	mov	x1, x2
171	str	x21, [sp, 32]
172	mov	x21, x0
173	mov	x0, x20
174	bl	__range_ok
175	cbz	x0, .L20
176	bl	uaccess_enable_not_uao
177	sbfx	x0, x20, 0, 56
178#APP
179// 19 "./arch/arm64/include/asm/current.h" 1
180	mrs x1, sp_el0
181// 0 "" 2
182#NO_APP
183	and	x0, x20, x0
184	ldr	x2, [x1, 8]
185#APP
186// 289 "./arch/arm64/include/asm/uaccess.h" 1
187		bics	xzr, x0, x2
188	csel	x1, x20, xzr, eq
189
190// 0 "" 2
191// 297 "./arch/arm64/include/asm/uaccess.h" 1
192	hint #20
193// 0 "" 2
194#NO_APP
195	mov	x2, x19
196	mov	x0, x21
197	bl	__arch_copy_from_user
198	mov	x20, x0
199	bl	uaccess_disable_not_uao
200	cbz	x20, .L17
201.L18:
202	sub	x19, x19, x20
203	mov	x2, x20
204	add	x0, x21, x19
205	mov	w1, 0
206	bl	memset
207.L17:
208	mov	x0, x20
209	ldp	x19, x20, [sp, 16]
210	ldr	x21, [sp, 32]
211	ldp	x29, x30, [sp], 48
212	hint	29 // autiasp
213	ret
214.L20:
215	mov	x20, x19
216	b	.L18
217	.size	_copy_from_user, .-_copy_from_user
218	.section	.rodata.str1.1
219.LC1:
220	.string	"SFTL version: 5.0.58 20220814"
221.LC2:
222	.string	"\n%s\n"
223.LC3:
224	.string	"act blk: %x %x %x %x %x %x\n"
225.LC4:
226	.string	"buf blk: %x %x %x %x %x %x\n"
227.LC5:
228	.string	"tmp blk: %x %x %x %x %x %x\n"
229.LC6:
230	.string	"gc blk: %x %x %x %x %x %x\n"
231.LC7:
232	.string	"free blk: %x %x %x\n"
233	.text
234	.align	2
235	.global	ftl_print_sblk_info
236	.type	ftl_print_sblk_info, %function
237ftl_print_sblk_info:
238	hint	34 // bti c
239	.section	__patchable_function_entries
240	.align	3
241	.8byte	.LPFE2
242	.text
243.LPFE2:
244	nop
245	nop
246	hint	25 // paciasp
247	stp	x29, x30, [sp, -32]!
248	adrp	x1, .LC1
249	mov	x29, sp
250	str	x19, [sp, 16]
251	adrp	x19, .LANCHOR0
252	add	x19, x19, :lo12:.LANCHOR0
253	add	x1, x1, :lo12:.LC1
254	adrp	x0, .LC2
255	add	x0, x0, :lo12:.LC2
256	bl	sftl_printk
257	ldrh	w1, [x19, 24]
258	ldr	x0, [x19, 72]
259	ldrh	w5, [x19, 28]
260	ldrb	w4, [x19, 32]
261	ldrh	w6, [x0, x1, lsl 1]
262	adrp	x0, .LC3
263	ldrb	w3, [x19, 30]
264	add	x0, x0, :lo12:.LC3
265	ldrh	w2, [x19, 26]
266	ldrh	w1, [x19, 24]
267	bl	sftl_printk
268	ldrh	w1, [x19, 80]
269	ldr	x0, [x19, 72]
270	ldrh	w5, [x19, 84]
271	ldrb	w4, [x19, 88]
272	ldrh	w6, [x0, x1, lsl 1]
273	adrp	x0, .LC4
274	ldrb	w3, [x19, 86]
275	add	x0, x0, :lo12:.LC4
276	ldrh	w2, [x19, 82]
277	ldrh	w1, [x19, 80]
278	bl	sftl_printk
279	ldrh	w1, [x19, 128]
280	ldr	x0, [x19, 72]
281	ldrh	w5, [x19, 132]
282	ldrb	w4, [x19, 136]
283	ldrh	w6, [x0, x1, lsl 1]
284	adrp	x0, .LC5
285	ldrb	w3, [x19, 134]
286	add	x0, x0, :lo12:.LC5
287	ldrh	w2, [x19, 130]
288	ldrh	w1, [x19, 128]
289	bl	sftl_printk
290	ldrh	w1, [x19, 176]
291	ldr	x0, [x19, 72]
292	ldrh	w5, [x19, 180]
293	ldrb	w4, [x19, 184]
294	ldrh	w6, [x0, x1, lsl 1]
295	adrp	x0, .LC6
296	ldrb	w3, [x19, 182]
297	add	x0, x0, :lo12:.LC6
298	ldrh	w2, [x19, 178]
299	ldrh	w1, [x19, 176]
300	bl	sftl_printk
301	ldrh	w3, [x19, 224]
302	adrp	x0, .LC7
303	ldrh	w2, [x19, 226]
304	add	x0, x0, :lo12:.LC7
305	ldrh	w1, [x19, 228]
306	bl	sftl_printk
307	ldr	x19, [sp, 16]
308	ldp	x29, x30, [sp], 32
309	hint	29 // autiasp
310	ret
311	.size	ftl_print_sblk_info, .-ftl_print_sblk_info
312	.align	2
313	.global	Ftl_log2
314	.type	Ftl_log2, %function
315Ftl_log2:
316	hint	34 // bti c
317	.section	__patchable_function_entries
318	.align	3
319	.8byte	.LPFE3
320	.text
321.LPFE3:
322	nop
323	nop
324	mov	w2, 1
325	mov	w1, 0
326	hint	25 // paciasp
327.L28:
328	cmp	w2, w0
329	bls	.L29
330	sub	w0, w1, #1
331	hint	29 // autiasp
332	ret
333.L29:
334	add	w1, w1, 1
335	lsl	w2, w2, 1
336	and	w1, w1, 65535
337	b	.L28
338	.size	Ftl_log2, .-Ftl_log2
339	.align	2
340	.global	FtlPrintInfo
341	.type	FtlPrintInfo, %function
342FtlPrintInfo:
343	hint	34 // bti c
344	.section	__patchable_function_entries
345	.align	3
346	.8byte	.LPFE4
347	.text
348.LPFE4:
349	nop
350	nop
351	hint	25 // paciasp
352	hint	29 // autiasp
353	ret
354	.size	FtlPrintInfo, .-FtlPrintInfo
355	.align	2
356	.global	FtlSysBlkNumInit
357	.type	FtlSysBlkNumInit, %function
358FtlSysBlkNumInit:
359	hint	34 // bti c
360	.section	__patchable_function_entries
361	.align	3
362	.8byte	.LPFE5
363	.text
364.LPFE5:
365	nop
366	nop
367	and	w0, w0, 65535
368	mov	w1, 24
369	cmp	w0, 24
370	hint	25 // paciasp
371	csel	w0, w0, w1, cs
372	hint	29 // autiasp
373	and	w1, w0, 65535
374	adrp	x0, .LANCHOR0
375	add	x0, x0, :lo12:.LANCHOR0
376	ldrh	w2, [x0, 236]
377	ldrh	w3, [x0, 246]
378	str	w1, [x0, 232]
379	mul	w2, w2, w1
380	sub	w1, w3, w1
381	strh	w1, [x0, 244]
382	ldr	w1, [x0, 252]
383	str	w2, [x0, 240]
384	sub	w2, w1, w2
385	str	w2, [x0, 248]
386	mov	w0, 0
387	ret
388	.size	FtlSysBlkNumInit, .-FtlSysBlkNumInit
389	.align	2
390	.global	FtlConstantsInit
391	.type	FtlConstantsInit, %function
392FtlConstantsInit:
393	hint	34 // bti c
394	.section	__patchable_function_entries
395	.align	3
396	.8byte	.LPFE6
397	.text
398.LPFE6:
399	nop
400	nop
401	hint	25 // paciasp
402	stp	x29, x30, [sp, -80]!
403	mov	x29, sp
404	stp	x19, x20, [sp, 16]
405	adrp	x19, .LANCHOR0
406	add	x19, x19, :lo12:.LANCHOR0
407	stp	x21, x22, [sp, 32]
408	mov	x22, x0
409	stp	x23, x24, [sp, 48]
410	ldrh	w2, [x0, 14]
411	str	x25, [sp, 64]
412	ldrh	w1, [x0]
413	ldrh	w20, [x0, 2]
414	ldrh	w3, [x0, 4]
415	ldrh	w0, [x0, 6]
416	strh	w0, [x19, 246]
417	strh	w1, [x19, 256]
418	strh	w20, [x19, 258]
419	strh	w3, [x19, 260]
420	strh	w2, [x19, 262]
421	cmp	w2, 4
422	bne	.L36
423	lsr	w0, w0, 1
424	strh	w0, [x19, 246]
425	mov	w0, 8
426	strh	w0, [x19, 262]
427.L37:
428	add	x0, x19, 264
429	mov	x24, 0
430.L38:
431	strb	w24, [x24, x0]
432	add	x24, x24, 1
433	cmp	x24, 32
434	bne	.L38
435	cmp	w1, 1
436	mov	w0, 5
437	csel	w0, w0, w1, ne
438	strh	w0, [x19, 296]
439	mov	w0, 640
440	ldrh	w21, [x19, 246]
441	strh	w0, [x19, 300]
442	ldrh	w0, [x19, 260]
443	strh	wzr, [x19, 298]
444	mul	w20, w20, w0
445	mul	w0, w0, w21
446	and	w20, w20, 65535
447	strh	w20, [x19, 236]
448	and	w0, w0, 65535
449	strh	w0, [x19, 302]
450	bl	Ftl_log2
451	ldrh	w25, [x22, 12]
452	ldrh	w23, [x19, 262]
453	strh	w0, [x19, 304]
454	strh	w25, [x19, 306]
455	mul	w0, w20, w25
456	strh	w25, [x19, 308]
457	strh	w0, [x19, 310]
458	mov	w0, w23
459	bl	Ftl_log2
460	and	w3, w0, 65535
461	ubfiz	w1, w23, 9, 7
462	strh	w1, [x19, 314]
463	and	w1, w23, 127
464	mul	w2, w20, w21
465	mul	w23, w23, w25
466	str	w2, [x19, 252]
467	ubfiz	w1, w1, 1, 15
468	strh	w1, [x19, 316]
469	ldrh	w1, [x22, 20]
470	lsl	w21, w21, 6
471	strh	w1, [x19, 318]
472	mov	w1, 5120
473	mul	w2, w2, w23
474	strh	w0, [x19, 312]
475	sdiv	w1, w1, w23
476	asr	w2, w2, 11
477	str	w2, [x19, 320]
478	mov	w2, 4
479	cmp	w1, 4
480	csel	w1, w1, w2, gt
481	mov	w2, 640
482	asr	w2, w2, w0
483	add	w0, w3, 9
484	cmp	w20, 1
485	add	w2, w2, 2
486	asr	w0, w21, w0
487	and	w21, w0, 65535
488	strh	w0, [x19, 328]
489	strh	w1, [x19, 324]
490	mul	w0, w20, w21
491	strh	w2, [x19, 326]
492	str	w0, [x19, 332]
493	and	w0, w1, 65535
494	udiv	w0, w0, w20
495	add	w0, w0, w21
496	add	w1, w0, 12
497	add	w0, w0, 8
498	csel	w0, w0, w1, ne
499	str	w0, [x19, 232]
500	bl	FtlSysBlkNumInit
501	strh	w24, [x19, 342]
502	ldr	w0, [x19, 232]
503	ldr	w1, [x19, 248]
504	str	w0, [x19, 336]
505	ldrh	w0, [x19, 306]
506	str	wzr, [x19, 344]
507	ldp	x21, x22, [sp, 32]
508	mul	w0, w0, w1
509	ldrh	w1, [x19, 312]
510	ldp	x23, x24, [sp, 48]
511	add	w1, w1, 9
512	lsl	w0, w0, 2
513	ldr	x25, [sp, 64]
514	lsr	w0, w0, w1
515	add	w0, w0, 2
516	strh	w0, [x19, 340]
517	ldrh	w0, [x19, 324]
518	add	w0, w0, 3
519	strh	w0, [x19, 324]
520	ldr	w0, [x19, 332]
521	add	w0, w0, 3
522	str	w0, [x19, 332]
523	mov	w0, 0
524	ldp	x19, x20, [sp, 16]
525	ldp	x29, x30, [sp], 80
526	hint	29 // autiasp
527	ret
528.L36:
529	cmp	w2, 8
530	bne	.L37
531	cmp	w3, 1
532	bne	.L37
533	lsr	w0, w0, 1
534	strh	w0, [x19, 246]
535	mov	w0, 2
536	strh	w0, [x19, 260]
537	b	.L37
538	.size	FtlConstantsInit, .-FtlConstantsInit
539	.align	2
540	.global	IsBlkInVendorPart
541	.type	IsBlkInVendorPart, %function
542IsBlkInVendorPart:
543	hint	34 // bti c
544	.section	__patchable_function_entries
545	.align	3
546	.8byte	.LPFE7
547	.text
548.LPFE7:
549	nop
550	nop
551	adrp	x1, .LANCHOR0
552	add	x1, x1, :lo12:.LANCHOR0
553	hint	25 // paciasp
554	ldrh	w2, [x1, 348]
555	cbz	w2, .L50
556	ldr	x2, [x1, 352]
557	and	w0, w0, 65535
558	ldrh	w3, [x1, 324]
559	mov	x1, 0
560	sub	x2, x2, #2
561.L48:
562	cmp	w3, w1, uxth
563	bhi	.L49
564.L50:
565	mov	w0, 0
566.L46:
567	hint	29 // autiasp
568	ret
569.L49:
570	add	x1, x1, 1
571	ldrh	w4, [x2, x1, lsl 1]
572	cmp	w4, w0
573	bne	.L48
574	mov	w0, 1
575	b	.L46
576	.size	IsBlkInVendorPart, .-IsBlkInVendorPart
577	.align	2
578	.global	FtlCacheWriteBack
579	.type	FtlCacheWriteBack, %function
580FtlCacheWriteBack:
581	hint	34 // bti c
582	.section	__patchable_function_entries
583	.align	3
584	.8byte	.LPFE8
585	.text
586.LPFE8:
587	nop
588	nop
589	mov	w0, 0
590	hint	25 // paciasp
591	hint	29 // autiasp
592	ret
593	.size	FtlCacheWriteBack, .-FtlCacheWriteBack
594	.align	2
595	.global	sftl_get_density
596	.type	sftl_get_density, %function
597sftl_get_density:
598	hint	34 // bti c
599	.section	__patchable_function_entries
600	.align	3
601	.8byte	.LPFE9
602	.text
603.LPFE9:
604	nop
605	nop
606	adrp	x0, .LANCHOR0+344
607	hint	25 // paciasp
608	hint	29 // autiasp
609	ldr	w0, [x0, #:lo12:.LANCHOR0+344]
610	ret
611	.size	sftl_get_density, .-sftl_get_density
612	.section	.rodata.str1.1
613.LC8:
614	.string	"phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\n"
615	.text
616	.align	2
617	.global	FtlBbmMapBadBlock
618	.type	FtlBbmMapBadBlock, %function
619FtlBbmMapBadBlock:
620	hint	34 // bti c
621	.section	__patchable_function_entries
622	.align	3
623	.8byte	.LPFE10
624	.text
625.LPFE10:
626	nop
627	nop
628	hint	25 // paciasp
629	stp	x29, x30, [sp, -32]!
630	and	w1, w0, 65535
631	mov	x29, sp
632	str	x19, [sp, 16]
633	adrp	x19, .LANCHOR0
634	add	x19, x19, :lo12:.LANCHOR0
635	mov	w4, 1
636	add	x19, x19, 360
637	ldrh	w3, [x19, -58]
638	udiv	w2, w1, w3
639	msub	w3, w2, w3, w1
640	add	x0, x19, w2, uxth 3
641	ubfx	x5, x3, 5, 11
642	lsl	w4, w4, w3
643	ldr	x0, [x0, 32]
644	lsl	x5, x5, 2
645	and	w3, w3, 65535
646	ldr	w6, [x0, x5]
647	orr	w4, w4, w6
648	str	w4, [x0, x5]
649	adrp	x0, .LC8
650	add	x0, x0, :lo12:.LC8
651	bl	sftl_printk
652	ldrh	w0, [x19, 6]
653	add	w0, w0, 1
654	strh	w0, [x19, 6]
655	mov	w0, 0
656	ldr	x19, [sp, 16]
657	ldp	x29, x30, [sp], 32
658	hint	29 // autiasp
659	ret
660	.size	FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
661	.align	2
662	.global	FtlBbmIsBadBlock
663	.type	FtlBbmIsBadBlock, %function
664FtlBbmIsBadBlock:
665	hint	34 // bti c
666	.section	__patchable_function_entries
667	.align	3
668	.8byte	.LPFE11
669	.text
670.LPFE11:
671	nop
672	nop
673	adrp	x2, .LANCHOR0
674	add	x3, x2, :lo12:.LANCHOR0
675	and	w0, w0, 65535
676	hint	25 // paciasp
677	hint	29 // autiasp
678	ldrh	w1, [x3, 302]
679	udiv	w2, w0, w1
680	msub	w1, w2, w1, w0
681	add	x2, x3, w2, uxth 3
682	ldr	x0, [x2, 392]
683	ubfx	x3, x1, 5, 11
684	ldr	w0, [x0, x3, lsl 2]
685	lsr	w0, w0, w1
686	and	w0, w0, 1
687	ret
688	.size	FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
689	.align	2
690	.global	FtlBbtInfoPrint
691	.type	FtlBbtInfoPrint, %function
692FtlBbtInfoPrint:
693	hint	34 // bti c
694	.section	__patchable_function_entries
695	.align	3
696	.8byte	.LPFE12
697	.text
698.LPFE12:
699	nop
700	nop
701	hint	25 // paciasp
702	hint	29 // autiasp
703	ret
704	.size	FtlBbtInfoPrint, .-FtlBbtInfoPrint
705	.align	2
706	.global	FtlBbtCalcTotleCnt
707	.type	FtlBbtCalcTotleCnt, %function
708FtlBbtCalcTotleCnt:
709	hint	34 // bti c
710	.section	__patchable_function_entries
711	.align	3
712	.8byte	.LPFE13
713	.text
714.LPFE13:
715	nop
716	nop
717	hint	25 // paciasp
718	stp	x29, x30, [sp, -48]!
719	adrp	x0, .LANCHOR0
720	mov	x29, sp
721	add	x0, x0, :lo12:.LANCHOR0
722	stp	x19, x20, [sp, 16]
723	mov	w20, 0
724	mov	w19, 0
725	str	x21, [sp, 32]
726	ldrh	w21, [x0, 302]
727	ldrh	w0, [x0, 258]
728	mul	w21, w21, w0
729.L64:
730	cmp	w19, w21
731	blt	.L66
732	mov	w0, w20
733	ldp	x19, x20, [sp, 16]
734	ldr	x21, [sp, 32]
735	ldp	x29, x30, [sp], 48
736	hint	29 // autiasp
737	ret
738.L66:
739	mov	w0, w19
740	bl	FtlBbmIsBadBlock
741	cbz	w0, .L65
742	add	w20, w20, 1
743	and	w20, w20, 65535
744.L65:
745	add	w19, w19, 1
746	and	w19, w19, 65535
747	b	.L64
748	.size	FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
749	.align	2
750	.global	V2P_block
751	.type	V2P_block, %function
752V2P_block:
753	hint	34 // bti c
754	.section	__patchable_function_entries
755	.align	3
756	.8byte	.LPFE14
757	.text
758.LPFE14:
759	nop
760	nop
761	adrp	x4, .LANCHOR0
762	add	x4, x4, :lo12:.LANCHOR0
763	and	w0, w0, 65535
764	and	w1, w1, 65535
765	hint	25 // paciasp
766	hint	29 // autiasp
767	ldrh	w2, [x4, 260]
768	ldrh	w4, [x4, 302]
769	udiv	w3, w0, w2
770	msub	w0, w3, w2, w0
771	madd	w2, w2, w1, w0
772	madd	w0, w3, w4, w2
773	ret
774	.size	V2P_block, .-V2P_block
775	.align	2
776	.global	P2V_plane
777	.type	P2V_plane, %function
778P2V_plane:
779	hint	34 // bti c
780	.section	__patchable_function_entries
781	.align	3
782	.8byte	.LPFE15
783	.text
784.LPFE15:
785	nop
786	nop
787	adrp	x2, .LANCHOR0
788	add	x2, x2, :lo12:.LANCHOR0
789	and	w0, w0, 65535
790	hint	25 // paciasp
791	hint	29 // autiasp
792	ldrh	w1, [x2, 260]
793	ldrh	w3, [x2, 302]
794	udiv	w2, w0, w1
795	udiv	w3, w0, w3
796	msub	w0, w2, w1, w0
797	madd	w0, w1, w3, w0
798	ret
799	.size	P2V_plane, .-P2V_plane
800	.align	2
801	.global	P2V_block_in_plane
802	.type	P2V_block_in_plane, %function
803P2V_block_in_plane:
804	hint	34 // bti c
805	.section	__patchable_function_entries
806	.align	3
807	.8byte	.LPFE16
808	.text
809.LPFE16:
810	nop
811	nop
812	adrp	x2, .LANCHOR0
813	add	x2, x2, :lo12:.LANCHOR0
814	and	w3, w0, 65535
815	hint	25 // paciasp
816	hint	29 // autiasp
817	ldrh	w0, [x2, 302]
818	udiv	w1, w3, w0
819	msub	w0, w1, w0, w3
820	ldrh	w1, [x2, 260]
821	and	w0, w0, 65535
822	udiv	w0, w0, w1
823	ret
824	.size	P2V_block_in_plane, .-P2V_block_in_plane
825	.align	2
826	.global	ftl_cmp_data_ver
827	.type	ftl_cmp_data_ver, %function
828ftl_cmp_data_ver:
829	hint	34 // bti c
830	.section	__patchable_function_entries
831	.align	3
832	.8byte	.LPFE17
833	.text
834.LPFE17:
835	nop
836	nop
837	cmp	w0, w1
838	mov	w2, -2147483648
839	hint	25 // paciasp
840	bls	.L78
841	sub	w1, w0, w1
842	cmp	w1, w2
843	cset	w0, ls
844.L77:
845	hint	29 // autiasp
846	ret
847.L78:
848	sub	w1, w1, w0
849	cmp	w1, w2
850	cset	w0, hi
851	b	.L77
852	.size	ftl_cmp_data_ver, .-ftl_cmp_data_ver
853	.align	2
854	.global	FtlFreeSysBlkQueueEmpty
855	.type	FtlFreeSysBlkQueueEmpty, %function
856FtlFreeSysBlkQueueEmpty:
857	hint	34 // bti c
858	.section	__patchable_function_entries
859	.align	3
860	.8byte	.LPFE18
861	.text
862.LPFE18:
863	nop
864	nop
865	adrp	x0, .LANCHOR0+462
866	hint	25 // paciasp
867	hint	29 // autiasp
868	ldrh	w0, [x0, #:lo12:.LANCHOR0+462]
869	cmp	w0, 0
870	cset	w0, eq
871	ret
872	.size	FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
873	.align	2
874	.global	FtlFreeSysBlkQueueFull
875	.type	FtlFreeSysBlkQueueFull, %function
876FtlFreeSysBlkQueueFull:
877	hint	34 // bti c
878	.section	__patchable_function_entries
879	.align	3
880	.8byte	.LPFE19
881	.text
882.LPFE19:
883	nop
884	nop
885	adrp	x0, .LANCHOR0+462
886	hint	25 // paciasp
887	hint	29 // autiasp
888	ldrh	w0, [x0, #:lo12:.LANCHOR0+462]
889	cmp	w0, 1024
890	cset	w0, eq
891	ret
892	.size	FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
893	.align	2
894	.global	FtlFreeSysBLkSort
895	.type	FtlFreeSysBLkSort, %function
896FtlFreeSysBLkSort:
897	hint	34 // bti c
898	.section	__patchable_function_entries
899	.align	3
900	.8byte	.LPFE20
901	.text
902.LPFE20:
903	nop
904	nop
905	adrp	x0, .LANCHOR0
906	add	x0, x0, :lo12:.LANCHOR0
907	hint	25 // paciasp
908	ldrh	w1, [x0, 462]
909	cbz	w1, .L85
910	ldrh	w5, [x0, 2540]
911	add	x4, x0, 456
912	ldrh	w2, [x4, 2]
913	mov	w6, 0
914	ldrh	w1, [x4, 4]
915	and	w5, w5, 31
916	mov	w3, 0
917.L88:
918	cmp	w3, w5
919	bne	.L89
920	cbz	w6, .L85
921	strh	w2, [x0, 458]
922	strh	w1, [x0, 460]
923.L85:
924	hint	29 // autiasp
925	ret
926.L89:
927	add	x6, x4, w2, sxtw 1
928	add	w3, w3, 1
929	add	w2, w2, 1
930	and	w3, w3, 65535
931	and	w2, w2, 1023
932	ldrh	w7, [x6, 8]
933	add	x6, x4, w1, sxtw 1
934	add	w1, w1, 1
935	and	w1, w1, 1023
936	strh	w7, [x6, 8]
937	mov	w6, 1
938	b	.L88
939	.size	FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
940	.align	2
941	.global	IsInFreeQueue
942	.type	IsInFreeQueue, %function
943IsInFreeQueue:
944	hint	34 // bti c
945	.section	__patchable_function_entries
946	.align	3
947	.8byte	.LPFE21
948	.text
949.LPFE21:
950	nop
951	nop
952	adrp	x1, .LANCHOR0
953	add	x1, x1, :lo12:.LANCHOR0
954	hint	25 // paciasp
955	ldrh	w3, [x1, 462]
956	cmp	w3, 1024
957	beq	.L99
958	ldrh	w5, [x1, 458]
959	add	x4, x1, 456
960	and	w0, w0, 65535
961	mov	w2, 0
962.L97:
963	cmp	w3, w2
964	bhi	.L98
965.L99:
966	mov	w0, 0
967.L95:
968	hint	29 // autiasp
969	ret
970.L98:
971	add	w1, w5, w2
972	ubfiz	x1, x1, 1, 10
973	add	x1, x4, x1
974	ldrh	w1, [x1, 8]
975	cmp	w1, w0
976	beq	.L100
977	add	w2, w2, 1
978	b	.L97
979.L100:
980	mov	w0, 1
981	b	.L95
982	.size	IsInFreeQueue, .-IsInFreeQueue
983	.align	2
984	.global	insert_data_list
985	.type	insert_data_list, %function
986insert_data_list:
987	hint	34 // bti c
988	.section	__patchable_function_entries
989	.align	3
990	.8byte	.LPFE22
991	.text
992.LPFE22:
993	nop
994	nop
995	adrp	x1, .LANCHOR0
996	add	x1, x1, :lo12:.LANCHOR0
997	hint	25 // paciasp
998	ldrh	w2, [x1, 244]
999	cmp	w2, w0, uxth
1000	bls	.L104
1001	and	w3, w0, 65535
1002	mov	w10, 6
1003	ldr	x7, [x1, 2560]
1004	mov	w0, -1
1005	umull	x6, w3, w10
1006	add	x4, x7, x6
1007	str	w0, [x7, x6]
1008	ldr	x2, [x1, 2568]
1009	cbnz	x2, .L105
1010.L117:
1011	str	x4, [x1, 2568]
1012	b	.L104
1013.L105:
1014	ldr	x11, [x1, 72]
1015	ubfiz	x5, x3, 1, 16
1016	ldrh	w8, [x4, 4]
1017	mov	w12, 0
1018	ldr	x9, [x1, 2560]
1019	cmp	w8, 0
1020	ldrh	w5, [x11, x5]
1021	mov	w15, 65535
1022	ldrh	w14, [x1, 244]
1023	mul	w5, w5, w8
1024	mov	x8, -6148914691236517206
1025	movk	x8, 0xaaab, lsl 0
1026	csel	w5, w5, w0, ne
1027	sub	x0, x2, x9
1028	asr	x0, x0, 1
1029	mul	x0, x0, x8
1030	and	w0, w0, 65535
1031.L110:
1032	add	w8, w12, 1
1033	and	w12, w8, 65535
1034	cmp	w14, w8, uxth
1035	bcc	.L104
1036	cmp	w3, w0
1037	beq	.L104
1038	ldrh	w13, [x2, 4]
1039	cbz	w13, .L108
1040	ubfiz	x8, x0, 1, 16
1041	ldrh	w8, [x11, x8]
1042	mul	w8, w8, w13
1043	cmp	w8, w5
1044	bcs	.L108
1045	ldrh	w8, [x2]
1046	cmp	w8, w15
1047	bne	.L109
1048	strh	w0, [x4, 2]
1049	strh	w3, [x2]
1050	str	x4, [x1, 2576]
1051.L104:
1052	mov	w0, 0
1053	hint	29 // autiasp
1054	ret
1055.L109:
1056	umaddl	x2, w8, w10, x9
1057	mov	w0, w8
1058	b	.L110
1059.L108:
1060	strh	w0, [x7, x6]
1061	ldrh	w0, [x2, 2]
1062	strh	w0, [x4, 2]
1063	ldr	x5, [x1, 2568]
1064	cmp	x2, x5
1065	bne	.L111
1066	strh	w3, [x2, 2]
1067	b	.L117
1068.L111:
1069	mov	w4, 6
1070	ldr	x1, [x1, 2560]
1071	umull	x0, w0, w4
1072	strh	w3, [x1, x0]
1073	strh	w3, [x2, 2]
1074	b	.L104
1075	.size	insert_data_list, .-insert_data_list
1076	.section	.rodata.str1.1
1077.LC9:
1078	.string	"\n!!!!! error @ func:%s - line:%d\n"
1079	.text
1080	.align	2
1081	.global	INSERT_DATA_LIST
1082	.type	INSERT_DATA_LIST, %function
1083INSERT_DATA_LIST:
1084	hint	34 // bti c
1085	.section	__patchable_function_entries
1086	.align	3
1087	.8byte	.LPFE23
1088	.text
1089.LPFE23:
1090	nop
1091	nop
1092	hint	25 // paciasp
1093	stp	x29, x30, [sp, -16]!
1094	mov	x29, sp
1095	bl	insert_data_list
1096	adrp	x1, .LANCHOR0
1097	add	x1, x1, :lo12:.LANCHOR0
1098	ldrh	w0, [x1, 2584]
1099	add	w0, w0, 1
1100	and	w0, w0, 65535
1101	strh	w0, [x1, 2584]
1102	ldrh	w1, [x1, 244]
1103	cmp	w1, w0
1104	bcs	.L118
1105	adrp	x1, .LANCHOR1
1106	adrp	x0, .LC9
1107	add	x1, x1, :lo12:.LANCHOR1
1108	add	x0, x0, :lo12:.LC9
1109	mov	w2, 214
1110	bl	sftl_printk
1111.L118:
1112	ldp	x29, x30, [sp], 16
1113	hint	29 // autiasp
1114	ret
1115	.size	INSERT_DATA_LIST, .-INSERT_DATA_LIST
1116	.align	2
1117	.global	insert_free_list
1118	.type	insert_free_list, %function
1119insert_free_list:
1120	hint	34 // bti c
1121	.section	__patchable_function_entries
1122	.align	3
1123	.8byte	.LPFE24
1124	.text
1125.LPFE24:
1126	nop
1127	nop
1128	mov	w11, 65535
1129	hint	25 // paciasp
1130	cmp	w11, w0, uxth
1131	beq	.L122
1132	and	w3, w0, 65535
1133	adrp	x1, .LANCHOR0
1134	add	x1, x1, :lo12:.LANCHOR0
1135	mov	w9, 6
1136	mov	w0, -1
1137	umull	x5, w3, w9
1138	ldr	x6, [x1, 2560]
1139	add	x4, x6, x5
1140	str	w0, [x6, x5]
1141	ldr	x0, [x1, 2592]
1142	cbnz	x0, .L123
1143.L129:
1144	str	x4, [x1, 2592]
1145	b	.L122
1146.L123:
1147	ldr	x10, [x1, 2600]
1148	ubfiz	x2, x3, 1, 16
1149	ldr	x8, [x1, 2560]
1150	mov	x7, -6148914691236517206
1151	ldrh	w12, [x10, x2]
1152	movk	x7, 0xaaab, lsl 0
1153	sub	x2, x0, x8
1154	asr	x2, x2, 1
1155	mul	x2, x2, x7
1156	and	w2, w2, 65535
1157.L126:
1158	ubfiz	x7, x2, 1, 16
1159	ldrh	w7, [x10, x7]
1160	cmp	w7, w12
1161	bcs	.L124
1162	ldrh	w7, [x0]
1163	cmp	w7, w11
1164	bne	.L125
1165	strh	w2, [x4, 2]
1166	strh	w3, [x0]
1167.L122:
1168	mov	w0, 0
1169	hint	29 // autiasp
1170	ret
1171.L125:
1172	umaddl	x0, w7, w9, x8
1173	mov	w2, w7
1174	b	.L126
1175.L124:
1176	ldrh	w7, [x0, 2]
1177	strh	w7, [x4, 2]
1178	strh	w2, [x6, x5]
1179	ldr	x2, [x1, 2592]
1180	cmp	x2, x0
1181	bne	.L127
1182	strh	w3, [x0, 2]
1183	b	.L129
1184.L127:
1185	ldrh	w2, [x0, 2]
1186	mov	w4, 6
1187	ldr	x1, [x1, 2560]
1188	umull	x2, w2, w4
1189	strh	w3, [x1, x2]
1190	strh	w3, [x0, 2]
1191	b	.L122
1192	.size	insert_free_list, .-insert_free_list
1193	.align	2
1194	.global	INSERT_FREE_LIST
1195	.type	INSERT_FREE_LIST, %function
1196INSERT_FREE_LIST:
1197	hint	34 // bti c
1198	.section	__patchable_function_entries
1199	.align	3
1200	.8byte	.LPFE25
1201	.text
1202.LPFE25:
1203	nop
1204	nop
1205	hint	25 // paciasp
1206	stp	x29, x30, [sp, -16]!
1207	mov	x29, sp
1208	bl	insert_free_list
1209	adrp	x1, .LANCHOR0
1210	add	x1, x1, :lo12:.LANCHOR0
1211	ldrh	w0, [x1, 228]
1212	add	w0, w0, 1
1213	and	w0, w0, 65535
1214	strh	w0, [x1, 228]
1215	ldrh	w1, [x1, 244]
1216	cmp	w1, w0
1217	bcs	.L130
1218	adrp	x1, .LANCHOR1
1219	add	x1, x1, :lo12:.LANCHOR1
1220	adrp	x0, .LC9
1221	add	x1, x1, 17
1222	add	x0, x0, :lo12:.LC9
1223	mov	w2, 207
1224	bl	sftl_printk
1225.L130:
1226	ldp	x29, x30, [sp], 16
1227	hint	29 // autiasp
1228	ret
1229	.size	INSERT_FREE_LIST, .-INSERT_FREE_LIST
1230	.align	2
1231	.global	List_remove_node
1232	.type	List_remove_node, %function
1233List_remove_node:
1234	hint	34 // bti c
1235	.section	__patchable_function_entries
1236	.align	3
1237	.8byte	.LPFE26
1238	.text
1239.LPFE26:
1240	nop
1241	nop
1242	hint	25 // paciasp
1243	stp	x29, x30, [sp, -64]!
1244	and	w1, w1, 65535
1245	mov	x29, sp
1246	stp	x19, x20, [sp, 16]
1247	adrp	x20, .LANCHOR0
1248	add	x20, x20, :lo12:.LANCHOR0
1249	stp	x21, x22, [sp, 32]
1250	mov	x21, x0
1251	mov	w0, 6
1252	ldr	x22, [x20, 2560]
1253	umull	x19, w1, w0
1254	str	x23, [sp, 48]
1255	mov	w0, 65535
1256	add	x23, x22, x19
1257	ldrh	w1, [x23, 2]
1258	cmp	w1, w0
1259	bne	.L134
1260	ldr	x0, [x21]
1261	cmp	x23, x0
1262	bne	.L135
1263.L138:
1264	ldrh	w0, [x22, x19]
1265	mov	w1, 65535
1266	cmp	w0, w1
1267	bne	.L142
1268	str	xzr, [x21]
1269.L140:
1270	mov	w0, -1
1271	str	w0, [x22, x19]
1272	mov	w0, 0
1273	ldp	x19, x20, [sp, 16]
1274	ldp	x21, x22, [sp, 32]
1275	ldr	x23, [sp, 48]
1276	ldp	x29, x30, [sp], 64
1277	hint	29 // autiasp
1278	ret
1279.L135:
1280	adrp	x1, .LANCHOR1
1281	add	x1, x1, :lo12:.LANCHOR1
1282	adrp	x0, .LC9
1283	add	x1, x1, 34
1284	add	x0, x0, :lo12:.LC9
1285	mov	w2, 372
1286	bl	sftl_printk
1287.L134:
1288	ldr	x0, [x21]
1289	ldrh	w1, [x22, x19]
1290	cmp	x0, x23
1291	beq	.L138
1292	ldrh	w0, [x23, 2]
1293	mov	w2, 65535
1294	cmp	w1, w2
1295	bne	.L141
1296	cmp	w0, w1
1297	beq	.L140
1298	mov	w1, 6
1299	mov	w2, -1
1300	umull	x0, w0, w1
1301	ldr	x1, [x20, 2560]
1302	strh	w2, [x1, x0]
1303	b	.L140
1304.L142:
1305	ldr	x1, [x20, 2560]
1306	mov	w2, 6
1307	umaddl	x0, w0, w2, x1
1308	mov	w1, -1
1309	str	x0, [x21]
1310	strh	w1, [x0, 2]
1311	b	.L140
1312.L141:
1313	ldr	x3, [x20, 2560]
1314	mov	w2, 6
1315	umaddl	x1, w1, w2, x3
1316	strh	w0, [x1, 2]
1317	umull	x0, w0, w2
1318	ldr	x1, [x20, 2560]
1319	ldrh	w3, [x22, x19]
1320	strh	w3, [x1, x0]
1321	b	.L140
1322	.size	List_remove_node, .-List_remove_node
1323	.align	2
1324	.global	List_pop_index_node
1325	.type	List_pop_index_node, %function
1326List_pop_index_node:
1327	hint	34 // bti c
1328	.section	__patchable_function_entries
1329	.align	3
1330	.8byte	.LPFE27
1331	.text
1332.LPFE27:
1333	nop
1334	nop
1335	ldr	x2, [x0]
1336	cbz	x2, .L150
1337	hint	25 // paciasp
1338	stp	x29, x30, [sp, -32]!
1339	adrp	x3, .LANCHOR0+2560
1340	mov	x29, sp
1341	str	x19, [sp, 16]
1342	and	w1, w1, 65535
1343	ldr	x19, [x3, #:lo12:.LANCHOR0+2560]
1344	mov	w4, 65535
1345	mov	w5, 6
1346.L147:
1347	cbz	w1, .L148
1348	ldrh	w3, [x2]
1349	cmp	w3, w4
1350	bne	.L149
1351.L148:
1352	sub	x19, x2, x19
1353	mov	x2, -6148914691236517206
1354	movk	x2, 0xaaab, lsl 0
1355	asr	x19, x19, 1
1356	mul	x19, x19, x2
1357	and	w19, w19, 65535
1358	mov	w1, w19
1359	bl	List_remove_node
1360	mov	w0, w19
1361	ldr	x19, [sp, 16]
1362	ldp	x29, x30, [sp], 32
1363	hint	29 // autiasp
1364	ret
1365.L149:
1366	sub	w1, w1, #1
1367	umaddl	x2, w3, w5, x19
1368	and	w1, w1, 65535
1369	b	.L147
1370.L150:
1371	mov	w0, 65535
1372	ret
1373	.size	List_pop_index_node, .-List_pop_index_node
1374	.align	2
1375	.global	List_pop_head_node
1376	.type	List_pop_head_node, %function
1377List_pop_head_node:
1378	hint	34 // bti c
1379	.section	__patchable_function_entries
1380	.align	3
1381	.8byte	.LPFE28
1382	.text
1383.LPFE28:
1384	nop
1385	nop
1386	hint	25 // paciasp
1387	stp	x29, x30, [sp, -16]!
1388	mov	w1, 0
1389	mov	x29, sp
1390	bl	List_pop_index_node
1391	ldp	x29, x30, [sp], 16
1392	hint	29 // autiasp
1393	ret
1394	.size	List_pop_head_node, .-List_pop_head_node
1395	.align	2
1396	.global	List_get_gc_head_node
1397	.type	List_get_gc_head_node, %function
1398List_get_gc_head_node:
1399	hint	34 // bti c
1400	.section	__patchable_function_entries
1401	.align	3
1402	.8byte	.LPFE29
1403	.text
1404.LPFE29:
1405	nop
1406	nop
1407	and	w2, w0, 65535
1408	adrp	x0, .LANCHOR0
1409	add	x0, x0, :lo12:.LANCHOR0
1410	hint	25 // paciasp
1411	ldr	x1, [x0, 2568]
1412	cbz	x1, .L165
1413	mov	w4, 6
1414	ldr	x3, [x0, 2560]
1415	mov	w0, 65535
1416.L162:
1417	cbz	w2, .L163
1418	ldrh	w1, [x1]
1419	cmp	w1, w0
1420	bne	.L164
1421.L160:
1422	hint	29 // autiasp
1423	ret
1424.L164:
1425	sub	w2, w2, #1
1426	umaddl	x1, w1, w4, x3
1427	and	w2, w2, 65535
1428	b	.L162
1429.L165:
1430	mov	w0, 65535
1431	b	.L160
1432.L163:
1433	sub	x0, x1, x3
1434	mov	x1, -6148914691236517206
1435	movk	x1, 0xaaab, lsl 0
1436	asr	x0, x0, 1
1437	mul	x0, x0, x1
1438	and	w0, w0, 65535
1439	b	.L160
1440	.size	List_get_gc_head_node, .-List_get_gc_head_node
1441	.align	2
1442	.global	List_update_data_list
1443	.type	List_update_data_list, %function
1444List_update_data_list:
1445	hint	34 // bti c
1446	.section	__patchable_function_entries
1447	.align	3
1448	.8byte	.LPFE30
1449	.text
1450.LPFE30:
1451	nop
1452	nop
1453	hint	25 // paciasp
1454	stp	x29, x30, [sp, -64]!
1455	mov	x29, sp
1456	stp	x19, x20, [sp, 16]
1457	adrp	x19, .LANCHOR0
1458	add	x19, x19, :lo12:.LANCHOR0
1459	stp	x21, x22, [sp, 32]
1460	ldrh	w1, [x19, 24]
1461	stp	x23, x24, [sp, 48]
1462	cmp	w1, w0, uxth
1463	beq	.L169
1464	and	w20, w0, 65535
1465	ldrh	w0, [x19, 80]
1466	cmp	w0, w20
1467	beq	.L169
1468	ldrh	w0, [x19, 128]
1469	cmp	w0, w20
1470	beq	.L169
1471	mov	w22, 6
1472	ldr	x24, [x19, 2560]
1473	umull	x22, w20, w22
1474	ldr	x0, [x19, 2568]
1475	add	x23, x24, x22
1476	cmp	x23, x0
1477	beq	.L169
1478	ldr	x1, [x19, 72]
1479	ubfiz	x0, x20, 1, 16
1480	ldrh	w21, [x1, x0]
1481	mov	w1, 65535
1482	ldrh	w0, [x23, 4]
1483	cmp	w0, 0
1484	mul	w21, w21, w0
1485	ldrh	w0, [x23, 2]
1486	csinv	w21, w21, wzr, ne
1487	cmp	w0, w1
1488	bne	.L172
1489	ldrh	w1, [x24, x22]
1490	cmp	w1, w0
1491	bne	.L172
1492	adrp	x1, .LANCHOR1
1493	add	x1, x1, :lo12:.LANCHOR1
1494	adrp	x0, .LC9
1495	add	x1, x1, 51
1496	add	x0, x0, :lo12:.LC9
1497	mov	w2, 463
1498	bl	sftl_printk
1499.L172:
1500	ldrh	w0, [x23, 2]
1501	mov	w1, 65535
1502	cmp	w0, w1
1503	bne	.L173
1504	ldrh	w1, [x24, x22]
1505	cmp	w1, w0
1506	beq	.L169
1507.L173:
1508	mov	w1, 6
1509	mov	x2, -6148914691236517206
1510	movk	x2, 0xaaab, lsl 0
1511	umull	x0, w0, w1
1512	asr	x1, x0, 1
1513	mul	x1, x1, x2
1514	ldr	x2, [x19, 72]
1515	ldrh	w1, [x2, x1, lsl 1]
1516	ldr	x2, [x19, 2560]
1517	add	x0, x2, x0
1518	ldrh	w2, [x0, 4]
1519	cmp	w2, 0
1520	mul	w0, w1, w2
1521	csinv	w0, w0, wzr, ne
1522	cmp	w21, w0
1523	bcs	.L169
1524	mov	w1, w20
1525	add	x0, x19, 2568
1526	bl	List_remove_node
1527	ldrh	w0, [x19, 2584]
1528	cbnz	w0, .L175
1529	adrp	x1, .LANCHOR1
1530	add	x1, x1, :lo12:.LANCHOR1
1531	adrp	x0, .LC9
1532	add	x1, x1, 51
1533	add	x0, x0, :lo12:.LC9
1534	mov	w2, 474
1535	bl	sftl_printk
1536.L175:
1537	ldrh	w0, [x19, 2584]
1538	sub	w0, w0, #1
1539	strh	w0, [x19, 2584]
1540	mov	w0, w20
1541	bl	INSERT_DATA_LIST
1542.L169:
1543	mov	w0, 0
1544	ldp	x19, x20, [sp, 16]
1545	ldp	x21, x22, [sp, 32]
1546	ldp	x23, x24, [sp, 48]
1547	ldp	x29, x30, [sp], 64
1548	hint	29 // autiasp
1549	ret
1550	.size	List_update_data_list, .-List_update_data_list
1551	.align	2
1552	.global	select_l2p_ram_region
1553	.type	select_l2p_ram_region, %function
1554select_l2p_ram_region:
1555	hint	34 // bti c
1556	.section	__patchable_function_entries
1557	.align	3
1558	.8byte	.LPFE31
1559	.text
1560.LPFE31:
1561	nop
1562	nop
1563	hint	25 // paciasp
1564	stp	x29, x30, [sp, -32]!
1565	adrp	x2, .LANCHOR0
1566	mov	x29, sp
1567	add	x2, x2, :lo12:.LANCHOR0
1568	mov	x3, 0
1569	str	x19, [sp, 16]
1570	mov	w5, 65535
1571	ldr	x0, [x2, 2608]
1572	ldrh	w1, [x2, 342]
1573	sub	x4, x0, #16
1574.L180:
1575	and	w19, w3, 65535
1576	cmp	w1, w3, uxth
1577	bhi	.L182
1578	mov	w19, w1
1579	add	x7, x0, 4
1580	mov	x3, 0
1581	mov	w5, -2147483648
1582.L183:
1583	and	w6, w3, 65535
1584	cmp	w1, w3, uxth
1585	bhi	.L185
1586	cmp	w1, w19
1587	bhi	.L181
1588	mov	w19, w1
1589	ldrh	w5, [x2, 2616]
1590	mov	w3, -1
1591	mov	w2, 0
1592.L186:
1593	cmp	w1, w2
1594	bne	.L188
1595	cmp	w1, w19
1596	bhi	.L181
1597	adrp	x1, .LANCHOR1
1598	add	x1, x1, :lo12:.LANCHOR1
1599	add	x1, x1, 73
1600	mov	w2, 796
1601	adrp	x0, .LC9
1602	add	x0, x0, :lo12:.LC9
1603	bl	sftl_printk
1604	b	.L181
1605.L182:
1606	add	x3, x3, 1
1607	lsl	x6, x3, 4
1608	ldrh	w6, [x4, x6]
1609	cmp	w6, w5
1610	bne	.L180
1611.L181:
1612	mov	w0, w19
1613	ldr	x19, [sp, 16]
1614	ldp	x29, x30, [sp], 32
1615	hint	29 // autiasp
1616	ret
1617.L185:
1618	lsl	x4, x3, 4
1619	ldr	w4, [x7, x4]
1620	tbnz	w4, #31, .L184
1621	cmp	w4, w5
1622	bcs	.L184
1623	mov	w5, w4
1624	mov	w19, w6
1625.L184:
1626	add	x3, x3, 1
1627	b	.L183
1628.L188:
1629	ldr	w4, [x0, 4]
1630	cmp	w4, w3
1631	bcs	.L187
1632	ldrh	w6, [x0]
1633	cmp	w6, w5
1634	csel	w3, w3, w4, eq
1635	csel	w19, w19, w2, eq
1636.L187:
1637	add	w2, w2, 1
1638	add	x0, x0, 16
1639	and	w2, w2, 65535
1640	b	.L186
1641	.size	select_l2p_ram_region, .-select_l2p_ram_region
1642	.align	2
1643	.global	FtlUpdateVaildLpn
1644	.type	FtlUpdateVaildLpn, %function
1645FtlUpdateVaildLpn:
1646	hint	34 // bti c
1647	.section	__patchable_function_entries
1648	.align	3
1649	.8byte	.LPFE32
1650	.text
1651.LPFE32:
1652	nop
1653	nop
1654	adrp	x1, .LANCHOR0
1655	add	x1, x1, :lo12:.LANCHOR0
1656	hint	25 // paciasp
1657	ldrh	w2, [x1, 2618]
1658	cmp	w2, 4
1659	bhi	.L191
1660	cbnz	w0, .L191
1661	add	w2, w2, 1
1662	strh	w2, [x1, 2618]
1663.L190:
1664	hint	29 // autiasp
1665	ret
1666.L191:
1667	ldrh	w4, [x1, 244]
1668	mov	x0, 0
1669	ldr	x5, [x1, 72]
1670	mov	w6, 65535
1671	strh	wzr, [x1, 2618]
1672	str	wzr, [x1, 2620]
1673.L192:
1674	cmp	w4, w0, uxth
1675	bls	.L190
1676	ldrh	w3, [x5, x0, lsl 1]
1677	cmp	w3, w6
1678	beq	.L193
1679	ldr	w2, [x1, 2620]
1680	add	w2, w2, w3
1681	str	w2, [x1, 2620]
1682.L193:
1683	add	x0, x0, 1
1684	b	.L192
1685	.size	FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
1686	.align	2
1687	.global	ftl_sb_update_avl_pages
1688	.type	ftl_sb_update_avl_pages, %function
1689ftl_sb_update_avl_pages:
1690	hint	34 // bti c
1691	.section	__patchable_function_entries
1692	.align	3
1693	.8byte	.LPFE33
1694	.text
1695.LPFE33:
1696	nop
1697	nop
1698	adrp	x3, .LANCHOR0
1699	add	x3, x3, :lo12:.LANCHOR0
1700	and	w1, w1, 65535
1701	and	w2, w2, 65535
1702	mov	w6, 65535
1703	strh	wzr, [x0, 4]
1704	ldrh	w5, [x3, 236]
1705	hint	25 // paciasp
1706.L198:
1707	cmp	w5, w2, uxth
1708	bhi	.L200
1709	ldrh	w2, [x3, 306]
1710	add	x4, x0, 16
1711	mov	w6, 65535
1712	sub	w2, w2, w1
1713	mov	x1, 0
1714	sub	w2, w2, #1
1715	sxth	w2, w2
1716.L201:
1717	cmp	w5, w1, uxth
1718	bhi	.L203
1719	hint	29 // autiasp
1720	ret
1721.L200:
1722	add	x4, x0, w2, sxtw 1
1723	ldrh	w4, [x4, 16]
1724	cmp	w4, w6
1725	beq	.L199
1726	ldrh	w4, [x0, 4]
1727	add	w4, w4, 1
1728	strh	w4, [x0, 4]
1729.L199:
1730	add	w2, w2, 1
1731	b	.L198
1732.L203:
1733	ldrh	w3, [x4, x1, lsl 1]
1734	cmp	w3, w6
1735	beq	.L202
1736	ldrh	w3, [x0, 4]
1737	add	w3, w2, w3
1738	strh	w3, [x0, 4]
1739.L202:
1740	add	x1, x1, 1
1741	b	.L201
1742	.size	ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
1743	.align	2
1744	.global	FtlSlcSuperblockCheck
1745	.type	FtlSlcSuperblockCheck, %function
1746FtlSlcSuperblockCheck:
1747	hint	34 // bti c
1748	.section	__patchable_function_entries
1749	.align	3
1750	.8byte	.LPFE34
1751	.text
1752.LPFE34:
1753	nop
1754	nop
1755	ldrh	w1, [x0, 4]
1756	hint	25 // paciasp
1757	cbz	w1, .L205
1758	ldrh	w1, [x0]
1759	mov	w2, 65535
1760	cmp	w1, w2
1761	beq	.L205
1762	ldrb	w1, [x0, 6]
1763	adrp	x3, .LANCHOR0+236
1764	add	x1, x1, 8
1765	ldrh	w3, [x3, #:lo12:.LANCHOR0+236]
1766	ldrh	w1, [x0, x1, lsl 1]
1767.L208:
1768	cmp	w1, w2
1769	beq	.L210
1770.L205:
1771	hint	29 // autiasp
1772	ret
1773.L210:
1774	ldrb	w1, [x0, 6]
1775	add	w1, w1, 1
1776	and	w1, w1, 255
1777	strb	w1, [x0, 6]
1778	cmp	w1, w3
1779	bne	.L209
1780	ldrh	w1, [x0, 2]
1781	strb	wzr, [x0, 6]
1782	add	w1, w1, 1
1783	strh	w1, [x0, 2]
1784.L209:
1785	ldrb	w1, [x0, 6]
1786	add	x1, x1, 8
1787	ldrh	w1, [x0, x1, lsl 1]
1788	b	.L208
1789	.size	FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
1790	.align	2
1791	.global	make_superblock
1792	.type	make_superblock, %function
1793make_superblock:
1794	hint	34 // bti c
1795	.section	__patchable_function_entries
1796	.align	3
1797	.8byte	.LPFE35
1798	.text
1799.LPFE35:
1800	nop
1801	nop
1802	hint	25 // paciasp
1803	stp	x29, x30, [sp, -96]!
1804	mov	x29, sp
1805	stp	x19, x20, [sp, 16]
1806	adrp	x20, .LANCHOR0
1807	add	x20, x20, :lo12:.LANCHOR0
1808	stp	x21, x22, [sp, 32]
1809	mov	x19, x0
1810	stp	x23, x24, [sp, 48]
1811	stp	x25, x26, [sp, 64]
1812	str	x27, [sp, 80]
1813	ldrh	w1, [x0]
1814	ldrh	w0, [x20, 244]
1815	cmp	w1, w0
1816	bcc	.L213
1817	adrp	x1, .LANCHOR1
1818	add	x1, x1, :lo12:.LANCHOR1
1819	adrp	x0, .LC9
1820	add	x1, x1, 95
1821	add	x0, x0, :lo12:.LC9
1822	mov	w2, 2157
1823	bl	sftl_printk
1824.L213:
1825	ldrh	w26, [x20, 236]
1826	add	x23, x19, 16
1827	add	x27, x20, 264
1828	mov	x22, 0
1829	mov	w25, -1
1830	strh	wzr, [x19, 4]
1831	strb	wzr, [x19, 7]
1832.L214:
1833	ldrh	w1, [x19]
1834	ldrb	w21, [x19, 7]
1835	cmp	w26, w22, uxth
1836	bhi	.L216
1837	ldrh	w0, [x20, 306]
1838	ubfiz	x1, x1, 1, 16
1839	strb	wzr, [x19, 9]
1840	mul	w21, w21, w0
1841	strh	w21, [x19, 4]
1842	ldr	x0, [x20, 2600]
1843	ldp	x21, x22, [sp, 32]
1844	ldrh	w1, [x0, x1]
1845	mov	w0, 10000
1846	ldp	x23, x24, [sp, 48]
1847	cmp	w1, w0
1848	cset	w0, hi
1849	ldp	x25, x26, [sp, 64]
1850	strb	w0, [x19, 9]
1851	mov	w0, 0
1852	ldp	x19, x20, [sp, 16]
1853	ldr	x27, [sp, 80]
1854	ldp	x29, x30, [sp], 96
1855	hint	29 // autiasp
1856	ret
1857.L216:
1858	ldrb	w0, [x27, x22]
1859	bl	V2P_block
1860	strh	w25, [x23]
1861	mov	w24, w0
1862	bl	FtlBbmIsBadBlock
1863	cbnz	w0, .L215
1864	strh	w24, [x23]
1865	add	w21, w21, 1
1866	strb	w21, [x19, 7]
1867.L215:
1868	add	x22, x22, 1
1869	add	x23, x23, 2
1870	b	.L214
1871	.size	make_superblock, .-make_superblock
1872	.align	2
1873	.global	update_multiplier_value
1874	.type	update_multiplier_value, %function
1875update_multiplier_value:
1876	hint	34 // bti c
1877	.section	__patchable_function_entries
1878	.align	3
1879	.8byte	.LPFE36
1880	.text
1881.LPFE36:
1882	nop
1883	nop
1884	hint	25 // paciasp
1885	stp	x29, x30, [sp, -80]!
1886	mov	x29, sp
1887	stp	x19, x20, [sp, 16]
1888	adrp	x20, .LANCHOR0
1889	add	x20, x20, :lo12:.LANCHOR0
1890	stp	x23, x24, [sp, 48]
1891	mov	w19, 0
1892	ldrh	w23, [x20, 236]
1893	ldrh	w24, [x20, 306]
1894	stp	x21, x22, [sp, 32]
1895	and	w21, w0, 65535
1896	mov	x22, 0
1897	str	x25, [sp, 64]
1898	add	x25, x20, 264
1899.L220:
1900	cmp	w23, w22, uxth
1901	bhi	.L222
1902	cbz	w19, .L223
1903	mov	w0, 32768
1904	udiv	w19, w0, w19
1905.L223:
1906	ldr	x0, [x20, 2560]
1907	mov	w1, 6
1908	umaddl	x21, w21, w1, x0
1909	mov	w0, 0
1910	strh	w19, [x21, 4]
1911	ldp	x19, x20, [sp, 16]
1912	ldp	x21, x22, [sp, 32]
1913	ldp	x23, x24, [sp, 48]
1914	ldr	x25, [sp, 64]
1915	ldp	x29, x30, [sp], 80
1916	hint	29 // autiasp
1917	ret
1918.L222:
1919	ldrb	w0, [x25, x22]
1920	mov	w1, w21
1921	bl	V2P_block
1922	bl	FtlBbmIsBadBlock
1923	cbnz	w0, .L221
1924	add	w19, w24, w19
1925	and	w19, w19, 65535
1926.L221:
1927	add	x22, x22, 1
1928	b	.L220
1929	.size	update_multiplier_value, .-update_multiplier_value
1930	.align	2
1931	.global	GetFreeBlockMinEraseCount
1932	.type	GetFreeBlockMinEraseCount, %function
1933GetFreeBlockMinEraseCount:
1934	hint	34 // bti c
1935	.section	__patchable_function_entries
1936	.align	3
1937	.8byte	.LPFE37
1938	.text
1939.LPFE37:
1940	nop
1941	nop
1942	adrp	x1, .LANCHOR0
1943	add	x1, x1, :lo12:.LANCHOR0
1944	hint	25 // paciasp
1945	ldr	x0, [x1, 2592]
1946	cbz	x0, .L230
1947	ldr	x2, [x1, 2560]
1948	ldr	x1, [x1, 2600]
1949	sub	x0, x0, x2
1950	mov	x2, -6148914691236517206
1951	asr	x0, x0, 1
1952	movk	x2, 0xaaab, lsl 0
1953	mul	x0, x0, x2
1954	and	x0, x0, 65535
1955	ldrh	w0, [x1, x0, lsl 1]
1956.L229:
1957	hint	29 // autiasp
1958	ret
1959.L230:
1960	mov	w0, 0
1961	b	.L229
1962	.size	GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
1963	.align	2
1964	.global	GetFreeBlockMaxEraseCount
1965	.type	GetFreeBlockMaxEraseCount, %function
1966GetFreeBlockMaxEraseCount:
1967	hint	34 // bti c
1968	.section	__patchable_function_entries
1969	.align	3
1970	.8byte	.LPFE38
1971	.text
1972.LPFE38:
1973	nop
1974	nop
1975	adrp	x2, .LANCHOR0
1976	add	x2, x2, :lo12:.LANCHOR0
1977	hint	25 // paciasp
1978	ldr	x1, [x2, 2592]
1979	cbz	x1, .L238
1980	ldrh	w3, [x2, 228]
1981	mov	w4, 7
1982	and	w0, w0, 65535
1983	mul	w3, w3, w4
1984	asr	w3, w3, 3
1985	cmp	w0, w3
1986	ble	.L234
1987	and	w0, w3, 65535
1988.L234:
1989	ldr	x4, [x2, 2560]
1990	mov	x3, -6148914691236517206
1991	movk	x3, 0xaaab, lsl 0
1992	mov	w6, 6
1993	sub	x1, x1, x4
1994	mov	w7, 65535
1995	asr	x1, x1, 1
1996	mul	x1, x1, x3
1997	mov	w3, 0
1998	and	w1, w1, 65535
1999.L235:
2000	cmp	w0, w3
2001	bne	.L237
2002.L236:
2003	ldr	x0, [x2, 2600]
2004	ubfiz	x1, x1, 1, 16
2005	ldrh	w0, [x0, x1]
2006.L233:
2007	hint	29 // autiasp
2008	ret
2009.L237:
2010	umull	x5, w1, w6
2011	ldrh	w5, [x4, x5]
2012	cmp	w5, w7
2013	beq	.L236
2014	add	w3, w3, 1
2015	mov	w1, w5
2016	and	w3, w3, 65535
2017	b	.L235
2018.L238:
2019	mov	w0, 0
2020	b	.L233
2021	.size	GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
2022	.section	.rodata.str1.1
2023.LC10:
2024	.string	"FLASH INFO:\n"
2025.LC11:
2026	.string	"Device Capacity: %d MB\n"
2027.LC12:
2028	.string	"FTL INFO:\n"
2029.LC13:
2030	.string	"g_MaxLpn = 0x%x\n"
2031.LC14:
2032	.string	"g_VaildLpn = 0x%x\n"
2033.LC15:
2034	.string	"read_page_count = 0x%x\n"
2035.LC16:
2036	.string	"discard_page_count = 0x%x\n"
2037.LC17:
2038	.string	"write_page_count = 0x%x\n"
2039.LC18:
2040	.string	"cache_write_count = 0x%x\n"
2041.LC19:
2042	.string	"l2p_write_count = 0x%x\n"
2043.LC20:
2044	.string	"gc_page_count = 0x%x\n"
2045.LC21:
2046	.string	"totle_write = %d MB\n"
2047.LC22:
2048	.string	"totle_read = %d MB\n"
2049.LC23:
2050	.string	"GSV = 0x%x\n"
2051.LC24:
2052	.string	"GDV = 0x%x\n"
2053.LC25:
2054	.string	"bad blk num = %d\n"
2055.LC26:
2056	.string	"free_superblocks = 0x%x\n"
2057.LC27:
2058	.string	"mlc_EC = 0x%x\n"
2059.LC28:
2060	.string	"slc_EC = 0x%x\n"
2061.LC29:
2062	.string	"avg_EC = 0x%x\n"
2063.LC30:
2064	.string	"sys_EC = 0x%x\n"
2065.LC31:
2066	.string	"max_EC = 0x%x\n"
2067.LC32:
2068	.string	"min_EC = 0x%x\n"
2069.LC33:
2070	.string	"PLT = 0x%x\n"
2071.LC34:
2072	.string	"POT = 0x%x\n"
2073.LC35:
2074	.string	"MaxSector = 0x%x\n"
2075.LC36:
2076	.string	"init_sys_blks_pp = 0x%x\n"
2077.LC37:
2078	.string	"sys_blks_pp = 0x%x\n"
2079.LC38:
2080	.string	"free sysblock = 0x%x\n"
2081.LC39:
2082	.string	"data_blks_pp = 0x%x\n"
2083.LC40:
2084	.string	"data_op_blks_pp = 0x%x\n"
2085.LC41:
2086	.string	"max_data_blks = 0x%x\n"
2087.LC42:
2088	.string	"Sys.id = 0x%x\n"
2089.LC43:
2090	.string	"Bbt.id = 0x%x\n"
2091.LC44:
2092	.string	"ACT.page = 0x%x\n"
2093.LC45:
2094	.string	"ACT.plane = 0x%x\n"
2095.LC46:
2096	.string	"ACT.id = 0x%x\n"
2097.LC47:
2098	.string	"ACT.mode = 0x%x\n"
2099.LC48:
2100	.string	"ACT.a_pages = 0x%x\n"
2101.LC49:
2102	.string	"ACT VPC = 0x%x\n"
2103.LC50:
2104	.string	"BUF.page = 0x%x\n"
2105.LC51:
2106	.string	"BUF.plane = 0x%x\n"
2107.LC52:
2108	.string	"BUF.id = 0x%x\n"
2109.LC53:
2110	.string	"BUF.mode = 0x%x\n"
2111.LC54:
2112	.string	"BUF.a_pages = 0x%x\n"
2113.LC55:
2114	.string	"BUF VPC = 0x%x\n"
2115.LC56:
2116	.string	"TMP.page = 0x%x\n"
2117.LC57:
2118	.string	"TMP.plane = 0x%x\n"
2119.LC58:
2120	.string	"TMP.id = 0x%x\n"
2121.LC59:
2122	.string	"TMP.mode = 0x%x\n"
2123.LC60:
2124	.string	"TMP.a_pages = 0x%x\n"
2125.LC61:
2126	.string	"GC.page = 0x%x\n"
2127.LC62:
2128	.string	"GC.plane = 0x%x\n"
2129.LC63:
2130	.string	"GC.id = 0x%x\n"
2131.LC64:
2132	.string	"GC.mode = 0x%x\n"
2133.LC65:
2134	.string	"GC.a_pages = 0x%x\n"
2135.LC66:
2136	.string	"WR_CHK = %x %x %x\n"
2137.LC67:
2138	.string	"Read Err Cnt = 0x%x\n"
2139.LC68:
2140	.string	"Prog Err Cnt = 0x%x\n"
2141.LC69:
2142	.string	"gc_free_blk_th= 0x%x\n"
2143.LC70:
2144	.string	"gc_merge_free_blk_th= 0x%x\n"
2145.LC71:
2146	.string	"gc_skip_write_count= 0x%x\n"
2147.LC72:
2148	.string	"gc_blk_index= 0x%x\n"
2149.LC73:
2150	.string	"free min EC= 0x%x\n"
2151.LC74:
2152	.string	"free max EC= 0x%x\n"
2153.LC75:
2154	.string	"GC__SB VPC = 0x%x\n"
2155.LC76:
2156	.string	"%d. [0x%x]=0x%x 0x%x  0x%x\n"
2157.LC77:
2158	.string	"free %d. [0x%x] 0x%x  0x%x\n"
2159	.text
2160	.align	2
2161	.global	FtlPrintInfo2buf
2162	.type	FtlPrintInfo2buf, %function
2163FtlPrintInfo2buf:
2164	hint	34 // bti c
2165	.section	__patchable_function_entries
2166	.align	3
2167	.8byte	.LPFE39
2168	.text
2169.LPFE39:
2170	nop
2171	nop
2172	hint	25 // paciasp
2173	stp	x29, x30, [sp, -80]!
2174	adrp	x1, .LC10
2175	mov	x29, sp
2176	stp	x19, x20, [sp, 16]
2177	adrp	x19, .LANCHOR0
2178	add	x19, x19, :lo12:.LANCHOR0
2179	add	x1, x1, :lo12:.LC10
2180	stp	x21, x22, [sp, 32]
2181	mov	x21, x0
2182	stp	x23, x24, [sp, 48]
2183	add	x20, x21, 12
2184	stp	x25, x26, [sp, 64]
2185	bl	strcpy
2186	ldr	w3, [x19, 320]
2187	adrp	x2, .LC11
2188	add	x2, x2, :lo12:.LC11
2189	mov	x0, x20
2190	mov	x1, 64
2191	bl	snprintf
2192	add	x20, x20, w0, sxtw
2193	mov	x0, x20
2194	adrp	x1, .LC12
2195	add	x1, x1, :lo12:.LC12
2196	bl	strcpy
2197	ldr	w3, [x19, 2624]
2198	add	x20, x20, 10
2199	mov	x0, x20
2200	mov	x1, 64
2201	adrp	x2, .LC13
2202	add	x2, x2, :lo12:.LC13
2203	bl	snprintf
2204	add	x22, x20, w0, sxtw
2205	ldr	w3, [x19, 2620]
2206	mov	x0, x22
2207	mov	x1, 64
2208	adrp	x2, .LC14
2209	add	x2, x2, :lo12:.LC14
2210	bl	snprintf
2211	add	x22, x22, w0, sxtw
2212	ldr	w3, [x19, 2628]
2213	mov	x0, x22
2214	mov	x1, 64
2215	adrp	x2, .LC15
2216	add	x2, x2, :lo12:.LC15
2217	bl	snprintf
2218	add	x22, x22, w0, sxtw
2219	ldr	w3, [x19, 2632]
2220	mov	x0, x22
2221	mov	x1, 64
2222	adrp	x2, .LC16
2223	add	x2, x2, :lo12:.LC16
2224	bl	snprintf
2225	add	x22, x22, w0, sxtw
2226	ldr	w3, [x19, 2636]
2227	mov	x0, x22
2228	mov	x1, 64
2229	adrp	x2, .LC17
2230	add	x2, x2, :lo12:.LC17
2231	bl	snprintf
2232	add	x22, x22, w0, sxtw
2233	ldr	w3, [x19, 2640]
2234	mov	x0, x22
2235	mov	x1, 64
2236	adrp	x2, .LC18
2237	add	x2, x2, :lo12:.LC18
2238	bl	snprintf
2239	add	x22, x22, w0, sxtw
2240	ldr	w3, [x19, 2644]
2241	mov	x0, x22
2242	mov	x1, 64
2243	adrp	x2, .LC19
2244	add	x2, x2, :lo12:.LC19
2245	bl	snprintf
2246	add	x22, x22, w0, sxtw
2247	ldr	w3, [x19, 2648]
2248	mov	x0, x22
2249	mov	x1, 64
2250	adrp	x2, .LC20
2251	add	x2, x2, :lo12:.LC20
2252	bl	snprintf
2253	add	x22, x22, w0, sxtw
2254	ldr	w3, [x19, 2652]
2255	mov	x0, x22
2256	mov	x1, 64
2257	adrp	x2, .LC21
2258	add	x2, x2, :lo12:.LC21
2259	lsr	w3, w3, 11
2260	bl	snprintf
2261	ldr	w3, [x19, 2656]
2262	add	x22, x22, w0, sxtw
2263	mov	x0, x22
2264	mov	x1, 64
2265	adrp	x2, .LC22
2266	add	x2, x2, :lo12:.LC22
2267	lsr	w3, w3, 11
2268	bl	snprintf
2269	ldr	w3, [x19, 2660]
2270	add	x22, x22, w0, sxtw
2271	mov	x0, x22
2272	mov	x1, 64
2273	adrp	x2, .LC23
2274	add	x2, x2, :lo12:.LC23
2275	bl	snprintf
2276	add	x22, x22, w0, sxtw
2277	ldr	w3, [x19, 2664]
2278	mov	x0, x22
2279	mov	x1, 64
2280	adrp	x2, .LC24
2281	add	x2, x2, :lo12:.LC24
2282	bl	snprintf
2283	add	x22, x22, w0, sxtw
2284	ldrh	w3, [x19, 366]
2285	mov	x0, x22
2286	mov	x1, 64
2287	adrp	x2, .LC25
2288	add	x2, x2, :lo12:.LC25
2289	bl	snprintf
2290	add	x22, x22, w0, sxtw
2291	ldrh	w3, [x19, 228]
2292	mov	x0, x22
2293	mov	x1, 64
2294	adrp	x2, .LC26
2295	add	x2, x2, :lo12:.LC26
2296	bl	snprintf
2297	add	x22, x22, w0, sxtw
2298	ldr	w3, [x19, 2668]
2299	mov	x0, x22
2300	mov	x1, 64
2301	adrp	x2, .LC27
2302	add	x2, x2, :lo12:.LC27
2303	bl	snprintf
2304	add	x22, x22, w0, sxtw
2305	ldr	w3, [x19, 2672]
2306	mov	x0, x22
2307	mov	x1, 64
2308	adrp	x2, .LC28
2309	add	x2, x2, :lo12:.LC28
2310	bl	snprintf
2311	add	x22, x22, w0, sxtw
2312	ldr	w3, [x19, 2676]
2313	mov	x0, x22
2314	mov	x1, 64
2315	adrp	x2, .LC29
2316	add	x2, x2, :lo12:.LC29
2317	bl	snprintf
2318	add	x22, x22, w0, sxtw
2319	ldr	w3, [x19, 2680]
2320	mov	x0, x22
2321	mov	x1, 64
2322	adrp	x2, .LC30
2323	add	x2, x2, :lo12:.LC30
2324	bl	snprintf
2325	add	x22, x22, w0, sxtw
2326	ldr	w3, [x19, 2684]
2327	mov	x0, x22
2328	mov	x1, 64
2329	adrp	x2, .LC31
2330	add	x2, x2, :lo12:.LC31
2331	bl	snprintf
2332	add	x22, x22, w0, sxtw
2333	ldr	w3, [x19, 2688]
2334	mov	x0, x22
2335	mov	x1, 64
2336	adrp	x2, .LC32
2337	add	x2, x2, :lo12:.LC32
2338	bl	snprintf
2339	add	x22, x22, w0, sxtw
2340	ldrh	w3, [x19, 2542]
2341	mov	x0, x22
2342	mov	x1, 64
2343	adrp	x2, .LC33
2344	add	x2, x2, :lo12:.LC33
2345	bl	snprintf
2346	add	x22, x22, w0, sxtw
2347	ldrh	w3, [x19, 2540]
2348	mov	x0, x22
2349	mov	x1, 64
2350	adrp	x2, .LC34
2351	add	x2, x2, :lo12:.LC34
2352	bl	snprintf
2353	add	x22, x22, w0, sxtw
2354	ldr	w3, [x19, 344]
2355	mov	x0, x22
2356	mov	x1, 64
2357	adrp	x2, .LC35
2358	add	x2, x2, :lo12:.LC35
2359	bl	snprintf
2360	add	x22, x22, w0, sxtw
2361	ldr	w3, [x19, 336]
2362	mov	x0, x22
2363	mov	x1, 64
2364	adrp	x2, .LC36
2365	add	x2, x2, :lo12:.LC36
2366	bl	snprintf
2367	add	x22, x22, w0, sxtw
2368	ldr	w3, [x19, 232]
2369	mov	x0, x22
2370	mov	x1, 64
2371	adrp	x2, .LC37
2372	add	x2, x2, :lo12:.LC37
2373	bl	snprintf
2374	add	x22, x22, w0, sxtw
2375	ldrh	w3, [x19, 462]
2376	mov	x0, x22
2377	mov	x1, 64
2378	adrp	x2, .LC38
2379	add	x2, x2, :lo12:.LC38
2380	bl	snprintf
2381	add	x22, x22, w0, sxtw
2382	ldrh	w3, [x19, 244]
2383	mov	x0, x22
2384	mov	x1, 64
2385	adrp	x2, .LC39
2386	add	x2, x2, :lo12:.LC39
2387	bl	snprintf
2388	add	x22, x22, w0, sxtw
2389	ldrh	w3, [x19, 2692]
2390	mov	x0, x22
2391	mov	x1, 64
2392	adrp	x2, .LC40
2393	add	x2, x2, :lo12:.LC40
2394	bl	snprintf
2395	add	x22, x22, w0, sxtw
2396	ldr	w3, [x19, 248]
2397	mov	x0, x22
2398	mov	x1, 64
2399	adrp	x2, .LC41
2400	add	x2, x2, :lo12:.LC41
2401	bl	snprintf
2402	add	x22, x22, w0, sxtw
2403	ldrh	w3, [x19, 2696]
2404	mov	x0, x22
2405	mov	x1, 64
2406	adrp	x2, .LC42
2407	add	x2, x2, :lo12:.LC42
2408	bl	snprintf
2409	add	x22, x22, w0, sxtw
2410	ldrh	w3, [x19, 360]
2411	mov	x0, x22
2412	mov	x1, 64
2413	adrp	x2, .LC43
2414	add	x2, x2, :lo12:.LC43
2415	bl	snprintf
2416	add	x22, x22, w0, sxtw
2417	ldrh	w3, [x19, 26]
2418	mov	x0, x22
2419	mov	x1, 64
2420	adrp	x2, .LC44
2421	add	x2, x2, :lo12:.LC44
2422	bl	snprintf
2423	add	x22, x22, w0, sxtw
2424	ldrb	w3, [x19, 30]
2425	mov	x0, x22
2426	mov	x1, 64
2427	adrp	x2, .LC45
2428	add	x2, x2, :lo12:.LC45
2429	bl	snprintf
2430	add	x22, x22, w0, sxtw
2431	ldrh	w3, [x19, 24]
2432	mov	x0, x22
2433	mov	x1, 64
2434	adrp	x2, .LC46
2435	add	x2, x2, :lo12:.LC46
2436	bl	snprintf
2437	add	x22, x22, w0, sxtw
2438	ldrb	w3, [x19, 32]
2439	mov	x0, x22
2440	mov	x1, 64
2441	adrp	x2, .LC47
2442	add	x2, x2, :lo12:.LC47
2443	bl	snprintf
2444	add	x22, x22, w0, sxtw
2445	ldrh	w3, [x19, 28]
2446	mov	x0, x22
2447	mov	x1, 64
2448	adrp	x2, .LC48
2449	add	x2, x2, :lo12:.LC48
2450	bl	snprintf
2451	add	x22, x22, w0, sxtw
2452	ldrh	w1, [x19, 24]
2453	adrp	x2, .LC49
2454	ldr	x0, [x19, 72]
2455	add	x2, x2, :lo12:.LC49
2456	ldrh	w3, [x0, x1, lsl 1]
2457	mov	x0, x22
2458	mov	x1, 64
2459	bl	snprintf
2460	add	x22, x22, w0, sxtw
2461	ldrh	w3, [x19, 82]
2462	mov	x0, x22
2463	mov	x1, 64
2464	adrp	x2, .LC50
2465	add	x2, x2, :lo12:.LC50
2466	bl	snprintf
2467	add	x22, x22, w0, sxtw
2468	ldrb	w3, [x19, 86]
2469	mov	x0, x22
2470	mov	x1, 64
2471	adrp	x2, .LC51
2472	add	x2, x2, :lo12:.LC51
2473	bl	snprintf
2474	add	x22, x22, w0, sxtw
2475	ldrh	w3, [x19, 80]
2476	mov	x0, x22
2477	mov	x1, 64
2478	adrp	x2, .LC52
2479	add	x2, x2, :lo12:.LC52
2480	bl	snprintf
2481	add	x22, x22, w0, sxtw
2482	ldrb	w3, [x19, 88]
2483	mov	x0, x22
2484	mov	x1, 64
2485	adrp	x2, .LC53
2486	add	x2, x2, :lo12:.LC53
2487	bl	snprintf
2488	add	x22, x22, w0, sxtw
2489	ldrh	w3, [x19, 84]
2490	mov	x0, x22
2491	mov	x1, 64
2492	adrp	x2, .LC54
2493	add	x2, x2, :lo12:.LC54
2494	bl	snprintf
2495	add	x22, x22, w0, sxtw
2496	ldrh	w1, [x19, 80]
2497	adrp	x2, .LC55
2498	ldr	x0, [x19, 72]
2499	add	x2, x2, :lo12:.LC55
2500	ldrh	w3, [x0, x1, lsl 1]
2501	mov	x0, x22
2502	mov	x1, 64
2503	bl	snprintf
2504	add	x22, x22, w0, sxtw
2505	ldrh	w3, [x19, 130]
2506	mov	x0, x22
2507	mov	x1, 64
2508	adrp	x2, .LC56
2509	add	x2, x2, :lo12:.LC56
2510	bl	snprintf
2511	add	x22, x22, w0, sxtw
2512	ldrb	w3, [x19, 134]
2513	mov	x0, x22
2514	mov	x1, 64
2515	adrp	x2, .LC57
2516	add	x2, x2, :lo12:.LC57
2517	bl	snprintf
2518	add	x22, x22, w0, sxtw
2519	ldrh	w3, [x19, 128]
2520	mov	x0, x22
2521	mov	x1, 64
2522	adrp	x2, .LC58
2523	add	x2, x2, :lo12:.LC58
2524	bl	snprintf
2525	add	x22, x22, w0, sxtw
2526	ldrb	w3, [x19, 136]
2527	mov	x0, x22
2528	mov	x1, 64
2529	adrp	x2, .LC59
2530	add	x2, x2, :lo12:.LC59
2531	bl	snprintf
2532	add	x22, x22, w0, sxtw
2533	ldrh	w3, [x19, 132]
2534	mov	x0, x22
2535	mov	x1, 64
2536	adrp	x2, .LC60
2537	add	x2, x2, :lo12:.LC60
2538	bl	snprintf
2539	add	x22, x22, w0, sxtw
2540	ldrh	w3, [x19, 178]
2541	mov	x0, x22
2542	mov	x1, 64
2543	adrp	x2, .LC61
2544	add	x2, x2, :lo12:.LC61
2545	bl	snprintf
2546	add	x22, x22, w0, sxtw
2547	ldrb	w3, [x19, 182]
2548	mov	x0, x22
2549	mov	x1, 64
2550	adrp	x2, .LC62
2551	add	x2, x2, :lo12:.LC62
2552	bl	snprintf
2553	add	x22, x22, w0, sxtw
2554	ldrh	w3, [x19, 176]
2555	mov	x0, x22
2556	mov	x1, 64
2557	adrp	x2, .LC63
2558	add	x2, x2, :lo12:.LC63
2559	bl	snprintf
2560	add	x22, x22, w0, sxtw
2561	ldrb	w3, [x19, 184]
2562	mov	x0, x22
2563	mov	x1, 64
2564	adrp	x2, .LC64
2565	add	x2, x2, :lo12:.LC64
2566	bl	snprintf
2567	add	x22, x22, w0, sxtw
2568	ldrh	w3, [x19, 180]
2569	mov	x0, x22
2570	mov	x1, 64
2571	adrp	x2, .LC65
2572	add	x2, x2, :lo12:.LC65
2573	bl	snprintf
2574	add	x22, x22, w0, sxtw
2575	ldr	w5, [x19, 2788]
2576	mov	x0, x22
2577	ldr	w4, [x19, 2796]
2578	mov	x1, 64
2579	ldr	w3, [x19, 2792]
2580	adrp	x2, .LC66
2581	add	x2, x2, :lo12:.LC66
2582	bl	snprintf
2583	add	x22, x22, w0, sxtw
2584	ldr	w3, [x19, 2784]
2585	mov	x0, x22
2586	mov	x1, 64
2587	adrp	x2, .LC67
2588	add	x2, x2, :lo12:.LC67
2589	bl	snprintf
2590	add	x22, x22, w0, sxtw
2591	ldr	w3, [x19, 2808]
2592	mov	x1, 64
2593	mov	x0, x22
2594	adrp	x2, .LC68
2595	add	x2, x2, :lo12:.LC68
2596	bl	snprintf
2597	add	x20, x22, w0, sxtw
2598	ldrh	w3, [x19, 3224]
2599	mov	x0, x20
2600	mov	x1, 64
2601	adrp	x2, .LC69
2602	add	x2, x2, :lo12:.LC69
2603	bl	snprintf
2604	add	x20, x20, w0, sxtw
2605	ldrh	w3, [x19, 3226]
2606	mov	x0, x20
2607	mov	x1, 64
2608	adrp	x2, .LC70
2609	add	x2, x2, :lo12:.LC70
2610	bl	snprintf
2611	add	x20, x20, w0, sxtw
2612	ldr	w3, [x19, 3228]
2613	mov	x0, x20
2614	mov	x1, 64
2615	adrp	x2, .LC71
2616	add	x2, x2, :lo12:.LC71
2617	bl	snprintf
2618	add	x20, x20, w0, sxtw
2619	ldrh	w3, [x19, 3232]
2620	adrp	x2, .LC72
2621	add	x2, x2, :lo12:.LC72
2622	mov	x1, 64
2623	mov	x0, x20
2624	bl	snprintf
2625	add	x20, x20, w0, sxtw
2626	bl	GetFreeBlockMinEraseCount
2627	and	w3, w0, 65535
2628	mov	x1, 64
2629	mov	x0, x20
2630	adrp	x2, .LC73
2631	add	x2, x2, :lo12:.LC73
2632	bl	snprintf
2633	add	x20, x20, w0, sxtw
2634	ldrh	w0, [x19, 228]
2635	bl	GetFreeBlockMaxEraseCount
2636	and	w3, w0, 65535
2637	adrp	x2, .LC74
2638	mov	x0, x20
2639	add	x2, x2, :lo12:.LC74
2640	mov	x1, 64
2641	bl	snprintf
2642	add	x20, x20, w0, sxtw
2643	adrp	x0, .LANCHOR2
2644	ldr	w0, [x0, #:lo12:.LANCHOR2]
2645	cmp	w0, 1
2646	beq	.L241
2647.L246:
2648	sub	w0, w20, w21
2649	ldp	x19, x20, [sp, 16]
2650	ldp	x21, x22, [sp, 32]
2651	ldp	x23, x24, [sp, 48]
2652	ldp	x25, x26, [sp, 64]
2653	ldp	x29, x30, [sp], 80
2654	hint	29 // autiasp
2655	ret
2656.L241:
2657	ldrh	w0, [x19, 176]
2658	mov	w1, 65535
2659	cmp	w0, w1
2660	beq	.L243
2661	ldr	x1, [x19, 72]
2662	ubfiz	x0, x0, 1, 16
2663	adrp	x2, .LC75
2664	add	x2, x2, :lo12:.LC75
2665	ldrh	w3, [x1, x0]
2666	mov	x0, x20
2667	mov	x1, 64
2668	bl	snprintf
2669	add	x20, x20, w0, sxtw
2670.L243:
2671	mov	w0, 0
2672	adrp	x23, .LC76
2673	bl	List_get_gc_head_node
2674	add	x23, x23, :lo12:.LC76
2675	and	w4, w0, 65535
2676	mov	w22, 0
2677	mov	w26, 65535
2678	mov	w25, 6
2679.L245:
2680	ldr	x0, [x19, 2560]
2681	cmp	w4, w26
2682	beq	.L244
2683	umull	x24, w4, w25
2684	ubfiz	x1, x4, 1, 16
2685	ldr	x2, [x19, 72]
2686	add	x0, x0, x24
2687	ldr	x3, [x19, 2600]
2688	ldrh	w5, [x2, x1]
2689	mov	x2, x23
2690	ldrh	w6, [x0, 4]
2691	mov	x0, x20
2692	ldrh	w7, [x3, x1]
2693	mov	w3, w22
2694	mov	x1, 64
2695	add	w22, w22, 1
2696	bl	snprintf
2697	add	x20, x20, w0, sxtw
2698	ldr	x0, [x19, 2560]
2699	ldrh	w4, [x0, x24]
2700	cmp	w22, 16
2701	bne	.L245
2702.L244:
2703	ldr	x0, [x19, 2560]
2704	adrp	x23, .LC77
2705	ldr	x4, [x19, 2592]
2706	add	x23, x23, :lo12:.LC77
2707	mov	w22, 0
2708	mov	w25, 65535
2709	sub	x4, x4, x0
2710	mov	x0, -6148914691236517206
2711	movk	x0, 0xaaab, lsl 0
2712	mov	w26, 6
2713	asr	x4, x4, 1
2714	mul	x4, x4, x0
2715	and	w4, w4, 65535
2716.L247:
2717	cmp	w4, w25
2718	beq	.L246
2719	ldr	x0, [x19, 2560]
2720	umull	x24, w4, w26
2721	ldr	x2, [x19, 2600]
2722	ubfiz	x1, x4, 1, 16
2723	add	x0, x0, x24
2724	mov	w3, w22
2725	add	w22, w22, 1
2726	ldrh	w6, [x2, x1]
2727	mov	x2, x23
2728	ldrh	w5, [x0, 4]
2729	mov	x1, 64
2730	mov	x0, x20
2731	bl	snprintf
2732	add	x20, x20, w0, sxtw
2733	cmp	w22, 4
2734	beq	.L246
2735	ldr	x0, [x19, 2560]
2736	ldrh	w4, [x0, x24]
2737	b	.L247
2738	.size	FtlPrintInfo2buf, .-FtlPrintInfo2buf
2739	.section	.rodata.str1.1
2740.LC78:
2741	.string	"%s\n"
2742	.text
2743	.align	2
2744	.global	rknand_proc_ftlread
2745	.type	rknand_proc_ftlread, %function
2746rknand_proc_ftlread:
2747	hint	34 // bti c
2748	.section	__patchable_function_entries
2749	.align	3
2750	.8byte	.LPFE40
2751	.text
2752.LPFE40:
2753	nop
2754	nop
2755	cmp	w0, 2047
2756	ble	.L255
2757	hint	25 // paciasp
2758	stp	x29, x30, [sp, -32]!
2759	adrp	x3, .LC1
2760	mov	x29, sp
2761	add	x3, x3, :lo12:.LC1
2762	adrp	x2, .LC78
2763	add	x2, x2, :lo12:.LC78
2764	stp	x19, x20, [sp, 16]
2765	mov	x19, x1
2766	mov	x1, 64
2767	add	x20, x19, 30
2768	mov	x0, x19
2769	bl	snprintf
2770	mov	x0, x20
2771	bl	FtlPrintInfo2buf
2772	add	x0, x20, w0, sxtw
2773	sub	w0, w0, w19
2774	ldp	x19, x20, [sp, 16]
2775	ldp	x29, x30, [sp], 32
2776	hint	29 // autiasp
2777	ret
2778.L255:
2779	mov	w0, 0
2780	ret
2781	.size	rknand_proc_ftlread, .-rknand_proc_ftlread
2782	.section	.rodata.str1.1
2783.LC79:
2784	.string	"swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x\n"
2785	.text
2786	.align	2
2787	.global	GetSwlReplaceBlock
2788	.type	GetSwlReplaceBlock, %function
2789GetSwlReplaceBlock:
2790	hint	34 // bti c
2791	.section	__patchable_function_entries
2792	.align	3
2793	.8byte	.LPFE41
2794	.text
2795.LPFE41:
2796	nop
2797	nop
2798	hint	25 // paciasp
2799	stp	x29, x30, [sp, -96]!
2800	mov	x29, sp
2801	stp	x19, x20, [sp, 16]
2802	adrp	x19, .LANCHOR0
2803	add	x19, x19, :lo12:.LANCHOR0
2804	stp	x21, x22, [sp, 32]
2805	ldr	w1, [x19, 2676]
2806	ldr	w0, [x19, 2688]
2807	stp	x23, x24, [sp, 48]
2808	stp	x25, x26, [sp, 64]
2809	str	x27, [sp, 80]
2810	cmp	w1, w0
2811	bcs	.L261
2812	ldrh	w1, [x19, 244]
2813	mov	x2, 0
2814	ldr	x4, [x19, 2600]
2815	str	wzr, [x19, 2668]
2816.L262:
2817	ldr	w0, [x19, 2668]
2818	cmp	w1, w2
2819	bhi	.L263
2820	udiv	w1, w0, w1
2821	str	w1, [x19, 2676]
2822	ldr	w1, [x19, 2672]
2823	sub	w0, w0, w1
2824	ldrh	w1, [x19, 296]
2825	udiv	w0, w0, w1
2826	str	w0, [x19, 2668]
2827.L264:
2828	ldr	w22, [x19, 2688]
2829	ldr	w24, [x19, 2676]
2830	add	w0, w22, 256
2831	cmp	w0, w24
2832	bls	.L269
2833	ldr	w1, [x19, 2684]
2834	add	w0, w22, 768
2835	cmp	w0, w1
2836	bls	.L269
2837.L271:
2838	mov	w20, 65535
2839.L270:
2840	mov	w0, w20
2841	ldp	x19, x20, [sp, 16]
2842	ldp	x21, x22, [sp, 32]
2843	ldp	x23, x24, [sp, 48]
2844	ldp	x25, x26, [sp, 64]
2845	ldr	x27, [sp, 80]
2846	ldp	x29, x30, [sp], 96
2847	hint	29 // autiasp
2848	ret
2849.L263:
2850	ldrh	w3, [x4, x2, lsl 1]
2851	add	x2, x2, 1
2852	add	w0, w3, w0
2853	str	w0, [x19, 2668]
2854	b	.L262
2855.L261:
2856	ldr	w0, [x19, 2684]
2857	cmp	w1, w0
2858	bls	.L264
2859	add	w0, w0, 1
2860	str	w0, [x19, 2684]
2861	mov	x0, 0
2862.L266:
2863	ldrh	w1, [x19, 244]
2864	cmp	w1, w0
2865	bls	.L264
2866	ldr	x3, [x19, 2600]
2867	lsl	x2, x0, 1
2868	add	x0, x0, 1
2869	ldrh	w1, [x3, x2]
2870	add	w1, w1, 1
2871	strh	w1, [x3, x2]
2872	b	.L266
2873.L269:
2874	ldrh	w0, [x19, 228]
2875	add	w0, w0, w0, lsl 1
2876	ubfx	x0, x0, 2, 16
2877	bl	GetFreeBlockMaxEraseCount
2878	add	w1, w22, 64
2879	and	w27, w0, 65535
2880	cmp	w1, w0, uxth
2881	bhi	.L271
2882	ldr	x0, [x19, 2568]
2883	cbz	x0, .L271
2884	ldrh	w7, [x19, 244]
2885	mov	w23, 65535
2886	ldr	x3, [x19, 2560]
2887	mov	x8, -6148914691236517206
2888	ldr	x25, [x19, 2600]
2889	mov	w1, w23
2890	mov	w6, w23
2891	mov	w4, 0
2892	movk	x8, 0xaaab, lsl 0
2893	mov	w9, 6
2894.L272:
2895	ldrh	w2, [x0]
2896	cmp	w2, w6
2897	bne	.L275
2898	mov	w20, w1
2899.L274:
2900	mov	w0, 65535
2901	cmp	w20, w0
2902	beq	.L271
2903	ldrh	w21, [x25, w20, uxtw 1]
2904	ubfiz	x26, x20, 1, 32
2905	cmp	w22, w21
2906	bcs	.L276
2907	bl	GetFreeBlockMinEraseCount
2908	cmp	w22, w0, uxth
2909	bcs	.L276
2910	str	w23, [x19, 2688]
2911.L276:
2912	cmp	w24, w21
2913	bls	.L271
2914	add	w0, w21, 128
2915	cmp	w27, w0
2916	ble	.L271
2917	add	w0, w21, 256
2918	ldr	w3, [x19, 2684]
2919	cmp	w24, w0
2920	bhi	.L277
2921	add	w21, w21, 768
2922	cmp	w21, w3
2923	bcs	.L271
2924.L277:
2925	ldr	x0, [x19, 72]
2926	mov	w6, w27
2927	ldrh	w5, [x25, x26]
2928	mov	w2, w24
2929	mov	w1, w20
2930	ldrh	w4, [x0, x26]
2931	adrp	x0, .LC79
2932	add	x0, x0, :lo12:.LC79
2933	bl	sftl_printk
2934	mov	w0, 1
2935	str	w0, [x19, 3236]
2936	b	.L270
2937.L275:
2938	add	w5, w4, 1
2939	and	w4, w5, 65535
2940	cmp	w7, w5, uxth
2941	bcc	.L271
2942	ldrh	w5, [x0, 4]
2943	cbz	w5, .L273
2944	sub	x0, x0, x3
2945	asr	x0, x0, 1
2946	mul	x0, x0, x8
2947	and	w20, w0, 65535
2948	and	x0, x0, 65535
2949	ldrh	w0, [x25, x0, lsl 1]
2950	cmp	w22, w0
2951	bcs	.L274
2952	cmp	w0, w23
2953	bcs	.L273
2954	mov	w23, w0
2955	mov	w1, w20
2956.L273:
2957	umaddl	x0, w2, w9, x3
2958	b	.L272
2959	.size	GetSwlReplaceBlock, .-GetSwlReplaceBlock
2960	.align	2
2961	.global	free_data_superblock
2962	.type	free_data_superblock, %function
2963free_data_superblock:
2964	hint	34 // bti c
2965	.section	__patchable_function_entries
2966	.align	3
2967	.8byte	.LPFE42
2968	.text
2969.LPFE42:
2970	nop
2971	nop
2972	mov	w2, 65535
2973	cmp	w2, w0, uxth
2974	beq	.L288
2975	hint	25 // paciasp
2976	adrp	x2, .LANCHOR0+72
2977	stp	x29, x30, [sp, -16]!
2978	and	w1, w0, 65535
2979	mov	x29, sp
2980	ldr	x2, [x2, #:lo12:.LANCHOR0+72]
2981	ubfiz	x0, x1, 1, 16
2982	strh	wzr, [x2, x0]
2983	mov	w0, w1
2984	bl	INSERT_FREE_LIST
2985	mov	w0, 0
2986	ldp	x29, x30, [sp], 16
2987	hint	29 // autiasp
2988	ret
2989.L288:
2990	mov	w0, 0
2991	ret
2992	.size	free_data_superblock, .-free_data_superblock
2993	.align	2
2994	.global	get_new_active_ppa
2995	.type	get_new_active_ppa, %function
2996get_new_active_ppa:
2997	hint	34 // bti c
2998	.section	__patchable_function_entries
2999	.align	3
3000	.8byte	.LPFE43
3001	.text
3002.LPFE43:
3003	nop
3004	nop
3005	hint	25 // paciasp
3006	stp	x29, x30, [sp, -48]!
3007	mov	x29, sp
3008	stp	x19, x20, [sp, 16]
3009	mov	x19, x0
3010	str	x21, [sp, 32]
3011	ldrh	w1, [x0]
3012	mov	w0, 65535
3013	cmp	w1, w0
3014	bne	.L292
3015	adrp	x1, .LANCHOR1
3016	add	x1, x1, :lo12:.LANCHOR1
3017	adrp	x0, .LC9
3018	add	x1, x1, 111
3019	add	x0, x0, :lo12:.LC9
3020	mov	w2, 2792
3021	bl	sftl_printk
3022.L292:
3023	adrp	x21, .LANCHOR0
3024	add	x21, x21, :lo12:.LANCHOR0
3025	ldrh	w1, [x19, 2]
3026	ldrh	w0, [x21, 306]
3027	cmp	w1, w0
3028	bne	.L293
3029	adrp	x1, .LANCHOR1
3030	add	x1, x1, :lo12:.LANCHOR1
3031	adrp	x0, .LC9
3032	add	x1, x1, 111
3033	add	x0, x0, :lo12:.LC9
3034	mov	w2, 2793
3035	bl	sftl_printk
3036.L293:
3037	ldrh	w0, [x19, 4]
3038	cbnz	w0, .L294
3039	adrp	x1, .LANCHOR1
3040	add	x1, x1, :lo12:.LANCHOR1
3041	adrp	x0, .LC9
3042	add	x1, x1, 111
3043	add	x0, x0, :lo12:.LC9
3044	mov	w2, 2794
3045	bl	sftl_printk
3046.L294:
3047	ldrb	w0, [x19, 6]
3048	mov	w2, 65535
3049	strb	wzr, [x19, 10]
3050	add	x0, x0, 8
3051	ldrh	w3, [x21, 236]
3052	ldrh	w0, [x19, x0, lsl 1]
3053.L295:
3054	ldrh	w20, [x19, 2]
3055	cmp	w0, w2
3056	beq	.L297
3057	ldrh	w2, [x21, 306]
3058	cmp	w2, w20
3059	bls	.L301
3060	orr	w20, w20, w0, lsl 10
3061	ldrh	w0, [x19, 4]
3062	ldrb	w1, [x19, 6]
3063	mov	w5, 65535
3064	sub	w0, w0, #1
3065	and	w0, w0, 65535
3066	strh	w0, [x19, 4]
3067.L300:
3068	add	w4, w1, 1
3069	and	w1, w4, 255
3070	cmp	w3, w4, uxtb
3071	bne	.L299
3072	ldrh	w1, [x19, 2]
3073	add	w1, w1, 1
3074	strh	w1, [x19, 2]
3075	mov	w1, 0
3076.L299:
3077	add	x4, x19, w1, sxtw 1
3078	ldrh	w4, [x4, 16]
3079	cmp	w4, w5
3080	beq	.L300
3081	strb	w1, [x19, 6]
3082	ldrh	w1, [x19, 2]
3083	cmp	w1, w2
3084	bne	.L291
3085	cbz	w0, .L291
3086	adrp	x1, .LANCHOR1
3087	add	x1, x1, :lo12:.LANCHOR1
3088	adrp	x0, .LC9
3089	add	x1, x1, 111
3090	add	x0, x0, :lo12:.LC9
3091	mov	w2, 2817
3092	bl	sftl_printk
3093.L291:
3094	mov	w0, w20
3095	ldp	x19, x20, [sp, 16]
3096	ldr	x21, [sp, 32]
3097	ldp	x29, x30, [sp], 48
3098	hint	29 // autiasp
3099	ret
3100.L297:
3101	ldrb	w1, [x19, 6]
3102	add	w1, w1, 1
3103	and	w1, w1, 255
3104	strb	w1, [x19, 6]
3105	cmp	w1, w3
3106	bne	.L296
3107	add	w20, w20, 1
3108	strh	w20, [x19, 2]
3109	strb	wzr, [x19, 6]
3110.L296:
3111	ldrb	w0, [x19, 6]
3112	add	x0, x0, 8
3113	ldrh	w0, [x19, x0, lsl 1]
3114	b	.L295
3115.L301:
3116	mov	w20, 65535
3117	b	.L291
3118	.size	get_new_active_ppa, .-get_new_active_ppa
3119	.align	2
3120	.global	FtlGcBufInit
3121	.type	FtlGcBufInit, %function
3122FtlGcBufInit:
3123	hint	34 // bti c
3124	.section	__patchable_function_entries
3125	.align	3
3126	.8byte	.LPFE44
3127	.text
3128.LPFE44:
3129	nop
3130	nop
3131	adrp	x0, .LANCHOR0
3132	add	x0, x0, :lo12:.LANCHOR0
3133	mov	w2, 0
3134	mov	w7, 24
3135	mov	w8, 1
3136	mov	w4, 4
3137	str	wzr, [x0, 3240]
3138	hint	25 // paciasp
3139.L308:
3140	ldrh	w1, [x0, 236]
3141	cmp	w1, w2
3142	bhi	.L309
3143	mov	w6, 24
3144	mov	w5, 4
3145.L310:
3146	ldr	w2, [x0, 3280]
3147	cmp	w1, w2
3148	bcc	.L311
3149	hint	29 // autiasp
3150	ret
3151.L309:
3152	ldr	x5, [x0, 3248]
3153	umull	x3, w2, w7
3154	ldr	x6, [x0, 3256]
3155	add	x1, x5, x3
3156	str	w8, [x1, 16]
3157	ldrh	w1, [x0, 314]
3158	mul	w1, w1, w2
3159	sdiv	w1, w1, w4
3160	add	x1, x6, w1, sxtw 2
3161	str	x1, [x5, x3]
3162	ldrh	w1, [x0, 316]
3163	ldr	x6, [x0, 3248]
3164	ldr	x9, [x0, 3264]
3165	mul	w1, w1, w2
3166	add	x5, x6, x3
3167	sdiv	w1, w1, w4
3168	add	x1, x9, w1, sxtw 2
3169	str	x1, [x5, 8]
3170	ldr	x1, [x0, 3272]
3171	ubfiz	x9, x2, 5, 16
3172	ldr	x3, [x6, x3]
3173	add	x1, x1, x9
3174	add	w2, w2, 1
3175	and	w2, w2, 65535
3176	str	x3, [x1, 8]
3177	ldr	x3, [x5, 8]
3178	str	x3, [x1, 16]
3179	b	.L308
3180.L311:
3181	ldr	x3, [x0, 3248]
3182	umull	x4, w1, w6
3183	ldr	x7, [x0, 3256]
3184	add	x2, x3, x4
3185	str	wzr, [x2, 16]
3186	ldrh	w2, [x0, 314]
3187	mul	w2, w2, w1
3188	sdiv	w2, w2, w5
3189	add	x2, x7, w2, sxtw 2
3190	str	x2, [x3, x4]
3191	ldrh	w2, [x0, 316]
3192	ldr	x3, [x0, 3248]
3193	mul	w2, w2, w1
3194	add	x3, x3, x4
3195	ldr	x4, [x0, 3264]
3196	add	w1, w1, 1
3197	and	w1, w1, 65535
3198	sdiv	w2, w2, w5
3199	add	x2, x4, w2, sxtw 2
3200	str	x2, [x3, 8]
3201	b	.L310
3202	.size	FtlGcBufInit, .-FtlGcBufInit
3203	.align	2
3204	.global	FtlGcBufFree
3205	.type	FtlGcBufFree, %function
3206FtlGcBufFree:
3207	hint	34 // bti c
3208	.section	__patchable_function_entries
3209	.align	3
3210	.8byte	.LPFE45
3211	.text
3212.LPFE45:
3213	nop
3214	nop
3215	adrp	x2, .LANCHOR0
3216	add	x2, x2, :lo12:.LANCHOR0
3217	mov	w3, 0
3218	mov	w8, 24
3219	hint	25 // paciasp
3220	ldr	w7, [x2, 3280]
3221	ldr	x5, [x2, 3248]
3222.L314:
3223	cmp	w3, w1
3224	bcs	.L313
3225	ubfiz	x4, x3, 5, 16
3226	mov	w2, 0
3227	add	x4, x0, x4
3228	b	.L319
3229.L315:
3230	add	w2, w2, 1
3231	and	w2, w2, 65535
3232.L319:
3233	cmp	w2, w7
3234	bcs	.L316
3235	umull	x6, w2, w8
3236	add	x9, x5, x6
3237	ldr	x10, [x5, x6]
3238	ldr	x6, [x4, 8]
3239	cmp	x10, x6
3240	bne	.L315
3241	str	wzr, [x9, 16]
3242.L316:
3243	add	w3, w3, 1
3244	and	w3, w3, 65535
3245	b	.L314
3246.L313:
3247	hint	29 // autiasp
3248	ret
3249	.size	FtlGcBufFree, .-FtlGcBufFree
3250	.align	2
3251	.global	FtlGcBufAlloc
3252	.type	FtlGcBufAlloc, %function
3253FtlGcBufAlloc:
3254	hint	34 // bti c
3255	.section	__patchable_function_entries
3256	.align	3
3257	.8byte	.LPFE46
3258	.text
3259.LPFE46:
3260	nop
3261	nop
3262	adrp	x2, .LANCHOR0
3263	add	x2, x2, :lo12:.LANCHOR0
3264	mov	w7, 24
3265	mov	w8, 1
3266	hint	25 // paciasp
3267	ldr	w6, [x2, 3280]
3268	ldr	x5, [x2, 3248]
3269	mov	w2, 0
3270.L322:
3271	cmp	w2, w1
3272	bcc	.L327
3273	hint	29 // autiasp
3274	ret
3275.L323:
3276	add	w3, w3, 1
3277	and	w3, w3, 65535
3278.L326:
3279	cmp	w3, w6
3280	bcs	.L324
3281	umaddl	x4, w3, w7, x5
3282	ldr	w9, [x4, 16]
3283	cbnz	w9, .L323
3284	ubfiz	x3, x2, 5, 16
3285	str	w8, [x4, 16]
3286	add	x3, x0, x3
3287	ldr	x9, [x4]
3288	str	x9, [x3, 8]
3289	ldr	x4, [x4, 8]
3290	str	x4, [x3, 16]
3291.L324:
3292	add	w2, w2, 1
3293	and	w2, w2, 65535
3294	b	.L322
3295.L327:
3296	mov	w3, 0
3297	b	.L326
3298	.size	FtlGcBufAlloc, .-FtlGcBufAlloc
3299	.align	2
3300	.global	IsBlkInGcList
3301	.type	IsBlkInGcList, %function
3302IsBlkInGcList:
3303	hint	34 // bti c
3304	.section	__patchable_function_entries
3305	.align	3
3306	.8byte	.LPFE47
3307	.text
3308.LPFE47:
3309	nop
3310	nop
3311	adrp	x1, .LANCHOR0
3312	add	x1, x1, :lo12:.LANCHOR0
3313	and	w0, w0, 65535
3314	hint	25 // paciasp
3315	ldr	x2, [x1, 3288]
3316	ldrh	w3, [x1, 3284]
3317	mov	x1, 0
3318	sub	x2, x2, #2
3319.L330:
3320	cmp	w3, w1, uxth
3321	bhi	.L332
3322	mov	w0, 0
3323.L329:
3324	hint	29 // autiasp
3325	ret
3326.L332:
3327	add	x1, x1, 1
3328	ldrh	w4, [x2, x1, lsl 1]
3329	cmp	w4, w0
3330	bne	.L330
3331	mov	w0, 1
3332	b	.L329
3333	.size	IsBlkInGcList, .-IsBlkInGcList
3334	.align	2
3335	.global	FtlGcUpdatePage
3336	.type	FtlGcUpdatePage, %function
3337FtlGcUpdatePage:
3338	hint	34 // bti c
3339	.section	__patchable_function_entries
3340	.align	3
3341	.8byte	.LPFE48
3342	.text
3343.LPFE48:
3344	nop
3345	nop
3346	hint	25 // paciasp
3347	stp	x29, x30, [sp, -48]!
3348	mov	x29, sp
3349	stp	x19, x20, [sp, 16]
3350	mov	w19, w0
3351	mov	w20, w2
3352	ubfx	x0, x19, 10, 16
3353	str	x21, [sp, 32]
3354	mov	w21, w1
3355	bl	P2V_block_in_plane
3356	adrp	x3, .LANCHOR0
3357	add	x3, x3, :lo12:.LANCHOR0
3358	and	w6, w0, 65535
3359	mov	x4, 0
3360	ldr	x1, [x3, 3288]
3361	ldrh	w5, [x3, 3284]
3362	sub	x7, x1, #2
3363.L336:
3364	and	w2, w4, 65535
3365	cmp	w5, w2
3366	bhi	.L338
3367	bne	.L337
3368	strh	w0, [x1, x4, lsl 1]
3369	ldrh	w0, [x3, 3284]
3370	add	w0, w0, 1
3371	strh	w0, [x3, 3284]
3372	b	.L337
3373.L338:
3374	add	x4, x4, 1
3375	ldrh	w2, [x7, x4, lsl 1]
3376	cmp	w2, w6
3377	bne	.L336
3378.L337:
3379	ldrh	w4, [x3, 3296]
3380	mov	w0, 12
3381	umull	x4, w4, w0
3382	ldr	x0, [x3, 3304]
3383	add	x0, x0, x4
3384	str	w21, [x0, 4]
3385	ldr	x0, [x3, 3304]
3386	add	x1, x0, x4
3387	str	w20, [x1, 8]
3388	str	w19, [x0, x4]
3389	ldrh	w0, [x3, 3296]
3390	add	w0, w0, 1
3391	strh	w0, [x3, 3296]
3392	ldp	x19, x20, [sp, 16]
3393	ldr	x21, [sp, 32]
3394	ldp	x29, x30, [sp], 48
3395	hint	29 // autiasp
3396	ret
3397	.size	FtlGcUpdatePage, .-FtlGcUpdatePage
3398	.section	.rodata.str1.1
3399.LC80:
3400	.string	"FtlGcRefreshBlock  0x%x\n"
3401	.text
3402	.align	2
3403	.global	FtlGcRefreshBlock
3404	.type	FtlGcRefreshBlock, %function
3405FtlGcRefreshBlock:
3406	hint	34 // bti c
3407	.section	__patchable_function_entries
3408	.align	3
3409	.8byte	.LPFE49
3410	.text
3411.LPFE49:
3412	nop
3413	nop
3414	hint	25 // paciasp
3415	stp	x29, x30, [sp, -32]!
3416	mov	x29, sp
3417	str	x19, [sp, 16]
3418	and	w19, w0, 65535
3419	mov	w1, w19
3420	adrp	x0, .LC80
3421	add	x0, x0, :lo12:.LC80
3422	bl	sftl_printk
3423	adrp	x0, .LANCHOR0
3424	add	x0, x0, :lo12:.LANCHOR0
3425	ldrh	w3, [x0, 226]
3426	cmp	w3, w19
3427	beq	.L341
3428	ldrh	w2, [x0, 224]
3429	cmp	w2, w19
3430	beq	.L341
3431	mov	w1, 65535
3432	cmp	w3, w1
3433	bne	.L342
3434	strh	w19, [x0, 226]
3435.L341:
3436	mov	w0, 0
3437	ldr	x19, [sp, 16]
3438	ldp	x29, x30, [sp], 32
3439	hint	29 // autiasp
3440	ret
3441.L342:
3442	cmp	w2, w1
3443	bne	.L341
3444	strh	w19, [x0, 224]
3445	b	.L341
3446	.size	FtlGcRefreshBlock, .-FtlGcRefreshBlock
3447	.section	.rodata.str1.1
3448.LC81:
3449	.string	"FtlGcMarkBadPhyBlk %d 0x%x\n"
3450	.text
3451	.align	2
3452	.global	FtlGcMarkBadPhyBlk
3453	.type	FtlGcMarkBadPhyBlk, %function
3454FtlGcMarkBadPhyBlk:
3455	hint	34 // bti c
3456	.section	__patchable_function_entries
3457	.align	3
3458	.8byte	.LPFE50
3459	.text
3460.LPFE50:
3461	nop
3462	nop
3463	hint	25 // paciasp
3464	stp	x29, x30, [sp, -48]!
3465	mov	x29, sp
3466	stp	x19, x20, [sp, 16]
3467	adrp	x19, .LANCHOR0
3468	add	x19, x19, :lo12:.LANCHOR0
3469	and	w20, w0, 65535
3470	str	x21, [sp, 32]
3471	mov	w0, w20
3472	bl	P2V_block_in_plane
3473	ldrh	w1, [x19, 3312]
3474	mov	w2, w20
3475	mov	w21, w0
3476	adrp	x0, .LC81
3477	add	x0, x0, :lo12:.LC81
3478	bl	sftl_printk
3479	mov	w0, w21
3480	bl	FtlGcRefreshBlock
3481	ldrh	w0, [x19, 3312]
3482	add	x2, x19, 3314
3483	mov	x1, 0
3484.L345:
3485	cmp	w0, w1, uxth
3486	bhi	.L347
3487	cmp	w0, 15
3488	bhi	.L346
3489	add	w1, w0, 1
3490	add	x19, x19, 3314
3491	strh	w1, [x19, -2]
3492	strh	w20, [x19, w0, sxtw 1]
3493	b	.L346
3494.L347:
3495	add	x1, x1, 1
3496	add	x3, x2, x1, lsl 1
3497	ldrh	w3, [x3, -2]
3498	cmp	w3, w20
3499	bne	.L345
3500.L346:
3501	mov	w0, 0
3502	ldp	x19, x20, [sp, 16]
3503	ldr	x21, [sp, 32]
3504	ldp	x29, x30, [sp], 48
3505	hint	29 // autiasp
3506	ret
3507	.size	FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
3508	.align	2
3509	.global	FtlGcReFreshBadBlk
3510	.type	FtlGcReFreshBadBlk, %function
3511FtlGcReFreshBadBlk:
3512	hint	34 // bti c
3513	.section	__patchable_function_entries
3514	.align	3
3515	.8byte	.LPFE51
3516	.text
3517.LPFE51:
3518	nop
3519	nop
3520	hint	25 // paciasp
3521	stp	x29, x30, [sp, -32]!
3522	mov	x29, sp
3523	str	x19, [sp, 16]
3524	adrp	x19, .LANCHOR0
3525	add	x19, x19, :lo12:.LANCHOR0
3526	ldrh	w0, [x19, 3312]
3527	cbz	w0, .L350
3528	ldrh	w2, [x19, 226]
3529	mov	w1, 65535
3530	cmp	w2, w1
3531	bne	.L350
3532	ldrh	w1, [x19, 3348]
3533	cmp	w1, w0
3534	bcc	.L351
3535	strh	wzr, [x19, 3348]
3536.L351:
3537	ldrh	w1, [x19, 3348]
3538	add	x0, x19, 3314
3539	ldrh	w0, [x0, x1, lsl 1]
3540	bl	P2V_block_in_plane
3541	bl	FtlGcRefreshBlock
3542	ldrh	w0, [x19, 3348]
3543	add	w0, w0, 1
3544	strh	w0, [x19, 3348]
3545.L350:
3546	mov	w0, 0
3547	ldr	x19, [sp, 16]
3548	ldp	x29, x30, [sp], 32
3549	hint	29 // autiasp
3550	ret
3551	.size	FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
3552	.align	2
3553	.global	ftl_malloc
3554	.type	ftl_malloc, %function
3555ftl_malloc:
3556	hint	34 // bti c
3557	.section	__patchable_function_entries
3558	.align	3
3559	.8byte	.LPFE52
3560	.text
3561.LPFE52:
3562	nop
3563	nop
3564	hint	25 // paciasp
3565	stp	x29, x30, [sp, -16]!
3566	mov	w1, 3265
3567	mov	x29, sp
3568	sxtw	x0, w0
3569	bl	__kmalloc
3570	ldp	x29, x30, [sp], 16
3571	hint	29 // autiasp
3572	ret
3573	.size	ftl_malloc, .-ftl_malloc
3574	.align	2
3575	.global	ftl_free
3576	.type	ftl_free, %function
3577ftl_free:
3578	hint	34 // bti c
3579	.section	__patchable_function_entries
3580	.align	3
3581	.8byte	.LPFE53
3582	.text
3583.LPFE53:
3584	nop
3585	nop
3586	hint	25 // paciasp
3587	stp	x29, x30, [sp, -16]!
3588	mov	x29, sp
3589	bl	kfree
3590	ldp	x29, x30, [sp], 16
3591	hint	29 // autiasp
3592	ret
3593	.size	ftl_free, .-ftl_free
3594	.section	.rodata.str1.1
3595.LC82:
3596	.string	"%s %p + 0x%x:"
3597.LC83:
3598	.string	"0x%08x,"
3599.LC84:
3600	.string	"0x%04x,"
3601.LC85:
3602	.string	"0x%02x,"
3603.LC86:
3604	.string	"\n"
3605	.text
3606	.align	2
3607	.global	rknand_print_hex
3608	.type	rknand_print_hex, %function
3609rknand_print_hex:
3610	hint	34 // bti c
3611	.section	__patchable_function_entries
3612	.align	3
3613	.8byte	.LPFE54
3614	.text
3615.LPFE54:
3616	nop
3617	nop
3618	hint	25 // paciasp
3619	stp	x29, x30, [sp, -96]!
3620	mov	x29, sp
3621	stp	x19, x20, [sp, 16]
3622	mov	x20, x1
3623	mov	x19, 0
3624	stp	x21, x22, [sp, 32]
3625	mov	w22, w2
3626	mov	w21, 0
3627	stp	x23, x24, [sp, 48]
3628	mov	w23, w3
3629	mov	w24, 0
3630	stp	x25, x26, [sp, 64]
3631	adrp	x26, .LC82
3632	mov	x25, x0
3633	add	x26, x26, :lo12:.LC82
3634	stp	x27, x28, [sp, 80]
3635	adrp	x27, .LC85
3636	add	x27, x27, :lo12:.LC85
3637	adrp	x28, .LC84
3638.L361:
3639	cmp	w23, w19
3640	bhi	.L367
3641	adrp	x0, .LC86
3642	add	x0, x0, :lo12:.LC86
3643	bl	sftl_printk
3644	ldp	x19, x20, [sp, 16]
3645	ldp	x21, x22, [sp, 32]
3646	ldp	x23, x24, [sp, 48]
3647	ldp	x25, x26, [sp, 64]
3648	ldp	x27, x28, [sp, 80]
3649	ldp	x29, x30, [sp], 96
3650	hint	29 // autiasp
3651	ret
3652.L367:
3653	cbnz	w21, .L362
3654	mov	w3, w24
3655	mov	x2, x20
3656	mov	x1, x25
3657	mov	x0, x26
3658	bl	sftl_printk
3659.L362:
3660	cmp	w22, 4
3661	bne	.L363
3662	ldr	w1, [x20, x19, lsl 2]
3663	adrp	x0, .LC83
3664	add	x0, x0, :lo12:.LC83
3665.L369:
3666	add	w21, w21, 1
3667	bl	sftl_printk
3668	cmp	w21, 15
3669	bls	.L366
3670	mov	w21, 0
3671	adrp	x0, .LC86
3672	add	x0, x0, :lo12:.LC86
3673	bl	sftl_printk
3674.L366:
3675	add	x19, x19, 1
3676	add	w24, w24, w22
3677	b	.L361
3678.L363:
3679	cmp	w22, 2
3680	bne	.L365
3681	ldrh	w1, [x20, x19, lsl 1]
3682	add	x0, x28, :lo12:.LC84
3683	b	.L369
3684.L365:
3685	ldrb	w1, [x20, x19]
3686	mov	x0, x27
3687	b	.L369
3688	.size	rknand_print_hex, .-rknand_print_hex
3689	.section	.rodata.str1.1
3690.LC87:
3691	.string	"%s: addr: %x is in id block!!!!!!!!!!\n"
3692.LC88:
3693	.string	"not free: w: d:"
3694.LC89:
3695	.string	"not free: w: s:"
3696	.text
3697	.align	2
3698	.global	FlashEraseBlocks
3699	.type	FlashEraseBlocks, %function
3700FlashEraseBlocks:
3701	hint	34 // bti c
3702	.section	__patchable_function_entries
3703	.align	3
3704	.8byte	.LPFE55
3705	.text
3706.LPFE55:
3707	nop
3708	nop
3709	hint	25 // paciasp
3710	stp	x29, x30, [sp, -96]!
3711	mrs	x1, sp_el0
3712	mov	x29, sp
3713	stp	x21, x22, [sp, 32]
3714	adrp	x21, .LANCHOR0
3715	add	x21, x21, :lo12:.LANCHOR0
3716	stp	x19, x20, [sp, 16]
3717	mov	x19, x0
3718	mov	w0, 32
3719	stp	x23, x24, [sp, 48]
3720	mov	x20, x19
3721	umaddl	x22, w2, w0, x19
3722	stp	x25, x26, [sp, 64]
3723	mov	w24, -1
3724	ldrh	w23, [x21, 12]
3725	ldr	x3, [x1, 1376]
3726	str	x3, [sp, 88]
3727	mov	x3, 0
3728	lsl	w26, w23, 3
3729.L371:
3730	cmp	x20, x22
3731	beq	.L375
3732	ldr	w0, [x20, 4]
3733	add	x2, sp, 80
3734	add	x1, sp, 84
3735	bl	l2p_addr_tran.isra.0
3736	ldr	w0, [sp, 80]
3737	cbnz	w0, .L372
3738	ldr	w1, [sp, 84]
3739	cmp	w26, w1
3740	bls	.L372
3741	adrp	x20, .LANCHOR1
3742	add	x20, x20, :lo12:.LANCHOR1
3743	adrp	x21, .LC87
3744	add	x20, x20, 130
3745	add	x21, x21, :lo12:.LC87
3746.L373:
3747	cmp	x19, x22
3748	bne	.L374
3749	bl	dump_stack
3750.L375:
3751	mrs	x0, sp_el0
3752	ldr	x1, [sp, 88]
3753	ldr	x2, [x0, 1376]
3754	subs	x1, x1, x2
3755	mov	x2, 0
3756	beq	.L382
3757	bl	__stack_chk_fail
3758.L374:
3759	ldr	w2, [sp, 84]
3760	mov	w0, -1
3761	str	w0, [x19]
3762	mov	x1, x20
3763	mov	x0, x21
3764	add	x19, x19, 32
3765	bl	sftl_printk
3766	ldr	x1, [x19, -24]
3767	mov	w3, 16
3768	mov	w2, 4
3769	adrp	x0, .LC88
3770	add	x0, x0, :lo12:.LC88
3771	bl	rknand_print_hex
3772	ldr	x1, [x19, -16]
3773	mov	w3, 4
3774	adrp	x0, .LC89
3775	mov	w2, w3
3776	add	x0, x0, :lo12:.LC89
3777	bl	rknand_print_hex
3778	b	.L373
3779.L372:
3780	ldr	w1, [sp, 84]
3781	ldr	x2, [x21, 3360]
3782	blr	x2
3783	cmp	w0, 0
3784	csel	w0, wzr, w24, eq
3785	str	w0, [x20]
3786	ldrh	w0, [x21, 14]
3787	cmp	w0, 4
3788	bne	.L379
3789	ldrb	w0, [sp, 80]
3790	ldr	x2, [x21, 3360]
3791	ldr	w1, [sp, 84]
3792	add	w1, w23, w1
3793	blr	x2
3794	cbz	w0, .L379
3795	str	w24, [x20]
3796.L379:
3797	add	x20, x20, 32
3798	b	.L371
3799.L382:
3800	mov	w0, 0
3801	ldp	x19, x20, [sp, 16]
3802	ldp	x21, x22, [sp, 32]
3803	ldp	x23, x24, [sp, 48]
3804	ldp	x25, x26, [sp, 64]
3805	ldp	x29, x30, [sp], 96
3806	hint	29 // autiasp
3807	ret
3808	.size	FlashEraseBlocks, .-FlashEraseBlocks
3809	.align	2
3810	.global	FtlFreeSysBlkQueueIn
3811	.type	FtlFreeSysBlkQueueIn, %function
3812FtlFreeSysBlkQueueIn:
3813	hint	34 // bti c
3814	.section	__patchable_function_entries
3815	.align	3
3816	.8byte	.LPFE56
3817	.text
3818.LPFE56:
3819	nop
3820	nop
3821	hint	25 // paciasp
3822	stp	x29, x30, [sp, -48]!
3823	mov	x29, sp
3824	str	x21, [sp, 32]
3825	and	w21, w0, 65535
3826	sub	w2, w21, #1
3827	mov	w0, 65533
3828	stp	x19, x20, [sp, 16]
3829	cmp	w0, w2, uxth
3830	bcc	.L388
3831	adrp	x19, .LANCHOR0
3832	add	x19, x19, :lo12:.LANCHOR0
3833	ldrh	w0, [x19, 462]
3834	cmp	w0, 1024
3835	beq	.L388
3836	and	w1, w1, 65535
3837	cbz	w1, .L390
3838	mov	w0, w21
3839	bl	P2V_block_in_plane
3840	and	w20, w0, 65535
3841	lsl	w1, w21, 10
3842	ldr	x0, [x19, 3400]
3843	mov	w2, 1
3844	str	w1, [x0, 4]
3845	mov	w1, w2
3846	ldr	x0, [x19, 3400]
3847	bl	FlashEraseBlocks
3848	ldr	x2, [x19, 2600]
3849	ubfiz	x0, x20, 1, 16
3850	ldrh	w1, [x2, x0]
3851	add	w1, w1, 1
3852	strh	w1, [x2, x0]
3853	ldr	w0, [x19, 2680]
3854	add	w0, w0, 1
3855	str	w0, [x19, 2680]
3856.L390:
3857	ldrh	w0, [x19, 462]
3858	add	x19, x19, 456
3859	ldrh	w1, [x19, 4]
3860	add	w0, w0, 1
3861	strh	w0, [x19, 6]
3862	ldrh	w0, [x19, 4]
3863	add	x1, x19, x1, lsl 1
3864	add	w0, w0, 1
3865	and	w0, w0, 1023
3866	strh	w0, [x19, 4]
3867	strh	w21, [x1, 8]
3868.L388:
3869	ldp	x19, x20, [sp, 16]
3870	ldr	x21, [sp, 32]
3871	ldp	x29, x30, [sp], 48
3872	hint	29 // autiasp
3873	ret
3874	.size	FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
3875	.section	.rodata.str1.1
3876.LC90:
3877	.string	"FtlFreeSysBlkQueueOut = %x, free count = %d, error\n"
3878	.text
3879	.align	2
3880	.global	FtlFreeSysBlkQueueOut
3881	.type	FtlFreeSysBlkQueueOut, %function
3882FtlFreeSysBlkQueueOut:
3883	hint	34 // bti c
3884	.section	__patchable_function_entries
3885	.align	3
3886	.8byte	.LPFE57
3887	.text
3888.LPFE57:
3889	nop
3890	nop
3891	hint	25 // paciasp
3892	stp	x29, x30, [sp, -32]!
3893	mov	x29, sp
3894	stp	x19, x20, [sp, 16]
3895	adrp	x19, .LANCHOR0
3896	add	x19, x19, :lo12:.LANCHOR0
3897	ldrh	w2, [x19, 462]
3898	cbz	w2, .L402
3899	ldrh	w3, [x19, 458]
3900	add	x0, x19, 456
3901	ldrh	w1, [x19, 458]
3902	sub	w2, w2, #1
3903	strh	w2, [x19, 462]
3904	mov	w2, 1
3905	add	x3, x0, x3, lsl 1
3906	add	w1, w1, 1
3907	ldr	x0, [x19, 3400]
3908	and	w1, w1, 1023
3909	ldrh	w20, [x3, 8]
3910	strh	w1, [x19, 458]
3911	lsl	w1, w20, 10
3912	str	w1, [x0, 4]
3913	mov	w1, w2
3914	ldr	x0, [x19, 3400]
3915	bl	FlashEraseBlocks
3916	ldr	w0, [x19, 2680]
3917	sub	w1, w20, #1
3918	add	w0, w0, 1
3919	str	w0, [x19, 2680]
3920	mov	w0, 65533
3921	cmp	w0, w1, uxth
3922	bcs	.L400
3923.L399:
3924	ldrh	w2, [x19, 462]
3925	adrp	x0, .LC90
3926	mov	w1, w20
3927	add	x0, x0, :lo12:.LC90
3928	bl	sftl_printk
3929.L401:
3930	b	.L401
3931.L402:
3932	mov	w20, 65535
3933	b	.L399
3934.L400:
3935	mov	w0, w20
3936	ldp	x19, x20, [sp, 16]
3937	ldp	x29, x30, [sp], 32
3938	hint	29 // autiasp
3939	ret
3940	.size	FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
3941	.section	.rodata.str1.1
3942.LC91:
3943	.string	"FtlFreeSysBlkQueueOut = %x, free count = %d\n"
3944	.text
3945	.align	2
3946	.global	ftl_map_blk_alloc_new_blk
3947	.type	ftl_map_blk_alloc_new_blk, %function
3948ftl_map_blk_alloc_new_blk:
3949	hint	34 // bti c
3950	.section	__patchable_function_entries
3951	.align	3
3952	.8byte	.LPFE58
3953	.text
3954.LPFE58:
3955	nop
3956	nop
3957	hint	25 // paciasp
3958	stp	x29, x30, [sp, -48]!
3959	mov	x29, sp
3960	stp	x19, x20, [sp, 16]
3961	mov	x19, x0
3962	mov	w20, 0
3963	str	x21, [sp, 32]
3964	ldrh	w1, [x0, 10]
3965	ldr	x0, [x0, 16]
3966.L405:
3967	cmp	w1, w20
3968	beq	.L411
3969	mov	x21, x0
3970	ldrh	w2, [x0], 2
3971	cbnz	w2, .L406
3972	bl	FtlFreeSysBlkQueueOut
3973	and	w1, w0, 65535
3974	sub	w2, w1, #1
3975	strh	w0, [x21]
3976	mov	w0, 65533
3977	cmp	w0, w2, uxth
3978	bcs	.L407
3979	adrp	x0, .LANCHOR0+462
3980	ldrh	w2, [x0, #:lo12:.LANCHOR0+462]
3981	adrp	x0, .LC91
3982	add	x0, x0, :lo12:.LC91
3983	bl	sftl_printk
3984.L408:
3985	b	.L408
3986.L407:
3987	ldr	w0, [x19, 48]
3988	strh	w20, [x19]
3989	add	w0, w0, 1
3990	str	w0, [x19, 48]
3991	ldrh	w0, [x19, 8]
3992	strh	wzr, [x19, 2]
3993	add	w0, w0, 1
3994	strh	w0, [x19, 8]
3995	ldrh	w0, [x19, 10]
3996	cmp	w0, w20
3997	bhi	.L409
3998.L411:
3999	adrp	x1, .LANCHOR1
4000	add	x1, x1, :lo12:.LANCHOR1
4001	adrp	x0, .LC9
4002	add	x1, x1, 147
4003	add	x0, x0, :lo12:.LC9
4004	mov	w2, 578
4005	bl	sftl_printk
4006.L409:
4007	mov	w0, 0
4008	ldp	x19, x20, [sp, 16]
4009	ldr	x21, [sp, 32]
4010	ldp	x29, x30, [sp], 48
4011	hint	29 // autiasp
4012	ret
4013.L406:
4014	add	w20, w20, 1
4015	and	w20, w20, 65535
4016	b	.L405
4017	.size	ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
4018	.align	2
4019	.global	ftl_memset
4020	.type	ftl_memset, %function
4021ftl_memset:
4022	hint	34 // bti c
4023	.section	__patchable_function_entries
4024	.align	3
4025	.8byte	.LPFE59
4026	.text
4027.LPFE59:
4028	nop
4029	nop
4030	hint	25 // paciasp
4031	stp	x29, x30, [sp, -16]!
4032	uxtw	x2, w2
4033	mov	x29, sp
4034	bl	memset
4035	ldp	x29, x30, [sp], 16
4036	hint	29 // autiasp
4037	ret
4038	.size	ftl_memset, .-ftl_memset
4039	.section	.rodata.str1.1
4040.LC92:
4041	.string	"%s error allocating memory. return -1\n"
4042	.text
4043	.align	2
4044	.global	FtlMemInit
4045	.type	FtlMemInit, %function
4046FtlMemInit:
4047	hint	34 // bti c
4048	.section	__patchable_function_entries
4049	.align	3
4050	.8byte	.LPFE60
4051	.text
4052.LPFE60:
4053	nop
4054	nop
4055	hint	25 // paciasp
4056	stp	x29, x30, [sp, -48]!
4057	mov	w0, 65535
4058	mov	x29, sp
4059	stp	x19, x20, [sp, 16]
4060	adrp	x19, .LANCHOR0
4061	add	x19, x19, :lo12:.LANCHOR0
4062	add	x4, x19, 3416
4063	add	x3, x19, 2676
4064	add	x2, x19, 2656
4065	add	x1, x19, 2636
4066	str	wzr, [x19, 2688]
4067	stp	wzr, w0, [x4, -8]
4068	mov	w0, -1
4069	strh	w0, [x19, 224]
4070	strh	w0, [x19, 226]
4071	mov	w0, 32
4072	stp	wzr, wzr, [x2, -12]
4073	stp	wzr, wzr, [x3, -8]
4074	stp	wzr, wzr, [x1, -8]
4075	stp	wzr, wzr, [x4]
4076	stp	wzr, wzr, [x1]
4077	stp	wzr, wzr, [x3, 4]
4078	stp	wzr, wzr, [x2, 4]
4079	strh	w0, [x19, 3224]
4080	mov	w0, 128
4081	str	x21, [sp, 32]
4082	strh	w0, [x19, 3226]
4083	str	wzr, [x19, 3228]
4084	strh	wzr, [x19, 3232]
4085	str	wzr, [x19, 3236]
4086	strh	wzr, [x19, 3312]
4087	strh	wzr, [x19, 3348]
4088	ldrh	w0, [x19, 310]
4089	lsl	w0, w0, 1
4090	bl	ftl_malloc
4091	ldrh	w1, [x19, 310]
4092	str	x0, [x19, 3288]
4093	mov	w0, 12
4094	mul	w0, w1, w0
4095	bl	ftl_malloc
4096	ldrh	w20, [x19, 236]
4097	str	x0, [x19, 3304]
4098	lsl	w21, w20, 7
4099	lsl	w20, w20, 5
4100	mov	w0, w21
4101	bl	ftl_malloc
4102	str	x0, [x19, 3424]
4103	mov	w0, w20
4104	bl	ftl_malloc
4105	str	x0, [x19, 3432]
4106	mov	w0, w21
4107	bl	ftl_malloc
4108	str	x0, [x19, 3440]
4109	mov	w0, w20
4110	bl	ftl_malloc
4111	str	x0, [x19, 3400]
4112	mov	w0, w20
4113	bl	ftl_malloc
4114	str	x0, [x19, 3272]
4115	ldrh	w0, [x19, 236]
4116	ldrh	w20, [x19, 314]
4117	lsl	w0, w0, 1
4118	add	w0, w0, 1
4119	str	w0, [x19, 3280]
4120	mov	w0, w20
4121	bl	ftl_malloc
4122	str	x0, [x19, 3448]
4123	mov	w0, w20
4124	bl	ftl_malloc
4125	str	x0, [x19, 3456]
4126	mov	w0, w20
4127	bl	ftl_malloc
4128	str	x0, [x19, 3464]
4129	ldr	w0, [x19, 3280]
4130	mul	w0, w20, w0
4131	bl	ftl_malloc
4132	str	x0, [x19, 3256]
4133	mov	w0, w20
4134	bl	ftl_malloc
4135	str	x0, [x19, 3472]
4136	mov	w0, w20
4137	bl	ftl_malloc
4138	str	x0, [x19, 3480]
4139	ldr	w1, [x19, 3280]
4140	mov	w0, 24
4141	mul	w0, w1, w0
4142	bl	ftl_malloc
4143	str	x0, [x19, 3248]
4144	mov	w0, w20
4145	bl	ftl_malloc
4146	str	x0, [x19, 3488]
4147	mov	w0, w20
4148	bl	ftl_malloc
4149	str	x0, [x19, 3496]
4150	ldrh	w0, [x19, 262]
4151	lsl	w0, w0, 2
4152	bl	ftl_malloc
4153	ldrh	w20, [x19, 316]
4154	str	x0, [x19, 3504]
4155	ldrh	w0, [x19, 236]
4156	mul	w20, w20, w0
4157	mov	w0, w20
4158	bl	ftl_malloc
4159	str	x0, [x19, 3512]
4160	lsl	w0, w20, 2
4161	bl	ftl_malloc
4162	str	x0, [x19, 3520]
4163	ldrh	w1, [x19, 316]
4164	ldr	w0, [x19, 3280]
4165	mul	w0, w1, w0
4166	bl	ftl_malloc
4167	str	x0, [x19, 3264]
4168	ldrh	w0, [x19, 246]
4169	ubfiz	w1, w0, 1, 15
4170	ubfiz	w0, w0, 1, 15
4171	strh	w1, [x19, 3528]
4172	bl	ftl_malloc
4173	str	x0, [x19, 3536]
4174	ldrh	w0, [x19, 3528]
4175	add	x0, x0, 547
4176	lsr	x0, x0, 9
4177	strh	w0, [x19, 3528]
4178	lsl	w0, w0, 9
4179	bl	ftl_malloc
4180	ldrh	w20, [x19, 246]
4181	str	x0, [x19, 3544]
4182	add	x0, x0, 32
4183	str	x0, [x19, 2600]
4184	lsl	w20, w20, 1
4185	mov	w0, w20
4186	bl	ftl_malloc
4187	str	x0, [x19, 3552]
4188	mov	w0, w20
4189	bl	ftl_malloc
4190	ldr	w20, [x19, 332]
4191	str	x0, [x19, 72]
4192	lsl	w20, w20, 1
4193	mov	w0, w20
4194	bl	ftl_malloc
4195	str	x0, [x19, 3560]
4196	mov	w0, w20
4197	bl	ftl_malloc
4198	str	x0, [x19, 3568]
4199	ldrh	w0, [x19, 324]
4200	lsl	w0, w0, 1
4201	bl	ftl_malloc
4202	str	x0, [x19, 352]
4203	ldrh	w0, [x19, 324]
4204	lsl	w0, w0, 1
4205	bl	ftl_malloc
4206	str	x0, [x19, 3576]
4207	ldrh	w0, [x19, 324]
4208	lsl	w0, w0, 2
4209	bl	ftl_malloc
4210	str	x0, [x19, 3584]
4211	ldrh	w0, [x19, 326]
4212	lsl	w0, w0, 2
4213	bl	ftl_malloc
4214	ldrh	w2, [x19, 326]
4215	mov	w1, 0
4216	str	x0, [x19, 3592]
4217	lsl	w2, w2, 2
4218	bl	ftl_memset
4219	ldrh	w0, [x19, 340]
4220	lsl	w0, w0, 2
4221	bl	ftl_malloc
4222	str	x0, [x19, 3600]
4223	ldr	w0, [x19, 332]
4224	lsl	w0, w0, 2
4225	bl	ftl_malloc
4226	str	x0, [x19, 3608]
4227	ldrh	w0, [x19, 342]
4228	lsl	w0, w0, 4
4229	bl	ftl_malloc
4230	ldrh	w1, [x19, 342]
4231	str	x0, [x19, 2608]
4232	ldrh	w0, [x19, 314]
4233	mul	w0, w1, w0
4234	bl	ftl_malloc
4235	str	x0, [x19, 3616]
4236	ldrh	w1, [x19, 246]
4237	mov	w0, 6
4238	mul	w0, w1, w0
4239	bl	ftl_malloc
4240	str	x0, [x19, 2560]
4241	ldrh	w0, [x19, 302]
4242	ldrh	w1, [x19, 258]
4243	add	w0, w0, 31
4244	asr	w0, w0, 5
4245	strh	w0, [x19, 3624]
4246	mul	w0, w1, w0
4247	lsl	w0, w0, 2
4248	bl	ftl_malloc
4249	ldrh	w3, [x19, 3624]
4250	add	x4, x19, 360
4251	ldrh	w1, [x19, 258]
4252	mov	x20, x0
4253	mov	w2, w3
4254	str	x0, [x4, 32]
4255	mov	x0, 0
4256.L416:
4257	add	x0, x0, 1
4258	cmp	w1, w0
4259	bhi	.L417
4260	cmp	w1, 0
4261	mov	w2, 8
4262	csinc	w1, w1, wzr, ne
4263	add	x0, x19, 360
4264	sub	w2, w2, w1
4265	add	w1, w1, 4
4266	ubfiz	x3, x1, 3, 17
4267	lsl	x2, x2, 3
4268	add	x0, x0, x3
4269	mov	w1, 0
4270	bl	memset
4271	ldr	x0, [x19, 3560]
4272	cbnz	x0, .L418
4273.L420:
4274	adrp	x1, .LANCHOR1
4275	add	x1, x1, :lo12:.LANCHOR1
4276	add	x1, x1, 173
4277	adrp	x0, .LC92
4278	add	x0, x0, :lo12:.LC92
4279	bl	sftl_printk
4280	mov	w0, -1
4281.L415:
4282	ldp	x19, x20, [sp, 16]
4283	ldr	x21, [sp, 32]
4284	ldp	x29, x30, [sp], 48
4285	hint	29 // autiasp
4286	ret
4287.L417:
4288	add	x5, x4, x0, lsl 3
4289	add	x6, x20, w2, uxtw 2
4290	add	w2, w2, w3
4291	str	x6, [x5, 32]
4292	b	.L416
4293.L418:
4294	ldr	x0, [x19, 3568]
4295	cbz	x0, .L420
4296	ldr	x0, [x19, 3600]
4297	cbz	x0, .L420
4298	ldr	x0, [x19, 3608]
4299	cbz	x0, .L420
4300	ldr	x0, [x19, 2608]
4301	cbz	x0, .L420
4302	ldr	x0, [x19, 3616]
4303	cbz	x0, .L420
4304	ldr	x0, [x19, 2560]
4305	cbz	x0, .L420
4306	cbz	x20, .L420
4307	ldr	x0, [x19, 72]
4308	cbz	x0, .L420
4309	ldr	x0, [x19, 3288]
4310	cbz	x0, .L420
4311	ldr	x0, [x19, 3304]
4312	cbz	x0, .L420
4313	ldr	x0, [x19, 3424]
4314	cbz	x0, .L420
4315	ldr	x0, [x19, 3440]
4316	cbz	x0, .L420
4317	ldr	x0, [x19, 3400]
4318	cbz	x0, .L420
4319	ldr	x0, [x19, 3272]
4320	cbz	x0, .L420
4321	ldr	x0, [x19, 3432]
4322	cbz	x0, .L420
4323	ldr	x0, [x19, 3448]
4324	cbz	x0, .L420
4325	ldr	x0, [x19, 3456]
4326	cbz	x0, .L420
4327	ldr	x0, [x19, 3464]
4328	cbz	x0, .L420
4329	ldr	x0, [x19, 3256]
4330	cbz	x0, .L420
4331	ldr	x0, [x19, 3472]
4332	cbz	x0, .L420
4333	ldr	x0, [x19, 3480]
4334	cbz	x0, .L420
4335	ldr	x0, [x19, 3248]
4336	cbz	x0, .L420
4337	ldr	x0, [x19, 3512]
4338	cbz	x0, .L420
4339	ldr	x0, [x19, 3520]
4340	cbz	x0, .L420
4341	ldr	x0, [x19, 3264]
4342	cbz	x0, .L420
4343	ldr	x0, [x19, 2600]
4344	cbz	x0, .L420
4345	ldr	x0, [x19, 3536]
4346	cbz	x0, .L420
4347	ldr	x0, [x19, 352]
4348	cbz	x0, .L420
4349	adrp	x0, .LANCHOR0
4350	add	x0, x0, :lo12:.LANCHOR0
4351	ldr	x1, [x0, 3576]
4352	cbz	x1, .L420
4353	ldr	x1, [x0, 3584]
4354	cbz	x1, .L420
4355	ldr	x0, [x0, 3592]
4356	cbz	x0, .L420
4357	mov	w0, 0
4358	b	.L415
4359	.size	FtlMemInit, .-FtlMemInit
4360	.align	2
4361	.global	FtlBbt2Bitmap
4362	.type	FtlBbt2Bitmap, %function
4363FtlBbt2Bitmap:
4364	hint	34 // bti c
4365	.section	__patchable_function_entries
4366	.align	3
4367	.8byte	.LPFE61
4368	.text
4369.LPFE61:
4370	nop
4371	nop
4372	hint	25 // paciasp
4373	stp	x29, x30, [sp, -64]!
4374	mov	x29, sp
4375	stp	x23, x24, [sp, 48]
4376	adrp	x23, .LANCHOR0
4377	add	x23, x23, :lo12:.LANCHOR0
4378	stp	x21, x22, [sp, 32]
4379	adrp	x21, .LANCHOR1
4380	add	x21, x21, :lo12:.LANCHOR1
4381	ldrh	w2, [x23, 3624]
4382	adrp	x24, .LC9
4383	add	x21, x21, 184
4384	add	x24, x24, :lo12:.LC9
4385	stp	x19, x20, [sp, 16]
4386	mov	x19, 0
4387	mov	x20, x1
4388	mov	x22, x0
4389	lsl	w2, w2, 2
4390	mov	x0, x20
4391	mov	w1, 0
4392	bl	ftl_memset
4393.L518:
4394	ldrh	w0, [x22, x19, lsl 1]
4395	mov	w1, 65535
4396	cmp	w0, w1
4397	beq	.L515
4398	ldrh	w1, [x23, 302]
4399	cmp	w1, w0
4400	bhi	.L517
4401	mov	x1, x21
4402	mov	x0, x24
4403	mov	w2, 74
4404	bl	sftl_printk
4405.L517:
4406	ldrh	w3, [x22, x19, lsl 1]
4407	mov	w2, 1
4408	add	x19, x19, 1
4409	ubfx	x1, x3, 5, 11
4410	lsl	w3, w2, w3
4411	lsl	x1, x1, 2
4412	ldr	w2, [x20, x1]
4413	orr	w2, w2, w3
4414	str	w2, [x20, x1]
4415	cmp	x19, 512
4416	bne	.L518
4417.L515:
4418	ldp	x19, x20, [sp, 16]
4419	ldp	x21, x22, [sp, 32]
4420	ldp	x23, x24, [sp, 48]
4421	ldp	x29, x30, [sp], 64
4422	hint	29 // autiasp
4423	ret
4424	.size	FtlBbt2Bitmap, .-FtlBbt2Bitmap
4425	.align	2
4426	.global	FtlBbtMemInit
4427	.type	FtlBbtMemInit, %function
4428FtlBbtMemInit:
4429	hint	34 // bti c
4430	.section	__patchable_function_entries
4431	.align	3
4432	.8byte	.LPFE62
4433	.text
4434.LPFE62:
4435	nop
4436	nop
4437	hint	25 // paciasp
4438	adrp	x0, .LANCHOR0
4439	stp	x29, x30, [sp, -16]!
4440	add	x0, x0, :lo12:.LANCHOR0
4441	mov	w1, -1
4442	mov	x29, sp
4443	mov	w2, 16
4444	add	x0, x0, 372
4445	strh	w1, [x0, -12]
4446	mov	w1, 255
4447	strh	wzr, [x0, -6]
4448	bl	ftl_memset
4449	ldp	x29, x30, [sp], 16
4450	hint	29 // autiasp
4451	ret
4452	.size	FtlBbtMemInit, .-FtlBbtMemInit
4453	.align	2
4454	.global	FtlFreeSysBlkQueueInit
4455	.type	FtlFreeSysBlkQueueInit, %function
4456FtlFreeSysBlkQueueInit:
4457	hint	34 // bti c
4458	.section	__patchable_function_entries
4459	.align	3
4460	.8byte	.LPFE63
4461	.text
4462.LPFE63:
4463	nop
4464	nop
4465	adrp	x3, .LANCHOR0
4466	add	x3, x3, :lo12:.LANCHOR0
4467	hint	25 // paciasp
4468	add	x1, x3, 456
4469	stp	x29, x30, [sp, -16]!
4470	mov	w2, 2048
4471	mov	x29, sp
4472	str	wzr, [x1, 2]
4473	mov	w1, 0
4474	strh	w0, [x3, 456]
4475	add	x0, x3, 464
4476	strh	wzr, [x3, 462]
4477	bl	ftl_memset
4478	mov	w0, 0
4479	ldp	x29, x30, [sp], 16
4480	hint	29 // autiasp
4481	ret
4482	.size	FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
4483	.align	2
4484	.global	ftl_free_no_use_map_blk
4485	.type	ftl_free_no_use_map_blk, %function
4486ftl_free_no_use_map_blk:
4487	hint	34 // bti c
4488	.section	__patchable_function_entries
4489	.align	3
4490	.8byte	.LPFE64
4491	.text
4492.LPFE64:
4493	nop
4494	nop
4495	hint	25 // paciasp
4496	stp	x29, x30, [sp, -80]!
4497	mov	w1, 0
4498	mov	x29, sp
4499	stp	x19, x20, [sp, 16]
4500	mov	x19, x0
4501	stp	x21, x22, [sp, 32]
4502	stp	x23, x24, [sp, 48]
4503	str	x25, [sp, 64]
4504	ldp	x21, x20, [x0, 32]
4505	ldrh	w2, [x0, 10]
4506	ldr	x22, [x0, 16]
4507	lsl	w2, w2, 1
4508	mov	x0, x21
4509	bl	ftl_memset
4510	mov	w0, 0
4511.L526:
4512	ldrh	w1, [x19, 6]
4513	cmp	w1, w0
4514	bhi	.L530
4515	adrp	x0, .LANCHOR0+308
4516	mov	w24, 0
4517	mov	w20, 0
4518	ldrh	w1, [x0, #:lo12:.LANCHOR0+308]
4519	ldrh	w0, [x19]
4520	strh	w1, [x21, x0, lsl 1]
4521	ldrh	w25, [x21]
4522.L531:
4523	ldrh	w0, [x19, 10]
4524	cmp	w0, w20
4525	bhi	.L534
4526	mov	w0, w24
4527	ldp	x19, x20, [sp, 16]
4528	ldp	x21, x22, [sp, 32]
4529	ldp	x23, x24, [sp, 48]
4530	ldr	x25, [sp, 64]
4531	ldp	x29, x30, [sp], 80
4532	hint	29 // autiasp
4533	ret
4534.L530:
4535	ubfiz	x1, x0, 2, 16
4536	ldr	w2, [x20, x1]
4537	mov	w1, 0
4538	ubfx	x2, x2, 10, 16
4539.L527:
4540	ldrh	w3, [x19, 10]
4541	cmp	w3, w1
4542	bhi	.L529
4543	add	w0, w0, 1
4544	and	w0, w0, 65535
4545	b	.L526
4546.L529:
4547	ubfiz	x3, x1, 1, 16
4548	ldrh	w4, [x22, x3]
4549	cmp	w4, w2
4550	bne	.L528
4551	cbz	w2, .L528
4552	ldrh	w4, [x21, x3]
4553	add	w4, w4, 1
4554	strh	w4, [x21, x3]
4555.L528:
4556	add	w1, w1, 1
4557	and	w1, w1, 65535
4558	b	.L527
4559.L534:
4560	ubfiz	x23, x20, 1, 16
4561	ldrh	w0, [x21, x23]
4562	cmp	w0, w25
4563	bcs	.L532
4564	ldrh	w1, [x22, x23]
4565	cmp	w1, 0
4566	csel	w24, w24, w20, eq
4567	csel	w25, w25, w0, eq
4568.L532:
4569	cbnz	w0, .L533
4570	ldrh	w0, [x22, x23]
4571	cbz	w0, .L533
4572	mov	w1, 1
4573	bl	FtlFreeSysBlkQueueIn
4574	strh	wzr, [x22, x23]
4575	ldrh	w0, [x19, 8]
4576	sub	w0, w0, #1
4577	strh	w0, [x19, 8]
4578.L533:
4579	add	w20, w20, 1
4580	and	w20, w20, 65535
4581	b	.L531
4582	.size	ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
4583	.align	2
4584	.global	FtlL2PDataInit
4585	.type	FtlL2PDataInit, %function
4586FtlL2PDataInit:
4587	hint	34 // bti c
4588	.section	__patchable_function_entries
4589	.align	3
4590	.8byte	.LPFE65
4591	.text
4592.LPFE65:
4593	nop
4594	nop
4595	hint	25 // paciasp
4596	stp	x29, x30, [sp, -32]!
4597	mov	w1, 0
4598	mov	x29, sp
4599	str	x19, [sp, 16]
4600	adrp	x19, .LANCHOR0
4601	add	x19, x19, :lo12:.LANCHOR0
4602	ldr	x0, [x19, 3568]
4603	ldr	w2, [x19, 332]
4604	lsl	w2, w2, 1
4605	bl	ftl_memset
4606	ldrh	w0, [x19, 342]
4607	mov	w1, 255
4608	ldrh	w2, [x19, 314]
4609	mul	w2, w2, w0
4610	ldr	x0, [x19, 3616]
4611	bl	ftl_memset
4612	mov	w0, 0
4613	mov	w4, -1
4614.L545:
4615	ldrh	w1, [x19, 342]
4616	cmp	w1, w0
4617	bhi	.L546
4618	ldr	w1, [x19, 332]
4619	strh	w1, [x19, 3642]
4620	mov	w1, -1
4621	str	w1, [x19, 3632]
4622	mov	w1, -3902
4623	strh	w1, [x19, 3636]
4624	ldrh	w1, [x19, 3696]
4625	strh	w1, [x19, 3640]
4626	ldrh	w1, [x19, 340]
4627	strh	w1, [x19, 3638]
4628	ldr	x1, [x19, 3560]
4629	str	x1, [x19, 3648]
4630	ldr	x1, [x19, 3608]
4631	str	x1, [x19, 3656]
4632	ldr	x1, [x19, 3568]
4633	str	x1, [x19, 3664]
4634	ldr	x1, [x19, 3600]
4635	str	x1, [x19, 3672]
4636	ldr	x19, [sp, 16]
4637	ldp	x29, x30, [sp], 32
4638	hint	29 // autiasp
4639	ret
4640.L546:
4641	ldr	x2, [x19, 2608]
4642	ubfiz	x1, x0, 4, 16
4643	add	x2, x2, x1
4644	str	wzr, [x2, 4]
4645	ldr	x2, [x19, 2608]
4646	strh	w4, [x2, x1]
4647	ldr	x2, [x19, 2608]
4648	ldr	x3, [x19, 3616]
4649	add	x2, x2, x1
4650	ldrh	w1, [x19, 314]
4651	mul	w1, w1, w0
4652	add	w0, w0, 1
4653	and	w0, w0, 65535
4654	sxtw	x1, w1
4655	and	x1, x1, -4
4656	add	x1, x3, x1
4657	str	x1, [x2, 8]
4658	b	.L545
4659	.size	FtlL2PDataInit, .-FtlL2PDataInit
4660	.align	2
4661	.global	FtlVariablesInit
4662	.type	FtlVariablesInit, %function
4663FtlVariablesInit:
4664	hint	34 // bti c
4665	.section	__patchable_function_entries
4666	.align	3
4667	.8byte	.LPFE66
4668	.text
4669.LPFE66:
4670	nop
4671	nop
4672	hint	25 // paciasp
4673	stp	x29, x30, [sp, -32]!
4674	mov	w0, -1
4675	mov	x29, sp
4676	str	x19, [sp, 16]
4677	adrp	x19, .LANCHOR0
4678	add	x19, x19, :lo12:.LANCHOR0
4679	mov	w1, 0
4680	strh	w0, [x19, 3698]
4681	mov	w0, -1
4682	str	w0, [x19, 3708]
4683	ldr	x0, [x19, 352]
4684	strh	wzr, [x19, 348]
4685	ldrh	w2, [x19, 324]
4686	str	wzr, [x19, 3700]
4687	str	wzr, [x19, 3704]
4688	lsl	w2, w2, 1
4689	bl	ftl_memset
4690	ldr	x0, [x19, 2600]
4691	mov	w1, 0
4692	ldrh	w2, [x19, 246]
4693	lsl	w2, w2, 1
4694	bl	ftl_memset
4695	ldr	x0, [x19, 3536]
4696	mov	w1, 0
4697	ldrh	w2, [x19, 246]
4698	lsl	w2, w2, 1
4699	bl	ftl_memset
4700	add	x0, x19, 2512
4701	mov	w2, 48
4702	mov	w1, 0
4703	bl	ftl_memset
4704	mov	w2, 512
4705	mov	w1, 0
4706	add	x0, x19, 2712
4707	bl	ftl_memset
4708	bl	FtlGcBufInit
4709	bl	FtlL2PDataInit
4710	mov	w0, 0
4711	ldr	x19, [sp, 16]
4712	ldp	x29, x30, [sp], 32
4713	hint	29 // autiasp
4714	ret
4715	.size	FtlVariablesInit, .-FtlVariablesInit
4716	.align	2
4717	.global	SupperBlkListInit
4718	.type	SupperBlkListInit, %function
4719SupperBlkListInit:
4720	hint	34 // bti c
4721	.section	__patchable_function_entries
4722	.align	3
4723	.8byte	.LPFE67
4724	.text
4725.LPFE67:
4726	nop
4727	nop
4728	hint	25 // paciasp
4729	stp	x29, x30, [sp, -112]!
4730	mov	w0, 6
4731	mov	x29, sp
4732	stp	x19, x20, [sp, 16]
4733	adrp	x19, .LANCHOR0
4734	add	x19, x19, :lo12:.LANCHOR0
4735	stp	x25, x26, [sp, 64]
4736	add	x25, x19, 264
4737	mov	w1, 0
4738	ldrh	w2, [x19, 246]
4739	mov	w20, 0
4740	mov	w26, -1
4741	stp	x21, x22, [sp, 32]
4742	mov	w21, 0
4743	stp	x23, x24, [sp, 48]
4744	mov	w23, 0
4745	mul	w2, w2, w0
4746	ldr	x0, [x19, 2560]
4747	stp	x27, x28, [sp, 80]
4748	mov	w27, 32768
4749	bl	ftl_memset
4750	strh	wzr, [x19, 228]
4751	str	xzr, [x19, 2568]
4752	str	xzr, [x19, 2576]
4753	strh	wzr, [x19, 2584]
4754	str	xzr, [x19, 2592]
4755.L551:
4756	ldrh	w0, [x19, 244]
4757	cmp	w0, w20
4758	bls	.L558
4759	ldrh	w2, [x19, 236]
4760	mov	x24, 0
4761	ldrh	w28, [x19, 306]
4762	mov	w22, 0
4763	b	.L559
4764.L553:
4765	ldrb	w0, [x25, x24]
4766	mov	w1, w20
4767	str	w2, [sp, 108]
4768	bl	V2P_block
4769	bl	FtlBbmIsBadBlock
4770	ldr	w2, [sp, 108]
4771	cbnz	w0, .L552
4772	add	w22, w28, w22
4773	and	w22, w22, 65535
4774.L552:
4775	add	x24, x24, 1
4776.L559:
4777	cmp	w2, w24, uxth
4778	bhi	.L553
4779	cbz	w22, .L554
4780	udiv	w22, w27, w22
4781.L555:
4782	ldr	x1, [x19, 2560]
4783	mov	w0, 6
4784	umaddl	x0, w20, w0, x1
4785	strh	w22, [x0, 4]
4786	ldrh	w0, [x19, 24]
4787	cmp	w0, w20
4788	beq	.L556
4789	ldrh	w0, [x19, 80]
4790	cmp	w0, w20
4791	beq	.L556
4792	ldrh	w0, [x19, 128]
4793	cmp	w0, w20
4794	beq	.L556
4795	ldr	x1, [x19, 72]
4796	ubfiz	x0, x20, 1, 16
4797	ldrh	w0, [x1, x0]
4798	cbnz	w0, .L557
4799	add	w23, w23, 1
4800	mov	w0, w20
4801	and	w23, w23, 65535
4802	bl	INSERT_FREE_LIST
4803.L556:
4804	add	w20, w20, 1
4805	and	w20, w20, 65535
4806	b	.L551
4807.L554:
4808	ldr	x1, [x19, 72]
4809	ubfiz	x0, x20, 1, 16
4810	strh	w26, [x1, x0]
4811	b	.L555
4812.L557:
4813	add	w21, w21, 1
4814	mov	w0, w20
4815	and	w21, w21, 65535
4816	bl	INSERT_DATA_LIST
4817	b	.L556
4818.L558:
4819	strh	w23, [x19, 228]
4820	strh	w21, [x19, 2584]
4821	add	w21, w21, w23
4822	cmp	w21, w0
4823	ble	.L560
4824	adrp	x1, .LANCHOR1
4825	add	x1, x1, :lo12:.LANCHOR1
4826	adrp	x0, .LC9
4827	add	x1, x1, 198
4828	add	x0, x0, :lo12:.LC9
4829	mov	w2, 2219
4830	bl	sftl_printk
4831.L560:
4832	mov	w0, 0
4833	ldp	x19, x20, [sp, 16]
4834	ldp	x21, x22, [sp, 32]
4835	ldp	x23, x24, [sp, 48]
4836	ldp	x25, x26, [sp, 64]
4837	ldp	x27, x28, [sp, 80]
4838	ldp	x29, x30, [sp], 112
4839	hint	29 // autiasp
4840	ret
4841	.size	SupperBlkListInit, .-SupperBlkListInit
4842	.align	2
4843	.global	FtlGcPageVarInit
4844	.type	FtlGcPageVarInit, %function
4845FtlGcPageVarInit:
4846	hint	34 // bti c
4847	.section	__patchable_function_entries
4848	.align	3
4849	.8byte	.LPFE68
4850	.text
4851.LPFE68:
4852	nop
4853	nop
4854	hint	25 // paciasp
4855	stp	x29, x30, [sp, -32]!
4856	mov	w1, 255
4857	mov	x29, sp
4858	str	x19, [sp, 16]
4859	adrp	x19, .LANCHOR0
4860	add	x19, x19, :lo12:.LANCHOR0
4861	ldr	x0, [x19, 3288]
4862	strh	wzr, [x19, 3284]
4863	ldrh	w2, [x19, 310]
4864	strh	wzr, [x19, 3296]
4865	lsl	w2, w2, 1
4866	bl	ftl_memset
4867	ldrh	w2, [x19, 310]
4868	mov	w0, 12
4869	mov	w1, 255
4870	mul	w2, w2, w0
4871	ldr	x0, [x19, 3304]
4872	bl	ftl_memset
4873	bl	FtlGcBufInit
4874	ldr	x19, [sp, 16]
4875	ldp	x29, x30, [sp], 32
4876	hint	29 // autiasp
4877	ret
4878	.size	FtlGcPageVarInit, .-FtlGcPageVarInit
4879	.align	2
4880	.global	FlashGetBadBlockList
4881	.type	FlashGetBadBlockList, %function
4882FlashGetBadBlockList:
4883	hint	34 // bti c
4884	.section	__patchable_function_entries
4885	.align	3
4886	.8byte	.LPFE69
4887	.text
4888.LPFE69:
4889	nop
4890	nop
4891	hint	25 // paciasp
4892	stp	x29, x30, [sp, -48]!
4893	mov	w2, 256
4894	mov	x29, sp
4895	stp	x19, x20, [sp, 16]
4896	adrp	x20, .LANCHOR0
4897	add	x20, x20, :lo12:.LANCHOR0
4898	mov	x19, x0
4899	str	x21, [sp, 32]
4900	mov	w21, w1
4901	mov	w1, 255
4902	bl	ftl_memset
4903	ldr	x2, [x20, 3352]
4904	mov	w1, w21
4905	mov	x0, x19
4906	blr	x2
4907	and	w0, w0, 65535
4908	cmp	w0, 50
4909	bls	.L565
4910	mov	x0, x19
4911	mov	w2, 256
4912	mov	w1, 255
4913	bl	ftl_memset
4914	mov	w0, 0
4915.L565:
4916	ldrh	w1, [x20, 14]
4917	cmp	w1, 4
4918	bne	.L570
4919	mov	x1, 0
4920	b	.L566
4921.L567:
4922	ldrh	w2, [x19, x1, lsl 1]
4923	lsr	w2, w2, 1
4924	strh	w2, [x19, x1, lsl 1]
4925	add	x1, x1, 1
4926.L566:
4927	cmp	w0, w1, uxth
4928	bhi	.L567
4929.L570:
4930	ldp	x19, x20, [sp, 16]
4931	ldr	x21, [sp, 32]
4932	ldp	x29, x30, [sp], 48
4933	hint	29 // autiasp
4934	ret
4935	.size	FlashGetBadBlockList, .-FlashGetBadBlockList
4936	.align	2
4937	.global	ftl_memcpy
4938	.type	ftl_memcpy, %function
4939ftl_memcpy:
4940	hint	34 // bti c
4941	.section	__patchable_function_entries
4942	.align	3
4943	.8byte	.LPFE70
4944	.text
4945.LPFE70:
4946	nop
4947	nop
4948	hint	25 // paciasp
4949	stp	x29, x30, [sp, -16]!
4950	uxtw	x2, w2
4951	mov	x29, sp
4952	bl	memcpy
4953	ldp	x29, x30, [sp], 16
4954	hint	29 // autiasp
4955	ret
4956	.size	ftl_memcpy, .-ftl_memcpy
4957	.section	.rodata.str1.1
4958.LC93:
4959	.string	"FlashReadPages %x %x error_ecc_bits %d\n"
4960.LC94:
4961	.string	"data:"
4962.LC95:
4963	.string	"spare:"
4964	.text
4965	.align	2
4966	.global	FlashReadPages
4967	.type	FlashReadPages, %function
4968FlashReadPages:
4969	hint	34 // bti c
4970	.section	__patchable_function_entries
4971	.align	3
4972	.8byte	.LPFE71
4973	.text
4974.LPFE71:
4975	nop
4976	nop
4977	hint	25 // paciasp
4978	stp	x29, x30, [sp, -96]!
4979	mrs	x2, sp_el0
4980	mov	x29, sp
4981	stp	x19, x20, [sp, 16]
4982	mov	x19, x0
4983	adrp	x20, .LANCHOR0
4984	add	x20, x20, :lo12:.LANCHOR0
4985	mov	w0, 32
4986	stp	x21, x22, [sp, 32]
4987	adrp	x22, .LANCHOR1
4988	add	x22, x22, :lo12:.LANCHOR1
4989	stp	x23, x24, [sp, 48]
4990	umaddl	x23, w1, w0, x19
4991	adrp	x24, .LC9
4992	stp	x25, x26, [sp, 64]
4993	add	x22, x22, 216
4994	ldrh	w25, [x20, 12]
4995	ldr	x3, [x2, 1376]
4996	str	x3, [sp, 88]
4997	mov	x3, 0
4998	add	x24, x24, :lo12:.LC9
4999.L575:
5000	cmp	x19, x23
5001	bne	.L588
5002	mrs	x0, sp_el0
5003	ldr	x1, [sp, 88]
5004	ldr	x2, [x0, 1376]
5005	subs	x1, x1, x2
5006	mov	x2, 0
5007	beq	.L589
5008	bl	__stack_chk_fail
5009.L588:
5010	ldr	x0, [x19, 8]
5011	cbz	x0, .L576
5012	ldr	x0, [x19, 16]
5013	cbnz	x0, .L577
5014.L576:
5015	mov	x1, x22
5016	mov	x0, x24
5017	mov	w2, 96
5018	bl	sftl_printk
5019.L577:
5020	ldr	w0, [x19, 4]
5021	add	x2, sp, 80
5022	add	x1, sp, 84
5023	bl	l2p_addr_tran.isra.0
5024	ldr	w0, [sp, 80]
5025	cmp	w0, 3
5026	bls	.L578
5027	mov	w0, -1
5028	str	w0, [x19]
5029.L579:
5030	add	x19, x19, 32
5031	b	.L575
5032.L578:
5033	ldr	x21, [x19, 8]
5034	tst	x21, 63
5035	beq	.L580
5036	ldr	x21, [x20, 3488]
5037.L580:
5038	mov	x2, x21
5039	ldr	w1, [sp, 84]
5040	ldr	x3, [x19, 16]
5041	ldr	x4, [x20, 3376]
5042	blr	x4
5043	str	w0, [x19]
5044	ldrh	w0, [x20, 14]
5045	cmp	w0, 4
5046	bne	.L582
5047	ldrb	w0, [sp, 80]
5048	add	x2, x21, 2048
5049	ldr	x4, [x20, 3376]
5050	ldr	x3, [x19, 16]
5051	ldr	w1, [sp, 84]
5052	add	x3, x3, 8
5053	add	w1, w25, w1
5054	blr	x4
5055	cmn	w0, #1
5056	beq	.L583
5057	ldr	x1, [x19, 16]
5058	ldr	w2, [x1, 12]
5059	cmn	w2, #1
5060	bne	.L584
5061	ldr	w2, [x1, 8]
5062	cmn	w2, #1
5063	bne	.L584
5064	ldr	w1, [x1]
5065	cmn	w1, #1
5066	beq	.L584
5067.L583:
5068	mov	w0, -1
5069.L615:
5070	str	w0, [x19]
5071	b	.L585
5072.L584:
5073	ldr	w1, [x19]
5074	cmn	w1, #1
5075	beq	.L585
5076	cmp	w0, 256
5077	beq	.L615
5078.L585:
5079	ldr	w3, [x19]
5080	cmp	w3, 256
5081	ccmn	w3, #1, 4, ne
5082	bne	.L582
5083	ldr	w1, [x19, 4]
5084	adrp	x0, .LC93
5085	ldr	w2, [sp, 84]
5086	add	x0, x0, :lo12:.LC93
5087	bl	sftl_printk
5088	ldr	x1, [x19, 8]
5089	cbz	x1, .L587
5090	mov	w3, 4
5091	adrp	x0, .LC94
5092	mov	w2, w3
5093	add	x0, x0, :lo12:.LC94
5094	bl	rknand_print_hex
5095.L587:
5096	ldr	x1, [x19, 16]
5097	cbz	x1, .L582
5098	mov	w3, 4
5099	adrp	x0, .LC95
5100	mov	w2, w3
5101	add	x0, x0, :lo12:.LC95
5102	bl	rknand_print_hex
5103.L582:
5104	ldr	x0, [x20, 3488]
5105	cmp	x0, x21
5106	bne	.L579
5107	ldr	x0, [x19, 8]
5108	cmp	x0, x21
5109	beq	.L579
5110	ldrh	w2, [x20, 262]
5111	mov	x1, x21
5112	lsl	w2, w2, 9
5113	bl	ftl_memcpy
5114	b	.L579
5115.L589:
5116	mov	w0, 0
5117	ldp	x19, x20, [sp, 16]
5118	ldp	x21, x22, [sp, 32]
5119	ldp	x23, x24, [sp, 48]
5120	ldp	x25, x26, [sp, 64]
5121	ldp	x29, x30, [sp], 96
5122	hint	29 // autiasp
5123	ret
5124	.size	FlashReadPages, .-FlashReadPages
5125	.align	2
5126	.global	FtlLoadFactoryBbt
5127	.type	FtlLoadFactoryBbt, %function
5128FtlLoadFactoryBbt:
5129	hint	34 // bti c
5130	.section	__patchable_function_entries
5131	.align	3
5132	.8byte	.LPFE72
5133	.text
5134.LPFE72:
5135	nop
5136	nop
5137	hint	25 // paciasp
5138	stp	x29, x30, [sp, -80]!
5139	mov	x29, sp
5140	stp	x19, x20, [sp, 16]
5141	adrp	x20, .LANCHOR0
5142	add	x20, x20, :lo12:.LANCHOR0
5143	stp	x21, x22, [sp, 32]
5144	add	x21, x20, 3712
5145	mov	w22, 0
5146	stp	x23, x24, [sp, 48]
5147	add	x23, x20, 360
5148	stp	x25, x26, [sp, 64]
5149	mov	w25, -1
5150	mov	w26, 61664
5151	ldr	x0, [x20, 3448]
5152	ldr	x24, [x20, 3512]
5153	stp	x0, x24, [x21, 8]
5154.L617:
5155	ldrh	w0, [x20, 258]
5156	cmp	w0, w22
5157	bhi	.L622
5158	mov	w0, 0
5159	ldp	x19, x20, [sp, 16]
5160	ldp	x21, x22, [sp, 32]
5161	ldp	x23, x24, [sp, 48]
5162	ldp	x25, x26, [sp, 64]
5163	ldp	x29, x30, [sp], 80
5164	hint	29 // autiasp
5165	ret
5166.L622:
5167	ldrh	w19, [x20, 302]
5168	strh	w25, [x23, 12]
5169.L619:
5170	ldrh	w0, [x20, 302]
5171	sub	w19, w19, #1
5172	and	w19, w19, 65535
5173	sub	w1, w0, #16
5174	cmp	w19, w1
5175	ble	.L620
5176	madd	w0, w0, w22, w19
5177	mov	w2, 1
5178	mov	w1, w2
5179	lsl	w0, w0, 10
5180	str	w0, [x21, 4]
5181	mov	x0, x21
5182	bl	FlashReadPages
5183	ldr	w0, [x21]
5184	cmn	w0, #1
5185	beq	.L619
5186	ldrh	w0, [x24]
5187	cmp	w0, w26
5188	bne	.L619
5189	strh	w19, [x23, 12]
5190.L620:
5191	add	w22, w22, 1
5192	add	x23, x23, 2
5193	b	.L617
5194	.size	FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
5195	.align	2
5196	.global	FtlGetLastWrittenPage
5197	.type	FtlGetLastWrittenPage, %function
5198FtlGetLastWrittenPage:
5199	hint	34 // bti c
5200	.section	__patchable_function_entries
5201	.align	3
5202	.8byte	.LPFE73
5203	.text
5204.LPFE73:
5205	nop
5206	nop
5207	hint	25 // paciasp
5208	stp	x29, x30, [sp, -176]!
5209	mov	x29, sp
5210	stp	x19, x20, [sp, 16]
5211	stp	x21, x22, [sp, 32]
5212	mov	w22, w1
5213	mrs	x1, sp_el0
5214	stp	x23, x24, [sp, 48]
5215	cmp	w22, 1
5216	ldr	x2, [x1, 1376]
5217	str	x2, [sp, 168]
5218	mov	x2, 0
5219	adrp	x1, .LANCHOR0
5220	add	x1, x1, :lo12:.LANCHOR0
5221	bne	.L628
5222	ldrh	w19, [x1, 308]
5223.L629:
5224	sub	w19, w19, #1
5225	lsl	w21, w0, 10
5226	ldr	x1, [x1, 3496]
5227	sxth	w19, w19
5228	orr	w0, w19, w0, lsl 10
5229	str	x1, [sp, 80]
5230	add	x1, sp, 104
5231	mov	w2, w22
5232	str	w0, [sp, 76]
5233	add	x0, sp, 72
5234	str	x1, [sp, 88]
5235	mov	w1, 1
5236	bl	FlashReadPages
5237	ldr	w0, [sp, 104]
5238	cmn	w0, #1
5239	bne	.L631
5240	mov	w23, 0
5241	mov	w24, 2
5242	b	.L630
5243.L628:
5244	ldrh	w19, [x1, 306]
5245	b	.L629
5246.L634:
5247	add	w0, w23, w19
5248	mov	w1, 1
5249	mov	w2, w22
5250	sdiv	w0, w0, w24
5251	sxth	w20, w0
5252	orr	w0, w0, w21
5253	str	w0, [sp, 76]
5254	add	x0, sp, 72
5255	bl	FlashReadPages
5256	ldp	w0, w1, [sp, 104]
5257	and	w0, w0, w1
5258	cmn	w0, #1
5259	bne	.L632
5260	ldr	w0, [sp, 72]
5261	cmn	w0, #1
5262	beq	.L632
5263	sub	w19, w20, #1
5264	sxth	w19, w19
5265.L630:
5266	cmp	w23, w19
5267	ble	.L634
5268.L631:
5269	mrs	x0, sp_el0
5270	ldr	x1, [sp, 168]
5271	ldr	x2, [x0, 1376]
5272	subs	x1, x1, x2
5273	mov	x2, 0
5274	beq	.L635
5275	bl	__stack_chk_fail
5276.L632:
5277	add	w20, w20, 1
5278	sxth	w23, w20
5279	b	.L630
5280.L635:
5281	mov	w0, w19
5282	ldp	x19, x20, [sp, 16]
5283	ldp	x21, x22, [sp, 32]
5284	ldp	x23, x24, [sp, 48]
5285	ldp	x29, x30, [sp], 176
5286	hint	29 // autiasp
5287	ret
5288	.size	FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
5289	.align	2
5290	.global	FtlScanSysBlk
5291	.type	FtlScanSysBlk, %function
5292FtlScanSysBlk:
5293	hint	34 // bti c
5294	.section	__patchable_function_entries
5295	.align	3
5296	.8byte	.LPFE74
5297	.text
5298.LPFE74:
5299	nop
5300	nop
5301	hint	25 // paciasp
5302	stp	x29, x30, [sp, -96]!
5303	mov	w1, 0
5304	mov	x29, sp
5305	stp	x19, x20, [sp, 16]
5306	adrp	x19, .LANCHOR0
5307	add	x19, x19, :lo12:.LANCHOR0
5308	stp	x21, x22, [sp, 32]
5309	ldr	x0, [x19, 3608]
5310	stp	x23, x24, [sp, 48]
5311	ldr	w2, [x19, 332]
5312	stp	x25, x26, [sp, 64]
5313	adrp	x24, .LANCHOR1
5314	add	x24, x24, :lo12:.LANCHOR1
5315	lsl	w2, w2, 2
5316	stp	x27, x28, [sp, 80]
5317	add	x24, x24, 231
5318	strh	wzr, [x19, 348]
5319	strh	wzr, [x19, 3696]
5320	bl	ftl_memset
5321	ldr	x0, [x19, 3560]
5322	mov	w1, 0
5323	ldr	w2, [x19, 332]
5324	lsl	w2, w2, 1
5325	bl	ftl_memset
5326	ldr	x0, [x19, 3584]
5327	mov	w1, 0
5328	ldrh	w2, [x19, 324]
5329	lsl	w2, w2, 2
5330	bl	ftl_memset
5331	ldr	x0, [x19, 352]
5332	mov	w1, 0
5333	ldrh	w2, [x19, 324]
5334	lsl	w2, w2, 1
5335	bl	ftl_memset
5336	add	x0, x19, 2696
5337	mov	w2, 16
5338	mov	w1, 255
5339	bl	ftl_memset
5340	ldrh	w23, [x19, 244]
5341.L642:
5342	ldrh	w0, [x19, 246]
5343	cmp	w0, w23
5344	bls	.L681
5345	ldrh	w28, [x19, 236]
5346	add	x26, x19, 264
5347	ldrh	w27, [x19, 316]
5348	mov	x21, 0
5349	mov	w22, 0
5350	mov	w25, 4
5351	b	.L682
5352.L644:
5353	ldrb	w0, [x26, x21]
5354	mov	w1, w23
5355	bl	V2P_block
5356	and	w20, w0, 65535
5357	bl	FtlBbmIsBadBlock
5358	cbnz	w0, .L643
5359	ldr	x0, [x19, 3424]
5360	ubfiz	x2, x22, 5, 16
5361	lsl	w20, w20, 10
5362	add	x0, x0, x2
5363	str	w20, [x0, 4]
5364	ldr	x1, [x19, 3424]
5365	ldr	x0, [x19, 3256]
5366	add	x1, x1, x2
5367	ldr	x2, [x19, 3264]
5368	str	x0, [x1, 8]
5369	mul	w0, w22, w27
5370	add	w22, w22, 1
5371	and	w22, w22, 65535
5372	sdiv	w0, w0, w25
5373	add	x0, x2, w0, sxtw 2
5374	str	x0, [x1, 16]
5375.L643:
5376	add	x21, x21, 1
5377.L682:
5378	cmp	w28, w21, uxth
5379	bhi	.L644
5380	cbnz	w22, .L645
5381.L680:
5382	add	w23, w23, 1
5383	and	w23, w23, 65535
5384	b	.L642
5385.L645:
5386	ldr	x0, [x19, 3424]
5387	adrp	x26, .LC9
5388	mov	w1, w22
5389	add	x26, x26, :lo12:.LC9
5390	mov	w2, 1
5391	mov	x25, 0
5392	bl	FlashReadPages
5393.L679:
5394	ldr	x0, [x19, 3424]
5395	lsl	x27, x25, 5
5396	add	x1, x0, x25, lsl 5
5397	ldr	w0, [x0, x27]
5398	ldr	w20, [x1, 4]
5399	ldr	x21, [x1, 16]
5400	ubfx	x20, x20, 10, 16
5401	cmn	w0, #1
5402	bne	.L648
5403	mov	w28, 16
5404.L650:
5405	ldr	x0, [x19, 3424]
5406	mov	w2, 1
5407	add	x0, x0, x27
5408	ldr	w1, [x0, 4]
5409	add	w1, w1, 1
5410	str	w1, [x0, 4]
5411	mov	w1, w2
5412	ldr	x0, [x19, 3424]
5413	add	x0, x0, x27
5414	bl	FlashReadPages
5415	ldrh	w0, [x21]
5416	mov	w3, 65535
5417	cmp	w0, w3
5418	ldr	x0, [x19, 3424]
5419	bne	.L647
5420	mov	w1, -1
5421	str	w1, [x0, x27]
5422	ldr	x0, [x19, 3424]
5423	ldr	w0, [x0, x27]
5424	cmp	w0, w1
5425	beq	.L649
5426.L648:
5427	ldr	w1, [x19, 2660]
5428	ldr	w0, [x21, 4]
5429	cmn	w1, #1
5430	beq	.L697
5431	cmp	w1, w0
5432	bhi	.L651
5433.L697:
5434	cmn	w0, #1
5435	beq	.L651
5436	add	w1, w0, 1
5437	str	w1, [x19, 2660]
5438.L651:
5439	ldrh	w1, [x21]
5440	mov	w2, 61634
5441	cmp	w1, w2
5442	beq	.L652
5443	bhi	.L653
5444	mov	w2, 61574
5445	cmp	w1, w2
5446	beq	.L654
5447	mov	w2, 61604
5448	cmp	w1, w2
5449	beq	.L655
5450.L656:
5451	add	x25, x25, 1
5452	cmp	w22, w25, uxth
5453	bhi	.L679
5454	b	.L680
5455.L647:
5456	ldr	w0, [x0, x27]
5457	cmn	w0, #1
5458	bne	.L648
5459	sub	w28, w28, #1
5460	ands	w28, w28, 65535
5461	bne	.L650
5462.L649:
5463	mov	w1, 1
5464	b	.L721
5465.L653:
5466	mov	w0, 65535
5467	cmp	w1, w0
5468	bne	.L656
5469	mov	w1, 0
5470.L721:
5471	mov	w0, w20
5472	bl	FtlFreeSysBlkQueueIn
5473	b	.L656
5474.L652:
5475	ldrh	w1, [x19, 3696]
5476	ldr	w0, [x19, 332]
5477	cmp	w1, w0
5478	bls	.L658
5479	mov	x1, x24
5480	mov	x0, x26
5481	mov	w2, 1232
5482	bl	sftl_printk
5483.L658:
5484	ldr	w4, [x19, 332]
5485	ldrh	w3, [x19, 3696]
5486	and	w0, w4, 65535
5487	sub	w1, w0, #1
5488	sub	w0, w0, w3
5489	ldr	x5, [x19, 3608]
5490	sub	w0, w0, #1
5491	sxth	w2, w1
5492	sxth	x1, w1
5493	sxth	w0, w0
5494	add	x7, x5, 4
5495.L659:
5496	cmp	w0, w2
5497	bge	.L664
5498	sub	x6, x1, #1
5499	ldr	w10, [x21, 4]
5500	lsl	x8, x1, 2
5501	ldr	w9, [x7, x6, lsl 2]
5502	cmp	w10, w9
5503	bls	.L660
5504	ldr	w0, [x5]
5505	cbnz	w0, .L661
5506	cmp	w4, w3
5507	beq	.L661
5508	add	w3, w3, 1
5509	strh	w3, [x19, 3696]
5510.L661:
5511	mov	w0, 0
5512.L662:
5513	ldr	x3, [x19, 3608]
5514	cmp	w0, w2
5515	bne	.L663
5516	ldr	w0, [x21, 4]
5517	str	w0, [x3, x8]
5518	ldr	x0, [x19, 3560]
5519	strh	w20, [x0, x1, lsl 1]
5520.L664:
5521	tbnz	w2, #31, .L656
5522	ldrh	w1, [x19, 3696]
5523	ldr	w0, [x19, 332]
5524	sub	w0, w0, w1
5525	sub	w0, w0, #1
5526	cmp	w2, w0, sxth
5527	bgt	.L656
5528	ldr	x0, [x19, 3608]
5529	add	w1, w1, 1
5530	strh	w1, [x19, 3696]
5531	ldr	w1, [x21, 4]
5532	str	w1, [x0, w2, sxtw 2]
5533	ldr	x0, [x19, 3560]
5534.L720:
5535	strh	w20, [x0, w2, sxtw 1]
5536	b	.L656
5537.L663:
5538	add	w4, w0, 1
5539	ldr	w5, [x3, w4, sxtw 2]
5540	str	w5, [x3, w0, sxtw 2]
5541	ldr	x3, [x19, 3560]
5542	ldrh	w5, [x3, w4, sxtw 1]
5543	strh	w5, [x3, w0, sxtw 1]
5544	sxth	w0, w4
5545	b	.L662
5546.L660:
5547	sub	w2, w2, #1
5548	mov	x1, x6
5549	sxth	w2, w2
5550	b	.L659
5551.L654:
5552	ldrh	w1, [x19, 348]
5553	ldrh	w0, [x19, 324]
5554	cmp	w1, w0
5555	bls	.L668
5556	mov	x1, x24
5557	mov	x0, x26
5558	mov	w2, 1273
5559	bl	sftl_printk
5560.L668:
5561	ldrh	w3, [x19, 324]
5562	ldrh	w0, [x19, 348]
5563	sub	w1, w3, #1
5564	ldr	x4, [x19, 3584]
5565	sxth	w2, w1
5566	sub	w1, w1, w0
5567.L669:
5568	cmp	w2, w1
5569	ble	.L674
5570	sbfiz	x5, x2, 2, 32
5571	ldr	w8, [x21, 4]
5572	sxtw	x6, w2
5573	ldr	w7, [x4, x5]
5574	cmp	w8, w7
5575	bls	.L670
5576	ldr	w1, [x4]
5577	cbnz	w1, .L671
5578	cmp	w3, w0
5579	beq	.L671
5580	add	w0, w0, 1
5581	strh	w0, [x19, 348]
5582.L671:
5583	mov	w0, 0
5584.L672:
5585	ldr	x1, [x19, 3584]
5586	cmp	w0, w2
5587	bne	.L673
5588	ldr	w0, [x21, 4]
5589	str	w0, [x1, x5]
5590	ldr	x0, [x19, 352]
5591	strh	w20, [x0, x6, lsl 1]
5592.L674:
5593	tbnz	w2, #31, .L656
5594	ldrh	w0, [x19, 324]
5595	ldrh	w1, [x19, 348]
5596	sub	w0, w0, #1
5597	sub	w0, w0, w1
5598	cmp	w2, w0, sxth
5599	bgt	.L656
5600	ldr	x0, [x19, 3584]
5601	add	w1, w1, 1
5602	strh	w1, [x19, 348]
5603	ldr	w1, [x21, 4]
5604	str	w1, [x0, w2, sxtw 2]
5605	ldr	x0, [x19, 352]
5606	b	.L720
5607.L673:
5608	add	w3, w0, 1
5609	ldr	w4, [x1, w3, sxtw 2]
5610	str	w4, [x1, w0, sxtw 2]
5611	ldr	x1, [x19, 352]
5612	ldrh	w4, [x1, w3, sxtw 1]
5613	strh	w4, [x1, w0, sxtw 1]
5614	sxth	w0, w3
5615	b	.L672
5616.L670:
5617	sub	w2, w2, #1
5618	sxth	w2, w2
5619	b	.L669
5620.L655:
5621	ldrh	w3, [x19, 2696]
5622	add	x1, x19, 2560
5623	mov	w2, 65535
5624	cmp	w3, w2
5625	bne	.L676
5626	strh	w20, [x1, 136]
5627	str	w0, [x1, 144]
5628	b	.L656
5629.L676:
5630	ldrh	w0, [x1, 140]
5631	cmp	w0, w2
5632	beq	.L677
5633	mov	w1, 1
5634	bl	FtlFreeSysBlkQueueIn
5635.L677:
5636	ldr	w1, [x21, 4]
5637	add	x0, x19, 2560
5638	ldr	w2, [x0, 144]
5639	cmp	w2, w1
5640	bcs	.L678
5641	ldrh	w1, [x0, 136]
5642	strh	w1, [x0, 140]
5643	strh	w20, [x0, 136]
5644	ldr	w1, [x21, 4]
5645	str	w1, [x0, 144]
5646	b	.L656
5647.L678:
5648	strh	w20, [x0, 140]
5649	b	.L656
5650.L681:
5651	ldr	x2, [x19, 3560]
5652	ldrh	w0, [x2]
5653	cbz	w0, .L683
5654.L686:
5655	ldr	x1, [x19, 352]
5656	ldrh	w0, [x1]
5657	cbz	w0, .L684
5658.L685:
5659	ldrh	w1, [x19, 3696]
5660	ldr	w0, [x19, 332]
5661	cmp	w1, w0
5662	bls	.L716
5663	adrp	x1, .LANCHOR1
5664	add	x1, x1, :lo12:.LANCHOR1
5665	adrp	x0, .LC9
5666	add	x1, x1, 231
5667	add	x0, x0, :lo12:.LC9
5668	mov	w2, 1398
5669	bl	sftl_printk
5670.L716:
5671	mov	w0, 0
5672	ldp	x19, x20, [sp, 16]
5673	ldp	x21, x22, [sp, 32]
5674	ldp	x23, x24, [sp, 48]
5675	ldp	x25, x26, [sp, 64]
5676	ldp	x27, x28, [sp, 80]
5677	ldp	x29, x30, [sp], 96
5678	hint	29 // autiasp
5679	ret
5680.L683:
5681	ldrh	w0, [x19, 3696]
5682	cbz	w0, .L686
5683	ldr	w3, [x19, 332]
5684	mov	w0, 0
5685.L687:
5686	cmp	w0, w3
5687	bcs	.L686
5688	ldrh	w4, [x2, w0, sxtw 1]
5689	add	w1, w0, 1
5690	sxth	w1, w1
5691	cbz	w4, .L699
5692	mov	w1, w0
5693.L688:
5694	ldr	x2, [x19, 3560]
5695	sub	w3, w1, w0
5696	ldrh	w4, [x2, w1, sxtw 1]
5697	strh	w4, [x2, w3, sxtw 1]
5698	ldr	x2, [x19, 3608]
5699	ldr	w4, [x2, w1, sxtw 2]
5700	str	w4, [x2, w3, sxtw 2]
5701	ldr	x2, [x19, 3560]
5702	strh	wzr, [x2, w1, sxtw 1]
5703	add	w2, w1, 1
5704	ldr	w3, [x19, 332]
5705	sxth	w1, w2
5706	cmp	w3, w2, sxth
5707	bhi	.L688
5708	b	.L686
5709.L699:
5710	mov	w0, w1
5711	b	.L687
5712.L684:
5713	ldrh	w0, [x19, 348]
5714	cbz	w0, .L685
5715	ldrh	w2, [x19, 324]
5716	mov	w0, 0
5717.L692:
5718	mov	w3, w0
5719	cmp	w0, w2
5720	bge	.L685
5721	ldrh	w4, [x1, w0, sxtw 1]
5722	cbz	w4, .L717
5723.L693:
5724	ldrh	w1, [x19, 324]
5725	cmp	w0, w1
5726	bge	.L685
5727	ldr	x1, [x19, 352]
5728	sub	w2, w0, w3
5729	ldrh	w4, [x1, w0, sxtw 1]
5730	strh	w4, [x1, w2, sxtw 1]
5731	ldr	x1, [x19, 3584]
5732	ldr	w4, [x1, w0, sxtw 2]
5733	str	w4, [x1, w2, sxtw 2]
5734	ldr	x1, [x19, 352]
5735	strh	wzr, [x1, w0, sxtw 1]
5736	add	w0, w0, 1
5737	sxth	w0, w0
5738	b	.L693
5739.L717:
5740	add	w0, w0, 1
5741	sxth	w0, w0
5742	b	.L692
5743	.size	FtlScanSysBlk, .-FtlScanSysBlk
5744	.align	2
5745	.global	FtlLoadBbt
5746	.type	FtlLoadBbt, %function
5747FtlLoadBbt:
5748	hint	34 // bti c
5749	.section	__patchable_function_entries
5750	.align	3
5751	.8byte	.LPFE75
5752	.text
5753.LPFE75:
5754	nop
5755	nop
5756	hint	25 // paciasp
5757	stp	x29, x30, [sp, -80]!
5758	mov	x29, sp
5759	stp	x19, x20, [sp, 16]
5760	adrp	x19, .LANCHOR0
5761	add	x19, x19, :lo12:.LANCHOR0
5762	stp	x21, x22, [sp, 32]
5763	add	x22, x19, 3712
5764	ldr	x0, [x19, 3448]
5765	stp	x23, x24, [sp, 48]
5766	mov	w23, 61649
5767	str	x25, [sp, 64]
5768	ldr	x21, [x19, 3512]
5769	stp	x0, x21, [x22, 8]
5770	bl	FtlBbtMemInit
5771	ldrh	w20, [x19, 302]
5772	sub	w20, w20, #1
5773	and	w20, w20, 65535
5774.L723:
5775	ldrh	w0, [x19, 302]
5776	sub	w0, w0, #16
5777	cmp	w20, w0
5778	ble	.L728
5779	lsl	w0, w20, 10
5780	mov	w2, 1
5781	mov	w1, w2
5782	str	w0, [x22, 4]
5783	mov	x0, x22
5784	bl	FlashReadPages
5785	ldr	w0, [x22]
5786	cmn	w0, #1
5787	beq	.L724
5788.L727:
5789	ldrh	w0, [x21]
5790	cmp	w0, w23
5791	bne	.L726
5792	ldr	w1, [x21, 4]
5793	str	w1, [x19, 368]
5794	strh	w20, [x19, 360]
5795	ldrh	w1, [x21, 8]
5796	strh	w1, [x19, 364]
5797.L728:
5798	ldrh	w1, [x19, 360]
5799	mov	w0, 65535
5800	cmp	w1, w0
5801	beq	.L742
5802	ldrh	w1, [x19, 364]
5803	cmp	w1, w0
5804	beq	.L732
5805	add	x0, x19, 3712
5806	lsl	w1, w1, 10
5807	mov	w2, 1
5808	str	w1, [x0, 4]
5809	mov	w1, w2
5810	bl	FlashReadPages
5811	ldr	w0, [x19, 3712]
5812	cmn	w0, #1
5813	beq	.L732
5814	ldrh	w1, [x21]
5815	mov	w0, 61649
5816	cmp	w1, w0
5817	bne	.L732
5818	ldr	w1, [x19, 368]
5819	ldr	w0, [x21, 4]
5820	cmp	w0, w1
5821	bls	.L732
5822	str	w0, [x19, 368]
5823	ldrh	w1, [x19, 364]
5824	ldrh	w0, [x21, 8]
5825	strh	w1, [x19, 360]
5826	strh	w0, [x19, 364]
5827.L732:
5828	ldrh	w0, [x19, 360]
5829	mov	w1, 1
5830	add	x23, x19, 3712
5831	mov	w20, 0
5832	mov	w25, 61649
5833	bl	FtlGetLastWrittenPage
5834	sxth	w24, w0
5835	mov	w22, w0
5836	add	w0, w24, 1
5837	strh	w0, [x19, 362]
5838.L734:
5839	sub	w0, w22, w20
5840	tbz	x0, 15, .L737
5841	adrp	x1, .LANCHOR1
5842	add	x1, x1, :lo12:.LANCHOR1
5843	adrp	x0, .LC9
5844	add	x1, x1, 245
5845	add	x0, x0, :lo12:.LC9
5846	mov	w2, 251
5847	bl	sftl_printk
5848.L736:
5849	ldrh	w0, [x21, 10]
5850	mov	w1, 65535
5851	strh	w0, [x19, 366]
5852	ldrh	w0, [x21, 12]
5853	cmp	w0, w1
5854	beq	.L739
5855	ldr	w2, [x19, 232]
5856	cmp	w0, w2
5857	beq	.L739
5858	ldrh	w1, [x19, 246]
5859	lsr	w1, w1, 2
5860	cmp	w2, w1
5861	bcs	.L739
5862	cmp	w0, w1
5863	bcs	.L739
5864	bl	FtlSysBlkNumInit
5865.L739:
5866	add	x21, x19, 360
5867	mov	x20, 0
5868.L740:
5869	ldrh	w0, [x19, 258]
5870	cmp	w0, w20
5871	bhi	.L741
5872	mov	w0, 0
5873.L722:
5874	ldp	x19, x20, [sp, 16]
5875	ldp	x21, x22, [sp, 32]
5876	ldp	x23, x24, [sp, 48]
5877	ldr	x25, [sp, 64]
5878	ldp	x29, x30, [sp], 80
5879	hint	29 // autiasp
5880	ret
5881.L724:
5882	ldr	w0, [x22, 4]
5883	mov	w2, 1
5884	mov	w1, w2
5885	add	w0, w0, 1
5886	str	w0, [x22, 4]
5887	mov	x0, x22
5888	bl	FlashReadPages
5889	ldr	w0, [x22]
5890	cmn	w0, #1
5891	bne	.L727
5892.L726:
5893	sub	w20, w20, #1
5894	and	w20, w20, 65535
5895	b	.L723
5896.L737:
5897	ldrh	w0, [x19, 360]
5898	sub	w1, w24, w20
5899	mov	w2, 1
5900	orr	w0, w1, w0, lsl 10
5901	str	w0, [x23, 4]
5902	ldr	x0, [x19, 3448]
5903	mov	w1, w2
5904	str	x0, [x23, 8]
5905	mov	x0, x23
5906	bl	FlashReadPages
5907	ldr	w0, [x23]
5908	cmn	w0, #1
5909	beq	.L735
5910	ldrh	w0, [x21]
5911	cmp	w0, w25
5912	beq	.L736
5913.L735:
5914	add	w20, w20, 1
5915	b	.L734
5916.L741:
5917	ldrh	w2, [x19, 3624]
5918	add	x0, x21, x20, lsl 3
5919	ldr	x1, [x19, 3720]
5920	ldr	x0, [x0, 32]
5921	mul	w3, w2, w20
5922	lsl	w2, w2, 2
5923	add	x20, x20, 1
5924	add	x1, x1, x3, lsl 2
5925	bl	ftl_memcpy
5926	b	.L740
5927.L742:
5928	mov	w0, -1
5929	b	.L722
5930	.size	FtlLoadBbt, .-FtlLoadBbt
5931	.section	.rodata.str1.1
5932.LC96:
5933	.string	"prog read error: = %x\n"
5934.LC97:
5935	.string	"prog read REFRESH: = %x\n"
5936.LC98:
5937	.string	"prog read s error: = %x %x %x %x %x\n"
5938.LC99:
5939	.string	"prog read d error: = %x %x %x %x %x\n"
5940	.text
5941	.align	2
5942	.global	FlashProgPages
5943	.type	FlashProgPages, %function
5944FlashProgPages:
5945	hint	34 // bti c
5946	.section	__patchable_function_entries
5947	.align	3
5948	.8byte	.LPFE76
5949	.text
5950.LPFE76:
5951	nop
5952	nop
5953	hint	25 // paciasp
5954	stp	x29, x30, [sp, -160]!
5955	mov	x29, sp
5956	stp	x19, x20, [sp, 16]
5957	adrp	x20, .LANCHOR0
5958	add	x20, x20, :lo12:.LANCHOR0
5959	stp	x21, x22, [sp, 32]
5960	mov	x19, x0
5961	mov	w0, 32
5962	stp	x23, x24, [sp, 48]
5963	adrp	x23, .LANCHOR1
5964	umaddl	x22, w1, w0, x19
5965	stp	x25, x26, [sp, 64]
5966	add	x23, x23, :lo12:.LANCHOR1
5967	mov	w25, w2
5968	stp	x27, x28, [sp, 80]
5969	mrs	x2, sp_el0
5970	adrp	x26, .LC9
5971	ldrh	w27, [x20, 12]
5972	ldr	x3, [x2, 1376]
5973	str	x3, [sp, 152]
5974	mov	x3, 0
5975	mov	x21, x19
5976	add	x23, x23, 256
5977	add	x26, x26, :lo12:.LC9
5978	lsl	w28, w27, 3
5979.L755:
5980	cmp	x21, x22
5981	bne	.L769
5982	adrp	x21, .LC96
5983	adrp	x23, .LC97
5984	add	x21, x21, :lo12:.LC96
5985	add	x23, x23, :lo12:.LC97
5986.L770:
5987	cmp	x19, x22
5988	beq	.L763
5989	ldr	x0, [x20, 3488]
5990	mov	w2, w25
5991	mov	w1, 1
5992	str	wzr, [x0]
5993	ldr	x0, [x20, 3504]
5994	str	wzr, [x0]
5995	ldr	w0, [x19, 4]
5996	str	w0, [sp, 124]
5997	ldr	x0, [x20, 3488]
5998	str	x0, [sp, 128]
5999	ldr	x0, [x20, 3504]
6000	str	x0, [sp, 136]
6001	add	x0, sp, 120
6002	bl	FlashReadPages
6003	ldr	w24, [sp, 120]
6004	cmn	w24, #1
6005	bne	.L771
6006	ldr	w1, [x19, 4]
6007	mov	x0, x21
6008	bl	sftl_printk
6009	str	w24, [x19]
6010.L771:
6011	ldr	w24, [sp, 120]
6012	cmp	w24, 256
6013	bne	.L772
6014	ldr	w1, [x19, 4]
6015	mov	x0, x23
6016	bl	sftl_printk
6017	str	w24, [x19]
6018.L772:
6019	ldr	x1, [x19, 16]
6020	cbz	x1, .L773
6021	ldr	x0, [x20, 3504]
6022	ldr	w2, [x1]
6023	ldr	w4, [x0]
6024	cmp	w2, w4
6025	bne	.L774
6026	ldr	w3, [x0, 8]
6027	ldr	w5, [x1, 8]
6028	cmp	w5, w3
6029	beq	.L773
6030.L774:
6031	ldr	w5, [x0, 4]
6032	adrp	x0, .LC98
6033	ldr	w3, [x1, 4]
6034	add	x0, x0, :lo12:.LC98
6035	ldr	w1, [x19, 4]
6036	bl	sftl_printk
6037	mov	w0, -1
6038	str	w0, [x19]
6039.L773:
6040	ldr	x1, [x19, 8]
6041	cbz	x1, .L775
6042	ldr	x0, [x20, 3488]
6043	ldr	w2, [x1]
6044	ldr	w4, [x0]
6045	cmp	w2, w4
6046	bne	.L776
6047	ldr	w3, [x0, 2048]
6048	ldr	w5, [x1, 2048]
6049	cmp	w5, w3
6050	beq	.L775
6051.L776:
6052	ldr	w5, [x0, 4]
6053	adrp	x0, .LC99
6054	ldr	w3, [x1, 4]
6055	add	x0, x0, :lo12:.LC99
6056	ldr	w1, [x19, 4]
6057	bl	sftl_printk
6058	mov	w0, -1
6059	str	w0, [x19]
6060.L775:
6061	add	x19, x19, 32
6062	b	.L770
6063.L769:
6064	ldr	x0, [x21, 8]
6065	cbz	x0, .L756
6066	ldr	x0, [x21, 16]
6067	cbnz	x0, .L757
6068.L756:
6069	mov	x1, x23
6070	mov	x0, x26
6071	mov	w2, 148
6072	bl	sftl_printk
6073.L757:
6074	ldr	w0, [x21, 4]
6075	add	x2, sp, 112
6076	add	x1, sp, 116
6077	bl	l2p_addr_tran.isra.0
6078	ldr	w0, [sp, 112]
6079	cmp	w0, 3
6080	bls	.L758
6081	mov	w0, -1
6082	str	w0, [x21]
6083.L759:
6084	add	x21, x21, 32
6085	b	.L755
6086.L758:
6087	cbnz	w0, .L760
6088	ldr	w0, [sp, 116]
6089	cmp	w28, w0
6090	bls	.L760
6091	adrp	x20, .LANCHOR1
6092	add	x20, x20, :lo12:.LANCHOR1
6093	adrp	x21, .LC87
6094	add	x20, x20, 256
6095	add	x21, x21, :lo12:.LC87
6096.L761:
6097	cmp	x19, x22
6098	bne	.L762
6099	bl	dump_stack
6100.L763:
6101	mrs	x0, sp_el0
6102	ldr	x1, [sp, 152]
6103	ldr	x2, [x0, 1376]
6104	subs	x1, x1, x2
6105	mov	x2, 0
6106	beq	.L778
6107	bl	__stack_chk_fail
6108.L762:
6109	ldr	w2, [x19, 4]
6110	mov	w0, -1
6111	str	w0, [x19]
6112	mov	x1, x20
6113	mov	x0, x21
6114	add	x19, x19, 32
6115	bl	sftl_printk
6116	ldr	x1, [x19, -24]
6117	mov	w3, 16
6118	mov	w2, 4
6119	adrp	x0, .LC88
6120	add	x0, x0, :lo12:.LC88
6121	bl	rknand_print_hex
6122	ldr	x1, [x19, -16]
6123	mov	w3, 4
6124	adrp	x0, .LC89
6125	mov	w2, w3
6126	add	x0, x0, :lo12:.LC89
6127	bl	rknand_print_hex
6128	b	.L761
6129.L760:
6130	ldr	x1, [x21, 8]
6131	tst	x1, 63
6132	beq	.L779
6133	ldr	x24, [x20, 3488]
6134	cmp	x24, x1
6135	beq	.L764
6136	ldrh	w2, [x20, 262]
6137	mov	x0, x24
6138	lsl	w2, w2, 9
6139	bl	ftl_memcpy
6140.L764:
6141	ldrb	w0, [sp, 112]
6142	add	x5, x20, 3352
6143	ldr	w1, [sp, 116]
6144	mov	x2, x24
6145	ldr	x3, [x21, 16]
6146	str	x5, [sp, 104]
6147	ldr	x4, [x20, 3368]
6148	blr	x4
6149	cmp	w0, 0
6150	mov	w4, -1
6151	csel	w0, wzr, w4, eq
6152	str	w0, [x21]
6153	ldr	x5, [sp, 104]
6154	ldrh	w0, [x20, 14]
6155	cmp	w0, 4
6156	bne	.L759
6157	ldrb	w0, [sp, 112]
6158	add	x2, x24, 2048
6159	ldr	x5, [x5, 16]
6160	ldr	x3, [x21, 16]
6161	ldr	w1, [sp, 116]
6162	add	x3, x3, 8
6163	add	w1, w27, w1
6164	blr	x5
6165	cbz	w0, .L759
6166	mov	w4, -1
6167	str	w4, [x21]
6168	b	.L759
6169.L779:
6170	mov	x24, x1
6171	b	.L764
6172.L778:
6173	mov	w0, 0
6174	ldp	x19, x20, [sp, 16]
6175	ldp	x21, x22, [sp, 32]
6176	ldp	x23, x24, [sp, 48]
6177	ldp	x25, x26, [sp, 64]
6178	ldp	x27, x28, [sp, 80]
6179	ldp	x29, x30, [sp], 160
6180	hint	29 // autiasp
6181	ret
6182	.size	FlashProgPages, .-FlashProgPages
6183	.align	2
6184	.global	FtlLowFormatEraseBlock
6185	.type	FtlLowFormatEraseBlock, %function
6186FtlLowFormatEraseBlock:
6187	hint	34 // bti c
6188	.section	__patchable_function_entries
6189	.align	3
6190	.8byte	.LPFE77
6191	.text
6192.LPFE77:
6193	nop
6194	nop
6195	hint	25 // paciasp
6196	stp	x29, x30, [sp, -112]!
6197	adrp	x4, .LANCHOR0
6198	mov	x29, sp
6199	stp	x27, x28, [sp, 80]
6200	add	x28, x4, :lo12:.LANCHOR0
6201	stp	x21, x22, [sp, 32]
6202	and	w21, w1, 255
6203	and	w22, w0, 65535
6204	stp	x23, x24, [sp, 48]
6205	add	x24, x28, 264
6206	mov	w23, 0
6207	stp	x19, x20, [sp, 16]
6208	mov	w20, 0
6209	mov	w19, 0
6210	stp	x25, x26, [sp, 64]
6211	mov	w25, 4
6212	str	w22, [x28, 3420]
6213.L795:
6214	ldrh	w0, [x28, 236]
6215	cmp	w0, w23
6216	bhi	.L799
6217	cbz	w20, .L794
6218	ldr	x0, [x28, 3400]
6219	mov	w2, w20
6220	mov	w1, 0
6221	mov	x23, 0
6222	bl	FlashEraseBlocks
6223.L803:
6224	ldr	x1, [x28, 3400]
6225	lsl	x0, x23, 5
6226	ldr	w0, [x1, x0]
6227	add	x2, x1, x23, lsl 5
6228	cmn	w0, #1
6229	bne	.L802
6230	ldr	w0, [x2, 4]
6231	add	w19, w19, 1
6232	and	w19, w19, 65535
6233	ubfx	x0, x0, 10, 16
6234	bl	FtlBbmMapBadBlock
6235.L802:
6236	add	x23, x23, 1
6237	cmp	w20, w23, uxth
6238	bhi	.L803
6239	cbz	w21, .L816
6240	ldrh	w26, [x28, 308]
6241	mov	w24, 1
6242.L804:
6243	add	x0, x28, 264
6244	mov	w23, 0
6245	str	x0, [sp, 96]
6246.L812:
6247	mov	w27, 0
6248	mov	w20, 0
6249.L805:
6250	ldrh	w0, [x28, 236]
6251	cmp	w0, w27
6252	bhi	.L808
6253	cbz	w20, .L794
6254	ldr	x0, [x28, 3400]
6255	mov	w2, w24
6256	mov	w1, w20
6257	mov	w3, 1
6258	mov	x25, 0
6259	bl	FlashProgPages
6260.L811:
6261	ldr	x1, [x28, 3400]
6262	lsl	x0, x25, 5
6263	ldr	w0, [x1, x0]
6264	add	x2, x1, x25, lsl 5
6265	cbz	w0, .L810
6266	ldr	w0, [x2, 4]
6267	add	w19, w19, 1
6268	and	w19, w19, 65535
6269	ubfx	x0, x0, 10, 16
6270	bl	FtlBbmMapBadBlock
6271.L810:
6272	add	x25, x25, 1
6273	cmp	w20, w25, uxth
6274	bhi	.L811
6275	add	w23, w23, 1
6276	cmp	w26, w23, uxth
6277	bhi	.L812
6278	mov	x23, 0
6279.L814:
6280	cbz	w21, .L813
6281	ldr	x1, [x28, 3400]
6282	lsl	x0, x23, 5
6283	ldr	w0, [x1, x0]
6284	add	x2, x1, x23, lsl 5
6285	cbnz	w0, .L813
6286	ldr	w0, [x2, 4]
6287	mov	w1, 1
6288	ubfx	x0, x0, 10, 16
6289	bl	FtlFreeSysBlkQueueIn
6290.L813:
6291	add	x23, x23, 1
6292	cmp	w20, w23, uxth
6293	bhi	.L814
6294	cmp	w22, 63
6295	ccmp	w21, 0, 0, hi
6296	beq	.L794
6297	ldr	x0, [x28, 3400]
6298	mov	w2, w20
6299	mov	w1, w24
6300	bl	FlashEraseBlocks
6301.L794:
6302	mov	w0, w19
6303	ldp	x19, x20, [sp, 16]
6304	ldp	x21, x22, [sp, 32]
6305	ldp	x23, x24, [sp, 48]
6306	ldp	x25, x26, [sp, 64]
6307	ldp	x27, x28, [sp, 80]
6308	ldp	x29, x30, [sp], 112
6309	hint	29 // autiasp
6310	ret
6311.L799:
6312	ldr	x1, [x28, 3400]
6313	ubfiz	x0, x23, 5, 16
6314	str	wzr, [x1, x0]
6315	mov	w1, w22
6316	ldrb	w0, [x24, w23, sxtw]
6317	bl	V2P_block
6318	and	w27, w0, 65535
6319	mov	w26, w27
6320	cbz	w21, .L796
6321	bl	IsBlkInVendorPart
6322	cbnz	w0, .L797
6323.L796:
6324	mov	w0, w26
6325	bl	FtlBbmIsBadBlock
6326	cbnz	w0, .L798
6327	ldr	x0, [x28, 3400]
6328	ubfiz	x2, x20, 5, 16
6329	lsl	w27, w27, 10
6330	add	x0, x0, x2
6331	str	w27, [x0, 4]
6332	ldr	x1, [x28, 3400]
6333	ldr	x0, [x28, 3480]
6334	add	x1, x1, x2
6335	ldr	x2, [x28, 3520]
6336	str	x0, [x1, 8]
6337	ldrh	w0, [x28, 316]
6338	mul	w0, w0, w20
6339	add	w20, w20, 1
6340	and	w20, w20, 65535
6341	sdiv	w0, w0, w25
6342	add	x0, x2, w0, sxtw 2
6343	str	x0, [x1, 16]
6344.L797:
6345	add	w23, w23, 1
6346	and	w23, w23, 65535
6347	b	.L795
6348.L798:
6349	add	w19, w19, 1
6350	and	w19, w19, 65535
6351	b	.L797
6352.L816:
6353	mov	w24, 0
6354	mov	w26, 2
6355	b	.L804
6356.L808:
6357	ldr	x1, [x28, 3400]
6358	ubfiz	x0, x27, 5, 16
6359	str	wzr, [x1, x0]
6360	mov	w1, w22
6361	ldr	x0, [sp, 96]
6362	ldrb	w0, [x0, w27, sxtw]
6363	bl	V2P_block
6364	and	w25, w0, 65535
6365	mov	w1, w25
6366	cbz	w21, .L806
6367	str	w25, [sp, 108]
6368	bl	IsBlkInVendorPart
6369	ldr	w1, [sp, 108]
6370	cbnz	w0, .L807
6371.L806:
6372	mov	w0, w1
6373	bl	FtlBbmIsBadBlock
6374	cbnz	w0, .L807
6375	ldr	x0, [x28, 3400]
6376	ubfiz	x3, x20, 5, 16
6377	add	w25, w23, w25, lsl 10
6378	mov	w2, 4
6379	add	x0, x0, x3
6380	str	w25, [x0, 4]
6381	ldr	x1, [x28, 3400]
6382	ldr	x0, [x28, 3472]
6383	add	x1, x1, x3
6384	ldr	x3, [x28, 3480]
6385	str	x0, [x1, 8]
6386	ldrh	w0, [x28, 316]
6387	mul	w0, w0, w20
6388	add	w20, w20, 1
6389	and	w20, w20, 65535
6390	sdiv	w0, w0, w2
6391	add	x0, x3, w0, sxtw 2
6392	str	x0, [x1, 16]
6393.L807:
6394	add	w2, w27, 1
6395	and	w27, w2, 65535
6396	b	.L805
6397	.size	FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
6398	.align	2
6399	.global	FlashTestBlk
6400	.type	FlashTestBlk, %function
6401FlashTestBlk:
6402	hint	34 // bti c
6403	.section	__patchable_function_entries
6404	.align	3
6405	.8byte	.LPFE78
6406	.text
6407.LPFE78:
6408	nop
6409	nop
6410	hint	25 // paciasp
6411	stp	x29, x30, [sp, -144]!
6412	mov	x29, sp
6413	stp	x19, x20, [sp, 16]
6414	and	w19, w0, 65535
6415	mrs	x0, sp_el0
6416	ldr	x1, [x0, 1376]
6417	str	x1, [sp, 136]
6418	mov	x1, 0
6419	cmp	w19, 11
6420	bls	.L841
6421	adrp	x20, .LANCHOR0
6422	add	x20, x20, :lo12:.LANCHOR0
6423	mov	w2, 32
6424	mov	w1, 165
6425	lsl	w19, w19, 10
6426	ldr	x0, [x20, 3496]
6427	str	x0, [sp, 48]
6428	add	x0, sp, 72
6429	str	x0, [sp, 56]
6430	bl	ftl_memset
6431	ldr	x0, [x20, 3496]
6432	mov	w2, 8
6433	mov	w1, 90
6434	bl	ftl_memset
6435	add	x0, sp, 40
6436	mov	w2, 1
6437	mov	w1, w2
6438	str	w19, [sp, 44]
6439	bl	FlashEraseBlocks
6440	mov	w3, 1
6441	add	x0, sp, 40
6442	mov	w2, w3
6443	mov	w1, w3
6444	bl	FlashProgPages
6445	ldr	w0, [sp, 40]
6446	cbnz	w0, .L842
6447	add	w0, w19, 1
6448	mov	w3, 1
6449	mov	w2, w3
6450	mov	w1, w3
6451	str	w0, [sp, 44]
6452	add	x0, sp, 40
6453	bl	FlashProgPages
6454	ldr	w0, [sp, 40]
6455	cmp	w0, 0
6456	csetm	w20, ne
6457.L839:
6458	add	x0, sp, 40
6459	mov	w2, 1
6460	mov	w1, 0
6461	str	w19, [sp, 44]
6462	bl	FlashEraseBlocks
6463.L837:
6464	mrs	x0, sp_el0
6465	ldr	x1, [sp, 136]
6466	ldr	x2, [x0, 1376]
6467	subs	x1, x1, x2
6468	mov	x2, 0
6469	beq	.L840
6470	bl	__stack_chk_fail
6471.L842:
6472	mov	w20, -1
6473	b	.L839
6474.L841:
6475	mov	w20, 0
6476	b	.L837
6477.L840:
6478	mov	w0, w20
6479	ldp	x19, x20, [sp, 16]
6480	ldp	x29, x30, [sp], 144
6481	hint	29 // autiasp
6482	ret
6483	.size	FlashTestBlk, .-FlashTestBlk
6484	.section	.rodata.str1.1
6485.LC100:
6486	.string	"FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\n"
6487.LC101:
6488	.string	"FtlBbmTblFlush error:%x\n"
6489.LC102:
6490	.string	"FtlBbmTblFlush error = %x error count = %d\n"
6491	.text
6492	.align	2
6493	.global	FtlBbmTblFlush
6494	.type	FtlBbmTblFlush, %function
6495FtlBbmTblFlush:
6496	hint	34 // bti c
6497	.section	__patchable_function_entries
6498	.align	3
6499	.8byte	.LPFE79
6500	.text
6501.LPFE79:
6502	nop
6503	nop
6504	hint	25 // paciasp
6505	stp	x29, x30, [sp, -80]!
6506	mov	w1, 0
6507	mov	x29, sp
6508	stp	x19, x20, [sp, 16]
6509	adrp	x19, .LANCHOR0
6510	add	x19, x19, :lo12:.LANCHOR0
6511	mov	x20, 0
6512	stp	x21, x22, [sp, 32]
6513	add	x22, x19, 360
6514	ldr	x2, [x19, 3512]
6515	str	x2, [x19, 3728]
6516	ldrh	w2, [x19, 314]
6517	ldr	x0, [x19, 3448]
6518	stp	x23, x24, [sp, 48]
6519	stp	x25, x26, [sp, 64]
6520	str	x0, [x19, 3720]
6521	bl	ftl_memset
6522.L845:
6523	ldrh	w0, [x19, 258]
6524	add	x1, x19, 3712
6525	cmp	w0, w20
6526	bgt	.L846
6527	ldr	x21, [x1, 16]
6528	mov	w2, 16
6529	mov	w1, 255
6530	adrp	x25, .LC100
6531	mov	x0, x21
6532	bl	ftl_memset
6533	mov	w0, -3887
6534	strh	w0, [x21]
6535	adrp	x26, .LC101
6536	add	x20, x19, 360
6537	ldr	w0, [x22, 8]
6538	add	x25, x25, :lo12:.LC100
6539	str	w0, [x21, 4]
6540	add	x26, x26, :lo12:.LC101
6541	ldrh	w0, [x19, 360]
6542	mov	w24, 0
6543	strh	w0, [x21, 2]
6544	ldr	w0, [x22, 4]
6545	mov	w22, 0
6546	str	w0, [x21, 8]
6547	ldr	w0, [x19, 232]
6548	strh	w0, [x21, 12]
6549	ldr	w0, [x19, 2676]
6550	strh	w0, [x21, 14]
6551.L847:
6552	ldr	x0, [x19, 3448]
6553	str	x0, [x19, 3720]
6554	ldr	x0, [x19, 3512]
6555	str	x0, [x19, 3728]
6556	ldrh	w1, [x20]
6557	ldrh	w2, [x20, 2]
6558	ldrh	w3, [x20, 4]
6559	ldrh	w4, [x21, 10]
6560	orr	w0, w2, w1, lsl 10
6561	str	wzr, [x19, 3712]
6562	str	w0, [x19, 3716]
6563	mov	x0, x25
6564	bl	sftl_printk
6565	ldrh	w0, [x19, 308]
6566	ldrh	w1, [x20, 2]
6567	sub	w0, w0, #1
6568	cmp	w1, w0
6569	blt	.L848
6570	ldr	w0, [x20, 8]
6571	mov	w2, 1
6572	strh	wzr, [x20, 2]
6573	add	w0, w0, 1
6574	str	w0, [x20, 8]
6575	str	w0, [x21, 4]
6576	ldrh	w0, [x20]
6577	ldrh	w1, [x20, 4]
6578	strh	w0, [x20, 4]
6579	strh	w0, [x21, 8]
6580	ldr	x0, [x19, 3400]
6581	strh	w1, [x20]
6582	lsl	w1, w1, 10
6583	str	w1, [x19, 3716]
6584	str	w1, [x0, 4]
6585	mov	w1, w2
6586	ldr	x0, [x19, 3400]
6587	bl	FlashEraseBlocks
6588.L848:
6589	add	x23, x19, 3712
6590	mov	w3, 1
6591	mov	x0, x23
6592	mov	w2, w3
6593	mov	w1, w3
6594	bl	FlashProgPages
6595	ldrh	w0, [x20, 2]
6596	add	w0, w0, 1
6597	strh	w0, [x20, 2]
6598	ldr	w0, [x19, 3712]
6599	cmn	w0, #1
6600	bne	.L849
6601	ldr	w1, [x19, 3716]
6602	add	w22, w22, 1
6603	and	w22, w22, 65535
6604	mov	x0, x26
6605	bl	sftl_printk
6606	cmp	w22, 3
6607	bls	.L847
6608	ldr	w1, [x19, 3716]
6609	adrp	x0, .LC102
6610	mov	w2, w22
6611	add	x0, x0, :lo12:.LC102
6612	bl	sftl_printk
6613.L851:
6614	b	.L851
6615.L846:
6616	ldrh	w2, [x19, 3624]
6617	add	x4, x22, x20, lsl 3
6618	ldr	x0, [x1, 8]
6619	ldr	x1, [x4, 32]
6620	mul	w3, w2, w20
6621	lsl	w2, w2, 2
6622	add	x20, x20, 1
6623	add	x0, x0, w3, sxtw 2
6624	bl	ftl_memcpy
6625	b	.L845
6626.L849:
6627	add	w24, w24, 1
6628	cmp	w24, 1
6629	ble	.L847
6630	cmp	w0, 256
6631	beq	.L847
6632	mov	w0, 0
6633	ldp	x19, x20, [sp, 16]
6634	ldp	x21, x22, [sp, 32]
6635	ldp	x23, x24, [sp, 48]
6636	ldp	x25, x26, [sp, 64]
6637	ldp	x29, x30, [sp], 80
6638	hint	29 // autiasp
6639	ret
6640	.size	FtlBbmTblFlush, .-FtlBbmTblFlush
6641	.align	2
6642	.global	allocate_data_superblock
6643	.type	allocate_data_superblock, %function
6644allocate_data_superblock:
6645	hint	34 // bti c
6646	.section	__patchable_function_entries
6647	.align	3
6648	.8byte	.LPFE80
6649	.text
6650.LPFE80:
6651	nop
6652	nop
6653	hint	25 // paciasp
6654	stp	x29, x30, [sp, -112]!
6655	mov	x29, sp
6656	stp	x19, x20, [sp, 16]
6657	adrp	x19, .LANCHOR0
6658	add	x19, x19, :lo12:.LANCHOR0
6659	mov	x20, x0
6660	stp	x23, x24, [sp, 48]
6661	adrp	x23, .LANCHOR1
6662	add	x23, x23, :lo12:.LANCHOR1
6663	stp	x25, x26, [sp, 64]
6664	add	x25, x19, 128
6665	stp	x21, x22, [sp, 32]
6666	stp	x27, x28, [sp, 80]
6667.L857:
6668	ldrh	w1, [x19, 2584]
6669	ldrh	w0, [x19, 228]
6670	add	w0, w0, w1
6671	ldrh	w1, [x19, 244]
6672	cmp	w0, w1
6673	ble	.L858
6674	adrp	x0, .LC9
6675	add	x1, x23, 271
6676	add	x0, x0, :lo12:.LC9
6677	mov	w2, 2667
6678	bl	sftl_printk
6679.L858:
6680	cmp	x20, x25
6681	bne	.L883
6682	ldrh	w1, [x19, 228]
6683	mov	w2, 65535
6684	ldr	w0, [x19, 3236]
6685	mul	w0, w1, w0
6686	lsr	w1, w1, 1
6687	add	w0, w1, w0, lsr 2
6688	and	w1, w0, 65535
6689	cmp	w2, w0, uxth
6690	csel	w1, w1, wzr, ne
6691.L859:
6692	add	x0, x19, 2592
6693	bl	List_pop_index_node
6694	and	w22, w0, 65535
6695	ldrh	w0, [x19, 228]
6696	cbnz	w0, .L860
6697	adrp	x0, .LC9
6698	add	x1, x23, 271
6699	add	x0, x0, :lo12:.LC9
6700	mov	w2, 2676
6701	bl	sftl_printk
6702.L860:
6703	ldrh	w0, [x19, 228]
6704	sub	w0, w0, #1
6705	strh	w0, [x19, 228]
6706	ldrh	w0, [x19, 244]
6707	cmp	w0, w22
6708	bls	.L857
6709	ldr	x0, [x19, 72]
6710	ubfiz	x24, x22, 1, 16
6711	ldrh	w21, [x0, x24]
6712	cbnz	w21, .L857
6713	strh	w22, [x20]
6714	mov	x0, x20
6715	bl	make_superblock
6716	ldrb	w0, [x20, 7]
6717	cbnz	w0, .L862
6718	ldr	x0, [x19, 72]
6719	mov	w1, -1
6720	strh	w1, [x0, x24]
6721	mov	w0, w22
6722	bl	INSERT_DATA_LIST
6723	ldrh	w1, [x19, 2584]
6724	ldrh	w0, [x19, 228]
6725	add	w0, w0, w1
6726	ldrh	w1, [x19, 244]
6727	cmp	w0, w1
6728	ble	.L857
6729	add	x1, x23, 271
6730	mov	w2, 2690
6731	adrp	x0, .LC9
6732	add	x0, x0, :lo12:.LC9
6733	bl	sftl_printk
6734	b	.L857
6735.L883:
6736	mov	w1, 0
6737	b	.L859
6738.L862:
6739	ldrh	w1, [x19, 2584]
6740	ldrh	w0, [x19, 228]
6741	add	w0, w0, w1
6742	ldrh	w1, [x19, 244]
6743	cmp	w0, w1
6744	ble	.L864
6745	adrp	x0, .LC9
6746	add	x1, x23, 271
6747	add	x0, x0, :lo12:.LC9
6748	mov	w2, 2693
6749	bl	sftl_printk
6750.L864:
6751	ldrh	w3, [x19, 236]
6752	add	x4, x20, 16
6753	mov	x0, 0
6754	mov	w5, 65535
6755.L865:
6756	cmp	w3, w0, uxth
6757	bhi	.L867
6758	cbnz	w21, .L868
6759	adrp	x0, .LC9
6760	add	x1, x23, 271
6761	add	x0, x0, :lo12:.LC9
6762	mov	w2, 2704
6763	bl	sftl_printk
6764.L868:
6765	ldrh	w0, [x19, 176]
6766	cmp	w0, w22
6767	bne	.L869
6768	adrp	x0, .LC9
6769	add	x1, x23, 271
6770	add	x0, x0, :lo12:.LC9
6771	mov	w2, 2706
6772	bl	sftl_printk
6773.L869:
6774	ldrb	w2, [x20, 8]
6775	ldr	x0, [x19, 2600]
6776	ldrh	w1, [x0, x24]
6777	cbnz	w2, .L870
6778	cbz	w1, .L884
6779	ldrh	w2, [x19, 296]
6780	add	w1, w1, w2
6781	and	w1, w1, 65535
6782.L871:
6783	strh	w1, [x0, x24]
6784	ldr	w0, [x19, 2668]
6785	add	w0, w0, 1
6786	str	w0, [x19, 2668]
6787.L872:
6788	ldr	x0, [x19, 2600]
6789	ldr	w1, [x19, 2684]
6790	ldrh	w0, [x0, x24]
6791	cmp	w0, w1
6792	bls	.L873
6793	str	w0, [x19, 2684]
6794.L873:
6795	ldr	w1, [x19, 2672]
6796	ldrh	w0, [x19, 296]
6797	ldr	w2, [x19, 2668]
6798	madd	w0, w0, w2, w1
6799	ldrh	w1, [x19, 244]
6800	udiv	w0, w0, w1
6801	ldr	x1, [x19, 3544]
6802	str	w0, [x19, 2676]
6803	ldr	w0, [x1, 16]
6804	add	w0, w0, 1
6805	str	w0, [x1, 16]
6806	mov	x1, 0
6807.L874:
6808	ldr	x0, [x19, 3400]
6809	cmp	w21, w1, uxth
6810	bhi	.L875
6811	ldrb	w1, [x20, 8]
6812	mov	w2, w21
6813	mov	x26, 0
6814	mov	w27, 0
6815	bl	FlashEraseBlocks
6816	add	x2, x20, 16
6817.L876:
6818	cmp	w21, w26, uxth
6819	bhi	.L878
6820	cmp	w27, 0
6821	ble	.L879
6822	mov	w0, w22
6823	bl	update_multiplier_value
6824	bl	FtlBbmTblFlush
6825.L879:
6826	ldrb	w0, [x20, 7]
6827	cbnz	w0, .L880
6828	ldr	x0, [x19, 72]
6829	mov	w1, -1
6830	strh	w1, [x0, x24]
6831	b	.L857
6832.L867:
6833	ldr	x1, [x19, 3400]
6834	add	x2, x1, x0, lsl 5
6835	stp	xzr, xzr, [x2, 8]
6836	ldrh	w2, [x4, x0, lsl 1]
6837	cmp	w2, w5
6838	beq	.L866
6839	ubfiz	x6, x21, 5, 16
6840	add	w21, w21, 1
6841	add	x1, x1, x6
6842	and	w21, w21, 65535
6843	lsl	w2, w2, 10
6844	str	w2, [x1, 4]
6845.L866:
6846	add	x0, x0, 1
6847	b	.L865
6848.L884:
6849	mov	w1, 2
6850	b	.L871
6851.L870:
6852	add	w1, w1, 1
6853	strh	w1, [x0, x24]
6854	ldr	w0, [x19, 2672]
6855	add	w0, w0, 1
6856	str	w0, [x19, 2672]
6857	b	.L872
6858.L875:
6859	add	x0, x0, x1, lsl 5
6860	add	x1, x1, 1
6861	ldr	w2, [x0, 4]
6862	and	w2, w2, -1024
6863	str	w2, [x0, 4]
6864	b	.L874
6865.L878:
6866	ldr	x1, [x19, 3400]
6867	lsl	x0, x26, 5
6868	ldr	w28, [x1, x0]
6869	add	x3, x1, x26, lsl 5
6870	cmn	w28, #1
6871	bne	.L877
6872	ldr	w0, [x3, 4]
6873	add	w27, w27, 1
6874	str	x2, [sp, 104]
6875	ubfx	x0, x0, 10, 16
6876	bl	FtlBbmMapBadBlock
6877	ldr	x2, [sp, 104]
6878	strh	w28, [x2, x26, lsl 1]
6879	ldrb	w0, [x20, 7]
6880	sub	w0, w0, #1
6881	strb	w0, [x20, 7]
6882.L877:
6883	add	x26, x26, 1
6884	b	.L876
6885.L880:
6886	ldrh	w1, [x19, 306]
6887	strh	w22, [x20]
6888	strh	wzr, [x20, 2]
6889	strb	wzr, [x20, 6]
6890	mul	w0, w0, w1
6891	ldr	w1, [x19, 2660]
6892	str	w1, [x20, 12]
6893	and	w0, w0, 65535
6894	add	w1, w1, 1
6895	strh	w0, [x20, 4]
6896	str	w1, [x19, 2660]
6897	ldr	x1, [x19, 72]
6898	ldrh	w2, [x20]
6899	strh	w0, [x1, x2, lsl 1]
6900	ldrh	w0, [x20, 4]
6901	cbz	w0, .L881
6902	ldrb	w0, [x20, 7]
6903	cbnz	w0, .L882
6904.L881:
6905	adrp	x1, .LANCHOR1
6906	add	x1, x1, :lo12:.LANCHOR1
6907	adrp	x0, .LC9
6908	add	x1, x1, 271
6909	add	x0, x0, :lo12:.LC9
6910	mov	w2, 2759
6911	bl	sftl_printk
6912.L882:
6913	mov	w0, 0
6914	ldp	x19, x20, [sp, 16]
6915	ldp	x21, x22, [sp, 32]
6916	ldp	x23, x24, [sp, 48]
6917	ldp	x25, x26, [sp, 64]
6918	ldp	x27, x28, [sp, 80]
6919	ldp	x29, x30, [sp], 112
6920	hint	29 // autiasp
6921	ret
6922	.size	allocate_data_superblock, .-allocate_data_superblock
6923	.section	.rodata.str1.1
6924.LC103:
6925	.string	"FtlGcFreeBadSuperBlk 0x%x\n"
6926	.text
6927	.align	2
6928	.global	FtlGcFreeBadSuperBlk
6929	.type	FtlGcFreeBadSuperBlk, %function
6930FtlGcFreeBadSuperBlk:
6931	hint	34 // bti c
6932	.section	__patchable_function_entries
6933	.align	3
6934	.8byte	.LPFE81
6935	.text
6936.LPFE81:
6937	nop
6938	nop
6939	hint	25 // paciasp
6940	stp	x29, x30, [sp, -96]!
6941	mov	x29, sp
6942	stp	x19, x20, [sp, 16]
6943	adrp	x19, .LANCHOR0
6944	add	x19, x19, :lo12:.LANCHOR0
6945	stp	x25, x26, [sp, 64]
6946	and	w25, w0, 65535
6947	ldrh	w0, [x19, 3312]
6948	stp	x21, x22, [sp, 32]
6949	stp	x23, x24, [sp, 48]
6950	str	x27, [sp, 80]
6951	cbnz	w0, .L896
6952.L891:
6953	mov	w0, 0
6954	ldp	x19, x20, [sp, 16]
6955	ldp	x21, x22, [sp, 32]
6956	ldp	x23, x24, [sp, 48]
6957	ldp	x25, x26, [sp, 64]
6958	ldr	x27, [sp, 80]
6959	ldp	x29, x30, [sp], 96
6960	hint	29 // autiasp
6961	ret
6962.L895:
6963	add	x0, x19, 264
6964	mov	w1, w25
6965	mov	w20, 0
6966	ldrb	w0, [x0, w21, sxtw]
6967	bl	V2P_block
6968	and	w22, w0, 65535
6969.L892:
6970	ldrh	w0, [x19, 3312]
6971	cmp	w0, w20
6972	bhi	.L894
6973	add	w21, w21, 1
6974	and	w21, w21, 65535
6975.L890:
6976	ldrh	w0, [x19, 236]
6977	cmp	w0, w21
6978	bhi	.L895
6979	bl	FtlGcReFreshBadBlk
6980	b	.L891
6981.L894:
6982	ldrh	w0, [x24, w20, sxtw 1]
6983	add	w27, w20, 1
6984	cmp	w0, w22
6985	bne	.L893
6986	mov	w1, w22
6987	mov	x0, x26
6988	bl	sftl_printk
6989	mov	w0, w22
6990	bl	FtlBbmMapBadBlock
6991	bl	FtlBbmTblFlush
6992	ldrh	w23, [x19, 3312]
6993	add	x1, x24, w27, sxtw 1
6994	add	x0, x24, w20, uxth 1
6995	cmp	w20, w23
6996	sub	w2, w23, w20
6997	sub	w23, w23, #1
6998	ubfiz	x2, x2, 1, 16
6999	csel	x2, x2, xzr, ls
7000	bl	memmove
7001	strh	w23, [x19, 3312]
7002.L893:
7003	and	w20, w27, 65535
7004	b	.L892
7005.L896:
7006	adrp	x26, .LC103
7007	add	x24, x19, 3314
7008	add	x26, x26, :lo12:.LC103
7009	mov	w21, 0
7010	b	.L890
7011	.size	FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
7012	.align	2
7013	.global	update_vpc_list
7014	.type	update_vpc_list, %function
7015update_vpc_list:
7016	hint	34 // bti c
7017	.section	__patchable_function_entries
7018	.align	3
7019	.8byte	.LPFE82
7020	.text
7021.LPFE82:
7022	nop
7023	nop
7024	hint	25 // paciasp
7025	stp	x29, x30, [sp, -32]!
7026	mov	x29, sp
7027	stp	x19, x20, [sp, 16]
7028	adrp	x19, .LANCHOR0
7029	add	x19, x19, :lo12:.LANCHOR0
7030	and	w20, w0, 65535
7031	ubfiz	x0, x0, 1, 16
7032	ldr	x1, [x19, 72]
7033	ldrh	w0, [x1, x0]
7034	cbnz	w0, .L899
7035	ldrh	w0, [x19, 226]
7036	cmp	w0, w20
7037	bne	.L900
7038	mov	w0, -1
7039	strh	w0, [x19, 226]
7040.L900:
7041	ldrh	w0, [x19, 224]
7042	cmp	w0, w20
7043	bne	.L901
7044	mov	w0, -1
7045	strh	w0, [x19, 224]
7046.L901:
7047	ldrh	w0, [x19, 176]
7048	cmp	w0, w20
7049	bne	.L902
7050	mov	w0, -1
7051	strh	w0, [x19, 176]
7052.L903:
7053	mov	w1, w20
7054	add	x0, x19, 2568
7055	bl	List_remove_node
7056	ldrh	w0, [x19, 2584]
7057	cbnz	w0, .L905
7058	adrp	x1, .LANCHOR1
7059	add	x1, x1, :lo12:.LANCHOR1
7060	adrp	x0, .LC9
7061	add	x1, x1, 296
7062	add	x0, x0, :lo12:.LC9
7063	mov	w2, 2835
7064	bl	sftl_printk
7065.L905:
7066	ldrh	w0, [x19, 2584]
7067	sub	w0, w0, #1
7068	strh	w0, [x19, 2584]
7069	mov	w0, w20
7070	bl	free_data_superblock
7071	mov	w0, w20
7072	bl	FtlGcFreeBadSuperBlk
7073	ldrh	w1, [x19, 2584]
7074	ldrh	w0, [x19, 228]
7075	add	w0, w0, w1
7076	ldrh	w1, [x19, 244]
7077	cmp	w0, w1
7078	ble	.L909
7079	adrp	x1, .LANCHOR1
7080	add	x1, x1, :lo12:.LANCHOR1
7081	adrp	x0, .LC9
7082	add	x1, x1, 296
7083	add	x0, x0, :lo12:.LC9
7084	mov	w2, 2838
7085	bl	sftl_printk
7086.L909:
7087	mov	w0, 1
7088	b	.L898
7089.L902:
7090	ldrh	w0, [x19, 24]
7091	cmp	w0, w20
7092	beq	.L908
7093	ldrh	w0, [x19, 80]
7094	cmp	w0, w20
7095	beq	.L908
7096	ldrh	w0, [x19, 128]
7097	cmp	w0, w20
7098	bne	.L903
7099.L908:
7100	mov	w0, 0
7101.L898:
7102	ldp	x19, x20, [sp, 16]
7103	ldp	x29, x30, [sp], 32
7104	hint	29 // autiasp
7105	ret
7106.L899:
7107	mov	w0, w20
7108	bl	List_update_data_list
7109	b	.L908
7110	.size	update_vpc_list, .-update_vpc_list
7111	.section	.rodata.str1.1
7112.LC104:
7113	.string	"decrement_vpc_count %x = %d\n"
7114	.text
7115	.align	2
7116	.global	decrement_vpc_count
7117	.type	decrement_vpc_count, %function
7118decrement_vpc_count:
7119	hint	34 // bti c
7120	.section	__patchable_function_entries
7121	.align	3
7122	.8byte	.LPFE83
7123	.text
7124.LPFE83:
7125	nop
7126	nop
7127	hint	25 // paciasp
7128	stp	x29, x30, [sp, -48]!
7129	mov	w1, 65535
7130	mov	x29, sp
7131	stp	x19, x20, [sp, 16]
7132	cmp	w1, w0, uxth
7133	adrp	x19, .LANCHOR0
7134	str	x21, [sp, 32]
7135	and	w20, w0, 65535
7136	add	x19, x19, :lo12:.LANCHOR0
7137	beq	.L912
7138	ldr	x1, [x19, 72]
7139	ubfiz	x21, x20, 1, 16
7140	ldrh	w0, [x1, x21]
7141	cbnz	w0, .L913
7142	mov	w1, w20
7143	mov	w2, 0
7144	adrp	x0, .LC104
7145	add	x0, x0, :lo12:.LC104
7146	bl	sftl_printk
7147	ldr	x0, [x19, 72]
7148	ldrh	w0, [x0, x21]
7149	cbz	w0, .L914
7150.L919:
7151	mov	w21, 0
7152.L911:
7153	mov	w0, w21
7154	ldp	x19, x20, [sp, 16]
7155	ldr	x21, [sp, 32]
7156	ldp	x29, x30, [sp], 48
7157	hint	29 // autiasp
7158	ret
7159.L914:
7160	adrp	x1, .LANCHOR1
7161	add	x1, x1, :lo12:.LANCHOR1
7162	add	x1, x1, 312
7163	mov	w2, 2853
7164	adrp	x0, .LC9
7165	add	x0, x0, :lo12:.LC9
7166	bl	sftl_printk
7167	b	.L919
7168.L913:
7169	sub	w0, w0, #1
7170	strh	w0, [x1, x21]
7171.L912:
7172	ldrh	w0, [x19, 3698]
7173	mov	w1, 65535
7174	cmp	w0, w1
7175	bne	.L916
7176	strh	w20, [x19, 3698]
7177	b	.L919
7178.L916:
7179	cmp	w0, w20
7180	beq	.L919
7181	bl	update_vpc_list
7182	cmp	w0, 0
7183	ldr	x1, [x19, 2560]
7184	strh	w20, [x19, 3698]
7185	ldr	x0, [x19, 2568]
7186	cset	w21, ne
7187	sub	x0, x0, x1
7188	mov	x1, -6148914691236517206
7189	movk	x1, 0xaaab, lsl 0
7190	asr	x0, x0, 1
7191	mul	x0, x0, x1
7192	ldr	x1, [x19, 72]
7193	and	x2, x0, 65535
7194	ldrh	w1, [x1, x2, lsl 1]
7195	cbnz	w1, .L911
7196	cmp	w20, w0, uxth
7197	beq	.L911
7198	adrp	x1, .LANCHOR1
7199	add	x1, x1, :lo12:.LANCHOR1
7200	add	x1, x1, 312
7201	mov	w2, 2869
7202	adrp	x0, .LC9
7203	add	x0, x0, :lo12:.LC9
7204	bl	sftl_printk
7205	b	.L911
7206	.size	decrement_vpc_count, .-decrement_vpc_count
7207	.align	2
7208	.global	FtlSuperblockPowerLostFix
7209	.type	FtlSuperblockPowerLostFix, %function
7210FtlSuperblockPowerLostFix:
7211	hint	34 // bti c
7212	.section	__patchable_function_entries
7213	.align	3
7214	.8byte	.LPFE84
7215	.text
7216.LPFE84:
7217	nop
7218	nop
7219	hint	25 // paciasp
7220	stp	x29, x30, [sp, -96]!
7221	mov	x29, sp
7222	stp	x19, x20, [sp, 16]
7223	adrp	x20, .LANCHOR0
7224	add	x20, x20, :lo12:.LANCHOR0
7225	stp	x21, x22, [sp, 32]
7226	mov	x19, x0
7227	mrs	x0, sp_el0
7228	ldr	x1, [x0, 1376]
7229	str	x1, [sp, 88]
7230	mov	x1, 0
7231	mov	w0, -1
7232	ldr	x22, [x20, 3512]
7233	str	w0, [sp, 80]
7234	ldr	x0, [x20, 3448]
7235	str	x0, [sp, 64]
7236	mov	x0, -3
7237	str	x22, [sp, 72]
7238	movk	x0, 0xfffe, lsl 32
7239	str	x0, [x22, 8]
7240	mov	w1, 61589
7241	ldrh	w0, [x19]
7242	strh	wzr, [x22]
7243	strh	w0, [x22, 2]
7244	ldr	x0, [x20, 3448]
7245	str	w1, [x0]
7246	mov	w1, 22136
7247	movk	w1, 0x1234, lsl 16
7248	ldr	x0, [x20, 3448]
7249	str	w1, [x0, 4]
7250	ldrh	w21, [x19, 4]
7251	and	w21, w21, 1
7252	add	w21, w21, 6
7253.L921:
7254	ldrh	w0, [x19, 4]
7255	cbz	w21, .L923
7256	cbnz	w0, .L922
7257.L923:
7258	ldrh	w0, [x19]
7259	ldr	x2, [x20, 72]
7260	lsl	x0, x0, 1
7261	ldrh	w3, [x19, 4]
7262	ldrh	w1, [x2, x0]
7263	sub	w1, w1, w3
7264	strh	w1, [x2, x0]
7265	strh	wzr, [x19, 4]
7266	ldrh	w0, [x20, 306]
7267	strh	w0, [x19, 2]
7268	mrs	x0, sp_el0
7269	strb	wzr, [x19, 6]
7270	ldr	x1, [sp, 88]
7271	ldr	x2, [x0, 1376]
7272	subs	x1, x1, x2
7273	mov	x2, 0
7274	beq	.L927
7275	bl	__stack_chk_fail
7276.L922:
7277	mov	x0, x19
7278	bl	get_new_active_ppa
7279	str	w0, [sp, 60]
7280	cmn	w0, #1
7281	beq	.L923
7282	ldr	w0, [x20, 2664]
7283	mov	w3, 0
7284	str	w0, [x22, 4]
7285	mov	w2, 0
7286	cmn	w0, #2
7287	mov	w1, 1
7288	csinc	w0, wzr, w0, eq
7289	str	w0, [x20, 2664]
7290	add	x0, sp, 56
7291	sub	w21, w21, #1
7292	bl	FlashProgPages
7293	ldrh	w0, [x19]
7294	bl	decrement_vpc_count
7295	b	.L921
7296.L927:
7297	ldp	x19, x20, [sp, 16]
7298	ldp	x21, x22, [sp, 32]
7299	ldp	x29, x30, [sp], 96
7300	hint	29 // autiasp
7301	ret
7302	.size	FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
7303	.align	2
7304	.global	FtlMakeBbt
7305	.type	FtlMakeBbt, %function
7306FtlMakeBbt:
7307	hint	34 // bti c
7308	.section	__patchable_function_entries
7309	.align	3
7310	.8byte	.LPFE85
7311	.text
7312.LPFE85:
7313	nop
7314	nop
7315	hint	25 // paciasp
7316	stp	x29, x30, [sp, -96]!
7317	mov	x29, sp
7318	stp	x19, x20, [sp, 16]
7319	adrp	x19, .LANCHOR0
7320	add	x19, x19, :lo12:.LANCHOR0
7321	stp	x23, x24, [sp, 48]
7322	add	x24, x19, 360
7323	add	x20, x19, 3712
7324	stp	x25, x26, [sp, 64]
7325	mov	x25, x24
7326	mov	w23, 0
7327	stp	x27, x28, [sp, 80]
7328	mov	w27, 65535
7329	mov	w28, -3872
7330	stp	x21, x22, [sp, 32]
7331	bl	FtlBbtMemInit
7332	bl	FtlLoadFactoryBbt
7333.L934:
7334	ldrh	w0, [x19, 258]
7335	cmp	w0, w23
7336	bhi	.L940
7337	mov	w20, 0
7338.L941:
7339	ldrh	w0, [x19, 318]
7340	cmp	w0, w20
7341	bhi	.L942
7342	ldrh	w20, [x19, 372]
7343	add	x21, x19, 360
7344	mov	w22, 65535
7345	sub	w20, w20, #1
7346	and	w20, w20, 65535
7347.L943:
7348	ldrh	w0, [x21, 12]
7349	sub	w0, w0, #48
7350	cmp	w20, w0
7351	ble	.L947
7352	mov	w0, w20
7353	bl	FtlBbmIsBadBlock
7354	cmp	w0, 1
7355	beq	.L944
7356	mov	w0, w20
7357	bl	FlashTestBlk
7358	cbz	w0, .L945
7359	mov	w0, w20
7360	bl	FtlBbmMapBadBlock
7361.L944:
7362	sub	w20, w20, #1
7363	and	w20, w20, 65535
7364	b	.L943
7365.L940:
7366	ldrh	w1, [x25, 12]
7367	ldr	x0, [x19, 3448]
7368	ldr	x26, [x19, 3512]
7369	stp	x0, x26, [x20, 8]
7370	cmp	w1, w27
7371	beq	.L935
7372	ldrh	w22, [x19, 302]
7373	mov	w2, 1
7374	madd	w22, w22, w23, w1
7375	mov	w1, w2
7376	lsl	w0, w22, 10
7377	str	w0, [x20, 4]
7378	mov	x0, x20
7379	bl	FlashReadPages
7380	ldrh	w2, [x19, 302]
7381	ldr	x1, [x20, 8]
7382	add	w2, w2, 7
7383	ldr	x0, [x24, 32]
7384	lsr	w2, w2, 3
7385	bl	ftl_memcpy
7386.L936:
7387	mov	w0, w22
7388	add	w23, w23, 1
7389	add	x24, x24, 8
7390	add	x25, x25, 2
7391	bl	FtlBbmMapBadBlock
7392	b	.L934
7393.L935:
7394	mov	w1, w23
7395	bl	FlashGetBadBlockList
7396	ldr	x0, [x20, 8]
7397	ldr	x1, [x24, 32]
7398	bl	FtlBbt2Bitmap
7399	ldrh	w21, [x19, 302]
7400.L938:
7401	sub	w21, w21, #1
7402	and	w21, w21, 65535
7403.L937:
7404	ldrh	w0, [x19, 302]
7405	madd	w0, w23, w0, w21
7406	bl	FtlBbmIsBadBlock
7407	cmp	w0, 1
7408	beq	.L938
7409	ldr	x0, [x19, 3512]
7410	strh	w21, [x25, 12]
7411	mov	w2, 16
7412	mov	w1, 0
7413	bl	ftl_memset
7414	ldr	x0, [x19, 3448]
7415	mov	w2, 4096
7416	mov	w1, 0
7417	bl	ftl_memset
7418	strh	w28, [x26]
7419	str	wzr, [x26, 4]
7420	ldrh	w22, [x19, 302]
7421	ldrh	w0, [x25, 12]
7422	strh	w0, [x26, 2]
7423	ldrh	w2, [x19, 3624]
7424	ldr	x1, [x24, 32]
7425	madd	w22, w22, w23, w0
7426	lsl	w2, w2, 2
7427	lsl	w0, w22, 10
7428	str	w0, [x20, 4]
7429	ldr	x0, [x20, 8]
7430	bl	ftl_memcpy
7431	mov	w2, 1
7432	mov	x0, x20
7433	mov	w1, w2
7434	bl	FlashEraseBlocks
7435	mov	w3, 1
7436	mov	x0, x20
7437	mov	w1, w3
7438	mov	w2, w3
7439	bl	FlashProgPages
7440	ldr	w1, [x20]
7441	and	w0, w22, 65535
7442	cmn	w1, #1
7443	bne	.L936
7444	bl	FtlBbmMapBadBlock
7445	b	.L937
7446.L942:
7447	mov	w0, w20
7448	add	w20, w20, 1
7449	and	w20, w20, 65535
7450	bl	FtlBbmMapBadBlock
7451	b	.L941
7452.L945:
7453	ldrh	w0, [x21]
7454	cmp	w0, w22
7455	bne	.L946
7456	strh	w20, [x21]
7457	b	.L944
7458.L946:
7459	strh	w20, [x21, 4]
7460.L947:
7461	ldr	x1, [x19, 3400]
7462	str	wzr, [x19, 368]
7463	ldrh	w0, [x19, 360]
7464	mov	w2, 2
7465	strh	wzr, [x19, 362]
7466	lsl	w0, w0, 10
7467	str	w0, [x1, 4]
7468	ldr	x0, [x19, 3400]
7469	ldrh	w1, [x19, 364]
7470	lsl	w1, w1, 10
7471	str	w1, [x0, 36]
7472	mov	w1, 1
7473	bl	FlashEraseBlocks
7474	ldrh	w0, [x19, 360]
7475	bl	FtlBbmMapBadBlock
7476	ldrh	w0, [x19, 364]
7477	bl	FtlBbmMapBadBlock
7478	bl	FtlBbmTblFlush
7479	strh	wzr, [x19, 362]
7480	ldr	w0, [x19, 368]
7481	ldrh	w1, [x19, 364]
7482	add	w0, w0, 1
7483	str	w0, [x19, 368]
7484	ldrh	w0, [x19, 360]
7485	strh	w1, [x19, 360]
7486	strh	w0, [x19, 364]
7487	bl	FtlBbmTblFlush
7488	mov	w0, 0
7489	ldp	x19, x20, [sp, 16]
7490	ldp	x21, x22, [sp, 32]
7491	ldp	x23, x24, [sp, 48]
7492	ldp	x25, x26, [sp, 64]
7493	ldp	x27, x28, [sp, 80]
7494	ldp	x29, x30, [sp], 96
7495	hint	29 // autiasp
7496	ret
7497	.size	FtlMakeBbt, .-FtlMakeBbt
7498	.align	2
7499	.global	ftl_memcmp
7500	.type	ftl_memcmp, %function
7501ftl_memcmp:
7502	hint	34 // bti c
7503	.section	__patchable_function_entries
7504	.align	3
7505	.8byte	.LPFE86
7506	.text
7507.LPFE86:
7508	nop
7509	nop
7510	hint	25 // paciasp
7511	stp	x29, x30, [sp, -16]!
7512	uxtw	x2, w2
7513	mov	x29, sp
7514	bl	memcmp
7515	ldp	x29, x30, [sp], 16
7516	hint	29 // autiasp
7517	ret
7518	.size	ftl_memcmp, .-ftl_memcmp
7519	.align	2
7520	.global	js_hash
7521	.type	js_hash, %function
7522js_hash:
7523	hint	34 // bti c
7524	.section	__patchable_function_entries
7525	.align	3
7526	.8byte	.LPFE87
7527	.text
7528.LPFE87:
7529	nop
7530	nop
7531	mov	x4, x0
7532	mov	w0, 42982
7533	mov	x3, 0
7534	movk	w0, 0x47c6, lsl 16
7535	hint	25 // paciasp
7536.L956:
7537	cmp	w1, w3
7538	bhi	.L957
7539	hint	29 // autiasp
7540	ret
7541.L957:
7542	ldrb	w5, [x4, x3]
7543	lsr	w2, w0, 2
7544	add	w2, w2, w0, lsl 5
7545	add	x3, x3, 1
7546	add	w2, w2, w5
7547	eor	w0, w0, w2
7548	b	.L956
7549	.size	js_hash, .-js_hash
7550	.section	.rodata.str1.1
7551.LC105:
7552	.string	"FtlMapWritePage error = %x \n"
7553.LC106:
7554	.string	"FtlMapWritePage error = %x error count = %d\n"
7555	.text
7556	.align	2
7557	.global	FtlMapWritePage
7558	.type	FtlMapWritePage, %function
7559FtlMapWritePage:
7560	hint	34 // bti c
7561	.section	__patchable_function_entries
7562	.align	3
7563	.8byte	.LPFE88
7564	.text
7565.LPFE88:
7566	nop
7567	nop
7568	hint	25 // paciasp
7569	stp	x29, x30, [sp, -96]!
7570	mov	x29, sp
7571	stp	x23, x24, [sp, 48]
7572	mov	w24, w1
7573	stp	x19, x20, [sp, 16]
7574	adrp	x20, .LANCHOR0
7575	add	x20, x20, :lo12:.LANCHOR0
7576	mov	x19, x0
7577	stp	x21, x22, [sp, 32]
7578	add	x21, x20, 3712
7579	stp	x25, x26, [sp, 64]
7580	adrp	x25, .LANCHOR1
7581	mov	x26, x2
7582	add	x25, x25, :lo12:.LANCHOR1
7583	stp	x27, x28, [sp, 80]
7584	ubfiz	x27, x24, 2, 32
7585	mov	w22, 0
7586.L960:
7587	ldr	w0, [x20, 2644]
7588	add	w0, w0, 1
7589	str	w0, [x20, 2644]
7590	ldrh	w0, [x20, 308]
7591	ldrh	w1, [x19, 2]
7592	sub	w0, w0, #1
7593	cmp	w1, w0
7594	bge	.L961
7595	ldrh	w1, [x19]
7596	mov	w0, 65535
7597	cmp	w1, w0
7598	bne	.L962
7599.L961:
7600	mov	x0, x19
7601	bl	Ftl_write_map_blk_to_last_page
7602.L962:
7603	ldrh	w1, [x19]
7604	ldr	x0, [x19, 16]
7605	ldrh	w0, [x0, x1, lsl 1]
7606	cbnz	w0, .L963
7607	adrp	x0, .LC9
7608	add	x1, x25, 332
7609	add	x0, x0, :lo12:.LC9
7610	mov	w2, 700
7611	bl	sftl_printk
7612.L963:
7613	ldrh	w1, [x19]
7614	ldrh	w0, [x19, 10]
7615	cmp	w1, w0
7616	bcc	.L964
7617	adrp	x0, .LC9
7618	add	x1, x25, 332
7619	add	x0, x0, :lo12:.LC9
7620	mov	w2, 701
7621	bl	sftl_printk
7622.L964:
7623	ldrh	w1, [x19]
7624	mov	w2, 16
7625	ldr	x0, [x19, 16]
7626	ldrh	w28, [x0, x1, lsl 1]
7627	mov	w1, 0
7628	ldrh	w0, [x19, 2]
7629	str	x26, [x21, 8]
7630	orr	w0, w0, w28, lsl 10
7631	str	w0, [x21, 4]
7632	ldr	x0, [x20, 3512]
7633	str	x0, [x21, 16]
7634	bl	ftl_memset
7635	ldr	x23, [x21, 16]
7636	ldr	w0, [x19, 48]
7637	str	w0, [x23, 4]
7638	strh	w24, [x23, 8]
7639	ldrh	w0, [x19, 4]
7640	strh	w0, [x23]
7641	strh	w28, [x23, 2]
7642	ldrh	w1, [x20, 314]
7643	ldr	x0, [x21, 8]
7644	bl	js_hash
7645	str	w0, [x23, 12]
7646	mov	w3, 1
7647	mov	x0, x21
7648	mov	w1, w3
7649	mov	w2, w3
7650	bl	FlashProgPages
7651	ldrh	w0, [x19, 2]
7652	add	w0, w0, 1
7653	strh	w0, [x19, 2]
7654	ldp	w0, w1, [x21]
7655	cmn	w0, #1
7656	bne	.L965
7657	adrp	x0, .LC105
7658	add	x0, x0, :lo12:.LC105
7659	bl	sftl_printk
7660	add	w22, w22, 1
7661	ldrh	w0, [x19, 2]
7662	and	w22, w22, 65535
7663	cmp	w0, 2
7664	bhi	.L966
7665	ldrh	w0, [x20, 308]
7666	sub	w0, w0, #1
7667	strh	w0, [x19, 2]
7668.L966:
7669	cmp	w22, 3
7670	bls	.L967
7671	ldr	w1, [x20, 3716]
7672	adrp	x0, .LC106
7673	mov	w2, w22
7674	add	x0, x0, :lo12:.LC106
7675	bl	sftl_printk
7676.L968:
7677	b	.L968
7678.L967:
7679	ldr	w0, [x19, 52]
7680	cbz	w0, .L960
7681.L970:
7682	b	.L970
7683.L965:
7684	ldr	x0, [x19, 40]
7685	str	w1, [x0, x27]
7686	ldrh	w0, [x19, 2]
7687	cmp	w0, 1
7688	beq	.L971
7689	ldr	w0, [x21]
7690	cmp	w0, 256
7691	beq	.L971
7692	ldr	w1, [x19, 56]
7693	cbz	w1, .L972
7694.L971:
7695	str	wzr, [x19, 56]
7696	b	.L960
7697.L972:
7698	cmn	w0, #1
7699	bne	.L973
7700	adrp	x1, .LANCHOR1
7701	add	x1, x1, :lo12:.LANCHOR1
7702	adrp	x0, .LC9
7703	add	x1, x1, 332
7704	add	x0, x0, :lo12:.LC9
7705	mov	w2, 745
7706	bl	sftl_printk
7707.L973:
7708	mov	w0, 0
7709	ldp	x19, x20, [sp, 16]
7710	ldp	x21, x22, [sp, 32]
7711	ldp	x23, x24, [sp, 48]
7712	ldp	x25, x26, [sp, 64]
7713	ldp	x27, x28, [sp, 80]
7714	ldp	x29, x30, [sp], 96
7715	hint	29 // autiasp
7716	ret
7717	.size	FtlMapWritePage, .-FtlMapWritePage
7718	.section	.rodata.str1.1
7719.LC107:
7720	.string	"region_id = %x phyAddr = %x\n"
7721.LC108:
7722	.string	"map_ppn:"
7723.LC109:
7724	.string	"load_l2p_region refresh = %x phyAddr = %x\n"
7725	.text
7726	.align	2
7727	.global	load_l2p_region
7728	.type	load_l2p_region, %function
7729load_l2p_region:
7730	hint	34 // bti c
7731	.section	__patchable_function_entries
7732	.align	3
7733	.8byte	.LPFE89
7734	.text
7735.LPFE89:
7736	nop
7737	nop
7738	hint	25 // paciasp
7739	stp	x29, x30, [sp, -64]!
7740	mov	x29, sp
7741	stp	x19, x20, [sp, 16]
7742	adrp	x19, .LANCHOR0
7743	add	x19, x19, :lo12:.LANCHOR0
7744	and	w20, w1, 65535
7745	stp	x21, x22, [sp, 32]
7746	and	w21, w0, 65535
7747	ldrh	w1, [x19, 340]
7748	stp	x23, x24, [sp, 48]
7749	cmp	w1, w0, uxth
7750	bcs	.L985
7751	adrp	x1, .LANCHOR1
7752	add	x1, x1, :lo12:.LANCHOR1
7753	adrp	x0, .LC9
7754	add	x1, x1, 348
7755	add	x0, x0, :lo12:.LC9
7756	mov	w2, 485
7757	bl	sftl_printk
7758.L985:
7759	ldr	x1, [x19, 3600]
7760	ubfiz	x0, x21, 2, 16
7761	ubfiz	x20, x20, 4, 16
7762	ldr	w23, [x1, x0]
7763	ldr	x0, [x19, 2608]
7764	add	x0, x0, x20
7765	ldr	x0, [x0, 8]
7766	cbnz	w23, .L986
7767	ldrh	w2, [x19, 314]
7768	mov	w1, 255
7769	bl	ftl_memset
7770	ldr	x0, [x19, 2608]
7771	strh	w21, [x0, x20]
7772	ldr	x0, [x19, 2608]
7773	add	x20, x0, x20
7774	str	wzr, [x20, 4]
7775.L987:
7776	mov	w0, 0
7777	ldp	x19, x20, [sp, 16]
7778	ldp	x21, x22, [sp, 32]
7779	ldp	x23, x24, [sp, 48]
7780	ldp	x29, x30, [sp], 64
7781	hint	29 // autiasp
7782	ret
7783.L986:
7784	add	x22, x19, 3712
7785	str	x0, [x19, 3720]
7786	ldr	x0, [x19, 3512]
7787	mov	w2, 1
7788	mov	w1, w2
7789	str	w23, [x19, 3716]
7790	str	x0, [x19, 3728]
7791	mov	x0, x22
7792	bl	FlashReadPages
7793	ldr	x24, [x19, 3728]
7794	ldrh	w0, [x24, 8]
7795	cmp	w0, w21
7796	beq	.L988
7797	mov	w2, w23
7798	mov	w1, w21
7799	adrp	x0, .LC107
7800	add	x0, x0, :lo12:.LC107
7801	bl	sftl_printk
7802	ldr	x1, [x19, 3728]
7803	mov	w3, 4
7804	adrp	x0, .LC95
7805	mov	w2, w3
7806	add	x0, x0, :lo12:.LC95
7807	bl	rknand_print_hex
7808	ldrh	w3, [x19, 340]
7809	adrp	x0, .LC108
7810	ldr	x1, [x19, 3600]
7811	add	x0, x0, :lo12:.LC108
7812	mov	w2, 4
7813	bl	rknand_print_hex
7814.L989:
7815	ldrh	w0, [x24, 8]
7816	cmp	w0, w21
7817	beq	.L991
7818	adrp	x1, .LANCHOR1
7819	add	x1, x1, :lo12:.LANCHOR1
7820	adrp	x0, .LC9
7821	add	x1, x1, 348
7822	add	x0, x0, :lo12:.LC9
7823	mov	w2, 508
7824	bl	sftl_printk
7825.L991:
7826	ldr	x0, [x19, 2608]
7827	add	x0, x0, x20
7828	str	wzr, [x0, 4]
7829	ldr	x0, [x19, 2608]
7830	strh	w21, [x0, x20]
7831	b	.L987
7832.L988:
7833	ldr	w0, [x19, 3712]
7834	cmp	w0, 256
7835	bne	.L991
7836	mov	w2, w23
7837	mov	w1, w21
7838	adrp	x0, .LC109
7839	add	x0, x0, :lo12:.LC109
7840	bl	sftl_printk
7841	ldr	x0, [x19, 2608]
7842	mov	w1, w21
7843	add	x0, x0, x20
7844	ldr	x2, [x0, 8]
7845	add	x0, x19, 3632
7846	bl	FtlMapWritePage
7847	b	.L989
7848	.size	load_l2p_region, .-load_l2p_region
7849	.align	2
7850	.global	ftl_map_blk_gc
7851	.type	ftl_map_blk_gc, %function
7852ftl_map_blk_gc:
7853	hint	34 // bti c
7854	.section	__patchable_function_entries
7855	.align	3
7856	.8byte	.LPFE90
7857	.text
7858.LPFE90:
7859	nop
7860	nop
7861	hint	25 // paciasp
7862	stp	x29, x30, [sp, -96]!
7863	mov	x29, sp
7864	stp	x19, x20, [sp, 16]
7865	mov	x19, x0
7866	adrp	x20, .LANCHOR0
7867	stp	x21, x22, [sp, 32]
7868	add	x20, x20, :lo12:.LANCHOR0
7869	stp	x23, x24, [sp, 48]
7870	stp	x25, x26, [sp, 64]
7871	str	x27, [sp, 80]
7872	ldr	x21, [x0, 16]
7873	ldr	x24, [x0, 40]
7874	bl	ftl_free_no_use_map_blk
7875	ldrh	w1, [x19, 10]
7876	ldrh	w2, [x19, 8]
7877	sub	w1, w1, #5
7878	cmp	w2, w1
7879	blt	.L995
7880	ubfiz	x0, x0, 1, 16
7881	ldrh	w25, [x21, x0]
7882	cbz	w25, .L995
7883	ldr	w1, [x19, 52]
7884	cbnz	w1, .L995
7885	mov	w1, 1
7886	str	w1, [x19, 52]
7887	strh	wzr, [x21, x0]
7888	ldrh	w0, [x19, 8]
7889	ldrh	w1, [x19, 2]
7890	sub	w0, w0, #1
7891	strh	w0, [x19, 8]
7892	ldrh	w0, [x20, 308]
7893	cmp	w1, w0
7894	bcc	.L996
7895	mov	x0, x19
7896	bl	ftl_map_blk_alloc_new_blk
7897.L996:
7898	adrp	x22, .LANCHOR1
7899	add	x22, x22, :lo12:.LANCHOR1
7900	adrp	x26, .LC9
7901	add	x22, x22, 364
7902	add	x26, x26, :lo12:.LC9
7903	mov	w21, 0
7904.L997:
7905	ldrh	w0, [x19, 6]
7906	cmp	w0, w21
7907	bhi	.L1004
7908	mov	w0, w25
7909	mov	w1, 1
7910	bl	FtlFreeSysBlkQueueIn
7911	str	wzr, [x19, 52]
7912.L995:
7913	ldrh	w1, [x19, 2]
7914	ldrh	w0, [x20, 308]
7915	cmp	w1, w0
7916	bcc	.L1005
7917	mov	x0, x19
7918	bl	ftl_map_blk_alloc_new_blk
7919.L1005:
7920	mov	w0, 0
7921	ldp	x19, x20, [sp, 16]
7922	ldp	x21, x22, [sp, 32]
7923	ldp	x23, x24, [sp, 48]
7924	ldp	x25, x26, [sp, 64]
7925	ldr	x27, [sp, 80]
7926	ldp	x29, x30, [sp], 96
7927	hint	29 // autiasp
7928	ret
7929.L1004:
7930	ubfiz	x1, x21, 2, 16
7931	add	x27, x24, x1
7932	ldr	w0, [x24, x1]
7933	cmp	w25, w0, lsr 10
7934	bne	.L998
7935	add	x0, x20, 3712
7936	ldr	x2, [x20, 3456]
7937	ldr	x23, [x20, 3512]
7938	stp	x2, x23, [x0, 8]
7939	mov	w2, 1
7940	ldr	w1, [x24, x1]
7941	str	w1, [x0, 4]
7942	mov	w1, w2
7943	bl	FlashReadPages
7944	ldrh	w0, [x23, 8]
7945	cmp	w0, w21
7946	beq	.L999
7947	mov	x1, x22
7948	mov	x0, x26
7949	mov	w2, 611
7950	bl	sftl_printk
7951.L999:
7952	ldr	w1, [x20, 3712]
7953	add	x0, x20, 3712
7954	cmn	w1, #1
7955	bne	.L1000
7956.L1002:
7957	str	wzr, [x27]
7958.L1001:
7959	b	.L1001
7960.L1000:
7961	ldrh	w1, [x23, 8]
7962	cmp	w1, w21
7963	bne	.L1002
7964	ldrh	w2, [x23]
7965	ldrh	w1, [x19, 4]
7966	cmp	w2, w1
7967	bne	.L1002
7968	ldr	x2, [x0, 8]
7969	mov	w1, w21
7970	mov	x0, x19
7971	bl	FtlMapWritePage
7972.L998:
7973	add	w21, w21, 1
7974	and	w21, w21, 65535
7975	b	.L997
7976	.size	ftl_map_blk_gc, .-ftl_map_blk_gc
7977	.align	2
7978	.global	Ftl_write_map_blk_to_last_page
7979	.type	Ftl_write_map_blk_to_last_page, %function
7980Ftl_write_map_blk_to_last_page:
7981	hint	34 // bti c
7982	.section	__patchable_function_entries
7983	.align	3
7984	.8byte	.LPFE91
7985	.text
7986.LPFE91:
7987	nop
7988	nop
7989	hint	25 // paciasp
7990	stp	x29, x30, [sp, -64]!
7991	mov	w1, 65535
7992	mov	x29, sp
7993	stp	x19, x20, [sp, 16]
7994	mov	x19, x0
7995	stp	x21, x22, [sp, 32]
7996	str	x23, [sp, 48]
7997	ldr	x20, [x0, 16]
7998	ldrh	w0, [x0]
7999	cmp	w0, w1
8000	bne	.L1012
8001	ldrh	w0, [x19, 8]
8002	cbz	w0, .L1013
8003	adrp	x1, .LANCHOR1
8004	add	x1, x1, :lo12:.LANCHOR1
8005	adrp	x0, .LC9
8006	add	x1, x1, 379
8007	add	x0, x0, :lo12:.LC9
8008	mov	w2, 641
8009	bl	sftl_printk
8010.L1013:
8011	ldrh	w0, [x19, 8]
8012	add	w0, w0, 1
8013	strh	w0, [x19, 8]
8014	bl	FtlFreeSysBlkQueueOut
8015	strh	w0, [x20]
8016	str	wzr, [x19]
8017	ldr	w0, [x19, 48]
8018	add	w0, w0, 1
8019	str	w0, [x19, 48]
8020.L1014:
8021	mov	w0, 0
8022	ldp	x19, x20, [sp, 16]
8023	ldp	x21, x22, [sp, 32]
8024	ldr	x23, [sp, 48]
8025	ldp	x29, x30, [sp], 64
8026	hint	29 // autiasp
8027	ret
8028.L1012:
8029	ubfiz	x0, x0, 1, 16
8030	ldrh	w1, [x19, 2]
8031	ldr	x23, [x19, 40]
8032	ldrh	w22, [x20, x0]
8033	adrp	x20, .LANCHOR0
8034	add	x20, x20, :lo12:.LANCHOR0
8035	ldr	w0, [x19, 48]
8036	orr	w1, w1, w22, lsl 10
8037	ldr	x21, [x20, 3512]
8038	str	w1, [x20, 3716]
8039	ldr	x1, [x20, 3448]
8040	str	x1, [x20, 3720]
8041	str	x21, [x20, 3728]
8042	mov	w1, 255
8043	str	w0, [x21, 4]
8044	mov	w0, -1291
8045	strh	w0, [x21, 8]
8046	ldrh	w0, [x19, 4]
8047	strh	w0, [x21]
8048	strh	w22, [x21, 2]
8049	ldrh	w2, [x20, 308]
8050	ldr	x0, [x20, 3448]
8051	lsl	w2, w2, 3
8052	bl	ftl_memset
8053	mov	w2, 0
8054	mov	w0, 0
8055.L1015:
8056	ldrh	w1, [x19, 6]
8057	cmp	w1, w0
8058	bhi	.L1017
8059	ldrh	w1, [x20, 314]
8060	add	x22, x20, 3712
8061	ldr	x0, [x20, 3720]
8062	bl	js_hash
8063	str	w0, [x21, 12]
8064	mov	w2, 1
8065	mov	x0, x22
8066	mov	w1, w2
8067	mov	w3, 0
8068	bl	FlashProgPages
8069	ldrh	w0, [x19, 2]
8070	add	w0, w0, 1
8071	strh	w0, [x19, 2]
8072	mov	x0, x19
8073	bl	ftl_map_blk_gc
8074	b	.L1014
8075.L1017:
8076	ubfiz	x3, x0, 2, 16
8077	ldr	w1, [x23, x3]
8078	cmp	w22, w1, lsr 10
8079	bne	.L1016
8080	add	w1, w2, 1
8081	ldr	x5, [x20, 3448]
8082	ubfiz	x4, x1, 3, 16
8083	and	w2, w1, 65535
8084	ubfiz	x1, x1, 3, 16
8085	add	x1, x1, 4
8086	str	w0, [x5, x4]
8087	ldr	w4, [x23, x3]
8088	ldr	x3, [x20, 3448]
8089	str	w4, [x3, x1]
8090.L1016:
8091	add	w0, w0, 1
8092	and	w0, w0, 65535
8093	b	.L1015
8094	.size	Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
8095	.align	2
8096	.global	flush_l2p_region
8097	.type	flush_l2p_region, %function
8098flush_l2p_region:
8099	hint	34 // bti c
8100	.section	__patchable_function_entries
8101	.align	3
8102	.8byte	.LPFE92
8103	.text
8104.LPFE92:
8105	nop
8106	nop
8107	hint	25 // paciasp
8108	stp	x29, x30, [sp, -32]!
8109	mov	x29, sp
8110	stp	x19, x20, [sp, 16]
8111	adrp	x19, .LANCHOR0
8112	add	x19, x19, :lo12:.LANCHOR0
8113	ubfiz	x20, x0, 4, 16
8114	ldr	x0, [x19, 2608]
8115	add	x1, x0, x20
8116	ldr	x2, [x1, 8]
8117	ldrh	w1, [x0, x20]
8118	add	x0, x19, 3632
8119	bl	FtlMapWritePage
8120	ldr	x0, [x19, 2608]
8121	add	x0, x0, x20
8122	ldr	w1, [x0, 4]
8123	and	w1, w1, 2147483647
8124	str	w1, [x0, 4]
8125	mov	w0, 0
8126	ldp	x19, x20, [sp, 16]
8127	ldp	x29, x30, [sp], 32
8128	hint	29 // autiasp
8129	ret
8130	.size	flush_l2p_region, .-flush_l2p_region
8131	.align	2
8132	.global	log2phys
8133	.type	log2phys, %function
8134log2phys:
8135	hint	34 // bti c
8136	.section	__patchable_function_entries
8137	.align	3
8138	.8byte	.LPFE93
8139	.text
8140.LPFE93:
8141	nop
8142	nop
8143	hint	25 // paciasp
8144	stp	x29, x30, [sp, -80]!
8145	mov	x29, sp
8146	stp	x19, x20, [sp, 16]
8147	adrp	x20, .LANCHOR0
8148	add	x20, x20, :lo12:.LANCHOR0
8149	stp	x21, x22, [sp, 32]
8150	mov	w21, w0
8151	mov	x22, x1
8152	ldrh	w19, [x20, 312]
8153	stp	x23, x24, [sp, 48]
8154	mov	w23, w2
8155	add	w0, w19, 7
8156	mov	x19, 1
8157	str	x25, [sp, 64]
8158	lsr	w24, w21, w0
8159	and	w24, w24, 65535
8160	lsl	x19, x19, x0
8161	ldr	w0, [x20, 2624]
8162	sub	w19, w19, #1
8163	and	w19, w19, w21
8164	and	w19, w19, 65535
8165	cmp	w0, w21
8166	bhi	.L1025
8167	adrp	x1, .LANCHOR1
8168	add	x1, x1, :lo12:.LANCHOR1
8169	add	x1, x1, 410
8170	mov	w2, 820
8171	adrp	x0, .LC9
8172	add	x0, x0, :lo12:.LC9
8173	bl	sftl_printk
8174	ldr	w0, [x20, 2624]
8175	cmp	w0, w21
8176	bhi	.L1025
8177	mov	w0, -1
8178	cbnz	w23, .L1024
8179	str	w0, [x22]
8180.L1024:
8181	ldp	x19, x20, [sp, 16]
8182	ldp	x21, x22, [sp, 32]
8183	ldp	x23, x24, [sp, 48]
8184	ldr	x25, [sp, 64]
8185	ldp	x29, x30, [sp], 80
8186	hint	29 // autiasp
8187	ret
8188.L1031:
8189	add	x0, x0, 1
8190	lsl	x3, x0, 4
8191	ldrh	w3, [x1, x3]
8192	cmp	w3, w24
8193	bne	.L1027
8194.L1028:
8195	ldr	x0, [x20, 2608]
8196	ubfiz	x2, x25, 4, 16
8197	ubfiz	x19, x19, 2, 16
8198	add	x0, x0, x2
8199	ldr	x0, [x0, 8]
8200	cbnz	w23, .L1029
8201	ldr	w0, [x0, x19]
8202	str	w0, [x22]
8203.L1030:
8204	ldr	x0, [x20, 2608]
8205	add	x0, x0, x2
8206	ldr	w1, [x0, 4]
8207	cmn	w1, #1
8208	beq	.L1034
8209	add	w1, w1, 1
8210	str	w1, [x0, 4]
8211.L1034:
8212	mov	w0, 0
8213	b	.L1024
8214.L1029:
8215	ldr	w1, [x22]
8216	str	w1, [x0, x19]
8217	strh	w24, [x20, 2616]
8218	ldr	x1, [x20, 2608]
8219	add	x1, x1, x2
8220	ldr	w0, [x1, 4]
8221	orr	w0, w0, -2147483648
8222	str	w0, [x1, 4]
8223	b	.L1030
8224.L1025:
8225	ldr	x1, [x20, 2608]
8226	mov	x0, 0
8227	ldrh	w2, [x20, 342]
8228	sub	x1, x1, #16
8229.L1027:
8230	and	w25, w0, 65535
8231	cmp	w2, w0, uxth
8232	bhi	.L1031
8233	bl	select_l2p_ram_region
8234	and	w25, w0, 65535
8235	mov	w21, w25
8236	ldr	x2, [x20, 2608]
8237	ubfiz	x1, x21, 4, 16
8238	add	x3, x2, x1
8239	ldrh	w2, [x2, x1]
8240	mov	w1, 65535
8241	cmp	w2, w1
8242	beq	.L1032
8243	ldr	w1, [x3, 4]
8244	tbz	w1, #31, .L1032
8245	bl	flush_l2p_region
8246.L1032:
8247	mov	w1, w21
8248	mov	w0, w24
8249	bl	load_l2p_region
8250	b	.L1028
8251	.size	log2phys, .-log2phys
8252	.align	2
8253	.global	FtlWriteDump_data
8254	.type	FtlWriteDump_data, %function
8255FtlWriteDump_data:
8256	hint	34 // bti c
8257	.section	__patchable_function_entries
8258	.align	3
8259	.8byte	.LPFE94
8260	.text
8261.LPFE94:
8262	nop
8263	nop
8264	hint	25 // paciasp
8265	stp	x29, x30, [sp, -112]!
8266	mrs	x0, sp_el0
8267	mov	x29, sp
8268	stp	x19, x20, [sp, 16]
8269	adrp	x19, .LANCHOR0
8270	add	x19, x19, :lo12:.LANCHOR0
8271	stp	x21, x22, [sp, 32]
8272	str	x23, [sp, 48]
8273	ldrh	w2, [x19, 28]
8274	ldr	x1, [x0, 1376]
8275	str	x1, [sp, 104]
8276	mov	x1, 0
8277	cbz	w2, .L1038
8278	ldrb	w1, [x19, 32]
8279	cbnz	w1, .L1038
8280	ldrb	w1, [x19, 31]
8281	ldrh	w3, [x19, 306]
8282	mul	w1, w1, w3
8283	cmp	w2, w1
8284	beq	.L1038
8285	ldrb	w0, [x19, 34]
8286	cbnz	w0, .L1037
8287	ldr	w22, [x19, 2624]
8288	add	x1, sp, 68
8289	ldrh	w21, [x19, 236]
8290	mov	w2, 0
8291	sub	w22, w22, #1
8292	mov	w0, w22
8293	bl	log2phys
8294	ldr	x20, [x19, 3512]
8295	str	w22, [sp, 96]
8296	ldr	w0, [sp, 68]
8297	ldr	x1, [x19, 3448]
8298	str	w0, [sp, 76]
8299	stp	x1, x20, [sp, 80]
8300	str	wzr, [x20, 4]
8301	cmn	w0, #1
8302	beq	.L1040
8303	add	x0, sp, 72
8304	mov	w2, 0
8305	mov	w1, 1
8306	bl	FlashReadPages
8307.L1041:
8308	lsl	w21, w21, 2
8309	add	x23, x19, 24
8310	mov	w0, -3947
8311	strh	w0, [x20]
8312.L1042:
8313	cbnz	w21, .L1046
8314.L1043:
8315	mov	w0, 1
8316	strb	w0, [x19, 34]
8317.L1037:
8318	mrs	x0, sp_el0
8319	ldr	x1, [sp, 104]
8320	ldr	x2, [x0, 1376]
8321	subs	x1, x1, x2
8322	mov	x2, 0
8323	beq	.L1048
8324	bl	__stack_chk_fail
8325.L1040:
8326	ldrh	w2, [x19, 314]
8327	mov	w1, 255
8328	ldr	x0, [x19, 3448]
8329	bl	ftl_memset
8330	b	.L1041
8331.L1046:
8332	ldrh	w0, [x23, 4]
8333	cbz	w0, .L1043
8334	ldr	w0, [sp, 76]
8335	sub	w21, w21, #1
8336	stp	w22, w0, [x20, 8]
8337	ldrh	w0, [x23]
8338	strh	w0, [x20, 2]
8339	mov	x0, x23
8340	bl	get_new_active_ppa
8341	str	w0, [sp, 76]
8342	ldr	w0, [x19, 2664]
8343	mov	w3, 0
8344	str	w0, [x20, 4]
8345	mov	w2, 0
8346	cmn	w0, #2
8347	mov	w1, 1
8348	csinc	w0, wzr, w0, eq
8349	str	w0, [x19, 2664]
8350	add	x0, sp, 72
8351	bl	FlashProgPages
8352	ldrh	w0, [x23]
8353	bl	decrement_vpc_count
8354	b	.L1042
8355.L1038:
8356	strb	wzr, [x19, 34]
8357	b	.L1037
8358.L1048:
8359	ldp	x19, x20, [sp, 16]
8360	ldp	x21, x22, [sp, 32]
8361	ldr	x23, [sp, 48]
8362	ldp	x29, x30, [sp], 112
8363	hint	29 // autiasp
8364	ret
8365	.size	FtlWriteDump_data, .-FtlWriteDump_data
8366	.align	2
8367	.global	FtlReUsePrevPpa
8368	.type	FtlReUsePrevPpa, %function
8369FtlReUsePrevPpa:
8370	hint	34 // bti c
8371	.section	__patchable_function_entries
8372	.align	3
8373	.8byte	.LPFE95
8374	.text
8375.LPFE95:
8376	nop
8377	nop
8378	hint	25 // paciasp
8379	stp	x29, x30, [sp, -64]!
8380	mov	x29, sp
8381	stp	x19, x20, [sp, 16]
8382	adrp	x19, .LANCHOR0
8383	add	x19, x19, :lo12:.LANCHOR0
8384	stp	x21, x22, [sp, 32]
8385	mov	w21, w0
8386	ubfx	x0, x1, 10, 16
8387	str	w1, [sp, 60]
8388	bl	P2V_block_in_plane
8389	and	w4, w0, 65535
8390	mov	w22, w4
8391	ldr	x0, [x19, 72]
8392	ubfiz	x20, x22, 1, 16
8393	ldrh	w3, [x0, x20]
8394	cbnz	w3, .L1057
8395	ldr	x2, [x19, 2592]
8396	cbz	x2, .L1058
8397	ldr	x0, [x19, 2560]
8398	mov	x5, -6148914691236517206
8399	movk	x5, 0xaaab, lsl 0
8400	ldrh	w1, [x19, 228]
8401	sub	x2, x2, x0
8402	mov	w6, 65535
8403	asr	x2, x2, 1
8404	mul	x2, x2, x5
8405	mov	w5, 6
8406	and	w2, w2, 65535
8407.L1059:
8408	cmp	w3, w1
8409	beq	.L1058
8410	cmp	w2, w4
8411	bne	.L1060
8412	mov	w1, w22
8413	add	x0, x19, 2592
8414	bl	List_remove_node
8415	ldrh	w0, [x19, 228]
8416	cbnz	w0, .L1061
8417	adrp	x1, .LANCHOR1
8418	add	x1, x1, :lo12:.LANCHOR1
8419	adrp	x0, .LC9
8420	add	x1, x1, 419
8421	add	x0, x0, :lo12:.LC9
8422	mov	w2, 1742
8423	bl	sftl_printk
8424.L1061:
8425	ldrh	w0, [x19, 228]
8426	sub	w0, w0, #1
8427	strh	w0, [x19, 228]
8428	mov	w0, w22
8429	bl	INSERT_DATA_LIST
8430	ldr	x1, [x19, 72]
8431	ldrh	w0, [x1, x20]
8432	add	w0, w0, 1
8433	strh	w0, [x1, x20]
8434.L1058:
8435	add	x1, sp, 60
8436	mov	w0, w21
8437	mov	w2, 1
8438	bl	log2phys
8439	ldp	x19, x20, [sp, 16]
8440	ldp	x21, x22, [sp, 32]
8441	ldp	x29, x30, [sp], 64
8442	hint	29 // autiasp
8443	ret
8444.L1060:
8445	umull	x2, w2, w5
8446	ldrh	w2, [x0, x2]
8447	cmp	w2, w6
8448	beq	.L1058
8449	add	w3, w3, 1
8450	and	w3, w3, 65535
8451	b	.L1059
8452.L1057:
8453	add	w3, w3, 1
8454	strh	w3, [x0, x20]
8455	b	.L1058
8456	.size	FtlReUsePrevPpa, .-FtlReUsePrevPpa
8457	.section	.rodata.str1.1
8458.LC110:
8459	.string	"data prev_ppa = %x error...................\n"
8460.LC111:
8461	.string	"spuer block %x vpn is 0\n "
8462	.text
8463	.align	2
8464	.global	FtlRecoverySuperblock
8465	.type	FtlRecoverySuperblock, %function
8466FtlRecoverySuperblock:
8467	hint	34 // bti c
8468	.section	__patchable_function_entries
8469	.align	3
8470	.8byte	.LPFE96
8471	.text
8472.LPFE96:
8473	nop
8474	nop
8475	hint	25 // paciasp
8476	stp	x29, x30, [sp, -192]!
8477	mov	x29, sp
8478	stp	x19, x20, [sp, 16]
8479	mov	x20, x0
8480	mrs	x0, sp_el0
8481	stp	x21, x22, [sp, 32]
8482	stp	x23, x24, [sp, 48]
8483	stp	x25, x26, [sp, 64]
8484	stp	x27, x28, [sp, 80]
8485	ldr	x1, [x0, 1376]
8486	str	x1, [sp, 184]
8487	mov	x1, 0
8488	ldrh	w0, [x20]
8489	mov	w1, 65535
8490	cmp	w0, w1
8491	beq	.L1069
8492	adrp	x19, .LANCHOR0
8493	add	x19, x19, :lo12:.LANCHOR0
8494	ldrb	w0, [x20, 6]
8495	ldrh	w24, [x20, 2]
8496	str	w0, [sp, 152]
8497	ldrh	w0, [x19, 306]
8498	cmp	w0, w24
8499	bne	.L1070
8500	strh	w0, [x20, 2]
8501	strh	wzr, [x20, 4]
8502.L1191:
8503	strb	wzr, [x20, 6]
8504.L1069:
8505	mrs	x0, sp_el0
8506	ldr	x1, [sp, 184]
8507	ldr	x2, [x0, 1376]
8508	subs	x1, x1, x2
8509	mov	x2, 0
8510	beq	.L1135
8511	bl	__stack_chk_fail
8512.L1070:
8513	ldrh	w0, [x20, 16]
8514	mov	w21, 0
8515.L1071:
8516	cmp	w0, w1
8517	beq	.L1072
8518	mov	w1, 1
8519	bl	FtlGetLastWrittenPage
8520	mov	w26, w0
8521	cmn	w0, #1
8522	beq	.L1073
8523	ldrh	w6, [x19, 236]
8524	add	x9, x20, 16
8525	ldrh	w7, [x19, 314]
8526	mov	x1, 0
8527	ldrh	w8, [x19, 316]
8528	mov	w22, 0
8529	mov	w10, 65535
8530	mov	w4, 4
8531.L1074:
8532	ldr	x0, [x19, 3424]
8533	cmp	w6, w1, uxth
8534	bhi	.L1078
8535	mov	w2, 0
8536	mov	w1, w22
8537	bl	FlashReadPages
8538	ldr	w21, [x19, 2664]
8539	ldr	x28, [x19, 3424]
8540	and	w4, w26, 65535
8541	sub	w21, w21, #1
8542	mov	w25, 65535
8543	mov	x2, x28
8544	mov	w27, 0
8545.L1079:
8546	cmp	w22, w27
8547	bne	.L1084
8548	add	w23, w26, 1
8549	ldr	w0, [x28, 4]
8550	and	w23, w23, 65535
8551.L1186:
8552	ubfx	x0, x0, 10, 16
8553	bl	P2V_plane
8554	and	w22, w0, 65535
8555	ldrh	w0, [x19, 306]
8556	cmp	w0, w23
8557	bne	.L1086
8558	strh	w23, [x20, 2]
8559	strh	wzr, [x20, 4]
8560	strb	wzr, [x20, 6]
8561.L1086:
8562	ldr	w0, [sp, 152]
8563	cmp	w23, w24
8564	ccmp	w22, w0, 0, eq
8565	bne	.L1087
8566.L1192:
8567	mov	w2, w22
8568	mov	w1, w23
8569	mov	x0, x20
8570	bl	ftl_sb_update_avl_pages
8571	b	.L1069
8572.L1072:
8573	add	w0, w21, 1
8574	and	w21, w0, 65535
8575	add	x0, x20, w0, uxth 1
8576	ldrh	w0, [x0, 16]
8577	b	.L1071
8578.L1073:
8579	cbz	w24, .L1075
8580	adrp	x1, .LANCHOR1
8581	add	x1, x1, :lo12:.LANCHOR1
8582	adrp	x0, .LC9
8583	add	x1, x1, 435
8584	add	x0, x0, :lo12:.LC9
8585	mov	w2, 1809
8586	bl	sftl_printk
8587.L1075:
8588	ldr	w0, [sp, 152]
8589	cmp	w0, 0
8590	ccmp	w21, w0, 4, ne
8591	beq	.L1076
8592	adrp	x1, .LANCHOR1
8593	add	x1, x1, :lo12:.LANCHOR1
8594	adrp	x0, .LC9
8595	add	x1, x1, 435
8596	add	x0, x0, :lo12:.LC9
8597	mov	w2, 1810
8598	bl	sftl_printk
8599.L1076:
8600	strh	wzr, [x20, 2]
8601	b	.L1191
8602.L1078:
8603	ldrh	w3, [x9, x1, lsl 1]
8604	cmp	w3, w10
8605	beq	.L1077
8606	ubfiz	x5, x22, 5, 16
8607	orr	w3, w26, w3, lsl 10
8608	add	x0, x0, x5
8609	str	w3, [x0, 4]
8610	mul	w0, w22, w7
8611	ldr	x2, [x19, 3424]
8612	sdiv	w0, w0, w4
8613	ldr	x3, [x19, 3256]
8614	add	x2, x2, x5
8615	add	x0, x3, w0, sxtw 2
8616	str	x0, [x2, 8]
8617	mul	w0, w22, w8
8618	add	w22, w22, 1
8619	ldr	x3, [x19, 3264]
8620	and	w22, w22, 65535
8621	sdiv	w0, w0, w4
8622	add	x0, x3, w0, sxtw 2
8623	str	x0, [x2, 16]
8624.L1077:
8625	add	x1, x1, 1
8626	b	.L1074
8627.L1084:
8628	ldr	w0, [x2]
8629	cbnz	w0, .L1080
8630	ldr	x3, [x2, 16]
8631	ldr	w23, [x3, 4]
8632	cmn	w23, #1
8633	beq	.L1081
8634	ldr	w1, [x19, 2664]
8635	mov	w0, w23
8636	stp	x3, x2, [sp, 96]
8637	str	w4, [sp, 112]
8638	bl	ftl_cmp_data_ver
8639	ldr	w4, [sp, 112]
8640	ldp	x3, x2, [sp, 96]
8641	cbz	w0, .L1081
8642	add	w23, w23, 1
8643	str	w23, [x19, 2664]
8644.L1081:
8645	ldr	w0, [x3]
8646	cmn	w0, #1
8647	bne	.L1083
8648	ubfiz	x27, x27, 5, 16
8649	and	w23, w26, 65535
8650	add	x27, x28, x27
8651	ldr	w0, [x27, 4]
8652	b	.L1186
8653.L1080:
8654	mov	w25, w4
8655.L1083:
8656	add	w27, w27, 1
8657	add	x2, x2, 32
8658	and	w27, w27, 65535
8659	b	.L1079
8660.L1087:
8661	mov	w0, 65535
8662	cmp	w25, w0
8663	bne	.L1088
8664	ldrb	w0, [x20, 8]
8665	cbnz	w0, .L1089
8666.L1088:
8667	ldr	w0, [x19, 3708]
8668	and	w27, w26, 65535
8669	cmn	w0, #1
8670	bne	.L1090
8671	str	w21, [x19, 3708]
8672.L1090:
8673	add	w0, w24, 7
8674	sub	w25, w26, #7
8675	and	w25, w25, 65535
8676	cmp	w0, w26, uxth
8677	csel	w25, w25, w24, lt
8678	add	x4, x20, 16
8679	mov	w28, 65535
8680.L1092:
8681	ldrh	w3, [x19, 236]
8682	cmp	w25, w27
8683	bls	.L1137
8684	mov	w0, -1
8685	str	w0, [x19, 3708]
8686.L1089:
8687	mov	w0, 1
8688	mov	w27, w24
8689	strh	w0, [x19, 3744]
8690	adrp	x0, .LANCHOR1
8691	add	x0, x0, :lo12:.LANCHOR1
8692	add	x0, x0, 435
8693	str	x0, [sp, 120]
8694.L1100:
8695	ldrh	w3, [x19, 236]
8696	add	x4, x20, 16
8697	mov	x1, 0
8698	mov	w28, 0
8699	mov	w5, 65535
8700.L1101:
8701	ldr	x0, [x19, 3424]
8702	cmp	w3, w1, uxth
8703	bhi	.L1103
8704	mov	w1, w28
8705	mov	w2, 0
8706	bl	FlashReadPages
8707	str	xzr, [sp, 96]
8708	adrp	x0, .LC111
8709	add	x0, x0, :lo12:.LC111
8710	str	x0, [sp, 128]
8711.L1104:
8712	ldrh	w0, [sp, 96]
8713	cmp	w28, w0, uxth
8714	bhi	.L1131
8715	ldrh	w1, [x19, 306]
8716	add	w0, w27, 1
8717	and	w27, w0, 65535
8718	cmp	w1, w0, uxth
8719	bne	.L1100
8720	ldrh	w2, [x19, 236]
8721	add	x3, x20, 14
8722	mov	x0, 0
8723	mov	w4, 65535
8724	strh	w27, [x20, 2]
8725	strh	wzr, [x20, 4]
8726.L1132:
8727	cmp	w2, w0, uxth
8728	bls	.L1069
8729	add	x1, x0, 1
8730	ldrh	w5, [x3, x1, lsl 1]
8731	cmp	w5, w4
8732	beq	.L1138
8733	strb	w0, [x20, 6]
8734	b	.L1069
8735.L1094:
8736	ldrh	w2, [x4, x1, lsl 1]
8737	cmp	w2, w28
8738	beq	.L1093
8739	ubfiz	x5, x26, 5, 16
8740	add	w26, w26, 1
8741	add	x0, x0, x5
8742	and	w26, w26, 65535
8743	orr	w2, w25, w2, lsl 10
8744	str	w2, [x0, 4]
8745.L1093:
8746	add	x1, x1, 1
8747.L1099:
8748	ldr	x0, [x19, 3424]
8749	cmp	w3, w1, uxth
8750	bhi	.L1094
8751	mov	w1, w26
8752	mov	w2, 0
8753	str	x4, [sp, 96]
8754	bl	FlashReadPages
8755	ldr	x0, [x19, 3424]
8756	mov	w1, 32
8757	ldr	x4, [sp, 96]
8758	umaddl	x1, w1, w26, x0
8759.L1095:
8760	cmp	x1, x0
8761	bne	.L1098
8762	add	w25, w25, 1
8763	and	w25, w25, 65535
8764	b	.L1092
8765.L1137:
8766	mov	x1, 0
8767	mov	w26, 0
8768	b	.L1099
8769.L1098:
8770	ldr	w2, [x0]
8771	cbnz	w2, .L1089
8772	ldr	x2, [x0, 16]
8773	ldrh	w3, [x2]
8774	cmp	w3, w28
8775	beq	.L1097
8776	ldr	w2, [x2, 4]
8777	cmn	w2, #1
8778	beq	.L1097
8779	str	w2, [x19, 3708]
8780.L1097:
8781	add	x0, x0, 32
8782	b	.L1095
8783.L1103:
8784	ldrh	w2, [x4, x1, lsl 1]
8785	cmp	w2, w5
8786	beq	.L1102
8787	ubfiz	x6, x28, 5, 16
8788	add	w28, w28, 1
8789	add	x0, x0, x6
8790	and	w28, w28, 65535
8791	orr	w2, w27, w2, lsl 10
8792	str	w2, [x0, 4]
8793.L1102:
8794	add	x1, x1, 1
8795	b	.L1101
8796.L1131:
8797	ldr	x0, [sp, 96]
8798	ldr	x2, [x19, 3424]
8799	lsl	x26, x0, 5
8800	add	x1, x2, x0, lsl 5
8801	stp	x1, x2, [sp, 104]
8802	ldr	w25, [x1, 4]
8803	str	w25, [sp, 180]
8804	cmp	w27, w24
8805	bcc	.L1105
8806	ubfx	x0, x25, 10, 16
8807	bl	P2V_plane
8808	ldr	w1, [sp, 152]
8809	and	w0, w0, 65535
8810	cmp	w27, w24
8811	ccmp	w1, w0, 0, eq
8812	bhi	.L1105
8813	cmp	w27, w23
8814	ccmp	w22, w0, 0, eq
8815	ldp	x1, x2, [sp, 104]
8816	bne	.L1106
8817	strh	w23, [x20, 2]
8818	strb	w22, [x20, 6]
8819	b	.L1192
8820.L1106:
8821	ldr	w0, [x2, x26]
8822	cmn	w0, #1
8823	beq	.L1107
8824	ldr	x3, [x1, 16]
8825	mov	w0, 61589
8826	ldrh	w25, [x3]
8827	cmp	w25, w0
8828	beq	.L1108
8829	ldrh	w0, [x20]
8830.L1188:
8831	bl	decrement_vpc_count
8832	b	.L1105
8833.L1108:
8834	ldr	w21, [x3, 4]
8835	cmn	w21, #1
8836	beq	.L1110
8837	ldr	w1, [x19, 2664]
8838	mov	w0, w21
8839	str	x3, [sp, 104]
8840	bl	ftl_cmp_data_ver
8841	ldr	x3, [sp, 104]
8842	cbz	w0, .L1110
8843	add	w0, w21, 1
8844	str	w0, [x19, 2664]
8845	ldrh	w0, [x3]
8846	cmp	w0, w25
8847	beq	.L1110
8848	ldr	x1, [sp, 120]
8849	mov	w2, 1961
8850	adrp	x0, .LC9
8851	add	x0, x0, :lo12:.LC9
8852	bl	sftl_printk
8853	ldr	x3, [sp, 104]
8854.L1110:
8855	add	x1, sp, 176
8856	ldp	w25, w0, [x3, 8]
8857	mov	w2, 0
8858	str	w0, [sp, 172]
8859	mov	w0, w25
8860	bl	log2phys
8861	ldr	w1, [x19, 3708]
8862	ldr	w2, [sp, 172]
8863	cmn	w1, #1
8864	beq	.L1112
8865	mov	w0, w21
8866	str	w2, [sp, 104]
8867	bl	ftl_cmp_data_ver
8868	ldr	w2, [sp, 104]
8869	cbz	w0, .L1112
8870	cmn	w2, #1
8871	beq	.L1113
8872	ldr	x0, [x19, 3424]
8873	add	x0, x0, x26
8874	str	w2, [x0, 4]
8875	mov	w2, 0
8876	ldr	x1, [x0, 16]
8877	str	x1, [sp, 104]
8878	ldr	x0, [x19, 3424]
8879	mov	w1, 1
8880	add	x0, x0, x26
8881	bl	FlashReadPages
8882	ldr	x2, [x19, 3424]
8883	add	x3, x2, x26
8884	ldr	w0, [x2, x26]
8885	cmn	w0, #1
8886	bne	.L1114
8887.L1115:
8888	mov	w0, -1
8889	str	w0, [sp, 172]
8890.L1122:
8891	ldr	w0, [sp, 172]
8892	cmn	w0, #1
8893	beq	.L1105
8894	ubfx	x0, x0, 10, 16
8895	bl	P2V_block_in_plane
8896	and	w26, w0, 65535
8897	ldrh	w0, [x19, 244]
8898	mov	w25, w26
8899	cmp	w0, w26, uxth
8900	bhi	.L1127
8901	ldr	x1, [sp, 120]
8902	adrp	x0, .LC9
8903	mov	w2, 2066
8904	add	x0, x0, :lo12:.LC9
8905	bl	sftl_printk
8906.L1127:
8907	ldr	x1, [x19, 72]
8908	ubfiz	x0, x26, 1, 16
8909	ldrh	w0, [x1, x0]
8910	cbz	w0, .L1128
8911	mov	w0, w25
8912	b	.L1188
8913.L1113:
8914	ldp	w1, w0, [sp, 176]
8915	cmp	w1, w0
8916	bne	.L1105
8917	add	x1, sp, 172
8918	mov	w0, w25
8919	mov	w2, 1
8920	bl	log2phys
8921.L1105:
8922	ldr	x0, [sp, 96]
8923	add	x0, x0, 1
8924	str	x0, [sp, 96]
8925	b	.L1104
8926.L1114:
8927	ldr	x0, [sp, 104]
8928	ldr	w4, [x0, 8]
8929	cmp	w4, w25
8930	bne	.L1115
8931	ldr	w0, [x0, 4]
8932	str	w0, [sp, 112]
8933	uxtw	x1, w0
8934	ldr	w0, [x19, 3708]
8935	stp	x3, x2, [sp, 136]
8936	str	w4, [sp, 156]
8937	bl	ftl_cmp_data_ver
8938	cbz	w0, .L1115
8939	ldp	w1, w0, [sp, 172]
8940	ldr	w5, [sp, 180]
8941	ldr	w4, [sp, 156]
8942	cmp	w0, w5
8943	ldp	x3, x2, [sp, 136]
8944	bne	.L1117
8945	mov	w0, w4
8946.L1187:
8947	bl	FtlReUsePrevPpa
8948	b	.L1115
8949.L1117:
8950	cmp	w0, w1
8951	beq	.L1115
8952	cmn	w0, #1
8953	beq	.L1118
8954	str	w0, [x3, 4]
8955	mov	w2, 0
8956	ldr	x1, [x3, 16]
8957	str	x1, [sp, 104]
8958	ldr	x0, [x19, 3424]
8959	mov	w1, 1
8960	add	x0, x0, x26
8961	bl	FlashReadPages
8962.L1119:
8963	adrp	x0, .LANCHOR0
8964	add	x0, x0, :lo12:.LANCHOR0
8965	ldr	x1, [x0, 3424]
8966	ldr	w1, [x1, x26]
8967	cmn	w1, #1
8968	beq	.L1120
8969	ldr	x1, [sp, 104]
8970	ldr	w0, [x0, 3708]
8971	ldr	w26, [x1, 4]
8972	mov	w1, w26
8973	bl	ftl_cmp_data_ver
8974	cbz	w0, .L1120
8975	ldr	w0, [sp, 112]
8976	mov	w1, w26
8977	bl	ftl_cmp_data_ver
8978	cbz	w0, .L1115
8979.L1120:
8980	ldr	w1, [sp, 172]
8981	mov	w0, w25
8982	b	.L1187
8983.L1118:
8984	str	w0, [x2, x26]
8985	b	.L1119
8986.L1112:
8987	ldp	w1, w0, [sp, 176]
8988	cmp	w1, w0
8989	beq	.L1122
8990	cmn	w2, #1
8991	beq	.L1124
8992	ldr	w0, [x19, 252]
8993	cmp	w0, w2, lsr 10
8994	bhi	.L1124
8995	adrp	x0, .LC110
8996	mov	w1, w2
8997	add	x0, x0, :lo12:.LC110
8998.L1190:
8999	bl	sftl_printk
9000	b	.L1105
9001.L1124:
9002	add	x1, sp, 180
9003	mov	w0, w25
9004	mov	w2, 1
9005	bl	log2phys
9006	ldr	w26, [sp, 176]
9007	cmn	w26, #1
9008	beq	.L1122
9009	ldr	w0, [sp, 172]
9010	cmp	w26, w0
9011	beq	.L1122
9012	ubfx	x0, x26, 10, 16
9013	bl	P2V_block_in_plane
9014	ldrh	w2, [x19, 24]
9015	and	w1, w0, 65535
9016	cmp	w2, w0, uxth
9017	beq	.L1126
9018	ldrh	w0, [x19, 80]
9019	cmp	w0, w1
9020	beq	.L1126
9021	ldrh	w0, [x19, 128]
9022	cmp	w0, w1
9023	bne	.L1122
9024.L1126:
9025	ldr	x0, [x19, 3424]
9026	mov	w2, 0
9027	mov	w1, 1
9028	str	w26, [x0, 4]
9029	ldr	x3, [x0, 16]
9030	str	x3, [sp, 104]
9031	ldr	x0, [x19, 3424]
9032	bl	FlashReadPages
9033	ldr	x0, [x19, 3424]
9034	ldr	w0, [x0]
9035	cmn	w0, #1
9036	beq	.L1122
9037	ldr	x3, [sp, 104]
9038	mov	w0, w21
9039	ldr	w1, [x3, 4]
9040	bl	ftl_cmp_data_ver
9041	cbnz	w0, .L1122
9042	add	x1, sp, 176
9043	mov	w0, w25
9044	mov	w2, 1
9045	bl	log2phys
9046	b	.L1122
9047.L1128:
9048	mov	w1, w26
9049	ldr	x0, [sp, 128]
9050	b	.L1190
9051.L1107:
9052	ldr	w0, [x19, 3748]
9053	cmp	w0, 31
9054	bhi	.L1129
9055	add	x1, x19, 3752
9056	str	w25, [x1, w0, uxtw 2]
9057	add	w0, w0, 1
9058	str	w0, [x19, 3748]
9059.L1129:
9060	ldrh	w0, [x20]
9061	bl	decrement_vpc_count
9062	ldr	w0, [x19, 3708]
9063	cmn	w0, #1
9064	bne	.L1130
9065.L1189:
9066	str	w21, [x19, 3708]
9067	b	.L1105
9068.L1130:
9069	cmp	w0, w21
9070	bls	.L1105
9071	b	.L1189
9072.L1138:
9073	mov	x0, x1
9074	b	.L1132
9075.L1135:
9076	mov	w0, 0
9077	ldp	x19, x20, [sp, 16]
9078	ldp	x21, x22, [sp, 32]
9079	ldp	x23, x24, [sp, 48]
9080	ldp	x25, x26, [sp, 64]
9081	ldp	x27, x28, [sp, 80]
9082	ldp	x29, x30, [sp], 192
9083	hint	29 // autiasp
9084	ret
9085	.size	FtlRecoverySuperblock, .-FtlRecoverySuperblock
9086	.section	.rodata.str1.1
9087.LC112:
9088	.string	"...%s enter...\n"
9089.LC113:
9090	.string	"FtlCheckVpc2 %x = %x  %x\n"
9091.LC114:
9092	.string	"free blk vpc error %x = %x  %x\n"
9093	.text
9094	.align	2
9095	.global	ftl_check_vpc
9096	.type	ftl_check_vpc, %function
9097ftl_check_vpc:
9098	hint	34 // bti c
9099	.section	__patchable_function_entries
9100	.align	3
9101	.8byte	.LPFE97
9102	.text
9103.LPFE97:
9104	nop
9105	nop
9106	hint	25 // paciasp
9107	stp	x29, x30, [sp, -112]!
9108	mrs	x0, sp_el0
9109	mov	x29, sp
9110	stp	x19, x20, [sp, 16]
9111	adrp	x20, .LANCHOR0
9112	add	x20, x20, :lo12:.LANCHOR0
9113	stp	x21, x22, [sp, 32]
9114	mov	w19, 0
9115	adrp	x22, .LANCHOR1
9116	stp	x23, x24, [sp, 48]
9117	add	x22, x22, :lo12:.LANCHOR1
9118	adrp	x21, check_vpc_table
9119	stp	x25, x26, [sp, 64]
9120	add	x21, x21, :lo12:check_vpc_table
9121	stp	x27, x28, [sp, 80]
9122	ldr	x1, [x0, 1376]
9123	str	x1, [sp, 104]
9124	mov	x1, 0
9125	adrp	x0, .LC112
9126	add	x1, x22, 457
9127	add	x0, x0, :lo12:.LC112
9128	bl	sftl_printk
9129	mov	x0, x21
9130	mov	w2, 8192
9131	mov	w1, 0
9132	bl	ftl_memset
9133.L1194:
9134	ldr	w0, [x20, 2624]
9135	cmp	w0, w19
9136	bhi	.L1196
9137	adrp	x23, .LC113
9138	add	x23, x23, :lo12:.LC113
9139	mov	w24, 0
9140	mov	w19, 0
9141	mov	w26, 65535
9142	mov	w27, 1
9143.L1197:
9144	ldrh	w0, [x20, 244]
9145	cmp	w0, w19
9146	bhi	.L1199
9147	ldr	x19, [x20, 2592]
9148	cbz	x19, .L1200
9149	ldr	x1, [x20, 2560]
9150	adrp	x25, .LC114
9151	ldrh	w26, [x20, 228]
9152	add	x25, x25, :lo12:.LC114
9153	sub	x19, x19, x1
9154	mov	x1, -6148914691236517206
9155	movk	x1, 0xaaab, lsl 0
9156	mov	w23, 0
9157	asr	x19, x19, 1
9158	mov	w27, 6
9159	mov	w28, 65535
9160	mul	x19, x19, x1
9161	and	w19, w19, 65535
9162.L1201:
9163	cmp	w23, w26
9164	bne	.L1203
9165.L1200:
9166	cbz	w24, .L1193
9167	adrp	x0, .LC9
9168	add	x1, x22, 457
9169	add	x0, x0, :lo12:.LC9
9170	mov	w2, 2394
9171	bl	sftl_printk
9172.L1193:
9173	mrs	x0, sp_el0
9174	ldr	x1, [sp, 104]
9175	ldr	x2, [x0, 1376]
9176	subs	x1, x1, x2
9177	mov	x2, 0
9178	beq	.L1205
9179	bl	__stack_chk_fail
9180.L1196:
9181	add	x1, sp, 100
9182	mov	w0, w19
9183	mov	w2, 0
9184	bl	log2phys
9185	ldr	w0, [sp, 100]
9186	cmn	w0, #1
9187	beq	.L1195
9188	ubfx	x0, x0, 10, 16
9189	bl	P2V_block_in_plane
9190	and	x0, x0, 65535
9191	ldrh	w1, [x21, x0, lsl 1]
9192	add	w1, w1, 1
9193	strh	w1, [x21, x0, lsl 1]
9194.L1195:
9195	add	w19, w19, 1
9196	b	.L1194
9197.L1199:
9198	ldr	x0, [x20, 72]
9199	ubfiz	x25, x19, 1, 16
9200	ldrh	w3, [x21, w19, sxtw 1]
9201	sxtw	x28, w19
9202	ldrh	w2, [x0, x25]
9203	cmp	w2, w3
9204	beq	.L1198
9205	mov	x0, x23
9206	mov	w1, w19
9207	bl	sftl_printk
9208	ldr	x0, [x20, 72]
9209	ldrh	w0, [x0, x25]
9210	cmp	w0, w26
9211	beq	.L1198
9212	ldrh	w1, [x21, x28, lsl 1]
9213	cmp	w1, w0
9214	csel	w24, w24, w27, ls
9215.L1198:
9216	add	w19, w19, 1
9217	and	w19, w19, 65535
9218	b	.L1197
9219.L1203:
9220	ldr	x1, [x20, 72]
9221	ubfiz	x0, x19, 1, 16
9222	ldrh	w2, [x1, x0]
9223	cbz	w2, .L1202
9224	ldrh	w3, [x21, w19, sxtw 1]
9225	mov	w24, 1
9226	mov	w1, w19
9227	mov	x0, x25
9228	bl	sftl_printk
9229.L1202:
9230	umull	x19, w19, w27
9231	ldr	x0, [x20, 2560]
9232	ldrh	w19, [x0, x19]
9233	cmp	w19, w28
9234	beq	.L1200
9235	add	w23, w23, 1
9236	and	w23, w23, 65535
9237	b	.L1201
9238.L1205:
9239	ldp	x19, x20, [sp, 16]
9240	ldp	x21, x22, [sp, 32]
9241	ldp	x23, x24, [sp, 48]
9242	ldp	x25, x26, [sp, 64]
9243	ldp	x27, x28, [sp, 80]
9244	ldp	x29, x30, [sp], 112
9245	hint	29 // autiasp
9246	ret
9247	.size	ftl_check_vpc, .-ftl_check_vpc
9248	.section	.rodata.str1.1
9249.LC115:
9250	.string	"ftl_scan_all_data = %x\n"
9251.LC116:
9252	.string	"scan lpa = %x ppa= %x\n"
9253.LC117:
9254	.string	"lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\n"
9255	.text
9256	.align	2
9257	.global	ftl_scan_all_data
9258	.type	ftl_scan_all_data, %function
9259ftl_scan_all_data:
9260	hint	34 // bti c
9261	.section	__patchable_function_entries
9262	.align	3
9263	.8byte	.LPFE98
9264	.text
9265.LPFE98:
9266	nop
9267	nop
9268	hint	25 // paciasp
9269	sub	sp, sp, #96
9270	mrs	x0, sp_el0
9271	stp	x29, x30, [sp, 16]
9272	add	x29, sp, 16
9273	stp	x19, x20, [sp, 32]
9274	mov	w20, 0
9275	stp	x21, x22, [sp, 48]
9276	adrp	x21, .LANCHOR0
9277	add	x21, x21, :lo12:.LANCHOR0
9278	str	x23, [sp, 64]
9279	adrp	x22, .LC116
9280	add	x19, x21, 3712
9281	add	x22, x22, :lo12:.LC116
9282	ldr	x1, [x0, 1376]
9283	str	x1, [sp, 88]
9284	mov	x1, 0
9285	adrp	x0, .LC115
9286	add	x0, x0, :lo12:.LC115
9287	bl	sftl_printk
9288.L1220:
9289	ldr	w0, [x21, 2624]
9290	cmp	w0, w20
9291	bhi	.L1226
9292	mrs	x0, sp_el0
9293	ldr	x1, [sp, 88]
9294	ldr	x2, [x0, 1376]
9295	subs	x1, x1, x2
9296	mov	x2, 0
9297	beq	.L1227
9298	bl	__stack_chk_fail
9299.L1226:
9300	add	x1, sp, 84
9301	mov	w0, w20
9302	mov	w2, 0
9303	bl	log2phys
9304	tst	x20, 2047
9305	bne	.L1221
9306	ldr	w2, [sp, 84]
9307	mov	w1, w20
9308	mov	x0, x22
9309	bl	sftl_printk
9310.L1221:
9311	ldr	w0, [sp, 84]
9312	cmn	w0, #1
9313	beq	.L1223
9314	stp	wzr, w0, [x19]
9315	mov	w2, 0
9316	ldr	x0, [x21, 3448]
9317	mov	w1, 1
9318	ldr	x23, [x21, 3512]
9319	str	x0, [x19, 8]
9320	mov	x0, x19
9321	str	x23, [x19, 16]
9322	str	w20, [x19, 24]
9323	bl	FlashReadPages
9324	ldr	w0, [x19]
9325	cmp	w0, 256
9326	ccmn	w0, #1, 4, ne
9327	beq	.L1224
9328	ldr	w0, [x23, 8]
9329	cmp	w0, w20
9330	beq	.L1223
9331.L1224:
9332	ldp	x0, x1, [x19, 8]
9333	ldr	w2, [x0, 4]
9334	str	w2, [sp]
9335	ldr	w7, [x0]
9336	adrp	x0, .LC117
9337	ldp	w3, w4, [x1]
9338	add	x0, x0, :lo12:.LC117
9339	ldp	w5, w6, [x1, 8]
9340	mov	w1, w20
9341	ldr	w2, [x19, 4]
9342	bl	sftl_printk
9343.L1223:
9344	add	w20, w20, 1
9345	b	.L1220
9346.L1227:
9347	ldp	x29, x30, [sp, 16]
9348	ldp	x19, x20, [sp, 32]
9349	ldp	x21, x22, [sp, 48]
9350	ldr	x23, [sp, 64]
9351	add	sp, sp, 96
9352	hint	29 // autiasp
9353	ret
9354	.size	ftl_scan_all_data, .-ftl_scan_all_data
9355	.section	.rodata.str1.1
9356.LC118:
9357	.string	"FtlGcScanTempBlk Error ID %x %x!!!!!!! \n"
9358	.text
9359	.align	2
9360	.global	FtlGcScanTempBlk
9361	.type	FtlGcScanTempBlk, %function
9362FtlGcScanTempBlk:
9363	hint	34 // bti c
9364	.section	__patchable_function_entries
9365	.align	3
9366	.8byte	.LPFE99
9367	.text
9368.LPFE99:
9369	nop
9370	nop
9371	hint	25 // paciasp
9372	stp	x29, x30, [sp, -160]!
9373	mov	x29, sp
9374	stp	x21, x22, [sp, 32]
9375	adrp	x22, .LANCHOR2
9376	add	x22, x22, :lo12:.LANCHOR2
9377	stp	x19, x20, [sp, 16]
9378	mov	x20, x0
9379	mrs	x0, sp_el0
9380	stp	x23, x24, [sp, 48]
9381	stp	x25, x26, [sp, 64]
9382	stp	x27, x28, [sp, 80]
9383	ldrh	w28, [x22, 4]
9384	str	w1, [sp, 104]
9385	ldr	x1, [x0, 1376]
9386	str	x1, [sp, 152]
9387	mov	x1, 0
9388	mov	w0, 65535
9389	cmp	w28, w0
9390	beq	.L1253
9391	cbz	w28, .L1231
9392.L1230:
9393	adrp	x0, .LANCHOR0+306
9394	ldr	w1, [sp, 104]
9395	ldrh	w0, [x0, #:lo12:.LANCHOR0+306]
9396	cmp	w0, w1
9397	bne	.L1232
9398.L1231:
9399	bl	FtlGcPageVarInit
9400.L1232:
9401	adrp	x19, .LANCHOR0
9402	add	x19, x19, :lo12:.LANCHOR0
9403	mov	w24, 0
9404	mov	w26, 65535
9405.L1248:
9406	ldrh	w0, [x20]
9407	strb	wzr, [x20, 8]
9408	cmp	w0, w26
9409	beq	.L1233
9410	add	x0, x20, 16
9411	str	x0, [sp, 96]
9412.L1234:
9413	ldrh	w7, [x19, 236]
9414	mov	x1, 0
9415	ldrh	w8, [x19, 314]
9416	mov	w21, 0
9417	ldrh	w9, [x19, 316]
9418	mov	w5, 4
9419.L1235:
9420	ldr	x0, [x19, 3424]
9421	cmp	w7, w1, uxth
9422	bhi	.L1237
9423	mov	x23, 0
9424	mov	w1, w21
9425	mov	w2, 0
9426	bl	FlashReadPages
9427.L1238:
9428	cmp	w21, w23, uxth
9429	bhi	.L1249
9430	ldr	w0, [sp, 104]
9431	add	w3, w28, 1
9432	add	w24, w24, 1
9433	and	w28, w3, 65535
9434	cmp	w0, w24
9435	bhi	.L1250
9436	ldrh	w0, [x22, 4]
9437	cmp	w0, w26
9438	beq	.L1250
9439	add	w0, w0, w24
9440	strh	w0, [x22, 4]
9441	ldrh	w0, [x19, 306]
9442	cmp	w0, w28
9443	bls	.L1233
9444.L1251:
9445	mrs	x0, sp_el0
9446	ldr	x1, [sp, 152]
9447	ldr	x2, [x0, 1376]
9448	subs	x1, x1, x2
9449	mov	x2, 0
9450	beq	.L1252
9451	bl	__stack_chk_fail
9452.L1253:
9453	mov	w28, 0
9454	b	.L1230
9455.L1237:
9456	ldr	x2, [sp, 96]
9457	ldrh	w4, [x2, x1, lsl 1]
9458	cmp	w4, w26
9459	beq	.L1236
9460	ubfiz	x6, x21, 5, 16
9461	orr	w4, w28, w4, lsl 10
9462	add	x0, x0, x6
9463	str	w4, [x0, 4]
9464	mul	w0, w21, w8
9465	ldr	x2, [x19, 3424]
9466	sdiv	w0, w0, w5
9467	ldr	x4, [x19, 3256]
9468	add	x2, x2, x6
9469	add	x0, x4, w0, sxtw 2
9470	str	x0, [x2, 8]
9471	mul	w0, w21, w9
9472	add	w21, w21, 1
9473	ldr	x4, [x19, 3264]
9474	and	w21, w21, 65535
9475	sdiv	w0, w0, w5
9476	add	x0, x4, w0, sxtw 2
9477	str	x0, [x2, 16]
9478.L1236:
9479	add	x1, x1, 1
9480	b	.L1235
9481.L1249:
9482	ldr	x0, [x19, 3424]
9483	lsl	x27, x23, 5
9484	add	x1, x0, x23, lsl 5
9485	ldr	w0, [x0, x27]
9486	ldr	w5, [x1, 4]
9487	ldr	x25, [x1, 16]
9488	cbnz	w0, .L1239
9489	ldrh	w0, [x25]
9490	cmp	w0, w26
9491	beq	.L1263
9492	ldr	w1, [x19, 2624]
9493	ldr	w0, [x25, 8]
9494	cmp	w0, w1
9495	bls	.L1241
9496.L1263:
9497	ldrh	w1, [x20]
9498	mov	w28, 0
9499	ldr	x0, [x19, 72]
9500	strh	wzr, [x0, x1, lsl 1]
9501	ldrh	w0, [x20]
9502	bl	INSERT_FREE_LIST
9503	mov	w0, -1
9504	strh	w0, [x20]
9505	strh	w0, [x19, 176]
9506	bl	FtlGcPageVarInit
9507	b	.L1248
9508.L1241:
9509	add	x1, sp, 116
9510	mov	w2, 0
9511	str	w5, [sp, 108]
9512	bl	log2phys
9513	ldr	w0, [x25, 12]
9514	ldr	w1, [sp, 116]
9515	ldr	w5, [sp, 108]
9516	cmp	w0, w1
9517	beq	.L1243
9518.L1245:
9519	ldr	w2, [x25, 8]
9520.L1264:
9521	ldr	w0, [x25, 12]
9522	mov	w1, w5
9523	add	x23, x23, 1
9524	bl	FtlGcUpdatePage
9525	b	.L1238
9526.L1243:
9527	cmn	w0, #1
9528	beq	.L1245
9529	str	w0, [sp, 124]
9530	mov	w2, 0
9531	ldr	x0, [x19, 3480]
9532	str	x0, [sp, 128]
9533	ldr	x0, [x19, 3520]
9534	mov	w1, 1
9535	str	w5, [sp, 108]
9536	str	x0, [sp, 136]
9537	add	x0, sp, 120
9538	bl	FlashReadPages
9539	ldr	w5, [sp, 108]
9540	ldrh	w1, [x19, 262]
9541	ldr	x2, [sp, 128]
9542	ldr	x0, [x19, 3424]
9543	lsl	w1, w1, 7
9544	sub	x2, x2, #4
9545	add	x27, x0, x27
9546	mov	x0, 0
9547.L1246:
9548	cmp	w1, w0
9549	bls	.L1245
9550	ldr	x6, [x27, 8]
9551	ldr	w7, [x6, x0, lsl 2]
9552	add	x0, x0, 1
9553	ldr	w6, [x2, x0, lsl 2]
9554	cmp	w7, w6
9555	beq	.L1246
9556	ldrh	w1, [x20]
9557	adrp	x0, .LC118
9558	ldr	w2, [sp, 124]
9559	add	x0, x0, :lo12:.LC118
9560	bl	sftl_printk
9561	b	.L1263
9562.L1239:
9563	mov	w2, -1
9564	b	.L1264
9565.L1250:
9566	ldrh	w0, [x19, 306]
9567	cmp	w0, w28
9568	bhi	.L1234
9569.L1233:
9570	strh	w28, [x20, 2]
9571	mov	w0, -1
9572	strb	wzr, [x20, 6]
9573	mov	w1, w28
9574	mov	w2, 0
9575	strh	w0, [x22, 4]
9576	mov	x0, x20
9577	bl	ftl_sb_update_avl_pages
9578	b	.L1251
9579.L1252:
9580	mov	w0, -1
9581	ldp	x19, x20, [sp, 16]
9582	ldp	x21, x22, [sp, 32]
9583	ldp	x23, x24, [sp, 48]
9584	ldp	x25, x26, [sp, 64]
9585	ldp	x27, x28, [sp, 80]
9586	ldp	x29, x30, [sp], 160
9587	hint	29 // autiasp
9588	ret
9589	.size	FtlGcScanTempBlk, .-FtlGcScanTempBlk
9590	.align	2
9591	.global	FtlReadRefresh
9592	.type	FtlReadRefresh, %function
9593FtlReadRefresh:
9594	hint	34 // bti c
9595	.section	__patchable_function_entries
9596	.align	3
9597	.8byte	.LPFE100
9598	.text
9599.LPFE100:
9600	nop
9601	nop
9602	hint	25 // paciasp
9603	stp	x29, x30, [sp, -160]!
9604	mrs	x0, sp_el0
9605	mov	x29, sp
9606	stp	x19, x20, [sp, 16]
9607	adrp	x19, .LANCHOR0
9608	add	x19, x19, :lo12:.LANCHOR0
9609	str	x21, [sp, 32]
9610	ldr	x1, [x0, 1376]
9611	str	x1, [sp, 152]
9612	mov	x1, 0
9613	ldr	w0, [x19, 2624]
9614	add	x1, x19, 2712
9615	ldr	w2, [x1, 80]
9616	cbz	w2, .L1266
9617	ldr	w2, [x1, 84]
9618	cmp	w2, w0
9619	bcs	.L1267
9620	mov	w20, 2048
9621.L1272:
9622	ldr	w1, [x19, 2624]
9623	add	x21, x19, 2712
9624	ldr	w0, [x21, 84]
9625	cmp	w0, w1
9626	bcc	.L1268
9627.L1271:
9628	mov	w0, -1
9629.L1265:
9630	mrs	x1, sp_el0
9631	ldr	x2, [sp, 152]
9632	ldr	x3, [x1, 1376]
9633	subs	x2, x2, x3
9634	mov	x3, 0
9635	beq	.L1276
9636	bl	__stack_chk_fail
9637.L1268:
9638	add	x1, sp, 52
9639	mov	w2, 0
9640	bl	log2phys
9641	ldr	w1, [sp, 52]
9642	ldr	w0, [x21, 84]
9643	add	w0, w0, 1
9644	str	w0, [x21, 84]
9645	cmn	w1, #1
9646	beq	.L1270
9647	str	w0, [sp, 80]
9648	mov	w2, 0
9649	ldr	x0, [x19, 3496]
9650	str	x0, [sp, 64]
9651	add	x0, sp, 88
9652	stp	wzr, w1, [sp, 56]
9653	mov	w1, 1
9654	str	x0, [sp, 72]
9655	add	x0, sp, 56
9656	bl	FlashReadPages
9657	ldr	w0, [sp, 56]
9658	cmp	w0, 256
9659	bne	.L1271
9660	ldr	w0, [sp, 52]
9661	ubfx	x0, x0, 10, 16
9662	bl	P2V_block_in_plane
9663	bl	FtlGcRefreshBlock
9664	b	.L1271
9665.L1270:
9666	subs	w20, w20, #1
9667	bne	.L1272
9668	b	.L1271
9669.L1267:
9670	ldr	w0, [x19, 2628]
9671	str	w0, [x1, 76]
9672	str	xzr, [x1, 80]
9673.L1279:
9674	mov	w0, 0
9675	b	.L1265
9676.L1266:
9677	ldr	w2, [x19, 2684]
9678	mov	w3, 10000
9679	mov	w5, 31
9680	ldr	w6, [x1, 76]
9681	cmp	w2, w3
9682	mov	w3, 63
9683	csel	w5, w5, w3, hi
9684	ldr	w3, [x19, 2628]
9685	ldrh	w4, [x19, 2540]
9686	add	w7, w3, 1048576
9687	cmp	w6, w7
9688	bhi	.L1275
9689	mov	w7, 1000
9690	lsr	w2, w2, 10
9691	add	w2, w2, 1
9692	mul	w0, w0, w7
9693	udiv	w0, w0, w2
9694	add	w0, w0, w6
9695	cmp	w3, w0
9696	bhi	.L1275
9697	tst	w5, w4
9698	bne	.L1279
9699	ldr	w0, [x1, 100]
9700	cmp	w0, w4
9701	beq	.L1279
9702.L1275:
9703	mov	x0, 1
9704	str	w3, [x19, 2788]
9705	str	x0, [x19, 2792]
9706	str	w4, [x19, 2812]
9707	b	.L1279
9708.L1276:
9709	ldp	x19, x20, [sp, 16]
9710	ldr	x21, [sp, 32]
9711	ldp	x29, x30, [sp], 160
9712	hint	29 // autiasp
9713	ret
9714	.size	FtlReadRefresh, .-FtlReadRefresh
9715	.align	2
9716	.global	l2p_flush
9717	.type	l2p_flush, %function
9718l2p_flush:
9719	hint	34 // bti c
9720	.section	__patchable_function_entries
9721	.align	3
9722	.8byte	.LPFE101
9723	.text
9724.LPFE101:
9725	nop
9726	nop
9727	hint	25 // paciasp
9728	stp	x29, x30, [sp, -32]!
9729	mov	x29, sp
9730	stp	x19, x20, [sp, 16]
9731	adrp	x20, .LANCHOR0
9732	add	x20, x20, :lo12:.LANCHOR0
9733	mov	w19, 0
9734	bl	FtlWriteDump_data
9735.L1283:
9736	ldrh	w0, [x20, 342]
9737	cmp	w0, w19
9738	bhi	.L1285
9739	mov	w0, 0
9740	ldp	x19, x20, [sp, 16]
9741	ldp	x29, x30, [sp], 32
9742	hint	29 // autiasp
9743	ret
9744.L1285:
9745	ldr	x1, [x20, 2608]
9746	ubfiz	x0, x19, 4, 16
9747	add	x0, x1, x0
9748	ldr	w0, [x0, 4]
9749	tbz	w0, #31, .L1284
9750	mov	w0, w19
9751	bl	flush_l2p_region
9752.L1284:
9753	add	w19, w19, 1
9754	and	w19, w19, 65535
9755	b	.L1283
9756	.size	l2p_flush, .-l2p_flush
9757	.align	2
9758	.global	FtlVendorPartWrite
9759	.type	FtlVendorPartWrite, %function
9760FtlVendorPartWrite:
9761	hint	34 // bti c
9762	.section	__patchable_function_entries
9763	.align	3
9764	.8byte	.LPFE102
9765	.text
9766.LPFE102:
9767	nop
9768	nop
9769	hint	25 // paciasp
9770	stp	x29, x30, [sp, -224]!
9771	mov	x29, sp
9772	stp	x19, x20, [sp, 16]
9773	adrp	x19, .LANCHOR0
9774	add	x19, x19, :lo12:.LANCHOR0
9775	stp	x21, x22, [sp, 32]
9776	mov	w21, w0
9777	mrs	x0, sp_el0
9778	stp	x23, x24, [sp, 48]
9779	mov	w20, w1
9780	ldrh	w22, [x19, 312]
9781	stp	x25, x26, [sp, 64]
9782	stp	x27, x28, [sp, 80]
9783	lsr	w22, w21, w22
9784	ldr	x1, [x0, 1376]
9785	str	x1, [sp, 216]
9786	mov	x1, 0
9787	ldrh	w0, [x19, 300]
9788	add	w1, w21, w20
9789	cmp	w1, w0
9790	bhi	.L1296
9791	mov	x24, x2
9792	add	x27, x19, 3880
9793	mov	w25, 0
9794	mov	w28, -1
9795.L1289:
9796	cbnz	w20, .L1294
9797.L1287:
9798	mrs	x0, sp_el0
9799	ldr	x1, [sp, 216]
9800	ldr	x2, [x0, 1376]
9801	subs	x1, x1, x2
9802	mov	x2, 0
9803	beq	.L1295
9804	bl	__stack_chk_fail
9805.L1294:
9806	ldrh	w1, [x19, 262]
9807	ldr	x0, [x19, 3592]
9808	udiv	w23, w21, w1
9809	ldr	w2, [x0, w22, uxtw 2]
9810	msub	w23, w23, w1, w21
9811	sub	w0, w1, w23
9812	and	w26, w0, 65535
9813	cmp	w20, w0, uxth
9814	bcs	.L1290
9815	and	w26, w20, 65535
9816.L1290:
9817	ldr	x0, [x19, 3464]
9818	cbz	w2, .L1291
9819	cmp	w1, w26
9820	beq	.L1291
9821	str	x0, [sp, 128]
9822	add	x0, sp, 152
9823	str	w2, [sp, 124]
9824	mov	w2, 1
9825	mov	w1, w2
9826	str	x0, [sp, 136]
9827	add	x0, sp, 120
9828	bl	FlashReadPages
9829.L1292:
9830	lsl	w4, w26, 9
9831	sbfiz	x23, x23, 9, 23
9832	ldr	x0, [x19, 3464]
9833	mov	w2, w4
9834	mov	x1, x24
9835	str	w4, [sp, 108]
9836	add	x0, x0, x23
9837	bl	ftl_memcpy
9838	ldr	x2, [x19, 3464]
9839	mov	w1, w22
9840	mov	x0, x27
9841	sub	w20, w20, w26
9842	add	w21, w21, w26
9843	add	w22, w22, 1
9844	bl	FtlMapWritePage
9845	ldr	w4, [sp, 108]
9846	cmn	w0, #1
9847	csel	w25, w25, w28, ne
9848	add	x24, x24, w4, sxtw
9849	b	.L1289
9850.L1291:
9851	ldrh	w2, [x19, 314]
9852	mov	w1, 0
9853	bl	ftl_memset
9854	b	.L1292
9855.L1296:
9856	mov	w25, -1
9857	b	.L1287
9858.L1295:
9859	mov	w0, w25
9860	ldp	x19, x20, [sp, 16]
9861	ldp	x21, x22, [sp, 32]
9862	ldp	x23, x24, [sp, 48]
9863	ldp	x25, x26, [sp, 64]
9864	ldp	x27, x28, [sp, 80]
9865	ldp	x29, x30, [sp], 224
9866	hint	29 // autiasp
9867	ret
9868	.size	FtlVendorPartWrite, .-FtlVendorPartWrite
9869	.align	2
9870	.global	Ftl_save_ext_data
9871	.type	Ftl_save_ext_data, %function
9872Ftl_save_ext_data:
9873	hint	34 // bti c
9874	.section	__patchable_function_entries
9875	.align	3
9876	.8byte	.LPFE103
9877	.text
9878.LPFE103:
9879	nop
9880	nop
9881	adrp	x0, .LANCHOR0
9882	add	x0, x0, :lo12:.LANCHOR0
9883	mov	w1, 19539
9884	movk	w1, 0x4654, lsl 16
9885	ldr	w3, [x0, 2712]
9886	cmp	w3, w1
9887	bne	.L1304
9888	add	x2, x0, 2712
9889	hint	25 // paciasp
9890	stp	x29, x30, [sp, -16]!
9891	mov	w1, 87
9892	movk	w1, 0x5000, lsl 16
9893	mov	x29, sp
9894	str	w1, [x2, 4]
9895	ldr	w1, [x0, 2652]
9896	str	w1, [x2, 88]
9897	ldr	w1, [x0, 2656]
9898	str	w1, [x2, 92]
9899	ldr	w1, [x0, 2648]
9900	str	w1, [x2, 8]
9901	ldr	w1, [x0, 2636]
9902	str	w1, [x2, 12]
9903	ldr	w1, [x0, 2628]
9904	str	w1, [x2, 16]
9905	ldr	w1, [x0, 2644]
9906	str	w1, [x2, 20]
9907	ldr	w1, [x0, 2672]
9908	str	w1, [x2, 28]
9909	ldr	w1, [x0, 2680]
9910	str	w1, [x2, 32]
9911	ldr	w1, [x0, 2632]
9912	str	w1, [x2, 36]
9913	ldr	w1, [x0, 2640]
9914	str	w1, [x2, 40]
9915	ldr	w1, [x0, 2684]
9916	ldr	w0, [x0, 2688]
9917	stp	w1, w0, [x2, 44]
9918	mov	w1, 1
9919	mov	w0, 0
9920	bl	FtlVendorPartWrite
9921	ldp	x29, x30, [sp], 16
9922	hint	29 // autiasp
9923	ret
9924.L1304:
9925	ret
9926	.size	Ftl_save_ext_data, .-Ftl_save_ext_data
9927	.align	2
9928	.global	FtlEctTblFlush
9929	.type	FtlEctTblFlush, %function
9930FtlEctTblFlush:
9931	hint	34 // bti c
9932	.section	__patchable_function_entries
9933	.align	3
9934	.8byte	.LPFE104
9935	.text
9936.LPFE104:
9937	nop
9938	nop
9939	adrp	x2, .LANCHOR0
9940	add	x2, x2, :lo12:.LANCHOR0
9941	ldrh	w1, [x2, 3944]
9942	cmp	w1, 31
9943	bhi	.L1311
9944	add	w1, w1, 1
9945	mov	w3, 1
9946	strh	w1, [x2, 3944]
9947.L1308:
9948	ldr	x1, [x2, 3544]
9949	ldr	w4, [x1, 16]
9950	cbnz	w0, .L1309
9951	ldr	w0, [x1, 20]
9952	add	w3, w3, w0
9953	cmp	w3, w4
9954	bhi	.L1313
9955.L1309:
9956	hint	25 // paciasp
9957	stp	x29, x30, [sp, -16]!
9958	mov	w0, 17221
9959	mov	x29, sp
9960	movk	w0, 0x4254, lsl 16
9961	str	w0, [x1]
9962	str	w4, [x1, 20]
9963	ldr	x0, [x2, 3544]
9964	ldrh	w1, [x2, 3528]
9965	str	wzr, [x0, 4]
9966	lsl	w3, w1, 9
9967	str	w3, [x0, 12]
9968	ldr	w3, [x0, 8]
9969	ldr	x2, [x2, 3544]
9970	add	w3, w3, 1
9971	str	w3, [x0, 8]
9972	mov	w0, 64
9973	bl	FtlVendorPartWrite
9974	bl	Ftl_save_ext_data
9975	mov	w0, 0
9976	ldp	x29, x30, [sp], 16
9977	hint	29 // autiasp
9978	ret
9979.L1311:
9980	mov	w3, 32
9981	b	.L1308
9982.L1313:
9983	mov	w0, 0
9984	ret
9985	.size	FtlEctTblFlush, .-FtlEctTblFlush
9986	.align	2
9987	.global	sftl_vendor_write
9988	.type	sftl_vendor_write, %function
9989sftl_vendor_write:
9990	hint	34 // bti c
9991	.section	__patchable_function_entries
9992	.align	3
9993	.8byte	.LPFE105
9994	.text
9995.LPFE105:
9996	nop
9997	nop
9998	hint	25 // paciasp
9999	stp	x29, x30, [sp, -16]!
10000	add	w0, w0, 256
10001	mov	x29, sp
10002	bl	FtlVendorPartWrite
10003	ldp	x29, x30, [sp], 16
10004	hint	29 // autiasp
10005	ret
10006	.size	sftl_vendor_write, .-sftl_vendor_write
10007	.section	.rodata.str1.1
10008.LC119:
10009	.string	"FtlVendorPartRead refresh = %x phyAddr = %x\n"
10010	.text
10011	.align	2
10012	.global	FtlVendorPartRead
10013	.type	FtlVendorPartRead, %function
10014FtlVendorPartRead:
10015	hint	34 // bti c
10016	.section	__patchable_function_entries
10017	.align	3
10018	.8byte	.LPFE106
10019	.text
10020.LPFE106:
10021	nop
10022	nop
10023	hint	25 // paciasp
10024	stp	x29, x30, [sp, -224]!
10025	adrp	x3, .LANCHOR0
10026	mov	x29, sp
10027	stp	x27, x28, [sp, 80]
10028	add	x28, x3, :lo12:.LANCHOR0
10029	stp	x19, x20, [sp, 16]
10030	mov	w20, w0
10031	mrs	x0, sp_el0
10032	stp	x21, x22, [sp, 32]
10033	mov	w19, w1
10034	ldrh	w21, [x28, 312]
10035	stp	x23, x24, [sp, 48]
10036	stp	x25, x26, [sp, 64]
10037	lsr	w21, w20, w21
10038	ldr	x1, [x0, 1376]
10039	str	x1, [sp, 216]
10040	mov	x1, 0
10041	ldrh	w0, [x28, 300]
10042	add	w1, w20, w19
10043	cmp	w1, w0
10044	bhi	.L1327
10045	adrp	x26, .LC119
10046	mov	x22, x2
10047	add	x26, x26, :lo12:.LC119
10048	mov	w24, 0
10049.L1319:
10050	cbnz	w19, .L1325
10051.L1317:
10052	mrs	x0, sp_el0
10053	ldr	x1, [sp, 216]
10054	ldr	x2, [x0, 1376]
10055	subs	x1, x1, x2
10056	mov	x2, 0
10057	beq	.L1326
10058	bl	__stack_chk_fail
10059.L1325:
10060	ldr	x0, [x28, 3592]
10061	ldr	w4, [x0, w21, uxtw 2]
10062	ldrh	w0, [x28, 262]
10063	udiv	w23, w20, w0
10064	msub	w23, w23, w0, w20
10065	sub	w0, w0, w23
10066	and	w25, w0, 65535
10067	cmp	w19, w0, uxth
10068	bcs	.L1320
10069	and	w25, w19, 65535
10070.L1320:
10071	lsl	w27, w25, 9
10072	cbz	w4, .L1321
10073	ldr	x0, [x28, 3464]
10074	str	x0, [sp, 128]
10075	add	x0, sp, 152
10076	mov	w2, 1
10077	mov	w1, w2
10078	str	w4, [sp, 108]
10079	str	w4, [sp, 124]
10080	str	x0, [sp, 136]
10081	add	x0, sp, 120
10082	bl	FlashReadPages
10083	ldr	w0, [sp, 120]
10084	ldr	w4, [sp, 108]
10085	cmn	w0, #1
10086	ldr	w0, [x28, 3712]
10087	csinv	w24, w24, wzr, ne
10088	cmp	w0, 256
10089	bne	.L1323
10090	mov	w2, w4
10091	mov	w1, w21
10092	mov	x0, x26
10093	bl	sftl_printk
10094	ldr	x2, [x28, 3464]
10095	mov	w1, w21
10096	add	x0, x28, 3880
10097	bl	FtlMapWritePage
10098.L1323:
10099	ldr	x1, [x28, 3464]
10100	sbfiz	x23, x23, 9, 23
10101	mov	w2, w27
10102	mov	x0, x22
10103	add	x1, x1, x23
10104	bl	ftl_memcpy
10105.L1324:
10106	add	w21, w21, 1
10107	sub	w19, w19, w25
10108	add	w20, w20, w25
10109	add	x22, x22, w27, sxtw
10110	b	.L1319
10111.L1321:
10112	mov	w2, w27
10113	mov	x0, x22
10114	mov	w1, 0
10115	bl	ftl_memset
10116	b	.L1324
10117.L1327:
10118	mov	w24, -1
10119	b	.L1317
10120.L1326:
10121	mov	w0, w24
10122	ldp	x19, x20, [sp, 16]
10123	ldp	x21, x22, [sp, 32]
10124	ldp	x23, x24, [sp, 48]
10125	ldp	x25, x26, [sp, 64]
10126	ldp	x27, x28, [sp, 80]
10127	ldp	x29, x30, [sp], 224
10128	hint	29 // autiasp
10129	ret
10130	.size	FtlVendorPartRead, .-FtlVendorPartRead
10131	.section	.rodata.str1.1
10132.LC120:
10133	.string	"no ect"
10134	.text
10135	.align	2
10136	.global	FtlLoadEctTbl
10137	.type	FtlLoadEctTbl, %function
10138FtlLoadEctTbl:
10139	hint	34 // bti c
10140	.section	__patchable_function_entries
10141	.align	3
10142	.8byte	.LPFE107
10143	.text
10144.LPFE107:
10145	nop
10146	nop
10147	hint	25 // paciasp
10148	stp	x29, x30, [sp, -32]!
10149	mov	w0, 64
10150	mov	x29, sp
10151	str	x19, [sp, 16]
10152	adrp	x19, .LANCHOR0
10153	add	x19, x19, :lo12:.LANCHOR0
10154	ldrh	w1, [x19, 3528]
10155	ldr	x2, [x19, 3544]
10156	bl	FtlVendorPartRead
10157	ldr	x0, [x19, 3544]
10158	ldr	w1, [x0]
10159	mov	w0, 17221
10160	movk	w0, 0x4254, lsl 16
10161	cmp	w1, w0
10162	beq	.L1330
10163	adrp	x1, .LC120
10164	adrp	x0, .LC78
10165	add	x1, x1, :lo12:.LC120
10166	add	x0, x0, :lo12:.LC78
10167	bl	sftl_printk
10168	ldr	x0, [x19, 3544]
10169	mov	w1, 0
10170	ldrh	w2, [x19, 3528]
10171	lsl	w2, w2, 9
10172	bl	ftl_memset
10173.L1330:
10174	mov	w0, 0
10175	ldr	x19, [sp, 16]
10176	ldp	x29, x30, [sp], 32
10177	hint	29 // autiasp
10178	ret
10179	.size	FtlLoadEctTbl, .-FtlLoadEctTbl
10180	.align	2
10181	.global	Ftl_load_ext_data
10182	.type	Ftl_load_ext_data, %function
10183Ftl_load_ext_data:
10184	hint	34 // bti c
10185	.section	__patchable_function_entries
10186	.align	3
10187	.8byte	.LPFE108
10188	.text
10189.LPFE108:
10190	nop
10191	nop
10192	hint	25 // paciasp
10193	stp	x29, x30, [sp, -48]!
10194	mov	w1, 1
10195	mov	x29, sp
10196	stp	x19, x20, [sp, 16]
10197	adrp	x19, .LANCHOR0
10198	add	x19, x19, :lo12:.LANCHOR0
10199	str	x21, [sp, 32]
10200	add	x21, x19, 2712
10201	mov	x2, x21
10202	mov	w0, 0
10203	bl	FtlVendorPartRead
10204	mov	w20, 19539
10205	ldr	w0, [x19, 2712]
10206	movk	w20, 0x4654, lsl 16
10207	cmp	w0, w20
10208	beq	.L1333
10209	mov	x0, x21
10210	mov	w2, 512
10211	mov	w1, 0
10212	bl	ftl_memset
10213	str	w20, [x19, 2712]
10214.L1333:
10215	ldr	w1, [x19, 2800]
10216	str	w1, [x19, 2652]
10217	ldr	w1, [x19, 2804]
10218	ldr	w2, [x19, 2744]
10219	str	w1, [x19, 2656]
10220	ldr	w1, [x19, 2720]
10221	str	w1, [x19, 2648]
10222	ldr	w1, [x19, 2724]
10223	str	w2, [x19, 2680]
10224	ldr	w2, [x19, 2748]
10225	str	w2, [x19, 2632]
10226	ldr	w2, [x19, 2752]
10227	str	w1, [x19, 2636]
10228	ldr	w1, [x19, 2728]
10229	ldr	w0, [x19, 2760]
10230	str	w1, [x19, 2628]
10231	ldr	w1, [x19, 2732]
10232	str	w2, [x19, 2640]
10233	ldr	w2, [x19, 2756]
10234	str	w1, [x19, 2644]
10235	ldr	w1, [x19, 2740]
10236	str	w2, [x19, 2684]
10237	ldr	w2, [x19, 2668]
10238	str	w0, [x19, 2688]
10239	ldrh	w0, [x19, 296]
10240	str	w1, [x19, 2672]
10241	ldr	x21, [sp, 32]
10242	madd	w0, w0, w2, w1
10243	ldrh	w1, [x19, 244]
10244	udiv	w0, w0, w1
10245	str	w0, [x19, 2676]
10246	ldp	x19, x20, [sp, 16]
10247	ldp	x29, x30, [sp], 48
10248	hint	29 // autiasp
10249	ret
10250	.size	Ftl_load_ext_data, .-Ftl_load_ext_data
10251	.align	2
10252	.global	sftl_vendor_read
10253	.type	sftl_vendor_read, %function
10254sftl_vendor_read:
10255	hint	34 // bti c
10256	.section	__patchable_function_entries
10257	.align	3
10258	.8byte	.LPFE109
10259	.text
10260.LPFE109:
10261	nop
10262	nop
10263	hint	25 // paciasp
10264	stp	x29, x30, [sp, -16]!
10265	add	w0, w0, 256
10266	mov	x29, sp
10267	bl	FtlVendorPartRead
10268	ldp	x29, x30, [sp], 16
10269	hint	29 // autiasp
10270	ret
10271	.size	sftl_vendor_read, .-sftl_vendor_read
10272	.align	2
10273	.global	FtlMapBlkWriteDump_data
10274	.type	FtlMapBlkWriteDump_data, %function
10275FtlMapBlkWriteDump_data:
10276	hint	34 // bti c
10277	.section	__patchable_function_entries
10278	.align	3
10279	.8byte	.LPFE110
10280	.text
10281.LPFE110:
10282	nop
10283	nop
10284	hint	25 // paciasp
10285	stp	x29, x30, [sp, -48]!
10286	mov	x29, sp
10287	stp	x19, x20, [sp, 16]
10288	mov	x19, x0
10289	str	x21, [sp, 32]
10290	ldr	w0, [x0, 56]
10291	cbz	w0, .L1337
10292	ldrh	w1, [x19, 6]
10293	adrp	x20, .LANCHOR0
10294	add	x20, x20, :lo12:.LANCHOR0
10295	str	wzr, [x19, 56]
10296	sub	w1, w1, #1
10297	add	x0, x20, 3712
10298	ldr	x2, [x19, 40]
10299	and	w21, w1, 65535
10300	ubfiz	x1, x1, 2, 16
10301	ldr	x3, [x20, 3456]
10302	ldr	x4, [x20, 3512]
10303	stp	x3, x4, [x0, 8]
10304	ldr	w1, [x2, x1]
10305	str	w1, [x0, 4]
10306	cbz	w1, .L1339
10307	mov	w2, 1
10308	mov	w1, w2
10309	bl	FlashReadPages
10310.L1340:
10311	ldr	x2, [x20, 3720]
10312	mov	w1, w21
10313	mov	x0, x19
10314	bl	FtlMapWritePage
10315.L1337:
10316	ldp	x19, x20, [sp, 16]
10317	ldr	x21, [sp, 32]
10318	ldp	x29, x30, [sp], 48
10319	hint	29 // autiasp
10320	ret
10321.L1339:
10322	ldrh	w2, [x20, 314]
10323	mov	x0, x3
10324	mov	w1, 255
10325	bl	ftl_memset
10326	b	.L1340
10327	.size	FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data
10328	.section	.rodata.str1.1
10329.LC121:
10330	.string	"FtlVpcTblFlush error = %x error count = %d\n"
10331	.text
10332	.align	2
10333	.global	FtlVpcTblFlush
10334	.type	FtlVpcTblFlush, %function
10335FtlVpcTblFlush:
10336	hint	34 // bti c
10337	.section	__patchable_function_entries
10338	.align	3
10339	.8byte	.LPFE111
10340	.text
10341.LPFE111:
10342	nop
10343	nop
10344	hint	25 // paciasp
10345	stp	x29, x30, [sp, -80]!
10346	mov	x29, sp
10347	stp	x19, x20, [sp, 16]
10348	adrp	x19, .LANCHOR0
10349	add	x19, x19, :lo12:.LANCHOR0
10350	stp	x21, x22, [sp, 32]
10351	add	x21, x19, 2560
10352	add	x20, x19, 2512
10353	stp	x23, x24, [sp, 48]
10354	adrp	x23, .LANCHOR1
10355	add	x23, x23, :lo12:.LANCHOR1
10356	str	x25, [sp, 64]
10357	add	x23, x23, 471
10358	ldr	x22, [x19, 3512]
10359	str	x22, [x19, 3728]
10360	ldr	x0, [x19, 3448]
10361	str	x0, [x19, 3720]
10362	ldrh	w0, [x21, 136]
10363	mov	w24, 65535
10364	strh	w0, [x22, 2]
10365	mov	w0, -3932
10366	strh	w0, [x22]
10367	ldr	w0, [x21, 144]
10368	str	w0, [x22, 4]
10369	mov	x0, 19539
10370	str	xzr, [x22, 8]
10371	movk	x0, 0x4654, lsl 16
10372	ldrb	w1, [x19, 30]
10373	movk	x0, 0x57, lsl 32
10374	movk	x0, 0x5000, lsl 48
10375	str	x0, [x19, 2512]
10376	ldrh	w0, [x21, 142]
10377	strh	w0, [x19, 2520]
10378	ldrh	w0, [x19, 258]
10379	strb	w0, [x19, 2522]
10380	ldrh	w0, [x19, 24]
10381	strh	w0, [x19, 2526]
10382	ldrh	w0, [x19, 26]
10383	orr	w0, w1, w0, lsl 6
10384	strh	w0, [x19, 2528]
10385	ldrb	w0, [x19, 32]
10386	strb	w0, [x19, 2523]
10387	ldrh	w0, [x19, 80]
10388	ldrb	w1, [x19, 86]
10389	strh	w0, [x19, 2530]
10390	ldrh	w0, [x19, 82]
10391	ldrh	w2, [x19, 314]
10392	orr	w0, w1, w0, lsl 6
10393	strh	w0, [x19, 2532]
10394	ldrb	w0, [x19, 88]
10395	strb	w0, [x19, 2524]
10396	ldrh	w0, [x19, 128]
10397	ldrb	w1, [x19, 134]
10398	strh	w0, [x19, 2534]
10399	ldrh	w0, [x19, 130]
10400	orr	w0, w1, w0, lsl 6
10401	strh	w0, [x19, 2536]
10402	ldrb	w0, [x19, 136]
10403	mov	w1, 255
10404	strb	w0, [x19, 2525]
10405	ldr	w0, [x19, 2668]
10406	str	w0, [x19, 2544]
10407	ldr	w0, [x19, 2660]
10408	str	w0, [x19, 2552]
10409	ldr	w0, [x19, 2664]
10410	str	w0, [x19, 2548]
10411	ldr	x0, [x19, 3720]
10412	bl	ftl_memset
10413	ldr	x0, [x19, 3720]
10414	mov	x1, x20
10415	mov	w2, 48
10416	mov	w20, 0
10417	bl	ftl_memcpy
10418	ldrh	w2, [x19, 244]
10419	ldr	x1, [x19, 72]
10420	ldr	x0, [x19, 3720]
10421	lsl	w2, w2, 1
10422	add	x0, x0, 48
10423	bl	ftl_memcpy
10424	mov	w0, 0
10425	bl	FtlUpdateVaildLpn
10426.L1346:
10427	ldrh	w1, [x21, 136]
10428	ldrh	w2, [x21, 138]
10429	ldr	x0, [x19, 3448]
10430	str	x0, [x19, 3720]
10431	ldr	x0, [x19, 3512]
10432	str	x0, [x19, 3728]
10433	orr	w0, w2, w1, lsl 10
10434	str	w0, [x19, 3716]
10435	ldrh	w0, [x19, 308]
10436	sub	w0, w0, #1
10437	cmp	w2, w0
10438	blt	.L1347
10439	ldrh	w24, [x21, 140]
10440	strh	wzr, [x21, 138]
10441	strh	w1, [x21, 140]
10442	bl	FtlFreeSysBlkQueueOut
10443	ldr	w1, [x19, 2660]
10444	str	w1, [x21, 144]
10445	add	w2, w1, 1
10446	str	w2, [x19, 2660]
10447	ubfiz	w2, w0, 10, 16
10448	str	w2, [x19, 3716]
10449	strh	w0, [x22, 2]
10450	str	w1, [x22, 4]
10451	strh	w0, [x21, 136]
10452.L1347:
10453	ldrh	w1, [x19, 314]
10454	ldr	x0, [x19, 3448]
10455	bl	js_hash
10456	str	w0, [x22, 12]
10457	mov	w3, 1
10458	add	x0, x19, 3712
10459	mov	w1, w3
10460	mov	w2, w3
10461	bl	FlashProgPages
10462	ldrh	w0, [x21, 138]
10463	ldr	w1, [x19, 3712]
10464	add	w0, w0, 1
10465	and	w0, w0, 65535
10466	strh	w0, [x21, 138]
10467	cmn	w1, #1
10468	bne	.L1348
10469	cmp	w0, 1
10470	bne	.L1350
10471	mov	x1, x23
10472	mov	w2, 1145
10473	adrp	x0, .LC9
10474	add	x0, x0, :lo12:.LC9
10475	bl	sftl_printk
10476	ldrh	w0, [x21, 138]
10477	cmp	w0, 1
10478	bne	.L1350
10479	ldrh	w0, [x19, 308]
10480	sub	w0, w0, #1
10481	strh	w0, [x21, 138]
10482.L1350:
10483	add	w20, w20, 1
10484	and	w20, w20, 65535
10485	cmp	w20, 3
10486	bls	.L1346
10487	ldr	w1, [x19, 3716]
10488	adrp	x0, .LC121
10489	mov	w2, w20
10490	add	x0, x0, :lo12:.LC121
10491	bl	sftl_printk
10492.L1353:
10493	b	.L1353
10494.L1348:
10495	cmp	w0, 1
10496	beq	.L1346
10497	cmp	w1, 256
10498	beq	.L1346
10499	mov	w0, 65535
10500	cmp	w24, w0
10501	beq	.L1354
10502	mov	w0, w24
10503	mov	w1, 1
10504	bl	FtlFreeSysBlkQueueIn
10505.L1354:
10506	mov	w0, 0
10507	ldp	x19, x20, [sp, 16]
10508	ldp	x21, x22, [sp, 32]
10509	ldp	x23, x24, [sp, 48]
10510	ldr	x25, [sp, 64]
10511	ldp	x29, x30, [sp], 80
10512	hint	29 // autiasp
10513	ret
10514	.size	FtlVpcTblFlush, .-FtlVpcTblFlush
10515	.align	2
10516	.global	FtlSysFlush
10517	.type	FtlSysFlush, %function
10518FtlSysFlush:
10519	hint	34 // bti c
10520	.section	__patchable_function_entries
10521	.align	3
10522	.8byte	.LPFE112
10523	.text
10524.LPFE112:
10525	nop
10526	nop
10527	hint	25 // paciasp
10528	stp	x29, x30, [sp, -16]!
10529	mov	x29, sp
10530	bl	l2p_flush
10531	mov	w0, 1
10532	bl	FtlEctTblFlush
10533	bl	FtlVpcTblFlush
10534	mov	w0, 0
10535	ldp	x29, x30, [sp], 16
10536	hint	29 // autiasp
10537	ret
10538	.size	FtlSysFlush, .-FtlSysFlush
10539	.align	2
10540	.global	sftl_deinit
10541	.type	sftl_deinit, %function
10542sftl_deinit:
10543	hint	34 // bti c
10544	.section	__patchable_function_entries
10545	.align	3
10546	.8byte	.LPFE113
10547	.text
10548.LPFE113:
10549	nop
10550	nop
10551	adrp	x0, .LANCHOR2
10552	ldr	w0, [x0, #:lo12:.LANCHOR2]
10553	cmp	w0, 1
10554	bne	.L1367
10555	hint	25 // paciasp
10556	stp	x29, x30, [sp, -16]!
10557	mov	x29, sp
10558	bl	FtlSysFlush
10559	mov	w0, 0
10560	ldp	x29, x30, [sp], 16
10561	hint	29 // autiasp
10562	ret
10563.L1367:
10564	mov	w0, 0
10565	ret
10566	.size	sftl_deinit, .-sftl_deinit
10567	.align	2
10568	.global	sftl_discard
10569	.type	sftl_discard, %function
10570sftl_discard:
10571	hint	34 // bti c
10572	.section	__patchable_function_entries
10573	.align	3
10574	.8byte	.LPFE114
10575	.text
10576.LPFE114:
10577	nop
10578	nop
10579	hint	25 // paciasp
10580	stp	x29, x30, [sp, -64]!
10581	mov	x29, sp
10582	stp	x19, x20, [sp, 16]
10583	adrp	x19, .LANCHOR0
10584	add	x19, x19, :lo12:.LANCHOR0
10585	str	x21, [sp, 32]
10586	mov	w20, w1
10587	mrs	x1, sp_el0
10588	ldr	x2, [x1, 1376]
10589	str	x2, [sp, 56]
10590	mov	x2, 0
10591	ldr	w1, [x19, 344]
10592	cmp	w1, w0
10593	bls	.L1381
10594	cmp	w1, w20
10595	bcc	.L1381
10596	add	w2, w0, w20
10597	cmp	w1, w2
10598	bcc	.L1381
10599	cmp	w20, 31
10600	bhi	.L1372
10601.L1389:
10602	mov	w0, 0
10603.L1370:
10604	mrs	x1, sp_el0
10605	ldr	x2, [sp, 56]
10606	ldr	x3, [x1, 1376]
10607	subs	x2, x2, x3
10608	mov	x3, 0
10609	beq	.L1378
10610	bl	__stack_chk_fail
10611.L1372:
10612	ldrh	w1, [x19, 262]
10613	udiv	w21, w0, w1
10614	msub	w0, w1, w21, w0
10615	ands	w0, w0, 65535
10616	beq	.L1373
10617	sub	w0, w1, w0
10618	add	w21, w21, 1
10619	cmp	w0, w20
10620	csel	w0, w0, w20, ls
10621	sub	w20, w20, w0, uxth
10622.L1373:
10623	mov	w0, -1
10624	str	w0, [sp, 52]
10625.L1374:
10626	ldrh	w0, [x19, 262]
10627	cmp	w0, w20
10628	bls	.L1376
10629	ldr	w0, [x19, 3948]
10630	cmp	w0, 32
10631	bls	.L1389
10632	str	wzr, [x19, 3948]
10633	bl	l2p_flush
10634	bl	FtlVpcTblFlush
10635	b	.L1389
10636.L1376:
10637	add	x1, sp, 48
10638	mov	w0, w21
10639	mov	w2, 0
10640	bl	log2phys
10641	ldr	w0, [sp, 48]
10642	cmn	w0, #1
10643	beq	.L1375
10644	ldr	w0, [x19, 3948]
10645	add	x1, sp, 52
10646	mov	w2, 1
10647	add	w0, w0, 1
10648	str	w0, [x19, 3948]
10649	ldr	w0, [x19, 2632]
10650	add	w0, w0, 1
10651	str	w0, [x19, 2632]
10652	mov	w0, w21
10653	bl	log2phys
10654	ldr	w0, [sp, 48]
10655	ubfx	x0, x0, 10, 16
10656	bl	P2V_block_in_plane
10657	bl	decrement_vpc_count
10658.L1375:
10659	ldrh	w0, [x19, 262]
10660	add	w21, w21, 1
10661	sub	w20, w20, w0
10662	b	.L1374
10663.L1381:
10664	mov	w0, -1
10665	b	.L1370
10666.L1378:
10667	ldp	x19, x20, [sp, 16]
10668	ldr	x21, [sp, 32]
10669	ldp	x29, x30, [sp], 64
10670	hint	29 // autiasp
10671	ret
10672	.size	sftl_discard, .-sftl_discard
10673	.section	.rodata.str1.1
10674.LC122:
10675	.string	"FtlCheckVpc %x = %x  %x\n"
10676	.text
10677	.align	2
10678	.global	FtlVpcCheckAndModify
10679	.type	FtlVpcCheckAndModify, %function
10680FtlVpcCheckAndModify:
10681	hint	34 // bti c
10682	.section	__patchable_function_entries
10683	.align	3
10684	.8byte	.LPFE115
10685	.text
10686.LPFE115:
10687	nop
10688	nop
10689	hint	25 // paciasp
10690	stp	x29, x30, [sp, -96]!
10691	mrs	x0, sp_el0
10692	mov	x29, sp
10693	stp	x19, x20, [sp, 16]
10694	adrp	x19, .LANCHOR0
10695	add	x19, x19, :lo12:.LANCHOR0
10696	stp	x21, x22, [sp, 32]
10697	adrp	x22, .LANCHOR1
10698	add	x22, x22, :lo12:.LANCHOR1
10699	stp	x23, x24, [sp, 48]
10700	mov	w20, 0
10701	str	x25, [sp, 64]
10702	ldr	x1, [x0, 1376]
10703	str	x1, [sp, 88]
10704	mov	x1, 0
10705	adrp	x0, .LC112
10706	add	x1, x22, 486
10707	add	x0, x0, :lo12:.LC112
10708	bl	sftl_printk
10709	ldr	x0, [x19, 3552]
10710	mov	w1, 0
10711	ldrh	w2, [x19, 246]
10712	lsl	w2, w2, 1
10713	bl	ftl_memset
10714.L1391:
10715	ldr	w0, [x19, 2624]
10716	cmp	w0, w20
10717	bhi	.L1393
10718	adrp	x23, .LC122
10719	adrp	x24, .LC9
10720	add	x23, x23, :lo12:.LC122
10721	add	x24, x24, :lo12:.LC9
10722	mov	w20, 0
10723	mov	w25, 65535
10724.L1394:
10725	ldrh	w0, [x19, 244]
10726	cmp	w0, w20
10727	bhi	.L1400
10728	bl	l2p_flush
10729	bl	FtlVpcTblFlush
10730	mrs	x0, sp_el0
10731	ldr	x1, [sp, 88]
10732	ldr	x2, [x0, 1376]
10733	subs	x1, x1, x2
10734	mov	x2, 0
10735	beq	.L1401
10736	bl	__stack_chk_fail
10737.L1393:
10738	add	x1, sp, 84
10739	mov	w0, w20
10740	mov	w2, 0
10741	bl	log2phys
10742	ldr	w0, [sp, 84]
10743	cmn	w0, #1
10744	beq	.L1392
10745	ubfx	x0, x0, 10, 16
10746	bl	P2V_block_in_plane
10747	ldr	x2, [x19, 3552]
10748	ubfiz	x0, x0, 1, 16
10749	ldrh	w1, [x2, x0]
10750	add	w1, w1, 1
10751	strh	w1, [x2, x0]
10752.L1392:
10753	add	w20, w20, 1
10754	b	.L1391
10755.L1400:
10756	ldr	x0, [x19, 72]
10757	ubfiz	x21, x20, 1, 16
10758	ldrh	w2, [x0, x21]
10759	ldr	x0, [x19, 3552]
10760	ldrh	w3, [x0, x21]
10761	cmp	w2, w3
10762	beq	.L1396
10763	cmp	w2, w25
10764	beq	.L1396
10765	mov	x0, x23
10766	mov	w1, w20
10767	bl	sftl_printk
10768	ldrh	w0, [x19, 24]
10769	cmp	w0, w20
10770	beq	.L1396
10771	ldrh	w0, [x19, 128]
10772	cmp	w0, w20
10773	beq	.L1396
10774	ldrh	w0, [x19, 80]
10775	cmp	w0, w20
10776	beq	.L1396
10777	ldr	x0, [x19, 72]
10778	ldr	x1, [x19, 3552]
10779	ldrh	w2, [x0, x21]
10780	ldrh	w1, [x1, x21]
10781	strh	w1, [x0, x21]
10782	cbnz	w2, .L1398
10783	mov	w1, w20
10784	add	x0, x19, 2592
10785	bl	List_remove_node
10786	ldrh	w0, [x19, 228]
10787	cbnz	w0, .L1399
10788	add	x1, x22, 486
10789	mov	x0, x24
10790	mov	w2, 2330
10791	bl	sftl_printk
10792.L1399:
10793	ldrh	w0, [x19, 228]
10794	sub	w0, w0, #1
10795	strh	w0, [x19, 228]
10796	mov	w0, w20
10797	bl	INSERT_DATA_LIST
10798.L1396:
10799	add	w20, w20, 1
10800	and	w20, w20, 65535
10801	b	.L1394
10802.L1398:
10803	mov	w0, w20
10804	bl	update_vpc_list
10805	b	.L1396
10806.L1401:
10807	ldp	x19, x20, [sp, 16]
10808	ldp	x21, x22, [sp, 32]
10809	ldp	x23, x24, [sp, 48]
10810	ldr	x25, [sp, 64]
10811	ldp	x29, x30, [sp], 96
10812	hint	29 // autiasp
10813	ret
10814	.size	FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
10815	.align	2
10816	.global	allocate_new_data_superblock
10817	.type	allocate_new_data_superblock, %function
10818allocate_new_data_superblock:
10819	hint	34 // bti c
10820	.section	__patchable_function_entries
10821	.align	3
10822	.8byte	.LPFE116
10823	.text
10824.LPFE116:
10825	nop
10826	nop
10827	hint	25 // paciasp
10828	stp	x29, x30, [sp, -48]!
10829	mov	x29, sp
10830	stp	x19, x20, [sp, 16]
10831	adrp	x20, .LANCHOR0
10832	add	x20, x20, :lo12:.LANCHOR0
10833	str	x21, [sp, 32]
10834	mov	x21, x0
10835	ldrh	w19, [x0]
10836	ldrh	w0, [x20, 244]
10837	cmp	w0, w19
10838	bcs	.L1407
10839	adrp	x1, .LANCHOR1
10840	add	x1, x1, :lo12:.LANCHOR1
10841	adrp	x0, .LC9
10842	add	x1, x1, 507
10843	add	x0, x0, :lo12:.LC9
10844	mov	w2, 2766
10845	bl	sftl_printk
10846.L1407:
10847	mov	w0, 65535
10848	cmp	w19, w0
10849	beq	.L1408
10850	ldr	x1, [x20, 72]
10851	ubfiz	x0, x19, 1, 16
10852	ldrh	w0, [x1, x0]
10853	cbz	w0, .L1409
10854	mov	w0, w19
10855	bl	INSERT_DATA_LIST
10856.L1408:
10857	mov	w0, 1
10858	strb	w0, [x21, 8]
10859	ldrh	w0, [x20, 3698]
10860	mov	w1, 65535
10861	cmp	w0, w1
10862	beq	.L1410
10863	cmp	w0, w19
10864	bne	.L1411
10865	ldr	x1, [x20, 72]
10866	ubfiz	x19, x19, 1, 16
10867	ldrh	w1, [x1, x19]
10868	cbz	w1, .L1412
10869.L1411:
10870	bl	update_vpc_list
10871.L1412:
10872	mov	w0, -1
10873	strh	w0, [x20, 3698]
10874.L1410:
10875	mov	x0, x21
10876	bl	allocate_data_superblock
10877	bl	l2p_flush
10878	mov	w0, 0
10879	bl	FtlEctTblFlush
10880	bl	FtlVpcTblFlush
10881	mov	w0, 0
10882	ldp	x19, x20, [sp, 16]
10883	ldr	x21, [sp, 32]
10884	ldp	x29, x30, [sp], 48
10885	hint	29 // autiasp
10886	ret
10887.L1409:
10888	mov	w0, w19
10889	bl	INSERT_FREE_LIST
10890	b	.L1408
10891	.size	allocate_new_data_superblock, .-allocate_new_data_superblock
10892	.section	.rodata.str1.1
10893.LC123:
10894	.string	"FtlProgPages error %x = %d\n"
10895.LC124:
10896	.string	"Ftlwrite decrement_vpc_count %x = %d\n"
10897	.text
10898	.align	2
10899	.global	FtlProgPages
10900	.type	FtlProgPages, %function
10901FtlProgPages:
10902	hint	34 // bti c
10903	.section	__patchable_function_entries
10904	.align	3
10905	.8byte	.LPFE117
10906	.text
10907.LPFE117:
10908	nop
10909	nop
10910	hint	25 // paciasp
10911	stp	x29, x30, [sp, -80]!
10912	mrs	x2, sp_el0
10913	mov	x29, sp
10914	stp	x19, x20, [sp, 16]
10915	mov	x20, x3
10916	mov	x19, x0
10917	stp	x21, x22, [sp, 32]
10918	mov	w21, w1
10919	stp	x23, x24, [sp, 48]
10920	adrp	x24, .LC123
10921	adrp	x23, .LANCHOR0
10922	ldr	x3, [x2, 1376]
10923	str	x3, [sp, 72]
10924	mov	x3, 0
10925	mov	w2, 0
10926	ldrb	w3, [x20, 9]
10927	add	x24, x24, :lo12:.LC123
10928	add	x23, x23, :lo12:.LANCHOR0
10929	bl	FlashProgPages
10930	mov	w1, 32
10931	umaddl	x21, w21, w1, x19
10932.L1418:
10933	cmp	x21, x19
10934	bne	.L1425
10935	adrp	x0, .LANCHOR0+236
10936	ldrb	w1, [x20, 6]
10937	ldrh	w0, [x0, #:lo12:.LANCHOR0+236]
10938	cmp	w1, w0
10939	bcc	.L1417
10940	adrp	x1, .LANCHOR1
10941	add	x1, x1, :lo12:.LANCHOR1
10942	adrp	x0, .LC9
10943	add	x1, x1, 536
10944	add	x0, x0, :lo12:.LC9
10945	mov	w2, 1000
10946	bl	sftl_printk
10947.L1417:
10948	mrs	x0, sp_el0
10949	ldr	x1, [sp, 72]
10950	ldr	x2, [x0, 1376]
10951	subs	x1, x1, x2
10952	mov	x2, 0
10953	beq	.L1427
10954	bl	__stack_chk_fail
10955.L1420:
10956	ldr	w1, [x19, 4]
10957	mov	x0, x24
10958	bl	sftl_printk
10959	ldr	w0, [x19, 4]
10960	ubfx	x0, x0, 10, 16
10961	bl	P2V_block_in_plane
10962	bl	decrement_vpc_count
10963	ldrh	w0, [x20, 4]
10964	cbnz	w0, .L1419
10965	mov	x0, x20
10966	bl	allocate_new_data_superblock
10967.L1419:
10968	mov	x0, x20
10969	bl	get_new_active_ppa
10970	str	w0, [x19, 4]
10971	mov	w2, 0
10972	mov	w1, 1
10973	str	w0, [sp, 68]
10974	ldrb	w3, [x20, 9]
10975	mov	x0, x19
10976	bl	FlashProgPages
10977.L1425:
10978	ldr	w2, [x19]
10979	cmp	w2, 256
10980	ccmn	w2, #1, 4, ne
10981	beq	.L1420
10982	ldrb	w1, [x20, 6]
10983	ldrh	w0, [x23, 236]
10984	cmp	w1, w0
10985	bcc	.L1421
10986	adrp	x1, .LANCHOR1
10987	add	x1, x1, :lo12:.LANCHOR1
10988	adrp	x0, .LC9
10989	add	x1, x1, 536
10990	add	x0, x0, :lo12:.LC9
10991	mov	w2, 985
10992	bl	sftl_printk
10993.L1421:
10994	ldr	w0, [x19, 4]
10995	add	x1, sp, 68
10996	str	w0, [sp, 68]
10997	mov	w2, 1
10998	ldr	w0, [x19, 24]
10999	bl	log2phys
11000	ldr	x0, [x19, 16]
11001	ldr	w0, [x0, 12]
11002	cmn	w0, #1
11003	beq	.L1422
11004	ubfx	x0, x0, 10, 16
11005	bl	P2V_block_in_plane
11006	and	w1, w0, 65535
11007	mov	w22, w1
11008	ldr	x2, [x23, 72]
11009	ubfiz	x0, x22, 1, 16
11010	ldrh	w0, [x2, x0]
11011	cbnz	w0, .L1423
11012	adrp	x0, .LC124
11013	mov	w2, 0
11014	add	x0, x0, :lo12:.LC124
11015	bl	sftl_printk
11016.L1423:
11017	mov	w0, w22
11018	bl	decrement_vpc_count
11019.L1422:
11020	add	x19, x19, 32
11021	b	.L1418
11022.L1427:
11023	ldp	x19, x20, [sp, 16]
11024	ldp	x21, x22, [sp, 32]
11025	ldp	x23, x24, [sp, 48]
11026	ldp	x29, x30, [sp], 80
11027	hint	29 // autiasp
11028	ret
11029	.size	FtlProgPages, .-FtlProgPages
11030	.align	2
11031	.global	FtlGcFreeTempBlock
11032	.type	FtlGcFreeTempBlock, %function
11033FtlGcFreeTempBlock:
11034	hint	34 // bti c
11035	.section	__patchable_function_entries
11036	.align	3
11037	.8byte	.LPFE118
11038	.text
11039.LPFE118:
11040	nop
11041	nop
11042	hint	25 // paciasp
11043	stp	x29, x30, [sp, -80]!
11044	mrs	x1, sp_el0
11045	mov	x29, sp
11046	stp	x19, x20, [sp, 16]
11047	adrp	x19, .LANCHOR0
11048	add	x19, x19, :lo12:.LANCHOR0
11049	stp	x21, x22, [sp, 32]
11050	stp	x23, x24, [sp, 48]
11051	ldrh	w3, [x19, 128]
11052	ldr	x2, [x1, 1376]
11053	str	x2, [sp, 72]
11054	mov	x2, 0
11055	ldrh	w1, [x19, 306]
11056	mov	w2, 65535
11057	cmp	w3, w2
11058	bne	.L1433
11059.L1440:
11060	ldrh	w2, [x19, 128]
11061	add	x0, x19, 128
11062	str	wzr, [x19, 3704]
11063	mov	w1, 65535
11064	cmp	w2, w1
11065	bne	.L1454
11066.L1458:
11067	mov	w0, 0
11068.L1432:
11069	mrs	x1, sp_el0
11070	ldr	x2, [sp, 72]
11071	ldr	x3, [x1, 1376]
11072	subs	x2, x2, x3
11073	mov	x3, 0
11074	beq	.L1449
11075	bl	__stack_chk_fail
11076.L1433:
11077	adrp	x20, .LANCHOR2
11078	add	x20, x20, :lo12:.LANCHOR2
11079	cbz	w0, .L1436
11080	ldrh	w0, [x20, 4]
11081	cmp	w0, w2
11082	beq	.L1437
11083.L1438:
11084	mov	w1, 2
11085.L1436:
11086	add	x0, x19, 128
11087	bl	FtlGcScanTempBlk
11088	ldrh	w1, [x20, 4]
11089	str	w0, [sp, 68]
11090	mov	w0, 65535
11091	cmp	w1, w0
11092	beq	.L1440
11093	mov	w0, 1
11094	b	.L1432
11095.L1437:
11096	ldrh	w0, [x19, 228]
11097	strh	wzr, [x20, 4]
11098	cmp	w0, 17
11099	bhi	.L1438
11100	b	.L1436
11101.L1454:
11102	ldrb	w0, [x0, 7]
11103	ldrh	w2, [x19, 306]
11104	ldrh	w1, [x19, 3296]
11105	mul	w0, w0, w2
11106	cmp	w1, w0
11107	beq	.L1441
11108	adrp	x1, .LANCHOR1
11109	add	x1, x1, :lo12:.LANCHOR1
11110	adrp	x0, .LC9
11111	add	x1, x1, 549
11112	add	x0, x0, :lo12:.LC9
11113	mov	w2, 164
11114	bl	sftl_printk
11115.L1441:
11116	ldrb	w0, [x19, 135]
11117	mov	w20, 0
11118	ldrh	w3, [x19, 306]
11119	mov	w24, 12
11120	ldrh	w2, [x19, 128]
11121	ldr	x1, [x19, 72]
11122	mul	w0, w0, w3
11123	strh	w0, [x1, x2, lsl 1]
11124	ldr	w1, [x19, 2648]
11125	ldrh	w0, [x19, 3296]
11126	add	w0, w0, w1
11127	str	w0, [x19, 2648]
11128.L1442:
11129	ldrh	w0, [x19, 3296]
11130	cmp	w0, w20
11131	bhi	.L1446
11132	mov	w0, -1
11133	bl	decrement_vpc_count
11134	ldrh	w2, [x19, 128]
11135	ldr	x1, [x19, 72]
11136	ldrh	w0, [x19, 128]
11137	ldrh	w1, [x1, x2, lsl 1]
11138	cbz	w1, .L1447
11139	bl	INSERT_DATA_LIST
11140.L1448:
11141	mov	w20, -1
11142	strh	w20, [x19, 128]
11143	strh	wzr, [x19, 3284]
11144	strh	wzr, [x19, 3296]
11145	bl	l2p_flush
11146	bl	FtlVpcTblFlush
11147	strh	w20, [x19, 176]
11148	ldrh	w0, [x19, 2692]
11149	ldrh	w1, [x19, 228]
11150	add	w0, w0, w0, lsl 1
11151	cmp	w1, w0, lsr 2
11152	ble	.L1458
11153	mov	w0, 20
11154	strh	w0, [x19, 3224]
11155	b	.L1458
11156.L1446:
11157	ldr	x23, [x19, 3304]
11158	umull	x22, w20, w24
11159	ldr	w1, [x19, 2624]
11160	add	x21, x23, x22
11161	ldr	w0, [x21, 8]
11162	cmp	w0, w1
11163	bcc	.L1443
11164.L1456:
11165	ldrh	w0, [x19, 128]
11166	b	.L1457
11167.L1443:
11168	add	x1, sp, 68
11169	mov	w2, 0
11170	bl	log2phys
11171	ldr	w1, [sp, 68]
11172	ldr	w0, [x23, x22]
11173	cmp	w0, w1
11174	bne	.L1445
11175	ubfx	x0, x0, 10, 16
11176	bl	P2V_block_in_plane
11177	mov	w22, w0
11178	ldr	w0, [x21, 8]
11179	add	x1, x21, 4
11180	mov	w2, 1
11181	bl	log2phys
11182	mov	w0, w22
11183.L1457:
11184	bl	decrement_vpc_count
11185	b	.L1444
11186.L1445:
11187	ldr	w0, [x21, 4]
11188	cmp	w1, w0
11189	bne	.L1456
11190.L1444:
11191	add	w20, w20, 1
11192	and	w20, w20, 65535
11193	b	.L1442
11194.L1447:
11195	bl	INSERT_FREE_LIST
11196	b	.L1448
11197.L1449:
11198	ldp	x19, x20, [sp, 16]
11199	ldp	x21, x22, [sp, 32]
11200	ldp	x23, x24, [sp, 48]
11201	ldp	x29, x30, [sp], 80
11202	hint	29 // autiasp
11203	ret
11204	.size	FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
11205	.align	2
11206	.global	FtlGcPageRecovery
11207	.type	FtlGcPageRecovery, %function
11208FtlGcPageRecovery:
11209	hint	34 // bti c
11210	.section	__patchable_function_entries
11211	.align	3
11212	.8byte	.LPFE119
11213	.text
11214.LPFE119:
11215	nop
11216	nop
11217	hint	25 // paciasp
11218	stp	x29, x30, [sp, -32]!
11219	mov	x29, sp
11220	stp	x19, x20, [sp, 16]
11221	adrp	x19, .LANCHOR0
11222	add	x19, x19, :lo12:.LANCHOR0
11223	add	x20, x19, 128
11224	mov	x0, x20
11225	ldrh	w1, [x19, 306]
11226	bl	FtlGcScanTempBlk
11227	ldrh	w1, [x19, 130]
11228	ldrh	w0, [x19, 306]
11229	cmp	w1, w0
11230	bcc	.L1459
11231	add	x0, x19, 3632
11232	bl	FtlMapBlkWriteDump_data
11233	mov	w0, 0
11234	bl	FtlGcFreeTempBlock
11235	str	wzr, [x19, 3704]
11236.L1459:
11237	ldp	x19, x20, [sp, 16]
11238	ldp	x29, x30, [sp], 32
11239	hint	29 // autiasp
11240	ret
11241	.size	FtlGcPageRecovery, .-FtlGcPageRecovery
11242	.align	2
11243	.global	FtlPowerLostRecovery
11244	.type	FtlPowerLostRecovery, %function
11245FtlPowerLostRecovery:
11246	hint	34 // bti c
11247	.section	__patchable_function_entries
11248	.align	3
11249	.8byte	.LPFE120
11250	.text
11251.LPFE120:
11252	nop
11253	nop
11254	hint	25 // paciasp
11255	stp	x29, x30, [sp, -32]!
11256	mov	x29, sp
11257	stp	x19, x20, [sp, 16]
11258	adrp	x19, .LANCHOR0
11259	add	x19, x19, :lo12:.LANCHOR0
11260	add	x20, x19, 24
11261	add	x19, x19, 80
11262	mov	x0, x20
11263	str	wzr, [x19, 3668]
11264	bl	FtlRecoverySuperblock
11265	mov	x0, x20
11266	bl	FtlSlcSuperblockCheck
11267	mov	x0, x19
11268	bl	FtlRecoverySuperblock
11269	mov	x0, x19
11270	bl	FtlSlcSuperblockCheck
11271	bl	FtlGcPageRecovery
11272	mov	w0, -1
11273	bl	decrement_vpc_count
11274	mov	w0, 0
11275	ldp	x19, x20, [sp, 16]
11276	ldp	x29, x30, [sp], 32
11277	hint	29 // autiasp
11278	ret
11279	.size	FtlPowerLostRecovery, .-FtlPowerLostRecovery
11280	.align	2
11281	.global	Ftl_gc_temp_data_write_back
11282	.type	Ftl_gc_temp_data_write_back, %function
11283Ftl_gc_temp_data_write_back:
11284	hint	34 // bti c
11285	.section	__patchable_function_entries
11286	.align	3
11287	.8byte	.LPFE121
11288	.text
11289.LPFE121:
11290	nop
11291	nop
11292	hint	25 // paciasp
11293	stp	x29, x30, [sp, -32]!
11294	mov	w3, 0
11295	mov	x29, sp
11296	stp	x19, x20, [sp, 16]
11297	adrp	x19, .LANCHOR0
11298	add	x19, x19, :lo12:.LANCHOR0
11299	mov	w2, 0
11300	mov	w20, 0
11301	ldr	w1, [x19, 3240]
11302	ldr	x0, [x19, 3432]
11303	bl	FlashProgPages
11304.L1465:
11305	ldr	w1, [x19, 3240]
11306	ldr	x2, [x19, 3432]
11307	cmp	w20, w1
11308	bcc	.L1468
11309	mov	x0, x2
11310	bl	FtlGcBufFree
11311	ldrh	w0, [x19, 132]
11312	str	wzr, [x19, 3240]
11313	cbnz	w0, .L1470
11314	mov	w0, 1
11315	bl	FtlGcFreeTempBlock
11316	mov	w0, 1
11317.L1464:
11318	ldp	x19, x20, [sp, 16]
11319	ldp	x29, x30, [sp], 32
11320	hint	29 // autiasp
11321	ret
11322.L1468:
11323	ubfiz	x4, x20, 5, 16
11324	add	x1, x2, x4
11325	ldr	w2, [x2, x4]
11326	ldr	x3, [x1, 16]
11327	ldr	w1, [x1, 4]
11328	ldr	w0, [x3, 12]
11329	cmn	w2, #1
11330	bne	.L1466
11331.L1472:
11332	add	w20, w20, 1
11333	bl	FtlGcUpdatePage
11334	and	w20, w20, 65535
11335	b	.L1465
11336.L1466:
11337	ldr	w2, [x3, 8]
11338	b	.L1472
11339.L1470:
11340	mov	w0, 0
11341	b	.L1464
11342	.size	Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
11343	.align	2
11344	.global	Ftl_get_new_temp_ppa
11345	.type	Ftl_get_new_temp_ppa, %function
11346Ftl_get_new_temp_ppa:
11347	hint	34 // bti c
11348	.section	__patchable_function_entries
11349	.align	3
11350	.8byte	.LPFE122
11351	.text
11352.LPFE122:
11353	nop
11354	nop
11355	hint	25 // paciasp
11356	stp	x29, x30, [sp, -32]!
11357	mov	w1, 65535
11358	mov	x29, sp
11359	str	x19, [sp, 16]
11360	adrp	x19, .LANCHOR0
11361	add	x19, x19, :lo12:.LANCHOR0
11362	ldrh	w2, [x19, 128]
11363	cmp	w2, w1
11364	beq	.L1474
11365	ldrh	w0, [x19, 132]
11366	cbnz	w0, .L1475
11367.L1474:
11368	mov	w0, 0
11369	bl	FtlGcFreeTempBlock
11370	add	x0, x19, 128
11371	strb	wzr, [x0, 8]
11372	bl	allocate_data_superblock
11373	strh	wzr, [x19, 3284]
11374	strh	wzr, [x19, 3296]
11375	bl	l2p_flush
11376	mov	w0, 0
11377	bl	FtlEctTblFlush
11378	bl	FtlVpcTblFlush
11379.L1475:
11380	add	x0, x19, 128
11381	bl	get_new_active_ppa
11382	ldr	x19, [sp, 16]
11383	ldp	x29, x30, [sp], 32
11384	hint	29 // autiasp
11385	ret
11386	.size	Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
11387	.section	.rodata.str1.1
11388.LC125:
11389	.string	"SWL %x, FSB = %x vpc= %x,ec=%x th=%x\n"
11390	.text
11391	.align	2
11392	.global	rk_ftl_garbage_collect
11393	.type	rk_ftl_garbage_collect, %function
11394rk_ftl_garbage_collect:
11395	hint	34 // bti c
11396	.section	__patchable_function_entries
11397	.align	3
11398	.8byte	.LPFE123
11399	.text
11400.LPFE123:
11401	nop
11402	nop
11403	hint	25 // paciasp
11404	stp	x29, x30, [sp, -144]!
11405	adrp	x6, .LANCHOR0
11406	mov	x29, sp
11407	stp	x23, x24, [sp, 48]
11408	add	x23, x6, :lo12:.LANCHOR0
11409	stp	x19, x20, [sp, 16]
11410	stp	x21, x22, [sp, 32]
11411	stp	x25, x26, [sp, 64]
11412	stp	x27, x28, [sp, 80]
11413	str	w0, [sp, 108]
11414	mrs	x0, sp_el0
11415	ldr	x1, [x0, 1376]
11416	str	x1, [sp, 136]
11417	mov	x1, 0
11418	ldr	w0, [x23, 3408]
11419	cbnz	w0, .L1554
11420	ldrh	w0, [x23, 2584]
11421	cmp	w0, 47
11422	bls	.L1554
11423	adrp	x0, .LANCHOR2+4
11424	ldrh	w1, [x0, #:lo12:.LANCHOR2+4]
11425	mov	w0, 65535
11426	cmp	w1, w0
11427	bne	.L1479
11428.L1482:
11429	ldrh	w0, [x23, 224]
11430	mov	w1, 65535
11431	cmp	w0, w1
11432	bne	.L1480
11433.L1481:
11434	bl	FtlReadRefresh
11435	ldr	w1, [sp, 108]
11436	ldr	w0, [x23, 3228]
11437	mov	w19, 65535
11438	ldrh	w2, [x23, 128]
11439	add	w0, w0, 1
11440	add	w0, w0, w1, lsl 7
11441	ldrh	w1, [x23, 176]
11442	str	w0, [x23, 3228]
11443	and	w1, w1, w2
11444	ldrh	w2, [x23, 226]
11445	and	w1, w1, w2
11446	and	w20, w1, 65535
11447	cmp	w19, w1, uxth
11448	bne	.L1556
11449	ldrh	w1, [x23, 228]
11450	mov	w2, 1024
11451	cmp	w1, 24
11452	mov	w1, 5120
11453	csel	w1, w1, w2, cc
11454	cmp	w0, w1
11455	bls	.L1483
11456	str	wzr, [x23, 3228]
11457	strh	wzr, [x23, 3952]
11458	bl	GetSwlReplaceBlock
11459	and	w20, w0, 65535
11460	cmp	w19, w0, uxth
11461	bne	.L1485
11462	ldrh	w1, [x23, 228]
11463	ldrh	w0, [x23, 3226]
11464	cmp	w1, w0
11465	bcs	.L1486
11466	mov	w0, 64
11467	bl	List_get_gc_head_node
11468	and	w1, w0, 65535
11469	cmp	w20, w0, uxth
11470	beq	.L1488
11471	ldr	x0, [x23, 72]
11472	ubfiz	x1, x1, 1, 16
11473	ldrh	w0, [x0, x1]
11474	cmp	w0, 7
11475	bhi	.L1489
11476	mov	w0, 0
11477	bl	List_get_gc_head_node
11478	mov	w2, 128
11479	strh	w2, [x23, 3226]
11480	and	w1, w0, 65535
11481	cmp	w20, w0, uxth
11482	beq	.L1488
11483	mov	w20, w1
11484.L1485:
11485	ldr	x1, [x23, 72]
11486	ubfiz	x0, x20, 1, 16
11487	ldr	x2, [x23, 2600]
11488	ldrh	w3, [x1, x0]
11489	mov	w1, w20
11490	ldrh	w5, [x23, 3224]
11491	ldrh	w4, [x2, x0]
11492	adrp	x0, .LC125
11493	ldrh	w2, [x23, 228]
11494	add	x0, x0, :lo12:.LC125
11495	bl	sftl_printk
11496	b	.L1488
11497.L1479:
11498	ldrh	w1, [x23, 128]
11499	cmp	w1, w0
11500	beq	.L1482
11501	mov	w0, 1
11502	bl	FtlGcFreeTempBlock
11503	cbz	w0, .L1482
11504	mov	w0, 1
11505	b	.L1477
11506.L1480:
11507	ldrh	w2, [x23, 226]
11508	cmp	w2, w1
11509	bne	.L1481
11510	strh	w0, [x23, 226]
11511	mov	w0, -1
11512	strh	w0, [x23, 224]
11513	b	.L1481
11514.L1489:
11515	mov	w0, 64
11516.L1584:
11517	strh	w0, [x23, 3226]
11518.L1488:
11519	bl	FtlGcReFreshBadBlk
11520.L1483:
11521	ldr	w1, [sp, 108]
11522	mov	w0, 65535
11523	cmp	w1, 0
11524	ccmp	w20, w0, 0, eq
11525	bne	.L1491
11526	ldrh	w0, [x23, 228]
11527	cmp	w0, 24
11528	bhi	.L1559
11529	ldrh	w19, [x23, 306]
11530	cmp	w0, 16
11531	bls	.L1493
11532	lsr	w19, w19, 5
11533.L1492:
11534	ldrh	w1, [x23, 3224]
11535	cmp	w1, w0
11536	bcs	.L1495
11537	ldrh	w1, [x23, 226]
11538	ldrh	w0, [x23, 128]
11539	and	w0, w0, w1
11540	mov	w1, 65535
11541	cmp	w1, w0, uxth
11542	bne	.L1496
11543	ldrh	w0, [x23, 3952]
11544	cbnz	w0, .L1497
11545	ldr	w1, [x23, 2624]
11546	ldr	w2, [x23, 2620]
11547	add	w1, w1, w1, lsl 1
11548	cmp	w2, w1, lsr 2
11549	bcs	.L1560
11550.L1497:
11551	ldrh	w1, [x23, 2692]
11552	add	w1, w1, w1, lsl 1
11553	lsr	w1, w1, 2
11554.L1498:
11555	strh	w1, [x23, 3224]
11556	str	wzr, [x23, 3236]
11557.L1477:
11558	mrs	x1, sp_el0
11559	ldr	x2, [sp, 136]
11560	ldr	x3, [x1, 1376]
11561	subs	x2, x2, x3
11562	mov	x3, 0
11563	beq	.L1552
11564	bl	__stack_chk_fail
11565.L1486:
11566	mov	w0, 80
11567	b	.L1584
11568.L1556:
11569	mov	w20, w19
11570	b	.L1483
11571.L1493:
11572	cmp	w0, 12
11573	bls	.L1494
11574	lsr	w19, w19, 4
11575	b	.L1492
11576.L1494:
11577	cmp	w0, 8
11578	bls	.L1492
11579	lsr	w19, w19, 2
11580	b	.L1492
11581.L1559:
11582	mov	w19, 1
11583	b	.L1492
11584.L1560:
11585	mov	w1, 18
11586	b	.L1498
11587.L1496:
11588	ldrh	w0, [x23, 2692]
11589	add	w0, w0, w0, lsl 1
11590	asr	w0, w0, 2
11591	strh	w0, [x23, 3224]
11592.L1495:
11593	ldrh	w0, [x23, 3312]
11594	cbz	w0, .L1561
11595	add	w19, w19, 32
11596	and	w19, w19, 65535
11597.L1561:
11598	mov	w20, 65535
11599.L1500:
11600	ldrh	w0, [x23, 176]
11601	mov	w1, 65535
11602	cmp	w0, w1
11603	bne	.L1508
11604	cmp	w20, w0
11605	beq	.L1509
11606	strh	w20, [x23, 176]
11607.L1510:
11608	ldrh	w0, [x23, 176]
11609	add	x21, x23, 176
11610	strb	wzr, [x21, 8]
11611	mov	w1, 65535
11612	cmp	w0, w1
11613	beq	.L1508
11614	bl	IsBlkInGcList
11615	cbz	w0, .L1513
11616	mov	w0, -1
11617	strh	w0, [x23, 176]
11618.L1508:
11619	ldrh	w0, [x23, 176]
11620	ldrh	w1, [x23, 24]
11621	cmp	w1, w0
11622	beq	.L1514
11623	ldrh	w1, [x23, 80]
11624	cmp	w1, w0
11625	beq	.L1514
11626	ldrh	w1, [x23, 128]
11627	cmp	w1, w0
11628	bne	.L1515
11629.L1514:
11630	mov	w0, -1
11631	strh	w0, [x23, 176]
11632.L1515:
11633	adrp	x21, .LANCHOR1
11634	add	x21, x21, :lo12:.LANCHOR1
11635	add	x21, x21, 568
11636.L1550:
11637	ldrh	w24, [x23, 176]
11638	mov	w0, 65535
11639	cmp	w24, w0
11640	bne	.L1516
11641	mov	w25, 2
11642	str	wzr, [x23, 3236]
11643.L1517:
11644	ldrh	w22, [x23, 3232]
11645	mov	w0, w22
11646	bl	List_get_gc_head_node
11647	and	w26, w0, 65535
11648	strh	w26, [x23, 176]
11649	cmp	w26, w24
11650	bne	.L1518
11651	mov	w0, 8
11652	strh	wzr, [x23, 3232]
11653	b	.L1477
11654.L1491:
11655	ldrh	w19, [x23, 128]
11656	ldrh	w1, [x23, 226]
11657	and	w19, w19, w1
11658	and	w19, w20, w19
11659	cmp	w19, w0
11660	bne	.L1562
11661	ldrh	w0, [x23, 176]
11662	cmp	w0, w19
11663	beq	.L1501
11664.L1505:
11665	mov	w20, w19
11666.L1562:
11667	mov	w19, 1
11668	b	.L1500
11669.L1501:
11670	ldrh	w1, [x23, 228]
11671	ldrh	w0, [x23, 3224]
11672	str	wzr, [x23, 3236]
11673	cmp	w1, w0
11674	bls	.L1502
11675	ldrh	w0, [x23, 3952]
11676	cbnz	w0, .L1503
11677	ldr	w0, [x23, 2624]
11678	ldr	w1, [x23, 2620]
11679	add	w0, w0, w0, lsl 1
11680	cmp	w1, w0, lsr 2
11681	bcs	.L1563
11682.L1503:
11683	ldrh	w0, [x23, 2692]
11684	add	w0, w0, w0, lsl 1
11685	lsr	w0, w0, 2
11686.L1504:
11687	strh	w0, [x23, 3224]
11688	bl	FtlReadRefresh
11689	mov	w0, 0
11690	bl	List_get_gc_head_node
11691	ldr	x1, [x23, 72]
11692	ubfiz	x0, x0, 1, 16
11693	ldrh	w0, [x1, x0]
11694	cmp	w0, 4
11695	bls	.L1502
11696.L1585:
11697	ldrh	w0, [x23, 3952]
11698	b	.L1477
11699.L1563:
11700	mov	w0, 18
11701	b	.L1504
11702.L1502:
11703	ldrh	w0, [x23, 3952]
11704	cbnz	w0, .L1505
11705	ldrh	w20, [x23, 2692]
11706	add	w0, w20, w20, lsl 1
11707	asr	w0, w0, 2
11708	strh	w0, [x23, 3224]
11709	mov	w0, 0
11710	bl	List_get_gc_head_node
11711	ldr	x1, [x23, 72]
11712	ubfiz	x0, x0, 1, 16
11713	ldrh	w2, [x23, 236]
11714	ldrh	w1, [x1, x0]
11715	ldrh	w0, [x23, 308]
11716	mul	w0, w0, w2
11717	mov	w2, 2
11718	sdiv	w0, w0, w2
11719	cmp	w1, w0
11720	ble	.L1506
11721	ldrh	w0, [x23, 228]
11722	sub	w20, w20, #1
11723	cmp	w0, w20
11724	blt	.L1506
11725	bl	FtlReadRefresh
11726	b	.L1585
11727.L1506:
11728	cbnz	w1, .L1505
11729	mov	w0, -1
11730	bl	decrement_vpc_count
11731	ldrh	w0, [x23, 228]
11732	add	w0, w0, 1
11733	b	.L1477
11734.L1509:
11735	ldrh	w0, [x23, 226]
11736	cmp	w0, w20
11737	beq	.L1510
11738	ldr	x1, [x23, 72]
11739	ubfiz	x0, x0, 1, 16
11740	ldrh	w0, [x1, x0]
11741	cbnz	w0, .L1511
11742	mov	w0, -1
11743	strh	w0, [x23, 226]
11744.L1511:
11745	ldrh	w0, [x23, 226]
11746	strh	w0, [x23, 176]
11747	mov	w0, -1
11748	strh	w0, [x23, 226]
11749	b	.L1510
11750.L1518:
11751	mov	w0, w26
11752	bl	IsBlkInGcList
11753	add	w1, w22, 1
11754	and	w1, w1, 65535
11755	strh	w1, [x23, 3232]
11756	cbnz	w0, .L1517
11757	ldrh	w5, [x23, 236]
11758	ubfiz	x2, x26, 1, 16
11759	ldrh	w0, [x23, 306]
11760	ldr	x3, [x23, 72]
11761	mul	w0, w0, w5
11762	ldrh	w4, [x3, x2]
11763	sdiv	w5, w0, w25
11764	cmp	w4, w5
11765	bgt	.L1521
11766	cmp	w1, 48
11767	bls	.L1522
11768	cmp	w4, 8
11769	bls	.L1522
11770	ldrh	w1, [x23, 3284]
11771	cmp	w1, 35
11772	bhi	.L1522
11773.L1521:
11774	strh	wzr, [x23, 3232]
11775.L1522:
11776	ldrh	w1, [x3, x2]
11777	cmp	w0, w1
11778	bgt	.L1523
11779	cmp	w20, w24
11780	bne	.L1523
11781	ldrh	w0, [x23, 3232]
11782	cmp	w0, 3
11783	bhi	.L1523
11784	mov	w0, -1
11785	strh	w0, [x23, 176]
11786	strh	wzr, [x23, 3232]
11787	b	.L1585
11788.L1523:
11789	cbnz	w1, .L1524
11790	mov	w0, -1
11791	bl	decrement_vpc_count
11792	ldrh	w0, [x23, 3232]
11793	add	w0, w0, 1
11794	strh	w0, [x23, 3232]
11795	b	.L1517
11796.L1524:
11797	ldrh	w0, [x23, 24]
11798	strb	wzr, [x23, 184]
11799	cmp	w0, w26
11800	bne	.L1525
11801	adrp	x0, .LC9
11802	mov	x1, x21
11803	add	x0, x0, :lo12:.LC9
11804	mov	w2, 717
11805	bl	sftl_printk
11806.L1525:
11807	ldrh	w1, [x23, 176]
11808	ldrh	w0, [x23, 80]
11809	cmp	w1, w0
11810	bne	.L1526
11811	adrp	x0, .LC9
11812	mov	x1, x21
11813	add	x0, x0, :lo12:.LC9
11814	mov	w2, 718
11815	bl	sftl_printk
11816.L1526:
11817	ldrh	w1, [x23, 176]
11818	ldrh	w0, [x23, 128]
11819	cmp	w1, w0
11820	bne	.L1527
11821	adrp	x0, .LC9
11822	mov	x1, x21
11823	add	x0, x0, :lo12:.LC9
11824	mov	w2, 719
11825	bl	sftl_printk
11826.L1527:
11827	add	x22, x23, 176
11828	mov	x0, x22
11829	bl	make_superblock
11830	ldrh	w1, [x23, 176]
11831	ldr	x0, [x23, 72]
11832	strh	wzr, [x23, 3954]
11833	ldrh	w0, [x0, x1, lsl 1]
11834	strh	wzr, [x23, 178]
11835	strb	wzr, [x23, 182]
11836	strh	w0, [x23, 3956]
11837.L1516:
11838	mov	w0, 1
11839	str	w0, [x23, 3408]
11840	ldrh	w0, [x23, 306]
11841	str	w0, [sp, 104]
11842	ldr	w0, [sp, 108]
11843	cbz	w0, .L1528
11844	ldr	w1, [sp, 104]
11845	ldrh	w0, [x23, 236]
11846	ldrh	w2, [x23, 176]
11847	mul	w0, w0, w1
11848	ldr	x1, [x23, 72]
11849	ldrh	w1, [x1, x2, lsl 1]
11850	sub	w0, w0, w1
11851	mov	w1, 4
11852	sdiv	w0, w0, w1
11853	add	w19, w0, w19
11854	and	w19, w19, 65535
11855.L1528:
11856	ldrh	w0, [x23, 178]
11857	ldr	w2, [sp, 104]
11858	add	w1, w0, w19
11859	cmp	w1, w2
11860	ble	.L1529
11861	sub	w0, w2, w0
11862	and	w19, w0, 65535
11863.L1529:
11864	add	x26, x23, 176
11865	mov	w27, 0
11866.L1530:
11867	ldrh	w0, [x26, 2]
11868	cmp	w19, w27, uxth
11869	bls	.L1538
11870	ldrh	w7, [x23, 236]
11871	add	w1, w0, w27
11872	mov	x4, x26
11873	mov	w22, 0
11874	mov	w2, 0
11875	mov	w5, 65535
11876	b	.L1539
11877.L1532:
11878	ldrh	w3, [x4, 16]
11879	cmp	w3, w5
11880	beq	.L1531
11881	ubfiz	x8, x22, 5, 16
11882	add	w22, w22, 1
11883	add	x0, x0, x8
11884	and	w22, w22, 65535
11885	orr	w3, w1, w3, lsl 10
11886	str	w3, [x0, 4]
11887.L1531:
11888	add	w2, w2, 1
11889	add	x4, x4, 2
11890	and	w2, w2, 65535
11891.L1539:
11892	ldr	x0, [x23, 3272]
11893	cmp	w2, w7
11894	bne	.L1532
11895	ldrb	w2, [x26, 8]
11896	mov	w1, w22
11897	mov	x24, 0
11898	bl	FlashReadPages
11899	adrp	x0, .LC9
11900	add	x0, x0, :lo12:.LC9
11901	str	x0, [sp, 112]
11902.L1533:
11903	cmp	w22, w24, uxth
11904	bhi	.L1537
11905	add	w27, w27, 1
11906	b	.L1530
11907.L1537:
11908	ldr	x0, [x23, 3272]
11909	lsl	x28, x24, 5
11910	add	x1, x0, x24, lsl 5
11911	ldr	w0, [x0, x28]
11912	cmn	w0, #1
11913	beq	.L1534
11914	ldr	x25, [x1, 16]
11915	mov	w0, 61589
11916	ldrh	w1, [x25]
11917	cmp	w1, w0
11918	bne	.L1534
11919	ldr	w4, [x25, 8]
11920	cmn	w4, #1
11921	bne	.L1535
11922	ldr	x0, [sp, 112]
11923	mov	x1, x21
11924	mov	w2, 753
11925	str	w4, [sp, 120]
11926	bl	sftl_printk
11927	ldr	w4, [sp, 120]
11928.L1535:
11929	add	x1, sp, 128
11930	mov	w2, 0
11931	mov	w0, w4
11932	bl	log2phys
11933	ldr	x0, [x23, 3272]
11934	ldr	w1, [sp, 128]
11935	add	x0, x0, x28
11936	ldr	w2, [x0, 4]
11937	cmp	w2, w1
11938	bne	.L1534
11939	ldrh	w1, [x23, 3954]
11940	ldr	x2, [x23, 3432]
11941	add	w1, w1, 1
11942	strh	w1, [x23, 3954]
11943	ldr	w1, [x23, 3240]
11944	ldr	w0, [x0, 24]
11945	add	x1, x2, x1, lsl 5
11946	str	x1, [sp, 120]
11947	str	w0, [x1, 24]
11948	bl	Ftl_get_new_temp_ppa
11949	ldr	x1, [sp, 120]
11950	str	w0, [x1, 4]
11951	ldr	w0, [x23, 3240]
11952	ldr	x1, [x23, 3272]
11953	ldr	x2, [x23, 3432]
11954	add	x1, x1, x28
11955	add	x0, x2, x0, lsl 5
11956	ldr	x2, [x1, 8]
11957	str	x2, [x0, 8]
11958	add	x2, x23, 128
11959	str	x2, [sp, 120]
11960	ldr	x1, [x1, 16]
11961	str	x1, [x0, 16]
11962	ldr	w0, [sp, 128]
11963	mov	w1, 1
11964	str	w0, [x25, 12]
11965	ldrh	w0, [x23, 128]
11966	strh	w0, [x25, 2]
11967	ldr	w0, [x23, 2664]
11968	str	w0, [x25, 4]
11969	ldr	w0, [x23, 3240]
11970	add	w0, w0, 1
11971	str	w0, [x23, 3240]
11972	ldr	x0, [x23, 3272]
11973	add	x0, x0, x28
11974	bl	FtlGcBufAlloc
11975	ldr	x2, [sp, 120]
11976	ldr	w0, [x23, 3240]
11977	ldrb	w1, [x2, 7]
11978	cmp	w1, w0
11979	beq	.L1536
11980	ldrh	w0, [x2, 4]
11981	cbnz	w0, .L1534
11982.L1536:
11983	bl	Ftl_gc_temp_data_write_back
11984	cbz	w0, .L1534
11985	mov	w0, 65535
11986	str	w0, [x23, 176]
11987	str	wzr, [x23, 3408]
11988	b	.L1585
11989.L1534:
11990	add	x24, x24, 1
11991	b	.L1533
11992.L1538:
11993	add	w19, w19, w0
11994	ldr	w0, [sp, 104]
11995	and	w19, w19, 65535
11996	strh	w19, [x26, 2]
11997	cmp	w0, w19
11998	bhi	.L1540
11999	ldr	w0, [x23, 3240]
12000	cbz	w0, .L1541
12001	bl	Ftl_gc_temp_data_write_back
12002	cbz	w0, .L1541
12003	str	wzr, [x23, 3408]
12004	b	.L1585
12005.L1541:
12006	ldrh	w0, [x23, 3954]
12007	cbnz	w0, .L1542
12008	ldrh	w1, [x23, 176]
12009	ldr	x0, [x23, 72]
12010	ldrh	w0, [x0, x1, lsl 1]
12011	cbz	w0, .L1542
12012	mov	w19, 0
12013	b	.L1543
12014.L1546:
12015	add	x1, sp, 132
12016	mov	w0, w19
12017	mov	w2, 0
12018	bl	log2phys
12019	ldr	w0, [sp, 132]
12020	cmn	w0, #1
12021	beq	.L1544
12022	ubfx	x0, x0, 10, 16
12023	bl	P2V_block_in_plane
12024	ldrh	w1, [x23, 176]
12025	cmp	w1, w0, uxth
12026	beq	.L1545
12027.L1544:
12028	add	w19, w19, 1
12029.L1543:
12030	ldr	w0, [x23, 2624]
12031	cmp	w19, w0
12032	bcc	.L1546
12033.L1548:
12034	ldrh	w1, [x23, 176]
12035	ldr	x0, [x23, 72]
12036	strh	wzr, [x0, x1, lsl 1]
12037	ldrh	w0, [x23, 176]
12038	bl	update_vpc_list
12039	bl	l2p_flush
12040	bl	FtlVpcTblFlush
12041.L1542:
12042	mov	w0, -1
12043	strh	w0, [x23, 176]
12044.L1540:
12045	ldrh	w0, [x23, 228]
12046	str	wzr, [x23, 3408]
12047	cmp	w0, 2
12048	bhi	.L1549
12049	ldrh	w19, [x23, 306]
12050	b	.L1550
12051.L1545:
12052	ldr	w0, [x23, 2624]
12053	cmp	w19, w0
12054	bcc	.L1542
12055	b	.L1548
12056.L1549:
12057	ldrh	w1, [x23, 3952]
12058	cmp	w1, 0
12059	csinc	w0, w1, w0, ne
12060	b	.L1477
12061.L1554:
12062	mov	w0, 0
12063	b	.L1477
12064.L1513:
12065	mov	x0, x21
12066	bl	make_superblock
12067	ldrh	w1, [x23, 176]
12068	ldr	x0, [x23, 72]
12069	strh	wzr, [x21, 2]
12070	strb	wzr, [x21, 6]
12071	strh	wzr, [x23, 3954]
12072	ldrh	w0, [x0, x1, lsl 1]
12073	strh	w0, [x23, 3956]
12074	b	.L1508
12075.L1552:
12076	ldp	x19, x20, [sp, 16]
12077	ldp	x21, x22, [sp, 32]
12078	ldp	x23, x24, [sp, 48]
12079	ldp	x25, x26, [sp, 64]
12080	ldp	x27, x28, [sp, 80]
12081	ldp	x29, x30, [sp], 144
12082	hint	29 // autiasp
12083	ret
12084	.size	rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
12085	.align	2
12086	.global	FtlRead
12087	.type	FtlRead, %function
12088FtlRead:
12089	hint	34 // bti c
12090	.section	__patchable_function_entries
12091	.align	3
12092	.8byte	.LPFE124
12093	.text
12094.LPFE124:
12095	nop
12096	nop
12097	hint	25 // paciasp
12098	stp	x29, x30, [sp, -160]!
12099	and	w0, w0, 255
12100	mov	x29, sp
12101	stp	x19, x20, [sp, 16]
12102	stp	x21, x22, [sp, 32]
12103	mov	x21, x3
12104	stp	x23, x24, [sp, 48]
12105	mov	w23, w2
12106	stp	x25, x26, [sp, 64]
12107	mov	w26, w1
12108	mrs	x1, sp_el0
12109	stp	x27, x28, [sp, 80]
12110	ldr	x2, [x1, 1376]
12111	str	x2, [sp, 152]
12112	mov	x2, 0
12113	cmp	w0, 16
12114	bne	.L1587
12115	mov	x2, x3
12116	mov	w1, w23
12117	add	w0, w26, 256
12118	bl	FtlVendorPartRead
12119	mov	w19, w0
12120.L1586:
12121	mrs	x0, sp_el0
12122	ldr	x1, [sp, 152]
12123	ldr	x2, [x0, 1376]
12124	subs	x1, x1, x2
12125	mov	x2, 0
12126	beq	.L1609
12127	bl	__stack_chk_fail
12128.L1587:
12129	adrp	x3, .LANCHOR0
12130	add	x28, x3, :lo12:.LANCHOR0
12131	ldr	w0, [x28, 344]
12132	cmp	w0, w26
12133	bls	.L1612
12134	cmp	w0, w23
12135	bcc	.L1612
12136	add	w1, w26, w23
12137	str	w1, [sp, 116]
12138	cmp	w0, w1
12139	bcc	.L1612
12140	adrp	x0, .LANCHOR2
12141	ldr	w19, [x0, #:lo12:.LANCHOR2]
12142	cmn	w19, #1
12143	beq	.L1586
12144	ldrh	w0, [x28, 262]
12145	mov	w20, 0
12146	mov	w19, 0
12147	stp	wzr, wzr, [sp, 108]
12148	udiv	w1, w26, w0
12149	stp	w1, wzr, [sp, 100]
12150	add	w1, w26, w23
12151	sub	w25, w1, #1
12152	ldr	w22, [sp, 100]
12153	udiv	w25, w25, w0
12154	ldr	w0, [sp, 100]
12155	sub	w24, w25, w0
12156	ldr	w0, [x28, 2656]
12157	add	w24, w24, 1
12158	add	w0, w0, w23
12159	str	w0, [x28, 2656]
12160	ldr	w0, [x28, 2628]
12161	add	w0, w0, w24
12162	str	w0, [x28, 2628]
12163.L1589:
12164	cbnz	w24, .L1607
12165	ldrh	w0, [x28, 3312]
12166	cbnz	w0, .L1608
12167	ldrh	w0, [x28, 228]
12168	cmp	w0, 31
12169	bhi	.L1586
12170.L1608:
12171	mov	w1, 1
12172	mov	w0, 0
12173	bl	rk_ftl_garbage_collect
12174	b	.L1586
12175.L1607:
12176	add	x1, sp, 148
12177	mov	w0, w22
12178	mov	w2, 0
12179	bl	log2phys
12180	ldr	w1, [sp, 148]
12181	cmn	w1, #1
12182	bne	.L1622
12183	mov	w27, 0
12184	b	.L1590
12185.L1593:
12186	madd	w0, w0, w22, w27
12187	cmp	w26, w0
12188	bhi	.L1592
12189	ldr	w1, [sp, 116]
12190	cmp	w1, w0
12191	bls	.L1592
12192	sub	w0, w0, w26
12193	mov	w2, 512
12194	mov	w1, 0
12195	lsl	w0, w0, 9
12196	add	x0, x21, x0
12197	bl	ftl_memset
12198.L1592:
12199	add	w27, w27, 1
12200.L1590:
12201	ldrh	w0, [x28, 262]
12202	cmp	w0, w27
12203	bhi	.L1593
12204.L1594:
12205	add	w22, w22, 1
12206	subs	w24, w24, #1
12207	beq	.L1599
12208	ldrh	w0, [x28, 236]
12209	cmp	w20, w0, lsl 2
12210	bne	.L1589
12211.L1599:
12212	cbz	w20, .L1589
12213	ldr	x0, [x28, 3424]
12214	mov	w1, w20
12215	mov	w2, 0
12216	mov	x27, 0
12217	bl	FlashReadPages
12218	ldr	w0, [sp, 112]
12219	lsl	w0, w0, 9
12220	str	w0, [sp, 132]
12221	ldr	w0, [sp, 104]
12222	lsl	w0, w0, 9
12223	str	x0, [sp, 120]
12224	ldr	w0, [sp, 108]
12225	lsl	w0, w0, 9
12226	str	w0, [sp, 128]
12227.L1606:
12228	ldr	x0, [x28, 3424]
12229	lsl	x6, x27, 5
12230	ldr	w2, [sp, 100]
12231	add	x0, x0, x27, lsl 5
12232	ldr	w1, [x0, 24]
12233	cmp	w1, w2
12234	bne	.L1601
12235	ldr	x1, [x0, 8]
12236	ldr	x0, [x28, 3472]
12237	cmp	x1, x0
12238	bne	.L1602
12239	ldr	x0, [sp, 120]
12240	str	x6, [sp, 136]
12241	ldr	w2, [sp, 128]
12242	add	x1, x1, x0
12243	mov	x0, x21
12244.L1625:
12245	bl	ftl_memcpy
12246	ldr	x6, [sp, 136]
12247.L1602:
12248	ldr	x1, [x28, 3424]
12249	add	x0, x1, x6
12250	ldr	x2, [x0, 16]
12251	ldr	w7, [x0, 24]
12252	ldr	w2, [x2, 8]
12253	cmp	w7, w2
12254	beq	.L1603
12255	ldr	w2, [x28, 2784]
12256	add	w2, w2, 1
12257	str	w2, [x28, 2784]
12258.L1603:
12259	ldr	w7, [x1, x6]
12260	cmn	w7, #1
12261	bne	.L1604
12262	ldr	w2, [x28, 2784]
12263	mov	w19, w7
12264	add	w2, w2, 1
12265	str	w2, [x28, 2784]
12266.L1604:
12267	ldr	w1, [x1, x6]
12268	cmp	w1, 256
12269	bne	.L1605
12270	ldr	w0, [x0, 4]
12271	ubfx	x0, x0, 10, 16
12272	bl	P2V_block_in_plane
12273	bl	FtlGcRefreshBlock
12274.L1605:
12275	add	x27, x27, 1
12276	cmp	w20, w27
12277	bhi	.L1606
12278	mov	w20, 0
12279	b	.L1589
12280.L1622:
12281	ldr	x0, [x28, 3424]
12282	ubfiz	x5, x20, 5, 32
12283	add	x0, x0, x5
12284	str	w1, [x0, 4]
12285	ldr	w0, [sp, 100]
12286	ldrh	w1, [x28, 262]
12287	cmp	w22, w0
12288	bne	.L1595
12289	udiv	w6, w26, w1
12290	ldr	x0, [x28, 3424]
12291	ldr	x2, [x28, 3472]
12292	msub	w3, w6, w1, w26
12293	add	x0, x0, x5
12294	str	w3, [sp, 104]
12295	sub	w6, w1, w3
12296	cmp	w23, w6
12297	csel	w3, w23, w6, ls
12298	str	w3, [sp, 108]
12299	cmp	w1, w3
12300	csel	x1, x2, x21, ne
12301	str	x1, [x0, 8]
12302.L1596:
12303	ldrh	w0, [x28, 316]
12304	ldr	x1, [x28, 3424]
12305	ldr	x2, [x28, 3520]
12306	mul	w0, w0, w20
12307	add	x1, x1, x5
12308	add	w20, w20, 1
12309	and	x0, x0, 4294967292
12310	add	x0, x2, x0
12311	str	x0, [x1, 16]
12312	str	w22, [x1, 24]
12313	b	.L1594
12314.L1595:
12315	ldr	x2, [x28, 3424]
12316	mul	w0, w22, w1
12317	add	x2, x2, x5
12318	cmp	w22, w25
12319	bne	.L1597
12320	ldr	w3, [sp, 116]
12321	sub	w3, w3, w0
12322	str	w3, [sp, 112]
12323	cmp	w3, w1
12324	beq	.L1597
12325	ldr	x0, [x28, 3480]
12326.L1624:
12327	str	x0, [x2, 8]
12328	b	.L1596
12329.L1597:
12330	sub	w0, w0, w26
12331	lsl	w0, w0, 9
12332	add	x0, x21, x0
12333	b	.L1624
12334.L1601:
12335	cmp	w1, w25
12336	bne	.L1602
12337	ldr	x1, [x0, 8]
12338	ldr	x0, [x28, 3480]
12339	cmp	x1, x0
12340	bne	.L1602
12341	ldrh	w0, [x28, 262]
12342	ldr	w2, [sp, 132]
12343	str	x6, [sp, 136]
12344	mul	w0, w0, w25
12345	sub	w0, w0, w26
12346	lsl	w0, w0, 9
12347	add	x0, x21, x0
12348	b	.L1625
12349.L1612:
12350	mov	w19, -1
12351	b	.L1586
12352.L1609:
12353	mov	w0, w19
12354	ldp	x19, x20, [sp, 16]
12355	ldp	x21, x22, [sp, 32]
12356	ldp	x23, x24, [sp, 48]
12357	ldp	x25, x26, [sp, 64]
12358	ldp	x27, x28, [sp, 80]
12359	ldp	x29, x30, [sp], 160
12360	hint	29 // autiasp
12361	ret
12362	.size	FtlRead, .-FtlRead
12363	.align	2
12364	.global	sftl_read
12365	.type	sftl_read, %function
12366sftl_read:
12367	hint	34 // bti c
12368	.section	__patchable_function_entries
12369	.align	3
12370	.8byte	.LPFE125
12371	.text
12372.LPFE125:
12373	nop
12374	nop
12375	hint	25 // paciasp
12376	stp	x29, x30, [sp, -16]!
12377	mov	x3, x2
12378	mov	x29, sp
12379	mov	w2, w1
12380	mov	w1, w0
12381	mov	w0, 0
12382	bl	FtlRead
12383	ldp	x29, x30, [sp], 16
12384	hint	29 // autiasp
12385	ret
12386	.size	sftl_read, .-sftl_read
12387	.section	.rodata.str1.1
12388.LC126:
12389	.string	"FtlWrite: ecc error:%x %x %x\n"
12390.LC127:
12391	.string	"FtlWrite: lpa error:%x %x\n"
12392	.text
12393	.align	2
12394	.global	FtlWrite
12395	.type	FtlWrite, %function
12396FtlWrite:
12397	hint	34 // bti c
12398	.section	__patchable_function_entries
12399	.align	3
12400	.8byte	.LPFE126
12401	.text
12402.LPFE126:
12403	nop
12404	nop
12405	hint	25 // paciasp
12406	stp	x29, x30, [sp, -224]!
12407	and	w0, w0, 255
12408	mov	x29, sp
12409	stp	x19, x20, [sp, 16]
12410	stp	x21, x22, [sp, 32]
12411	mov	w21, w1
12412	mrs	x1, sp_el0
12413	stp	x23, x24, [sp, 48]
12414	stp	x25, x26, [sp, 64]
12415	mov	x25, x3
12416	stp	x27, x28, [sp, 80]
12417	str	w2, [sp, 120]
12418	ldr	x2, [x1, 1376]
12419	str	x2, [sp, 216]
12420	mov	x2, 0
12421	cmp	w0, 16
12422	bne	.L1629
12423	ldr	w1, [sp, 120]
12424	mov	x2, x3
12425	add	w0, w21, 256
12426	bl	FtlVendorPartWrite
12427.L1628:
12428	mrs	x1, sp_el0
12429	ldr	x2, [sp, 216]
12430	ldr	x3, [x1, 1376]
12431	subs	x2, x2, x3
12432	mov	x3, 0
12433	beq	.L1666
12434	bl	__stack_chk_fail
12435.L1629:
12436	adrp	x4, .LANCHOR0
12437	add	x24, x4, :lo12:.LANCHOR0
12438	ldr	w0, [x24, 344]
12439	cmp	w0, w21
12440	bls	.L1669
12441	ldr	w1, [sp, 120]
12442	cmp	w0, w1
12443	bcc	.L1669
12444	add	w1, w21, w1
12445	str	w1, [sp, 124]
12446	cmp	w0, w1
12447	bcc	.L1669
12448	adrp	x0, .LANCHOR2
12449	ldr	w0, [x0, #:lo12:.LANCHOR2]
12450	cmn	w0, #1
12451	beq	.L1628
12452	mov	w0, 2048
12453	str	w0, [x24, 3960]
12454	ldrh	w0, [x24, 262]
12455	sub	w1, w1, #1
12456	add	x20, x24, 24
12457	udiv	w27, w21, w0
12458	udiv	w0, w1, w0
12459	ldr	w1, [sp, 120]
12460	str	w0, [sp, 160]
12461	sub	w0, w0, w27
12462	add	w26, w0, 1
12463	str	w0, [sp, 136]
12464	ldr	w0, [x24, 2652]
12465	add	w0, w0, w1
12466	str	w0, [x24, 2652]
12467	ldr	w0, [x24, 2636]
12468	add	w0, w0, w26
12469	str	w0, [x24, 2636]
12470	adrp	x0, .LANCHOR2
12471	add	x0, x0, :lo12:.LANCHOR2
12472	ldr	w0, [x0, 8]
12473	cbz	w0, .L1631
12474	ldrh	w1, [x20, 4]
12475	add	x0, x24, 80
12476	cmp	w1, 0
12477	csel	x20, x0, x20, eq
12478.L1631:
12479	adrp	x23, .LANCHOR1
12480	add	x23, x23, :lo12:.LANCHOR1
12481	adrp	x28, .LC9
12482	mov	w19, w27
12483	add	x23, x23, 591
12484	add	x28, x28, :lo12:.LC9
12485.L1632:
12486	cbnz	w26, .L1662
12487	ldr	w1, [sp, 136]
12488	mov	w0, 0
12489	bl	rk_ftl_garbage_collect
12490	ldrh	w0, [x24, 228]
12491	cmp	w0, 5
12492	bls	.L1674
12493.L1665:
12494	mov	w0, 0
12495	b	.L1628
12496.L1662:
12497	ldrb	w1, [x20, 6]
12498	ldrh	w0, [x24, 236]
12499	cmp	w1, w0
12500	bcc	.L1633
12501	mov	x1, x23
12502	mov	x0, x28
12503	mov	w2, 1041
12504	bl	sftl_printk
12505.L1633:
12506	ldrh	w0, [x20, 4]
12507	cbnz	w0, .L1634
12508	add	x0, x24, 24
12509	cmp	x20, x0
12510	bne	.L1635
12511	ldrh	w1, [x24, 84]
12512	add	x0, x24, 80
12513	cbnz	w1, .L1636
12514	bl	allocate_new_data_superblock
12515	adrp	x0, .LANCHOR2
12516	add	x0, x0, :lo12:.LANCHOR2
12517	str	wzr, [x0, 8]
12518.L1636:
12519	add	x0, x24, 24
12520	bl	allocate_new_data_superblock
12521	adrp	x0, .LANCHOR2
12522	add	x0, x0, :lo12:.LANCHOR2
12523	ldr	w0, [x0, 8]
12524	cbnz	w0, .L1673
12525.L1638:
12526	add	x20, x24, 24
12527.L1637:
12528	ldrh	w0, [x20, 4]
12529	cbnz	w0, .L1634
12530	mov	x0, x20
12531	bl	allocate_new_data_superblock
12532.L1634:
12533	ldrh	w0, [x20, 4]
12534	ldrb	w1, [x20, 7]
12535	cmp	w0, w26
12536	csel	w0, w0, w26, ls
12537	lsl	w1, w1, 2
12538	cmp	w1, w0
12539	csel	w0, w1, w0, ls
12540	ldrb	w1, [x20, 6]
12541	str	w0, [sp, 140]
12542	ldrh	w0, [x24, 236]
12543	cmp	w1, w0
12544	bcc	.L1639
12545	mov	x1, x23
12546	mov	x0, x28
12547	mov	w2, 1074
12548	bl	sftl_printk
12549.L1639:
12550	ldr	w0, [sp, 140]
12551	str	xzr, [sp, 104]
12552	add	w0, w0, w19
12553	str	w0, [sp, 164]
12554	adrp	x0, .LC127
12555	add	x0, x0, :lo12:.LC127
12556	str	x0, [sp, 168]
12557.L1640:
12558	ldr	w0, [sp, 164]
12559	ldr	w22, [sp, 104]
12560	cmp	w19, w0
12561	bne	.L1660
12562	ldr	w22, [sp, 140]
12563.L1641:
12564	ldr	x0, [x24, 3440]
12565	mov	x3, x20
12566	mov	w1, w22
12567	mov	w2, 0
12568	bl	FtlProgPages
12569	cmp	w26, w22
12570	bcs	.L1661
12571	mov	x1, x23
12572	mov	x0, x28
12573	mov	w2, 1152
12574	bl	sftl_printk
12575.L1661:
12576	sub	w26, w26, w22
12577	b	.L1632
12578.L1635:
12579	adrp	x1, .LANCHOR2
12580	add	x1, x1, :lo12:.LANCHOR2
12581	ldrh	w0, [x0, 4]
12582	str	wzr, [x1, 8]
12583	cbnz	w0, .L1638
12584	mov	x0, x20
12585	bl	allocate_new_data_superblock
12586	b	.L1637
12587.L1673:
12588	add	x20, x24, 80
12589	b	.L1637
12590.L1660:
12591	ldrh	w0, [x20, 4]
12592	cbz	w0, .L1641
12593	add	x1, sp, 180
12594	mov	w2, 0
12595	mov	w0, w19
12596	bl	log2phys
12597	mov	x0, x20
12598	bl	get_new_active_ppa
12599	ldr	x1, [sp, 104]
12600	ldr	x2, [sp, 104]
12601	lsl	x1, x1, 5
12602	str	x1, [sp, 112]
12603	ldr	x1, [x24, 3440]
12604	add	x1, x1, x2, lsl 5
12605	ldrh	w2, [x24, 316]
12606	str	w0, [x1, 4]
12607	ldr	x1, [sp, 104]
12608	mul	w22, w2, w22
12609	ldr	x0, [x24, 3440]
12610	add	x0, x0, x1, lsl 5
12611	and	x1, x22, 4294967292
12612	str	x1, [sp, 144]
12613	ldr	x1, [x24, 3520]
12614	str	w19, [x0, 24]
12615	ldr	x3, [sp, 144]
12616	str	x1, [sp, 152]
12617	add	x22, x1, x3
12618	str	x22, [x0, 16]
12619	mov	w1, 0
12620	mov	x0, x22
12621	bl	ftl_memset
12622	ldr	w0, [sp, 160]
12623	cmp	w19, w27
12624	ldrh	w1, [x24, 262]
12625	ccmp	w19, w0, 4, ne
12626	bne	.L1642
12627	cmp	w19, w27
12628	bne	.L1643
12629	udiv	w0, w21, w1
12630	msub	w0, w0, w1, w21
12631	str	w0, [sp, 128]
12632	sub	w2, w1, w0
12633	ldr	w0, [sp, 120]
12634	cmp	w2, w0
12635	csel	w0, w2, w0, ls
12636	str	w0, [sp, 132]
12637.L1644:
12638	ldr	x0, [sp, 112]
12639	ldr	x3, [x24, 3440]
12640	add	x3, x3, x0
12641	ldr	w0, [sp, 132]
12642	cmp	w1, w0
12643	bne	.L1645
12644	mul	w0, w1, w19
12645	cmp	w19, w27
12646	sub	w0, w0, w21
12647	lsl	w0, w0, 9
12648	add	x0, x25, x0
12649	csel	x0, x25, x0, eq
12650	str	x0, [x3, 8]
12651.L1647:
12652	ldrb	w1, [x20, 6]
12653	ldrh	w0, [x24, 236]
12654	cmp	w1, w0
12655	bcc	.L1657
12656	mov	x1, x23
12657	mov	x0, x28
12658	mov	w2, 1143
12659	bl	sftl_printk
12660.L1657:
12661	ldp	x2, x1, [sp, 144]
12662	mov	w0, -3947
12663	strh	w0, [x1, x2]
12664	ldr	w0, [x24, 2664]
12665	stp	w0, w19, [x22, 4]
12666	add	w19, w19, 1
12667	cmn	w0, #2
12668	csinc	w0, wzr, w0, eq
12669	str	w0, [x24, 2664]
12670	ldr	w0, [sp, 180]
12671	str	w0, [x22, 12]
12672	ldrh	w0, [x20]
12673	strh	w0, [x22, 2]
12674	ldr	x0, [sp, 104]
12675	add	x0, x0, 1
12676	str	x0, [sp, 104]
12677	b	.L1640
12678.L1643:
12679	ldr	w0, [sp, 124]
12680	msub	w2, w1, w19, w0
12681	and	w0, w2, 65535
12682	stp	wzr, w0, [sp, 128]
12683	b	.L1644
12684.L1645:
12685	cmp	w19, w27
12686	bne	.L1648
12687	ldr	x0, [x24, 3472]
12688.L1680:
12689	str	x0, [x3, 8]
12690	ldr	w0, [sp, 180]
12691	cmn	w0, #1
12692	beq	.L1650
12693	str	w19, [sp, 208]
12694	mov	w2, 0
12695	str	w0, [sp, 188]
12696	mov	w1, 1
12697	ldr	x0, [x3, 8]
12698	str	x0, [sp, 192]
12699	ldr	x0, [x3, 16]
12700	str	x0, [sp, 200]
12701	add	x0, sp, 184
12702	bl	FlashReadPages
12703	ldr	w3, [sp, 184]
12704	cmn	w3, #1
12705	bne	.L1651
12706	ldr	w0, [x24, 2784]
12707	mov	w2, w19
12708	add	w0, w0, 1
12709	str	w0, [x24, 2784]
12710	adrp	x0, .LC126
12711	add	x0, x0, :lo12:.LC126
12712	ldr	w1, [x22, 8]
12713	bl	sftl_printk
12714.L1655:
12715	ldr	w0, [sp, 132]
12716	cmp	w19, w27
12717	lsl	w2, w0, 9
12718	bne	.L1656
12719	ldr	x0, [sp, 112]
12720	ldr	x1, [x24, 3440]
12721	add	x1, x1, x0
12722	ldr	w0, [sp, 128]
12723	ldr	x3, [x1, 8]
12724	lsl	w0, w0, 9
12725	mov	x1, x25
12726	add	x0, x3, x0
12727.L1681:
12728	bl	ftl_memcpy
12729	b	.L1647
12730.L1648:
12731	ldr	x0, [x24, 3480]
12732	b	.L1680
12733.L1651:
12734	ldr	w0, [x22, 8]
12735	cmp	w0, w19
12736	beq	.L1655
12737	ldr	w0, [x24, 2784]
12738	mov	w2, w19
12739	add	w0, w0, 1
12740	str	w0, [x24, 2784]
12741	ldr	x0, [sp, 168]
12742	ldr	w1, [x22, 8]
12743	bl	sftl_printk
12744	ldr	w0, [x22, 8]
12745	cmp	w0, w19
12746	beq	.L1655
12747	mov	x1, x23
12748	mov	x0, x28
12749	mov	w2, 1128
12750	bl	sftl_printk
12751	b	.L1655
12752.L1650:
12753	ldrh	w2, [x24, 314]
12754	mov	w1, 0
12755	ldr	x0, [x3, 8]
12756	bl	ftl_memset
12757	b	.L1655
12758.L1656:
12759	ldrh	w1, [x24, 262]
12760	ldr	x3, [sp, 112]
12761	ldr	x0, [x24, 3440]
12762	mul	w1, w1, w19
12763	add	x0, x0, x3
12764	sub	w1, w1, w21
12765	lsl	w1, w1, 9
12766	add	x1, x25, x1
12767	ldr	x0, [x0, 8]
12768	b	.L1681
12769.L1642:
12770	ldr	x2, [sp, 112]
12771	mul	w1, w1, w19
12772	ldr	x0, [x24, 3440]
12773	sub	w1, w1, w21
12774	add	x0, x0, x2
12775	lsl	w1, w1, 9
12776	add	x1, x25, x1
12777	str	x1, [x0, 8]
12778	b	.L1647
12779.L1674:
12780	mov	w19, 256
12781	mov	w21, 65535
12782	mov	w20, 128
12783.L1663:
12784	ldrh	w0, [x24, 176]
12785	ldrh	w1, [x24, 226]
12786	and	w0, w0, w1
12787	cmp	w21, w0, uxth
12788	bne	.L1664
12789	mov	w0, 0
12790	bl	List_get_gc_head_node
12791	bl	FtlGcRefreshBlock
12792.L1664:
12793	mov	w1, 1
12794	mov	w0, w1
12795	strh	w20, [x24, 3224]
12796	strh	w20, [x24, 3226]
12797	bl	rk_ftl_garbage_collect
12798	mov	w1, 1
12799	mov	w0, 0
12800	bl	rk_ftl_garbage_collect
12801	ldrh	w0, [x24, 228]
12802	cmp	w0, 2
12803	bhi	.L1665
12804	subs	w19, w19, #1
12805	bne	.L1663
12806	b	.L1665
12807.L1669:
12808	mov	w0, -1
12809	b	.L1628
12810.L1666:
12811	ldp	x19, x20, [sp, 16]
12812	ldp	x21, x22, [sp, 32]
12813	ldp	x23, x24, [sp, 48]
12814	ldp	x25, x26, [sp, 64]
12815	ldp	x27, x28, [sp, 80]
12816	ldp	x29, x30, [sp], 224
12817	hint	29 // autiasp
12818	ret
12819	.size	FtlWrite, .-FtlWrite
12820	.align	2
12821	.global	sftl_gc
12822	.type	sftl_gc, %function
12823sftl_gc:
12824	hint	34 // bti c
12825	.section	__patchable_function_entries
12826	.align	3
12827	.8byte	.LPFE127
12828	.text
12829.LPFE127:
12830	nop
12831	nop
12832	hint	25 // paciasp
12833	stp	x29, x30, [sp, -16]!
12834	mov	w1, 1
12835	mov	x29, sp
12836	mov	w0, w1
12837	bl	rk_ftl_garbage_collect
12838	ldp	x29, x30, [sp], 16
12839	hint	29 // autiasp
12840	ret
12841	.size	sftl_gc, .-sftl_gc
12842	.section	.rodata.str1.1
12843.LC128:
12844	.string	"%s hash error this.id =%x page =%x pre_id =%x hash =%x hash_r =%x\n"
12845	.text
12846	.align	2
12847	.global	FtlLoadSysInfo
12848	.type	FtlLoadSysInfo, %function
12849FtlLoadSysInfo:
12850	hint	34 // bti c
12851	.section	__patchable_function_entries
12852	.align	3
12853	.8byte	.LPFE128
12854	.text
12855.LPFE128:
12856	nop
12857	nop
12858	hint	25 // paciasp
12859	stp	x29, x30, [sp, -80]!
12860	mov	w1, 0
12861	mov	x29, sp
12862	stp	x19, x20, [sp, 16]
12863	adrp	x19, .LANCHOR0
12864	add	x19, x19, :lo12:.LANCHOR0
12865	stp	x25, x26, [sp, 64]
12866	add	x25, x19, 3712
12867	stp	x21, x22, [sp, 32]
12868	ldrh	w2, [x19, 244]
12869	stp	x23, x24, [sp, 48]
12870	ldr	x0, [x19, 3448]
12871	str	x0, [x25, 8]
12872	ldr	x0, [x19, 3512]
12873	str	x0, [x25, 16]
12874	ldr	x0, [x19, 72]
12875	lsl	w2, w2, 1
12876	bl	ftl_memset
12877	ldrh	w0, [x19, 2696]
12878	mov	w1, 65535
12879	cmp	w0, w1
12880	bne	.L1685
12881.L1697:
12882	mov	w0, -1
12883.L1684:
12884	ldp	x19, x20, [sp, 16]
12885	ldp	x21, x22, [sp, 32]
12886	ldp	x23, x24, [sp, 48]
12887	ldp	x25, x26, [sp, 64]
12888	ldp	x29, x30, [sp], 80
12889	hint	29 // autiasp
12890	ret
12891.L1685:
12892	add	x21, x19, 2560
12893	mov	w1, 1
12894	bl	FtlGetLastWrittenPage
12895	sxth	w20, w0
12896	add	w0, w20, 1
12897	mov	w24, 19539
12898	ldrsh	w22, [x21, 136]
12899	movk	w24, 0x4654, lsl 16
12900	strh	w0, [x21, 138]
12901	adrp	x21, .LANCHOR1
12902	add	x21, x21, :lo12:.LANCHOR1
12903	add	x21, x21, 600
12904.L1687:
12905	tbz	w20, #31, .L1694
12906	adrp	x1, .LANCHOR1
12907	add	x1, x1, :lo12:.LANCHOR1
12908	add	x1, x1, 600
12909	mov	w2, 1474
12910	adrp	x0, .LC9
12911	add	x0, x0, :lo12:.LC9
12912	bl	sftl_printk
12913	b	.L1693
12914.L1694:
12915	orr	w0, w20, w22, lsl 10
12916	str	w0, [x25, 4]
12917	ldr	x0, [x19, 3448]
12918	mov	w2, 1
12919	mov	w1, w2
12920	str	x0, [x25, 8]
12921	mov	x0, x25
12922	bl	FlashReadPages
12923	ldr	x0, [x25, 16]
12924	ldr	w23, [x0, 12]
12925	ldr	w0, [x25]
12926	cmn	w0, #1
12927	cbz	w23, .L1688
12928	beq	.L1689
12929	ldrh	w1, [x19, 314]
12930	ldr	x0, [x25, 8]
12931	bl	js_hash
12932	mov	w6, w0
12933	cmp	w23, w0
12934	beq	.L1690
12935	ldrh	w4, [x19, 2700]
12936	adrp	x0, .LC128
12937	mov	w5, w23
12938	mov	w3, w20
12939	mov	w2, w22
12940	mov	x1, x21
12941	add	x0, x0, :lo12:.LC128
12942	bl	sftl_printk
12943	cbnz	w20, .L1691
12944	ldrh	w0, [x19, 2700]
12945	cmp	w22, w0
12946	beq	.L1691
12947	ldrh	w20, [x19, 308]
12948	sxth	w22, w0
12949.L1689:
12950	sub	w20, w20, #1
12951	sxth	w20, w20
12952	b	.L1687
12953.L1691:
12954	mov	w0, -1
12955	str	w0, [x25]
12956	b	.L1689
12957.L1688:
12958	beq	.L1689
12959.L1690:
12960	ldr	x0, [x19, 3448]
12961	ldr	w0, [x0]
12962	cmp	w0, w24
12963	bne	.L1689
12964	ldr	x0, [x19, 3512]
12965	ldrh	w1, [x0]
12966	mov	w0, 61604
12967	cmp	w1, w0
12968	bne	.L1689
12969.L1693:
12970	ldrh	w0, [x19, 244]
12971	ldrh	w1, [x19, 314]
12972	add	x0, x0, 24
12973	cmp	x1, x0, lsl 1
12974	bcs	.L1696
12975	adrp	x1, .LANCHOR1
12976	add	x1, x1, :lo12:.LANCHOR1
12977	adrp	x0, .LC9
12978	add	x1, x1, 600
12979	add	x0, x0, :lo12:.LC9
12980	mov	w2, 1476
12981	bl	sftl_printk
12982.L1696:
12983	ldr	x1, [x19, 3720]
12984	add	x21, x19, 2512
12985	mov	w2, 48
12986	mov	x0, x21
12987	bl	ftl_memcpy
12988	ldr	x0, [x19, 72]
12989	ldrh	w2, [x19, 244]
12990	ldr	x1, [x19, 3720]
12991	lsl	w2, w2, 1
12992	add	x1, x1, 48
12993	bl	ftl_memcpy
12994	ldr	w1, [x19, 2512]
12995	mov	w0, 19539
12996	movk	w0, 0x4654, lsl 16
12997	cmp	w1, w0
12998	bne	.L1697
12999	ldrh	w1, [x19, 2520]
13000	ldrb	w2, [x19, 2522]
13001	ldrh	w0, [x19, 258]
13002	strh	w1, [x19, 2702]
13003	cmp	w2, w0
13004	bne	.L1697
13005	ldrh	w0, [x19, 306]
13006	ldrh	w2, [x19, 262]
13007	ldrh	w3, [x19, 236]
13008	str	w1, [x19, 3964]
13009	mul	w0, w0, w1
13010	str	w0, [x19, 2624]
13011	mul	w0, w2, w0
13012	ldr	w2, [x19, 248]
13013	str	w0, [x19, 344]
13014	ldrh	w0, [x19, 366]
13015	add	w0, w0, w1
13016	sub	w0, w2, w0
13017	udiv	w0, w0, w3
13018	strh	w0, [x19, 2692]
13019	cmp	w1, w2
13020	bls	.L1698
13021	adrp	x1, .LANCHOR1
13022	add	x1, x1, :lo12:.LANCHOR1
13023	adrp	x0, .LC9
13024	add	x1, x1, 600
13025	add	x0, x0, :lo12:.LC9
13026	mov	w2, 1498
13027	bl	sftl_printk
13028.L1698:
13029	ldrh	w2, [x19, 2528]
13030	add	x0, x19, 2660
13031	ldr	w1, [x19, 2544]
13032	ldrh	w3, [x19, 2526]
13033	lsr	w4, w2, 6
13034	and	w2, w2, 63
13035	strb	w2, [x19, 30]
13036	ldrb	w2, [x19, 2523]
13037	strb	w2, [x19, 32]
13038	mov	w2, 65535
13039	str	w2, [x19, 176]
13040	ldrh	w2, [x19, 2530]
13041	strh	w2, [x19, 80]
13042	ldrh	w2, [x19, 2532]
13043	strh	w4, [x19, 26]
13044	stp	wzr, wzr, [x0, -16]
13045	lsr	w4, w2, 6
13046	and	w2, w2, 63
13047	strb	w2, [x19, 86]
13048	ldrb	w2, [x19, 2524]
13049	strb	w2, [x19, 88]
13050	ldrh	w2, [x19, 2534]
13051	strh	w2, [x19, 128]
13052	ldrh	w2, [x19, 2536]
13053	strh	w4, [x19, 82]
13054	stp	w1, wzr, [x0, 8]
13055	lsr	w4, w2, 6
13056	and	w2, w2, 63
13057	strb	w2, [x19, 134]
13058	ldrb	w2, [x19, 2525]
13059	strh	w3, [x19, 24]
13060	strh	w4, [x19, 130]
13061	strb	w2, [x19, 136]
13062	strb	wzr, [x19, 182]
13063	strb	wzr, [x19, 184]
13064	str	wzr, [x19, 2628]
13065	str	wzr, [x19, 2636]
13066	str	wzr, [x19, 2684]
13067	str	wzr, [x19, 2640]
13068	ldr	w0, [x19, 2552]
13069	ldr	w1, [x19, 2660]
13070	cmp	w0, w1
13071	bls	.L1699
13072	str	w0, [x19, 2660]
13073.L1699:
13074	ldr	w0, [x19, 2548]
13075	ldr	w1, [x19, 2664]
13076	cmp	w0, w1
13077	bls	.L1700
13078	str	w0, [x19, 2664]
13079.L1700:
13080	mov	w0, 65535
13081	cmp	w3, w0
13082	beq	.L1701
13083	add	x0, x19, 24
13084	bl	make_superblock
13085.L1701:
13086	ldrh	w2, [x19, 80]
13087	add	x0, x19, 80
13088	mov	w1, 65535
13089	cmp	w2, w1
13090	beq	.L1702
13091	bl	make_superblock
13092.L1702:
13093	ldrh	w2, [x19, 128]
13094	add	x0, x19, 128
13095	mov	w1, 65535
13096	cmp	w2, w1
13097	beq	.L1703
13098	bl	make_superblock
13099.L1703:
13100	ldrh	w2, [x19, 176]
13101	add	x0, x19, 176
13102	mov	w1, 65535
13103	cmp	w2, w1
13104	beq	.L1704
13105	bl	make_superblock
13106.L1704:
13107	mov	w0, 0
13108	b	.L1684
13109	.size	FtlLoadSysInfo, .-FtlLoadSysInfo
13110	.section	.rodata.str1.1
13111.LC129:
13112	.string	"%s last blk_id =%x page =%x hash error hash =%x hash_r =%x\n"
13113.LC130:
13114	.string	"%s scan blk_id =%x page =%x hash error hash =%x hash_r =%x\n"
13115	.text
13116	.align	2
13117	.global	FtlMapTblRecovery
13118	.type	FtlMapTblRecovery, %function
13119FtlMapTblRecovery:
13120	hint	34 // bti c
13121	.section	__patchable_function_entries
13122	.align	3
13123	.8byte	.LPFE129
13124	.text
13125.LPFE129:
13126	nop
13127	nop
13128	hint	25 // paciasp
13129	stp	x29, x30, [sp, -144]!
13130	mov	w1, 0
13131	mov	x29, sp
13132	stp	x19, x20, [sp, 16]
13133	mov	x19, x0
13134	mov	w20, 0
13135	stp	x21, x22, [sp, 32]
13136	stp	x23, x24, [sp, 48]
13137	stp	x25, x26, [sp, 64]
13138	stp	x27, x28, [sp, 80]
13139	ldrh	w23, [x0, 6]
13140	ldr	x22, [x0, 40]
13141	ldp	x27, x28, [x0, 16]
13142	lsl	w2, w23, 2
13143	ldrh	w0, [x0, 8]
13144	str	w0, [sp, 112]
13145	mov	x0, x22
13146	bl	ftl_memset
13147	str	xzr, [x19, 48]
13148	adrp	x6, .LANCHOR0
13149	add	x24, x6, :lo12:.LANCHOR0
13150	mov	w0, -1
13151	ldr	x1, [x24, 3448]
13152	str	x1, [x24, 3720]
13153	ldr	x21, [x24, 3512]
13154	str	x21, [x24, 3728]
13155	str	w0, [x19]
13156	mov	w0, 1
13157	str	w0, [x19, 56]
13158	ldr	w0, [sp, 112]
13159	sub	w0, w0, #1
13160	str	w0, [sp, 124]
13161	adrp	x0, .LANCHOR1
13162	add	x0, x0, :lo12:.LANCHOR1
13163	add	x0, x0, 615
13164	str	x0, [sp, 128]
13165.L1714:
13166	ldr	w0, [sp, 112]
13167	cmp	w20, w0
13168	bge	.L1734
13169	add	x0, x27, w20, sxtw 1
13170	str	x0, [sp, 104]
13171	ldr	w0, [sp, 124]
13172	sxtw	x26, w20
13173	sbfiz	x1, x20, 1, 32
13174	cmp	w0, w20
13175	bne	.L1715
13176	ldr	x0, [sp, 104]
13177	mov	w1, 1
13178	adrp	x27, .LC129
13179	add	x27, x27, :lo12:.LC129
13180	ldrh	w0, [x0]
13181	bl	FtlGetLastWrittenPage
13182	sxth	w25, w0
13183	add	w25, w25, 1
13184	strh	w20, [x19]
13185	strh	w25, [x19, 2]
13186	ldr	w0, [x28, x26, lsl 2]
13187	adrp	x26, .LANCHOR1
13188	add	x26, x26, :lo12:.LANCHOR1
13189	mov	w28, 0
13190	add	x26, x26, 615
13191	str	w0, [x19, 48]
13192.L1716:
13193	cmp	w28, w25
13194	blt	.L1720
13195.L1734:
13196	mov	x0, x19
13197	bl	ftl_free_no_use_map_blk
13198	ldrh	w1, [x19, 2]
13199	ldrh	w0, [x24, 308]
13200	cmp	w1, w0
13201	bne	.L1722
13202	mov	x0, x19
13203	bl	ftl_map_blk_alloc_new_blk
13204.L1722:
13205	mov	x0, x19
13206	bl	ftl_map_blk_gc
13207	mov	x0, x19
13208	bl	ftl_map_blk_gc
13209	mov	w0, 0
13210	ldp	x19, x20, [sp, 16]
13211	ldp	x21, x22, [sp, 32]
13212	ldp	x23, x24, [sp, 48]
13213	ldp	x25, x26, [sp, 64]
13214	ldp	x27, x28, [sp, 80]
13215	ldp	x29, x30, [sp], 144
13216	hint	29 // autiasp
13217	ret
13218.L1720:
13219	ldr	x0, [sp, 104]
13220	add	x3, x24, 3712
13221	mov	w2, 1
13222	mov	w1, w2
13223	str	x3, [sp, 112]
13224	ldrh	w0, [x0]
13225	orr	w0, w28, w0, lsl 10
13226	str	w0, [x24, 3716]
13227	mov	x0, x3
13228	bl	FlashReadPages
13229	ldr	x3, [sp, 112]
13230	ldr	x0, [x3, 16]
13231	ldr	w4, [x0, 12]
13232	ldr	w0, [x24, 3712]
13233	str	w4, [sp, 112]
13234	cmn	w0, #1
13235	cbz	w4, .L1717
13236	beq	.L1735
13237	ldrh	w1, [x24, 314]
13238	ldr	x0, [x3, 8]
13239	bl	js_hash
13240	ldr	w4, [sp, 112]
13241	mov	w5, w0
13242	cmp	w4, w0
13243	beq	.L1719
13244	mov	x0, x27
13245	mov	w3, w28
13246	mov	w2, w20
13247	mov	x1, x26
13248	bl	sftl_printk
13249	mov	w0, -1
13250	str	w0, [x24, 3712]
13251.L1735:
13252	add	w28, w28, 1
13253	sxth	w28, w28
13254	b	.L1716
13255.L1717:
13256	beq	.L1735
13257.L1719:
13258	ldrh	w0, [x21, 8]
13259	cmp	w0, w23
13260	bcs	.L1735
13261	ldrh	w2, [x21]
13262	ldrh	w1, [x19, 4]
13263	cmp	w2, w1
13264	bne	.L1735
13265	ubfiz	x0, x0, 2, 16
13266	ldr	w1, [x24, 3716]
13267	str	w1, [x22, x0]
13268	b	.L1735
13269.L1715:
13270	add	x0, x24, 3712
13271	ldr	x2, [x24, 3448]
13272	str	x2, [x0, 8]
13273	ldrh	w2, [x24, 308]
13274	ldrh	w1, [x27, x1]
13275	sub	w2, w2, #1
13276	orr	w1, w2, w1, lsl 10
13277	mov	w2, 1
13278	str	w1, [x0, 4]
13279	mov	w1, w2
13280	bl	FlashReadPages
13281	ldr	w0, [x24, 3712]
13282	cmn	w0, #1
13283	beq	.L1738
13284	ldrh	w1, [x21]
13285	ldrh	w0, [x19, 4]
13286	cmp	w1, w0
13287	bne	.L1738
13288	ldrh	w1, [x21, 8]
13289	mov	w0, 64245
13290	cmp	w1, w0
13291	beq	.L1739
13292.L1738:
13293	adrp	x25, .LC130
13294	mov	w26, 0
13295	add	x25, x25, :lo12:.LC130
13296	b	.L1730
13297.L1726:
13298	ldr	x3, [x24, 3448]
13299	lsl	w1, w0, 1
13300	ldr	w4, [x3, w1, sxtw 2]
13301	and	w2, w4, 65535
13302	cmp	w23, w4, uxth
13303	bls	.L1725
13304	add	w1, w1, 1
13305	ldr	w3, [x3, w1, sxtw 2]
13306	ubfiz	x1, x2, 2, 16
13307	str	w3, [x22, x1]
13308.L1725:
13309	add	w0, w0, 1
13310	sxth	w0, w0
13311.L1724:
13312	ldrh	w1, [x24, 308]
13313	sub	w1, w1, #1
13314	cmp	w0, w1
13315	blt	.L1726
13316.L1732:
13317	add	w20, w20, 1
13318	sxth	w20, w20
13319	b	.L1714
13320.L1739:
13321	mov	w0, 0
13322	b	.L1724
13323.L1731:
13324	ldr	x0, [sp, 104]
13325	add	x5, x24, 3712
13326	mov	w2, 1
13327	mov	w1, w2
13328	str	x5, [sp, 136]
13329	ldrh	w0, [x0]
13330	orr	w0, w26, w0, lsl 10
13331	str	w0, [x24, 3716]
13332	mov	x0, x5
13333	bl	FlashReadPages
13334	ldr	x5, [sp, 136]
13335	ldr	x0, [x5, 16]
13336	ldr	w4, [x0, 12]
13337	ldr	w0, [x24, 3712]
13338	str	w4, [sp, 136]
13339	cmn	w0, #1
13340	cbz	w4, .L1727
13341	beq	.L1736
13342	ldrh	w1, [x24, 314]
13343	ldr	x0, [x5, 8]
13344	bl	js_hash
13345	ldr	w4, [sp, 136]
13346	mov	w5, w0
13347	cmp	w4, w0
13348	beq	.L1729
13349	ldr	x1, [sp, 128]
13350	mov	x0, x25
13351	mov	w3, w26
13352	mov	w2, w20
13353	bl	sftl_printk
13354	mov	w0, -1
13355	str	w0, [x24, 3712]
13356.L1736:
13357	add	w3, w26, 1
13358	sxth	w26, w3
13359.L1730:
13360	ldrh	w0, [x24, 308]
13361	cmp	w26, w0
13362	blt	.L1731
13363	b	.L1732
13364.L1727:
13365	beq	.L1736
13366.L1729:
13367	ldrh	w0, [x21, 8]
13368	cmp	w0, w23
13369	bcs	.L1736
13370	ldrh	w2, [x21]
13371	ldrh	w1, [x19, 4]
13372	cmp	w2, w1
13373	bne	.L1736
13374	ubfiz	x0, x0, 2, 16
13375	ldr	w1, [x24, 3716]
13376	str	w1, [x22, x0]
13377	b	.L1736
13378	.size	FtlMapTblRecovery, .-FtlMapTblRecovery
13379	.align	2
13380	.global	FtlLoadVonderInfo
13381	.type	FtlLoadVonderInfo, %function
13382FtlLoadVonderInfo:
13383	hint	34 // bti c
13384	.section	__patchable_function_entries
13385	.align	3
13386	.8byte	.LPFE130
13387	.text
13388.LPFE130:
13389	nop
13390	nop
13391	adrp	x1, .LANCHOR0
13392	add	x1, x1, :lo12:.LANCHOR0
13393	hint	25 // paciasp
13394	stp	x29, x30, [sp, -16]!
13395	add	x0, x1, 3880
13396	mov	x29, sp
13397	ldrh	w2, [x1, 324]
13398	strh	w2, [x0, 10]
13399	mov	w2, -3962
13400	strh	w2, [x0, 4]
13401	ldrh	w2, [x1, 348]
13402	strh	w2, [x0, 8]
13403	ldrh	w2, [x1, 326]
13404	strh	w2, [x0, 6]
13405	ldr	x2, [x1, 352]
13406	str	x2, [x0, 16]
13407	ldr	x2, [x1, 3584]
13408	str	x2, [x0, 24]
13409	ldr	x2, [x1, 3576]
13410	ldr	x1, [x1, 3592]
13411	stp	x2, x1, [x0, 32]
13412	bl	FtlMapTblRecovery
13413	mov	w0, 0
13414	ldp	x29, x30, [sp], 16
13415	hint	29 // autiasp
13416	ret
13417	.size	FtlLoadVonderInfo, .-FtlLoadVonderInfo
13418	.align	2
13419	.global	FtlLoadMapInfo
13420	.type	FtlLoadMapInfo, %function
13421FtlLoadMapInfo:
13422	hint	34 // bti c
13423	.section	__patchable_function_entries
13424	.align	3
13425	.8byte	.LPFE131
13426	.text
13427.LPFE131:
13428	nop
13429	nop
13430	hint	25 // paciasp
13431	stp	x29, x30, [sp, -16]!
13432	mov	x29, sp
13433	bl	FtlL2PDataInit
13434	adrp	x0, .LANCHOR0
13435	add	x0, x0, :lo12:.LANCHOR0
13436	add	x0, x0, 3632
13437	bl	FtlMapTblRecovery
13438	mov	w0, 0
13439	ldp	x29, x30, [sp], 16
13440	hint	29 // autiasp
13441	ret
13442	.size	FtlLoadMapInfo, .-FtlLoadMapInfo
13443	.align	2
13444	.global	FtlSysBlkInit
13445	.type	FtlSysBlkInit, %function
13446FtlSysBlkInit:
13447	hint	34 // bti c
13448	.section	__patchable_function_entries
13449	.align	3
13450	.8byte	.LPFE132
13451	.text
13452.LPFE132:
13453	nop
13454	nop
13455	hint	25 // paciasp
13456	stp	x29, x30, [sp, -48]!
13457	mov	x29, sp
13458	stp	x19, x20, [sp, 16]
13459	adrp	x19, .LANCHOR0
13460	add	x19, x19, :lo12:.LANCHOR0
13461	stp	x21, x22, [sp, 32]
13462	ldrh	w0, [x19, 240]
13463	strh	wzr, [x19, 3744]
13464	bl	FtlFreeSysBlkQueueInit
13465	bl	FtlScanSysBlk
13466	ldrh	w1, [x19, 2696]
13467	mov	w0, 65535
13468	cmp	w1, w0
13469	bne	.L1758
13470.L1760:
13471	mov	w20, -1
13472.L1757:
13473	mov	w0, w20
13474	ldp	x19, x20, [sp, 16]
13475	ldp	x21, x22, [sp, 32]
13476	ldp	x29, x30, [sp], 48
13477	hint	29 // autiasp
13478	ret
13479.L1758:
13480	bl	FtlLoadSysInfo
13481	mov	w20, w0
13482	cbnz	w0, .L1760
13483	bl	FtlLoadMapInfo
13484	bl	FtlLoadVonderInfo
13485	bl	Ftl_load_ext_data
13486	bl	FtlLoadEctTbl
13487	bl	FtlFreeSysBLkSort
13488	bl	SupperBlkListInit
13489	bl	FtlPowerLostRecovery
13490	mov	w0, 1
13491	bl	FtlUpdateVaildLpn
13492	ldr	x1, [x19, 2608]
13493	mov	x0, 0
13494	ldrh	w2, [x19, 342]
13495	add	x1, x1, 4
13496.L1761:
13497	mov	w3, w0
13498	cmp	w2, w0
13499	ble	.L1765
13500	lsl	x4, x0, 4
13501	add	x0, x0, 1
13502	ldr	w4, [x1, x4]
13503	tbz	w4, #31, .L1761
13504.L1765:
13505	ldrh	w0, [x19, 2540]
13506	add	w0, w0, 1
13507	strh	w0, [x19, 2540]
13508	cmp	w3, w2
13509	bge	.L1772
13510.L1762:
13511	add	x22, x19, 24
13512	add	x21, x19, 80
13513	mov	x0, x22
13514	bl	FtlSuperblockPowerLostFix
13515	mov	x0, x21
13516	bl	FtlSuperblockPowerLostFix
13517	ldrh	w0, [x19, 24]
13518	ldr	x2, [x19, 72]
13519	lsl	x0, x0, 1
13520	ldrh	w3, [x19, 28]
13521	ldrh	w1, [x2, x0]
13522	sub	w1, w1, w3
13523	strh	w1, [x2, x0]
13524	strh	wzr, [x19, 28]
13525	ldrh	w0, [x19, 306]
13526	strh	w0, [x19, 26]
13527	ldrh	w0, [x19, 80]
13528	ldr	x2, [x19, 72]
13529	strb	wzr, [x19, 30]
13530	lsl	x0, x0, 1
13531	ldrh	w3, [x19, 84]
13532	ldrh	w1, [x2, x0]
13533	sub	w1, w1, w3
13534	strh	w1, [x2, x0]
13535	strh	wzr, [x19, 84]
13536	ldrh	w0, [x19, 306]
13537	strh	w0, [x19, 82]
13538	ldrh	w0, [x19, 2542]
13539	strb	wzr, [x19, 86]
13540	add	w0, w0, 1
13541	strh	w0, [x19, 2542]
13542	bl	l2p_flush
13543	bl	FtlVpcTblFlush
13544	bl	FtlVpcTblFlush
13545	b	.L1766
13546.L1772:
13547	ldrh	w0, [x19, 3744]
13548	cbnz	w0, .L1762
13549.L1766:
13550	ldrh	w0, [x19, 24]
13551	add	x22, x19, 24
13552	mov	w1, 65535
13553	cmp	w0, w1
13554	beq	.L1767
13555	ldrh	w1, [x19, 28]
13556	add	x21, x19, 80
13557	ldrh	w2, [x19, 84]
13558	orr	w1, w1, w2
13559	tst	w1, 65535
13560	bne	.L1767
13561	bl	FtlGcRefreshBlock
13562	ldrh	w0, [x19, 80]
13563	bl	FtlGcRefreshBlock
13564	bl	FtlVpcTblFlush
13565	mov	x0, x22
13566	bl	allocate_new_data_superblock
13567	mov	x0, x21
13568	bl	allocate_new_data_superblock
13569.L1767:
13570	bl	FtlVpcCheckAndModify
13571	b	.L1757
13572	.size	FtlSysBlkInit, .-FtlSysBlkInit
13573	.align	2
13574	.global	ftl_low_format
13575	.type	ftl_low_format, %function
13576ftl_low_format:
13577	hint	34 // bti c
13578	.section	__patchable_function_entries
13579	.align	3
13580	.8byte	.LPFE133
13581	.text
13582.LPFE133:
13583	nop
13584	nop
13585	hint	25 // paciasp
13586	stp	x29, x30, [sp, -48]!
13587	mov	x29, sp
13588	stp	x19, x20, [sp, 16]
13589	adrp	x19, .LANCHOR0
13590	add	x19, x19, :lo12:.LANCHOR0
13591	str	x21, [sp, 32]
13592	ldrh	w0, [x19, 240]
13593	str	wzr, [x19, 2660]
13594	str	wzr, [x19, 2664]
13595	str	wzr, [x19, 2676]
13596	bl	FtlFreeSysBlkQueueInit
13597	bl	FtlLoadBbt
13598	cbz	w0, .L1775
13599	bl	FtlMakeBbt
13600.L1775:
13601	mov	w3, 23752
13602	mov	w0, 0
13603	movk	w3, 0xa0f, lsl 16
13604.L1776:
13605	ldrh	w1, [x19, 262]
13606	cmp	w0, w1, lsl 7
13607	blt	.L1777
13608	ldrh	w21, [x19, 244]
13609	mov	w20, 0
13610.L1778:
13611	ldrh	w0, [x19, 246]
13612	cmp	w0, w21
13613	bhi	.L1779
13614	ldrh	w0, [x19, 236]
13615	sub	w1, w20, #3
13616	cmp	w1, w0, lsl 1
13617	bge	.L1780
13618.L1784:
13619	mov	w20, 0
13620	mov	w21, 0
13621.L1781:
13622	ldrh	w0, [x19, 244]
13623	cmp	w0, w21
13624	bhi	.L1785
13625	ldrh	w0, [x19, 246]
13626	ldrh	w2, [x19, 236]
13627	str	w0, [x19, 3420]
13628	ldr	w0, [x19, 248]
13629	udiv	w4, w0, w2
13630	ubfx	x3, x4, 5, 16
13631	str	w4, [x19, 2624]
13632	add	w1, w3, 36
13633	strh	w1, [x19, 2692]
13634	mov	w1, 24
13635	mul	w1, w2, w1
13636	cmp	w20, w1
13637	ble	.L1786
13638	sub	w0, w0, w20
13639	udiv	w0, w0, w2
13640	str	w0, [x19, 2624]
13641	lsr	w0, w0, 5
13642	add	w0, w0, 24
13643	strh	w0, [x19, 2692]
13644.L1786:
13645	ldrh	w1, [x19, 298]
13646	cbz	w1, .L1788
13647	ldrh	w0, [x19, 2692]
13648	add	w0, w0, w1, lsr 1
13649	strh	w0, [x19, 2692]
13650	mul	w0, w1, w2
13651	cmp	w20, w0
13652	bge	.L1788
13653	add	w1, w1, 32
13654	str	w4, [x19, 2624]
13655	add	w1, w3, w1
13656	strh	w1, [x19, 2692]
13657.L1788:
13658	ldrh	w1, [x19, 2692]
13659	add	x21, x19, 24
13660	ldr	w0, [x19, 2624]
13661	mov	w20, -1
13662	sub	w0, w0, w1
13663	ldrh	w1, [x19, 306]
13664	mul	w0, w0, w2
13665	str	w0, [x19, 3964]
13666	mul	w0, w1, w0
13667	ldrh	w1, [x19, 262]
13668	str	w0, [x19, 2624]
13669	mul	w0, w1, w0
13670	str	w0, [x19, 344]
13671	bl	FtlBbmTblFlush
13672	ldr	x0, [x19, 72]
13673	mov	w1, 0
13674	ldrh	w2, [x19, 246]
13675	lsl	w2, w2, 1
13676	bl	ftl_memset
13677	mov	w1, 65535
13678	mov	w0, 1
13679	strb	wzr, [x21, 6]
13680	strb	w0, [x21, 8]
13681	str	wzr, [x19, 24]
13682	str	w1, [x19, 176]
13683	strb	wzr, [x19, 182]
13684	strb	wzr, [x19, 184]
13685	str	wzr, [x19, 2620]
13686.L1790:
13687	mov	x0, x21
13688	bl	make_superblock
13689	ldrb	w1, [x21, 7]
13690	ldrh	w0, [x21]
13691	cbnz	w1, .L1791
13692	ldr	x1, [x19, 72]
13693	ubfiz	x0, x0, 1, 16
13694	strh	w20, [x1, x0]
13695	ldrh	w0, [x21]
13696	add	w0, w0, 1
13697	strh	w0, [x21]
13698	b	.L1790
13699.L1777:
13700	ldr	x4, [x19, 3472]
13701	ubfiz	x2, x0, 2, 16
13702	mvn	w1, w0
13703	orr	w1, w0, w1, lsl 16
13704	str	w1, [x4, x2]
13705	add	w0, w0, 1
13706	ldr	x1, [x19, 3480]
13707	and	w0, w0, 65535
13708	str	w3, [x1, x2]
13709	b	.L1776
13710.L1779:
13711	mov	w0, w21
13712	mov	w1, 1
13713	add	w21, w21, 1
13714	bl	FtlLowFormatEraseBlock
13715	add	w20, w0, w20
13716	and	w21, w21, 65535
13717	and	w20, w20, 65535
13718	b	.L1778
13719.L1780:
13720	udiv	w20, w20, w0
13721	ldr	w0, [x19, 336]
13722	add	w0, w20, w0
13723	bl	FtlSysBlkNumInit
13724	ldrh	w0, [x19, 240]
13725	bl	FtlFreeSysBlkQueueInit
13726	ldrh	w20, [x19, 244]
13727.L1782:
13728	ldrh	w0, [x19, 246]
13729	cmp	w0, w20
13730	bls	.L1784
13731	mov	w0, w20
13732	add	w20, w20, 1
13733	mov	w1, 1
13734	and	w20, w20, 65535
13735	bl	FtlLowFormatEraseBlock
13736	b	.L1782
13737.L1785:
13738	mov	w0, w21
13739	mov	w1, 0
13740	add	w21, w21, 1
13741	bl	FtlLowFormatEraseBlock
13742	add	w20, w0, w20
13743	and	w21, w21, 65535
13744	and	w20, w20, 65535
13745	b	.L1781
13746.L1791:
13747	ldr	w1, [x19, 2660]
13748	ubfiz	x0, x0, 1, 16
13749	str	w1, [x21, 12]
13750	add	x20, x19, 80
13751	add	w1, w1, 1
13752	str	w1, [x19, 2660]
13753	ldr	x1, [x19, 72]
13754	ldrh	w2, [x21, 4]
13755	strh	w2, [x1, x0]
13756	strh	wzr, [x20, 2]
13757	ldrh	w0, [x21]
13758	mov	w21, -1
13759	strb	wzr, [x20, 6]
13760	add	w0, w0, 1
13761	strh	w0, [x19, 80]
13762	mov	w0, 1
13763	strb	w0, [x20, 8]
13764.L1792:
13765	mov	x0, x20
13766	bl	make_superblock
13767	ldrb	w1, [x20, 7]
13768	ldrh	w0, [x20]
13769	cbnz	w1, .L1793
13770	ldr	x1, [x19, 72]
13771	ubfiz	x0, x0, 1, 16
13772	strh	w21, [x1, x0]
13773	ldrh	w0, [x20]
13774	add	w0, w0, 1
13775	strh	w0, [x20]
13776	b	.L1792
13777.L1793:
13778	ldr	w1, [x19, 2660]
13779	ubfiz	x0, x0, 1, 16
13780	str	w1, [x20, 12]
13781	add	w1, w1, 1
13782	str	w1, [x19, 2660]
13783	ldr	x1, [x19, 72]
13784	ldrh	w2, [x20, 4]
13785	strh	w2, [x1, x0]
13786	mov	w0, -1
13787	strh	w0, [x19, 128]
13788	bl	FtlFreeSysBlkQueueOut
13789	strh	w0, [x19, 2696]
13790	add	x1, x19, 2560
13791	mov	w0, -65536
13792	str	w0, [x1, 138]
13793	ldr	w0, [x19, 3964]
13794	strh	w0, [x19, 2702]
13795	ldr	w0, [x19, 2660]
13796	str	w0, [x19, 2704]
13797	add	w0, w0, 1
13798	str	w0, [x19, 2660]
13799	bl	FtlVpcTblFlush
13800	bl	FtlSysBlkInit
13801	cbnz	w0, .L1794
13802	adrp	x0, .LANCHOR2
13803	mov	w1, 1
13804	str	w1, [x0, #:lo12:.LANCHOR2]
13805.L1794:
13806	mov	w0, 0
13807	ldp	x19, x20, [sp, 16]
13808	ldr	x21, [sp, 32]
13809	ldp	x29, x30, [sp], 48
13810	hint	29 // autiasp
13811	ret
13812	.size	ftl_low_format, .-ftl_low_format
13813	.align	2
13814	.global	sftl_init
13815	.type	sftl_init, %function
13816sftl_init:
13817	hint	34 // bti c
13818	.section	__patchable_function_entries
13819	.align	3
13820	.8byte	.LPFE134
13821	.text
13822.LPFE134:
13823	nop
13824	nop
13825	hint	25 // paciasp
13826	stp	x29, x30, [sp, -32]!
13827	adrp	x1, .LC1
13828	mov	x29, sp
13829	add	x1, x1, :lo12:.LC1
13830	stp	x19, x20, [sp, 16]
13831	adrp	x20, .LANCHOR2
13832	mov	w0, -1
13833	adrp	x19, .LANCHOR0
13834	add	x19, x19, :lo12:.LANCHOR0
13835	str	w0, [x20, #:lo12:.LANCHOR2]
13836	adrp	x0, .LC78
13837	add	x0, x0, :lo12:.LC78
13838	bl	sftl_printk
13839	mov	x0, x19
13840	bl	FtlConstantsInit
13841	bl	FtlMemInit
13842	bl	FtlVariablesInit
13843	ldrh	w0, [x19, 240]
13844	bl	FtlFreeSysBlkQueueInit
13845	bl	FtlLoadBbt
13846	cbnz	w0, .L1800
13847	bl	FtlSysBlkInit
13848	cbnz	w0, .L1800
13849	mov	w0, 1
13850	str	w0, [x20, #:lo12:.LANCHOR2]
13851	ldrh	w0, [x19, 228]
13852	cmp	w0, 15
13853	bhi	.L1800
13854	mov	w19, 8129
13855.L1801:
13856	mov	w1, 1
13857	mov	w0, 0
13858	bl	rk_ftl_garbage_collect
13859	subs	w19, w19, #1
13860	bne	.L1801
13861.L1800:
13862	mov	w0, 0
13863	ldp	x19, x20, [sp, 16]
13864	ldp	x29, x30, [sp], 32
13865	hint	29 // autiasp
13866	ret
13867	.size	sftl_init, .-sftl_init
13868	.section	.rodata.str1.1
13869.LC131:
13870	.string	"write_idblock %x %x\n"
13871.LC132:
13872	.string	"write_idblock fail! %x %x %x %x\n"
13873.LC133:
13874	.string	"%s idb buffer alloc fail\n"
13875	.text
13876	.align	2
13877	.global	FtlWriteToIDB
13878	.type	FtlWriteToIDB, %function
13879FtlWriteToIDB:
13880	hint	34 // bti c
13881	.section	__patchable_function_entries
13882	.align	3
13883	.8byte	.LPFE135
13884	.text
13885.LPFE135:
13886	nop
13887	nop
13888	hint	25 // paciasp
13889	stp	x29, x30, [sp, -208]!
13890	adrp	x5, .LANCHOR0
13891	mov	x29, sp
13892	stp	x19, x20, [sp, 16]
13893	mov	w20, w0
13894	mrs	x0, sp_el0
13895	stp	x21, x22, [sp, 32]
13896	mov	w19, w1
13897	add	w22, w19, w20
13898	stp	x23, x24, [sp, 48]
13899	sub	w23, w22, #1
13900	cmp	w23, 63
13901	stp	x25, x26, [sp, 64]
13902	add	x25, x5, :lo12:.LANCHOR0
13903	stp	x27, x28, [sp, 80]
13904	ldr	x1, [x0, 1376]
13905	str	x1, [sp, 200]
13906	mov	x1, 0
13907	bls	.L1805
13908	cmp	w20, 575
13909	bls	.L1806
13910.L1805:
13911	ldr	w0, [x25, 3968]
13912	cbnz	w0, .L1807
13913.L1869:
13914	mov	w19, 0
13915	b	.L1804
13916.L1807:
13917	ldr	x22, [x25, 3976]
13918	mov	w0, 35899
13919	movk	w0, 0xfcdc, lsl 16
13920	ldr	w1, [x22]
13921	cmp	w1, w0
13922	bne	.L1809
13923	add	x1, x22, 258048
13924	ldrh	w2, [x25, 10]
13925	add	x1, x1, 2044
13926	mov	w0, 0
13927	mov	w19, 65023
13928.L1813:
13929	ldr	w3, [x1]
13930	cbnz	w3, .L1810
13931	ldr	w3, [x22, w0, uxtw 2]
13932	add	w0, w0, 1
13933	str	w3, [x1, 2048]
13934	cmp	w0, 4096
13935	bls	.L1811
13936	mov	w0, 0
13937.L1811:
13938	sub	w19, w19, #1
13939	sub	x1, x1, #4
13940	cmp	w19, 4096
13941	bne	.L1813
13942	mov	w19, 512
13943	b	.L1812
13944.L1810:
13945	add	w19, w19, 127
13946	lsr	w19, w19, 7
13947.L1812:
13948	ubfiz	w0, w2, 2, 14
13949	add	w20, w19, 4
13950	mov	w1, w19
13951	mov	w23, 0
13952	mov	w21, 0
13953	udiv	w20, w20, w0
13954	adrp	x0, .LC131
13955	add	x0, x0, :lo12:.LC131
13956	add	w20, w20, 1
13957	mov	w2, w20
13958	bl	sftl_printk
13959	lsl	w0, w19, 7
13960	str	w0, [sp, 100]
13961.L1814:
13962	add	w0, w20, w21
13963	str	w0, [sp, 104]
13964	cmp	w0, 8
13965	bls	.L1836
13966	cbnz	w23, .L1835
13967.L1809:
13968	mov	w19, -1
13969	b	.L1835
13970.L1836:
13971	ldr	x0, [x25, 3984]
13972	mov	w1, 0
13973	mov	x2, 512
13974	bl	memset
13975	ldrh	w27, [x25, 10]
13976	ldr	x1, [x25, 3384]
13977	mul	w0, w21, w27
13978	str	w0, [sp, 96]
13979	cbz	x1, .L1845
13980	ldr	x0, [x25, 3392]
13981	mov	w24, 6
13982	cmp	x0, 0
13983	mov	w0, 9
13984	csel	w24, w24, w0, eq
13985.L1815:
13986	mul	w28, w21, w27
13987	mov	w26, 0
13988.L1816:
13989	ldr	x3, [x25, 3360]
13990	mov	w1, w28
13991	add	w26, w26, 1
13992	add	w28, w28, w27
13993	mov	w0, 0
13994	blr	x3
13995	cmp	w20, w26
13996	bhi	.L1816
13997	cmp	w24, 9
13998	bne	.L1847
13999	ldr	x28, [x25, 3984]
14000	mov	w2, 1024
14001	mov	w1, 0
14002	mov	x0, x28
14003	bl	ftl_memset
14004	mov	x0, 18766
14005	str	wzr, [x28, 12]
14006	movk	x0, 0x464e, lsl 16
14007	mov	w1, 12
14008	movk	x0, 0xc, lsl 32
14009	str	x0, [x28]
14010	mov	w0, 1024
14011	strh	w0, [x28, 16]
14012	ldrh	w0, [x25, 10]
14013	strh	w0, [x28, 18]
14014	mov	w0, 4096
14015	str	w0, [x28, 20]
14016	add	x0, x28, 12
14017	bl	js_hash
14018	str	w0, [x28, 8]
14019.L1817:
14020	mul	w0, w20, w27
14021	mov	x27, x22
14022	mov	w26, 0
14023	str	w0, [sp, 108]
14024.L1818:
14025	ldr	w0, [sp, 108]
14026	cmp	w26, w0
14027	beq	.L1825
14028	cmp	w24, 9
14029	lsl	w0, w26, 2
14030	csinc	w0, w0, w26, ne
14031	str	w0, [sp, 136]
14032	mov	w0, 61424
14033	str	w0, [sp, 140]
14034	cmp	w26, 0
14035	ccmp	w24, 9, 0, eq
14036	bne	.L1821
14037	ldr	x1, [x25, 3384]
14038	add	x8, x25, 3352
14039	mov	w0, 70
14040	str	x8, [sp, 112]
14041	blr	x1
14042	ldr	w1, [sp, 96]
14043	ldr	x8, [sp, 112]
14044	add	x3, sp, 136
14045	mov	x2, x28
14046	mov	w0, 0
14047	str	x8, [sp, 120]
14048	ldr	x9, [x8, 16]
14049	blr	x9
14050	mov	w1, w0
14051	ldr	x8, [sp, 120]
14052	str	w1, [sp, 112]
14053	ldrb	w0, [x25, 22]
14054	ldr	x2, [x8, 32]
14055	blr	x2
14056	ldr	w1, [sp, 112]
14057	cmn	w1, #1
14058	bne	.L1822
14059.L1825:
14060	ldrb	w0, [x25, 14]
14061	add	x1, x25, 3352
14062	str	w0, [sp, 108]
14063	ldrh	w0, [x25, 10]
14064	ldr	x3, [x1, 32]
14065	ldr	x26, [x25, 3984]
14066	mul	w27, w21, w0
14067	cbnz	x3, .L1823
14068	mov	w1, 6
14069.L1868:
14070	mul	w0, w20, w0
14071	mov	w28, 0
14072	str	w1, [sp, 96]
14073	str	w0, [sp, 112]
14074.L1827:
14075	ldr	w0, [sp, 112]
14076	cmp	w28, w0
14077	beq	.L1831
14078	ldr	w0, [sp, 96]
14079	cmp	w28, 0
14080	ccmp	w0, 9, 0, eq
14081	bne	.L1828
14082	ldr	x1, [x25, 3384]
14083	mov	w0, 70
14084	blr	x1
14085	ldr	x1, [x25, 3392]
14086	mov	w0, 2
14087	blr	x1
14088	add	x3, sp, 136
14089	ldr	x7, [x25, 3376]
14090	mov	x2, x26
14091	mov	w1, w27
14092	mov	w0, 0
14093	blr	x7
14094	ldrb	w0, [sp, 108]
14095	ldr	x1, [x25, 3392]
14096	blr	x1
14097	ldrb	w0, [x25, 22]
14098	ldr	x1, [x25, 3384]
14099	blr	x1
14100	ldr	w0, [x26]
14101	mov	w1, 18766
14102	movk	w1, 0x464e, lsl 16
14103	cmp	w0, w1
14104	beq	.L1829
14105.L1831:
14106	ldr	x0, [x25, 3984]
14107	mov	x24, 0
14108.L1830:
14109	ldr	w2, [x0, x24, lsl 2]
14110	add	x27, x0, x24, lsl 2
14111	ldr	w1, [x22, x24, lsl 2]
14112	add	x28, x22, x24, lsl 2
14113	cmp	w2, w1
14114	beq	.L1833
14115	mov	x2, 512
14116	mov	w1, 0
14117	bl	memset
14118	ldr	w2, [x27]
14119	mov	w1, w21
14120	ldr	w3, [x28]
14121	mov	w4, w24
14122	adrp	x0, .LC132
14123	add	x0, x0, :lo12:.LC132
14124	bl	sftl_printk
14125	ldrh	w1, [x25, 10]
14126	mov	w0, 0
14127	ldr	x2, [x25, 3360]
14128	mul	w1, w1, w21
14129	blr	x2
14130.L1834:
14131	ldr	w21, [sp, 104]
14132	b	.L1814
14133.L1845:
14134	mov	w24, 6
14135	b	.L1815
14136.L1847:
14137	mov	x28, 0
14138	b	.L1817
14139.L1821:
14140	ldr	x8, [x25, 3368]
14141	add	x3, sp, 136
14142	ldr	w0, [sp, 96]
14143	mov	x2, x27
14144	add	w1, w0, w26
14145	mov	w0, 0
14146	blr	x8
14147	cmn	w0, #1
14148	beq	.L1825
14149	add	x27, x27, 2048
14150.L1822:
14151	add	w26, w26, 1
14152	b	.L1818
14153.L1823:
14154	ldr	x1, [x1, 40]
14155	mov	w24, 6
14156	cmp	x1, 0
14157	mov	w1, 9
14158	csel	w1, w24, w1, eq
14159	b	.L1868
14160.L1828:
14161	ldr	x6, [x25, 3376]
14162	add	x3, sp, 136
14163	mov	x2, x26
14164	add	w1, w27, w28
14165	mov	w0, 0
14166	blr	x6
14167	cmn	w0, #1
14168	beq	.L1831
14169	ldr	w0, [sp, 140]
14170	mov	w1, 61424
14171	cmp	w0, w1
14172	bne	.L1831
14173	add	x26, x26, 2048
14174.L1829:
14175	add	w28, w28, 1
14176	b	.L1827
14177.L1833:
14178	ldr	w1, [sp, 100]
14179	add	x24, x24, 1
14180	cmp	w1, w24
14181	bhi	.L1830
14182	add	w23, w23, 1
14183	cmp	w23, 5
14184	bls	.L1834
14185.L1835:
14186	ldr	x0, [x25, 3976]
14187	str	wzr, [x25, 3968]
14188	bl	kfree
14189	ldr	x0, [x25, 3984]
14190	bl	kfree
14191.L1804:
14192	mrs	x0, sp_el0
14193	ldr	x1, [sp, 200]
14194	ldr	x2, [x0, 1376]
14195	subs	x1, x1, x2
14196	mov	x2, 0
14197	beq	.L1844
14198	bl	__stack_chk_fail
14199.L1806:
14200	mov	x21, x2
14201	cmp	w20, 64
14202	bne	.L1837
14203	mov	w0, 262144
14204	bl	ftl_malloc
14205	str	x0, [x25, 3976]
14206	mov	w0, 262144
14207	bl	ftl_malloc
14208	mov	x1, x0
14209	ldr	x0, [x25, 3976]
14210	str	x1, [x25, 3984]
14211	cbz	x0, .L1838
14212	cbz	x1, .L1838
14213	mov	w1, 1
14214	mov	w2, 262144
14215	str	w1, [x25, 3968]
14216	mov	w1, 0
14217	bl	ftl_memset
14218.L1839:
14219	sub	w1, w20, #64
14220	ldr	x0, [x25, 3976]
14221	cmp	w20, 63
14222	bhi	.L1841
14223	add	w19, w19, w1
14224	mov	w1, 64
14225	sub	w20, w1, w20
14226	ubfiz	x20, x20, 9, 25
14227	add	x21, x21, x20
14228.L1842:
14229	cmp	w23, 575
14230	bls	.L1843
14231	sub	w19, w19, w22
14232	add	w19, w19, 576
14233.L1843:
14234	lsl	w2, w19, 9
14235	mov	x1, x21
14236	bl	ftl_memcpy
14237	b	.L1869
14238.L1838:
14239	adrp	x1, .LANCHOR1
14240	add	x1, x1, :lo12:.LANCHOR1
14241	adrp	x0, .LC133
14242	add	x1, x1, 633
14243	add	x0, x0, :lo12:.LC133
14244	bl	sftl_printk
14245.L1837:
14246	ldr	w0, [x25, 3968]
14247	cbnz	w0, .L1839
14248	b	.L1869
14249.L1841:
14250	ubfiz	x1, x1, 9, 25
14251	add	x0, x0, x1
14252	b	.L1842
14253.L1844:
14254	mov	w0, w19
14255	ldp	x19, x20, [sp, 16]
14256	ldp	x21, x22, [sp, 32]
14257	ldp	x23, x24, [sp, 48]
14258	ldp	x25, x26, [sp, 64]
14259	ldp	x27, x28, [sp, 80]
14260	ldp	x29, x30, [sp], 208
14261	hint	29 // autiasp
14262	ret
14263	.size	FtlWriteToIDB, .-FtlWriteToIDB
14264	.align	2
14265	.global	sftl_write
14266	.type	sftl_write, %function
14267sftl_write:
14268	hint	34 // bti c
14269	.section	__patchable_function_entries
14270	.align	3
14271	.8byte	.LPFE136
14272	.text
14273.LPFE136:
14274	nop
14275	nop
14276	hint	25 // paciasp
14277	stp	x29, x30, [sp, -48]!
14278	mov	x29, sp
14279	stp	x19, x20, [sp, 16]
14280	mov	w20, w1
14281	mov	w19, w0
14282	str	x21, [sp, 32]
14283	mov	x21, x2
14284	bl	FtlWriteToIDB
14285	mov	x3, x21
14286	mov	w2, w20
14287	mov	w1, w19
14288	mov	w0, 0
14289	bl	FtlWrite
14290	ldp	x19, x20, [sp, 16]
14291	ldr	x21, [sp, 32]
14292	ldp	x29, x30, [sp], 48
14293	hint	29 // autiasp
14294	ret
14295	.size	sftl_write, .-sftl_write
14296	.align	2
14297	.global	rk_sftl_vendor_dev_ops_register
14298	.type	rk_sftl_vendor_dev_ops_register, %function
14299rk_sftl_vendor_dev_ops_register:
14300	hint	34 // bti c
14301	.section	__patchable_function_entries
14302	.align	3
14303	.8byte	.LPFE137
14304	.text
14305.LPFE137:
14306	nop
14307	nop
14308	adrp	x2, .LANCHOR0
14309	add	x2, x2, :lo12:.LANCHOR0
14310	hint	25 // paciasp
14311	ldr	x3, [x2, 3992]
14312	cbnz	x3, .L1874
14313	str	x0, [x2, 3992]
14314	mov	w0, 0
14315	str	x1, [x2, 4000]
14316.L1872:
14317	hint	29 // autiasp
14318	ret
14319.L1874:
14320	mov	w0, -1
14321	b	.L1872
14322	.size	rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register
14323	.align	2
14324	.global	rk_sftl_vendor_storage_init
14325	.type	rk_sftl_vendor_storage_init, %function
14326rk_sftl_vendor_storage_init:
14327	hint	34 // bti c
14328	.section	__patchable_function_entries
14329	.align	3
14330	.8byte	.LPFE138
14331	.text
14332.LPFE138:
14333	nop
14334	nop
14335	hint	25 // paciasp
14336	stp	x29, x30, [sp, -64]!
14337	mov	w0, 65536
14338	mov	x29, sp
14339	stp	x19, x20, [sp, 16]
14340	adrp	x20, .LANCHOR0
14341	add	x20, x20, :lo12:.LANCHOR0
14342	stp	x21, x22, [sp, 32]
14343	stp	x23, x24, [sp, 48]
14344	bl	ftl_malloc
14345	str	x0, [x20, 4008]
14346	cbz	x0, .L1882
14347	mov	w24, 22084
14348	mov	w23, 0
14349	mov	w22, 0
14350	mov	w21, 0
14351	movk	w24, 0x524b, lsl 16
14352.L1880:
14353	ldr	x3, [x20, 3992]
14354	lsl	w0, w21, 7
14355	ldr	x2, [x20, 4008]
14356	mov	w1, 128
14357	blr	x3
14358	mov	w19, w0
14359	cbnz	w0, .L1878
14360	ldr	x3, [x20, 4008]
14361	ldr	w0, [x3]
14362	cmp	w0, w24
14363	bne	.L1879
14364	add	x0, x3, 49152
14365	ldr	w1, [x3, 4]
14366	ldr	w0, [x0, 16380]
14367	cmp	w0, w1
14368	bne	.L1879
14369	cmp	w0, w22
14370	bls	.L1879
14371	mov	w23, w21
14372	mov	w22, w0
14373.L1879:
14374	cbz	w21, .L1883
14375	cbz	w22, .L1881
14376	ldr	x4, [x20, 3992]
14377	mov	x2, x3
14378	lsl	w0, w23, 7
14379	mov	w1, 128
14380	blr	x4
14381	mov	w19, w0
14382	cbz	w0, .L1876
14383.L1878:
14384	ldr	x0, [x20, 4008]
14385	mov	w19, -1
14386	bl	kfree
14387	str	xzr, [x20, 4008]
14388	b	.L1876
14389.L1883:
14390	mov	w21, 1
14391	b	.L1880
14392.L1881:
14393	mov	x0, x3
14394	mov	x2, 65536
14395	mov	w1, 0
14396	bl	memset
14397	mov	x3, x0
14398	mov	x0, 22084
14399	movk	x0, 0x524b, lsl 16
14400	movk	x0, 0x1, lsl 32
14401	str	x0, [x3]
14402	add	x0, x3, 49152
14403	str	w21, [x0, 16380]
14404	mov	w0, -1032
14405	strh	w0, [x3, 14]
14406.L1876:
14407	mov	w0, w19
14408	ldp	x19, x20, [sp, 16]
14409	ldp	x21, x22, [sp, 32]
14410	ldp	x23, x24, [sp, 48]
14411	ldp	x29, x30, [sp], 64
14412	hint	29 // autiasp
14413	ret
14414.L1882:
14415	mov	w19, -12
14416	b	.L1876
14417	.size	rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init
14418	.align	2
14419	.global	rk_sftl_vendor_read
14420	.type	rk_sftl_vendor_read, %function
14421rk_sftl_vendor_read:
14422	hint	34 // bti c
14423	.section	__patchable_function_entries
14424	.align	3
14425	.8byte	.LPFE139
14426	.text
14427.LPFE139:
14428	nop
14429	nop
14430	mov	w5, w0
14431	mov	x0, x1
14432	adrp	x1, .LANCHOR0+4008
14433	ldr	x4, [x1, #:lo12:.LANCHOR0+4008]
14434	cbz	x4, .L1889
14435	ldrh	w1, [x4, 10]
14436	add	x6, x4, 16
14437	mov	x3, 0
14438.L1887:
14439	cmp	w1, w3
14440	bhi	.L1888
14441.L1889:
14442	mov	w0, -1
14443	ret
14444.L1888:
14445	add	x7, x3, 1
14446	lsl	x3, x3, 3
14447	ldrh	w8, [x6, x3]
14448	cmp	w8, w5
14449	bne	.L1890
14450	hint	25 // paciasp
14451	stp	x29, x30, [sp, -32]!
14452	add	x3, x4, x3
14453	mov	x29, sp
14454	str	x19, [sp, 16]
14455	ldrh	w5, [x3, 20]
14456	ldrh	w1, [x3, 18]
14457	cmp	w5, w2
14458	add	x1, x1, 1024
14459	csel	w19, w5, w2, ls
14460	add	x1, x4, x1
14461	csel	w2, w5, w2, ls
14462	bl	memcpy
14463	mov	w0, w19
14464	ldr	x19, [sp, 16]
14465	ldp	x29, x30, [sp], 32
14466	hint	29 // autiasp
14467	ret
14468.L1890:
14469	mov	x3, x7
14470	b	.L1887
14471	.size	rk_sftl_vendor_read, .-rk_sftl_vendor_read
14472	.align	2
14473	.global	rk_sftl_vendor_write
14474	.type	rk_sftl_vendor_write, %function
14475rk_sftl_vendor_write:
14476	hint	34 // bti c
14477	.section	__patchable_function_entries
14478	.align	3
14479	.8byte	.LPFE140
14480	.text
14481.LPFE140:
14482	nop
14483	nop
14484	hint	25 // paciasp
14485	stp	x29, x30, [sp, -128]!
14486	mov	x29, sp
14487	stp	x21, x22, [sp, 32]
14488	adrp	x22, .LANCHOR0
14489	add	x22, x22, :lo12:.LANCHOR0
14490	stp	x19, x20, [sp, 16]
14491	ldr	x19, [x22, 4008]
14492	stp	x23, x24, [sp, 48]
14493	stp	x25, x26, [sp, 64]
14494	stp	x27, x28, [sp, 80]
14495	cbz	x19, .L1910
14496	add	w21, w2, 63
14497	ldrh	w3, [x19, 10]
14498	ldrh	w23, [x19, 8]
14499	mov	w7, w0
14500	mov	x4, x1
14501	mov	w27, w2
14502	and	w21, w21, -64
14503	add	x0, x19, 16
14504	mov	x20, 0
14505.L1897:
14506	mov	w25, w20
14507	cmp	w3, w20
14508	bhi	.L1904
14509	ldrh	w1, [x19, 14]
14510	cmp	w1, w21
14511	bcc	.L1910
14512	add	x3, x19, w3, uxth 3
14513	and	w21, w21, 65535
14514	strh	w7, [x3, 16]
14515	ldrh	w0, [x19, 12]
14516	strh	w0, [x3, 18]
14517	strh	w27, [x3, 20]
14518	add	w2, w0, w21
14519	sub	w21, w1, w21
14520	and	x0, x0, 65535
14521	strh	w2, [x19, 12]
14522	add	x0, x0, 1024
14523	strh	w21, [x19, 14]
14524	uxtw	x2, w27
14525	mov	x1, x4
14526	add	x0, x19, x0
14527	bl	memcpy
14528	ldrh	w0, [x19, 10]
14529	add	w0, w0, 1
14530	strh	w0, [x19, 10]
14531	b	.L1912
14532.L1904:
14533	add	x1, x20, 1
14534	lsl	x20, x20, 3
14535	ldrh	w2, [x0, x20]
14536	cmp	w2, w7
14537	bne	.L1908
14538	add	x20, x19, x20
14539	add	x5, x19, 1024
14540	ldrh	w26, [x20, 20]
14541	add	w26, w26, 63
14542	and	w26, w26, -64
14543	cmp	w27, w26
14544	bls	.L1898
14545	ldrh	w0, [x19, 14]
14546	cmp	w0, w21
14547	bcc	.L1910
14548	ldrh	w6, [x20, 18]
14549	sub	w24, w3, #1
14550.L1899:
14551	and	w28, w6, 65535
14552	add	x20, x20, 8
14553	cmp	w24, w25
14554	bhi	.L1900
14555	add	x25, x19, w25, uxtw 3
14556	add	x0, x5, w28, uxth
14557	uxtw	x2, w27
14558	mov	x1, x4
14559	and	w21, w21, 65535
14560	strh	w7, [x25, 16]
14561	strh	w28, [x25, 18]
14562	add	w28, w21, w28
14563	strh	w27, [x25, 20]
14564	bl	memcpy
14565	strh	w28, [x19, 12]
14566	ldrh	w0, [x19, 14]
14567	sub	w21, w0, w21
14568	add	w26, w21, w26
14569	strh	w26, [x19, 14]
14570.L1912:
14571	ldr	w0, [x19, 4]
14572	add	x1, x19, 49152
14573	ldr	x3, [x22, 4000]
14574	add	w0, w0, 1
14575	str	w0, [x19, 4]
14576	mov	x2, x19
14577	str	w0, [x1, 16380]
14578	mov	w1, 128
14579	ldrh	w0, [x19, 8]
14580	add	w0, w0, 1
14581	and	w0, w0, 65535
14582	cmp	w0, 1
14583	csel	w0, w0, wzr, ls
14584	strh	w0, [x19, 8]
14585	lsl	w0, w23, 7
14586	blr	x3
14587	mov	w0, 0
14588.L1895:
14589	ldp	x19, x20, [sp, 16]
14590	ldp	x21, x22, [sp, 32]
14591	ldp	x23, x24, [sp, 48]
14592	ldp	x25, x26, [sp, 64]
14593	ldp	x27, x28, [sp, 80]
14594	ldp	x29, x30, [sp], 128
14595	hint	29 // autiasp
14596	ret
14597.L1900:
14598	add	w25, w25, 1
14599	str	x5, [sp, 104]
14600	stp	w6, w7, [sp, 112]
14601	add	x1, x19, w25, uxtw 3
14602	str	x4, [sp, 120]
14603	ldrh	w0, [x1, 16]
14604	strh	w0, [x20, 8]
14605	ldrh	w0, [x1, 20]
14606	strh	w28, [x20, 10]
14607	strh	w0, [x20, 12]
14608	add	x0, x5, w6, uxtw
14609	ldrh	w2, [x1, 20]
14610	ldrh	w1, [x1, 18]
14611	add	w2, w2, 63
14612	and	w28, w2, -64
14613	add	x1, x5, x1
14614	and	x2, x2, 131008
14615	bl	memcpy
14616	ldp	w6, w7, [sp, 112]
14617	ldr	x5, [sp, 104]
14618	add	w6, w6, w28
14619	ldr	x4, [sp, 120]
14620	b	.L1899
14621.L1898:
14622	ldrh	w0, [x20, 18]
14623	uxtw	x2, w27
14624	mov	x1, x4
14625	add	x0, x5, x0
14626	bl	memcpy
14627	strh	w27, [x20, 20]
14628	b	.L1912
14629.L1908:
14630	mov	x20, x1
14631	b	.L1897
14632.L1910:
14633	mov	w0, -1
14634	b	.L1895
14635	.size	rk_sftl_vendor_write, .-rk_sftl_vendor_write
14636	.section	.rodata.str1.1
14637.LC134:
14638	.string	"copy_from_user error %d %p %p\n"
14639	.text
14640	.align	2
14641	.global	rk_sftl_vendor_storage_ioctl
14642	.type	rk_sftl_vendor_storage_ioctl, %function
14643rk_sftl_vendor_storage_ioctl:
14644	hint	34 // bti c
14645	.section	__patchable_function_entries
14646	.align	3
14647	.8byte	.LPFE141
14648	.text
14649.LPFE141:
14650	nop
14651	nop
14652	hint	25 // paciasp
14653	stp	x29, x30, [sp, -48]!
14654	mov	w0, 4096
14655	mov	x29, sp
14656	stp	x19, x20, [sp, 16]
14657	mov	x20, x2
14658	str	x21, [sp, 32]
14659	mov	w21, w1
14660	bl	ftl_malloc
14661	cbz	x0, .L1924
14662	mov	w1, 30209
14663	mov	x19, x0
14664	movk	w1, 0x4004, lsl 16
14665	cmp	w21, w1
14666	beq	.L1915
14667	add	w1, w1, 1
14668	cmp	w21, w1
14669	beq	.L1916
14670.L1934:
14671	mov	x20, -14
14672.L1917:
14673	mov	x0, x19
14674	bl	kfree
14675.L1913:
14676	mov	x0, x20
14677	ldp	x19, x20, [sp, 16]
14678	ldr	x21, [sp, 32]
14679	ldp	x29, x30, [sp], 48
14680	hint	29 // autiasp
14681	ret
14682.L1915:
14683	mov	x1, x20
14684	mov	x2, 8
14685	bl	_copy_from_user
14686	cbz	x0, .L1918
14687	mov	x2, x20
14688	mov	w1, 256
14689.L1935:
14690	adrp	x0, .LC134
14691	add	x0, x0, :lo12:.LC134
14692	bl	sftl_printk
14693	b	.L1934
14694.L1918:
14695	ldr	w1, [x19]
14696	mov	w0, 17745
14697	movk	w0, 0x5652, lsl 16
14698	cmp	w1, w0
14699	beq	.L1919
14700.L1920:
14701	mov	x20, -1
14702	b	.L1917
14703.L1919:
14704	ldrh	w2, [x19, 6]
14705	add	x1, x19, 8
14706	ldrh	w0, [x19, 4]
14707	bl	rk_sftl_vendor_read
14708	cmn	w0, #1
14709	beq	.L1920
14710	strh	w0, [x19, 6]
14711	and	x0, x0, 65535
14712	add	x21, x0, 8
14713	mov	x0, x20
14714	mov	x1, x21
14715	bl	__range_ok
14716	cbz	x0, .L1934
14717	bl	uaccess_enable_not_uao
14718	sbfx	x1, x20, 0, 56
14719#APP
14720// 19 "./arch/arm64/include/asm/current.h" 1
14721	mrs x0, sp_el0
14722// 0 "" 2
14723#NO_APP
14724	and	x1, x1, x20
14725	ldr	x2, [x0, 8]
14726#APP
14727// 289 "./arch/arm64/include/asm/uaccess.h" 1
14728		bics	xzr, x1, x2
14729	csel	x0, x20, xzr, eq
14730
14731// 0 "" 2
14732// 297 "./arch/arm64/include/asm/uaccess.h" 1
14733	hint #20
14734// 0 "" 2
14735#NO_APP
14736	mov	x2, x21
14737	mov	x1, x19
14738	mov	x20, 0
14739	bl	__arch_copy_to_user
14740	mov	x21, x0
14741	bl	uaccess_disable_not_uao
14742	cbz	x21, .L1917
14743	b	.L1934
14744.L1916:
14745	mov	x1, x20
14746	mov	x2, 8
14747	bl	_copy_from_user
14748	cbz	x0, .L1922
14749	mov	x2, x20
14750	mov	w1, 276
14751	b	.L1935
14752.L1922:
14753	ldr	w1, [x19]
14754	mov	w0, 17745
14755	movk	w0, 0x5652, lsl 16
14756	cmp	w1, w0
14757	bne	.L1920
14758	ldrh	w2, [x19, 6]
14759	cmp	w2, 4087
14760	bhi	.L1920
14761	add	w2, w2, 8
14762	mov	x1, x20
14763	and	x2, x2, 65535
14764	mov	x0, x19
14765	bl	_copy_from_user
14766	cbz	x0, .L1923
14767	mov	x2, x20
14768	mov	w1, 283
14769	b	.L1935
14770.L1923:
14771	ldrh	w2, [x19, 6]
14772	add	x1, x19, 8
14773	ldrh	w0, [x19, 4]
14774	bl	rk_sftl_vendor_write
14775	sxtw	x20, w0
14776	b	.L1917
14777.L1924:
14778	mov	x20, -1
14779	b	.L1913
14780	.size	rk_sftl_vendor_storage_ioctl, .-rk_sftl_vendor_storage_ioctl
14781	.align	2
14782	.global	rk_sftl_vendor_register
14783	.type	rk_sftl_vendor_register, %function
14784rk_sftl_vendor_register:
14785	hint	34 // bti c
14786	.section	__patchable_function_entries
14787	.align	3
14788	.8byte	.LPFE142
14789	.text
14790.LPFE142:
14791	nop
14792	nop
14793	hint	25 // paciasp
14794	stp	x29, x30, [sp, -16]!
14795	adrp	x0, .LANCHOR2
14796	mov	x29, sp
14797	add	x0, x0, :lo12:.LANCHOR2
14798	add	x0, x0, 16
14799	bl	misc_register
14800	ldp	x29, x30, [sp], 16
14801	hint	29 // autiasp
14802	ret
14803	.size	rk_sftl_vendor_register, .-rk_sftl_vendor_register
14804	.section	.rodata.str1.1
14805.LC135:
14806	.string	"vendor_storage"
14807	.global	g_nand_ops
14808	.global	g_nand_phy_info
14809	.global	gc_ink_free_return_value
14810	.global	check_vpc_table
14811	.global	FtlUpdateVaildLpnCount
14812	.global	g_ect_tbl_power_up_flush
14813	.global	power_up_flag
14814	.global	gFtlInitStatus
14815	.global	DeviceCapacity
14816	.global	g_power_lost_recovery_flag
14817	.global	c_mlc_erase_count_value
14818	.global	g_recovery_ppa_tbl
14819	.global	g_recovery_page_min_ver
14820	.global	g_recovery_page_num
14821	.global	sftl_nand_check_spare_buf
14822	.global	sftl_temp_buf
14823	.global	sftl_nand_check_buf
14824	.global	g_cur_erase_blk
14825	.global	g_gc_skip_write_count
14826	.global	g_gc_head_data_block_count
14827	.global	g_gc_head_data_block
14828	.global	g_ftl_nand_free_count
14829	.global	g_in_swl_replace
14830	.global	g_in_gc_progress
14831	.global	g_max_erase_count
14832	.global	g_totle_sys_slc_erase_count
14833	.global	g_totle_slc_erase_count
14834	.global	g_min_erase_count
14835	.global	g_totle_avg_erase_count
14836	.global	g_totle_mlc_erase_count
14837	.global	g_totle_l2p_write_count
14838	.global	g_totle_cache_write_count
14839	.global	g_tmp_data_superblock_id
14840	.global	g_totle_read_page_count
14841	.global	g_totle_discard_page_count
14842	.global	g_totle_read_sector
14843	.global	g_totle_write_sector
14844	.global	g_totle_write_page_count
14845	.global	g_totle_gc_page_count
14846	.global	g_gc_blk_index
14847	.global	g_gc_merge_free_blk_threshold
14848	.global	g_gc_free_blk_threshold
14849	.global	g_gc_bad_block_temp_tbl
14850	.global	g_gc_bad_block_gc_index
14851	.global	g_gc_bad_block_temp_num
14852	.global	g_gc_next_blk_1
14853	.global	g_gc_next_blk
14854	.global	g_gc_cur_blk_max_valid_pages
14855	.global	g_gc_cur_blk_valid_pages
14856	.global	g_gc_page_offset
14857	.global	g_gc_blk_num
14858	.global	p_gc_blk_tbl
14859	.global	p_gc_page_info
14860	.global	g_sys_ext_data
14861	.global	g_sys_save_data
14862	.global	gp_last_act_superblock
14863	.global	g_gc_superblock
14864	.global	g_gc_temp_superblock
14865	.global	g_buffer_superblock
14866	.global	g_active_superblock
14867	.global	g_num_data_superblocks
14868	.global	g_num_free_superblocks
14869	.global	p_data_block_list_tail
14870	.global	p_data_block_list_head
14871	.global	p_free_data_block_list_head
14872	.global	p_data_block_list_table
14873	.global	g_l2p_last_update_region_id
14874	.global	p_l2p_map_buf
14875	.global	p_l2p_ram_map
14876	.global	g_totle_vendor_block
14877	.global	p_vendor_region_ppn_table
14878	.global	p_vendor_block_ver_table
14879	.global	p_vendor_block_valid_page_count
14880	.global	p_vendor_block_table
14881	.global	g_totle_map_block
14882	.global	p_map_region_ppn_table
14883	.global	p_map_block_ver_table
14884	.global	p_map_block_valid_page_count
14885	.global	p_map_block_table
14886	.global	p_valid_page_count_check_table
14887	.global	p_valid_page_count_table
14888	.global	g_totle_swl_count
14889	.global	p_swl_mul_table
14890	.global	p_erase_count_table
14891	.global	g_ect_tbl_info_size
14892	.global	gp_ect_tbl_info
14893	.global	g_gc_num_req
14894	.global	c_gc_page_buf_num
14895	.global	gp_gc_page_buf_info
14896	.global	p_gc_data_buf
14897	.global	p_gc_spare_buf
14898	.global	p_io_spare_buf
14899	.global	p_io_data_buf_1
14900	.global	p_io_data_buf_0
14901	.global	p_sys_spare_buf
14902	.global	p_vendor_data_buf
14903	.global	p_sys_data_buf_1
14904	.global	p_sys_data_buf
14905	.global	p_plane_order_table
14906	.global	req_gc_dst
14907	.global	req_gc
14908	.global	req_erase
14909	.global	req_prgm
14910	.global	req_read
14911	.global	req_sys
14912	.global	gVendorBlkInfo
14913	.global	gL2pMapInfo
14914	.global	gSysFreeQueue
14915	.global	gSysInfo
14916	.global	gBbtInfo
14917	.global	g_MaxLbn
14918	.global	g_VaildLpn
14919	.global	g_MaxLpn
14920	.global	g_MaxLbaSector
14921	.global	g_GlobalDataVersion
14922	.global	g_GlobalSysVersion
14923	.global	ftl_gc_temp_power_lost_recovery_flag
14924	.global	c_ftl_nand_max_data_blks
14925	.global	c_ftl_nand_data_op_blks_per_plane
14926	.global	c_ftl_nand_data_blks_per_plane
14927	.global	c_ftl_nand_max_sys_blks
14928	.global	c_ftl_nand_init_sys_blks_per_plane
14929	.global	c_ftl_nand_sys_blks_per_plane
14930	.global	c_ftl_vendor_part_size
14931	.global	c_ftl_nand_max_vendor_blks
14932	.global	c_ftl_nand_max_map_blks
14933	.global	c_ftl_nand_map_blks_per_plane
14934	.global	c_ftl_nand_vendor_region_num
14935	.global	c_ftl_nand_l2pmap_ram_region_num
14936	.global	c_ftl_nand_map_region_num
14937	.global	c_ftl_nand_totle_phy_blks
14938	.global	c_ftl_nand_reserved_blks
14939	.global	c_ftl_nand_byte_pre_oob
14940	.global	c_ftl_nand_byte_pre_page
14941	.global	c_ftl_nand_sec_pre_page_shift
14942	.global	c_ftl_nand_sec_pre_page
14943	.global	c_ftl_nand_page_pre_super_blk
14944	.global	c_ftl_nand_page_pre_slc_blk
14945	.global	c_ftl_nand_page_pre_blk
14946	.global	c_ftl_nand_bbm_buf_size
14947	.global	c_ftl_nand_ext_blk_pre_plane
14948	.global	c_ftl_nand_blk_pre_plane
14949	.global	c_ftl_nand_planes_num
14950	.global	c_ftl_nand_blks_per_die_shift
14951	.global	c_ftl_nand_blks_per_die
14952	.global	c_ftl_nand_planes_per_die
14953	.global	c_ftl_nand_die_num
14954	.global	c_ftl_nand_type
14955	.section	.rodata
14956	.align	3
14957	.set	.LANCHOR1,. + 0
14958	.type	__func__.30, %object
14959	.size	__func__.30, 17
14960__func__.30:
14961	.string	"INSERT_DATA_LIST"
14962	.type	__func__.31, %object
14963	.size	__func__.31, 17
14964__func__.31:
14965	.string	"INSERT_FREE_LIST"
14966	.type	__func__.29, %object
14967	.size	__func__.29, 17
14968__func__.29:
14969	.string	"List_remove_node"
14970	.type	__func__.28, %object
14971	.size	__func__.28, 22
14972__func__.28:
14973	.string	"List_update_data_list"
14974	.type	__func__.22, %object
14975	.size	__func__.22, 22
14976__func__.22:
14977	.string	"select_l2p_ram_region"
14978	.type	__func__.14, %object
14979	.size	__func__.14, 16
14980__func__.14:
14981	.string	"make_superblock"
14982	.type	__func__.8, %object
14983	.size	__func__.8, 19
14984__func__.8:
14985	.string	"get_new_active_ppa"
14986	.type	__func__.1, %object
14987	.size	__func__.1, 17
14988__func__.1:
14989	.string	"FlashEraseBlocks"
14990	.type	__func__.26, %object
14991	.size	__func__.26, 26
14992__func__.26:
14993	.string	"ftl_map_blk_alloc_new_blk"
14994	.type	__func__.37, %object
14995	.size	__func__.37, 11
14996__func__.37:
14997	.string	"FtlMemInit"
14998	.type	__func__.34, %object
14999	.size	__func__.34, 14
15000__func__.34:
15001	.string	"FtlBbt2Bitmap"
15002	.type	__func__.13, %object
15003	.size	__func__.13, 18
15004__func__.13:
15005	.string	"SupperBlkListInit"
15006	.type	__func__.3, %object
15007	.size	__func__.3, 15
15008__func__.3:
15009	.string	"FlashReadPages"
15010	.type	__func__.19, %object
15011	.size	__func__.19, 14
15012__func__.19:
15013	.string	"FtlScanSysBlk"
15014	.type	__func__.32, %object
15015	.size	__func__.32, 11
15016__func__.32:
15017	.string	"FtlLoadBbt"
15018	.type	__func__.2, %object
15019	.size	__func__.2, 15
15020__func__.2:
15021	.string	"FlashProgPages"
15022	.type	__func__.10, %object
15023	.size	__func__.10, 25
15024__func__.10:
15025	.string	"allocate_data_superblock"
15026	.type	__func__.7, %object
15027	.size	__func__.7, 16
15028__func__.7:
15029	.string	"update_vpc_list"
15030	.type	__func__.6, %object
15031	.size	__func__.6, 20
15032__func__.6:
15033	.string	"decrement_vpc_count"
15034	.type	__func__.23, %object
15035	.size	__func__.23, 16
15036__func__.23:
15037	.string	"FtlMapWritePage"
15038	.type	__func__.27, %object
15039	.size	__func__.27, 16
15040__func__.27:
15041	.string	"load_l2p_region"
15042	.type	__func__.25, %object
15043	.size	__func__.25, 15
15044__func__.25:
15045	.string	"ftl_map_blk_gc"
15046	.type	__func__.24, %object
15047	.size	__func__.24, 31
15048__func__.24:
15049	.string	"Ftl_write_map_blk_to_last_page"
15050	.type	__func__.21, %object
15051	.size	__func__.21, 9
15052__func__.21:
15053	.string	"log2phys"
15054	.type	__func__.16, %object
15055	.size	__func__.16, 16
15056__func__.16:
15057	.string	"FtlReUsePrevPpa"
15058	.type	__func__.15, %object
15059	.size	__func__.15, 22
15060__func__.15:
15061	.string	"FtlRecoverySuperblock"
15062	.type	__func__.11, %object
15063	.size	__func__.11, 14
15064__func__.11:
15065	.string	"ftl_check_vpc"
15066	.type	__func__.20, %object
15067	.size	__func__.20, 15
15068__func__.20:
15069	.string	"FtlVpcTblFlush"
15070	.type	__func__.12, %object
15071	.size	__func__.12, 21
15072__func__.12:
15073	.string	"FtlVpcCheckAndModify"
15074	.type	__func__.9, %object
15075	.size	__func__.9, 29
15076__func__.9:
15077	.string	"allocate_new_data_superblock"
15078	.type	__func__.36, %object
15079	.size	__func__.36, 13
15080__func__.36:
15081	.string	"FtlProgPages"
15082	.type	__func__.5, %object
15083	.size	__func__.5, 19
15084__func__.5:
15085	.string	"FtlGcFreeTempBlock"
15086	.type	__func__.4, %object
15087	.size	__func__.4, 23
15088__func__.4:
15089	.string	"rk_ftl_garbage_collect"
15090	.type	__func__.35, %object
15091	.size	__func__.35, 9
15092__func__.35:
15093	.string	"FtlWrite"
15094	.type	__func__.18, %object
15095	.size	__func__.18, 15
15096__func__.18:
15097	.string	"FtlLoadSysInfo"
15098	.type	__func__.17, %object
15099	.size	__func__.17, 18
15100__func__.17:
15101	.string	"FtlMapTblRecovery"
15102	.type	__func__.0, %object
15103	.size	__func__.0, 14
15104__func__.0:
15105	.string	"FtlWriteToIDB"
15106	.zero	1
15107	.type	rk_sftl_vendor_storage_fops, %object
15108	.size	rk_sftl_vendor_storage_fops, 256
15109rk_sftl_vendor_storage_fops:
15110	.zero	80
15111	.xword	rk_sftl_vendor_storage_ioctl
15112	.xword	rk_sftl_vendor_storage_ioctl
15113	.zero	160
15114	.data
15115	.align	3
15116	.set	.LANCHOR2,. + 0
15117	.type	gFtlInitStatus, %object
15118	.size	gFtlInitStatus, 4
15119gFtlInitStatus:
15120	.word	-1
15121	.type	ftl_gc_temp_block_bops_scan_page_addr, %object
15122	.size	ftl_gc_temp_block_bops_scan_page_addr, 2
15123ftl_gc_temp_block_bops_scan_page_addr:
15124	.hword	-1
15125	.zero	2
15126	.type	power_up_flag, %object
15127	.size	power_up_flag, 4
15128power_up_flag:
15129	.word	1
15130	.zero	4
15131	.type	rkflash_vender_storage_dev, %object
15132	.size	rkflash_vender_storage_dev, 80
15133rkflash_vender_storage_dev:
15134	.word	255
15135	.zero	4
15136	.xword	.LC135
15137	.xword	rk_sftl_vendor_storage_fops
15138	.zero	56
15139	.bss
15140	.align	3
15141	.set	.LANCHOR0,. + 0
15142	.type	g_nand_phy_info, %object
15143	.size	g_nand_phy_info, 24
15144g_nand_phy_info:
15145	.zero	24
15146	.type	g_active_superblock, %object
15147	.size	g_active_superblock, 48
15148g_active_superblock:
15149	.zero	48
15150	.type	p_valid_page_count_table, %object
15151	.size	p_valid_page_count_table, 8
15152p_valid_page_count_table:
15153	.zero	8
15154	.type	g_buffer_superblock, %object
15155	.size	g_buffer_superblock, 48
15156g_buffer_superblock:
15157	.zero	48
15158	.type	g_gc_temp_superblock, %object
15159	.size	g_gc_temp_superblock, 48
15160g_gc_temp_superblock:
15161	.zero	48
15162	.type	g_gc_superblock, %object
15163	.size	g_gc_superblock, 48
15164g_gc_superblock:
15165	.zero	48
15166	.type	g_gc_next_blk_1, %object
15167	.size	g_gc_next_blk_1, 2
15168g_gc_next_blk_1:
15169	.zero	2
15170	.type	g_gc_next_blk, %object
15171	.size	g_gc_next_blk, 2
15172g_gc_next_blk:
15173	.zero	2
15174	.type	g_num_free_superblocks, %object
15175	.size	g_num_free_superblocks, 2
15176g_num_free_superblocks:
15177	.zero	2
15178	.zero	2
15179	.type	c_ftl_nand_sys_blks_per_plane, %object
15180	.size	c_ftl_nand_sys_blks_per_plane, 4
15181c_ftl_nand_sys_blks_per_plane:
15182	.zero	4
15183	.type	c_ftl_nand_planes_num, %object
15184	.size	c_ftl_nand_planes_num, 2
15185c_ftl_nand_planes_num:
15186	.zero	2
15187	.zero	2
15188	.type	c_ftl_nand_max_sys_blks, %object
15189	.size	c_ftl_nand_max_sys_blks, 4
15190c_ftl_nand_max_sys_blks:
15191	.zero	4
15192	.type	c_ftl_nand_data_blks_per_plane, %object
15193	.size	c_ftl_nand_data_blks_per_plane, 2
15194c_ftl_nand_data_blks_per_plane:
15195	.zero	2
15196	.type	c_ftl_nand_blk_pre_plane, %object
15197	.size	c_ftl_nand_blk_pre_plane, 2
15198c_ftl_nand_blk_pre_plane:
15199	.zero	2
15200	.type	c_ftl_nand_max_data_blks, %object
15201	.size	c_ftl_nand_max_data_blks, 4
15202c_ftl_nand_max_data_blks:
15203	.zero	4
15204	.type	c_ftl_nand_totle_phy_blks, %object
15205	.size	c_ftl_nand_totle_phy_blks, 4
15206c_ftl_nand_totle_phy_blks:
15207	.zero	4
15208	.type	c_ftl_nand_type, %object
15209	.size	c_ftl_nand_type, 2
15210c_ftl_nand_type:
15211	.zero	2
15212	.type	c_ftl_nand_die_num, %object
15213	.size	c_ftl_nand_die_num, 2
15214c_ftl_nand_die_num:
15215	.zero	2
15216	.type	c_ftl_nand_planes_per_die, %object
15217	.size	c_ftl_nand_planes_per_die, 2
15218c_ftl_nand_planes_per_die:
15219	.zero	2
15220	.type	c_ftl_nand_sec_pre_page, %object
15221	.size	c_ftl_nand_sec_pre_page, 2
15222c_ftl_nand_sec_pre_page:
15223	.zero	2
15224	.type	p_plane_order_table, %object
15225	.size	p_plane_order_table, 32
15226p_plane_order_table:
15227	.zero	32
15228	.type	c_mlc_erase_count_value, %object
15229	.size	c_mlc_erase_count_value, 2
15230c_mlc_erase_count_value:
15231	.zero	2
15232	.type	c_ftl_nand_ext_blk_pre_plane, %object
15233	.size	c_ftl_nand_ext_blk_pre_plane, 2
15234c_ftl_nand_ext_blk_pre_plane:
15235	.zero	2
15236	.type	c_ftl_vendor_part_size, %object
15237	.size	c_ftl_vendor_part_size, 2
15238c_ftl_vendor_part_size:
15239	.zero	2
15240	.type	c_ftl_nand_blks_per_die, %object
15241	.size	c_ftl_nand_blks_per_die, 2
15242c_ftl_nand_blks_per_die:
15243	.zero	2
15244	.type	c_ftl_nand_blks_per_die_shift, %object
15245	.size	c_ftl_nand_blks_per_die_shift, 2
15246c_ftl_nand_blks_per_die_shift:
15247	.zero	2
15248	.type	c_ftl_nand_page_pre_blk, %object
15249	.size	c_ftl_nand_page_pre_blk, 2
15250c_ftl_nand_page_pre_blk:
15251	.zero	2
15252	.type	c_ftl_nand_page_pre_slc_blk, %object
15253	.size	c_ftl_nand_page_pre_slc_blk, 2
15254c_ftl_nand_page_pre_slc_blk:
15255	.zero	2
15256	.type	c_ftl_nand_page_pre_super_blk, %object
15257	.size	c_ftl_nand_page_pre_super_blk, 2
15258c_ftl_nand_page_pre_super_blk:
15259	.zero	2
15260	.type	c_ftl_nand_sec_pre_page_shift, %object
15261	.size	c_ftl_nand_sec_pre_page_shift, 2
15262c_ftl_nand_sec_pre_page_shift:
15263	.zero	2
15264	.type	c_ftl_nand_byte_pre_page, %object
15265	.size	c_ftl_nand_byte_pre_page, 2
15266c_ftl_nand_byte_pre_page:
15267	.zero	2
15268	.type	c_ftl_nand_byte_pre_oob, %object
15269	.size	c_ftl_nand_byte_pre_oob, 2
15270c_ftl_nand_byte_pre_oob:
15271	.zero	2
15272	.type	c_ftl_nand_reserved_blks, %object
15273	.size	c_ftl_nand_reserved_blks, 2
15274c_ftl_nand_reserved_blks:
15275	.zero	2
15276	.type	DeviceCapacity, %object
15277	.size	DeviceCapacity, 4
15278DeviceCapacity:
15279	.zero	4
15280	.type	c_ftl_nand_max_vendor_blks, %object
15281	.size	c_ftl_nand_max_vendor_blks, 2
15282c_ftl_nand_max_vendor_blks:
15283	.zero	2
15284	.type	c_ftl_nand_vendor_region_num, %object
15285	.size	c_ftl_nand_vendor_region_num, 2
15286c_ftl_nand_vendor_region_num:
15287	.zero	2
15288	.type	c_ftl_nand_map_blks_per_plane, %object
15289	.size	c_ftl_nand_map_blks_per_plane, 2
15290c_ftl_nand_map_blks_per_plane:
15291	.zero	2
15292	.zero	2
15293	.type	c_ftl_nand_max_map_blks, %object
15294	.size	c_ftl_nand_max_map_blks, 4
15295c_ftl_nand_max_map_blks:
15296	.zero	4
15297	.type	c_ftl_nand_init_sys_blks_per_plane, %object
15298	.size	c_ftl_nand_init_sys_blks_per_plane, 4
15299c_ftl_nand_init_sys_blks_per_plane:
15300	.zero	4
15301	.type	c_ftl_nand_map_region_num, %object
15302	.size	c_ftl_nand_map_region_num, 2
15303c_ftl_nand_map_region_num:
15304	.zero	2
15305	.type	c_ftl_nand_l2pmap_ram_region_num, %object
15306	.size	c_ftl_nand_l2pmap_ram_region_num, 2
15307c_ftl_nand_l2pmap_ram_region_num:
15308	.zero	2
15309	.type	g_MaxLbaSector, %object
15310	.size	g_MaxLbaSector, 4
15311g_MaxLbaSector:
15312	.zero	4
15313	.type	g_totle_vendor_block, %object
15314	.size	g_totle_vendor_block, 2
15315g_totle_vendor_block:
15316	.zero	2
15317	.zero	2
15318	.type	p_vendor_block_table, %object
15319	.size	p_vendor_block_table, 8
15320p_vendor_block_table:
15321	.zero	8
15322	.type	gBbtInfo, %object
15323	.size	gBbtInfo, 96
15324gBbtInfo:
15325	.zero	96
15326	.type	gSysFreeQueue, %object
15327	.size	gSysFreeQueue, 2056
15328gSysFreeQueue:
15329	.zero	2056
15330	.type	g_sys_save_data, %object
15331	.size	g_sys_save_data, 48
15332g_sys_save_data:
15333	.zero	48
15334	.type	p_data_block_list_table, %object
15335	.size	p_data_block_list_table, 8
15336p_data_block_list_table:
15337	.zero	8
15338	.type	p_data_block_list_head, %object
15339	.size	p_data_block_list_head, 8
15340p_data_block_list_head:
15341	.zero	8
15342	.type	p_data_block_list_tail, %object
15343	.size	p_data_block_list_tail, 8
15344p_data_block_list_tail:
15345	.zero	8
15346	.type	g_num_data_superblocks, %object
15347	.size	g_num_data_superblocks, 2
15348g_num_data_superblocks:
15349	.zero	2
15350	.zero	6
15351	.type	p_free_data_block_list_head, %object
15352	.size	p_free_data_block_list_head, 8
15353p_free_data_block_list_head:
15354	.zero	8
15355	.type	p_erase_count_table, %object
15356	.size	p_erase_count_table, 8
15357p_erase_count_table:
15358	.zero	8
15359	.type	p_l2p_ram_map, %object
15360	.size	p_l2p_ram_map, 8
15361p_l2p_ram_map:
15362	.zero	8
15363	.type	g_l2p_last_update_region_id, %object
15364	.size	g_l2p_last_update_region_id, 2
15365g_l2p_last_update_region_id:
15366	.zero	2
15367	.type	FtlUpdateVaildLpnCount, %object
15368	.size	FtlUpdateVaildLpnCount, 2
15369FtlUpdateVaildLpnCount:
15370	.zero	2
15371	.type	g_VaildLpn, %object
15372	.size	g_VaildLpn, 4
15373g_VaildLpn:
15374	.zero	4
15375	.type	g_MaxLpn, %object
15376	.size	g_MaxLpn, 4
15377g_MaxLpn:
15378	.zero	4
15379	.type	g_totle_read_page_count, %object
15380	.size	g_totle_read_page_count, 4
15381g_totle_read_page_count:
15382	.zero	4
15383	.type	g_totle_discard_page_count, %object
15384	.size	g_totle_discard_page_count, 4
15385g_totle_discard_page_count:
15386	.zero	4
15387	.type	g_totle_write_page_count, %object
15388	.size	g_totle_write_page_count, 4
15389g_totle_write_page_count:
15390	.zero	4
15391	.type	g_totle_cache_write_count, %object
15392	.size	g_totle_cache_write_count, 4
15393g_totle_cache_write_count:
15394	.zero	4
15395	.type	g_totle_l2p_write_count, %object
15396	.size	g_totle_l2p_write_count, 4
15397g_totle_l2p_write_count:
15398	.zero	4
15399	.type	g_totle_gc_page_count, %object
15400	.size	g_totle_gc_page_count, 4
15401g_totle_gc_page_count:
15402	.zero	4
15403	.type	g_totle_write_sector, %object
15404	.size	g_totle_write_sector, 4
15405g_totle_write_sector:
15406	.zero	4
15407	.type	g_totle_read_sector, %object
15408	.size	g_totle_read_sector, 4
15409g_totle_read_sector:
15410	.zero	4
15411	.type	g_GlobalSysVersion, %object
15412	.size	g_GlobalSysVersion, 4
15413g_GlobalSysVersion:
15414	.zero	4
15415	.type	g_GlobalDataVersion, %object
15416	.size	g_GlobalDataVersion, 4
15417g_GlobalDataVersion:
15418	.zero	4
15419	.type	g_totle_mlc_erase_count, %object
15420	.size	g_totle_mlc_erase_count, 4
15421g_totle_mlc_erase_count:
15422	.zero	4
15423	.type	g_totle_slc_erase_count, %object
15424	.size	g_totle_slc_erase_count, 4
15425g_totle_slc_erase_count:
15426	.zero	4
15427	.type	g_totle_avg_erase_count, %object
15428	.size	g_totle_avg_erase_count, 4
15429g_totle_avg_erase_count:
15430	.zero	4
15431	.type	g_totle_sys_slc_erase_count, %object
15432	.size	g_totle_sys_slc_erase_count, 4
15433g_totle_sys_slc_erase_count:
15434	.zero	4
15435	.type	g_max_erase_count, %object
15436	.size	g_max_erase_count, 4
15437g_max_erase_count:
15438	.zero	4
15439	.type	g_min_erase_count, %object
15440	.size	g_min_erase_count, 4
15441g_min_erase_count:
15442	.zero	4
15443	.type	c_ftl_nand_data_op_blks_per_plane, %object
15444	.size	c_ftl_nand_data_op_blks_per_plane, 2
15445c_ftl_nand_data_op_blks_per_plane:
15446	.zero	2
15447	.zero	2
15448	.type	gSysInfo, %object
15449	.size	gSysInfo, 16
15450gSysInfo:
15451	.zero	16
15452	.type	g_sys_ext_data, %object
15453	.size	g_sys_ext_data, 512
15454g_sys_ext_data:
15455	.zero	512
15456	.type	g_gc_free_blk_threshold, %object
15457	.size	g_gc_free_blk_threshold, 2
15458g_gc_free_blk_threshold:
15459	.zero	2
15460	.type	g_gc_merge_free_blk_threshold, %object
15461	.size	g_gc_merge_free_blk_threshold, 2
15462g_gc_merge_free_blk_threshold:
15463	.zero	2
15464	.type	g_gc_skip_write_count, %object
15465	.size	g_gc_skip_write_count, 4
15466g_gc_skip_write_count:
15467	.zero	4
15468	.type	g_gc_blk_index, %object
15469	.size	g_gc_blk_index, 2
15470g_gc_blk_index:
15471	.zero	2
15472	.zero	2
15473	.type	g_in_swl_replace, %object
15474	.size	g_in_swl_replace, 4
15475g_in_swl_replace:
15476	.zero	4
15477	.type	g_gc_num_req, %object
15478	.size	g_gc_num_req, 4
15479g_gc_num_req:
15480	.zero	4
15481	.zero	4
15482	.type	gp_gc_page_buf_info, %object
15483	.size	gp_gc_page_buf_info, 8
15484gp_gc_page_buf_info:
15485	.zero	8
15486	.type	p_gc_data_buf, %object
15487	.size	p_gc_data_buf, 8
15488p_gc_data_buf:
15489	.zero	8
15490	.type	p_gc_spare_buf, %object
15491	.size	p_gc_spare_buf, 8
15492p_gc_spare_buf:
15493	.zero	8
15494	.type	req_gc, %object
15495	.size	req_gc, 8
15496req_gc:
15497	.zero	8
15498	.type	c_gc_page_buf_num, %object
15499	.size	c_gc_page_buf_num, 4
15500c_gc_page_buf_num:
15501	.zero	4
15502	.type	g_gc_blk_num, %object
15503	.size	g_gc_blk_num, 2
15504g_gc_blk_num:
15505	.zero	2
15506	.zero	2
15507	.type	p_gc_blk_tbl, %object
15508	.size	p_gc_blk_tbl, 8
15509p_gc_blk_tbl:
15510	.zero	8
15511	.type	g_gc_page_offset, %object
15512	.size	g_gc_page_offset, 2
15513g_gc_page_offset:
15514	.zero	2
15515	.zero	6
15516	.type	p_gc_page_info, %object
15517	.size	p_gc_page_info, 8
15518p_gc_page_info:
15519	.zero	8
15520	.type	g_gc_bad_block_temp_num, %object
15521	.size	g_gc_bad_block_temp_num, 2
15522g_gc_bad_block_temp_num:
15523	.zero	2
15524	.type	g_gc_bad_block_temp_tbl, %object
15525	.size	g_gc_bad_block_temp_tbl, 34
15526g_gc_bad_block_temp_tbl:
15527	.zero	34
15528	.type	g_gc_bad_block_gc_index, %object
15529	.size	g_gc_bad_block_gc_index, 2
15530g_gc_bad_block_gc_index:
15531	.zero	2
15532	.zero	2
15533	.type	g_nand_ops, %object
15534	.size	g_nand_ops, 48
15535g_nand_ops:
15536	.zero	48
15537	.type	req_erase, %object
15538	.size	req_erase, 8
15539req_erase:
15540	.zero	8
15541	.type	g_in_gc_progress, %object
15542	.size	g_in_gc_progress, 4
15543g_in_gc_progress:
15544	.zero	4
15545	.type	g_gc_head_data_block, %object
15546	.size	g_gc_head_data_block, 4
15547g_gc_head_data_block:
15548	.zero	4
15549	.type	g_gc_head_data_block_count, %object
15550	.size	g_gc_head_data_block_count, 4
15551g_gc_head_data_block_count:
15552	.zero	4
15553	.type	g_cur_erase_blk, %object
15554	.size	g_cur_erase_blk, 4
15555g_cur_erase_blk:
15556	.zero	4
15557	.type	req_read, %object
15558	.size	req_read, 8
15559req_read:
15560	.zero	8
15561	.type	req_gc_dst, %object
15562	.size	req_gc_dst, 8
15563req_gc_dst:
15564	.zero	8
15565	.type	req_prgm, %object
15566	.size	req_prgm, 8
15567req_prgm:
15568	.zero	8
15569	.type	p_sys_data_buf, %object
15570	.size	p_sys_data_buf, 8
15571p_sys_data_buf:
15572	.zero	8
15573	.type	p_sys_data_buf_1, %object
15574	.size	p_sys_data_buf_1, 8
15575p_sys_data_buf_1:
15576	.zero	8
15577	.type	p_vendor_data_buf, %object
15578	.size	p_vendor_data_buf, 8
15579p_vendor_data_buf:
15580	.zero	8
15581	.type	p_io_data_buf_0, %object
15582	.size	p_io_data_buf_0, 8
15583p_io_data_buf_0:
15584	.zero	8
15585	.type	p_io_data_buf_1, %object
15586	.size	p_io_data_buf_1, 8
15587p_io_data_buf_1:
15588	.zero	8
15589	.type	sftl_nand_check_buf, %object
15590	.size	sftl_nand_check_buf, 8
15591sftl_nand_check_buf:
15592	.zero	8
15593	.type	sftl_temp_buf, %object
15594	.size	sftl_temp_buf, 8
15595sftl_temp_buf:
15596	.zero	8
15597	.type	sftl_nand_check_spare_buf, %object
15598	.size	sftl_nand_check_spare_buf, 8
15599sftl_nand_check_spare_buf:
15600	.zero	8
15601	.type	p_sys_spare_buf, %object
15602	.size	p_sys_spare_buf, 8
15603p_sys_spare_buf:
15604	.zero	8
15605	.type	p_io_spare_buf, %object
15606	.size	p_io_spare_buf, 8
15607p_io_spare_buf:
15608	.zero	8
15609	.type	g_ect_tbl_info_size, %object
15610	.size	g_ect_tbl_info_size, 2
15611g_ect_tbl_info_size:
15612	.zero	2
15613	.zero	6
15614	.type	p_swl_mul_table, %object
15615	.size	p_swl_mul_table, 8
15616p_swl_mul_table:
15617	.zero	8
15618	.type	gp_ect_tbl_info, %object
15619	.size	gp_ect_tbl_info, 8
15620gp_ect_tbl_info:
15621	.zero	8
15622	.type	p_valid_page_count_check_table, %object
15623	.size	p_valid_page_count_check_table, 8
15624p_valid_page_count_check_table:
15625	.zero	8
15626	.type	p_map_block_table, %object
15627	.size	p_map_block_table, 8
15628p_map_block_table:
15629	.zero	8
15630	.type	p_map_block_valid_page_count, %object
15631	.size	p_map_block_valid_page_count, 8
15632p_map_block_valid_page_count:
15633	.zero	8
15634	.type	p_vendor_block_valid_page_count, %object
15635	.size	p_vendor_block_valid_page_count, 8
15636p_vendor_block_valid_page_count:
15637	.zero	8
15638	.type	p_vendor_block_ver_table, %object
15639	.size	p_vendor_block_ver_table, 8
15640p_vendor_block_ver_table:
15641	.zero	8
15642	.type	p_vendor_region_ppn_table, %object
15643	.size	p_vendor_region_ppn_table, 8
15644p_vendor_region_ppn_table:
15645	.zero	8
15646	.type	p_map_region_ppn_table, %object
15647	.size	p_map_region_ppn_table, 8
15648p_map_region_ppn_table:
15649	.zero	8
15650	.type	p_map_block_ver_table, %object
15651	.size	p_map_block_ver_table, 8
15652p_map_block_ver_table:
15653	.zero	8
15654	.type	p_l2p_map_buf, %object
15655	.size	p_l2p_map_buf, 8
15656p_l2p_map_buf:
15657	.zero	8
15658	.type	c_ftl_nand_bbm_buf_size, %object
15659	.size	c_ftl_nand_bbm_buf_size, 2
15660c_ftl_nand_bbm_buf_size:
15661	.zero	2
15662	.zero	6
15663	.type	gL2pMapInfo, %object
15664	.size	gL2pMapInfo, 64
15665gL2pMapInfo:
15666	.zero	64
15667	.type	g_totle_map_block, %object
15668	.size	g_totle_map_block, 2
15669g_totle_map_block:
15670	.zero	2
15671	.type	g_tmp_data_superblock_id, %object
15672	.size	g_tmp_data_superblock_id, 2
15673g_tmp_data_superblock_id:
15674	.zero	2
15675	.type	g_totle_swl_count, %object
15676	.size	g_totle_swl_count, 4
15677g_totle_swl_count:
15678	.zero	4
15679	.type	ftl_gc_temp_power_lost_recovery_flag, %object
15680	.size	ftl_gc_temp_power_lost_recovery_flag, 4
15681ftl_gc_temp_power_lost_recovery_flag:
15682	.zero	4
15683	.type	g_recovery_page_min_ver, %object
15684	.size	g_recovery_page_min_ver, 4
15685g_recovery_page_min_ver:
15686	.zero	4
15687	.type	req_sys, %object
15688	.size	req_sys, 32
15689req_sys:
15690	.zero	32
15691	.type	g_power_lost_recovery_flag, %object
15692	.size	g_power_lost_recovery_flag, 2
15693g_power_lost_recovery_flag:
15694	.zero	2
15695	.zero	2
15696	.type	g_recovery_page_num, %object
15697	.size	g_recovery_page_num, 4
15698g_recovery_page_num:
15699	.zero	4
15700	.type	g_recovery_ppa_tbl, %object
15701	.size	g_recovery_ppa_tbl, 128
15702g_recovery_ppa_tbl:
15703	.zero	128
15704	.type	gVendorBlkInfo, %object
15705	.size	gVendorBlkInfo, 64
15706gVendorBlkInfo:
15707	.zero	64
15708	.type	g_ect_tbl_power_up_flush, %object
15709	.size	g_ect_tbl_power_up_flush, 2
15710g_ect_tbl_power_up_flush:
15711	.zero	2
15712	.zero	2
15713	.type	gc_discard_updated, %object
15714	.size	gc_discard_updated, 4
15715gc_discard_updated:
15716	.zero	4
15717	.type	gc_ink_free_return_value, %object
15718	.size	gc_ink_free_return_value, 2
15719gc_ink_free_return_value:
15720	.zero	2
15721	.type	g_gc_cur_blk_valid_pages, %object
15722	.size	g_gc_cur_blk_valid_pages, 2
15723g_gc_cur_blk_valid_pages:
15724	.zero	2
15725	.type	g_gc_cur_blk_max_valid_pages, %object
15726	.size	g_gc_cur_blk_max_valid_pages, 2
15727g_gc_cur_blk_max_valid_pages:
15728	.zero	2
15729	.zero	2
15730	.type	g_ftl_nand_free_count, %object
15731	.size	g_ftl_nand_free_count, 4
15732g_ftl_nand_free_count:
15733	.zero	4
15734	.type	g_MaxLbn, %object
15735	.size	g_MaxLbn, 4
15736g_MaxLbn:
15737	.zero	4
15738	.type	idb_need_write_back, %object
15739	.size	idb_need_write_back, 4
15740idb_need_write_back:
15741	.zero	4
15742	.zero	4
15743	.type	idb_buf, %object
15744	.size	idb_buf, 8
15745idb_buf:
15746	.zero	8
15747	.type	gp_flash_check_buf, %object
15748	.size	gp_flash_check_buf, 8
15749gp_flash_check_buf:
15750	.zero	8
15751	.type	_flash_read, %object
15752	.size	_flash_read, 8
15753_flash_read:
15754	.zero	8
15755	.type	_flash_write, %object
15756	.size	_flash_write, 8
15757_flash_write:
15758	.zero	8
15759	.type	g_vendor, %object
15760	.size	g_vendor, 8
15761g_vendor:
15762	.zero	8
15763	.type	check_vpc_table, %object
15764	.size	check_vpc_table, 16384
15765check_vpc_table:
15766	.zero	16384
15767	.type	gp_last_act_superblock, %object
15768	.size	gp_last_act_superblock, 8
15769gp_last_act_superblock:
15770	.zero	8
15771	.ident	"GCC: (GNU Toolchain for the A-profile Architecture 10.2-2020.11 (arm-10.16)) 10.2.1 20201103"
15772	.section	.note.GNU-stack,"",@progbits
15773	.section	.note.gnu.property,"a"
15774	.align	3
15775	.word	4
15776	.word	16
15777	.word	5
15778	.string	"GNU"
15779	.word	3221225472
15780	.word	4
15781	.word	3
15782	.align	3
15783