Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
/*
 * Copyright (c) 2016-2017, Fuzhou Rockchip Electronics Co., Ltd
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * date: 2021-07-16
 * function: rk ftl v6 for rockchip soc base on arm v8 to support 3D/2D
 *	     TLC and MLC.
 */
	.cpu generic+fp+simd
	.file	"rk_zftl_arm64.S"
	.text
	.align	2
	.type	flash_mem_cmp8, %function
flash_mem_cmp8:
	mov	x3, 0
.L2:
	mov	w4, w3
	cmp	w3, w2
	bcc	.L4
	mov	w0, 0
	ret
.L4:
	ldrb	w5, [x0, x3]
	add	x3, x3, 1
	add	x6, x1, x3
	ldrb	w6, [x6, -1]
	cmp	w6, w5
	beq	.L2
	add	w0, w4, 1
	ret
	.size	flash_mem_cmp8, .-flash_mem_cmp8
	.align	2
	.type	slc_phy_page_address_calc, %function
slc_phy_page_address_calc:
	adrp	x1, .LANCHOR0
	add	x2, x1, :lo12:.LANCHOR0
	ldrb	w3, [x1, #:lo12:.LANCHOR0]
	cbz	w3, .L7
	ldrb	w2, [x2, 1]
	cbz	w2, .L8
.L7:
	add	x1, x1, :lo12:.LANCHOR0
	ldrh	w3, [x1, 2]
	udiv	w2, w0, w3
	mul	w2, w2, w3
	ldrb	w3, [x1, 1]
	sub	w0, w0, w2
	cbz	w3, .L9
	add	w0, w2, w0, lsl 1
	ret
.L9:
	add	x1, x1, 4
	ldrh	w0, [x1, w0, uxtw 1]
	add	w0, w0, w2
.L8:
	ret
	.size	slc_phy_page_address_calc, .-slc_phy_page_address_calc
	.align	2
	.global	zftl_nandc_get_irq_status
	.type	zftl_nandc_get_irq_status, %function
zftl_nandc_get_irq_status:
	adrp	x1, .LANCHOR0+1028
	ldrb	w1, [x1, #:lo12:.LANCHOR0+1028]
	cmp	w1, 9
	bne	.L17
	ldr	w0, [x0, 296]
	ret
.L17:
	ldr	w0, [x0, 372]
	ret
	.size	zftl_nandc_get_irq_status, .-zftl_nandc_get_irq_status
	.section	.text.unlikely,"ax",@progbits
	.align	2
	.type	isxdigit, %function
isxdigit:
	and	w1, w0, -33
	sub	w1, w1, #65
	cmp	w1, 25
	bls	.L21
	sub	w0, w0, #48
	cmp	w0, 9
	cset	w0, ls
	ret
.L21:
	mov	w0, 1
	ret
	.size	isxdigit, .-isxdigit
	.text
	.align	2
	.global	zftl_get_density
	.type	zftl_get_density, %function
zftl_get_density:
	cbnz	w0, .L23
	adrp	x0, .LANCHOR0+1032
	ldr	w0, [x0, #:lo12:.LANCHOR0+1032]
	ret
.L23:
	cmp	w0, 4
	cset	w0, cc
	lsl	w0, w0, 13
	ret
	.size	zftl_get_density, .-zftl_get_density
	.align	2
	.type	_list_remove_node, %function
_list_remove_node:
	stp	x29, x30, [sp, -64]!
	and	w1, w1, 65535
	mov	w4, 6
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x3, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	umull	x21, w1, w4
	mov	w1, 65535
	ldr	x23, [x3, 1040]
	add	x20, x23, x21
	ldrh	w4, [x23, x21]
	ldrh	w3, [x20, 2]
	cmp	w4, w1
	ldr	x1, [x0]
	bne	.L27
	cmp	w3, w4
	bne	.L27
	cmp	x20, x1
	bne	.L26
.L27:
	mov	x22, x0
	mov	x24, x2
	mov	w0, 65535
	cmp	w3, w0
	bne	.L29
	cmp	x20, x1
	beq	.L29
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	mov	w2, 202
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L29:
	ldr	x0, [x22]
	ldrh	w3, [x23, x21]
	cmp	x20, x0
	mov	w0, 65535
	bne	.L30
	cmp	w3, w0
	bne	.L31
	str	xzr, [x22]
.L32:
	mov	w0, -1
	strh	w0, [x23, x21]
	strh	w0, [x20, 2]
	ldrh	w0, [x24]
	sub	w0, w0, #1
	strh	w0, [x24]
.L26:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L31:
	add	x19, x19, :lo12:.LANCHOR0
	mov	w1, 6
	ldr	x0, [x19, 1040]
	umaddl	x3, w3, w1, x0
	mov	w0, -1
	str	x3, [x22]
	strh	w0, [x3, 2]
	b	.L32
.L30:
	cmp	w3, w0
	ldrh	w0, [x20, 2]
	bne	.L33
	cmp	w0, w3
	beq	.L32
	add	x19, x19, :lo12:.LANCHOR0
	mov	w1, 6
	mov	w2, -1
	umull	x0, w0, w1
	ldr	x1, [x19, 1040]
.L35:
	strh	w2, [x1, x0]
	b	.L32
.L33:
	add	x19, x19, :lo12:.LANCHOR0
	mov	w1, 6
	ldr	x2, [x19, 1040]
	umaddl	x3, w3, w1, x2
	strh	w0, [x3, 2]
	ldrh	w0, [x20, 2]
	ldrh	w2, [x23, x21]
	umull	x0, w0, w1
	ldr	x1, [x19, 1040]
	b	.L35
	.size	_list_remove_node, .-_list_remove_node
	.align	2
	.type	hynix_set_rr_para, %function
hynix_set_rr_para:
	stp	x29, x30, [sp, -64]!
	adrp	x3, .LANCHOR0
	add	x3, x3, :lo12:.LANCHOR0
	and	w1, w1, 255
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w0, w0, 255
	str	x23, [sp, 48]
	stp	x19, x20, [sp, 16]
	ldr	x2, [x3, 1048]
	ldr	x19, [x3, 1056]
	add	x23, x2, 128
	add	x21, x2, 112
	ldrb	w22, [x2, 113]
	ldrb	w2, [x2, 112]
	cmp	w2, 8
	mov	x2, 32
	umaddl	x1, w1, w22, x2
	beq	.L37
	mov	w2, 160
	umaddl	x1, w2, w0, x1
.L37:
	ubfiz	x0, x0, 8, 8
	add	x21, x21, x1
	add	x19, x19, x0
	mov	x20, 0
	mov	w0, 54
	str	w0, [x19, 2056]
.L39:
	cmp	w22, w20, uxtb
	bhi	.L40
	mov	w0, 22
	str	w0, [x19, 2056]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldr	x23, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L40:
	ldrb	w0, [x23, x20]
	str	w0, [x19, 2052]
	mov	x0, 600
	bl	__const_udelay
	ldrsb	w0, [x21, x20]
	add	x20, x20, 1
	str	w0, [x19, 2048]
	b	.L39
	.size	hynix_set_rr_para, .-hynix_set_rr_para
	.align	2
	.type	zftl_debug_proc_open, %function
zftl_debug_proc_open:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	mov	x19, x1
	bl	PDE_DATA
	mov	x2, x0
	adrp	x1, zftl_debug_proc_show
	mov	x0, x19
	add	x1, x1, :lo12:zftl_debug_proc_show
	bl	single_open
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	zftl_debug_proc_open, .-zftl_debug_proc_open
	.align	2
	.type	zftl_debug_proc_show, %function
zftl_debug_proc_show:
	stp	x29, x30, [sp, -32]!
	adrp	x2, .LC1
	adrp	x1, .LC2
	add	x2, x2, :lo12:.LC1
	add	x29, sp, 0
	str	x19, [sp, 16]
	add	x1, x1, :lo12:.LC2
	mov	x19, x0
	bl	seq_printf
	adrp	x0, .LANCHOR2
	adrp	x1, .LC3
	add	x1, x1, :lo12:.LC3
	ldr	w2, [x0, #:lo12:.LANCHOR2]
	mov	x0, x19
	bl	seq_printf
	ldr	x19, [sp, 16]
	mov	w0, 0
	ldp	x29, x30, [sp], 32
	ret
	.size	zftl_debug_proc_show, .-zftl_debug_proc_show
	.align	2
	.global	zftl_flash_suspend
	.type	zftl_flash_suspend, %function
zftl_flash_suspend:
	adrp	x0, .LANCHOR0
	add	x0, x0, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1028]
	cmp	w1, 9
	ldr	x1, [x0, 1056]
	ldr	w2, [x1]
	str	w2, [x0, 1064]
	ldr	w2, [x1, 4]
	str	w2, [x0, 1068]
	bne	.L47
	ldr	w2, [x1, 16]
	str	w2, [x0, 1072]
	ldr	w2, [x1, 32]
	str	w2, [x0, 1076]
	ldr	w2, [x1, 80]
	str	w2, [x0, 1080]
	ldr	w2, [x1, 84]
	str	w2, [x0, 1084]
	ldr	w2, [x1, 520]
	ldr	w1, [x1, 8]
	str	w2, [x0, 1088]
.L49:
	str	w1, [x0, 1092]
	ret
.L47:
	ldr	w2, [x1, 8]
	str	w2, [x0, 1072]
	ldr	w2, [x1, 12]
	str	w2, [x0, 1076]
	ldr	w2, [x1, 304]
	str	w2, [x0, 1080]
	ldr	w2, [x1, 308]
	str	w2, [x0, 1084]
	ldr	w2, [x1, 336]
	str	w2, [x0, 1088]
	ldr	w1, [x1, 344]
	b	.L49
	.size	zftl_flash_suspend, .-zftl_flash_suspend
	.align	2
	.type	nandc_irq_disable, %function
nandc_irq_disable:
	adrp	x2, .LANCHOR0+1028
	ldrb	w2, [x2, #:lo12:.LANCHOR0+1028]
	cmp	w2, 9
	mov	x2, 1
	bne	.L51
	ldr	w3, [x0, 292]
	lsl	x1, x2, x1
	orr	w2, w3, w1
	str	w2, [x0, 292]
	ldr	w2, [x0, 288]
	bic	w1, w2, w1
	str	w1, [x0, 288]
	ret
.L51:
	ldr	w3, [x0, 368]
	lsl	x1, x2, x1
	orr	w2, w3, w1
	str	w2, [x0, 368]
	ldr	w2, [x0, 364]
	bic	w1, w2, w1
	str	w1, [x0, 364]
	ret
	.size	nandc_irq_disable, .-nandc_irq_disable
	.align	2
	.type	_insert_free_list, %function
_insert_free_list:
	adrp	x9, .LANCHOR0
	add	x3, x9, :lo12:.LANCHOR0
	and	w1, w1, 65535
	ldrh	w4, [x3, 1096]
	cmp	w4, w1
	bls	.L53
	ldrh	w4, [x2]
	mov	w6, 6
	add	w4, w4, 1
	strh	w4, [x2]
	umull	x10, w1, w6
	mov	w2, -1
	ldr	x11, [x3, 1040]
	add	x5, x11, x10
	strh	w2, [x5, 2]
	strh	w2, [x11, x10]
	ldr	x2, [x0]
	cbnz	x2, .L55
.L60:
	str	x5, [x0]
	ret
.L55:
	ldr	x8, [x3, 1104]
	ubfiz	x7, x1, 2, 16
	ldrh	w13, [x3, 1112]
	mov	w15, 65535
	ldr	x14, [x3, 1040]
	ldr	w4, [x8, x7]
	sub	x3, x2, x14
	ldrh	w7, [x8, x7]
	asr	x3, x3, 1
	and	w7, w7, 2047
	ubfx	x4, x4, 11, 8
	madd	w4, w13, w4, w7
	mov	x7, -6148914691236517206
	movk	x7, 0xaaab, lsl 0
	and	w4, w4, 65535
	mul	x3, x3, x7
	mov	w7, w6
	and	w3, w3, 65535
.L58:
	ubfiz	x12, x3, 2, 16
	ldr	w6, [x8, x12]
	ldrh	w12, [x8, x12]
	ubfx	x6, x6, 11, 8
	and	w12, w12, 2047
	madd	w6, w13, w6, w12
	cmp	w4, w6, uxth
	bls	.L56
	ldrh	w6, [x2]
	cmp	w6, w15
	bne	.L57
	strh	w3, [x5, 2]
	strh	w1, [x2]
	ret
.L57:
	umaddl	x2, w6, w7, x14
	mov	w3, w6
	b	.L58
.L56:
	ldrh	w4, [x2, 2]
	strh	w4, [x5, 2]
	strh	w3, [x11, x10]
	ldr	x3, [x0]
	cmp	x2, x3
	bne	.L59
	strh	w1, [x2, 2]
	b	.L60
.L59:
	ldrh	w0, [x2, 2]
	add	x3, x9, :lo12:.LANCHOR0
	mov	w4, 6
	ldr	x3, [x3, 1040]
	umull	x0, w0, w4
	strh	w1, [x3, x0]
	strh	w1, [x2, 2]
.L53:
	ret
	.size	_insert_free_list, .-_insert_free_list
	.align	2
	.type	_insert_data_list, %function
_insert_data_list:
	adrp	x9, .LANCHOR0
	add	x5, x9, :lo12:.LANCHOR0
	and	w1, w1, 65535
	ldrh	w3, [x5, 1096]
	cmp	w3, w1
	bls	.L83
	ldrh	w3, [x2]
	mov	w11, 6
	add	w3, w3, 1
	strh	w3, [x2]
	umull	x11, w1, w11
	mov	w2, -1
	ldr	x13, [x5, 1040]
	add	x10, x13, x11
	strh	w2, [x10, 2]
	strh	w2, [x13, x11]
	ldr	x2, [x0]
	cbnz	x2, .L64
	str	x10, [x0]
	ret
.L64:
	stp	x29, x30, [sp, -32]!
	uxtw	x4, w1
	add	x29, sp, 0
	str	x19, [sp, 16]
	ldr	x14, [x5, 1120]
	ldrh	w6, [x10, 4]
	ldr	x12, [x5, 1104]
	ldrh	w15, [x5, 1112]
	ldrh	w8, [x14, x4, lsl 1]
	lsl	x4, x4, 2
	ldr	w3, [x12, x4]
	mul	w8, w8, w6
	ldrh	w4, [x12, x4]
	ubfx	x3, x3, 11, 8
	and	w4, w4, 2047
	cbz	w8, .L65
	madd	w3, w15, w3, w4
	add	w8, w8, w3, uxth
.L65:
	add	x4, x9, :lo12:.LANCHOR0
	mov	x5, -6148914691236517206
	movk	x5, 0xaaab, lsl 0
	cmp	w6, 0
	csinv	w8, w8, wzr, ne
	mov	w19, 65535
	ldr	x16, [x4, 1040]
	mov	w18, 6
	ldrh	w30, [x4, 1096]
	sub	x3, x2, x16
	asr	x3, x3, 1
	mul	x3, x3, x5
	mov	w5, 0
	and	w3, w3, 65535
.L71:
	add	w5, w5, 1
	and	w5, w5, 65535
	cmp	w5, w30
	bhi	.L61
	cmp	w1, w3
	beq	.L61
	uxtw	x7, w3
	ldrh	w17, [x2, 4]
	ldrh	w4, [x14, x7, lsl 1]
	lsl	x7, x7, 2
	ldr	w6, [x12, x7]
	mul	w4, w4, w17
	ldrh	w7, [x12, x7]
	ubfx	x6, x6, 11, 8
	and	w7, w7, 2047
	cbz	w4, .L68
	madd	w6, w15, w6, w7
	add	w4, w4, w6, uxth
.L68:
	cbz	w17, .L69
	cmp	w8, w4
	bls	.L69
	ldrh	w4, [x2]
	cmp	w4, w19
	bne	.L70
	strh	w3, [x10, 2]
	strh	w1, [x2]
.L61:
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L70:
	umaddl	x2, w4, w18, x16
	mov	w3, w4
	b	.L71
.L69:
	ldrh	w4, [x2, 2]
	strh	w4, [x10, 2]
	strh	w3, [x13, x11]
	ldr	x3, [x0]
	cmp	x2, x3
	bne	.L72
	strh	w1, [x2, 2]
	str	x10, [x0]
	b	.L61
.L72:
	ldrh	w0, [x2, 2]
	add	x9, x9, :lo12:.LANCHOR0
	mov	w3, 6
	umull	x0, w0, w3
	ldr	x3, [x9, 1040]
	strh	w1, [x3, x0]
	strh	w1, [x2, 2]
	b	.L61
.L83:
	ret
	.size	_insert_data_list, .-_insert_data_list
	.align	2
	.type	_list_update_data_list, %function
_list_update_data_list:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w1, 65535
	adrp	x1, .LANCHOR0
	add	x4, x1, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	str	x25, [sp, 64]
	ldr	x3, [x4, 1128]
	ldrh	w5, [x3, 16]
	cmp	w5, w19
	beq	.L85
	mov	x20, x1
	ldrh	w1, [x3, 48]
	cmp	w1, w19
	beq	.L85
	ldrh	w1, [x3, 80]
	cmp	w1, w19
	beq	.L85
	mov	w23, 6
	ldr	x25, [x4, 1040]
	ldr	x1, [x0]
	umull	x23, w19, w23
	add	x24, x25, x23
	cmp	x24, x1
	beq	.L85
	mov	x21, x0
	ldrh	w0, [x24, 2]
	mov	w1, 65535
	mov	x22, x2
	cmp	w0, w1
	bne	.L89
	ldrh	w1, [x25, x23]
	cmp	w1, w0
	bne	.L89
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 24
	mov	w2, 273
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L89:
	ldrh	w3, [x24, 2]
	mov	w0, 65535
	cmp	w3, w0
	bne	.L90
	ldrh	w0, [x25, x23]
	cmp	w0, w3
	beq	.L85
.L90:
	add	x1, x20, :lo12:.LANCHOR0
	ubfiz	x2, x19, 1, 16
	ldrh	w4, [x24, 4]
	mov	x6, -6148914691236517206
	movk	x6, 0xaaab, lsl 0
	mov	w5, -1
	ldr	x0, [x1, 1120]
	cmp	w4, 0
	ldr	x1, [x1, 1040]
	ldrh	w2, [x0, x2]
	mul	w2, w2, w4
	mov	w4, 6
	umull	x3, w3, w4
	csel	w2, w2, w5, ne
	asr	x4, x3, 1
	add	x3, x1, x3
	mul	x4, x4, x6
	ldrh	w1, [x3, 4]
	cmp	w1, 0
	ldrh	w0, [x0, x4, lsl 1]
	mul	w0, w0, w1
	csel	w0, w0, w5, ne
	cmp	w2, w0
	bcs	.L85
	mov	x2, x22
	mov	w1, w19
	mov	x0, x21
	bl	_list_remove_node
	mov	x2, x22
	mov	w1, w19
	mov	x0, x21
	bl	_insert_data_list
.L85:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldr	x25, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
	.size	_list_update_data_list, .-_list_update_data_list
	.section	.text.unlikely
	.align	2
	.type	rk_simple_strtoull.constprop.33, %function
rk_simple_strtoull.constprop.33:
	stp	x29, x30, [sp, -16]!
	mov	x3, x0
	mov	x6, x1
	add	x29, sp, 0
	ldrb	w0, [x0]
	cmp	w0, 48
	bne	.L107
	ldrb	w0, [x3, 1]
	add	x2, x3, 1
	orr	w0, w0, 32
	and	w0, w0, 255
	cmp	w0, 120
	bne	.L109
	ldrb	w0, [x3, 2]
	bl	isxdigit
	cbz	w0, .L109
	add	x2, x3, 2
	mov	w4, 16
.L97:
	mov	w5, 0
.L98:
	ldrb	w3, [x2]
	mov	w0, w3
	bl	isxdigit
	cbnz	w0, .L99
.L105:
	cbnz	x6, .L100
.L96:
	mov	w0, w5
	ldp	x29, x30, [sp], 16
	ret
.L107:
	mov	x2, x3
	mov	w4, 10
	b	.L97
.L109:
	mov	w4, 8
	b	.L97
.L99:
	sub	w0, w3, #48
	cmp	w0, 9
	bhi	.L110
.L106:
	cmp	w0, w4
	bcs	.L105
	madd	w5, w5, w4, w0
	add	x2, x2, 1
	b	.L98
.L100:
	str	x2, [x6]
	b	.L96
.L110:
	orr	w0, w3, 32
	sub	w0, w0, #87
	b	.L106
	.size	rk_simple_strtoull.constprop.33, .-rk_simple_strtoull.constprop.33
	.text
	.align	2
	.type	nandc_de_cs.constprop.35, %function
nandc_de_cs.constprop.35:
	adrp	x0, .LANCHOR0+1056
	ldr	x1, [x0, #:lo12:.LANCHOR0+1056]
	ldr	w0, [x1]
	and	w0, w0, -256
	and	w0, w0, -131073
	str	w0, [x1]
	ret
	.size	nandc_de_cs.constprop.35, .-nandc_de_cs.constprop.35
	.align	2
	.global	flash_read_status
	.type	flash_read_status, %function
flash_read_status:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	mov	x19, x0
	mov	w0, 112
	str	w0, [x19, 8]
	mov	x0, 600
	bl	__const_udelay
	ldr	w0, [x19]
	ldr	x19, [sp, 16]
	and	w0, w0, 255
	ldp	x29, x30, [sp], 32
	ret
	.size	flash_read_status, .-flash_read_status
	.align	2
	.global	toshiba_set_rr_para
	.type	toshiba_set_rr_para, %function
toshiba_set_rr_para:
	stp	x29, x30, [sp, -80]!
	and	w1, w1, 255
	add	w2, w1, 1
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	x21, x0
	mov	w0, 5
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	adrp	x22, .LANCHOR0
	umull	x2, w2, w0
	adrp	x0, .LANCHOR1
	add	x0, x0, :lo12:.LANCHOR1
	stp	x19, x20, [sp, 16]
	add	x25, x0, 48
	add	x24, x0, 144
	add	x25, x25, x2
	add	x24, x24, x2
	add	x22, x22, :lo12:.LANCHOR0
	mov	x19, x0
	add	x23, x0, w1, sxtw
	mov	x20, 0
	mov	w26, 85
.L116:
	ldrb	w0, [x22, 1137]
	cmp	w0, w20
	bhi	.L120
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L120:
	add	x0, x19, 144
	str	w26, [x21, 8]
	ldrsb	w0, [x20, x0]
	str	w0, [x21, 4]
	mov	x0, 1000
	bl	__const_udelay
	ldrb	w0, [x22, 1136]
	cmp	w0, 34
	bne	.L117
	ldrsb	w0, [x24, x20]
.L122:
	add	x20, x20, 1
	str	w0, [x21]
	b	.L116
.L117:
	cmp	w0, 35
	bne	.L119
	ldrsb	w0, [x25, x20]
	b	.L122
.L119:
	ldrsb	w0, [x23, 192]
	b	.L122
	.size	toshiba_set_rr_para, .-toshiba_set_rr_para
	.align	2
	.global	hynix_reconfig_rr_para
	.type	hynix_reconfig_rr_para, %function
hynix_reconfig_rr_para:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	ldrb	w1, [x19, 1136]
	sub	w1, w1, #1
	and	w1, w1, 255
	cmp	w1, 7
	bhi	.L123
	and	w0, w0, 255
	ldr	x1, [x19, 1048]
	sxtw	x20, w0
	add	x1, x1, x20
	ldrb	w1, [x1, 120]
	cbz	w1, .L123
	mov	w1, 0
	bl	hynix_set_rr_para
	ldr	x0, [x19, 1048]
	add	x0, x0, x20
	strb	wzr, [x0, 120]
.L123:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	hynix_reconfig_rr_para, .-hynix_reconfig_rr_para
	.align	2
	.global	nand_flash_print_info
	.type	nand_flash_print_info, %function
nand_flash_print_info:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	adrp	x19, .LANCHOR2
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L130
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	adrp	x0, .LC4
	add	x1, x1, 200
	add	x0, x0, :lo12:.LC4
	bl	printk
.L130:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L131
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w6, [x0, 6]
	ldrb	w5, [x0, 5]
	ldrb	w4, [x0, 4]
	ldrb	w3, [x0, 3]
	ldrb	w2, [x0, 2]
	ldrb	w1, [x0, 1]
	adrp	x0, .LC5
	add	x0, x0, :lo12:.LC5
	bl	printk
.L131:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L132
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x0, 8]
	adrp	x0, .LC6
	add	x0, x0, :lo12:.LC6
	bl	printk
.L132:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L133
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x0, 9]
	adrp	x0, .LC7
	add	x0, x0, :lo12:.LC7
	bl	printk
.L133:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L134
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrh	w1, [x0, 10]
	adrp	x0, .LC8
	add	x0, x0, :lo12:.LC8
	bl	printk
.L134:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L135
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x0, 12]
	adrp	x0, .LC9
	add	x0, x0, :lo12:.LC9
	bl	printk
.L135:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L136
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x0, 13]
	adrp	x0, .LC10
	add	x0, x0, :lo12:.LC10
	bl	printk
.L136:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L137
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrh	w1, [x0, 14]
	adrp	x0, .LC11
	add	x0, x0, :lo12:.LC11
	bl	printk
.L137:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L138
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x0, 23]
	adrp	x0, .LC12
	add	x0, x0, :lo12:.LC12
	bl	printk
.L138:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L139
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x0, 18]
	adrp	x0, .LC13
	add	x0, x0, :lo12:.LC13
	bl	printk
.L139:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L140
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x0, 19]
	adrp	x0, .LC14
	add	x0, x0, :lo12:.LC14
	bl	printk
.L140:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L141
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x0, 20]
	adrp	x0, .LC15
	add	x0, x0, :lo12:.LC15
	bl	printk
.L141:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L142
	adrp	x0, .LANCHOR0+1152
	ldrb	w1, [x0, #:lo12:.LANCHOR0+1152]
	adrp	x0, .LC16
	add	x0, x0, :lo12:.LC16
	bl	printk
.L142:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L143
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x0, 22]
	adrp	x0, .LC17
	add	x0, x0, :lo12:.LC17
	bl	printk
.L143:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L144
	adrp	x0, .LANCHOR0+1153
	ldrb	w1, [x0, #:lo12:.LANCHOR0+1153]
	adrp	x0, .LC18
	add	x0, x0, :lo12:.LC18
	bl	printk
.L144:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L145
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x0, 16]
	adrp	x0, .LC19
	add	x0, x0, :lo12:.LC19
	and	w1, w1, 1
	bl	printk
.L145:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L146
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC20
	add	x0, x0, :lo12:.LC20
	ubfx	x1, x1, 1, 1
	bl	printk
.L146:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L147
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC21
	add	x0, x0, :lo12:.LC21
	ubfx	x1, x1, 2, 1
	bl	printk
.L147:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L148
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC22
	add	x0, x0, :lo12:.LC22
	ubfx	x1, x1, 3, 1
	bl	printk
.L148:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L149
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC23
	add	x0, x0, :lo12:.LC23
	ubfx	x1, x1, 4, 1
	bl	printk
.L149:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L150
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC24
	add	x0, x0, :lo12:.LC24
	ubfx	x1, x1, 5, 1
	bl	printk
.L150:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L151
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC25
	add	x0, x0, :lo12:.LC25
	ubfx	x1, x1, 6, 1
	bl	printk
.L151:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L152
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC26
	add	x0, x0, :lo12:.LC26
	ubfx	x1, x1, 7, 1
	bl	printk
.L152:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L153
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x0, 17]
	adrp	x0, .LC27
	add	x0, x0, :lo12:.LC27
	and	w1, w1, 1
	bl	printk
.L153:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L154
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC28
	add	x0, x0, :lo12:.LC28
	ubfx	x1, x1, 9, 1
	bl	printk
.L154:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L155
	adrp	x0, .LANCHOR0+1144
	ldr	x0, [x0, #:lo12:.LANCHOR0+1144]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC29
	add	x0, x0, :lo12:.LC29
	ubfx	x1, x1, 10, 1
	bl	printk
.L155:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L156
	adrp	x0, .LANCHOR0
	add	x1, x0, :lo12:.LANCHOR0
	ldrb	w2, [x1, 1154]
	ldrb	w1, [x0, #:lo12:.LANCHOR0]
	adrp	x0, .LC30
	add	x0, x0, :lo12:.LC30
	bl	printk
.L156:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L157
	adrp	x0, .LANCHOR0
	add	x0, x0, :lo12:.LANCHOR0
	ldrb	w2, [x0, 1171]
	ldrb	w1, [x0, 1170]
	adrp	x0, .LC31
	add	x0, x0, :lo12:.LC31
	bl	printk
.L157:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L158
	adrp	x0, .LANCHOR0
	add	x0, x0, :lo12:.LANCHOR0
	ldrb	w2, [x0, 1169]
	ldrb	w1, [x0, 1168]
	adrp	x0, .LC32
	add	x0, x0, :lo12:.LC32
	bl	printk
.L158:
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L129
	adrp	x0, .LANCHOR0+1192
	ldrb	w1, [x0, #:lo12:.LANCHOR0+1192]
	adrp	x0, .LC33
	add	x0, x0, :lo12:.LC33
	bl	printk
.L129:
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	nand_flash_print_info, .-nand_flash_print_info
	.align	2
	.global	timer_delay_ns
	.type	timer_delay_ns, %function
timer_delay_ns:
	stp	x29, x30, [sp, -16]!
	uxtw	x0, w0
	add	x29, sp, 0
	bl	__ndelay
	ldp	x29, x30, [sp], 16
	ret
	.size	timer_delay_ns, .-timer_delay_ns
	.align	2
	.global	nandc_set_ddr_para
	.type	nandc_set_ddr_para, %function
nandc_set_ddr_para:
	adrp	x2, .LANCHOR0
	add	x2, x2, :lo12:.LANCHOR0
	and	w0, w0, 255
	ldrb	w1, [x2, 1028]
	ldr	x2, [x2, 1056]
	cmp	w1, 9
	lsl	w1, w0, 16
	lsl	w0, w0, 8
	orr	w1, w1, w0
	orr	w1, w1, 3
	bne	.L254
	str	w1, [x2, 80]
	ret
.L254:
	str	w1, [x2, 304]
	ret
	.size	nandc_set_ddr_para, .-nandc_set_ddr_para
	.align	2
	.global	nandc_get_ddr_para
	.type	nandc_get_ddr_para, %function
nandc_get_ddr_para:
	adrp	x0, .LANCHOR0
	add	x0, x0, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1028]
	ldr	x0, [x0, 1056]
	cmp	w1, 9
	bne	.L257
	ldr	w0, [x0, 80]
.L259:
	ubfx	x0, x0, 8, 8
	ret
.L257:
	ldr	w0, [x0, 304]
	b	.L259
	.size	nandc_get_ddr_para, .-nandc_get_ddr_para
	.align	2
	.global	nandc_set_if_mode
	.type	nandc_set_if_mode, %function
nandc_set_if_mode:
	adrp	x3, .LANCHOR0
	add	x3, x3, :lo12:.LANCHOR0
	and	w0, w0, 255
	tst	w0, 6
	ldr	x2, [x3, 1056]
	ldr	w1, [x2]
	beq	.L261
	orr	w1, w1, 24576
	tst	x0, 4
	and	w1, w1, -32769
	ldrb	w0, [x3, 1028]
	orr	w1, w1, 196608
	mov	w3, 8321
	orr	w4, w1, 32768
	csel	w1, w4, w1, ne
	cmp	w0, 9
	mov	w0, 4099
	movk	w0, 0x10, lsl 16
	bne	.L263
	str	w3, [x2, 8]
	str	w0, [x2, 80]
	mov	w0, 38
	str	w0, [x2, 84]
	mov	w0, 39
	str	w0, [x2, 84]
.L264:
	str	w1, [x2]
	ret
.L263:
	str	w3, [x2, 344]
	str	w0, [x2, 304]
	mov	w0, 38
	str	w0, [x2, 308]
	mov	w0, 39
	str	w0, [x2, 308]
	b	.L264
.L261:
	and	w1, w1, -8193
	b	.L264
	.size	nandc_set_if_mode, .-nandc_set_if_mode
	.align	2
	.global	nandc_cs
	.type	nandc_cs, %function
nandc_cs:
	adrp	x1, .LANCHOR0+1056
	mov	w2, 1
	lsl	w0, w2, w0
	ldr	x3, [x1, #:lo12:.LANCHOR0+1056]
	ldr	w1, [x3]
	bfi	w1, w0, 0, 8
	str	w1, [x3]
	ret
	.size	nandc_cs, .-nandc_cs
	.align	2
	.global	flash_wait_device_ready_raw
	.type	flash_wait_device_ready_raw, %function
flash_wait_device_ready_raw:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	stp	x23, x24, [sp, 48]
	mov	w24, w2
	adrp	x2, .LANCHOR0
	add	x0, x2, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	mov	x19, x2
	stp	x25, x26, [sp, 64]
	mov	w21, w1
	str	x27, [sp, 80]
	ldrb	w0, [x0, 1153]
	cmp	w0, w20
	bhi	.L269
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 224
	mov	w2, 812
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L269:
	add	x2, x19, :lo12:.LANCHOR0
	lsr	w23, w21, 8
	add	x20, x2, w20, sxtw
	lsr	w25, w21, 16
	lsr	w26, w21, 24
	and	w21, w21, 255
	ldr	x19, [x2, 1056]
	mov	w27, 120
	ldrb	w22, [x20, 1196]
	mov	x20, x2
	ubfiz	x0, x22, 8, 8
	add	x19, x19, x0
.L275:
	mov	w0, w22
	bl	nandc_cs
	str	w27, [x19, 2056]
	str	w21, [x19, 2052]
	ldrb	w0, [x20, 1204]
	str	w23, [x19, 2052]
	str	w25, [x19, 2052]
	cbz	w0, .L270
	str	w26, [x19, 2052]
.L270:
	mov	x0, 600
	bl	__const_udelay
	ldr	w2, [x19, 2048]
	and	w2, w2, 255
	bl	nandc_de_cs.constprop.35
	bics	wzr, w24, w2
	bne	.L275
	cmp	w2, 255
	beq	.L275
	mov	w0, w2
	ldr	x27, [sp, 80]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
	.size	flash_wait_device_ready_raw, .-flash_wait_device_ready_raw
	.align	2
	.global	flash_wait_device_ready
	.type	flash_wait_device_ready, %function
flash_wait_device_ready:
	adrp	x4, .LANCHOR0
	add	x7, x4, :lo12:.LANCHOR0
	stp	x29, x30, [sp, -16]!
	mov	w6, 24
	mov	w5, 1
	mov	w2, w1
	add	x29, sp, 0
	ldrb	w8, [x7, 1205]
	tst	x0, 50331648
	sub	w6, w6, w8
	lsl	w3, w5, w6
	sub	w3, w3, #1
	lsl	w5, w5, w8
	sub	w5, w5, #1
	asr	w6, w0, w6
	and	w5, w5, w6
	and	w1, w3, w0
	and	w5, w5, 255
	bne	.L280
	ldrb	w0, [x4, #:lo12:.LANCHOR0]
	cbz	w0, .L281
	ldrb	w0, [x7, 1]
	cbz	w0, .L280
.L281:
	add	x4, x4, :lo12:.LANCHOR0
	ldrh	w3, [x4, 2]
	udiv	w0, w1, w3
	mul	w0, w0, w3
	sub	w3, w1, w0
	ldrb	w1, [x4, 1]
	cbz	w1, .L282
	add	w1, w0, w3, lsl 1
.L280:
	mov	w0, w5
	bl	flash_wait_device_ready_raw
	ldp	x29, x30, [sp], 16
	ret
.L282:
	add	x4, x4, 4
	ldrh	w3, [x4, w3, uxtw 1]
	add	w1, w3, w0
	b	.L280
	.size	flash_wait_device_ready, .-flash_wait_device_ready
	.align	2
	.global	nandc_de_cs
	.type	nandc_de_cs, %function
nandc_de_cs:
	adrp	x0, .LANCHOR0+1056
	ldr	x1, [x0, #:lo12:.LANCHOR0+1056]
	ldr	w0, [x1]
	and	w0, w0, -256
	and	w0, w0, -131073
	str	w0, [x1]
	ret
	.size	nandc_de_cs, .-nandc_de_cs
	.align	2
	.global	nandc_wait_flash_ready_no_delay
	.type	nandc_wait_flash_ready_no_delay, %function
nandc_wait_flash_ready_no_delay:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, 34464
	adrp	x20, .LANCHOR0
	add	x20, x20, :lo12:.LANCHOR0
	movk	w19, 0x1, lsl 16
.L293:
	ldr	x0, [x20, 1056]
	ldr	w0, [x0]
	str	w0, [x29, 40]
	ldr	w0, [x29, 40]
	tbnz	x0, 9, .L294
	mov	x0, 50
	bl	__const_udelay
	subs	w19, w19, #1
	bne	.L293
	mov	w0, -1
.L291:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
.L294:
	mov	w0, 0
	b	.L291
	.size	nandc_wait_flash_ready_no_delay, .-nandc_wait_flash_ready_no_delay
	.align	2
	.global	zftl_flash_enter_slc_mode
	.type	zftl_flash_enter_slc_mode, %function
zftl_flash_enter_slc_mode:
	stp	x29, x30, [sp, -48]!
	adrp	x1, .LANCHOR0
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	x19, x0, 255
	add	x0, x1, :lo12:.LANCHOR0
	ldrb	w1, [x1, #:lo12:.LANCHOR0]
	str	x21, [sp, 32]
	cbz	w1, .L297
	cmp	w1, 1
	ldr	x20, [x0, 1056]
	bne	.L300
	adrp	x0, .LANCHOR2+37
	ldrb	w0, [x0, #:lo12:.LANCHOR2+37]
	cbz	w0, .L297
.L316:
	add	x19, x19, 8
	add	x19, x20, x19, lsl 8
	str	w0, [x19, 8]
.L297:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L300:
	cmp	w1, 2
	bne	.L302
	add	x0, x0, x19
	ldrb	w1, [x0, 1208]
	cbz	w1, .L297
	adrp	x21, .LANCHOR2
	add	x21, x21, :lo12:.LANCHOR2
	strb	wzr, [x0, 1208]
	add	x21, x21, 8
	ldrb	w0, [x21, 29]
	cbz	w0, .L297
	bl	nandc_wait_flash_ready_no_delay
	ldrb	w0, [x21, 29]
	b	.L316
.L302:
	cmp	w1, 3
	bne	.L297
	add	x21, x0, w19, sxtw
	ldrb	w0, [x21, 1208]
	cbz	w0, .L297
	ubfiz	x19, x19, 8, 8
	bl	nandc_wait_flash_ready_no_delay
	add	x19, x20, x19
	mov	w0, 239
	strb	wzr, [x21, 1208]
	str	w0, [x19, 2056]
	mov	w0, 145
	str	w0, [x19, 2052]
	mov	x0, 500
	bl	__const_udelay
	str	wzr, [x19, 2048]
	mov	w0, 1
	str	w0, [x19, 2048]
	str	wzr, [x19, 2048]
	mov	x0, 750
	str	wzr, [x19, 2048]
	bl	__const_udelay
	bl	nandc_wait_flash_ready_no_delay
	mov	w0, 218
	str	w0, [x19, 2056]
	mov	x0, 250
	bl	__const_udelay
	b	.L297
	.size	zftl_flash_enter_slc_mode, .-zftl_flash_enter_slc_mode
	.align	2
	.global	zftl_flash_exit_slc_mode
	.type	zftl_flash_exit_slc_mode, %function
zftl_flash_exit_slc_mode:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	x19, x0, 255
	adrp	x0, .LANCHOR0
	stp	x21, x22, [sp, 32]
	add	x21, x0, :lo12:.LANCHOR0
	ldrb	w0, [x0, #:lo12:.LANCHOR0]
	cbz	w0, .L317
	cmp	w0, 1
	ldr	x20, [x21, 1056]
	bne	.L320
	adrp	x0, .LANCHOR2+38
	ldrb	w0, [x0, #:lo12:.LANCHOR2+38]
	cbz	w0, .L317
.L338:
	add	x19, x19, 8
	add	x19, x20, x19, lsl 8
	str	w0, [x19, 8]
.L317:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L320:
	cmp	w0, 2
	bne	.L322
	add	x21, x21, x19
	ldrb	w0, [x21, 1208]
	cbnz	w0, .L317
	adrp	x22, .LANCHOR2
	add	x22, x22, :lo12:.LANCHOR2
	mov	w1, 4
	add	x22, x22, 8
	ldrb	w0, [x22, 12]
	cmp	w0, 2
	csel	w0, w0, w1, eq
	strb	w0, [x21, 1208]
	ldrb	w0, [x22, 30]
	cbz	w0, .L317
	bl	nandc_wait_flash_ready_no_delay
	ldrb	w0, [x22, 30]
	b	.L338
.L322:
	cmp	w0, 3
	bne	.L317
	add	x21, x21, w19, sxtw
	ldrb	w0, [x21, 1208]
	cbnz	w0, .L317
	adrp	x22, .LANCHOR2
	add	x22, x22, :lo12:.LANCHOR2
	bl	nandc_wait_flash_ready_no_delay
	ubfiz	x19, x19, 8, 8
	add	x19, x20, x19
	mov	w1, 4
	ldrb	w0, [x22, 20]
	cmp	w0, 2
	csel	w0, w0, w1, eq
	strb	w0, [x21, 1208]
	mov	w0, 239
	str	w0, [x19, 2056]
	mov	w0, 145
	str	w0, [x19, 2052]
	mov	x0, 500
	bl	__const_udelay
	ldrb	w0, [x22, 15]
	cmp	w0, 9
	mov	w0, 1
	bne	.L325
	str	w0, [x19, 2048]
.L326:
	str	w0, [x19, 2048]
	mov	x0, 750
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	bl	__const_udelay
	bl	nandc_wait_flash_ready_no_delay
	mov	w0, 223
	str	w0, [x19, 2056]
	mov	x0, 250
	bl	__const_udelay
	b	.L317
.L325:
	ldrb	w1, [x21, 1208]
	str	w1, [x19, 2048]
	b	.L326
	.size	zftl_flash_exit_slc_mode, .-zftl_flash_exit_slc_mode
	.align	2
	.global	flash_start_page_read
	.type	flash_start_page_read, %function
flash_start_page_read:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	adrp	x22, .LANCHOR0
	add	x0, x22, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	mov	w19, 24
	stp	x23, x24, [sp, 48]
	mov	w23, w1
	mov	w20, 1
	ldrb	w1, [x0, 1205]
	ldrb	w0, [x0, 1153]
	sub	w24, w19, w1
	lsl	w20, w20, w1
	sub	w20, w20, #1
	lsr	w1, w23, w24
	and	w20, w20, w1
	and	w20, w20, 255
	cmp	w0, w20
	bhi	.L340
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 256
	mov	w2, 1013
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L340:
	add	x5, x22, :lo12:.LANCHOR0
	ldrb	w0, [x5, 1153]
	cmp	w0, w20
	bls	.L339
	add	x20, x5, w20, sxtw
	mov	w19, 1
	ubfx	x4, x23, 24, 2
	lsl	w19, w19, w24
	sub	w19, w19, #1
	and	w19, w19, w23
	ldrb	w23, [x20, 1196]
	ldr	x20, [x5, 1056]
	mov	w0, w23
	bl	nandc_cs
	cbnz	w4, .L342
	mov	w0, w19
	bl	slc_phy_page_address_calc
	mov	w19, w0
	ldrb	w0, [x22, #:lo12:.LANCHOR0]
	cbz	w0, .L343
	mov	w0, w23
	bl	zftl_flash_enter_slc_mode
.L343:
	add	x0, x22, :lo12:.LANCHOR0
	ldr	x0, [x0, 1144]
	ldrb	w1, [x0, 7]
	cmp	w1, 1
	bne	.L345
	ldrb	w0, [x0, 12]
	cmp	w0, 2
	bne	.L345
	sxtw	x0, w23
	mov	w1, 38
	add	x0, x0, 8
	add	x0, x20, x0, lsl 8
	str	w1, [x0, 8]
.L345:
	ubfiz	x0, x23, 8, 8
	and	w1, w19, 255
	add	x0, x20, x0
	add	x22, x22, :lo12:.LANCHOR0
	str	wzr, [x0, 2056]
	str	wzr, [x0, 2052]
	str	wzr, [x0, 2052]
	str	w1, [x0, 2052]
	lsr	w1, w19, 8
	str	w1, [x0, 2052]
	lsr	w1, w19, 16
	str	w1, [x0, 2052]
	ldrb	w1, [x22, 1204]
	cbz	w1, .L346
	lsr	w19, w19, 24
	str	w19, [x0, 2052]
.L346:
	str	w21, [x0, 2056]
.L339:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L342:
	ldr	x0, [x5, 1144]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L344
	ldrb	w0, [x5, 1212]
	cbnz	w0, .L344
	ldrb	w0, [x5, 1213]
	cbnz	w0, .L344
	sxtw	x0, w23
	add	x0, x0, 8
	add	x0, x20, x0, lsl 8
	str	w4, [x0, 8]
	b	.L343
.L344:
	mov	w0, w23
	bl	zftl_flash_exit_slc_mode
	b	.L343
	.size	flash_start_page_read, .-flash_start_page_read
	.align	2
	.global	nandc_wait_flash_ready
	.type	nandc_wait_flash_ready, %function
nandc_wait_flash_ready:
	stp	x29, x30, [sp, -48]!
	mov	x0, 750
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, 34464
	adrp	x20, .LANCHOR0
	add	x20, x20, :lo12:.LANCHOR0
	movk	w19, 0x1, lsl 16
	bl	__const_udelay
.L356:
	ldr	x0, [x20, 1056]
	ldr	w0, [x0]
	str	w0, [x29, 40]
	ldr	w0, [x29, 40]
	tbnz	x0, 9, .L357
	mov	x0, 50
	bl	__const_udelay
	subs	w19, w19, #1
	bne	.L356
	mov	w0, -1
.L354:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
.L357:
	mov	w0, 0
	b	.L354
	.size	nandc_wait_flash_ready, .-nandc_wait_flash_ready
	.align	2
	.global	sandisk_set_rr_para
	.type	sandisk_set_rr_para, %function
sandisk_set_rr_para:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x0
	mov	w0, 239
	and	w19, w1, 255
	str	w0, [x20, 8]
	mov	w0, 17
	str	w0, [x20, 4]
	mov	x0, 1000
	bl	__const_udelay
	add	w1, w19, 1
	mov	w0, 5
	adrp	x2, .LANCHOR0
	add	x2, x2, :lo12:.LANCHOR0
	umull	x1, w1, w0
	adrp	x0, .LANCHOR1
	add	x0, x0, :lo12:.LANCHOR1
	add	x3, x0, 48
	add	x0, x0, 144
	add	x3, x3, x1
	add	x0, x0, x1
	mov	x1, 0
.L361:
	ldrb	w4, [x2, 1137]
	cmp	w4, w1
	bhi	.L364
	bl	nandc_wait_flash_ready
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L364:
	ldrb	w4, [x2, 1136]
	cmp	w4, 67
	bne	.L362
	ldrsb	w4, [x0, x1]
.L366:
	add	x1, x1, 1
	str	w4, [x20]
	b	.L361
.L362:
	ldrsb	w4, [x3, x1]
	b	.L366
	.size	sandisk_set_rr_para, .-sandisk_set_rr_para
	.align	2
	.global	toshiba_3d_set_tlc_rr_para
	.type	toshiba_3d_set_tlc_rr_para, %function
toshiba_3d_set_tlc_rr_para:
	stp	x29, x30, [sp, -48]!
	and	x2, x1, 255
	mov	x1, 7
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	str	x21, [sp, 32]
	mov	w21, 213
	mov	w0, -119
	madd	x1, x2, x1, x1
	str	w21, [x19, 8]
	str	wzr, [x19, 4]
	str	w0, [x19, 4]
	adrp	x0, .LANCHOR1
	add	x0, x0, :lo12:.LANCHOR1
	add	x0, x0, 280
	add	x20, x0, x1
	ldrsb	w0, [x0, x1]
	str	w0, [x19]
	ldrsb	w0, [x20, 1]
	str	w0, [x19]
	ldrsb	w0, [x20, 2]
	str	w0, [x19]
	ldrsb	w0, [x20, 3]
	str	w0, [x19]
	bl	nandc_wait_flash_ready
	str	w21, [x19, 8]
	str	wzr, [x19, 4]
	mov	w0, -118
	str	w0, [x19, 4]
	ldrsb	w0, [x20, 4]
	str	w0, [x19]
	ldrsb	w0, [x20, 5]
	str	w0, [x19]
	ldrsb	w0, [x20, 6]
	str	w0, [x19]
	str	wzr, [x19]
	bl	nandc_wait_flash_ready
	ldr	x21, [sp, 32]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
	.size	toshiba_3d_set_tlc_rr_para, .-toshiba_3d_set_tlc_rr_para
	.align	2
	.global	toshiba_3d_set_slc_rr_para
	.type	toshiba_3d_set_slc_rr_para, %function
toshiba_3d_set_slc_rr_para:
	stp	x29, x30, [sp, -16]!
	mov	w2, 213
	add	x29, sp, 0
	str	w2, [x0, 8]
	mov	w2, -117
	str	wzr, [x0, 4]
	str	w2, [x0, 4]
	adrp	x2, .LANCHOR1
	add	x2, x2, :lo12:.LANCHOR1
	add	x1, x2, w1, uxtb
	ldrsb	w1, [x1, 681]
	str	w1, [x0]
	str	wzr, [x0]
	str	wzr, [x0]
	str	wzr, [x0]
	bl	nandc_wait_flash_ready
	ldp	x29, x30, [sp], 16
	ret
	.size	toshiba_3d_set_slc_rr_para, .-toshiba_3d_set_slc_rr_para
	.align	2
	.global	toshiba_tlc_set_rr_para
	.type	toshiba_tlc_set_rr_para, %function
toshiba_tlc_set_rr_para:
	stp	x29, x30, [sp, -48]!
	uxtw	x1, w1
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	str	x21, [sp, 32]
	mov	w21, 239
	adrp	x0, .LANCHOR2
	str	w21, [x19, 8]
	cbz	w2, .L372
	mov	w2, 18
	str	w2, [x19, 4]
	mov	x2, 7
	add	x0, x0, :lo12:.LANCHOR2
	add	x0, x0, 40
	mul	x1, x1, x2
	add	x20, x0, x1
	ldrb	w0, [x0, x1]
	str	w0, [x19]
	ldrb	w0, [x20, 1]
	str	w0, [x19]
	ldrb	w0, [x20, 2]
	str	w0, [x19]
	ldrb	w0, [x20, 3]
	str	w0, [x19]
	bl	nandc_wait_flash_ready
	str	w21, [x19, 8]
	mov	w0, 19
	str	w0, [x19, 4]
	ldrb	w0, [x20, 4]
	str	w0, [x19]
	ldrb	w0, [x20, 5]
	str	w0, [x19]
	ldrb	w0, [x20, 6]
	str	w0, [x19]
.L375:
	str	wzr, [x19]
	bl	nandc_wait_flash_ready
	ldr	x21, [sp, 32]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
.L372:
	add	x0, x0, :lo12:.LANCHOR2
	mov	w2, 20
	add	x0, x0, 376
	str	w2, [x19, 4]
	ldrb	w0, [x0, x1]
	str	w0, [x19]
	str	wzr, [x19]
	str	wzr, [x19]
	b	.L375
	.size	toshiba_tlc_set_rr_para, .-toshiba_tlc_set_rr_para
	.align	2
	.global	ymtc_3d_set_tlc_rr_para
	.type	ymtc_3d_set_tlc_rr_para, %function
ymtc_3d_set_tlc_rr_para:
	stp	x29, x30, [sp, -48]!
	and	x1, x1, 255
	mov	x2, 7
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	str	x21, [sp, 32]
	mov	w0, 160
	mov	w21, 239
	mul	x1, x1, x2
	str	w21, [x19, 8]
	str	w0, [x19, 4]
	adrp	x0, .LANCHOR1
	add	x0, x0, :lo12:.LANCHOR1
	add	x0, x0, 696
	add	x20, x0, x1
	ldrsb	w0, [x0, x1]
	str	w0, [x19]
	ldrsb	w0, [x20, 4]
	str	w0, [x19]
	str	wzr, [x19]
	str	wzr, [x19]
	bl	nandc_wait_flash_ready
	str	w21, [x19, 8]
	mov	w0, 161
	str	w0, [x19, 4]
	ldrsb	w0, [x20, 1]
	str	w0, [x19]
	ldrsb	w0, [x20, 3]
	str	w0, [x19]
	ldrsb	w0, [x20, 5]
	str	w0, [x19]
	str	wzr, [x19]
	bl	nandc_wait_flash_ready
	str	w21, [x19, 8]
	mov	w0, 162
	str	w0, [x19, 4]
	ldrsb	w0, [x20, 2]
	str	w0, [x19]
	ldrsb	w0, [x20, 6]
	str	w0, [x19]
	str	wzr, [x19]
	str	wzr, [x19]
	bl	nandc_wait_flash_ready
	ldr	x21, [sp, 32]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
	.size	ymtc_3d_set_tlc_rr_para, .-ymtc_3d_set_tlc_rr_para
	.align	2
	.global	ymtc_3d_set_slc_rr_para
	.type	ymtc_3d_set_slc_rr_para, %function
ymtc_3d_set_slc_rr_para:
	stp	x29, x30, [sp, -16]!
	mov	w2, 239
	and	x1, x1, 255
	add	x29, sp, 0
	str	w2, [x0, 8]
	mov	w2, 163
	str	w2, [x0, 4]
	adrp	x2, .LANCHOR1
	add	x2, x2, :lo12:.LANCHOR1
	add	x2, x2, 1056
	ldrsb	w1, [x2, x1]
	str	w1, [x0]
	str	wzr, [x0]
	str	wzr, [x0]
	str	wzr, [x0]
	bl	nandc_wait_flash_ready
	ldp	x29, x30, [sp], 16
	ret
	.size	ymtc_3d_set_slc_rr_para, .-ymtc_3d_set_slc_rr_para
	.align	2
	.global	flash_start_plane_read
	.type	flash_start_plane_read, %function
flash_start_plane_read:
	stp	x29, x30, [sp, -96]!
	mov	w3, 24
	mov	w2, 1
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	add	x4, x20, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	ubfx	x24, x0, 24, 2
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	ldrb	w19, [x4, 1205]
	sub	w3, w3, w19
	lsl	w19, w2, w19
	sub	w19, w19, #1
	lsl	w21, w2, w3
	sub	w21, w21, #1
	and	w22, w21, w0
	lsr	w3, w0, w3
	ldrb	w0, [x4, 1153]
	and	w19, w19, w3
	and	w19, w19, 255
	and	w21, w21, w1
	cmp	w0, w19
	bhi	.L381
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1072
	mov	w2, 1148
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L381:
	add	x4, x20, :lo12:.LANCHOR0
	add	x19, x4, w19, sxtw
	ldr	x25, [x4, 1056]
	ldrb	w23, [x19, 1196]
	mov	w0, w23
	bl	nandc_cs
	cbnz	w24, .L382
	mov	w0, w22
	bl	slc_phy_page_address_calc
	mov	w22, w0
	mov	w0, w21
	bl	slc_phy_page_address_calc
	mov	w21, w0
	ldrb	w0, [x20, #:lo12:.LANCHOR0]
	cbz	w0, .L383
	mov	w0, w23
	bl	zftl_flash_enter_slc_mode
.L383:
	add	x0, x20, :lo12:.LANCHOR0
	and	x19, x23, 255
	and	w3, w22, 255
	lsr	w2, w22, 8
	and	w28, w21, 255
	lsr	w27, w21, 8
	ldrb	w1, [x0, 1176]
	lsr	w26, w21, 16
	cmp	w1, 1
	lsr	w1, w22, 16
	bne	.L385
	add	x19, x25, x19, lsl 8
	ldrb	w4, [x0, 1168]
	ldrb	w0, [x0, 1204]
	str	w4, [x19, 2056]
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w3, [x19, 2052]
	str	w2, [x19, 2052]
	str	w1, [x19, 2052]
	cbz	w0, .L386
	lsr	w22, w22, 24
	str	w22, [x19, 2052]
.L386:
	add	x22, x20, :lo12:.LANCHOR0
	ldrb	w0, [x22, 1169]
	str	w0, [x19, 2056]
	bl	nandc_wait_flash_ready
	ldr	x0, [x22, 1144]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L387
	cbz	w24, .L387
	str	w24, [x19, 2056]
.L387:
	str	wzr, [x19, 2056]
	add	x20, x20, :lo12:.LANCHOR0
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w28, [x19, 2052]
	ldrb	w0, [x20, 1204]
	str	w27, [x19, 2052]
	str	w26, [x19, 2052]
	cbz	w0, .L408
	lsr	w21, w21, 24
	str	w21, [x19, 2052]
.L408:
	mov	w0, 48
	str	w0, [x19, 2056]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L382:
	ldr	x0, [x4, 1144]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L384
	ldrb	w0, [x4, 1212]
	cbnz	w0, .L384
	ldrb	w0, [x4, 1213]
	cbnz	w0, .L384
	sxtw	x0, w23
	add	x0, x0, 8
	add	x0, x25, x0, lsl 8
	str	w24, [x0, 8]
	b	.L383
.L384:
	mov	w0, w23
	bl	zftl_flash_exit_slc_mode
	b	.L383
.L385:
	ldr	x0, [x0, 1144]
	ldrb	w4, [x0, 7]
	cmp	w4, 1
	bne	.L390
	ldrb	w4, [x0, 12]
	cmp	w4, 2
	bne	.L390
	add	x23, x23, 8
	mov	w4, 38
	add	x23, x25, x23, lsl 8
	str	w4, [x23, 8]
.L390:
	add	x4, x20, :lo12:.LANCHOR0
	add	x19, x25, x19, lsl 8
	ldrb	w4, [x4, 1168]
	str	w4, [x19, 2056]
	str	w3, [x19, 2052]
	str	w2, [x19, 2052]
	str	w1, [x19, 2052]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L391
	cbz	w24, .L391
	str	w24, [x19, 2056]
.L391:
	add	x20, x20, :lo12:.LANCHOR0
	ldrb	w0, [x20, 1169]
	str	w0, [x19, 2056]
	str	w28, [x19, 2052]
	str	w27, [x19, 2052]
	str	w26, [x19, 2052]
	b	.L408
	.size	flash_start_plane_read, .-flash_start_plane_read
	.align	2
	.global	flash_set_interface_mode
	.type	flash_set_interface_mode, %function
flash_set_interface_mode:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	str	x25, [sp, 64]
	adrp	x25, .LANCHOR0
	add	x25, x25, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x19, x20, [sp, 16]
	mov	w21, w0
	add	x22, x25, 1216
	mov	x20, x25
	stp	x23, x24, [sp, 48]
	mov	x24, 0
.L422:
	lsl	x0, x24, 3
	ldr	x19, [x25, 1056]
	ldrb	w23, [x0, x22]
	cmp	w23, 69
	beq	.L410
	add	w0, w23, 119
	cmp	w23, 44
	and	w1, w0, 255
	cset	w2, eq
	cmp	w1, 18
	bhi	.L423
	mov	x0, 32769
	movk	x0, 0x4, lsl 16
	lsr	x0, x0, x1
	mvn	x0, x0
.L411:
	and	w0, w0, 1
	eor	w0, w0, 1
	orr	w0, w2, w0
	cbz	w0, .L412
.L410:
	ldrb	w1, [x20, 1248]
	cmp	w21, 1
	bne	.L413
	tbz	x1, 0, .L412
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L414
	adrp	x0, .LC34
	add	x0, x0, :lo12:.LC34
	bl	printk
.L414:
	add	x0, x19, x24, lsl 8
	mov	w1, 239
	cmp	w23, 44
	str	w1, [x0, 2056]
	mov	w1, 137
	ccmp	w23, w1, 4, ne
	mov	w1, 1
	bne	.L415
.L446:
	str	w1, [x0, 2052]
	mov	w1, 5
.L445:
	str	w1, [x0, 2048]
.L420:
	str	wzr, [x0, 2048]
	str	wzr, [x0, 2048]
	str	wzr, [x0, 2048]
.L412:
	add	x24, x24, 1
	cmp	x24, 4
	bne	.L422
	bl	nandc_wait_flash_ready
	ldr	x25, [sp, 64]
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 80
	ret
.L423:
	mov	x0, 1
	b	.L411
.L415:
	cmp	w23, 155
	beq	.L446
	mov	w2, 128
	str	w2, [x0, 2052]
	b	.L445
.L413:
	tbz	x1, 2, .L412
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L418
	adrp	x0, .LC35
	add	x0, x0, :lo12:.LC35
	bl	printk
.L418:
	add	x0, x19, x24, lsl 8
	mov	w1, 239
	cmp	w23, 44
	str	w1, [x0, 2056]
	mov	w1, 137
	ccmp	w23, w1, 4, ne
	bne	.L419
	mov	w1, 1
	str	w1, [x0, 2052]
	mov	w1, 35
	b	.L445
.L419:
	cmp	w23, 155
	bne	.L421
	mov	w1, 1
	str	w1, [x0, 2052]
	mov	w1, 37
	b	.L445
.L421:
	mov	w1, 128
	str	w1, [x0, 2052]
	str	wzr, [x0, 2048]
	b	.L420
	.size	flash_set_interface_mode, .-flash_set_interface_mode
	.align	2
	.type	mt_auto_read_calibration_config, %function
mt_auto_read_calibration_config:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w20, w1
	and	w19, w0, 255
	bl	nandc_wait_flash_ready
	adrp	x1, .LANCHOR0+1056
	ubfiz	x0, x19, 8, 8
	ldr	x19, [x1, #:lo12:.LANCHOR0+1056]
	add	x19, x19, x0
	mov	w0, 239
	str	w0, [x19, 2056]
	mov	w0, 150
	str	w0, [x19, 2052]
	mov	x0, 1000
	bl	__const_udelay
	str	w20, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	mt_auto_read_calibration_config, .-mt_auto_read_calibration_config
	.align	2
	.global	flash_reset
	.type	flash_reset, %function
flash_reset:
	stp	x29, x30, [sp, -16]!
	adrp	x1, .LANCHOR0+1056
	ubfiz	x0, x0, 8, 8
	add	x29, sp, 0
	ldr	x1, [x1, #:lo12:.LANCHOR0+1056]
	add	x0, x0, 2048
	add	x1, x1, x0
	mov	w0, 255
	str	w0, [x1, 8]
	bl	nandc_wait_flash_ready
	ldp	x29, x30, [sp], 16
	ret
	.size	flash_reset, .-flash_reset
	.align	2
	.global	flash_read_id
	.type	flash_read_id, %function
flash_read_id:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	str	x21, [sp, 32]
	and	w21, w0, 255
	adrp	x0, .LANCHOR0+1056
	stp	x19, x20, [sp, 16]
	mov	x19, x1
	ldr	x20, [x0, #:lo12:.LANCHOR0+1056]
	mov	w0, w21
	bl	flash_reset
	mov	w0, w21
	bl	nandc_cs
	ubfiz	x0, x21, 8, 8
	add	x20, x20, x0
	mov	w0, 144
	str	w0, [x20, 2056]
	mov	x0, 1000
	str	wzr, [x20, 2052]
	bl	__const_udelay
	ldr	w0, [x20, 2048]
	strb	w0, [x19]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 1]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 2]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 3]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 4]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 5]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 6]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 7]
	bl	nandc_de_cs.constprop.35
	ldrb	w2, [x19]
	sub	w0, w2, #1
	and	w0, w0, 255
	cmp	w0, 253
	bhi	.L451
	ldrb	w7, [x19, 5]
	adrp	x0, .LC36
	ldrb	w6, [x19, 4]
	add	w1, w21, 1
	ldrb	w5, [x19, 3]
	add	x0, x0, :lo12:.LC36
	ldrb	w4, [x19, 2]
	ldrb	w3, [x19, 1]
	bl	printk
.L451:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	flash_read_id, .-flash_read_id
	.align	2
	.global	flash_read_spare
	.type	flash_read_spare, %function
flash_read_spare:
	stp	x29, x30, [sp, -32]!
	ubfiz	x0, x0, 8, 8
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x2
	adrp	x2, .LANCHOR2+17
	ldrb	w3, [x2, #:lo12:.LANCHOR2+17]
	adrp	x2, .LANCHOR0+1056
	ldr	x19, [x2, #:lo12:.LANCHOR0+1056]
	lsl	w3, w3, 9
	add	x19, x19, x0
	and	w0, w1, 255
	str	wzr, [x19, 2056]
	str	w3, [x19, 2052]
	lsr	w3, w3, 8
	str	w3, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w1, 8
	str	w0, [x19, 2052]
	lsr	w1, w1, 16
	str	w1, [x19, 2052]
	mov	w0, 48
	str	w0, [x19, 2056]
	bl	nandc_wait_flash_ready
	ldr	w0, [x19, 2048]
	strb	w0, [x20]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	flash_read_spare, .-flash_read_spare
	.align	2
	.global	flash_read_otp_data
	.type	flash_read_otp_data, %function
flash_read_otp_data:
	stp	x29, x30, [sp, -48]!
	and	w4, w0, 255
	adrp	x0, .LANCHOR0+1056
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w20, w1
	ldr	x19, [x0, #:lo12:.LANCHOR0+1056]
	mov	w0, w4
	stp	x21, x22, [sp, 32]
	mov	x22, x2
	bl	nandc_cs
	ubfiz	x4, x4, 8, 8
	add	x19, x19, x4
	mov	w0, 239
	mov	w21, 144
	str	w0, [x19, 2056]
	mov	x0, 250
	str	w21, [x19, 2052]
	bl	__const_udelay
	mov	w0, 1
	str	w0, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	bl	nandc_wait_flash_ready
	mov	w0, 238
	str	w0, [x19, 2056]
	str	w21, [x19, 2052]
	mov	w1, w20
	adrp	x0, .LC37
	add	x0, x0, :lo12:.LC37
	ldr	w2, [x19, 2048]
	ldr	w3, [x19, 2048]
	ldr	w4, [x19, 2048]
	bl	printk
	bl	nandc_wait_flash_ready
	str	wzr, [x19, 2056]
	str	wzr, [x19, 2052]
	and	w0, w20, 255
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w20, 8
	str	w0, [x19, 2052]
	lsr	w20, w20, 16
	str	w20, [x19, 2052]
	mov	w0, 48
	str	w0, [x19, 2056]
	bl	nandc_wait_flash_ready
	mov	x0, 0
.L457:
	ldr	w1, [x19, 2048]
	strb	w1, [x22, x0]
	add	x0, x0, 1
	cmp	x0, 16384
	bne	.L457
	mov	w0, 239
	str	w0, [x19, 2056]
	mov	w0, 144
	str	w0, [x19, 2052]
	mov	x0, 250
	bl	__const_udelay
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	bl	nandc_de_cs.constprop.35
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	flash_read_otp_data, .-flash_read_otp_data
	.align	2
	.global	sandisk_prog_test_bad_block
	.type	sandisk_prog_test_bad_block, %function
sandisk_prog_test_bad_block:
	stp	x29, x30, [sp, -48]!
	and	x2, x0, 255
	mov	x0, x2
	add	x2, x2, 8
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	w22, w1
	adrp	x1, .LANCHOR0+1056
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR2
	ldr	x19, [x1, #:lo12:.LANCHOR0+1056]
	add	x1, x20, :lo12:.LANCHOR2
	ldrb	w1, [x1, 37]
	add	x2, x19, x2, lsl 8
	cbz	w1, .L461
.L476:
	ubfiz	x0, x0, 8, 8
	str	w1, [x2, 8]
	add	x19, x19, x0
	mov	w0, 128
	str	w0, [x19, 2056]
	and	w0, w22, 255
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w22, 8
	str	w0, [x19, 2052]
	lsr	w0, w22, 16
	str	w0, [x19, 2052]
	mov	w0, 16
	str	w0, [x19, 2056]
	bl	nandc_wait_flash_ready
	mov	w0, 112
	str	w0, [x19, 2056]
	mov	x0, 1000
	bl	__const_udelay
	ldr	w2, [x19, 2048]
	cmp	w2, 255
	bne	.L463
	ldr	w2, [x19, 2048]
.L463:
	mov	w0, 5
	ands	w21, w2, w0
	beq	.L464
	ldr	w0, [x20, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L464
	adrp	x0, .LC38
	mov	w1, w22
	add	x0, x0, :lo12:.LC38
	bl	printk
.L464:
	add	x20, x20, :lo12:.LANCHOR2
	ldrb	w0, [x20, 38]
	cbz	w0, .L460
	str	w0, [x19, 2056]
.L460:
	mov	w0, w21
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L461:
	mov	w1, 162
	b	.L476
	.size	sandisk_prog_test_bad_block, .-sandisk_prog_test_bad_block
	.align	2
	.global	nandc_rdy_status
	.type	nandc_rdy_status, %function
nandc_rdy_status:
	adrp	x0, .LANCHOR0+1056
	sub	sp, sp, #16
	ldr	x0, [x0, #:lo12:.LANCHOR0+1056]
	ldr	w0, [x0]
	str	w0, [sp, 8]
	ldr	w0, [sp, 8]
	add	sp, sp, 16
	ubfx	x0, x0, 9, 1
	ret
	.size	nandc_rdy_status, .-nandc_rdy_status
	.align	2
	.global	nandc_bch_sel
	.type	nandc_bch_sel, %function
nandc_bch_sel:
	sub	sp, sp, #16
	str	wzr, [sp, 8]
	ldr	w1, [sp, 8]
	orr	w1, w1, 1
	str	w1, [sp, 8]
	adrp	x1, .LANCHOR0
	add	x1, x1, :lo12:.LANCHOR0
	ldrb	w2, [x1, 1028]
	strb	w0, [x1, 1249]
	cmp	w2, 9
	bne	.L480
	ldr	x1, [x1, 1056]
	cmp	w0, 70
	ldr	w2, [sp, 8]
	str	w2, [x1, 16]
	beq	.L486
	cmp	w0, 60
	beq	.L487
	cmp	w0, 40
	cset	w0, eq
	add	w0, w0, 1
.L481:
	str	wzr, [sp]
	ldr	w2, [sp]
	bfi	w2, w0, 25, 3
	str	w2, [sp]
	ldr	w0, [sp]
	orr	w0, w0, 1
	str	w0, [sp]
	ldr	w0, [sp]
	str	w0, [x1, 32]
.L479:
	add	sp, sp, 16
	ret
.L486:
	mov	w0, 0
	b	.L481
.L487:
	mov	w0, 3
	b	.L481
.L480:
	ldr	x2, [x1, 1056]
	mov	w3, 16
	ldr	w1, [sp, 8]
	cmp	w0, w3
	str	w1, [x2, 8]
	str	wzr, [sp]
	ldr	w1, [sp]
	bfi	w1, w3, 8, 8
	str	w1, [sp]
	ldr	w1, [sp]
	and	w1, w1, -262145
	str	w1, [sp]
	bne	.L483
.L490:
	ldr	w0, [sp]
	and	w0, w0, -17
	b	.L491
.L483:
	cmp	w0, 24
	bne	.L485
	ldr	w0, [sp]
	orr	w0, w0, 16
.L491:
	str	w0, [sp]
	b	.L484
.L485:
	ldr	w1, [sp]
	cmp	w0, 40
	orr	w1, w1, 262144
	str	w1, [sp]
	ldr	w1, [sp]
	orr	w1, w1, 16
	str	w1, [sp]
	beq	.L490
.L484:
	ldr	w0, [sp]
	orr	w0, w0, 1
	str	w0, [sp]
	ldr	w0, [sp]
	str	w0, [x2, 12]
	b	.L479
	.size	nandc_bch_sel, .-nandc_bch_sel
	.align	2
	.global	zftl_flash_resume
	.type	zftl_flash_resume, %function
zftl_flash_resume:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	add	x0, x20, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	ldrb	w1, [x0, 1028]
	ldr	w2, [x0, 1064]
	cmp	w1, 9
	ldr	x1, [x0, 1056]
	str	w2, [x1]
	ldr	x1, [x0, 1056]
	ldr	w2, [x0, 1068]
	str	w2, [x1, 4]
	ldr	w2, [x0, 1072]
	ldr	x1, [x0, 1056]
	bne	.L493
	str	w2, [x1, 16]
	ldr	w2, [x0, 1076]
	str	w2, [x1, 32]
	ldr	w2, [x0, 1080]
	str	w2, [x1, 80]
	ldr	w2, [x0, 1084]
	str	w2, [x1, 84]
	ldr	w2, [x0, 1088]
	str	w2, [x1, 520]
	ldr	w0, [x0, 1092]
	str	w0, [x1, 8]
.L495:
	add	x0, x20, :lo12:.LANCHOR0
	mov	x19, 0
	add	x23, x0, 1216
	add	x21, x0, 1208
	mov	w24, 2
.L494:
	lsl	x0, x19, 3
	ldrb	w0, [x0, x23]
	sub	w0, w0, #1
	and	w0, w0, 255
	cmp	w0, 253
	bhi	.L496
	and	w22, w19, 255
	mov	w0, w22
	bl	flash_reset
	strb	w24, [x19, x21]
	mov	w0, w22
	bl	zftl_flash_enter_slc_mode
.L496:
	add	x19, x19, 1
	cmp	x19, 4
	bne	.L494
	add	x20, x20, :lo12:.LANCHOR0
	ldrb	w0, [x20, 1192]
	cbz	w0, .L497
	mov	w0, 1
	bl	nandc_set_if_mode
	mov	w0, w19
	bl	flash_set_interface_mode
	mov	w0, w19
	bl	nandc_set_if_mode
	ldr	w0, [x20, 1080]
	lsr	w0, w0, 8
	bl	nandc_set_ddr_para
.L497:
	adrp	x0, .LANCHOR2+28
	ldrb	w0, [x0, #:lo12:.LANCHOR2+28]
	bl	nandc_bch_sel
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L493:
	str	w2, [x1, 8]
	ldr	w2, [x0, 1076]
	str	w2, [x1, 12]
	ldr	w2, [x0, 1080]
	str	w2, [x1, 304]
	ldr	w2, [x0, 1084]
	str	w2, [x1, 308]
	ldr	w2, [x0, 1088]
	str	w2, [x1, 336]
	ldr	w0, [x0, 1092]
	str	w0, [x1, 344]
	b	.L495
	.size	zftl_flash_resume, .-zftl_flash_resume
	.align	2
	.global	rk_nandc_flash_ready
	.type	rk_nandc_flash_ready, %function
rk_nandc_flash_ready:
	stp	x29, x30, [sp, -16]!
	mov	w1, 1
	add	x29, sp, 0
	bl	nandc_irq_disable
	ldp	x29, x30, [sp], 16
	ret
	.size	rk_nandc_flash_ready, .-rk_nandc_flash_ready
	.align	2
	.global	nandc_iqr_wait_flash_ready
	.type	nandc_iqr_wait_flash_ready, %function
nandc_iqr_wait_flash_ready:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	ldr	x0, [x19, 1056]
	bl	rk_nandc_rb_irq_flag_init
	ldrb	w1, [x19, 1028]
	ldr	x0, [x19, 1056]
	cmp	w1, 9
	bne	.L506
	ldr	w1, [x0, 292]
	orr	w1, w1, 2
	str	w1, [x0, 292]
	ldr	w1, [x0, 288]
	orr	w1, w1, 2
	str	w1, [x0, 288]
.L507:
	ldr	w1, [x0]
	tbnz	x1, 9, .L508
	bl	wait_for_nand_flash_ready
.L505:
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L506:
	ldr	w1, [x0, 368]
	orr	w1, w1, 2
	str	w1, [x0, 368]
	ldr	w1, [x0, 364]
	orr	w1, w1, 2
	str	w1, [x0, 364]
	b	.L507
.L508:
	mov	w1, 1
	bl	nandc_irq_disable
	b	.L505
	.size	nandc_iqr_wait_flash_ready, .-nandc_iqr_wait_flash_ready
	.align	2
	.global	flash_erase_duplane_block
	.type	flash_erase_duplane_block, %function
flash_erase_duplane_block:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w0, 255
	adrp	x20, .LANCHOR0
	add	x0, x20, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	mov	w22, w2
	stp	x25, x26, [sp, 64]
	mov	w21, w3
	stp	x23, x24, [sp, 48]
	and	w25, w1, 255
	ldrb	w0, [x0, 1153]
	cmp	w0, w19
	bhi	.L512
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1096
	mov	w2, 695
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L512:
	add	x0, x20, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1153]
	cmp	w1, w19
	bls	.L521
	add	x19, x0, w19, sxtw
	ldr	x26, [x0, 1056]
	adrp	x0, .LANCHOR2
	ldrb	w23, [x19, 1196]
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	and	x19, x23, 255
	add	x24, x19, 8
	add	x24, x26, x24, lsl 8
	tbz	x0, 4, .L514
	adrp	x0, .LC39
	mov	w3, w21
	mov	w2, w22
	mov	w1, w23
	add	x0, x0, :lo12:.LC39
	bl	printk
.L514:
	bl	nandc_wait_flash_ready
	mov	w0, w23
	bl	nandc_cs
	mov	w0, w23
	cbnz	w25, .L515
	bl	zftl_flash_enter_slc_mode
.L516:
	add	x19, x26, x19, lsl 8
	mov	w0, 96
	str	w0, [x19, 2056]
	and	w0, w22, 255
	str	w0, [x19, 2052]
	lsr	w0, w22, 8
	str	w0, [x19, 2052]
	lsr	w0, w22, 16
	str	w0, [x19, 2052]
	add	x0, x20, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1204]
	cbz	w0, .L517
	lsr	w0, w22, 24
	str	w0, [x19, 2052]
.L517:
	add	x0, x20, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1250]
	cbnz	w0, .L522
	mov	w0, 208
	str	w0, [x19, 2056]
	mov	w23, 5
	bl	nandc_wait_flash_ready
	mov	x0, x24
	bl	flash_read_status
	and	w23, w0, w23
.L518:
	mov	w0, 96
	add	x20, x20, :lo12:.LANCHOR0
	str	w0, [x19, 2056]
	and	w0, w21, 255
	str	w0, [x19, 2052]
	lsr	w0, w21, 8
	str	w0, [x19, 2052]
	lsr	w0, w21, 16
	str	w0, [x19, 2052]
	ldrb	w0, [x20, 1204]
	cbz	w0, .L519
	lsr	w3, w21, 24
	str	w3, [x19, 2052]
.L519:
	mov	w0, 208
	str	w0, [x19, 2056]
	mov	w19, 5
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	mov	x0, x24
	bl	flash_read_status
	mov	w2, w0
	bl	nandc_de_cs.constprop.35
	and	w19, w2, w19
	orr	w19, w19, w23
	cbz	w19, .L520
	adrp	x0, .LC40
	mov	w1, w22
	add	x0, x0, :lo12:.LC40
	bl	printk
.L520:
	mov	w0, w19
.L511:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L515:
	bl	zftl_flash_exit_slc_mode
	b	.L516
.L522:
	mov	w23, 0
	b	.L518
.L521:
	mov	w0, -1
	b	.L511
	.size	flash_erase_duplane_block, .-flash_erase_duplane_block
	.align	2
	.global	flash_erase_block_en
	.type	flash_erase_block_en, %function
flash_erase_block_en:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	mov	w23, w2
	stp	x21, x22, [sp, 32]
	and	w22, w0, 255
	adrp	x0, .LANCHOR0
	add	x2, x0, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	mov	w19, 24
	stp	x25, x26, [sp, 64]
	and	w25, w1, 255
	str	x27, [sp, 80]
	mov	x24, x0
	ldrb	w1, [x2, 1205]
	sub	w1, w19, w1
	mov	w19, 1
	lsl	w19, w19, w1
	ldrb	w1, [x2, 1153]
	sub	w19, w19, #1
	and	w19, w19, w23
	cmp	w1, w22
	bhi	.L537
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1128
	mov	w2, 757
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L537:
	add	x0, x24, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1153]
	cmp	w1, w22
	bls	.L544
	add	x1, x0, w22, sxtw
	ldr	x27, [x0, 1056]
	adrp	x0, .LANCHOR2
	ldrb	w21, [x1, 1196]
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	and	x20, x21, 255
	add	x26, x20, 8
	add	x26, x27, x26, lsl 8
	tbz	x0, 4, .L539
	adrp	x0, .LC41
	mov	w3, w25
	mov	w2, w23
	mov	w1, w21
	add	x0, x0, :lo12:.LC41
	bl	printk
.L539:
	bl	nandc_wait_flash_ready
	mov	w0, w21
	bl	nandc_cs
	mov	w0, w21
	cbnz	w25, .L540
	bl	zftl_flash_enter_slc_mode
.L541:
	add	x0, x27, x20, lsl 8
	mov	w1, 96
	str	w1, [x0, 2056]
	and	w1, w19, 255
	str	w1, [x0, 2052]
	lsr	w1, w19, 8
	str	w1, [x0, 2052]
	lsr	w1, w19, 16
	str	w1, [x0, 2052]
	add	x1, x24, :lo12:.LANCHOR0
	ldrb	w1, [x1, 1204]
	cbz	w1, .L542
	lsr	w19, w19, 24
	str	w19, [x0, 2052]
.L542:
	mov	w1, 208
	str	w1, [x0, 2056]
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	mov	x0, x26
	bl	flash_read_status
	mov	w3, w0
	bl	nandc_de_cs.constprop.35
	mov	w0, 5
	ands	w3, w3, w0
	beq	.L543
	add	x0, x24, :lo12:.LANCHOR0
	mov	w1, w22
	ldrh	w2, [x0, 2]
	adrp	x0, .LC42
	add	x0, x0, :lo12:.LC42
	udiv	w2, w23, w2
	bl	printk
	mov	w3, -1
.L543:
	mov	w0, w3
.L536:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L540:
	bl	zftl_flash_exit_slc_mode
	b	.L541
.L544:
	mov	w0, -1
	b	.L536
	.size	flash_erase_block_en, .-flash_erase_block_en
	.align	2
	.global	flash_erase_block
	.type	flash_erase_block, %function
flash_erase_block:
	stp	x29, x30, [sp, -16]!
	mov	w2, w1
	mov	w1, 0
	add	x29, sp, 0
	bl	flash_erase_block_en
	ldp	x29, x30, [sp], 16
	ret
	.size	flash_erase_block, .-flash_erase_block
	.align	2
	.global	flash_erase_all
	.type	flash_erase_all, %function
flash_erase_all:
	stp	x29, x30, [sp, -80]!
	adrp	x0, .LANCHOR2
	add	x0, x0, :lo12:.LANCHOR2
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	stp	x23, x24, [sp, 48]
	add	x20, x20, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	add	x23, x20, 1024
	str	x25, [sp, 64]
	mov	x24, x20
	mov	w19, 0
	ldrb	w1, [x0, 21]
	ldrh	w21, [x0, 22]
	mul	w21, w21, w1
	and	w21, w21, 65535
.L558:
	ldrb	w0, [x20, 1153]
	cmp	w0, w19
	bhi	.L561
	mov	w1, 0
	adrp	x0, .LC43
	add	x0, x0, :lo12:.LC43
	bl	printk
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldr	x25, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L561:
	add	x0, x23, w19, sxtw
	mov	w22, 0
	ldrb	w25, [x0, 172]
.L559:
	cmp	w21, w22, uxth
	bhi	.L560
	add	w19, w19, 1
	and	w19, w19, 65535
	b	.L558
.L560:
	ldrh	w1, [x24, 2]
	mov	w0, w25
	mul	w1, w1, w22
	add	w22, w22, 1
	bl	flash_erase_block
	b	.L559
	.size	flash_erase_all, .-flash_erase_all
	.align	2
	.global	rk_nandc_flash_xfer_completed
	.type	rk_nandc_flash_xfer_completed, %function
rk_nandc_flash_xfer_completed:
	stp	x29, x30, [sp, -16]!
	mov	w1, 0
	add	x29, sp, 0
	bl	nandc_irq_disable
	ldp	x29, x30, [sp], 16
	ret
	.size	rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed
	.align	2
	.global	nandc_xfer_start
	.type	nandc_xfer_start, %function
nandc_xfer_start:
	stp	x29, x30, [sp, -80]!
	and	w1, w1, 255
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	str	x21, [sp, 32]
	and	w21, w0, 255
	mov	x0, x2
	add	x2, x20, :lo12:.LANCHOR0
	and	w6, w21, 1
	ldrb	w4, [x2, 1028]
	cmp	w4, 9
	add	w4, w1, 1
	bne	.L566
	str	wzr, [x29, 56]
	mov	w5, 1
	ubfx	x4, x4, 1, 6
	ldr	w1, [x29, 56]
	bfi	w1, w6, 1, 1
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	orr	w1, w1, 8
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	bfi	w1, w5, 5, 2
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	orr	w1, w1, 536870912
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	orr	w1, w1, 1024
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	and	w1, w1, -17
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	bfi	w1, w4, 22, 6
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	orr	w1, w1, 128
	str	w1, [x29, 56]
	ldrb	w1, [x2, 1251]
	cbz	w1, .L567
	ldrb	w1, [x2, 1252]
	cbz	w1, .L567
	ldr	w1, [x29, 56]
	orr	w1, w1, 512
	str	w1, [x29, 56]
.L567:
	ldr	w1, [x29, 56]
	add	x20, x20, :lo12:.LANCHOR0
	mov	w2, w21
	ubfx	x1, x1, 22, 6
	str	x3, [x20, 1272]
	lsl	w1, w1, 10
	str	x0, [x20, 1264]
	bl	rknand_dma_map_single
	str	w0, [x20, 1280]
	ldr	w1, [x29, 56]
	mov	w2, w21
	ldr	x0, [x20, 1272]
	ubfx	x1, x1, 22, 6
	lsl	w1, w1, 2
	bl	rknand_dma_map_single
	str	w0, [x20, 1284]
	mov	w1, 1
	str	w1, [x20, 1288]
	ldr	x1, [x20, 1056]
	cmp	w21, 0
	ldr	w2, [x20, 1280]
	str	w2, [x1, 52]
	mov	w2, 16
	str	w0, [x1, 56]
	ldr	w0, [x1, 48]
	str	w0, [x29, 64]
	ldr	w0, [x29, 64]
	bfi	w0, w2, 9, 5
	str	w0, [x29, 64]
	mov	w2, 2
	ldr	w0, [x29, 64]
	orr	w0, w0, 448
	str	w0, [x29, 64]
	ldr	w0, [x29, 64]
	bfi	w0, w2, 3, 3
	str	w0, [x29, 64]
	cset	w2, eq
	ldr	w0, [x29, 64]
	orr	w0, w0, 4
	str	w0, [x29, 64]
	ldr	w0, [x29, 64]
	bfi	w0, w2, 1, 1
	str	w0, [x29, 64]
	ldrh	w2, [x20, 1296]
	ldr	w0, [x29, 64]
	orr	w0, w0, 1
	str	w0, [x29, 64]
	ldr	w0, [x29, 64]
	bfi	w0, w2, 16, 11
	str	w0, [x29, 64]
	ldr	w0, [x29, 64]
	str	w0, [x1, 48]
	ldr	w0, [x29, 56]
	str	w0, [x1, 16]
	ldr	w0, [x29, 56]
	orr	w0, w0, 4
	str	w0, [x29, 56]
	ldr	w0, [x29, 56]
	str	w0, [x1, 16]
.L565:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 80
	ret
.L566:
	ldr	x5, [x2, 1056]
	mov	w7, 16
	ubfx	x4, x4, 1, 6
	ldr	w5, [x5, 12]
	str	w5, [x29, 72]
	ldr	w5, [x29, 72]
	bfi	w5, w7, 8, 8
	str	w5, [x29, 72]
	ldr	w5, [x29, 72]
	and	w5, w5, -9
	str	w5, [x29, 72]
	ldr	w5, [x29, 72]
	and	w5, w5, -225
	str	w5, [x29, 72]
	str	wzr, [x29, 56]
	ldr	w5, [x29, 56]
	bfi	w5, w6, 1, 1
	str	w5, [x29, 56]
	mov	w6, 1
	ldr	w5, [x29, 56]
	orr	w5, w5, 8
	str	w5, [x29, 56]
	ldr	w5, [x29, 56]
	bfi	w5, w6, 5, 2
	str	w5, [x29, 56]
	ldr	w5, [x29, 56]
	orr	w5, w5, 536870912
	str	w5, [x29, 56]
	ldr	w5, [x29, 56]
	orr	w5, w5, 1024
	str	w5, [x29, 56]
	ldr	w5, [x29, 56]
	and	w5, w5, -17
	str	w5, [x29, 56]
	ldr	w5, [x29, 56]
	bfi	w5, w4, 22, 6
	str	w5, [x29, 56]
	cbz	w21, .L569
	ldrb	w4, [x2, 1249]
	lsr	w1, w1, 1
	mov	w6, 64
	mov	x5, 0
	cmp	w4, 25
	mov	w4, 128
	csel	w6, w6, w4, cc
	mov	w4, 0
.L571:
	add	w7, w6, w4
	cmp	w1, w5
	bgt	.L572
.L573:
	add	x20, x20, :lo12:.LANCHOR0
	mov	w2, w21
	ldr	x1, [x20, 1256]
	str	x1, [x20, 1272]
	ldr	w1, [x29, 56]
	str	x0, [x20, 1264]
	ubfx	x1, x1, 22, 6
	lsl	w1, w1, 10
	bl	rknand_dma_map_single
	ldr	w1, [x29, 56]
	mov	w2, w21
	str	w0, [x20, 1280]
	ldr	x0, [x20, 1272]
	ubfx	x1, x1, 22, 6
	lsl	w1, w1, 7
	bl	rknand_dma_map_single
	str	w0, [x20, 1284]
	mov	w0, 1
	str	w0, [x20, 1288]
	ldr	x0, [x20, 1056]
	mov	w2, 16
	ldr	w1, [x20, 1280]
	cmp	w21, 0
	str	w1, [x0, 20]
	ldr	w1, [x20, 1284]
	str	w1, [x0, 24]
	str	wzr, [x29, 64]
	ldr	w1, [x29, 64]
	bfi	w1, w2, 9, 5
	str	w1, [x29, 64]
	mov	w2, 2
	ldr	w1, [x29, 64]
	orr	w1, w1, 448
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	bfi	w1, w2, 3, 3
	str	w1, [x29, 64]
	cset	w2, eq
	ldr	w1, [x29, 64]
	orr	w1, w1, 4
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	bfi	w1, w2, 1, 1
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	orr	w1, w1, 1
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	str	w1, [x0, 16]
	ldr	w1, [x29, 72]
	str	w1, [x0, 12]
	ldr	w1, [x29, 56]
	str	w1, [x0, 8]
	ldr	w1, [x29, 56]
	orr	w1, w1, 4
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	str	w1, [x0, 8]
	b	.L565
.L572:
	ldr	x8, [x2, 1256]
	and	x4, x4, 4294967292
	ldr	w9, [x3, x5, lsl 2]
	add	x5, x5, 1
	str	w9, [x8, x4]
	mov	w4, w7
	b	.L571
.L569:
	ldr	x1, [x2, 1256]
	str	w6, [x1]
	b	.L573
	.size	nandc_xfer_start, .-nandc_xfer_start
	.align	2
	.global	nandc_set_seed
	.type	nandc_set_seed, %function
nandc_set_seed:
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	and	x0, x0, 127
	add	x1, x1, 1152
	ldrh	w1, [x1, x0, lsl 1]
	adrp	x0, .LANCHOR0
	add	x0, x0, :lo12:.LANCHOR0
	orr	w2, w1, -1073741824
	ldrb	w3, [x0, 1252]
	cmp	w3, 0
	csel	w1, w2, w1, ne
	ldrb	w2, [x0, 1028]
	ldr	x0, [x0, 1056]
	cmp	w2, 9
	bne	.L584
	str	w1, [x0, 520]
	ret
.L584:
	str	w1, [x0, 336]
	ret
	.size	nandc_set_seed, .-nandc_set_seed
	.align	2
	.global	zftl_flash_de_init
	.type	zftl_flash_de_init, %function
zftl_flash_de_init:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	bl	nandc_wait_flash_ready
	adrp	x4, .LANCHOR0
	mov	x19, x4
	ldrb	w1, [x4, #:lo12:.LANCHOR0]
	cbz	w1, .L589
	add	x0, x4, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1154]
	cbnz	w1, .L589
	ldrb	w0, [x0, 1028]
	cmp	w0, 9
	beq	.L589
	mov	w0, 0
	bl	zftl_flash_exit_slc_mode
.L589:
	add	x20, x19, :lo12:.LANCHOR0
	mov	w0, 0
	bl	hynix_reconfig_rr_para
	ldrb	w0, [x20, 1192]
	cbz	w0, .L590
	ldrb	w0, [x20, 1248]
	tbz	x0, 0, .L590
	mov	w0, 1
	bl	flash_set_interface_mode
	mov	w0, 1
	bl	nandc_set_if_mode
	strb	wzr, [x20, 1192]
.L590:
	add	x19, x19, :lo12:.LANCHOR0
	ldrb	w0, [x19, 1252]
	cbz	w0, .L591
	mov	w0, 0
	strb	wzr, [x19, 1252]
	bl	nandc_set_seed
	mov	w0, 1
	strb	w0, [x19, 1252]
.L591:
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	zftl_flash_de_init, .-zftl_flash_de_init
	.align	2
	.global	nandc_randomizer_enable
	.type	nandc_randomizer_enable, %function
nandc_randomizer_enable:
	adrp	x1, .LANCHOR0+1252
	strb	w0, [x1, #:lo12:.LANCHOR0+1252]
	ret
	.size	nandc_randomizer_enable, .-nandc_randomizer_enable
	.align	2
	.global	nandc_get_chip_if
	.type	nandc_get_chip_if, %function
nandc_get_chip_if:
	adrp	x1, .LANCHOR0+1056
	ubfiz	x0, x0, 8, 8
	add	x0, x0, 2048
	ldr	x1, [x1, #:lo12:.LANCHOR0+1056]
	add	x0, x1, x0
	ret
	.size	nandc_get_chip_if, .-nandc_get_chip_if
	.align	2
	.global	buf_reinit
	.type	buf_reinit, %function
buf_reinit:
	adrp	x0, .LANCHOR0
	add	x1, x0, :lo12:.LANCHOR0
	add	x1, x1, 1304
	mov	w2, 0
.L611:
	and	w3, w2, 255
	strb	wzr, [x1, 2]
	add	w4, w3, 1
	strb	w3, [x1, 1]
	strb	w4, [x1]
	add	w2, w2, 1
	str	xzr, [x1, 16]
	cmp	w2, 32
	add	x1, x1, 64
	bne	.L611
	add	x0, x0, :lo12:.LANCHOR0
	mov	w1, -1
	strb	wzr, [x0, 3352]
	strb	w1, [x0, 3288]
	strb	w2, [x0, 3353]
	ret
	.size	buf_reinit, .-buf_reinit
	.align	2
	.global	buf_add_tail
	.type	buf_add_tail, %function
buf_add_tail:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	str	x21, [sp, 32]
	mov	w0, -1
	strb	w0, [x1]
	mov	x20, x1
	ldrb	w1, [x19]
	cmp	w1, 255
	bne	.L619
	ldrb	w0, [x20, 1]
	cmp	w0, 255
	bne	.L615
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1408
	mov	w2, 74
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L615:
	ldrb	w0, [x20, 1]
	strb	w0, [x19]
.L613:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L619:
	adrp	x0, .LANCHOR0
	add	x2, x0, :lo12:.LANCHOR0
	add	x2, x2, 1304
	mov	x19, x0
.L620:
	sbfiz	x0, x1, 6, 32
	mov	w21, w1
	ldrb	w1, [x2, x0]
	cmp	w1, 255
	bne	.L620
	ldrb	w0, [x20, 1]
	cmp	w0, 255
	bne	.L617
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1408
	mov	w2, 81
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L617:
	add	x0, x19, :lo12:.LANCHOR0
	sbfiz	x21, x21, 6, 32
	add	x0, x0, 1304
	ldrb	w1, [x20, 1]
	strb	w1, [x0, x21]
	b	.L613
	.size	buf_add_tail, .-buf_add_tail
	.align	2
	.type	queue_read_cmd, %function
queue_read_cmd:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	mov	x19, x0
	mov	w0, 48
	ldr	w1, [x19, 40]
	bl	flash_start_page_read
	strb	wzr, [x19, 59]
	mov	w0, 1
	strb	w0, [x19, 58]
	mov	w0, -1
	strb	w0, [x19]
	adrp	x0, .LANCHOR0
	add	x0, x0, :lo12:.LANCHOR0
	mov	x1, x19
	add	x0, x0, 3354
	bl	buf_add_tail
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	queue_read_cmd, .-queue_read_cmd
	.align	2
	.global	zbuf_free
	.type	zbuf_free, %function
zbuf_free:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	adrp	x19, .LANCHOR0
	ldrb	w1, [x0, 2]
	and	w1, w1, 8
	strb	w1, [x0, 2]
	cbz	w1, .L625
	ldr	w1, [x0, 36]
	cmn	w1, #1
	beq	.L625
	mov	x1, x0
	add	x0, x19, :lo12:.LANCHOR0
	add	x0, x0, 3352
	bl	buf_add_tail
.L626:
	add	x19, x19, :lo12:.LANCHOR0
	ldrb	w0, [x19, 3353]
	add	w0, w0, 1
	strb	w0, [x19, 3353]
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L625:
	add	x1, x19, :lo12:.LANCHOR0
	ldrb	w2, [x1, 3352]
	strb	w2, [x0]
	ldrb	w0, [x0, 1]
	strb	w0, [x1, 3352]
	b	.L626
	.size	zbuf_free, .-zbuf_free
	.align	2
	.global	buf_alloc
	.type	buf_alloc, %function
buf_alloc:
	stp	x29, x30, [sp, -48]!
	adrp	x1, .LANCHOR0
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	add	x20, x1, :lo12:.LANCHOR0
	str	x21, [sp, 32]
	and	w21, w0, 255
	mov	x19, x1
	ldrb	w0, [x20, 3353]
	cbz	w0, .L635
.L638:
	add	x1, x19, :lo12:.LANCHOR0
	add	x0, x1, 1304
	ldrb	w3, [x1, 3352]
	ubfiz	x2, x3, 6, 8
	add	x0, x0, x2
	cbz	w21, .L636
.L637:
	add	x1, x19, :lo12:.LANCHOR0
	sbfiz	x3, x3, 6, 32
	add	x4, x1, 1304
	add	x2, x4, x3
	ldrb	w5, [x4, x3]
	strb	w5, [x1, 3352]
	ldrb	w5, [x1, 3353]
	strh	wzr, [x2, 50]
	sub	w5, w5, #1
	strb	w5, [x1, 3353]
	mov	w1, 1
	strb	w1, [x2, 2]
	mov	w1, -1
	strb	wzr, [x2, 56]
	strb	w1, [x4, x3]
	mov	w1, -1
	strb	wzr, [x2, 57]
	str	xzr, [x2, 16]
	str	w1, [x2, 36]
	b	.L634
.L635:
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1424
	mov	w2, 121
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	ldrb	w0, [x20, 3353]
	cbnz	w0, .L638
.L640:
	mov	x0, 0
.L634:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L636:
	ldrb	w1, [x1, 3353]
	cmp	w1, 1
	bne	.L637
	b	.L640
	.size	buf_alloc, .-buf_alloc
	.align	2
	.global	buf_remove_buf
	.type	buf_remove_buf, %function
buf_remove_buf:
	ldrb	w4, [x1, 1]
	ldrb	w2, [x0]
	cmp	w4, w2
	bne	.L648
	ldrb	w1, [x1]
	strb	w1, [x0]
.L652:
	mov	w0, 1
	ret
.L649:
	mov	w3, w2
	sbfiz	x2, x2, 6, 32
	ldrb	w2, [x0, x2]
	cmp	w4, w2
	bne	.L650
	sbfiz	x3, x3, 6, 32
	ldrb	w2, [x1]
	strb	w2, [x0, x3]
	mov	w0, -1
	strb	w0, [x1]
	b	.L652
.L648:
	adrp	x0, .LANCHOR0
	add	x0, x0, :lo12:.LANCHOR0
	add	x0, x0, 1304
.L650:
	cmp	w2, 255
	bne	.L649
	mov	w0, 0
	ret
	.size	buf_remove_buf, .-buf_remove_buf
	.align	2
	.global	buf_remove_free
	.type	buf_remove_free, %function
buf_remove_free:
	stp	x29, x30, [sp, -32]!
	adrp	x5, .LANCHOR0
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x0
	add	x0, x5, :lo12:.LANCHOR0
	mov	x19, x5
	ldrb	w0, [x0, 3353]
	cbnz	w0, .L654
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1440
	mov	w2, 172
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L654:
	add	x19, x19, :lo12:.LANCHOR0
	ldrb	w0, [x19, 3353]
	cbz	w0, .L653
	mov	x1, x20
	add	x0, x19, 3352
	bl	buf_remove_buf
	cmp	w0, 1
	bne	.L653
	ldrb	w0, [x19, 3353]
	sub	w0, w0, #1
	strb	w0, [x19, 3353]
	ldrb	w0, [x20, 2]
	orr	w0, w0, 1
	strb	w0, [x20, 2]
.L653:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	buf_remove_free, .-buf_remove_free
	.align	2
	.global	dump_buf_info
	.type	dump_buf_info, %function
dump_buf_info:
	sub	sp, sp, #64
	adrp	x0, .LC44
	add	x0, x0, :lo12:.LC44
	stp	x29, x30, [sp, 16]
	add	x29, sp, 16
	stp	x19, x20, [sp, 32]
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	str	x21, [sp, 48]
	add	x20, x19, 1304
	adrp	x21, .LC50
	add	x19, x19, 3352
	add	x21, x21, :lo12:.LC50
	ldrb	w1, [x19, 2]
	bl	printk
	ldrb	w1, [x19, 3]
	adrp	x0, .LC45
	add	x0, x0, :lo12:.LC45
	bl	printk
	ldrb	w1, [x19, 4]
	adrp	x0, .LC46
	add	x0, x0, :lo12:.LC46
	bl	printk
	ldrb	w1, [x19, 5]
	adrp	x0, .LC47
	add	x0, x0, :lo12:.LC47
	bl	printk
	ldrb	w1, [x19]
	adrp	x0, .LC48
	add	x0, x0, :lo12:.LC48
	bl	printk
	ldrb	w1, [x19, 1]
	adrp	x0, .LC49
	add	x0, x0, :lo12:.LC49
	bl	printk
.L660:
	ldr	w0, [x20, 40]
	add	x20, x20, 64
	ldrb	w5, [x20, -6]
	ldrh	w4, [x20, -14]
	ldrb	w3, [x20, -62]
	ldrb	w2, [x20, -64]
	ldrb	w1, [x20, -63]
	str	w0, [sp]
	mov	x0, x21
	ldr	w7, [x20, -28]
	ldr	w6, [x20, -12]
	bl	printk
	cmp	x20, x19
	bne	.L660
	ldp	x19, x20, [sp, 32]
	ldp	x29, x30, [sp, 16]
	ldr	x21, [sp, 48]
	add	sp, sp, 64
	ret
	.size	dump_buf_info, .-dump_buf_info
	.align	2
	.global	flash_check_bad_block
	.type	flash_check_bad_block, %function
flash_check_bad_block:
	adrp	x3, .LANCHOR2
	add	x3, x3, :lo12:.LANCHOR2
	and	w5, w0, 255
	lsr	w4, w1, 5
	ldrb	w0, [x3, 21]
	ldrh	w2, [x3, 22]
	mul	w2, w2, w0
	mov	x0, 912
	and	w2, w2, 65535
	add	w2, w2, 31
	asr	w2, w2, 5
	lsl	w2, w2, 2
	umaddl	x0, w2, w5, x0
	adrp	x2, .LANCHOR0+1048
	ldr	x2, [x2, #:lo12:.LANCHOR0+1048]
	add	x0, x0, w4, uxtw 2
	ldr	w0, [x2, x0]
	lsr	w0, w0, w1
	and	w0, w0, 1
	ret
	.size	flash_check_bad_block, .-flash_check_bad_block
	.align	2
	.global	flash_mask_bad_block
	.type	flash_mask_bad_block, %function
flash_mask_bad_block:
	stp	x29, x30, [sp, -48]!
	mov	w2, w1
	add	x29, sp, 0
	str	x21, [sp, 32]
	and	w21, w0, 255
	adrp	x0, .LANCHOR2
	add	x0, x0, :lo12:.LANCHOR2
	stp	x19, x20, [sp, 16]
	mov	w20, w1
	ldrh	w19, [x0, 22]
	ldrb	w1, [x0, 21]
	adrp	x0, .LC51
	add	x0, x0, :lo12:.LC51
	mul	w19, w19, w1
	mov	w1, w21
	bl	printk
	and	w19, w19, 65535
	lsr	w0, w20, 5
	add	w1, w19, 31
	mov	x19, 912
	asr	w1, w1, 5
	mov	w2, 1
	lsl	w1, w1, 2
	umaddl	x1, w1, w21, x19
	add	x1, x1, w0, uxtw 2
	adrp	x0, .LANCHOR0+1048
	ldr	x3, [x0, #:lo12:.LANCHOR0+1048]
	lsl	w0, w2, w20
	ldr	w2, [x3, x1]
	orr	w2, w2, w0
	str	w2, [x3, x1]
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	flash_mask_bad_block, .-flash_mask_bad_block
	.align	2
	.global	str2hex
	.type	str2hex, %function
str2hex:
	ldrb	w1, [x0]
	cmp	w1, 48
	bne	.L667
	ldrb	w1, [x0, 1]
	add	x2, x0, 2
	and	w1, w1, -33
	and	w1, w1, 255
	cmp	w1, 88
	csel	x0, x2, x0, eq
.L667:
	mov	x2, x0
	ldrb	w1, [x2], 1
	and	w1, w1, -33
	and	w1, w1, 255
	cmp	w1, 88
	mov	w1, 0
	csel	x0, x2, x0, eq
.L669:
	ldrb	w2, [x0]
	cbnz	w2, .L674
.L666:
	mov	w0, w1
	ret
.L674:
	sub	w3, w2, #48
	and	w3, w3, 255
	cmp	w3, 9
	bhi	.L670
	add	w1, w2, w1, lsl 4
	sub	w1, w1, #48
.L671:
	add	x0, x0, 1
	b	.L669
.L670:
	sub	w3, w2, #97
	and	w3, w3, 255
	cmp	w3, 5
	bhi	.L672
	add	w1, w2, w1, lsl 4
	sub	w1, w1, #87
	b	.L671
.L672:
	sub	w3, w2, #65
	and	w3, w3, 255
	cmp	w3, 5
	bhi	.L666
	add	w1, w2, w1, lsl 4
	sub	w1, w1, #55
	b	.L671
	.size	str2hex, .-str2hex
	.align	2
	.global	zftl_proc_debug_init
	.type	zftl_proc_debug_init, %function
zftl_proc_debug_init:
	stp	x29, x30, [sp, -16]!
	adrp	x3, .LANCHOR1
	add	x3, x3, :lo12:.LANCHOR1
	mov	x4, 0
	add	x29, sp, 0
	add	x3, x3, 1456
	mov	x2, 0
	mov	w1, 292
	adrp	x0, .LC52
	add	x0, x0, :lo12:.LC52
	bl	proc_create_data
	ldp	x29, x30, [sp], 16
	ret
	.size	zftl_proc_debug_init, .-zftl_proc_debug_init
	.align	2
	.global	ftl_print_info_to_buf
	.type	ftl_print_info_to_buf, %function
ftl_print_info_to_buf:
	stp	x29, x30, [sp, -48]!
	adrp	x2, .LC1
	adrp	x1, .LC2
	add	x2, x2, :lo12:.LC1
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	add	x1, x1, :lo12:.LC2
	stp	x21, x22, [sp, 32]
	mov	x20, x0
	bl	sprintf
	add	x19, x20, w0, sxtw
	adrp	x0, .LANCHOR2
	add	x0, x0, :lo12:.LANCHOR2
	adrp	x22, .LANCHOR0
	add	x21, x22, :lo12:.LANCHOR0
	adrp	x1, .LC53
	add	x1, x1, :lo12:.LC53
	ldrb	w7, [x0, 14]
	ldrb	w6, [x0, 13]
	ldrb	w5, [x0, 12]
	ldrb	w4, [x0, 11]
	ldrb	w3, [x0, 10]
	ldrb	w2, [x0, 9]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	w2, [x21, 1032]
	mov	x0, x19
	adrp	x1, .LC54
	add	x1, x1, :lo12:.LC54
	lsr	w2, w2, 11
	bl	sprintf
	ldr	w2, [x21, 3360]
	add	x19, x19, w0, sxtw
	mov	x0, x19
	adrp	x1, .LC55
	add	x1, x1, :lo12:.LC55
	lsr	w2, w2, 11
	bl	sprintf
	add	x19, x19, w0, sxtw
	adrp	x1, .LC56
	mov	x0, x19
	add	x1, x1, :lo12:.LC56
	bl	strcpy
	add	x19, x19, 10
	ldr	w2, [x21, 3364]
	mov	x0, x19
	adrp	x1, .LC57
	add	x1, x1, :lo12:.LC57
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	w2, [x21, 1032]
	mov	x0, x19
	adrp	x1, .LC58
	add	x1, x1, :lo12:.LC58
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 1128]
	adrp	x1, .LC59
	add	x1, x1, :lo12:.LC59
	ldr	w2, [x0, 524]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 1128]
	adrp	x1, .LC60
	add	x1, x1, :lo12:.LC60
	ldr	w2, [x0, 528]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldrh	w2, [x21, 3368]
	mov	x0, x19
	adrp	x1, .LC61
	add	x1, x1, :lo12:.LC61
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldrh	w2, [x21, 3370]
	mov	x0, x19
	adrp	x1, .LC62
	add	x1, x1, :lo12:.LC62
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldrh	w2, [x21, 3372]
	mov	x0, x19
	adrp	x1, .LC63
	add	x1, x1, :lo12:.LC63
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldrh	w2, [x21, 3374]
	mov	x0, x19
	adrp	x1, .LC64
	add	x1, x1, :lo12:.LC64
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldrh	w2, [x21, 3376]
	mov	x0, x19
	adrp	x1, .LC65
	add	x1, x1, :lo12:.LC65
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldrh	w2, [x21, 3378]
	mov	x0, x19
	adrp	x1, .LC66
	add	x1, x1, :lo12:.LC66
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldrb	w4, [x21, 3380]
	mov	x0, x19
	ldrb	w3, [x21, 3381]
	adrp	x1, .LC67
	ldrb	w2, [x21, 3353]
	add	x1, x1, :lo12:.LC67
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC68
	add	x1, x1, :lo12:.LC68
	ldrh	w3, [x0, 146]
	ldrh	w2, [x0, 148]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC69
	add	x1, x1, :lo12:.LC69
	ldp	w2, w0, [x0, 16]
	add	w2, w0, w2, lsr 11
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC70
	add	x1, x1, :lo12:.LC70
	ldp	w2, w0, [x0, 24]
	add	w2, w0, w2, lsr 11
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC71
	add	x1, x1, :lo12:.LC71
	ldr	w2, [x0, 64]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC72
	add	x1, x1, :lo12:.LC72
	ldr	w2, [x0, 68]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 1128]
	adrp	x1, .LC73
	add	x1, x1, :lo12:.LC73
	ldr	w2, [x0, 12]
	mov	w0, 10
	udiv	w2, w2, w0
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC74
	ldrb	w2, [x22, #:lo12:.LANCHOR0]
	add	x1, x1, :lo12:.LC74
	ldrh	w4, [x0, 150]
	ldr	w3, [x0, 156]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 1128]
	adrp	x1, .LC75
	add	x1, x1, :lo12:.LC75
	ldr	w2, [x0, 556]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 1128]
	adrp	x1, .LC76
	add	x1, x1, :lo12:.LC76
	ldr	w2, [x0, 552]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC77
	add	x1, x1, :lo12:.LC77
	ldr	w2, [x0, 52]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC78
	add	x1, x1, :lo12:.LC78
	ldr	w2, [x0, 60]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC79
	add	x1, x1, :lo12:.LC79
	ldr	w2, [x0, 76]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC80
	add	x1, x1, :lo12:.LC80
	ldr	w2, [x0, 8]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 1128]
	adrp	x1, .LC81
	add	x1, x1, :lo12:.LC81
	ldrb	w4, [x0, 25]
	ldrh	w3, [x0, 22]
	ldrh	w2, [x0, 16]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 1128]
	adrp	x1, .LC82
	add	x1, x1, :lo12:.LC82
	ldrb	w4, [x0, 57]
	ldrh	w3, [x0, 54]
	ldrh	w2, [x0, 48]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 1128]
	adrp	x1, .LC83
	add	x1, x1, :lo12:.LC83
	ldrb	w4, [x0, 89]
	ldrh	w3, [x0, 86]
	ldrh	w2, [x0, 80]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC84
	add	x1, x1, :lo12:.LC84
	ldrh	w6, [x0, 96]
	ldrh	w5, [x0, 92]
	ldrh	w4, [x0, 88]
	ldrh	w2, [x0, 74]
	ldr	w3, [x0, 84]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 3384]
	adrp	x1, .LC85
	add	x1, x1, :lo12:.LC85
	ldrh	w6, [x0, 98]
	ldrh	w5, [x0, 94]
	ldrh	w4, [x0, 90]
	ldr	w3, [x0, 80]
	ldrh	w2, [x0, 72]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldrh	w2, [x21, 3392]
	mov	x0, x19
	adrp	x1, .LC86
	add	x1, x1, :lo12:.LC86
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	w6, [x21, 3396]
	mov	x0, x19
	ldrh	w5, [x21, 3400]
	adrp	x1, .LC87
	ldrh	w4, [x21, 3402]
	add	x1, x1, :lo12:.LC87
	ldrh	w3, [x21, 3404]
	ldrh	w2, [x21, 3406]
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 1128]
	adrp	x1, .LC88
	add	x1, x1, :lo12:.LC88
	ldrh	w5, [x0, 590]
	ldrh	w4, [x0, 588]
	ldrh	w3, [x0, 586]
	ldrh	w2, [x0, 584]
	mov	x0, x19
	bl	sprintf
	add	x19, x19, w0, sxtw
	ldr	x0, [x21, 1128]
	ldr	x1, [x21, 3384]
	add	x5, x0, 512
	mov	x0, x19
	ldp	w2, w3, [x5, 24]
	ldp	w4, w6, [x5, 32]
	ldr	w5, [x1, 44]
	adrp	x1, .LC89
	add	x1, x1, :lo12:.LC89
	bl	sprintf
	add	x0, x19, w0, sxtw
	sub	w0, w0, w20
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	ftl_print_info_to_buf, .-ftl_print_info_to_buf
	.align	2
	.global	zftl_proc_ftl_read
	.type	zftl_proc_ftl_read, %function
zftl_proc_ftl_read:
	stp	x29, x30, [sp, -16]!
	add	x29, sp, 0
	bl	ftl_print_info_to_buf
	ldp	x29, x30, [sp], 16
	ret
	.size	zftl_proc_ftl_read, .-zftl_proc_ftl_read
	.align	2
	.global	ftl_gc_write_buf
	.type	ftl_gc_write_buf, %function
ftl_gc_write_buf:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	ldrb	w1, [x0, 2]
	orr	w1, w1, 2
	strb	w1, [x0, 2]
	mov	x1, x0
	add	x0, x19, 3408
	bl	buf_add_tail
	ldrb	w0, [x19, 3381]
	add	w0, w0, 1
	and	w0, w0, 255
	strb	w0, [x19, 3381]
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	ftl_gc_write_buf, .-ftl_gc_write_buf
	.align	2
	.global	gc_hook
	.type	gc_hook, %function
gc_hook:
	ret
	.size	gc_hook, .-gc_hook
	.align	2
	.global	vpn_check
	.type	vpn_check, %function
vpn_check:
	ret
	.size	vpn_check, .-vpn_check
	.align	2
	.global	ftl_scan_all_data
	.type	ftl_scan_all_data, %function
ftl_scan_all_data:
	ret
	.size	ftl_scan_all_data, .-ftl_scan_all_data
	.align	2
	.global	gc_add_sblk
	.type	gc_add_sblk, %function
gc_add_sblk:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR2
	stp	x19, x20, [sp, 16]
	and	w19, w0, 65535
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	adrp	x21, .LANCHOR0
	stp	x23, x24, [sp, 48]
	and	w24, w1, 65535
	and	w23, w2, 65535
	tbz	x0, 8, .L688
	add	x1, x21, :lo12:.LANCHOR0
	uxtw	x0, w19
	ldr	x2, [x1, 1104]
	ldr	x3, [x1, 1120]
	ldrh	w7, [x1, 3402]
	add	x2, x2, x0, lsl 2
	ldrh	w6, [x1, 3472]
	mov	w1, w19
	ldrh	w5, [x3, x0, lsl 1]
	adrp	x0, .LC90
	ldrb	w4, [x2, 2]
	mov	w3, w23
	mov	w2, w24
	add	x0, x0, :lo12:.LC90
	ubfx	x4, x4, 5, 3
	bl	printk
.L688:
	add	x0, x21, :lo12:.LANCHOR0
	ldrh	w0, [x0, 1096]
	cmp	w0, w19
	bhi	.L689
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1552
	mov	w2, 543
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L689:
	add	x1, x21, :lo12:.LANCHOR0
	ldrh	w0, [x1, 1096]
	cmp	w0, w19
	bhi	.L690
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	mov	w20, 0
	tbz	x0, 10, .L687
	adrp	x0, .LC91
	mov	w3, w23
	mov	w2, w24
	mov	w1, w19
	add	x0, x0, :lo12:.LC91
	bl	printk
.L687:
	mov	w0, w20
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L690:
	ldr	x2, [x1, 1120]
	uxtw	x0, w19
	ldrh	w3, [x2, x0, lsl 1]
	ldr	x2, [x1, 1104]
	add	x0, x2, x0, lsl 2
	ldrb	w2, [x0, 2]
	tst	w2, 224
	bne	.L692
	mov	w20, 0
	cbz	w3, .L687
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1552
	mov	w2, 553
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	b	.L687
.L692:
	ldrh	w0, [x1, 3416]
	cmp	w0, w19
	beq	.L711
	ldr	x0, [x1, 1128]
	ldrh	w5, [x0, 48]
	cmp	w5, w19
	beq	.L711
	ldrh	w5, [x0, 16]
	cmp	w5, w19
	beq	.L711
	ldrh	w5, [x0, 80]
	cmp	w5, w19
	beq	.L711
	ldrh	w5, [x1, 3472]
	add	x1, x1, 3474
	mov	w4, 0
.L693:
	cmp	w4, w5
	bcc	.L694
	cbnz	w24, .L698
	adrp	x1, .LANCHOR3
	add	x1, x1, :lo12:.LANCHOR3
	ldrh	w6, [x1, 1280]
	cmp	w19, w6
	beq	.L711
	add	x1, x1, 1288
	mov	x4, 0
.L697:
	ldrh	w7, [x4, x1]
	cmp	w19, w7
	bne	.L696
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	mov	w20, 0
	tbz	x0, 8, .L687
	mov	w5, w6
	mov	w4, w19
	ubfx	x2, x2, 5, 3
	mov	w1, w19
	adrp	x0, .LC92
	add	x0, x0, :lo12:.LC92
	bl	printk
	b	.L687
.L694:
	ldrh	w6, [x1], 2
	cmp	w6, w19
	beq	.L711
	add	w4, w4, 1
	b	.L693
.L696:
	add	x4, x4, 2
	cmp	x4, 16
	bne	.L697
	ubfiz	x20, x23, 7, 16
	add	x20, x20, 136
	add	x20, x0, x20
.L699:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L700
	add	x0, x21, :lo12:.LANCHOR0
	mov	w4, w3
	mov	w1, w19
	ubfx	x3, x2, 5, 3
	mov	w2, w24
	ldrh	w6, [x0, 3402]
	adrp	x0, .LC93
	add	x0, x0, :lo12:.LC93
	bl	printk
.L700:
	mov	x0, x20
	add	x1, x20, 128
	mov	w2, 65535
.L703:
	ldrh	w3, [x0]
	cmp	w3, w2
	bne	.L701
	strh	w19, [x0]
	add	x21, x21, :lo12:.LANCHOR0
	cbz	w24, .L702
	ldr	x1, [x21, 1128]
	ldrh	w0, [x1, 124]
	add	w0, w0, 1
	strh	w0, [x1, 124]
.L725:
	mov	w20, 1
	b	.L687
.L698:
	add	x20, x0, 392
	b	.L699
.L702:
	ldr	x0, [x21, 1128]
	add	x23, x0, w23, uxth 1
	ldrh	w0, [x23, 120]
	add	w0, w0, 1
	strh	w0, [x23, 120]
	b	.L725
.L701:
	add	x0, x0, 2
	cmp	x1, x0
	bne	.L703
	b	.L725
.L711:
	mov	w20, 0
	b	.L687
	.size	gc_add_sblk, .-gc_add_sblk
	.align	2
	.global	gc_mark_bad_ppa
	.type	gc_mark_bad_ppa, %function
gc_mark_bad_ppa:
	stp	x29, x30, [sp, -64]!
	adrp	x1, .LANCHOR3
	add	x1, x1, :lo12:.LANCHOR3
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	stp	x21, x22, [sp, 32]
	add	x21, x20, :lo12:.LANCHOR0
	str	x23, [sp, 48]
	mov	w19, 24
	mov	w23, 1
	ldrb	w4, [x21, 1205]
	add	x21, x21, 3416
	ldrh	w3, [x1, 1304]
	sub	w19, w19, w4
	ldrb	w1, [x1, 1306]
	sub	w19, w19, w3
	lsr	w2, w0, w3
	mov	w3, w0
	lsl	w19, w23, w19
	sub	w19, w19, #1
	and	w19, w19, w2
	and	w22, w2, 65535
	mov	w2, w22
	adrp	x0, .LC94
	add	x0, x0, :lo12:.LC94
	udiv	w19, w19, w1
	ldr	w1, [x21, 2200]
	and	w19, w19, 65535
	bl	printk
	mov	w1, w23
	mov	w2, 0
	mov	w0, w19
	bl	gc_add_sblk
	ldr	w0, [x21, 2200]
	mov	w1, 0
.L727:
	cmp	w1, w0
	bcc	.L729
	cmp	w0, 5
	bhi	.L728
	add	x20, x20, :lo12:.LANCHOR0
	add	w1, w0, 1
	str	w1, [x20, 5616]
	add	x20, x20, w0, uxtw 1
	strh	w22, [x20, 5620]
.L728:
	mov	w0, 0
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L729:
	add	x2, x21, w1, sxtw 1
	ldrh	w2, [x2, 2204]
	cmp	w2, w22
	beq	.L728
	add	w1, w1, 1
	and	w1, w1, 65535
	b	.L727
	.size	gc_mark_bad_ppa, .-gc_mark_bad_ppa
	.align	2
	.global	gc_get_src_ppa_from_index
	.type	gc_get_src_ppa_from_index, %function
gc_get_src_ppa_from_index:
	adrp	x1, .LANCHOR3+1312
	ubfiz	x0, x0, 2, 16
	ldr	x1, [x1, #:lo12:.LANCHOR3+1312]
	ldr	w0, [x1, x0]
	ret
	.size	gc_get_src_ppa_from_index, .-gc_get_src_ppa_from_index
	.align	2
	.global	gc_write_completed
	.type	gc_write_completed, %function
gc_write_completed:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR0
	stp	x23, x24, [sp, 48]
	add	x24, x22, :lo12:.LANCHOR0
	stp	x25, x26, [sp, 64]
	add	x25, x24, 1304
	stp	x19, x20, [sp, 16]
.L733:
	add	x3, x22, :lo12:.LANCHOR0
	ldrb	w0, [x3, 3356]
	cmp	w0, 255
	bne	.L746
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L746:
	sxtw	x21, w0
	add	x1, x3, 1304
	lsl	x4, x21, 6
	add	x2, x1, x4
	ldrb	w0, [x1, x4]
	ldr	w1, [x2, 52]
	strb	w0, [x3, 3356]
	ldrh	w23, [x2, 48]
	cbz	w1, .L734
	ldr	w2, [x2, 40]
	mov	w0, 1
	str	w2, [x3, 5612]
	strh	w0, [x3, 5610]
	adrp	x0, .LC95
	add	x0, x0, :lo12:.LC95
	bl	printk
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1568
	mov	w2, 956
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L734:
	adrp	x20, .LANCHOR3
	add	x1, x20, :lo12:.LANCHOR3
	ldrb	w0, [x1, 1320]
	cmp	w0, 3
	bne	.L735
	ldrb	w0, [x24, 1212]
	cbnz	w0, .L735
	ldr	x0, [x24, 1128]
	ldrb	w1, [x1, 1321]
	ldrb	w0, [x0, 89]
	mov	w19, w0
	cmp	w1, w0
	bhi	.L747
	cmp	w0, 2
	mov	w0, 2
	csel	w19, w19, w0, ls
.L736:
	add	w19, w19, w19, lsl 1
.L737:
	add	x0, x20, :lo12:.LANCHOR3
	and	x1, x23, 65535
	ldr	x2, [x0, 1328]
	add	x0, x25, x21, lsl 6
	ldrb	w0, [x0, 1]
	ldrb	w1, [x2, x1]
	cmp	w1, w0
	beq	.L738
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1568
	mov	w2, 976
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L738:
	add	x0, x25, x21, lsl 6
	ldrb	w0, [x0, 61]
	cmp	w0, 3
	beq	.L739
	add	x0, x20, :lo12:.LANCHOR3
	ldrb	w1, [x0, 1320]
	cmp	w1, 3
	bne	.L739
	ldrb	w1, [x0, 1336]
	cbnz	w1, .L739
	ldrb	w1, [x24, 1212]
	cbnz	w1, .L739
	ldrb	w1, [x24, 1213]
	cbnz	w1, .L739
	ldrb	w1, [x0, 1322]
	cbz	w1, .L740
	ldrb	w0, [x0, 1323]
	cbnz	w0, .L739
.L740:
	add	x20, x20, :lo12:.LANCHOR3
	mov	w0, 0
	ldr	x2, [x20, 1328]
.L741:
	cmp	w19, w0, uxth
	bls	.L733
	add	w1, w23, w0
	add	w0, w0, 1
	ldrb	w1, [x2, x1]
	add	x1, x25, x1, lsl 6
	strb	wzr, [x1, 61]
	b	.L741
.L747:
	mov	w19, 1
	b	.L736
.L735:
	add	x0, x20, :lo12:.LANCHOR3
	ldrb	w1, [x0, 1322]
	cbz	w1, .L748
	ldrb	w0, [x0, 1323]
	cmp	w0, 0
	cset	w19, ne
	add	w19, w19, 1
	b	.L737
.L748:
	mov	w19, 1
	b	.L737
.L739:
	add	x20, x20, :lo12:.LANCHOR3
	strh	w23, [x24, 5524]
	mov	w21, 0
	mov	w26, -1
.L742:
	cmp	w19, w21, uxth
	bls	.L733
	ldr	x2, [x20, 1328]
	add	w1, w23, w21
	add	w21, w21, 1
	ldrb	w0, [x2, x1]
	strb	w26, [x2, x1]
	sbfiz	x1, x0, 6, 32
	ubfiz	x0, x0, 6, 8
	add	x1, x25, x1
	add	x0, x25, x0
	strb	wzr, [x1, 61]
	bl	zbuf_free
	ldrb	w0, [x24, 3423]
	sub	w0, w0, #1
	strb	w0, [x24, 3423]
	b	.L742
	.size	gc_write_completed, .-gc_write_completed
	.align	2
	.global	gc_get_src_blk
	.type	gc_get_src_blk, %function
gc_get_src_blk:
	adrp	x2, .LANCHOR0
	add	x0, x2, :lo12:.LANCHOR0
	ldr	x1, [x0, 1128]
	ldrh	w0, [x1, 124]
	cbz	w0, .L761
	add	x1, x1, 392
	mov	w3, 1
.L762:
	add	x4, x1, 128
	mov	w5, 65535
.L766:
	ldrh	w0, [x1]
	cmp	w0, w5
	beq	.L764
	mov	w4, -1
	strh	w4, [x1]
	add	x2, x2, :lo12:.LANCHOR0
	cbz	w3, .L765
	ldr	x2, [x2, 1128]
	ldrh	w1, [x2, 124]
	sub	w1, w1, #1
	strh	w1, [x2, 124]
	ret
.L761:
	adrp	x0, .LANCHOR3+1337
	ldrb	w0, [x0, #:lo12:.LANCHOR3+1337]
	add	x3, x1, w0, sxtw 1
	ldrh	w3, [x3, 120]
	cbz	w3, .L767
	ubfiz	x0, x0, 7, 8
	mov	w3, 0
	add	x0, x0, 136
	add	x1, x1, x0
	b	.L762
.L765:
	adrp	x1, .LANCHOR3+1337
	ldr	x2, [x2, 1128]
	ldrb	w1, [x1, #:lo12:.LANCHOR3+1337]
	add	x1, x2, x1, lsl 1
	ldrh	w2, [x1, 120]
	sub	w2, w2, #1
	strh	w2, [x1, 120]
	ret
.L764:
	add	x1, x1, 2
	cmp	x1, x4
	bne	.L766
	ret
.L767:
	mov	w0, 65535
	ret
	.size	gc_get_src_blk, .-gc_get_src_blk
	.align	2
	.global	gc_free_temp_buf
	.type	gc_free_temp_buf, %function
gc_free_temp_buf:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x0, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	ldrb	w1, [x0, 3423]
	cbz	w1, .L776
	ldrb	w1, [x0, 3353]
	cmp	w1, 1
	bhi	.L776
	adrp	x21, .LANCHOR3
	add	x2, x21, :lo12:.LANCHOR3
	ldrh	w20, [x0, 5524]
	add	x0, x0, 1304
	ldrb	w4, [x2, 1321]
	add	w3, w20, 24
	ldrh	w1, [x2, 1338]
	mul	w1, w1, w4
	ldr	x4, [x2, 1328]
	cmp	w1, w3
	csel	w1, w1, w3, ls
.L771:
	cmp	w20, w1
	bcc	.L774
.L776:
	mov	w0, 0
	b	.L769
.L774:
	uxtw	x22, w20
	ldrb	w2, [x4, x22]
	cmp	w2, 255
	beq	.L772
	sbfiz	x3, x2, 6, 32
	add	x3, x0, x3
	ldrb	w3, [x3, 61]
	cbnz	w3, .L772
	ubfiz	x2, x2, 6, 8
	add	x0, x0, x2
	bl	zbuf_free
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L773
	add	x0, x21, :lo12:.LANCHOR3
	mov	w1, w20
	ldr	x0, [x0, 1328]
	ldrb	w2, [x0, x22]
	adrp	x0, .LC96
	add	x0, x0, :lo12:.LC96
	bl	printk
.L773:
	add	x21, x21, :lo12:.LANCHOR3
	add	x19, x19, :lo12:.LANCHOR0
	mov	w1, -1
	ldr	x0, [x21, 1328]
	strb	w1, [x0, x22]
	ldrb	w0, [x19, 3423]
	sub	w0, w0, #1
	strb	w0, [x19, 3423]
	mov	w0, 1
.L769:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L772:
	add	w20, w20, 1
	b	.L771
	.size	gc_free_temp_buf, .-gc_free_temp_buf
	.align	2
	.global	get_ink_scaned_blk
	.type	get_ink_scaned_blk, %function
get_ink_scaned_blk:
	adrp	x1, .LANCHOR0
	add	x1, x1, :lo12:.LANCHOR0
	add	x0, x1, 3416
	ldrh	w2, [x1, 5528]
	cbz	w2, .L786
	sub	w2, w2, #1
	strh	w2, [x1, 5528]
	add	x0, x0, w2, sxtw 1
	ldrh	w0, [x0, 2114]
	ret
.L786:
	mov	w0, 65535
	ret
	.size	get_ink_scaned_blk, .-get_ink_scaned_blk
	.align	2
	.global	print_gc_debug_info
	.type	print_gc_debug_info, %function
print_gc_debug_info:
	adrp	x0, .LANCHOR0
	add	x0, x0, :lo12:.LANCHOR0
	stp	x29, x30, [sp, -16]!
	add	x29, sp, 0
	ldrh	w6, [x0, 3392]
	ldrb	w5, [x0, 3423]
	ldrb	w4, [x0, 3353]
	ldrh	w3, [x0, 5522]
	ldrh	w2, [x0, 3418]
	ldrh	w1, [x0, 3416]
	adrp	x0, .LC97
	add	x0, x0, :lo12:.LC97
	bl	printk
	ldp	x29, x30, [sp], 16
	ret
	.size	print_gc_debug_info, .-print_gc_debug_info
	.align	2
	.global	_list_pop_index_node
	.type	_list_pop_index_node, %function
_list_pop_index_node:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	ldr	x20, [x0]
	cbz	x20, .L795
	adrp	x3, .LANCHOR0+1040
	and	w1, w1, 65535
	mov	w4, 65535
	mov	w5, 6
	ldr	x19, [x3, #:lo12:.LANCHOR0+1040]
.L791:
	cbnz	w1, .L792
.L794:
	sub	x19, x20, x19
	mov	x1, -6148914691236517206
	asr	x19, x19, 1
	movk	x1, 0xaaab, lsl 0
	mul	x19, x19, x1
	and	w19, w19, 65535
	mov	w1, w19
	bl	_list_remove_node
	mov	w0, -1
	strh	w0, [x20]
	strh	w0, [x20, 2]
	mov	w0, w19
.L789:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L792:
	ldrh	w3, [x20]
	cmp	w3, w4
	beq	.L794
	sub	w1, w1, #1
	umaddl	x20, w3, w5, x19
	and	w1, w1, 65535
	b	.L791
.L795:
	mov	w0, 65535
	b	.L789
	.size	_list_pop_index_node, .-_list_pop_index_node
	.align	2
	.global	_list_get_gc_head_node
	.type	_list_get_gc_head_node, %function
_list_get_gc_head_node:
	ldr	x0, [x0]
	and	w1, w1, 65535
	cbz	x0, .L802
	adrp	x2, .LANCHOR0+1040
	mov	w3, 65535
	mov	w4, 6
	ldr	x2, [x2, #:lo12:.LANCHOR0+1040]
.L799:
	cbz	w1, .L800
	ldrh	w0, [x0]
	cmp	w0, w3
	bne	.L801
	ret
.L801:
	sub	w1, w1, #1
	umaddl	x0, w0, w4, x2
	and	w1, w1, 65535
	b	.L799
.L802:
	mov	w0, 65535
	ret
.L800:
	sub	x0, x0, x2
	mov	x1, -6148914691236517206
	asr	x0, x0, 1
	movk	x1, 0xaaab, lsl 0
	mul	x0, x0, x1
	and	w0, w0, 65535
	ret
	.size	_list_get_gc_head_node, .-_list_get_gc_head_node
	.align	2
	.type	zftl_get_gc_node.part.10, %function
zftl_get_gc_node.part.10:
	stp	x29, x30, [sp, -16]!
	mov	w1, w0
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x29, sp, 0
	add	x0, x0, 1344
	bl	_list_get_gc_head_node
	ldp	x29, x30, [sp], 16
	ret
	.size	zftl_get_gc_node.part.10, .-zftl_get_gc_node.part.10
	.align	2
	.global	gc_search_src_blk
	.type	gc_search_src_blk, %function
gc_search_src_blk:
	stp	x29, x30, [sp, -160]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w22, w0, 255
	and	w0, w1, 255
	stp	x19, x20, [sp, 16]
	str	w0, [x29, 144]
	adrp	x19, .LANCHOR0
	add	x0, x19, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	and	w20, w2, 255
	stp	x27, x28, [sp, 80]
	ldr	x2, [x0, 1128]
	add	x1, x2, w22, sxtw 1
	ldrh	w21, [x1, 120]
	cbz	w21, .L807
	mov	w0, w21
.L806:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 160
	ret
.L807:
	ldrh	w1, [x0, 3472]
	cmp	w1, 1
	bhi	.L809
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	strh	wzr, [x0, 1352]
	strh	wzr, [x0, 1354]
	strh	wzr, [x0, 1356]
.L809:
	cbnz	w22, .L810
	adrp	x25, .LANCHOR3
	adrp	x27, .LC98
	add	x26, x25, :lo12:.LANCHOR3
	add	x27, x27, :lo12:.LC98
	add	x0, x26, 1360
	mov	w23, 0
	mov	w24, 0
	str	x0, [x29, 136]
.L811:
	add	w28, w20, 1
	cmp	w24, w28
	bge	.L816
	ldrh	w6, [x26, 1354]
	ldr	x0, [x29, 136]
	mov	w1, w6
	bl	_list_get_gc_head_node
	add	w2, w6, 1
	and	w2, w2, 65535
	strh	w2, [x26, 1354]
	and	w1, w0, 65535
	mov	w0, 65535
	mov	w4, w1
	cmp	w1, w0
	beq	.L812
	adrp	x0, .LANCHOR2
	uxtw	x6, w1
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L813
	add	x0, x19, :lo12:.LANCHOR0
	str	x6, [x29, 128]
	str	w1, [x29, 120]
	ldr	x0, [x0, 1120]
	ldrh	w3, [x0, x6, lsl 1]
	mov	x0, x27
	bl	printk
	ldr	w4, [x29, 120]
	ldr	x6, [x29, 128]
.L813:
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x1, [x0, 1120]
	ldrh	w0, [x0, 3402]
	ldrh	w1, [x1, x6, lsl 1]
	cmp	w1, w0
	bcs	.L814
	mov	w2, 0
	mov	w1, 0
	mov	w0, w4
	bl	gc_add_sblk
	cbz	w0, .L815
	add	w5, w23, 1
	and	w23, w5, 65535
	cmp	w23, w20
	bcc	.L815
.L816:
	ldr	x0, [x29, 144]
	tbz	x0, 1, .L818
	add	x6, x19, :lo12:.LANCHOR0
	ldrh	w0, [x6, 3378]
	cmp	w0, 32
	bls	.L818
	adrp	x27, .LANCHOR3
	add	x25, x27, :lo12:.LANCHOR3
	add	x0, x25, 1368
	mov	x26, x6
	str	x0, [x29, 136]
	mov	w24, 0
	and	w0, w20, 65535
	str	w0, [x29, 128]
.L819:
	cmp	w28, w24
	ble	.L823
	ldrh	w7, [x25, 1356]
	ldr	x0, [x29, 136]
	mov	w1, w7
	bl	_list_get_gc_head_node
	add	w7, w7, 1
	strh	w7, [x25, 1356]
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L820
	ldr	x2, [x26, 1120]
	ubfiz	x1, x1, 1, 16
	ldrh	w2, [x2, x1]
	ldrh	w1, [x26, 3400]
	cmp	w2, w1
	bcs	.L820
	mov	w2, 0
	mov	w1, 0
	bl	gc_add_sblk
	cbz	w0, .L822
	add	w5, w23, 1
	ldr	w0, [x29, 128]
	and	w23, w5, 65535
	cmp	w23, w0
	bcc	.L822
.L823:
	cmp	w23, w20
	bcs	.L825
	add	x27, x27, :lo12:.LANCHOR3
	add	x2, x19, :lo12:.LANCHOR0
	ldrh	w0, [x27, 1338]
	ldrb	w4, [x27, 1321]
	ldrh	w1, [x27, 1376]
	ldrh	w3, [x2, 3400]
	mul	w0, w0, w4
	sub	w0, w0, w1, lsr 2
	cmp	w3, w0
	bge	.L818
	add	w1, w3, w1, lsr 3
	strh	w1, [x2, 3400]
.L818:
	ldr	x0, [x29, 144]
	tbz	x0, 0, .L826
	and	w25, w20, 65535
	cmp	w23, w25
	bcs	.L826
	adrp	x24, .LANCHOR3
	add	x27, x24, :lo12:.LANCHOR3
	mov	w26, 65535
.L831:
	ldrh	w6, [x27, 1352]
	mov	w0, w6
	bl	zftl_get_gc_node.part.10
	add	w6, w6, 1
	strh	w6, [x27, 1352]
	cmp	w26, w0, uxth
	beq	.L827
	mov	w2, 0
	mov	w1, 0
	bl	gc_add_sblk
	cbz	w0, .L828
	add	w5, w23, 1
	and	w23, w5, 65535
	cmp	w25, w23
	bhi	.L828
.L829:
	add	x24, x24, :lo12:.LANCHOR3
	add	x19, x19, :lo12:.LANCHOR0
	ldrh	w0, [x24, 1376]
	ldrh	w1, [x19, 3402]
	cmp	w1, w0, lsr 1
	bls	.L826
	sub	w0, w1, w0, lsr 3
	b	.L917
.L814:
	add	x25, x25, :lo12:.LANCHOR3
	strh	wzr, [x25, 1354]
	b	.L816
.L812:
	strh	wzr, [x26, 1354]
	b	.L816
.L815:
	add	w24, w24, 1
	and	w24, w24, 65535
	b	.L811
.L820:
	strh	wzr, [x25, 1356]
	b	.L823
.L822:
	add	w3, w24, 1
	and	w24, w3, 65535
	b	.L819
.L825:
	add	x1, x19, :lo12:.LANCHOR0
	add	x27, x27, :lo12:.LANCHOR3
	ldrh	w2, [x1, 3400]
	ldrh	w0, [x27, 1376]
	cmp	w2, w0
	bls	.L818
	sub	w0, w2, w0, lsr 3
	strh	w0, [x1, 3400]
	b	.L818
.L827:
	strh	wzr, [x27, 1352]
.L830:
	cmp	w23, w25
	bcs	.L829
	add	x19, x19, :lo12:.LANCHOR0
	add	x24, x24, :lo12:.LANCHOR3
	ldrh	w1, [x19, 3402]
	ldrh	w0, [x24, 1376]
	cmp	w1, w0
	bcs	.L826
	add	w0, w1, w0, lsr 3
.L917:
	strh	w0, [x19, 3402]
.L826:
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L862
	ldr	w2, [x29, 144]
	adrp	x0, .LC99
	mov	w4, w20
	mov	w3, w23
	mov	w1, w22
	add	x0, x0, :lo12:.LC99
	bl	printk
.L862:
	mov	w0, w23
	b	.L806
.L828:
	add	w21, w21, 1
	and	w21, w21, 65535
	cmp	w25, w21
	bhi	.L831
	b	.L830
.L810:
	adrp	x24, .LANCHOR3
	add	x0, x24, :lo12:.LANCHOR3
	cmp	w20, 1
	ldrb	w25, [x0, 1321]
	ldrh	w0, [x0, 1338]
	mul	w25, w25, w0
	and	w25, w25, 65535
	bne	.L832
	cbz	w1, .L832
	ldrh	w2, [x2, 80]
	mov	w0, 65535
	cmp	w2, w0
	beq	.L865
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w0, [x0, 5522]
	sub	w25, w25, w0
	and	w25, w25, 65535
.L865:
	mov	w20, 8
.L832:
	ldr	w0, [x29, 144]
	add	x2, x19, :lo12:.LANCHOR0
	add	x3, x24, :lo12:.LANCHOR3
	and	w0, w0, 1
	str	w0, [x29, 136]
	ldr	x0, [x29, 144]
	strh	wzr, [x2, 5608]
	strh	wzr, [x3, 1378]
	tbz	x0, 0, .L866
	ldrh	w0, [x2, 3374]
	ldrh	w3, [x3, 1380]
	cmp	w0, w3, lsr 2
	bhi	.L834
	ldrh	w2, [x2, 3376]
	cmp	w2, w0
	bcs	.L867
.L834:
	cmp	w1, 1
	bls	.L836
.L838:
	mov	w23, 0
.L837:
	add	x27, x24, :lo12:.LANCHOR3
	add	x8, x19, :lo12:.LANCHOR0
	and	w0, w20, 65535
	mov	w28, 0
	mov	w26, 64
	str	w0, [x29, 128]
.L841:
	ldrh	w6, [x27, 1352]
	str	x8, [x29, 112]
	mov	w0, w6
	bl	zftl_get_gc_node.part.10
	and	w4, w0, 65535
	str	w4, [x29, 120]
	mov	w1, 65535
	cmp	w4, w1
	beq	.L839
	add	w6, w6, 1
	mov	w2, w22
	strh	w6, [x27, 1352]
	mov	w1, 0
	bl	gc_add_sblk
	ldr	x8, [x29, 112]
	cbz	w0, .L840
	ldr	w4, [x29, 120]
	add	w5, w23, 1
	ldr	x0, [x8, 1120]
	and	w23, w5, 65535
	ubfiz	x4, x4, 1, 16
	ldrh	w0, [x0, x4]
	add	w3, w28, w0
	ldr	w0, [x29, 128]
	and	w28, w3, 65535
	cmp	w23, w0
	bcs	.L835
	cmp	w25, w28
	bcc	.L835
	ldrh	w0, [x8, 3376]
	ldrh	w1, [x8, 3374]
	cmp	w0, w1, lsl 1
	ble	.L840
.L835:
	add	x0, x19, :lo12:.LANCHOR0
	add	x2, x24, :lo12:.LANCHOR3
	ldrh	w1, [x0, 3376]
	ldrh	w2, [x2, 1380]
	cmp	w1, w2, lsr 2
	bhi	.L863
	ldrh	w0, [x0, 3374]
	add	w0, w0, 8
	cmp	w1, w0
	ble	.L833
.L863:
	cmp	w25, w28
	bls	.L833
	add	x27, x24, :lo12:.LANCHOR3
	mov	w26, 64
	add	x0, x27, 1360
	str	x0, [x29, 128]
	add	x0, x19, :lo12:.LANCHOR0
	str	x0, [x29, 120]
	and	w0, w20, 65535
	str	w0, [x29, 112]
.L844:
	ldrh	w6, [x27, 1354]
	ldr	x0, [x29, 128]
	mov	w1, w6
	bl	_list_get_gc_head_node
	and	w7, w0, 65535
	str	w7, [x29, 104]
	mov	w1, 65535
	cmp	w7, w1
	beq	.L842
	add	w6, w6, 1
	mov	w2, w22
	strh	w6, [x27, 1354]
	mov	w1, 0
	bl	gc_add_sblk
	cbz	w0, .L843
	ldr	x0, [x29, 120]
	add	w5, w23, 1
	ldr	w7, [x29, 104]
	and	w23, w5, 65535
	ldr	x0, [x0, 1120]
	ubfiz	x7, x7, 1, 16
	ldrh	w0, [x0, x7]
	add	w3, w28, w0
	ldr	w0, [x29, 112]
	and	w28, w3, 65535
	cmp	w23, w0
	bcs	.L833
	cmp	w25, w28
	bcs	.L843
.L833:
	ldr	x0, [x29, 144]
	tbz	x0, 1, .L845
	add	x7, x19, :lo12:.LANCHOR0
	ldrh	w0, [x7, 3378]
	cmp	w0, 32
	bls	.L845
	cmp	w28, w25
	bcs	.L845
	add	x27, x24, :lo12:.LANCHOR3
	mov	w26, 64
	add	x0, x27, 1368
	str	x0, [x29, 128]
	and	w0, w20, 65535
	str	w0, [x29, 120]
.L851:
	ldrh	w8, [x27, 1356]
	ldr	x0, [x29, 128]
	mov	w1, w8
	str	x7, [x29, 112]
	bl	_list_get_gc_head_node
	and	w4, w0, 65535
	mov	w1, 65535
	cmp	w4, w1
	beq	.L846
	add	w8, w8, 1
	strh	w8, [x27, 1356]
	cmp	w20, 1
	ldr	x7, [x29, 112]
	bne	.L847
	ldrb	w1, [x27, 1321]
	ldrh	w2, [x27, 1338]
	mul	w2, w1, w2
	ldrh	w1, [x27, 1376]
	sub	w1, w2, w1, lsr 3
	strh	w1, [x7, 3406]
.L847:
	ldr	x1, [x7, 1120]
	ubfiz	x4, x4, 1, 16
	stp	x4, x7, [x29, 104]
	ldrh	w2, [x1, x4]
	ldrh	w1, [x7, 3406]
	cmp	w2, w1
	bcs	.L848
	mov	w2, w22
	mov	w1, 0
	bl	gc_add_sblk
	ldr	x7, [x29, 112]
	cbz	w0, .L849
	ldr	x0, [x7, 1120]
	add	w5, w23, 1
	ldr	x4, [x29, 104]
	add	w21, w21, 1
	and	w23, w5, 65535
	and	w21, w21, 65535
	ldrh	w0, [x0, x4]
	add	w3, w28, w0
	ldr	w0, [x29, 120]
	and	w28, w3, 65535
	cmp	w23, w0
	bcs	.L850
	cmp	w25, w28
	bcs	.L849
.L850:
	cmp	w23, w20
	bcc	.L852
	cbnz	w21, .L853
	add	x1, x19, :lo12:.LANCHOR0
	add	x0, x24, :lo12:.LANCHOR3
	ldrh	w1, [x1, 3378]
	ldrh	w0, [x0, 1382]
	cmp	w1, w0
	bls	.L853
.L852:
	add	x4, x24, :lo12:.LANCHOR3
	add	x6, x19, :lo12:.LANCHOR0
	ldrh	w2, [x4, 1376]
	ldrh	w0, [x4, 1338]
	ldrb	w4, [x4, 1321]
	ldrh	w1, [x6, 3406]
	lsr	w2, w2, 3
	mul	w0, w0, w4
	sub	w0, w0, w2
	cmp	w1, w0
	bge	.L845
	add	w1, w1, w2
	strh	w1, [x6, 3406]
.L845:
	ldr	w0, [x29, 136]
	cbz	w0, .L826
	and	w27, w20, 65535
	cmp	w23, w27
	bcs	.L826
	cmp	w28, w25
	bcs	.L826
	add	x4, x24, :lo12:.LANCHOR3
	add	x7, x19, :lo12:.LANCHOR0
	add	x0, x4, 1360
	mov	w26, 64
	str	x0, [x29, 136]
.L861:
	ldrh	w6, [x4, 1354]
	ldr	x0, [x29, 136]
	mov	w1, w6
	stp	x7, x4, [x29, 120]
	bl	_list_get_gc_head_node
	and	w21, w0, 65535
	mov	w1, 65535
	ldr	x4, [x29, 128]
	cmp	w21, w1
	beq	.L855
	ldr	x7, [x29, 120]
	ubfiz	x21, x21, 1, 16
	add	w6, w6, 1
	strh	w6, [x4, 1354]
	ldr	x1, [x7, 1120]
	ldrh	w2, [x1, x21]
	ldrh	w1, [x7, 3404]
	cmp	w2, w1
	bcs	.L856
	ldrh	w2, [x4, 1380]
	ldrh	w1, [x7, 3376]
	cmp	w1, w2, lsr 1
	bls	.L857
.L856:
	stp	x7, x4, [x29, 120]
	mov	w2, w22
	mov	w1, 0
	bl	gc_add_sblk
	ldp	x7, x4, [x29, 120]
	cbz	w0, .L858
	ldr	x0, [x7, 1120]
	add	w5, w23, 1
	and	w23, w5, 65535
	cmp	w27, w23
	ldrh	w0, [x0, x21]
	add	w3, w28, w0
	and	w28, w3, 65535
	bls	.L859
	cmp	w25, w28
	bcs	.L858
.L860:
	add	x24, x24, :lo12:.LANCHOR3
	add	x19, x19, :lo12:.LANCHOR0
	ldrh	w0, [x24, 1376]
	ldrh	w1, [x19, 3404]
	cmp	w1, w0, lsr 1
	bls	.L826
	sub	w0, w1, w0, lsr 3
	strh	w0, [x19, 3404]
	b	.L826
.L836:
	add	x5, x24, :lo12:.LANCHOR3
	lsr	w0, w0, 2
	strh	w0, [x5, 1352]
	mov	w0, 0
	bl	zftl_get_gc_node.part.10
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L838
	add	x2, x19, :lo12:.LANCHOR0
	ubfiz	x1, x1, 1, 16
	ldr	x3, [x2, 1120]
	ldrh	w2, [x5, 1376]
	ldrh	w1, [x3, x1]
	cmp	w1, w2, lsr 2
	bcs	.L838
	mov	w1, 1
	mov	w2, w22
	strh	w1, [x5, 1352]
	mov	w1, 0
	bl	gc_add_sblk
	cmp	w0, 0
	cset	w23, ne
	b	.L837
.L839:
	strh	wzr, [x27, 1352]
	b	.L835
.L840:
	sub	w26, w26, #1
	ands	w26, w26, 65535
	bne	.L841
	b	.L835
.L842:
	cmp	w6, 64
	bls	.L833
	strh	wzr, [x27, 1354]
	b	.L833
.L843:
	sub	w26, w26, #1
	ands	w26, w26, 65535
	bne	.L844
	b	.L833
.L866:
	mov	w28, 0
	mov	w23, 0
	b	.L833
.L848:
	add	x0, x24, :lo12:.LANCHOR3
	strh	wzr, [x0, 1356]
	b	.L850
.L846:
	strh	wzr, [x27, 1356]
	b	.L850
.L849:
	sub	w26, w26, #1
	ands	w26, w26, 65535
	bne	.L851
	b	.L850
.L853:
	add	x24, x24, :lo12:.LANCHOR3
	add	x19, x19, :lo12:.LANCHOR0
	ldrh	w0, [x24, 1376]
	ldrb	w1, [x24, 1321]
	ldrh	w2, [x19, 3406]
	mul	w1, w1, w0
	cmp	w2, w1
	ble	.L826
	sub	w0, w2, w0, lsr 3
	strh	w0, [x19, 3406]
	b	.L826
.L855:
	cmp	w6, 64
	bls	.L857
	strh	wzr, [x4, 1354]
.L857:
	cmp	w23, w27
	bcc	.L860
.L859:
	add	x24, x24, :lo12:.LANCHOR3
	add	x19, x19, :lo12:.LANCHOR0
	ldrh	w1, [x24, 1376]
	ldrb	w0, [x24, 1321]
	ldrh	w2, [x19, 3404]
	mul	w0, w0, w1
	sub	w0, w0, #32
	cmp	w2, w0
	bge	.L826
	add	w1, w2, w1, lsr 3
	strh	w1, [x19, 3404]
	b	.L826
.L858:
	sub	w26, w26, #1
	ands	w26, w26, 65535
	bne	.L861
	b	.L857
.L867:
	mov	w28, 0
	mov	w23, 0
	b	.L835
	.size	gc_search_src_blk, .-gc_search_src_blk
	.align	2
	.global	zftl_get_gc_node
	.type	zftl_get_gc_node, %function
zftl_get_gc_node:
	stp	x29, x30, [sp, -16]!
	and	w1, w1, 65535
	and	w0, w0, 65535
	cmp	w1, 5
	add	x29, sp, 0
	bne	.L919
	mov	w1, w0
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x0, x0, 1368
.L923:
	bl	_list_get_gc_head_node
	b	.L924
.L919:
	cmp	w1, 2
	bne	.L921
	bl	zftl_get_gc_node.part.10
.L924:
	and	w0, w0, 65535
	ldp	x29, x30, [sp], 16
	ret
.L921:
	mov	w1, w0
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x0, x0, 1360
	b	.L923
	.size	zftl_get_gc_node, .-zftl_get_gc_node
	.align	2
	.global	zftl_insert_free_list
	.type	zftl_insert_free_list, %function
zftl_insert_free_list:
	adrp	x2, .LANCHOR0
	add	x2, x2, :lo12:.LANCHOR0
	stp	x29, x30, [sp, -16]!
	and	w1, w0, 65535
	adrp	x3, .LANCHOR3
	add	x3, x3, :lo12:.LANCHOR3
	add	x29, sp, 0
	ldr	x0, [x2, 1104]
	add	x0, x0, w1, uxth 2
	ldrb	w0, [x0, 2]
	ands	w0, w0, 24
	bne	.L926
	add	x2, x2, 3368
	add	x0, x3, 1384
.L930:
	bl	_insert_free_list
	ldp	x29, x30, [sp], 16
	ret
.L926:
	cmp	w0, 16
	bne	.L928
	add	x2, x2, 3370
	add	x0, x3, 1392
	b	.L930
.L928:
	add	x2, x2, 3372
	add	x0, x3, 1400
	b	.L930
	.size	zftl_insert_free_list, .-zftl_insert_free_list
	.align	2
	.global	zftl_insert_data_list
	.type	zftl_insert_data_list, %function
zftl_insert_data_list:
	adrp	x2, .LANCHOR0
	add	x2, x2, :lo12:.LANCHOR0
	stp	x29, x30, [sp, -16]!
	and	w1, w0, 65535
	add	x29, sp, 0
	ldr	x0, [x2, 1104]
	add	x0, x0, w1, uxth 2
	ldrb	w3, [x0, 2]
	and	w3, w3, 224
	cmp	w3, 64
	bne	.L932
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3374
	add	x0, x0, 1344
.L936:
	bl	_insert_data_list
.L931:
	ldp	x29, x30, [sp], 16
	ret
.L932:
	cmp	w3, 96
	bne	.L934
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3376
	add	x0, x0, 1360
	b	.L936
.L934:
	cmp	w3, 160
	bne	.L931
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3378
	add	x0, x0, 1368
	b	.L936
	.size	zftl_insert_data_list, .-zftl_insert_data_list
	.align	2
	.global	zftl_gc_get_free_sblk
	.type	zftl_gc_get_free_sblk, %function
zftl_gc_get_free_sblk:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w22, w0, 65535
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x21, x19, :lo12:.LANCHOR0
	str	x23, [sp, 48]
	and	w23, w1, 65535
	ldr	x0, [x21, 1128]
	ldrh	w20, [x0, 588]
	mov	w0, 65535
	cmp	w20, w0
	beq	.L938
	cbnz	w22, .L938
	mov	w1, w20
	adrp	x0, .LC100
	add	x0, x0, :lo12:.LC100
	bl	printk
	ldr	x0, [x21, 1128]
	mov	w1, -1
	strh	w1, [x0, 588]
.L939:
	mov	w0, w20
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L938:
	add	x2, x19, :lo12:.LANCHOR0
	adrp	x21, .LANCHOR3
	ldrh	w0, [x2, 3370]
	ldrh	w1, [x2, 3372]
	cmp	w0, w1
	bcc	.L940
	ldrh	w2, [x2, 3368]
	cmp	w2, w0
	bls	.L941
	cbz	w1, .L941
.L940:
	cbnz	w22, .L942
	lsr	w1, w1, 2
.L943:
	add	x2, x19, :lo12:.LANCHOR0
	add	x0, x21, :lo12:.LANCHOR3
	add	x2, x2, 3372
	add	x0, x0, 1400
.L958:
	bl	_list_pop_index_node
	and	w20, w0, 65535
	mov	w0, 65535
	cmp	w20, w0
	bne	.L946
	add	x0, x19, :lo12:.LANCHOR0
	add	x21, x21, :lo12:.LANCHOR3
	mov	w2, w23
	mov	w1, w20
	ldrh	w5, [x0, 3372]
	ldrh	w4, [x0, 3368]
	adrp	x0, .LC101
	ldr	x3, [x21, 1384]
	add	x0, x0, :lo12:.LC101
	bl	printk
.L946:
	cbz	w22, .L939
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L939
	add	x19, x19, :lo12:.LANCHOR0
	uxtw	x3, w20
	lsl	x0, x3, 2
	ldr	x1, [x19, 1104]
	ldr	x6, [x19, 1120]
	add	x2, x1, x0
	ldr	w4, [x1, x0]
	ldrh	w6, [x6, x3, lsl 1]
	ldrb	w2, [x2, 2]
	ldrh	w5, [x1, x0]
	ubfx	x4, x4, 11, 8
	mov	w1, w20
	adrp	x0, .LC102
	ubfx	x3, x2, 3, 2
	and	w5, w5, 2047
	ubfx	x2, x2, 5, 3
	add	x0, x0, :lo12:.LC102
	bl	printk
	b	.L939
.L942:
	mov	w1, 7
	mul	w1, w0, w1
	lsr	w1, w1, 3
	b	.L943
.L941:
	lsr	w1, w0, 3
	cmp	w22, 0
	add	x2, x19, :lo12:.LANCHOR0
	add	x0, x21, :lo12:.LANCHOR3
	csel	w1, w1, wzr, ne
	add	x2, x2, 3370
	add	x0, x0, 1392
	b	.L958
	.size	zftl_gc_get_free_sblk, .-zftl_gc_get_free_sblk
	.align	2
	.global	zftl_get_free_sblk
	.type	zftl_get_free_sblk, %function
zftl_get_free_sblk:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	stp	x21, x22, [sp, 32]
	and	w21, w1, 65535
	cmp	w21, 5
	bne	.L960
	add	x2, x19, :lo12:.LANCHOR0
	adrp	x0, .LANCHOR3
	ldrh	w3, [x2, 3370]
	ldrh	w1, [x2, 3372]
	cmp	w3, w1
	bcc	.L961
	ldrh	w2, [x2, 3368]
	cmp	w2, w3
	bls	.L962
	cbz	w1, .L962
.L961:
	add	x2, x19, :lo12:.LANCHOR0
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3372
	lsr	w1, w1, 1
.L981:
	add	x0, x0, 1400
	b	.L980
.L962:
	add	x2, x19, :lo12:.LANCHOR0
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3370
	add	x0, x0, 1392
	mov	w1, 0
.L980:
	bl	_list_pop_index_node
	and	w20, w0, 65535
	mov	w0, 65535
	cmp	w20, w0
	bne	.L965
	add	x19, x19, :lo12:.LANCHOR0
	adrp	x0, .LANCHOR3+1384
	mov	w2, w21
	mov	w1, w20
	ldr	x3, [x0, #:lo12:.LANCHOR3+1384]
	adrp	x0, .LC101
	ldrh	w5, [x19, 3372]
	add	x0, x0, :lo12:.LC101
	ldrh	w4, [x19, 3368]
	bl	printk
	b	.L965
.L960:
	add	x22, x19, :lo12:.LANCHOR0
	and	w3, w0, 65535
	ldr	x0, [x22, 1128]
	ldrh	w20, [x0, 590]
	mov	w0, 65535
	cmp	w20, w0
	beq	.L964
	cmp	w21, 1
	beq	.L964
	mov	w1, w20
	adrp	x0, .LC103
	add	x0, x0, :lo12:.LC103
	bl	printk
	ldr	x0, [x22, 1128]
	mov	w1, -1
	strh	w1, [x0, 590]
.L965:
	mov	w0, w20
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L964:
	add	x1, x19, :lo12:.LANCHOR0
	ldrh	w0, [x1, 3368]
	ldrh	w2, [x1, 3372]
	cmp	w0, w2
	bcc	.L966
	ldrh	w1, [x1, 3370]
	cmp	w1, w0
	bls	.L967
	cbz	w2, .L967
.L966:
	bl	get_ink_scaned_blk
	and	w20, w0, 65535
	mov	w0, 65535
	cmp	w20, w0
	bne	.L965
	cmp	w21, 1
	bne	.L968
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w3, [x0, 3372]
	lsr	w3, w3, 1
.L968:
	add	x2, x19, :lo12:.LANCHOR0
	adrp	x0, .LANCHOR3
	add	x2, x2, 3372
	mov	w1, w3
	add	x0, x0, :lo12:.LANCHOR3
	b	.L981
.L967:
	lsr	w0, w0, 1
	cmp	w21, 1
	csel	w3, w0, w3, eq
	add	x2, x19, :lo12:.LANCHOR0
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3368
	mov	w1, w3
	add	x0, x0, 1384
	b	.L980
	.size	zftl_get_free_sblk, .-zftl_get_free_sblk
	.align	2
	.global	zftl_remove_data_node
	.type	zftl_remove_data_node, %function
zftl_remove_data_node:
	adrp	x2, .LANCHOR0
	add	x2, x2, :lo12:.LANCHOR0
	stp	x29, x30, [sp, -16]!
	and	w1, w0, 65535
	add	x29, sp, 0
	ldr	x0, [x2, 1104]
	add	x0, x0, w1, uxth 2
	ldrb	w3, [x0, 2]
	and	w3, w3, 224
	cmp	w3, 64
	bne	.L983
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3374
	add	x0, x0, 1344
.L987:
	bl	_list_remove_node
.L982:
	ldp	x29, x30, [sp], 16
	ret
.L983:
	cmp	w3, 96
	bne	.L985
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3376
	add	x0, x0, 1360
	b	.L987
.L985:
	cmp	w3, 160
	bne	.L982
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3378
	add	x0, x0, 1368
	b	.L987
	.size	zftl_remove_data_node, .-zftl_remove_data_node
	.align	2
	.global	zftl_remove_free_node
	.type	zftl_remove_free_node, %function
zftl_remove_free_node:
	adrp	x2, .LANCHOR0
	add	x2, x2, :lo12:.LANCHOR0
	stp	x29, x30, [sp, -16]!
	and	w1, w0, 65535
	adrp	x3, .LANCHOR3
	add	x3, x3, :lo12:.LANCHOR3
	add	x29, sp, 0
	ldr	x0, [x2, 1104]
	add	x0, x0, w1, uxth 2
	ldrb	w0, [x0, 2]
	ands	w0, w0, 24
	bne	.L989
	add	x2, x2, 3368
	add	x0, x3, 1384
.L993:
	bl	_list_remove_node
	ldp	x29, x30, [sp], 16
	ret
.L989:
	cmp	w0, 16
	bne	.L991
	add	x2, x2, 3370
	add	x0, x3, 1392
	b	.L993
.L991:
	add	x2, x2, 3372
	add	x0, x3, 1400
	b	.L993
	.size	zftl_remove_free_node, .-zftl_remove_free_node
	.align	2
	.global	zftl_list_update_data_list
	.type	zftl_list_update_data_list, %function
zftl_list_update_data_list:
	adrp	x2, .LANCHOR0
	add	x2, x2, :lo12:.LANCHOR0
	stp	x29, x30, [sp, -16]!
	and	w1, w0, 65535
	add	x29, sp, 0
	ldr	x0, [x2, 1104]
	add	x0, x0, w1, uxth 2
	ldrb	w3, [x0, 2]
	and	w3, w3, 224
	cmp	w3, 64
	bne	.L995
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3374
	add	x0, x0, 1344
.L999:
	bl	_list_update_data_list
.L994:
	ldp	x29, x30, [sp], 16
	ret
.L995:
	cmp	w3, 96
	bne	.L997
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3376
	add	x0, x0, 1360
	b	.L999
.L997:
	cmp	w3, 160
	bne	.L994
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	x2, x2, 3378
	add	x0, x0, 1368
	b	.L999
	.size	zftl_list_update_data_list, .-zftl_list_update_data_list
	.align	2
	.global	print_list_info
	.type	print_list_info, %function
print_list_info:
	sub	sp, sp, #96
	stp	x29, x30, [sp, 32]
	add	x29, sp, 32
	stp	x19, x20, [sp, 48]
	mov	x19, x0
	stp	x21, x22, [sp, 64]
	stp	x23, x24, [sp, 80]
	ldrh	w2, [x1]
	ldr	x1, [x0]
	adrp	x0, .LC104
	add	x0, x0, :lo12:.LC104
	bl	printk
	ldr	x19, [x19]
	cbz	x19, .L1000
	adrp	x21, .LANCHOR0
	mov	x24, -6148914691236517206
	adrp	x23, .LC105
	adrp	x22, .LANCHOR3
	add	x21, x21, :lo12:.LANCHOR0
	add	x23, x23, :lo12:.LC105
	add	x22, x22, :lo12:.LANCHOR3
	mov	w20, 0
	movk	x24, 0xaaab, lsl 0
.L1003:
	ldr	x2, [x21, 1040]
	ldr	x1, [x21, 1104]
	sub	x2, x19, x2
	ldr	x8, [x21, 1120]
	asr	x2, x2, 1
	ldrh	w5, [x19, 4]
	ldrh	w4, [x19, 2]
	mul	x2, x2, x24
	and	x7, x2, 65535
	and	w2, w2, 65535
	lsl	x0, x7, 2
	add	x3, x1, x0
	ldrh	w7, [x8, x7, lsl 1]
	ldrb	w6, [x3, 2]
	ldrh	w3, [x19]
	str	w7, [sp, 16]
	ldrh	w7, [x1, x0]
	and	w7, w7, 2047
	str	w7, [sp, 8]
	ubfx	x7, x6, 3, 2
	ubfx	x6, x6, 5, 3
	ldr	w0, [x1, x0]
	mov	w1, w20
	ubfx	x0, x0, 11, 8
	str	w0, [sp]
	mov	x0, x23
	bl	printk
	ldrh	w19, [x19]
	mov	w0, 65535
	cmp	w19, w0
	beq	.L1000
	ldr	x0, [x21, 1040]
	mov	w1, 6
	add	w20, w20, 1
	and	w20, w20, 65535
	umaddl	x19, w19, w1, x0
	ldrh	w0, [x22, 1408]
	cmp	w0, w20
	bcs	.L1003
.L1000:
	ldp	x19, x20, [sp, 48]
	ldp	x21, x22, [sp, 64]
	ldp	x23, x24, [sp, 80]
	ldp	x29, x30, [sp, 32]
	add	sp, sp, 96
	ret
	.size	print_list_info, .-print_list_info
	.align	2
	.global	dump_all_list_info
	.type	dump_all_list_info, %function
dump_all_list_info:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	adrp	x19, .LANCHOR3
	add	x20, x20, :lo12:.LANCHOR0
	add	x19, x19, :lo12:.LANCHOR3
	add	x1, x20, 3368
	add	x0, x19, 1384
	bl	print_list_info
	add	x1, x20, 3370
	add	x0, x19, 1392
	bl	print_list_info
	add	x1, x20, 3372
	add	x0, x19, 1400
	bl	print_list_info
	add	x1, x20, 3374
	add	x0, x19, 1344
	bl	print_list_info
	add	x1, x20, 3376
	add	x0, x19, 1360
	bl	print_list_info
	add	x1, x20, 3378
	add	x0, x19, 1368
	bl	print_list_info
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	dump_all_list_info, .-dump_all_list_info
	.align	2
	.global	ftl_tmp_into_update
	.type	ftl_tmp_into_update, %function
ftl_tmp_into_update:
	adrp	x0, .LANCHOR0+3384
	ldr	x0, [x0, #:lo12:.LANCHOR0+3384]
	ldr	w1, [x0, 16]
	cmp	w1, 2048
	bls	.L1008
	ldr	w2, [x0, 20]
	add	w2, w2, w1, lsr 11
	and	w1, w1, 2047
	stp	w1, w2, [x0, 16]
.L1008:
	ldr	w1, [x0, 24]
	cmp	w1, 2048
	bls	.L1009
	ldr	w2, [x0, 28]
	add	w2, w2, w1, lsr 11
	and	w1, w1, 2047
	stp	w1, w2, [x0, 24]
.L1009:
	ldr	w1, [x0, 32]
	cmp	w1, 1024
	bls	.L1010
	ldr	w2, [x0, 36]
	add	w2, w2, w1, lsr 10
	and	w1, w1, 1023
	stp	w1, w2, [x0, 32]
.L1010:
	ldr	w1, [x0, 40]
	cmp	w1, 1024
	bls	.L1007
	ldr	w2, [x0, 44]
	add	w2, w2, w1, lsr 10
	and	w1, w1, 1023
	stp	w1, w2, [x0, 40]
.L1007:
	ret
	.size	ftl_tmp_into_update, .-ftl_tmp_into_update
	.align	2
	.global	ftl_get_blk_list_in_sblk
	.type	ftl_get_blk_list_in_sblk, %function
ftl_get_blk_list_in_sblk:
	adrp	x5, .LANCHOR0
	add	x5, x5, :lo12:.LANCHOR0
	and	w9, w0, 65535
	mov	w4, 0
	mov	w0, 0
	mov	w12, 24
	ldr	x2, [x5, 1104]
	add	x2, x2, w9, uxth 2
	ldrb	w11, [x2, 3]
	adrp	x2, .LANCHOR3
	add	x7, x2, :lo12:.LANCHOR3
	mov	x3, x2
.L1013:
	ldrb	w2, [x7, 1321]
	cmp	w4, w2
	blt	.L1016
	mov	w4, w0
	add	x2, x3, :lo12:.LANCHOR3
	mov	w5, -1
.L1017:
	ldrb	w3, [x2, 1321]
	cmp	w4, w3
	blt	.L1018
	ret
.L1016:
	asr	w2, w11, w4
	tbnz	x2, 0, .L1014
	ldrb	w2, [x7, 1306]
	sbfiz	x10, x0, 1, 32
	ldrb	w6, [x5, 1205]
	ldrh	w13, [x7, 1304]
	sub	w6, w12, w6
	sdiv	w8, w4, w2
	sub	w6, w6, w13
	lsl	w6, w8, w6
	madd	w2, w9, w2, w6
	and	w2, w2, 65535
	strh	w2, [x1, x10]
	ldrb	w6, [x7, 1306]
	cmp	w6, 1
	bls	.L1015
	sub	w6, w6, #1
	and	w6, w6, w4
	add	w2, w2, w6
	strh	w2, [x1, x10]
.L1015:
	add	w0, w0, 1
.L1014:
	add	w4, w4, 1
	b	.L1013
.L1018:
	strh	w5, [x1, w4, sxtw 1]
	add	w4, w4, 1
	b	.L1017
	.size	ftl_get_blk_list_in_sblk, .-ftl_get_blk_list_in_sblk
	.align	2
	.global	ftl_erase_phy_blk
	.type	ftl_erase_phy_blk, %function
ftl_erase_phy_blk:
	stp	x29, x30, [sp, -48]!
	mov	w2, 24
	and	w0, w0, 65535
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	w22, w1
	adrp	x1, .LANCHOR0+1205
	stp	x19, x20, [sp, 16]
	ldrb	w19, [x1, #:lo12:.LANCHOR0+1205]
	adrp	x1, .LANCHOR3
	add	x3, x1, :lo12:.LANCHOR3
	mov	x20, x1
	sub	w19, w2, w19
	ldrh	w2, [x3, 1304]
	sub	w2, w19, w2
	mov	w19, 1
	lsl	w19, w19, w2
	sub	w19, w19, #1
	and	w19, w19, w0
	asr	w21, w0, w2
	ldrb	w0, [x3, 1322]
	sxth	w19, w19
	cbz	w0, .L1020
	ldrb	w0, [x3, 1323]
	cbnz	w0, .L1020
	ldrh	w2, [x3, 1410]
	cmp	w22, 0
	cset	w1, eq
	mov	w0, w21
	mul	w2, w2, w19
	bl	flash_erase_block_en
.L1020:
	add	x1, x20, :lo12:.LANCHOR3
	mov	w0, w21
	ldrh	w2, [x1, 1410]
	mov	w1, w22
	mul	w2, w2, w19
	bl	flash_erase_block_en
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	ftl_erase_phy_blk, .-ftl_erase_phy_blk
	.align	2
	.global	ftl_erase_sblk
	.type	ftl_erase_sblk, %function
ftl_erase_sblk:
	stp	x29, x30, [sp, -176]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	w22, w1
	stp	x25, x26, [sp, 64]
	and	w25, w0, 65535
	adrp	x0, .LANCHOR0
	add	x1, x0, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	ubfiz	x21, x25, 2, 16
	stp	x23, x24, [sp, 48]
	adrp	x26, .LANCHOR3
	stp	x27, x28, [sp, 80]
	mov	x20, x0
	add	x27, x29, 112
	add	x24, x26, :lo12:.LANCHOR3
	ldr	x1, [x1, 1104]
	mov	w19, 0
	add	x1, x1, x21
	ldrb	w28, [x1, 3]
.L1026:
	add	x0, x26, :lo12:.LANCHOR3
	ldrb	w1, [x0, 1412]
	cmp	w19, w1
	bge	.L1037
	ldrb	w1, [x0, 1306]
	mov	w23, 0
	ldrh	w3, [x0, 1410]
	mov	w0, 0
	sub	w4, w1, #1
	mul	w6, w19, w1
	mul	w5, w25, w1
	b	.L1038
.L1028:
	add	w2, w6, w0
	asr	w2, w28, w2
	tbnz	x2, 0, .L1027
	and	w2, w0, w4
	add	w2, w2, w5
	mul	w2, w2, w3
	str	w2, [x27, w23, sxtw 2]
	add	w23, w23, 1
.L1027:
	add	w0, w0, 1
.L1038:
	cmp	w0, w1
	blt	.L1028
	cmp	w1, 4
	bne	.L1029
	mov	x3, 0
.L1030:
	cmp	w23, w3
	bgt	.L1031
.L1032:
	add	w19, w19, 1
	b	.L1026
.L1031:
	ldr	w2, [x27, x3, lsl 2]
	mov	w1, w22
	str	x3, [x29, 104]
	mov	w0, w19
	bl	flash_erase_block_en
	ldr	x3, [x29, 104]
	add	x3, x3, 1
	b	.L1030
.L1029:
	cmp	w23, 2
	bne	.L1033
	ldrb	w0, [x24, 1322]
	cbz	w0, .L1034
	ldrb	w0, [x24, 1323]
	cbnz	w0, .L1034
	ldp	w2, w3, [x29, 112]
	cmp	w22, 0
	cset	w1, eq
	mov	w0, w19
	bl	flash_erase_duplane_block
.L1034:
	ldp	w2, w3, [x29, 112]
	mov	w1, w22
	mov	w0, w19
	bl	flash_erase_duplane_block
	b	.L1032
.L1033:
	cmp	w23, 1
	bne	.L1032
	ldrb	w0, [x24, 1322]
	cbz	w0, .L1036
	ldrb	w0, [x24, 1323]
	cbnz	w0, .L1036
	ldr	w2, [x29, 112]
	cmp	w22, 0
	cset	w1, eq
	mov	w0, w19
	bl	flash_erase_block_en
.L1036:
	ldr	w2, [x29, 112]
	mov	w1, w22
	mov	w0, w19
	bl	flash_erase_block_en
	b	.L1032
.L1037:
	add	x0, x20, :lo12:.LANCHOR0
	cbnz	w22, .L1039
	ldr	x2, [x0, 1104]
	ldrh	w1, [x2, x21]
	add	w3, w1, 1
	bfi	w1, w3, 0, 11
	strh	w1, [x2, x21]
	ldr	x1, [x0, 3384]
	ldr	x0, [x0, 1104]
	ldr	w2, [x1, 84]
	ldrh	w3, [x1, 96]
	add	w2, w2, 1
	str	w2, [x1, 84]
	ldrh	w0, [x0, x21]
	ubfx	x0, x0, 0, 11
	and	w2, w0, 65535
	cmp	w3, w2
	bge	.L1041
	strh	w0, [x1, 96]
.L1041:
	ldp	x19, x20, [sp, 16]
	mov	w0, 0
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 176
	ret
.L1039:
	ldr	x3, [x0, 1104]
	ldr	w1, [x3, x21]
	ubfx	x2, x1, 11, 8
	add	w2, w2, 1
	bfi	w1, w2, 11, 8
	str	w1, [x3, x21]
	ldr	x1, [x0, 3384]
	ldr	x0, [x0, 1104]
	ldr	w2, [x1, 80]
	add	w2, w2, 1
	str	w2, [x1, 80]
	ldrh	w2, [x1, 98]
	ldr	w0, [x0, x21]
	ubfx	x0, x0, 11, 8
	cmp	w2, w0, uxtb
	bcs	.L1041
	strh	w0, [x1, 98]
	b	.L1041
	.size	ftl_erase_sblk, .-ftl_erase_sblk
	.align	2
	.global	ftl_alloc_sys_blk
	.type	ftl_alloc_sys_blk, %function
ftl_alloc_sys_blk:
	stp	x29, x30, [sp, -32]!
	adrp	x0, .LANCHOR0
	add	x1, x0, :lo12:.LANCHOR0
	add	x29, sp, 0
	str	x19, [sp, 16]
	mov	x19, x0
	ldr	x1, [x1, 3384]
	ldrh	w2, [x1, 136]
	cmp	w2, 63
	bls	.L1051
	strh	wzr, [x1, 136]
.L1051:
	ldrh	w0, [x1, 112]
	cbnz	w0, .L1052
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1592
	mov	w2, 1359
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1052:
	add	x0, x19, :lo12:.LANCHOR0
	mov	w4, 65535
	ldr	x1, [x0, 3384]
.L1056:
	ldrh	w2, [x1, 136]
	ubfiz	x3, x2, 1, 16
	add	x3, x3, 160
	add	x3, x1, x3
.L1053:
	cmp	w2, 63
	ble	.L1055
	strh	wzr, [x1, 136]
	b	.L1056
.L1055:
	ldrh	w0, [x3], 2
	cmp	w0, w4
	bne	.L1058
	add	w2, w2, 1
	b	.L1053
.L1058:
	add	x3, x1, w2, sxtw 1
	mov	w4, -1
	strh	w4, [x3, 160]
	strh	w2, [x1, 136]
	ldrh	w2, [x1, 112]
	sub	w2, w2, #1
	strh	w2, [x1, 112]
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	ftl_alloc_sys_blk, .-ftl_alloc_sys_blk
	.align	2
	.global	ftl_free_sys_blk
	.type	ftl_free_sys_blk, %function
ftl_free_sys_blk:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 65535
	adrp	x0, .LANCHOR0
	add	x1, x0, :lo12:.LANCHOR0
	mov	x19, x0
	ldr	x1, [x1, 3384]
	ldrh	w2, [x1, 138]
	cmp	w2, 63
	bls	.L1061
	strh	wzr, [x1, 138]
.L1061:
	ldrh	w0, [x1, 112]
	cmp	w0, 63
	bls	.L1062
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1616
	mov	w2, 1386
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1062:
	add	x0, x19, :lo12:.LANCHOR0
	mov	w3, 65535
	ldr	x0, [x0, 3384]
.L1066:
	ldrh	w1, [x0, 138]
	ubfiz	x2, x1, 1, 16
	add	x2, x2, 160
	add	x2, x0, x2
.L1063:
	cmp	w1, 63
	ble	.L1065
	strh	wzr, [x0, 138]
	b	.L1066
.L1065:
	ldrh	w4, [x2], 2
	cmp	w4, w3
	bne	.L1064
	add	x2, x0, w1, sxtw 1
	strh	w20, [x2, 160]
	strh	w1, [x0, 138]
	ldrh	w1, [x0, 112]
	add	w1, w1, 1
	strh	w1, [x0, 112]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L1064:
	add	w1, w1, 1
	b	.L1063
	.size	ftl_free_sys_blk, .-ftl_free_sys_blk
	.align	2
	.global	ftl_info_data_recovery
	.type	ftl_info_data_recovery, %function
ftl_info_data_recovery:
	ldrh	w2, [x0]
	mov	w1, 65535
	cmp	w2, w1
	beq	.L1079
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	str	x23, [sp, 48]
	add	x23, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	ubfiz	x20, x2, 2, 16
	ldr	x21, [x23, 1104]
	add	x22, x21, x20
	ldrb	w1, [x22, 2]
	tst	w1, 224
	bne	.L1069
	ldrb	w0, [x0, 4]
	bfi	w1, w0, 5, 3
	strb	w1, [x22, 2]
	mov	w0, w2
	bl	zftl_remove_free_node
	ldrb	w0, [x22, 2]
	ldr	x1, [x23, 3384]
	tbz	x0, 3, .L1073
	ldrh	w0, [x1, 116]
	sub	w0, w0, #1
	strh	w0, [x1, 116]
.L1074:
	ldrb	w0, [x22, 2]
	and	w0, w0, 224
	cmp	w0, 160
	bne	.L1076
	ldr	w0, [x21, x20]
	add	x19, x19, :lo12:.LANCHOR0
	ubfx	x1, x0, 11, 8
	add	w1, w1, 1
	bfi	w0, w1, 11, 8
	str	w0, [x21, x20]
	ldr	x1, [x19, 3384]
	ldrh	w0, [x1, 120]
	sub	w0, w0, #1
	strh	w0, [x1, 120]
.L1069:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldr	x23, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L1073:
	tst	w0, 24
	bne	.L1075
	ldrh	w0, [x1, 114]
	sub	w0, w0, #1
	strh	w0, [x1, 114]
	b	.L1074
.L1075:
	ldrh	w0, [x1, 118]
	sub	w0, w0, #1
	strh	w0, [x1, 118]
	b	.L1074
.L1076:
	ldrh	w1, [x21, x20]
	cmp	w0, 64
	add	w2, w1, 1
	bfi	w1, w2, 0, 11
	strh	w1, [x21, x20]
	bne	.L1077
	add	x19, x19, :lo12:.LANCHOR0
	ldr	x1, [x19, 3384]
	ldrh	w0, [x1, 122]
	sub	w0, w0, #1
	strh	w0, [x1, 122]
	b	.L1069
.L1077:
	cmp	w0, 96
	bne	.L1069
	add	x19, x19, :lo12:.LANCHOR0
	ldr	x1, [x19, 3384]
	ldrh	w0, [x1, 124]
	sub	w0, w0, #1
	strh	w0, [x1, 124]
	b	.L1069
.L1079:
	ret
	.size	ftl_info_data_recovery, .-ftl_info_data_recovery
	.align	2
	.global	ftl_get_ppa_from_index
	.type	ftl_get_ppa_from_index, %function
ftl_get_ppa_from_index:
	stp	x29, x30, [sp, -48]!
	adrp	x1, .LANCHOR0+1128
	and	w0, w0, 65535
	add	x29, sp, 0
	ldr	x2, [x1, #:lo12:.LANCHOR0+1128]
	adrp	x1, .LANCHOR3
	add	x4, x1, :lo12:.LANCHOR3
	stp	x19, x20, [sp, 16]
	str	x21, [sp, 32]
	mov	x19, x1
	ldrh	w3, [x4, 1376]
	ldrb	w4, [x4, 1321]
	mul	w3, w3, w4
	cmp	w0, w3
	bge	.L1083
	add	x2, x2, 16
.L1084:
	ldrb	w1, [x2, 9]
	sdiv	w20, w0, w1
	msub	w0, w20, w1, w0
	add	x0, x2, w0, uxth 1
	ldrh	w21, [x0, 16]
	mov	w0, 65535
	cmp	w21, w0
	bne	.L1085
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1640
	mov	w2, 1945
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1085:
	add	x1, x19, :lo12:.LANCHOR3
	ldrh	w0, [x1, 1410]
	madd	w0, w0, w21, w20
	ldr	x21, [sp, 32]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
.L1083:
	sub	w0, w0, w3
	add	x2, x2, 48
	and	w0, w0, 65535
	b	.L1084
	.size	ftl_get_ppa_from_index, .-ftl_get_ppa_from_index
	.align	2
	.global	lpa_hash_get_ppa
	.type	lpa_hash_get_ppa, %function
lpa_hash_get_ppa:
	adrp	x1, .LANCHOR3
	add	x1, x1, :lo12:.LANCHOR3
	and	x3, x0, 255
	add	x2, x1, 1416
	ldr	x4, [x1, 1928]
	ldr	x5, [x1, 1936]
	ldrh	w2, [x2, x3, lsl 1]
	mov	w3, 65535
.L1088:
	cmp	w2, w3
	bne	.L1091
	mov	w0, -1
	ret
.L1091:
	uxtw	x1, w2
	ldr	w6, [x4, x1, lsl 2]
	cmp	w0, w6
	bne	.L1089
	stp	x29, x30, [sp, -16]!
	mov	w0, w2
	add	x29, sp, 0
	bl	ftl_get_ppa_from_index
	ldp	x29, x30, [sp], 16
	ret
.L1089:
	ldrh	w2, [x5, x1, lsl 1]
	b	.L1088
	.size	lpa_hash_get_ppa, .-lpa_hash_get_ppa
	.align	2
	.global	ftl_get_new_free_page
	.type	ftl_get_new_free_page, %function
ftl_get_new_free_page:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	ldrh	w1, [x0]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L1097
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1664
	mov	w2, 2088
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1097:
	adrp	x20, .LANCHOR3
	add	x0, x20, :lo12:.LANCHOR3
	ldrh	w1, [x19, 2]
	ldrh	w0, [x0, 1376]
	cmp	w1, w0
	bne	.L1098
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1664
	mov	w2, 2089
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1098:
	ldrh	w0, [x19, 6]
	cbnz	w0, .L1099
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1664
	mov	w2, 2090
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1099:
	ldrb	w0, [x19, 5]
	mov	w2, 65535
	add	x0, x0, 8
	ldrh	w3, [x19, x0, lsl 1]
	add	x0, x20, :lo12:.LANCHOR3
	ldrb	w4, [x0, 1321]
.L1100:
	cmp	w3, w2
	ldrb	w1, [x19, 5]
	beq	.L1102
	add	x20, x20, :lo12:.LANCHOR3
	add	w1, w1, 1
	and	w1, w1, 255
	ldrh	w2, [x19, 2]
	strb	w1, [x19, 5]
	cmp	w4, w1
	ldrh	w0, [x20, 1410]
	mul	w0, w0, w3
	ldrh	w3, [x19, 6]
	sub	w3, w3, #1
	strh	w3, [x19, 6]
	ldrh	w3, [x19, 10]
	orr	w0, w0, w2
	add	w3, w3, 1
	strh	w3, [x19, 10]
	bne	.L1096
	add	w2, w2, 1
	strb	wzr, [x19, 5]
	strh	w2, [x19, 2]
.L1096:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L1102:
	add	w1, w1, 1
	and	w1, w1, 255
	strb	w1, [x19, 5]
	cmp	w1, w4
	bne	.L1101
	ldrh	w0, [x19, 2]
	strb	wzr, [x19, 5]
	add	w0, w0, 1
	strh	w0, [x19, 2]
.L1101:
	ldrb	w0, [x19, 5]
	add	x0, x0, 8
	ldrh	w3, [x19, x0, lsl 1]
	b	.L1100
	.size	ftl_get_new_free_page, .-ftl_get_new_free_page
	.align	2
	.global	ftl_ext_alloc_new_blk
	.type	ftl_ext_alloc_new_blk, %function
ftl_ext_alloc_new_blk:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	bl	ftl_alloc_sys_blk
	and	w0, w0, 65535
	mov	w1, 65533
	mov	w20, w0
	sub	w0, w0, #1
	cmp	w1, w0, uxth
	bcs	.L1106
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1688
	mov	w2, 2125
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1106:
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	mov	w1, 0
	mov	w0, w20
	bl	ftl_erase_phy_blk
	ldr	x0, [x19, 3384]
	ldrh	w0, [x0, 130]
	bl	ftl_free_sys_blk
	ldr	x0, [x19, 3384]
	strh	w20, [x0, 130]
	strh	wzr, [x0, 140]
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	ftl_ext_alloc_new_blk, .-ftl_ext_alloc_new_blk
	.align	2
	.global	ftl_total_vpn_update
	.type	ftl_total_vpn_update, %function
ftl_total_vpn_update:
	adrp	x1, .LANCHOR3
	add	x3, x1, :lo12:.LANCHOR3
	ldrh	w2, [x3, 1944]
	cmp	w2, 4
	bhi	.L1109
	cbnz	w0, .L1109
	add	w2, w2, 1
	strh	w2, [x3, 1944]
	ret
.L1109:
	add	x1, x1, :lo12:.LANCHOR3
	adrp	x0, .LANCHOR0
	mov	x2, 0
	mov	w3, 0
	mov	w9, 65535
	strh	wzr, [x1, 1944]
	add	x1, x0, :lo12:.LANCHOR0
	ldrh	w6, [x1, 1096]
	ldr	x8, [x1, 1104]
	ldr	x7, [x1, 1120]
	mov	w1, 0
.L1111:
	cmp	w6, w2, uxth
	bhi	.L1114
	add	x0, x0, :lo12:.LANCHOR0
	ldr	x2, [x0, 1128]
	ldr	x0, [x0, 3384]
	str	w3, [x2, 524]
	str	w1, [x2, 528]
	ldrh	w0, [x0, 120]
	cbz	w0, .L1108
	udiv	w1, w1, w0
	str	w1, [x2, 532]
.L1108:
	ret
.L1114:
	ldrh	w4, [x7, x2, lsl 1]
	cmp	w4, w9
	beq	.L1112
	add	x5, x8, x2, lsl 2
	ldrb	w5, [x5, 2]
	and	w5, w5, 224
	cmp	w5, 160
	bne	.L1113
	add	w1, w1, w4
.L1112:
	add	x2, x2, 1
	b	.L1111
.L1113:
	add	w3, w3, w4
	b	.L1112
	.size	ftl_total_vpn_update, .-ftl_total_vpn_update
	.align	2
	.global	ftl_debug_info_fill
	.type	ftl_debug_info_fill, %function
ftl_debug_info_fill:
	adrp	x3, .LANCHOR3+1946
	ldrb	w3, [x3, #:lo12:.LANCHOR3+1946]
	cmp	w3, 8
	bls	.L1123
	and	w0, w0, 255
	cmp	x2, 0
	ccmp	w0, 2, 0, ne
	bne	.L1121
	stp	x29, x30, [sp, -32]!
	mov	x0, x2
	add	x29, sp, 0
	str	x19, [sp, 16]
	mov	x19, x1
	mov	w1, 21320
	movk	w1, 0x4841, lsl 16
	str	w1, [x19]
	mov	w1, 1024
	bl	js_hash
	str	w0, [x19, 4]
	mov	w0, 0
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L1121:
	stp	wzr, wzr, [x1]
.L1123:
	mov	w0, 0
	ret
	.size	ftl_debug_info_fill, .-ftl_debug_info_fill
	.align	2
	.global	ftl_vpn_update
	.type	ftl_vpn_update, %function
ftl_vpn_update:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	and	w19, w0, 65535
	mov	w0, w19
	bl	zftl_list_update_data_list
	adrp	x1, .LANCHOR0
	add	x1, x1, :lo12:.LANCHOR0
	ubfiz	x19, x19, 1, 16
	ldr	x0, [x1, 1120]
	ldrh	w0, [x0, x19]
	cbnz	w0, .L1128
	mov	w0, 1
	str	w0, [x1, 3396]
.L1126:
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L1128:
	mov	w0, 0
	b	.L1126
	.size	ftl_vpn_update, .-ftl_vpn_update
	.align	2
	.global	ftl_vpn_decrement
	.type	ftl_vpn_decrement, %function
ftl_vpn_decrement:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 65535
	mov	w0, 65535
	cmp	w20, w0
	beq	.L1131
	adrp	x2, .LANCHOR0
	add	x2, x2, :lo12:.LANCHOR0
	uxtw	x1, w20
	lsl	x3, x1, 1
	ldr	x4, [x2, 1120]
	ldrh	w0, [x4, x3]
	cbnz	w0, .L1132
	ldr	x0, [x2, 1104]
	mov	w2, 0
	add	x1, x0, x1, lsl 2
	adrp	x0, .LC106
	add	x0, x0, :lo12:.LC106
	ldrb	w3, [x1, 2]
	mov	w1, w20
	ubfx	x3, x3, 5, 3
	bl	printk
.L1137:
	mov	w0, 0
	b	.L1130
.L1132:
	sub	w0, w0, #1
	strh	w0, [x4, x3]
.L1131:
	adrp	x19, .LANCHOR3
	add	x19, x19, :lo12:.LANCHOR3
	ldrh	w0, [x19, 1280]
	cmp	w20, w0
	beq	.L1137
	mov	w1, 65535
	cmp	w0, w1
	bne	.L1134
	strh	w20, [x19, 1280]
	b	.L1137
.L1134:
	bl	ftl_vpn_update
	cmp	w0, 0
	ldrh	w2, [x19, 1948]
	cset	w0, ne
	add	x1, x19, 1288
	ldrh	w3, [x19, 1280]
	add	w2, w2, 1
	strh	w20, [x19, 1280]
	and	w2, w2, 65535
	cmp	w2, 7
	csel	w2, w2, wzr, ls
	strh	w2, [x19, 1948]
	and	x2, x2, 65535
	strh	w3, [x1, x2, lsl 1]
.L1130:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	ftl_vpn_decrement, .-ftl_vpn_decrement
	.align	2
	.global	lpa_hash_update_ppa
	.type	lpa_hash_update_ppa, %function
lpa_hash_update_ppa:
	adrp	x3, .LANCHOR3
	add	x6, x3, :lo12:.LANCHOR3
	add	x5, x6, 1416
	and	x4, x0, 255
	and	w2, w2, 65535
	ldr	x10, [x6, 1928]
	ldrh	w5, [x5, x4, lsl 1]
	ldr	x11, [x6, 1936]
	mov	w6, 65535
	mov	w9, w6
.L1140:
	cmp	w5, w9
	beq	.L1144
	uxtw	x8, w5
	lsl	x7, x8, 2
	add	x12, x10, x7
	ldr	w7, [x10, x7]
	cmp	w0, w7
	lsl	x7, x8, 1
	bne	.L1141
	mov	w5, -1
	str	w5, [x12]
	cmp	w6, w9
	add	x5, x3, :lo12:.LANCHOR3
	bne	.L1142
	ldr	x6, [x5, 1936]
	add	x5, x5, 1416
	ldrh	w6, [x6, x7]
	strh	w6, [x5, x4, lsl 1]
.L1143:
	add	x5, x3, :lo12:.LANCHOR3
	mov	w6, -1
	ldr	x5, [x5, 1936]
	strh	w6, [x5, x8, lsl 1]
.L1144:
	add	x3, x3, :lo12:.LANCHOR3
	uxtw	x5, w2
	cmn	w1, #1
	ldr	x6, [x3, 1928]
	str	w0, [x6, x5, lsl 2]
	add	x0, x3, 1416
	ldrh	w6, [x0, x4, lsl 1]
	strh	w2, [x0, x4, lsl 1]
	ldr	x0, [x3, 1936]
	strh	w6, [x0, x5, lsl 1]
	beq	.L1151
	stp	x29, x30, [sp, -16]!
	adrp	x0, .LANCHOR0+1205
	add	x29, sp, 0
	ldrb	w2, [x0, #:lo12:.LANCHOR0+1205]
	mov	w0, 24
	ldrh	w4, [x3, 1304]
	sub	w0, w0, w2
	sub	w2, w0, w4
	mov	w0, 1
	lsr	w1, w1, w4
	lsl	w0, w0, w2
	sub	w0, w0, #1
	and	w1, w0, w1
	ldrb	w0, [x3, 1306]
	udiv	w0, w1, w0
	bl	ftl_vpn_decrement
	mov	w0, -1
	ldp	x29, x30, [sp], 16
	ret
.L1142:
	ldr	x5, [x5, 1936]
	ldrh	w7, [x5, x7]
	strh	w7, [x5, w6, uxtw 1]
	b	.L1143
.L1141:
	mov	w6, w5
	ldrh	w5, [x11, x7]
	b	.L1140
.L1151:
	mov	w0, -1
	ret
	.size	lpa_hash_update_ppa, .-lpa_hash_update_ppa
	.align	2
	.global	ftl_mask_bad_block
	.type	ftl_mask_bad_block, %function
ftl_mask_bad_block:
	stp	x29, x30, [sp, -48]!
	adrp	x6, .LANCHOR0
	add	x1, x6, :lo12:.LANCHOR0
	adrp	x3, .LANCHOR3
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	add	x3, x3, :lo12:.LANCHOR3
	str	x21, [sp, 32]
	mov	w7, 24
	mov	w4, 1
	mov	x19, x6
	ldrb	w1, [x1, 1205]
	ldrb	w5, [x3, 1306]
	ldrh	w3, [x3, 1304]
	sub	w7, w7, w1
	lsl	w1, w4, w1
	sub	w1, w1, #1
	lsr	w2, w0, w7
	and	w1, w1, w2
	lsr	w0, w0, w3
	sub	w3, w7, w3
	and	w1, w1, 255
	cmp	w5, 1
	lsl	w3, w4, w3
	sub	w3, w3, #1
	and	w3, w3, w0
	and	w4, w3, 65535
	mul	w2, w1, w5
	udiv	w3, w3, w5
	and	w20, w2, 255
	and	w21, w3, 65535
	bls	.L1155
	sub	w2, w5, #1
	and	w2, w2, w4
	add	w2, w20, w2
	and	w20, w2, 255
.L1155:
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 14, .L1156
	adrp	x0, .LC107
	and	w3, w3, 65535
	mov	w2, w20
	add	x0, x0, :lo12:.LC107
	bl	printk
.L1156:
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w1, [x0, 1096]
	cmp	w1, w21
	bls	.L1154
	ldr	x0, [x0, 1104]
	mov	w2, 1
	lsl	w2, w2, w20
	add	x21, x0, w21, uxth 2
	ldrb	w20, [x21, 3]
	orr	w2, w2, w20
	strb	w2, [x21, 3]
.L1154:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	ftl_mask_bad_block, .-ftl_mask_bad_block
	.align	2
	.global	gc_free_bad_sblk
	.type	gc_free_bad_sblk, %function
gc_free_bad_sblk:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	adrp	x24, .LANCHOR0
	add	x24, x24, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	and	w22, w0, 65535
	stp	x19, x20, [sp, 16]
	stp	x25, x26, [sp, 64]
	ldr	w0, [x24, 5616]
	str	x27, [sp, 80]
	cbz	w0, .L1177
	mov	w23, 20041
	add	x27, x24, 3416
	mov	w26, 0
	movk	w23, 0x444b, lsl 16
.L1164:
	adrp	x21, .LANCHOR3
	add	x2, x21, :lo12:.LANCHOR3
	ldrb	w0, [x2, 1321]
	cmp	w0, w26
	bhi	.L1174
.L1177:
	mov	w0, 0
	ldr	x27, [sp, 80]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
.L1174:
	ldrb	w3, [x2, 1306]
	mov	w1, 24
	ldrb	w4, [x24, 1205]
	ldrh	w2, [x2, 1304]
	and	w0, w3, 65535
	sub	w1, w1, w4
	cmp	w3, 1
	sdiv	w19, w26, w3
	sub	w1, w1, w2
	lsl	w19, w19, w1
	madd	w19, w22, w0, w19
	and	w19, w19, 65535
	bls	.L1165
	sub	w0, w0, #1
	and	w0, w0, w26
	add	w19, w19, w0
	and	w19, w19, 65535
.L1165:
	adrp	x25, .LC108
	add	x25, x25, :lo12:.LC108
	mov	w20, 0
.L1166:
	ldr	w0, [x27, 2200]
	cmp	w20, w0
	bcc	.L1173
	add	w26, w26, 1
	and	w26, w26, 65535
	b	.L1164
.L1173:
	add	x0, x27, w20, sxtw 1
	ldrh	w0, [x0, 2204]
	cmp	w0, w19
	bne	.L1167
	mov	w1, w19
	mov	x0, x25
	bl	printk
	add	x0, x21, :lo12:.LANCHOR3
	ldrb	w1, [x0, 1950]
	cbnz	w1, .L1168
	ldrb	w0, [x0, 1322]
	cbz	w0, .L1169
.L1168:
	ldr	x0, [x24, 3384]
	ldr	w0, [x0, 156]
	cmp	w0, w23
	beq	.L1170
.L1169:
	add	x0, x21, :lo12:.LANCHOR3
	ldrh	w0, [x0, 1304]
	lsl	w0, w19, w0
	bl	ftl_mask_bad_block
.L1170:
	ldr	w1, [x27, 2200]
	mov	w0, w20
.L1171:
	cmp	w0, w1
	bcc	.L1172
	sub	w1, w1, #1
	str	w1, [x27, 2200]
.L1167:
	add	w20, w20, 1
	and	w20, w20, 65535
	b	.L1166
.L1172:
	add	w2, w0, 1
	add	x0, x27, w0, sxtw 1
	add	x3, x27, w2, sxtw 1
	ldrh	w3, [x3, 2204]
	strh	w3, [x0, 2204]
	and	w0, w2, 65535
	b	.L1171
	.size	gc_free_bad_sblk, .-gc_free_bad_sblk
	.align	2
	.global	ftl_free_sblk
	.type	ftl_free_sblk, %function
ftl_free_sblk:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	add	x3, x20, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	and	x24, x0, 65535
	lsl	x19, x24, 2
	mov	x22, x24
	ldr	x4, [x3, 1104]
	add	x21, x4, x19
	ldrb	w0, [x21, 2]
	ubfx	x23, x0, 5, 3
	tbz	x0, 3, .L1184
	ldr	x5, [x3, 3384]
	ldr	w2, [x4, x19]
	ldrh	w1, [x4, x19]
	ldrh	w6, [x5, 74]
	and	w1, w1, 2047
	ubfx	x7, x2, 11, 8
	ldrh	w2, [x3, 1112]
	add	w6, w1, w6
	and	w8, w6, 65535
	ldrh	w6, [x5, 72]
	adrp	x5, .LANCHOR3
	add	x5, x5, :lo12:.LANCHOR3
	add	w6, w7, w6
	udiv	w9, w8, w2
	and	w6, w6, 65535
	ldrh	w10, [x5, 1952]
	add	w9, w9, w6
	cmp	w9, w10
	ble	.L1185
	ldrh	w6, [x3, 3370]
	ldrh	w8, [x3, 3378]
	add	w8, w8, w6
	ldrh	w6, [x5, 1382]
	add	w6, w6, 8
	cmp	w8, w6
	bge	.L1186
.L1191:
	mov	w3, 2
	bfi	w0, w3, 3, 2
	b	.L1203
.L1186:
	ldrh	w6, [x3, 3374]
	ldrh	w8, [x3, 3368]
	ldrh	w5, [x5, 1380]
	ldrh	w3, [x3, 3376]
	add	w6, w6, w8
	add	w5, w5, 8
	add	w3, w6, w3
	cmp	w3, w5
.L1207:
	bge	.L1191
	b	.L1205
.L1185:
	madd	w6, w2, w6, w8
	ldrh	w8, [x5, 1954]
	cmp	w6, w8
	ble	.L1187
	ldrh	w8, [x3, 3368]
	ldrh	w6, [x3, 3374]
	add	w6, w6, w8
	ldrh	w8, [x3, 3376]
	add	w6, w6, w8
	ldrh	w8, [x5, 1380]
	add	w9, w8, 8
	cmp	w6, w9
	bge	.L1189
.L1205:
	and	w0, w0, -25
.L1203:
	strb	w0, [x21, 2]
.L1187:
	ldrb	w0, [x21, 2]
	ands	w0, w0, 24
	bne	.L1192
	mul	w2, w7, w2
	ldrh	w0, [x4, x19]
	add	w2, w2, w2, lsl 1
	add	w1, w1, w2, lsr 2
	lsr	w2, w7, 3
	bfi	w0, w1, 0, 11
	strh	w0, [x4, x19]
	ldr	w0, [x4, x19]
	bfi	w0, w2, 11, 8
	str	w0, [x4, x19]
.L1193:
	mov	w0, w22
	bl	zftl_remove_data_node
	add	x1, x20, :lo12:.LANCHOR0
	add	w23, w23, 6
	and	w23, w23, 7
	cmp	w23, 4
	ldr	x0, [x1, 1104]
	add	x19, x0, x19
	ldrb	w0, [x19, 2]
	and	w0, w0, 31
	strb	w0, [x19, 2]
	ldr	x0, [x1, 1120]
	strh	wzr, [x0, x24, lsl 1]
	bhi	.L1196
	mov	w0, w22
	bl	gc_free_bad_sblk
.L1196:
	ldrb	w0, [x21, 2]
	tbz	x0, 3, .L1197
	add	x20, x20, :lo12:.LANCHOR0
	ldr	x0, [x20, 1128]
	ldrh	w1, [x0, 586]
	cmp	w1, w22
	bne	.L1197
	mov	w1, -1
	ldrh	w2, [x0, 590]
	strh	w1, [x0, 586]
	mov	w1, 65535
	cmp	w2, w1
	bne	.L1197
	strh	w22, [x0, 590]
	mov	w1, w22
	adrp	x0, .LC109
	add	x0, x0, :lo12:.LC109
	bl	printk
.L1183:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L1189:
	ldrh	w9, [x3, 3378]
	ldrh	w3, [x3, 3370]
	add	w9, w9, w3
	ldrh	w3, [x5, 1382]
	add	w3, w3, 8
	cmp	w9, w3
	blt	.L1191
	add	w8, w8, 24
	cmp	w6, w8
	b	.L1207
.L1192:
	cmp	w0, 16
	bne	.L1193
	sdiv	w2, w1, w2
	ldr	w0, [x4, x19]
	add	w2, w2, w2, lsl 1
	add	w2, w7, w2, lsr 2
.L1204:
	bfi	w0, w2, 11, 8
	asr	w1, w1, 5
	str	w0, [x4, x19]
	bfi	w0, w1, 0, 11
	strh	w0, [x4, x19]
	b	.L1193
.L1184:
	tst	w0, 24
	bne	.L1193
	ldrh	w1, [x3, 3372]
	cbnz	w1, .L1193
	ldrh	w7, [x3, 3370]
	cmp	w7, 15
	bhi	.L1193
	ldrh	w2, [x3, 3368]
	ldrh	w1, [x3, 3374]
	add	w1, w1, w2
	ldrh	w2, [x3, 3376]
	add	w1, w1, w2
	adrp	x2, .LANCHOR3
	add	x2, x2, :lo12:.LANCHOR3
	ldrh	w6, [x2, 1380]
	add	w6, w6, 16
	cmp	w1, w6
	ble	.L1193
	ldrh	w5, [x3, 3378]
	ldrh	w1, [x2, 1382]
	add	w5, w5, w7
	add	w1, w1, 8
	cmp	w5, w1
	bge	.L1193
	mov	w1, 2
	bfi	w0, w1, 3, 2
	strb	w0, [x21, 2]
	ldrh	w0, [x3, 1112]
	ldrh	w1, [x4, x19]
	and	w1, w1, 2047
	sdiv	w0, w1, w0
	add	w2, w0, w0, lsl 1
	ldr	w0, [x4, x19]
	ubfx	x3, x0, 11, 8
	add	w2, w3, w2, lsr 2
	b	.L1204
.L1197:
	mov	w0, w22
	bl	zftl_insert_free_list
	b	.L1183
	.size	ftl_free_sblk, .-ftl_free_sblk
	.align	2
	.global	gc_free_src_blk
	.type	gc_free_src_blk, %function
gc_free_src_blk:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR0
	stp	x23, x24, [sp, 48]
	add	x24, x22, :lo12:.LANCHOR0
	adrp	x23, .LC110
	add	x21, x24, 3416
	add	x23, x23, :lo12:.LC110
	stp	x19, x20, [sp, 16]
	stp	x25, x26, [sp, 64]
	mov	w20, 0
.L1209:
	ldrh	w0, [x21, 56]
	cmp	w0, w20
	bhi	.L1224
	strh	wzr, [x21, 56]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L1224:
	add	x0, x21, w20, sxtw 1
	ldrh	w25, [x0, 58]
	ldr	x0, [x24, 1120]
	mov	x19, x25
	lsl	x26, x25, 1
	ldrh	w2, [x0, x26]
	cbz	w2, .L1210
	mov	w1, w25
	mov	x0, x23
	bl	printk
.L1210:
	add	x0, x22, :lo12:.LANCHOR0
	ldr	x1, [x0, 1120]
	strh	wzr, [x1, x26]
	ldr	x1, [x0, 1120]
	ldrh	w1, [x1, x26]
	cbnz	w1, .L1211
	ldr	x0, [x0, 1104]
	add	x25, x0, x25, lsl 2
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L1212
	ldrb	w2, [x25, 2]
	adrp	x0, .LC111
	mov	w1, w19
	add	x0, x0, :lo12:.LC111
	ubfx	x2, x2, 5, 3
	bl	printk
.L1212:
	ldrb	w0, [x25, 2]
	and	w1, w0, 224
	cmp	w1, 224
	beq	.L1213
	tst	w0, 192
	bne	.L1214
.L1213:
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1712
	mov	w2, 1363
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1214:
	mov	w0, w19
	bl	ftl_free_sblk
	add	x0, x22, :lo12:.LANCHOR0
	ldr	x0, [x0, 1128]
	ldrh	w2, [x0, 124]
	cbz	w2, .L1215
	add	x3, x0, 392
	mov	w1, 0
.L1217:
	ldrh	w4, [x3]
	cmp	w4, w19
	bne	.L1216
	add	x1, x0, w1, sxtw 1
	mov	w3, -1
	sub	w2, w2, #1
	strh	w3, [x1, 392]
	strh	w2, [x0, 124]
.L1215:
	ldrh	w2, [x0, 120]
	cbz	w2, .L1218
	add	x3, x0, 136
	mov	w1, 0
.L1220:
	ldrh	w4, [x3]
	cmp	w4, w19
	bne	.L1219
	add	x1, x0, w1, sxtw 1
	mov	w3, -1
	sub	w2, w2, #1
	strh	w3, [x1, 136]
	strh	w2, [x0, 120]
.L1218:
	ldrh	w2, [x0, 122]
	cbz	w2, .L1221
	add	x3, x0, 264
	mov	w1, 0
.L1223:
	ldrh	w4, [x3]
	cmp	w4, w19
	bne	.L1222
	add	x1, x0, w1, sxtw 1
	mov	w3, -1
	sub	w2, w2, #1
	strh	w3, [x1, 264]
	strh	w2, [x0, 122]
.L1221:
	add	w20, w20, 1
	and	w20, w20, 65535
	b	.L1209
.L1216:
	add	w1, w1, 1
	add	x3, x3, 2
	cmp	w1, 64
	bne	.L1217
	b	.L1215
.L1219:
	add	w1, w1, 1
	add	x3, x3, 2
	cmp	w1, 64
	bne	.L1220
	b	.L1218
.L1222:
	add	w1, w1, 1
	add	x3, x3, 2
	cmp	w1, 64
	bne	.L1223
	b	.L1221
.L1211:
	mov	w2, 0
	mov	w1, 1
	mov	w0, w19
	bl	gc_add_sblk
	b	.L1221
	.size	gc_free_src_blk, .-gc_free_src_blk
	.align	2
	.global	print_ftl_debug_info
	.type	print_ftl_debug_info, %function
print_ftl_debug_info:
	sub	sp, sp, #64
	stp	x29, x30, [sp, 32]
	add	x29, sp, 32
	str	x19, [sp, 48]
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	ldr	x1, [x19, 3384]
	ldr	x0, [x19, 1128]
	ldr	w8, [x19, 3364]
	ldrh	w7, [x19, 3376]
	ldrh	w2, [x1, 146]
	ldrh	w1, [x1, 148]
	str	w8, [sp, 24]
	ldrh	w6, [x19, 3374]
	ldr	w8, [x0, 528]
	str	w8, [sp, 16]
	ldrh	w5, [x19, 3372]
	ldr	w0, [x0, 524]
	ldrh	w4, [x19, 3370]
	ldrh	w3, [x19, 3368]
	str	w0, [sp, 8]
	ldrh	w0, [x19, 3378]
	str	w0, [sp]
	adrp	x0, .LC112
	add	x0, x0, :lo12:.LC112
	bl	printk
	ldr	x0, [x19, 3384]
	ldrb	w3, [x19, 3380]
	ldr	w4, [x0, 8]
	ldr	w5, [x0, 64]
	ldr	w1, [x0, 20]
	ldr	w2, [x0, 28]
	adrp	x0, .LC113
	add	x0, x0, :lo12:.LC113
	bl	printk
	ldr	x0, [x19, 3384]
	ldr	w1, [x0, 52]
	ldr	w2, [x0, 60]
	ldr	w3, [x0, 16]
	adrp	x0, .LC114
	add	x0, x0, :lo12:.LC114
	lsr	w3, w3, 11
	bl	printk
	ldr	x0, [x19, 3384]
	ldrh	w2, [x0, 98]
	ldrh	w6, [x0, 72]
	ldrh	w5, [x0, 96]
	ldrh	w4, [x0, 92]
	ldrh	w3, [x0, 88]
	ldrh	w1, [x0, 74]
	str	w2, [sp, 16]
	ldrh	w2, [x0, 94]
	str	w2, [sp, 8]
	ldrh	w2, [x0, 90]
	str	w2, [sp]
	ldp	w7, w2, [x0, 80]
	adrp	x0, .LC115
	add	x0, x0, :lo12:.LC115
	bl	printk
	ldrh	w5, [x19, 3392]
	adrp	x0, .LC116
	ldrh	w4, [x19, 3400]
	add	x0, x0, :lo12:.LC116
	ldrh	w3, [x19, 3402]
	ldrh	w2, [x19, 3404]
	ldrh	w1, [x19, 3406]
	bl	printk
	ldr	x0, [x19, 1128]
	ldr	x1, [x19, 3384]
	ldrh	w4, [x0, 590]
	ldrh	w6, [x1, 150]
	ldrh	w3, [x0, 588]
	ldrh	w2, [x0, 586]
	ldr	w5, [x1, 156]
	ldrh	w1, [x0, 584]
	adrp	x0, .LC117
	add	x0, x0, :lo12:.LC117
	bl	printk
	ldr	x19, [sp, 48]
	ldp	x29, x30, [sp, 32]
	add	sp, sp, 64
	ret
	.size	print_ftl_debug_info, .-print_ftl_debug_info
	.align	2
	.global	ftl_write_buf
	.type	ftl_write_buf, %function
ftl_write_buf:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	str	x21, [sp, 32]
	cbnz	x0, .L1250
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1728
	mov	w2, 811
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	bl	print_ftl_debug_info
	mov	w0, -1
.L1249:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L1253:
	add	x19, x19, :lo12:.LANCHOR0
	mov	x1, x20
	add	x0, x19, 3408
	bl	buf_add_tail
	ldrb	w3, [x20, 56]
	ldr	x1, [x19, 3384]
	ldrb	w0, [x19, 3381]
	add	w0, w0, 1
	ldr	w2, [x1, 16]
	and	w0, w0, 255
	strb	w0, [x19, 3381]
	add	w2, w2, w3
	str	w2, [x1, 16]
	ldr	w2, [x1, 32]
	add	w2, w2, 1
	str	w2, [x1, 32]
	b	.L1249
.L1250:
	mov	x20, x0
	adrp	x0, .LANCHOR3
	add	x1, x0, :lo12:.LANCHOR3
	mov	x21, x0
	ldrb	w2, [x20, 56]
	ldrb	w1, [x1, 1946]
	cmp	w2, w1
	bls	.L1255
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1728
	mov	w2, 818
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1255:
	ldrb	w1, [x20, 56]
	adrp	x19, .LANCHOR0
	cbz	w1, .L1252
	add	x0, x21, :lo12:.LANCHOR3
	ldrb	w0, [x0, 1946]
	cmp	w0, w1
	bcs	.L1253
.L1252:
	add	x19, x19, :lo12:.LANCHOR0
	mov	x0, x20
	bl	zbuf_free
	ldrb	w0, [x19, 3381]
	b	.L1249
	.size	ftl_write_buf, .-ftl_write_buf
	.align	2
	.global	ftl_write_completed
	.type	ftl_write_completed, %function
ftl_write_completed:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR0
	stp	x19, x20, [sp, 16]
	add	x19, x21, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 48]
	add	x22, x19, 1304
	mov	w23, 20041
	str	x25, [sp, 64]
	movk	w23, 0x444b, lsl 16
	mov	w25, 0
.L1261:
	add	x1, x21, :lo12:.LANCHOR0
	ldrb	w0, [x1, 3357]
	cmp	w0, 255
	bne	.L1272
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldr	x25, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L1272:
	add	x2, x1, 1304
	lsl	x3, x0, 6
	add	x24, x2, x3
	ubfiz	x20, x0, 6, 8
	add	x20, x2, x20
	ldrb	w2, [x2, x3]
	strb	w2, [x1, 3357]
	ldr	w1, [x24, 52]
	cmn	w1, #1
	bne	.L1262
	adrp	x2, .LANCHOR3
	add	x1, x2, :lo12:.LANCHOR3
	ldrb	w3, [x1, 1950]
	cbnz	w3, .L1263
	ldrb	w1, [x1, 1322]
	cbz	w1, .L1264
.L1263:
	ldr	x1, [x19, 3384]
	ldr	w1, [x1, 156]
	cmp	w1, w23
	beq	.L1265
.L1264:
	add	x2, x2, :lo12:.LANCHOR3
	ldrb	w3, [x19, 1205]
	mov	w1, 24
	add	x4, x22, x0, lsl 6
	sub	w1, w1, w3
	ldrh	w5, [x2, 1304]
	ldrb	w2, [x2, 1306]
	sub	w3, w1, w5
	mov	w1, 1
	lsl	w1, w1, w3
	ldr	w3, [x4, 40]
	sub	w1, w1, #1
	lsr	w3, w3, w5
	and	w1, w1, w3
	mov	w3, 65535
	udiv	w1, w1, w2
	ldr	x2, [x19, 1128]
	ldr	w5, [x2, 560]
	and	w24, w1, 65535
	and	w1, w1, w3
	cmp	w5, w3
	bne	.L1266
	str	w1, [x2, 560]
	ldr	w3, [x4, 40]
	str	w3, [x2, 564]
.L1266:
	add	x0, x22, x0, lsl 6
	ldp	w2, w3, [x0, 36]
	adrp	x0, .LC118
	add	x0, x0, :lo12:.LC118
	bl	printk
	ldr	x0, [x19, 1128]
	ldr	w1, [x0, 556]
	add	w1, w1, 1
	str	w1, [x0, 556]
	ldrh	w1, [x0, 16]
	cmp	w1, w24
	bne	.L1267
	strh	wzr, [x0, 22]
.L1265:
	mov	x0, x20
	mov	w25, 1
	bl	ftl_write_buf
	b	.L1261
.L1267:
	ldrh	w1, [x0, 48]
	cmp	w1, w24
	bne	.L1265
	strh	wzr, [x0, 54]
	b	.L1265
.L1262:
	cbz	w25, .L1270
	ldp	w1, w2, [x24, 36]
	adrp	x0, .LC119
	add	x0, x0, :lo12:.LC119
	bl	printk
	mov	x0, x20
	bl	ftl_write_buf
	b	.L1261
.L1270:
	ldrh	w2, [x24, 48]
	ldr	w0, [x24, 36]
	ldr	w1, [x24, 44]
	bl	lpa_hash_update_ppa
	ldrb	w0, [x24, 2]
	tbz	x0, 2, .L1271
	and	w0, w0, -3
	strb	w0, [x24, 2]
	b	.L1261
.L1271:
	mov	x0, x20
	bl	zbuf_free
	b	.L1261
	.size	ftl_write_completed, .-ftl_write_completed
	.align	2
	.global	zftl_add_read_buf
	.type	zftl_add_read_buf, %function
zftl_add_read_buf:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	cbnz	x0, .L1278
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1744
	mov	w2, 1151
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	bl	print_ftl_debug_info
.L1277:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L1278:
	mov	x20, x0
	adrp	x19, .LANCHOR3
	add	x0, x19, :lo12:.LANCHOR3
	ldrb	w1, [x20, 56]
	ldrb	w0, [x0, 1946]
	cmp	w1, w0
	bls	.L1281
	adrp	x1, .LANCHOR1
	add	x1, x1, :lo12:.LANCHOR1
	add	x1, x1, 1744
	mov	w2, 1158
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1281:
	add	x19, x19, :lo12:.LANCHOR3
	mov	x1, x20
	add	x0, x19, 1956
	bl	buf_add_tail
	ldrb	w0, [x19, 1957]
	add	w0, w0, 1
	strb	w0, [x19, 1957]
	b	.L1277
	.size	zftl_add_read_buf, .-zftl_add_read_buf
	.align	2
	.global	sblk_init
	.type	sblk_init, %function
sblk_init:
	adrp	x0, .LANCHOR0
	add	x0, x0, :lo12:.LANCHOR0
	mov	w1, -1
	strb	w1, [x0, 3354]
	strb	w1, [x0, 3357]
	strb	w1, [x0, 3355]
	strb	w1, [x0, 3356]
	mov	w0, 0
	ret
	.size	sblk_init, .-sblk_init
	.align	2
	.global	dump_sblk_queue
	.type	dump_sblk_queue, %function
dump_sblk_queue:
	stp	x29, x30, [sp, -48]!
	adrp	x0, .LC120
	add	x0, x0, :lo12:.LC120
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	add	x20, x20, :lo12:.LANCHOR0
	str	x21, [sp, 32]
	ldrb	w1, [x20, 3354]
	bl	printk
	ldrb	w19, [x20, 3354]
	cmp	w19, 255
	beq	.L1284
	add	x20, x20, 1304
	ubfiz	x19, x19, 6, 8
	adrp	x21, .LC121
	add	x19, x20, x19
	add	x21, x21, :lo12:.LC121
.L1286:
	ldrb	w2, [x19, 58]
	mov	x0, x21
	ldrb	w1, [x19, 1]
	ldr	w3, [x19, 40]
	bl	printk
	ldrb	w19, [x19]
	cmp	w19, 255
	beq	.L1284
	ubfiz	x19, x19, 6, 8
	add	x19, x20, x19
	b	.L1286
.L1284:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	dump_sblk_queue, .-dump_sblk_queue
	.align	2
	.global	queue_lun_state
	.type	queue_lun_state, %function
queue_lun_state:
	adrp	x5, .LANCHOR0
	add	x5, x5, :lo12:.LANCHOR0
	ldrb	w2, [x5, 3354]
	cmp	w2, 255
	beq	.L1302
	adrp	x6, .LANCHOR3
	add	x6, x6, :lo12:.LANCHOR3
	ldrb	w3, [x5, 1205]
	mov	w9, 24
	mov	w4, 1
	adrp	x12, .L1298
	ldrh	w11, [x6, 1304]
	sub	w9, w9, w3
	ldrb	w8, [x6, 1306]
	lsl	w3, w4, w3
	sub	w7, w9, w11
	sub	w3, w3, #1
	sub	w8, w8, #1
	and	w3, w3, 65535
	lsl	w4, w4, w7
	and	w8, w8, 65535
	sub	w4, w4, #1
	asr	w6, w0, w11
	and	w4, w4, 65535
	and	w6, w6, w8
	asr	w10, w0, w9
	and	w6, w6, w4
	and	w10, w10, w3
	add	x5, x5, 1304
	add	x12, x12, :lo12:.L1298
.L1301:
	add	x13, x5, x2, lsl 6
	ldr	w7, [x13, 40]
	lsr	w0, w7, w9
	and	w0, w3, w0
	cmp	w10, w0
	bne	.L1296
	lsr	w7, w7, w11
	and	w7, w8, w7
	and	w7, w4, w7
	ldrb	w0, [x13, 58]
	cmp	w6, w7
	bne	.L1297
	cmp	w1, 1
	bne	.L1294
	cmp	w0, 7
	ccmp	w0, 9, 4, ne
	beq	.L1296
	ret
.L1297:
	cmp	w1, 3
	bhi	.L1296
	ldrb	w7, [x12,w1,uxtw]
	adr	x13, .Lrtx1298
	add	x7, x13, w7, sxtb #2
	br	x7
.Lrtx1298:
	.section	.rodata
	.align	0
	.align	2
.L1298:
	.byte	(.L1294 - .Lrtx1298) / 4
	.byte	(.L1299 - .Lrtx1298) / 4
	.byte	(.L1300 - .Lrtx1298) / 4
	.byte	(.L1294 - .Lrtx1298) / 4
	.text
.L1299:
	cmp	w0, 7
	ccmp	w0, 9, 4, ne
	beq	.L1296
	ret
.L1300:
	cmp	w0, 11
	bne	.L1294
.L1296:
	lsl	x2, x2, 6
	ldrb	w2, [x5, x2]
	cmp	w2, 255
	bne	.L1301
.L1302:
	mov	w0, 0
.L1294:
	ret
	.size	queue_lun_state, .-queue_lun_state
	.align	2
	.global	queue_remove_completed_req
	.type	queue_remove_completed_req, %function
queue_remove_completed_req:
	adrp	x3, .LANCHOR0
	add	x0, x3, :lo12:.LANCHOR0
	add	x4, x0, 1304
	add	x12, x0, 3355
	add	x13, x0, 3356
	add	x14, x0, 3357
	ldrb	w7, [x0, 3354]
	mov	w5, 0
	ldrb	w9, [x0, 3355]
	mov	w11, -1
	ldrb	w10, [x0, 3357]
	ldrb	w8, [x0, 3356]
.L1305:
	cmp	w7, 255
	beq	.L1306
	sbfiz	x6, x7, 6, 32
	sxtw	x1, w7
	add	x2, x4, x6
	ldrb	w2, [x2, 58]
	sub	w2, w2, #12
	and	w2, w2, 255
	cmp	w2, 1
	bls	.L1307
	cbz	w5, .L1304
	strb	w7, [x0, 3354]
	ret
.L1307:
	lsl	x5, x1, 6
	ldrb	w7, [x4, x6]
	add	x2, x4, x5
	strb	w11, [x4, x5]
	ldrb	w5, [x2, 59]
	cmp	w5, 1
	bne	.L1310
	ldrh	w2, [x2, 50]
	cbnz	w2, .L1318
	mov	w2, w10
	mov	x5, x14
.L1311:
	cmp	w2, 255
	bne	.L1316
	add	x3, x3, :lo12:.LANCHOR0
	add	x1, x3, x1, lsl 6
	strb	w7, [x3, 3354]
	ldrb	w0, [x1, 1305]
	strb	w0, [x5]
	ret
.L1310:
	cbnz	w5, .L1312
	ldr	w2, [x2, 36]
	cmn	w2, #1
	beq	.L1312
	mov	w2, w9
	mov	x5, x12
	b	.L1311
.L1318:
	mov	w2, w8
	mov	x5, x13
	b	.L1311
.L1316:
	mov	w5, w2
	sbfiz	x2, x2, 6, 32
	ldrb	w2, [x4, x2]
	cmp	w2, 255
	bne	.L1316
	add	x1, x4, x1, lsl 6
	sbfiz	x5, x5, 6, 32
	ldrb	w1, [x1, 1]
	strb	w1, [x4, x5]
.L1312:
	mov	w5, 1
	b	.L1305
.L1306:
	cbz	w5, .L1304
	add	x3, x3, :lo12:.LANCHOR0
	mov	w0, -1
	strb	w0, [x3, 3354]
.L1304:
	ret
	.size	queue_remove_completed_req, .-queue_remove_completed_req
	.align	2
	.global	pm_select_ram_region
	.type	pm_select_ram_region, %function
pm_select_ram_region:
	stp	x29, x30, [sp, -32]!
	adrp	x1, .LANCHOR3
	add	x0, x1, :lo12:.LANCHOR3
	mov	x2, 0
	add	x29, sp, 0
	add	x3, x0, 1960
	mov	w4, 65535
	str	x19, [sp, 16]
.L1330:
	lsl	x5, x2, 4
	and	w19, w2, 65535
	ldrh	w5, [x5, x3]
	cmp	w5, w4
	beq	.L1329
	add	x2, x2, 1
	cmp	x2, 32
	bne	.L1330
	add	x0, x0, 1962
	mov	w19, w2
	mov	x3, x0
	mov	w5, 32768
	mov	w2, 0
.L1332:
	ldrh	w4, [x3]
	tbnz	x4, 15, .L1331
	cmp	w4, w5
	bcs	.L1331
	mov	w5, w4
	mov	w19, w2
.L1331:
	add	w2, w2, 1
	add	x3, x3, 16
	and	w2, w2, 65535
	cmp	w2, 32
	bne	.L1332
	cmp	w19, 32
	bne	.L1329
	add	x1, x1, :lo12:.LANCHOR3
	mov	w2, -1
	ldrb	w3, [x1, 2472]
	mov	w1, 0
.L1334:
	ldrh	w5, [x0]
	cmp	w5, w2
	bcs	.L1333
	ldrh	w4, [x0, -2]
	cmp	w4, w3
	csel	w2, w2, w5, eq
	csel	w19, w19, w1, eq
.L1333:
	add	w1, w1, 1
	add	x0, x0, 16
	and	w1, w1, 65535
	cmp	w1, 32
	bne	.L1334
	cmp	w19, 32
	bne	.L1329
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	mov	w2, 377
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1329:
	mov	w0, w19
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	pm_select_ram_region, .-pm_select_ram_region
	.align	2
	.global	ftl_memset
	.type	ftl_memset, %function
ftl_memset:
	stp	x29, x30, [sp, -16]!
	uxtw	x2, w2
	add	x29, sp, 0
	bl	memset
	ldp	x29, x30, [sp], 16
	ret
	.size	ftl_memset, .-ftl_memset
	.align	2
	.global	flash_lsb_page_tbl_build
	.type	flash_lsb_page_tbl_build, %function
flash_lsb_page_tbl_build:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x1, x19, :lo12:.LANCHOR0
	str	x21, [sp, 32]
	mov	w20, 1024
	ldr	x2, [x1, 1144]
	ldrb	w2, [x2, 12]
	sdiv	w20, w20, w2
	cbnz	w0, .L1342
	add	x1, x1, 4
	mov	x0, 0
.L1343:
	strh	w0, [x1, x0, lsl 1]
	add	x0, x0, 1
	cmp	x0, 512
	bne	.L1343
.L1349:
	adrp	x21, .LANCHOR3
	add	x21, x21, :lo12:.LANCHOR3
	add	x21, x21, 2476
	add	x19, x19, :lo12:.LANCHOR0
	mov	w2, 2048
	mov	w1, 255
	mov	x0, x21
	add	x19, x19, 4
	bl	ftl_memset
	mov	x0, 0
.L1344:
	ldrh	w1, [x19, x0, lsl 1]
	add	x0, x0, 1
	cmp	w20, w0, uxth
	strh	w1, [x21, w1, sxtw 1]
	bhi	.L1344
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L1342:
	cmp	w0, 1
	bne	.L1345
	add	x1, x1, 4
	mov	x2, 0
.L1348:
	and	w0, w2, 65535
	cmp	x2, 3
	bls	.L1346
	ubfiz	w3, w0, 1, 15
	and	w0, w0, 1
	add	w0, w0, 2
	sub	w0, w3, w0
	and	w0, w0, 65535
.L1346:
	strh	w0, [x1, x2, lsl 1]
	add	x2, x2, 1
	cmp	x2, 512
	bne	.L1348
	b	.L1349
.L1345:
	cmp	w0, 2
	bne	.L1350
	add	x1, x1, 4
	mov	w2, 65535
	mov	x0, 0
.L1352:
	cmp	x0, 2
	and	w3, w0, 65535
	csel	w3, w3, w2, cc
	strh	w3, [x1, x0, lsl 1]
	add	w2, w2, 2
	add	x0, x0, 1
	and	w2, w2, 65535
	cmp	x0, 512
	bne	.L1352
	b	.L1349
.L1350:
	cmp	w0, 3
	bne	.L1353
	add	x1, x1, 4
	mov	x2, 0
.L1356:
	and	w0, w2, 65535
	cmp	x2, 5
	bls	.L1354
	ubfiz	w3, w0, 1, 15
	and	w0, w0, 1
	add	w0, w0, 4
	sub	w0, w3, w0
	and	w0, w0, 65535
.L1354:
	strh	w0, [x1, x2, lsl 1]
	add	x2, x2, 1
	cmp	x2, 512
	bne	.L1356
	b	.L1349
.L1353:
	cmp	w0, 4
	bne	.L1357
	mov	w3, 1
	strh	w0, [x1, 12]
	mov	w0, 5
	strh	w3, [x1, 6]
	strh	w0, [x1, 14]
	mov	w3, 2
	mov	w0, 7
	strh	w3, [x1, 8]
	strh	w0, [x1, 16]
	mov	w3, 3
	mov	w0, 8
	strh	wzr, [x1, 4]
	strh	w0, [x1, 18]
	add	x1, x1, 20
	strh	w3, [x1, -10]
	mov	w0, 8
.L1359:
	and	w3, w0, 1
	ubfiz	w2, w0, 1, 15
	add	w3, w3, 6
	add	w0, w0, 1
	sub	w2, w2, w3
	strh	w2, [x1], 2
	and	w0, w0, 65535
	cmp	w0, 512
	bne	.L1359
	b	.L1349
.L1357:
	cmp	w0, 5
	bne	.L1360
	add	x2, x1, 4
	mov	x0, 0
.L1361:
	strh	w0, [x2, x0, lsl 1]
	add	x0, x0, 1
	cmp	x0, 16
	bne	.L1361
	add	x1, x1, 36
.L1362:
	strh	w0, [x1], 2
	add	w0, w0, 2
	and	w0, w0, 65535
	cmp	w0, 1008
	bne	.L1362
	b	.L1349
.L1360:
	cmp	w0, 8
	bne	.L1363
	add	x1, x1, 4
	mov	x0, 0
.L1364:
	strh	w0, [x0, x1]
	add	x0, x0, 2
	cmp	x0, 1024
	bne	.L1364
	b	.L1349
.L1363:
	cmp	w0, 9
	bne	.L1365
	mov	w2, 1
	strh	wzr, [x1, 4]
	strh	w2, [x1, 6]
	mov	w2, 2
	add	x1, x1, 10
	strh	w2, [x1, -2]
	mov	w0, 3
.L1366:
	strh	w0, [x1], 2
	add	w0, w0, 2
	and	w0, w0, 65535
	cmp	w0, 1021
	bne	.L1366
	b	.L1349
.L1365:
	cmp	w0, 10
	bne	.L1367
	add	x2, x1, 4
	mov	x0, 0
.L1368:
	strh	w0, [x2, x0, lsl 1]
	add	x0, x0, 1
	cmp	x0, 63
	bne	.L1368
	add	x1, x1, 130
.L1369:
	strh	w0, [x1], 2
	add	w0, w0, 2
	and	w0, w0, 65535
	cmp	w0, 961
	bne	.L1369
	b	.L1349
.L1367:
	cmp	w0, 11
	bne	.L1370
	add	x1, x19, :lo12:.LANCHOR0
	mov	x0, 0
	add	x2, x1, 4
.L1371:
	strh	w0, [x2, x0, lsl 1]
	add	x0, x0, 1
	cmp	x0, 8
	bne	.L1371
	add	x1, x1, 20
.L1373:
	and	w3, w0, 1
	ubfiz	w2, w0, 1, 15
	add	w3, w3, 6
	add	w0, w0, 1
	sub	w2, w2, w3
	strh	w2, [x1], 2
	and	w0, w0, 65535
	cmp	w0, 512
	bne	.L1373
	b	.L1349
.L1370:
	cmp	w0, 13
	bne	.L1349
	add	x2, x19, :lo12:.LANCHOR0
	mov	x1, 0
	add	x2, x2, 4
	mov	w0, 0
.L1374:
	strh	w0, [x1, x2]
	add	w0, w0, 3
	and	w0, w0, 65535
	add	x1, x1, 2
	cmp	w0, 1536
	bne	.L1374
	b	.L1349
	.size	flash_lsb_page_tbl_build, .-flash_lsb_page_tbl_build
	.align	2
	.global	flash_die_info_init
	.type	flash_die_info_init, %function
flash_die_info_init:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR2
	stp	x21, x22, [sp, 32]
	ldr	w0, [x19, #:lo12:.LANCHOR2]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	str	x27, [sp, 80]
	tbz	x0, 12, .L1397
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	adrp	x0, .LC4
	add	x1, x1, 24
	add	x0, x0, :lo12:.LC4
	bl	printk
.L1397:
	add	x24, x19, :lo12:.LANCHOR2
	adrp	x22, .LANCHOR0
	add	x20, x22, :lo12:.LANCHOR0
	adrp	x21, .LANCHOR5
	add	x23, x21, :lo12:.LANCHOR5
	mov	w2, 8
	ldrh	w0, [x24, 34]
	add	x25, x20, 1208
	ldrb	w1, [x24, 20]
	add	x27, x24, 9
	strh	w0, [x20, 2]
	mov	w26, 2
	ldrh	w0, [x24, 18]
	strb	wzr, [x20, 1153]
	sdiv	w0, w0, w1
	mov	w1, 0
	strh	w0, [x23, 172]
	add	x0, x20, 1196
	bl	ftl_memset
	add	x0, x23, 176
	mov	x23, 0
	mov	w2, 32
	mov	w1, 0
	bl	ftl_memset
.L1399:
	ldrb	w2, [x24, 8]
	add	x7, x20, 1024
	strb	w26, [x23, x25]
	add	x1, x20, 1216
	add	x1, x1, x23, lsl 3
	mov	x0, x27
	bl	flash_mem_cmp8
	cbnz	w0, .L1398
	ldrb	w2, [x20, 1153]
	add	x1, x21, :lo12:.LANCHOR5
	add	x1, x1, 176
	add	x7, x7, x2
	add	w0, w2, 1
	strb	w0, [x20, 1153]
	and	w0, w23, 255
	str	wzr, [x1, x2, lsl 2]
	strb	w0, [x7, 172]
	bl	zftl_flash_enter_slc_mode
.L1398:
	add	x23, x23, 1
	cmp	x23, 4
	bne	.L1399
	add	x0, x19, :lo12:.LANCHOR2
	add	x1, x0, 8
	ldrb	w2, [x1, 8]
	cmp	w2, 2
	beq	.L1400
.L1404:
	add	x19, x19, :lo12:.LANCHOR2
	add	x22, x22, :lo12:.LANCHOR0
	add	x21, x21, :lo12:.LANCHOR5
	ldr	x27, [sp, 80]
	ldp	x23, x24, [sp, 48]
	ldrb	w1, [x19, 21]
	ldrb	w0, [x22, 1153]
	ldp	x25, x26, [sp, 64]
	mul	w0, w0, w1
	ldrh	w1, [x19, 22]
	ldp	x19, x20, [sp, 16]
	mul	w0, w0, w1
	strh	w0, [x21, 208]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 96
	ret
.L1400:
	add	x8, x22, :lo12:.LANCHOR0
	ldrh	w7, [x1, 14]
	add	x11, x21, :lo12:.LANCHOR5
	ldrb	w12, [x0, 8]
	and	w7, w7, 65280
	ldrb	w13, [x1, 23]
	ldrh	w2, [x8, 2]
	add	x15, x8, 1216
	add	x10, x0, 9
	add	x11, x11, 176
	add	x18, x8, 1024
	mov	x9, 0
	mul	w7, w7, w2
	ldrb	w2, [x1, 13]
	mul	w7, w7, w2
	lsl	w14, w7, 1
.L1403:
	mov	w2, w12
	add	x1, x15, x9, lsl 3
	mov	x0, x10
	bl	flash_mem_cmp8
	cbnz	w0, .L1401
	ldrb	w0, [x8, 1153]
	cmp	w13, 0
	csel	w2, w7, w14, eq
	add	w1, w0, 1
	strb	w1, [x8, 1153]
	str	w2, [x11, x0, lsl 2]
	add	x0, x18, x0
	strb	w9, [x0, 172]
.L1401:
	add	x9, x9, 1
	cmp	x9, 4
	bne	.L1403
	b	.L1404
	.size	flash_die_info_init, .-flash_die_info_init
	.align	2
	.global	lpa_hash_init
	.type	lpa_hash_init, %function
lpa_hash_init:
	stp	x29, x30, [sp, -32]!
	mov	w2, 512
	mov	w1, 255
	add	x29, sp, 0
	str	x19, [sp, 16]
	adrp	x19, .LANCHOR3
	add	x19, x19, :lo12:.LANCHOR3
	add	x0, x19, 1416
	bl	ftl_memset
	mov	w1, 255
	ldrb	w0, [x19, 1321]
	ldrh	w2, [x19, 1376]
	mul	w2, w2, w0
	ldr	x0, [x19, 1936]
	lsl	w2, w2, 2
	bl	ftl_memset
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	lpa_hash_init, .-lpa_hash_init
	.align	2
	.global	lpa_rebuild_hash
	.type	lpa_rebuild_hash, %function
lpa_rebuild_hash:
	stp	x29, x30, [sp, -32]!
	adrp	x0, .LANCHOR2
	add	x29, sp, 0
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	stp	x19, x20, [sp, 16]
	tbz	x0, 12, .L1417
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	adrp	x0, .LC122
	mov	w3, 0
	mov	w2, 239
	add	x1, x1, 48
	add	x0, x0, :lo12:.LC122
	bl	printk
.L1417:
	adrp	x19, .LANCHOR3
	add	x19, x19, :lo12:.LANCHOR3
	add	x20, x19, 1416
	mov	w2, 512
	mov	w1, 255
	mov	x0, x20
	bl	ftl_memset
	ldrb	w0, [x19, 1321]
	mov	w1, 255
	ldrh	w2, [x19, 1376]
	mul	w2, w2, w0
	ldr	x0, [x19, 1936]
	lsl	w2, w2, 2
	bl	ftl_memset
	mov	w1, 0
.L1418:
	ldrh	w0, [x19, 1376]
	ldrb	w2, [x19, 1321]
	mul	w0, w0, w2
	cmp	w1, w0, lsl 1
	blt	.L1420
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L1420:
	ldr	x0, [x19, 1928]
	uxtw	x2, w1
	ldr	w0, [x0, x2, lsl 2]
	cmn	w0, #1
	beq	.L1419
	and	x0, x0, 255
	ldrh	w3, [x20, x0, lsl 1]
	strh	w1, [x20, x0, lsl 1]
	ldr	x0, [x19, 1936]
	strh	w3, [x0, x2, lsl 1]
.L1419:
	add	w1, w1, 1
	and	w1, w1, 65535
	b	.L1418
	.size	lpa_rebuild_hash, .-lpa_rebuild_hash
	.align	2
	.global	zftl_read_flash_info
	.type	zftl_read_flash_info, %function
zftl_read_flash_info:
	stp	x29, x30, [sp, -32]!
	mov	w2, 11
	mov	w1, 0
	add	x29, sp, 0
	str	x19, [sp, 16]
	mov	x19, x0
	bl	ftl_memset
	adrp	x1, .LANCHOR2
	adrp	x0, .LANCHOR0
	add	x1, x1, :lo12:.LANCHOR2
	add	x0, x0, :lo12:.LANCHOR0
	add	x1, x1, 8
	strb	wzr, [x19, 10]
	mov	w4, 1
	ldrb	w2, [x1, 9]
	ldrh	w3, [x0, 2]
	add	x0, x0, 1196
	mul	w2, w2, w3
	strh	w2, [x19, 4]
	ldrb	w2, [x0, 53]
	strb	w2, [x19, 7]
	ldr	w2, [x0, -164]
	str	w2, [x19]
	ldrb	w2, [x1, 9]
	strb	w2, [x19, 6]
	ldrb	w3, [x0, -43]
	mov	w2, 32
	ldrb	w1, [x1, 7]
	strb	w2, [x19, 8]
	mov	x2, 0
	strb	w1, [x19, 9]
.L1429:
	cmp	w3, w2, uxtb
	bhi	.L1430
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L1430:
	ldrb	w1, [x2, x0]
	add	x2, x2, 1
	ldrb	w5, [x19, 10]
	lsl	w1, w4, w1
	orr	w1, w1, w5
	strb	w1, [x19, 10]
	b	.L1429
	.size	zftl_read_flash_info, .-zftl_read_flash_info
	.align	2
	.global	gc_static_wearleveling
	.type	gc_static_wearleveling, %function
gc_static_wearleveling:
	stp	x29, x30, [sp, -144]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x0, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	ldr	x0, [x0, 3384]
	ldr	w1, [x0, 32]
	mov	w0, 10240
	cmp	w1, w0
	bls	.L1433
	bl	ftl_tmp_into_update
.L1433:
	add	x3, x19, :lo12:.LANCHOR0
	mov	w4, 36000
	ldr	x0, [x3, 1128]
	ldr	w1, [x0, 568]
	ldr	w2, [x0, 12]
	add	w4, w1, w4
	cmp	w2, w4
	bcs	.L1434
	ldr	x4, [x3, 3384]
	ldr	w3, [x0, 572]
	add	w3, w3, 256
	ldr	w4, [x4, 36]
	cmp	w4, w3
	bcc	.L1486
.L1434:
	add	w1, w1, 860160
	add	w1, w1, 3840
	cmp	w2, w1
	bhi	.L1436
	add	x1, x19, :lo12:.LANCHOR0
	ldr	x3, [x1, 3384]
	ldr	w1, [x0, 572]
	add	w1, w1, 32
	ldr	w3, [x3, 36]
	cmp	w3, w1
	bls	.L1487
.L1436:
	add	x24, x19, :lo12:.LANCHOR0
	mov	w20, 65535
	adrp	x8, .LC123
	mov	w21, w20
	mov	w9, w20
	add	x8, x8, :lo12:.LC123
	ldr	x1, [x24, 3384]
	mov	w28, 0
	mov	w27, 0
	mov	w26, 0
	mov	w25, 0
	mov	w23, 0
	adrp	x10, .LANCHOR2
	stp	wzr, wzr, [x29, 128]
	ldr	w3, [x1, 36]
	str	w3, [x0, 572]
	str	w2, [x0, 568]
	str	wzr, [x29, 136]
	ldrh	w22, [x1, 134]
.L1438:
	ldrh	w0, [x24, 1096]
	cmp	w0, w22
	bhi	.L1447
	ldr	x0, [x24, 1128]
	mov	w2, 128
	mov	w1, 255
	adrp	x22, .LANCHOR2
	add	x0, x0, 264
	strh	wzr, [x0, -142]
	bl	ftl_memset
	ldr	x0, [x24, 1128]
	ldr	w2, [x22, #:lo12:.LANCHOR2]
	ldr	x10, [x24, 1104]
	ldrh	w0, [x0, 586]
	mov	x1, x0
	lsl	x9, x0, 2
	add	x8, x10, x9
	tbz	x2, 10, .L1448
	ldr	x5, [x24, 1120]
	ldrb	w6, [x8, 3]
	ldrb	w4, [x8, 2]
	ldr	w3, [x10, x9]
	ldrh	w7, [x5, x0, lsl 1]
	adrp	x0, .LC124
	ldrh	w2, [x10, x9]
	ubfx	x5, x4, 5, 3
	stp	x9, x10, [x29, 104]
	ubfx	x3, x3, 11, 8
	str	x8, [x29, 120]
	and	w2, w2, 2047
	ubfx	x4, x4, 3, 2
	add	x0, x0, :lo12:.LC124
	bl	printk
	ldp	x9, x10, [x29, 104]
	ldr	x8, [x29, 120]
.L1448:
	ldrb	w0, [x8, 2]
	adrp	x24, .LANCHOR5
	and	w0, w0, 224
	cmp	w0, 32
	bne	.L1449
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x0, [x0, 3384]
	ldrh	w0, [x0, 688]
	cmp	w0, 2
	bls	.L1449
	add	x0, x24, :lo12:.LANCHOR5
	mov	w1, 1
	str	w1, [x0, 212]
.L1449:
	ldrb	w0, [x8, 2]
	tbz	x0, 3, .L1450
	add	x3, x19, :lo12:.LANCHOR0
	ldrh	w1, [x10, x9]
	and	w1, w1, 2047
	ldr	x0, [x3, 3384]
	ldrh	w2, [x0, 96]
	add	x0, x24, :lo12:.LANCHOR5
	ldrh	w0, [x0, 216]
	add	w0, w1, w0, lsr 2
	cmp	w2, w0
	ble	.L1450
	ldrb	w0, [x8, 2]
	and	w1, w0, 192
	cmp	w1, 64
	bne	.L1451
	ldr	x0, [x3, 1128]
	mov	w2, 1
	str	x3, [x29, 120]
	mov	w1, 0
	ldrh	w0, [x0, 586]
	bl	gc_add_sblk
	ldr	x3, [x29, 120]
	mov	w0, 1
	strh	w0, [x3, 5608]
.L1450:
	add	x0, x19, :lo12:.LANCHOR0
	ldr	w2, [x22, #:lo12:.LANCHOR2]
	ldr	x1, [x0, 1128]
	ldr	x10, [x0, 1104]
	ldrh	w5, [x1, 584]
	mov	x1, x5
	lsl	x9, x5, 2
	add	x8, x10, x9
	tbz	x2, 10, .L1452
	ldr	x0, [x0, 1120]
	ldrb	w6, [x8, 3]
	ldrb	w4, [x8, 2]
	ldr	w3, [x10, x9]
	ldrh	w7, [x0, x5, lsl 1]
	adrp	x0, .LC125
	ldrh	w2, [x10, x9]
	ubfx	x5, x4, 5, 3
	stp	x9, x10, [x29, 104]
	ubfx	x3, x3, 11, 8
	str	x8, [x29, 120]
	and	w2, w2, 2047
	ubfx	x4, x4, 3, 2
	add	x0, x0, :lo12:.LC125
	bl	printk
	ldp	x9, x10, [x29, 104]
	ldr	x8, [x29, 120]
.L1452:
	ldrb	w0, [x8, 2]
	tbz	x0, 3, .L1453
	add	x3, x19, :lo12:.LANCHOR0
	ldr	w1, [x10, x9]
	ldr	x0, [x3, 3384]
	ubfx	x1, x1, 11, 8
	ldrh	w2, [x0, 98]
	add	x0, x24, :lo12:.LANCHOR5
	ldrh	w0, [x0, 218]
	add	w0, w1, w0, lsr 2
	cmp	w2, w0
	ble	.L1453
	ldrb	w0, [x8, 2]
	and	w1, w0, 192
	cmp	w1, 64
	bne	.L1454
	ldr	x0, [x3, 1128]
	mov	w2, 1
	str	x3, [x29, 120]
	mov	w1, 0
	ldrh	w0, [x0, 584]
	bl	gc_add_sblk
	ldr	x3, [x29, 120]
	mov	w0, 1
	strh	w0, [x3, 5608]
.L1453:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 10, .L1455
	add	x0, x19, :lo12:.LANCHOR0
	uxtw	x6, w28
	lsl	x1, x6, 2
	ldr	x2, [x0, 1104]
	ldr	x0, [x0, 1120]
	add	x5, x2, x1
	ldr	w3, [x2, x1]
	ldrh	w7, [x0, x6, lsl 1]
	adrp	x0, .LC126
	ldrb	w6, [x5, 3]
	add	x0, x0, :lo12:.LC126
	ldrb	w4, [x5, 2]
	ubfx	x3, x3, 11, 8
	ldrh	w2, [x2, x1]
	mov	w1, w28
	ubfx	x5, x4, 5, 3
	and	w2, w2, 2047
	ubfx	x4, x4, 3, 2
	bl	printk
.L1455:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 10, .L1456
	add	x0, x19, :lo12:.LANCHOR0
	ldr	w6, [x29, 128]
	ldr	x2, [x0, 1104]
	lsl	x1, x6, 2
	ldr	x0, [x0, 1120]
	add	x5, x2, x1
	ldr	w3, [x2, x1]
	ldrh	w7, [x0, x6, lsl 1]
	adrp	x0, .LC127
	ldrh	w2, [x2, x1]
	add	x0, x0, :lo12:.LC127
	ldrb	w6, [x5, 3]
	ubfx	x3, x3, 11, 8
	ldr	w1, [x29, 128]
	and	w2, w2, 2047
	ldrb	w4, [x5, 2]
	ubfx	x5, x4, 5, 3
	ubfx	x4, x4, 3, 2
	bl	printk
.L1456:
	ldr	w1, [x29, 132]
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x0, [x0, 3384]
	udiv	w3, w1, w26
	ldr	w1, [x29, 136]
	strh	w25, [x0, 96]
	udiv	w4, w1, w27
	strh	w23, [x0, 98]
	strh	w20, [x0, 92]
	strh	w21, [x0, 94]
	strh	w3, [x0, 88]
	strh	w4, [x0, 90]
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 10, .L1457
	adrp	x0, .LC128
	and	w4, w4, 65535
	and	w3, w3, 65535
	mov	w2, w27
	mov	w1, w26
	add	x0, x0, :lo12:.LC128
	bl	printk
.L1457:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 10, .L1458
	add	x0, x24, :lo12:.LANCHOR5
	mov	w4, w23
	mov	w3, w25
	mov	w2, w21
	mov	w1, w20
	ldrh	w6, [x0, 218]
	ldrh	w5, [x0, 216]
	adrp	x0, .LC129
	add	x0, x0, :lo12:.LC129
	bl	printk
.L1458:
	add	x1, x24, :lo12:.LANCHOR5
	sub	w0, w23, w21
	str	w0, [x29, 128]
	ldrh	w0, [x1, 218]
	ldr	w2, [x29, 128]
	cmp	w2, w0
	bgt	.L1459
	ldrh	w1, [x1, 216]
	sub	w0, w25, w20
	cmp	w0, w1
	ble	.L1488
.L1459:
	add	x8, x19, :lo12:.LANCHOR0
	mov	w26, 0
	mov	x27, x8
	mov	w23, 0
	ldr	x0, [x8, 1128]
	ldrh	w28, [x0, 580]
	ldr	x0, [x8, 3384]
	ldrh	w0, [x0, 134]
	str	w0, [x29, 132]
	add	x0, x8, 3416
	str	x0, [x29, 136]
	adrp	x0, .LC131
	add	x0, x0, :lo12:.LC131
	str	x0, [x29, 120]
.L1461:
	ldrh	w0, [x27, 1096]
	ldr	w1, [x29, 132]
	cmp	w1, w0
	bcc	.L1471
.L1470:
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x0, [x0, 1128]
	str	w28, [x0, 580]
.L1460:
	cbz	w21, .L1473
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x1, [x0, 3384]
	ldrh	w1, [x1, 134]
.L1474:
	ldrh	w2, [x0, 1096]
	cmp	w2, w1
	bhi	.L1476
	ldr	x0, [x0, 3384]
	ldrh	w1, [x0, 72]
	add	w1, w21, w1
	strh	w1, [x0, 72]
	ldrh	w1, [x0, 98]
	cmp	w21, w1
	bcs	.L1473
	sub	w21, w1, w21
	strh	w21, [x0, 98]
.L1473:
	cbz	w20, .L1479
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x1, [x0, 3384]
	ldrh	w1, [x1, 134]
.L1480:
	ldrh	w2, [x0, 1096]
	cmp	w2, w1
	bhi	.L1482
	ldr	x0, [x0, 3384]
	ldrh	w1, [x0, 74]
	add	w1, w20, w1
	strh	w1, [x0, 74]
	ldrh	w1, [x0, 96]
	cmp	w20, w1
	bcs	.L1479
	sub	w20, w1, w20
	strh	w20, [x0, 96]
.L1479:
	adrp	x5, .LANCHOR3
	add	x5, x5, :lo12:.LANCHOR3
	mov	w1, 0
	add	x0, x5, 1368
	bl	_list_get_gc_head_node
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L1437
	add	x19, x19, :lo12:.LANCHOR0
	ubfiz	x1, x1, 1, 16
	ldrh	w2, [x5, 1376]
	ldr	x3, [x19, 1120]
	ldrh	w1, [x3, x1]
	cmp	w1, w2, lsr 1
	bhi	.L1437
	add	w23, w23, 1
	mov	w2, 1
	mov	w1, 0
	bl	gc_add_sblk
.L1437:
	add	w0, w23, w26
.L1432:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 144
	ret
.L1447:
	uxtw	x7, w22
	ldr	x5, [x24, 1104]
	lsl	x2, x7, 2
	add	x6, x5, x2
	ldrb	w0, [x6, 2]
	and	w1, w0, 224
	cmp	w1, 224
	beq	.L1439
	tbz	x0, 3, .L1440
	ldr	w0, [x5, x2]
	ldrh	w1, [x5, x2]
	ubfx	x0, x0, 11, 8
	and	w1, w1, 2047
.L1441:
	ldr	w3, [x29, 132]
	add	w26, w26, 1
	and	w26, w26, 65535
	cmp	w20, w1
	add	w3, w3, w1
	str	w3, [x29, 132]
	bls	.L1485
	ldr	x3, [x24, 1128]
	mov	w20, w1
	strh	w22, [x3, 586]
.L1485:
	cmp	w25, w1
	bcs	.L1444
	mov	w28, w22
	mov	w25, w1
.L1444:
	cmp	w0, w9
	bne	.L1443
.L1445:
	cmp	w0, 9
	ccmp	w1, 9, 0, hi
	bhi	.L1439
	ldr	w0, [x10, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L1439
	ldr	x0, [x24, 1120]
	mov	w1, w22
	ldrb	w4, [x6, 2]
	ldrb	w6, [x6, 3]
	ldr	w3, [x5, x2]
	ldrh	w7, [x0, x7, lsl 1]
	mov	x0, x8
	ldrh	w2, [x5, x2]
	ubfx	x5, x4, 5, 3
	str	x10, [x29, 104]
	ubfx	x4, x4, 3, 2
	str	w9, [x29, 112]
	ubfx	x3, x3, 11, 8
	str	x8, [x29, 120]
	and	w2, w2, 2047
	bl	printk
	ldr	w9, [x29, 112]
	ldr	x10, [x29, 104]
	ldr	x8, [x29, 120]
.L1439:
	add	w22, w22, 1
	and	w22, w22, 65535
	b	.L1438
.L1440:
	tst	w0, 24
	bne	.L1442
	ldrh	w1, [x5, x2]
	mov	w0, 65535
	and	w1, w1, 2047
	b	.L1441
.L1442:
	ldr	w0, [x5, x2]
	mov	w1, 65535
	ubfx	x0, x0, 11, 8
.L1443:
	ldr	w3, [x29, 136]
	add	w27, w27, 1
	and	w27, w27, 65535
	cmp	w21, w0
	add	w3, w3, w0
	str	w3, [x29, 136]
	bls	.L1446
	ldr	x3, [x24, 1128]
	mov	w21, w0
	strh	w22, [x3, 584]
.L1446:
	cmp	w23, w0
	bcs	.L1445
	mov	w23, w0
	str	w22, [x29, 128]
	b	.L1445
.L1451:
	tst	w0, 224
	bne	.L1450
	ldr	x1, [x3, 1128]
	mov	w0, 65535
	ldrh	w2, [x1, 590]
	cmp	w2, w0
	bne	.L1450
	ldrh	w0, [x1, 586]
	str	x3, [x29, 120]
	ldrh	w1, [x1, 588]
	cmp	w1, w0
	beq	.L1450
	bl	zftl_remove_free_node
	ldr	x3, [x29, 120]
	ldr	x0, [x3, 1128]
	ldrh	w1, [x0, 586]
	strh	w1, [x0, 590]
	mov	w1, -1
	strh	w1, [x0, 586]
	b	.L1450
.L1454:
	and	w0, w0, 248
	cmp	w0, 16
	bne	.L1453
	ldr	x1, [x3, 1128]
	mov	w0, 65535
	ldrh	w2, [x1, 588]
	cmp	w2, w0
	bne	.L1453
	ldrh	w0, [x1, 584]
	str	x3, [x29, 120]
	ldrh	w1, [x1, 590]
	cmp	w1, w0
	beq	.L1453
	bl	zftl_remove_free_node
	ldr	x3, [x29, 120]
	ldr	x0, [x3, 1128]
	ldrh	w1, [x0, 584]
	strh	w1, [x0, 588]
	mov	w1, -1
	strh	w1, [x0, 584]
	b	.L1453
.L1471:
	add	w7, w28, 1
	ldr	x4, [x27, 1104]
	and	w28, w7, 65535
	cmp	w0, w28
	csel	w28, w28, wzr, hi
	uxtw	x9, w28
	lsl	x3, x9, 2
	add	x0, x4, x3
	ldrb	w0, [x0, 2]
	tst	w0, 192
	beq	.L1463
	and	w2, w0, 224
	cmp	w2, 224
	beq	.L1463
	ubfx	x0, x0, 3, 2
	and	w1, w0, 1
	tbz	x0, 0, .L1464
	cmp	w2, 160
.L1551:
	bne	.L1466
	add	x0, x24, :lo12:.LANCHOR5
	ldr	w2, [x29, 128]
	ldrh	w0, [x0, 218]
	cmp	w2, w0
	ble	.L1467
	ldr	w0, [x4, x3]
	ubfx	x0, x0, 11, 8
	cmp	w0, w21
	bls	.L1468
	cbz	w1, .L1467
	ldrh	w0, [x4, x3]
	and	w0, w0, 2047
	cmp	w0, w20
	bgt	.L1467
.L1468:
	mov	w1, 0
	stp	x4, x9, [x29, 96]
	str	x3, [x29, 112]
	mov	w2, 1
	mov	w0, w28
	bl	gc_add_sblk
	ldr	x1, [x29, 136]
	mov	w0, 1
	add	w23, w23, 1
	ldr	x3, [x29, 112]
	ldp	x4, x9, [x29, 96]
	strh	w0, [x1, 2192]
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 10, .L1467
	ldr	x0, [x27, 1104]
	ldr	w6, [x4, x3]
	ldrh	w5, [x4, x3]
	add	x3, x0, x3
	ldr	x1, [x27, 1120]
	ldr	x0, [x29, 136]
	ubfx	x6, x6, 11, 8
	ldrb	w2, [x3, 2]
	and	w5, w5, 2047
	ldrh	w3, [x1, x9, lsl 1]
	mov	w1, w28
	ldrh	w4, [x0, 56]
	ubfx	x2, x2, 5, 3
	adrp	x0, .LC130
	add	x0, x0, :lo12:.LC130
.L1552:
	bl	printk
.L1467:
	cmp	w23, 4
	ccmp	w26, 4, 2, ls
	bhi	.L1470
.L1463:
	ldr	w0, [x29, 132]
	add	w0, w0, 1
	and	w0, w0, 65535
	str	w0, [x29, 132]
	b	.L1461
.L1464:
	cmp	w0, 2
	b	.L1551
.L1466:
	add	x2, x24, :lo12:.LANCHOR5
	sub	w0, w25, w20
	ldrh	w2, [x2, 216]
	cmp	w0, w2
	ble	.L1467
	ldrh	w0, [x4, x3]
	add	w2, w20, 8
	and	w0, w0, 2047
	cmp	w0, w2
	ble	.L1469
	cbz	w1, .L1467
	ldr	w0, [x4, x3]
	add	w1, w21, 4
	ubfx	x0, x0, 11, 8
	cmp	w0, w1
	bgt	.L1467
.L1469:
	mov	w1, 0
	stp	x4, x9, [x29, 96]
	str	x3, [x29, 112]
	mov	w2, 1
	mov	w0, w28
	bl	gc_add_sblk
	ldr	x1, [x29, 136]
	mov	w0, 1
	add	w26, w26, 1
	ldr	x3, [x29, 112]
	ldp	x4, x9, [x29, 96]
	strh	w0, [x1, 2192]
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 10, .L1467
	ldr	x0, [x27, 1104]
	ldr	w6, [x4, x3]
	ldrh	w5, [x4, x3]
	add	x3, x0, x3
	ldr	x1, [x27, 1120]
	ldr	x0, [x29, 136]
	ubfx	x6, x6, 11, 8
	ldrb	w2, [x3, 2]
	and	w5, w5, 2047
	ldrh	w3, [x1, x9, lsl 1]
	mov	w1, w28
	ldrh	w4, [x0, 56]
	ubfx	x2, x2, 5, 3
	ldr	x0, [x29, 120]
	b	.L1552
.L1488:
	mov	w26, 0
	mov	w23, 0
	b	.L1460
.L1476:
	ldr	x5, [x0, 1104]
	ubfiz	x4, x1, 2, 16
	add	x6, x5, x4
	ldr	w2, [x5, x4]
	ubfx	x3, x2, 11, 8
	cmp	w21, w3
	bhi	.L1475
	ldrb	w6, [x6, 2]
	tst	w6, 24
	beq	.L1475
	sub	w3, w3, w21
	bfi	w2, w3, 11, 8
	str	w2, [x5, x4]
.L1475:
	add	w1, w1, 1
	and	w1, w1, 65535
	b	.L1474
.L1482:
	ldr	x5, [x0, 1104]
	ubfiz	x4, x1, 2, 16
	add	x6, x5, x4
	ldrh	w2, [x5, x4]
	and	w3, w2, 2047
	cmp	w3, w20
	blt	.L1481
	ldrb	w6, [x6, 2]
	and	w6, w6, 24
	cmp	w6, 16
	beq	.L1481
	sub	w3, w3, w20
	bfi	w2, w3, 0, 11
	strh	w2, [x5, x4]
.L1481:
	add	w1, w1, 1
	and	w1, w1, 65535
	b	.L1480
.L1487:
	mov	w26, 0
	mov	w23, 0
	b	.L1437
.L1486:
	mov	w0, 0
	b	.L1432
	.size	gc_static_wearleveling, .-gc_static_wearleveling
	.align	2
	.global	zftl_sblk_list_init
	.type	zftl_sblk_list_init, %function
zftl_sblk_list_init:
	stp	x29, x30, [sp, -96]!
	mov	w0, 6
	mov	w1, 0
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	adrp	x25, .LANCHOR4
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR3
	ldrh	w2, [x19, 1096]
	add	x25, x25, :lo12:.LANCHOR4
	str	x27, [sp, 80]
	add	x26, x19, 3372
	add	x25, x25, 72
	mov	w23, 0
	mul	w2, w2, w0
	ldr	x0, [x19, 1040]
	bl	ftl_memset
	strh	wzr, [x19, 3368]
	add	x0, x22, :lo12:.LANCHOR3
	mov	w1, 32
	strh	wzr, [x19, 3370]
	strh	wzr, [x19, 3372]
	ldrb	w24, [x0, 1321]
	strh	w1, [x0, 1408]
	str	xzr, [x0, 1344]
	str	xzr, [x0, 1360]
	str	xzr, [x0, 1368]
	str	xzr, [x0, 1384]
	str	xzr, [x0, 1392]
	str	xzr, [x0, 1400]
	ldrh	w0, [x0, 1338]
	strh	wzr, [x19, 3374]
	strh	wzr, [x19, 3378]
	strh	wzr, [x19, 3376]
	mul	w0, w24, w0
	mov	w24, 32768
	sdiv	w24, w24, w0
	ldr	x0, [x19, 3384]
	ldrsh	w20, [x0, 134]
	sxth	w24, w24
	strh	wzr, [x0, 146]
.L1554:
	ldrh	w0, [x19, 1096]
	cmp	w20, w0
	blt	.L1571
	ldr	x0, [x19, 3384]
	ldrh	w1, [x19, 3368]
	strh	w1, [x0, 114]
	ldrh	w1, [x19, 3370]
	strh	w1, [x0, 118]
	ldrh	w1, [x19, 3372]
	strh	w1, [x0, 116]
	ldrh	w1, [x19, 3374]
	strh	w1, [x0, 122]
	ldrh	w1, [x19, 3378]
	strh	w1, [x0, 120]
	ldrh	w1, [x19, 3376]
	strh	w1, [x0, 124]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L1571:
	ldr	x21, [x19, 1104]
	sxtw	x27, w20
	add	x21, x21, x27, lsl 2
	ldrb	w0, [x21, 3]
	cbz	w0, .L1572
	add	x0, x22, :lo12:.LANCHOR3
	ldr	x3, [x19, 3384]
	mov	w1, 0
	ldrb	w4, [x0, 1321]
	ldrh	w5, [x0, 1338]
	mov	w0, 0
.L1556:
	cmp	w1, w4
	blt	.L1559
	cbz	w0, .L1560
	mov	w1, 32768
	sdiv	w0, w1, w0
	add	w0, w0, 1
	sxth	w0, w0
.L1555:
	mov	w1, 6
	ldr	x2, [x19, 1040]
	smull	x1, w20, w1
	add	x2, x2, x1
	strh	w0, [x2, 4]
	mov	w2, -1
	ldr	x0, [x19, 1040]
	add	x3, x0, x1
	strh	w2, [x3, 2]
	strh	w2, [x0, x1]
	mov	w1, 224
	ldrb	w0, [x21, 2]
	and	w0, w0, 224
	cmp	w0, 32
	ccmp	w0, w1, 4, ne
	beq	.L1561
	ldr	x1, [x19, 1128]
	ldrh	w2, [x1, 16]
	cmp	w20, w2
	beq	.L1561
	ldrh	w2, [x1, 48]
	cmp	w20, w2
	beq	.L1561
	ldrh	w1, [x1, 80]
	cmp	w20, w1
	beq	.L1561
	cmp	w0, 64
	bne	.L1562
	and	w21, w20, 65535
	add	x0, x22, :lo12:.LANCHOR3
	add	x2, x19, 3374
	mov	w1, w21
	add	x0, x0, 1344
.L1583:
	bl	_insert_data_list
	ldr	x0, [x19, 1120]
	ldrh	w0, [x0, x27, lsl 1]
	cmp	w0, 7
	bhi	.L1561
	mov	w0, w21
	mov	w2, 0
	mov	w1, 1
.L1581:
	bl	gc_add_sblk
.L1561:
	add	w20, w20, 1
	sxth	w20, w20
	b	.L1554
.L1559:
	ldrb	w2, [x21, 3]
	asr	w2, w2, w1
	tbnz	x2, 0, .L1557
	add	w0, w5, w0
	sxth	w0, w0
.L1558:
	add	w1, w1, 1
	b	.L1556
.L1557:
	ldrh	w2, [x3, 146]
	add	w2, w2, 1
	strh	w2, [x3, 146]
	b	.L1558
.L1560:
	ldrb	w1, [x21, 2]
	mov	w2, -1
	orr	w1, w1, -32
	strb	w1, [x21, 2]
	ldr	x1, [x19, 1120]
	strh	w2, [x1, x27, lsl 1]
	b	.L1555
.L1572:
	mov	w0, w24
	b	.L1555
.L1562:
	cmp	w0, 96
	bne	.L1563
	and	w21, w20, 65535
	add	x0, x22, :lo12:.LANCHOR3
	add	x2, x19, 3376
	mov	w1, w21
	add	x0, x0, 1360
	b	.L1583
.L1563:
	cmp	w0, 160
	bne	.L1564
	and	w21, w20, 65535
	add	x0, x22, :lo12:.LANCHOR3
	add	x2, x19, 3378
	mov	w1, w21
	add	x0, x0, 1368
	b	.L1583
.L1564:
	cbnz	w0, .L1561
	ldr	x0, [x19, 1120]
	ldrh	w2, [x0, x27, lsl 1]
	cbz	w2, .L1565
	cmp	w23, 2
	bgt	.L1566
	mov	w1, w20
	adrp	x0, .LC132
	add	x0, x0, :lo12:.LC132
	bl	printk
	ldrb	w0, [x21, 2]
	add	w23, w23, 1
	sxth	w23, w23
	tbz	x0, 4, .L1567
	mov	w1, 5
.L1577:
	bfi	w0, w1, 5, 3
	mov	w2, 0
	strb	w0, [x21, 2]
	mov	w1, 1
	mov	w0, w20
	b	.L1581
.L1567:
	mov	w1, 2
	b	.L1577
.L1566:
	mov	x1, x25
	mov	w2, 656
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1565:
	ldrb	w0, [x21, 2]
	ands	w0, w0, 24
	bne	.L1569
	add	x0, x22, :lo12:.LANCHOR3
	add	x2, x19, 3368
	mov	w1, w20
	add	x0, x0, 1384
.L1579:
	bl	_insert_free_list
	b	.L1561
.L1569:
	cmp	w0, 16
	add	x0, x22, :lo12:.LANCHOR3
	bne	.L1570
	add	x2, x19, 3370
	mov	w1, w20
	add	x0, x0, 1392
	b	.L1579
.L1570:
	mov	x2, x26
	mov	w1, w20
	add	x0, x0, 1400
	b	.L1579
	.size	zftl_sblk_list_init, .-zftl_sblk_list_init
	.align	2
	.global	pm_free_sblk
	.type	pm_free_sblk, %function
pm_free_sblk:
	stp	x29, x30, [sp, -368]!
	adrp	x0, .LANCHOR5
	add	x1, x0, :lo12:.LANCHOR5
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	ldrh	w1, [x1, 220]
	cmp	w1, 128
	bls	.L1586
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 96
	mov	w2, 94
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L1586:
	adrp	x21, .LANCHOR0
	add	x0, x21, :lo12:.LANCHOR0
	add	x19, x19, :lo12:.LANCHOR5
	mov	w1, 0
	mov	w4, 65535
	ldr	x0, [x0, 3384]
	ldrh	w3, [x19, 220]
	mov	w19, 0
	add	x0, x0, 416
	ldrh	w2, [x0, 272]
.L1589:
	ldrh	w5, [x0]
	cmp	w5, w4
	beq	.L1587
	add	w1, w1, 1
	and	w1, w1, 65535
.L1587:
	cmp	w1, w2
	bcs	.L1588
	cmp	w1, w3
	bcs	.L1588
	add	w19, w19, 1
	add	x0, x0, 2
	and	w19, w19, 65535
	cmp	w19, 128
	bne	.L1589
.L1588:
	add	w19, w19, 1
	mov	w0, 128
	and	w19, w19, 65535
	add	x22, x29, 112
	cmp	w19, 129
	mov	w2, 256
	csel	w19, w19, w0, ne
	mov	w1, 0
	mov	x0, x22
	adrp	x23, .LANCHOR3
	bl	ftl_memset
	str	x23, [x29, 104]
	add	x0, x21, :lo12:.LANCHOR0
	add	x1, x23, :lo12:.LANCHOR3
	mov	w2, 24
	ldr	x5, [x0, 3384]
	ldrb	w0, [x0, 1205]
	ldrh	w8, [x1, 1304]
	add	x4, x5, 704
	sub	w2, w2, w0
	ldrb	w9, [x1, 1306]
	ldrh	w1, [x5, 698]
	sub	w0, w2, w8
	mov	w2, 1
	add	x1, x1, 176
	lsl	w2, w2, w0
	add	x1, x5, x1, lsl 2
	sub	w2, w2, #1
.L1591:
	cmp	x1, x4
	bne	.L1594
	ldr	x0, [x29, 104]
	adrp	x27, .LC133
	adrp	x28, .LC134
	add	x21, x21, :lo12:.LANCHOR0
	add	x0, x0, :lo12:.LANCHOR3
	add	x27, x27, :lo12:.LC133
	add	x28, x28, :lo12:.LC134
	mov	x20, 0
	mov	w23, 65535
	mov	w26, 0
	ldrb	w24, [x0, 1321]
	ldrh	w0, [x0, 1376]
	mul	w24, w24, w0
	and	w24, w24, 65535
.L1600:
	ldr	x0, [x21, 3384]
	and	w25, w20, 65535
	ldr	x2, [x29, 104]
	mov	w6, w20
	add	x1, x0, w20, sxtw 1
	add	x2, x2, :lo12:.LANCHOR3
	ldrh	w3, [x1, 416]
	ldrb	w4, [x2, 1306]
	ldrh	w1, [x0, 692]
	sdiv	w1, w1, w4
	cmp	w1, w3
	bne	.L1595
	ldrb	w1, [x2, 1321]
	ldrh	w2, [x2, 1376]
	mul	w1, w1, w2
	strh	w1, [x22, x20, lsl 1]
.L1595:
	ldrh	w2, [x22, x20, lsl 1]
	cmp	w2, w24
	bcs	.L1596
	cmp	w2, 0
	csel	w26, w26, w25, eq
	csel	w24, w24, w2, eq
.L1596:
	ldrh	w1, [x0, 74]
	cmp	w1, 2
	bls	.L1597
	mov	w1, 65535
	cmp	w3, w1
	beq	.L1597
	ldr	x4, [x21, 1104]
	ubfiz	x1, x3, 2, 16
	ldrh	w0, [x0, 92]
	add	w0, w0, 4
	ldrh	w4, [x4, x1]
	and	w4, w4, 2047
	cmp	w4, w0
	bgt	.L1597
	mov	w1, w6
	str	w6, [x29, 100]
	mov	x0, x27
	bl	printk
	ldr	w6, [x29, 100]
	mov	w23, w25
.L1597:
	ldrh	w0, [x22, x20, lsl 1]
	cbnz	w0, .L1598
	sxtw	x25, w6
	ldr	x0, [x21, 3384]
	add	x1, x25, 208
	ldrh	w3, [x0, x1, lsl 1]
	mov	w1, 65535
	cmp	w3, w1
	beq	.L1598
	adrp	x1, .LANCHOR2
	ldr	w1, [x1, #:lo12:.LANCHOR2]
	tbz	x1, 12, .L1599
	ldrh	w4, [x0, 688]
	mov	w2, 0
	mov	w1, w6
	mov	x0, x28
	bl	printk
.L1599:
	ldr	x0, [x21, 3384]
	add	x25, x25, 208
	ldrh	w0, [x0, x25, lsl 1]
	bl	ftl_free_sblk
	ldr	x0, [x21, 3384]
	mov	w1, -1
	strh	w1, [x0, x25, lsl 1]
	ldrh	w1, [x0, 688]
	sub	w1, w1, #1
	strh	w1, [x0, 688]
.L1598:
	add	x20, x20, 1
	cmp	w19, w20, uxth
	bhi	.L1600
	mov	w0, 65535
	cmp	w23, w0
	csel	w0, w26, w23, eq
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 368
	ret
.L1594:
	ldr	w0, [x4]
	add	x6, x5, 416
	mov	x3, 0
	lsr	w0, w0, w8
	and	w0, w0, w2
	udiv	w0, w0, w9
	and	w0, w0, 65535
.L1593:
	ldrh	w7, [x6]
	cmp	w7, w0
	bne	.L1592
	ldrh	w7, [x22, x3, lsl 1]
	add	w7, w7, 1
	strh	w7, [x22, x3, lsl 1]
.L1592:
	add	x3, x3, 1
	add	x6, x6, 2
	cmp	w19, w3, uxth
	bhi	.L1593
	add	x4, x4, 4
	b	.L1591
	.size	pm_free_sblk, .-pm_free_sblk
	.align	2
	.global	ftl_memcpy
	.type	ftl_memcpy, %function
ftl_memcpy:
	stp	x29, x30, [sp, -16]!
	uxtw	x2, w2
	add	x29, sp, 0
	bl	memcpy
	ldp	x29, x30, [sp], 16
	ret
	.size	ftl_memcpy, .-ftl_memcpy
	.align	2
	.global	flash_info_data_init
	.type	flash_info_data_init, %function
flash_info_data_init:
	stp	x29, x30, [sp, -32]!
	adrp	x1, .LANCHOR2
	add	x29, sp, 0
	ldr	w0, [x1, #:lo12:.LANCHOR2]
	stp	x19, x20, [sp, 16]
	mov	x20, x1
	tbz	x0, 12, .L1614
	adrp	x2, .LANCHOR4
	add	x2, x2, :lo12:.LANCHOR4
	adrp	x0, .LC135
	add	x2, x2, 112
	mov	w1, 120
	add	x0, x0, :lo12:.LC135
	bl	printk
.L1614:
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	mov	w2, 2048
	mov	w1, 0
	ldr	x0, [x19, 1048]
	bl	ftl_memset
	ldr	x0, [x19, 1048]
	mov	w1, 21321
	movk	w1, 0x5359, lsl 16
	mov	w2, 32
	str	w1, [x0]
	mov	w1, 2032
	ldr	x0, [x19, 1048]
	add	x0, x0, 80
	str	w1, [x0, -72]
	mov	w1, 1
	strh	w1, [x0, -64]
	add	x1, x19, 1160
	bl	ftl_memcpy
	ldr	x0, [x19, 1048]
	add	x1, x20, :lo12:.LANCHOR2
	mov	w2, 32
	add	x1, x1, 8
	add	x0, x0, 48
	bl	ftl_memcpy
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	flash_info_data_init, .-flash_info_data_init
	.align	2
	.global	ftl_memcpy32
	.type	ftl_memcpy32, %function
ftl_memcpy32:
	mov	x3, 0
.L1620:
	cmp	w2, w3
	bhi	.L1621
	ret
.L1621:
	ldr	w4, [x1, x3, lsl 2]
	str	w4, [x0, x3, lsl 2]
	add	x3, x3, 1
	b	.L1620
	.size	ftl_memcpy32, .-ftl_memcpy32
	.align	2
	.global	ftl_memcmp
	.type	ftl_memcmp, %function
ftl_memcmp:
	stp	x29, x30, [sp, -16]!
	uxtw	x2, w2
	add	x29, sp, 0
	bl	memcmp
	ldp	x29, x30, [sp], 16
	ret
	.size	ftl_memcmp, .-ftl_memcmp
	.align	2
	.global	timer_get_time
	.type	timer_get_time, %function
timer_get_time:
	stp	x29, x30, [sp, -16]!
	adrp	x0, jiffies
	add	x29, sp, 0
	ldr	x1, [x0, #:lo12:jiffies]
	adrp	x0, .LANCHOR5+224
	ldr	x0, [x0, #:lo12:.LANCHOR5+224]
	sub	x0, x1, x0
	bl	jiffies_to_msecs
	ldp	x29, x30, [sp], 16
	ret
	.size	timer_get_time, .-timer_get_time
	.align	2
	.global	StorageSysDataLoad
	.type	StorageSysDataLoad, %function
StorageSysDataLoad:
	stp	x29, x30, [sp, -32]!
	mov	w2, 512
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x1
	mov	w1, 0
	mov	w20, w0
	mov	x0, x19
	bl	ftl_memset
	bl	rknand_device_lock
	adrp	x0, .LANCHOR5+232
	mov	x2, x19
	mov	w1, 1
	ldr	x0, [x0, #:lo12:.LANCHOR5+232]
	ldr	x3, [x0, 24]
	mov	w0, w20
	blr	x3
	mov	w19, w0
	bl	rknand_device_unlock
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	StorageSysDataLoad, .-StorageSysDataLoad
	.align	2
	.global	StorageSysDataStore
	.type	StorageSysDataStore, %function
StorageSysDataStore:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, w0
	mov	x20, x1
	bl	rknand_device_lock
	adrp	x0, .LANCHOR5+232
	mov	x2, x20
	mov	w1, 1
	ldr	x0, [x0, #:lo12:.LANCHOR5+232]
	ldr	x3, [x0, 32]
	mov	w0, w19
	blr	x3
	mov	w19, w0
	bl	rknand_device_unlock
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	StorageSysDataStore, .-StorageSysDataStore
	.align	2
	.global	FlashBootVendorRead
	.type	FlashBootVendorRead, %function
FlashBootVendorRead:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, w0
	mov	w20, w1
	str	x21, [sp, 32]
	mov	x21, x2
	bl	rknand_device_lock
	adrp	x0, .LANCHOR5+232
	mov	x2, x21
	mov	w1, w20
	ldr	x0, [x0, #:lo12:.LANCHOR5+232]
	ldr	x3, [x0, 8]
	mov	w0, w19
	blr	x3
	mov	w19, w0
	bl	rknand_device_unlock
	ldr	x21, [sp, 32]
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
	.size	FlashBootVendorRead, .-FlashBootVendorRead
	.align	2
	.global	FlashBootVendorWrite
	.type	FlashBootVendorWrite, %function
FlashBootVendorWrite:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, w0
	mov	w20, w1
	str	x21, [sp, 32]
	mov	x21, x2
	bl	rknand_device_lock
	adrp	x0, .LANCHOR5+232
	mov	x2, x21
	mov	w1, w20
	ldr	x0, [x0, #:lo12:.LANCHOR5+232]
	ldr	x3, [x0, 16]
	mov	w0, w19
	blr	x3
	mov	w19, w0
	bl	rknand_device_unlock
	ldr	x21, [sp, 32]
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
	.size	FlashBootVendorWrite, .-FlashBootVendorWrite
	.align	2
	.global	flash_sram_load_store
	.type	flash_sram_load_store, %function
flash_sram_load_store:
	stp	x29, x30, [sp, -16]!
	adrp	x4, .LANCHOR5+240
	uxtw	x5, w1
	add	x29, sp, 0
	ldr	x4, [x4, #:lo12:.LANCHOR5+240]
	add	x4, x4, 4096
	cbnz	w2, .L1635
	mov	w2, w3
	add	x1, x4, x5
.L1638:
	bl	ftl_memcpy
	ldp	x29, x30, [sp], 16
	ret
.L1635:
	mov	x1, x0
	mov	w2, w3
	add	x0, x4, x5
	b	.L1638
	.size	flash_sram_load_store, .-flash_sram_load_store
	.align	2
	.global	FlashCs123Init
	.type	FlashCs123Init, %function
FlashCs123Init:
	ret
	.size	FlashCs123Init, .-FlashCs123Init
	.align	2
	.global	ftl_dma32_malloc
	.type	ftl_dma32_malloc, %function
ftl_dma32_malloc:
	stp	x29, x30, [sp, -48]!
	cmp	w0, 8192
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	str	x21, [sp, 32]
	ble	.L1641
	bl	ftl_malloc
.L1640:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L1641:
	adrp	x1, .LANCHOR5
	add	x21, x1, :lo12:.LANCHOR5
	add	w19, w0, 63
	mov	x20, x1
	and	w19, w19, -64
	ldr	w0, [x21, 248]
	cmp	w19, w0
	ble	.L1643
	mov	w0, 16384
	bl	ftl_malloc
	str	x0, [x21, 256]
	mov	w0, 16384
	str	w0, [x21, 248]
.L1643:
	add	x1, x20, :lo12:.LANCHOR5
	ldr	w0, [x1, 248]
	sub	w0, w0, w19
	str	w0, [x1, 248]
	ldr	x0, [x1, 256]
	add	x19, x0, w19, sxtw
	str	x19, [x1, 256]
	b	.L1640
	.size	ftl_dma32_malloc, .-ftl_dma32_malloc
	.align	2
	.global	nandc_init
	.type	nandc_init, %function
nandc_init:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR2
	mov	x22, x0
	stp	x19, x20, [sp, 16]
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	str	wzr, [x29, 56]
	tbz	x0, 12, .L1646
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	adrp	x0, .LC136
	mov	x2, x22
	add	x1, x1, 136
	add	x0, x0, :lo12:.LC136
	bl	printk
.L1646:
	adrp	x0, .LANCHOR0
	add	x1, x0, :lo12:.LANCHOR0
	ldr	w3, [x22, 352]
	mov	w2, 6
	mov	x20, x0
	strb	w2, [x1, 1028]
	mov	w2, 12336
	str	x22, [x1, 1056]
	movk	w2, 0x5638, lsl 16
	cmp	w3, w2
	bne	.L1647
	mov	w0, 8
	strb	w0, [x1, 1028]
.L1647:
	ldr	w1, [x22, 128]
	mov	w0, 12336
	movk	w0, 0x5639, lsl 16
	cmp	w1, w0
	bne	.L1648
	add	x0, x20, :lo12:.LANCHOR0
	mov	w1, 9
	strb	w1, [x0, 1028]
.L1648:
	add	x19, x20, :lo12:.LANCHOR0
	ldrb	w0, [x19, 1028]
	cmp	w0, 9
	bne	.L1649
	mov	w0, 1
	strb	w0, [x19, 1251]
	ldr	w0, [x29, 56]
	mov	w1, 2
	orr	w0, w0, 256
	str	w0, [x29, 56]
	ldr	w0, [x29, 56]
	bfi	w0, w1, 18, 3
	str	w0, [x29, 56]
	mov	w1, 4161
	ldr	w0, [x29, 56]
	str	w0, [x22]
	ldr	x0, [x19, 1056]
	str	wzr, [x0, 520]
	str	w1, [x0, 4]
	mov	w1, 8321
	ldr	x0, [x19, 1056]
	str	w1, [x0, 8]
	mov	w1, 4099
	movk	w1, 0x10, lsl 16
	str	w1, [x0, 80]
	mov	w1, 38
	str	w1, [x0, 84]
	mov	w1, 39
	str	w1, [x0, 84]
	ldr	w1, [x21, #:lo12:.LANCHOR2]
	tbz	x1, 12, .L1651
	ldr	w1, [x0]
	ldr	w2, [x0, 8]
	ldr	w3, [x0, 80]
	ldr	w4, [x0, 84]
	ldr	w5, [x0, 88]
.L1664:
	adrp	x0, .LC137
	add	x0, x0, :lo12:.LC137
	bl	printk
.L1651:
	add	x0, x20, :lo12:.LANCHOR0
	mov	w1, 1
	strb	w1, [x0, 1252]
	ldr	w1, [x21, #:lo12:.LANCHOR2]
	strh	wzr, [x0, 1296]
	strb	wzr, [x0, 1249]
	tbz	x1, 12, .L1645
	ldrb	w1, [x0, 1028]
	adrp	x0, .LC138
	add	x0, x0, :lo12:.LC138
	bl	printk
.L1645:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L1649:
	ldr	w0, [x29, 56]
	mov	w1, 1
	strb	wzr, [x19, 1251]
	orr	w0, w0, 256
	str	w0, [x29, 56]
	ldr	w0, [x29, 56]
	bfi	w0, w1, 24, 3
	str	w0, [x29, 56]
	mov	w1, 4193
	ldr	w0, [x29, 56]
	str	w0, [x22]
	ldr	x0, [x19, 1056]
	str	wzr, [x0, 336]
	str	w1, [x0, 4]
	mov	w1, 8321
	ldr	x0, [x19, 1056]
	str	w1, [x0, 344]
	mov	w1, 4099
	movk	w1, 0x10, lsl 16
	str	w1, [x0, 304]
	mov	w1, 38
	str	w1, [x0, 308]
	mov	w1, 39
	str	w1, [x0, 308]
	mov	w0, 2048
	bl	ftl_dma32_malloc
	str	x0, [x19, 1256]
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L1651
	ldr	x0, [x19, 1056]
	ldr	w1, [x0]
	ldr	w2, [x0, 344]
	ldr	w3, [x0, 304]
	ldr	w4, [x0, 308]
	ldr	w5, [x0, 312]
	b	.L1664
	.size	nandc_init, .-nandc_init
	.align	2
	.global	zbuf_init
	.type	zbuf_init, %function
zbuf_init:
	stp	x29, x30, [sp, -48]!
	adrp	x0, .LANCHOR0
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	add	x19, x0, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	add	x19, x19, 1304
	adrp	x22, .LANCHOR3
	mov	x20, x0
	add	x22, x22, :lo12:.LANCHOR3
	mov	w21, 0
.L1666:
	and	w0, w21, 255
	strb	w0, [x19, 1]
	add	w1, w0, 1
	ldrb	w0, [x22, 1946]
	strb	w1, [x19]
	add	w21, w21, 1
	strb	wzr, [x19, 2]
	add	x19, x19, 64
	str	xzr, [x19, -48]
	lsl	w0, w0, 9
	bl	ftl_dma32_malloc
	str	x0, [x19, -56]
	mov	w0, 64
	bl	ftl_dma32_malloc
	str	x0, [x19, -40]
	cmp	w21, 32
	bne	.L1666
	add	x0, x20, :lo12:.LANCHOR0
	mov	w1, -1
	strb	wzr, [x0, 3352]
	strb	w1, [x0, 3288]
	strb	w21, [x0, 3353]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	zbuf_init, .-zbuf_init
	.align	2
	.global	gc_init
	.type	gc_init, %function
gc_init:
	stp	x29, x30, [sp, -48]!
	mov	w2, 2216
	mov	w1, 0
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR3
	stp	x21, x22, [sp, 32]
	add	x19, x19, :lo12:.LANCHOR3
	adrp	x21, .LANCHOR5
	add	x21, x21, :lo12:.LANCHOR5
	adrp	x20, .LANCHOR0
	add	x20, x20, :lo12:.LANCHOR0
	add	x22, x20, 3416
	strb	wzr, [x19, 1337]
	strb	wzr, [x21, 264]
	mov	x0, x22
	strh	wzr, [x19, 1378]
	str	wzr, [x21, 268]
	bl	ftl_memset
	ldrh	w1, [x19, 1376]
	mov	w0, -1
	ldrb	w3, [x19, 1321]
	strh	w0, [x20, 3416]
	lsr	w0, w1, 2
	lsr	w2, w1, 1
	strh	w0, [x20, 3452]
	strh	w0, [x20, 3402]
	ldrh	w0, [x19, 1338]
	strh	w2, [x20, 3454]
	mul	w2, w1, w3
	strh	w1, [x20, 3400]
	mov	w1, 4
	and	w2, w2, 65535
	strh	w1, [x21, 272]
	sub	w4, w2, #32
	mul	w0, w0, w3
	strh	w4, [x20, 3404]
	strh	w2, [x20, 3406]
	strh	wzr, [x19, 1352]
	lsl	w0, w0, 2
	strh	wzr, [x19, 1354]
	strh	wzr, [x19, 1356]
	str	xzr, [x20, 3424]
	bl	ftl_dma32_malloc
	ldrb	w1, [x19, 1321]
	str	x0, [x21, 280]
	ldrh	w0, [x19, 1338]
	mul	w0, w0, w1
	lsl	w0, w0, 2
	bl	ftl_dma32_malloc
	ldrh	w1, [x19, 1338]
	str	x0, [x21, 288]
	ldrb	w0, [x19, 1321]
	mul	w0, w1, w0
	bl	ftl_dma32_malloc
	str	x0, [x19, 1328]
	ldrb	w1, [x19, 1321]
	ldrh	w0, [x19, 1338]
	mul	w0, w0, w1
	lsl	w0, w0, 2
	bl	ftl_dma32_malloc
	ldrb	w1, [x19, 1321]
	str	x0, [x19, 1312]
	ldrh	w0, [x19, 1338]
	mul	w0, w0, w1
	lsl	w0, w0, 2
	bl	ftl_dma32_malloc
	str	x0, [x21, 296]
	ldrh	w0, [x19, 1380]
	ldp	x21, x22, [sp, 32]
	lsr	w0, w0, 2
	strh	w0, [x20, 3392]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
	.size	gc_init, .-gc_init
	.align	2
	.global	rk_ftl_de_init
	.type	rk_ftl_de_init, %function
rk_ftl_de_init:
	stp	x29, x30, [sp, -16]!
	mov	w1, 0
	adrp	x0, .LC139
	add	x0, x0, :lo12:.LC139
	add	x29, sp, 0
	bl	printk
	adrp	x0, .LANCHOR5+232
	ldr	x0, [x0, #:lo12:.LANCHOR5+232]
	ldr	x0, [x0, 80]
	blr	x0
	ldp	x29, x30, [sp], 16
	ret
	.size	rk_ftl_de_init, .-rk_ftl_de_init
	.align	2
	.global	rk_ftl_cache_write_back
	.type	rk_ftl_cache_write_back, %function
rk_ftl_cache_write_back:
	stp	x29, x30, [sp, -16]!
	adrp	x0, .LANCHOR5+232
	add	x29, sp, 0
	ldr	x0, [x0, #:lo12:.LANCHOR5+232]
	ldr	x1, [x0, 64]
	mov	w0, 0
	blr	x1
	ldp	x29, x30, [sp], 16
	ret
	.size	rk_ftl_cache_write_back, .-rk_ftl_cache_write_back
	.align	2
	.global	rk_nand_suspend
	.type	rk_nand_suspend, %function
rk_nand_suspend:
	stp	x29, x30, [sp, -16]!
	adrp	x0, .LANCHOR5+232
	add	x29, sp, 0
	ldr	x0, [x0, #:lo12:.LANCHOR5+232]
	ldr	x0, [x0, 88]
	blr	x0
	ldp	x29, x30, [sp], 16
	ret
	.size	rk_nand_suspend, .-rk_nand_suspend
	.align	2
	.global	rk_nand_resume
	.type	rk_nand_resume, %function
rk_nand_resume:
	stp	x29, x30, [sp, -16]!
	adrp	x0, .LANCHOR5+232
	add	x29, sp, 0
	ldr	x0, [x0, #:lo12:.LANCHOR5+232]
	ldr	x0, [x0, 96]
	blr	x0
	ldp	x29, x30, [sp], 16
	ret
	.size	rk_nand_resume, .-rk_nand_resume
	.align	2
	.global	rk_ftl_get_capacity
	.type	rk_ftl_get_capacity, %function
rk_ftl_get_capacity:
	stp	x29, x30, [sp, -16]!
	adrp	x0, .LANCHOR5+232
	add	x29, sp, 0
	ldr	x0, [x0, #:lo12:.LANCHOR5+232]
	ldr	x1, [x0, 72]
	mov	w0, 0
	blr	x1
	ldp	x29, x30, [sp], 16
	ret
	.size	rk_ftl_get_capacity, .-rk_ftl_get_capacity
	.align	2
	.global	rk_nandc_get_irq_status
	.type	rk_nandc_get_irq_status, %function
rk_nandc_get_irq_status:
	stp	x29, x30, [sp, -16]!
	adrp	x1, .LANCHOR5+232
	add	x29, sp, 0
	ldr	x1, [x1, #:lo12:.LANCHOR5+232]
	ldr	x1, [x1, 120]
	blr	x1
	ldp	x29, x30, [sp], 16
	ret
	.size	rk_nandc_get_irq_status, .-rk_nandc_get_irq_status
	.align	2
	.global	rknand_proc_ftlread
	.type	rknand_proc_ftlread, %function
rknand_proc_ftlread:
	stp	x29, x30, [sp, -16]!
	adrp	x1, .LANCHOR5+232
	add	x29, sp, 0
	ldr	x1, [x1, #:lo12:.LANCHOR5+232]
	ldr	x1, [x1, 128]
	blr	x1
	ldp	x29, x30, [sp], 16
	ret
	.size	rknand_proc_ftlread, .-rknand_proc_ftlread
	.align	2
	.global	FtlRead
	.type	FtlRead, %function
FtlRead:
	stp	x29, x30, [sp, -16]!
	adrp	x4, .LANCHOR5+232
	and	w0, w0, 255
	add	x29, sp, 0
	ldr	x4, [x4, #:lo12:.LANCHOR5+232]
	ldr	x4, [x4, 40]
	blr	x4
	ldp	x29, x30, [sp], 16
	ret
	.size	FtlRead, .-FtlRead
	.align	2
	.global	FtlDiscard
	.type	FtlDiscard, %function
FtlDiscard:
	stp	x29, x30, [sp, -16]!
	adrp	x2, .LANCHOR5+232
	add	x29, sp, 0
	ldr	x2, [x2, #:lo12:.LANCHOR5+232]
	ldr	x2, [x2, 56]
	blr	x2
	ldp	x29, x30, [sp], 16
	ret
	.size	FtlDiscard, .-FtlDiscard
	.align	2
	.global	rk_ftl_garbage_collect
	.type	rk_ftl_garbage_collect, %function
rk_ftl_garbage_collect:
	stp	x29, x30, [sp, -16]!
	adrp	x2, .LANCHOR5+232
	add	x29, sp, 0
	ldr	x2, [x2, #:lo12:.LANCHOR5+232]
	ldr	x2, [x2, 104]
	blr	x2
	ldp	x29, x30, [sp], 16
	ret
	.size	rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
	.align	2
	.global	ReadFlashInfo
	.type	ReadFlashInfo, %function
ReadFlashInfo:
	stp	x29, x30, [sp, -16]!
	adrp	x1, .LANCHOR5+232
	add	x29, sp, 0
	ldr	x1, [x1, #:lo12:.LANCHOR5+232]
	ldr	x1, [x1, 112]
	blr	x1
	ldp	x29, x30, [sp], 16
	ret
	.size	ReadFlashInfo, .-ReadFlashInfo
	.align	2
	.global	rknand_print_hex
	.type	rknand_print_hex, %function
rknand_print_hex:
	mul	w6, w2, w3
	stp	x29, x30, [sp, -16]!
	mov	x5, x1
	mov	w4, w2
	add	x29, sp, 0
	mov	x1, x0
	mov	w7, 0
	mov	w3, 16
	mov	w2, 0
	adrp	x0, .LC140
	add	x0, x0, :lo12:.LC140
	bl	print_hex_dump
	ldp	x29, x30, [sp], 16
	ret
	.size	rknand_print_hex, .-rknand_print_hex
	.align	2
	.global	hynix_get_read_retry_default
	.type	hynix_get_read_retry_default, %function
hynix_get_read_retry_default:
	stp	x29, x30, [sp, -144]!
	mov	w4, -83
	mov	w1, -82
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	stp	x23, x24, [sp, 48]
	mov	w23, w0
	add	x0, x20, :lo12:.LANCHOR0
	stp	x25, x26, [sp, 64]
	stp	x21, x22, [sp, 32]
	cmp	w23, 2
	stp	x27, x28, [sp, 80]
	ldr	x26, [x0, 1048]
	add	x0, x26, 112
	str	x0, [x29, 136]
	mov	w0, -84
	add	x25, x26, 128
	strb	w0, [x26, 128]
	mov	w0, -81
	strb	w23, [x26, 112]
	strb	w4, [x26, 129]
	strb	w1, [x26, 130]
	strb	w0, [x26, 131]
	bne	.L1696
	mov	w0, -89
	strb	w0, [x26, 128]
	adrp	x0, .LANCHOR2+425
	mov	w1, -9
	strb	w1, [x0, #:lo12:.LANCHOR2+425]
.L1761:
	mov	w28, 7
	b	.L1806
.L1696:
	cmp	w23, 3
	bne	.L1698
	mov	x4, 0
.L1699:
	sub	w0, w4, #80
	strb	w0, [x25, x4]
	add	x4, x4, 1
	cmp	x4, 8
	bne	.L1699
	mov	w28, w4
	mov	w27, w4
.L1697:
	sub	w0, w23, #1
	cmp	w0, 1
	bhi	.L1705
	add	x20, x20, :lo12:.LANCHOR0
	adrp	x21, .LANCHOR2
	add	x21, x21, :lo12:.LANCHOR2
	add	x23, x20, 1024
	add	x21, x21, 408
	mov	w26, 0
.L1706:
	ldrb	w0, [x20, 1153]
	cmp	w0, w26
	bhi	.L1712
.L1713:
	ldr	x0, [x29, 136]
	strb	w27, [x0, 1]
	strb	w28, [x0, 2]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 144
	ret
.L1698:
	cmp	w23, 4
	bne	.L1700
	mov	w5, -52
	strb	w5, [x26, 128]
	mov	w5, -65
	strb	w5, [x26, 129]
	mov	w5, -86
	strb	w5, [x26, 130]
	mov	w5, -85
	mov	w28, 8
	strb	w5, [x26, 131]
	mov	w27, w28
	mov	w5, -51
	strb	w4, [x26, 133]
	strb	w5, [x26, 132]
	strb	w1, [x26, 134]
	strb	w0, [x26, 135]
	b	.L1697
.L1700:
	cmp	w23, 5
	bne	.L1701
	mov	w0, 56
	strb	w0, [x26, 128]
	mov	w0, 57
	strb	w0, [x26, 129]
	mov	w0, 58
	mov	w28, 8
	strb	w0, [x26, 130]
	mov	w0, 59
	strb	w0, [x26, 131]
.L1806:
	mov	w27, 4
	b	.L1697
.L1701:
	cmp	w23, 6
	bne	.L1702
	mov	w0, 14
	strb	w0, [x26, 128]
	mov	w0, 15
	strb	w0, [x26, 129]
	mov	w0, 16
	mov	w28, 12
	strb	w0, [x26, 130]
	mov	w0, 17
	strb	w0, [x26, 131]
	b	.L1806
.L1702:
	cmp	w23, 7
	bne	.L1703
	mov	x0, 0
.L1704:
	sub	w1, w0, #80
	strb	w1, [x25, x0]
	add	x0, x0, 1
	cmp	x0, 8
	bne	.L1704
	mov	w0, -44
	mov	w28, 12
	strb	w0, [x26, 136]
	mov	w27, 10
	mov	w0, -43
	strb	w0, [x26, 137]
	b	.L1697
.L1703:
	cmp	w23, 8
	bne	.L1761
	mov	w0, 6
	strb	w0, [x26, 128]
	mov	w0, 7
	strb	w0, [x26, 129]
	mov	w0, 9
	strb	w23, [x26, 130]
	strb	w0, [x26, 131]
	mov	w28, 50
	mov	w0, 10
	mov	w27, 5
	strb	w0, [x26, 132]
	b	.L1697
.L1712:
	add	x0, x23, w26, sxtw
	mov	x1, 32
	mov	w19, 160
	ldr	x24, [x20, 1056]
	mov	x22, 0
	ldrb	w0, [x0, 172]
	umaddl	x19, w19, w0, x1
	ldr	x1, [x29, 136]
	ubfiz	x0, x0, 8, 8
	add	x24, x24, x0
	add	x19, x1, x19
	mov	w1, 55
.L1707:
	str	w1, [x24, 2056]
	str	w1, [x29, 132]
	ldrb	w0, [x25, x22]
	str	w0, [x24, 2052]
	mov	x0, 1000
	bl	__const_udelay
	ldr	w0, [x24, 2048]
	strb	w0, [x19, x22]
	add	x22, x22, 1
	cmp	w27, w22, uxtb
	ldr	w1, [x29, 132]
	bhi	.L1707
	mov	x0, 0
.L1710:
	add	x1, x0, 4
	add	x2, x0, 28
	add	w3, w0, 8
	add	x1, x21, x1
	add	x2, x21, x2
.L1709:
	ldrb	w7, [x1], 4
	ldrb	w6, [x19, x0]
	cmp	x2, x1
	add	w6, w6, w7
	strb	w6, [x19, w3, sxtw]
	add	w3, w3, 8
	bne	.L1709
	add	x0, x0, 1
	cmp	x0, 4
	bne	.L1710
	add	w26, w26, 1
	strb	wzr, [x19, 16]
	strb	wzr, [x19, 24]
	and	w26, w26, 255
	strb	wzr, [x19, 32]
	strb	wzr, [x19, 40]
	strb	wzr, [x19, 48]
	strb	wzr, [x19, 41]
	strb	wzr, [x19, 49]
	b	.L1706
.L1705:
	sub	w0, w23, #3
	cmp	w0, 5
	bhi	.L1713
	mul	w0, w27, w28
	add	x20, x20, :lo12:.LANCHOR0
	sub	w25, w27, #1
	mov	w21, 0
	and	x25, x25, 255
	asr	w24, w0, 1
	lsl	w0, w0, 4
	str	w0, [x29, 128]
	lsl	w0, w24, 1
	str	w0, [x29, 132]
	add	x0, x20, 1024
	str	x0, [x29, 120]
	add	x0, x25, 1
	str	x0, [x29, 112]
.L1714:
	ldrb	w0, [x20, 1153]
	cmp	w0, w21
	bls	.L1713
	ldr	x0, [x29, 120]
	mov	w22, 160
	sub	w25, w23, #5
	add	x0, x0, w21, sxtw
	ldrb	w19, [x0, 172]
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	mov	x0, 32
	mov	w1, 255
	str	w1, [x29, 108]
	nop // between mem op and mult-accumulate
	umaddl	x22, w22, w19, x0
	ldr	x0, [x29, 136]
	ubfiz	x19, x19, 8, 8
	add	x22, x0, x22
	ldr	x0, [x20, 1056]
	add	x19, x0, x19
	str	w1, [x19, 2056]
	bl	nandc_wait_flash_ready
	cmp	w23, 8
	ldr	w1, [x29, 108]
	bne	.L1715
	mov	w0, 120
	str	w0, [x19, 2056]
	str	wzr, [x19, 2052]
	mov	w0, 23
	str	wzr, [x19, 2052]
	mov	w1, 25
	str	wzr, [x19, 2052]
	add	x22, x26, 144
	str	w0, [x19, 2056]
	mov	w0, 4
	str	w0, [x19, 2056]
	str	w1, [x19, 2056]
	mov	w1, 218
	str	w1, [x19, 2056]
	mov	w1, 21
	str	wzr, [x19, 2056]
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w1, [x19, 2052]
.L1809:
	str	w0, [x19, 2052]
	mov	w0, 48
	str	wzr, [x19, 2052]
	str	w0, [x19, 2056]
	bl	nandc_wait_flash_ready
	cmp	w25, 1
	ccmp	w23, 8, 4, hi
	beq	.L1762
	cmp	w23, 7
	mov	w0, 32
	mov	w1, 2
	csel	w1, w1, w0, ne
.L1722:
	adrp	x8, .LANCHOR5
	add	x0, x8, :lo12:.LANCHOR5
	mov	x7, 0
	ldr	x0, [x0, 304]
.L1723:
	ldr	w9, [x19, 2048]
	strb	w9, [x0, x7]
	add	x7, x7, 1
	cmp	w1, w7, uxtb
	bhi	.L1723
	cmp	w23, 8
	bne	.L1724
	mov	w1, 0
.L1726:
	ldrb	w7, [x0]
	cmp	w7, 50
	beq	.L1725
	ldrb	w7, [x0, 1]
	cmp	w7, 5
	beq	.L1725
	add	w1, w1, 1
	add	x0, x0, 4
	and	w1, w1, 255
	cmp	w1, 8
	bne	.L1726
.L1727:
	adrp	x0, .LC141
	mov	w1, 0
	add	x0, x0, :lo12:.LC141
	bl	printk
.L1729:
	b	.L1729
.L1715:
	mov	w0, 54
	str	w0, [x19, 2056]
	cmp	w23, 4
	bne	.L1717
	mov	w0, 64
	str	w1, [x19, 2052]
	str	w0, [x19, 2048]
	mov	w0, 204
.L1807:
	str	w0, [x19, 2052]
	mov	w0, 77
	b	.L1808
.L1717:
	cmp	w25, 1
	bhi	.L1719
	ldrb	w0, [x26, 128]
	str	w0, [x19, 2052]
	mov	w0, 82
.L1808:
	str	w0, [x19, 2048]
.L1718:
	mov	w0, 22
	str	w0, [x19, 2056]
	mov	w0, 23
	str	w0, [x19, 2056]
	mov	w0, 4
	str	w0, [x19, 2056]
	mov	w0, 25
	str	w0, [x19, 2056]
	str	wzr, [x19, 2056]
	cmp	w23, 6
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	bne	.L1720
	mov	w0, 31
	str	w0, [x19, 2052]
.L1721:
	mov	w0, 2
	b	.L1809
.L1719:
	cmp	w23, 7
	bne	.L1718
	mov	w0, 174
	str	w0, [x19, 2052]
	str	wzr, [x19, 2048]
	mov	w0, 176
	b	.L1807
.L1720:
	str	wzr, [x19, 2052]
	b	.L1721
.L1762:
	mov	w1, 16
	b	.L1722
.L1725:
	cmp	w1, 6
	bhi	.L1727
.L1728:
	add	x0, x8, :lo12:.LANCHOR5
	ldr	x10, [x0, 304]
	mov	x0, 0
.L1738:
	ldr	w1, [x29, 128]
	cmp	w1, w0
	bgt	.L1739
	add	x0, x8, :lo12:.LANCHOR5
	mov	w9, w24
	mov	w7, 8
	ldr	x11, [x0, 304]
.L1741:
	mov	w0, 0
.L1740:
	add	w1, w0, w9
	add	w0, w0, 1
	sbfiz	x1, x1, 1, 32
	cmp	w24, w0
	ldrh	w12, [x11, x1]
	mvn	w12, w12
	strh	w12, [x11, x1]
	bgt	.L1740
	ldr	w0, [x29, 132]
	subs	w7, w7, #1
	add	w9, w9, w0
	bne	.L1741
	mov	x7, 0
	mov	w15, 1
.L1747:
	mov	w1, 0
	mov	w0, 0
.L1746:
	mov	w13, w7
	lsl	w14, w15, w0
	mov	w9, 16
	mov	w12, 0
.L1744:
	ldrh	w16, [x11, w13, sxtw 1]
	add	w13, w13, w24
	bics	wzr, w14, w16
	cinc	w12, w12, eq
	subs	w9, w9, #1
	bne	.L1744
	cmp	w12, 8
	bls	.L1745
	orr	w1, w1, w14
	and	w1, w1, 65535
.L1745:
	add	w0, w0, 1
	cmp	w0, 16
	bne	.L1746
	strh	w1, [x11, x7, lsl 1]
	add	x7, x7, 1
	cmp	w24, w7
	bgt	.L1747
	add	x0, x8, :lo12:.LANCHOR5
	mov	w7, 0
	ldr	x1, [x0, 304]
	mov	x0, 0
.L1750:
	ldr	w8, [x1, x0]
	add	x0, x0, 4
	cmp	w8, 0
	cinc	w7, w7, eq
	cmp	x0, 32
	bne	.L1750
	cmp	w7, 7
	ble	.L1751
	mov	w3, 1024
	mov	w2, 1
	adrp	x0, .LC142
	add	x0, x0, :lo12:.LC142
	bl	rknand_print_hex
	adrp	x0, .LC141
	mov	w1, 0
	add	x0, x0, :lo12:.LC141
	bl	printk
.L1752:
	b	.L1752
.L1724:
	cmp	w23, 7
	bne	.L1730
	mov	w1, 0
.L1732:
	ldrb	w7, [x0]
	cmp	w7, 12
	beq	.L1731
	ldrb	w7, [x0, 1]
	cmp	w7, 10
	beq	.L1731
	add	w1, w1, 1
	add	x0, x0, 4
	and	w1, w1, 255
	cmp	w1, 8
	bne	.L1732
.L1733:
	adrp	x0, .LC141
	mov	w1, 0
	add	x0, x0, :lo12:.LC141
	bl	printk
.L1734:
	b	.L1734
.L1731:
	cmp	w1, 6
	bls	.L1728
	b	.L1733
.L1730:
	cmp	w23, 6
	bne	.L1728
	mov	x1, 0
.L1735:
	ldrb	w7, [x0, x1]
	cmp	w7, 12
	beq	.L1728
	add	x7, x0, x1
	ldrb	w7, [x7, 8]
	cmp	w7, 4
	beq	.L1728
	add	x1, x1, 1
	cmp	x1, 8
	bne	.L1735
	adrp	x0, .LC141
	mov	w1, 0
	add	x0, x0, :lo12:.LC141
	bl	printk
.L1737:
	b	.L1737
.L1739:
	ldr	w1, [x19, 2048]
	strb	w1, [x10, x0]
	add	x0, x0, 1
	b	.L1738
.L1751:
	cmp	w23, 6
	beq	.L1764
	cmp	w23, 7
	beq	.L1765
	cmp	w23, 8
	mov	w0, 5
	mov	w1, 8
	csel	w1, w1, w0, ne
.L1753:
	mov	w7, 0
.L1754:
	mov	x0, 0
.L1755:
	add	w8, w9, w0
	ldrb	w11, [x10, x0]
	add	x0, x0, 1
	cmp	w27, w0, uxtb
	strb	w11, [x22, w8, sxtw]
	bhi	.L1755
	ldr	x0, [x29, 112]
	add	w7, w7, 1
	add	w9, w9, w1
	cmp	w28, w7
	add	x10, x10, x0
	bgt	.L1754
	mov	w22, 255
	str	w22, [x19, 2056]
	bl	nandc_wait_flash_ready
	cmp	w25, 1
	bhi	.L1757
	mov	w0, 54
	str	w0, [x19, 2056]
	ldrb	w0, [x26, 128]
	str	w0, [x19, 2052]
	str	wzr, [x19, 2048]
	mov	w0, 22
	str	w0, [x19, 2056]
	mov	w0, 48
	str	wzr, [x19, 2056]
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w22, [x19, 2052]
	str	w22, [x19, 2052]
	str	w22, [x19, 2052]
.L1810:
	str	w0, [x19, 2056]
	add	w21, w21, 1
	and	w21, w21, 255
	bl	nandc_wait_flash_ready
	b	.L1714
.L1764:
	mov	w1, 4
	b	.L1753
.L1765:
	mov	w1, 10
	b	.L1753
.L1757:
	cmp	w23, 8
	bne	.L1759
	mov	w0, 190
	b	.L1810
.L1759:
	mov	w0, 56
	b	.L1810
	.size	hynix_get_read_retry_default, .-hynix_get_read_retry_default
	.align	2
	.global	flash_get_read_retry_tbl
	.type	flash_get_read_retry_tbl, %function
flash_get_read_retry_tbl:
	adrp	x0, .LANCHOR2+27
	ldrb	w0, [x0, #:lo12:.LANCHOR2+27]
	sub	w1, w0, #1
	and	w1, w1, 255
	cmp	w1, 7
	bhi	.L1814
	stp	x29, x30, [sp, -16]!
	add	x29, sp, 0
	bl	hynix_get_read_retry_default
	ldp	x29, x30, [sp], 16
	ret
.L1814:
	ret
	.size	flash_get_read_retry_tbl, .-flash_get_read_retry_tbl
	.align	2
	.global	nandc_xfer_done
	.type	nandc_xfer_done, %function
nandc_xfer_done:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR5
	add	x0, x21, :lo12:.LANCHOR5
	stp	x19, x20, [sp, 16]
	stp	x23, x24, [sp, 48]
	adrp	x20, .LANCHOR0
	strb	wzr, [x0, 312]
	add	x0, x20, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1028]
	cmp	w1, 9
	bne	.L1818
	ldr	x22, [x0, 1056]
	ldr	w1, [x22, 16]
	str	w1, [x29, 64]
	ldr	w1, [x22, 48]
	tbnz	x1, 1, .L1819
	adrp	x23, .LC145
	adrp	x24, .LC146
	mov	x19, x0
	add	x23, x23, :lo12:.LC145
	add	x24, x24, :lo12:.LC146
	mov	w21, 0
.L1820:
	ldr	w0, [x29, 64]
	tbz	x0, 20, .L1830
	add	x19, x20, :lo12:.LANCHOR0
	add	x19, x19, 1256
	ldr	w0, [x19, 32]
	cbz	w0, .L1828
	ldr	w1, [x29, 64]
	mov	w2, 1
	ldr	w0, [x19, 24]
	ubfx	x1, x1, 22, 6
	lsl	w1, w1, 10
	bl	rknand_dma_unmap_single
	ldr	w1, [x29, 64]
	mov	w2, 1
	ubfx	x1, x1, 22, 6
	b	.L1865
.L1819:
	mov	x19, x0
	mov	w23, 0
.L1821:
	ldr	w1, [x22, 64]
	ldr	w0, [x29, 64]
	ubfx	x1, x1, 16, 6
	ubfx	x0, x0, 22, 6
	cmp	w1, w0
	bge	.L1823
	ldr	x0, [x19, 1056]
	ldr	w0, [x0]
	str	w0, [x29, 72]
	ldr	w0, [x29, 72]
	tbz	x0, 13, .L1822
	ldr	w0, [x29, 72]
	tbz	x0, 17, .L1822
	ldr	w1, [x29, 72]
	adrp	x0, .LC143
	add	x0, x0, :lo12:.LC143
	ubfx	x1, x1, 17, 1
	bl	printk
.L1823:
	add	x19, x20, :lo12:.LANCHOR0
	add	x19, x19, 1256
	ldr	w0, [x19, 32]
	cbz	w0, .L1828
	ldr	w1, [x29, 64]
	mov	w2, 0
	ldr	w0, [x19, 24]
	ubfx	x1, x1, 22, 6
	lsl	w1, w1, 10
	bl	rknand_dma_unmap_single
	ldr	w1, [x29, 64]
	mov	w2, 0
	ubfx	x1, x1, 22, 6
.L1865:
	lsl	w1, w1, 2
.L1863:
	ldr	w0, [x19, 28]
	bl	rknand_dma_unmap_single
.L1828:
	add	x20, x20, :lo12:.LANCHOR0
	ldp	x21, x22, [sp, 32]
	str	wzr, [x20, 1288]
	ldp	x23, x24, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 80
	ret
.L1822:
	ldr	w0, [x29, 64]
	add	w23, w23, 1
	ubfx	x0, x0, 22, 6
	cmp	w23, w0, lsl 12
	bne	.L1824
	ldr	w2, [x22, 64]
	mov	w1, w23
	ldr	w3, [x29, 64]
	adrp	x0, .LC144
	add	x21, x21, :lo12:.LANCHOR5
	add	x0, x0, :lo12:.LC144
	ubfx	x2, x2, 16, 5
	ubfx	x3, x3, 22, 6
	bl	printk
	ldr	w1, [x29, 72]
	mov	w0, 1
	strb	w0, [x21, 312]
	tbnz	x1, 13, .L1823
	mov	x0, 35160
	movk	x0, 0x41, lsl 16
	bl	__const_udelay
	b	.L1823
.L1824:
	mov	x1, 10
	mov	x0, 5
	bl	usleep_range
	b	.L1821
.L1830:
	ldr	x0, [x19, 1056]
	add	w21, w21, 1
	tst	x21, 16777215
	ldr	w0, [x0, 16]
	str	w0, [x29, 64]
	bne	.L1829
	ldr	w2, [x29, 64]
	mov	w1, w21
	ldr	w3, [x22, 64]
	mov	x0, x23
	ubfx	x3, x3, 16, 6
	bl	printk
	ldr	x1, [x19, 1056]
	mov	w3, 64
	mov	w2, 4
	mov	x0, x24
	bl	rknand_print_hex
.L1829:
	mov	x1, 10
	mov	x0, 5
	bl	usleep_range
	b	.L1820
.L1818:
	ldr	x21, [x0, 1056]
	mov	w22, 0
	mov	x19, x0
	ldr	w1, [x21, 8]
	str	w1, [x29, 64]
	ldr	w1, [x21, 16]
	tbnz	x1, 1, .L1832
	adrp	x23, .LC145
	adrp	x24, .LC146
	add	x23, x23, :lo12:.LC145
	add	x24, x24, :lo12:.LC146
.L1833:
	ldr	w0, [x29, 64]
	tbz	x0, 20, .L1840
	add	x19, x20, :lo12:.LANCHOR0
	add	x19, x19, 1256
	ldr	w0, [x19, 32]
	cbz	w0, .L1828
	ldr	w1, [x29, 64]
	mov	w2, 1
	ldr	w0, [x19, 24]
	ubfx	x1, x1, 22, 6
	lsl	w1, w1, 10
	bl	rknand_dma_unmap_single
	ldr	w1, [x29, 64]
	mov	w2, 1
	ubfx	x1, x1, 22, 6
	b	.L1864
.L1832:
	adrp	x23, .LC144
	adrp	x24, .LC146
	add	x23, x23, :lo12:.LC144
	add	x24, x24, :lo12:.LC146
.L1834:
	ldr	w1, [x21, 28]
	ldr	w0, [x29, 64]
	ubfx	x1, x1, 16, 5
	ubfx	x0, x0, 22, 6
	cmp	w1, w0
	bge	.L1836
	ldr	x0, [x19, 1056]
	ldr	w0, [x0]
	str	w0, [x29, 72]
	ldr	w0, [x29, 72]
	tbz	x0, 13, .L1835
	ldr	w0, [x29, 72]
	tbz	x0, 17, .L1835
	ldr	w1, [x29, 72]
	adrp	x0, .LC147
	add	x0, x0, :lo12:.LC147
	bl	printk
.L1836:
	add	x19, x20, :lo12:.LANCHOR0
	add	x19, x19, 1256
	ldr	w0, [x19, 32]
	cbz	w0, .L1828
	ldr	w1, [x29, 64]
	mov	w2, 0
	ldr	w0, [x19, 24]
	ubfx	x1, x1, 22, 6
	lsl	w1, w1, 10
	bl	rknand_dma_unmap_single
	ldr	w1, [x29, 64]
	mov	w2, 0
	ubfx	x1, x1, 22, 6
.L1864:
	lsl	w1, w1, 7
	b	.L1863
.L1835:
	add	w22, w22, 1
	tst	x22, 16777215
	bne	.L1837
	ldr	w2, [x21, 28]
	mov	w1, w22
	ldr	w3, [x29, 64]
	mov	x0, x23
	ubfx	x2, x2, 16, 5
	ubfx	x3, x3, 22, 6
	bl	printk
	ldr	x1, [x19, 1056]
	mov	w3, 64
	mov	w2, 4
	mov	x0, x24
	bl	rknand_print_hex
.L1837:
	mov	x1, 10
	mov	x0, 5
	bl	usleep_range
	b	.L1834
.L1840:
	ldr	x0, [x19, 1056]
	add	w22, w22, 1
	tst	x22, 16777215
	ldr	w0, [x0, 8]
	str	w0, [x29, 64]
	bne	.L1839
	ldr	w2, [x29, 64]
	mov	w1, w22
	ldr	w3, [x21, 28]
	mov	x0, x23
	ubfx	x3, x3, 16, 5
	bl	printk
	ldr	x1, [x19, 1056]
	mov	w3, 64
	mov	w2, 4
	mov	x0, x24
	bl	rknand_print_hex
.L1839:
	mov	x1, 10
	mov	x0, 5
	bl	usleep_range
	b	.L1833
	.size	nandc_xfer_done, .-nandc_xfer_done
	.align	2
	.global	nandc_xfer
	.type	nandc_xfer, %function
nandc_xfer:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w2, 255
	stp	x21, x22, [sp, 32]
	mov	x21, x3
	and	w19, w1, 255
	mov	x3, x4
	mov	x2, x21
	mov	w1, w20
	mov	w0, w19
	mov	x22, x4
	bl	nandc_xfer_start
	mov	w0, w19
	bl	nandc_xfer_done
	cbnz	w19, .L1885
	adrp	x19, .LANCHOR0
	add	x0, x19, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1028]
	cmp	w1, 9
	bne	.L1868
	lsr	w20, w20, 2
	ldr	x5, [x0, 1056]
	mov	w3, 1
	mov	w2, 0
	mov	w0, 0
.L1869:
	cmp	w2, w20
	bcc	.L1873
	ldr	w20, [x5]
	cmp	w3, 0
	mov	w1, 512
	csel	w0, w0, w1, eq
	mov	w1, 8192
	movk	w1, 0x2, lsl 16
	and	w1, w20, w1
	cmp	w1, 139264
	bne	.L1875
	mov	w1, w20
	adrp	x0, .LC148
	add	x0, x0, :lo12:.LC148
	bl	printk
	add	x0, x19, :lo12:.LANCHOR0
	orr	w20, w20, 131072
	ldr	x0, [x0, 1056]
	str	w20, [x0]
	mov	w0, -1
.L1875:
	tbz	x20, 13, .L1876
	adrp	x1, .LANCHOR5+312
	ldrb	w1, [x1, #:lo12:.LANCHOR5+312]
	cbz	w1, .L1876
	add	x19, x19, :lo12:.LANCHOR0
	mov	w1, w20
	adrp	x0, .LC149
	add	x0, x0, :lo12:.LC149
	bl	printk
	ldr	x0, [x19, 1056]
	mov	w1, 1
	str	w1, [x0, 16]
.L1904:
	mov	w0, -1
.L1867:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L1873:
	uxtw	x1, w2
	add	x1, x1, 84
	ldr	w1, [x5, x1, lsl 2]
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	ldr	w4, [x29, 56]
	ubfx	x4, x4, 26, 1
	and	w1, w4, w1, lsr 10
	and	w3, w3, w1
	ldr	w1, [x29, 56]
	tbnz	x1, 2, .L1887
	ldr	w1, [x29, 56]
	tbnz	x1, 18, .L1887
	ldr	w4, [x29, 56]
	ldr	w1, [x29, 56]
	ubfx	x4, x4, 3, 7
	ubfx	x1, x1, 19, 7
	cmp	w4, w1
	ldr	w1, [x29, 56]
	ble	.L1871
	ubfx	x1, x1, 3, 7
.L1872:
	cmp	w0, w1
	csel	w0, w0, w1, cs
.L1870:
	add	w2, w2, 1
	b	.L1869
.L1871:
	ubfx	x1, x1, 19, 7
	b	.L1872
.L1887:
	mov	w0, -1
	b	.L1870
.L1868:
	ldrb	w1, [x0, 1249]
	lsr	w5, w20, 1
	mov	w4, 64
	mov	w2, 1
	cmp	w1, 25
	mov	w1, 128
	mov	w3, 0
	csel	w4, w4, w1, cc
	mov	w1, 0
.L1878:
	add	w6, w4, w1
	cmp	w3, w5
	bcc	.L1879
	add	x0, x19, :lo12:.LANCHOR0
	lsr	w20, w20, 2
	mov	w3, 0
	ldr	x4, [x0, 1056]
	mov	w0, 0
.L1880:
	cmp	w3, w20
	bcc	.L1884
	str	wzr, [x4, 16]
	mov	w1, 8192
	movk	w1, 0x2, lsl 16
	ldr	w20, [x4]
	and	w1, w20, w1
	cmp	w1, 139264
	bne	.L1876
	add	x19, x19, :lo12:.LANCHOR0
	mov	w1, w20
	adrp	x0, .LC150
	add	x0, x0, :lo12:.LC150
	bl	printk
	orr	w20, w20, 131072
	ldr	x0, [x19, 1056]
	str	w20, [x0]
	b	.L1904
.L1879:
	ldr	x7, [x0, 1256]
	and	x1, x1, 4294967292
	ldr	w1, [x7, x1]
	lsl	w7, w3, 2
	add	w3, w3, 1
	strb	w1, [x22, x7]
	lsr	w7, w1, 8
	strb	w7, [x22, w2, uxtw]
	add	w7, w2, 1
	lsr	w8, w1, 16
	lsr	w1, w1, 24
	strb	w8, [x22, x7]
	add	w7, w2, 2
	add	w2, w2, 4
	strb	w1, [x22, x7]
	mov	w1, w6
	b	.L1878
.L1884:
	uxtw	x1, w3
	add	x1, x1, 8
	ldr	w1, [x4, x1, lsl 2]
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	tbnz	x1, 2, .L1890
	ldr	w1, [x29, 56]
	tbnz	x1, 15, .L1890
	ldr	w2, [x29, 56]
	ubfx	x6, x2, 3, 5
	ldr	w2, [x29, 56]
	ldr	w1, [x29, 56]
	ubfx	x2, x2, 27, 1
	ubfx	x5, x1, 16, 5
	ldr	w1, [x29, 56]
	orr	w2, w6, w2, lsl 5
	ubfx	x1, x1, 29, 1
	orr	w1, w5, w1, lsl 5
	cmp	w2, w1
	ldr	w1, [x29, 56]
	bls	.L1882
	ubfx	x2, x1, 3, 5
	ldr	w1, [x29, 56]
	ubfx	x1, x1, 27, 1
.L1903:
	orr	w1, w2, w1, lsl 5
	cmp	w0, w1
	csel	w0, w0, w1, cs
.L1881:
	add	w3, w3, 1
	b	.L1880
.L1882:
	ubfx	x2, x1, 16, 5
	ldr	w1, [x29, 56]
	ubfx	x1, x1, 29, 1
	b	.L1903
.L1890:
	mov	w0, -1
	b	.L1881
.L1876:
	cmn	w0, #1
	beq	.L1867
	ldr	w1, [x22]
	cmn	w1, #1
	bne	.L1867
	ldr	w1, [x22, 4]
	cmn	w1, #1
	bne	.L1867
	ldr	w1, [x21]
	cmn	w1, #1
	mov	w1, 512
	csel	w0, w0, w1, ne
	b	.L1867
.L1885:
	mov	w0, 0
	b	.L1867
	.size	nandc_xfer, .-nandc_xfer
	.align	2
	.global	flash_read_page
	.type	flash_read_page, %function
flash_read_page:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR0
	str	x27, [sp, 80]
	add	x27, x21, :lo12:.LANCHOR0
	and	w22, w0, 255
	stp	x19, x20, [sp, 16]
	mov	w19, 24
	stp	x23, x24, [sp, 48]
	ldrb	w0, [x27, 1205]
	ubfx	x23, x1, 24, 2
	stp	x25, x26, [sp, 64]
	mov	w24, w4
	sub	w0, w19, w0
	mov	w19, 1
	mov	x25, x2
	mov	x26, x3
	lsl	w19, w19, w0
	sub	w19, w19, #1
	and	w19, w19, w1
	ldr	x20, [x27, 1056]
	bl	nandc_wait_flash_ready
	mov	w0, w22
	bl	nandc_cs
	cbnz	w23, .L1906
	mov	w0, w22
	bl	zftl_flash_enter_slc_mode
.L1907:
	add	x0, x21, :lo12:.LANCHOR0
	ldr	x1, [x0, 1144]
	ldrb	w0, [x1, 7]
	cmp	w0, 1
	bne	.L1909
	ldrb	w0, [x1, 12]
	cmp	w0, 2
	bne	.L1909
	sxtw	x0, w22
	mov	w2, 38
	add	x0, x0, 8
	add	x0, x20, x0, lsl 8
	str	w2, [x0, 8]
.L1909:
	ubfiz	x0, x22, 8, 8
	add	x20, x20, x0
	and	w0, w19, 255
	str	wzr, [x20, 2056]
	str	wzr, [x20, 2052]
	str	wzr, [x20, 2052]
	str	w0, [x20, 2052]
	lsr	w0, w19, 8
	str	w0, [x20, 2052]
	lsr	w0, w19, 16
	str	w0, [x20, 2052]
	add	x0, x21, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1204]
	cbz	w0, .L1910
	lsr	w0, w19, 24
	str	w0, [x20, 2052]
.L1910:
	mov	w0, 48
	str	w0, [x20, 2056]
	ldrb	w0, [x1, 12]
	cmp	w0, 3
	bne	.L1911
	cbz	w23, .L1911
	add	x21, x21, :lo12:.LANCHOR0
	ldrb	w0, [x21, 1212]
	cbnz	w0, .L1911
	ldrb	w0, [x21, 1213]
	cbnz	w0, .L1911
	add	w19, w19, w19, lsl 1
	sub	w0, w19, #1
	add	w0, w0, w23
.L1920:
	bl	nandc_set_seed
	bl	nandc_wait_flash_ready
	mov	w0, 5
	str	w0, [x20, 2056]
	str	wzr, [x20, 2052]
	mov	w0, 224
	str	wzr, [x20, 2052]
	mov	w2, w24
	str	w0, [x20, 2056]
	mov	x4, x26
	mov	x3, x25
	mov	w1, 0
	mov	w0, w22
	bl	nandc_xfer
	mov	w2, w0
	bl	nandc_de_cs.constprop.35
	mov	w0, w2
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L1906:
	ldr	x0, [x27, 1144]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L1908
	ldrb	w0, [x27, 1212]
	cbnz	w0, .L1908
	ldrb	w0, [x27, 1213]
	cbnz	w0, .L1908
	sxtw	x0, w22
	add	x0, x0, 8
	add	x0, x20, x0, lsl 8
	str	w23, [x0, 8]
	b	.L1907
.L1908:
	mov	w0, w22
	bl	zftl_flash_exit_slc_mode
	b	.L1907
.L1911:
	mov	w0, w19
	b	.L1920
	.size	flash_read_page, .-flash_read_page
	.align	2
	.global	micron_read_retrial
	.type	micron_read_retrial, %function
micron_read_retrial:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	and	w20, w0, 255
	stp	x25, x26, [sp, 64]
	mov	w24, w1
	stp	x27, x28, [sp, 80]
	mov	x26, x3
	str	x2, [x29, 112]
	mov	w22, 0
	ldrb	w0, [x19, 1249]
	add	w0, w0, w0, lsl 1
	asr	w1, w0, 2
	stp	w4, w1, [x29, 120]
	bl	nandc_wait_flash_ready
	ldr	x19, [x19, 1056]
	ubfiz	x0, x20, 8, 8
	add	x19, x19, x0
.L1922:
	adrp	x23, .LANCHOR5
	add	x23, x23, :lo12:.LANCHOR5
	mov	x27, x23
	mov	w21, 0
	mov	w25, -1
	mov	w0, w20
	bl	zftl_flash_enter_slc_mode
	mov	w0, w20
	bl	zftl_flash_exit_slc_mode
.L1923:
	ldrb	w0, [x23, 328]
	cmp	w21, w0
	bcc	.L1928
.L1927:
	mov	w0, 239
	str	w0, [x19, 2056]
	mov	w0, 137
	str	w0, [x19, 2052]
	mov	x0, 1000
	bl	__const_udelay
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	ldr	w0, [x29, 124]
	str	wzr, [x19, 2048]
	cmp	w25, w0
	bcc	.L1929
	cmn	w25, #1
	mov	w0, 256
	csel	w25, w25, w0, eq
.L1929:
	cmn	w25, #1
	cset	w23, eq
	cmp	w25, 256
	cset	w0, eq
	orr	w0, w23, w0
	cbz	w0, .L1930
	mov	w4, w25
	mov	w3, w21
	mov	w2, w24
	mov	w1, w20
	adrp	x0, .LC152
	add	x0, x0, :lo12:.LC152
	bl	printk
	eor	w0, w22, 1
	tst	w23, w0
	beq	.L1931
	mov	w1, 3
	mov	w0, w20
	mov	w22, 1
	bl	mt_auto_read_calibration_config
	b	.L1922
.L1928:
	mov	w0, 239
	str	w0, [x19, 2056]
	mov	w0, 137
	str	w0, [x19, 2052]
	add	w28, w21, 1
	mov	x0, 1000
	bl	__const_udelay
	str	w28, [x19, 2048]
	str	wzr, [x19, 2048]
	mov	x3, x26
	ldr	w4, [x29, 120]
	mov	w1, w24
	ldr	x2, [x29, 112]
	mov	w0, w20
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	bl	flash_read_page
	mov	w6, w0
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L1924
	mov	w4, w6
	str	w6, [x29, 108]
	mov	w3, w25
	mov	w2, w24
	mov	w1, w21
	adrp	x0, .LC151
	add	x0, x0, :lo12:.LC151
	bl	printk
	ldr	w6, [x29, 108]
.L1924:
	cmn	w6, #1
	beq	.L1925
	ldr	x0, [x27, 304]
	cmn	w25, #1
	str	x0, [x29, 112]
	csel	w25, w25, w6, ne
	ldr	w0, [x29, 124]
	ldr	x26, [x27, 320]
	cmp	w6, w0
	bcc	.L1934
.L1925:
	mov	w21, w28
	b	.L1923
.L1934:
	mov	w25, w6
	b	.L1927
.L1931:
	cbz	w22, .L1932
	mov	w0, w20
	mov	w1, 0
	bl	mt_auto_read_calibration_config
	cmn	w25, #1
	mov	w0, 256
	csel	w25, w25, w0, eq
.L1932:
	bl	nandc_wait_flash_ready
	mov	w0, w25
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L1930:
	cbz	w22, .L1932
	mov	w1, 0
	mov	w0, w20
	mov	w25, 256
	bl	mt_auto_read_calibration_config
	b	.L1932
	.size	micron_read_retrial, .-micron_read_retrial
	.align	2
	.global	toshiba_3d_read_retrial
	.type	toshiba_3d_read_retrial, %function
toshiba_3d_read_retrial:
	stp	x29, x30, [sp, -144]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR0
	stp	x23, x24, [sp, 48]
	mov	w24, w1
	stp	x25, x26, [sp, 64]
	and	w23, w0, 255
	stp	x27, x28, [sp, 80]
	mov	x26, x2
	stp	x19, x20, [sp, 16]
	mov	x27, x3
	mov	w28, w4
	bl	nandc_wait_flash_ready
	add	x0, x22, :lo12:.LANCHOR0
	and	x1, x23, 255
	add	x21, x1, 8
	str	x1, [x29, 120]
	mov	w2, 46
	mov	w3, 56
	ldrb	w1, [x0, 1136]
	ubfx	x19, x24, 24, 2
	ldr	x25, [x0, 1056]
	cmp	w1, 36
	mov	w1, 26
	csel	w2, w3, w2, ne
	str	w2, [x29, 112]
	mov	w2, 10
	csel	w1, w2, w1, ne
	str	w1, [x29, 128]
	add	x21, x25, x21, lsl 8
	cbnz	w19, .L1952
	str	x0, [x29, 136]
	sxtw	x0, w23
	add	x0, x0, 8
	mov	w19, -1
	add	x0, x25, x0, lsl 8
	mov	w20, 1
	str	x0, [x29, 112]
.L1959:
	ldr	x0, [x29, 136]
	ldrb	w0, [x0, 1136]
	cmp	w0, 36
	bne	.L1953
	mov	w1, w20
	mov	x0, x21
	mov	w2, 0
	bl	toshiba_tlc_set_rr_para
	ldr	x1, [x29, 112]
	mov	w0, 93
	str	w0, [x1, 8]
.L1954:
	mov	w4, w28
	mov	x3, x27
	mov	x2, x26
	mov	w1, w24
	mov	w0, w23
	bl	flash_read_page
	mov	w4, w0
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 4, .L1955
	mov	w3, w4
	str	w4, [x29, 108]
	mov	w2, w24
	mov	w1, w20
	adrp	x0, .LC153
	add	x0, x0, :lo12:.LC153
	bl	printk
	ldr	w4, [x29, 108]
.L1955:
	cmn	w4, #1
	beq	.L1956
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	cmn	w19, #1
	csel	w19, w19, w4, ne
	ldr	x26, [x0, 304]
	ldr	x27, [x0, 320]
	ldr	x0, [x29, 136]
	ldrb	w0, [x0, 1249]
	add	w0, w0, w0, lsl 1
	cmp	w4, w0, lsr 2
	bcc	.L1974
.L1956:
	ldr	w0, [x29, 128]
	add	w20, w20, 1
	cmp	w0, w20
	bne	.L1959
.L1958:
	add	x0, x22, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1136]
	cmp	w0, 36
	bne	.L1960
	mov	w2, 0
.L1997:
	mov	w1, 0
	mov	x0, x21
	bl	toshiba_tlc_set_rr_para
	b	.L1961
.L1953:
	mov	w1, w20
	mov	x0, x21
	bl	toshiba_3d_set_slc_rr_para
	b	.L1954
.L1974:
	mov	w19, w4
	b	.L1958
.L1960:
	mov	w1, 0
	mov	x0, x21
	bl	toshiba_3d_set_slc_rr_para
.L1961:
	add	x0, x22, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1136]
	cmp	w0, 36
	bne	.L1970
	ldr	x0, [x29, 120]
	add	x25, x25, x0, lsl 8
	mov	w0, 85
	str	w0, [x25, 2056]
	mov	w0, 255
	str	wzr, [x25, 2052]
	str	wzr, [x25, 2048]
	str	w0, [x25, 2056]
.L1970:
	add	x22, x22, :lo12:.LANCHOR0
	ldrb	w0, [x22, 1249]
	add	w0, w0, w0, lsl 1
	cmp	w19, w0, lsr 2
	bcc	.L1971
	cmn	w19, #1
	mov	w0, 256
	csel	w19, w19, w0, eq
.L1971:
	cmp	w19, 256
	ccmn	w19, #1, 4, ne
	bne	.L1972
	adrp	x0, .LC155
	mov	w4, w19
	mov	w3, w20
	mov	w2, w24
	mov	w1, w23
	add	x0, x0, :lo12:.LC155
	bl	printk
.L1972:
	bl	nandc_wait_flash_ready
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 144
	ret
.L1952:
	str	x0, [x29, 136]
	sxtw	x0, w23
	add	x0, x0, 8
	mov	w19, -1
	add	x0, x25, x0, lsl 8
	mov	w20, 1
	str	x0, [x29, 128]
.L1968:
	ldr	x0, [x29, 136]
	ldrb	w0, [x0, 1136]
	cmp	w0, 36
	bne	.L1962
	mov	x0, x21
	mov	w2, 1
	mov	w1, w20
	bl	toshiba_tlc_set_rr_para
	mov	w0, 93
.L1996:
	ldr	x1, [x29, 128]
	mov	w4, w28
	mov	x3, x27
	mov	x2, x26
	str	w0, [x1, 8]
	mov	w1, w24
	mov	w0, w23
	bl	flash_read_page
	mov	w4, w0
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 4, .L1964
	mov	w3, w4
	str	w4, [x29, 108]
	mov	w2, w24
	mov	w1, w20
	adrp	x0, .LC154
	add	x0, x0, :lo12:.LC154
	bl	printk
	ldr	w4, [x29, 108]
.L1964:
	cmn	w4, #1
	beq	.L1965
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	cmn	w19, #1
	csel	w19, w19, w4, ne
	ldr	x26, [x0, 304]
	ldr	x27, [x0, 320]
	ldr	x0, [x29, 136]
	ldrb	w0, [x0, 1249]
	add	w0, w0, w0, lsl 1
	cmp	w4, w0, lsr 2
	bcc	.L1975
.L1965:
	ldr	w0, [x29, 112]
	add	w20, w20, 1
	cmp	w0, w20
	bne	.L1968
.L1967:
	add	x0, x22, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1136]
	cmp	w0, 36
	bne	.L1969
	mov	w2, 1
	b	.L1997
.L1962:
	mov	x0, x21
	mov	w1, w20
	bl	toshiba_3d_set_tlc_rr_para
	mov	w0, 38
	b	.L1996
.L1975:
	mov	w19, w4
	b	.L1967
.L1969:
	mov	w1, 0
	mov	x0, x21
	bl	toshiba_3d_set_tlc_rr_para
	b	.L1961
	.size	toshiba_3d_read_retrial, .-toshiba_3d_read_retrial
	.align	2
	.global	toshiba_read_retrial
	.type	toshiba_read_retrial, %function
toshiba_read_retrial:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w0, 255
	stp	x27, x28, [sp, 80]
	mov	x27, x2
	stp	w4, w1, [x29, 120]
	mov	x28, x3
	stp	x21, x22, [sp, 32]
	adrp	x20, .LANCHOR0
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	bl	nandc_wait_flash_ready
	mov	w0, w19
	bl	zftl_flash_enter_slc_mode
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	add	x1, x20, :lo12:.LANCHOR0
	and	x0, x19, 255
	add	x22, x0, 8
	str	x0, [x29, 112]
	ldrb	w0, [x1, 1136]
	ldr	x23, [x1, 1056]
	sub	w0, w0, #67
	and	w0, w0, 255
	add	x22, x23, x22, lsl 8
	cmp	w0, 1
	bls	.L2016
	ldrb	w0, [x1, 1192]
	cbz	w0, .L2017
	mov	w24, 1
	mov	w0, 1
	bl	nandc_set_if_mode
.L2000:
	and	x0, x19, 255
	mov	w1, 92
	add	x0, x23, x0, lsl 8
	str	w1, [x0, 2056]
	mov	w1, 197
	str	w1, [x0, 2056]
.L1999:
	sxtw	x0, w19
	mov	w21, 1
	add	x0, x0, 8
	mov	w25, -1
	add	x0, x23, x0, lsl 8
	str	x0, [x29, 104]
.L2001:
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	ldrb	w0, [x0, 328]
	add	w0, w0, 1
	cmp	w21, w0
	bcc	.L2010
	mov	w26, w25
.L2009:
	add	x0, x20, :lo12:.LANCHOR0
	mov	w1, 0
	ldrb	w0, [x0, 1136]
	sub	w0, w0, #67
	and	w0, w0, 255
	cmp	w0, 1
	mov	x0, x22
	bhi	.L2011
	bl	sandisk_set_rr_para
.L2012:
	sxtw	x19, w19
	add	x20, x20, :lo12:.LANCHOR0
	add	x19, x19, 8
	mov	w0, 255
	add	x23, x23, x19, lsl 8
	str	w0, [x23, 8]
	ldrb	w0, [x20, 1249]
	add	w0, w0, w0, lsl 1
	cmp	w26, w0, lsr 2
	bcc	.L2013
	cmn	w26, #1
	mov	w0, 256
	csel	w26, w26, w0, eq
.L2013:
	cmp	w26, 256
	ccmn	w26, #1, 4, ne
	bne	.L2014
	ldr	w2, [x29, 124]
	adrp	x0, .LC155
	mov	w4, w26
	mov	w3, w21
	mov	w1, w21
	add	x0, x0, :lo12:.LC155
	bl	printk
.L2014:
	bl	nandc_wait_flash_ready
	cbz	w24, .L1998
	mov	w0, 4
	bl	nandc_set_if_mode
.L1998:
	mov	w0, w26
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L2017:
	mov	w24, 0
	b	.L2000
.L2016:
	mov	w24, 0
	b	.L1999
.L2010:
	add	x0, x20, :lo12:.LANCHOR0
	mov	w1, w21
	ldrb	w0, [x0, 1136]
	sub	w0, w0, #67
	and	w0, w0, 255
	cmp	w0, 1
	mov	x0, x22
	bhi	.L2002
	bl	sandisk_set_rr_para
.L2003:
	add	x0, x20, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1136]
	cmp	w0, 34
	bne	.L2004
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	ldrb	w0, [x0, 328]
	sub	w0, w0, #3
	cmp	w21, w0
	bne	.L2004
	ldr	x1, [x29, 104]
	mov	w0, 179
	str	w0, [x1, 8]
.L2004:
	ldr	x0, [x29, 112]
	mov	w1, 38
	ldr	w4, [x29, 120]
	mov	x3, x28
	mov	x2, x27
	add	x0, x23, x0, lsl 8
	str	w1, [x0, 2056]
	mov	w1, 93
	str	w1, [x0, 2056]
	mov	w0, w19
	ldr	w1, [x29, 124]
	bl	flash_read_page
	mov	w26, w0
	cmn	w0, #1
	beq	.L2007
	cmn	w25, #1
	csel	w25, w25, w0, ne
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	ldr	x27, [x0, 304]
	ldr	x28, [x0, 320]
	add	x0, x20, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1249]
	add	w0, w0, w0, lsl 1
	cmp	w26, w0, lsr 2
	bcc	.L2009
.L2007:
	add	w21, w21, 1
	b	.L2001
.L2002:
	bl	toshiba_set_rr_para
	b	.L2003
.L2011:
	bl	toshiba_set_rr_para
	b	.L2012
	.size	toshiba_read_retrial, .-toshiba_read_retrial
	.align	2
	.global	ymtc_3d_read_retrial
	.type	ymtc_3d_read_retrial, %function
ymtc_3d_read_retrial:
	stp	x29, x30, [sp, -112]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, -1
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR0
	stp	x23, x24, [sp, 48]
	mov	w24, w1
	and	w23, w0, 255
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	mov	x25, x2
	mov	x26, x3
	mov	w27, w4
	bl	nandc_wait_flash_ready
	ubfiz	x28, x23, 8, 8
	mov	w0, w23
	bl	zftl_flash_enter_slc_mode
	mov	w0, w23
	bl	zftl_flash_exit_slc_mode
	add	x1, x22, :lo12:.LANCHOR0
	add	x0, x28, 2048
	adrp	x5, .LANCHOR5
	mov	w20, 1
	add	x5, x5, :lo12:.LANCHOR5
	mov	x21, x1
	ldr	x28, [x1, 1056]
	tst	x24, 50331648
	add	x28, x28, x0
	bne	.L2040
.L2035:
	str	x5, [x29, 104]
	mov	w1, w20
	mov	x0, x28
	bl	ymtc_3d_set_slc_rr_para
	mov	w4, w27
	mov	x3, x26
	mov	x2, x25
	mov	w1, w24
	mov	w0, w23
	bl	flash_read_page
	ldr	x5, [x29, 104]
	cmn	w0, #1
	beq	.L2032
	ldrb	w1, [x21, 1249]
	cmn	w19, #1
	csel	w19, w19, w0, ne
	ldr	x25, [x5, 304]
	ldr	x26, [x5, 320]
	add	w1, w1, w1, lsl 1
	cmp	w0, w1, lsr 2
	bcc	.L2043
.L2032:
	add	w20, w20, 1
	cmp	w20, 10
	bne	.L2035
.L2034:
	mov	w1, 0
	mov	x0, x28
	bl	ymtc_3d_set_slc_rr_para
.L2036:
	add	x22, x22, :lo12:.LANCHOR0
	ldrb	w0, [x22, 1249]
	add	w0, w0, w0, lsl 1
	cmp	w19, w0, lsr 2
	bcc	.L2041
	cmn	w19, #1
	mov	w0, 256
	csel	w19, w19, w0, eq
.L2041:
	cmp	w19, 256
	ccmn	w19, #1, 4, ne
	bne	.L2042
	adrp	x0, .LC156
	mov	w4, w19
	mov	w3, w20
	mov	w2, w24
	mov	w1, w20
	add	x0, x0, :lo12:.LC156
	bl	printk
.L2042:
	bl	nandc_wait_flash_ready
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L2043:
	mov	w19, w0
	b	.L2034
.L2040:
	str	x5, [x29, 104]
	mov	w1, w20
	mov	x0, x28
	bl	ymtc_3d_set_tlc_rr_para
	mov	w4, w27
	mov	x3, x26
	mov	x2, x25
	mov	w1, w24
	mov	w0, w23
	bl	flash_read_page
	ldr	x5, [x29, 104]
	cmn	w0, #1
	beq	.L2037
	ldrb	w1, [x21, 1249]
	cmn	w19, #1
	csel	w19, w19, w0, ne
	ldr	x25, [x5, 304]
	ldr	x26, [x5, 320]
	add	w1, w1, w1, lsl 1
	cmp	w0, w1, lsr 2
	bcc	.L2044
.L2037:
	add	w20, w20, 1
	cmp	w20, 51
	bne	.L2040
.L2039:
	mov	w1, 0
	mov	x0, x28
	bl	ymtc_3d_set_tlc_rr_para
	b	.L2036
.L2044:
	mov	w19, w0
	b	.L2039
	.size	ymtc_3d_read_retrial, .-ymtc_3d_read_retrial
	.align	2
	.global	samsung_read_retrial
	.type	samsung_read_retrial, %function
samsung_read_retrial:
	stp	x29, x30, [sp, -112]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w22, w0, 255
	mov	w21, w1
	stp	x23, x24, [sp, 48]
	str	w4, [x29, 108]
	mov	x23, x2
	mov	x24, x3
	stp	x19, x20, [sp, 16]
	stp	x25, x26, [sp, 64]
	adrp	x20, .LANCHOR0
	stp	x27, x28, [sp, 80]
	bl	nandc_wait_flash_ready
	mov	w0, w22
	bl	zftl_flash_enter_slc_mode
	mov	w0, w22
	bl	zftl_flash_exit_slc_mode
	add	x0, x20, :lo12:.LANCHOR0
	tst	x21, 50331648
	and	x5, x22, 255
	adrp	x7, .LANCHOR4
	ldr	x0, [x0, 1056]
	bne	.L2060
	add	x7, x7, :lo12:.LANCHOR4
	adrp	x25, .LC157
	add	x25, x25, :lo12:.LC157
	add	x27, x0, x5, lsl 8
	mov	x28, 0
	add	x0, x7, 152
	mov	w26, -1
	str	x0, [x29, 96]
.L2065:
	mov	w0, 239
	str	w0, [x27, 2056]
	mov	w0, 141
	str	w0, [x27, 2052]
	ldr	x0, [x29, 96]
	add	w19, w28, 1
	add	x0, x0, x28
	ldrsb	w0, [x0, 1]
	str	w0, [x27, 2048]
	str	wzr, [x27, 2048]
	str	wzr, [x27, 2048]
	str	wzr, [x27, 2048]
	bl	nandc_wait_flash_ready
	ldr	w4, [x29, 108]
	mov	x3, x24
	mov	x2, x23
	mov	w1, w21
	mov	w0, w22
	bl	flash_read_page
	mov	w4, w0
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 4, .L2061
	mov	w3, w4
	str	w4, [x29, 104]
	mov	w2, w21
	mov	w1, w19
	mov	x0, x25
	bl	printk
	ldr	w4, [x29, 104]
.L2061:
	cmn	w4, #1
	beq	.L2062
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	cmn	w26, #1
	csel	w26, w26, w4, ne
	ldr	x23, [x0, 304]
	ldr	x24, [x0, 320]
	add	x0, x20, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1249]
	add	w0, w0, w0, lsl 1
	cmp	w4, w0, lsr 2
	bcc	.L2074
.L2062:
	add	x28, x28, 1
	cmp	x28, 25
	bne	.L2065
	mov	w19, 26
.L2064:
	mov	w0, 239
	str	w0, [x27, 2056]
	mov	w0, 141
	str	w0, [x27, 2052]
	str	wzr, [x27, 2048]
	str	wzr, [x27, 2048]
	str	wzr, [x27, 2048]
	str	wzr, [x27, 2048]
.L2096:
	add	x20, x20, :lo12:.LANCHOR0
	bl	nandc_wait_flash_ready
	ldrb	w0, [x20, 1249]
	add	w0, w0, w0, lsl 1
	cmp	w26, w0, lsr 2
	bcc	.L2072
	cmn	w26, #1
	mov	w0, 256
	csel	w26, w26, w0, eq
.L2072:
	cmp	w26, 256
	ccmn	w26, #1, 4, ne
	bne	.L2073
	adrp	x0, .LC159
	mov	w4, w26
	mov	w3, w19
	mov	w2, w21
	mov	w1, w19
	add	x0, x0, :lo12:.LC159
	bl	printk
.L2073:
	bl	nandc_wait_flash_ready
	mov	w0, w26
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L2074:
	mov	w26, w4
	b	.L2064
.L2060:
	add	x7, x7, :lo12:.LANCHOR4
	adrp	x25, .LC158
	add	x27, x7, 188
	add	x28, x0, x5, lsl 8
	add	x25, x25, :lo12:.LC158
	mov	w26, -1
	mov	w19, 1
.L2071:
	mov	w0, 239
	str	w0, [x28, 2056]
	mov	w0, 137
	str	w0, [x28, 2052]
	ldrb	w0, [x27]
	str	w0, [x28, 2048]
	ldrb	w0, [x27, 1]
	str	w0, [x28, 2048]
	ldrb	w0, [x27, 2]
	str	w0, [x28, 2048]
	ldrb	w0, [x27, 3]
	str	w0, [x28, 2048]
	bl	nandc_wait_flash_ready
	ldr	w4, [x29, 108]
	mov	x3, x24
	mov	x2, x23
	mov	w1, w21
	mov	w0, w22
	bl	flash_read_page
	mov	w4, w0
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 4, .L2067
	mov	w3, w4
	str	w4, [x29, 96]
	mov	w2, w21
	mov	w1, w19
	mov	x0, x25
	bl	printk
	ldr	w4, [x29, 96]
.L2067:
	cmn	w4, #1
	beq	.L2068
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	cmn	w26, #1
	csel	w26, w26, w4, ne
	ldr	x23, [x0, 304]
	ldr	x24, [x0, 320]
	add	x0, x20, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1249]
	add	w0, w0, w0, lsl 1
	cmp	w4, w0, lsr 2
	bcc	.L2075
.L2068:
	add	w19, w19, 1
	add	x27, x27, 4
	cmp	w19, 26
	bne	.L2071
.L2070:
	mov	w0, 239
	str	w0, [x28, 2056]
	mov	w0, 137
	str	w0, [x28, 2052]
	str	wzr, [x28, 2048]
	str	wzr, [x28, 2048]
	str	wzr, [x28, 2048]
	str	wzr, [x28, 2048]
	b	.L2096
.L2075:
	mov	w26, w4
	b	.L2070
	.size	samsung_read_retrial, .-samsung_read_retrial
	.align	2
	.global	hynix_read_retrial
	.type	hynix_read_retrial, %function
hynix_read_retrial:
	stp	x29, x30, [sp, -128]!
	adrp	x5, .LANCHOR0
	add	x8, x5, :lo12:.LANCHOR0
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	w22, w1
	stp	x25, x26, [sp, 64]
	mov	x25, x2
	stp	x19, x20, [sp, 16]
	mov	x26, x3
	stp	x23, x24, [sp, 48]
	and	x23, x0, 255
	stp	x27, x28, [sp, 80]
	mov	w27, w4
	stp	x5, x8, [x29, 112]
	mov	x21, x23
	ldr	x28, [x8, 1048]
	mov	w19, -1
	add	x28, x28, 112
	add	x0, x28, x23
	ldrb	w24, [x28, 2]
	ldrb	w20, [x0, 8]
	bl	nandc_wait_flash_ready
	mov	w0, w23
	bl	zftl_flash_enter_slc_mode
	mov	w0, w23
	bl	zftl_flash_exit_slc_mode
	ldp	x5, x8, [x29, 112]
	adrp	x7, .LANCHOR5
	add	x7, x7, :lo12:.LANCHOR5
	mov	w6, 0
.L2098:
	cmp	w6, w24
	bcc	.L2103
.L2102:
	add	x1, x5, :lo12:.LANCHOR0
	add	x23, x28, x23
	ldrb	w0, [x1, 1249]
	strb	w20, [x23, 8]
	add	w0, w0, w0, lsl 1
	cmp	w19, w0, lsr 2
	bcc	.L2104
	cmn	w19, #1
	mov	w0, 256
	csel	w19, w19, w0, eq
.L2104:
	cmp	w19, 256
	ccmn	w19, #1, 4, ne
	bne	.L2105
	adrp	x0, .LC160
	mov	w4, w19
	mov	w3, w6
	mov	w2, w22
	mov	w1, w6
	add	x0, x0, :lo12:.LC160
	bl	printk
.L2105:
	bl	nandc_wait_flash_ready
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L2103:
	add	w20, w20, 1
	stp	x8, x7, [x29, 96]
	and	w20, w20, 255
	str	x5, [x29, 112]
	cmp	w24, w20
	str	w6, [x29, 120]
	csel	w20, w20, wzr, hi
	mov	w0, w21
	mov	w1, w20
	bl	hynix_set_rr_para
	mov	w4, w27
	mov	x3, x26
	mov	x2, x25
	mov	w1, w22
	mov	w0, w21
	bl	flash_read_page
	ldr	w6, [x29, 120]
	cmn	w0, #1
	ldp	x8, x7, [x29, 96]
	ldr	x5, [x29, 112]
	beq	.L2100
	ldrb	w1, [x8, 1249]
	cmn	w19, #1
	csel	w19, w19, w0, ne
	ldr	x25, [x7, 304]
	ldr	x26, [x7, 320]
	add	w1, w1, w1, lsl 1
	cmp	w0, w1, lsr 2
	bcc	.L2106
.L2100:
	add	w6, w6, 1
	b	.L2098
.L2106:
	mov	w19, w0
	b	.L2102
	.size	hynix_read_retrial, .-hynix_read_retrial
	.align	2
	.global	flash_ddr_tuning_read
	.type	flash_ddr_tuning_read, %function
flash_ddr_tuning_read:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	stp	x21, x22, [sp, 32]
	mov	w22, w1
	stp	x23, x24, [sp, 48]
	mov	x24, x2
	stp	x25, x26, [sp, 64]
	adrp	x23, .LANCHOR5
	stp	x27, x28, [sp, 80]
	mov	x25, x3
	str	w4, [x29, 120]
	add	x23, x23, :lo12:.LANCHOR5
	bl	nandc_get_ddr_para
	mov	w28, 0
	str	w0, [x29, 116]
	mov	w26, 0
	adrp	x0, .LC161
	mov	w27, 0
	add	x0, x0, :lo12:.LC161
	mov	w19, 1024
	mov	w21, -1
	mov	w7, 6
	str	wzr, [x29, 124]
	str	x0, [x29, 104]
.L2122:
	mov	w0, w7
	str	w7, [x29, 112]
	bl	nandc_set_ddr_para
	ldr	w4, [x29, 120]
	mov	x3, x25
	mov	x2, x24
	mov	w1, w22
	mov	w0, w20
	bl	flash_read_page
	mov	w4, w0
	adrp	x0, .LANCHOR2
	ldr	w7, [x29, 112]
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 4, .L2117
	ldr	x0, [x29, 104]
	mov	w3, w4
	mov	w1, w7
	str	w4, [x29, 100]
	str	w7, [x29, 112]
	mov	w2, w22
	bl	printk
	ldr	w4, [x29, 100]
	ldr	w7, [x29, 112]
.L2117:
	add	w0, w19, 1
	cmp	w4, w0
	bhi	.L2118
	adrp	x0, .LANCHOR0+1249
	ldr	x24, [x23, 304]
	ldr	x25, [x23, 320]
	ldrb	w0, [x0, #:lo12:.LANCHOR0+1249]
	cmp	w4, w0, lsr 2
	bcs	.L2128
	add	w27, w27, 1
	cmp	w27, 7
	bls	.L2128
	sub	w28, w7, w27
	mov	w19, w4
	mov	w21, 0
.L2120:
	ldr	w0, [x29, 124]
	cmp	w27, w26
	csel	w28, w28, w0, cs
.L2121:
	cbz	w28, .L2123
	adrp	x0, .LANCHOR0+1249
	mov	w1, 3
	ldrb	w0, [x0, #:lo12:.LANCHOR0+1249]
	udiv	w0, w0, w1
	cmp	w0, w19
	bls	.L2123
	mov	w1, w28
	adrp	x0, .LC162
	add	x0, x0, :lo12:.LC162
	bl	printk
	mov	w0, w28
.L2142:
	bl	nandc_set_ddr_para
	cbz	w21, .L2116
	adrp	x0, .LANCHOR0
	add	x27, x0, :lo12:.LANCHOR0
	mov	x23, x0
	ldrb	w1, [x27, 1248]
	tbz	x1, 0, .L2116
	mov	w2, w22
	mov	w1, w20
	adrp	x0, .LC163
	add	x0, x0, :lo12:.LC163
	bl	printk
	mov	w0, w20
	bl	flash_reset
	mov	w0, 1
	bl	flash_set_interface_mode
	mov	w0, 1
	bl	nandc_set_if_mode
	add	x0, x27, w20, sxtw
	mov	w1, 2
	strb	w1, [x0, 1208]
	mov	w0, w20
	bl	zftl_flash_enter_slc_mode
	ldr	w4, [x29, 120]
	mov	x3, x25
	mov	x2, x24
	mov	w1, w22
	mov	w0, w20
	bl	flash_read_page
	mov	w19, w0
	mov	w3, w0
	mov	w2, w22
	mov	w1, w20
	adrp	x0, .LC164
	add	x0, x0, :lo12:.LC164
	bl	printk
	ldrb	w0, [x27, 1249]
	cmp	w19, w0
	bhi	.L2130
	adrp	x1, .LANCHOR5
	add	x1, x1, :lo12:.LANCHOR5
	ldr	w0, [x1, 332]
	add	w0, w0, 1
	str	w0, [x1, 332]
	cmp	w0, 100
	bls	.L2126
	strb	wzr, [x27, 1192]
.L2116:
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L2118:
	cmp	w27, w26
	bls	.L2129
	sub	w0, w28, w27
	str	w0, [x29, 124]
	cmp	w27, 7
	bhi	.L2121
	mov	w26, w27
.L2129:
	mov	w27, 0
	b	.L2119
.L2128:
	mov	w28, w7
	mov	w19, w4
	mov	w21, 0
.L2119:
	add	w7, w7, 2
	cmp	w7, 50
	bne	.L2122
	b	.L2120
.L2123:
	ldrb	w0, [x29, 116]
	b	.L2142
.L2130:
	mov	w19, w21
.L2126:
	add	x23, x23, :lo12:.LANCHOR0
	ldrb	w0, [x23, 1248]
	bl	flash_set_interface_mode
	ldrb	w0, [x23, 1248]
	bl	nandc_set_if_mode
	b	.L2116
	.size	flash_ddr_tuning_read, .-flash_ddr_tuning_read
	.align	2
	.global	flash_read_page_en
	.type	flash_read_page_en, %function
flash_read_page_en:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	stp	x25, x26, [sp, 64]
	and	w25, w0, 255
	add	x0, x20, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 48]
	stp	x21, x22, [sp, 32]
	mov	w19, w1
	mov	x22, x2
	mov	x23, x3
	ldrb	w0, [x0, 1153]
	mov	w24, w4
	cmp	w0, w25
	bhi	.L2144
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 288
	mov	w2, 431
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2144:
	add	x0, x20, :lo12:.LANCHOR0
	add	x1, x0, w25, sxtw
	ldrb	w4, [x0, 1153]
	ldrb	w21, [x1, 1196]
	cmp	w25, w4
	bcc	.L2145
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbnz	x0, 6, .L2146
.L2170:
	mov	w0, -1
.L2143:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L2146:
	mov	w3, w19
	mov	w2, w25
	mov	w1, w21
	adrp	x0, .LC165
	add	x0, x0, :lo12:.LC165
	bl	printk
	b	.L2170
.L2145:
	tst	x19, 50331648
	bne	.L2148
	ldrb	w1, [x20, #:lo12:.LANCHOR0]
	cbz	w1, .L2149
	ldrb	w0, [x0, 1]
	cbz	w0, .L2148
.L2149:
	add	x1, x20, :lo12:.LANCHOR0
	ldrh	w2, [x1, 2]
	udiv	w0, w19, w2
	mul	w0, w0, w2
	ldrb	w2, [x1, 1]
	sub	w19, w19, w0
	cbz	w2, .L2150
	add	w19, w0, w19, lsl 1
.L2148:
	mov	w4, w24
	mov	x3, x23
	mov	x2, x22
	mov	w1, w19
	mov	w0, w21
	bl	flash_read_page
	cmn	w0, #1
	bne	.L2143
	add	x25, x20, :lo12:.LANCHOR0
	ldrb	w26, [x25, 1252]
	cbnz	w26, .L2151
.L2154:
	adrp	x0, .LANCHOR5+336
	ldr	x5, [x0, #:lo12:.LANCHOR5+336]
	cbnz	x5, .L2152
.L2153:
	add	x20, x20, :lo12:.LANCHOR0
	mov	w3, -1
	mov	w2, w19
	mov	w1, 0
	adrp	x0, .LC166
	add	x0, x0, :lo12:.LC166
	ldrb	w4, [x20, 1252]
	bl	printk
	ldrb	w0, [x20, 1192]
	cbz	w0, .L2170
	mov	w4, w24
	mov	x3, x23
	mov	x2, x22
	mov	w1, w19
	mov	w0, w21
	bl	flash_ddr_tuning_read
	b	.L2143
.L2150:
	add	x1, x1, 4
	ldrh	w19, [x1, w19, uxtw 1]
	add	w19, w19, w0
	b	.L2148
.L2151:
	strb	wzr, [x25, 1252]
	mov	w4, w24
	mov	x3, x23
	mov	x2, x22
	mov	w1, w19
	mov	w0, w21
	bl	flash_read_page
	strb	w26, [x25, 1252]
	cmn	w0, #1
	beq	.L2154
	b	.L2143
.L2152:
	mov	w4, w24
	mov	x3, x23
	mov	x2, x22
	mov	w1, w19
	mov	w0, w21
	blr	x5
	cmn	w0, #1
	bne	.L2143
	b	.L2153
	.size	flash_read_page_en, .-flash_read_page_en
	.align	2
	.global	flash_get_last_written_page
	.type	flash_get_last_written_page, %function
flash_get_last_written_page:
	stp	x29, x30, [sp, -112]!
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	and	w23, w0, 255
	adrp	x0, .LANCHOR5+172
	stp	x19, x20, [sp, 16]
	stp	x27, x28, [sp, 80]
	adrp	x27, .LANCHOR2
	ldrh	w19, [x0, #:lo12:.LANCHOR5+172]
	add	x0, x27, :lo12:.LANCHOR2
	stp	x21, x22, [sp, 32]
	and	w21, w1, 65535
	stp	x25, x26, [sp, 64]
	sub	w19, w19, #1
	sxth	w19, w19
	mov	x24, x2
	ldrh	w26, [x0, 34]
	mov	x22, x3
	mov	w25, w4
	mov	w0, w23
	mul	w26, w26, w21
	add	w1, w19, w26
	bl	flash_read_page_en
	cmp	w0, 512
	bne	.L2172
	mov	w28, 0
	mov	w5, 2
.L2173:
	cmp	w28, w19
	ble	.L2176
.L2172:
	ldr	w0, [x27, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2177
	ldr	w3, [x22]
	adrp	x0, .LC167
	mov	w2, w19
	mov	w1, w21
	add	x0, x0, :lo12:.LC167
	bl	printk
.L2177:
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L2176:
	add	w20, w28, w19
	str	w5, [x29, 108]
	mov	w4, w25
	mov	x3, x22
	mov	x2, x24
	mov	w0, w23
	sdiv	w20, w20, w5
	add	w1, w26, w20, sxth
	bl	flash_read_page_en
	ldr	w5, [x29, 108]
	cmp	w0, 512
	bne	.L2174
	sub	w19, w20, #1
	sxth	w19, w19
	b	.L2173
.L2174:
	add	w20, w20, 1
	sxth	w28, w20
	b	.L2173
	.size	flash_get_last_written_page, .-flash_get_last_written_page
	.align	2
	.global	flash_get_last_written_page_ext
	.type	flash_get_last_written_page_ext, %function
flash_get_last_written_page_ext:
	stp	x29, x30, [sp, -16]!
	adrp	x4, .LANCHOR0+1205
	mov	w5, 24
	mov	w6, 1
	add	x29, sp, 0
	ldrb	w4, [x4, #:lo12:.LANCHOR0+1205]
	and	w0, w0, 65535
	sub	w5, w5, w4
	adrp	x4, .LANCHOR3+1304
	ldrh	w4, [x4, #:lo12:.LANCHOR3+1304]
	sub	w5, w5, w4
	mov	w4, w3
	mov	x3, x2
	mov	x2, x1
	lsl	w6, w6, w5
	sub	w6, w6, #1
	and	w1, w6, w0
	asr	w0, w0, w5
	bl	flash_get_last_written_page
	ldp	x29, x30, [sp], 16
	ret
	.size	flash_get_last_written_page_ext, .-flash_get_last_written_page_ext
	.align	2
	.global	flash_ddr_para_scan
	.type	flash_ddr_para_scan, %function
flash_ddr_para_scan:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	stp	x21, x22, [sp, 32]
	add	x21, x19, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 48]
	and	w23, w0, 255
	mov	w24, w1
	mov	w22, 1
	ldrb	w0, [x21, 1248]
	adrp	x20, .LANCHOR5
	strb	w22, [x21, 1192]
	add	x20, x20, :lo12:.LANCHOR5
	bl	flash_set_interface_mode
	ldrb	w0, [x21, 1248]
	bl	nandc_set_if_mode
	ldp	x3, x2, [x20, 344]
	mov	w4, 4
	mov	w1, w24
	mov	w0, w23
	bl	flash_ddr_tuning_read
	ldp	x3, x2, [x20, 344]
	mov	w4, 4
	mov	w1, w24
	mov	w0, w23
	bl	flash_read_page
	cmn	w0, #1
	bne	.L2185
	ldrb	w0, [x21, 1248]
	tbz	x0, 0, .L2185
	mov	w0, 1
	bl	flash_set_interface_mode
	mov	w0, w22
	bl	nandc_set_if_mode
	strb	wzr, [x21, 1192]
.L2186:
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L2185:
	add	x19, x19, :lo12:.LANCHOR0
	mov	w0, 1
	strb	w0, [x19, 1192]
	b	.L2186
	.size	flash_ddr_para_scan, .-flash_ddr_para_scan
	.align	2
	.global	flash_prog_page
	.type	flash_prog_page, %function
flash_prog_page:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	str	x27, [sp, 80]
	adrp	x27, .LANCHOR0
	add	x0, x27, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	stp	x23, x24, [sp, 48]
	mov	w22, w1
	stp	x25, x26, [sp, 64]
	mov	w20, 24
	mov	x24, x2
	mov	x25, x3
	ldrb	w1, [x0, 1205]
	and	x19, x21, 255
	ldr	x26, [x0, 1056]
	add	x23, x19, 8
	sub	w1, w20, w1
	mov	w20, 1
	lsl	w20, w20, w1
	sub	w20, w20, #1
	bl	nandc_wait_flash_ready
	and	w20, w20, w22
	mov	w0, w21
	bl	hynix_reconfig_rr_para
	mov	w0, w21
	bl	nandc_cs
	add	x23, x26, x23, lsl 8
	mov	w0, w21
	tst	x22, 50331648
	bne	.L2192
	bl	zftl_flash_enter_slc_mode
.L2193:
	add	x19, x26, x19, lsl 8
	mov	w0, 128
	str	w0, [x19, 2056]
	and	w0, w20, 255
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w20, 8
	str	w0, [x19, 2052]
	lsr	w0, w20, 16
	str	w0, [x19, 2052]
	add	x0, x27, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1204]
	cbz	w0, .L2194
	lsr	w0, w20, 24
	str	w0, [x19, 2052]
.L2194:
	mov	w0, w20
	bl	nandc_set_seed
	adrp	x0, .LANCHOR2+17
	mov	x4, x25
	mov	x3, x24
	mov	w1, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR2+17]
	mov	w0, w21
	bl	nandc_xfer
	mov	w0, 16
	str	w0, [x19, 2056]
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	mov	x0, x23
	bl	flash_read_status
	mov	w3, w0
	bl	nandc_de_cs.constprop.35
	and	w2, w3, 4
	tbz	x3, 2, .L2191
	mov	w1, w22
	adrp	x0, .LC168
	add	x0, x0, :lo12:.LC168
	bl	printk
	mov	w2, -1
.L2191:
	mov	w0, w2
	ldr	x27, [sp, 80]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
.L2192:
	bl	zftl_flash_exit_slc_mode
	b	.L2193
	.size	flash_prog_page, .-flash_prog_page
	.align	2
	.global	flash_test_blk
	.type	flash_test_blk, %function
flash_test_blk:
	stp	x29, x30, [sp, -48]!
	mov	w2, 32
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR5
	add	x19, x19, :lo12:.LANCHOR5
	stp	x21, x22, [sp, 32]
	and	w22, w0, 255
	and	w20, w1, 65535
	mov	w1, 165
	ldr	x0, [x19, 304]
	bl	ftl_memset
	ldr	x0, [x19, 320]
	mov	w2, 8
	mov	w1, 90
	bl	ftl_memset
	adrp	x0, .LANCHOR0+2
	ldrh	w0, [x0, #:lo12:.LANCHOR0+2]
	mul	w20, w0, w20
	mov	w0, w22
	mov	w1, w20
	bl	flash_erase_block
	cmn	w0, #1
	bne	.L2204
.L2206:
	mov	w19, -1
.L2205:
	mov	w1, w20
	mov	w0, w22
	bl	flash_erase_block
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L2204:
	adrp	x21, .LANCHOR2
	add	x21, x21, :lo12:.LANCHOR2
	ldr	x2, [x19, 304]
	mov	w1, w20
	ldr	x3, [x19, 320]
	mov	w0, w22
	ldrb	w4, [x21, 17]
	add	x21, x21, 8
	bl	flash_prog_page
	cmn	w0, #1
	beq	.L2206
	ldrb	w4, [x21, 9]
	mov	w1, w20
	ldr	x2, [x19, 304]
	mov	w0, w22
	ldr	x3, [x19, 320]
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2206
	ldr	x0, [x19, 304]
	ldr	w1, [x0]
	mov	w0, 42405
	movk	w0, 0xa5a5, lsl 16
	cmp	w1, w0
	bne	.L2206
	ldr	x0, [x19, 320]
	ldr	w1, [x0]
	mov	w0, 23130
	movk	w0, 0x5a5a, lsl 16
	cmp	w1, w0
	csetm	w19, ne
	b	.L2205
	.size	flash_test_blk, .-flash_test_blk
	.align	2
	.global	flash_start_one_pass_page_prog
	.type	flash_start_one_pass_page_prog, %function
flash_start_one_pass_page_prog:
	stp	x29, x30, [sp, -32]!
	and	w9, w0, 255
	and	w8, w3, 255
	adrp	x7, .LANCHOR0
	add	x29, sp, 0
	add	x0, x7, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	and	w20, w2, 255
	ldr	x19, [x0, 1056]
	mov	w0, w8
	bl	nandc_cs
	cbz	w9, .L2215
	sxtw	x0, w8
	add	x0, x0, 8
	add	x0, x19, x0, lsl 8
	str	w9, [x0, 8]
.L2215:
	ubfiz	x0, x8, 8, 8
	add	x7, x7, :lo12:.LANCHOR0
	add	x19, x19, x0
	mov	w0, 128
	str	w0, [x19, 2056]
	and	w0, w4, 255
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w4, 8
	str	w0, [x19, 2052]
	lsr	w0, w4, 16
	str	w0, [x19, 2052]
	ldrb	w0, [x7, 1204]
	cbz	w0, .L2216
	lsr	w0, w4, 24
	str	w0, [x19, 2052]
.L2216:
	mov	w0, w4
	bl	nandc_set_seed
	adrp	x0, .LANCHOR2+17
	mov	x4, x6
	mov	x3, x5
	mov	w1, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR2+17]
	mov	w0, w8
	bl	nandc_xfer
	str	w20, [x19, 2056]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	flash_start_one_pass_page_prog, .-flash_start_one_pass_page_prog
	.align	2
	.global	flash_dual_page_prog
	.type	flash_dual_page_prog, %function
flash_dual_page_prog:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	adrp	x0, .LANCHOR0
	add	x0, x0, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	ubfiz	x22, x20, 8, 8
	stp	x23, x24, [sp, 48]
	mov	w19, 24
	stp	x25, x26, [sp, 64]
	mov	x25, x2
	stp	x27, x28, [sp, 80]
	add	x2, x22, 2048
	adrp	x27, .LANCHOR2
	mov	w21, w1
	ldr	x22, [x0, 1056]
	mov	x26, x3
	ldrb	w0, [x0, 1205]
	mov	x23, x4
	mov	x24, x5
	ubfx	x28, x21, 24, 2
	sub	w0, w19, w0
	mov	w19, 1
	add	x22, x22, x2
	lsl	w19, w19, w0
	ldr	w0, [x27, #:lo12:.LANCHOR2]
	sub	w19, w19, #1
	and	w19, w19, w1
	tbz	x0, 4, .L2225
	adrp	x0, .LC169
	mov	w3, w6
	mov	w2, w28
	add	x0, x0, :lo12:.LC169
	bl	printk
.L2225:
	bl	nandc_wait_flash_ready
	mov	w0, w20
	bl	nandc_cs
	mov	w0, w20
	cbnz	w28, .L2226
	bl	zftl_flash_enter_slc_mode
.L2227:
	mov	x6, x26
	mov	x5, x25
	mov	w4, w19
	mov	w3, w20
	mov	w2, 16
	mov	w1, 0
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	mov	x6, x24
	mov	x5, x23
	add	w4, w19, 1
	mov	w3, w20
	mov	w2, 16
	mov	w1, 0
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	mov	x0, x22
	bl	flash_read_status
	mov	w3, w0
	bl	nandc_de_cs.constprop.35
	and	w2, w3, 4
	tbz	x3, 2, .L2224
	ldr	w0, [x27, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2229
	adrp	x0, .LC168
	mov	w1, w21
	add	x0, x0, :lo12:.LC168
	bl	printk
.L2229:
	mov	w2, -1
.L2224:
	mov	w0, w2
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L2226:
	bl	zftl_flash_exit_slc_mode
	b	.L2227
	.size	flash_dual_page_prog, .-flash_dual_page_prog
	.align	2
	.global	ymtc_flash_tlc_page_prog
	.type	ymtc_flash_tlc_page_prog, %function
ymtc_flash_tlc_page_prog:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	str	x25, [sp, 64]
	mov	w25, w1
	adrp	x1, .LANCHOR0
	add	x1, x1, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	stp	x21, x22, [sp, 32]
	mov	w19, 24
	stp	x23, x24, [sp, 48]
	ubfiz	x24, x20, 8, 8
	add	x0, x24, 2048
	mov	x22, x2
	ldr	x24, [x1, 1056]
	mov	x23, x3
	mov	w21, 1
	add	x24, x24, x0
	ldrb	w0, [x1, 1205]
	sub	w19, w19, w0
	bl	nandc_wait_flash_ready
	lsl	w19, w21, w19
	mov	w0, w20
	sub	w19, w19, #1
	bl	nandc_cs
	and	w19, w19, w25
	mov	w0, w20
	bl	zftl_flash_exit_slc_mode
	mov	x6, x23
	mov	x5, x22
	mov	w4, w19
	mov	w3, w20
	mov	w1, w21
	mov	w2, 26
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	mov	x6, x23
	mov	x5, x22
	add	w4, w19, w21
	mov	w3, w20
	mov	w1, w21
	mov	w2, 26
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	mov	x6, x23
	mov	x5, x22
	add	w4, w19, 2
	mov	w3, w20
	mov	w1, w21
	mov	w2, 16
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	mov	x0, x24
	bl	flash_read_status
	mov	w3, w0
	bl	nandc_de_cs.constprop.35
	and	w2, w3, 4
	tbz	x3, 2, .L2237
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2239
	adrp	x0, .LC170
	mov	w1, w25
	add	x0, x0, :lo12:.LC170
	bl	printk
.L2239:
	mov	w2, -1
.L2237:
	mov	w0, w2
	ldr	x25, [sp, 64]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 80
	ret
	.size	ymtc_flash_tlc_page_prog, .-ymtc_flash_tlc_page_prog
	.section	.text.unlikely
	.align	2
	.type	fw_flash_page_prog.constprop.29, %function
fw_flash_page_prog.constprop.29:
	stp	x29, x30, [sp, -64]!
	adrp	x4, .LANCHOR0
	add	x4, x4, :lo12:.LANCHOR0
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	x21, x1
	str	x23, [sp, 48]
	mov	x23, x2
	stp	x19, x20, [sp, 16]
	ldr	x1, [x4, 1144]
	ldrb	w22, [x4, 1249]
	ldrb	w19, [x1, 9]
	udiv	w19, w0, w19
	ldrb	w0, [x4, 1152]
	bl	nandc_bch_sel
	adrp	x0, .LANCHOR2
	add	x0, x0, :lo12:.LANCHOR2
	ldrb	w1, [x0, 15]
	cmp	w1, 9
	bne	.L2245
	ldrb	w1, [x4, 1154]
	cbnz	w1, .L2245
	add	x0, x0, 8
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L2246
	mov	x3, x23
	mov	x2, x21
	mov	w1, w19
	mov	w0, 0
	bl	ymtc_flash_tlc_page_prog
.L2249:
	mov	w4, w0
	mov	w0, w22
	bl	nandc_bch_sel
	mov	w0, w4
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldr	x23, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L2246:
	adrp	x20, .LANCHOR5
	add	x20, x20, :lo12:.LANCHOR5
	mov	w2, 16384
	mov	w1, 255
	ldr	x0, [x20, 304]
	bl	ftl_memset
	ldr	x5, [x20, 304]
	mov	w6, 4
	mov	x3, x23
	mov	x2, x21
	mov	w1, w19
	mov	x4, x5
	mov	w0, 0
	bl	flash_dual_page_prog
	b	.L2249
.L2245:
	mov	w4, 4
	mov	x3, x23
	mov	x2, x21
	mov	w1, w19
	mov	w0, 0
	bl	flash_prog_page
	b	.L2249
	.size	fw_flash_page_prog.constprop.29, .-fw_flash_page_prog.constprop.29
	.text
	.align	2
	.global	flash_start_tlc_page_prog
	.type	flash_start_tlc_page_prog, %function
flash_start_tlc_page_prog:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w1, 255
	stp	x25, x26, [sp, 64]
	and	w25, w0, 255
	adrp	x0, .LANCHOR0
	add	x1, x0, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	and	w26, w3, 255
	stp	x23, x24, [sp, 48]
	and	w22, w2, 255
	mov	w20, w4
	mov	x23, x5
	ldrb	w1, [x1, 1153]
	mov	x24, x6
	mov	x19, x0
	cmp	w1, w26
	bhi	.L2251
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 312
	mov	w2, 868
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2251:
	add	x0, x19, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1153]
	cmp	w1, w26
	bls	.L2250
	add	x26, x0, w26, sxtw
	ldr	x19, [x0, 1056]
	ldrb	w5, [x26, 1196]
	mov	w0, w5
	bl	nandc_cs
	cbz	w25, .L2253
	sxtw	x0, w5
	add	x0, x0, 8
	add	x0, x19, x0, lsl 8
	str	w25, [x0, 8]
.L2253:
	ubfiz	x0, x5, 8, 8
	add	x19, x19, x0
	mov	w0, 128
	str	w21, [x19, 2056]
	str	w0, [x19, 2056]
	and	w0, w20, 255
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w20, 8
	str	w0, [x19, 2052]
	lsr	w0, w20, 16
	add	w20, w20, w20, lsl 1
	str	w0, [x19, 2052]
	sub	w0, w20, #1
	add	w0, w0, w21
	bl	nandc_set_seed
	adrp	x0, .LANCHOR2+17
	mov	x4, x24
	mov	x3, x23
	mov	w1, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR2+17]
	mov	w0, w5
	bl	nandc_xfer
	str	w22, [x19, 2056]
	bl	nandc_de_cs.constprop.35
.L2250:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
	.size	flash_start_tlc_page_prog, .-flash_start_tlc_page_prog
	.align	2
	.type	queue_tlc_prog_cmd, %function
queue_tlc_prog_cmd:
	stp	x29, x30, [sp, -64]!
	mov	w3, 24
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	mov	x21, x0
	stp	x23, x24, [sp, 48]
	adrp	x22, .LANCHOR0
	mov	w24, w1
	mov	w23, 1
	ldr	x7, [x0]
	add	x0, x22, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1205]
	ldr	w2, [x7, 40]
	sub	w3, w3, w1
	ldrb	w0, [x0, 1213]
	lsl	w19, w23, w1
	sub	w19, w19, #1
	lsl	w20, w23, w3
	sub	w20, w20, #1
	and	w20, w20, w2
	lsr	w2, w2, w3
	and	w19, w19, w2
	and	w19, w19, 255
	cbz	w0, .L2259
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	ldr	x0, [x21]
	mov	w4, w20
	mov	w3, w19
	mov	w1, w23
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	ldr	x0, [x21, 8]
	add	w4, w20, w23
	mov	w3, w19
	mov	w1, w23
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	ldr	x0, [x21, 16]
	add	w4, w20, 2
	mov	w3, w19
	mov	w2, 16
	mov	w1, w23
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
.L2260:
	cbz	w24, .L2258
	ldr	x1, [x21]
	mov	w0, 4
	strb	w0, [x1, 58]
	mov	w0, 1
	strb	w0, [x1, 59]
	mov	w0, -1
	strb	w0, [x1]
	add	x0, x22, :lo12:.LANCHOR0
	add	x0, x0, 3354
	bl	buf_add_tail
.L2258:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L2259:
	ldr	x5, [x7, 8]
	mov	w4, w20
	ldr	x6, [x7, 24]
	mov	w3, w19
	ldrb	w0, [x7, 60]
	mov	w1, w23
	mov	w2, 26
	bl	flash_start_tlc_page_prog
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	ldp	x7, x0, [x21]
	mov	w4, w20
	mov	w3, w19
	mov	w2, 26
	mov	w1, 2
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	ldr	x0, [x21, 16]
	mov	w4, w20
	ldr	x7, [x21]
	mov	w3, w19
	mov	w2, 16
	mov	w1, 3
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	b	.L2260
	.size	queue_tlc_prog_cmd, .-queue_tlc_prog_cmd
	.align	2
	.global	sblk_3d_tlc_dump_prog
	.type	sblk_3d_tlc_dump_prog, %function
sblk_3d_tlc_dump_prog:
	stp	x29, x30, [sp, -48]!
	adrp	x1, .LANCHOR0
	add	x1, x1, :lo12:.LANCHOR0
	mov	w3, 24
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x0
	stp	x21, x22, [sp, 32]
	mov	w22, 1
	ldr	w2, [x0, 40]
	ldrb	w0, [x1, 1205]
	sub	w3, w3, w0
	lsl	w19, w22, w0
	ldrb	w0, [x1, 1213]
	lsl	w21, w22, w3
	sub	w19, w19, #1
	sub	w21, w21, #1
	and	w21, w21, w2
	lsr	w2, w2, w3
	and	w19, w19, w2
	and	w19, w19, 255
	cbz	w0, .L2267
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	ldr	x5, [x20, 8]
	mov	w4, w21
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w1, w22
	mov	w2, 26
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	ldr	x5, [x20, 8]
	add	w4, w21, w22
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w1, w22
	mov	w2, 26
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	ldr	x5, [x20, 8]
	add	w4, w21, 2
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w2, 16
	mov	w1, w22
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
.L2268:
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	ldr	w0, [x20, 40]
	mov	w1, 64
	bl	flash_wait_device_ready
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L2267:
	ldr	x5, [x20, 8]
	mov	w4, w21
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w1, w22
	mov	w2, 26
	mov	w0, 0
	bl	flash_start_tlc_page_prog
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	ldr	x5, [x20, 8]
	mov	w4, w21
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w2, 26
	mov	w1, 2
	mov	w0, 0
	bl	flash_start_tlc_page_prog
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	ldr	x5, [x20, 8]
	mov	w4, w21
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w2, 16
	mov	w1, 3
	mov	w0, 0
	bl	flash_start_tlc_page_prog
	b	.L2268
	.size	sblk_3d_tlc_dump_prog, .-sblk_3d_tlc_dump_prog
	.align	2
	.global	flash_start_3d_mlc_page_prog
	.type	flash_start_3d_mlc_page_prog, %function
flash_start_3d_mlc_page_prog:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w1, 255
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	adrp	x0, .LANCHOR0
	add	x1, x0, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 48]
	mov	x22, x3
	mov	w24, w2
	mov	x23, x4
	ldrb	w1, [x1, 1153]
	mov	x19, x0
	cmp	w1, w20
	bhi	.L2271
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 344
	mov	w2, 903
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2271:
	add	x0, x19, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1153]
	cmp	w1, w20
	bls	.L2270
	add	x20, x0, w20, sxtw
	ldr	x19, [x0, 1056]
	ldrb	w5, [x20, 1196]
	mov	w0, w5
	bl	nandc_cs
	ubfiz	x0, x5, 8, 8
	add	x19, x19, x0
	mov	w0, 128
	str	w0, [x19, 2056]
	and	w0, w24, 255
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w24, 8
	str	w0, [x19, 2052]
	lsr	w0, w24, 16
	str	w0, [x19, 2052]
	mov	w0, w24
	bl	nandc_set_seed
	adrp	x0, .LANCHOR2+17
	mov	x4, x23
	mov	x3, x22
	mov	w1, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR2+17]
	mov	w0, w5
	bl	nandc_xfer
	str	w21, [x19, 2056]
.L2270:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
	.size	flash_start_3d_mlc_page_prog, .-flash_start_3d_mlc_page_prog
	.align	2
	.global	sblk_mlc_dump_prog
	.type	sblk_mlc_dump_prog, %function
sblk_mlc_dump_prog:
	stp	x29, x30, [sp, -48]!
	mov	w2, 24
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x0
	str	x21, [sp, 32]
	ldr	w1, [x0, 40]
	adrp	x0, .LANCHOR0+1205
	ldrb	w19, [x0, #:lo12:.LANCHOR0+1205]
	mov	w0, 1
	sub	w2, w2, w19
	lsl	w19, w0, w19
	sub	w19, w19, #1
	lsl	w21, w0, w2
	sub	w21, w21, #1
	and	w21, w21, w1
	lsr	w1, w1, w2
	and	w19, w19, w1
	and	w19, w19, 255
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2275
	ldr	w2, [x20, 40]
	adrp	x0, .LC171
	mov	w1, w21
	add	x0, x0, :lo12:.LC171
	add	w3, w2, 1
	bl	printk
.L2275:
	ldr	x3, [x20, 8]
	mov	w2, w21
	ldr	x4, [x20, 24]
	mov	w1, w19
	mov	w0, 16
	bl	flash_start_3d_mlc_page_prog
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	ldr	x3, [x20, 8]
	add	w2, w21, 1
	ldr	x4, [x20, 24]
	mov	w1, w19
	mov	w0, 16
	bl	flash_start_3d_mlc_page_prog
	bl	nandc_iqr_wait_flash_ready
	bl	nandc_wait_flash_ready
	ldr	w0, [x20, 40]
	mov	w1, 64
	bl	flash_wait_device_ready
	mov	w2, w0
	bl	nandc_de_cs.constprop.35
	mov	w0, w2
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	sblk_mlc_dump_prog, .-sblk_mlc_dump_prog
	.align	2
	.global	flash_start_page_prog
	.type	flash_start_page_prog, %function
flash_start_page_prog:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	stp	x25, x26, [sp, 64]
	adrp	x26, .LANCHOR0
	add	x0, x26, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	stp	x23, x24, [sp, 48]
	mov	w24, w1
	str	x27, [sp, 80]
	mov	w19, 24
	mov	w20, 1
	mov	x22, x2
	ldrb	w1, [x0, 1205]
	mov	x23, x3
	ldrb	w0, [x0, 1153]
	sub	w25, w19, w1
	lsl	w20, w20, w1
	sub	w20, w20, #1
	lsr	w1, w24, w25
	and	w20, w20, w1
	and	w20, w20, 255
	cmp	w0, w20
	bhi	.L2281
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 376
	mov	w2, 956
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2281:
	add	x1, x26, :lo12:.LANCHOR0
	ldrb	w0, [x1, 1153]
	cmp	w0, w20
	bls	.L2280
	add	x0, x1, w20, sxtw
	mov	w19, 1
	lsl	w19, w19, w25
	sub	w19, w19, #1
	and	w19, w19, w24
	ldr	x25, [x1, 1056]
	ldrb	w27, [x0, 1196]
	bl	nandc_rdy_status
	cbnz	w0, .L2283
	ldrb	w0, [x1, 1153]
	cmp	w0, 1
	bne	.L2284
	bl	nandc_wait_flash_ready
.L2283:
	mov	w0, w27
	bl	hynix_reconfig_rr_para
	mov	w0, w27
	bl	nandc_cs
	tst	x24, 50331648
	bne	.L2285
	mov	w0, w19
	bl	slc_phy_page_address_calc
	mov	w19, w0
	ldrb	w0, [x26, #:lo12:.LANCHOR0]
	cbz	w0, .L2286
	mov	w0, w27
	bl	zftl_flash_enter_slc_mode
.L2286:
	ubfiz	x20, x27, 8, 8
	mov	w0, 128
	add	x20, x25, x20
	add	x26, x26, :lo12:.LANCHOR0
	str	w0, [x20, 2056]
	and	w0, w19, 255
	str	wzr, [x20, 2052]
	str	wzr, [x20, 2052]
	str	w0, [x20, 2052]
	lsr	w0, w19, 8
	str	w0, [x20, 2052]
	lsr	w0, w19, 16
	str	w0, [x20, 2052]
	ldrb	w0, [x26, 1204]
	cbz	w0, .L2287
	lsr	w0, w19, 24
	str	w0, [x20, 2052]
.L2287:
	mov	w0, w19
	bl	nandc_set_seed
	adrp	x0, .LANCHOR2+17
	mov	x4, x23
	mov	x3, x22
	mov	w1, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR2+17]
	mov	w0, w27
	bl	nandc_xfer
	str	w21, [x20, 2056]
	bl	nandc_de_cs.constprop.35
.L2280:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L2284:
	mov	w2, 64
	mov	w1, w19
	mov	w0, w20
	bl	flash_wait_device_ready_raw
	b	.L2283
.L2285:
	mov	w0, w27
	bl	zftl_flash_exit_slc_mode
	b	.L2286
	.size	flash_start_page_prog, .-flash_start_page_prog
	.align	2
	.type	queue_prog_cmd, %function
queue_prog_cmd:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	mov	x19, x0
	ldr	w1, [x0, 40]
	ldr	x3, [x0, 24]
	ldr	x2, [x0, 8]
	mov	w0, 16
	bl	flash_start_page_prog
	adrp	x0, .LANCHOR0
	add	x3, x0, :lo12:.LANCHOR0
	ldr	w4, [x19, 40]
	ldrb	w1, [x3, 3354]
	cmp	w1, 255
	beq	.L2296
	ldrb	w5, [x3, 1205]
	mov	w2, 1
	mov	w6, 24
	add	x3, x3, 1304
	sub	w6, w6, w5
	lsl	w2, w2, w5
	sub	w2, w2, #1
	and	w2, w2, 65535
	asr	w4, w4, w6
	and	w4, w4, w2
.L2298:
	add	x7, x3, x1, lsl 6
	ldr	w5, [x7, 40]
	lsr	w5, w5, w6
	and	w5, w2, w5
	cmp	w4, w5
	bne	.L2297
	ldrb	w5, [x7, 58]
	cmp	w5, 7
	bne	.L2297
	mov	w1, 3
	strb	w1, [x7, 58]
.L2296:
	mov	w1, 3
	strb	w1, [x19, 58]
	mov	w1, 1
	strb	w1, [x19, 59]
	mov	w1, -1
	strb	w1, [x19]
	add	x0, x0, :lo12:.LANCHOR0
	mov	x1, x19
	add	x0, x0, 3354
	bl	buf_add_tail
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L2297:
	lsl	x1, x1, 6
	ldrb	w1, [x3, x1]
	cmp	w1, 255
	bne	.L2298
	b	.L2296
	.size	queue_prog_cmd, .-queue_prog_cmd
	.align	2
	.global	flash_complete_plane_page_read
	.type	flash_complete_plane_page_read, %function
flash_complete_plane_page_read:
	stp	x29, x30, [sp, -64]!
	mov	w4, 24
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR0
	stp	x23, x24, [sp, 48]
	mov	w24, w0
	add	x0, x22, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	mov	x20, x1
	mov	w19, 1
	mov	x21, x2
	ldrb	w1, [x0, 1205]
	ldrb	w0, [x0, 1153]
	sub	w23, w4, w1
	lsl	w19, w19, w1
	sub	w19, w19, #1
	lsr	w1, w24, w23
	and	w19, w19, w1
	and	w19, w19, 255
	cmp	w0, w19
	bhi	.L2305
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 400
	mov	w2, 1070
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2305:
	add	x2, x22, :lo12:.LANCHOR0
	ldrb	w0, [x2, 1153]
	cmp	w0, w19
	bls	.L2316
	add	x19, x2, w19, sxtw
	mov	w4, 1
	lsl	w4, w4, w23
	ldr	x7, [x2, 1056]
	sub	w4, w4, #1
	ldrb	w9, [x19, 1196]
	and	w4, w4, w24
	ubfx	x24, x24, 24, 2
	mov	w0, w9
	bl	nandc_cs
	cbnz	w24, .L2307
	mov	w0, w4
	bl	slc_phy_page_address_calc
	mov	w4, w0
.L2307:
	add	x8, x22, :lo12:.LANCHOR0
	and	x1, x9, 255
	and	w6, w4, 255
	lsr	w5, w4, 8
	lsr	w3, w4, 16
	ldrb	w0, [x8, 1176]
	ldrb	w2, [x8, 1204]
	cmp	w0, 1
	bne	.L2308
	add	x1, x7, x1, lsl 8
	mov	w0, 6
.L2334:
	str	w0, [x1, 2056]
	str	wzr, [x1, 2052]
	str	wzr, [x1, 2052]
	str	w6, [x1, 2052]
	str	w5, [x1, 2052]
	str	w3, [x1, 2052]
	cbz	w2, .L2330
	lsr	w0, w4, 24
	str	w0, [x1, 2052]
.L2330:
	add	x22, x22, :lo12:.LANCHOR0
	mov	w0, 224
	str	w0, [x1, 2056]
	ldr	x0, [x22, 1144]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L2314
	cbz	w24, .L2314
	ldrb	w0, [x22, 1212]
	cbnz	w0, .L2314
	ldrb	w0, [x22, 1213]
	cbnz	w0, .L2314
	add	w4, w4, w4, lsl 1
	sub	w0, w24, #1
	add	w0, w4, w0
.L2331:
	bl	nandc_set_seed
	adrp	x0, .LANCHOR2+17
	mov	x4, x21
	mov	x3, x20
	mov	w1, 0
	ldrb	w2, [x0, #:lo12:.LANCHOR2+17]
	mov	w0, w9
	bl	nandc_xfer
	mov	w2, w0
	bl	nandc_de_cs.constprop.35
	mov	w0, w2
.L2304:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L2308:
	ldr	x0, [x8, 1144]
	add	x1, x7, x1, lsl 8
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L2311
	mov	w0, 5
	b	.L2334
.L2311:
	str	wzr, [x1, 2056]
	str	wzr, [x1, 2052]
	str	wzr, [x1, 2052]
	str	w6, [x1, 2052]
	str	w5, [x1, 2052]
	str	w3, [x1, 2052]
	cbz	w2, .L2313
	lsr	w0, w4, 24
	str	w0, [x1, 2052]
.L2313:
	mov	w0, 5
	str	w0, [x1, 2056]
	str	wzr, [x1, 2052]
	str	wzr, [x1, 2052]
	b	.L2330
.L2314:
	mov	w0, w4
	b	.L2331
.L2316:
	mov	w0, -1
	b	.L2304
	.size	flash_complete_plane_page_read, .-flash_complete_plane_page_read
	.align	2
	.global	flash_complete_page_read
	.type	flash_complete_page_read, %function
flash_complete_page_read:
	stp	x29, x30, [sp, -112]!
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	mov	x23, x2
	adrp	x24, .LANCHOR0
	add	x2, x24, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	mov	w21, w0
	stp	x19, x20, [sp, 16]
	mov	w0, 1
	stp	x25, x26, [sp, 64]
	mov	x22, x1
	stp	x27, x28, [sp, 80]
	mov	w1, 24
	ubfx	x25, x21, 24, 2
	ldrb	w20, [x2, 1205]
	sub	w1, w1, w20
	lsl	w20, w0, w20
	sub	w20, w20, #1
	lsl	w19, w0, w1
	ldrb	w0, [x2, 1153]
	lsr	w1, w21, w1
	and	w20, w20, w1
	sub	w19, w19, #1
	and	w20, w20, 255
	and	w19, w19, w21
	cmp	w0, w20
	bhi	.L2336
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 432
	mov	w2, 1232
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2336:
	add	x0, x24, :lo12:.LANCHOR0
	add	x20, x0, w20, sxtw
	ldr	x4, [x0, 1056]
	ldrb	w26, [x20, 1196]
	mov	w0, w26
	bl	nandc_cs
	cbnz	w25, .L2337
	mov	w0, w19
	bl	slc_phy_page_address_calc
	mov	w19, w0
.L2337:
	adrp	x20, .LANCHOR2
	add	x0, x20, :lo12:.LANCHOR2
	ldrb	w0, [x0, 20]
	cmp	w0, 3
	bne	.L2338
	ubfiz	x0, x26, 8, 8
	mov	w1, 5
	add	x0, x4, x0
	str	w1, [x0, 2056]
	and	w1, w19, 255
	str	wzr, [x0, 2052]
	str	wzr, [x0, 2052]
	str	w1, [x0, 2052]
	lsr	w1, w19, 8
	str	w1, [x0, 2052]
	lsr	w1, w19, 16
	str	w1, [x0, 2052]
	mov	w1, 224
	str	w1, [x0, 2056]
.L2338:
	add	x0, x24, :lo12:.LANCHOR0
	ldr	x1, [x0, 1144]
	ldrb	w1, [x1, 12]
	cmp	w1, 3
	bne	.L2339
	cbz	w25, .L2339
	ldrb	w1, [x0, 1212]
	cbnz	w1, .L2339
	ldrb	w0, [x0, 1213]
	cbnz	w0, .L2339
	sub	w0, w25, #1
	add	w1, w19, w19, lsl 1
	add	w0, w0, w1
.L2366:
	add	x27, x20, :lo12:.LANCHOR2
	bl	nandc_set_seed
	mov	x4, x23
	mov	x3, x22
	mov	w1, 0
	mov	w0, w26
	ldrb	w2, [x27, 17]
	add	x27, x27, 8
	bl	nandc_xfer
	cmn	w0, #1
	bne	.L2341
	add	x28, x24, :lo12:.LANCHOR0
	ldrb	w5, [x28, 1252]
	cbz	w5, .L2342
	ldrb	w4, [x27, 9]
	mov	x3, x23
	str	w5, [x29, 108]
	mov	x2, x22
	strb	wzr, [x28, 1252]
	orr	w1, w19, w25, lsl 24
	mov	w0, w26
	bl	flash_read_page
	ldr	w5, [x29, 108]
	strb	w5, [x28, 1252]
	cbnz	w25, .L2343
.L2348:
	ldrb	w2, [x24, #:lo12:.LANCHOR0]
	add	x1, x24, :lo12:.LANCHOR0
	cbz	w2, .L2343
	ldrb	w1, [x1, 1249]
	add	w1, w1, w1, lsl 1
	cmp	w0, w1, lsr 2
	blt	.L2343
	add	x20, x20, :lo12:.LANCHOR2
	ldrb	w1, [x20, 27]
	sub	w1, w1, #4
	and	w1, w1, 255
	cmp	w1, 4
	mov	w1, 256
	csel	w0, w0, w1, hi
.L2335:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L2339:
	mov	w0, w19
	b	.L2366
.L2343:
	cmn	w0, #1
	bne	.L2335
.L2349:
	adrp	x0, .LANCHOR5+336
	ldr	x5, [x0, #:lo12:.LANCHOR5+336]
	cbnz	x5, .L2345
.L2347:
	add	x24, x24, :lo12:.LANCHOR0
	mov	w3, -1
	mov	w2, w21
	mov	w1, 0
	adrp	x0, .LC172
	add	x0, x0, :lo12:.LC172
	ldrb	w4, [x24, 1252]
	bl	printk
	ldrb	w0, [x24, 1192]
	cbnz	w0, .L2346
	mov	w0, -1
	b	.L2335
.L2345:
	add	x0, x20, :lo12:.LANCHOR2
	mov	x3, x23
	mov	x2, x22
	orr	w1, w19, w25, lsl 24
	ldrb	w4, [x0, 17]
	mov	w0, w26
	blr	x5
	cmn	w0, #1
	bne	.L2335
	b	.L2347
.L2346:
	add	x20, x20, :lo12:.LANCHOR2
	mov	x3, x23
	mov	x2, x22
	orr	w1, w19, w25, lsl 24
	mov	w0, w26
	ldrb	w4, [x20, 17]
	bl	flash_ddr_tuning_read
	b	.L2335
.L2342:
	cbz	w25, .L2348
	b	.L2349
.L2341:
	cbnz	w25, .L2335
	b	.L2348
	.size	flash_complete_page_read, .-flash_complete_page_read
	.align	2
	.type	queue_wait_first_req_completed, %function
queue_wait_first_req_completed:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x1, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	str	x27, [sp, 80]
	ldrb	w0, [x1, 3354]
	cmp	w0, 255
	bne	.L2368
.L2401:
	mov	w21, 0
	b	.L2367
.L2368:
	add	x1, x1, 1304
	sxtw	x20, w0
	add	x1, x1, x20, lsl 6
	ldrb	w2, [x1, 58]
	ldr	w21, [x1, 40]
	sub	w3, w2, #1
	cmp	w3, 10
	bhi	.L2401
	adrp	x1, .L2371
	add	x1, x1, :lo12:.L2371
	ldrh	w1, [x1,w3,uxtw #1]
	adr	x3, .Lrtx2371
	add	x1, x3, w1, sxth #2
	br	x1
.Lrtx2371:
	.section	.rodata
	.align	0
	.align	2
.L2371:
	.2byte	(.L2370 - .Lrtx2371) / 4
	.2byte	(.L2372 - .Lrtx2371) / 4
	.2byte	(.L2373 - .Lrtx2371) / 4
	.2byte	(.L2373 - .Lrtx2371) / 4
	.2byte	(.L2373 - .Lrtx2371) / 4
	.2byte	(.L2373 - .Lrtx2371) / 4
	.2byte	(.L2374 - .Lrtx2371) / 4
	.2byte	(.L2375 - .Lrtx2371) / 4
	.2byte	(.L2376 - .Lrtx2371) / 4
	.2byte	(.L2373 - .Lrtx2371) / 4
	.2byte	(.L2376 - .Lrtx2371) / 4
	.text
.L2370:
	bl	nandc_wait_flash_ready
	add	x0, x19, :lo12:.LANCHOR0
	add	x0, x0, 1304
	add	x0, x0, x20, lsl 6
	ldp	x1, x2, [x0, 8]
	cbz	x2, .L2377
	ldrb	w3, [x0, 56]
	adrp	x0, .LANCHOR3+1946
	ldrb	w0, [x0, #:lo12:.LANCHOR3+1946]
	cmp	w3, w0
	csel	x1, x1, x2, ne
.L2377:
	add	x19, x19, :lo12:.LANCHOR0
	mov	w0, w21
	add	x19, x19, 1304
	add	x20, x19, x20, lsl 6
	ldr	x2, [x20, 24]
	bl	flash_complete_page_read
	str	w0, [x20, 52]
	mov	w0, 13
	strb	w0, [x20, 58]
	ldrb	w0, [x20, 2]
	orr	w0, w0, 8
	strb	w0, [x20, 2]
	b	.L2401
.L2372:
	bl	nandc_wait_flash_ready
	add	x0, x19, :lo12:.LANCHOR0
	lsl	x2, x20, 6
	add	x0, x0, 1304
	add	x1, x0, x2
	ldrb	w21, [x0, x2]
	add	x0, x0, x21, lsl 6
	ldr	x23, [x0, 8]
	ldp	x26, x0, [x1, 8]
	cbz	x0, .L2378
	ldrb	w2, [x1, 56]
	adrp	x1, .LANCHOR3+1946
	ldrb	w1, [x1, #:lo12:.LANCHOR3+1946]
	cmp	w2, w1
	csel	x26, x26, x0, ne
.L2378:
	add	x0, x19, :lo12:.LANCHOR0
	add	x0, x0, 1304
	add	x0, x0, x21, lsl 6
	ldr	x1, [x0, 16]
	cbz	x1, .L2379
	ldrb	w2, [x0, 56]
	adrp	x0, .LANCHOR3+1946
	ldrb	w0, [x0, #:lo12:.LANCHOR3+1946]
	cmp	w2, w0
	csel	x23, x23, x1, ne
.L2379:
	add	x24, x19, :lo12:.LANCHOR0
	mov	x1, x26
	add	x24, x24, 1304
	add	x27, x24, x20, lsl 6
	add	x24, x24, x21, lsl 6
	ldr	x2, [x27, 24]
	ldr	w0, [x27, 40]
	bl	flash_complete_plane_page_read
	mov	w22, w0
	ldr	x2, [x24, 24]
	mov	x1, x23
	ldr	w0, [x24, 40]
	bl	flash_complete_plane_page_read
	mov	w25, w0
	cmn	w22, #1
	beq	.L2380
	ldr	w0, [x27, 36]
	cmn	w0, #1
	beq	.L2381
	ldr	x1, [x27, 24]
	ldr	w1, [x1, 4]
	cmp	w0, w1
	beq	.L2381
.L2380:
	add	x0, x19, :lo12:.LANCHOR0
	mov	w5, 1
	add	x24, x0, 1304
	add	x24, x24, x20, lsl 6
	ldrb	w2, [x0, 1205]
	mov	w0, 24
	sub	w0, w0, w2
	ldr	x3, [x24, 24]
	lsl	w5, w5, w2
	adrp	x2, .LANCHOR3+1946
	sub	w5, w5, #1
	ldr	w1, [x24, 40]
	ldrb	w4, [x2, #:lo12:.LANCHOR3+1946]
	mov	x2, x26
	lsl	w6, w5, w0
	lsr	w0, w1, w0
	bic	w1, w1, w6
	and	w0, w0, w5
	bl	flash_read_page_en
	mov	w22, w0
	ldr	w2, [x24, 36]
	cmn	w2, #1
	beq	.L2382
	ldr	x0, [x24, 24]
	ldr	w4, [x0, 4]
	cmp	w2, w4
	beq	.L2382
	adrp	x1, .LANCHOR2
	ldr	w1, [x1, #:lo12:.LANCHOR2]
	tbz	x1, 6, .L2382
	ldr	w3, [x0]
	adrp	x0, .LC173
	ldr	w1, [x24, 40]
	add	x0, x0, :lo12:.LC173
	bl	printk
.L2382:
	add	x0, x19, :lo12:.LANCHOR0
	add	x0, x0, 1304
	add	x0, x0, x20, lsl 6
	ldr	w1, [x0, 36]
	cmn	w1, #1
	beq	.L2381
	ldr	x0, [x0, 24]
	ldr	w0, [x0, 4]
	cmp	w1, w0
	beq	.L2381
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 464
	mov	w2, 431
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2381:
	add	x0, x19, :lo12:.LANCHOR0
	mov	w1, 13
	add	x0, x0, 1304
	cmn	w25, #1
	add	x20, x0, x20, lsl 6
	strb	w1, [x20, 58]
	ldrb	w1, [x20, 2]
	str	w22, [x20, 52]
	orr	w1, w1, 8
	strb	w1, [x20, 2]
	beq	.L2383
	add	x0, x0, x21, lsl 6
	ldr	w1, [x0, 36]
	cmn	w1, #1
	beq	.L2385
	ldr	x0, [x0, 24]
	ldr	w0, [x0, 4]
	cmp	w1, w0
	beq	.L2385
.L2383:
	add	x0, x19, :lo12:.LANCHOR0
	mov	w5, 1
	add	x20, x0, 1304
	add	x20, x20, x21, lsl 6
	ldrb	w2, [x0, 1205]
	mov	w0, 24
	sub	w0, w0, w2
	ldr	x3, [x20, 24]
	lsl	w5, w5, w2
	adrp	x2, .LANCHOR3+1946
	sub	w5, w5, #1
	ldr	w1, [x20, 40]
	ldrb	w4, [x2, #:lo12:.LANCHOR3+1946]
	mov	x2, x23
	lsl	w6, w5, w0
	lsr	w0, w1, w0
	bic	w1, w1, w6
	and	w0, w0, w5
	bl	flash_read_page_en
	ldr	w2, [x20, 36]
	cmn	w2, #1
	beq	.L2387
	ldr	x0, [x20, 24]
	ldr	w4, [x0, 4]
	cmp	w2, w4
	beq	.L2387
	adrp	x1, .LANCHOR2
	ldr	w1, [x1, #:lo12:.LANCHOR2]
	tbz	x1, 6, .L2387
	ldr	w3, [x0]
	adrp	x0, .LC173
	ldr	w1, [x20, 40]
	add	x0, x0, :lo12:.LC173
	bl	printk
.L2387:
	add	x0, x19, :lo12:.LANCHOR0
	add	x0, x0, 1304
	add	x0, x0, x21, lsl 6
	ldr	w1, [x0, 36]
	cmn	w1, #1
	beq	.L2385
	ldr	x0, [x0, 24]
	ldr	w0, [x0, 4]
	cmp	w1, w0
	beq	.L2385
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 464
	mov	w2, 450
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2385:
	add	x19, x19, :lo12:.LANCHOR0
	mov	w0, 13
	add	x19, x19, 1304
	add	x21, x19, x21, lsl 6
	strb	w0, [x21, 58]
	ldrb	w0, [x21, 2]
	str	w22, [x21, 52]
	orr	w0, w0, 8
	strb	w0, [x21, 2]
	b	.L2401
.L2373:
	bl	nandc_iqr_wait_flash_ready
	mov	w0, w21
	mov	w1, 64
	bl	flash_wait_device_ready
	mov	w21, w0
	tbz	x21, 6, .L2401
	mov	w0, 5
	tst	w21, w0
	beq	.L2389
	add	x19, x19, :lo12:.LANCHOR0
	mov	w0, 12
	add	x19, x19, 1304
	mov	w4, 12
	add	x20, x19, x20, lsl 6
	mov	w2, w21
	ldrb	w1, [x20, 1]
	ldr	w3, [x20, 40]
	strb	w0, [x20, 58]
	adrp	x0, .LC174
	add	x0, x0, :lo12:.LC174
	bl	printk
.L2459:
	mov	w0, -1
	str	w0, [x20, 52]
	b	.L2367
.L2389:
	add	x0, x19, :lo12:.LANCHOR0
	mov	w1, 13
	add	x21, x0, 1304
	add	x21, x21, x20, lsl 6
	strb	w1, [x21, 58]
	ldr	x1, [x0, 3384]
	str	wzr, [x21, 52]
	ldr	w2, [x1, 156]
	mov	w1, 20041
	movk	w1, 0x444b, lsl 16
	cmp	w2, w1
	bne	.L2401
	ldrh	w1, [x21, 50]
	cbnz	w1, .L2401
	ldrb	w2, [x0, 1205]
	mov	w5, 1
	adrp	x22, .LANCHOR5
	add	x22, x22, :lo12:.LANCHOR5
	mov	w0, 24
	sub	w0, w0, w2
	lsl	w5, w5, w2
	adrp	x2, .LANCHOR3+1946
	sub	w5, w5, #1
	ldr	w1, [x21, 40]
	ldrb	w4, [x2, #:lo12:.LANCHOR3+1946]
	ldp	x3, x2, [x22, 344]
	lsl	w6, w5, w0
	lsr	w0, w1, w0
	bic	w1, w1, w6
	and	w0, w0, w5
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2390
	ldr	x2, [x21, 24]
	ldr	x1, [x22, 344]
	ldr	w2, [x2]
	ldr	w1, [x1]
	cmp	w2, w1
	beq	.L2401
.L2390:
	add	x19, x19, :lo12:.LANCHOR0
	mov	w3, w0
	add	x1, x19, 1304
	adrp	x0, .LC175
	add	x20, x1, x20, lsl 6
	add	x0, x0, :lo12:.LC175
	ldrb	w4, [x19, 1252]
	ldrb	w1, [x20, 1]
	ldr	w2, [x20, 40]
	bl	printk
	mov	w0, -1
	str	w0, [x20, 52]
	b	.L2401
.L2376:
	cmp	w2, 11
	mov	w1, 3
	mov	w5, 10
	csel	w5, w5, w1, eq
	add	x1, x19, :lo12:.LANCHOR0
	mov	w4, 24
	mov	w2, 1
	add	x22, x1, 1304
	ubfiz	x0, x0, 6, 8
	mov	x24, x1
	ldrb	w3, [x1, 1205]
	add	x0, x22, x0
	sub	w4, w4, w3
	lsl	w2, w2, w3
	sub	w2, w2, #1
	lsr	w3, w21, w4
	and	w3, w3, w2
	and	w3, w3, 65535
.L2392:
	ldrb	w1, [x0]
	cmp	w1, 255
	bne	.L2399
	mov	w21, -1
	b	.L2367
.L2399:
	sxtw	x23, w1
	ubfiz	x0, x1, 6, 8
	add	x1, x22, x23, lsl 6
	add	x0, x22, x0
	ldrb	w6, [x1, 58]
	cmp	w6, w5
	bne	.L2392
	ldr	w1, [x1, 40]
	lsr	w1, w1, w4
	and	w1, w1, w2
	cmp	w3, w1
	bne	.L2392
	bl	nandc_iqr_wait_flash_ready
	mov	w0, w21
	mov	w1, 64
	bl	flash_wait_device_ready
	mov	w21, w0
	tbnz	x21, 6, .L2394
.L2458:
	mov	w21, 0
	b	.L2395
.L2394:
	tst	x21, 15
	beq	.L2396
	add	x22, x22, x20, lsl 6
	mov	w2, w0
	mov	w4, 12
	adrp	x0, .LC176
	add	x0, x0, :lo12:.LC176
	ldrb	w1, [x22, 1]
	ldr	w3, [x22, 40]
	bl	printk
	mov	w0, 12
	strb	w0, [x22, 58]
	mov	w0, -1
	str	w0, [x22, 52]
.L2395:
	add	x1, x19, :lo12:.LANCHOR0
	add	x1, x1, 1304
	add	x20, x1, x20, lsl 6
	add	x1, x1, x23, lsl 6
	ldrb	w0, [x20, 58]
	strb	w0, [x1, 58]
	ldr	w0, [x20, 52]
	str	w0, [x1, 52]
.L2367:
	mov	w0, w21
	ldr	x27, [sp, 80]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
.L2396:
	add	x21, x22, x20, lsl 6
	mov	w0, 13
	strb	w0, [x21, 58]
	ldr	x0, [x24, 3384]
	str	wzr, [x21, 52]
	ldr	w1, [x0, 156]
	mov	w0, 20041
	movk	w0, 0x444b, lsl 16
	cmp	w1, w0
	bne	.L2458
	ldrh	w0, [x21, 50]
	cbnz	w0, .L2458
	ldrb	w2, [x24, 1205]
	mov	w5, 1
	adrp	x22, .LANCHOR5
	add	x22, x22, :lo12:.LANCHOR5
	mov	w0, 24
	sub	w0, w0, w2
	lsl	w5, w5, w2
	adrp	x2, .LANCHOR3+1946
	sub	w5, w5, #1
	ldr	w1, [x21, 40]
	ldrb	w4, [x2, #:lo12:.LANCHOR3+1946]
	ldp	x3, x2, [x22, 344]
	lsl	w6, w5, w0
	lsr	w0, w1, w0
	bic	w1, w1, w6
	and	w0, w0, w5
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2398
	ldr	x2, [x21, 24]
	ldr	x1, [x22, 344]
	ldr	w2, [x2]
	ldr	w1, [x1]
	cmp	w2, w1
	beq	.L2458
.L2398:
	add	x1, x19, :lo12:.LANCHOR0
	mov	w3, w0
	add	x21, x1, 1304
	adrp	x0, .LC177
	add	x21, x21, x20, lsl 6
	add	x0, x0, :lo12:.LC177
	ldrb	w4, [x1, 1252]
	ldr	w2, [x21, 40]
	ldrb	w1, [x21, 1]
	bl	printk
	mov	w0, -1
	str	w0, [x21, 52]
	b	.L2458
.L2374:
	mov	w0, w21
	mov	w1, 32
	bl	flash_wait_device_ready
	mov	w21, w0
	tbz	x21, 5, .L2401
	add	x19, x19, :lo12:.LANCHOR0
	tst	x21, 15
	add	x19, x19, 1304
	add	x20, x19, x20, lsl 6
	beq	.L2400
	mov	w0, 12
	strb	w0, [x20, 58]
	b	.L2459
.L2400:
	mov	w0, 13
	str	wzr, [x20, 52]
	strb	w0, [x20, 58]
	b	.L2401
.L2375:
	mov	w1, 64
	mov	w0, w21
	bl	flash_wait_device_ready
	tbz	x0, 6, .L2401
	add	x19, x19, :lo12:.LANCHOR0
	add	x19, x19, 1304
	add	x19, x19, x20, lsl 6
	str	w0, [x19, 52]
	mov	w0, 7
	strb	w0, [x19, 58]
	b	.L2401
	.size	queue_wait_first_req_completed, .-queue_wait_first_req_completed
	.align	2
	.global	sblk_prog_page
	.type	sblk_prog_page, %function
sblk_prog_page:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	stp	x21, x22, [sp, 32]
	and	w20, w1, 255
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	ldrh	w0, [x0, 50]
	cbz	w0, .L2461
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L2461
	ldr	w1, [x19, 40]
	adrp	x0, .LC178
	mov	w2, w20
	add	x0, x0, :lo12:.LC178
	bl	printk
.L2461:
	adrp	x24, .LANCHOR0
	add	x25, x24, :lo12:.LANCHOR0
	add	x27, x25, 1304
	mov	w21, 0
	mov	w23, 1
.L2462:
	cbnz	w20, .L2473
.L2489:
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L2473:
	ldrb	w26, [x19]
	ldr	w22, [x19, 40]
.L2463:
	mov	w1, 1
	mov	w0, w22
	bl	queue_lun_state
	cbnz	w0, .L2464
	cmp	w20, 1
	beq	.L2465
	add	x0, x24, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1250]
	cbz	w1, .L2465
	ldrb	w1, [x0, 1213]
	cbz	w1, .L2466
.L2465:
	mov	x0, x19
	bl	queue_prog_cmd
.L2467:
	subs	w20, w20, #1
	beq	.L2489
	add	x19, x24, :lo12:.LANCHOR0
	ubfiz	x26, x26, 6, 8
	add	x19, x19, 1304
	add	x19, x19, x26
	b	.L2462
.L2464:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2463
.L2466:
	ldrb	w0, [x0, 1205]
	mov	w28, 24
	sub	w28, w28, w0
	lsl	w0, w23, w0
	sub	w0, w0, #1
	lsr	w28, w22, w28
	and	w28, w28, w0
	ldrb	w0, [x19]
	and	w28, w28, 65535
	cmp	w0, 255
	bne	.L2468
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 496
	mov	w2, 697
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2468:
	ldrb	w0, [x19]
	mov	w1, 24
	add	x0, x27, x0, lsl 6
	ldr	w4, [x0, 40]
	ldrb	w0, [x25, 1205]
	sub	w1, w1, w0
	lsl	w0, w23, w0
	sub	w0, w0, #1
	lsr	w2, w4, w1
	and	w0, w0, w2
	cmp	w28, w0, uxth
	bne	.L2469
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	ldrh	w2, [x0, 1304]
	ldrb	w3, [x0, 1306]
	sub	w0, w1, w2
	sub	w3, w3, #1
	lsl	w1, w23, w2
	lsl	w0, w23, w0
	sub	w0, w0, #1
	and	w0, w0, w3
	sub	w1, w1, #1
	and	w0, w0, 65535
	lsr	w5, w22, w2
	and	w1, w1, 65535
	and	w5, w0, w5
	lsr	w2, w4, w2
	and	w0, w0, w2
	and	w22, w1, w22
	cmp	w5, w0
	and	w1, w1, w4
	ccmp	w22, w1, 0, ne
	bne	.L2469
	cmp	w21, w3
	beq	.L2469
	ldr	w1, [x19, 40]
	mov	w0, 17
	ldr	x2, [x19, 8]
	add	w21, w21, 1
	ldr	x3, [x19, 24]
	bl	flash_start_page_prog
	strb	w23, [x19, 59]
	mov	w0, 9
	strb	w0, [x19, 58]
	mov	w0, -1
	strb	w0, [x19]
	mov	x1, x19
	add	x0, x25, 3354
	bl	buf_add_tail
	b	.L2467
.L2469:
	mov	x0, x19
	mov	w21, 0
	bl	queue_prog_cmd
	b	.L2467
	.size	sblk_prog_page, .-sblk_prog_page
	.align	2
	.global	sblk_wait_write_queue_completed
	.type	sblk_wait_write_queue_completed, %function
sblk_wait_write_queue_completed:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
.L2492:
	ldrb	w0, [x19, 3354]
	cmp	w0, 255
	bne	.L2493
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L2493:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2492
	.size	sblk_wait_write_queue_completed, .-sblk_wait_write_queue_completed
	.align	2
	.global	ftl_flush
	.type	ftl_flush, %function
ftl_flush:
	stp	x29, x30, [sp, -32]!
	adrp	x2, .LANCHOR0
	add	x0, x2, :lo12:.LANCHOR0
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x2
	adrp	x20, .LANCHOR5
	ldrb	w1, [x0, 3380]
	cbz	w1, .L2496
	add	x2, x20, :lo12:.LANCHOR5
	add	x0, x0, 1304
	ldrb	w2, [x2, 360]
	add	x0, x0, x2, lsl 6
	bl	sblk_prog_page
.L2496:
	add	x2, x19, :lo12:.LANCHOR0
	add	x20, x20, :lo12:.LANCHOR5
	mov	w0, -1
	strb	wzr, [x2, 3380]
	strb	w0, [x20, 360]
	bl	sblk_wait_write_queue_completed
	bl	ftl_write_completed
	mov	w0, -1
	bl	ftl_vpn_decrement
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	ftl_flush, .-ftl_flush
	.align	2
	.global	zftl_cache_flush
	.type	zftl_cache_flush, %function
zftl_cache_flush:
	adrp	x0, .LANCHOR0+3380
	ldrb	w0, [x0, #:lo12:.LANCHOR0+3380]
	cbz	w0, .L2506
	stp	x29, x30, [sp, -16]!
	add	x29, sp, 0
	bl	timer_get_time
	adrp	x1, .LANCHOR5+364
	ldr	w1, [x1, #:lo12:.LANCHOR5+364]
	add	w1, w1, 100
	cmp	w0, w1
	bls	.L2501
	bl	ftl_flush
.L2501:
	ldp	x29, x30, [sp], 16
	ret
.L2506:
	ret
	.size	zftl_cache_flush, .-zftl_cache_flush
	.align	2
	.global	ftl_read_page
	.type	ftl_read_page, %function
ftl_read_page:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w0, 255
	stp	x21, x22, [sp, 32]
	mov	w20, w1
	mov	x21, x2
	mov	x22, x3
	str	x23, [sp, 48]
	mov	w23, w4
	bl	sblk_wait_write_queue_completed
	mov	w4, w23
	mov	x3, x22
	mov	x2, x21
	mov	w1, w20
	mov	w0, w19
	bl	flash_read_page_en
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldr	x23, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
	.size	ftl_read_page, .-ftl_read_page
	.align	2
	.global	ftl_read_ppa_page
	.type	ftl_read_ppa_page, %function
ftl_read_ppa_page:
	stp	x29, x30, [sp, -64]!
	mov	w5, 1
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w20, w0
	adrp	x0, .LANCHOR0+1205
	mov	w19, 24
	stp	x21, x22, [sp, 32]
	mov	x21, x1
	ldrb	w0, [x0, #:lo12:.LANCHOR0+1205]
	mov	x22, x2
	str	x23, [sp, 48]
	mov	w23, w3
	sub	w19, w19, w0
	lsl	w5, w5, w0
	sub	w5, w5, #1
	lsr	w19, w20, w19
	and	w19, w19, w5
	and	w19, w19, 255
	bl	sblk_wait_write_queue_completed
	mov	w4, w23
	mov	x3, x22
	mov	x2, x21
	mov	w1, w20
	mov	w0, w19
	bl	flash_read_page_en
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldr	x23, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
	.size	ftl_read_ppa_page, .-ftl_read_ppa_page
	.align	2
	.global	sblk_read_page
	.type	sblk_read_page, %function
sblk_read_page:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w1, 255
	stp	x25, x26, [sp, 64]
	adrp	x25, .LANCHOR0
	add	x26, x25, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	stp	x23, x24, [sp, 48]
	mov	x22, x0
	mov	x19, x0
	mov	w20, w21
	add	x23, x26, 1304
	stp	x27, x28, [sp, 80]
	adrp	x28, .LANCHOR5
.L2514:
	cbnz	w20, .L2524
.L2537:
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	add	x19, x19, 1304
.L2525:
	cbnz	w21, .L2527
	ldp	x19, x20, [sp, 16]
	mov	w0, 0
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L2524:
	ldrb	w24, [x19]
	ldr	w27, [x19, 40]
.L2515:
	mov	w1, 0
	mov	w0, w27
	bl	queue_lun_state
	cbnz	w0, .L2516
	cmp	w20, 1
	beq	.L2521
	add	x0, x28, :lo12:.LANCHOR5
	ldrb	w0, [x0, 368]
	cbnz	w0, .L2518
.L2521:
	mov	x0, x19
	bl	queue_read_cmd
	b	.L2519
.L2516:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2515
.L2518:
	add	x0, x25, :lo12:.LANCHOR0
	mov	w3, 24
	ldrb	w1, [x0, 1205]
	mov	w0, 1
	sub	w3, w3, w1
	lsl	w0, w0, w1
	sub	w0, w0, #1
	lsr	w3, w27, w3
	and	w3, w3, w0
	ldrb	w0, [x19]
	and	w3, w3, 65535
	cmp	w0, 255
	bne	.L2520
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 512
	mov	w2, 782
	str	w3, [x29, 124]
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	ldr	w3, [x29, 124]
.L2520:
	ldrb	w4, [x19]
	mov	w0, 24
	ldrb	w7, [x26, 1205]
	mov	w2, 1
	sbfiz	x5, x4, 6, 32
	sub	w0, w0, w7
	add	x6, x23, x5
	lsl	w2, w2, w7
	sub	w2, w2, #1
	ldr	w1, [x6, 40]
	lsr	w0, w1, w0
	and	w0, w0, w2
	cmp	w3, w0, uxth
	bne	.L2521
	adrp	x0, .LANCHOR3+1410
	ldrh	w0, [x0, #:lo12:.LANCHOR3+1410]
	add	w27, w0, w27
	cmp	w1, w27
	bne	.L2521
	ldr	w0, [x19, 40]
	mov	w27, -1
	ldrb	w24, [x23, x5]
	sub	w20, w20, #1
	stp	x6, x5, [x29, 104]
	str	w4, [x29, 120]
	bl	flash_start_plane_read
	strb	wzr, [x19, 59]
	mov	w2, 2
	strb	w27, [x19]
	strb	w2, [x19, 58]
	add	x0, x26, 3354
	mov	x1, x19
	str	w2, [x29, 124]
	mov	x19, x0
	bl	buf_add_tail
	ldp	x6, x5, [x29, 104]
	strb	wzr, [x6, 59]
	ldp	w4, w2, [x29, 120]
	strb	w2, [x6, 58]
	strb	w27, [x23, x5]
	mov	x0, x19
	ubfiz	x1, x4, 6, 8
	add	x1, x23, x1
	bl	buf_add_tail
.L2519:
	subs	w20, w20, #1
	beq	.L2537
	add	x19, x25, :lo12:.LANCHOR0
	ubfiz	x24, x24, 6, 8
	add	x19, x19, 1304
	add	x19, x19, x24
	b	.L2514
.L2527:
	ldrb	w0, [x22, 58]
	cmp	w0, 13
	bne	.L2526
	ldrb	w0, [x22]
	sub	w21, w21, #1
	cmp	w0, 255
	beq	.L2526
	ubfiz	x22, x0, 6, 8
	add	x22, x19, x22
.L2526:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2525
	.size	sblk_read_page, .-sblk_read_page
	.align	2
	.global	gc_check_data_one_wl
	.type	gc_check_data_one_wl, %function
gc_check_data_one_wl:
	sub	sp, sp, #128
	stp	x29, x30, [sp, 16]
	add	x29, sp, 16
	stp	x19, x20, [sp, 32]
	adrp	x19, .LANCHOR0
	add	x20, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 48]
	stp	x23, x24, [sp, 64]
	stp	x25, x26, [sp, 80]
	stp	x27, x28, [sp, 96]
	ldr	x0, [x20, 3424]
	ldr	x21, [x20, 1128]
	cbnz	x0, .L2540
	add	x20, x20, 3416
	mov	w0, 1
	bl	buf_alloc
	str	x0, [x20, 8]
.L2540:
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x22, [x0, 3424]
	cbnz	x22, .L2541
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 528
	mov	w2, 729
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2541:
	add	x27, x19, :lo12:.LANCHOR0
	adrp	x4, .LANCHOR3
	add	x23, x27, 3416
	mov	x20, x4
	mov	w25, 0
.L2542:
	add	x28, x21, 80
	ldrb	w0, [x28, 9]
	cmp	w25, w0
	bge	.L2553
	sxtw	x26, w25
	mov	w24, 1
	add	x26, x26, 8
	b	.L2554
.L2552:
	add	x1, x4, :lo12:.LANCHOR3
	ldrh	w0, [x28, x26, lsl 1]
	ldrh	w2, [x1, 1410]
	ldrb	w1, [x1, 1320]
	cmp	w1, 2
	mul	w2, w0, w2
	beq	.L2543
	ldrb	w0, [x27, 1212]
	cbz	w0, .L2544
.L2543:
	ldrh	w0, [x23, 16]
	sub	w3, w0, #1
	add	w0, w24, w2
	add	w0, w3, w0
	orr	w1, w0, w1, lsl 24
	str	w1, [x22, 40]
.L2545:
	str	x4, [x29, 104]
	mov	w1, 1
	mov	x0, x22
	bl	sblk_read_page
	ldr	w2, [x22, 52]
	adrp	x0, .LANCHOR5
	ldr	x4, [x29, 104]
	cmn	w2, #1
	beq	.L2548
	add	x5, x0, :lo12:.LANCHOR5
	ldrh	w1, [x23, 22]
	ldr	x3, [x22, 24]
	ldr	x6, [x5, 280]
	lsl	x1, x1, 2
	ldr	w7, [x6, x1]
	ldr	w6, [x3, 4]
	cmp	w7, w6
	bne	.L2548
	ldr	x5, [x5, 288]
	ldr	w5, [x5, x1]
	ldr	w1, [x3, 8]
	cmp	w5, w1
	beq	.L2549
.L2548:
	add	x0, x0, :lo12:.LANCHOR5
	ldrh	w1, [x23, 22]
	ldr	x3, [x0, 280]
	lsl	x1, x1, 2
	ldr	w3, [x3, x1]
	cmn	w3, #1
	beq	.L2549
	adrp	x4, .LANCHOR2
	ldr	w4, [x4, #:lo12:.LANCHOR2]
	tbz	x4, 10, .L2550
	ldr	x4, [x22, 24]
	ldr	x0, [x0, 288]
	ldr	w5, [x4, 12]
	str	w5, [sp]
	ldp	w5, w6, [x4]
	ldr	w7, [x4, 8]
	ldr	w4, [x0, x1]
	adrp	x0, .LC179
	ldr	w1, [x22, 40]
	add	x0, x0, :lo12:.LC179
	bl	printk
.L2550:
	add	x19, x19, :lo12:.LANCHOR0
	ldrh	w1, [x21, 80]
	ldr	x0, [x19, 1120]
	strh	wzr, [x0, x1, lsl 1]
	ldr	x1, [x19, 1128]
	ldr	w0, [x1, 556]
	add	w0, w0, 1
	str	w0, [x1, 556]
	ldr	x0, [x19, 3384]
	ldr	w1, [x0, 156]
	mov	w0, 20041
	movk	w0, 0x444b, lsl 16
	cmp	w1, w0
	bne	.L2557
	add	x20, x20, :lo12:.LANCHOR3
	ldrb	w0, [x20, 1950]
	cbnz	w0, .L2557
	ldrb	w0, [x20, 1322]
	cbnz	w0, .L2557
	ldr	w0, [x22, 40]
	bl	ftl_mask_bad_block
.L2557:
	mov	w0, -1
.L2539:
	ldp	x19, x20, [sp, 32]
	ldp	x21, x22, [sp, 48]
	ldp	x23, x24, [sp, 64]
	ldp	x25, x26, [sp, 80]
	ldp	x27, x28, [sp, 96]
	ldp	x29, x30, [sp, 16]
	add	sp, sp, 128
	ret
.L2544:
	cmp	w1, 3
	ldrh	w0, [x23, 16]
	bne	.L2546
	ldrb	w1, [x27, 1213]
	cbz	w1, .L2547
	add	w0, w0, w0, lsl 1
	sub	w1, w0, #1
	add	w0, w24, w2
	add	w0, w1, w0
	orr	w0, w0, 50331648
.L2572:
	str	w0, [x22, 40]
	b	.L2545
.L2547:
	add	w0, w0, w2
	orr	w0, w0, w24, lsl 24
	b	.L2572
.L2546:
	add	w0, w0, w2
	b	.L2572
.L2549:
	ldrh	w0, [x23, 22]
	add	w24, w24, 1
	add	w0, w0, 1
	strh	w0, [x23, 22]
.L2554:
	ldrh	w0, [x23, 20]
	cmp	w24, w0
	ble	.L2552
	add	w25, w25, 1
	b	.L2542
.L2553:
	add	x19, x19, :lo12:.LANCHOR0
	add	x19, x19, 3416
	ldrh	w0, [x19, 16]
	add	w1, w0, 1
	strh	w1, [x19, 16]
	adrp	x1, .LANCHOR3+1322
	ldrb	w1, [x1, #:lo12:.LANCHOR3+1322]
	cbz	w1, .L2558
	add	w0, w0, 2
	strh	w0, [x19, 16]
.L2558:
.L2551:
	mov	w0, 0
	b	.L2539
	.size	gc_check_data_one_wl, .-gc_check_data_one_wl
	.align	2
	.global	sblk_tlc_prog_one_page
	.type	sblk_tlc_prog_one_page, %function
sblk_tlc_prog_one_page:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	ldr	x0, [x0]
	ldr	w20, [x0, 40]
.L2574:
	mov	w1, 1
	mov	w0, w20
	bl	queue_lun_state
	cbnz	w0, .L2575
	mov	x0, x19
	mov	w1, 1
	bl	queue_tlc_prog_cmd
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L2575:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2574
	.size	sblk_tlc_prog_one_page, .-sblk_tlc_prog_one_page
	.align	2
	.global	sblk_xlc_prog_pages
	.type	sblk_xlc_prog_pages, %function
sblk_xlc_prog_pages:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x0
	stp	x21, x22, [sp, 32]
	mov	x22, x1
	stp	x25, x26, [sp, 64]
	mov	w25, w2
	stp	x23, x24, [sp, 48]
	ldr	x0, [x0]
	ldr	w19, [x0, 40]
.L2578:
	mov	w1, 1
	mov	w0, w19
	bl	queue_lun_state
	cbnz	w0, .L2579
	cmp	w25, 2
	bne	.L2580
	adrp	x23, .LANCHOR0
	add	x4, x23, :lo12:.LANCHOR0
	ldr	x5, [x22]
	ldrb	w0, [x4, 1250]
	cbz	w0, .L2581
	ldr	x0, [x20]
	mov	w26, 1
	ldrb	w1, [x4, 1205]
	mov	w3, 24
	ldr	w5, [x5, 40]
	sub	w3, w3, w1
	lsl	w19, w26, w1
	ldr	w2, [x0, 40]
	ldrb	w1, [x4, 1213]
	lsl	w21, w26, w3
	sub	w19, w19, #1
	sub	w21, w21, #1
	and	w24, w2, w21
	lsr	w2, w2, w3
	and	w19, w19, w2
	and	w21, w21, w5
	and	w19, w19, 255
	cbz	w1, .L2582
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	ldr	x0, [x20]
	mov	w4, w24
	mov	w3, w19
	mov	w1, w26
	mov	w2, 17
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x22]
	mov	w4, w21
	mov	w3, w19
	mov	w1, w26
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x20, 8]
	add	w4, w24, w26
	mov	w3, w19
	mov	w1, w25
	mov	w2, 17
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x22, 8]
	add	w4, w21, w26
	mov	w3, w19
	mov	w1, w25
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x20, 16]
	add	w4, w24, 2
	mov	w3, w19
	mov	w2, 17
	mov	w1, 3
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x22, 16]
	add	w4, w21, 2
	mov	w3, w19
	mov	w2, 16
	mov	w1, 3
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
.L2583:
	ldr	x1, [x20]
	mov	w0, 5
	strb	w0, [x1, 58]
	mov	w0, 1
	strb	w0, [x1, 59]
	mov	w0, -1
	strb	w0, [x1]
	add	x0, x23, :lo12:.LANCHOR0
	add	x0, x0, 3354
	bl	buf_add_tail
.L2584:
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L2579:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2578
.L2582:
	ldr	x5, [x0, 8]
	mov	w4, w24
	ldr	x6, [x0, 24]
	mov	w3, w19
	ldrb	w0, [x0, 60]
	mov	w1, w26
	mov	w2, 17
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x7, [x20]
	mov	w4, w21
	ldr	x0, [x22]
	mov	w3, w19
	mov	w1, w26
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldp	x7, x0, [x20]
	mov	w4, w24
	mov	w3, w19
	mov	w1, w25
	mov	w2, 17
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x7, [x20]
	mov	w4, w21
	ldr	x0, [x22, 8]
	mov	w3, w19
	mov	w1, w25
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x7, [x20]
	mov	w4, w24
	ldr	x0, [x20, 16]
	mov	w3, w19
	mov	w2, 17
	mov	w1, 3
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x22, 16]
	mov	w4, w21
	ldr	x7, [x20]
	mov	w3, w19
	mov	w2, 16
	mov	w1, 3
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	b	.L2583
.L2581:
	ldr	w19, [x5, 40]
.L2585:
	mov	w1, 1
	mov	w0, w19
	bl	queue_lun_state
	cbnz	w0, .L2586
	mov	w1, 1
	mov	x0, x20
	bl	queue_tlc_prog_cmd
	mov	w1, 0
	mov	x0, x22
	bl	queue_tlc_prog_cmd
.L2587:
	mov	w1, 1
	mov	w0, w19
	bl	queue_lun_state
	cbz	w0, .L2584
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2587
.L2586:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2585
.L2580:
	mov	w1, 1
	mov	x0, x20
	bl	queue_tlc_prog_cmd
	b	.L2584
	.size	sblk_xlc_prog_pages, .-sblk_xlc_prog_pages
	.align	2
	.global	sblk_3d_mlc_prog_pages
	.type	sblk_3d_mlc_prog_pages, %function
sblk_3d_mlc_prog_pages:
	stp	x29, x30, [sp, -80]!
	ubfiz	x1, x1, 4, 32
	add	x1, x1, 8
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR0
	add	x22, x22, :lo12:.LANCHOR0
	stp	x25, x26, [sp, 64]
	add	x21, x0, x1
	add	x26, x0, 8
	add	x25, x22, 3354
	stp	x23, x24, [sp, 48]
	stp	x19, x20, [sp, 16]
	mov	w23, 1
	mov	w24, 24
.L2591:
	cmp	x21, x26
	bne	.L2594
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L2594:
	ldr	x0, [x26, -8]
	ldr	w19, [x0, 40]
.L2592:
	mov	w1, 1
	mov	w0, w19
	bl	queue_lun_state
	cbnz	w0, .L2593
	ldr	x0, [x26, -8]
	add	x26, x26, 16
	ldrb	w1, [x22, 1205]
	sub	w2, w24, w1
	ldr	w0, [x0, 40]
	lsl	w19, w23, w1
	lsl	w20, w23, w2
	sub	w19, w19, #1
	sub	w20, w20, #1
	and	w20, w20, w0
	lsr	w0, w0, w2
	and	w19, w19, w0
	and	w19, w19, 255
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	ldr	x0, [x26, -24]
	mov	w2, w20
	mov	w1, w19
	ldr	x3, [x0, 8]
	ldr	x4, [x0, 24]
	mov	w0, 16
	bl	flash_start_3d_mlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x26, -16]
	add	w2, w20, 1
	mov	w1, w19
	ldr	x3, [x0, 8]
	ldr	x4, [x0, 24]
	mov	w0, 16
	bl	flash_start_3d_mlc_page_prog
	bl	nandc_de_cs.constprop.35
	ldr	x1, [x26, -24]
	mov	w0, 4
	strb	w23, [x1, 59]
	strb	w0, [x1, 58]
	mov	w0, -1
	strb	w0, [x1]
	mov	x0, x25
	bl	buf_add_tail
	b	.L2591
.L2593:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2592
	.size	sblk_3d_mlc_prog_pages, .-sblk_3d_mlc_prog_pages
	.align	2
	.global	flash_prog_page_en
	.type	flash_prog_page_en, %function
flash_prog_page_en:
	stp	x29, x30, [sp, -112]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	and	w0, w5, 255
	stp	x19, x20, [sp, 16]
	str	w0, [x29, 108]
	adrp	x19, .LANCHOR0
	add	x0, x19, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 48]
	stp	x27, x28, [sp, 80]
	mov	w20, w1
	stp	x25, x26, [sp, 64]
	mov	x23, x2
	mov	x22, x3
	mov	w27, w4
	ldrb	w0, [x0, 1153]
	ubfx	x24, x20, 24, 2
	cmp	w0, w21
	bhi	.L2597
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 552
	mov	w2, 642
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2597:
	add	x0, x19, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1153]
	cmp	w1, w21
	bls	.L2608
	add	x1, x0, w21, sxtw
	ldrb	w26, [x1, 1196]
	cbnz	w24, .L2610
	ldrb	w1, [x19, #:lo12:.LANCHOR0]
	cbz	w1, .L2600
	ldrb	w0, [x0, 1]
	cbz	w0, .L2610
.L2600:
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w1, [x0, 2]
	ldrb	w2, [x0, 1]
	udiv	w19, w20, w1
	mul	w19, w19, w1
	sub	w1, w20, w19
	cbz	w2, .L2601
	add	w19, w19, w1, lsl 1
.L2599:
	adrp	x24, .LC180
	adrp	x28, .LANCHOR5
	add	x24, x24, :lo12:.LC180
	add	x25, x28, :lo12:.LANCHOR5
.L2605:
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 4, .L2602
	mov	w3, w19
	mov	w2, w20
	mov	w1, w26
	mov	x0, x24
	bl	printk
.L2602:
	mov	w4, w27
	mov	x3, x22
	mov	x2, x23
	mov	w1, w19
	mov	w0, w26
	bl	flash_prog_page
	mov	w5, w0
	ldr	w0, [x29, 108]
	cbz	w0, .L2603
	add	x6, x28, :lo12:.LANCHOR5
	mov	w4, w27
	mov	w1, w20
	mov	w0, w21
	str	x6, [x29, 96]
	ldp	x3, x2, [x6, 344]
	str	w5, [x29, 104]
	bl	flash_read_page_en
	cmp	w0, 512
	mov	w4, w0
	ccmn	w0, #1, 4, ne
	beq	.L2604
	ldr	x6, [x29, 96]
	ldr	w1, [x23]
	ldr	w5, [x29, 104]
	ldr	x0, [x6, 352]
	ldr	w0, [x0]
	cmp	w1, w0
	bne	.L2604
	ldr	x0, [x6, 344]
	ldr	w1, [x22]
	ldr	w0, [x0]
	cmp	w1, w0
	beq	.L2603
.L2604:
	str	w4, [x29, 96]
	mov	w3, 4
	mov	x1, x23
	mov	w2, w3
	adrp	x0, .LC181
	add	x0, x0, :lo12:.LC181
	bl	rknand_print_hex
	mov	w3, 4
	mov	x1, x22
	mov	w2, w3
	adrp	x0, .LC182
	add	x0, x0, :lo12:.LC182
	bl	rknand_print_hex
	ldr	x1, [x25, 344]
	mov	w3, 4
	adrp	x0, .LC183
	mov	w2, w3
	add	x0, x0, :lo12:.LC183
	bl	rknand_print_hex
	ldr	x1, [x25, 352]
	mov	w3, 4
	adrp	x0, .LC184
	mov	w2, w3
	add	x0, x0, :lo12:.LC184
	bl	rknand_print_hex
	ldr	w4, [x29, 96]
	cmp	w4, 512
	beq	.L2605
.L2607:
	mov	w1, w20
	adrp	x0, .LC185
	add	x0, x0, :lo12:.LC185
	bl	printk
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 552
	mov	w2, 685
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2608:
	mov	w0, -1
	b	.L2596
.L2601:
	add	x0, x0, 4
	ldrh	w0, [x0, w1, uxtw 1]
	add	w19, w0, w19
	b	.L2599
.L2610:
	mov	w19, w20
	b	.L2599
.L2603:
	mov	w0, w5
	cmn	w5, #1
	beq	.L2607
.L2596:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
	.size	flash_prog_page_en, .-flash_prog_page_en
	.align	2
	.global	ftl_prog_page
	.type	ftl_prog_page, %function
ftl_prog_page:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w0, 255
	stp	x21, x22, [sp, 32]
	mov	w20, w1
	mov	x21, x2
	mov	x22, x3
	str	x23, [sp, 48]
	mov	w23, w4
	bl	sblk_wait_write_queue_completed
	mov	w0, w19
	mov	w5, 1
	mov	w4, w23
	mov	x3, x22
	mov	x2, x21
	mov	w1, w20
	bl	flash_prog_page_en
	mov	w19, w0
	cmn	w0, #1
	bne	.L2626
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 576
	mov	w2, 2678
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	adrp	x0, .LC185
	mov	w1, w20
	add	x0, x0, :lo12:.LC185
	bl	printk
.L2626:
	mov	w0, w19
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
	.size	ftl_prog_page, .-ftl_prog_page
	.align	2
	.global	ftl_info_flush
	.type	ftl_info_flush, %function
ftl_info_flush:
	stp	x29, x30, [sp, -112]!
	mov	w1, 0
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR3
	stp	x25, x26, [sp, 64]
	mov	w26, w0
	add	x0, x21, :lo12:.LANCHOR3
	stp	x23, x24, [sp, 48]
	stp	x19, x20, [sp, 16]
	adrp	x22, .LANCHOR5
	stp	x27, x28, [sp, 80]
	adrp	x23, .LANCHOR0
	ldrb	w2, [x0, 1946]
	add	x0, x22, :lo12:.LANCHOR5
	ldr	x0, [x0, 376]
	lsl	w2, w2, 1
	bl	ftl_memset
	add	x0, x23, :lo12:.LANCHOR0
	ldr	x0, [x0, 3384]
	ldrh	w1, [x0, 74]
	cmp	w1, 1
	bls	.L2630
	strh	wzr, [x0, 150]
.L2630:
	adrp	x24, .LANCHOR4
	add	x24, x24, :lo12:.LANCHOR4
	add	x19, x22, :lo12:.LANCHOR5
	add	x24, x24, 592
	mov	w25, 0
.L2643:
	add	x2, x23, :lo12:.LANCHOR0
	add	x1, x21, :lo12:.LANCHOR3
	ldrb	w20, [x19, 384]
	ldrh	w27, [x19, 386]
	ldr	x3, [x2, 3384]
	ldrh	w28, [x1, 1410]
	ldr	w0, [x3, 4]
	add	w0, w0, 1
	str	w0, [x3, 4]
	ldr	x0, [x19, 376]
	str	w26, [x0]
	ldr	x3, [x2, 3384]
	ldr	x0, [x19, 376]
	ldrb	w1, [x1, 1946]
	ldr	w3, [x3, 4]
	str	w3, [x0, 4]
	lsl	w1, w1, 9
	ldr	x3, [x19, 376]
	ldr	x0, [x19, 392]
	stp	x2, x3, [x29, 96]
	bl	js_hash
	ldp	x2, x3, [x29, 96]
	str	w0, [x3, 8]
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2631
	ldr	x0, [x2, 3384]
	ldrb	w1, [x19, 384]
	ldrh	w2, [x19, 386]
	ldr	w3, [x0, 4]
	adrp	x0, .LC186
	add	x0, x0, :lo12:.LC186
	bl	printk
.L2631:
	add	x1, x21, :lo12:.LANCHOR3
	ldrh	w0, [x19, 386]
	ldrh	w1, [x1, 1376]
	cmp	w1, w0
	bhi	.L2632
	add	x20, x23, :lo12:.LANCHOR0
.L2639:
	ldrb	w0, [x19, 385]
	add	w0, w0, 1
	and	w0, w0, 255
	strb	w0, [x19, 385]
	cmp	w0, 7
	bls	.L2633
	mov	x0, 0
.L2638:
	ldr	x2, [x20, 1048]
	add	w1, w0, 8
	and	w25, w0, 65535
	add	x1, x2, w1, sxtw
	ldrb	w2, [x1, 32]
	add	w1, w2, 127
	and	w1, w1, 255
	cmp	w1, 125
	bhi	.L2634
	mov	x1, x24
	mov	w2, 846
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2637:
	strb	w25, [x19, 385]
	mov	w25, 1
.L2633:
	ldrb	w1, [x19, 385]
	ldr	x0, [x20, 1048]
	add	x0, x0, x1
	ldrb	w0, [x0, 40]
	strb	w0, [x19, 384]
	cmp	w0, 255
	beq	.L2639
	add	x27, x21, :lo12:.LANCHOR3
	ldrh	w20, [x27, 1410]
	mul	w20, w20, w0
	mov	w0, 0
	mov	w1, w20
	bl	flash_erase_block
	ldrb	w4, [x27, 1946]
	mov	w1, w20
	ldr	x3, [x19, 376]
	mov	w0, 0
	ldr	x2, [x19, 392]
	add	w20, w20, 1
	bl	ftl_prog_page
	mov	w0, 1
	strh	w0, [x19, 386]
.L2640:
	add	x0, x21, :lo12:.LANCHOR3
	ldr	x3, [x19, 376]
	ldr	x2, [x19, 392]
	mov	w1, w20
	ldrb	w4, [x0, 1946]
	mov	w0, 0
	bl	ftl_prog_page
	cmn	w0, #1
	ldrh	w1, [x19, 386]
	add	w1, w1, 1
	strh	w1, [x19, 386]
	beq	.L2641
	ldrb	w0, [x19, 400]
	cbz	w0, .L2642
.L2641:
	strb	wzr, [x19, 400]
	b	.L2643
.L2634:
	cmp	w2, 255
	bne	.L2637
	add	x0, x0, 1
	cmp	x0, 8
	bne	.L2638
	mov	w25, w0
	b	.L2637
.L2632:
	madd	w20, w20, w28, w27
	cbnz	w0, .L2640
	mov	w1, w20
	bl	flash_erase_block
	b	.L2640
.L2642:
	cbnz	w25, .L2644
.L2652:
	add	x22, x22, :lo12:.LANCHOR5
	ldrb	w0, [x22, 384]
	cmp	w0, 255
	bne	.L2646
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 592
	mov	w2, 890
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2646:
	ldp	x19, x20, [sp, 16]
	mov	w0, 0
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L2644:
	ldrb	w19, [x19, 385]
	adrp	x20, .LANCHOR4
	add	x20, x20, :lo12:.LANCHOR4
	adrp	x24, .LC0
	add	w19, w19, 1
	add	x20, x20, 592
	add	x24, x24, :lo12:.LC0
.L2647:
	cmp	w19, 7
	bhi	.L2652
	add	x0, x23, :lo12:.LANCHOR0
	ldr	x1, [x0, 1048]
	add	w0, w19, 8
	add	x0, x1, w0, sxtw
	ldrb	w25, [x0, 32]
	add	w0, w25, 127
	and	w0, w0, 255
	cmp	w0, 125
	bhi	.L2648
	mov	x1, x20
	mov	w2, 881
	mov	x0, x24
	bl	printk
	bl	dump_stack
.L2649:
	add	x0, x21, :lo12:.LANCHOR3
	ldrh	w1, [x0, 1410]
	mov	w0, 0
	mul	w1, w1, w25
	bl	flash_erase_block
	b	.L2650
.L2648:
	cmp	w25, 255
	bne	.L2649
.L2650:
	add	w19, w19, 1
	and	w19, w19, 65535
	b	.L2647
	.size	ftl_info_flush, .-ftl_info_flush
	.align	2
	.global	ftl_info_blk_init
	.type	ftl_info_blk_init, %function
ftl_info_blk_init:
	stp	x29, x30, [sp, -112]!
	mov	w0, 1
	mov	w2, 16384
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	stp	x21, x22, [sp, 32]
	add	x22, x19, :lo12:.LANCHOR0
	adrp	x21, .LANCHOR5
	add	x20, x21, :lo12:.LANCHOR5
	stp	x25, x26, [sp, 64]
	adrp	x26, .LC187
	stp	x27, x28, [sp, 80]
	add	x26, x26, :lo12:.LC187
	stp	x23, x24, [sp, 48]
	mov	w27, 21574
	strb	w0, [x20, 400]
	movk	w27, 0x494c, lsl 16
	strb	w0, [x20, 402]
	ldrh	w1, [x22, 1096]
	ldr	x0, [x20, 392]
	strb	wzr, [x20, 401]
	str	x0, [x22, 1104]
	add	x1, x0, x1, lsl 2
	str	x1, [x22, 3384]
	mov	w1, 0
	bl	ftl_memset
	ldr	x0, [x20, 408]
	mov	w2, 16384
	mov	w1, 0
	bl	ftl_memset
	strb	wzr, [x20, 385]
	ldr	x0, [x22, 1048]
	adrp	x22, .LANCHOR3
	add	x22, x22, :lo12:.LANCHOR3
	strh	wzr, [x20, 386]
	ldrb	w0, [x0, 40]
	strb	w0, [x20, 384]
	mov	w20, 7
.L2668:
	add	x0, x19, :lo12:.LANCHOR0
	sxth	w24, w20
	ldr	x1, [x0, 1048]
	add	w0, w20, 8
	add	x0, x1, w0, sxtw
	ldrb	w0, [x0, 32]
	cmp	w0, 255
	bne	.L2667
.L2672:
	sub	w20, w20, #1
	cmn	w20, #1
	bne	.L2668
	mov	w24, 0
.L2669:
	adrp	x23, .LANCHOR2
	ldr	w0, [x23, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2673
	add	x0, x19, :lo12:.LANCHOR0
	mov	w2, 4800
	mov	w1, w20
	ldr	x0, [x0, 3384]
	ldr	w3, [x0]
	adrp	x0, .LC188
	add	x0, x0, :lo12:.LC188
	bl	printk
.L2673:
	cmn	w20, #1
	bne	.L2674
	add	x21, x21, :lo12:.LANCHOR5
	add	x19, x19, :lo12:.LANCHOR0
	mov	w1, 0
	mov	w2, 16384
	ldr	x0, [x21, 392]
	bl	ftl_memset
	ldr	x0, [x19, 3384]
	mov	w1, 21574
	movk	w1, 0x494c, lsl 16
	str	w1, [x0]
	mov	w1, 36
	movk	w1, 0x6, lsl 16
	ldr	x0, [x19, 3384]
	str	w1, [x0, 12]
	mov	w0, w20
.L2666:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L2667:
	add	x28, x21, :lo12:.LANCHOR5
	ldrh	w25, [x22, 1410]
	ldrb	w4, [x22, 1946]
	ldr	x3, [x28, 376]
	ldr	x2, [x28, 392]
	mul	w25, w25, w0
	mov	w0, 0
	mov	w1, w25
	bl	ftl_read_page
	mov	w23, w0
	cmn	w0, #1
	bne	.L2670
	ldrb	w4, [x22, 1946]
	add	w1, w25, 1
	ldr	x3, [x28, 376]
	mov	w0, 0
	ldr	x2, [x28, 392]
	bl	ftl_read_page
	mov	w23, w0
.L2670:
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2671
	add	x0, x19, :lo12:.LANCHOR0
	mov	w3, 749
	mov	w2, w23
	mov	w1, w20
	ldr	x0, [x0, 3384]
	ldr	w4, [x0]
	mov	x0, x26
	bl	printk
.L2671:
	cmn	w23, #1
	beq	.L2672
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x0, [x0, 3384]
	ldr	w0, [x0]
	cmp	w0, w27
	bne	.L2672
	mov	w20, w24
	b	.L2669
.L2674:
	add	x0, x19, :lo12:.LANCHOR0
	add	x20, x21, :lo12:.LANCHOR5
	adrp	x22, .LANCHOR3
	add	x22, x22, :lo12:.LANCHOR3
	mov	w4, 4
	mov	w28, 21574
	ldr	x1, [x0, 1048]
	add	w0, w24, 8
	ldr	x3, [x20, 376]
	adrp	x27, .LC189
	ldr	x2, [x20, 392]
	add	x27, x27, :lo12:.LC189
	add	x0, x1, w0, sxtw
	strb	w24, [x20, 385]
	movk	w28, 0x494c, lsl 16
	ldrb	w1, [x0, 32]
	mov	w0, 0
	strb	w1, [x20, 384]
	bl	flash_get_last_written_page
	sxth	w25, w0
	add	w0, w0, 1
	ldrb	w26, [x20, 384]
	and	w24, w0, 65535
	ldrh	w0, [x22, 1410]
	madd	w26, w26, w0, w25
.L2676:
	tbnz	w25, #31, .L2680
	ldrb	w4, [x22, 1946]
	mov	w1, w26
	ldr	x3, [x20, 376]
	mov	w0, 0
	ldr	x2, [x20, 392]
	bl	ftl_read_page
	cmn	w0, #1
	beq	.L2677
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x0, [x0, 3384]
	ldr	w0, [x0]
	cmp	w0, w28
	bne	.L2677
	ldr	x0, [x20, 376]
	ldr	w2, [x0, 8]
	cbnz	w2, .L2678
.L2680:
	add	x21, x21, :lo12:.LANCHOR5
	add	x19, x19, :lo12:.LANCHOR0
	strh	w24, [x21, 386]
	bl	ftl_tmp_into_update
	ldr	x1, [x19, 3384]
	ldr	w0, [x1, 64]
	add	w0, w0, 1
	str	w0, [x1, 64]
	mov	w0, 0
	bl	ftl_info_flush
	mov	w0, 0
	bl	ftl_info_flush
	ldr	w0, [x23, #:lo12:.LANCHOR2]
	tbnz	x0, 14, .L2679
.L2696:
	mov	w0, 0
	b	.L2666
.L2678:
	ldr	x0, [x20, 392]
	ldrb	w1, [x22, 1946]
	str	w2, [x29, 108]
	lsl	w1, w1, 9
	bl	js_hash
	ldr	w2, [x29, 108]
	cmp	w2, w0
	beq	.L2680
	ldr	x0, [x20, 376]
	ldr	w1, [x0, 8]
	mov	x0, x27
	bl	printk
.L2677:
	sub	w25, w25, #1
	sub	w26, w26, #1
	sxth	w25, w25
	b	.L2676
.L2679:
	ldr	x0, [x19, 3384]
	ldr	w1, [x0, 156]
	adrp	x0, .LC190
	add	x0, x0, :lo12:.LC190
	bl	printk
	b	.L2696
	.size	ftl_info_blk_init, .-ftl_info_blk_init
	.align	2
	.global	ftl_ext_info_flush
	.type	ftl_ext_info_flush, %function
ftl_ext_info_flush:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	str	x27, [sp, 80]
	bl	timer_get_time
	mov	w1, 100
	udiv	w0, w0, w1
	add	x1, x19, :lo12:.LANCHOR0
	ldr	x1, [x1, 1128]
	ldr	w3, [x1, 520]
	cmp	w0, w3
	bls	.L2698
	ldr	w2, [x1, 12]
	sub	w2, w2, w3
	add	w2, w2, w0
	str	w2, [x1, 12]
.L2712:
	str	w0, [x1, 520]
	b	.L2699
.L2698:
	bcc	.L2712
.L2699:
	adrp	x22, .LANCHOR4
	add	x22, x22, :lo12:.LANCHOR4
	add	x19, x19, :lo12:.LANCHOR0
	add	x22, x22, 608
	mov	w0, 0
	bl	ftl_total_vpn_update
.L2700:
	adrp	x23, .LANCHOR3
.L2703:
	ldr	x1, [x19, 3384]
	ldr	w0, [x1, 56]
	add	w0, w0, 1
	str	w0, [x1, 56]
	add	x0, x23, :lo12:.LANCHOR3
	ldrh	w1, [x1, 140]
	ldrh	w0, [x0, 1376]
	cmp	w1, w0
	bcc	.L2701
	bl	ftl_ext_alloc_new_blk
.L2701:
	ldr	x0, [x19, 3384]
	ldrh	w1, [x0, 130]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L2702
	mov	x1, x22
	mov	w2, 2211
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2702:
	add	x25, x23, :lo12:.LANCHOR3
	ldr	x1, [x19, 3384]
	ldrb	w20, [x19, 1205]
	mov	w0, 24
	adrp	x24, .LANCHOR5
	add	x21, x24, :lo12:.LANCHOR5
	sub	w20, w0, w20
	ldrh	w0, [x25, 1304]
	ldrh	w2, [x1, 130]
	sub	w0, w20, w0
	mov	w20, 1
	lsl	w20, w20, w0
	sub	w20, w20, #1
	asr	w26, w2, w0
	and	w20, w20, w2
	ldrh	w0, [x1, 140]
	sxth	w20, w20
	ldrh	w2, [x25, 1410]
	mov	w1, 0
	madd	w20, w20, w2, w0
	ldr	x0, [x21, 376]
	ldrb	w2, [x25, 1946]
	lsl	w2, w2, 1
	bl	ftl_memset
	ldr	x0, [x21, 376]
	str	wzr, [x0]
	ldr	x1, [x19, 3384]
	ldr	x0, [x21, 376]
	ldr	w1, [x1, 56]
	str	w1, [x0, 4]
	ldrb	w1, [x25, 1946]
	ldr	x0, [x21, 408]
	ldr	x27, [x21, 376]
	lsl	w1, w1, 9
	bl	js_hash
	ldr	x2, [x21, 408]
	mov	w1, w20
	ldrb	w4, [x25, 1946]
	ldr	x3, [x21, 376]
	str	w0, [x27, 8]
	mov	w0, w26
	bl	ftl_prog_page
	ldr	x2, [x19, 3384]
	ldrh	w1, [x2, 140]
	add	w1, w1, 1
	and	w1, w1, 65535
	strh	w1, [x2, 140]
	cmp	w1, 1
	beq	.L2703
	cmn	w0, #1
	beq	.L2704
	ldrb	w0, [x21, 402]
	cbz	w0, .L2705
.L2704:
	add	x24, x24, :lo12:.LANCHOR5
	strb	wzr, [x24, 402]
	b	.L2700
.L2705:
	mov	w0, 0
	ldr	x27, [sp, 80]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
	.size	ftl_ext_info_flush, .-ftl_ext_info_flush
	.align	2
	.global	ftl_ext_info_init
	.type	ftl_ext_info_init, %function
ftl_ext_info_init:
	stp	x29, x30, [sp, -128]!
	mov	w4, 4
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR3
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x22, x19, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	add	x2, x21, :lo12:.LANCHOR3
	stp	x27, x28, [sp, 80]
	adrp	x25, .LANCHOR5
	ldr	x0, [x22, 3384]
	ldrb	w20, [x22, 1205]
	strh	wzr, [x2, 1944]
	ldrh	w1, [x0, 130]
	mov	w0, 24
	sub	w0, w0, w20
	ldrh	w20, [x2, 1304]
	sub	w0, w0, w20
	mov	w20, 1
	asr	w24, w1, w0
	and	w27, w24, 255
	lsl	w20, w20, w0
	add	x0, x25, :lo12:.LANCHOR5
	sub	w20, w20, #1
	and	w20, w20, w1
	ldr	x3, [x0, 376]
	mov	w1, w20
	ldr	x2, [x0, 408]
	mov	w0, w27
	bl	flash_get_last_written_page
	sxth	w23, w0
	adrp	x0, .LANCHOR2
	stp	x0, x25, [x29, 112]
	ldr	w1, [x0, #:lo12:.LANCHOR2]
	tbz	x1, 12, .L2714
	ldr	x0, [x22, 3384]
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	and	w4, w24, 65535
	mov	w3, w23
	mov	w2, 2256
	add	x1, x1, 632
	ldrh	w5, [x0, 130]
	adrp	x0, .LC191
	add	x0, x0, :lo12:.LC191
	bl	printk
.L2714:
	adrp	x26, .LC192
	and	w22, w23, 65535
	add	x25, x21, :lo12:.LANCHOR3
	add	x26, x26, :lo12:.LC192
	mov	w24, 0
.L2715:
	sub	w0, w22, w24
	tbnz	x0, 15, .L2720
	ldr	x0, [x29, 120]
	sub	w1, w23, w24
	ldrb	w4, [x25, 1946]
	add	x28, x0, :lo12:.LANCHOR5
	ldrh	w0, [x25, 1410]
	ldr	x3, [x28, 376]
	madd	w1, w0, w20, w1
	ldr	x2, [x28, 408]
	mov	w0, w27
	bl	flash_read_page_en
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L2716
	add	x0, x19, :lo12:.LANCHOR0
	mov	w1, 20038
	movk	w1, 0x4549, lsl 16
	ldr	x0, [x0, 1128]
	ldr	w0, [x0]
	cmp	w0, w1
	bne	.L2716
	ldr	x0, [x28, 376]
	ldr	w2, [x0, 8]
	cbnz	w2, .L2717
.L2720:
	bl	zftl_sblk_list_init
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x0, [x0, 3384]
	ldrh	w1, [x0, 140]
	cmp	w1, w23
	bgt	.L2719
	add	w22, w22, 1
	strh	w22, [x0, 140]
	bl	ftl_ext_info_flush
.L2719:
	add	x19, x19, :lo12:.LANCHOR0
	ldr	x20, [x19, 1128]
	bl	timer_get_time
	mov	w1, 100
	udiv	w0, w0, w1
	str	w0, [x20, 520]
	ldr	x20, [x19, 1128]
	bl	timer_get_time
	mov	w1, -1
	str	w0, [x20, 604]
	ldr	x0, [x19, 1128]
	strh	w1, [x0, 584]
	strh	w1, [x0, 586]
	strh	w1, [x0, 588]
	strh	w1, [x0, 590]
	mov	w1, 65535
	str	w1, [x0, 560]
	mov	w1, -1
	str	w1, [x0, 564]
	ldr	x1, [x29, 112]
	str	wzr, [x0, 608]
	ldr	w1, [x1, #:lo12:.LANCHOR2]
	tbz	x1, 12, .L2722
	ldr	w20, [x0, 12]
	ldr	w19, [x0, 520]
	bl	timer_get_time
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	mov	w4, w0
	mov	w3, w20
	adrp	x0, .LC193
	mov	w2, w19
	add	x1, x1, 632
	add	x0, x0, :lo12:.LC193
	bl	printk
.L2722:
	add	x21, x21, :lo12:.LANCHOR3
	mov	w0, -1
	ldp	x19, x20, [sp, 16]
	strh	w0, [x21, 1280]
	mov	w0, 0
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L2717:
	ldr	x0, [x28, 408]
	ldrb	w1, [x25, 1946]
	str	w2, [x29, 108]
	lsl	w1, w1, 9
	bl	js_hash
	ldr	w2, [x29, 108]
	cmp	w2, w0
	beq	.L2720
	ldr	x0, [x28, 376]
	ldr	w1, [x0, 8]
	mov	x0, x26
	bl	printk
.L2716:
	add	w24, w24, 1
	b	.L2715
	.size	ftl_ext_info_init, .-ftl_ext_info_init
	.align	2
	.global	ftl_prog_ppa_page
	.type	ftl_prog_ppa_page, %function
ftl_prog_ppa_page:
	stp	x29, x30, [sp, -16]!
	adrp	x4, .LANCHOR0+1205
	mov	w5, 1
	add	x29, sp, 0
	ldrb	w6, [x4, #:lo12:.LANCHOR0+1205]
	mov	w4, 24
	sub	w4, w4, w6
	lsl	w7, w5, w4
	sub	w7, w7, #1
	lsl	w5, w5, w6
	sub	w6, w5, #1
	lsr	w5, w0, w4
	mov	w4, w3
	mov	x3, x2
	mov	x2, x1
	and	w1, w7, w0
	and	w0, w6, w5
	bl	ftl_prog_page
	ldp	x29, x30, [sp], 16
	ret
	.size	ftl_prog_ppa_page, .-ftl_prog_ppa_page
	.align	2
	.global	ftl_write_last_log_page
	.type	ftl_write_last_log_page, %function
ftl_write_last_log_page:
	ldrh	w1, [x0, 6]
	cmp	w1, 1
	bne	.L2737
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR3
	add	x20, x20, :lo12:.LANCHOR3
	stp	x21, x22, [sp, 32]
	str	x23, [sp, 48]
	mov	x19, x0
	ldr	x21, [x20, 1928]
	ldrh	w23, [x0, 12]
	bl	ftl_get_new_free_page
	mov	w22, w0
	cmn	w0, #1
	beq	.L2738
	ldrh	w0, [x19]
	adrp	x19, .LANCHOR5
	add	x19, x19, :lo12:.LANCHOR5
	add	x21, x21, w23, uxth 2
	bl	ftl_vpn_decrement
	ldr	x0, [x19, 416]
	mov	w1, 15555
	movk	w1, 0xf55f, lsl 16
	str	w1, [x0]
	ldrb	w0, [x20, 1321]
	ldrh	w1, [x20, 1376]
	ldr	x23, [x19, 416]
	mul	w1, w1, w0
	mov	x0, x21
	lsl	w1, w1, 2
	bl	js_hash
	str	w0, [x23, 4]
	mov	x2, 0
	mov	w0, 2
	ldr	x1, [x19, 416]
	stp	wzr, wzr, [x1, 8]
	str	wzr, [x1, 16]!
	bl	ftl_debug_info_fill
	ldrb	w3, [x20, 1946]
	mov	x1, x21
	ldr	x2, [x19, 416]
	mov	w0, w22
	bl	ftl_prog_ppa_page
.L2738:
	mov	w0, 0
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L2737:
	mov	w0, -1
	ret
	.size	ftl_write_last_log_page, .-ftl_write_last_log_page
	.align	2
	.global	ftl_dump_write_open_sblk
	.type	ftl_dump_write_open_sblk, %function
ftl_dump_write_open_sblk:
	sub	sp, sp, #224
	stp	x29, x30, [sp, 48]
	add	x29, sp, 48
	stp	x19, x20, [sp, 64]
	and	w20, w0, 65535
	stp	x21, x22, [sp, 80]
	adrp	x21, .LANCHOR0
	add	x0, x21, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 96]
	stp	x25, x26, [sp, 112]
	stp	x27, x28, [sp, 128]
	ldrh	w0, [x0, 1096]
	cmp	w0, w20
	bls	.L2743
	adrp	x23, .LANCHOR3
	add	x0, x23, :lo12:.LANCHOR3
	ldrb	w1, [x0, 1336]
	cbnz	w1, .L2745
	ldrb	w0, [x0, 1322]
	cbz	w0, .L2743
.L2745:
	add	x0, x21, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1212]
	cbnz	w1, .L2743
	ldr	x0, [x0, 1104]
	ubfiz	x14, x20, 2, 16
	add	x0, x0, x14
	ldrb	w0, [x0, 2]
	and	w0, w0, 224
	cmp	w0, 160
	bne	.L2767
	add	x0, x23, :lo12:.LANCHOR3
	ldrb	w26, [x0, 1320]
.L2746:
	add	x22, x29, 176
	add	x24, x23, :lo12:.LANCHOR3
	mov	w0, w20
	adrp	x27, .LC195
	add	x27, x27, :lo12:.LC195
	mov	w28, 0
	strh	w20, [x22, -32]!
	add	x1, x22, 16
	bl	ftl_get_blk_list_in_sblk
	ldrh	w1, [x24, 1376]
	and	w0, w0, 255
	strb	w0, [x29, 153]
	strh	wzr, [x29, 146]
	strb	wzr, [x29, 149]
	mul	w0, w0, w1
	strh	wzr, [x29, 154]
	strh	w0, [x29, 150]
	add	x0, x21, :lo12:.LANCHOR0
	ldr	x0, [x0, 1104]
	add	x1, x0, x14
	ldr	w5, [x0, x14]
	ldrb	w2, [x1, 2]
	mov	w1, w20
	ldrh	w4, [x0, x14]
	adrp	x0, .LC194
	ubfx	x5, x5, 11, 8
	add	x0, x0, :lo12:.LC194
	ubfx	x3, x2, 3, 2
	and	w4, w4, 2047
	ubfx	x2, x2, 5, 3
	bl	printk
	mov	w0, 1
	bl	buf_alloc
	mov	x19, x0
	mov	x11, x24
	mov	w9, 0
	mov	w10, 0
.L2747:
	ldrh	w0, [x11, 1376]
	cmp	w0, w28
	bls	.L2755
	lsl	w24, w28, 1
	mov	w10, 0
	sub	w0, w24, #1
	add	w24, w24, w28
	sub	w24, w24, #1
	str	w0, [x29, 136]
	b	.L2758
.L2767:
	mov	w26, 1
	b	.L2746
.L2756:
	ldrh	w12, [x22, x25]
	mov	w0, 65535
	cmp	w12, w0
	bne	.L2748
.L2754:
	add	w9, w9, 1
	and	w9, w9, 65535
.L2749:
	cmp	w26, w9
	bcs	.L2756
	add	w10, w10, 1
	and	w10, w10, 65535
.L2758:
	ldrb	w0, [x29, 153]
	cmp	w0, w10
	bls	.L2757
	sxtw	x25, w10
	mov	w9, 1
	add	x25, x25, 8
	lsl	x25, x25, 1
	b	.L2749
.L2748:
	ldrh	w3, [x11, 1410]
	cmp	w26, 3
	mul	w3, w3, w12
	add	w0, w3, w9
	bne	.L2750
	add	x1, x21, :lo12:.LANCHOR0
	ldrb	w1, [x1, 1213]
	cbz	w1, .L2751
	ldrb	w3, [x11, 1320]
	add	w0, w0, w24
.L2781:
	orr	w3, w0, w3, lsl 24
	b	.L2752
.L2751:
	add	w3, w28, w3
	orr	w3, w3, w9, lsl 24
.L2752:
	str	w3, [x19, 40]
	mov	w1, 1
	str	x11, [x29, 104]
	mov	x0, x19
	str	w9, [x29, 112]
	stp	w12, w10, [x29, 124]
	str	w3, [x29, 132]
	bl	sblk_read_page
	ldr	w13, [x19, 52]
	ldr	w9, [x29, 112]
	cmp	w13, 512
	ldr	w3, [x29, 132]
	ccmn	w13, #1, 4, ne
	ldr	x11, [x29, 104]
	ldp	w12, w10, [x29, 124]
	bne	.L2754
	ldr	x1, [x19, 24]
	mov	w4, w13
	ldr	x0, [x19, 8]
	str	x11, [x29, 112]
	stp	w9, w10, [x29, 124]
	ldr	w2, [x1, 12]
	str	w2, [sp, 32]
	str	w13, [x29, 132]
	ldr	w2, [x1, 8]
	str	w2, [sp, 24]
	ldr	w2, [x1, 4]
	str	w2, [sp, 16]
	mov	w2, w28
	ldr	w1, [x1]
	str	w1, [sp, 8]
	ldr	w1, [x0, 12]
	str	w1, [sp]
	mov	w1, w12
	ldp	w5, w6, [x0]
	ldr	w7, [x0, 8]
	mov	x0, x27
	bl	printk
	ldr	w13, [x29, 132]
	ldp	w9, w10, [x29, 124]
	cmp	w13, 512
	ldr	x11, [x29, 112]
	bne	.L2754
.L2755:
	add	x24, x23, :lo12:.LANCHOR3
	mov	w4, w9
	mov	w3, w10
	mov	w2, w28
	mov	w1, w20
	adrp	x0, .LC196
	add	x0, x0, :lo12:.LC196
	bl	printk
	ldr	x0, [x19, 8]
	mov	w1, 0
	ldrb	w2, [x24, 1946]
	adrp	x26, .LC197
	add	x26, x26, :lo12:.LC197
	lsl	w2, w2, 9
	bl	ftl_memset
	ldr	x0, [x19, 24]
	mov	w1, 0
	ldrb	w2, [x24, 1946]
	lsl	w2, w2, 1
	bl	ftl_memset
.L2759:
	add	x24, x23, :lo12:.LANCHOR3
	ldrh	w0, [x24, 1376]
	cmp	w0, w28
	bls	.L2765
	add	x0, x21, :lo12:.LANCHOR0
	lsl	w27, w28, 1
	mov	w25, 0
	str	x0, [x29, 136]
	b	.L2766
.L2750:
	cmp	w26, 2
	bne	.L2753
	ldr	w1, [x29, 136]
	ldrb	w3, [x11, 1320]
	add	w0, w1, w0
	b	.L2781
.L2753:
	add	w3, w28, w3
	b	.L2752
.L2757:
	add	w8, w28, 1
	and	w28, w8, 65535
	b	.L2747
.L2764:
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2760
	mov	w2, w25
	mov	w1, w28
	mov	x0, x26
	bl	printk
.L2760:
	ldrb	w1, [x24, 1336]
	sxtw	x0, w25
	ldrh	w2, [x24, 1410]
	cbz	w1, .L2761
	add	x0, x0, 8
	ldrh	w1, [x22, x0, lsl 1]
	mov	x0, x19
	mul	w1, w1, w2
	orr	w1, w1, w28
	str	w1, [x19, 40]
	bl	sblk_3d_tlc_dump_prog
.L2762:
	add	w25, w25, 1
	and	w25, w25, 65535
.L2766:
	ldrb	w0, [x29, 153]
	cmp	w0, w25
	bhi	.L2764
	add	w8, w28, 1
	and	w28, w8, 65535
	b	.L2759
.L2761:
	add	x0, x0, 8
	ldrb	w1, [x24, 1320]
	cmp	w1, 2
	ldrh	w1, [x22, x0, lsl 1]
	mul	w1, w1, w2
	bne	.L2763
	orr	w1, w1, w27
	mov	x0, x19
	orr	w1, w1, 33554432
	str	w1, [x19, 40]
	bl	sblk_mlc_dump_prog
	b	.L2762
.L2763:
	ldr	x0, [x29, 136]
	mov	w6, 1
	ldrb	w4, [x24, 1946]
	orr	w1, w1, w28
	ldr	x3, [x19, 24]
	mov	w5, 0
	str	w1, [x19, 40]
	ldrb	w2, [x0, 1205]
	mov	w0, 24
	sub	w0, w0, w2
	lsl	w6, w6, w2
	ldr	x2, [x19, 8]
	sub	w6, w6, #1
	lsl	w7, w6, w0
	lsr	w0, w1, w0
	bic	w1, w1, w7
	and	w0, w0, w6
	bl	flash_prog_page_en
	b	.L2762
.L2765:
	mov	x0, x19
	bl	zbuf_free
	adrp	x0, .LC198
	mov	w1, w20
	add	x0, x0, :lo12:.LC198
	bl	printk
.L2743:
	ldp	x19, x20, [sp, 64]
	ldp	x21, x22, [sp, 80]
	ldp	x23, x24, [sp, 96]
	ldp	x25, x26, [sp, 112]
	ldp	x27, x28, [sp, 128]
	ldp	x29, x30, [sp, 48]
	add	sp, sp, 224
	ret
	.size	ftl_dump_write_open_sblk, .-ftl_dump_write_open_sblk
	.align	2
	.global	gc_ink_check_sblk
	.type	gc_ink_check_sblk, %function
gc_ink_check_sblk:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x0, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	ldrh	w1, [x0, 5526]
	ldr	x21, [x0, 5600]
	cmp	w1, 3
	bhi	.L2783
	adrp	x0, .L2785
	mov	x20, x19
	add	x0, x0, :lo12:.L2785
	ldrh	w0, [x0,w1,uxtw #1]
	adr	x1, .Lrtx2785
	add	x0, x1, w0, sxth #2
	br	x0
.Lrtx2785:
	.section	.rodata
	.align	0
	.align	2
.L2785:
	.2byte	(.L2784 - .Lrtx2785) / 4
	.2byte	(.L2786 - .Lrtx2785) / 4
	.2byte	(.L2787 - .Lrtx2785) / 4
	.2byte	(.L2788 - .Lrtx2785) / 4
	.text
.L2784:
	add	x19, x19, :lo12:.LANCHOR0
	ldrh	w0, [x19, 3372]
	cmp	w0, 7
	bls	.L2782
	ldrb	w0, [x19, 3353]
	cmp	w0, 2
	bls	.L2782
	adrp	x20, .LANCHOR3
	add	x20, x20, :lo12:.LANCHOR3
	add	x23, x20, 1400
	mov	w1, 0
	mov	x0, x23
	bl	_list_get_gc_head_node
	and	w0, w0, 65535
	mov	w22, 65535
	cmp	w0, w22
	beq	.L2782
	ldr	x1, [x19, 1104]
	ubfiz	x0, x0, 2, 16
	ldrh	w0, [x1, x0]
	and	w0, w0, 2047
	cmp	w0, 2
	bgt	.L2782
	mov	w0, 1
	bl	buf_alloc
	str	x0, [x19, 5600]
	add	x21, x19, 3416
	cbz	x0, .L2782
	add	x2, x19, 3372
	mov	w1, 0
	mov	x0, x23
	bl	_list_pop_index_node
	and	w14, w0, 65535
	cmp	w14, w22
	bne	.L2792
	ldr	x0, [x19, 5600]
	bl	zbuf_free
	str	xzr, [x19, 5600]
.L2782:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L2792:
	mov	w0, w14
	add	x1, x21, 2162
	bl	ftl_get_blk_list_in_sblk
	strb	w0, [x21, 2155]
	mov	w0, 1
	strh	w0, [x19, 5526]
	ldr	x0, [x19, 1104]
	strh	w14, [x19, 5562]
	ubfiz	x14, x14, 2, 16
	strh	wzr, [x19, 5564]
	ldrb	w2, [x20, 1946]
	ldrh	w0, [x0, x14]
	tbz	x0, 0, .L2793
	ldr	x0, [x19, 5600]
	lsl	w2, w2, 9
	mov	w1, 85
.L2808:
	ldr	x0, [x0, 8]
	bl	ftl_memset
	b	.L2782
.L2793:
	lsl	w2, w2, 9
	mov	w1, 170
	ldr	x0, [x19, 5600]
	b	.L2808
.L2786:
	add	x20, x19, :lo12:.LANCHOR0
	mov	w1, 0
	ldrh	w0, [x20, 5562]
	bl	ftl_erase_sblk
	mov	w0, 2
	strh	w0, [x20, 5526]
	b	.L2782
.L2787:
	add	x19, x19, :lo12:.LANCHOR0
	adrp	x24, .LANCHOR3
	mov	w20, 65280
	add	x22, x19, 3416
	add	x24, x24, :lo12:.LANCHOR3
	mov	w23, 0
	movk	w20, 0x55aa, lsl 16
	bl	sblk_wait_write_queue_completed
.L2794:
	ldrb	w0, [x22, 2155]
	cmp	w0, w23
	bhi	.L2796
	ldrh	w0, [x22, 2148]
	adrp	x1, .LANCHOR3+1376
	add	w0, w0, 1
	ldrh	w1, [x1, #:lo12:.LANCHOR3+1376]
	and	w0, w0, 65535
	strh	w0, [x22, 2148]
	cmp	w1, w0
	bhi	.L2782
	mov	w0, 3
	strh	wzr, [x22, 2148]
	strh	w0, [x22, 2110]
	b	.L2782
.L2796:
	add	x0, x22, w23, sxtw 1
	mov	w1, 65535
	ldrh	w0, [x0, 2162]
	cmp	w0, w1
	beq	.L2795
	ldrh	w2, [x22, 2148]
	mov	w6, 1
	ldrh	w1, [x24, 1410]
	mov	w5, 0
	madd	w1, w1, w0, w2
	ldr	x0, [x21, 8]
	str	w1, [x0]
	ldr	x0, [x21, 8]
	str	w20, [x0, 4]
	ldr	x0, [x21, 24]
	str	wzr, [x0]
	mov	w0, 24
	ldrb	w2, [x19, 1205]
	ldrb	w4, [x24, 1946]
	sub	w0, w0, w2
	ldr	x3, [x21, 24]
	lsl	w6, w6, w2
	ldr	x2, [x21, 8]
	sub	w6, w6, #1
	lsl	w7, w6, w0
	lsr	w0, w1, w0
	bic	w1, w1, w7
	and	w0, w0, w6
	bl	flash_prog_page_en
.L2795:
	add	w23, w23, 1
	and	w23, w23, 65535
	b	.L2794
.L2788:
	add	x19, x19, :lo12:.LANCHOR0
	adrp	x25, .LANCHOR3
	add	x19, x19, 3416
	add	x25, x25, :lo12:.LANCHOR3
	mov	w22, 0
	mov	w26, 65535
	bl	sblk_wait_write_queue_completed
.L2797:
	ldrb	w0, [x19, 2155]
	cmp	w0, w22
	bhi	.L2801
	ldrh	w0, [x19, 2148]
	adrp	x1, .LANCHOR3+1376
	add	w0, w0, 1
	ldrh	w1, [x1, #:lo12:.LANCHOR3+1376]
	and	w0, w0, 65535
	strh	w0, [x19, 2148]
	cmp	w1, w0
	bhi	.L2782
	ldr	x0, [x19, 2184]
	strh	wzr, [x19, 2110]
	bl	zbuf_free
	str	xzr, [x19, 2184]
	ldrh	w0, [x19, 2112]
	cmp	w0, 15
	bhi	.L2802
	add	w1, w0, 1
	add	x0, x19, w0, sxtw 1
	strh	w1, [x19, 2112]
	ldrh	w1, [x19, 2146]
	strh	w1, [x0, 2114]
.L2803:
	add	x19, x20, :lo12:.LANCHOR0
	adrp	x0, .LC199
	add	x0, x0, :lo12:.LC199
	ldrh	w2, [x19, 5528]
	ldrh	w1, [x19, 5562]
	bl	printk
	b	.L2782
.L2801:
	add	x24, x19, w22, sxtw 1
	add	x24, x24, 16
	ldrh	w0, [x24, 2146]
	cmp	w0, w26
	beq	.L2799
	ldrh	w1, [x19, 2148]
	ldrh	w23, [x25, 1410]
	madd	w23, w23, w0, w1
	mov	w1, 1
	str	w23, [x21, 40]
	mov	x0, x21
	bl	sblk_read_page
	ldr	x0, [x21, 8]
	ldr	w0, [x0]
	cmp	w23, w0
	beq	.L2799
	mov	w0, w23
	bl	ftl_mask_bad_block
	mov	w0, -1
	strh	w0, [x24, 2146]
.L2799:
	add	w22, w22, 1
	and	w22, w22, 65535
	b	.L2797
.L2802:
	ldrh	w0, [x19, 2146]
	bl	zftl_insert_free_list
	b	.L2803
.L2783:
	strh	wzr, [x0, 5526]
	b	.L2782
	.size	gc_ink_check_sblk, .-gc_ink_check_sblk
	.align	2
	.global	ftl_ink_check_sblk
	.type	ftl_ink_check_sblk, %function
ftl_ink_check_sblk:
	stp	x29, x30, [sp, -144]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR0
	add	x22, x21, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	stp	x25, x26, [sp, 64]
	and	w20, w0, 65535
	stp	x23, x24, [sp, 48]
	ubfiz	x25, x20, 2, 16
	stp	x27, x28, [sp, 80]
	mov	w1, w20
	ldr	x0, [x22, 1104]
	ldr	w3, [x0, x25]
	ldrh	w2, [x0, x25]
	adrp	x0, .LC200
	add	x0, x0, :lo12:.LC200
	ubfx	x3, x3, 11, 8
	and	w2, w2, 2047
	bl	printk
	mov	w0, 65535
	cmp	w20, w0
	beq	.L2809
	ldrh	w0, [x22, 1096]
	cmp	w0, w20
	bls	.L2809
	add	x24, x29, 144
	mov	w1, 0
	mov	w0, w20
	bl	ftl_erase_sblk
	mov	w0, w20
	strh	w20, [x24, -32]!
	add	x1, x24, 16
	bl	ftl_get_blk_list_in_sblk
	strb	w0, [x29, 121]
	mov	w0, 1
	bl	buf_alloc
	mov	x19, x0
	ldr	x0, [x22, 1104]
	adrp	x22, .LANCHOR3
	ldrh	w0, [x0, x25]
	and	w0, w0, 2047
	cmp	w0, 1
	add	x0, x22, :lo12:.LANCHOR3
	ldrb	w2, [x0, 1946]
	lsl	w2, w2, 9
	bgt	.L2811
	mov	w1, 85
.L2827:
	ldr	x0, [x19, 8]
	add	x27, x22, :lo12:.LANCHOR3
	mov	w26, 0
	bl	ftl_memset
	bl	sblk_wait_write_queue_completed
	mov	w9, 65280
	mov	w8, 65535
	movk	w9, 0x55aa, lsl 16
.L2813:
	ldrh	w0, [x27, 1376]
	cmp	w0, w26
	bls	.L2816
	mov	w23, 0
	add	x7, x21, :lo12:.LANCHOR0
	mov	w28, 24
	b	.L2817
.L2811:
	mov	w1, 170
	b	.L2827
.L2815:
	add	x0, x24, w23, sxtw 1
	ldrh	w0, [x0, 16]
	cmp	w0, w8
	beq	.L2814
	ldrh	w1, [x27, 1410]
	mov	w6, 1
	stp	w8, w9, [x29, 96]
	mov	w5, 0
	str	x7, [x29, 104]
	madd	w1, w1, w0, w26
	ldr	x0, [x19, 8]
	str	w1, [x0]
	ldr	x0, [x19, 8]
	str	w9, [x0, 4]
	ldr	x0, [x19, 24]
	str	wzr, [x0]
	ldrb	w2, [x7, 1205]
	ldrb	w4, [x27, 1946]
	sub	w0, w28, w2
	ldr	x3, [x19, 24]
	lsl	w6, w6, w2
	ldr	x2, [x19, 8]
	sub	w6, w6, #1
	lsl	w10, w6, w0
	lsr	w0, w1, w0
	bic	w1, w1, w10
	and	w0, w0, w6
	bl	flash_prog_page_en
	ldp	w8, w9, [x29, 96]
	ldr	x7, [x29, 104]
.L2814:
	add	w23, w23, 1
	and	w23, w23, 65535
.L2817:
	ldrb	w0, [x29, 121]
	cmp	w0, w23
	bhi	.L2815
	add	w26, w26, 1
	and	w26, w26, 65535
	b	.L2813
.L2816:
	add	x22, x22, :lo12:.LANCHOR3
	mov	w26, 0
	mov	w27, 65535
.L2818:
	ldrh	w0, [x22, 1376]
	cmp	w0, w26
	bls	.L2823
	mov	w23, 0
	b	.L2824
.L2822:
	sxtw	x28, w23
	add	x28, x28, 8
	lsl	x28, x28, 1
	ldrh	w0, [x24, x28]
	cmp	w0, w27
	beq	.L2820
	ldrh	w3, [x22, 1410]
	mov	w1, 1
	madd	w3, w3, w0, w26
	mov	x0, x19
	str	w3, [x19, 40]
	str	w3, [x29, 104]
	bl	sblk_read_page
	ldr	x0, [x19, 8]
	ldr	w3, [x29, 104]
	ldr	w0, [x0]
	cmp	w3, w0
	beq	.L2820
	mov	w0, w3
	bl	ftl_mask_bad_block
	mov	w0, -1
	strh	w0, [x24, x28]
.L2820:
	add	w23, w23, 1
	and	w23, w23, 65535
.L2824:
	ldrb	w0, [x29, 121]
	cmp	w0, w23
	bhi	.L2822
	add	w2, w26, 1
	and	w26, w2, 65535
	b	.L2818
.L2823:
	add	x21, x21, :lo12:.LANCHOR0
	mov	x0, x19
	bl	zbuf_free
	mov	w1, w20
	ldr	x0, [x21, 1104]
	ldr	w3, [x0, x25]
	ldrh	w2, [x0, x25]
	adrp	x0, .LC201
	add	x0, x0, :lo12:.LC201
	ubfx	x3, x3, 11, 8
	and	w2, w2, 2047
	bl	printk
.L2809:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 144
	ret
	.size	ftl_ink_check_sblk, .-ftl_ink_check_sblk
	.align	2
	.global	ftl_alloc_sblk
	.type	ftl_alloc_sblk, %function
ftl_alloc_sblk:
	stp	x29, x30, [sp, -80]!
	cmp	w0, 5
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 65535
	stp	x19, x20, [sp, 16]
	mov	w22, w0
	stp	x23, x24, [sp, 48]
	mov	w1, w21
	cset	w23, eq
	mov	w0, 0
	str	x25, [sp, 64]
	bl	zftl_get_free_sblk
	and	w20, w0, 65535
	mov	w0, 65535
	cmp	w20, w0
	beq	.L2830
	adrp	x0, .LANCHOR0
	add	x1, x0, :lo12:.LANCHOR0
	ubfiz	x25, x20, 2, 16
	lsl	w23, w23, 1
	mov	w24, w20
	mov	x19, x0
	ldr	x21, [x1, 1104]
	add	x21, x21, x25
	ldrb	w1, [x21, 2]
	tst	w1, 224
	beq	.L2831
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 656
	mov	w2, 1012
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2831:
	ldrb	w0, [x21, 2]
	bfi	w0, w22, 5, 3
	ubfx	x1, x0, 3, 2
	orr	w1, w23, w1
	bfi	w0, w1, 3, 2
	strb	w0, [x21, 2]
	and	w1, w0, 24
	cmp	w1, 24
	bne	.L2832
	cbnz	w23, .L2832
	mov	w1, 1
	bfi	w0, w1, 3, 2
	strb	w0, [x21, 2]
.L2832:
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x1, [x0, 3384]
	ldrh	w1, [x1, 150]
	cbz	w1, .L2833
	ldr	x0, [x0, 1104]
	ldrh	w0, [x0, x25]
	tst	x0, 2047
	bne	.L2833
	cbnz	w23, .L2833
	mov	w0, w24
	bl	ftl_ink_check_sblk
.L2833:
	mov	w0, w20
	ldr	x25, [sp, 64]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 80
	ret
.L2830:
	bl	print_ftl_debug_info
	adrp	x19, .LC202
	mov	w2, w22
	add	x19, x19, :lo12:.LC202
	mov	w1, w20
	mov	x0, x19
	bl	printk
	mov	w1, w21
	mov	w0, 0
	bl	zftl_get_free_sblk
	and	w20, w0, 65535
	mov	w2, w22
	mov	w1, w20
	mov	x0, x19
	bl	printk
	bl	dump_all_list_info
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 656
	mov	w2, 1031
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	b	.L2833
	.size	ftl_alloc_sblk, .-ftl_alloc_sblk
	.align	2
	.global	ftl_open_sblk_init
	.type	ftl_open_sblk_init, %function
ftl_open_sblk_init:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR0
	stp	x23, x24, [sp, 48]
	adrp	x22, .LC203
	stp	x19, x20, [sp, 16]
	adrp	x24, .LANCHOR3
	stp	x25, x26, [sp, 64]
	mov	x19, x0
	mov	w23, w1
	add	x25, x24, :lo12:.LANCHOR3
	add	x21, x21, :lo12:.LANCHOR0
	add	x22, x22, :lo12:.LC203
.L2843:
	mov	w26, 65535
.L2844:
	mov	w0, w23
	bl	ftl_alloc_sblk
	and	w20, w0, 65535
	cmp	w20, w26
	beq	.L2844
	mov	w1, 0
	mov	w0, w20
	bl	ftl_erase_sblk
	add	x1, x19, 16
	mov	w0, w20
	bl	ftl_get_blk_list_in_sblk
	strh	w20, [x19]
	add	x2, x24, :lo12:.LANCHOR3
	and	w0, w0, 255
	strb	w0, [x19, 9]
	cmp	w23, 2
	strh	wzr, [x19, 2]
	ldrh	w1, [x2, 1376]
	strb	wzr, [x19, 5]
	strh	wzr, [x19, 10]
	strb	w23, [x19, 4]
	mul	w0, w1, w0
	strh	w0, [x19, 6]
	beq	.L2847
	ldrb	w0, [x2, 1321]
	mul	w0, w1, w0
	and	w0, w0, 65535
.L2845:
	ldrb	w2, [x25, 1321]
	ubfiz	x26, x20, 1, 16
	ldr	x3, [x25, 1928]
	strh	w0, [x19, 12]
	mul	w2, w2, w1
	add	x0, x3, w0, uxth 2
	mov	w1, 255
	lsl	w2, w2, 2
	bl	ftl_memset
	ldr	x0, [x21, 1120]
	ldrh	w1, [x19, 6]
	strh	w1, [x0, x26]
	ldrb	w0, [x19, 9]
	cbnz	w0, .L2842
	mov	w1, w20
	mov	x0, x22
	bl	printk
	ldr	x0, [x21, 1120]
	mov	w1, -1
	strh	w1, [x0, x26]
	mov	w0, 7
	strb	w0, [x19, 4]
	b	.L2843
.L2847:
	mov	w0, 0
	b	.L2845
.L2842:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
	.size	ftl_open_sblk_init, .-ftl_open_sblk_init
	.align	2
	.global	pm_alloc_new_blk
	.type	pm_alloc_new_blk, %function
pm_alloc_new_blk:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x0, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	adrp	x22, .LANCHOR3
	add	x2, x22, :lo12:.LANCHOR3
	ldr	x1, [x0, 3384]
	ldrb	w2, [x2, 1321]
	ldrh	w0, [x1, 690]
	add	w0, w0, 1
	and	w0, w0, 65535
	strh	w0, [x1, 690]
	cmp	w2, w0
	bls	.L2851
	add	x0, x1, w0, sxtw 1
	ldrh	w1, [x0, 672]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L2852
.L2851:
	adrp	x23, .LC203
	add	x20, x19, :lo12:.LANCHOR0
	add	x23, x23, :lo12:.LC203
	mov	w24, 65535
.L2853:
	mov	w0, 1
	bl	ftl_alloc_sblk
	and	w21, w0, 65535
	cmp	w21, w24
	beq	.L2853
	mov	w1, 0
	mov	w0, w21
	bl	ftl_erase_sblk
	ldr	x1, [x20, 3384]
	mov	w0, w21
	add	x1, x1, 672
	bl	ftl_get_blk_list_in_sblk
	tst	w0, 65535
	bne	.L2854
	mov	w1, w21
	mov	x0, x23
	bl	printk
	ldr	x0, [x20, 1104]
	add	x21, x0, w21, uxth 2
	ldrb	w0, [x21, 2]
	orr	w0, w0, -32
	strb	w0, [x21, 2]
	b	.L2853
.L2854:
	ldr	x0, [x20, 3384]
	adrp	x1, .LANCHOR5+424
	mov	w2, 1
	mov	w20, 0
	add	x0, x0, 416
	str	w2, [x1, #:lo12:.LANCHOR5+424]
	mov	w1, 65535
	strh	wzr, [x0, 274]
.L2856:
	ldrh	w2, [x0]
	cmp	w2, w1
	beq	.L2855
	add	w20, w20, 1
	add	x0, x0, 2
	and	w20, w20, 65535
	cmp	w20, 128
	bne	.L2856
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 672
	mov	w2, 264
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2855:
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x0, [x0, 3384]
	add	x20, x0, w20, sxtw 1
	strh	w21, [x20, 416]
	ldrh	w1, [x0, 688]
	add	w1, w1, 1
	strh	w1, [x0, 688]
.L2852:
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x1, [x0, 3384]
	ldrh	w0, [x1, 690]
	add	x0, x0, 336
	ldrh	w20, [x1, x0, lsl 1]
	mov	w0, 65533
	sub	w1, w20, #1
	cmp	w0, w1, uxth
	bcs	.L2858
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 672
	mov	w2, 270
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2858:
	add	x19, x19, :lo12:.LANCHOR0
	add	x22, x22, :lo12:.LANCHOR3
	mov	w2, 24
	ldrb	w1, [x19, 1205]
	ldr	x0, [x19, 3384]
	sub	w2, w2, w1
	ldrh	w1, [x22, 1304]
	sub	w2, w2, w1
	strh	wzr, [x0, 696]
	asr	w4, w20, w2
	strh	w20, [x0, 692]
	strh	w4, [x0, 694]
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2861
	mov	w0, 1
	and	w4, w4, 65535
	lsl	w2, w0, w2
	mov	w3, w20
	adrp	x0, .LC204
	sub	w2, w2, #1
	mov	w1, w20
	add	x0, x0, :lo12:.LC204
	bl	printk
.L2861:
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
	.size	pm_alloc_new_blk, .-pm_alloc_new_blk
	.align	2
	.global	pm_write_page
	.type	pm_write_page, %function
pm_write_page:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	w21, w0
	stp	x23, x24, [sp, 48]
	mov	x24, x1
	stp	x25, x26, [sp, 64]
	adrp	x25, .LANCHOR0
	adrp	x26, .LANCHOR3
	add	x22, x25, :lo12:.LANCHOR0
	add	x23, x26, :lo12:.LANCHOR3
	stp	x19, x20, [sp, 16]
	stp	x27, x28, [sp, 80]
.L2869:
	add	x0, x25, :lo12:.LANCHOR0
	ldr	x0, [x0, 3384]
	ldr	w1, [x0, 48]
	ldrh	w2, [x0, 696]
	add	w1, w1, 1
	str	w1, [x0, 48]
	add	x1, x26, :lo12:.LANCHOR3
	ldrh	w1, [x1, 1376]
	cmp	w2, w1
	bcs	.L2870
	ldrh	w1, [x0, 692]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L2871
.L2870:
	bl	pm_alloc_new_blk
	mov	w0, 0
	bl	ftl_info_flush
.L2871:
	ldr	x0, [x22, 3384]
	ldrh	w1, [x0, 692]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L2872
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 696
	mov	w2, 303
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L2872:
	ldr	x0, [x22, 3384]
	adrp	x19, .LANCHOR5
	ldrh	w1, [x23, 1410]
	add	x20, x19, :lo12:.LANCHOR5
	mov	w2, 64
	ldrh	w27, [x0, 692]
	ldrh	w0, [x0, 696]
	madd	w27, w27, w1, w0
	ldr	x0, [x20, 432]
	mov	w1, 0
	bl	ftl_memset
	ldr	x0, [x20, 432]
	str	w21, [x0]
	ldr	x1, [x22, 3384]
	ldr	x0, [x20, 432]
	ldr	w1, [x1, 48]
	str	w1, [x0, 4]
	mov	x0, x24
	ldrb	w1, [x23, 1946]
	ldr	x28, [x20, 432]
	lsl	w1, w1, 9
	bl	js_hash
	ldrb	w4, [x23, 1946]
	mov	x2, x24
	str	w0, [x28, 8]
	mov	w1, w27
	ldr	x0, [x22, 3384]
	ldr	x3, [x20, 432]
	ldrb	w0, [x0, 694]
	bl	ftl_prog_page
	ldr	x2, [x22, 3384]
	ldrh	w1, [x2, 696]
	add	w1, w1, 1
	and	w1, w1, 65535
	strh	w1, [x2, 696]
	cmp	w1, 1
	beq	.L2873
	ldrb	w1, [x20, 440]
	cbz	w1, .L2874
.L2873:
	add	x19, x19, :lo12:.LANCHOR5
	strb	wzr, [x19, 440]
	b	.L2869
.L2874:
	cmn	w0, #1
	bne	.L2876
	mov	w1, w27
	adrp	x0, .LC205
	add	x0, x0, :lo12:.LC205
	bl	printk
	b	.L2869
.L2876:
	ldrh	w0, [x2, 698]
	cmp	w21, w0
	bcs	.L2877
	add	x21, x2, w21, uxtw 2
	str	w27, [x21, 704]
.L2877:
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
	.size	pm_write_page, .-pm_write_page
	.align	2
	.global	flash_info_flush
	.type	flash_info_flush, %function
flash_info_flush:
	stp	x29, x30, [sp, -80]!
	adrp	x0, .LANCHOR2
	add	x29, sp, 0
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	tbz	x0, 12, .L2883
	adrp	x2, .LANCHOR4
	add	x2, x2, :lo12:.LANCHOR4
	adrp	x0, .LC135
	add	x2, x2, 712
	mov	w1, 365
	add	x0, x0, :lo12:.LC135
	bl	printk
.L2883:
	adrp	x19, .LANCHOR5
	add	x19, x19, :lo12:.LANCHOR5
	adrp	x20, .LANCHOR0
	add	x22, x20, :lo12:.LANCHOR0
	mov	w2, 64
	mov	w1, 0
	ldr	x0, [x19, 448]
	adrp	x23, .LC207
	mov	w25, 21321
	add	x23, x23, :lo12:.LC207
	mov	w24, 0
	movk	w25, 0x5359, lsl 16
	bl	ftl_memset
	ldr	x1, [x22, 1048]
	mov	w3, 16
	mov	w2, 4
	adrp	x0, .LC206
	add	x0, x0, :lo12:.LC206
	bl	rknand_print_hex
	ldr	x21, [x22, 1048]
	add	x0, x21, 16
	ldr	w1, [x21, 8]
	bl	js_hash
	str	w0, [x21, 12]
.L2884:
	ldrb	w26, [x19, 456]
	mov	x0, x23
	ldrh	w21, [x19, 458]
	mov	w1, w26
	ldrh	w20, [x22, 2]
	mov	w2, w21
	bl	printk
	ldrh	w0, [x19, 172]
	ldrh	w1, [x19, 458]
	sub	w0, w0, #1
	cmp	w1, w0
	blt	.L2885
	ldr	x1, [x22, 1048]
	strh	wzr, [x19, 458]
	ldr	w0, [x1, 4]
	add	w0, w0, 1
	str	w0, [x1, 4]
	ldrb	w0, [x19, 456]
	ldr	x21, [x22, 1048]
	ldrb	w1, [x19, 457]
	strb	w0, [x19, 457]
	mov	x0, x21
	strb	w1, [x19, 456]
	ldrh	w1, [x21, 16]
	add	w1, w1, 1
	strh	w1, [x0, 16]!
	ldr	w1, [x21, 8]
	bl	js_hash
	ldrb	w20, [x19, 456]
	str	w0, [x21, 12]
	ldrh	w0, [x22, 2]
	mul	w20, w20, w0
.L2894:
	mov	w1, w20
	mov	w0, 0
	bl	flash_erase_block
	b	.L2886
.L2889:
	mov	w24, 1
	b	.L2884
.L2885:
	madd	w20, w20, w26, w21
	cbz	w1, .L2894
.L2886:
	ldr	x1, [x22, 1048]
	mov	w5, 1
	ldr	x0, [x19, 448]
	mov	w4, 4
	ldr	w1, [x1, 4]
	str	w1, [x0]
	mov	w1, w20
	ldr	x0, [x19, 448]
	str	w25, [x0, 4]
	mov	w0, 0
	ldr	x3, [x19, 448]
	ldr	x2, [x22, 1048]
	bl	flash_prog_page_en
	cmn	w0, #1
	ldrh	w1, [x19, 458]
	add	w1, w1, 1
	strh	w1, [x19, 458]
	bne	.L2887
	mov	w1, w20
	adrp	x0, .LC208
	add	x0, x0, :lo12:.LC208
	bl	printk
	b	.L2884
.L2887:
	cbz	w24, .L2889
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
	.size	flash_info_flush, .-flash_info_flush
	.align	2
	.global	flash_info_blk_init
	.type	flash_info_blk_init, %function
flash_info_blk_init:
	stp	x29, x30, [sp, -80]!
	adrp	x0, .LANCHOR2
	add	x29, sp, 0
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR0
	stp	x19, x20, [sp, 16]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	tbz	x0, 12, .L2896
	add	x0, x22, :lo12:.LANCHOR0
	adrp	x2, .LANCHOR4
	add	x2, x2, :lo12:.LANCHOR4
	mov	w3, 2048
	add	x2, x2, 736
	mov	w1, 50
	ldr	x4, [x0, 1048]
	adrp	x0, .LC209
	add	x0, x0, :lo12:.LC209
	bl	printk
.L2896:
	adrp	x20, .LANCHOR5
	mov	w25, 21321
	add	x21, x20, :lo12:.LANCHOR5
	add	x19, x22, :lo12:.LANCHOR0
	mov	w24, 4
	movk	w25, 0x5359, lsl 16
.L2900:
	mov	w23, 0
.L2899:
	ldrh	w1, [x19, 2]
	mov	w4, 4
	ldr	x2, [x19, 1048]
	mov	w0, 0
	ldr	x3, [x21, 448]
	madd	w1, w1, w24, w23
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2897
	ldr	x2, [x19, 1048]
	ldr	w0, [x2]
	cmp	w0, w25
	beq	.L2898
.L2897:
	add	w23, w23, 1
	cmp	w23, 4
	bne	.L2899
	add	w24, w24, 1
	cmp	w24, 16
	bne	.L2900
.L2926:
	mov	w0, -1
.L2895:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L2908:
	ldr	x0, [x19, 1048]
	ldr	w1, [x0]
	cmp	w1, w25
	bne	.L2909
	ldr	w21, [x0, 4]
.L2902:
	add	x19, x20, :lo12:.LANCHOR5
	add	x23, x22, :lo12:.LANCHOR0
	mov	w4, 4
	ldrh	w0, [x23, 2]
	ldrb	w1, [x19, 457]
	ldr	x3, [x19, 448]
	ldr	x2, [x23, 1048]
	mul	w1, w1, w0
	mov	w0, 0
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2903
	ldr	x0, [x23, 1048]
	mov	w1, 21321
	movk	w1, 0x5359, lsl 16
	ldr	w2, [x0]
	cmp	w2, w1
	bne	.L2903
	ldr	w1, [x0, 4]
	cmp	w21, w1
	bcs	.L2903
	ldrb	w1, [x0, 37]
	ldrb	w0, [x0, 36]
	strb	w1, [x19, 456]
	strb	w0, [x19, 457]
.L2903:
	add	x21, x20, :lo12:.LANCHOR5
	add	x19, x22, :lo12:.LANCHOR0
	mov	w4, 4
	mov	w0, 0
	mov	w26, 21321
	mov	x20, x19
	ldrb	w1, [x21, 456]
	mov	w23, 0
	ldr	x2, [x19, 1048]
	movk	w26, 0x5359, lsl 16
	ldr	x3, [x21, 448]
	bl	flash_get_last_written_page
	and	w25, w0, 65535
	add	w1, w25, 1
	ldrb	w24, [x21, 456]
	strh	w1, [x21, 458]
	ldrh	w1, [x19, 2]
	mul	w24, w24, w1
	add	w24, w24, w0, sxth
.L2904:
	sub	w0, w25, w23
	sxth	w19, w0
	tbz	w19, #31, .L2907
	cmn	w19, #1
	bne	.L2906
	add	x22, x22, :lo12:.LANCHOR0
	ldr	x0, [x22, 1048]
	ldr	w1, [x0]
	adrp	x0, .LC210
	add	x0, x0, :lo12:.LC210
	bl	printk
	b	.L2926
.L2907:
	ldr	x2, [x20, 1048]
	mov	w4, 4
	ldr	x3, [x21, 448]
	sub	w1, w24, w23
	mov	w0, 0
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2905
	ldr	x0, [x20, 1048]
	ldr	w0, [x0]
	cmp	w0, w26
	beq	.L2906
.L2905:
	add	w23, w23, 1
	b	.L2904
.L2906:
	cmp	w23, 1
	bls	.L2910
	bl	flash_info_flush
.L2910:
	mov	w0, 0
	b	.L2895
.L2898:
	ldrb	w1, [x2, 37]
	mov	w4, 4
	ldrb	w0, [x2, 36]
	strb	w1, [x21, 457]
	ldrh	w1, [x19, 2]
	ldr	x3, [x21, 448]
	strb	w0, [x21, 456]
	mul	w1, w1, w0
	mov	w0, 0
	bl	flash_read_page_en
	cmn	w0, #1
	bne	.L2908
.L2909:
	mov	w21, 0
	b	.L2902
	.size	flash_info_blk_init, .-flash_info_blk_init
	.align	2
	.global	nand_flash_init
	.type	nand_flash_init, %function
nand_flash_init:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR2
	mov	x19, x0
	stp	x21, x22, [sp, 32]
	ldr	w0, [x20, #:lo12:.LANCHOR2]
	stp	x23, x24, [sp, 48]
	str	x25, [sp, 64]
	tbz	x0, 12, .L2928
	adrp	x2, .LANCHOR4
	add	x2, x2, :lo12:.LANCHOR4
	adrp	x0, .LC135
	add	x2, x2, 760
	mov	w1, 3450
	add	x0, x0, :lo12:.LC135
	bl	printk
.L2928:
	adrp	x21, .LANCHOR5
	add	x23, x21, :lo12:.LANCHOR5
	mov	x0, x19
	adrp	x19, .LANCHOR0
	add	x22, x19, :lo12:.LANCHOR0
	mov	w25, 44
	str	wzr, [x23, 332]
	bl	nandc_init
	add	x0, x20, :lo12:.LANCHOR2
	mov	w2, 8
	add	x0, x0, 8
	str	x0, [x22, 1144]
	mov	w0, 1
	strb	w0, [x22, 1153]
	mov	w0, 3
	strb	w0, [x22, 1205]
	add	x0, x22, 1196
	add	x22, x22, 1216
	mov	w1, 0
	mov	x24, x22
	bl	ftl_memset
	add	x0, x23, 176
	mov	w23, 0
	mov	w2, 32
	mov	w1, 0
	bl	ftl_memset
.L2934:
	mov	x1, x22
	mov	w0, w23
	bl	flash_read_id
	cbnz	w23, .L2929
	ldrb	w0, [x24]
	sub	w0, w0, #1
	and	w0, w0, 255
	cmp	w0, 253
	bls	.L2930
.L2932:
	mov	w22, -2
.L2927:
	mov	w0, w22
	ldr	x25, [sp, 64]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 80
	ret
.L2930:
	ldrb	w0, [x24, 1]
	cmp	w0, 255
	beq	.L2932
.L2929:
	ldrb	w0, [x22]
	cmp	w0, 181
	bne	.L2933
	strb	w25, [x22]
.L2933:
	add	w23, w23, 1
	add	x22, x22, 8
	and	w23, w23, 255
	cmp	w23, 4
	bne	.L2934
	add	x7, x20, :lo12:.LANCHOR2
	add	x9, x19, :lo12:.LANCHOR0
	add	x7, x7, 441
	add	x9, x9, 1216
	mov	x8, 0
.L2937:
	ldrb	w2, [x7, -1]
	mov	w10, w8
	lsl	x24, x8, 5
	mov	x1, x9
	mov	x0, x7
	bl	flash_mem_cmp8
	cbnz	w0, .L2935
	add	x2, x20, :lo12:.LANCHOR2
	ubfiz	x10, x10, 5, 32
	add	x0, x2, 440
	add	x1, x2, 2008
	add	x24, x0, x24
	add	x0, x0, x10
	ldrb	w3, [x0, 22]
	mov	x0, 0
.L2936:
	lsl	x4, x0, 5
	mov	w2, w0
	ldrb	w4, [x4, x1]
	cmp	w4, w3
	beq	.L2938
	add	x0, x0, 1
	cmp	x0, 4
	bne	.L2936
	mov	w2, w0
.L2938:
	add	x22, x20, :lo12:.LANCHOR2
	ubfiz	x1, x2, 5, 32
	add	x0, x22, 2008
	add	x23, x19, :lo12:.LANCHOR0
	add	x1, x0, x1
	mov	w2, 32
	add	x0, x23, 1160
	add	x22, x22, 8
	bl	ftl_memcpy
	mov	w2, 32
	mov	x1, x24
	mov	x0, x22
	bl	ftl_memcpy
	ldrb	w0, [x23, 1028]
	cmp	w0, 8
	bhi	.L2939
	ldrb	w1, [x22, 20]
	cmp	w1, 60
	bls	.L2940
	mov	w1, 60
	strb	w1, [x22, 20]
.L2940:
	cmp	w0, 6
	beq	.L2932
.L2939:
	ldr	w0, [x20, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2941
	adrp	x2, .LANCHOR4
	add	x2, x2, :lo12:.LANCHOR4
	adrp	x0, .LC135
	add	x2, x2, 760
	mov	w1, 3480
	add	x0, x0, :lo12:.LC135
	bl	printk
.L2941:
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x1, [x0, 1144]
	ldrh	w1, [x1, 10]
	cmp	w1, 1023
	bls	.L2942
	mov	w1, 2
	strb	w1, [x0, 1205]
.L2942:
	add	x23, x21, :lo12:.LANCHOR5
	add	x22, x19, :lo12:.LANCHOR0
	mov	w0, 16384
	bl	ftl_malloc
	add	x24, x20, :lo12:.LANCHOR2
	str	x0, [x23, 352]
	mov	w0, 16384
	bl	ftl_malloc
	str	x0, [x23, 304]
	mov	w0, 2048
	bl	ftl_dma32_malloc
	str	x0, [x22, 1048]
	mov	w0, 64
	bl	ftl_dma32_malloc
	str	x0, [x23, 344]
	mov	w0, 64
	bl	ftl_dma32_malloc
	str	x0, [x23, 320]
	mov	w0, 64
	bl	ftl_dma32_malloc
	strb	wzr, [x23, 460]
	str	x0, [x23, 448]
	bl	flash_die_info_init
	ldrb	w0, [x24, 26]
	bl	flash_lsb_page_tbl_build
	ldrb	w0, [x24, 28]
	bl	nandc_bch_sel
	str	xzr, [x23, 336]
	ldr	x3, [x22, 1144]
	adrp	x2, .LANCHOR3
	add	x2, x2, :lo12:.LANCHOR3
	ldrh	w0, [x3, 16]
	ubfx	x1, x0, 8, 3
	strb	w1, [x22, 1248]
	ubfx	x1, x0, 3, 1
	strb	w1, [x23, 368]
	ubfx	x1, x0, 4, 1
	strb	w1, [x22, 1250]
	ubfx	x1, x0, 12, 1
	strb	w1, [x2, 1336]
	ubfx	x1, x0, 13, 1
	strb	w1, [x2, 1322]
	ubfx	x1, x0, 11, 1
	strb	w1, [x22, 1212]
	ldrb	w1, [x3, 31]
	ubfx	x4, x1, 1, 1
	strb	w4, [x2, 1950]
	ubfx	x4, x1, 2, 1
	strb	w4, [x23, 461]
	ubfx	x4, x0, 14, 1
	lsr	w0, w0, 15
	strb	w0, [x2, 1323]
	ubfx	x2, x1, 3, 1
	ldrb	w0, [x3, 28]
	ubfx	x1, x1, 4, 1
	strb	w2, [x22, 1204]
	strb	w1, [x22, 1213]
	mov	w1, 60
	ldrb	w2, [x22, 1028]
	strb	w4, [x22, 1]
	strb	w0, [x19, #:lo12:.LANCHOR0]
	cmp	w2, 9
	strb	w1, [x22, 1152]
	bne	.L2943
	mov	w1, 70
	strb	w1, [x22, 1152]
.L2943:
	add	x1, x19, :lo12:.LANCHOR0
	strb	w0, [x1, 1154]
	add	x0, x20, :lo12:.LANCHOR2
	add	x0, x0, 8
	ldrb	w3, [x0, 31]
	tbz	x3, 0, .L2944
	ldrb	w0, [x0, 29]
	cbz	w0, .L2945
	mov	w0, 2
.L3007:
	strb	w0, [x1, 1154]
.L2944:
	cmp	w2, 8
	bne	.L2946
	add	x0, x19, :lo12:.LANCHOR0
	mov	w2, 137
	ldrb	w1, [x0, 1216]
	cmp	w1, 44
	ccmp	w1, w2, 4, ne
	bne	.L2946
	add	x1, x20, :lo12:.LANCHOR2
	ldrb	w1, [x1, 36]
	cmp	w1, 3
	bne	.L2946
	strb	wzr, [x0, 1154]
.L2946:
	add	x1, x20, :lo12:.LANCHOR2
	add	x2, x19, :lo12:.LANCHOR0
	add	x1, x1, 8
	ldrb	w0, [x1, 19]
	ldrh	w1, [x1, 16]
	strb	w0, [x2, 1136]
	tbz	x1, 6, .L2948
	sub	w1, w0, #17
	and	w1, w1, 255
	cmp	w1, 2
	ccmp	w0, 21, 4, hi
	bne	.L2949
	add	x1, x21, :lo12:.LANCHOR5
	adrp	x2, micron_read_retrial
	add	x2, x2, :lo12:micron_read_retrial
	cmp	w0, 21
	str	x2, [x1, 336]
	beq	.L2950
	mov	w0, 15
.L3009:
	strb	w0, [x1, 328]
.L2948:
	ldr	w0, [x20, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2959
	adrp	x2, .LANCHOR4
	add	x2, x2, :lo12:.LANCHOR4
	adrp	x0, .LC135
	add	x2, x2, 760
	mov	w1, 3573
	add	x0, x0, :lo12:.LC135
	bl	printk
.L2959:
	add	x0, x19, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1248]
	strb	wzr, [x0, 1192]
	tbz	x1, 0, .L2960
	ldrb	w0, [x0, 1216]
	cmp	w0, 155
	beq	.L2961
	mov	w0, 4
	bl	flash_set_interface_mode
	mov	w0, 4
	bl	nandc_set_if_mode
.L2961:
	mov	w0, 1
	bl	flash_set_interface_mode
	mov	w0, 1
.L3012:
	bl	nandc_set_if_mode
	bl	flash_info_blk_init
	mov	w22, w0
	cmn	w0, #1
	bne	.L2963
	add	x19, x19, :lo12:.LANCHOR0
	mov	w1, 17
	ldr	x0, [x19, 1048]
	strb	wzr, [x19, 1208]
	strb	w1, [x0, 32]
	mov	w0, 0
	bl	zftl_flash_exit_slc_mode
	b	.L2927
.L2935:
	add	x8, x8, 1
	add	x7, x7, 32
	cmp	x8, 49
	bne	.L2937
	b	.L2932
.L2945:
	mov	w0, 3
	b	.L3007
.L2950:
	mov	w0, 4
	b	.L3009
.L2949:
	sub	w1, w0, #65
	cmp	w0, 33
	and	w1, w1, 255
	ccmp	w1, 1, 0, ne
	bhi	.L2952
	add	x0, x21, :lo12:.LANCHOR5
	adrp	x1, toshiba_read_retrial
	add	x1, x1, :lo12:toshiba_read_retrial
	str	x1, [x0, 336]
	mov	w1, 4
	strb	w1, [x2, 1137]
.L3013:
	mov	w1, 7
.L3011:
	strb	w1, [x0, 328]
	b	.L2948
.L2952:
	sub	w3, w0, #34
	sub	w1, w0, #67
	and	w3, w3, 255
	and	w1, w1, 255
	cmp	w3, 1
	ccmp	w1, 1, 0, hi
	bhi	.L2953
	add	x2, x21, :lo12:.LANCHOR5
	adrp	x3, toshiba_read_retrial
	add	x3, x3, :lo12:toshiba_read_retrial
	cmp	w0, 35
	str	x3, [x2, 336]
	mov	w3, 68
	ccmp	w0, w3, 4, ne
	beq	.L2954
	mov	w0, 7
.L3008:
	strb	w0, [x2, 328]
	cmp	w1, 1
	add	x0, x19, :lo12:.LANCHOR0
	bhi	.L2956
	mov	w1, 4
.L3010:
	strb	w1, [x0, 1137]
	b	.L2948
.L2954:
	mov	w0, 17
	b	.L3008
.L2956:
	mov	w1, 5
	b	.L3010
.L2953:
	sub	w1, w0, #36
	and	w1, w1, 255
	cmp	w1, 1
	bhi	.L2957
	add	x0, x21, :lo12:.LANCHOR5
	adrp	x1, toshiba_3d_read_retrial
	add	x1, x1, :lo12:toshiba_3d_read_retrial
	str	x1, [x0, 336]
	b	.L3013
.L2957:
	cmp	w0, 50
	bne	.L2958
	add	x0, x21, :lo12:.LANCHOR5
	adrp	x1, samsung_read_retrial
	add	x1, x1, :lo12:samsung_read_retrial
	str	x1, [x0, 336]
	mov	w1, 25
	b	.L3011
.L2958:
	cmp	w0, 81
	bne	.L2948
	add	x0, x21, :lo12:.LANCHOR5
	adrp	x1, ymtc_3d_read_retrial
	add	x1, x1, :lo12:ymtc_3d_read_retrial
	strb	wzr, [x2, 1251]
	str	x1, [x0, 336]
	mov	w1, 7
	strb	w1, [x0, 328]
	b	.L2948
.L2960:
	mov	w0, 4
	b	.L3012
.L2963:
	add	x0, x20, :lo12:.LANCHOR2
	ldrb	w0, [x0, 15]
	cmp	w0, 9
	bne	.L2964
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x1, [x0, 1048]
	ldrb	w1, [x1, 20]
	cmp	w1, 1
	beq	.L2964
	strb	wzr, [x0, 1154]
.L2964:
	add	x0, x19, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1136]
	sub	w0, w0, #1
	and	w0, w0, 255
	cmp	w0, 7
	bhi	.L2965
	add	x0, x21, :lo12:.LANCHOR5
	adrp	x1, hynix_read_retrial
	add	x1, x1, :lo12:hynix_read_retrial
	str	x1, [x0, 336]
.L2965:
	add	x19, x19, :lo12:.LANCHOR0
	ldrb	w0, [x19, 1248]
	tbz	x0, 2, .L2967
	ldr	x0, [x19, 1048]
	ldrb	w0, [x0, 19]
	cbz	w0, .L2967
	add	x21, x21, :lo12:.LANCHOR5
	ldrh	w0, [x19, 2]
	ldrb	w1, [x21, 456]
	mul	w1, w1, w0
	mov	w0, 0
	bl	flash_ddr_para_scan
	ldrb	w0, [x19, 1192]
	cbnz	w0, .L2967
	ldr	x0, [x19, 1048]
	strb	wzr, [x0, 19]
	bl	flash_info_flush
.L2967:
	ldr	w0, [x20, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L2969
	adrp	x2, .LANCHOR4
	add	x2, x2, :lo12:.LANCHOR4
	adrp	x0, .LC135
	add	x2, x2, 760
	mov	w1, 3676
	add	x0, x0, :lo12:.LC135
	bl	printk
.L2969:
	bl	nand_flash_print_info
	mov	w22, 0
	b	.L2927
	.size	nand_flash_init, .-nand_flash_init
	.align	2
	.global	ftl_sysblk_dump
	.type	ftl_sysblk_dump, %function
ftl_sysblk_dump:
	sub	sp, sp, #144
	stp	x29, x30, [sp, 48]
	add	x29, sp, 48
	stp	x19, x20, [sp, 64]
	mov	w20, 0
	stp	x25, x26, [sp, 112]
	adrp	x26, .LANCHOR3
	stp	x27, x28, [sp, 128]
	add	x26, x26, :lo12:.LANCHOR3
	stp	x21, x22, [sp, 80]
	adrp	x22, .LC195
	stp	x23, x24, [sp, 96]
	and	w24, w0, 65535
	mov	w0, 1
	bl	buf_alloc
	ldr	x27, [x0, 8]
	mov	x25, x0
	add	x22, x22, :lo12:.LC195
	mov	w19, 0
	mov	w28, 1
.L3015:
	ldrh	w0, [x26, 1376]
	cmp	w0, w19
	bhi	.L3017
	add	x1, x27, 704
	mov	w3, 32
	mov	w2, 4
	adrp	x0, .LC211
	add	x0, x0, :lo12:.LC211
	bl	rknand_print_hex
	mov	x0, x25
	bl	zbuf_free
	cbz	w20, .L3018
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 776
	mov	w2, 1619
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3018:
	mov	w0, w20
	ldp	x19, x20, [sp, 64]
	ldp	x21, x22, [sp, 80]
	ldp	x23, x24, [sp, 96]
	ldp	x25, x26, [sp, 112]
	ldp	x27, x28, [sp, 128]
	ldp	x29, x30, [sp, 48]
	add	sp, sp, 144
	ret
.L3017:
	ldrh	w21, [x26, 1410]
	ldrb	w3, [x26, 1946]
	ldr	x1, [x25, 8]
	ldr	x2, [x25, 24]
	madd	w21, w21, w24, w19
	mov	w0, w21
	bl	ftl_read_ppa_page
	mov	w23, w0
	ldr	x1, [x25, 24]
	mov	w4, w0
	ldr	x0, [x25, 8]
	mov	w3, w21
	ldr	w2, [x1, 12]
	str	w2, [sp, 32]
	ldr	w2, [x1, 8]
	str	w2, [sp, 24]
	ldr	w2, [x1, 4]
	str	w2, [sp, 16]
	mov	w2, w19
	add	w19, w19, 1
	ldr	w1, [x1]
	and	w19, w19, 65535
	str	w1, [sp, 8]
	ldr	w1, [x0, 12]
	str	w1, [sp]
	mov	w1, w24
	ldp	w5, w6, [x0]
	ldr	w7, [x0, 8]
	mov	x0, x22
	bl	printk
	cmp	w23, 512
	ccmn	w23, #1, 4, ne
	csel	w20, w20, w28, ne
	b	.L3015
	.size	ftl_sysblk_dump, .-ftl_sysblk_dump
	.align	2
	.global	ftl_open_sblk_recovery
	.type	ftl_open_sblk_recovery, %function
ftl_open_sblk_recovery:
	stp	x29, x30, [sp, -352]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR2
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	str	x1, [x29, 112]
	tbz	x0, 12, .L3026
	ldrh	w1, [x19, 2]
	adrp	x0, .LC212
	add	x0, x0, :lo12:.LC212
	bl	printk
.L3026:
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L3027
	ldrb	w1, [x19, 5]
	adrp	x0, .LC213
	add	x0, x0, :lo12:.LC213
	bl	printk
.L3027:
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L3028
	ldrh	w1, [x19]
	adrp	x0, .LC214
	add	x0, x0, :lo12:.LC214
	bl	printk
.L3028:
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L3029
	ldrh	w2, [x19, 18]
	adrp	x0, .LC215
	ldrh	w1, [x19, 16]
	add	x0, x0, :lo12:.LC215
	bl	printk
.L3029:
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L3030
	ldrb	w1, [x19, 9]
	adrp	x0, .LC216
	add	x0, x0, :lo12:.LC216
	bl	printk
.L3030:
	ldrh	w0, [x19, 10]
	adrp	x24, .LANCHOR0
	strh	w0, [x19, 14]
	add	x0, x24, :lo12:.LANCHOR0
	ldrh	w1, [x19]
	ldrh	w0, [x0, 1096]
	cmp	w1, w0
	bcs	.L3025
	mov	w0, 1
	bl	buf_alloc
	adrp	x20, .LANCHOR3
	mov	x27, x0
	add	x0, x20, :lo12:.LANCHOR3
	add	x25, x29, 160
	mov	w2, 64
	add	x28, x29, 288
	ldr	x1, [x27, 8]
	ldrb	w0, [x0, 1946]
	sub	w0, w0, #2
	sbfiz	x0, x0, 9, 32
	add	x0, x1, x0
	mov	w1, 255
	str	x0, [x29, 144]
	mov	x0, x25
	bl	ftl_memset
	mov	w2, 64
	mov	w1, 255
	add	x0, x29, 224
	bl	ftl_memset
	mov	w2, 64
	mov	w1, 255
	mov	x0, x28
	bl	ftl_memset
	ldrb	w22, [x19, 5]
	mov	w0, 2
	ldrh	w23, [x19, 2]
	str	w0, [x29, 152]
	adrp	x0, .LANCHOR5
	str	wzr, [x29, 120]
	add	x0, x0, :lo12:.LANCHOR5
	str	x0, [x29, 104]
.L3032:
	add	x0, x20, :lo12:.LANCHOR3
	ldrh	w0, [x0, 1376]
	cmp	w0, w23
	bhi	.L3049
.L3035:
	add	x2, x20, :lo12:.LANCHOR3
	ldrh	w0, [x19, 10]
	ldrh	w1, [x19, 6]
	strh	w23, [x19, 2]
	add	w1, w1, w0
	ldrh	w2, [x2, 1376]
	ldrb	w0, [x19, 9]
	strb	w22, [x19, 5]
	mul	w0, w0, w2
	cmp	w1, w0
	beq	.L3050
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 792
	mov	w2, 1802
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3050:
	add	x0, x20, :lo12:.LANCHOR3
	ldrh	w3, [x19, 10]
	mov	w1, 0
	ldr	x4, [x0, 1928]
	mov	w0, 0
.L3051:
	cmp	w1, w3
	bcc	.L3053
	add	x1, x20, :lo12:.LANCHOR3
	ldrb	w22, [x19, 9]
	ldrh	w1, [x1, 1376]
	madd	w22, w22, w1, w0
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	sub	w22, w22, w3
	and	w22, w22, 65535
	tbz	x0, 12, .L3054
	add	x0, x24, :lo12:.LANCHOR0
	ldrh	w1, [x19]
	ldr	x0, [x0, 1120]
	ubfiz	x2, x1, 1, 16
	ldrh	w3, [x0, x2]
	adrp	x0, .LC219
	mov	w2, w22
	add	x0, x0, :lo12:.LC219
	bl	printk
.L3054:
	add	x0, x24, :lo12:.LANCHOR0
	ldrh	w1, [x19]
	ldr	x0, [x0, 1120]
	strh	w22, [x0, x1, lsl 1]
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	tbz	x0, 14, .L3055
	ldp	w1, w2, [x29, 160]
	adrp	x0, .LC220
	ldp	w3, w4, [x29, 168]
	add	x0, x0, :lo12:.LC220
	bl	printk
.L3055:
	add	x0, x20, :lo12:.LANCHOR3
	mov	w1, 0
	mov	x23, 0
	ldrb	w2, [x0, 1946]
	ldr	x0, [x27, 8]
	lsl	w2, w2, 9
	bl	ftl_memset
	adrp	x0, .LC221
	add	x0, x0, :lo12:.LC221
	str	x0, [x29, 128]
	adrp	x0, .LC222
	add	x0, x0, :lo12:.LC222
	str	x0, [x29, 112]
.L3056:
	add	x1, x20, :lo12:.LANCHOR3
	ldr	w2, [x29, 152]
	str	w23, [x29, 140]
	ldrb	w0, [x1, 1321]
	mul	w0, w0, w2
	cmp	w23, w0
	bcc	.L3068
	adrp	x22, .LC223
	adrp	x23, .LC222
	mov	x20, x1
	add	x22, x22, :lo12:.LC223
	add	x23, x23, :lo12:.LC222
	mov	x24, 0
.L3069:
	ldrb	w0, [x20, 1321]
	ldr	w1, [x29, 152]
	mul	w0, w0, w1
	cmp	w0, w24
	bhi	.L3075
	mov	x0, x27
	bl	zbuf_free
	ldrh	w1, [x19, 12]
	ldrh	w0, [x20, 1376]
	ldrb	w2, [x19, 9]
	madd	w0, w0, w2, w1
	mov	x1, -4
	add	x0, x1, w0, sxtw 2
	ldr	x1, [x20, 1928]
	ldr	w0, [x1, x0]
	cmn	w0, #1
	beq	.L3076
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 792
	mov	w2, 1917
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3076:
	ldrh	w0, [x19, 6]
	cmp	w0, 1
	bne	.L3025
	mov	x0, x19
	bl	ftl_write_last_log_page
.L3025:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 352
	ret
.L3049:
	ldrb	w22, [x19, 5]
.L3033:
	ldrb	w0, [x19, 9]
	cmp	w0, w22
	bhi	.L3048
	add	w23, w23, 1
	strb	wzr, [x19, 5]
	and	w23, w23, 65535
	b	.L3032
.L3048:
	add	x0, x19, w22, sxtw 1
	ldrh	w0, [x0, 16]
	str	w0, [x29, 140]
	mov	w0, 65535
	ldr	w1, [x29, 140]
	cmp	w1, w0
	beq	.L3034
	add	x0, x20, :lo12:.LANCHOR3
	ldr	w2, [x29, 140]
	ldrh	w1, [x0, 1410]
	ldrb	w3, [x0, 1946]
	madd	w1, w1, w2, w23
	ldr	x2, [x27, 24]
	str	w1, [x29, 128]
	ldr	x1, [x27, 8]
	ldr	w0, [x29, 128]
	bl	ftl_read_ppa_page
	mov	w26, w0
	cmp	w0, 512
	beq	.L3035
	cmn	w0, #1
	beq	.L3036
	ldr	x0, [x27, 24]
	ldr	w1, [x0]
	cmn	w1, #1
	bne	.L3036
	ldr	w0, [x0, 4]
	cmn	w0, #1
	bne	.L3036
	ldr	x0, [x27, 8]
	ldr	w0, [x0]
	cmn	w0, #1
	beq	.L3035
.L3036:
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	mov	w1, 1
	strb	w1, [x0, 401]
	ldrb	w0, [x19, 9]
	ldrh	w1, [x19, 10]
	madd	w0, w0, w23, w22
	cmp	w1, w0
	beq	.L3037
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 792
	mov	w2, 1694
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3037:
	ldrh	w0, [x19, 10]
	ldrh	w1, [x19, 6]
	ldrb	w2, [x19, 9]
	add	w1, w1, w0
	add	x0, x20, :lo12:.LANCHOR3
	ldrh	w0, [x0, 1376]
	mul	w0, w0, w2
	cmp	w1, w0
	beq	.L3038
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 792
	mov	w2, 1695
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3038:
	add	x0, x20, :lo12:.LANCHOR3
	str	x0, [x29, 152]
	ldrb	w0, [x0, 1946]
	cmp	w0, 8
	bls	.L3039
	ldr	x0, [x27, 24]
	mov	w2, 15555
	movk	w2, 0xf55f, lsl 16
	ldr	w1, [x0]
	cmp	w1, w2
	beq	.L3039
	cmn	w26, #1
	beq	.L3041
	ldr	w1, [x0, 4]
	cmn	w1, #1
	bne	.L3042
.L3045:
	ldr	x1, [x27, 24]
	ldr	w0, [x1, 4]
	cmn	w0, #1
	bne	.L3043
.L3041:
	ldrh	w0, [x19, 6]
	sub	w0, w0, #1
	strh	w0, [x19, 6]
	ldrh	w0, [x19, 10]
	add	w0, w0, 1
	strh	w0, [x19, 10]
	mov	w0, 4
	str	w0, [x29, 152]
	mov	w0, 1
	str	w0, [x29, 120]
.L3034:
	add	w22, w22, 1
	and	w22, w22, 65535
	b	.L3033
.L3042:
	ldr	w1, [x0, 16]
	mov	w2, 21320
	movk	w2, 0x4841, lsl 16
	cmp	w1, w2
	bne	.L3045
	ldr	w2, [x0, 20]
	mov	w1, 1024
	ldr	x0, [x29, 144]
	str	w2, [x29, 152]
	bl	js_hash
	ldr	w2, [x29, 152]
	cmp	w2, w0
	beq	.L3045
	ldr	x0, [x29, 144]
	mov	w1, 1024
	bl	js_hash
	mov	w5, w0
	ldr	w3, [x29, 128]
	mov	w4, w26
	ldr	w1, [x29, 140]
	mov	w2, w23
	adrp	x0, .LC217
	add	x0, x0, :lo12:.LC217
	bl	printk
	ldr	x1, [x29, 144]
	mov	w3, 16
	mov	w2, 4
	adrp	x0, .LC218
	add	x0, x0, :lo12:.LC218
	bl	rknand_print_hex
	add	x0, x20, :lo12:.LANCHOR3
	ldr	x1, [x27, 24]
	mov	w2, 4
	ldrb	w0, [x0, 1946]
	lsr	w3, w0, 1
	adrp	x0, .LC183
	add	x0, x0, :lo12:.LC183
	bl	rknand_print_hex
	b	.L3041
.L3039:
	cmn	w26, #1
	bne	.L3045
	b	.L3041
.L3043:
	ldr	w1, [x1]
	mov	w2, 15555
	movk	w2, 0xf55f, lsl 16
	cmp	w1, w2
	beq	.L3041
	bl	lpa_hash_get_ppa
	ldr	x1, [x29, 112]
	cbz	x1, .L3046
	ldr	x3, [x27, 24]
	ldr	w1, [x3, 8]
	cmp	w0, w1
	beq	.L3046
	cmn	w0, #1
	beq	.L3046
	add	x7, x24, :lo12:.LANCHOR0
	add	x4, x20, :lo12:.LANCHOR3
	mov	w5, 24
	mov	w26, 1
	ldrb	w1, [x7, 1205]
	ldrh	w8, [x4, 1304]
	sub	w1, w5, w1
	sub	w1, w1, w8
	lsr	w2, w0, w8
	lsl	w1, w26, w1
	sub	w1, w1, #1
	and	w1, w1, w2
	ldrb	w2, [x4, 1306]
	udiv	w1, w1, w2
	ldr	x2, [x29, 112]
	ldrh	w2, [x2]
	cmp	w2, w1, uxth
	bne	.L3046
	ldr	x1, [x29, 104]
	ldr	w8, [x3]
	ldrb	w3, [x4, 1946]
	stp	w5, w8, [x29, 136]
	ldr	x2, [x1, 376]
	ldr	x1, [x27, 8]
	str	x7, [x29, 120]
	str	x4, [x29, 152]
	bl	ftl_read_ppa_page
	ldr	x0, [x29, 104]
	ldr	w8, [x29, 140]
	ldr	x0, [x0, 376]
	ldr	w0, [x0]
	cmp	w8, w0
	bhi	.L3046
	ldr	x0, [x27, 24]
	ldr	w3, [x0, 8]
	cmn	w3, #1
	beq	.L3041
	ldr	x7, [x29, 120]
	ldr	x4, [x29, 152]
	ldr	w5, [x29, 136]
	ldrb	w2, [x7, 1205]
	ldrh	w1, [x4, 1304]
	sub	w5, w5, w2
	sub	w5, w5, w1
	lsr	w0, w3, w1
	lsl	w26, w26, w5
	sub	w26, w26, #1
	and	w26, w26, w0
	ldrb	w0, [x4, 1306]
	udiv	w0, w26, w0
	bl	ftl_vpn_decrement
	b	.L3041
.L3053:
	ldrh	w2, [x19, 12]
	add	w2, w2, w1
	ldr	w2, [x4, x2, lsl 2]
	cmn	w2, #1
	beq	.L3052
	add	w22, w0, 1
	and	w0, w22, 65535
.L3052:
	add	w1, w1, 1
	b	.L3051
.L3068:
	ldr	w0, [x25, x23, lsl 2]
	cmn	w0, #1
	bne	.L3057
.L3061:
	add	x1, x24, :lo12:.LANCHOR0
	ldr	x0, [x27, 24]
	mov	w22, -1
	mov	x2, 0
	ldr	x1, [x1, 3384]
	ldr	w1, [x1, 8]
	str	w1, [x0]
	ldr	x0, [x27, 24]
	str	w22, [x0, 4]
	ldr	x0, [x27, 24]
	str	w22, [x0, 8]
	ldr	x0, [x27, 24]
	str	wzr, [x0, 12]
	ldr	x0, [x27, 24]
	str	wzr, [x0, 16]
	ldr	x0, [x27, 8]
	str	wzr, [x0]
	mov	w0, 2
	ldr	x1, [x27, 24]
	add	x1, x1, 16
	bl	ftl_debug_info_fill
.L3058:
	ldr	w0, [x29, 120]
	cbz	w0, .L3063
	ldrh	w0, [x19, 6]
	cmp	w0, 1
	bls	.L3063
	add	x0, x20, :lo12:.LANCHOR3
	str	x0, [x29, 144]
.L3122:
	mov	x0, x19
	bl	ftl_get_new_free_page
	mov	w26, w0
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	tbz	x0, 14, .L3065
	ldrh	w0, [x19, 12]
	mov	w1, w26
	ldrh	w3, [x19, 10]
	add	w3, w3, w0
	ldr	x0, [x27, 24]
	sub	w3, w3, #1
	ldr	w2, [x0, 4]
	ldr	x0, [x29, 112]
	bl	printk
.L3065:
	ldr	x0, [x29, 144]
	ldr	w2, [x29, 152]
	ldrh	w1, [x19, 6]
	ldrb	w0, [x0, 1321]
	mul	w0, w0, w2
	ldr	w2, [x29, 140]
	add	w0, w0, 1
	sub	w0, w0, w2
	cmp	w1, w0
	bls	.L3063
	ldr	x0, [x29, 144]
	ldr	x1, [x27, 8]
	ldr	x2, [x27, 24]
	ldrb	w3, [x0, 1946]
	mov	w0, w26
	bl	ftl_prog_ppa_page
	mov	w1, w0
	ldrh	w0, [x19]
	str	w1, [x29, 104]
	bl	ftl_vpn_decrement
	ldr	w1, [x29, 104]
	cmn	w22, #1
	ccmn	w1, #1, 4, ne
	beq	.L3066
	add	x0, x29, 224
	ldrh	w1, [x19, 12]
	str	w26, [x0, x23, lsl 2]
	ldrh	w0, [x19, 10]
	add	w0, w0, w1
	sub	w0, w0, #1
	str	w0, [x28, x23, lsl 2]
.L3063:
	add	x23, x23, 1
	b	.L3056
.L3057:
	ldrb	w3, [x1, 1946]
	ldr	x2, [x27, 24]
	ldr	x1, [x27, 8]
	bl	ftl_read_ppa_page
	mov	w22, w0
	ldr	x0, [x27, 24]
	ldr	w0, [x0, 4]
	bl	lpa_hash_get_ppa
	mov	w26, w0
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	tbz	x0, 14, .L3059
	ldr	x0, [x27, 24]
	mov	w1, w26
	ldr	w2, [x25, x23, lsl 2]
	ldr	w3, [x0, 4]
	ldr	x0, [x29, 128]
	bl	printk
.L3059:
	ldr	w0, [x25, x23, lsl 2]
	mov	w1, 1
	mov	x2, 0
	cmp	w26, w0
	ldr	x0, [x27, 24]
	csinv	w22, w22, wzr, eq
	str	w26, [x0, 8]
	ldr	x0, [x27, 24]
	str	w1, [x0, 12]
	ldr	x0, [x27, 24]
	str	wzr, [x0, 16]
	mov	w0, 2
	ldr	x1, [x27, 24]
	add	x1, x1, 16
	bl	ftl_debug_info_fill
	cmn	w22, #1
	bne	.L3058
	b	.L3061
.L3066:
	ldrh	w0, [x19, 6]
	cmp	w0, 1
	bls	.L3063
	cmn	w22, #1
	bne	.L3122
	b	.L3063
.L3075:
	add	x0, x29, 224
	ldr	w0, [x0, x24, lsl 2]
	cmn	w0, #1
	beq	.L3071
	ldrb	w3, [x20, 1946]
	ldr	w0, [x25, x24, lsl 2]
	ldr	x1, [x27, 8]
	ldr	x2, [x27, 24]
	bl	ftl_read_ppa_page
	cmp	w0, 256
	ccmn	w0, #1, 4, ne
	bne	.L3071
	add	x0, x29, 224
	ldrb	w3, [x20, 1946]
	ldr	x1, [x27, 8]
	ldr	x2, [x27, 24]
	ldr	w0, [x0, x24, lsl 2]
	bl	ftl_read_ppa_page
	mov	w26, w0
	ldr	w0, [x21, #:lo12:.LANCHOR2]
	tbz	x0, 14, .L3073
	ldr	x0, [x27, 24]
	mov	w1, w26
	ldr	w3, [x25, x24, lsl 2]
	ldr	w2, [x0, 8]
	mov	x0, x23
	bl	printk
.L3073:
	cmn	w26, #1
	beq	.L3071
	ldr	x0, [x27, 24]
	ldr	w2, [x25, x24, lsl 2]
	ldr	w1, [x0, 8]
	cmp	w2, w1
	bne	.L3071
	ldr	w1, [x21, #:lo12:.LANCHOR2]
	tbz	x1, 14, .L3074
	ldr	w1, [x0, 4]
	mov	x0, x22
	ldr	w3, [x28, x24, lsl 2]
	bl	printk
.L3074:
	ldr	x0, [x27, 24]
	lsl	x1, x24, 2
	ldrh	w2, [x28, x1]
	ldr	w1, [x0, 8]
	ldr	w0, [x0, 4]
	bl	lpa_hash_update_ppa
.L3071:
	add	x24, x24, 1
	b	.L3069
.L3046:
	ldr	x2, [x27, 24]
	add	x1, x24, :lo12:.LANCHOR0
	ldr	w0, [x1, 3364]
	ldr	w3, [x2, 4]
	cmp	w3, w0
	bcs	.L3041
	add	x4, x20, :lo12:.LANCHOR3
	ldrb	w0, [x19, 9]
	ldrh	w3, [x19, 10]
	ldrh	w4, [x4, 1376]
	mul	w0, w0, w4
	sub	w0, w0, #1
	cmp	w3, w0
	bge	.L3041
	ldr	x0, [x1, 3384]
	ldr	w2, [x2]
	ldr	w1, [x0, 8]
	cmp	w2, w1
	bls	.L3047
	str	w2, [x0, 8]
.L3047:
	ldr	x0, [x27, 24]
	ldrh	w1, [x19, 12]
	ldrh	w2, [x19, 10]
	add	w2, w2, w1
	ldr	w1, [x0, 8]
	ldr	w0, [x0, 4]
	bl	lpa_hash_update_ppa
	ldr	w0, [x29, 164]
	str	w0, [x29, 160]
	ldr	w0, [x29, 168]
	str	w0, [x29, 164]
	ldr	w0, [x29, 172]
	str	w0, [x29, 168]
	ldr	w0, [x29, 128]
	str	w0, [x29, 172]
	b	.L3041
	.size	ftl_open_sblk_recovery, .-ftl_open_sblk_recovery
	.align	2
	.global	dump_ftl_info
	.type	dump_ftl_info, %function
dump_ftl_info:
	stp	x29, x30, [sp, -32]!
	adrp	x0, .LC224
	add	x0, x0, :lo12:.LC224
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	adrp	x20, .LANCHOR3
	add	x20, x20, :lo12:.LANCHOR3
	ldrb	w1, [x19, 3353]
	bl	printk
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	ldrh	w3, [x0, 386]
	ldrb	w2, [x0, 385]
	ldrb	w1, [x0, 384]
	adrp	x0, .LC225
	add	x0, x0, :lo12:.LC225
	bl	printk
	ldr	x0, [x19, 3384]
	ldrh	w2, [x0, 140]
	ldrh	w1, [x0, 130]
	adrp	x0, .LC226
	add	x0, x0, :lo12:.LC226
	bl	printk
	ldr	x1, [x19, 1128]
	adrp	x0, .LC227
	add	x0, x0, :lo12:.LC227
	ldrh	w5, [x1, 26]
	ldrh	w4, [x1, 22]
	ldrb	w3, [x1, 21]
	ldrh	w2, [x1, 18]
	ldrh	w1, [x1, 16]
	bl	printk
	ldr	x1, [x19, 1128]
	adrp	x0, .LC228
	add	x0, x0, :lo12:.LC228
	ldrh	w5, [x1, 58]
	ldrh	w4, [x1, 54]
	ldrb	w3, [x1, 53]
	ldrh	w2, [x1, 50]
	ldrh	w1, [x1, 48]
	bl	printk
	ldr	x1, [x19, 1128]
	adrp	x0, .LC229
	add	x0, x0, :lo12:.LC229
	ldrh	w5, [x1, 90]
	ldrh	w4, [x1, 86]
	ldrb	w3, [x1, 85]
	ldrh	w2, [x1, 82]
	ldrh	w1, [x1, 80]
	bl	printk
	ldrb	w0, [x20, 1321]
	mov	w2, 4
	ldrh	w3, [x20, 1376]
	ldr	x1, [x20, 1928]
	mul	w3, w3, w0
	adrp	x0, .LC230
	add	x0, x0, :lo12:.LC230
	lsl	w3, w3, 1
	bl	rknand_print_hex
	ldrh	w3, [x19, 1096]
	mov	w2, 2
	ldr	x1, [x19, 1120]
	adrp	x0, .LC231
	add	x0, x0, :lo12:.LC231
	bl	rknand_print_hex
	ldr	x1, [x19, 3384]
	mov	w2, 4
	adrp	x0, .LC211
	add	x0, x0, :lo12:.LC211
	add	x1, x1, 704
	ldrh	w3, [x1, -6]
	bl	rknand_print_hex
	ldrh	w3, [x19, 1096]
	mov	w2, 4
	ldr	x1, [x19, 1104]
	adrp	x0, .LC232
	add	x0, x0, :lo12:.LC232
	bl	rknand_print_hex
	add	x1, x20, 1416
	mov	w3, 256
	mov	w2, 2
	adrp	x0, .LC233
	add	x0, x0, :lo12:.LC233
	bl	rknand_print_hex
	ldrb	w0, [x20, 1321]
	mov	w2, 2
	ldrh	w3, [x20, 1376]
	ldr	x1, [x20, 1936]
	mul	w3, w3, w0
	adrp	x0, .LC234
	add	x0, x0, :lo12:.LC234
	lsl	w3, w3, 1
	bl	rknand_print_hex
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	dump_ftl_info, .-dump_ftl_info
	.align	2
	.global	pm_ppa_update_check
	.type	pm_ppa_update_check, %function
pm_ppa_update_check:
	adrp	x3, .LANCHOR0
	add	x3, x3, :lo12:.LANCHOR0
	adrp	x6, .LANCHOR3
	add	x6, x6, :lo12:.LANCHOR3
	mov	w5, 24
	ldrb	w4, [x3, 1205]
	ldrh	w7, [x6, 1304]
	sub	w4, w5, w4
	ldr	x3, [x3, 1104]
	sub	w5, w4, w7
	mov	w4, 1
	lsr	w7, w2, w7
	lsl	w4, w4, w5
	ldrb	w5, [x6, 1306]
	sub	w4, w4, #1
	and	w4, w4, w7
	udiv	w4, w4, w5
	add	x4, x3, w4, uxth 2
	ldrb	w3, [x4, 2]
	ubfx	x3, x3, 5, 3
	cmp	w3, 1
	ccmp	w3, 7, 4, ne
	bne	.L3151
	mov	w3, w2
	mov	w2, w1
	mov	x1, x0
	stp	x29, x30, [sp, -16]!
	adrp	x0, .LC235
	add	x0, x0, :lo12:.LC235
	add	x29, sp, 0
	bl	printk
	bl	dump_ftl_info
	mov	w0, -1
	ldp	x29, x30, [sp], 16
	ret
.L3151:
	mov	w0, 0
	ret
	.size	pm_ppa_update_check, .-pm_ppa_update_check
	.align	2
	.type	load_l2p_region, %function
load_l2p_region:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 65535
	stp	x21, x22, [sp, 32]
	and	x21, x1, 65535
	stp	x23, x24, [sp, 48]
	cmp	w21, 31
	stp	x25, x26, [sp, 64]
	bls	.L3157
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 816
	mov	w2, 32
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3157:
	adrp	x23, .LANCHOR0
	add	x22, x23, :lo12:.LANCHOR0
	adrp	x19, .LANCHOR5
	ldr	x0, [x22, 3384]
	ldrh	w2, [x0, 698]
	cmp	w2, w20
	bcs	.L3158
	mov	w1, w20
	adrp	x0, .LC236
	add	x19, x19, :lo12:.LANCHOR5
	add	x0, x0, :lo12:.LC236
	bl	printk
	mov	x0, 0
	mov	w1, 255
	ldrh	w2, [x19, 462]
	ldr	x0, [x0, 8]
	bl	ftl_memset
	ldr	x0, [x22, 3384]
	ldrh	w0, [x0, 698]
	cmp	w0, w20
	bcc	.L3159
.L3169:
	mov	w0, 0
.L3156:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L3159:
	mov	w2, 37
.L3170:
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 816
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	b	.L3169
.L3158:
	add	x0, x0, w20, sxtw 2
	adrp	x22, .LANCHOR3
	lsl	x1, x21, 4
	ldr	w24, [x0, 704]
	add	x0, x22, :lo12:.LANCHOR3
	add	x2, x0, 1960
	add	x26, x2, x1
	strh	w20, [x2, x1]
	strh	wzr, [x26, 2]
	cbnz	w24, .L3161
	add	x19, x19, :lo12:.LANCHOR5
	mov	w1, w20
	mov	w2, 0
	adrp	x0, .LC237
	add	x0, x0, :lo12:.LC237
	bl	printk
	ldrh	w2, [x19, 462]
	mov	w1, 255
	ldr	x0, [x26, 8]
	bl	ftl_memset
	b	.L3169
.L3161:
	add	x25, x19, :lo12:.LANCHOR5
	ldrb	w3, [x0, 1946]
	ldr	x1, [x26, 8]
	mov	w0, w24
	ldr	x2, [x25, 432]
	bl	ftl_read_ppa_page
	ldr	x1, [x25, 432]
	ldr	w2, [x1]
	cmp	w2, w20
	bne	.L3162
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L3162
.L3166:
	add	x19, x19, :lo12:.LANCHOR5
	ldr	x0, [x19, 432]
	ldr	w0, [x0]
	cmp	w20, w0
	beq	.L3169
	mov	w2, 73
	b	.L3170
.L3162:
	add	x23, x23, :lo12:.LANCHOR0
	mov	w4, w24
	mov	w3, w0
	mov	w1, w20
	adrp	x0, .LC238
	add	x0, x0, :lo12:.LC238
	bl	printk
	add	x22, x22, :lo12:.LANCHOR3
	ldr	x1, [x23, 3384]
	mov	w2, 4
	adrp	x0, .LC239
	add	x0, x0, :lo12:.LC239
	add	x1, x1, 704
	add	x23, x19, :lo12:.LANCHOR5
	ldrh	w3, [x1, -6]
	bl	rknand_print_hex
	add	x0, x22, 1960
	ldrb	w3, [x22, 1946]
	add	x21, x0, x21, lsl 4
	mov	w2, 4
	adrp	x0, .LC218
	add	x0, x0, :lo12:.LC218
	lsl	w3, w3, 7
	ldr	x1, [x21, 8]
	bl	rknand_print_hex
	ldr	x1, [x23, 432]
	mov	w3, 16
	mov	w2, 4
	adrp	x0, .LC240
	add	x0, x0, :lo12:.LC240
	bl	rknand_print_hex
	ldrb	w3, [x22, 1946]
	mov	w0, w24
	ldr	x1, [x21, 8]
	ldr	x2, [x23, 432]
	bl	ftl_read_ppa_page
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	bne	.L3165
	ldrh	w2, [x23, 462]
	mov	w1, 255
	ldr	x0, [x21, 8]
	bl	ftl_memset
.L3167:
	mov	w0, -1
	b	.L3156
.L3165:
	ldr	x0, [x23, 432]
	ldr	w0, [x0]
	cmp	w20, w0
	beq	.L3166
	b	.L3167
	.size	load_l2p_region, .-load_l2p_region
	.align	2
	.global	pm_gc
	.type	pm_gc, %function
pm_gc:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x0, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	adrp	x20, .LANCHOR5
	add	x1, x20, :lo12:.LANCHOR5
	ldr	x0, [x0, 3384]
	ldrh	w2, [x0, 688]
	ldrh	w0, [x1, 220]
	sub	w0, w0, #1
	cmp	w2, w0
	bge	.L3172
	ldr	w0, [x1, 212]
	cbz	w0, .L3173
.L3172:
	bl	pm_free_sblk
	add	x1, x19, :lo12:.LANCHOR0
	add	x3, x20, :lo12:.LANCHOR5
	ldr	x2, [x1, 3384]
	ldrh	w1, [x3, 220]
	sub	w1, w1, #1
	ldrh	w4, [x2, 688]
	cmp	w4, w1
	bge	.L3174
	ldr	w1, [x3, 212]
	cbz	w1, .L3173
.L3174:
	add	x20, x20, :lo12:.LANCHOR5
	add	x0, x2, w0, uxth 1
	str	wzr, [x20, 212]
	mov	w20, 65535
	ldrh	w22, [x0, 416]
	cmp	w22, w20
	bne	.L3176
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 832
	mov	w2, 182
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	bl	pm_free_sblk
	add	x1, x19, :lo12:.LANCHOR0
	ldr	x1, [x1, 3384]
	add	x0, x1, w0, uxth 1
	ldrh	w22, [x0, 416]
	cmp	w22, w20
	beq	.L3173
.L3176:
	bl	pm_select_ram_region
	adrp	x24, .LANCHOR3
	and	x21, x0, 65535
	add	x0, x24, :lo12:.LANCHOR3
	lsl	x1, x21, 4
	add	x0, x0, 1960
	add	x20, x0, x1
	mov	x23, x21
	ldrh	w0, [x0, x1]
	mov	w1, 65535
	cmp	w0, w1
	beq	.L3177
	ldr	x1, [x20, 8]
	cbz	x1, .L3177
	ldrsh	w2, [x20, 2]
	tbz	w2, #31, .L3177
	bl	pm_write_page
	ldrh	w0, [x20, 2]
	and	w0, w0, 32767
	strh	w0, [x20, 2]
.L3177:
	add	x24, x24, :lo12:.LANCHOR3
	add	x19, x19, :lo12:.LANCHOR0
	add	x0, x24, 1960
	mov	w20, 0
	add	x21, x0, x21, lsl 4
.L3178:
	ldr	x2, [x19, 3384]
	ldrh	w0, [x2, 698]
	cmp	w0, w20
	bhi	.L3181
	bl	pm_free_sblk
.L3173:
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L3181:
	ldrb	w1, [x19, 1205]
	mov	w0, 24
	ldrh	w3, [x24, 1304]
	add	x2, x2, w20, sxtw 2
	sub	w0, w0, w1
	sub	w1, w0, w3
	mov	w0, 1
	lsl	w0, w0, w1
	ldr	w1, [x2, 704]
	sub	w0, w0, #1
	lsr	w1, w1, w3
	and	w0, w0, w1
	ldrb	w1, [x24, 1306]
	udiv	w0, w0, w1
	cmp	w22, w0, uxth
	bne	.L3179
	mov	w1, w23
	mov	w0, w20
	bl	load_l2p_region
	cbnz	w0, .L3180
	ldr	x1, [x21, 8]
	mov	w0, w20
	bl	pm_write_page
.L3180:
	mov	w0, -1
	strh	w0, [x21]
.L3179:
	add	w20, w20, 1
	and	w20, w20, 65535
	b	.L3178
	.size	pm_gc, .-pm_gc
	.align	2
	.global	pm_flush_id
	.type	pm_flush_id, %function
pm_flush_id:
	stp	x29, x30, [sp, -32]!
	adrp	x2, .LANCHOR3
	add	x2, x2, :lo12:.LANCHOR3
	ubfiz	x0, x0, 4, 16
	add	x2, x2, 1960
	add	x29, sp, 0
	str	x19, [sp, 16]
	add	x19, x2, x0
	ldrh	w0, [x2, x0]
	ldr	x1, [x19, 8]
	bl	pm_write_page
	ldrh	w0, [x19, 2]
	and	w0, w0, 32767
	strh	w0, [x19, 2]
	adrp	x19, .LANCHOR5
	add	x19, x19, :lo12:.LANCHOR5
	ldr	w0, [x19, 424]
	cbz	w0, .L3190
	bl	pm_gc
	str	wzr, [x19, 424]
.L3190:
	mov	w0, 0
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	pm_flush_id, .-pm_flush_id
	.align	2
	.global	pm_flush
	.type	pm_flush, %function
pm_flush:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR3
	add	x19, x19, :lo12:.LANCHOR3
	mov	w20, 0
	add	x19, x19, 1962
.L3197:
	ldrsh	w0, [x19]
	tbz	w0, #31, .L3196
	mov	w0, w20
	bl	pm_flush_id
.L3196:
	add	w20, w20, 1
	add	x19, x19, 16
	and	w20, w20, 65535
	cmp	w20, 32
	bne	.L3197
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	pm_flush, .-pm_flush
	.align	2
	.global	flt_sys_flush
	.type	flt_sys_flush, %function
flt_sys_flush:
	stp	x29, x30, [sp, -16]!
	add	x29, sp, 0
	bl	ftl_flush
	bl	pm_flush
	bl	ftl_ext_info_flush
	mov	w0, 0
	bl	ftl_info_flush
	ldp	x29, x30, [sp], 16
	ret
	.size	flt_sys_flush, .-flt_sys_flush
	.align	2
	.global	zftl_deinit
	.type	zftl_deinit, %function
zftl_deinit:
	stp	x29, x30, [sp, -16]!
	add	x29, sp, 0
	bl	zftl_flash_de_init
	bl	flt_sys_flush
	bl	zftl_flash_de_init
	ldp	x29, x30, [sp], 16
	ret
	.size	zftl_deinit, .-zftl_deinit
	.align	2
	.global	pm_init
	.type	pm_init, %function
pm_init:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR5
	add	x19, x20, :lo12:.LANCHOR5
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	mov	w24, w0
	stp	x25, x26, [sp, 64]
	mov	w0, 1
	stp	x27, x28, [sp, 80]
	mov	w25, -1
	strb	w0, [x19, 440]
	mov	w0, 64
	str	wzr, [x19, 212]
	str	wzr, [x19, 424]
	bl	ftl_dma32_malloc
	str	x0, [x19, 432]
	adrp	x19, .LANCHOR3
	add	x0, x19, :lo12:.LANCHOR3
	add	x21, x0, 1960
	add	x23, x0, 2472
	mov	x22, x0
.L3206:
	strh	w25, [x21]
	strh	wzr, [x21, 2]
	cbz	w24, .L3205
	ldrb	w0, [x22, 1946]
	lsl	w0, w0, 9
	bl	ftl_dma32_malloc
	str	x0, [x21, 8]
.L3205:
	add	x21, x21, 16
	cmp	x21, x23
	bne	.L3206
	add	x0, x19, :lo12:.LANCHOR3
	adrp	x21, .LANCHOR0
	add	x23, x21, :lo12:.LANCHOR0
	mov	w4, 4
	ldr	x26, [x0, 1968]
	add	x0, x20, :lo12:.LANCHOR5
	mov	x2, x26
	ldr	x22, [x0, 432]
	ldr	x0, [x23, 3384]
	mov	x3, x22
	ldrh	w1, [x0, 692]
	ldrb	w0, [x0, 694]
	bl	flash_get_last_written_page
	sxth	w24, w0
	ldr	x0, [x23, 3384]
	mov	w25, w24
	ldrh	w2, [x0, 696]
	cmp	w2, w24
	bgt	.L3207
	ldrh	w1, [x0, 692]
	mov	w3, w24
	adrp	x0, .LC241
	add	x0, x0, :lo12:.LC241
	adrp	x28, .LC243
	add	x28, x28, :lo12:.LC243
	adrp	x27, .LC242
	bl	printk
	ldr	x0, [x23, 3384]
	ldrsh	w23, [x0, 696]
	add	w0, w24, 1
	str	w0, [x29, 124]
	add	x0, x27, :lo12:.LC242
	str	x0, [x29, 112]
.L3208:
	ldr	w0, [x29, 124]
	cmp	w23, w0
	blt	.L3211
	add	x0, x20, :lo12:.LANCHOR5
	add	x21, x21, :lo12:.LANCHOR0
	mov	w1, 1
	add	w25, w25, 1
	strb	w1, [x0, 401]
	ldr	x0, [x21, 3384]
	strh	w25, [x0, 696]
	bl	pm_free_sblk
.L3207:
	add	x19, x19, :lo12:.LANCHOR3
	add	x20, x20, :lo12:.LANCHOR5
	mov	w1, 255
	add	x19, x19, 1960
	ldrh	w2, [x20, 462]
	ldr	x0, [x19, 8]
	bl	ftl_memset
	ldr	x1, [x19, 8]
	mov	w0, -1
	bl	pm_write_page
	ldrb	w0, [x20, 401]
	cbz	w0, .L3212
	ldr	x1, [x19, 8]
	mov	w0, -1
	bl	pm_write_page
	ldr	x1, [x19, 8]
	mov	w0, -1
	bl	pm_write_page
	ldr	x1, [x19, 8]
	mov	w0, -1
	bl	pm_write_page
.L3212:
	bl	pm_free_sblk
	bl	pm_gc
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L3211:
	add	x27, x21, :lo12:.LANCHOR0
	add	x5, x19, :lo12:.LANCHOR3
	mov	x3, x22
	mov	x2, x26
	str	x5, [x29, 104]
	ldr	x0, [x27, 3384]
	ldrh	w1, [x5, 1410]
	ldrb	w4, [x5, 1946]
	ldrh	w24, [x0, 692]
	ldrb	w0, [x0, 694]
	madd	w24, w24, w1, w23
	mov	w1, w24
	bl	flash_read_page_en
	mov	w4, w0
	ldr	x0, [x27, 3384]
	str	w4, [x29, 120]
	mov	w2, w24
	ldr	w1, [x0, 48]
	ldrh	w3, [x0, 694]
	add	w1, w1, 1
	str	w1, [x0, 48]
	ldr	x0, [x29, 112]
	ldr	w1, [x22]
	bl	printk
	ldr	w4, [x29, 120]
	cmp	w4, 512
	ccmn	w4, #1, 4, ne
	beq	.L3209
	ldr	x0, [x27, 3384]
	ldr	w1, [x22]
	ldrh	w0, [x0, 698]
	cmp	w1, w0
	bcs	.L3209
	ldr	w2, [x22, 8]
	ldr	x5, [x29, 104]
	cbz	w2, .L3210
	ldrb	w1, [x5, 1946]
	mov	x0, x26
	str	w2, [x29, 120]
	lsl	w1, w1, 9
	bl	js_hash
	ldr	w2, [x29, 120]
	cmp	w2, w0
	beq	.L3210
	ldr	w1, [x22, 8]
	mov	x0, x28
	bl	printk
.L3209:
	add	w23, w23, 1
	sxth	w23, w23
	b	.L3208
.L3210:
	add	x0, x21, :lo12:.LANCHOR0
	ldr	x1, [x0, 3384]
	ldr	w0, [x22]
	add	x0, x0, 176
	str	w24, [x1, x0, lsl 2]
	b	.L3209
	.size	pm_init, .-pm_init
	.align	2
	.global	pm_log2phys
	.type	pm_log2phys, %function
pm_log2phys:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR3
	stp	x23, x24, [sp, 48]
	mov	x23, x1
	add	x1, x21, :lo12:.LANCHOR3
	stp	x25, x26, [sp, 64]
	stp	x19, x20, [sp, 16]
	mov	w24, w2
	str	x27, [sp, 80]
	adrp	x22, .LANCHOR0
	add	x2, x22, :lo12:.LANCHOR0
	ldrb	w20, [x1, 1946]
	ldr	w2, [x2, 3364]
	lsl	w25, w20, 7
	ubfiz	w20, w20, 7, 9
	cmp	w0, w2
	udiv	w25, w0, w25
	and	w26, w25, 65535
	msub	w20, w26, w20, w0
	bcc	.L3228
	mov	w1, w0
	adrp	x0, .LC244
	add	x0, x0, :lo12:.LC244
	bl	printk
	mov	w0, -1
	cbnz	w24, .L3227
	str	w0, [x23]
.L3227:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L3228:
	and	x20, x20, 65535
	add	x0, x1, 1968
	mov	x19, 0
.L3234:
	ldr	x1, [x0]
	cbz	x1, .L3230
	ldrh	w1, [x0, -8]
	cmp	w1, w26
	bne	.L3230
.L3231:
	cbnz	w24, .L3232
	add	x3, x21, :lo12:.LANCHOR3
	add	x22, x22, :lo12:.LANCHOR0
	add	x0, x3, x19, lsl 4
	mov	w2, 24
	mov	w1, 1
	ldr	x0, [x0, 1968]
	ldr	w0, [x0, x20, lsl 2]
	str	w0, [x23]
	ldrb	w4, [x22, 1205]
	sub	w2, w2, w4
	lsl	w1, w1, w4
	sub	w1, w1, #1
	lsr	w0, w0, w2
	and	w0, w0, w1
	ldrb	w1, [x3, 1412]
	cmp	w0, w1
	bcc	.L3233
	mov	w0, -1
	str	w0, [x23]
.L3233:
	add	x21, x21, :lo12:.LANCHOR3
	add	x21, x21, 1960
	add	x19, x21, x19, lsl 4
	ldrh	w0, [x19, 2]
	mvn	x1, x0
	tst	x1, 32767
	beq	.L3237
	add	w0, w0, 1
	strh	w0, [x19, 2]
.L3237:
	mov	w0, 0
	b	.L3227
.L3232:
	add	x2, x21, :lo12:.LANCHOR3
	ldr	w3, [x23]
	add	x0, x2, 1960
	add	x0, x0, x19, lsl 4
	ldr	x1, [x0, 8]
	str	w3, [x1, x20, lsl 2]
	strb	w25, [x2, 2472]
	ldrh	w1, [x0, 2]
	orr	w1, w1, -32768
	strh	w1, [x0, 2]
	b	.L3233
.L3230:
	add	w19, w19, 1
	add	x0, x0, 16
	and	x19, x19, 65535
	cmp	w19, 32
	bne	.L3234
	bl	pm_select_ram_region
	and	x19, x0, 65535
	add	x2, x21, :lo12:.LANCHOR3
	sbfiz	x1, x19, 4, 32
	add	x2, x2, 1960
	mov	w27, w0
	add	x3, x2, x1
	ldrh	w2, [x2, x1]
	mov	w1, 65535
	cmp	w2, w1
	beq	.L3235
	ldrsh	w1, [x3, 2]
	tbz	w1, #31, .L3235
	bl	pm_flush_id
.L3235:
	adrp	x0, .LANCHOR5+464
	mov	w1, w27
	strb	w19, [x0, #:lo12:.LANCHOR5+464]
	mov	w0, w26
	bl	load_l2p_region
	b	.L3231
	.size	pm_log2phys, .-pm_log2phys
	.align	2
	.global	gc_recovery
	.type	gc_recovery, %function
gc_recovery:
	sub	sp, sp, #224
	stp	x29, x30, [sp, 32]
	add	x29, sp, 32
	stp	x21, x22, [sp, 64]
	adrp	x22, .LANCHOR3
	stp	x19, x20, [sp, 48]
	adrp	x19, .LANCHOR0
	add	x21, x19, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 80]
	stp	x25, x26, [sp, 96]
	adrp	x23, .LANCHOR5
	stp	x27, x28, [sp, 112]
	add	x0, x23, :lo12:.LANCHOR5
	add	x25, x22, :lo12:.LANCHOR3
	ldr	x20, [x21, 1128]
	strb	wzr, [x0, 264]
	mov	w0, 65535
	strb	wzr, [x25, 1337]
	ldrh	w1, [x20, 80]
	cmp	w1, w0
	beq	.L3244
	add	x24, x20, 80
	mov	w0, -1
	strh	w0, [x20, 130]
	mov	w0, 1
	bl	buf_alloc
	mov	x28, x0
	ldrb	w0, [x24, 9]
	ldrh	w1, [x25, 1410]
	sub	w0, w0, #1
	ldrb	w2, [x25, 1320]
	add	x0, x24, w0, sxtw 1
	cmp	w2, 2
	ldrh	w0, [x0, 16]
	mul	w1, w0, w1
	str	w1, [x29, 184]
	beq	.L3245
	ldrb	w0, [x21, 1212]
	cbnz	w0, .L3245
	ldrb	w0, [x21, 1213]
	cbz	w0, .L3246
.L3245:
	add	x0, x22, :lo12:.LANCHOR3
	ldrh	w0, [x0, 1338]
	sub	w0, w0, #1
	add	w0, w0, w1
	orr	w2, w0, w2, lsl 24
	str	w2, [x28, 40]
.L3247:
	mov	w1, 1
	mov	x0, x28
	bl	sblk_read_page
	ldr	w0, [x28, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L3248
	ldr	x0, [x28, 24]
	ldr	w1, [x0]
	mov	w0, 15555
	movk	w0, 0xf55f, lsl 16
	cmp	w1, w0
	beq	.L3249
.L3248:
	mov	x0, x28
	bl	zbuf_free
	ldr	x1, [x28, 24]
	ldr	x0, [x28, 8]
	ldr	w2, [x1, 12]
	str	w2, [sp, 16]
	ldr	w2, [x1, 8]
	str	w2, [sp, 8]
	ldr	w2, [x1, 4]
	str	w2, [sp]
	ldp	w3, w4, [x0]
	ldp	w5, w6, [x0, 8]
	adrp	x0, .LC245
	ldr	w7, [x1]
	add	x0, x0, :lo12:.LC245
	ldr	w1, [x28, 40]
	ldr	w2, [x28, 52]
	bl	printk
.L3338:
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w2, [x20, 80]
	mov	w21, 0
	ldr	x1, [x0, 1120]
	strh	wzr, [x1, x2, lsl 1]
	ldr	x0, [x0, 1128]
	ldrh	w1, [x20, 80]
	strh	w1, [x0, 130]
.L3250:
	add	x1, x19, :lo12:.LANCHOR0
	ldrh	w0, [x20, 80]
	ldr	x1, [x1, 1120]
	ubfiz	x2, x0, 1, 16
	ldrh	w1, [x1, x2]
	cbnz	w1, .L3294
	bl	ftl_dump_write_open_sblk
.L3294:
	ldrh	w1, [x20, 80]
	mov	w2, w21
	adrp	x0, .LC247
	add	x0, x0, :lo12:.LC247
	bl	printk
	mov	w0, -1
	strh	w0, [x20, 80]
	bl	pm_flush
	bl	ftl_ext_info_flush
	add	x1, x19, :lo12:.LANCHOR0
	mov	w2, 65535
	ldr	x0, [x1, 1128]
	ldrh	w0, [x0, 130]
	cmp	w0, w2
	beq	.L3295
	ldrh	w1, [x1, 1096]
	cmp	w1, w0
	bhi	.L3296
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 840
	mov	w2, 517
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3296:
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x0, [x0, 1128]
	ldrh	w0, [x0, 130]
	bl	ftl_free_sblk
.L3295:
	add	x19, x19, :lo12:.LANCHOR0
	mov	w0, -1
	ldr	x1, [x19, 3384]
	strh	w0, [x1, 126]
	ldr	x1, [x19, 1128]
	strh	w0, [x1, 130]
	mov	w0, 0
	bl	ftl_info_flush
.L3243:
	ldp	x19, x20, [sp, 48]
	ldp	x21, x22, [sp, 64]
	ldp	x23, x24, [sp, 80]
	ldp	x25, x26, [sp, 96]
	ldp	x27, x28, [sp, 112]
	ldp	x29, x30, [sp, 32]
	add	sp, sp, 224
	ret
.L3246:
	cmp	w2, 3
	bne	.L3247
	ldrh	w0, [x25, 1376]
	sub	w0, w0, #1
	add	w0, w0, w1
	orr	w0, w0, 50331648
	str	w0, [x28, 40]
	b	.L3247
.L3249:
	add	x1, x23, :lo12:.LANCHOR5
	ldrb	w0, [x1, 465]
	cmp	w0, 2
	bne	.L3251
	add	x21, x22, :lo12:.LANCHOR3
	ldrb	w0, [x21, 1320]
	cmp	w0, 3
	bne	.L3251
	ldrh	w2, [x21, 1338]
	ldrb	w3, [x21, 1321]
	ldrh	w0, [x1, 462]
	ubfiz	w2, w2, 2, 14
	mul	w2, w2, w3
	ldr	x3, [x1, 280]
	ldr	x1, [x28, 8]
	sub	w2, w2, w0
	and	x0, x0, 65532
	and	w2, w2, 65535
	add	x0, x3, x0
	bl	ftl_memcpy
	add	x0, x19, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1212]
	cbnz	w1, .L3252
	ldrb	w0, [x0, 1213]
	cbz	w0, .L3253
.L3252:
	ldr	w0, [x28, 40]
	sub	w0, w0, #1
.L3332:
	str	w0, [x28, 40]
	mov	w1, 1
	mov	x0, x28
	bl	sblk_read_page
	ldr	w0, [x28, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L3255
	ldr	x0, [x28, 24]
	ldr	w1, [x0]
	mov	w0, 15555
	movk	w0, 0xf55f, lsl 16
	cmp	w1, w0
	beq	.L3256
.L3255:
	mov	x0, x28
	bl	zbuf_free
	b	.L3338
.L3253:
	ldr	w0, [x29, 184]
	ldrh	w1, [x21, 1376]
	sub	w0, w0, #1
	add	w0, w0, w1
	orr	w0, w0, 33554432
	b	.L3332
.L3256:
	add	x0, x23, :lo12:.LANCHOR5
	ldrh	w2, [x0, 462]
.L3333:
	ldr	x1, [x28, 8]
	add	x21, x22, :lo12:.LANCHOR3
	ldr	x0, [x0, 280]
	bl	ftl_memcpy
	ldrb	w1, [x21, 1321]
	ldrh	w0, [x21, 1338]
	mul	w0, w0, w1
	ldrb	w1, [x21, 1946]
	lsl	w2, w0, 2
	cmp	w1, w0, lsr 6
	bge	.L3258
	add	x25, x23, :lo12:.LANCHOR5
	mov	w1, 0
	ldr	x0, [x25, 288]
	bl	ftl_memset
	ldrb	w26, [x25, 465]
	cmp	w26, 1
	bne	.L3299
	ldrb	w1, [x21, 1321]
	ldrh	w0, [x21, 1338]
	ldrh	w21, [x25, 462]
	mul	w0, w0, w1
	ldr	x1, [x28, 8]
	sub	w21, w21, w0, lsl 2
	add	x1, x1, w0, sxtw 2
	ldr	x0, [x25, 288]
	mov	w2, w21
	bl	ftl_memcpy
	mov	w10, w26
.L3259:
	add	x0, x22, :lo12:.LANCHOR3
	ldrh	w1, [x0, 1376]
	ldrb	w25, [x0, 1320]
	str	w1, [x29, 168]
	cmp	w25, 2
	bne	.L3260
	ldrb	w0, [x0, 1322]
	cbz	w0, .L3261
.L3260:
	add	x0, x19, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1212]
	cbz	w0, .L3262
.L3261:
	ldr	w0, [x29, 168]
	mul	w0, w0, w25
	mov	w25, 1
	str	w0, [x29, 168]
.L3262:
	add	x14, x22, :lo12:.LANCHOR3
	adrp	x26, .LC246
	mov	w9, 0
	add	x0, x26, :lo12:.LC246
	mov	w13, 0
	str	x0, [x29, 152]
.L3263:
	sub	w0, w9, #1
	str	w0, [x29, 164]
	ldr	w0, [x29, 168]
	cmp	w0, w9
	bls	.L3276
	add	w0, w9, w9, lsl 1
	mov	w26, 0
	sub	w0, w0, #1
	str	w0, [x29, 172]
	b	.L3277
.L3251:
	add	x0, x22, :lo12:.LANCHOR3
	ldrh	w2, [x0, 1338]
	ldrb	w0, [x0, 1321]
	mul	w2, w2, w0
	add	x0, x23, :lo12:.LANCHOR5
	lsl	w2, w2, 2
	b	.L3333
.L3258:
	add	x3, x23, :lo12:.LANCHOR5
	ldr	x1, [x28, 8]
	add	x1, x1, w0, sxtw 2
	ldr	x0, [x3, 288]
	bl	ftl_memcpy
	mov	w10, 0
.L3334:
	mov	w21, 0
	b	.L3259
.L3299:
	mov	w10, 1
	b	.L3334
.L3272:
	ldrh	w1, [x14, 1410]
	ldrh	w0, [x24, x27, lsl 1]
	ldrb	w2, [x14, 1320]
	cmp	w2, 2
	mul	w0, w0, w1
	str	w0, [x29, 184]
	add	w1, w11, w0
	beq	.L3264
	add	x3, x19, :lo12:.LANCHOR0
	ldrb	w4, [x3, 1212]
	cbz	w4, .L3265
.L3264:
	ldr	w0, [x29, 164]
	add	w1, w1, w0
	orr	w1, w1, w2, lsl 24
.L3335:
	str	w1, [x28, 40]
.L3266:
	str	x14, [x29, 120]
	mov	w1, 1
	str	w10, [x29, 128]
	mov	x0, x28
	str	w9, [x29, 136]
	str	w13, [x29, 144]
	str	w11, [x29, 160]
	bl	sblk_read_page
	ldr	w10, [x29, 128]
	ldr	w13, [x29, 144]
	ldr	w9, [x29, 136]
	ldr	w11, [x29, 160]
	sxtw	x15, w13
	ldr	x14, [x29, 120]
	cbz	w10, .L3269
	add	x0, x23, :lo12:.LANCHOR5
	lsl	x1, x15, 2
	ldr	x0, [x0, 288]
	ldr	w2, [x0, x1]
	cbnz	w2, .L3269
	ldr	x2, [x28, 24]
	ldr	w2, [x2, 8]
	str	w2, [x0, x1]
.L3269:
	add	x1, x23, :lo12:.LANCHOR5
	lsl	x15, x15, 2
	ldr	x0, [x1, 280]
	ldr	w3, [x0, x15]
	ldr	x0, [x28, 24]
	ldr	w6, [x0, 4]
	cmp	w3, w6
	bne	.L3270
	ldr	x1, [x1, 288]
	ldr	w2, [x1, x15]
	ldr	w1, [x0, 8]
	cmp	w2, w1
	beq	.L3271
.L3270:
	add	x18, x23, :lo12:.LANCHOR5
	ldr	w2, [x0, 12]
	str	x14, [x29, 104]
	stp	w10, w11, [x29, 116]
	ldr	x1, [x18, 288]
	str	w2, [sp]
	str	w9, [x29, 128]
	ldr	w5, [x0]
	ldr	w4, [x1, x15]
	ldr	w7, [x0, 8]
	ldr	w1, [x28, 40]
	ldr	w2, [x28, 52]
	ldr	x0, [x29, 152]
	stp	x18, x15, [x29, 136]
	str	w13, [x29, 160]
	bl	printk
	ldp	x18, x15, [x29, 136]
	ldp	w10, w11, [x29, 116]
	ldr	x0, [x18, 280]
	ldr	w9, [x29, 128]
	ldr	w13, [x29, 160]
	ldr	x14, [x29, 104]
	ldr	w0, [x0, x15]
	cmn	w0, #1
	beq	.L3271
	mov	x0, x28
	bl	zbuf_free
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w2, [x20, 80]
	ldr	x1, [x0, 1120]
	strh	wzr, [x1, x2, lsl 1]
	ldr	x0, [x0, 1128]
	ldrh	w1, [x20, 80]
	strh	w1, [x0, 130]
	b	.L3250
.L3265:
	cmp	w2, 3
	bne	.L3267
	ldrb	w2, [x3, 1213]
	cbz	w2, .L3268
	ldr	w0, [x29, 172]
	add	w1, w1, w0
	orr	w1, w1, 50331648
	b	.L3335
.L3268:
	add	w0, w9, w0
	orr	w0, w0, w11, lsl 24
.L3336:
	str	w0, [x28, 40]
	b	.L3266
.L3267:
	add	w0, w9, w0
	b	.L3336
.L3271:
	add	w13, w13, 1
	add	w11, w11, 1
.L3274:
	cmp	w25, w11
	bcs	.L3272
	add	w26, w26, 1
.L3277:
	ldrb	w0, [x24, 9]
	cmp	w26, w0
	bge	.L3273
	sxtw	x27, w26
	mov	w11, 1
	add	x27, x27, 8
	b	.L3274
.L3273:
	ldrb	w0, [x14, 1322]
	cmp	w0, 0
	cinc	w9, w9, ne
	add	w9, w9, 1
	b	.L3263
.L3276:
	mov	x0, x28
	bl	zbuf_free
	add	x0, x19, :lo12:.LANCHOR0
	add	x3, x22, :lo12:.LANCHOR3
	ldrh	w2, [x20, 80]
	mov	w21, 0
	mov	w27, 0
	str	wzr, [x29, 164]
	ldrh	w3, [x3, 1338]
	ldr	x1, [x0, 1120]
	ldrb	w0, [x24, 9]
	mul	w0, w0, w3
	strh	w0, [x1, x2, lsl 1]
.L3278:
	sub	w0, w27, #1
	str	w0, [x29, 136]
	ldr	w0, [x29, 168]
	cmp	w0, w27
	bls	.L3292
	add	w0, w27, w27, lsl 1
	add	x28, x23, :lo12:.LANCHOR5
	sub	w0, w0, #1
	str	wzr, [x29, 172]
	str	w0, [x29, 160]
	b	.L3293
.L3288:
	ldr	w0, [x29, 164]
	ldr	x1, [x28, 280]
	sbfiz	x0, x0, 2, 32
	ldr	w5, [x1, x0]
	cmn	w5, #1
	beq	.L3279
	ldr	x1, [x28, 288]
	str	w5, [x29, 144]
	ldr	w0, [x1, x0]
	str	w0, [x29, 152]
	mov	w0, w5
	bl	lpa_hash_get_ppa
	str	w0, [x29, 188]
	cmn	w0, #1
	ldr	w5, [x29, 144]
	bne	.L3280
	mov	w0, w5
	str	w5, [x29, 144]
	mov	w2, 0
	add	x1, x29, 188
	bl	pm_log2phys
	ldr	w5, [x29, 144]
.L3280:
	ldr	x0, [x29, 128]
	add	x2, x22, :lo12:.LANCHOR3
	ldrh	w1, [x2, 1410]
	ldrh	w0, [x24, x0, lsl 1]
	ldrb	w2, [x2, 1320]
	cmp	w2, 2
	mul	w0, w0, w1
	add	w1, w26, w0
	beq	.L3281
	add	x6, x19, :lo12:.LANCHOR0
	ldrb	w7, [x6, 1212]
	cbz	w7, .L3282
.L3281:
	ldr	w0, [x29, 136]
	add	w1, w0, w1
	orr	w1, w1, w2, lsl 24
	str	w1, [x29, 184]
.L3283:
	add	x0, x19, :lo12:.LANCHOR0
	add	x6, x22, :lo12:.LANCHOR3
	ldr	w3, [x29, 152]
	ldrb	w2, [x0, 1205]
	mov	w0, 24
	ldrh	w1, [x6, 1304]
	sub	w0, w0, w2
	mov	w2, 1
	sub	w0, w0, w1
	lsr	w1, w3, w1
	lsl	w0, w2, w0
	sub	w0, w0, #1
	and	w0, w0, w1
	ldrb	w1, [x6, 1306]
	udiv	w0, w0, w1
	and	w0, w0, 65535
	str	w0, [x29, 144]
	ldr	w0, [x29, 188]
	cmp	w3, w0
	bne	.L3286
	add	x1, x29, 184
	mov	w0, w5
	bl	pm_log2phys
	add	w21, w21, 1
	ldrh	w0, [x29, 144]
	bl	ftl_vpn_decrement
.L3287:
	ldr	w0, [x29, 164]
	add	x2, x19, :lo12:.LANCHOR0
	add	w0, w0, 1
	str	w0, [x29, 164]
	ldr	x1, [x2, 1104]
	ldr	w0, [x29, 144]
	add	x1, x1, x0, lsl 2
	ldrb	w1, [x1, 2]
	tst	w1, 224
	bne	.L3279
	ldr	x1, [x2, 1120]
	lsl	x0, x0, 1
	ldrh	w2, [x1, x0]
	cbz	w2, .L3279
	strh	wzr, [x1, x0]
.L3279:
	add	w26, w26, 1
.L3290:
	cmp	w25, w26
	bcs	.L3288
	ldr	w0, [x29, 172]
	add	w0, w0, 1
	str	w0, [x29, 172]
.L3293:
	ldrb	w0, [x24, 9]
	ldr	w1, [x29, 172]
	cmp	w1, w0
	bge	.L3289
	ldrsw	x0, [x29, 172]
	mov	w26, 1
	add	x0, x0, 8
	str	x0, [x29, 128]
	b	.L3290
.L3282:
	cmp	w2, 3
	bne	.L3284
	ldrb	w6, [x6, 1213]
	lsl	w2, w26, 24
	cbz	w6, .L3285
	ldr	w0, [x29, 160]
	add	w1, w0, w1
	orr	w0, w1, w2
.L3337:
	str	w0, [x29, 184]
	b	.L3283
.L3285:
	add	w0, w27, w0
	orr	w0, w0, w2
	b	.L3337
.L3284:
	add	w0, w27, w0
	b	.L3337
.L3286:
	ldr	w1, [x29, 184]
	cmp	w0, w1
	cinc	w21, w21, eq
	b	.L3287
.L3289:
	add	x0, x22, :lo12:.LANCHOR3
	ldrb	w0, [x0, 1322]
	cmp	w0, 0
	cinc	w27, w27, ne
	add	w27, w27, 1
	b	.L3278
.L3292:
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w1, [x20, 80]
	ldr	x0, [x0, 1120]
	strh	w21, [x0, x1, lsl 1]
	ldrh	w0, [x20, 80]
	bl	zftl_insert_data_list
	b	.L3250
.L3244:
	ldrh	w0, [x20, 130]
	cmp	w0, w1
	beq	.L3243
	ldr	x1, [x21, 3384]
	ldrh	w1, [x1, 126]
	cmp	w1, w0
	bne	.L3298
	bl	pm_flush
	ldr	x0, [x21, 1128]
	ldrh	w0, [x0, 130]
	bl	ftl_free_sblk
	ldr	x0, [x21, 3384]
	mov	w1, -1
	strh	w1, [x0, 126]
	mov	w0, 0
	bl	ftl_info_flush
.L3298:
	add	x19, x19, :lo12:.LANCHOR0
	mov	w1, -1
	ldr	x0, [x19, 1128]
	strh	w1, [x0, 130]
	b	.L3243
	.size	gc_recovery, .-gc_recovery
	.align	2
	.global	gc_update_l2p_map_new
	.type	gc_update_l2p_map_new, %function
gc_update_l2p_map_new:
	stp	x29, x30, [sp, -160]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x0, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	adrp	x22, .LANCHOR3
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	ldr	x20, [x0, 1128]
	add	x0, x22, :lo12:.LANCHOR3
	ldrh	w24, [x0, 1338]
	add	x0, x20, 80
	str	x0, [x29, 112]
	ldrb	w0, [x0, 9]
	mul	w24, w24, w0
	adrp	x0, .LANCHOR2
	str	x0, [x29, 136]
	ldr	w1, [x0, #:lo12:.LANCHOR2]
	tbz	x1, 8, .L3340
	ldrh	w1, [x20, 80]
	adrp	x0, .LC248
	add	x0, x0, :lo12:.LC248
	bl	printk
.L3340:
	add	x0, x19, :lo12:.LANCHOR0
	adrp	x1, .LANCHOR5
	ldrh	w3, [x20, 80]
	mov	w23, 0
	mov	w21, 0
	str	x1, [x29, 120]
	ldr	x2, [x0, 1120]
	add	x0, x1, :lo12:.LANCHOR5
	ldrb	w0, [x0, 465]
	sub	w0, w24, w0
	strh	w0, [x2, x3, lsl 1]
	adrp	x0, .LC250
	add	x0, x0, :lo12:.LC250
	str	x0, [x29, 104]
.L3341:
	cmp	w21, w24
	bne	.L3350
	ldr	x0, [x29, 136]
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L3351
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w2, [x20, 80]
	mov	w3, w23
	ldr	x1, [x0, 1120]
	ldr	x0, [x0, 1128]
	ldrh	w2, [x1, x2, lsl 1]
	ldrh	w1, [x0, 80]
	adrp	x0, .LC251
	add	x0, x0, :lo12:.LC251
	bl	printk
.L3351:
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w1, [x20, 80]
	ldr	x0, [x0, 1120]
	ldrh	w0, [x0, x1, lsl 1]
	cmp	w23, w0
	beq	.L3352
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 856
	mov	w2, 898
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3352:
	add	x19, x19, :lo12:.LANCHOR0
	ldrh	w1, [x20, 80]
	ldr	x0, [x19, 1120]
	strh	w23, [x0, x1, lsl 1]
	ldrh	w0, [x20, 80]
	bl	zftl_insert_data_list
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 160
	ret
.L3350:
	ldr	x0, [x29, 120]
	add	x0, x0, :lo12:.LANCHOR5
	ldr	x0, [x0, 280]
	ldr	w2, [x0, w21, sxtw 2]
	cmn	w2, #1
	beq	.L3342
	add	x0, x22, :lo12:.LANCHOR3
	ldrb	w0, [x0, 1946]
	lsl	w0, w0, 7
	udiv	w0, w2, w0
	and	w0, w0, 65535
	str	w0, [x29, 132]
	ldr	x0, [x29, 136]
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L3343
	ldr	w1, [x29, 132]
	adrp	x0, .LC249
	mov	w3, w21
	add	x0, x0, :lo12:.LC249
	bl	printk
.L3343:
	ldr	x0, [x29, 120]
	mov	w25, w21
	add	x26, x0, :lo12:.LANCHOR5
.L3349:
	ldr	x0, [x26, 280]
	sbfiz	x27, x25, 2, 32
	ldr	w4, [x0, x27]
	cmn	w4, #1
	beq	.L3344
	add	x0, x22, :lo12:.LANCHOR3
	ldr	w1, [x29, 132]
	ldrb	w0, [x0, 1946]
	lsl	w0, w0, 7
	udiv	w0, w4, w0
	cmp	w1, w0, uxth
	bne	.L3344
	ldr	x0, [x26, 288]
	str	w4, [x29, 128]
	ldr	w28, [x0, x27]
	mov	w0, w4
	bl	lpa_hash_get_ppa
	str	w0, [x29, 156]
	cmn	w0, #1
	ldr	w4, [x29, 128]
	bne	.L3345
	mov	w0, w4
	str	w4, [x29, 128]
	mov	w2, 0
	add	x1, x29, 156
	bl	pm_log2phys
	ldr	w4, [x29, 128]
.L3345:
	ldr	w3, [x29, 156]
	cmp	w28, w3
	bne	.L3346
	ldr	x0, [x26, 296]
	mov	w2, 1
	add	x1, x29, 152
	add	w23, w23, 1
	ldr	w0, [x0, x27]
	str	w0, [x29, 152]
	mov	w0, w4
	bl	pm_log2phys
	add	x0, x19, :lo12:.LANCHOR0
	add	x3, x22, :lo12:.LANCHOR3
	ldrb	w1, [x0, 1205]
	mov	w0, 24
	ldrh	w2, [x3, 1304]
	sub	w0, w0, w1
	sub	w1, w0, w2
	mov	w0, 1
	lsr	w28, w28, w2
	lsl	w0, w0, w1
	sub	w0, w0, #1
	and	w28, w0, w28
	ldrb	w0, [x3, 1306]
	udiv	w0, w28, w0
.L3373:
	bl	ftl_vpn_decrement
	ldr	x0, [x26, 280]
	mov	w1, -1
	str	w1, [x0, x27]
.L3344:
	add	w25, w25, 1
	cmp	w24, w25
	bne	.L3349
.L3342:
	add	w21, w21, 1
	b	.L3341
.L3346:
	ldr	x0, [x29, 136]
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L3348
	ldr	x0, [x29, 104]
	mov	w2, w28
	mov	w1, w4
	bl	printk
.L3348:
	ldr	x0, [x29, 112]
	ldrh	w0, [x0]
	b	.L3373
	.size	gc_update_l2p_map_new, .-gc_update_l2p_map_new
	.align	2
	.global	gc_scan_src_blk_one_page
	.type	gc_scan_src_blk_one_page, %function
gc_scan_src_blk_one_page:
	stp	x29, x30, [sp, -96]!
	mov	w3, 0
	mov	w4, 0
	mov	w5, 65535
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	add	x1, x20, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	add	x1, x1, 3416
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	adrp	x21, .LANCHOR3
	ldrb	w0, [x1, 4]
	add	x2, x1, w0, sxtw 1
	ldrh	w22, [x2, 40]
	add	x2, x21, :lo12:.LANCHOR3
	ldrb	w6, [x2, 1321]
	ldrh	w2, [x1, 2]
.L3375:
	cmp	w22, w5
	beq	.L3377
	cbz	w4, .L3378
	add	x1, x20, :lo12:.LANCHOR0
	strh	w2, [x1, 3418]
.L3378:
	cbz	w3, .L3379
	add	x1, x20, :lo12:.LANCHOR0
	strb	w0, [x1, 3420]
.L3379:
	add	x20, x20, :lo12:.LANCHOR0
	mov	w0, 1
	add	x19, x20, 3416
	bl	buf_alloc
	add	x25, x21, :lo12:.LANCHOR3
	mov	x23, x0
	mov	w24, 1
.L3380:
	ldrb	w1, [x19, 6]
	cmp	w24, w1
	ble	.L3390
	mov	x0, x23
	bl	zbuf_free
	ldrb	w0, [x19, 4]
	add	x21, x21, :lo12:.LANCHOR3
	add	w0, w0, 1
	and	w0, w0, 255
	ldrb	w1, [x21, 1321]
	strb	w0, [x19, 4]
	cmp	w1, w0
	bne	.L3374
	ldrh	w0, [x19, 2]
	strb	wzr, [x19, 4]
	add	w0, w0, 1
	strh	w0, [x19, 2]
.L3374:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
.L3377:
	add	w0, w0, 1
	and	w0, w0, 255
	cmp	w0, w6
	bne	.L3376
	add	w2, w2, 1
	mov	w0, 0
	and	w2, w2, 65535
	mov	w4, 1
.L3376:
	add	x3, x1, w0, sxtw 1
	ldrh	w22, [x3, 40]
	mov	w3, 1
	b	.L3375
.L3390:
	ldrh	w0, [x25, 1410]
	cmp	w1, 2
	mul	w0, w0, w22
	bne	.L3381
	ldrh	w1, [x19, 2]
	lsl	w1, w1, 1
.L3400:
	sub	w1, w1, #1
	add	w0, w24, w0
	add	w0, w1, w0
	ldrb	w1, [x25, 1320]
	orr	w0, w0, w1, lsl 24
.L3399:
	str	w0, [x23, 40]
	mov	w1, 1
	mov	x0, x23
	bl	sblk_read_page
	ldr	w0, [x23, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L3387
	ldr	x0, [x23, 24]
	ldr	w26, [x0, 4]
	mov	w0, w26
	bl	lpa_hash_get_ppa
	str	w0, [x29, 92]
	cmn	w0, #1
	bne	.L3388
	ldr	w0, [x20, 3364]
	cmp	w26, w0
	bcs	.L3388
	mov	w2, 0
	add	x1, x29, 92
	mov	w0, w26
	bl	pm_log2phys
.L3388:
	ldr	w0, [x23, 40]
	ldr	w1, [x29, 92]
	cmp	w0, w1
	bne	.L3387
	ldrh	w2, [x19, 24]
	ldr	x1, [x25, 1312]
	str	w0, [x1, x2, lsl 2]
	ldrh	w0, [x19, 24]
	add	w0, w0, 1
	strh	w0, [x19, 24]
.L3387:
	ldrh	w0, [x19, 26]
	add	w24, w24, 1
	add	w0, w0, 1
	strh	w0, [x19, 26]
	b	.L3380
.L3381:
	cmp	w1, 3
	bne	.L3383
	ldrb	w1, [x20, 1212]
	cbnz	w1, .L3384
	ldrb	w1, [x20, 1213]
	cbz	w1, .L3385
.L3384:
	ldrh	w1, [x19, 2]
	add	w1, w1, w1, lsl 1
	b	.L3400
.L3385:
	ldrh	w1, [x19, 2]
	add	w0, w1, w0
	orr	w0, w0, w24, lsl 24
	b	.L3399
.L3383:
	ldrh	w1, [x19, 2]
	add	w0, w1, w0
	b	.L3399
	.size	gc_scan_src_blk_one_page, .-gc_scan_src_blk_one_page
	.align	2
	.global	gc_scan_src_blk
	.type	gc_scan_src_blk, %function
gc_scan_src_blk:
	stp	x29, x30, [sp, -112]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR0
	add	x0, x20, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	str	x27, [sp, 80]
	ldrh	w1, [x0, 3416]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L3402
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 880
	mov	w2, 1505
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3402:
	add	x0, x20, :lo12:.LANCHOR0
	mov	w2, 65535
	ldrh	w1, [x0, 3416]
	cmp	w1, w2
	beq	.L3432
	adrp	x2, .LANCHOR2
	ldr	w2, [x2, #:lo12:.LANCHOR2]
	tbz	x2, 8, .L3404
	ldr	x0, [x0, 1120]
	ubfiz	x2, x1, 1, 16
	ldrh	w2, [x0, x2]
	adrp	x0, .LC252
	add	x0, x0, :lo12:.LC252
	bl	printk
.L3404:
	bl	timer_get_time
	add	x14, x20, :lo12:.LANCHOR0
	add	x15, x14, 3416
	add	x1, x14, 3456
	ldrh	w0, [x14, 3416]
	bl	ftl_get_blk_list_in_sblk
	and	w1, w0, 255
	strb	w1, [x15, 5]
	cbnz	w1, .L3405
	mov	w0, -1
	strh	w0, [x14, 3416]
.L3432:
	mov	w0, 0
	b	.L3401
.L3405:
	ldrh	w3, [x14, 3416]
	ldr	x1, [x14, 1104]
	mov	x2, x3
	add	x1, x1, x3, lsl 2
	ldrb	w1, [x1, 2]
	and	w1, w1, 224
	cmp	w1, 32
	beq	.L3406
	cmp	w1, 224
	beq	.L3406
	cbz	w1, .L3407
	ldr	x1, [x14, 1128]
	ldrh	w3, [x1, 16]
	cmp	w3, w2
	beq	.L3406
	ldrh	w3, [x1, 48]
	cmp	w3, w2
	beq	.L3406
	ldrh	w1, [x1, 80]
	cmp	w1, w2
	bne	.L3452
.L3406:
	add	x20, x20, :lo12:.LANCHOR0
	mov	w0, -1
	strh	wzr, [x20, 3440]
	strh	w0, [x20, 3416]
	b	.L3432
.L3407:
	ldr	x0, [x14, 1120]
	ldrh	w0, [x0, x3, lsl 1]
	cbz	w0, .L3409
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 880
	mov	w2, 1530
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3409:
	add	x0, x20, :lo12:.LANCHOR0
	ldrh	w1, [x0, 3416]
	ldr	x0, [x0, 1120]
	strh	wzr, [x0, x1, lsl 1]
	b	.L3406
.L3452:
	and	w0, w0, 255
	sub	w0, w0, #1
	add	x0, x15, w0, sxtw 1
	ldrh	w22, [x0, 40]
	mov	w0, 65535
	cmp	w22, w0
	bne	.L3410
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 880
	mov	w2, 1540
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3410:
	add	x3, x20, :lo12:.LANCHOR0
	adrp	x23, .LANCHOR3
	add	x1, x23, :lo12:.LANCHOR3
	ldrh	w2, [x3, 3416]
	ldr	x3, [x3, 1104]
	ldrh	w21, [x1, 1410]
	ldrh	w0, [x1, 1376]
	add	x2, x3, x2, lsl 2
	sub	w0, w0, #1
	and	w0, w0, 65535
	mul	w21, w21, w22
	ldrb	w2, [x2, 2]
	and	w2, w2, 224
	cmp	w2, 160
	bne	.L3433
	ldrb	w2, [x1, 1320]
	and	w27, w2, 65535
	cmp	w2, 2
	orr	w21, w21, w2, lsl 24
	bne	.L3412
	ldrh	w0, [x1, 1338]
	sub	w0, w0, #1
	and	w0, w0, 65535
.L3412:
	add	x1, x20, :lo12:.LANCHOR0
	ldrb	w2, [x1, 1212]
	cbnz	w2, .L3413
	ldrb	w1, [x1, 1213]
	cbz	w1, .L3411
.L3413:
	add	x0, x23, :lo12:.LANCHOR3
	ldrh	w0, [x0, 1338]
	sub	w0, w0, #1
	and	w0, w0, 65535
.L3411:
	add	x24, x20, :lo12:.LANCHOR0
	orr	w21, w0, w21
	mov	w0, 1
	strb	w27, [x24, 3422]
	strh	wzr, [x24, 3418]
	strb	wzr, [x24, 3420]
	strh	wzr, [x24, 3442]
	strh	wzr, [x24, 3444]
	bl	buf_alloc
	mov	x19, x0
	str	w21, [x0, 40]
	mov	w1, 1
	bl	sblk_read_page
	strh	wzr, [x24, 3440]
	ldr	w0, [x19, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	bne	.L3414
.L3457:
	mov	x0, x19
	bl	zbuf_free
.L3455:
	mov	w0, -1
.L3401:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L3433:
	mov	w27, 1
	b	.L3411
.L3414:
	ldr	x0, [x19, 24]
	mov	w1, 15555
	movk	w1, 0xf55f, lsl 16
	ldr	w2, [x0]
	cmp	w2, w1
	beq	.L3415
	mov	w2, 1578
.L3458:
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 880
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	b	.L3457
.L3415:
	add	x1, x23, :lo12:.LANCHOR3
	adrp	x26, .LANCHOR5
	add	x2, x26, :lo12:.LANCHOR5
	ldrb	w24, [x1, 1321]
	ldrh	w25, [x1, 1376]
	ldrb	w3, [x2, 465]
	cmp	w3, 2
	mul	w25, w24, w25
	mul	w25, w27, w25
	and	w25, w25, 65535
	bne	.L3416
	cmp	w27, 3
	bne	.L3416
	ldrh	w0, [x2, 462]
	ldrh	w2, [x1, 1338]
	ldr	x3, [x1, 1312]
	ldr	x1, [x19, 8]
	ubfiz	w2, w2, 2, 14
	mul	w24, w24, w2
	sub	w24, w24, w0
	and	x0, x0, 65532
	and	w24, w24, 65535
	add	x0, x3, x0
	mov	w2, w24
	bl	ftl_memcpy
	ldr	x0, [x19, 24]
	ldr	w27, [x0, 4]
	cbz	w27, .L3417
	ldr	x0, [x19, 8]
	mov	w1, w24
	bl	js_hash
	cmp	w27, w0
	beq	.L3417
	mov	x0, x19
	bl	zbuf_free
	ldr	x0, [x19, 24]
	mov	w3, w24
.L3456:
	ldr	w1, [x0, 4]
	adrp	x0, .LC253
	ldr	w2, [x19, 40]
	add	x0, x0, :lo12:.LC253
	bl	printk
	b	.L3455
.L3417:
	add	x0, x20, :lo12:.LANCHOR0
	ldrb	w1, [x0, 1212]
	cbnz	w1, .L3418
	ldrb	w0, [x0, 1213]
	cbz	w0, .L3419
.L3418:
	sub	w0, w21, #1
	str	w0, [x19, 40]
.L3420:
	mov	w1, 1
	mov	x0, x19
	bl	sblk_read_page
	ldr	w0, [x19, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L3457
	ldr	x0, [x19, 24]
	ldr	w1, [x0]
	mov	w0, 15555
	movk	w0, 0xf55f, lsl 16
	cmp	w1, w0
	beq	.L3422
	mov	w2, 1619
	b	.L3458
.L3419:
	add	x1, x23, :lo12:.LANCHOR3
	ldrh	w0, [x1, 1376]
	ldrh	w1, [x1, 1410]
	sub	w0, w0, #1
	and	w0, w0, 65535
	orr	w0, w0, 33554432
	mul	w22, w1, w22
	orr	w22, w0, w22
	str	w22, [x19, 40]
	b	.L3420
.L3422:
	add	x26, x26, :lo12:.LANCHOR5
	add	x0, x23, :lo12:.LANCHOR3
	ldrh	w2, [x26, 462]
.L3454:
	ldr	x0, [x0, 1312]
	add	x23, x23, :lo12:.LANCHOR3
	ldr	x1, [x19, 8]
	add	x24, x20, :lo12:.LANCHOR0
	add	x21, x24, 3416
	mov	x27, 0
	mov	w26, 24
	bl	ftl_memcpy
	ldr	x22, [x23, 1312]
.L3425:
	cmp	w25, w27
	bgt	.L3430
	mov	x0, x19
	bl	zbuf_free
	add	x0, x20, :lo12:.LANCHOR0
	ldrh	w1, [x0, 3416]
	ldr	x3, [x0, 1120]
	ubfiz	x2, x1, 1, 16
	ldrh	w2, [x3, x2]
	ldrh	w3, [x0, 3440]
	cmp	w2, w3
	beq	.L3431
	adrp	x0, .LC254
	add	x0, x0, :lo12:.LC254
	bl	printk
.L3431:
	add	x20, x20, :lo12:.LANCHOR0
	ldrh	w2, [x20, 3416]
	ldr	x1, [x20, 1120]
	ldrh	w3, [x20, 3440]
	strh	w3, [x1, x2, lsl 1]
	strh	wzr, [x20, 3444]
	ldrh	w0, [x20, 3440]
	b	.L3401
.L3416:
	ldr	w22, [x0, 4]
	lsl	w21, w25, 2
	ldr	x0, [x19, 8]
	mov	w1, w21
	bl	js_hash
	cmp	w22, w0
	beq	.L3424
	mov	x0, x19
	bl	zbuf_free
	mov	w3, w21
	ldr	x0, [x19, 24]
	b	.L3456
.L3424:
	add	x0, x23, :lo12:.LANCHOR3
	mov	w2, w21
	b	.L3454
.L3430:
	ldr	w0, [x22, x27, lsl 2]
	cmn	w0, #1
	beq	.L3427
	bl	lpa_hash_get_ppa
	str	w0, [x29, 108]
	cmn	w0, #1
	bne	.L3428
	ldr	w0, [x22, x27, lsl 2]
	mov	w2, 0
	add	x1, x29, 108
	bl	pm_log2phys
.L3428:
	ldrb	w1, [x24, 1205]
	ldrh	w2, [x23, 1304]
	sub	w0, w26, w1
	ldr	w3, [x29, 108]
	sub	w1, w0, w2
	mov	w0, 1
	lsl	w0, w0, w1
	ldrb	w1, [x23, 1306]
	sub	w0, w0, #1
	lsr	w2, w3, w2
	and	w0, w0, w2
	udiv	w0, w0, w1
	ldrh	w1, [x21]
	cmp	w0, w1
	bne	.L3427
	ldrh	w1, [x21, 24]
	ldr	x0, [x23, 1312]
	str	w3, [x0, x1, lsl 2]
	ldrh	w0, [x21, 24]
	add	w0, w0, 1
	strh	w0, [x21, 24]
.L3427:
	bl	timer_get_time
	add	x27, x27, 1
	b	.L3425
	.size	gc_scan_src_blk, .-gc_scan_src_blk
	.align	2
	.global	gc_scan_static_data
	.type	gc_scan_static_data, %function
gc_scan_static_data:
	stp	x29, x30, [sp, -64]!
	adrp	x1, .LANCHOR0
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	add	x19, x1, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	ldr	x0, [x19, 1128]
	ldr	w2, [x0, 544]
	cmn	w2, #1
	beq	.L3460
	adrp	x20, .LANCHOR4
	add	x20, x20, :lo12:.LANCHOR4
	add	x20, x20, 896
	mov	w21, 0
.L3468:
	ldr	x0, [x19, 1128]
	mov	w2, 0
	add	x1, x29, 60
	ldr	w0, [x0, 544]
	bl	pm_log2phys
	ldr	w0, [x29, 60]
	cmn	w0, #1
	beq	.L3461
	mov	w0, 1
	bl	buf_alloc
	ldr	w1, [x29, 60]
	mov	x22, x0
	str	w1, [x0, 40]
	mov	w1, 1
	bl	sblk_read_page
	ldr	w0, [x22, 52]
	cmp	w0, 256
	bne	.L3462
	adrp	x2, .LANCHOR3
	add	x2, x2, :lo12:.LANCHOR3
	ldrb	w1, [x19, 1205]
	mov	w0, 24
	ldr	w3, [x29, 60]
	ldrh	w4, [x2, 1304]
	sub	w0, w0, w1
	mov	w1, 1
	sub	w0, w0, w4
	lsr	w3, w3, w4
	lsl	w0, w1, w0
	sub	w0, w0, #1
	and	w0, w0, w3
	ldrb	w3, [x2, 1306]
	mov	w2, 0
	udiv	w0, w0, w3
	bl	gc_add_sblk
.L3462:
	ldr	x0, [x19, 1128]
	ldr	x1, [x22, 24]
	ldr	w0, [x0, 544]
	ldr	w1, [x1, 4]
	cmp	w1, w0
	beq	.L3463
	mov	x1, x20
	mov	w2, 2163
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3463:
	mov	x0, x22
	bl	zbuf_free
.L3461:
	ldr	x0, [x19, 1128]
	ldr	w2, [x19, 3364]
	ldr	w1, [x0, 544]
	add	w1, w1, 1
	str	w1, [x0, 544]
	cmp	w1, w2
	bcc	.L3464
	mov	w1, -1
	str	w1, [x0, 544]
	ldr	w1, [x0, 548]
	add	w1, w1, 1
	str	w1, [x0, 548]
	bl	ftl_flush
	bl	pm_flush
	bl	ftl_ext_info_flush
	mov	w0, 0
	bl	ftl_info_flush
.L3459:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L3464:
	ldr	w0, [x29, 60]
	cmn	w0, #1
	bne	.L3459
	adrp	x1, .LANCHOR5+462
	add	w0, w21, 1
	and	w0, w0, 65535
	ldrh	w1, [x1, #:lo12:.LANCHOR5+462]
	cmp	w21, w1, lsr 2
	bcs	.L3459
	mov	w21, w0
	b	.L3468
.L3460:
	ldr	w2, [x0, 536]
	ldr	w3, [x0, 12]
	add	w2, w2, 12959744
	add	w2, w2, 256
	cmp	w3, w2
	bhi	.L3470
	ldr	w2, [x0, 540]
	mov	w4, 5000
	add	w2, w2, w4
	ldr	x4, [x19, 3384]
	ldr	w4, [x4, 44]
	cmp	w4, w2
	bls	.L3459
.L3470:
	add	x1, x1, :lo12:.LANCHOR0
	ldr	x1, [x1, 3384]
	ldr	w1, [x1, 44]
	str	w1, [x0, 540]
	str	w3, [x0, 536]
	str	wzr, [x0, 544]
	b	.L3459
	.size	gc_scan_static_data, .-gc_scan_static_data
	.align	2
	.global	gc_block_vpn_scan
	.type	gc_block_vpn_scan, %function
gc_block_vpn_scan:
	stp	x29, x30, [sp, -144]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x20, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	ldr	x1, [x20, 1128]
	ldrh	w0, [x20, 1096]
	ldr	w1, [x1, 608]
	cmp	w1, w0
	bcs	.L3476
	bl	timer_get_time
	ldr	x21, [x20, 1128]
	mov	w2, 30000
	ldr	w1, [x21, 604]
	add	w1, w1, w2
	cmp	w0, w1
	bls	.L3476
	bl	timer_get_time
	str	w0, [x21, 604]
	ldr	x0, [x20, 1128]
	ldrh	w2, [x20, 1096]
	ldr	w1, [x0, 600]
	cmp	w1, w2
	bcs	.L3478
	ldr	x2, [x20, 3384]
	ldrh	w2, [x2, 134]
	cmp	w1, w2
	bcs	.L3479
.L3478:
	add	x1, x19, :lo12:.LANCHOR0
	ldr	x1, [x1, 3384]
	ldrh	w1, [x1, 134]
	str	w1, [x0, 600]
.L3479:
	ldr	w25, [x0, 600]
	mov	w0, 65535
	and	w21, w25, 65535
	cmp	w21, w0
	bne	.L3480
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 920
	mov	w2, 2504
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3480:
	add	x14, x19, :lo12:.LANCHOR0
	add	x15, x29, 128
	ldr	x0, [x14, 1128]
	ldr	w1, [x0, 600]
	add	w1, w1, 1
	str	w1, [x0, 600]
	ldr	w1, [x0, 608]
	add	w1, w1, 1
	str	w1, [x0, 608]
	mov	x1, x15
	mov	w0, w21
	bl	ftl_get_blk_list_in_sblk
	mov	w1, w0
	tst	w0, 65535
	beq	.L3476
	ldr	x24, [x14, 1104]
	uxtw	x23, w21
	mov	w2, 224
	add	x24, x24, x23, lsl 2
	ldrb	w0, [x24, 2]
	and	w0, w0, 224
	cmp	w0, 32
	ccmp	w0, w2, 4, ne
	beq	.L3481
	cbz	w0, .L3482
	ldr	x0, [x14, 1128]
	ldrh	w2, [x0, 16]
	cmp	w2, w21
	beq	.L3476
	ldrh	w2, [x0, 48]
	cmp	w2, w21
	beq	.L3476
	ldrh	w0, [x0, 80]
	cmp	w0, w21
	bne	.L3512
.L3476:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 144
	ret
.L3481:
	cbnz	w0, .L3476
.L3482:
	add	x0, x19, :lo12:.LANCHOR0
	lsl	x23, x23, 1
	ldr	x0, [x0, 1120]
	ldrh	w0, [x0, x23]
	cbz	w0, .L3484
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 920
	mov	w2, 2521
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3484:
	add	x19, x19, :lo12:.LANCHOR0
	ldr	x0, [x19, 1120]
	strh	wzr, [x0, x23]
	b	.L3476
.L3512:
	and	w1, w1, 65535
	mov	w0, 65535
	sub	w1, w1, #1
	ldrh	w26, [x15, w1, sxtw 1]
	cmp	w26, w0
	bne	.L3486
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 920
	mov	w2, 2529
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3486:
	adrp	x20, .LANCHOR3
	add	x2, x20, :lo12:.LANCHOR3
	ldrb	w1, [x24, 2]
	ldrh	w22, [x2, 1410]
	and	w1, w1, 224
	ldrh	w0, [x2, 1376]
	cmp	w1, 160
	sub	w0, w0, #1
	and	w0, w0, 65535
	mul	w22, w22, w26
	bne	.L3496
	ldrb	w1, [x2, 1320]
	cmp	w1, 2
	orr	w22, w22, w1, lsl 24
	beq	.L3488
	and	w26, w1, 65535
.L3487:
	add	x20, x20, :lo12:.LANCHOR3
	orr	w22, w0, w22
	mov	w0, 1
	bl	buf_alloc
	str	w22, [x0, 40]
	mov	x27, x0
	mov	w1, 1
	bl	sblk_read_page
	ldrb	w0, [x20, 1321]
	mov	w1, 255
	ldrh	w2, [x20, 1338]
	mul	w2, w2, w0
	ldr	x0, [x20, 1312]
	lsl	w2, w2, 2
	bl	ftl_memset
	ldr	w0, [x27, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	bne	.L3489
.L3514:
	mov	w2, 0
	mov	w1, 1
	mov	w0, w21
	bl	gc_add_sblk
	mov	x0, x27
	bl	zbuf_free
	b	.L3476
.L3488:
	ldrh	w0, [x2, 1338]
	mov	w26, w1
	sub	w0, w0, #1
	and	w0, w0, 65535
	b	.L3487
.L3496:
	mov	w26, 1
	b	.L3487
.L3489:
	ldr	x0, [x27, 24]
	ldr	w1, [x0]
	mov	w0, 15555
	movk	w0, 0xf55f, lsl 16
	cmp	w1, w0
	bne	.L3514
	ldrh	w0, [x20, 1376]
	mov	x28, 0
	ldrb	w1, [x20, 1321]
	mov	w22, 0
	mul	w1, w1, w0
	mul	w1, w26, w1
	ldr	x26, [x27, 8]
	and	w0, w1, 65535
	str	w0, [x29, 108]
	and	w0, w25, 65535
	str	w0, [x29, 104]
	add	x0, x19, :lo12:.LANCHOR0
	str	x0, [x29, 96]
.L3491:
	ldr	w0, [x29, 108]
	cmp	w0, w28
	bgt	.L3494
	mov	x0, x27
	bl	zbuf_free
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L3495
	add	x0, x19, :lo12:.LANCHOR0
	ldrb	w4, [x24, 2]
	mov	w3, w22
	and	w1, w25, 65535
	ldr	x0, [x0, 1120]
	ubfx	x4, x4, 5, 3
	ldrh	w2, [x0, x23, lsl 1]
	adrp	x0, .LC255
	add	x0, x0, :lo12:.LC255
	bl	printk
.L3495:
	add	x19, x19, :lo12:.LANCHOR0
	cmp	w22, 31
	ldr	x0, [x19, 1120]
	strh	w22, [x0, x23, lsl 1]
	bhi	.L3476
	mov	w2, 0
	mov	w1, 1
	mov	w0, w21
	bl	gc_add_sblk
	b	.L3476
.L3494:
	ldr	w0, [x26, x28, lsl 2]
	cmn	w0, #1
	beq	.L3492
	bl	lpa_hash_get_ppa
	str	w0, [x29, 124]
	cmn	w0, #1
	bne	.L3493
	ldr	w0, [x26, x28, lsl 2]
	mov	w2, 0
	add	x1, x29, 124
	bl	pm_log2phys
.L3493:
	ldr	x0, [x29, 96]
	mov	w1, 24
	ldrh	w2, [x20, 1304]
	ldrb	w0, [x0, 1205]
	sub	w0, w1, w0
	sub	w1, w0, w2
	mov	w0, 1
	lsl	w0, w0, w1
	ldr	w1, [x29, 124]
	sub	w0, w0, #1
	lsr	w1, w1, w2
	and	w0, w0, w1
	ldrb	w1, [x20, 1306]
	udiv	w0, w0, w1
	ldr	w1, [x29, 104]
	cmp	w1, w0
	bne	.L3492
	add	w22, w22, 1
	and	w22, w22, 65535
.L3492:
	add	x28, x28, 1
	b	.L3491
	.size	gc_block_vpn_scan, .-gc_block_vpn_scan
	.align	2
	.global	ftl_sblk_dump
	.type	ftl_sblk_dump, %function
ftl_sblk_dump:
	sub	sp, sp, #288
	and	x0, x0, 65535
	stp	x29, x30, [sp, 48]
	add	x29, sp, 48
	stp	x19, x20, [sp, 64]
	mov	x20, x0
	stp	x21, x22, [sp, 80]
	adrp	x21, .LANCHOR0
	add	x19, x21, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 96]
	stp	x25, x26, [sp, 112]
	lsl	x23, x0, 2
	stp	x27, x28, [sp, 128]
	str	x0, [x29, 136]
	ldr	x0, [x19, 1104]
	str	x1, [x29, 152]
	add	x1, x0, x23
	ldr	w5, [x0, x23]
	ldrb	w2, [x1, 2]
	mov	w1, w20
	ldrh	w4, [x0, x23]
	adrp	x0, .LC256
	ubfx	x5, x5, 11, 8
	add	x0, x0, :lo12:.LC256
	ubfx	x3, x2, 3, 2
	and	w4, w4, 2047
	ubfx	x2, x2, 5, 3
	bl	printk
	str	x21, [x29, 160]
	mov	w0, 65535
	cmp	w20, w0
	beq	.L3537
	ldrh	w1, [x19, 1096]
	mov	w0, 0
	cmp	w1, w20
	bls	.L3515
	ldr	x0, [x19, 1104]
	adrp	x28, .LANCHOR3
	add	x0, x0, x23
	ldrb	w0, [x0, 2]
	and	w0, w0, 224
	cmp	w0, 160
	bne	.L3539
	add	x0, x28, :lo12:.LANCHOR3
	ldrb	w24, [x0, 1320]
.L3517:
	add	x27, x29, 240
	mov	w0, w20
	mov	w19, 0
	strh	w20, [x27, -32]!
	add	x1, x27, 16
	bl	ftl_get_blk_list_in_sblk
	add	x2, x28, :lo12:.LANCHOR3
	and	w1, w0, 255
	strb	w1, [x29, 217]
	and	w4, w0, 255
	strh	wzr, [x29, 210]
	mov	w3, w24
	ldrh	w2, [x2, 1376]
	adrp	x0, .LC257
	strb	wzr, [x29, 213]
	add	x0, x0, :lo12:.LC257
	strh	wzr, [x29, 218]
	mul	w1, w1, w2
	strh	w1, [x29, 214]
	ldr	x1, [x29, 160]
	add	x1, x1, :lo12:.LANCHOR0
	ldr	x1, [x1, 1104]
	add	x1, x1, x23
	ldrb	w2, [x1, 2]
	mov	w1, w20
	ubfx	x2, x2, 5, 3
	bl	printk
	mov	w0, 1
	bl	buf_alloc
	stp	wzr, wzr, [x29, 168]
	mov	x25, x0
	str	wzr, [x29, 176]
	adrp	x0, .LC195
	add	x0, x0, :lo12:.LC195
	str	x0, [x29, 120]
.L3518:
	add	x0, x28, :lo12:.LANCHOR3
	ldrh	w0, [x0, 1376]
	cmp	w0, w19
	bls	.L3535
	lsl	w0, w19, 1
	mov	w22, 0
	sub	w1, w0, #1
	add	w0, w0, w19
	sub	w0, w0, #1
	stp	w1, w0, [x29, 144]
	b	.L3536
.L3539:
	mov	w24, 1
	b	.L3517
.L3532:
	ldr	x0, [x29, 128]
	ldrh	w10, [x27, x0]
	mov	w0, 65535
	cmp	w10, w0
	beq	.L3519
	add	x2, x28, :lo12:.LANCHOR3
	cmp	w24, 3
	ldrh	w8, [x2, 1410]
	mul	w1, w8, w10
	add	w0, w21, w1
	bne	.L3520
	ldr	x3, [x29, 160]
	add	x3, x3, :lo12:.LANCHOR0
	ldrb	w4, [x3, 1212]
	cbz	w4, .L3521
	ldrb	w8, [x2, 1320]
	ldr	w1, [x29, 148]
.L3548:
	add	w0, w0, w1
	orr	w26, w0, w8, lsl 24
	b	.L3522
.L3521:
	ldrb	w2, [x3, 1213]
	lsl	w8, w21, 24
	cbz	w2, .L3523
	ldr	w1, [x29, 148]
	add	w0, w0, w1
	orr	w26, w0, w8
.L3522:
	str	w26, [x25, 40]
	mov	w1, 1
	str	w10, [x29, 108]
	mov	x0, x25
	bl	sblk_read_page
	ldr	x1, [x25, 24]
	mov	w3, w26
	ldr	x0, [x25, 8]
	ldr	w11, [x25, 52]
	ldr	w10, [x29, 108]
	ldr	w2, [x1, 12]
	mov	w4, w11
	str	w2, [sp, 32]
	str	w11, [x29, 112]
	ldr	w2, [x1, 8]
	str	w2, [sp, 24]
	ldr	w2, [x1, 4]
	str	w2, [sp, 16]
	mov	w2, w19
	ldr	w1, [x1]
	str	w1, [sp, 8]
	ldr	w1, [x0, 12]
	str	w1, [sp]
	mov	w1, w10
	ldp	w5, w6, [x0]
	ldr	w7, [x0, 8]
	ldr	x0, [x29, 120]
	bl	printk
	ldr	w11, [x29, 112]
	ldr	w0, [x29, 168]
	cmp	w11, 512
	ccmn	w11, #1, 4, ne
	csinc	w0, w0, wzr, ne
	str	w0, [x29, 168]
	mov	x0, 35160
	movk	x0, 0x41, lsl 16
	bl	__const_udelay
	ldr	x0, [x29, 160]
	mov	w1, 32
	add	x0, x0, :lo12:.LANCHOR0
	ldr	x0, [x0, 1104]
	add	x0, x0, x23
	ldrb	w0, [x0, 2]
	and	w0, w0, 224
	cmp	w0, 224
	ccmp	w0, w1, 4, ne
	beq	.L3519
	ldr	x0, [x25, 24]
	ldr	w0, [x0, 4]
	bl	lpa_hash_get_ppa
	str	w0, [x29, 204]
	cmn	w0, #1
	bne	.L3526
	ldr	x0, [x25, 24]
	mov	w2, 0
	add	x1, x29, 204
	ldr	w0, [x0, 4]
	bl	pm_log2phys
.L3526:
	ldr	w0, [x29, 204]
	cmp	w26, w0
	bne	.L3527
	ldr	w0, [x29, 172]
	mov	w1, w26
	add	w0, w0, 1
	str	w0, [x29, 172]
	ldr	x0, [x25, 24]
	ldr	w3, [x29, 172]
	ldr	w2, [x0, 4]
	adrp	x0, .LC258
	add	x0, x0, :lo12:.LC258
	bl	printk
.L3527:
	ldr	x0, [x29, 152]
	cbz	x0, .L3529
	ldr	x0, [x29, 176]
	ubfiz	x3, x0, 2, 32
	ldr	x0, [x29, 152]
	ldr	w2, [x0, x3]
	ldr	x0, [x25, 24]
	ldr	w0, [x0, 4]
	cmp	w0, w2
	beq	.L3530
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L3530
	ldr	w1, [x29, 176]
	adrp	x0, .LC259
	str	x3, [x29, 112]
	add	x0, x0, :lo12:.LC259
	bl	printk
	ldr	x3, [x29, 112]
.L3530:
	ldr	x1, [x25, 24]
	ldr	x0, [x29, 152]
	ldr	w1, [x1, 4]
	ldr	w0, [x0, x3]
	cmp	w1, w0
	beq	.L3529
	cmn	w0, #1
	beq	.L3529
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 944
	mov	w2, 1575
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3529:
	ldr	w0, [x29, 176]
	add	w0, w0, 1
	str	w0, [x29, 176]
.L3519:
	add	w21, w21, 1
	and	w21, w21, 65535
.L3534:
	cmp	w24, w21
	bcs	.L3532
	add	w22, w22, 1
	and	w22, w22, 65535
.L3536:
	ldrb	w0, [x29, 217]
	cmp	w0, w22
	bls	.L3533
	sxtw	x0, w22
	mov	w21, 1
	add	x0, x0, 8
	lsl	x0, x0, 1
	str	x0, [x29, 128]
	b	.L3534
.L3523:
	add	w1, w19, w1
	orr	w26, w8, w1
	b	.L3522
.L3520:
	cmp	w24, 2
	bne	.L3524
	ldrb	w8, [x2, 1320]
	ldr	w1, [x29, 144]
	b	.L3548
.L3524:
	add	w26, w19, w1
	b	.L3522
.L3533:
	add	w19, w19, 1
	and	w19, w19, 65535
	b	.L3518
.L3535:
	mov	x0, x25
	bl	zbuf_free
	ldr	x0, [x29, 160]
	ldr	x1, [x29, 136]
	add	x0, x0, :lo12:.LANCHOR0
	ldr	w3, [x29, 172]
	ldr	x0, [x0, 1120]
	ldrh	w2, [x0, x1, lsl 1]
	mov	w1, w20
	adrp	x0, .LC260
	add	x0, x0, :lo12:.LC260
	bl	printk
	ldr	w0, [x29, 168]
.L3515:
	ldp	x19, x20, [sp, 64]
	ldp	x21, x22, [sp, 80]
	ldp	x23, x24, [sp, 96]
	ldp	x25, x26, [sp, 112]
	ldp	x27, x28, [sp, 128]
	ldp	x29, x30, [sp, 48]
	add	sp, sp, 288
	ret
.L3537:
	mov	w0, 0
	b	.L3515
	.size	ftl_sblk_dump, .-ftl_sblk_dump
	.align	2
	.global	zftl_read
	.type	zftl_read, %function
zftl_read:
	sub	sp, sp, #176
	stp	x29, x30, [sp, 16]
	add	x29, sp, 16
	stp	x19, x20, [sp, 32]
	mov	w20, w0
	adrp	x0, .LANCHOR2
	stp	x23, x24, [sp, 64]
	stp	x21, x22, [sp, 48]
	mov	w19, w1
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	mov	w24, w2
	stp	x25, x26, [sp, 80]
	mov	x23, x3
	stp	x27, x28, [sp, 96]
	tbz	x0, 12, .L3550
	mov	w3, w2
	adrp	x0, .LC261
	mov	w2, w1
	add	x0, x0, :lo12:.LC261
	mov	w1, w20
	bl	printk
.L3550:
	cbnz	w20, .L3551
	adrp	x0, .LANCHOR0+1032
	mov	w20, 24576
	ldr	w0, [x0, #:lo12:.LANCHOR0+1032]
.L3552:
	cmp	w0, w19
	ccmp	w0, w24, 0, hi
	bcc	.L3585
	add	w1, w19, w24
	cmp	w0, w1
	bcc	.L3585
	add	w20, w20, w19
	adrp	x19, .LANCHOR0
	add	x0, x19, :lo12:.LANCHOR0
	adrp	x21, .LANCHOR3
	ldr	x1, [x0, 3384]
	ldr	w0, [x1, 24]
	add	w0, w0, w24
	str	w0, [x1, 24]
	add	x0, x21, :lo12:.LANCHOR3
	add	w1, w24, w20
	stp	w1, wzr, [x29, 136]
	sub	w1, w1, #1
	ldrb	w0, [x0, 1946]
	udiv	w26, w20, w0
	udiv	w0, w1, w0
	mov	w22, w26
	sub	w25, w0, w26
	str	w0, [x29, 132]
	add	w25, w25, 1
	adrp	x0, .LANCHOR4
	add	x0, x0, :lo12:.LANCHOR4
	add	x0, x0, 960
	str	x0, [x29, 112]
.L3554:
	cbnz	w25, .L3582
	bl	timer_get_time
	adrp	x1, .LANCHOR5+468
	str	w0, [x1, #:lo12:.LANCHOR5+468]
	ldr	w0, [x29, 140]
.L3549:
	ldp	x19, x20, [sp, 32]
	ldp	x21, x22, [sp, 48]
	ldp	x23, x24, [sp, 64]
	ldp	x25, x26, [sp, 80]
	ldp	x27, x28, [sp, 96]
	ldp	x29, x30, [sp, 16]
	add	sp, sp, 176
	ret
.L3551:
	cmp	w20, 3
	bhi	.L3585
	lsl	w20, w20, 13
	mov	w0, 8192
	b	.L3552
.L3582:
	add	x0, x21, :lo12:.LANCHOR3
	cmp	w22, w26
	ldrb	w1, [x0, 1946]
	ldr	w0, [x29, 132]
	and	w27, w1, 65535
	ccmp	w22, w0, 4, ne
	bne	.L3586
	cmp	w22, w26
	bne	.L3556
	udiv	w3, w20, w1
	and	w0, w24, 65535
	msub	w1, w3, w1, w20
	and	w28, w1, 65535
	sub	w27, w27, w28
	and	w27, w27, 65535
	cmp	w24, w27
	csel	w27, w0, w27, cc
.L3555:
	add	x1, x19, :lo12:.LANCHOR0
	mov	w0, 0
	add	x1, x1, 1306
.L3559:
	ldr	w2, [x1, 34]
	cmp	w22, w2
	bne	.L3557
	ldrb	w2, [x1]
	tbz	x2, 3, .L3557
	add	x1, x19, :lo12:.LANCHOR0
	ubfiz	x0, x0, 6, 32
	add	x0, x1, x0
	lsl	w2, w27, 9
	ubfiz	x27, x27, 9, 16
	ubfiz	x28, x28, 9, 16
	ldr	x1, [x0, 1312]
	mov	x0, x23
	add	x23, x23, x27
	add	x1, x1, x28
	bl	ftl_memcpy
.L3558:
	add	w22, w22, 1
	sub	w25, w25, #1
.L3565:
	add	x0, x19, :lo12:.LANCHOR0
	ldrb	w0, [x0, 3353]
	cmp	w0, 2
	bls	.L3566
	cbnz	w25, .L3554
.L3566:
	add	x2, x21, :lo12:.LANCHOR3
	ldrb	w1, [x2, 1957]
	cbz	w1, .L3554
	ldrb	w2, [x2, 1956]
	add	x0, x19, :lo12:.LANCHOR0
	add	x0, x0, 1304
	add	x0, x0, x2, lsl 6
	bl	sblk_read_page
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	str	x0, [x29, 120]
.L3568:
	add	x0, x21, :lo12:.LANCHOR3
	ldrb	w1, [x0, 1957]
	cbnz	w1, .L3581
	mov	w1, -1
	strb	wzr, [x0, 1957]
	strb	w1, [x0, 1956]
	b	.L3554
.L3556:
	ldr	w0, [x29, 136]
	msub	w27, w1, w22, w0
	and	w27, w27, 255
.L3586:
	mov	w28, 0
	b	.L3555
.L3557:
	add	w0, w0, 1
	add	x1, x1, 64
	cmp	w0, 32
	bne	.L3559
	mov	w0, w22
	bl	lpa_hash_get_ppa
	str	w0, [x29, 156]
	cmn	w0, #1
	bne	.L3560
	mov	w2, 0
	add	x1, x29, 156
	mov	w0, w22
	bl	pm_log2phys
.L3560:
	ldr	w0, [x29, 156]
	cmn	w0, #1
	bne	.L3561
	add	x28, x21, :lo12:.LANCHOR3
	mov	w27, 0
.L3562:
	ldrb	w0, [x28, 1946]
	cmp	w27, w0
	bcs	.L3558
	madd	w0, w22, w0, w27
	cmp	w20, w0
	bhi	.L3563
	ldr	w1, [x29, 136]
	cmp	w1, w0
	bls	.L3563
	mov	x0, x23
	add	x23, x23, 512
	mov	w2, 512
	mov	w1, 0
	bl	ftl_memset
.L3563:
	add	w27, w27, 1
	b	.L3562
.L3561:
	mov	w0, 0
	bl	buf_alloc
	cbz	x0, .L3565
	add	x2, x19, :lo12:.LANCHOR0
	ldr	x4, [x2, 3384]
	ldr	w2, [x4, 40]
	add	w2, w2, 1
	str	w2, [x4, 40]
	ldr	w2, [x29, 156]
	strb	w27, [x0, 56]
	ubfiz	x27, x27, 9, 16
	str	x23, [x0, 16]
	add	x23, x23, x27
	strb	w28, [x0, 57]
	stp	w22, w2, [x0, 36]
	str	w2, [x0, 44]
	bl	zftl_add_read_buf
	b	.L3558
.L3581:
	ldrb	w0, [x0, 1956]
	cmp	w0, 255
	bne	.L3569
	ldp	x1, x0, [x29, 112]
	mov	w2, 1284
	bl	printk
	bl	dump_stack
.L3569:
	add	x0, x21, :lo12:.LANCHOR3
	add	x4, x19, :lo12:.LANCHOR0
	add	x1, x4, 1304
	ldrb	w8, [x0, 1956]
	ubfiz	x27, x8, 6, 8
	add	x28, x1, x27
	sxtw	x27, w8
	lsl	x3, x27, 6
	add	x2, x1, x3
	ldrb	w1, [x1, x3]
	ldr	w9, [x2, 52]
	strb	w1, [x0, 1956]
	cmn	w9, #1
	bne	.L3570
	ldr	x1, [x4, 1128]
	str	w9, [x29, 140]
	ldr	w0, [x1, 552]
	add	w0, w0, 1
	str	w0, [x1, 552]
.L3571:
	add	x0, x19, :lo12:.LANCHOR0
	add	x0, x0, 1304
	add	x0, x0, x27, lsl 6
	ldr	x3, [x0, 24]
	ldr	w0, [x0, 36]
	ldr	w1, [x3, 4]
	cmp	w1, w0
	bne	.L3572
	cmn	w9, #1
	bne	.L3573
.L3572:
	add	x0, x21, :lo12:.LANCHOR3
	add	x5, x19, :lo12:.LANCHOR0
	ldrb	w4, [x0, 1946]
	add	x0, x5, 1304
	add	x0, x0, x27, lsl 6
	ldrb	w6, [x5, 1205]
	mov	w5, 1
	ldrb	w1, [x0, 56]
	lsl	w5, w5, w6
	ldp	x2, x7, [x0, 8]
	cmp	w1, w4
	sub	w5, w5, #1
	ldr	w1, [x0, 40]
	mov	w0, 24
	sub	w0, w0, w6
	csel	x2, x7, x2, cs
	lsl	w6, w5, w0
	lsr	w0, w1, w0
	bic	w1, w1, w6
	and	w0, w0, w5
	bl	flash_read_page_en
	mov	w9, w0
.L3573:
	add	x0, x19, :lo12:.LANCHOR0
	add	x0, x0, 1304
	add	x0, x0, x27, lsl 6
	ldr	x1, [x0, 24]
	ldr	w0, [x0, 36]
	ldr	w1, [x1, 4]
	cmp	w1, w0
	bne	.L3575
	cmn	w9, #1
	bne	.L3576
.L3575:
	add	x11, x19, :lo12:.LANCHOR0
	str	w9, [x29, 128]
	add	x10, x11, 1304
	add	x10, x10, x27, lsl 6
	stp	x11, x10, [x29, 96]
	ldr	x1, [x11, 1128]
	ldr	w0, [x1, 552]
	add	w0, w0, 1
	str	w0, [x1, 552]
	ldr	x0, [x10, 24]
	ldrb	w1, [x10, 1]
	ldr	w2, [x0, 12]
	str	w2, [sp]
	mov	w2, w9
	ldp	w3, w4, [x10, 36]
	ldp	w5, w6, [x0]
	ldr	w7, [x0, 8]
	adrp	x0, .LC263
	add	x0, x0, :lo12:.LC263
	bl	printk
	ldp	x11, x10, [x29, 96]
	add	x2, x21, :lo12:.LANCHOR3
	mov	w0, 24
	ldrb	w1, [x11, 1205]
	ldrh	w3, [x2, 1304]
	sub	w0, w0, w1
	ldrb	w2, [x2, 1306]
	sub	w1, w0, w3
	mov	w0, 1
	lsl	w0, w0, w1
	ldr	w1, [x10, 40]
	sub	w0, w0, #1
	lsr	w1, w1, w3
	and	w0, w0, w1
	mov	x1, 0
	udiv	w0, w0, w2
	bl	ftl_sblk_dump
	ldr	w9, [x29, 128]
.L3576:
	add	x0, x19, :lo12:.LANCHOR0
	add	x0, x0, 1304
	add	x0, x0, x27, lsl 6
	ldr	x1, [x0, 24]
	ldr	w0, [x0, 36]
	ldr	w1, [x1, 4]
	cmp	w1, w0
	bne	.L3577
	cmn	w9, #1
	bne	.L3578
.L3577:
	ldp	x1, x0, [x29, 112]
	mov	w2, 1320
	bl	printk
	bl	dump_stack
.L3578:
	add	x0, x19, :lo12:.LANCHOR0
	add	x0, x0, 1304
	add	x8, x0, x27, lsl 6
	add	x0, x21, :lo12:.LANCHOR3
	ldrb	w2, [x8, 56]
	ldrb	w0, [x0, 1946]
	cmp	w0, w2
	bls	.L3579
	ldr	x0, [x8, 8]
	lsl	w2, w2, 9
	ldrb	w1, [x8, 57]
	add	x1, x0, x1, lsl 9
	ldr	x0, [x8, 16]
	bl	ftl_memcpy
.L3580:
	mov	x1, x28
	add	x0, x19, :lo12:.LANCHOR0
	add	x0, x0, 3355
	bl	buf_remove_buf
	mov	x0, x28
	bl	zbuf_free
	add	x1, x21, :lo12:.LANCHOR3
	ldrb	w0, [x1, 1957]
	sub	w0, w0, #1
	strb	w0, [x1, 1957]
	b	.L3568
.L3570:
	cmp	w9, 256
	bne	.L3571
	ldrb	w5, [x4, 1205]
	mov	w4, 24
	ldrh	w1, [x0, 1304]
	sub	w4, w4, w5
	ldr	w3, [x2, 40]
	sub	w4, w4, w1
	mov	w5, 1
	ldrb	w0, [x0, 1306]
	lsl	w4, w5, w4
	sub	w4, w4, #1
	lsr	w1, w3, w1
	and	w4, w4, w1
	ldr	w2, [x2, 36]
	str	w9, [x29, 96]
	udiv	w4, w4, w0
	str	w5, [x29, 104]
	adrp	x0, .LC262
	add	x0, x0, :lo12:.LC262
	and	w1, w4, 65535
	str	w4, [x29, 128]
	bl	printk
	ldr	w5, [x29, 104]
	mov	w2, 0
	ldr	w4, [x29, 128]
	mov	w1, w5
	mov	w0, w4
	bl	gc_add_sblk
	ldr	w9, [x29, 96]
	b	.L3571
.L3579:
	ldrb	w0, [x8, 2]
	and	w0, w0, -9
	strb	w0, [x8, 2]
	b	.L3580
.L3585:
	mov	w0, -1
	b	.L3549
	.size	zftl_read, .-zftl_read
	.align	2
	.global	zftl_vendor_read
	.type	zftl_vendor_read, %function
zftl_vendor_read:
	stp	x29, x30, [sp, -16]!
	mov	x3, x2
	mov	w2, w1
	add	w1, w0, 512
	add	x29, sp, 0
	mov	w0, 2
	bl	zftl_read
	ldp	x29, x30, [sp], 16
	ret
	.size	zftl_vendor_read, .-zftl_vendor_read
	.align	2
	.global	zftl_sys_read
	.type	zftl_sys_read, %function
zftl_sys_read:
	stp	x29, x30, [sp, -16]!
	mov	x3, x2
	mov	w2, w1
	mov	w1, w0
	add	x29, sp, 0
	mov	w0, 2
	bl	zftl_read
	ldp	x29, x30, [sp], 16
	ret
	.size	zftl_sys_read, .-zftl_sys_read
	.align	2
	.type	zftl_debug_proc_write, %function
zftl_debug_proc_write:
	sub	sp, sp, #224
	cmp	x2, 79
	stp	x29, x30, [sp, 32]
	add	x29, sp, 32
	stp	x19, x20, [sp, 48]
	add	x19, x29, 112
	stp	x21, x22, [sp, 64]
	stp	x23, x24, [sp, 80]
	stp	x25, x26, [sp, 96]
	stp	x27, x28, [sp, 112]
	str	x19, [x29, 104]
	bhi	.L3623
	mov	x21, x2
	mov	x0, x19
	bl	rk_copy_from_user
	mov	x1, -14
	cbnz	x0, .L3605
	mov	x1, x19
	strb	wzr, [x19, x21]
	adrp	x0, .LC264
	add	x0, x0, :lo12:.LC264
	bl	printk
	mov	x1, x19
	adrp	x0, .LC265
	add	x0, x0, :lo12:.LC265
	mov	w3, 16
	mov	w2, 1
	bl	rknand_print_hex
	bl	rknand_device_lock
	mov	x2, 7
	adrp	x1, .LC266
	mov	x0, x19
	add	x1, x1, :lo12:.LC266
	bl	memcmp
	mov	w22, w0
	cbnz	w0, .L3607
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	adrp	x20, .LANCHOR5
	add	x20, x20, :lo12:.LANCHOR5
	mov	w2, 4
	adrp	x0, .LC267
	ldr	x1, [x19, 3384]
	add	x0, x0, :lo12:.LC267
	mov	w23, 65535
	add	x1, x1, 704
	ldrh	w3, [x1, -6]
	bl	rknand_print_hex
	ldrh	w3, [x20, 220]
	adrp	x0, .LC268
	ldr	x1, [x19, 3384]
	mov	w2, 2
	add	x0, x0, :lo12:.LC268
	add	x1, x1, 416
	bl	rknand_print_hex
.L3608:
	ldrh	w0, [x20, 220]
	cmp	w22, w0
	blt	.L3610
.L3611:
	bl	rknand_device_unlock
	mov	x1, x21
.L3605:
	ldp	x19, x20, [sp, 48]
	mov	x0, x1
	ldp	x21, x22, [sp, 64]
	ldp	x23, x24, [sp, 80]
	ldp	x25, x26, [sp, 96]
	ldp	x27, x28, [sp, 112]
	ldp	x29, x30, [sp, 32]
	add	sp, sp, 224
	ret
.L3610:
	mov	w0, 300
	bl	msleep
	ldr	x0, [x19, 3384]
	add	x0, x0, w22, sxtw 1
	ldrh	w0, [x0, 416]
	cmp	w0, w23
	beq	.L3609
	mov	x1, 0
	bl	ftl_sblk_dump
.L3609:
	add	w22, w22, 1
	b	.L3608
.L3607:
	adrp	x1, .LC269
	mov	x2, 7
	add	x1, x1, :lo12:.LC269
	mov	x0, x19
	bl	memcmp
	cbnz	w0, .L3612
	adrp	x22, .LANCHOR0
	add	x20, x22, :lo12:.LANCHOR0
	mov	w2, 4
	adrp	x0, .LC267
	add	x0, x0, :lo12:.LC267
	adrp	x25, .LC271
	ldr	x1, [x20, 3384]
	adrp	x24, .LC272
	add	x25, x25, :lo12:.LC271
	add	x24, x24, :lo12:.LC272
	add	x1, x1, 704
	ldrh	w3, [x1, -6]
	bl	rknand_print_hex
	adrp	x0, .LANCHOR5+220
	ldr	x1, [x20, 3384]
	mov	w2, 2
	add	x20, x29, 192
	ldrh	w3, [x0, #:lo12:.LANCHOR5+220]
	add	x1, x1, 416
	adrp	x0, .LC268
	add	x0, x0, :lo12:.LC268
	bl	rknand_print_hex
	mov	w0, 50
	bl	msleep
	add	x1, x19, 7
	adrp	x0, .LC270
	str	x1, [x20, -88]!
	add	x0, x0, :lo12:.LC270
	bl	printk
	ldr	x0, [x29, 104]
	mov	x1, x20
	adrp	x20, .LANCHOR3
	bl	rk_simple_strtoull.constprop.33
	mov	w23, w0
	add	x1, x20, :lo12:.LANCHOR3
	and	w27, w0, 65535
	add	x19, x1, 1960
	add	x26, x1, 2472
	mov	x28, x1
	str	w0, [x29, 100]
.L3614:
	ldrh	w2, [x19, 2]
	mov	x0, x25
	ldrh	w1, [x19]
	bl	printk
	ldrh	w0, [x19]
	cmp	w0, w27
	bne	.L3613
	ldrb	w3, [x28, 1946]
	mov	w2, 4
	ldr	x1, [x19, 8]
	mov	x0, x24
	lsl	w3, w3, 7
	bl	rknand_print_hex
	mov	w0, 50
	bl	msleep
.L3613:
	add	x19, x19, 16
	cmp	x19, x26
	bne	.L3614
	add	x22, x22, :lo12:.LANCHOR0
	mov	w0, 300
	bl	msleep
	add	x20, x20, :lo12:.LANCHOR3
	mov	w0, 1
	bl	buf_alloc
	ldr	x1, [x22, 3384]
	mov	x19, x0
	add	x1, x1, w23, uxth 2
	ldr	w1, [x1, 704]
	str	w1, [x0, 40]
	str	w1, [x29, 100]
	mov	w1, 1
	bl	sblk_read_page
	ldr	x1, [x19, 24]
	ldr	x0, [x19, 8]
	ldr	w2, [x1, 12]
	str	w2, [sp, 16]
	ldr	w2, [x1, 8]
	str	w2, [sp, 8]
	ldr	w2, [x1, 4]
	str	w2, [sp]
	ldp	w3, w4, [x0]
	ldp	w5, w6, [x0, 8]
	adrp	x0, .LC245
	ldr	w7, [x1]
	add	x0, x0, :lo12:.LC245
	ldr	w2, [x19, 52]
	ldr	w1, [x29, 100]
	bl	printk
	ldrb	w3, [x20, 1946]
	adrp	x0, .LC273
	ldr	x1, [x19, 8]
	add	x0, x0, :lo12:.LC273
	mov	w2, 4
	lsl	w3, w3, 7
.L3630:
	bl	rknand_print_hex
	mov	x0, x19
	bl	zbuf_free
	b	.L3611
.L3612:
	adrp	x1, .LC274
	mov	x2, 7
	add	x1, x1, :lo12:.LC274
	mov	x0, x19
	bl	memcmp
	cbnz	w0, .L3615
	bl	dump_ftl_info
	b	.L3611
.L3615:
	adrp	x1, .LC275
	mov	x2, 9
	add	x1, x1, :lo12:.LC275
	mov	x0, x19
	bl	memcmp
	cbnz	w0, .L3616
	add	x1, x29, 192
	add	x0, x19, 9
	str	x0, [x1, -88]!
	bl	rk_simple_strtoull.constprop.33
	str	w0, [x29, 100]
	adrp	x1, .LANCHOR3+1408
	strh	w0, [x1, #:lo12:.LANCHOR3+1408]
	bl	dump_all_list_info
	b	.L3611
.L3616:
	adrp	x1, .LC276
	mov	x2, 8
	add	x1, x1, :lo12:.LC276
	mov	x0, x19
	bl	memcmp
	cbz	w0, .L3611
	adrp	x1, .LC277
	mov	x2, 8
	add	x1, x1, :lo12:.LC277
	mov	x0, x19
	bl	memcmp
	cbnz	w0, .L3618
	add	x20, x29, 192
	add	x1, x19, 8
	adrp	x0, .LC270
	add	x0, x0, :lo12:.LC270
	str	x1, [x20, -88]!
	bl	printk
	ldr	x0, [x29, 104]
	mov	x1, x20
	adrp	x20, .LANCHOR3
	add	x20, x20, :lo12:.LANCHOR3
	bl	rk_simple_strtoull.constprop.33
	str	w0, [x29, 100]
	mov	w0, 1
	bl	buf_alloc
	ldr	w1, [x29, 100]
	mov	x19, x0
	str	w1, [x0, 40]
	mov	w1, 1
	bl	sblk_read_page
	ldr	x1, [x19, 24]
	ldr	x0, [x19, 8]
	ldr	w2, [x1, 12]
	str	w2, [sp, 16]
	ldr	w2, [x1, 8]
	str	w2, [sp, 8]
	ldr	w2, [x1, 4]
	str	w2, [sp]
	ldp	w3, w4, [x0]
	ldp	w5, w6, [x0, 8]
	adrp	x0, .LC245
	ldr	w7, [x1]
	add	x0, x0, :lo12:.LC245
	ldr	w2, [x19, 52]
	ldr	w1, [x29, 100]
	bl	printk
	ldr	x1, [x19, 8]
	mov	w2, 4
	ldrb	w3, [x20, 1946]
	adrp	x0, .LC218
	add	x0, x0, :lo12:.LC218
	lsl	w3, w3, 7
	bl	rknand_print_hex
	ldrb	w3, [x20, 1946]
	adrp	x0, .LC240
	mov	w2, 4
	add	x0, x0, :lo12:.LC240
	ldr	x1, [x19, 24]
	lsl	w3, w3, 1
	b	.L3630
.L3618:
	adrp	x1, .LC278
	mov	x2, 8
	add	x1, x1, :lo12:.LC278
	mov	x0, x19
	bl	memcmp
	cbnz	w0, .L3619
	add	x20, x29, 192
	add	x1, x19, 8
	adrp	x0, .LC270
	add	x0, x0, :lo12:.LC270
	str	x1, [x20, -88]!
	bl	printk
	ldr	x0, [x29, 104]
	mov	x1, x20
	bl	rk_simple_strtoull.constprop.33
	str	w0, [x29, 100]
	mov	x1, 0
	bl	ftl_sblk_dump
	b	.L3611
.L3619:
	adrp	x1, .LC279
	mov	x2, 10
	add	x1, x1, :lo12:.LC279
	mov	x0, x19
	bl	memcmp
	cbnz	w0, .L3620
	add	x20, x29, 192
	add	x1, x19, 10
	adrp	x0, .LC270
	add	x0, x0, :lo12:.LC270
	str	x1, [x20, -88]!
	bl	printk
	ldr	x0, [x29, 104]
	mov	x1, x20
	bl	rk_simple_strtoull.constprop.33
	str	w0, [x29, 100]
	adrp	x1, .LANCHOR2
	str	w0, [x1, #:lo12:.LANCHOR2]
	b	.L3611
.L3620:
	adrp	x1, .LC280
	mov	x2, 8
	add	x1, x1, :lo12:.LC280
	mov	x0, x19
	bl	memcmp
	cbnz	w0, .L3621
	add	x1, x19, 8
	add	x19, x29, 192
	adrp	x0, .LC270
	add	x0, x0, :lo12:.LC270
	str	x1, [x19, -88]!
	bl	printk
	ldr	x0, [x29, 104]
	mov	x1, x19
	bl	rk_simple_strtoull.constprop.33
	mov	w19, w0
	bl	lpa_hash_get_ppa
	str	w0, [x29, 100]
	cmn	w0, #1
	bne	.L3622
	mov	w2, 0
	add	x1, x29, 100
	mov	w0, w19
	bl	pm_log2phys
.L3622:
	ldr	w2, [x29, 100]
	mov	w1, w19
	adrp	x0, .LC281
	add	x0, x0, :lo12:.LC281
	bl	printk
	b	.L3611
.L3621:
	adrp	x0, .LC282
	add	x0, x0, :lo12:.LC282
	bl	printk
	adrp	x0, .LC283
	add	x0, x0, :lo12:.LC283
	bl	printk
	adrp	x0, .LC284
	add	x0, x0, :lo12:.LC284
	bl	printk
	adrp	x0, .LC285
	add	x0, x0, :lo12:.LC285
	bl	printk
	adrp	x0, .LC286
	add	x0, x0, :lo12:.LC286
	bl	printk
	adrp	x0, .LC287
	add	x0, x0, :lo12:.LC287
	bl	printk
	adrp	x0, .LC288
	add	x0, x0, :lo12:.LC288
	bl	printk
	adrp	x0, .LC289
	add	x0, x0, :lo12:.LC289
	bl	printk
	adrp	x0, .LC290
	add	x0, x0, :lo12:.LC290
	bl	printk
	b	.L3611
.L3623:
	mov	x1, -22
	b	.L3605
	.size	zftl_debug_proc_write, .-zftl_debug_proc_write
	.align	2
	.global	ftl_update_l2p_map
	.type	ftl_update_l2p_map, %function
ftl_update_l2p_map:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	x22, x0
	stp	x25, x26, [sp, 64]
	adrp	x26, .LANCHOR3
	add	x0, x26, :lo12:.LANCHOR3
	stp	x19, x20, [sp, 16]
	stp	x23, x24, [sp, 48]
	stp	x27, x28, [sp, 80]
	ldrh	w23, [x0, 1376]
	ldrb	w1, [x22, 9]
	ldr	x0, [x0, 1928]
	ldrh	w19, [x22, 12]
	mul	w23, w23, w1
	add	x19, x0, x19, lsl 2
	add	x0, x19, w23, sxtw 2
	ldr	w0, [x0, -4]
	cmn	w0, #1
	beq	.L3632
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 976
	mov	w2, 1998
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3632:
	adrp	x27, .LC292
	mov	w21, 0
	add	x0, x27, :lo12:.LC292
	mov	w25, 0
	str	x0, [x29, 104]
.L3633:
	cmp	w25, w23
	bne	.L3639
	adrp	x0, .LANCHOR2
	adrp	x19, .LANCHOR0
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L3640
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w1, [x22]
	ldr	x0, [x0, 1120]
	ubfiz	x2, x1, 1, 16
	ldrh	w3, [x0, x2]
	adrp	x0, .LC294
	mov	w2, w21
	add	x0, x0, :lo12:.LC294
	bl	printk
.L3640:
	add	x19, x19, :lo12:.LANCHOR0
	ldrh	w1, [x22]
	ldr	x0, [x19, 1120]
	strh	w21, [x0, x1, lsl 1]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L3639:
	ldr	w2, [x19]
	cmn	w2, #1
	beq	.L3634
	add	x0, x26, :lo12:.LANCHOR3
	ldrb	w20, [x0, 1946]
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	lsl	w20, w20, 7
	udiv	w20, w2, w20
	and	w20, w20, 65535
	tbz	x0, 12, .L3635
	adrp	x0, .LC291
	mov	w3, w25
	mov	w1, w20
	add	x0, x0, :lo12:.LC291
	bl	printk
.L3635:
	adrp	x28, .LC293
	mov	x24, x19
	mov	w27, w25
	add	x28, x28, :lo12:.LC293
.L3638:
	ldr	w0, [x24]
	cmn	w0, #1
	beq	.L3636
	add	x5, x26, :lo12:.LANCHOR3
	ldrb	w1, [x5, 1946]
	lsl	w1, w1, 7
	udiv	w0, w0, w1
	cmp	w20, w0, uxth
	bne	.L3636
	ldrb	w0, [x22, 9]
	str	x5, [x29, 96]
	sdiv	w1, w27, w0
	msub	w0, w1, w0, w27
	add	x0, x22, w0, sxtw 1
	ldrh	w2, [x0, 16]
	ldrh	w0, [x5, 1410]
	madd	w2, w2, w0, w1
	ldr	x0, [x29, 104]
	str	w2, [x29, 124]
	ldr	w1, [x24]
	bl	pm_ppa_update_check
	ldr	x5, [x29, 96]
	cbz	w0, .L3637
	ldr	x1, [x5, 1928]
	mov	w3, w23
	mov	w2, 4
	mov	x0, x28
	bl	rknand_print_hex
.L3637:
	ldr	w0, [x24]
	add	w21, w21, 1
	mov	w2, 1
	add	x1, x29, 124
	and	w21, w21, 65535
	bl	pm_log2phys
	mov	w0, -1
	str	w0, [x24]
.L3636:
	add	w27, w27, 1
	add	x24, x24, 4
	cmp	w23, w27
	bne	.L3638
.L3634:
	add	w25, w25, 1
	add	x19, x19, 4
	b	.L3633
	.size	ftl_update_l2p_map, .-ftl_update_l2p_map
	.align	2
	.global	ftl_alloc_new_data_sblk
	.type	ftl_alloc_new_data_sblk, %function
ftl_alloc_new_data_sblk:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x0
	str	x21, [sp, 32]
	ldrh	w21, [x0]
	bl	ftl_update_l2p_map
	bl	pm_flush
	ldrh	w0, [x20]
	mov	w1, 65535
	cmp	w0, w1
	beq	.L3662
	bl	zftl_insert_data_list
.L3662:
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	ldr	x0, [x19, 1128]
	add	x0, x0, 16
	cmp	x20, x0
	mov	x0, x20
	cset	w1, ne
	add	w1, w1, 2
	bl	ftl_open_sblk_init
	ldr	x0, [x19, 1128]
	ldr	w0, [x0, 560]
	cmp	w0, w21
	bne	.L3664
	mov	w20, 65535
	cmp	w21, w20
	beq	.L3664
	mov	w1, w21
	adrp	x0, .LC295
	add	x0, x0, :lo12:.LC295
	bl	printk
	ldr	x0, [x19, 1128]
	ldr	w0, [x0, 564]
	bl	gc_mark_bad_ppa
	ldr	x0, [x19, 1128]
	mov	w1, -1
	str	w20, [x0, 560]
	str	w1, [x0, 564]
.L3664:
	bl	ftl_ext_info_flush
	mov	w0, 0
	bl	ftl_info_flush
	bl	lpa_rebuild_hash
	ldr	x21, [sp, 32]
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
	.size	ftl_alloc_new_data_sblk, .-ftl_alloc_new_data_sblk
	.align	2
	.global	ftl_write_commit
	.type	ftl_write_commit, %function
ftl_write_commit:
	stp	x29, x30, [sp, -144]!
	adrp	x0, .LANCHOR0
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	add	x20, x0, :lo12:.LANCHOR0
	stp	x27, x28, [sp, 80]
	add	x28, x20, 1304
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
.L3668:
	adrp	x0, .LANCHOR0
	add	x0, x0, :lo12:.LANCHOR0
	ldrb	w1, [x0, 3381]
	cbz	w1, .L3670
	ldrb	w3, [x0, 3408]
	add	x2, x0, 1304
	sub	w1, w1, #1
	strb	w1, [x0, 3381]
	ubfiz	x4, x3, 6, 8
	add	x4, x2, x4
	stp	x3, x4, [x29, 104]
	lsl	x3, x3, 6
	add	x4, x2, x3
	ldrb	w2, [x2, x3]
	strb	w2, [x0, 3408]
	ldr	w1, [x4, 36]
	ldr	w0, [x0, 3364]
	cmp	w1, w0
	bcc	.L3672
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1000
	mov	w2, 607
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3672:
	ldr	x0, [x29, 104]
	ldr	w1, [x20, 3364]
	add	x0, x28, x0, lsl 6
	ldr	w23, [x0, 36]
	cmp	w23, w1
	bcc	.L3673
	ldr	x0, [x29, 112]
	bl	zbuf_free
	mov	w0, -1
.L3667:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 144
	ret
.L3673:
	ldrb	w22, [x0, 57]
	ldrb	w21, [x0, 56]
	ldr	x27, [x0, 8]
	ldr	x24, [x0, 24]
	ldrb	w0, [x20, 3380]
	cbz	w0, .L3675
	adrp	x0, .LANCHOR5+360
	ldrb	w19, [x0, #:lo12:.LANCHOR5+360]
	add	x19, x28, x19, lsl 6
.L3676:
	ldrb	w0, [x19]
	cmp	w0, 255
	bne	.L3677
	ldr	w0, [x19, 36]
	cmp	w23, w0
	bne	.L3675
	ldr	x0, [x19, 8]
	ubfiz	x22, x22, 9, 8
	lsl	w2, w21, 9
	add	x1, x27, x22
	add	x0, x0, x22
	bl	ftl_memcpy
	adrp	x0, .LANCHOR3+1946
	ldr	x2, [x19, 8]
	ldr	x1, [x19, 24]
	ldrb	w0, [x0, #:lo12:.LANCHOR3+1946]
	add	x1, x1, 16
	sub	w0, w0, #2
	sbfiz	x0, x0, 9, 32
	add	x2, x2, x0
	mov	w0, 2
	bl	ftl_debug_info_fill
	ldr	x0, [x29, 112]
	bl	zbuf_free
	b	.L3668
.L3677:
	ubfiz	x19, x0, 6, 8
	add	x19, x28, x19
	b	.L3676
.L3675:
	mov	w0, w23
	bl	lpa_hash_get_ppa
	str	w0, [x29, 140]
	cmn	w0, #1
	bne	.L3679
	mov	w2, 0
	add	x1, x29, 140
	mov	w0, w23
	bl	pm_log2phys
.L3679:
	ldr	x19, [x20, 1128]
	add	x0, x20, 1306
	ldr	w2, [x29, 140]
	add	x4, x20, 3354
	add	x19, x19, 16
	mov	w3, 0
	mov	x26, 0
.L3681:
	ldr	w1, [x0, 34]
	cmp	w23, w1
	bne	.L3680
	ldrb	w1, [x0]
	tbz	x1, 3, .L3680
	ldr	w2, [x0, 38]
	and	w1, w1, -9
	ldr	x26, [x0, 6]
	mov	w3, 1
	strb	w1, [x0]
.L3680:
	add	x0, x0, 64
	cmp	x0, x4
	bne	.L3681
	cbz	w3, .L3682
	str	w2, [x29, 140]
.L3682:
	adrp	x25, .LANCHOR3
	add	x0, x25, :lo12:.LANCHOR3
	str	x25, [x29, 120]
	ldrb	w0, [x0, 1946]
	cmp	w21, w0
	bcs	.L3708
	add	w21, w22, w21
	cbz	x26, .L3684
	cbz	w22, .L3685
	lsl	w2, w22, 9
	mov	x1, x26
	mov	x0, x27
	bl	ftl_memcpy
	ldr	x19, [x20, 1128]
	add	x19, x19, 48
.L3685:
	ldr	x0, [x29, 120]
	add	x0, x0, :lo12:.LANCHOR3
	ldrb	w2, [x0, 1946]
	cmp	w21, w2
	bcc	.L3686
	ldr	x19, [x20, 1128]
	add	x19, x19, 16
.L3708:
	mov	w26, 0
	b	.L3683
.L3686:
	ubfiz	x0, x21, 9, 9
	sub	w2, w2, w21
	add	x1, x26, x0
	lsl	w2, w2, 9
	add	x0, x27, x0
	bl	ftl_memcpy
	b	.L3708
.L3684:
	ldr	w0, [x29, 140]
	cmn	w0, #1
	beq	.L3687
	mov	w0, 1
	bl	buf_alloc
	ldr	w1, [x29, 140]
	mov	x25, x0
	stp	w23, w1, [x0, 36]
	mov	w1, 1
	bl	sblk_read_page
	ldr	x3, [x25, 24]
	ldr	w0, [x3, 4]
	ldr	w26, [x3, 12]
	cmp	w23, w0
	add	w26, w26, 1
	bne	.L3688
	ldr	w0, [x25, 52]
	cmn	w0, #1
	bne	.L3689
.L3688:
	ldrb	w2, [x20, 1205]
	mov	w6, 1
	mov	w0, 24
	ldr	w1, [x25, 40]
	sub	w0, w0, w2
	lsl	w6, w6, w2
	ldr	x2, [x29, 120]
	sub	w6, w6, #1
	add	x2, x2, :lo12:.LANCHOR3
	lsl	w7, w6, w0
	lsr	w0, w1, w0
	bic	w1, w1, w7
	ldrb	w4, [x2, 1946]
	and	w0, w0, w6
	ldr	x2, [x25, 8]
	bl	flash_read_page_en
	str	w0, [x25, 52]
.L3689:
	ldr	x0, [x25, 24]
	ldr	w0, [x0, 4]
	cmp	w23, w0
	bne	.L3690
	ldr	w0, [x25, 52]
	cmn	w0, #1
	bne	.L3691
.L3690:
	ldr	x1, [x20, 1128]
	mov	w3, w23
	ldr	w2, [x29, 140]
	ldr	w0, [x1, 552]
	add	w0, w0, 1
	str	w0, [x1, 552]
	adrp	x0, .LC296
	add	x0, x0, :lo12:.LC296
	ldrb	w1, [x25, 1]
	ldr	w4, [x25, 52]
	bl	printk
	ldr	x1, [x25, 24]
	mov	w3, 4
	adrp	x0, .LC240
	mov	w2, w3
	add	x0, x0, :lo12:.LC240
	bl	rknand_print_hex
.L3691:
	ldr	x0, [x25, 24]
	ldr	w0, [x0, 4]
	cmp	w23, w0
	bne	.L3692
	ldr	w0, [x25, 52]
	cmn	w0, #1
	bne	.L3693
.L3692:
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1000
	mov	w2, 699
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3693:
	cbz	w22, .L3694
	ldr	w0, [x29, 140]
	lsl	w2, w22, 9
	cmn	w0, #1
	beq	.L3695
	ldr	x1, [x25, 8]
	mov	x0, x27
	bl	ftl_memcpy
.L3696:
	ldr	x19, [x20, 1128]
	add	x19, x19, 48
.L3694:
	ldr	x0, [x29, 120]
	add	x0, x0, :lo12:.LANCHOR3
	ldrb	w2, [x0, 1946]
	cmp	w21, w2
	bcc	.L3697
	bls	.L3698
	ldr	x19, [x20, 1128]
	add	x19, x19, 16
.L3698:
	cbz	x25, .L3683
	ldrb	w0, [x25, 2]
	mov	x1, x25
	and	w0, w0, -9
	strb	w0, [x25, 2]
	add	x0, x20, 3355
	bl	buf_remove_buf
	mov	x0, x25
	bl	zbuf_free
.L3683:
	ldrh	w0, [x19, 6]
	cbnz	w0, .L3700
	bl	ftl_flush
	mov	x0, x19
	bl	ftl_alloc_new_data_sblk
.L3700:
	mov	x0, x19
	bl	ftl_get_new_free_page
	mov	w3, w0
	ldr	x0, [x29, 104]
	mov	x1, x24
	str	w3, [x29, 100]
	lsl	x22, x0, 6
	add	x21, x28, x22
	ldr	w0, [x21, 32]
	stp	w0, w23, [x24]
	str	w26, [x24, 12]
	ldr	w0, [x29, 140]
	str	w0, [x24, 8]
	ldr	x0, [x29, 120]
	str	wzr, [x1, 16]!
	add	x25, x0, :lo12:.LANCHOR3
	mov	w0, 2
	ldrb	w2, [x25, 1946]
	sub	w2, w2, #2
	sbfiz	x2, x2, 9, 32
	add	x2, x27, x2
	bl	ftl_debug_info_fill
	ldr	w0, [x29, 140]
	mov	w1, 10
	ldr	w3, [x29, 100]
	stp	w3, w0, [x21, 40]
	mov	w0, -1
	strb	w0, [x28, x22]
	ldrb	w0, [x21, 2]
	orr	w0, w0, w1
	strb	w0, [x21, 2]
	ldrh	w1, [x19, 12]
	ldrh	w0, [x19, 10]
	add	w0, w0, w1
	ldr	x1, [x29, 112]
	sub	w0, w0, #1
	strh	w0, [x21, 48]
	adrp	x21, .LANCHOR5
	add	x22, x21, :lo12:.LANCHOR5
	add	x0, x22, 360
	bl	buf_add_tail
	ldrb	w0, [x20, 3380]
	add	w0, w0, 1
	strb	w0, [x20, 3380]
	bl	timer_get_time
	str	w0, [x22, 364]
	ldrb	w2, [x20, 3380]
	ldrh	w0, [x19, 6]
	cmp	w2, 2
	bhi	.L3701
	cmp	w0, 1
	bne	.L3671
.L3701:
	ldrb	w1, [x19, 5]
	cmp	w1, 0
	mov	w1, 0
	cset	w4, ne
	cmp	w0, 1
	add	x0, x21, :lo12:.LANCHOR5
	csinc	w4, w2, w4, eq
	ldrb	w0, [x0, 360]
	mov	w3, w0
.L3705:
	cmp	w1, w4
	bne	.L3706
	and	w1, w1, 255
	add	x21, x21, :lo12:.LANCHOR5
	sub	w2, w2, w1
	ubfiz	x0, x0, 6, 8
	strb	w2, [x20, 3380]
	add	x0, x28, x0
	strb	w3, [x21, 360]
	bl	sblk_prog_page
	ldrh	w0, [x19, 6]
	cmp	w0, 1
	bne	.L3671
	bl	sblk_wait_write_queue_completed
	bl	ftl_write_completed
	mov	x0, x19
	bl	ftl_write_last_log_page
	mov	x0, x19
	bl	ftl_alloc_new_data_sblk
.L3671:
	ldrb	w0, [x20, 3381]
	cbnz	w0, .L3668
.L3670:
	bl	ftl_write_completed
	mov	w0, 0
	b	.L3667
.L3697:
	ldr	w0, [x29, 140]
	sub	w2, w2, w21
	lsl	w2, w2, 9
	cmn	w0, #1
	ubfiz	x0, x21, 7, 9
	beq	.L3699
	ldr	x1, [x25, 8]
	lsl	x0, x0, 2
	add	x1, x1, x0
	add	x0, x27, x0
	bl	ftl_memcpy
	b	.L3698
.L3699:
	mov	w1, 0
	add	x0, x27, x0, lsl 2
	bl	ftl_memset
	b	.L3698
.L3706:
	ubfiz	x3, x3, 6, 8
	add	w1, w1, 1
	ldrb	w3, [x28, x3]
	b	.L3705
.L3707:
	lsl	w2, w22, 9
	mov	x25, 0
	mov	w26, 0
.L3695:
	mov	w1, 0
	mov	x0, x27
	bl	ftl_memset
	b	.L3696
.L3687:
	cbnz	w22, .L3707
	mov	w26, 0
	mov	x25, 0
	b	.L3694
	.size	ftl_write_commit, .-ftl_write_commit
	.align	2
	.global	gc_do_copy_back
	.type	gc_do_copy_back, %function
gc_do_copy_back:
	stp	x29, x30, [sp, -240]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR3
	add	x1, x22, :lo12:.LANCHOR3
	stp	x19, x20, [sp, 16]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	ldrb	w0, [x1, 1337]
	cbnz	w0, .L3734
	bl	buf_alloc
	mov	x20, x0
	cbz	x0, .L3733
	adrp	x19, .LANCHOR0
	add	x2, x19, :lo12:.LANCHOR0
	ldrh	w3, [x2, 3442]
	mov	w0, w3
	bl	gc_get_src_ppa_from_index
	add	w3, w3, 1
	mov	w23, w0
	str	w23, [x20, 40]
	strh	w3, [x2, 3442]
	mov	w1, 1
	mov	x0, x20
	bl	sblk_read_page
	ldr	w0, [x20, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	bne	.L3736
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1024
	mov	w2, 1032
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3736:
	ldr	x0, [x20, 24]
	ldr	w21, [x0, 4]
	mov	w0, w21
	bl	lpa_hash_get_ppa
	str	w0, [x29, 192]
	cmn	w0, #1
	bne	.L3737
	mov	w2, 0
	add	x1, x29, 192
	mov	w0, w21
	bl	pm_log2phys
.L3737:
	ldr	w24, [x29, 192]
	cmp	w23, w24
	bne	.L3738
	add	x1, x19, :lo12:.LANCHOR0
	add	x0, x1, 1306
	add	x1, x1, 3354
.L3741:
	ldr	w2, [x0, 34]
	cmp	w21, w2
	bne	.L3739
	ldrb	w2, [x0]
	tbz	x2, 1, .L3739
	mov	x0, x20
	bl	zbuf_free
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L3733
	add	x19, x19, :lo12:.LANCHOR0
	adrp	x0, .LC297
	mov	w2, w23
	mov	w1, w21
	add	x0, x0, :lo12:.LC297
	ldrh	w3, [x19, 3442]
	bl	printk
.L3733:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 240
	ret
.L3739:
	add	x0, x0, 64
	cmp	x1, x0
	bne	.L3741
	add	x22, x22, :lo12:.LANCHOR3
	strb	wzr, [x20, 57]
	str	w21, [x20, 36]
	ldrb	w0, [x22, 1946]
	strb	w0, [x20, 56]
	ldr	x0, [x20, 24]
	ldr	w1, [x0]
	str	w1, [x20, 32]
	str	wzr, [x0, 16]
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L3742
	mov	w0, w21
	bl	lpa_hash_get_ppa
	add	x1, x19, :lo12:.LANCHOR0
	mov	w3, w0
	mov	w4, w23
	adrp	x0, .LC298
	mov	w2, w24
	add	x0, x0, :lo12:.LC298
	ldrh	w5, [x1, 3442]
	mov	w1, w21
	bl	printk
.L3742:
	add	x19, x19, :lo12:.LANCHOR0
	mov	x0, x20
	bl	ftl_gc_write_buf
	bl	ftl_write_commit
	ldr	x1, [x19, 3384]
	ldr	w0, [x1, 60]
	add	w0, w0, 1
	str	w0, [x1, 60]
	ldrh	w0, [x19, 3444]
	add	w0, w0, 1
	strh	w0, [x19, 3444]
	b	.L3733
.L3738:
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L3743
	add	x19, x19, :lo12:.LANCHOR0
	mov	w0, w21
	bl	lpa_hash_get_ppa
	mov	w3, w0
	mov	w4, w23
	adrp	x0, .LC298
	ldrh	w5, [x19, 3442]
	mov	w2, w24
	mov	w1, w21
	add	x0, x0, :lo12:.LC298
	bl	printk
.L3743:
	mov	x0, x20
	bl	zbuf_free
	b	.L3733
.L3734:
	adrp	x21, .LANCHOR0
	add	x0, x21, :lo12:.LANCHOR0
	ldrb	w1, [x1, 1321]
	ldr	x26, [x0, 1128]
	add	x0, x26, 80
	str	x0, [x29, 184]
	ldrb	w0, [x0, 9]
	and	w19, w0, 65535
	cmp	w1, w19
	bhi	.L3798
	cmp	w19, 2
	mov	w23, 2
	csel	w23, w19, w23, ls
	and	w23, w23, 65535
.L3744:
	add	x1, x22, :lo12:.LANCHOR3
	ldrb	w20, [x1, 1320]
	cmp	w20, 3
	bne	.L3745
	add	x3, x21, :lo12:.LANCHOR0
	ldrb	w2, [x3, 1212]
	ldrh	w5, [x3, 5522]
	cbz	w2, .L3746
	sdiv	w0, w5, w0
	ldrb	w1, [x1, 1950]
	mov	w24, w5
	and	w26, w0, 65535
	cbz	w1, .L3747
	adrp	x1, .LANCHOR2
	add	x1, x1, :lo12:.LANCHOR2
	add	x1, x1, 2136
	ldrh	w0, [x1, w0, sxtw 1]
	cmp	w0, 0
	cset	w20, ne
.L3865:
	add	w20, w20, 1
.L3748:
	msub	w19, w19, w26, w5
	and	w19, w19, 65535
.L3749:
	adrp	x8, .LANCHOR5
	adrp	x0, .LANCHOR2
	add	x8, x8, :lo12:.LANCHOR5
	add	x0, x0, :lo12:.LANCHOR2
	add	x7, x21, :lo12:.LANCHOR0
	mul	w11, w20, w23
	add	x10, x22, :lo12:.LANCHOR3
	add	x6, x0, 2136
	sxtw	x12, w26
	mov	x13, x8
	add	x7, x7, 3416
	mov	w5, 0
.L3753:
	cmp	w5, w11
	bge	.L3806
	ldr	x1, [x29, 184]
	add	w2, w24, w5
	ldrh	w0, [x10, 1338]
	ldrb	w1, [x1, 9]
	mul	w0, w0, w1
	ldrb	w1, [x8, 465]
	sub	w0, w0, w1
	cmp	w2, w0
	blt	.L3754
	ldrb	w0, [x10, 1950]
	cbz	w0, .L3806
	ldrh	w0, [x6, x12, lsl 1]
	cmp	w0, w26
	bcc	.L3755
.L3806:
	mov	w0, 1
	str	w0, [x29, 180]
	b	.L3751
.L3798:
	mov	w23, 1
	b	.L3744
.L3747:
	adrp	x0, .LANCHOR5+461
	ldrb	w0, [x0, #:lo12:.LANCHOR5+461]
	cbz	w0, .L3800
	sub	w0, w26, #62
	and	w0, w0, 65535
	cmp	w0, 2159
	bhi	.L3801
	udiv	w20, w26, w20
	add	w20, w20, w20, lsl 1
	sub	w20, w26, w20
	and	w20, w20, 65535
	cmp	w20, 0
	cset	w20, eq
	b	.L3865
.L3800:
	mov	w20, 1
	b	.L3748
.L3801:
	mov	w20, 2
	b	.L3748
.L3746:
	ldrb	w1, [x1, 1336]
	cbz	w1, .L3750
	add	w19, w0, w0, lsl 1
	mov	w24, w5
	sdiv	w19, w5, w19
	mul	w0, w0, w19
	and	w26, w19, 65535
	sub	w0, w0, w0, lsl 2
	add	w19, w0, w5
	ldrb	w0, [x3, 1213]
	sdiv	w19, w19, w20
	and	w19, w19, 65535
	cbz	w0, .L3749
	add	w4, w26, w26, lsl 1
	and	w26, w4, 65535
	b	.L3749
.L3750:
	sdiv	w2, w5, w0
	adrp	x1, .LANCHOR2
	add	x1, x1, :lo12:.LANCHOR2
	add	x1, x1, 3672
	msub	w19, w19, w2, w5
	ldrh	w25, [x1, w2, sxtw 1]
	and	w19, w19, 65535
	and	w1, w25, 7
	str	w1, [x29, 180]
	lsr	w26, w25, 3
	madd	w0, w26, w0, w19
	add	w0, w0, w0, lsl 1
	and	w24, w0, 65535
	uxtw	x0, w1
	cmp	w0, 1
	beq	.L3749
.L3751:
	mul	w0, w20, w23
	str	wzr, [x29, 160]
	str	w0, [x29, 176]
	ubfiz	w0, w23, 1, 15
	strh	w0, [x29, 128]
	str	w0, [x29, 156]
	msub	w0, w0, w20, w24
	and	w0, w0, 65535
	str	w0, [x29, 152]
	ldrh	w0, [x29, 152]
	str	x0, [x29, 120]
	adrp	x0, .LANCHOR5
	add	x28, x0, :lo12:.LANCHOR5
	adrp	x0, .LANCHOR4
	add	x0, x0, :lo12:.LANCHOR4
	str	x0, [x29, 112]
.L3756:
	ldr	w0, [x29, 160]
	ldr	w1, [x29, 176]
	and	w0, w0, 65535
	str	w0, [x29, 164]
	ldrh	w27, [x29, 160]
	cmp	w0, w1
	blt	.L3780
	add	x1, x22, :lo12:.LANCHOR3
	ldrb	w0, [x1, 1320]
	cmp	w0, 3
	add	x0, x29, 192
	bne	.L3781
	add	x2, x21, :lo12:.LANCHOR0
	ldrb	w2, [x2, 1212]
	cbz	w2, .L3782
	ldr	w2, [x29, 176]
	mov	w1, 0
	sub	w2, w2, #1
.L3783:
	cmp	w1, w2
	blt	.L3784
.L3870:
	ldr	x0, [x0, w2, sxtw 3]
	mov	w1, -1
	strb	w1, [x0]
	ldrb	w1, [x29, 176]
	ldr	x0, [x29, 192]
	bl	sblk_prog_page
	b	.L3785
.L3745:
	ldrb	w1, [x1, 1322]
	cbnz	w1, .L3752
	add	x1, x21, :lo12:.LANCHOR0
	mov	w20, 1
	ldrh	w24, [x1, 5522]
	sdiv	w26, w24, w0
	msub	w19, w19, w26, w24
	and	w19, w19, 65535
	b	.L3749
.L3752:
	add	x1, x21, :lo12:.LANCHOR0
	mov	w20, 2
	ldrh	w24, [x1, 5522]
	sdiv	w26, w24, w0
	msub	w19, w19, w26, w24
	and	w19, w19, 65535
	b	.L3749
.L3755:
	tbz	x5, 0, .L3806
.L3754:
	ldr	x9, [x13, 288]
	sbfiz	x2, x2, 2, 32
	ldr	w0, [x9, x2]
	cmn	w0, #1
	bne	.L3757
	ldrh	w3, [x7, 26]
	ldrh	w0, [x7, 24]
	cmp	w0, w3
	bls	.L3733
	ldrb	w0, [x10, 1950]
	cbz	w0, .L3758
	ldrh	w0, [x6, x12, lsl 1]
	cmp	w0, w26
	bcs	.L3758
	tbz	x5, 0, .L3758
	ubfiz	x0, x0, 2, 16
	ldr	w0, [x9, x0]
.L3866:
	str	w0, [x9, x2]
.L3757:
	add	w5, w5, 1
	and	w5, w5, 65535
	b	.L3753
.L3758:
	mov	w0, w3
	bl	gc_get_src_ppa_from_index
	add	w3, w3, 1
	strh	w3, [x7, 26]
	b	.L3866
.L3780:
	ldr	w0, [x29, 164]
	add	w1, w24, w0
	sxtw	x0, w1
	str	x0, [x29, 168]
	add	x0, x22, :lo12:.LANCHOR3
	sxtw	x2, w1
	ldr	x0, [x0, 1328]
	ldrb	w0, [x0, x2]
	cmp	w0, 255
	bne	.L3760
	str	w1, [x29, 144]
	mov	w0, 0
	bl	buf_alloc
	mov	x25, x0
	ldr	w1, [x29, 144]
	cbnz	x0, .L3761
	str	w1, [x29, 144]
	bl	sblk_wait_write_queue_completed
	bl	ftl_write_completed
	bl	gc_write_completed
	bl	gc_free_temp_buf
	mov	w0, 0
	bl	buf_alloc
	ldr	w1, [x29, 144]
	mov	x25, x0
	cbz	x0, .L3733
.L3761:
	add	x2, x22, :lo12:.LANCHOR3
	ldr	x3, [x29, 168]
	ldrb	w5, [x25, 1]
	ldr	x0, [x2, 1328]
	strb	w5, [x0, x3]
	add	x0, x21, :lo12:.LANCHOR0
	ldr	x3, [x29, 184]
	ldrb	w5, [x0, 3423]
	add	w5, w5, 1
	strb	w5, [x0, 3423]
	add	w0, w27, w24
	strh	w0, [x25, 48]
	ldrb	w0, [x29, 180]
	strb	w0, [x25, 61]
	ldrh	w0, [x2, 1338]
	ldrb	w5, [x3, 9]
	adrp	x3, .LANCHOR5
	mul	w0, w0, w5
	add	x5, x3, :lo12:.LANCHOR5
	ldrb	w5, [x5, 465]
	sub	w0, w0, w5
	cmp	w1, w0
	blt	.L3762
	ldrb	w0, [x2, 1950]
	cbz	w0, .L3763
	adrp	x0, .LANCHOR2
	add	x0, x0, :lo12:.LANCHOR2
	add	x0, x0, 2136
	ldrh	w0, [x0, w26, sxtw 1]
	cmp	w0, w26
	bcs	.L3763
	tbnz	x27, 0, .L3762
.L3763:
	ldr	x0, [x28, 280]
	mov	w2, -1
	ldr	x3, [x29, 168]
	str	w2, [x0, x3, lsl 2]
	ldrb	w0, [x28, 465]
	cmp	w0, 2
	bne	.L3764
	ldr	x0, [x29, 184]
	add	x7, x22, :lo12:.LANCHOR3
	ldrh	w2, [x28, 462]
	ldrh	w6, [x7, 1338]
	ldrb	w0, [x0, 9]
	mul	w0, w0, w6
	sub	w0, w0, #2
	cmp	w1, w0
	bne	.L3765
	ldr	x1, [x28, 280]
	ldr	x0, [x25, 8]
	str	x7, [x29, 144]
	bl	ftl_memcpy
	ldr	x7, [x29, 144]
	mov	w1, 0
	ldr	x0, [x25, 24]
	ldrb	w2, [x7, 1946]
	lsl	w2, w2, 1
	bl	ftl_memset
	ldr	x0, [x25, 24]
	mov	w1, 15555
	movk	w1, 0xf55f, lsl 16
	str	w1, [x0]
	ldr	x2, [x25, 24]
	ldrh	w1, [x28, 462]
	ldr	x0, [x25, 8]
	str	x2, [x29, 144]
	bl	js_hash
	ldr	x2, [x29, 144]
	add	x1, x21, :lo12:.LANCHOR0
	str	w0, [x2, 4]
	ldr	x1, [x1, 1128]
	ldr	x0, [x25, 24]
	ldr	w1, [x1, 132]
	str	w1, [x0, 8]
	ldr	x0, [x25, 24]
	str	wzr, [x0, 12]
.L3766:
	ldr	x0, [x25, 24]
	str	wzr, [x0, 16]
.L3760:
	add	x5, x22, :lo12:.LANCHOR3
	ldr	x1, [x29, 168]
	ldrsw	x2, [x29, 164]
	add	x3, x29, 192
	add	x7, x21, :lo12:.LANCHOR0
	ldr	x0, [x5, 1328]
	add	x6, x7, 1304
	ldrb	w1, [x0, x1]
	ubfiz	x0, x1, 6, 8
	add	x0, x6, x0
	add	x6, x6, x1, lsl 6
	str	x0, [x3, x2, lsl 3]
	ldrb	w0, [x29, 180]
	strb	w0, [x6, 61]
	mov	w0, 2
	strh	w0, [x6, 50]
	ldrb	w0, [x5, 1320]
	cmp	w0, 3
	bne	.L3771
	ldrb	w8, [x7, 1212]
	cbz	w8, .L3772
	ldrb	w0, [x5, 1950]
	and	w6, w27, 1
	add	w7, w6, w26
	cbz	w0, .L3773
	adrp	x5, .LANCHOR2
	add	x5, x5, :lo12:.LANCHOR2
	add	x5, x5, 2136
	ldrh	w0, [x5, w26, sxtw 1]
	cmp	w0, w26
	bcs	.L3773
	cmp	w6, 0
	csel	w7, w7, w0, eq
.L3773:
	udiv	w5, w27, w20
	ldr	x0, [x29, 184]
	add	x6, x21, :lo12:.LANCHOR0
	add	x6, x6, x1, lsl 6
	add	w5, w5, w19
	add	x5, x0, w5, sxtw 1
	ldrh	w0, [x5, 16]
	add	x5, x22, :lo12:.LANCHOR3
	ldrh	w5, [x5, 1410]
	madd	w0, w0, w5, w7
	orr	w0, w0, 50331648
	str	w0, [x6, 1344]
.L3778:
	add	x0, x21, :lo12:.LANCHOR0
	add	x0, x0, 1304
	add	x1, x0, x1, lsl 6
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	ldr	w5, [x1, 40]
	ldr	x0, [x0, 296]
	ldrh	w1, [x1, 48]
	str	w5, [x0, x1, lsl 2]
	b	.L3797
.L3765:
	ldrb	w5, [x7, 1321]
	and	x1, x2, 65532
	ldr	x0, [x28, 280]
	str	x7, [x29, 144]
	add	x1, x0, x1
	ldr	x0, [x25, 8]
	mul	w5, w5, w6
	lsl	w5, w5, 2
	sub	w5, w5, w2
	str	w5, [x29, 104]
	mov	w2, w5
	bl	ftl_memcpy
	ldr	x7, [x29, 144]
	mov	w1, 0
	ldr	x0, [x25, 24]
	ldrb	w2, [x7, 1946]
	lsl	w2, w2, 1
	bl	ftl_memset
	ldr	x0, [x25, 24]
	mov	w1, 15555
	movk	w1, 0xf55f, lsl 16
	ldr	w5, [x29, 104]
	str	w1, [x0]
	mov	w1, w5
	ldr	x2, [x25, 24]
	ldr	x0, [x25, 8]
	str	x2, [x29, 144]
	bl	js_hash
	ldr	x2, [x29, 144]
	add	x1, x21, :lo12:.LANCHOR0
	str	w0, [x2, 4]
	ldr	x1, [x1, 1128]
	ldr	x0, [x25, 24]
	ldr	w1, [x1, 132]
	str	w1, [x0, 8]
	mov	w1, 1
	ldr	x0, [x25, 24]
	str	w1, [x0, 12]
	b	.L3766
.L3764:
	add	x5, x22, :lo12:.LANCHOR3
	ldr	x1, [x28, 280]
	str	x5, [x29, 144]
	ldrb	w0, [x5, 1321]
	ldrh	w2, [x5, 1338]
	mul	w2, w2, w0
	ldr	x0, [x25, 8]
	lsl	w2, w2, 2
	bl	ftl_memcpy
	ldr	x5, [x29, 144]
	ldrb	w1, [x5, 1321]
	ldrh	w0, [x5, 1338]
	mul	w0, w0, w1
	ldrb	w1, [x5, 1946]
	lsl	w2, w0, 2
	cmp	w1, w0, lsr 6
	bge	.L3767
	ldrh	w1, [x28, 462]
	sub	w2, w1, w2
.L3767:
	ldr	x5, [x25, 8]
	ldr	x1, [x28, 288]
	add	x0, x5, w0, sxtw 2
	bl	ftl_memcpy
	add	x5, x22, :lo12:.LANCHOR3
	ldr	x0, [x25, 24]
	mov	w1, 0
	str	x5, [x29, 104]
	ldrb	w2, [x5, 1946]
	lsl	w2, w2, 1
	bl	ftl_memset
	ldr	x0, [x25, 24]
	mov	w1, 15555
	ldr	x5, [x29, 104]
	movk	w1, 0xf55f, lsl 16
	str	w1, [x0]
	ldrb	w0, [x5, 1321]
	ldrh	w1, [x5, 1338]
	ldr	x2, [x25, 24]
	str	x2, [x29, 144]
	mul	w1, w1, w0
	ldr	x0, [x25, 8]
	lsl	w1, w1, 2
	bl	js_hash
	ldr	x2, [x29, 144]
	add	x1, x21, :lo12:.LANCHOR0
	str	w0, [x2, 4]
	ldr	x1, [x1, 1128]
	ldr	x0, [x25, 24]
	ldr	w1, [x1, 132]
.L3867:
	str	w1, [x0, 8]
	b	.L3766
.L3762:
	ldr	x0, [x29, 168]
	lsl	x0, x0, 2
	str	x0, [x29, 144]
	ldr	x0, [x28, 288]
	ldr	x1, [x29, 144]
	ldr	w0, [x0, x1]
	mov	w1, 1
	str	w0, [x25, 40]
	mov	x0, x25
	bl	sblk_read_page
	ldr	w0, [x25, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	bne	.L3769
	add	x0, x21, :lo12:.LANCHOR0
	add	x2, x22, :lo12:.LANCHOR3
	ldrb	w1, [x0, 1205]
	mov	w0, 24
	ldrh	w5, [x2, 1304]
	sub	w0, w0, w1
	ldrb	w2, [x2, 1306]
	sub	w1, w0, w5
	mov	w0, 1
	lsl	w0, w0, w1
	ldr	w1, [x25, 40]
	sub	w0, w0, #1
	lsr	w1, w1, w5
	and	w0, w0, w1
	mov	x1, 0
	udiv	w0, w0, w2
	bl	ftl_sblk_dump
	ldr	w0, [x25, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	bne	.L3769
	ldr	x0, [x25, 24]
	mov	w1, -1
	str	w1, [x0, 4]
	ldr	w0, [x25, 52]
	cmp	w0, 512
	ccmp	w0, w1, 4, ne
	bne	.L3769
	ldr	x0, [x29, 112]
	mov	w2, 1223
	add	x1, x0, 1024
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3769:
	ldr	x1, [x25, 24]
	add	x0, x21, :lo12:.LANCHOR0
	ldr	w0, [x0, 3364]
	ldr	w2, [x1, 4]
	cmp	w2, w0
	bcc	.L3770
	mov	w0, -1
	str	w0, [x1, 4]
.L3770:
	ldr	x0, [x25, 24]
	ldr	x2, [x29, 144]
	ldr	w1, [x0, 4]
	ldr	x0, [x28, 280]
	str	w1, [x0, x2]
	ldr	w1, [x25, 40]
	ldr	x0, [x25, 24]
	b	.L3867
.L3772:
	udiv	w0, w27, w0
	ldrb	w7, [x7, 1213]
	ldrh	w8, [x5, 1410]
	cbz	w7, .L3775
	ldr	x4, [x29, 184]
	add	w7, w0, w19
	add	w0, w0, w0, lsl 1
	sub	w0, w27, w0
	add	x7, x4, w7, sxtw 1
	ldrh	w5, [x7, 16]
	madd	w5, w5, w8, w26
	add	w0, w5, w0, uxth
.L3871:
	str	w0, [x6, 40]
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	add	x5, x21, :lo12:.LANCHOR0
	add	x5, x5, 1304
	add	x1, x5, x1, lsl 6
	ldr	x5, [x0, 296]
	mov	w0, 3
	udiv	w0, w27, w0
	ldrh	w6, [x1, 48]
	ldr	w1, [x1, 40]
	add	w0, w0, w0, lsl 1
	sub	w0, w27, w0
	and	w0, w0, 65535
	add	w0, w0, 1
	orr	w0, w1, w0, lsl 24
	str	w0, [x5, x6, lsl 2]
.L3797:
	add	x1, x22, :lo12:.LANCHOR3
	ldrb	w0, [x1, 1950]
	cbz	w0, .L3779
	adrp	x0, .LANCHOR2
	add	x0, x0, :lo12:.LANCHOR2
	add	x0, x0, 2136
	ldrh	w0, [x0, w26, sxtw 1]
	cmp	w0, w26
	bcs	.L3779
	tbz	x27, 0, .L3779
	ldr	x0, [x1, 1328]
	mov	w5, -1
	ldr	x4, [x29, 168]
	strb	w5, [x0, x4]
	ldr	x0, [x3, x2, lsl 3]
	ldrh	w2, [x29, 152]
	strh	w2, [x0, 48]
	ldrb	w2, [x0, 1]
	ldr	x0, [x1, 1328]
	ldr	x1, [x29, 120]
	strb	w2, [x0, x1]
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	mov	w1, -1
	ldr	x0, [x0, 288]
	str	w1, [x0, x4, lsl 2]
.L3779:
	ldr	w0, [x29, 160]
	add	w0, w0, 1
	str	w0, [x29, 160]
	b	.L3756
.L3775:
	ldr	x4, [x29, 184]
	add	w0, w0, w19
	add	x0, x4, w0, sxtw 1
	ldrh	w0, [x0, 16]
	madd	w0, w0, w8, w26
	b	.L3871
.L3771:
	cmp	w0, 2
	bne	.L3778
	ldrb	w0, [x5, 1322]
	ldrh	w7, [x5, 1410]
	cbnz	w0, .L3777
	ldr	w0, [x29, 164]
	add	w5, w19, w0
	ldr	x0, [x29, 184]
	add	x5, x0, w5, sxtw 1
	ldrh	w0, [x5, 16]
	madd	w0, w0, w7, w26
.L3868:
	orr	w0, w0, 33554432
	str	w0, [x6, 40]
	b	.L3778
.L3777:
	ldr	x0, [x29, 184]
	add	w5, w19, w27, lsr 1
	add	x5, x0, w5, sxtw 1
	ldrh	w0, [x5, 16]
	and	w5, w27, 1
	madd	w0, w0, w7, w26
	add	w0, w0, w5
	b	.L3868
.L3784:
	ldr	x3, [x0, w1, sxtw 3]
	add	w1, w1, 1
	ldr	x5, [x0, w1, sxtw 3]
	and	w1, w1, 65535
	ldrb	w5, [x5, 1]
	strb	w5, [x3]
	b	.L3783
.L3782:
	ldrb	w2, [x1, 1336]
	ldr	x1, [x29, 192]
	cbz	w2, .L3786
.L3789:
	strb	wzr, [x1, 60]
	b	.L3788
.L3786:
	ldr	w2, [x29, 180]
	cmp	w2, 1
	bne	.L3787
	mov	w2, 9
.L3869:
	strb	w2, [x1, 60]
.L3788:
	mov	w2, w23
	add	x1, x0, 24
	bl	sblk_xlc_prog_pages
.L3785:
	add	x0, x22, :lo12:.LANCHOR3
	ldrb	w1, [x0, 1336]
	cbz	w1, .L3794
	ldr	w0, [x29, 128]
	add	w23, w23, w0
	and	w23, w23, 65535
.L3795:
	add	x21, x21, :lo12:.LANCHOR0
	add	x22, x22, :lo12:.LANCHOR3
	ldr	x1, [x21, 3384]
	ldr	w0, [x1, 52]
	add	w0, w0, w23
	str	w0, [x1, 52]
	ldr	x1, [x29, 184]
	ldrh	w0, [x21, 5522]
	add	w23, w23, w0
	ldrh	w0, [x22, 1338]
	and	w23, w23, 65535
	strh	w23, [x21, 5522]
	ldrb	w1, [x1, 9]
	mul	w0, w0, w1
	cmp	w23, w0
	blt	.L3796
	ldr	x0, [x21, 1128]
	strh	wzr, [x0, 86]
.L3796:
	bl	gc_write_completed
	b	.L3733
.L3787:
	ldr	w2, [x29, 180]
	cmp	w2, 2
	bne	.L3789
	mov	w2, 13
	b	.L3869
.L3781:
	ldrb	w2, [x1, 1322]
	cbz	w2, .L3807
	ldrb	w1, [x1, 1323]
	cbnz	w1, .L3791
.L3790:
	ldr	w2, [x29, 176]
	sub	w2, w2, #1
.L3792:
	cmp	w1, w2
	bge	.L3870
	ldr	x3, [x0, w1, sxtw 3]
	add	w1, w1, 1
	ldr	x5, [x0, w1, sxtw 3]
	and	w1, w1, 65535
	ldrb	w5, [x5, 1]
	strb	w5, [x3]
	b	.L3792
.L3807:
	mov	w1, 0
	b	.L3790
.L3791:
	mov	w1, w23
	bl	sblk_3d_mlc_prog_pages
	b	.L3785
.L3794:
	ldrb	w1, [x0, 1322]
	cbnz	w1, .L3808
	add	x1, x21, :lo12:.LANCHOR0
	ldrb	w1, [x1, 1212]
	cbz	w1, .L3795
	ldrb	w0, [x0, 1950]
	ldrh	w1, [x29, 176]
	cbz	w0, .L3809
	adrp	x0, .LANCHOR2
	add	x0, x0, :lo12:.LANCHOR2
	add	x0, x0, 2136
	ldrh	w0, [x0, w26, sxtw 1]
	cmp	w0, w26
	csel	w23, w23, w1, cc
	b	.L3795
.L3808:
	ldr	w23, [x29, 156]
	b	.L3795
.L3809:
	mov	w23, w1
	b	.L3795
	.size	gc_do_copy_back, .-gc_do_copy_back
	.align	2
	.global	zftl_do_gc
	.type	zftl_do_gc, %function
zftl_do_gc:
	sub	sp, sp, #128
	stp	x29, x30, [sp, 16]
	add	x29, sp, 16
	stp	x19, x20, [sp, 32]
	adrp	x19, .LANCHOR0
	stp	x27, x28, [sp, 96]
	mov	w27, w0
	add	x0, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 48]
	stp	x23, x24, [sp, 64]
	cmp	w27, 1
	stp	x25, x26, [sp, 80]
	adrp	x20, .LANCHOR5
	ldrh	w24, [x0, 3372]
	ldrh	w22, [x0, 3368]
	ldrh	w23, [x0, 3370]
	add	w22, w24, w22
	ldr	x25, [x0, 1128]
	and	w22, w22, 65535
	beq	.L3873
.L3885:
	add	x0, x20, :lo12:.LANCHOR5
	ldrb	w1, [x0, 264]
	cmp	w1, 6
	bhi	.L4000
	adrp	x0, .L3876
	add	x0, x0, :lo12:.L3876
	ldrh	w0, [x0,w1,uxtw #1]
	adr	x1, .Lrtx3876
	add	x0, x1, w0, sxth #2
	br	x0
.Lrtx3876:
	.section	.rodata
	.align	0
	.align	2
.L3876:
	.2byte	(.L3875 - .Lrtx3876) / 4
	.2byte	(.L3877 - .Lrtx3876) / 4
	.2byte	(.L3878 - .Lrtx3876) / 4
	.2byte	(.L3879 - .Lrtx3876) / 4
	.2byte	(.L3880 - .Lrtx3876) / 4
	.2byte	(.L3881 - .Lrtx3876) / 4
	.2byte	(.L3882 - .Lrtx3876) / 4
	.text
.L3881:
	add	x21, x19, :lo12:.LANCHOR0
	mov	w23, 0
	add	x21, x21, 3416
.L3883:
	bl	gc_check_data_one_wl
	cbz	w0, .L3996
	add	x19, x19, :lo12:.LANCHOR0
	add	x20, x20, :lo12:.LANCHOR5
	ldr	x0, [x19, 1128]
	strh	wzr, [x19, 3472]
	ldrh	w0, [x0, 80]
	bl	ftl_free_sblk
	ldr	x1, [x19, 1128]
	mov	w0, -1
	ldr	x2, [x19, 3384]
	strh	w0, [x1, 80]
	strh	w0, [x2, 126]
	strh	w0, [x1, 130]
	ldr	x0, [x19, 3424]
	bl	zbuf_free
	strb	wzr, [x20, 264]
	str	xzr, [x19, 3424]
	b	.L4090
.L3873:
	add	x0, x20, :lo12:.LANCHOR5
	ldr	w21, [x0, 468]
	cbnz	w21, .L3884
	ldr	w0, [x0, 472]
	cbz	w0, .L3885
.L3884:
	adrp	x0, .LANCHOR3+1380
	ldrh	w0, [x0, #:lo12:.LANCHOR3+1380]
	cmp	w22, w0, lsr 2
	bls	.L3885
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w0, [x0, 3392]
	cmp	w0, w22
	bcs	.L3885
	add	w21, w21, 20
	bl	timer_get_time
	cmp	w21, w0
	bcs	.L3886
	add	x0, x20, :lo12:.LANCHOR5
	str	wzr, [x0, 468]
.L3886:
	add	x26, x20, :lo12:.LANCHOR5
	ldr	w21, [x26, 472]
	bl	timer_get_time
	add	w21, w21, 20
	cmp	w21, w0
	bcs	.L3887
	str	wzr, [x26, 472]
.L3887:
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x0, [x0, 1128]
	ldrh	w0, [x0, 124]
	cbnz	w0, .L3885
.L4000:
	mov	w23, 16
	b	.L3872
.L3875:
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w2, [x25, 80]
	add	w24, w24, w23
	and	w24, w24, 65535
	ldrh	w1, [x0, 3376]
	ldrh	w26, [x0, 3374]
	add	w26, w26, w1
	mov	w1, 65535
	and	w26, w26, 65535
	cmp	w2, w1
	beq	.L3888
	cbnz	w27, .L3889
	ldrh	w0, [x0, 3392]
	cmp	w22, w0, lsl 1
	bge	.L4000
.L3889:
	adrp	x21, .LANCHOR3
	add	x5, x21, :lo12:.LANCHOR3
	add	x0, x5, 1368
	ldrh	w1, [x5, 1378]
	add	w1, w1, 1
	and	w1, w1, 65535
	strh	w1, [x5, 1378]
	bl	_list_get_gc_head_node
	and	w2, w0, 65535
	mov	w1, 65535
	cmp	w2, w1
	beq	.L3891
	add	x3, x20, :lo12:.LANCHOR5
	ubfiz	x2, x2, 1, 16
	ldr	w1, [x3, 268]
	add	w1, w1, 1
	str	w1, [x3, 268]
	add	x3, x19, :lo12:.LANCHOR0
	ldr	x4, [x3, 1120]
	ldrh	w2, [x4, x2]
	ldrh	w4, [x5, 1376]
	cmp	w4, w2
	bcs	.L3892
	ldrh	w4, [x3, 1096]
	cmp	w1, w4, lsr 4
	bls	.L3891
	ldrh	w1, [x3, 3406]
	cmp	w1, w2
	bls	.L3891
.L3892:
	add	x1, x21, :lo12:.LANCHOR3
	ldrb	w2, [x1, 1337]
	mov	w1, 0
	bl	gc_add_sblk
	cbz	w0, .L3893
	add	x20, x20, :lo12:.LANCHOR5
	mov	w0, 1
	str	wzr, [x20, 268]
	strb	w0, [x20, 264]
	b	.L4000
.L3891:
	add	x0, x21, :lo12:.LANCHOR3
	strh	wzr, [x0, 1378]
.L3893:
	cmp	w24, 15
	bls	.L4002
	add	x1, x19, :lo12:.LANCHOR0
	add	x0, x21, :lo12:.LANCHOR3
	ldrh	w1, [x1, 3378]
	ldrh	w0, [x0, 1382]
	cmp	w1, w0
	bhi	.L4002
	cmp	w26, 0
	cset	w23, eq
	add	w23, w23, 1
.L3894:
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L3895
	add	x19, x19, :lo12:.LANCHOR0
	mov	w4, w24
	mov	w3, w22
	mov	w1, 2807
	ldr	x0, [x19, 1128]
	ldrh	w7, [x0, 122]
	ldrh	w6, [x0, 120]
	ldrh	w5, [x0, 124]
	add	x0, x21, :lo12:.LANCHOR3
	ldrb	w2, [x0, 1337]
	ldrh	w0, [x25, 80]
	str	w0, [sp]
	adrp	x0, .LC299
	add	x0, x0, :lo12:.LC299
	bl	printk
.L3895:
	add	x21, x21, :lo12:.LANCHOR3
	mov	w2, 1
	mov	w1, w23
	ldrb	w0, [x21, 1337]
	bl	gc_search_src_blk
	cmp	w0, 0
	ble	.L3896
.L3897:
	add	x20, x20, :lo12:.LANCHOR5
	mov	w0, 1
.L4092:
	strb	w0, [x20, 264]
	b	.L4000
.L4002:
	mov	w23, 2
	b	.L3894
.L3896:
	ldrb	w0, [x21, 1337]
	mov	w2, 1
	mov	w1, 3
	bl	gc_search_src_blk
	cmp	w0, 0
	bgt	.L3897
	b	.L4000
.L3888:
	cmp	w27, 1
	bne	.L3898
	ldr	x1, [x0, 3384]
	ldrh	w1, [x1, 150]
	cbz	w1, .L3899
	ldrh	w0, [x0, 3372]
	cmp	w0, 8
	bls	.L3899
	bl	gc_ink_check_sblk
.L3899:
	bl	gc_scan_static_data
	adrp	x21, .LANCHOR3
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x0, [x0, 1128]
	ldrh	w0, [x0, 122]
	cbz	w0, .L3900
.L3901:
	add	x21, x21, :lo12:.LANCHOR3
	mov	w0, 1
	add	x20, x20, :lo12:.LANCHOR5
	strb	w0, [x21, 1337]
	b	.L4092
.L3900:
	bl	gc_static_wearleveling
	mov	w23, w0
	cbnz	w0, .L3901
	bl	gc_block_vpn_scan
	cbz	w24, .L3902
	cmp	w22, w26
	bcs	.L3903
	add	x0, x21, :lo12:.LANCHOR3
	ldrh	w0, [x0, 1380]
	cmp	w0, w22
	bhi	.L3904
.L3903:
	add	x1, x21, :lo12:.LANCHOR3
	add	w0, w22, w26
	ldrh	w2, [x1, 1380]
	cmp	w0, w2
	blt	.L3904
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w2, [x0, 3378]
	ldrh	w0, [x1, 1382]
	cmp	w2, w0
	bcc	.L3902
.L3904:
	add	x5, x21, :lo12:.LANCHOR3
	mov	w0, 1
	strb	w0, [x5, 1337]
	mov	w0, 16
	bl	zftl_get_gc_node.part.10
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L3905
	add	x2, x19, :lo12:.LANCHOR0
	ubfiz	x1, x1, 1, 16
	ldr	x3, [x2, 1120]
	add	x2, x20, :lo12:.LANCHOR5
	ldrh	w3, [x3, x1]
	ldrh	w1, [x2, 272]
	cmp	w3, w1
	bcs	.L3905
	cmp	w22, 2
	bls	.L3905
	str	wzr, [x2, 268]
	mov	w1, 1
	strb	wzr, [x5, 1337]
	mov	w2, 0
	bl	gc_add_sblk
	cbnz	w0, .L3897
.L3905:
	add	x5, x21, :lo12:.LANCHOR3
	mov	w1, 0
	add	x0, x5, 1360
	bl	_list_get_gc_head_node
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L3906
	add	x2, x19, :lo12:.LANCHOR0
	ubfiz	x1, x1, 1, 16
	ldr	x3, [x2, 1120]
	add	x2, x20, :lo12:.LANCHOR5
	ldrh	w3, [x3, x1]
	ldrh	w1, [x2, 272]
	cmp	w3, w1
	bcs	.L3906
	cmp	w22, 2
	bls	.L3906
	str	wzr, [x2, 268]
	mov	w1, 1
	strb	wzr, [x5, 1337]
	mov	w2, 0
	bl	gc_add_sblk
	cbnz	w0, .L3897
.L3906:
	add	x1, x20, :lo12:.LANCHOR5
	add	x2, x21, :lo12:.LANCHOR3
	ldrh	w0, [x1, 272]
	ldrh	w8, [x2, 1376]
	add	w0, w0, 1
	and	w0, w0, 65535
	strh	w0, [x1, 272]
	cmp	w0, w8, lsr 5
	bls	.L3907
	mov	w0, 4
	strh	w0, [x1, 272]
.L3907:
	add	x6, x20, :lo12:.LANCHOR5
	add	x7, x19, :lo12:.LANCHOR0
	add	x5, x21, :lo12:.LANCHOR3
	ldr	w0, [x6, 268]
	ldrh	w1, [x7, 1096]
	add	w0, w0, 1
	strh	wzr, [x5, 1352]
	strh	wzr, [x5, 1354]
	strh	wzr, [x5, 1356]
	cmp	w0, w1, lsr 5
	str	w0, [x6, 268]
	bls	.L3908
	ldrh	w0, [x7, 3378]
	cmp	w0, w24
	bls	.L3908
	mov	w1, 0
	add	x0, x5, 1368
	bl	_list_get_gc_head_node
	and	w0, w0, 65535
	mov	w1, 65535
	cmp	w0, w1
	bne	.L3909
.L4082:
	mov	w23, 16
	b	.L3910
.L3909:
	ldr	x1, [x7, 1120]
	ubfiz	x0, x0, 1, 16
	ldrh	w1, [x1, x0]
	ldrb	w0, [x5, 1321]
	mul	w0, w0, w8
	cmp	w1, w0
	bgt	.L4082
	ldrb	w0, [x5, 1337]
	mov	w2, 4
	mov	w1, 2
	str	wzr, [x6, 268]
.L4081:
	bl	gc_search_src_blk
	and	w0, w0, 65535
	cbz	w0, .L4082
	b	.L3897
.L3908:
	add	x0, x19, :lo12:.LANCHOR0
	add	x3, x21, :lo12:.LANCHOR3
	ldrh	w2, [x0, 3378]
	ldrh	w1, [x3, 1382]
	cmp	w2, w1
	bcc	.L3913
	mov	w2, 1
	mov	w1, 2
	ldrb	w0, [x3, 1337]
	b	.L4081
.L3913:
	ldrh	w1, [x0, 3374]
	cbnz	w1, .L3914
	ldrh	w1, [x0, 3376]
	cmp	w1, 8
	bls	.L3915
.L3914:
	add	x21, x21, :lo12:.LANCHOR3
	mov	w2, 4
	mov	w1, 1
	ldrb	w0, [x21, 1337]
	b	.L4081
.L3915:
	ldrh	w0, [x0, 5526]
	cbnz	w0, .L4082
.L3910:
	add	x0, x19, :lo12:.LANCHOR0
	adrp	x21, .LANCHOR3
	ldr	w1, [x0, 3396]
	cbz	w1, .L3916
	str	wzr, [x0, 3396]
	cmp	w24, 0
	ccmp	w22, 15, 2, ne
	add	x0, x21, :lo12:.LANCHOR3
	bls	.L3917
	strb	wzr, [x0, 1337]
.L3918:
	add	x5, x21, :lo12:.LANCHOR3
	mov	w1, 0
	add	x0, x5, 1368
	bl	_list_get_gc_head_node
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L3919
	add	x2, x19, :lo12:.LANCHOR0
	ubfiz	x1, x1, 1, 16
	ldr	x3, [x2, 1120]
	ldrh	w1, [x3, x1]
	cmp	w1, 8
	bhi	.L3919
	mov	w1, 1
	str	w1, [x2, 3396]
	ldrb	w2, [x5, 1337]
	mov	w1, 0
	bl	gc_add_sblk
	cbnz	w0, .L3897
.L3919:
	add	x5, x21, :lo12:.LANCHOR3
	mov	w1, 0
	add	x0, x5, 1360
	bl	_list_get_gc_head_node
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L3920
	add	x2, x19, :lo12:.LANCHOR0
	ubfiz	x1, x1, 1, 16
	ldr	x3, [x2, 1120]
	ldrh	w1, [x3, x1]
	cmp	w1, 4
	bhi	.L3920
	mov	w1, 1
	str	w1, [x2, 3396]
	ldrb	w2, [x5, 1337]
	mov	w1, 0
	bl	gc_add_sblk
	cbnz	w0, .L3897
.L3920:
	mov	w0, 0
	bl	zftl_get_gc_node.part.10
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L3916
	add	x2, x19, :lo12:.LANCHOR0
	ubfiz	x1, x1, 1, 16
	ldr	x3, [x2, 1120]
	ldrh	w1, [x3, x1]
	cmp	w1, 4
	bhi	.L3916
	mov	w1, 1
	str	w1, [x2, 3396]
	add	x2, x21, :lo12:.LANCHOR3
	ldrb	w2, [x2, 1337]
	bl	gc_add_sblk
	cbnz	w0, .L3897
.L3916:
	add	x28, x19, :lo12:.LANCHOR0
	add	x25, x21, :lo12:.LANCHOR3
	mov	w1, 1
	ldr	x0, [x28, 1128]
	strb	w1, [x25, 1337]
	ldrh	w0, [x0, 124]
	cbz	w0, .L3921
	add	x20, x20, :lo12:.LANCHOR5
	strb	wzr, [x25, 1337]
	strb	w1, [x20, 264]
.L3872:
	mov	w0, w23
	ldp	x19, x20, [sp, 32]
	ldp	x21, x22, [sp, 48]
	ldp	x23, x24, [sp, 64]
	ldp	x25, x26, [sp, 80]
	ldp	x27, x28, [sp, 96]
	ldp	x29, x30, [sp, 16]
	add	sp, sp, 128
	ret
.L3902:
	add	x21, x21, :lo12:.LANCHOR3
	add	x0, x20, :lo12:.LANCHOR5
	ldrh	w2, [x21, 1376]
	ldrh	w1, [x0, 272]
	cmp	w1, w2, lsr 5
	bcc	.L4082
	mov	w1, 4
	strh	w1, [x0, 272]
	b	.L4082
.L3898:
	ldrh	w1, [x0, 3392]
	cmp	w1, w22
	bcs	.L4082
	ldr	x0, [x0, 1128]
	ldrh	w0, [x0, 124]
	cbz	w0, .L4000
	b	.L4082
.L3917:
	mov	w1, 1
	strb	w1, [x0, 1337]
	b	.L3918
.L3921:
	ldrh	w0, [x28, 3392]
	cmp	w22, w0
	bcs	.L3922
	cbz	w24, .L3923
	cmp	w24, 16
	bls	.L3924
	ldrh	w2, [x28, 3378]
	ldrh	w0, [x25, 1382]
	cmp	w2, w0
	bhi	.L3924
	mov	w2, 4
	mov	w0, w1
	bl	gc_search_src_blk
	tst	w0, 65535
	bne	.L3925
.L4089:
	mov	w2, 4
	mov	w1, 3
	ldrb	w0, [x25, 1337]
	b	.L4084
.L3925:
	mov	w1, 0
	add	x0, x25, 1368
	bl	_list_get_gc_head_node
	and	w2, w0, 65535
	mov	w1, 65535
	cmp	w2, w1
	beq	.L3928
	add	x3, x20, :lo12:.LANCHOR5
	ubfiz	x2, x2, 1, 16
	ldr	w1, [x3, 268]
	add	w1, w1, 1
	str	w1, [x3, 268]
	ldr	x3, [x28, 1120]
	ldrh	w2, [x3, x2]
	ldrh	w3, [x25, 1376]
	cmp	w3, w2
	bcs	.L3929
	ldrh	w3, [x28, 1096]
	cmp	w1, w3, lsr 4
	bls	.L3928
	ldrh	w1, [x28, 3406]
	cmp	w1, w2
	bls	.L3928
.L3929:
	add	x21, x21, :lo12:.LANCHOR3
	add	x19, x19, :lo12:.LANCHOR0
	mov	w1, 0
	ldrb	w2, [x21, 1337]
	bl	gc_add_sblk
	mov	w0, 1
	str	w0, [x19, 3396]
	add	x0, x20, :lo12:.LANCHOR5
	str	wzr, [x0, 268]
.L3928:
	add	x20, x20, :lo12:.LANCHOR5
	mov	w0, 1
	strb	w0, [x20, 264]
	b	.L3872
.L3924:
	mov	w2, 1
	mov	w1, 2
	mov	w0, w2
	bl	gc_search_src_blk
	tst	w0, 65535
	bne	.L3928
	add	x21, x21, :lo12:.LANCHOR3
	mov	w2, 4
	mov	w1, 3
	ldrb	w0, [x21, 1337]
.L4084:
	bl	gc_search_src_blk
	and	w0, w0, 65535
.L3926:
	cbnz	w0, .L3928
	b	.L3872
.L3923:
	strb	wzr, [x25, 1337]
	cmp	w22, 16
	bls	.L3931
	mov	w2, 4
	mov	w1, 3
	mov	w0, 0
	b	.L4084
.L3931:
	mov	w2, w1
	mov	w0, 0
	bl	gc_search_src_blk
	tst	w0, 65535
	bne	.L3928
	b	.L4089
.L3922:
	cmp	w27, 1
	bne	.L3872
	cmp	w22, w0, lsl 1
	bge	.L3932
	cmp	w26, w24, lsr 1
	bcs	.L3933
	ldrh	w1, [x28, 3378]
	ldrh	w0, [x25, 1382]
	cmp	w1, w0
	bcs	.L3933
	ldrh	w0, [x25, 1380]
	lsr	w0, w0, 2
	strh	w0, [x28, 3392]
	b	.L3872
.L3933:
	mov	w0, 8
	bl	zftl_get_gc_node.part.10
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L3934
	add	x2, x19, :lo12:.LANCHOR0
	ubfiz	x1, x1, 1, 16
	ldr	x2, [x2, 1120]
	ldrh	w1, [x2, x1]
	cmp	w1, 3
	bhi	.L3934
	cbz	w22, .L3934
	add	x1, x21, :lo12:.LANCHOR3
	mov	w2, 0
	strb	wzr, [x1, 1337]
	mov	w1, 1
	bl	gc_add_sblk
	cbnz	w0, .L3928
.L3934:
	add	x5, x21, :lo12:.LANCHOR3
	mov	w1, 0
	add	x0, x5, 1368
	bl	_list_get_gc_head_node
	and	w25, w0, 65535
	mov	w1, 65535
	mov	w28, w25
	cmp	w25, w1
	bne	.L3935
.L3940:
	cmp	w24, 1
	bhi	.L3936
.L3937:
	cmp	w22, w26
	bcs	.L3944
	add	x21, x21, :lo12:.LANCHOR3
	mov	w0, 4
	add	x19, x19, :lo12:.LANCHOR0
	strb	wzr, [x21, 1337]
	bl	zftl_get_gc_node.part.10
	and	w0, w0, 65535
	mov	w1, 65535
	cmp	w0, w1
	beq	.L4088
	ldr	x1, [x19, 1120]
	ubfiz	x0, x0, 1, 16
	ldrb	w2, [x21, 1321]
	ldrh	w1, [x1, x0]
	ldrh	w0, [x21, 1376]
	mul	w0, w0, w2
	cmp	w1, w0, lsr 1
	ble	.L3946
.L4088:
	ldrh	w0, [x21, 1380]
	lsr	w0, w0, 2
	strh	w0, [x19, 3392]
	b	.L3872
.L3935:
	add	x27, x20, :lo12:.LANCHOR5
	add	x2, x19, :lo12:.LANCHOR0
	uxtw	x25, w25
	ldr	w1, [x27, 268]
	ldrh	w3, [x2, 1096]
	add	w1, w1, 1
	str	w1, [x27, 268]
	cmp	w1, w3, lsr 4
	bls	.L3938
	ldr	x1, [x2, 1120]
	str	wzr, [x27, 268]
	ldrh	w3, [x1, x25, lsl 1]
	ldrh	w1, [x2, 3406]
	cmp	w3, w1
	bcs	.L3938
	mov	w3, 1
	mov	w2, 1
	strb	w3, [x5, 1337]
	mov	w1, 0
	str	w3, [x29, 108]
	bl	gc_add_sblk
	ldr	w3, [x29, 108]
	cbz	w0, .L3938
	strb	w3, [x27, 264]
	b	.L3872
.L3938:
	add	x0, x19, :lo12:.LANCHOR0
	add	x3, x21, :lo12:.LANCHOR3
	ldr	x1, [x0, 1120]
	ldrh	w2, [x1, x25, lsl 1]
	ldrh	w1, [x3, 1376]
	cmp	w2, w1, lsr 1
	bhi	.L3939
	mov	w2, 0
	mov	w1, 1
	mov	w0, w28
	bl	gc_add_sblk
	b	.L3928
.L3939:
	ldrh	w1, [x0, 3374]
	ldrh	w4, [x0, 3376]
	ldrh	w3, [x3, 1380]
	add	w1, w1, w4
	cmp	w1, w3, lsl 1
	ble	.L3940
	ldrh	w0, [x0, 3406]
	cmp	w0, w2
	bcc	.L3937
	b	.L3940
.L3936:
	add	x25, x21, :lo12:.LANCHOR3
	mov	w1, 1
	cmp	w24, 16
	strb	w1, [x25, 1337]
	bls	.L3941
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w2, [x0, 3378]
	ldrh	w0, [x25, 1382]
	cmp	w2, w0
	bhi	.L3941
	mov	w2, 4
	mov	w0, w1
	bl	gc_search_src_blk
	ands	w0, w0, 65535
	bne	.L3942
	ldrb	w0, [x25, 1337]
	mov	w2, 4
	mov	w1, 3
.L4083:
	bl	gc_search_src_blk
	and	w0, w0, 65535
.L3942:
	add	x21, x21, :lo12:.LANCHOR3
	add	x19, x19, :lo12:.LANCHOR0
	cmp	w22, w26, lsr 1
	ldrh	w1, [x21, 1380]
	bls	.L4085
	lsr	w1, w1, 2
.L4086:
	strh	w1, [x19, 3392]
	b	.L3926
.L3941:
	mov	w2, 1
	mov	w1, 2
	mov	w0, w2
	bl	gc_search_src_blk
	ands	w0, w0, 65535
	bne	.L3942
	add	x0, x21, :lo12:.LANCHOR3
	mov	w2, 4
	mov	w1, 3
	ldrb	w0, [x0, 1337]
	b	.L4083
.L3946:
	mov	w1, 3
	mov	w2, 4
	mov	w0, 0
	bl	gc_search_src_blk
	ldrh	w1, [x21, 1380]
	and	w0, w0, 65535
.L4085:
	lsr	w1, w1, 1
	b	.L4086
.L3944:
	add	x19, x19, :lo12:.LANCHOR0
	add	x21, x21, :lo12:.LANCHOR3
	b	.L4088
.L3932:
	ldrh	w0, [x25, 1380]
	lsr	w0, w0, 2
	strh	w0, [x28, 3392]
	ldrh	w0, [x28, 5526]
	cmp	w0, 0
	csel	w23, w23, wzr, ne
	b	.L3872
.L3877:
	add	x6, x19, :lo12:.LANCHOR0
	mov	w0, 65535
	ldrh	w1, [x6, 3416]
	cmp	w1, w0
	bne	.L3947
	bl	gc_get_src_blk
	strh	w0, [x6, 3416]
.L3947:
	add	x0, x19, :lo12:.LANCHOR0
	mov	w2, 65535
	ldrh	w1, [x0, 3416]
	cmp	w1, w2
	beq	.L3948
	ldrh	w2, [x0, 1096]
	cmp	w2, w1
	bhi	.L3948
	mov	w1, -1
	strh	w1, [x0, 3416]
.L3948:
	add	x0, x19, :lo12:.LANCHOR0
	mov	w2, 65535
	ldrh	w3, [x0, 3416]
	cmp	w3, w2
	beq	.L4091
	ldrh	w5, [x0, 3472]
	uxtw	x4, w3
	ldr	x2, [x0, 1104]
	add	x2, x2, x4, lsl 2
	cbz	w5, .L3950
	add	x0, x0, 3474
	mov	w1, 0
.L3952:
	ldrh	w6, [x0], 2
	cmp	w6, w3
	bne	.L3951
.L3956:
	add	x19, x19, :lo12:.LANCHOR0
	mov	w0, -1
	strh	w0, [x19, 3416]
	b	.L4000
.L3951:
	add	w1, w1, 1
	and	w1, w1, 65535
	cmp	w5, w1
	bne	.L3952
.L3950:
	ldrb	w0, [x2, 2]
	and	w1, w0, 224
	cmp	w1, 224
	beq	.L3953
	tst	w0, 192
	bne	.L3954
.L3953:
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x0, [x0, 1120]
	ldrh	w0, [x0, x4, lsl 1]
	cbz	w0, .L3956
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1040
	mov	w2, 3306
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	b	.L3956
.L3954:
	add	x20, x20, :lo12:.LANCHOR5
	mov	w0, 2
	b	.L4092
.L3878:
	bl	gc_scan_src_blk
	cmn	w0, #1
	bne	.L3957
	add	x20, x20, :lo12:.LANCHOR5
	mov	w0, 3
	b	.L4092
.L3957:
	add	x1, x19, :lo12:.LANCHOR0
	mov	w3, 65535
	ldrh	w0, [x1, 3416]
	cmp	w0, w3
	beq	.L3897
	ldrh	w3, [x1, 3440]
	add	x20, x20, :lo12:.LANCHOR5
	cbz	w3, .L3958
	mov	w0, 4
	strh	wzr, [x1, 3442]
	strb	w0, [x20, 264]
	b	.L4000
.L3958:
	ldr	x1, [x1, 1120]
	ubfiz	x0, x0, 1, 16
	mov	w2, 1
	strb	w2, [x20, 264]
	ldrh	w0, [x1, x0]
	cbz	w0, .L3959
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1040
	mov	w2, 3336
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3959:
	add	x20, x19, :lo12:.LANCHOR0
	add	x21, x20, 3416
	ldrh	w0, [x20, 3416]
	bl	ftl_free_sblk
	ldr	x0, [x20, 1120]
	ldrh	w1, [x20, 3416]
	strh	wzr, [x0, x1, lsl 1]
	ldrh	w0, [x21, 30]
	add	w0, w0, 1
	and	w0, w0, 65535
	cmp	w0, 8
	bhi	.L3960
	strh	w0, [x21, 30]
	b	.L3956
.L3960:
	strh	wzr, [x21, 30]
	bl	ftl_flush
	bl	pm_flush
	bl	ftl_ext_info_flush
	mov	w0, 0
	bl	ftl_info_flush
	b	.L3956
.L3879:
	add	x23, x19, :lo12:.LANCHOR0
	adrp	x24, .LANCHOR3
	add	x21, x23, 3416
	add	x24, x24, :lo12:.LANCHOR3
.L4053:
	bl	gc_scan_src_blk_one_page
	ldrh	w1, [x21, 2]
	ldrh	w0, [x24, 1376]
	cmp	w1, w0
	bcs	.L3962
	cmp	w22, 7
	bls	.L4053
	b	.L4000
.L3962:
	ldrh	w3, [x21, 24]
	ldrh	w1, [x21]
	cbz	w3, .L3963
	add	x20, x20, :lo12:.LANCHOR5
	mov	w0, 4
	ldr	x2, [x23, 1120]
	strh	wzr, [x21, 26]
	strb	w0, [x20, 264]
	ubfiz	x0, x1, 1, 16
	ldrh	w2, [x2, x0]
	cmp	w3, w2
	beq	.L3964
	adrp	x0, .LANCHOR2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 10, .L3964
	adrp	x0, .LC300
	add	x0, x0, :lo12:.LC300
	bl	printk
.L3964:
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w2, [x0, 3416]
	ldr	x1, [x0, 1120]
	ldrh	w0, [x0, 3440]
	ldrh	w1, [x1, x2, lsl 1]
	cmp	w1, w0
	beq	.L3965
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1040
	mov	w2, 3379
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3965:
	add	x19, x19, :lo12:.LANCHOR0
	ldrh	w1, [x19, 3416]
	ldr	x0, [x19, 1120]
	ldrh	w2, [x19, 3440]
	strh	w2, [x0, x1, lsl 1]
	b	.L4000
.L3963:
	add	x20, x20, :lo12:.LANCHOR5
	mov	w0, 1
	ldr	x21, [x23, 1104]
	strb	w0, [x20, 264]
	adrp	x0, .LANCHOR2
	add	x21, x21, w1, uxth 2
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 8, .L3966
	ldrb	w2, [x21, 2]
	adrp	x0, .LC301
	add	x0, x0, :lo12:.LC301
	ubfx	x2, x2, 5, 3
	bl	printk
.L3966:
	ldrb	w0, [x21, 2]
	and	w1, w0, 224
	cmp	w1, 224
	beq	.L3967
	tst	w0, 192
	bne	.L3968
.L3967:
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1040
	mov	w2, 3389
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3968:
	add	x19, x19, :lo12:.LANCHOR0
	add	x20, x19, 3416
	ldrh	w0, [x19, 3416]
	bl	ftl_free_sblk
	mov	w0, -1
	strh	w0, [x19, 3416]
	ldrh	w0, [x20, 30]
	add	w0, w0, 1
	and	w0, w0, 65535
	cmp	w0, 8
	bhi	.L3969
	strh	w0, [x20, 30]
	b	.L4000
.L3969:
	strh	wzr, [x20, 30]
.L4090:
	bl	flt_sys_flush
	b	.L4000
.L3880:
	cbnz	w27, .L3970
	add	x0, x19, :lo12:.LANCHOR0
	ldrh	w0, [x0, 3392]
	cmp	w0, w22
	bcc	.L4000
.L3970:
	ldrh	w1, [x25, 80]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L3971
	adrp	x21, .LANCHOR3
	add	x0, x21, :lo12:.LANCHOR3
	ldrb	w23, [x0, 1337]
	cmp	w23, 1
	bne	.L3971
	bl	ftl_flush
	add	x0, x19, :lo12:.LANCHOR0
	mov	w1, 5
	ldrh	w0, [x0, 5608]
	cbz	w0, .L3972
	mov	w0, w23
.L4087:
	bl	zftl_gc_get_free_sblk
	and	w22, w0, 65535
	mov	w0, 65535
	cmp	w22, w0
	beq	.L3974
	add	x0, x19, :lo12:.LANCHOR0
	ldr	x23, [x0, 1104]
	add	x23, x23, w22, uxth 2
	ldrb	w0, [x23, 2]
	tst	w0, 224
	beq	.L3975
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1040
	mov	w2, 3423
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3975:
	ldrb	w0, [x23, 2]
	mov	w1, 5
	bfi	w0, w1, 5, 3
	orr	w0, w0, 16
	strb	w0, [x23, 2]
.L3999:
	mov	w1, 1
	mov	w0, w22
	bl	ftl_erase_sblk
	add	x21, x21, :lo12:.LANCHOR3
	mov	w0, 5
	strb	w0, [x25, 84]
	add	x1, x25, 96
	mov	w0, w22
	bl	ftl_get_blk_list_in_sblk
	and	w0, w0, 255
	ldrh	w1, [x21, 1376]
	add	x20, x20, :lo12:.LANCHOR5
	strb	w0, [x25, 89]
	add	x19, x19, :lo12:.LANCHOR0
	ldrh	w2, [x21, 1338]
	strh	w22, [x25, 80]
	mul	w0, w0, w1
	strh	wzr, [x25, 82]
	strh	w0, [x25, 86]
	mov	w1, 255
	ldrb	w0, [x21, 1321]
	strb	wzr, [x25, 85]
	strh	wzr, [x25, 90]
	mul	w2, w2, w0
	ldr	x0, [x20, 280]
	lsl	w2, w2, 2
	bl	ftl_memset
	ldrb	w0, [x21, 1321]
	mov	w1, 255
	ldrh	w2, [x21, 1338]
	mul	w2, w2, w0
	ldr	x0, [x20, 288]
	lsl	w2, w2, 2
	bl	ftl_memset
	ldrb	w0, [x21, 1321]
	mov	w1, 255
	ldrh	w2, [x21, 1338]
	mul	w2, w2, w0
	ldr	x0, [x21, 1328]
	bl	ftl_memset
	ldr	x0, [x19, 1128]
	mov	w1, -1
	str	w22, [x0, 132]
	strh	w1, [x0, 128]
	strh	w1, [x0, 130]
	bl	pm_flush
	bl	ftl_ext_info_flush
	strh	wzr, [x19, 3472]
	ldr	x0, [x19, 3384]
	strh	w22, [x0, 126]
	mov	w0, -1
	strh	wzr, [x19, 5522]
	str	w0, [x19, 5612]
	mov	w0, 0
	strh	wzr, [x19, 5524]
	strh	wzr, [x19, 5610]
	bl	ftl_info_flush
	b	.L4000
.L3972:
	mov	w0, 0
	b	.L4087
.L3971:
	cmp	w27, 1
	mov	w23, 4
	csinc	w23, w23, wzr, eq
	add	x26, x19, :lo12:.LANCHOR0
	cmp	w22, 15
	mov	w0, w23
	add	w23, w23, 4
	adrp	x22, .LANCHOR3
	csel	w23, w23, w0, ls
	add	x24, x22, :lo12:.LANCHOR3
	add	x21, x26, 3416
.L3978:
	sub	w23, w23, #1
	and	w23, w23, 255
	cmp	w23, 255
	beq	.L4000
	bl	gc_do_copy_back
	ldrb	w0, [x24, 1337]
	cbnz	w0, .L3979
	ldrb	w0, [x26, 3353]
	cmp	w0, 3
	bhi	.L3980
	bl	ftl_write_commit
.L3980:
	ldrh	w1, [x21, 26]
	ldrh	w0, [x21, 24]
	cmp	w1, w0
	bcc	.L3978
	add	x20, x20, :lo12:.LANCHOR5
	mov	w0, 1
	strb	w0, [x20, 264]
	bl	ftl_write_commit
	bl	ftl_flush
	ldrh	w1, [x21]
	ldr	x0, [x26, 1120]
	ldrh	w0, [x0, x1, lsl 1]
	cbz	w0, .L3982
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1040
	mov	w2, 3507
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L3982:
	add	x1, x19, :lo12:.LANCHOR0
	ldrh	w0, [x1, 3416]
	ldr	x1, [x1, 1120]
	ubfiz	x2, x0, 1, 16
	ldrh	w1, [x1, x2]
	cbnz	w1, .L3983
	bl	ftl_free_sblk
	b	.L3956
.L3983:
	mov	w2, 1
	mov	w1, 0
	bl	gc_add_sblk
	b	.L3956
.L3979:
	ldrh	w0, [x21, 2194]
	cbz	w0, .L3984
	strh	wzr, [x21, 2194]
	bl	sblk_wait_write_queue_completed
	bl	gc_write_completed
	ldr	w0, [x21, 2196]
	cmn	w0, #1
	beq	.L3985
	ldrb	w1, [x24, 1950]
	cbnz	w1, .L3986
	ldrb	w1, [x24, 1322]
	cbz	w1, .L3987
.L3986:
	add	x4, x19, :lo12:.LANCHOR0
	ldr	x1, [x4, 3384]
	ldr	w2, [x1, 156]
	mov	w1, 20041
	movk	w1, 0x444b, lsl 16
	cmp	w2, w1
	bne	.L3987
	add	x22, x22, :lo12:.LANCHOR3
	ldrb	w2, [x4, 1205]
	mov	w1, 24
	sub	w1, w1, w2
	ldrh	w3, [x22, 1304]
	sub	w2, w1, w3
	mov	w1, 1
	lsr	w0, w0, w3
	lsl	w1, w1, w2
	sub	w1, w1, #1
	and	w0, w1, w0
	ldrb	w1, [x22, 1306]
	ldr	x2, [x4, 1104]
	udiv	w0, w0, w1
	lsl	x0, x0, 2
	add	x5, x2, x0
	ldrb	w1, [x5, 2]
	tbz	x1, 3, .L3985
	ldrh	w3, [x4, 3368]
	ldrh	w6, [x22, 1380]
	add	w3, w3, 8
	cmp	w3, w6
	bge	.L3985
	and	w1, w1, -25
	strb	w1, [x5, 2]
	ldrh	w1, [x4, 1112]
	ldr	w3, [x2, x0]
	ldrh	w4, [x2, x0]
	ubfx	x3, x3, 11, 8
	and	w5, w4, 2047
	mul	w1, w1, w3
	lsr	w3, w3, 3
	add	w1, w1, w1, lsl 1
	add	w1, w5, w1, lsr 2
	bfi	w4, w1, 0, 11
	strh	w4, [x2, x0]
	ldr	w1, [x2, x0]
	bfi	w1, w3, 11, 8
	str	w1, [x2, x0]
.L3985:
	add	x21, x19, :lo12:.LANCHOR0
	ldr	x0, [x21, 1128]
	str	wzr, [x21, 5612]
	strh	wzr, [x21, 3472]
	ldrh	w0, [x0, 80]
	bl	ftl_free_sblk
	ldr	x1, [x21, 1128]
	mov	w0, -1
	ldr	x2, [x21, 3384]
	strh	w0, [x1, 80]
	strh	w0, [x2, 126]
	strh	w0, [x1, 130]
	ldr	x0, [x21, 3424]
	cbz	x0, .L3988
	bl	zbuf_free
.L3988:
	add	x19, x19, :lo12:.LANCHOR0
	add	x20, x20, :lo12:.LANCHOR5
	str	xzr, [x19, 3424]
	bl	flt_sys_flush
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1040
	mov	w2, 3567
	strb	wzr, [x20, 264]
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	b	.L4000
.L3987:
	bl	ftl_mask_bad_block
	b	.L3985
.L3984:
	ldrh	w0, [x25, 86]
	ldrh	w1, [x21, 26]
	cmp	w0, 1
	ldrh	w0, [x21, 24]
	bls	.L3989
	cmp	w1, w0
	bcc	.L3978
	add	x20, x20, :lo12:.LANCHOR5
	mov	w0, 1
	strb	w0, [x20, 264]
	ldrh	w0, [x21, 56]
	add	w1, w0, 1
	strh	w1, [x21, 56]
	add	x0, x21, w0, sxtw 1
	ldrh	w1, [x21]
	strh	w1, [x0, 58]
	mov	w0, -1
	strh	w0, [x21]
	b	.L4000
.L3989:
	add	x20, x20, :lo12:.LANCHOR5
	mov	w2, 5
	cmp	w1, w0
	strb	w2, [x20, 264]
	bcc	.L3990
	ldrh	w0, [x21, 56]
	add	w1, w0, 1
	strh	w1, [x21, 56]
	add	x0, x21, w0, sxtw 1
	ldrh	w1, [x21]
	strh	w1, [x0, 58]
	mov	w0, -1
	strh	w0, [x21]
.L3990:
	add	x20, x19, :lo12:.LANCHOR0
	bl	ftl_flush
	bl	sblk_wait_write_queue_completed
	bl	gc_write_completed
	ldr	x0, [x20, 1128]
	ldrh	w1, [x25, 80]
	strh	w1, [x0, 128]
	bl	pm_flush
	bl	ftl_ext_info_flush
	strh	wzr, [x20, 3432]
	add	x1, x22, :lo12:.LANCHOR3
	ldrb	w3, [x20, 1212]
	ldrh	w2, [x1, 1376]
	strh	w2, [x20, 3434]
	ldrb	w2, [x1, 1320]
	strh	w2, [x20, 3436]
	cbz	w3, .L3991
	ldrh	w1, [x1, 1338]
	strh	w1, [x20, 3434]
	mov	w1, 1
	strh	w1, [x20, 3436]
.L3991:
	cmp	w2, 2
	bne	.L3993
	add	x0, x19, :lo12:.LANCHOR0
	add	x22, x22, :lo12:.LANCHOR3
	add	x0, x0, 3416
	ldrh	w1, [x0, 18]
	ubfiz	w1, w1, 1, 15
	strh	w1, [x0, 18]
	ldrb	w1, [x22, 1322]
	cbnz	w1, .L3993
	mov	w1, 1
	strh	w1, [x0, 20]
.L3993:
	add	x19, x19, :lo12:.LANCHOR0
	strh	wzr, [x19, 3438]
	b	.L4000
.L3996:
	ldrh	w1, [x21, 16]
	ldrh	w0, [x21, 18]
	cmp	w1, w0
	bcc	.L3997
	add	x20, x20, :lo12:.LANCHOR5
	mov	w0, 6
	strb	w0, [x20, 264]
	ldr	x0, [x21, 8]
	bl	zbuf_free
	str	xzr, [x21, 8]
	b	.L4000
.L3997:
	cmp	w22, 15
	bls	.L3883
	cmp	w27, 1
	bne	.L4000
	add	w23, w23, 1
	and	w23, w23, 255
	cmp	w23, 4
	bls	.L3883
	b	.L4000
.L3882:
	bl	gc_update_l2p_map_new
	mov	w21, -1
	bl	gc_free_src_blk
	add	x19, x19, :lo12:.LANCHOR0
	bl	ftl_flush
	bl	pm_flush
	strh	w21, [x25, 80]
	bl	ftl_ext_info_flush
	ldr	x0, [x19, 3384]
	strh	w21, [x0, 126]
	mov	w0, 0
	bl	ftl_info_flush
.L4091:
	add	x20, x20, :lo12:.LANCHOR5
	strb	wzr, [x20, 264]
	b	.L4000
.L3974:
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1040
	mov	w2, 3430
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
	b	.L3999
	.size	zftl_do_gc, .-zftl_do_gc
	.align	2
	.global	zftl_init
	.type	zftl_init, %function
zftl_init:
	stp	x29, x30, [sp, -80]!
	mov	w0, -1
	adrp	x1, .LC1
	add	x1, x1, :lo12:.LC1
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	stp	x21, x22, [sp, 32]
	adrp	x20, .LANCHOR5
	stp	x23, x24, [sp, 48]
	adrp	x21, .LANCHOR3
	str	x25, [sp, 64]
	add	x23, x21, :lo12:.LANCHOR3
	add	x24, x19, :lo12:.LANCHOR0
	add	x25, x20, :lo12:.LANCHOR5
	adrp	x22, .LANCHOR2
	strb	w0, [x23, 1956]
	strb	w0, [x24, 3408]
	strb	w0, [x25, 360]
	mov	w0, -1
	strb	wzr, [x24, 3381]
	str	w0, [x25, 476]
	adrp	x0, .LC2
	strb	wzr, [x23, 1957]
	add	x0, x0, :lo12:.LC2
	strb	wzr, [x24, 3380]
	bl	printk
	add	x1, x22, :lo12:.LANCHOR2
	ldrb	w2, [x24, 1153]
	strb	w2, [x23, 1412]
	ldrh	w4, [x24, 2]
	ldrb	w9, [x1, 20]
	ldrh	w5, [x1, 18]
	ldrb	w3, [x1, 21]
	ldrb	w0, [x1, 17]
	ldrh	w6, [x1, 22]
	mov	w1, 0
	sdiv	w10, w5, w9
	strb	w3, [x23, 1306]
	mul	w2, w2, w3
	ubfiz	w8, w0, 9, 7
	strb	w9, [x23, 1320]
	mov	w3, 1
	and	w2, w2, 255
	strb	w0, [x23, 1946]
	strh	w5, [x23, 1338]
	strh	w10, [x23, 1376]
	strb	w2, [x23, 1321]
	strh	w6, [x24, 1096]
	strh	w8, [x25, 462]
	strh	w4, [x23, 1410]
.L4094:
	cmp	w4, w3
	bcs	.L4095
	mul	w7, w0, w5
	add	x3, x21, :lo12:.LANCHOR3
	sub	w1, w1, #1
	mov	w4, 0
	strh	w1, [x3, 1304]
	mov	w1, 1
	mul	w3, w6, w7
	lsr	w11, w3, 21
.L4096:
	cmp	w11, w1
	bcs	.L4097
	mov	w1, 57344
	add	x11, x19, :lo12:.LANCHOR0
	movk	w1, 0x1c, lsl 16
	sub	w4, w4, #1
	mul	w3, w3, w2
	lsr	w6, w6, 4
	mul	w1, w2, w1
	str	w3, [x11, 3360]
	mul	w10, w10, w2
	cmp	w6, 79
	mul	w7, w7, w2
	lsl	w1, w1, w4
	add	w3, w1, 24576
	str	w1, [x11, 1032]
	add	x4, x20, :lo12:.LANCHOR5
	sub	w7, w7, #1
	udiv	w0, w3, w0
	str	w3, [x4, 480]
	udiv	w3, w3, w7
	str	w0, [x11, 3364]
	sub	w11, w8, #1
	add	w0, w11, w0, lsl 2
	add	w3, w3, 8
	udiv	w0, w0, w8
	strh	w0, [x4, 484]
	ubfiz	w0, w0, 4, 16
	sdiv	w0, w0, w10
	strh	w0, [x4, 220]
	add	x0, x21, :lo12:.LANCHOR3
	strh	w3, [x0, 1382]
	strh	w6, [x0, 1380]
	bhi	.L4098
	mov	w3, 80
	strh	w3, [x0, 1380]
.L4098:
	add	x0, x21, :lo12:.LANCHOR3
	mov	w3, 2000
	add	x6, x19, :lo12:.LANCHOR0
	mov	w4, 256
	cmp	w9, 2
	strh	w3, [x0, 1954]
	mov	w3, 50
	strh	w3, [x0, 1952]
	add	x3, x20, :lo12:.LANCHOR5
	strh	w4, [x3, 216]
	mov	w4, 48
	strh	w4, [x3, 218]
	mov	w4, 32
	strh	w4, [x6, 1112]
	beq	.L4099
	ldrb	w7, [x0, 1336]
	cbz	w7, .L4100
.L4099:
	add	x3, x21, :lo12:.LANCHOR3
	mov	w0, 150
	mov	w4, 64
	mov	w6, 12
	strh	w0, [x3, 1952]
	add	x0, x20, :lo12:.LANCHOR5
	strh	w4, [x0, 218]
	add	x4, x19, :lo12:.LANCHOR0
	strh	w6, [x4, 1112]
	ldrb	w6, [x19, #:lo12:.LANCHOR0]
	cbnz	w6, .L4101
	mov	w6, 4
	strh	w6, [x4, 1112]
	mov	w4, 600
	strh	w4, [x3, 1954]
	mov	w3, 128
	strh	w3, [x0, 216]
.L4101:
	add	x0, x19, :lo12:.LANCHOR0
	ldrb	w0, [x0, 1213]
	cbz	w0, .L4103
	add	x0, x21, :lo12:.LANCHOR3
	mov	w3, 200
	strh	w3, [x0, 1952]
	mov	w3, 2000
	strh	w3, [x0, 1954]
.L4103:
	add	x0, x19, :lo12:.LANCHOR0
	mul	w2, w5, w2
	mov	w3, 1
	str	wzr, [x0, 3396]
	add	x0, x20, :lo12:.LANCHOR5
	cmp	w8, w2, lsl 2
	strb	w3, [x0, 465]
	bge	.L4105
	mov	w2, 2
	strb	w2, [x0, 465]
.L4105:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L4106
	adrp	x0, .LC302
	add	x0, x0, :lo12:.LC302
	bl	printk
.L4106:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L4107
	add	x0, x19, :lo12:.LANCHOR0
	ldr	w1, [x0, 3360]
	adrp	x0, .LC303
	add	x0, x0, :lo12:.LC303
	bl	printk
.L4107:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L4108
	add	x0, x19, :lo12:.LANCHOR0
	ldr	w1, [x0, 3364]
	adrp	x0, .LC304
	add	x0, x0, :lo12:.LC304
	bl	printk
.L4108:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L4109
	add	x0, x20, :lo12:.LANCHOR5
	ldr	w1, [x0, 480]
	adrp	x0, .LC305
	add	x0, x0, :lo12:.LC305
	bl	printk
.L4109:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L4110
	add	x0, x20, :lo12:.LANCHOR5
	ldrh	w1, [x0, 484]
	adrp	x0, .LC306
	add	x0, x0, :lo12:.LC306
	bl	printk
.L4110:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L4111
	add	x0, x20, :lo12:.LANCHOR5
	ldrh	w1, [x0, 462]
	adrp	x0, .LC307
	add	x0, x0, :lo12:.LC307
	bl	printk
.L4111:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L4112
	add	x0, x20, :lo12:.LANCHOR5
	ldrh	w1, [x0, 220]
	adrp	x0, .LC308
	add	x0, x0, :lo12:.LC308
	bl	printk
.L4112:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L4113
	add	x0, x21, :lo12:.LANCHOR3
	ldrh	w1, [x0, 1380]
	adrp	x0, .LC309
	add	x0, x0, :lo12:.LC309
	bl	printk
.L4113:
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L4114
	add	x0, x21, :lo12:.LANCHOR3
	ldrh	w1, [x0, 1382]
	adrp	x0, .LC310
	add	x0, x0, :lo12:.LC310
	bl	printk
.L4114:
	add	x24, x20, :lo12:.LANCHOR5
	bl	zbuf_init
	mov	w0, 16384
	bl	ftl_malloc
	add	x25, x19, :lo12:.LANCHOR0
	add	x23, x21, :lo12:.LANCHOR3
	str	x0, [x24, 392]
	mov	w0, 16384
	bl	ftl_malloc
	str	x0, [x24, 408]
	mov	w0, 16384
	bl	ftl_malloc
	str	x0, [x24, 488]
	mov	w0, 256
	bl	ftl_dma32_malloc
	str	x0, [x24, 376]
	mov	w0, 256
	bl	ftl_dma32_malloc
	ldrh	w1, [x25, 1096]
	str	x0, [x24, 416]
	mov	w0, 6
	mul	w0, w1, w0
	bl	ftl_dma32_malloc
	str	x0, [x25, 1040]
	ldrb	w1, [x23, 1321]
	ldrh	w0, [x23, 1376]
	mul	w0, w0, w1
	lsl	w0, w0, 2
	bl	ftl_dma32_malloc
	ldrb	w1, [x23, 1321]
	str	x0, [x23, 1936]
	ldrh	w0, [x23, 1376]
	ldr	x2, [x24, 408]
	str	x2, [x23, 1928]
	mul	w0, w0, w1
	ldrh	w1, [x25, 1096]
	add	x3, x2, w0, sxtw 3
	lsl	w0, w0, 1
	add	w1, w0, w1, lsr 1
	ldr	w0, [x22, #:lo12:.LANCHOR2]
	add	x1, x2, w1, sxtw 2
	str	x3, [x25, 1120]
	str	x1, [x25, 1128]
	tbz	x0, 12, .L4115
	adrp	x0, .LC311
	add	x0, x0, :lo12:.LC311
	bl	printk
.L4115:
	add	x0, x19, :lo12:.LANCHOR0
	add	x21, x21, :lo12:.LANCHOR3
	ldrh	w1, [x0, 1096]
	ldrh	w0, [x21, 1376]
	ldrb	w21, [x21, 1321]
	mul	w21, w0, w21
	add	x0, x20, :lo12:.LANCHOR5
	ldrh	w23, [x0, 484]
	add	w21, w1, w21, lsl 2
	lsl	w1, w1, 2
	lsl	w21, w21, 1
	add	w21, w21, 632
	add	w23, w1, w23, lsl 2
	ldr	w1, [x22, #:lo12:.LANCHOR2]
	add	w23, w23, 704
	tbz	x1, 12, .L4116
	ldrh	w3, [x0, 462]
	mov	w2, w23
	adrp	x0, .LC312
	mov	w1, w21
	add	x0, x0, :lo12:.LC312
	bl	printk
.L4116:
	add	x20, x20, :lo12:.LANCHOR5
	ldrh	w0, [x20, 462]
	cmp	w21, w0
	bhi	.L4117
	cmp	w23, w0
	bls	.L4118
.L4117:
.L4171:
	b	.L4171
.L4095:
	add	w1, w1, 1
	lsl	w3, w3, 1
	and	w1, w1, 65535
	b	.L4094
.L4097:
	add	w4, w4, 1
	lsl	w1, w1, 1
	and	w4, w4, 65535
	b	.L4096
.L4100:
	ldrb	w6, [x6, 1212]
	cbz	w6, .L4103
	mov	w6, 1200
	strh	w4, [x0, 1952]
	strh	w6, [x0, 1954]
	strh	w4, [x3, 218]
	b	.L4103
.L4118:
	bl	sblk_init
	bl	gc_init
	bl	ftl_info_blk_init
	cmn	w0, #1
	beq	.L4093
	add	x21, x19, :lo12:.LANCHOR0
	bl	ftl_ext_info_init
	mov	w0, 1
	bl	pm_init
	bl	lpa_rebuild_hash
	ldr	x0, [x21, 1128]
	mov	x1, 0
	add	x0, x0, 16
	bl	ftl_open_sblk_recovery
	ldr	x0, [x21, 1128]
	add	x1, x0, 16
	add	x0, x0, 48
	bl	ftl_open_sblk_recovery
	ldr	x1, [x21, 3384]
	ldr	w0, [x1, 8]
	add	w0, w0, 16
	str	w0, [x1, 8]
	ldr	x0, [x21, 1128]
	add	x0, x0, 16
	bl	ftl_info_data_recovery
	ldr	x0, [x21, 1128]
	add	x0, x0, 48
	bl	ftl_info_data_recovery
	ldr	x0, [x21, 1128]
	add	x0, x0, 80
	bl	ftl_info_data_recovery
	bl	gc_recovery
	bl	pm_flush
	mov	w0, 1
	bl	ftl_total_vpn_update
	ldrb	w0, [x20, 401]
	cbz	w0, .L4120
	ldr	x1, [x21, 3384]
	ldr	w0, [x1, 68]
	add	w0, w0, 1
	str	w0, [x1, 68]
.L4120:
	bl	ftl_ext_info_flush
	mov	w0, 0
	bl	ftl_info_flush
	bl	print_ftl_debug_info
	add	x1, x19, :lo12:.LANCHOR0
	ldr	x0, [x1, 1128]
	ldrh	w0, [x0, 124]
	cbnz	w0, .L4127
	ldrh	w0, [x1, 3368]
	ldrh	w1, [x1, 3372]
	add	w0, w0, w1
	cmp	w0, 7
	ble	.L4127
.L4123:
	mov	w0, 0
.L4093:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldr	x25, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L4127:
	add	x19, x19, :lo12:.LANCHOR0
	mov	w20, 16384
	mov	w21, 65535
.L4124:
	mov	w1, 1
	mov	w0, 0
	bl	zftl_do_gc
	mov	w1, 1
	mov	w0, w1
	bl	zftl_do_gc
	ldr	x0, [x19, 1128]
	ldrh	w1, [x0, 124]
	cbnz	w1, .L4122
	ldrh	w0, [x0, 80]
	cmp	w0, w21
	bne	.L4122
	ldrh	w0, [x19, 3368]
	ldrh	w1, [x19, 3372]
	add	w0, w0, w1
	cmp	w0, 7
	bgt	.L4123
.L4122:
	subs	w20, w20, #1
	bne	.L4124
	b	.L4123
	.size	zftl_init, .-zftl_init
	.align	2
	.global	rk_ftl_init
	.type	rk_ftl_init, %function
rk_ftl_init:
	stp	x29, x30, [sp, -48]!
	adrp	x0, jiffies
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR5
	add	x19, x21, :lo12:.LANCHOR5
	ldr	x0, [x0, #:lo12:jiffies]
	str	x0, [x19, 224]
	mov	w0, 136
	strb	wzr, [x19, 496]
	str	wzr, [x19, 248]
	bl	ftl_dma32_malloc
	str	x0, [x19, 232]
	cbnz	x0, .L4174
.L4176:
	mov	w20, -1
.L4173:
	mov	w0, w20
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L4174:
	mov	w0, 2048
	bl	ftl_dma32_malloc
	add	x1, x19, 512
	stp	x0, xzr, [x19, 504]
	str	xzr, [x19, 240]
	add	x0, x19, 240
	bl	rknand_get_reg_addr
	ldr	x0, [x19, 240]
	cbz	x0, .L4176
	bl	rk_nandc_irq_init
	ldr	x0, [x19, 504]
	mov	w3, 2048
	mov	w2, 0
	mov	w1, 0
	bl	flash_sram_load_store
	bl	rknand_flash_cs_init
	ldr	x0, [x19, 232]
	adrp	x1, zftl_deinit
	add	x1, x1, :lo12:zftl_deinit
	str	x1, [x0, 80]
	adrp	x1, zftl_cache_flush
	add	x1, x1, :lo12:zftl_cache_flush
	str	x1, [x0, 64]
	adrp	x1, zftl_flash_suspend
	add	x1, x1, :lo12:zftl_flash_suspend
	str	x1, [x0, 88]
	adrp	x1, zftl_flash_resume
	add	x1, x1, :lo12:zftl_flash_resume
	str	x1, [x0, 96]
	adrp	x1, zftl_get_density
	add	x1, x1, :lo12:zftl_get_density
	str	x1, [x0, 72]
	adrp	x1, zftl_read_flash_info
	add	x1, x1, :lo12:zftl_read_flash_info
	str	x1, [x0, 112]
	adrp	x1, zftl_read
	add	x1, x1, :lo12:zftl_read
	str	x1, [x0, 40]
	adrp	x1, zftl_write
	add	x1, x1, :lo12:zftl_write
	str	x1, [x0, 48]
	adrp	x1, zftl_sys_read
	add	x1, x1, :lo12:zftl_sys_read
	str	x1, [x0, 24]
	adrp	x1, zftl_sys_write
	add	x1, x1, :lo12:zftl_sys_write
	str	x1, [x0, 32]
	adrp	x1, zftl_vendor_read
	add	x1, x1, :lo12:zftl_vendor_read
	str	x1, [x0, 8]
	adrp	x1, zftl_vendor_write
	add	x1, x1, :lo12:zftl_vendor_write
	str	x1, [x0, 16]
	adrp	x1, zftl_nandc_get_irq_status
	add	x1, x1, :lo12:zftl_nandc_get_irq_status
	str	x1, [x0, 120]
	adrp	x1, zftl_proc_ftl_read
	add	x1, x1, :lo12:zftl_proc_ftl_read
	str	x1, [x0, 128]
	adrp	x1, zftl_do_gc
	add	x1, x1, :lo12:zftl_do_gc
	str	x1, [x0, 104]
	adrp	x1, zftl_discard
	add	x1, x1, :lo12:zftl_discard
	str	x1, [x0, 56]
	ldr	x0, [x19, 240]
	bl	nand_flash_init
	mov	w22, w0
	cbnz	w0, .L4177
	bl	zftl_init
	mov	w20, w0
	bl	zftl_proc_debug_init
	mov	w0, 1
	strb	w0, [x19, 496]
.L4178:
	mov	w1, w20
	adrp	x0, .LC313
	add	x0, x0, :lo12:.LC313
	bl	printk
	b	.L4173
.L4177:
	ldr	x0, [x19, 232]
	adrp	x1, ftl_deinit
	add	x1, x1, :lo12:ftl_deinit
	str	x1, [x0, 80]
	adrp	x1, ftl_cache_flush
	add	x1, x1, :lo12:ftl_cache_flush
	str	x1, [x0, 64]
	adrp	x1, ftl_flash_suspend
	add	x1, x1, :lo12:ftl_flash_suspend
	str	x1, [x0, 88]
	adrp	x1, ftl_flash_resume
	add	x1, x1, :lo12:ftl_flash_resume
	str	x1, [x0, 96]
	adrp	x1, ftl_get_density
	add	x1, x1, :lo12:ftl_get_density
	str	x1, [x0, 72]
	adrp	x1, ftl_read_flash_info
	add	x1, x1, :lo12:ftl_read_flash_info
	str	x1, [x0, 112]
	adrp	x1, ftl_read
	add	x1, x1, :lo12:ftl_read
	str	x1, [x0, 40]
	adrp	x1, ftl_write
	add	x1, x1, :lo12:ftl_write
	str	x1, [x0, 48]
	adrp	x1, ftl_sys_read
	add	x1, x1, :lo12:ftl_sys_read
	str	x1, [x0, 24]
	adrp	x1, ftl_sys_write
	add	x1, x1, :lo12:ftl_sys_write
	str	x1, [x0, 32]
	adrp	x1, ftl_vendor_read
	add	x1, x1, :lo12:ftl_vendor_read
	str	x1, [x0, 8]
	adrp	x1, ftl_vendor_write
	add	x1, x1, :lo12:ftl_vendor_write
	str	x1, [x0, 16]
	adrp	x1, ftl_nandc_get_irq_status
	add	x1, x1, :lo12:ftl_nandc_get_irq_status
	str	x1, [x0, 120]
	adrp	x1, ftl_proc_ftl_read
	add	x1, x1, :lo12:ftl_proc_ftl_read
	str	x1, [x0, 128]
	adrp	x1, ftl_do_gc
	add	x1, x1, :lo12:ftl_do_gc
	str	x1, [x0, 104]
	adrp	x1, ftl_discard
	add	x1, x1, :lo12:ftl_discard
	str	x1, [x0, 56]
	ldr	x0, [x19, 240]
	bl	FlashInit
	mov	w20, w0
	cmn	w22, #2
	adrp	x22, .LANCHOR2
	bne	.L4179
	add	x19, x22, :lo12:.LANCHOR2
	mov	w2, 32
	add	x19, x19, 8
	adrp	x1, gNandParaInfo
	mov	x0, x19
	add	x1, x1, :lo12:gNandParaInfo
	bl	ftl_memcpy
	ldrb	w0, [x19, 18]
	bl	flash_lsb_page_tbl_build
	ldrh	w0, [x19, 10]
	strh	w0, [x19, 26]
.L4179:
	adrp	x0, g_nandc_version_data
	ldr	w1, [x0, #:lo12:g_nandc_version_data]
	mov	w0, 12336
	movk	w0, 0x5638, lsl 16
	cmp	w1, w0
	adrp	x1, .LANCHOR0
	bne	.L4180
	adrp	x0, gFlashSlcMode
	ldrb	w0, [x0, #:lo12:gFlashSlcMode]
	cbnz	w0, .L4181
.L4180:
	add	x0, x1, :lo12:.LANCHOR0
	strb	wzr, [x1, #:lo12:.LANCHOR0]
	strb	wzr, [x0, 1154]
.L4181:
	adrp	x2, gNandFlashIDBEccBits
	add	x0, x1, :lo12:.LANCHOR0
	add	x22, x22, :lo12:.LANCHOR2
	add	x21, x21, :lo12:.LANCHOR5
	ldrb	w2, [x2, #:lo12:gNandFlashIDBEccBits]
	strb	w2, [x0, 1152]
	adrp	x2, gNandFlashEccBits
	ldrh	w3, [x22, 18]
	str	xzr, [x21, 336]
	ldrb	w2, [x2, #:lo12:gNandFlashEccBits]
	strb	w2, [x0, 1249]
	mov	w0, 0
	mov	w2, 1
.L4182:
	cmp	w3, w2
	bcs	.L4183
	add	x1, x1, :lo12:.LANCHOR0
	adrp	x2, .LANCHOR3+1304
	sub	w0, w0, #1
	strh	w0, [x2, #:lo12:.LANCHOR3+1304]
	strb	wzr, [x1, 1192]
	cbnz	w20, .L4178
	bl	FtlInit
	mov	w20, w0
	b	.L4178
.L4183:
	add	w0, w0, 1
	lsl	w2, w2, 1
	and	w0, w0, 65535
	b	.L4182
	.size	rk_ftl_init, .-rk_ftl_init
	.align	2
	.global	zftl_write
	.type	zftl_write, %function
zftl_write:
	stp	x29, x30, [sp, -112]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, w0
	adrp	x0, .LANCHOR2
	stp	x21, x22, [sp, 32]
	stp	x25, x26, [sp, 64]
	mov	w20, w1
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	mov	w21, w2
	stp	x23, x24, [sp, 48]
	mov	x26, x3
	stp	x27, x28, [sp, 80]
	tbz	x0, 12, .L4189
	ldr	w4, [x26]
	mov	w3, w2
	adrp	x0, .LC314
	mov	w2, w1
	add	x0, x0, :lo12:.LC314
	mov	w1, w19
	bl	printk
.L4189:
	cbnz	w19, .L4190
	adrp	x0, .LANCHOR0+1032
	mov	w19, 24576
	ldr	w0, [x0, #:lo12:.LANCHOR0+1032]
.L4191:
	cmp	w0, w20
	ccmp	w0, w21, 0, hi
	bcc	.L4209
	add	w1, w20, w21
	cmp	w0, w1
	bcc	.L4209
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	add	w19, w19, w20
	sub	w23, w21, #1
	add	w23, w23, w19
	adrp	x22, .LANCHOR0
	ldrb	w1, [x0, 1946]
	add	x27, x22, :lo12:.LANCHOR0
	str	x0, [x29, 104]
	add	w0, w19, w21
	str	w0, [x29, 100]
	udiv	w25, w19, w1
	udiv	w23, w23, w1
	mov	w20, w25
	sub	w24, w23, w25
	add	w24, w24, 1
.L4193:
	cbnz	w24, .L4202
	bl	ftl_write_commit
	mov	w1, 1
	mov	w0, 0
	bl	zftl_do_gc
	add	x1, x22, :lo12:.LANCHOR0
	ldr	x0, [x1, 1128]
	ldrh	w0, [x0, 124]
	cbnz	w0, .L4203
	ldrh	w0, [x1, 3368]
	ldrh	w1, [x1, 3372]
	add	w0, w0, w1
	cmp	w0, 11
	bgt	.L4204
.L4203:
	mov	w1, 1
	mov	w0, 0
	bl	zftl_do_gc
.L4204:
	add	x22, x22, :lo12:.LANCHOR0
.L4205:
	ldrh	w0, [x22, 3368]
	ldrh	w1, [x22, 3372]
	add	w0, w0, w1
	cmp	w0, 7
	ble	.L4206
	bl	timer_get_time
	adrp	x1, .LANCHOR5+472
	str	w0, [x1, #:lo12:.LANCHOR5+472]
	mov	w0, 0
.L4188:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L4190:
	cmp	w19, 3
	bhi	.L4209
	lsl	w19, w19, 13
	mov	w0, 8192
	b	.L4191
.L4202:
	ldrb	w0, [x27, 3381]
	cbz	w0, .L4194
	ldrb	w0, [x27, 3353]
	cmp	w0, 2
	bhi	.L4194
	bl	ftl_write_commit
.L4194:
	mov	w0, 0
	bl	buf_alloc
	mov	x28, x0
	cbnz	x0, .L4195
	bl	ftl_write_commit
	b	.L4193
.L4195:
	strb	wzr, [x0, 57]
	cmp	w20, w25
	ldr	x0, [x29, 104]
	ccmp	w20, w23, 4, ne
	ldrb	w0, [x0, 1946]
	strb	w0, [x28, 56]
	bne	.L4198
	cmp	w20, w25
	bne	.L4199
	udiv	w1, w19, w0
	msub	w1, w1, w0, w19
	and	w1, w1, 255
	strb	w1, [x28, 57]
	sub	w0, w0, w1
	and	w0, w0, 255
	cmp	w21, w0
	csel	w0, w21, w0, cc
.L4217:
	strb	w0, [x28, 56]
.L4198:
	ldrb	w4, [x28, 57]
	mov	x1, x26
	ldrb	w2, [x28, 56]
	sub	w24, w24, #1
	ldr	x0, [x28, 8]
	lsl	w2, w2, 9
	add	x0, x0, x4, lsl 9
	bl	ftl_memcpy
	ldr	x1, [x27, 3384]
	str	w20, [x28, 36]
	add	w20, w20, 1
	ldr	w0, [x1, 8]
	add	w2, w0, 1
	str	w2, [x1, 8]
	str	w0, [x28, 32]
	mov	x0, x28
	bl	ftl_write_buf
	ldrb	w0, [x28, 56]
	add	x26, x26, x0, lsl 9
	b	.L4193
.L4199:
	ldr	w1, [x29, 100]
	msub	w0, w0, w20, w1
	b	.L4217
.L4206:
	mov	w1, 1
	mov	w0, 0
	bl	zftl_do_gc
	mov	w1, 1
	mov	w0, w1
	bl	zftl_do_gc
	b	.L4205
.L4209:
	mov	w0, -1
	b	.L4188
	.size	zftl_write, .-zftl_write
	.align	2
	.global	zftl_vendor_write
	.type	zftl_vendor_write, %function
zftl_vendor_write:
	stp	x29, x30, [sp, -16]!
	mov	x3, x2
	mov	w2, w1
	add	w1, w0, 512
	add	x29, sp, 0
	mov	w0, 2
	bl	zftl_write
	ldp	x29, x30, [sp], 16
	ret
	.size	zftl_vendor_write, .-zftl_vendor_write
	.align	2
	.global	zftl_sys_write
	.type	zftl_sys_write, %function
zftl_sys_write:
	stp	x29, x30, [sp, -16]!
	mov	x3, x2
	mov	w2, w1
	mov	w1, w0
	add	x29, sp, 0
	mov	w0, 2
	bl	zftl_write
	ldp	x29, x30, [sp], 16
	ret
	.size	zftl_sys_write, .-zftl_sys_write
	.align	2
	.global	zftl_discard
	.type	zftl_discard, %function
zftl_discard:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, w1
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR0
	add	x1, x21, :lo12:.LANCHOR0
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	ldr	w1, [x1, 1032]
	cmp	w0, w1
	ccmp	w19, w1, 2, cc
	bhi	.L4244
	add	w2, w0, w19
	cmp	w1, w2
	bcc	.L4244
	add	w23, w0, 24576
	adrp	x24, .LANCHOR5
	add	x0, x24, :lo12:.LANCHOR5
	ldr	w1, [x0, 520]
	add	w1, w19, w1
	str	w1, [x0, 520]
	adrp	x0, .LANCHOR2
	str	x0, [x29, 104]
	ldr	w2, [x0, #:lo12:.LANCHOR2]
	tbz	x2, 12, .L4224
	adrp	x0, .LC315
	mov	w4, 0
	mov	w3, w19
	mov	w2, w23
	add	x0, x0, :lo12:.LC315
	bl	printk
.L4224:
	add	x0, x21, :lo12:.LANCHOR0
	adrp	x25, .LANCHOR3
	ldr	x0, [x0, 3384]
	ldr	w27, [x0, 8]
	add	w1, w27, 1
	str	w1, [x0, 8]
	bl	ftl_write_commit
	bl	ftl_flush
	add	x0, x25, :lo12:.LANCHOR3
	ldrb	w22, [x0, 1946]
	udiv	w20, w23, w22
	msub	w26, w20, w22, w23
	cbz	w26, .L4225
	sub	w22, w22, w26
	mov	w0, w20
	cmp	w22, w19
	csel	w22, w22, w19, ls
	bl	lpa_hash_get_ppa
	str	w0, [x29, 120]
	cmn	w0, #1
	bne	.L4226
	mov	w2, 0
	add	x1, x29, 120
	mov	w0, w20
	bl	pm_log2phys
.L4226:
	ldr	w0, [x29, 120]
	and	w28, w22, 65535
	cmn	w0, #1
	beq	.L4228
	mov	w0, 0
	bl	buf_alloc
	mov	x3, x0
	cbz	x0, .L4228
	strb	w26, [x0, 57]
	ubfiz	x26, x26, 9, 25
	strb	w22, [x0, 56]
	mov	w1, 0
	ldr	x0, [x0, 8]
	lsl	w2, w28, 9
	stp	w27, w20, [x3, 32]
	str	x3, [x29, 96]
	add	x0, x0, x26
	bl	ftl_memset
	ldr	x3, [x29, 96]
	mov	x0, x3
	bl	ftl_write_buf
	bl	ftl_write_commit
	add	x0, x21, :lo12:.LANCHOR0
	ldr	x1, [x0, 3384]
	ldr	w0, [x1, 76]
	add	w0, w0, 1
	str	w0, [x1, 76]
.L4228:
	add	w20, w20, 1
	sub	w19, w19, w28
.L4225:
	cbz	w19, .L4230
	bl	ftl_flush
.L4230:
	add	x22, x25, :lo12:.LANCHOR3
	add	x26, x21, :lo12:.LANCHOR0
	mov	w0, -1
	mov	w28, 1
	str	w0, [x29, 124]
.L4231:
	ldrb	w0, [x22, 1946]
	cmp	w19, w0
	bcs	.L4236
	cbz	w19, .L4238
	mov	w0, w20
	bl	lpa_hash_get_ppa
	str	w0, [x29, 120]
	cmn	w0, #1
	bne	.L4239
	mov	w2, 0
	add	x1, x29, 120
	mov	w0, w20
	bl	pm_log2phys
.L4239:
	ldr	w0, [x29, 120]
	cmn	w0, #1
	beq	.L4238
	mov	w0, 0
	bl	buf_alloc
	mov	x22, x0
	cbz	x0, .L4238
	add	x25, x25, :lo12:.LANCHOR3
	strb	wzr, [x0, 57]
	strb	w19, [x0, 56]
	stp	w27, w20, [x22, 32]
	ldrb	w0, [x25, 1946]
	cmp	w19, w0
	bcc	.L4241
	adrp	x1, .LANCHOR4
	add	x1, x1, :lo12:.LANCHOR4
	add	x1, x1, 1056
	mov	w2, 1496
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printk
	bl	dump_stack
.L4241:
	ldr	x0, [x22, 8]
	lsl	w2, w19, 9
	mov	w1, 0
	bl	ftl_memset
	mov	x0, x22
	bl	ftl_write_buf
	bl	ftl_write_commit
	add	x0, x21, :lo12:.LANCHOR0
	ldr	x1, [x0, 3384]
	ldr	w0, [x1, 76]
	add	w0, w0, 1
	str	w0, [x1, 76]
.L4238:
	add	x0, x24, :lo12:.LANCHOR5
	ldr	w1, [x0, 520]
	cmp	w1, 8192
	bls	.L4245
	ldr	x0, [x29, 104]
	ldr	w0, [x0, #:lo12:.LANCHOR2]
	tbz	x0, 12, .L4242
	adrp	x0, .LC315
	mov	w4, 0
	mov	w3, w19
	mov	w2, w23
	add	x0, x0, :lo12:.LC315
	bl	printk
.L4242:
	add	x24, x24, :lo12:.LANCHOR5
	add	x21, x21, :lo12:.LANCHOR0
	str	wzr, [x24, 520]
	bl	flt_sys_flush
	mov	w0, 1
	str	w0, [x21, 3396]
.L4245:
	mov	w0, 0
	b	.L4222
.L4236:
	mov	w0, w20
	bl	lpa_hash_get_ppa
	str	w0, [x29, 120]
	cmn	w0, #1
	beq	.L4232
	mov	w0, 0
	bl	buf_alloc
	mov	x3, x0
	cbz	x0, .L4234
	ldrb	w2, [x22, 1946]
	mov	w1, 0
	strb	w2, [x0, 56]
	strb	wzr, [x0, 57]
	ldr	x0, [x0, 8]
	lsl	w2, w2, 9
	stp	w27, w20, [x3, 32]
	str	x3, [x29, 96]
	bl	ftl_memset
	ldr	x3, [x29, 96]
	mov	x0, x3
	bl	ftl_write_buf
	bl	ftl_write_commit
.L4271:
	ldr	x1, [x26, 3384]
	ldr	w0, [x1, 76]
	add	w0, w0, 1
	str	w0, [x1, 76]
.L4234:
	ldrb	w0, [x22, 1946]
	add	w20, w20, 1
	sub	w19, w19, w0
	b	.L4231
.L4232:
	mov	w2, 0
	add	x1, x29, 120
	mov	w0, w20
	bl	pm_log2phys
	ldr	w0, [x29, 120]
	cmn	w0, #1
	beq	.L4234
	add	x1, x29, 124
	mov	w2, 1
	mov	w0, w20
	bl	pm_log2phys
	ldrb	w1, [x26, 1205]
	mov	w0, 24
	ldrh	w2, [x22, 1304]
	sub	w0, w0, w1
	ldr	w1, [x29, 120]
	sub	w0, w0, w2
	lsr	w1, w1, w2
	lsl	w0, w28, w0
	sub	w0, w0, #1
	and	w0, w0, w1
	ldrb	w1, [x22, 1306]
	udiv	w0, w0, w1
	bl	ftl_vpn_decrement
	b	.L4271
.L4244:
	mov	w0, -1
.L4222:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
	.size	zftl_discard, .-zftl_discard
	.align	2
	.global	dump_pm_blk
	.type	dump_pm_blk, %function
dump_pm_blk:
	stp	x29, x30, [sp, -48]!
	mov	w2, 4
	adrp	x0, .LC267
	add	x0, x0, :lo12:.LC267
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR0
	add	x19, x19, :lo12:.LANCHOR0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR5
	add	x21, x21, :lo12:.LANCHOR5
	mov	w20, 0
	mov	w22, 65535
	ldr	x1, [x19, 3384]
	add	x1, x1, 704
	ldrh	w3, [x1, -6]
	bl	rknand_print_hex
	ldrh	w3, [x21, 220]
	adrp	x0, .LC268
	ldr	x1, [x19, 3384]
	mov	w2, 2
	add	x0, x0, :lo12:.LC268
	add	x1, x1, 416
	bl	rknand_print_hex
.L4273:
	ldrh	w0, [x21, 220]
	cmp	w0, w20
	bhi	.L4275
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L4275:
	ldr	x0, [x19, 3384]
	add	x0, x0, w20, sxtw 1
	ldrh	w0, [x0, 416]
	cmp	w0, w22
	beq	.L4274
	mov	x1, 0
	bl	ftl_sblk_dump
.L4274:
	add	w20, w20, 1
	and	w20, w20, 65535
	b	.L4273
	.size	dump_pm_blk, .-dump_pm_blk
	.align	2
	.global	id_block_prog_msb_ff_data
	.type	id_block_prog_msb_ff_data, %function
id_block_prog_msb_ff_data:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR0
	stp	x23, x24, [sp, 48]
	and	w24, w0, 255
	add	x0, x21, :lo12:.LANCHOR0
	stp	x19, x20, [sp, 16]
	stp	x25, x26, [sp, 64]
	and	w19, w2, 65535
	str	x27, [sp, 80]
	ldrb	w2, [x0, 1154]
	cbnz	w2, .L4277
	ldr	x0, [x0, 1144]
	ldrb	w0, [x0, 19]
	sub	w0, w0, #5
	and	w0, w0, 255
	cmp	w0, 63
	bhi	.L4277
	mov	x2, 16391
	movk	x2, 0x4000, lsl 16
	movk	x2, 0x8000, lsl 48
	lsr	x0, x2, x0
	tbz	x0, 0, .L4277
	adrp	x20, .LANCHOR3
	add	x20, x20, :lo12:.LANCHOR3
	adrp	x23, .LC316
	mov	w25, w1
	add	x20, x20, 2476
	add	x23, x23, :lo12:.LC316
.L4279:
	add	x26, x21, :lo12:.LANCHOR0
	ldr	x0, [x26, 1144]
	ldrh	w0, [x0, 10]
	cmp	w0, w19
	bhi	.L4280
.L4277:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L4280:
	sxtw	x22, w19
	add	w27, w19, w25
	mov	w1, w19
	mov	w2, w27
	mov	x0, x23
	ldrh	w3, [x20, x22, lsl 1]
	bl	printk
	ldrh	w1, [x20, x22, lsl 1]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L4277
	adrp	x22, .LANCHOR5
	add	x22, x22, :lo12:.LANCHOR5
	mov	w2, 16384
	mov	w1, 255
	add	w19, w19, 1
	ldr	x0, [x22, 304]
	and	w19, w19, 65535
	bl	ftl_memset
	ldr	x0, [x26, 1144]
	mov	w1, w27
	ldr	x3, [x22, 304]
	mov	x2, x3
	ldrb	w4, [x0, 9]
	mov	w0, w24
	bl	flash_prog_page
	b	.L4279
	.size	id_block_prog_msb_ff_data, .-id_block_prog_msb_ff_data
	.align	2
	.global	write_idblock
	.type	write_idblock, %function
write_idblock:
	stp	x29, x30, [sp, -304]!
	mov	w4, 35899
	movk	w4, 0xfcdc, lsl 16
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	adrp	x23, .LANCHOR0
	stp	x19, x20, [sp, 16]
	ldrb	w3, [x23, #:lo12:.LANCHOR0]
	str	w3, [x29, 160]
	stp	x21, x22, [sp, 32]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	ldrh	w3, [x29, 160]
	str	w3, [x29, 212]
	ldr	w3, [x1]
	cmp	w3, w4
	mov	w4, 19282
	movk	w4, 0x534e, lsl 16
	ccmp	w3, w4, 4, ne
	beq	.L4283
	add	w4, w4, 327680
	cmp	w3, w4
	beq	.L4283
.L4401:
	mov	w0, -1
.L4282:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 304
	ret
.L4283:
	cmp	w0, 15
	bls	.L4401
	add	x25, x23, :lo12:.LANCHOR0
	mov	w19, w0
	str	x2, [x29, 168]
	str	x1, [x29, 216]
	ldr	x0, [x25, 1144]
	ldrb	w20, [x0, 9]
	ldrh	w24, [x0, 10]
	adrp	x0, .LANCHOR2+34
	ldrh	w21, [x0, #:lo12:.LANCHOR2+34]
	ldrb	w0, [x25, 1154]
	str	w0, [x29, 144]
	mov	w0, 59392
	movk	w0, 0x3, lsl 16
	bl	ftl_malloc
	mov	x22, x0
	cbz	x0, .L4401
	adrp	x0, .LANCHOR5+496
	ldrb	w0, [x0, #:lo12:.LANCHOR5+496]
	cbz	w0, .L4340
	ldrb	w1, [x23, #:lo12:.LANCHOR0]
	ldrb	w0, [x25, 1154]
	cbz	w1, .L4287
	cmp	w0, 0
	cset	w0, eq
.L4398:
	str	w0, [x29, 236]
	b	.L4286
.L4287:
	cmp	w0, 3
	beq	.L4341
	ldr	w2, [x29, 212]
	cmp	w0, 2
	mov	w1, 2
	mov	w0, 3
	csel	w1, w2, w1, ne
	csel	w0, wzr, w0, ne
	str	w1, [x29, 212]
	b	.L4398
.L4340:
	str	wzr, [x29, 236]
.L4286:
	add	w19, w19, 511
	lsr	w19, w19, 9
	cmp	w19, 8
	bls	.L4343
	cmp	w19, 500
	bhi	.L4289
.L4288:
	ldr	x0, [x29, 216]
	mov	w1, 35899
	movk	w1, 0xfcdc, lsl 16
	ldr	w0, [x0]
	cmp	w0, w1
	mov	w1, 19282
	movk	w1, 0x534e, lsl 16
	ccmp	w0, w1, 4, ne
	beq	.L4290
	add	w1, w1, 327680
	cmp	w0, w1
	beq	.L4290
.L4289:
	mov	x0, x22
	bl	ftl_free
	b	.L4401
.L4341:
	str	w0, [x29, 212]
	mov	w0, 2
	b	.L4398
.L4343:
	mov	w19, 8
	b	.L4288
.L4290:
	mov	w0, 0
	bl	zftl_flash_exit_slc_mode
	add	x0, x23, :lo12:.LANCHOR0
	mul	w24, w24, w20
	mov	w4, 17739
	mov	w2, 63871
	movk	w4, 0x4e52, lsl 16
	ldrb	w0, [x0, 1154]
	strb	w0, [x23, #:lo12:.LANCHOR0]
	sub	w0, w24, #1
	add	w0, w0, w19
	udiv	w0, w0, w24
	str	w0, [x29, 132]
	ldr	x0, [x29, 216]
	add	x3, x0, 253952
	mov	w0, 0
	add	x3, x3, 1532
.L4296:
	ldr	w1, [x3]
	cbnz	w1, .L4291
	cbnz	w0, .L4292
	str	w4, [x3, 512]
.L4293:
	add	w0, w0, 1
	sub	w2, w2, #1
	cmp	w0, 4095
	sub	x3, x3, #4
	csel	w0, w0, wzr, cc
	cmp	w2, 4096
	bne	.L4296
.L4295:
	ldr	x1, [x29, 168]
	mul	w0, w21, w20
	mov	w3, 5
	mov	w2, 4
	str	w0, [x29, 164]
	adrp	x0, .LC318
	add	x0, x0, :lo12:.LC318
	bl	rknand_print_hex
	mov	w2, w19
	mov	w1, w19
	adrp	x0, .LC319
	add	x0, x0, :lo12:.LC319
	bl	printk
	str	xzr, [x29, 224]
	adrp	x0, .LANCHOR2
	add	x0, x0, :lo12:.LANCHOR2
	add	x0, x0, 8
	str	wzr, [x29, 232]
	str	x0, [x29, 136]
.L4337:
	adrp	x27, .LANCHOR5
	add	x1, x27, :lo12:.LANCHOR5
	ldr	w0, [x29, 224]
	ldrb	w1, [x1, 496]
	cbnz	w1, .L4297
	ldr	x2, [x29, 224]
	cmp	w0, 0
	ldr	x1, [x29, 168]
	ldr	w1, [x1, x2, lsl 2]
	ldr	w2, [x29, 164]
	mul	w21, w2, w1
	ldr	w2, [x29, 132]
	ccmp	w2, 1, 0, ne
	bls	.L4298
	ldr	x2, [x29, 168]
	sub	w0, w0, #1
	ldr	w0, [x2, x0, lsl 2]
	add	w0, w0, 1
	cmp	w1, w0
	bne	.L4298
.L4299:
	ldr	x0, [x29, 224]
	add	x0, x0, 1
	str	x0, [x29, 224]
	cmp	x0, 4
	bne	.L4337
.L4339:
	mov	w0, 0
	bl	zftl_flash_exit_slc_mode
	adrp	x0, .LANCHOR0
	ldrb	w2, [x29, 160]
	add	x1, x0, :lo12:.LANCHOR0
	strb	w2, [x0, #:lo12:.LANCHOR0]
	ldr	w2, [x29, 236]
	cbz	w2, .L4338
	ldrb	w2, [x29, 144]
	strb	w2, [x1, 1154]
.L4338:
	add	x0, x0, :lo12:.LANCHOR0
	mov	w1, 2
	strb	w1, [x0, 1208]
	mov	w0, 0
	bl	zftl_flash_enter_slc_mode
	mov	x0, x22
	bl	ftl_free
	ldr	w0, [x29, 232]
	cmp	w0, 0
	csetm	w0, eq
	b	.L4282
.L4292:
	ldr	x1, [x29, 216]
	ldr	w1, [x1, w0, uxtw 2]
	str	w1, [x3, 512]
	b	.L4293
.L4291:
	adrp	x0, .LC317
	add	x0, x0, :lo12:.LC317
	bl	printk
	b	.L4295
.L4297:
	adrp	x20, .LANCHOR0
	add	x23, x20, :lo12:.LANCHOR0
	ldr	w2, [x29, 224]
	ldr	x1, [x23, 1048]
	add	x1, x1, w2, uxtw
	ldrb	w21, [x1, 32]
	mov	x1, x20
	cmp	w21, 255
	beq	.L4299
	ldr	w2, [x29, 164]
	mul	w21, w21, w2
	ldr	w2, [x29, 236]
	cbz	w2, .L4298
	and	w0, w0, -3
	cmp	w0, 1
	beq	.L4300
	cmp	w2, 3
	bne	.L4301
.L4300:
	add	x2, x1, :lo12:.LANCHOR0
	ldrb	w0, [x29, 212]
	strb	w0, [x1, #:lo12:.LANCHOR0]
	strb	w0, [x2, 1154]
.L4298:
	mov	w2, 512
	mov	w1, 0
	mov	x0, x22
	bl	ftl_memset
	adrp	x20, .LANCHOR0
	add	x0, x20, :lo12:.LANCHOR0
	ldr	x1, [x0, 1144]
	ldrb	w24, [x1, 9]
	ldrh	w23, [x1, 10]
	adrp	x1, .LANCHOR2
	add	x1, x1, :lo12:.LANCHOR2
	ldrh	w25, [x1, 34]
	mul	w23, w23, w24
	ldrb	w1, [x0, 1252]
	str	w1, [x29, 128]
	udiv	w1, w21, w24
	strb	wzr, [x0, 1252]
	mov	w0, 0
	mul	w25, w25, w24
	bl	flash_erase_block
	cmp	w23, w19
	bcs	.L4344
	add	w1, w21, w25
	mov	w0, 0
	bl	flash_erase_block
	mov	w1, 2
.L4302:
	add	x28, x20, :lo12:.LANCHOR0
	ldr	x0, [x28, 1144]
	ldrh	w23, [x0, 10]
	ldrb	w0, [x0, 12]
	lsl	w23, w23, 2
	mul	w23, w23, w1
	sdiv	w0, w23, w0
	str	w0, [x29, 176]
	udiv	w0, w21, w25
	msub	w0, w0, w25, w21
	str	w0, [x29, 208]
	sub	w26, w21, w0
	cmp	w21, w26
	bne	.L4346
	ldrb	w0, [x28, 1028]
	cmp	w0, 9
	bne	.L4346
	add	x27, x27, :lo12:.LANCHOR5
	mov	w2, 1024
	mov	w1, 0
	ldr	x27, [x27, 352]
	mov	x0, x27
	bl	ftl_memset
	mov	w0, 18766
	movk	w0, 0x464e, lsl 16
	str	w0, [x27]
	mov	w0, 12
	str	w0, [x27, 4]
	ldrb	w0, [x28, 1154]
	strb	wzr, [x27, 16]
	str	wzr, [x27, 12]
	cbz	w0, .L4304
	ldr	x0, [x28, 1144]
	ldrb	w0, [x0, 29]
	strb	w0, [x27, 16]
.L4304:
	add	x20, x20, :lo12:.LANCHOR0
	mov	w0, 4
	strb	w0, [x27, 17]
	cmp	w24, 8
	sub	w28, w19, #4
	ldr	x1, [x20, 1144]
	ldrh	w0, [x1, 10]
	ldrb	w1, [x1, 12]
	strb	wzr, [x27, 20]
	strh	wzr, [x27, 22]
	sdiv	w0, w0, w1
	mov	w1, 16
	strh	w0, [x27, 18]
	mov	w0, 70
	csel	w0, w0, w1, hi
	strb	w0, [x27, 21]
	mov	w1, 12
	add	x0, x27, 12
	bl	js_hash
	str	w0, [x27, 8]
.L4303:
	ldr	x20, [x29, 216]
	adrp	x0, .LANCHOR0
	add	x25, x0, :lo12:.LANCHOR0
	mov	w23, 0
	add	x0, x25, 4
	str	x0, [x29, 200]
.L4306:
	ldr	w0, [x29, 176]
	cmp	w0, w23
	bhi	.L4317
	ldr	x0, [x29, 136]
	mov	x23, x22
	mov	w24, 4
	mov	w25, 0
	stp	w28, wzr, [x29, 192]
	ldrb	w0, [x0, 9]
	str	w0, [x29, 156]
	ldr	x0, [x29, 136]
	ldr	w1, [x29, 156]
	ldrh	w0, [x0, 26]
	mul	w0, w0, w1
	adrp	x1, .LANCHOR0
	add	x20, x1, :lo12:.LANCHOR0
	udiv	w1, w21, w0
	strb	wzr, [x20, 1252]
	msub	w0, w1, w0, w21
	str	w0, [x29, 208]
	sub	w0, w21, w0
	str	w0, [x29, 152]
	ldr	w0, [x29, 208]
	and	w0, w0, 3
	str	w0, [x29, 200]
	add	x0, x20, 4
	str	x0, [x29, 104]
.L4318:
	ldr	w0, [x29, 192]
	cmp	w25, w0
	bcc	.L4332
	adrp	x0, .LANCHOR0
	add	x20, x0, :lo12:.LANCHOR0
	ldrb	w0, [x29, 128]
	strb	w0, [x20, 1252]
	ldr	w0, [x29, 236]
	cbz	w0, .L4333
	mov	w0, 0
	bl	zftl_flash_exit_slc_mode
	adrp	x0, .LANCHOR0
	strb	wzr, [x20, 1154]
	strb	wzr, [x0, #:lo12:.LANCHOR0]
.L4333:
	lsl	w0, w28, 7
	mov	x1, 0
.L4334:
	cmp	w0, w1
	bhi	.L4335
	ldr	w0, [x29, 232]
	add	w0, w0, 1
	str	w0, [x29, 232]
	cmp	w0, 5
	bls	.L4299
	b	.L4339
.L4301:
	mov	w0, 0
	bl	zftl_flash_exit_slc_mode
	strb	wzr, [x20, #:lo12:.LANCHOR0]
	strb	wzr, [x23, 1154]
	b	.L4298
.L4344:
	mov	w1, 1
	b	.L4302
.L4346:
	mov	w28, w19
	mov	x27, 0
	b	.L4303
.L4317:
	ldr	w0, [x29, 208]
	ldrb	w2, [x25, 1154]
	add	w8, w0, w23
	ldr	x0, [x29, 200]
	ubfx	x8, x8, 2, 16
	add	w1, w8, 1
	ldrh	w0, [x0, w1, sxtw 1]
	cbz	w2, .L4308
	ldrb	w4, [x25, 1]
	lsl	w0, w1, 1
	cmp	w4, 0
	csel	w0, w0, w1, ne
.L4308:
	ldrb	w1, [x25, 1028]
	cmp	w1, 9
	bne	.L4310
.L4399:
	str	w0, [x29, 240]
	mov	w0, 61424
	str	w0, [x29, 244]
	ldr	x0, [x29, 200]
	ldrh	w0, [x0, w8, sxtw 1]
	cbnz	w2, .L4312
	mov	w8, w0
.L4313:
	mul	w0, w24, w8
	cbnz	x27, .L4314
	ldr	w5, [x20]
	mov	x4, x20
	ldr	w6, [x29, 240]
	mov	w3, w19
	add	w27, w0, w26
	mov	w7, 61424
	str	w8, [x29, 196]
	mov	w2, w23
	mov	w1, w27
	adrp	x0, .LC320
	add	x0, x0, :lo12:.LC320
	bl	printk
	add	x2, x29, 240
	mov	x1, x20
	mov	w0, w27
	bl	fw_flash_page_prog.constprop.29
	ldrb	w0, [x25, 1154]
	ldr	w8, [x29, 196]
	cbnz	w0, .L4315
	udiv	w1, w26, w24
	add	w2, w8, 1
	bl	id_block_prog_msb_ff_data
.L4315:
	add	w0, w28, 16
	add	x20, x20, 2048
	cmp	w23, w0
	bcc	.L4316
	ldr	x0, [x29, 216]
	add	w1, w28, 20
	cmp	w23, w1
	add	x0, x0, 2048
	csel	x20, x0, x20, cc
.L4316:
	add	w9, w23, 4
	mov	x27, 0
	and	w23, w9, 65535
	b	.L4306
.L4310:
	sub	w0, w0, #1
	lsl	w0, w0, 2
	b	.L4399
.L4312:
	ldrb	w1, [x25, 1]
	lsl	w0, w8, 1
	cmp	w1, 0
	csel	w8, w0, w8, ne
	b	.L4313
.L4314:
	add	x2, x29, 240
	mov	x1, x27
	add	w0, w0, w26
	bl	fw_flash_page_prog.constprop.29
	b	.L4316
.L4332:
	ldr	w0, [x29, 200]
	ldr	x1, [x29, 104]
	sub	w0, w24, w0
	ldrb	w2, [x20, 1154]
	and	w0, w0, 65535
	str	w0, [x29, 176]
	ldr	w0, [x29, 208]
	add	w0, w0, w25
	udiv	w0, w0, w24
	and	w0, w0, 65535
	ldrh	w1, [x1, w0, sxtw 1]
	cbnz	w2, .L4319
	mov	w0, w1
.L4320:
	ldp	w2, w1, [x29, 152]
	ldrb	w27, [x20, 1152]
	madd	w0, w1, w0, w2
	str	w0, [x29, 148]
	ldr	w0, [x29, 200]
	ldr	w1, [x29, 148]
	add	w26, w0, w1
	ldr	x0, [x20, 1144]
	ldrb	w0, [x0, 9]
	udiv	w26, w26, w0
	ldrb	w0, [x20, 1249]
	str	w0, [x29, 124]
	mov	w0, w27
	bl	nandc_bch_sel
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	str	x0, [x29, 112]
.L4321:
	mov	w4, w24
	add	x3, x29, 240
	mov	x2, x23
	mov	w1, w26
	mov	w0, 0
	bl	flash_read_page
	mov	w5, w0
	cmn	w0, #1
	bne	.L4322
	ldrb	w6, [x20, 1252]
	cbnz	w6, .L4323
.L4326:
	ldr	x0, [x29, 112]
	ldr	x6, [x0, 336]
	cbnz	x6, .L4324
.L4325:
	ldrb	w0, [x20, 1192]
	cbz	w0, .L4322
	mov	w4, w24
	add	x3, x29, 240
	mov	x2, x23
	mov	w1, w26
	mov	w0, 0
	bl	flash_ddr_tuning_read
	b	.L4400
.L4319:
	ldrb	w2, [x20, 1]
	lsl	w1, w0, 1
	cmp	w2, 0
	csel	w0, w1, w0, ne
	b	.L4320
.L4323:
	str	w6, [x29, 100]
	mov	w4, w24
	str	w5, [x29, 120]
	add	x3, x29, 240
	strb	wzr, [x20, 1252]
	mov	x2, x23
	mov	w1, w26
	mov	w0, 0
	bl	flash_read_page
	cmn	w0, #1
	ldr	w6, [x29, 100]
	strb	w6, [x20, 1252]
	ldr	w5, [x29, 120]
	beq	.L4326
.L4400:
	mov	w5, w0
.L4322:
	cmn	w5, #1
	cset	w4, eq
	cmp	w27, 16
	cset	w0, ne
	tst	w4, w0
	beq	.L4328
	mov	w0, 16
	mov	w27, 16
	bl	nandc_bch_sel
	b	.L4321
.L4324:
	str	w5, [x29, 120]
	mov	w4, w24
	add	x3, x29, 240
	mov	x2, x23
	mov	w1, w26
	mov	w0, 0
	blr	x6
	cmn	w0, #1
	ldr	w5, [x29, 120]
	beq	.L4325
	b	.L4400
.L4328:
	ldr	w0, [x29, 124]
	bl	nandc_bch_sel
	cmp	w4, 0
	ldr	w0, [x29, 196]
	csinv	w0, w0, wzr, eq
	str	w0, [x29, 196]
	ldr	w0, [x29, 152]
	cmp	w25, 0
	ccmp	w21, w0, 0, eq
	bne	.L4330
	ldr	w0, [x29, 196]
	cbnz	w0, .L4330
	ldr	w0, [x23]
	mov	w1, 18766
	movk	w1, 0x464e, lsl 16
	cmp	w0, w1
	bne	.L4330
	ldr	w0, [x29, 192]
	ldr	w1, [x29, 176]
	ldrb	w24, [x23, 17]
	add	w0, w0, w1
	str	w0, [x29, 192]
.L4331:
	ldr	w0, [x29, 176]
	add	w25, w0, w25
	and	w25, w25, 65535
	b	.L4318
.L4330:
	ldr	x0, [x29, 176]
	mov	w2, w25
	ldr	w1, [x29, 148]
	ldp	w3, w4, [x29, 240]
	ubfiz	x0, x0, 9, 16
	add	x23, x23, x0
	adrp	x0, .LC321
	add	x0, x0, :lo12:.LC321
	bl	printk
	str	wzr, [x29, 200]
	b	.L4331
.L4335:
	ldr	x2, [x29, 216]
	ldr	w3, [x22, x1, lsl 2]
	add	x1, x1, 1
	add	x2, x2, x1, lsl 2
	ldr	w2, [x2, -4]
	cmp	w3, w2
	beq	.L4334
	mov	w2, 512
	mov	w1, 0
	mov	x0, x22
	bl	ftl_memset
	mov	w1, w21
	mov	w0, 0
	bl	flash_erase_block
	b	.L4299
	.size	write_idblock, .-write_idblock
	.align	2
	.global	write_loader_lba
	.type	write_loader_lba, %function
write_loader_lba:
	stp	x29, x30, [sp, -112]!
	cmp	w0, 64
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, w0
	stp	x21, x22, [sp, 32]
	adrp	x20, .LANCHOR5
	stp	x23, x24, [sp, 48]
	mov	w21, w1
	mov	x24, x2
	bne	.L4403
	ldr	w0, [x2]
	mov	w1, 35899
	movk	w1, 0xfcdc, lsl 16
	cmp	w0, w1
	mov	w1, 19282
	movk	w1, 0x534e, lsl 16
	ccmp	w0, w1, 4, ne
	beq	.L4404
	add	w1, w1, 327680
	cmp	w0, w1
	bne	.L4403
.L4404:
	add	x22, x20, :lo12:.LANCHOR5
	mov	w0, 1
	strb	w0, [x22, 524]
	mov	w0, 59392
	movk	w0, 0x3, lsl 16
	bl	ftl_malloc
	mov	w2, 59392
	mov	w1, 0
	movk	w2, 0x3, lsl 16
	str	x0, [x22, 528]
	bl	ftl_memset
	mov	w0, 64
	str	w0, [x22, 536]
.L4403:
	add	x23, x20, :lo12:.LANCHOR5
	ldr	w2, [x24]
	mov	w4, w21
	mov	w3, w19
	adrp	x0, .LC322
	add	x0, x0, :lo12:.LC322
	ldr	x1, [x23, 528]
	bl	printk
	ldrb	w0, [x23, 524]
	cbz	w0, .L4402
	ldr	x22, [x23, 528]
	cbz	x22, .L4402
	sub	w0, w19, #64
	cmp	w0, 499
	bhi	.L4406
	mov	w2, 564
	sub	w2, w2, w19
	cmp	w21, w2
	ubfiz	x0, x0, 9, 25
	csel	w2, w21, w2, ls
	mov	x1, x24
	lsl	w2, w2, 9
	add	x0, x22, x0
	bl	ftl_memcpy
.L4407:
	add	x23, x20, :lo12:.LANCHOR5
	ldr	w0, [x23, 536]
	cmp	w19, w0
	beq	.L4416
	strb	wzr, [x23, 524]
	mov	x0, x22
	bl	ftl_free
	str	xzr, [x23, 528]
	b	.L4416
.L4406:
	cmp	w19, 563
	bls	.L4407
	ldr	w0, [x23, 536]
	mov	w1, 500
	sub	w0, w0, #64
	cmp	w0, 500
	csel	w0, w0, w1, ls
	adrp	x1, .LANCHOR0+1144
	ldr	x1, [x1, #:lo12:.LANCHOR0+1144]
	ldrb	w1, [x1, 9]
	cmp	w1, 4
	beq	.L4408
	mov	w1, 2
	str	w1, [x29, 72]
	mov	w1, 3
	str	w1, [x29, 76]
	mov	w1, 4
	str	w1, [x29, 80]
	mov	w1, 5
	str	w1, [x29, 84]
	mov	w1, 6
	str	w1, [x29, 88]
.L4409:
	add	x2, x22, 245760
	mov	w1, 61952
	add	x2, x2, 2048
.L4415:
	ldr	w3, [x2]
	cbz	w3, .L4413
	add	w0, w1, 2048
	lsl	w0, w0, 2
.L4414:
	mov	x1, x22
	add	x22, x20, :lo12:.LANCHOR5
	add	x2, x29, 72
	bl	write_idblock
	ldr	x0, [x22, 528]
	strb	wzr, [x22, 524]
	bl	ftl_free
	str	xzr, [x22, 528]
.L4416:
	add	x20, x20, :lo12:.LANCHOR5
	add	w19, w19, w21
	str	w19, [x20, 536]
.L4402:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 112
	ret
.L4408:
	add	x2, x29, 72
	mov	x1, 0
.L4412:
	cmp	w0, 256
	bls	.L4410
	lsl	w3, w1, 1
	str	w3, [x2, x1, lsl 2]
.L4411:
	add	x1, x1, 1
	cmp	x1, 5
	bne	.L4412
	b	.L4409
.L4410:
	str	w1, [x2, x1, lsl 2]
	b	.L4411
.L4413:
	sub	w1, w1, #1
	sub	x2, x2, #4
	cmp	w1, 4096
	bne	.L4415
	lsl	w0, w0, 9
	b	.L4414
	.size	write_loader_lba, .-write_loader_lba
	.align	2
	.global	FtlWrite
	.type	FtlWrite, %function
FtlWrite:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	stp	x21, x22, [sp, 32]
	sub	w0, w1, #64
	mov	w19, w1
	mov	w21, w2
	mov	x22, x3
	cmp	w0, 1983
	bhi	.L4428
	cbnz	w20, .L4428
	mov	x2, x3
	mov	w1, w21
	mov	w0, w19
	bl	write_loader_lba
.L4428:
	adrp	x0, .LANCHOR5+232
	mov	x3, x22
	mov	w2, w21
	mov	w1, w19
	ldr	x0, [x0, #:lo12:.LANCHOR5+232]
	ldr	x4, [x0, 48]
	mov	w0, w20
	blr	x4
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	FtlWrite, .-FtlWrite
	.align	2
	.global	rknand_sys_storage_ioctl
	.type	rknand_sys_storage_ioctl, %function
rknand_sys_storage_ioctl:
	mov	w0, 25364
	movk	w0, 0x4004, lsl 16
	cmp	w1, w0
	bne	.L4434
	stp	x29, x30, [sp, -16]!
	add	x29, sp, 0
	bl	rknand_dev_flush
	mov	x1, 0
	adrp	x0, .LC323
	add	x0, x0, :lo12:.LC323
	bl	printk
	mov	x0, 0
	ldp	x29, x30, [sp], 16
	ret
.L4434:
	mov	x0, -22
	ret
	.size	rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl
	.align	2
	.global	rk_ftl_storage_sys_init
	.type	rk_ftl_storage_sys_init, %function
rk_ftl_storage_sys_init:
	stp	x29, x30, [sp, -16]!
	adrp	x0, .LANCHOR5
	add	x0, x0, :lo12:.LANCHOR5
	mov	w1, -1
	add	x29, sp, 0
	str	w1, [x0, 536]
	strb	wzr, [x0, 524]
	str	xzr, [x0, 528]
	str	xzr, [x0, 544]
	bl	rknand_sys_storage_init
	ldp	x29, x30, [sp], 16
	ret
	.size	rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init
	.align	2
	.global	StorageSysDataDeInit
	.type	StorageSysDataDeInit, %function
StorageSysDataDeInit:
	mov	w0, 0
	ret
	.size	StorageSysDataDeInit, .-StorageSysDataDeInit
	.align	2
	.global	rk_ftl_vendor_storage_init
	.type	rk_ftl_vendor_storage_init, %function
rk_ftl_vendor_storage_init:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR5
	add	x20, x19, :lo12:.LANCHOR5
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	str	x25, [sp, 64]
	ldr	x0, [x20, 552]
	cbnz	x0, .L4443
	mov	w0, 65536
	bl	ftl_malloc
	str	x0, [x20, 552]
.L4443:
	add	x19, x19, :lo12:.LANCHOR5
	ldr	x0, [x19, 552]
	cbz	x0, .L4448
	adrp	x23, .LC324
	mov	w25, 22084
	add	x23, x23, :lo12:.LC324
	mov	w24, 0
	mov	w22, 0
	mov	w21, 0
	movk	w25, 0x524b, lsl 16
.L4446:
	ldr	x2, [x19, 552]
	mov	w1, 128
	lsl	w0, w21, 7
	bl	FlashBootVendorRead
	cbnz	w0, .L4449
	ldr	x0, [x19, 552]
	add	x1, x0, 61440
	ldr	w3, [x0, 4]
	ldr	w2, [x1, 4092]
	ldr	w1, [x0]
	mov	x0, x23
	bl	printk
	ldr	x20, [x19, 552]
	ldr	w0, [x20]
	cmp	w0, w25
	bne	.L4445
	add	x0, x20, 61440
	ldr	w1, [x20, 4]
	ldr	w0, [x0, 4092]
	cmp	w0, w1
	bne	.L4445
	cmp	w0, w22
	bls	.L4445
	mov	w24, w21
	mov	w22, w0
.L4445:
	add	w21, w21, 1
	cmp	w21, 2
	bne	.L4446
	cbz	w22, .L4447
	mov	x2, x20
	mov	w1, 128
	lsl	w0, w24, 7
	bl	FlashBootVendorRead
	cmp	w0, 0
	csetm	w0, ne
.L4442:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldr	x25, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L4447:
	mov	w1, 0
	mov	x2, 65536
	mov	x0, x20
	bl	memset
	mov	w1, 22084
	mov	w0, 1
	movk	w1, 0x524b, lsl 16
	stp	w1, w0, [x20]
	add	x1, x20, 61440
	str	w0, [x1, 4092]
	mov	w0, -1032
	strh	w0, [x20, 14]
	mov	w0, 0
	b	.L4442
.L4448:
	mov	w0, -12
	b	.L4442
.L4449:
	mov	w0, -1
	b	.L4442
	.size	rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init
	.align	2
	.global	rk_ftl_vendor_read
	.type	rk_ftl_vendor_read, %function
rk_ftl_vendor_read:
	adrp	x3, .LANCHOR5+552
	ldr	x4, [x3, #:lo12:.LANCHOR5+552]
	cbz	x4, .L4457
	ldrh	w6, [x4, 10]
	add	x5, x4, 16
	mov	w3, 0
.L4454:
	cmp	w3, w6
	bcc	.L4456
.L4457:
	mov	w0, -1
	ret
.L4456:
	ldrh	w7, [x5], 8
	cmp	w7, w0
	bne	.L4455
	stp	x29, x30, [sp, -32]!
	add	x3, x4, w3, uxtw 3
	mov	x0, x1
	add	x29, sp, 0
	str	x19, [sp, 16]
	ldrh	w19, [x3, 20]
	ldrh	w1, [x3, 18]
	cmp	w19, w2
	csel	w19, w19, w2, ls
	add	x1, x1, 1024
	uxtw	x2, w19
	add	x1, x4, x1
	bl	memcpy
	mov	w0, w19
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L4455:
	add	w3, w3, 1
	b	.L4454
	.size	rk_ftl_vendor_read, .-rk_ftl_vendor_read
	.align	2
	.global	rk_ftl_vendor_write
	.type	rk_ftl_vendor_write, %function
rk_ftl_vendor_write:
	stp	x29, x30, [sp, -112]!
	adrp	x3, .LANCHOR5+552
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	ldr	x19, [x3, #:lo12:.LANCHOR5+552]
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	cbz	x19, .L4477
	add	w4, w2, 63
	ldrh	w3, [x19, 10]
	ldrh	w24, [x19, 8]
	mov	x28, x1
	mov	w26, w2
	and	w22, w4, -64
	add	x1, x19, 16
	mov	w20, 0
.L4464:
	cmp	w20, w3
	bcc	.L4472
	ldrh	w1, [x19, 14]
	cmp	w22, w1
	bhi	.L4477
	add	x3, x19, w3, uxth 3
	strh	w0, [x3, 16]
	and	w0, w22, 65535
	ldrh	w2, [x19, 12]
	strh	w2, [x3, 18]
	strh	w26, [x3, 20]
	add	w2, w2, w0
	sub	w0, w1, w0
	strh	w2, [x19, 12]
	strh	w0, [x19, 14]
	uxtw	x2, w26
	mov	x1, x28
	ldrh	w0, [x3, 18]
	add	x0, x0, 1024
	add	x0, x19, x0
	bl	memcpy
	ldrh	w0, [x19, 10]
	add	w0, w0, 1
	strh	w0, [x19, 10]
	b	.L4479
.L4472:
	ldrh	w6, [x1], 8
	cmp	w6, w0
	bne	.L4465
	uxtw	x23, w20
	add	x5, x19, 1024
	add	x21, x19, x23, lsl 3
	ldrh	w25, [x21, 20]
	add	w25, w25, 63
	and	w25, w25, -64
	cmp	w26, w25
	bls	.L4466
	ldrh	w0, [x19, 14]
	cmp	w22, w0
	bhi	.L4477
	add	x23, x23, 2
	ldrh	w21, [x21, 18]
	add	x23, x19, x23, lsl 3
	sub	w3, w3, #1
.L4467:
	cmp	w20, w3
	bcc	.L4468
	add	x20, x19, w20, uxtw 3
	and	w21, w21, 65535
	add	x0, x5, w21, uxth
	uxtw	x2, w26
	mov	x1, x28
	strh	w21, [x20, 18]
	strh	w6, [x20, 16]
	strh	w26, [x20, 20]
	bl	memcpy
	ldrh	w0, [x19, 14]
	and	w4, w22, 65535
	add	w21, w21, w4
	strh	w21, [x19, 12]
	sub	w0, w0, w4
	add	w25, w0, w25
	strh	w25, [x19, 14]
.L4479:
	ldr	w0, [x19, 4]
	add	x1, x19, 61440
	mov	x2, x19
	add	w0, w0, 1
	str	w0, [x19, 4]
	str	w0, [x1, 4092]
	mov	w1, 128
	ldrh	w0, [x19, 8]
	add	w0, w0, 1
	and	w0, w0, 65535
	cmp	w0, 1
	csel	w0, w0, wzr, ls
	strh	w0, [x19, 8]
	lsl	w0, w24, 7
	bl	FlashBootVendorWrite
	mov	w0, 0
.L4462:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L4468:
	add	w20, w20, 1
	stp	w3, w6, [x29, 96]
	add	x0, x19, w20, uxtw 3
	str	x5, [x29, 104]
	add	x23, x23, 8
	ldrh	w1, [x0, 16]
	strh	w1, [x23, -8]
	ldrh	w1, [x0, 20]
	strh	w1, [x23, -4]
	strh	w21, [x23, -6]
	ldrh	w27, [x0, 20]
	ldrh	w1, [x0, 18]
	add	x0, x5, w21, uxtw
	add	w27, w27, 63
	and	w27, w27, -64
	add	x1, x5, x1
	and	x2, x27, 131008
	bl	memcpy
	add	w21, w21, w27
	ldr	x5, [x29, 104]
	ldp	w3, w6, [x29, 96]
	b	.L4467
.L4466:
	ldrh	w0, [x21, 18]
	uxtw	x2, w26
	mov	x1, x28
	add	x0, x5, x0
	bl	memcpy
	strh	w26, [x21, 20]
	b	.L4479
.L4465:
	add	w20, w20, 1
	b	.L4464
.L4477:
	mov	w0, -1
	b	.L4462
	.size	rk_ftl_vendor_write, .-rk_ftl_vendor_write
	.align	2
	.global	rk_ftl_vendor_storage_ioctl
	.type	rk_ftl_vendor_storage_ioctl, %function
rk_ftl_vendor_storage_ioctl:
	stp	x29, x30, [sp, -48]!
	mov	w0, 9216
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x2
	str	x21, [sp, 32]
	mov	w21, w1
	bl	ftl_malloc
	cbz	x0, .L4488
	mov	w1, 30209
	mov	x19, x0
	movk	w1, 0x4004, lsl 16
	cmp	w21, w1
	beq	.L4483
	add	w1, w1, 1
	cmp	w21, w1
	beq	.L4484
.L4494:
	mov	x20, -14
	b	.L4482
.L4483:
	mov	x2, 8
	mov	x1, x20
	bl	rk_copy_from_user
	cbnz	x0, .L4494
	ldr	w1, [x19]
	mov	w0, 17745
	movk	w0, 0x5652, lsl 16
	cmp	w1, w0
	beq	.L4486
.L4487:
	mov	x20, -1
.L4482:
	mov	x0, x19
	bl	kfree
.L4480:
	mov	x0, x20
	ldr	x21, [sp, 32]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
.L4486:
	ldrh	w2, [x19, 6]
	add	x1, x19, 8
	ldrh	w0, [x19, 4]
	bl	rk_ftl_vendor_read
	cmn	w0, #1
	beq	.L4487
	strh	w0, [x19, 6]
	and	x0, x0, 65535
	add	x2, x0, 8
	mov	x1, x19
	mov	x0, x20
	bl	rk_copy_to_user
	cbnz	x0, .L4494
	mov	x20, 0
	b	.L4482
.L4484:
	mov	x2, 8
	mov	x1, x20
	bl	rk_copy_from_user
	cbnz	x0, .L4494
	ldr	w1, [x19]
	mov	w0, 17745
	movk	w0, 0x5652, lsl 16
	cmp	w1, w0
	bne	.L4487
	ldrh	w2, [x19, 6]
	cmp	w2, 4087
	bhi	.L4487
	add	w2, w2, 8
	mov	x1, x20
	sxtw	x2, w2
	mov	x0, x19
	bl	rk_copy_from_user
	cbnz	x0, .L4494
	ldrh	w2, [x19, 6]
	add	x1, x19, 8
	ldrh	w0, [x19, 4]
	bl	rk_ftl_vendor_write
	sxtw	x20, w0
	b	.L4482
.L4488:
	mov	x20, -1
	b	.L4480
	.size	rk_ftl_vendor_storage_ioctl, .-rk_ftl_vendor_storage_ioctl
	.global	SecureBootUnlockTryCount
	.global	SecureBootCheckOK
	.global	SecureBootEn
	.global	gpVendor1Info
	.global	gpVendor0Info
	.global	g_idb_buffer
	.global	gSnSectorData
	.global	gpDrmKeyInfo
	.global	gpBootConfig
	.global	ftl_dma32_buffer_size
	.global	ftl_dma32_buffer
	.global	gLoaderBootInfo
	.global	RK29_NANDC1_REG_BASE
	.global	RK29_NANDC_REG_BASE
	.global	gp_ftl_api
	.global	rk_zftl_enable
	.global	g_pm_spare
	.global	pm_first_write
	.global	pm_force_gc
	.global	pm_gc_enable
	.global	pm_last_load_ram_id
	.global	pm_last_update_ram_id
	.global	pm_ram_info
	.global	sblk_gc_write_completed_queue_head
	.global	sblk_read_completed_queue_head
	.global	sblk_write_completed_queue_head
	.global	sblk_queue_head
	.global	slc_cache_sblk
	.global	xlc_data_sblk
	.global	slc_data_sblk
	.global	free_mix_sblk
	.global	free_xlc_sblk
	.global	free_slc_sblk
	.global	gp_data_xlc_data_head
	.global	gp_data_slc_data_head
	.global	gp_data_slc_cache_head
	.global	gp_free_mix_head
	.global	gp_free_xlc_head
	.global	gp_free_slc_head
	.global	gp_sblk_list_tbl
	.global	zftl_print_list_count
	.global	ftl_ext_info_first_write
	.global	ftl_sys_info_first_write
	.global	ftl_low_format_cur_blk
	.global	ftl_power_lost_flag
	.global	ftl_vpn_update_count
	.global	ftl_sblk_update_list_offset
	.global	ftl_sblk_update_list
	.global	ftl_sblk_vpn_update_id
	.global	ftl_sblk_lpa_tbl
	.global	ftl_sblk_vpn
	.global	gp_ftl_ext_info
	.global	gp_ftl_info
	.global	gp_blk_info
	.global	ftl_tmp_buffer
	.global	ftl_ext_info_data_buffer
	.global	ftl_info_data_buffer
	.global	ftl_tmp_spare
	.global	ftl_info_spare
	.global	g_ftl_info_blk
	.global	tlc_b05a_prog_tbl
	.global	tlc_prog_order
	.global	gc_des_ppa_tbl
	.global	gc_valid_page_ppa
	.global	gc_page_buf_id
	.global	gc_pre_ppa_tbl
	.global	gc_lpa_tbl
	.global	g_gc_info
	.global	gc_xlc_search_index
	.global	gc_xlc_data_index
	.global	gc_slc_cache_index
	.global	gc_slc_data_index
	.global	gc_free_slc_sblk_th
	.global	gc_slc_mode_vpn_th
	.global	gc_slc_mode_slc_vpn_th
	.global	gc_slc_mode_tlc_vpn_th
	.global	gc_tlc_mode_tlc_vpn_th
	.global	gc_tlc_mode_slc_vpn_th
	.global	gc_state
	.global	gc_mode
	.global	p_read_ahead_ext_buf
	.global	discard_sector_count
	.global	read_ahead_lpa
	.global	_ftl_gc_tag_page_num
	.global	read_buf_count
	.global	read_buf_head
	.global	write_commit_count
	.global	write_commit_head
	.global	write_buf_count
	.global	write_buf_head
	.global	ftl_flush_jiffies
	.global	lpa_hash
	.global	lpa_hash_index
	.global	_c_slc_to_xlc_ec_ratio
	.global	_c_mix_max_xlc_ec_count
	.global	_c_mix_max_slc_ec_count
	.global	_c_swl_xlc_gc_th
	.global	_c_swl_slc_gc_th
	.global	_gc_after_discard_en
	.global	_last_write_time
	.global	_last_read_time
	.global	_min_slc_super_block
	.global	_max_xlc_super_block
	.global	_c_max_pm_sblk
	.global	_c_ftl_pm_page_num
	.global	_c_totle_log_page
	.global	_c_totle_data_density
	.global	_c_user_data_density
	.global	_c_totle_phy_density
	.global	_c_ftl_block_addr_log2
	.global	_c_ftl_block_align_addr
	.global	_c_ftl_byte_pre_page
	.global	_c_ftl_nand_blks_per_die
	.global	_c_ftl_page_pre_slc_blk
	.global	_c_ftl_page_pre_blk
	.global	_c_ftl_blk_pre_plane
	.global	_c_ftl_nand_planes_num
	.global	_c_ftl_planes_per_die
	.global	_c_ftl_sec_per_page
	.global	_c_ftl_nand_die_num
	.global	_c_ftl_nand_type
	.global	zftl_debug
	.global	g_flash_blk_info
	.global	gp_flash_info
	.global	p_free_buf_head
	.global	free_buf_count
	.global	g_buf
	.global	nandc_ecc_sts
	.global	g_nandc_v6_master_info
	.global	nandc_randomizer_en
	.global	nandc_hw_seed
	.global	fill_spare_size
	.global	g_nandc_ecc_bits
	.global	g_nandc_tran_timeout
	.global	g_nandc_ver
	.global	gp_nandc
	.global	hy_f26_ref_value
	.global	sd15_tlc_rr
	.global	sd15_slc_rr
	.global	g_nand_para_info
	.global	gp_nand_para_info
	.global	g_nand_opt_para
	.global	g_msb_page_tbl
	.global	g_lsb_page_tbl
	.global	g_die_addr
	.global	g_die_cs_idx
	.global	IDByte
	.global	flash_read_retry
	.global	_c_ftl_cs_bits
	.global	g_maxRetryCount
	.global	g_maxRegNum
	.global	g_retryMode
	.global	g_flash_toggle_mode_en
	.global	g_flash_ymtc_3d_tlc_flag
	.global	g_flash_micron_3d_tlc_b16a
	.global	g_flash_micron_3d_tlc_b05a
	.global	g_flash_micron_3d_tlc_flag
	.global	g_flash_3d_mlc_flag
	.global	g_flash_3d_tlc_flag
	.global	g_flash_multi_page_prog_en
	.global	g_flash_multi_page_read_en
	.global	g_flash_interface_mode
	.global	g_idb_ecc_bits
	.global	g_idb_slc_mode_enable
	.global	g_one_pass_program
	.global	g_slc_mode_addr2
	.global	g_slc_mode_enable
	.global	g_flash_cur_mode
	.global	g_flash_six_addr
	.global	g_flash_slc_mode
	.global	g_slc_page_num
	.global	g_totle_phy_block
	.global	g_block_align_addr
	.global	g_flash_reversd_blks
	.global	g_nand_max_die
	.global	g_flash_tmp_spare_buffer
	.global	g_flash_tmp_page_buffer
	.global	g_flash_sys_spare_buffer
	.global	g_flash_spare_buffer
	.global	g_flash_page_buffer
	.data
	.align	3
	.set	.LANCHOR2,. + 0
	.type	zftl_debug, %object
	.size	zftl_debug, 4
zftl_debug:
	.word	17476
	.zero	4
	.type	g_nand_para_info, %object
	.size	g_nand_para_info, 32
g_nand_para_info:
	.byte	6
	.byte	-104
	.byte	58
	.byte	-104
	.byte	-77
	.byte	118
	.byte	114
	.byte	1
	.byte	1
	.byte	32
	.hword	768
	.byte	3
	.byte	2
	.hword	758
	.hword	5593
	.byte	0
	.byte	37
	.byte	60
	.byte	32
	.byte	2
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.type	sd15_tlc_rr, %object
	.size	sd15_tlc_rr, 329
sd15_tlc_rr:
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	-8
	.byte	0
	.byte	16
	.byte	8
	.byte	8
	.byte	0
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	-16
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	-24
	.byte	0
	.byte	0
	.byte	0
	.byte	-8
	.byte	-16
	.byte	-32
	.byte	0
	.byte	8
	.byte	-8
	.byte	8
	.byte	8
	.byte	0
	.byte	0
	.byte	-16
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	0
	.byte	-16
	.byte	-24
	.byte	-16
	.byte	8
	.byte	8
	.byte	-8
	.byte	-16
	.byte	-16
	.byte	0
	.byte	8
	.byte	8
	.byte	8
	.byte	8
	.byte	-8
	.byte	-8
	.byte	-24
	.byte	0
	.byte	-16
	.byte	0
	.byte	-8
	.byte	-16
	.byte	-8
	.byte	-8
	.byte	0
	.byte	8
	.byte	0
	.byte	0
	.byte	-8
	.byte	0
	.byte	-24
	.byte	-8
	.byte	0
	.byte	0
	.byte	-8
	.byte	-24
	.byte	-8
	.byte	8
	.byte	-8
	.byte	0
	.byte	-8
	.byte	8
	.byte	-16
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	8
	.byte	8
	.byte	0
	.byte	0
	.byte	-8
	.byte	-8
	.byte	8
	.byte	-8
	.byte	-8
	.byte	0
	.byte	0
	.byte	-8
	.byte	-16
	.byte	-16
	.byte	-8
	.byte	0
	.byte	0
	.byte	-8
	.byte	0
	.byte	-16
	.byte	8
	.byte	0
	.byte	8
	.byte	0
	.byte	-16
	.byte	-8
	.byte	-16
	.byte	16
	.byte	0
	.byte	16
	.byte	0
	.byte	-8
	.byte	8
	.byte	0
	.byte	-24
	.byte	0
	.byte	-16
	.byte	-8
	.byte	-16
	.byte	-16
	.byte	-16
	.byte	-16
	.byte	0
	.byte	8
	.byte	-8
	.byte	-24
	.byte	0
	.byte	8
	.byte	8
	.byte	16
	.byte	16
	.byte	0
	.byte	8
	.byte	-8
	.byte	8
	.byte	16
	.byte	-8
	.byte	24
	.byte	0
	.byte	8
	.byte	-4
	.byte	0
	.byte	16
	.byte	8
	.byte	24
	.byte	8
	.byte	0
	.byte	-4
	.byte	-8
	.byte	24
	.byte	16
	.byte	16
	.byte	0
	.byte	0
	.byte	0
	.byte	-16
	.byte	0
	.byte	0
	.byte	4
	.byte	0
	.byte	-4
	.byte	-4
	.byte	-4
	.byte	8
	.byte	8
	.byte	16
	.byte	0
	.byte	16
	.byte	-4
	.byte	16
	.byte	0
	.byte	16
	.byte	8
	.byte	0
	.byte	16
	.byte	-4
	.byte	16
	.byte	-8
	.byte	0
	.byte	0
	.byte	-8
	.byte	16
	.byte	-4
	.byte	16
	.byte	-16
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	8
	.byte	-4
	.byte	8
	.byte	-24
	.byte	4
	.byte	-16
	.byte	0
	.byte	8
	.byte	0
	.byte	0
	.byte	-24
	.byte	8
	.byte	-16
	.byte	8
	.byte	0
	.byte	8
	.byte	-24
	.byte	-32
	.byte	16
	.byte	-24
	.byte	8
	.byte	-8
	.byte	8
	.byte	-24
	.byte	-32
	.byte	8
	.byte	0
	.byte	16
	.byte	0
	.byte	16
	.byte	0
	.byte	-32
	.byte	4
	.byte	0
	.byte	-8
	.byte	-16
	.byte	-8
	.byte	0
	.byte	-32
	.byte	4
	.byte	0
	.byte	8
	.byte	-24
	.byte	8
	.byte	0
	.byte	-32
	.byte	4
	.byte	0
	.byte	0
	.byte	-32
	.byte	-4
	.byte	0
	.byte	-24
	.byte	4
	.byte	0
	.byte	16
	.byte	-24
	.byte	16
	.byte	0
	.byte	-24
	.byte	-4
	.byte	0
	.byte	8
	.byte	-32
	.byte	8
	.byte	0
	.byte	0
	.byte	-4
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	-4
	.byte	0
	.byte	0
	.byte	0
	.byte	-4
	.byte	0
	.byte	0
	.byte	-4
	.byte	0
	.byte	-8
	.byte	0
	.byte	-8
	.byte	0
	.byte	0
	.byte	-4
	.byte	0
	.byte	-16
	.byte	0
	.byte	-16
	.byte	0
	.byte	0
	.byte	-16
	.byte	0
	.byte	-16
	.byte	0
	.byte	-16
	.byte	0
	.byte	0
	.byte	-8
	.byte	0
	.byte	-16
	.byte	0
	.byte	-16
	.byte	0
	.byte	0
	.byte	-16
	.byte	0
	.byte	-24
	.byte	0
	.byte	-24
	.byte	0
	.byte	0
	.byte	-24
	.byte	0
	.byte	-24
	.byte	0
	.byte	-24
	.byte	0
	.byte	0
	.byte	-24
	.byte	0
	.byte	-16
	.byte	0
	.byte	-16
	.byte	0
	.byte	0
	.byte	-24
	.byte	0
	.byte	-32
	.byte	0
	.byte	-32
	.byte	0
	.zero	7
	.type	sd15_slc_rr, %object
	.size	sd15_slc_rr, 25
sd15_slc_rr:
	.byte	0
	.byte	8
	.byte	-8
	.byte	16
	.byte	-16
	.byte	24
	.byte	-24
	.byte	32
	.byte	-32
	.byte	32
	.byte	-40
	.byte	48
	.byte	-48
	.byte	56
	.byte	-56
	.byte	64
	.byte	-64
	.byte	72
	.byte	-72
	.byte	80
	.byte	-80
	.byte	88
	.byte	96
	.byte	104
	.byte	112
	.zero	7
	.type	hy_f26_ref_value, %object
	.size	hy_f26_ref_value, 28
hy_f26_ref_value:
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	10
	.byte	6
	.byte	0
	.byte	-3
	.byte	-7
	.byte	-8
	.byte	0
	.byte	-6
	.byte	-13
	.byte	-15
	.byte	0
	.byte	-11
	.byte	-20
	.byte	-23
	.byte	0
	.byte	0
	.byte	-26
	.byte	-30
	.byte	0
	.byte	0
	.byte	-32
	.byte	-37
	.zero	4
	.type	zftl_nand_flash_para_tbl, %object
	.size	zftl_nand_flash_para_tbl, 1568
zftl_nand_flash_para_tbl:
	.byte	6
	.byte	-104
	.byte	58
	.byte	-104
	.byte	-77
	.byte	118
	.byte	114
	.byte	1
	.byte	1
	.byte	32
	.hword	768
	.byte	3
	.byte	2
	.hword	758
	.hword	5593
	.byte	0
	.byte	37
	.byte	60
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	60
	.byte	-104
	.byte	-77
	.byte	118
	.byte	114
	.byte	1
	.byte	1
	.byte	32
	.hword	768
	.byte	3
	.byte	2
	.hword	1478
	.hword	5593
	.byte	0
	.byte	37
	.byte	60
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	58
	.byte	-104
	.byte	-93
	.byte	118
	.byte	81
	.byte	1
	.byte	1
	.byte	32
	.hword	384
	.byte	3
	.byte	2
	.hword	1446
	.hword	1497
	.byte	0
	.byte	36
	.byte	60
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	81
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1074
	.hword	17881
	.byte	2
	.byte	35
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-34
	.byte	-124
	.byte	-109
	.byte	114
	.byte	87
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	2092
	.hword	17857
	.byte	2
	.byte	33
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	58
	.byte	-108
	.byte	-109
	.byte	118
	.byte	81
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	2106
	.hword	17881
	.byte	2
	.byte	35
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-41
	.byte	-124
	.byte	-109
	.byte	114
	.byte	81
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	1056
	.hword	17857
	.byte	2
	.byte	35
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-41
	.byte	-124
	.byte	-109
	.byte	114
	.byte	80
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	1060
	.hword	17857
	.byte	2
	.byte	34
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	80
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1066
	.hword	17881
	.byte	2
	.byte	34
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-41
	.byte	-124
	.byte	-109
	.byte	114
	.byte	87
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	1060
	.hword	17857
	.byte	2
	.byte	33
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	87
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1058
	.hword	17881
	.byte	2
	.byte	33
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	-47
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1074
	.hword	17881
	.byte	2
	.byte	35
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	69
	.byte	58
	.byte	-108
	.byte	-109
	.byte	118
	.byte	81
	.byte	8
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	2106
	.hword	17881
	.byte	2
	.byte	68
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	69
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	81
	.byte	8
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1074
	.hword	17881
	.byte	2
	.byte	68
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	69
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	87
	.byte	8
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1058
	.hword	17881
	.byte	2
	.byte	66
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	69
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	80
	.byte	8
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1066
	.hword	17881
	.byte	2
	.byte	67
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	69
	.byte	-41
	.byte	-124
	.byte	-109
	.byte	114
	.byte	87
	.byte	8
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	1060
	.hword	17857
	.byte	2
	.byte	66
	.byte	40
	.byte	32
	.byte	2
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	100
	.byte	68
	.byte	50
	.byte	-91
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	1048
	.hword	9671
	.byte	5
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	512
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	5
	.byte	44
	.byte	100
	.byte	100
	.byte	86
	.byte	-91
	.byte	0
	.byte	4
	.byte	1
	.byte	24
	.hword	512
	.byte	2
	.byte	2
	.hword	700
	.hword	479
	.byte	4
	.byte	18
	.byte	60
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	68
	.byte	68
	.byte	75
	.byte	-87
	.byte	0
	.byte	4
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	2
	.hword	1064
	.hword	479
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	256
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	100
	.byte	84
	.byte	-87
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	2
	.hword	1024
	.hword	479
	.byte	4
	.byte	18
	.byte	60
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	0
	.byte	0
	.byte	0
	.byte	1
	.byte	5
	.byte	44
	.byte	100
	.byte	100
	.byte	84
	.byte	-92
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	1024
	.hword	455
	.byte	4
	.byte	18
	.byte	60
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	100
	.byte	68
	.byte	75
	.byte	-87
	.byte	0
	.byte	4
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	4
	.hword	1024
	.hword	449
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	256
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	100
	.byte	60
	.byte	-91
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	2
	.hword	1024
	.hword	479
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	68
	.byte	52
	.byte	-92
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	2184
	.hword	9671
	.byte	5
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	512
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	5
	.byte	44
	.byte	100
	.byte	100
	.byte	60
	.byte	-91
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	1044
	.hword	471
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	68
	.byte	50
	.byte	-86
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	2184
	.hword	9671
	.byte	5
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	512
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	-60
	.byte	52
	.byte	-86
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	2184
	.hword	9671
	.byte	5
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	512
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	68
	.byte	52
	.byte	-86
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	2184
	.hword	9671
	.byte	5
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	512
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	6
	.byte	-101
	.byte	73
	.byte	1
	.byte	0
	.byte	-101
	.byte	73
	.byte	9
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	2144
	.hword	-23097
	.byte	8
	.byte	21
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	8
	.byte	0
	.hword	256
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	100
	.byte	60
	.byte	-87
	.byte	4
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	2
	.hword	1024
	.hword	479
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	0
	.byte	0
	.byte	0
	.byte	1
	.byte	5
	.byte	44
	.byte	-124
	.byte	88
	.byte	50
	.byte	-95
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	768
	.byte	3
	.byte	1
	.hword	1440
	.hword	3527
	.byte	0
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	1024
	.byte	3
	.byte	0
	.byte	0
	.byte	2
	.byte	6
	.byte	44
	.byte	-92
	.byte	8
	.byte	50
	.byte	-95
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	2304
	.byte	3
	.byte	1
	.hword	1008
	.hword	3521
	.byte	0
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	4096
	.byte	3
	.byte	0
	.byte	0
	.byte	4
	.byte	6
	.byte	44
	.byte	-92
	.byte	100
	.byte	50
	.byte	-86
	.byte	4
	.byte	4
	.byte	1
	.byte	32
	.hword	1024
	.byte	2
	.byte	1
	.hword	2192
	.hword	9671
	.byte	10
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	1024
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	6
	.byte	-101
	.byte	-61
	.byte	72
	.byte	37
	.byte	16
	.byte	0
	.byte	9
	.byte	1
	.byte	32
	.hword	1152
	.byte	3
	.byte	2
	.hword	1006
	.hword	-27169
	.byte	13
	.byte	81
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	2048
	.byte	1
	.byte	-38
	.byte	-33
	.byte	24
	.byte	6
	.byte	-83
	.byte	-34
	.byte	20
	.byte	-85
	.byte	66
	.byte	74
	.byte	2
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1056
	.hword	455
	.byte	2
	.byte	6
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	2
	.byte	-65
	.byte	-66
	.byte	0
	.byte	6
	.byte	-83
	.byte	-34
	.byte	-108
	.byte	-21
	.byte	116
	.byte	68
	.byte	2
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1066
	.hword	473
	.byte	1
	.byte	7
	.byte	40
	.byte	32
	.byte	4
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-83
	.byte	-34
	.byte	20
	.byte	-89
	.byte	66
	.byte	74
	.byte	2
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1060
	.hword	473
	.byte	2
	.byte	5
	.byte	40
	.byte	32
	.byte	4
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	2
	.byte	-65
	.byte	-66
	.byte	0
	.byte	6
	.byte	-83
	.byte	-41
	.byte	-108
	.byte	-111
	.byte	96
	.byte	68
	.byte	2
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	2
	.hword	1046
	.hword	473
	.byte	1
	.byte	3
	.byte	40
	.byte	32
	.byte	4
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-83
	.byte	58
	.byte	20
	.byte	-85
	.byte	66
	.byte	74
	.byte	2
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	2092
	.hword	473
	.byte	2
	.byte	5
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-83
	.byte	-41
	.byte	20
	.byte	-98
	.byte	52
	.byte	74
	.byte	2
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	2
	.hword	1056
	.hword	473
	.byte	2
	.byte	5
	.byte	40
	.byte	32
	.byte	4
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-83
	.byte	58
	.byte	20
	.byte	3
	.byte	8
	.byte	80
	.byte	2
	.byte	1
	.byte	32
	.hword	388
	.byte	2
	.byte	2
	.hword	1362
	.hword	473
	.byte	9
	.byte	8
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	3
	.byte	0
	.hword	512
	.byte	0
	.byte	-65
	.byte	-66
	.byte	1
	.byte	5
	.byte	-119
	.byte	100
	.byte	100
	.byte	60
	.byte	-95
	.byte	0
	.byte	7
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	1024
	.hword	455
	.byte	4
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	-119
	.byte	-124
	.byte	100
	.byte	60
	.byte	-91
	.byte	0
	.byte	7
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	2
	.hword	1024
	.hword	455
	.byte	4
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-119
	.byte	100
	.byte	68
	.byte	75
	.byte	-87
	.byte	0
	.byte	7
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	4
	.hword	1024
	.hword	449
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-119
	.byte	-120
	.byte	36
	.byte	75
	.byte	-87
	.byte	-124
	.byte	7
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	4
	.hword	1024
	.hword	449
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-119
	.byte	-120
	.byte	4
	.byte	75
	.byte	-87
	.byte	0
	.byte	7
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	4
	.hword	1024
	.hword	449
	.byte	1
	.byte	0
	.byte	24
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-119
	.byte	-92
	.byte	8
	.byte	50
	.byte	-95
	.byte	0
	.byte	7
	.byte	1
	.byte	32
	.hword	2304
	.byte	3
	.byte	1
	.hword	1008
	.hword	3521
	.byte	0
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	4096
	.byte	3
	.byte	0
	.byte	0
	.byte	4
	.byte	6
	.byte	-20
	.byte	-34
	.byte	-108
	.byte	-61
	.byte	-92
	.byte	-54
	.byte	0
	.byte	1
	.byte	32
	.hword	792
	.byte	2
	.byte	1
	.hword	688
	.hword	1217
	.byte	11
	.byte	50
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	1024
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.type	nand_opt_para, %object
	.size	nand_opt_para, 128
nand_opt_para:
	.byte	1
	.byte	0
	.byte	49
	.byte	63
	.byte	0
	.byte	49
	.byte	-128
	.byte	21
	.byte	0
	.byte	50
	.byte	17
	.byte	-128
	.byte	112
	.byte	120
	.byte	120
	.byte	3
	.byte	1
	.byte	0
	.zero	14
	.byte	2
	.byte	0
	.byte	49
	.byte	63
	.byte	0
	.byte	49
	.byte	-128
	.byte	21
	.byte	0
	.byte	0
	.byte	17
	.byte	-127
	.byte	112
	.byte	-15
	.byte	-14
	.byte	0
	.byte	0
	.byte	0
	.zero	14
	.byte	3
	.byte	0
	.byte	49
	.byte	63
	.byte	0
	.byte	49
	.byte	-128
	.byte	21
	.byte	96
	.byte	96
	.byte	17
	.byte	-127
	.byte	112
	.byte	-15
	.byte	-14
	.byte	0
	.byte	0
	.byte	0
	.zero	14
	.byte	4
	.byte	0
	.byte	49
	.byte	63
	.byte	0
	.byte	49
	.byte	-128
	.byte	21
	.byte	96
	.byte	96
	.byte	17
	.byte	-127
	.byte	112
	.byte	112
	.byte	112
	.byte	0
	.byte	0
	.byte	0
	.zero	14
	.type	tlc_b05a_prog_tbl, %object
	.size	tlc_b05a_prog_tbl, 1536
tlc_b05a_prog_tbl:
	.hword	0
	.hword	0
	.hword	0
	.hword	0
	.hword	0
	.hword	0
	.hword	0
	.hword	0
	.hword	9
	.hword	0
	.hword	11
	.hword	0
	.hword	13
	.hword	0
	.hword	15
	.hword	0
	.hword	17
	.hword	0
	.hword	19
	.hword	0
	.hword	21
	.hword	0
	.hword	23
	.hword	0
	.hword	25
	.hword	0
	.hword	27
	.hword	0
	.hword	29
	.hword	0
	.hword	31
	.hword	0
	.hword	33
	.hword	0
	.hword	35
	.hword	0
	.hword	37
	.hword	0
	.hword	39
	.hword	0
	.hword	41
	.hword	0
	.hword	43
	.hword	0
	.hword	45
	.hword	0
	.hword	47
	.hword	0
	.hword	49
	.hword	0
	.hword	51
	.hword	0
	.hword	53
	.hword	0
	.hword	55
	.hword	0
	.hword	25
	.hword	58
	.hword	0
	.hword	27
	.hword	61
	.hword	0
	.hword	29
	.hword	64
	.hword	0
	.hword	31
	.hword	67
	.hword	0
	.hword	33
	.hword	70
	.hword	0
	.hword	35
	.hword	73
	.hword	0
	.hword	37
	.hword	76
	.hword	0
	.hword	39
	.hword	79
	.hword	0
	.hword	41
	.hword	82
	.hword	0
	.hword	43
	.hword	85
	.hword	0
	.hword	45
	.hword	88
	.hword	0
	.hword	47
	.hword	91
	.hword	0
	.hword	49
	.hword	94
	.hword	0
	.hword	51
	.hword	97
	.hword	0
	.hword	53
	.hword	100
	.hword	0
	.hword	55
	.hword	103
	.hword	0
	.hword	58
	.hword	106
	.hword	0
	.hword	61
	.hword	109
	.hword	0
	.hword	64
	.hword	112
	.hword	0
	.hword	67
	.hword	115
	.hword	0
	.hword	70
	.hword	118
	.hword	0
	.hword	73
	.hword	121
	.hword	0
	.hword	76
	.hword	124
	.hword	0
	.hword	79
	.hword	127
	.hword	0
	.hword	82
	.hword	130
	.hword	0
	.hword	85
	.hword	133
	.hword	0
	.hword	88
	.hword	136
	.hword	0
	.hword	91
	.hword	139
	.hword	0
	.hword	94
	.hword	142
	.hword	0
	.hword	97
	.hword	145
	.hword	0
	.hword	100
	.hword	148
	.hword	0
	.hword	103
	.hword	151
	.hword	0
	.hword	106
	.hword	154
	.hword	0
	.hword	109
	.hword	157
	.hword	0
	.hword	112
	.hword	160
	.hword	0
	.hword	115
	.hword	163
	.hword	0
	.hword	118
	.hword	166
	.hword	0
	.hword	121
	.hword	169
	.hword	0
	.hword	124
	.hword	172
	.hword	0
	.hword	127
	.hword	175
	.hword	0
	.hword	130
	.hword	178
	.hword	0
	.hword	133
	.hword	181
	.hword	0
	.hword	136
	.hword	184
	.hword	0
	.hword	139
	.hword	187
	.hword	0
	.hword	142
	.hword	190
	.hword	0
	.hword	145
	.hword	193
	.hword	0
	.hword	148
	.hword	196
	.hword	0
	.hword	151
	.hword	199
	.hword	0
	.hword	154
	.hword	202
	.hword	0
	.hword	157
	.hword	205
	.hword	0
	.hword	160
	.hword	208
	.hword	0
	.hword	163
	.hword	211
	.hword	0
	.hword	166
	.hword	214
	.hword	0
	.hword	169
	.hword	217
	.hword	0
	.hword	172
	.hword	220
	.hword	0
	.hword	175
	.hword	223
	.hword	0
	.hword	178
	.hword	226
	.hword	0
	.hword	181
	.hword	229
	.hword	0
	.hword	184
	.hword	232
	.hword	0
	.hword	187
	.hword	235
	.hword	0
	.hword	190
	.hword	238
	.hword	0
	.hword	193
	.hword	241
	.hword	0
	.hword	196
	.hword	244
	.hword	0
	.hword	199
	.hword	247
	.hword	0
	.hword	202
	.hword	250
	.hword	0
	.hword	205
	.hword	253
	.hword	0
	.hword	208
	.hword	256
	.hword	0
	.hword	211
	.hword	259
	.hword	0
	.hword	214
	.hword	262
	.hword	0
	.hword	217
	.hword	265
	.hword	0
	.hword	220
	.hword	268
	.hword	0
	.hword	223
	.hword	271
	.hword	0
	.hword	226
	.hword	274
	.hword	0
	.hword	229
	.hword	277
	.hword	0
	.hword	232
	.hword	280
	.hword	0
	.hword	235
	.hword	283
	.hword	0
	.hword	238
	.hword	286
	.hword	0
	.hword	241
	.hword	289
	.hword	0
	.hword	244
	.hword	292
	.hword	0
	.hword	247
	.hword	295
	.hword	0
	.hword	250
	.hword	298
	.hword	0
	.hword	253
	.hword	301
	.hword	0
	.hword	256
	.hword	304
	.hword	0
	.hword	259
	.hword	307
	.hword	0
	.hword	262
	.hword	310
	.hword	0
	.hword	265
	.hword	313
	.hword	0
	.hword	268
	.hword	316
	.hword	0
	.hword	271
	.hword	319
	.hword	0
	.hword	274
	.hword	322
	.hword	0
	.hword	277
	.hword	325
	.hword	0
	.hword	280
	.hword	328
	.hword	0
	.hword	283
	.hword	331
	.hword	0
	.hword	286
	.hword	334
	.hword	0
	.hword	289
	.hword	337
	.hword	0
	.hword	292
	.hword	340
	.hword	0
	.hword	295
	.hword	343
	.hword	0
	.hword	298
	.hword	346
	.hword	0
	.hword	301
	.hword	349
	.hword	0
	.hword	304
	.hword	352
	.hword	0
	.hword	307
	.hword	355
	.hword	0
	.hword	310
	.hword	358
	.hword	0
	.hword	313
	.hword	361
	.hword	0
	.hword	316
	.hword	364
	.hword	0
	.hword	319
	.hword	367
	.hword	0
	.hword	322
	.hword	370
	.hword	0
	.hword	325
	.hword	373
	.hword	0
	.hword	328
	.hword	376
	.hword	0
	.hword	331
	.hword	379
	.hword	0
	.hword	334
	.hword	382
	.hword	0
	.hword	337
	.hword	385
	.hword	0
	.hword	340
	.hword	388
	.hword	0
	.hword	343
	.hword	391
	.hword	0
	.hword	346
	.hword	394
	.hword	0
	.hword	349
	.hword	397
	.hword	0
	.hword	352
	.hword	400
	.hword	0
	.hword	355
	.hword	403
	.hword	0
	.hword	358
	.hword	406
	.hword	0
	.hword	361
	.hword	409
	.hword	0
	.hword	364
	.hword	412
	.hword	0
	.hword	367
	.hword	415
	.hword	0
	.hword	370
	.hword	418
	.hword	0
	.hword	373
	.hword	421
	.hword	0
	.hword	376
	.hword	424
	.hword	0
	.hword	379
	.hword	427
	.hword	0
	.hword	382
	.hword	430
	.hword	0
	.hword	385
	.hword	433
	.hword	0
	.hword	388
	.hword	436
	.hword	0
	.hword	391
	.hword	439
	.hword	0
	.hword	394
	.hword	442
	.hword	0
	.hword	397
	.hword	445
	.hword	0
	.hword	400
	.hword	448
	.hword	0
	.hword	403
	.hword	451
	.hword	0
	.hword	406
	.hword	454
	.hword	0
	.hword	409
	.hword	457
	.hword	0
	.hword	412
	.hword	460
	.hword	0
	.hword	415
	.hword	463
	.hword	0
	.hword	418
	.hword	466
	.hword	0
	.hword	421
	.hword	469
	.hword	0
	.hword	424
	.hword	472
	.hword	0
	.hword	427
	.hword	475
	.hword	0
	.hword	430
	.hword	478
	.hword	0
	.hword	433
	.hword	481
	.hword	0
	.hword	436
	.hword	484
	.hword	0
	.hword	439
	.hword	487
	.hword	0
	.hword	442
	.hword	490
	.hword	0
	.hword	445
	.hword	493
	.hword	0
	.hword	448
	.hword	496
	.hword	0
	.hword	451
	.hword	499
	.hword	0
	.hword	454
	.hword	502
	.hword	0
	.hword	457
	.hword	505
	.hword	0
	.hword	460
	.hword	508
	.hword	0
	.hword	463
	.hword	511
	.hword	0
	.hword	466
	.hword	514
	.hword	0
	.hword	469
	.hword	517
	.hword	0
	.hword	472
	.hword	520
	.hword	0
	.hword	475
	.hword	523
	.hword	0
	.hword	478
	.hword	526
	.hword	0
	.hword	481
	.hword	529
	.hword	0
	.hword	484
	.hword	532
	.hword	0
	.hword	487
	.hword	535
	.hword	0
	.hword	490
	.hword	538
	.hword	0
	.hword	493
	.hword	541
	.hword	0
	.hword	496
	.hword	544
	.hword	0
	.hword	499
	.hword	547
	.hword	0
	.hword	502
	.hword	550
	.hword	0
	.hword	505
	.hword	553
	.hword	0
	.hword	508
	.hword	556
	.hword	0
	.hword	511
	.hword	559
	.hword	0
	.hword	514
	.hword	562
	.hword	0
	.hword	517
	.hword	565
	.hword	0
	.hword	520
	.hword	568
	.hword	0
	.hword	523
	.hword	571
	.hword	0
	.hword	526
	.hword	574
	.hword	0
	.hword	529
	.hword	577
	.hword	0
	.hword	532
	.hword	580
	.hword	0
	.hword	535
	.hword	583
	.hword	0
	.hword	538
	.hword	586
	.hword	0
	.hword	541
	.hword	589
	.hword	0
	.hword	544
	.hword	592
	.hword	0
	.hword	547
	.hword	595
	.hword	0
	.hword	550
	.hword	598
	.hword	0
	.hword	553
	.hword	601
	.hword	0
	.hword	556
	.hword	604
	.hword	0
	.hword	559
	.hword	607
	.hword	0
	.hword	562
	.hword	610
	.hword	0
	.hword	565
	.hword	613
	.hword	0
	.hword	568
	.hword	616
	.hword	0
	.hword	571
	.hword	619
	.hword	0
	.hword	574
	.hword	622
	.hword	0
	.hword	577
	.hword	625
	.hword	0
	.hword	580
	.hword	628
	.hword	0
	.hword	583
	.hword	631
	.hword	0
	.hword	586
	.hword	634
	.hword	0
	.hword	589
	.hword	637
	.hword	0
	.hword	592
	.hword	640
	.hword	0
	.hword	595
	.hword	643
	.hword	0
	.hword	598
	.hword	646
	.hword	0
	.hword	601
	.hword	649
	.hword	0
	.hword	604
	.hword	652
	.hword	0
	.hword	607
	.hword	655
	.hword	0
	.hword	610
	.hword	658
	.hword	0
	.hword	613
	.hword	661
	.hword	0
	.hword	616
	.hword	664
	.hword	0
	.hword	619
	.hword	667
	.hword	0
	.hword	622
	.hword	670
	.hword	0
	.hword	625
	.hword	673
	.hword	0
	.hword	628
	.hword	676
	.hword	0
	.hword	631
	.hword	679
	.hword	0
	.hword	634
	.hword	682
	.hword	0
	.hword	637
	.hword	685
	.hword	0
	.hword	640
	.hword	688
	.hword	0
	.hword	643
	.hword	691
	.hword	0
	.hword	646
	.hword	694
	.hword	0
	.hword	649
	.hword	697
	.hword	0
	.hword	652
	.hword	700
	.hword	0
	.hword	655
	.hword	703
	.hword	0
	.hword	658
	.hword	706
	.hword	0
	.hword	661
	.hword	709
	.hword	0
	.hword	664
	.hword	712
	.hword	0
	.hword	667
	.hword	715
	.hword	0
	.hword	670
	.hword	718
	.hword	0
	.hword	673
	.hword	721
	.hword	0
	.hword	676
	.hword	724
	.hword	0
	.hword	679
	.hword	727
	.hword	0
	.hword	682
	.hword	730
	.hword	0
	.hword	685
	.hword	733
	.hword	0
	.hword	688
	.hword	736
	.hword	0
	.hword	691
	.hword	739
	.hword	0
	.hword	694
	.hword	742
	.hword	0
	.hword	697
	.hword	745
	.hword	0
	.hword	700
	.hword	748
	.hword	0
	.hword	703
	.hword	751
	.hword	0
	.hword	706
	.hword	0
	.hword	709
	.hword	0
	.hword	712
	.hword	0
	.hword	715
	.hword	0
	.hword	718
	.hword	0
	.hword	721
	.hword	0
	.hword	724
	.hword	0
	.hword	727
	.hword	0
	.type	tlc_prog_order, %object
	.size	tlc_prog_order, 768
tlc_prog_order:
	.hword	1
	.hword	9
	.hword	2
	.hword	17
	.hword	10
	.hword	3
	.hword	25
	.hword	18
	.hword	11
	.hword	33
	.hword	26
	.hword	19
	.hword	41
	.hword	34
	.hword	27
	.hword	49
	.hword	42
	.hword	35
	.hword	57
	.hword	50
	.hword	43
	.hword	65
	.hword	58
	.hword	51
	.hword	73
	.hword	66
	.hword	59
	.hword	81
	.hword	74
	.hword	67
	.hword	89
	.hword	82
	.hword	75
	.hword	97
	.hword	90
	.hword	83
	.hword	105
	.hword	98
	.hword	91
	.hword	113
	.hword	106
	.hword	99
	.hword	121
	.hword	114
	.hword	107
	.hword	129
	.hword	122
	.hword	115
	.hword	137
	.hword	130
	.hword	123
	.hword	145
	.hword	138
	.hword	131
	.hword	153
	.hword	146
	.hword	139
	.hword	161
	.hword	154
	.hword	147
	.hword	169
	.hword	162
	.hword	155
	.hword	177
	.hword	170
	.hword	163
	.hword	185
	.hword	178
	.hword	171
	.hword	193
	.hword	186
	.hword	179
	.hword	201
	.hword	194
	.hword	187
	.hword	209
	.hword	202
	.hword	195
	.hword	217
	.hword	210
	.hword	203
	.hword	225
	.hword	218
	.hword	211
	.hword	233
	.hword	226
	.hword	219
	.hword	241
	.hword	234
	.hword	227
	.hword	249
	.hword	242
	.hword	235
	.hword	257
	.hword	250
	.hword	243
	.hword	265
	.hword	258
	.hword	251
	.hword	273
	.hword	266
	.hword	259
	.hword	281
	.hword	274
	.hword	267
	.hword	289
	.hword	282
	.hword	275
	.hword	297
	.hword	290
	.hword	283
	.hword	305
	.hword	298
	.hword	291
	.hword	313
	.hword	306
	.hword	299
	.hword	321
	.hword	314
	.hword	307
	.hword	329
	.hword	322
	.hword	315
	.hword	337
	.hword	330
	.hword	323
	.hword	345
	.hword	338
	.hword	331
	.hword	353
	.hword	346
	.hword	339
	.hword	361
	.hword	354
	.hword	347
	.hword	369
	.hword	362
	.hword	355
	.hword	377
	.hword	370
	.hword	363
	.hword	385
	.hword	378
	.hword	371
	.hword	393
	.hword	386
	.hword	379
	.hword	401
	.hword	394
	.hword	387
	.hword	409
	.hword	402
	.hword	395
	.hword	417
	.hword	410
	.hword	403
	.hword	425
	.hword	418
	.hword	411
	.hword	433
	.hword	426
	.hword	419
	.hword	441
	.hword	434
	.hword	427
	.hword	449
	.hword	442
	.hword	435
	.hword	457
	.hword	450
	.hword	443
	.hword	465
	.hword	458
	.hword	451
	.hword	473
	.hword	466
	.hword	459
	.hword	481
	.hword	474
	.hword	467
	.hword	489
	.hword	482
	.hword	475
	.hword	497
	.hword	490
	.hword	483
	.hword	505
	.hword	498
	.hword	491
	.hword	513
	.hword	506
	.hword	499
	.hword	521
	.hword	514
	.hword	507
	.hword	529
	.hword	522
	.hword	515
	.hword	537
	.hword	530
	.hword	523
	.hword	545
	.hword	538
	.hword	531
	.hword	553
	.hword	546
	.hword	539
	.hword	561
	.hword	554
	.hword	547
	.hword	569
	.hword	562
	.hword	555
	.hword	577
	.hword	570
	.hword	563
	.hword	585
	.hword	578
	.hword	571
	.hword	593
	.hword	586
	.hword	579
	.hword	601
	.hword	594
	.hword	587
	.hword	609
	.hword	602
	.hword	595
	.hword	617
	.hword	610
	.hword	603
	.hword	625
	.hword	618
	.hword	611
	.hword	633
	.hword	626
	.hword	619
	.hword	641
	.hword	634
	.hword	627
	.hword	649
	.hword	642
	.hword	635
	.hword	657
	.hword	650
	.hword	643
	.hword	665
	.hword	658
	.hword	651
	.hword	673
	.hword	666
	.hword	659
	.hword	681
	.hword	674
	.hword	667
	.hword	689
	.hword	682
	.hword	675
	.hword	697
	.hword	690
	.hword	683
	.hword	705
	.hword	698
	.hword	691
	.hword	713
	.hword	706
	.hword	699
	.hword	721
	.hword	714
	.hword	707
	.hword	729
	.hword	722
	.hword	715
	.hword	737
	.hword	730
	.hword	723
	.hword	745
	.hword	738
	.hword	731
	.hword	753
	.hword	746
	.hword	739
	.hword	761
	.hword	754
	.hword	747
	.hword	769
	.hword	762
	.hword	755
	.hword	777
	.hword	770
	.hword	763
	.hword	785
	.hword	778
	.hword	771
	.hword	793
	.hword	786
	.hword	779
	.hword	801
	.hword	794
	.hword	787
	.hword	809
	.hword	802
	.hword	795
	.hword	817
	.hword	810
	.hword	803
	.hword	825
	.hword	818
	.hword	811
	.hword	833
	.hword	826
	.hword	819
	.hword	841
	.hword	834
	.hword	827
	.hword	849
	.hword	842
	.hword	835
	.hword	857
	.hword	850
	.hword	843
	.hword	865
	.hword	858
	.hword	851
	.hword	873
	.hword	866
	.hword	859
	.hword	881
	.hword	874
	.hword	867
	.hword	889
	.hword	882
	.hword	875
	.hword	897
	.hword	890
	.hword	883
	.hword	905
	.hword	898
	.hword	891
	.hword	913
	.hword	906
	.hword	899
	.hword	921
	.hword	914
	.hword	907
	.hword	929
	.hword	922
	.hword	915
	.hword	937
	.hword	930
	.hword	923
	.hword	945
	.hword	938
	.hword	931
	.hword	953
	.hword	946
	.hword	939
	.hword	961
	.hword	954
	.hword	947
	.hword	969
	.hword	962
	.hword	955
	.hword	977
	.hword	970
	.hword	963
	.hword	985
	.hword	978
	.hword	971
	.hword	993
	.hword	986
	.hword	979
	.hword	1001
	.hword	994
	.hword	987
	.hword	1009
	.hword	1002
	.hword	995
	.hword	1017
	.hword	1010
	.hword	1003
	.hword	1018
	.hword	1011
	.hword	1019
	.bss
	.align	6
	.set	.LANCHOR0,. + 0
	.set	.LANCHOR3,. + 4352
	.set	.LANCHOR5,. + 8704
	.type	g_flash_slc_mode, %object
	.size	g_flash_slc_mode, 1
g_flash_slc_mode:
	.zero	1
	.type	g_slc_mode_addr2, %object
	.size	g_slc_mode_addr2, 1
g_slc_mode_addr2:
	.zero	1
	.type	g_block_align_addr, %object
	.size	g_block_align_addr, 2
g_block_align_addr:
	.zero	2
	.type	g_lsb_page_tbl, %object
	.size	g_lsb_page_tbl, 1024
g_lsb_page_tbl:
	.zero	1024
	.type	g_nandc_ver, %object
	.size	g_nandc_ver, 1
g_nandc_ver:
	.zero	1
	.zero	3
	.type	_c_user_data_density, %object
	.size	_c_user_data_density, 4
_c_user_data_density:
	.zero	4
	.zero	4
	.type	gp_sblk_list_tbl, %object
	.size	gp_sblk_list_tbl, 8
gp_sblk_list_tbl:
	.zero	8
	.type	gp_flash_info, %object
	.size	gp_flash_info, 8
gp_flash_info:
	.zero	8
	.type	gp_nandc, %object
	.size	gp_nandc, 8
gp_nandc:
	.zero	8
	.type	NANDC_FMCTL, %object
	.size	NANDC_FMCTL, 4
NANDC_FMCTL:
	.zero	4
	.type	NANDC_FMWAIT, %object
	.size	NANDC_FMWAIT, 4
NANDC_FMWAIT:
	.zero	4
	.type	NANDC_FLCTL, %object
	.size	NANDC_FLCTL, 4
NANDC_FLCTL:
	.zero	4
	.type	NANDC_BCHCTL, %object
	.size	NANDC_BCHCTL, 4
NANDC_BCHCTL:
	.zero	4
	.type	NANDC_DLL_CTL_REG0, %object
	.size	NANDC_DLL_CTL_REG0, 4
NANDC_DLL_CTL_REG0:
	.zero	4
	.type	NANDC_DLL_CTL_REG1, %object
	.size	NANDC_DLL_CTL_REG1, 4
NANDC_DLL_CTL_REG1:
	.zero	4
	.type	NANDC_RANDMZ_CFG, %object
	.size	NANDC_RANDMZ_CFG, 4
NANDC_RANDMZ_CFG:
	.zero	4
	.type	NANDC_FMWAIT_SYN, %object
	.size	NANDC_FMWAIT_SYN, 4
NANDC_FMWAIT_SYN:
	.zero	4
	.type	_c_ftl_blk_pre_plane, %object
	.size	_c_ftl_blk_pre_plane, 2
_c_ftl_blk_pre_plane:
	.zero	2
	.zero	6
	.type	gp_blk_info, %object
	.size	gp_blk_info, 8
gp_blk_info:
	.zero	8
	.type	_c_slc_to_xlc_ec_ratio, %object
	.size	_c_slc_to_xlc_ec_ratio, 2
_c_slc_to_xlc_ec_ratio:
	.zero	2
	.zero	6
	.type	ftl_sblk_vpn, %object
	.size	ftl_sblk_vpn, 8
ftl_sblk_vpn:
	.zero	8
	.type	gp_ftl_ext_info, %object
	.size	gp_ftl_ext_info, 8
gp_ftl_ext_info:
	.zero	8
	.type	g_retryMode, %object
	.size	g_retryMode, 1
g_retryMode:
	.zero	1
	.type	g_maxRegNum, %object
	.size	g_maxRegNum, 1
g_maxRegNum:
	.zero	1
	.zero	6
	.type	gp_nand_para_info, %object
	.size	gp_nand_para_info, 8
gp_nand_para_info:
	.zero	8
	.type	g_idb_ecc_bits, %object
	.size	g_idb_ecc_bits, 1
g_idb_ecc_bits:
	.zero	1
	.type	g_nand_max_die, %object
	.size	g_nand_max_die, 1
g_nand_max_die:
	.zero	1
	.type	g_idb_slc_mode_enable, %object
	.size	g_idb_slc_mode_enable, 1
g_idb_slc_mode_enable:
	.zero	1
	.zero	5
	.type	g_nand_opt_para, %object
	.size	g_nand_opt_para, 32
g_nand_opt_para:
	.zero	32
	.type	g_flash_toggle_mode_en, %object
	.size	g_flash_toggle_mode_en, 1
g_flash_toggle_mode_en:
	.zero	1
	.zero	3
	.type	g_die_cs_idx, %object
	.size	g_die_cs_idx, 8
g_die_cs_idx:
	.zero	8
	.type	g_flash_six_addr, %object
	.size	g_flash_six_addr, 1
g_flash_six_addr:
	.zero	1
	.type	_c_ftl_cs_bits, %object
	.size	_c_ftl_cs_bits, 1
_c_ftl_cs_bits:
	.zero	1
	.zero	2
	.type	g_flash_cur_mode, %object
	.size	g_flash_cur_mode, 4
g_flash_cur_mode:
	.zero	4
	.type	g_flash_micron_3d_tlc_flag, %object
	.size	g_flash_micron_3d_tlc_flag, 1
g_flash_micron_3d_tlc_flag:
	.zero	1
	.type	g_flash_ymtc_3d_tlc_flag, %object
	.size	g_flash_ymtc_3d_tlc_flag, 1
g_flash_ymtc_3d_tlc_flag:
	.zero	1
	.zero	2
	.type	IDByte, %object
	.size	IDByte, 32
IDByte:
	.zero	32
	.type	g_flash_interface_mode, %object
	.size	g_flash_interface_mode, 1
g_flash_interface_mode:
	.zero	1
	.type	g_nandc_ecc_bits, %object
	.size	g_nandc_ecc_bits, 1
g_nandc_ecc_bits:
	.zero	1
	.type	g_flash_multi_page_prog_en, %object
	.size	g_flash_multi_page_prog_en, 1
g_flash_multi_page_prog_en:
	.zero	1
	.type	nandc_hw_seed, %object
	.size	nandc_hw_seed, 1
nandc_hw_seed:
	.zero	1
	.type	nandc_randomizer_en, %object
	.size	nandc_randomizer_en, 1
nandc_randomizer_en:
	.zero	1
	.zero	3
	.type	g_nandc_v6_master_info, %object
	.size	g_nandc_v6_master_info, 40
g_nandc_v6_master_info:
	.zero	40
	.type	fill_spare_size, %object
	.size	fill_spare_size, 2
fill_spare_size:
	.zero	2
	.zero	6
	.type	g_buf, %object
	.size	g_buf, 2048
g_buf:
	.zero	2048
	.type	p_free_buf_head, %object
	.size	p_free_buf_head, 1
p_free_buf_head:
	.zero	1
	.type	free_buf_count, %object
	.size	free_buf_count, 1
free_buf_count:
	.zero	1
	.type	sblk_queue_head, %object
	.size	sblk_queue_head, 1
sblk_queue_head:
	.zero	1
	.type	sblk_read_completed_queue_head, %object
	.size	sblk_read_completed_queue_head, 1
sblk_read_completed_queue_head:
	.zero	1
	.type	sblk_gc_write_completed_queue_head, %object
	.size	sblk_gc_write_completed_queue_head, 1
sblk_gc_write_completed_queue_head:
	.zero	1
	.type	sblk_write_completed_queue_head, %object
	.size	sblk_write_completed_queue_head, 1
sblk_write_completed_queue_head:
	.zero	1
	.zero	2
	.type	_c_totle_phy_density, %object
	.size	_c_totle_phy_density, 4
_c_totle_phy_density:
	.zero	4
	.type	_c_totle_log_page, %object
	.size	_c_totle_log_page, 4
_c_totle_log_page:
	.zero	4
	.type	free_slc_sblk, %object
	.size	free_slc_sblk, 2
free_slc_sblk:
	.zero	2
	.type	free_xlc_sblk, %object
	.size	free_xlc_sblk, 2
free_xlc_sblk:
	.zero	2
	.type	free_mix_sblk, %object
	.size	free_mix_sblk, 2
free_mix_sblk:
	.zero	2
	.type	slc_data_sblk, %object
	.size	slc_data_sblk, 2
slc_data_sblk:
	.zero	2
	.type	slc_cache_sblk, %object
	.size	slc_cache_sblk, 2
slc_cache_sblk:
	.zero	2
	.type	xlc_data_sblk, %object
	.size	xlc_data_sblk, 2
xlc_data_sblk:
	.zero	2
	.type	write_commit_count, %object
	.size	write_commit_count, 1
write_commit_count:
	.zero	1
	.type	write_buf_count, %object
	.size	write_buf_count, 1
write_buf_count:
	.zero	1
	.zero	2
	.type	gp_ftl_info, %object
	.size	gp_ftl_info, 8
gp_ftl_info:
	.zero	8
	.type	gc_free_slc_sblk_th, %object
	.size	gc_free_slc_sblk_th, 2
gc_free_slc_sblk_th:
	.zero	2
	.zero	2
	.type	_gc_after_discard_en, %object
	.size	_gc_after_discard_en, 4
_gc_after_discard_en:
	.zero	4
	.type	gc_slc_mode_tlc_vpn_th, %object
	.size	gc_slc_mode_tlc_vpn_th, 2
gc_slc_mode_tlc_vpn_th:
	.zero	2
	.type	gc_slc_mode_vpn_th, %object
	.size	gc_slc_mode_vpn_th, 2
gc_slc_mode_vpn_th:
	.zero	2
	.type	gc_tlc_mode_slc_vpn_th, %object
	.size	gc_tlc_mode_slc_vpn_th, 2
gc_tlc_mode_slc_vpn_th:
	.zero	2
	.type	gc_tlc_mode_tlc_vpn_th, %object
	.size	gc_tlc_mode_tlc_vpn_th, 2
gc_tlc_mode_tlc_vpn_th:
	.zero	2
	.type	write_buf_head, %object
	.size	write_buf_head, 1
write_buf_head:
	.zero	1
	.zero	7
	.type	g_gc_info, %object
	.size	g_gc_info, 2216
g_gc_info:
	.zero	2216
	.type	ftl_sblk_vpn_update_id, %object
	.size	ftl_sblk_vpn_update_id, 2
ftl_sblk_vpn_update_id:
	.zero	2
	.zero	6
	.type	ftl_sblk_update_list, %object
	.size	ftl_sblk_update_list, 16
ftl_sblk_update_list:
	.zero	16
	.type	_c_ftl_block_addr_log2, %object
	.size	_c_ftl_block_addr_log2, 2
_c_ftl_block_addr_log2:
	.zero	2
	.type	_c_ftl_planes_per_die, %object
	.size	_c_ftl_planes_per_die, 1
_c_ftl_planes_per_die:
	.zero	1
	.zero	5
	.type	gc_valid_page_ppa, %object
	.size	gc_valid_page_ppa, 8
gc_valid_page_ppa:
	.zero	8
	.type	_c_ftl_nand_type, %object
	.size	_c_ftl_nand_type, 1
_c_ftl_nand_type:
	.zero	1
	.type	_c_ftl_nand_planes_num, %object
	.size	_c_ftl_nand_planes_num, 1
_c_ftl_nand_planes_num:
	.zero	1
	.type	g_flash_3d_mlc_flag, %object
	.size	g_flash_3d_mlc_flag, 1
g_flash_3d_mlc_flag:
	.zero	1
	.type	g_one_pass_program, %object
	.size	g_one_pass_program, 1
g_one_pass_program:
	.zero	1
	.zero	4
	.type	gc_page_buf_id, %object
	.size	gc_page_buf_id, 8
gc_page_buf_id:
	.zero	8
	.type	g_flash_3d_tlc_flag, %object
	.size	g_flash_3d_tlc_flag, 1
g_flash_3d_tlc_flag:
	.zero	1
	.type	gc_mode, %object
	.size	gc_mode, 1
gc_mode:
	.zero	1
	.type	_c_ftl_page_pre_blk, %object
	.size	_c_ftl_page_pre_blk, 2
_c_ftl_page_pre_blk:
	.zero	2
	.zero	4
	.type	gp_data_slc_data_head, %object
	.size	gp_data_slc_data_head, 8
gp_data_slc_data_head:
	.zero	8
	.type	gc_slc_data_index, %object
	.size	gc_slc_data_index, 2
gc_slc_data_index:
	.zero	2
	.type	gc_slc_cache_index, %object
	.size	gc_slc_cache_index, 2
gc_slc_cache_index:
	.zero	2
	.type	gc_xlc_data_index, %object
	.size	gc_xlc_data_index, 2
gc_xlc_data_index:
	.zero	2
	.zero	2
	.type	gp_data_slc_cache_head, %object
	.size	gp_data_slc_cache_head, 8
gp_data_slc_cache_head:
	.zero	8
	.type	gp_data_xlc_data_head, %object
	.size	gp_data_xlc_data_head, 8
gp_data_xlc_data_head:
	.zero	8
	.type	_c_ftl_page_pre_slc_blk, %object
	.size	_c_ftl_page_pre_slc_blk, 2
_c_ftl_page_pre_slc_blk:
	.zero	2
	.type	gc_xlc_search_index, %object
	.size	gc_xlc_search_index, 2
gc_xlc_search_index:
	.zero	2
	.type	_min_slc_super_block, %object
	.size	_min_slc_super_block, 2
_min_slc_super_block:
	.zero	2
	.type	_max_xlc_super_block, %object
	.size	_max_xlc_super_block, 2
_max_xlc_super_block:
	.zero	2
	.type	gp_free_slc_head, %object
	.size	gp_free_slc_head, 8
gp_free_slc_head:
	.zero	8
	.type	gp_free_xlc_head, %object
	.size	gp_free_xlc_head, 8
gp_free_xlc_head:
	.zero	8
	.type	gp_free_mix_head, %object
	.size	gp_free_mix_head, 8
gp_free_mix_head:
	.zero	8
	.type	zftl_print_list_count, %object
	.size	zftl_print_list_count, 2
zftl_print_list_count:
	.zero	2
	.type	_c_ftl_block_align_addr, %object
	.size	_c_ftl_block_align_addr, 2
_c_ftl_block_align_addr:
	.zero	2
	.type	_c_ftl_nand_die_num, %object
	.size	_c_ftl_nand_die_num, 1
_c_ftl_nand_die_num:
	.zero	1
	.zero	3
	.type	lpa_hash, %object
	.size	lpa_hash, 512
lpa_hash:
	.zero	512
	.type	ftl_sblk_lpa_tbl, %object
	.size	ftl_sblk_lpa_tbl, 8
ftl_sblk_lpa_tbl:
	.zero	8
	.type	lpa_hash_index, %object
	.size	lpa_hash_index, 8
lpa_hash_index:
	.zero	8
	.type	ftl_vpn_update_count, %object
	.size	ftl_vpn_update_count, 2
ftl_vpn_update_count:
	.zero	2
	.type	_c_ftl_sec_per_page, %object
	.size	_c_ftl_sec_per_page, 1
_c_ftl_sec_per_page:
	.zero	1
	.zero	1
	.type	ftl_sblk_update_list_offset, %object
	.size	ftl_sblk_update_list_offset, 2
ftl_sblk_update_list_offset:
	.zero	2
	.type	g_flash_micron_3d_tlc_b05a, %object
	.size	g_flash_micron_3d_tlc_b05a, 1
g_flash_micron_3d_tlc_b05a:
	.zero	1
	.zero	1
	.type	_c_mix_max_xlc_ec_count, %object
	.size	_c_mix_max_xlc_ec_count, 2
_c_mix_max_xlc_ec_count:
	.zero	2
	.type	_c_mix_max_slc_ec_count, %object
	.size	_c_mix_max_slc_ec_count, 2
_c_mix_max_slc_ec_count:
	.zero	2
	.type	read_buf_head, %object
	.size	read_buf_head, 1
read_buf_head:
	.zero	1
	.type	read_buf_count, %object
	.size	read_buf_count, 1
read_buf_count:
	.zero	1
	.zero	2
	.type	pm_ram_info, %object
	.size	pm_ram_info, 512
pm_ram_info:
	.zero	512
	.type	pm_last_update_ram_id, %object
	.size	pm_last_update_ram_id, 1
pm_last_update_ram_id:
	.zero	1
	.zero	3
	.type	g_msb_page_tbl, %object
	.size	g_msb_page_tbl, 2048
g_msb_page_tbl:
	.zero	2048
	.type	g_slc_page_num, %object
	.size	g_slc_page_num, 2
g_slc_page_num:
	.zero	2
	.zero	2
	.type	g_die_addr, %object
	.size	g_die_addr, 32
g_die_addr:
	.zero	32
	.type	g_totle_phy_block, %object
	.size	g_totle_phy_block, 2
g_totle_phy_block:
	.zero	2
	.zero	2
	.type	pm_force_gc, %object
	.size	pm_force_gc, 4
pm_force_gc:
	.zero	4
	.type	_c_swl_slc_gc_th, %object
	.size	_c_swl_slc_gc_th, 2
_c_swl_slc_gc_th:
	.zero	2
	.type	_c_swl_xlc_gc_th, %object
	.size	_c_swl_xlc_gc_th, 2
_c_swl_xlc_gc_th:
	.zero	2
	.type	_c_max_pm_sblk, %object
	.size	_c_max_pm_sblk, 2
_c_max_pm_sblk:
	.zero	2
	.zero	2
	.type	power_on_init_jiffies, %object
	.size	power_on_init_jiffies, 8
power_on_init_jiffies:
	.zero	8
	.type	gp_ftl_api, %object
	.size	gp_ftl_api, 8
gp_ftl_api:
	.zero	8
	.type	RK29_NANDC_REG_BASE, %object
	.size	RK29_NANDC_REG_BASE, 8
RK29_NANDC_REG_BASE:
	.zero	8
	.type	ftl_dma32_buffer_size, %object
	.size	ftl_dma32_buffer_size, 4
ftl_dma32_buffer_size:
	.zero	4
	.zero	4
	.type	ftl_dma32_buffer, %object
	.size	ftl_dma32_buffer, 8
ftl_dma32_buffer:
	.zero	8
	.type	gc_state, %object
	.size	gc_state, 1
gc_state:
	.zero	1
	.zero	3
	.type	gc_search_count, %object
	.size	gc_search_count, 4
gc_search_count:
	.zero	4
	.type	gc_slc_mode_slc_vpn_th, %object
	.size	gc_slc_mode_slc_vpn_th, 2
gc_slc_mode_slc_vpn_th:
	.zero	2
	.zero	6
	.type	gc_lpa_tbl, %object
	.size	gc_lpa_tbl, 8
gc_lpa_tbl:
	.zero	8
	.type	gc_pre_ppa_tbl, %object
	.size	gc_pre_ppa_tbl, 8
gc_pre_ppa_tbl:
	.zero	8
	.type	gc_des_ppa_tbl, %object
	.size	gc_des_ppa_tbl, 8
gc_des_ppa_tbl:
	.zero	8
	.type	g_flash_tmp_page_buffer, %object
	.size	g_flash_tmp_page_buffer, 8
g_flash_tmp_page_buffer:
	.zero	8
	.type	g_nandc_tran_timeout, %object
	.size	g_nandc_tran_timeout, 1
g_nandc_tran_timeout:
	.zero	1
	.zero	7
	.type	g_flash_tmp_spare_buffer, %object
	.size	g_flash_tmp_spare_buffer, 8
g_flash_tmp_spare_buffer:
	.zero	8
	.type	g_maxRetryCount, %object
	.size	g_maxRetryCount, 1
g_maxRetryCount:
	.zero	1
	.zero	3
	.type	flash_ddr_tuning_sdr_read_count, %object
	.size	flash_ddr_tuning_sdr_read_count, 4
flash_ddr_tuning_sdr_read_count:
	.zero	4
	.type	flash_read_retry, %object
	.size	flash_read_retry, 8
flash_read_retry:
	.zero	8
	.type	g_flash_spare_buffer, %object
	.size	g_flash_spare_buffer, 8
g_flash_spare_buffer:
	.zero	8
	.type	g_flash_page_buffer, %object
	.size	g_flash_page_buffer, 8
g_flash_page_buffer:
	.zero	8
	.type	write_commit_head, %object
	.size	write_commit_head, 1
write_commit_head:
	.zero	1
	.zero	3
	.type	ftl_flush_jiffies, %object
	.size	ftl_flush_jiffies, 4
ftl_flush_jiffies:
	.zero	4
	.type	g_flash_multi_page_read_en, %object
	.size	g_flash_multi_page_read_en, 1
g_flash_multi_page_read_en:
	.zero	1
	.zero	7
	.type	ftl_info_spare, %object
	.size	ftl_info_spare, 8
ftl_info_spare:
	.zero	8
	.type	g_ftl_info_blk, %object
	.size	g_ftl_info_blk, 4
g_ftl_info_blk:
	.zero	4
	.zero	4
	.type	ftl_info_data_buffer, %object
	.size	ftl_info_data_buffer, 8
ftl_info_data_buffer:
	.zero	8
	.type	ftl_sys_info_first_write, %object
	.size	ftl_sys_info_first_write, 1
ftl_sys_info_first_write:
	.zero	1
	.type	ftl_power_lost_flag, %object
	.size	ftl_power_lost_flag, 1
ftl_power_lost_flag:
	.zero	1
	.type	ftl_ext_info_first_write, %object
	.size	ftl_ext_info_first_write, 1
ftl_ext_info_first_write:
	.zero	1
	.zero	5
	.type	ftl_ext_info_data_buffer, %object
	.size	ftl_ext_info_data_buffer, 8
ftl_ext_info_data_buffer:
	.zero	8
	.type	ftl_tmp_spare, %object
	.size	ftl_tmp_spare, 8
ftl_tmp_spare:
	.zero	8
	.type	pm_gc_enable, %object
	.size	pm_gc_enable, 4
pm_gc_enable:
	.zero	4
	.zero	4
	.type	g_pm_spare, %object
	.size	g_pm_spare, 8
g_pm_spare:
	.zero	8
	.type	pm_first_write, %object
	.size	pm_first_write, 1
pm_first_write:
	.zero	1
	.zero	7
	.type	g_flash_sys_spare_buffer, %object
	.size	g_flash_sys_spare_buffer, 8
g_flash_sys_spare_buffer:
	.zero	8
	.type	g_flash_blk_info, %object
	.size	g_flash_blk_info, 4
g_flash_blk_info:
	.zero	4
	.type	g_flash_reversd_blks, %object
	.size	g_flash_reversd_blks, 1
g_flash_reversd_blks:
	.zero	1
	.type	g_flash_micron_3d_tlc_b16a, %object
	.size	g_flash_micron_3d_tlc_b16a, 1
g_flash_micron_3d_tlc_b16a:
	.zero	1
	.type	_c_ftl_byte_pre_page, %object
	.size	_c_ftl_byte_pre_page, 2
_c_ftl_byte_pre_page:
	.zero	2
	.type	pm_last_load_ram_id, %object
	.size	pm_last_load_ram_id, 1
pm_last_load_ram_id:
	.zero	1
	.type	_ftl_gc_tag_page_num, %object
	.size	_ftl_gc_tag_page_num, 1
_ftl_gc_tag_page_num:
	.zero	1
	.zero	2
	.type	_last_read_time, %object
	.size	_last_read_time, 4
_last_read_time:
	.zero	4
	.type	_last_write_time, %object
	.size	_last_write_time, 4
_last_write_time:
	.zero	4
	.type	read_ahead_lpa, %object
	.size	read_ahead_lpa, 4
read_ahead_lpa:
	.zero	4
	.type	_c_totle_data_density, %object
	.size	_c_totle_data_density, 4
_c_totle_data_density:
	.zero	4
	.type	_c_ftl_pm_page_num, %object
	.size	_c_ftl_pm_page_num, 2
_c_ftl_pm_page_num:
	.zero	2
	.zero	2
	.type	ftl_tmp_buffer, %object
	.size	ftl_tmp_buffer, 8
ftl_tmp_buffer:
	.zero	8
	.type	rk_zftl_enable, %object
	.size	rk_zftl_enable, 1
rk_zftl_enable:
	.zero	1
	.zero	7
	.type	gLoaderBootInfo, %object
	.size	gLoaderBootInfo, 8
gLoaderBootInfo:
	.zero	8
	.type	RK29_NANDC1_REG_BASE, %object
	.size	RK29_NANDC1_REG_BASE, 8
RK29_NANDC1_REG_BASE:
	.zero	8
	.type	discard_sector_count, %object
	.size	discard_sector_count, 4
discard_sector_count:
	.zero	4
	.type	idb_write_enable, %object
	.size	idb_write_enable, 1
idb_write_enable:
	.zero	1
	.zero	3
	.type	idb_buf, %object
	.size	idb_buf, 8
idb_buf:
	.zero	8
	.type	idb_last_lba, %object
	.size	idb_last_lba, 4
idb_last_lba:
	.zero	4
	.zero	4
	.type	g_idb_buffer, %object
	.size	g_idb_buffer, 8
g_idb_buffer:
	.zero	8
	.type	g_vendor, %object
	.size	g_vendor, 8
g_vendor:
	.zero	8
	.type	SecureBootUnlockTryCount, %object
	.size	SecureBootUnlockTryCount, 4
SecureBootUnlockTryCount:
	.zero	4
	.type	SecureBootCheckOK, %object
	.size	SecureBootCheckOK, 4
SecureBootCheckOK:
	.zero	4
	.type	SecureBootEn, %object
	.size	SecureBootEn, 4
SecureBootEn:
	.zero	4
	.zero	4
	.type	gpVendor1Info, %object
	.size	gpVendor1Info, 8
gpVendor1Info:
	.zero	8
	.type	gpVendor0Info, %object
	.size	gpVendor0Info, 8
gpVendor0Info:
	.zero	8
	.type	gSnSectorData, %object
	.size	gSnSectorData, 512
gSnSectorData:
	.zero	512
	.type	gpDrmKeyInfo, %object
	.size	gpDrmKeyInfo, 8
gpDrmKeyInfo:
	.zero	8
	.type	gpBootConfig, %object
	.size	gpBootConfig, 8
gpBootConfig:
	.zero	8
	.type	ftl_low_format_cur_blk, %object
	.size	ftl_low_format_cur_blk, 2
ftl_low_format_cur_blk:
	.zero	2
	.zero	6
	.type	p_read_ahead_ext_buf, %object
	.size	p_read_ahead_ext_buf, 8
p_read_ahead_ext_buf:
	.zero	8
	.type	_c_ftl_nand_blks_per_die, %object
	.size	_c_ftl_nand_blks_per_die, 2
_c_ftl_nand_blks_per_die:
	.zero	2
	.zero	6
	.type	nandc_ecc_sts, %object
	.size	nandc_ecc_sts, 16
nandc_ecc_sts:
	.zero	16
	.type	g_slc_mode_enable, %object
	.size	g_slc_mode_enable, 1
g_slc_mode_enable:
	.zero	1
	.section	.rodata
	.align	3
	.set	.LANCHOR1,. + 0
	.type	__func__.46344, %object
	.size	__func__.46344, 18
__func__.46344:
	.string	"_list_remove_node"
	.zero	6
	.type	__func__.46369, %object
	.size	__func__.46369, 23
__func__.46369:
	.string	"_list_update_data_list"
	.zero	1
	.type	toshiba_15ref_value, %object
	.size	toshiba_15ref_value, 95
toshiba_15ref_value:
	.byte	4
	.byte	5
	.byte	6
	.byte	7
	.byte	13
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	2
	.byte	4
	.byte	2
	.byte	0
	.byte	0
	.byte	8
	.byte	8
	.byte	0
	.byte	0
	.byte	0
	.byte	124
	.byte	0
	.byte	124
	.byte	124
	.byte	0
	.byte	122
	.byte	0
	.byte	122
	.byte	122
	.byte	0
	.byte	11
	.byte	126
	.byte	118
	.byte	116
	.byte	0
	.byte	120
	.byte	2
	.byte	120
	.byte	122
	.byte	0
	.byte	126
	.byte	4
	.byte	126
	.byte	122
	.byte	0
	.byte	16
	.byte	118
	.byte	114
	.byte	112
	.byte	0
	.byte	118
	.byte	4
	.byte	118
	.byte	120
	.byte	0
	.byte	4
	.byte	4
	.byte	4
	.byte	118
	.byte	0
	.byte	2
	.byte	0
	.byte	126
	.byte	124
	.byte	0
	.byte	6
	.byte	10
	.byte	6
	.byte	2
	.byte	0
	.byte	116
	.byte	124
	.byte	116
	.byte	118
	.byte	0
	.byte	4
	.byte	4
	.byte	124
	.byte	126
	.byte	0
	.byte	0
	.byte	124
	.byte	120
	.byte	120
	.byte	0
	.byte	124
	.byte	118
	.byte	116
	.byte	114
	.byte	0
	.zero	1
	.type	toshiba_A19ref_value, %object
	.size	toshiba_A19ref_value, 45
toshiba_A19ref_value:
	.byte	4
	.byte	5
	.byte	6
	.byte	7
	.byte	13
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	4
	.byte	4
	.byte	124
	.byte	126
	.byte	0
	.byte	0
	.byte	124
	.byte	120
	.byte	120
	.byte	0
	.byte	124
	.byte	118
	.byte	116
	.byte	114
	.byte	0
	.byte	8
	.byte	8
	.byte	0
	.byte	0
	.byte	0
	.byte	11
	.byte	126
	.byte	118
	.byte	116
	.byte	0
	.byte	16
	.byte	118
	.byte	114
	.byte	112
	.byte	0
	.byte	2
	.byte	0
	.byte	126
	.byte	124
	.byte	0
	.zero	3
	.type	toshiba_ref_value, %object
	.size	toshiba_ref_value, 8
toshiba_ref_value:
	.byte	0
	.byte	4
	.byte	124
	.byte	120
	.byte	116
	.byte	8
	.byte	12
	.byte	112
	.type	__func__.26714, %object
	.size	__func__.26714, 22
__func__.26714:
	.string	"nand_flash_print_info"
	.zero	2
	.type	__func__.26187, %object
	.size	__func__.26187, 28
__func__.26187:
	.string	"flash_wait_device_ready_raw"
	.zero	4
	.type	__func__.26251, %object
	.size	__func__.26251, 22
__func__.26251:
	.string	"flash_start_page_read"
	.zero	2
	.type	toshiba_3D_tlc_value, %object
	.size	toshiba_3D_tlc_value, 399
toshiba_3D_tlc_value:
	.byte	-119
	.byte	-119
	.byte	-119
	.byte	-119
	.byte	-118
	.byte	-118
	.byte	-118
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	-2
	.byte	-1
	.byte	0
	.byte	-3
	.byte	-2
	.byte	6
	.byte	-9
	.byte	-12
	.byte	-9
	.byte	-7
	.byte	-13
	.byte	-12
	.byte	-7
	.byte	-6
	.byte	-15
	.byte	-15
	.byte	-2
	.byte	-12
	.byte	-16
	.byte	-6
	.byte	-2
	.byte	-19
	.byte	-19
	.byte	-6
	.byte	-4
	.byte	-12
	.byte	-14
	.byte	-2
	.byte	-11
	.byte	-23
	.byte	-34
	.byte	-4
	.byte	-20
	.byte	-22
	.byte	-2
	.byte	-7
	.byte	-31
	.byte	-30
	.byte	-12
	.byte	-20
	.byte	-18
	.byte	2
	.byte	-15
	.byte	-19
	.byte	-36
	.byte	-12
	.byte	-28
	.byte	-34
	.byte	-6
	.byte	-15
	.byte	-11
	.byte	2
	.byte	-12
	.byte	-8
	.byte	-2
	.byte	2
	.byte	-3
	.byte	-7
	.byte	-10
	.byte	-4
	.byte	-8
	.byte	-6
	.byte	-6
	.byte	-11
	.byte	-27
	.byte	-38
	.byte	-16
	.byte	-12
	.byte	-2
	.byte	2
	.byte	-7
	.byte	-31
	.byte	-22
	.byte	-4
	.byte	-16
	.byte	-22
	.byte	-7
	.byte	-31
	.byte	-23
	.byte	-22
	.byte	-28
	.byte	-28
	.byte	-26
	.byte	2
	.byte	-7
	.byte	-11
	.byte	-14
	.byte	-8
	.byte	-12
	.byte	-10
	.byte	-10
	.byte	-27
	.byte	-25
	.byte	-22
	.byte	-20
	.byte	-28
	.byte	-22
	.byte	-7
	.byte	-23
	.byte	-29
	.byte	-34
	.byte	-24
	.byte	-32
	.byte	-22
	.byte	-10
	.byte	-11
	.byte	-29
	.byte	-18
	.byte	-12
	.byte	-24
	.byte	-22
	.byte	6
	.byte	1
	.byte	-3
	.byte	-6
	.byte	0
	.byte	-4
	.byte	-2
	.byte	10
	.byte	-3
	.byte	-7
	.byte	-6
	.byte	4
	.byte	-4
	.byte	-2
	.byte	-10
	.byte	-23
	.byte	-39
	.byte	-22
	.byte	-19
	.byte	-24
	.byte	-18
	.byte	-14
	.byte	-23
	.byte	-29
	.byte	-30
	.byte	-15
	.byte	-30
	.byte	-30
	.byte	-7
	.byte	-27
	.byte	-35
	.byte	-26
	.byte	-15
	.byte	-24
	.byte	-26
	.byte	6
	.byte	-11
	.byte	5
	.byte	-2
	.byte	-16
	.byte	-16
	.byte	-2
	.byte	-2
	.byte	-15
	.byte	-15
	.byte	-20
	.byte	-8
	.byte	-16
	.byte	-18
	.byte	6
	.byte	5
	.byte	-15
	.byte	-2
	.byte	-24
	.byte	-28
	.byte	-22
	.byte	10
	.byte	-15
	.byte	-3
	.byte	-30
	.byte	-8
	.byte	-24
	.byte	-30
	.byte	-10
	.byte	-27
	.byte	-19
	.byte	-30
	.byte	-12
	.byte	-16
	.byte	-10
	.byte	14
	.byte	-19
	.byte	-3
	.byte	-30
	.byte	4
	.byte	4
	.byte	6
	.byte	2
	.byte	1
	.byte	-3
	.byte	-10
	.byte	-8
	.byte	-4
	.byte	-6
	.byte	-2
	.byte	-15
	.byte	-11
	.byte	-26
	.byte	-8
	.byte	-20
	.byte	-30
	.byte	6
	.byte	-19
	.byte	-3
	.byte	-46
	.byte	0
	.byte	0
	.byte	2
	.byte	6
	.byte	9
	.byte	5
	.byte	2
	.byte	4
	.byte	8
	.byte	6
	.byte	8
	.byte	9
	.byte	9
	.byte	6
	.byte	8
	.byte	8
	.byte	6
	.byte	10
	.byte	13
	.byte	9
	.byte	6
	.byte	8
	.byte	12
	.byte	10
	.byte	2
	.byte	5
	.byte	1
	.byte	-2
	.byte	0
	.byte	0
	.byte	6
	.byte	12
	.byte	1
	.byte	13
	.byte	2
	.byte	12
	.byte	12
	.byte	14
	.byte	-12
	.byte	-14
	.byte	-20
	.byte	-18
	.byte	-16
	.byte	-16
	.byte	-14
	.byte	-12
	.byte	-10
	.byte	-21
	.byte	-14
	.byte	-12
	.byte	-12
	.byte	-10
	.byte	-12
	.byte	-18
	.byte	-22
	.byte	-24
	.byte	-18
	.byte	-18
	.byte	-18
	.byte	-12
	.byte	-14
	.byte	-23
	.byte	-20
	.byte	-20
	.byte	-20
	.byte	-20
	.byte	-12
	.byte	-24
	.byte	-24
	.byte	-30
	.byte	-24
	.byte	-28
	.byte	-28
	.byte	-12
	.byte	-26
	.byte	-25
	.byte	-34
	.byte	-24
	.byte	-24
	.byte	-24
	.byte	-12
	.byte	-13
	.byte	-26
	.byte	-20
	.byte	-14
	.byte	-18
	.byte	-18
	.byte	-12
	.byte	-15
	.byte	-27
	.byte	-22
	.byte	-20
	.byte	-24
	.byte	-22
	.byte	-12
	.byte	-21
	.byte	-28
	.byte	-28
	.byte	-24
	.byte	-26
	.byte	-24
	.byte	20
	.byte	16
	.byte	6
	.byte	10
	.byte	16
	.byte	12
	.byte	12
	.byte	16
	.byte	16
	.byte	8
	.byte	8
	.byte	12
	.byte	12
	.byte	12
	.byte	18
	.byte	18
	.byte	10
	.byte	8
	.byte	14
	.byte	14
	.byte	14
	.byte	16
	.byte	14
	.byte	6
	.byte	6
	.byte	12
	.byte	14
	.byte	8
	.byte	20
	.byte	18
	.byte	8
	.byte	6
	.byte	14
	.byte	14
	.byte	10
	.byte	20
	.byte	20
	.byte	6
	.byte	10
	.byte	10
	.byte	12
	.byte	12
	.byte	10
	.byte	13
	.byte	5
	.byte	2
	.byte	14
	.byte	8
	.byte	6
	.byte	6
	.byte	13
	.byte	9
	.byte	4
	.byte	14
	.byte	10
	.byte	10
	.byte	10
	.byte	13
	.byte	9
	.byte	6
	.byte	8
	.byte	12
	.byte	10
	.byte	2
	.byte	5
	.byte	1
	.byte	-2
	.byte	0
	.byte	0
	.byte	6
	.byte	12
	.byte	1
	.byte	13
	.byte	2
	.byte	12
	.byte	12
	.byte	14
	.zero	1
	.type	toshiba_3D_slc_value, %object
	.size	toshiba_3D_slc_value, 11
toshiba_3D_slc_value:
	.byte	-117
	.byte	0
	.byte	-8
	.byte	8
	.byte	-16
	.byte	-24
	.byte	24
	.byte	-40
	.byte	40
	.byte	-56
	.byte	56
	.zero	5
	.type	ymtc_3D_tlc_value, %object
	.size	ymtc_3D_tlc_value, 357
ymtc_3D_tlc_value:
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	-10
	.byte	-10
	.byte	-6
	.byte	-6
	.byte	-2
	.byte	2
	.byte	2
	.byte	-6
	.byte	-6
	.byte	-4
	.byte	-4
	.byte	-4
	.byte	-6
	.byte	-8
	.byte	6
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	-2
	.byte	-2
	.byte	-2
	.byte	-4
	.byte	-4
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-11
	.byte	-2
	.byte	2
	.byte	4
	.byte	4
	.byte	6
	.byte	6
	.byte	6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-8
	.byte	-14
	.byte	-6
	.byte	-15
	.byte	-11
	.byte	2
	.byte	-12
	.byte	-8
	.byte	-2
	.byte	2
	.byte	-3
	.byte	-7
	.byte	-10
	.byte	-4
	.byte	-8
	.byte	-6
	.byte	-18
	.byte	-18
	.byte	-14
	.byte	-14
	.byte	-10
	.byte	-5
	.byte	-5
	.byte	-14
	.byte	-14
	.byte	-12
	.byte	-12
	.byte	-12
	.byte	-13
	.byte	-15
	.byte	-2
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	-7
	.byte	-7
	.byte	-10
	.byte	-10
	.byte	-10
	.byte	-12
	.byte	-12
	.byte	-13
	.byte	-13
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-13
	.byte	-18
	.byte	-10
	.byte	-6
	.byte	-4
	.byte	-4
	.byte	-2
	.byte	-1
	.byte	-1
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-15
	.byte	-21
	.byte	-12
	.byte	-11
	.byte	-7
	.byte	-7
	.byte	-3
	.byte	1
	.byte	1
	.byte	-8
	.byte	-7
	.byte	-5
	.byte	-5
	.byte	-5
	.byte	-7
	.byte	-9
	.byte	4
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	-4
	.byte	-3
	.byte	-3
	.byte	-5
	.byte	-5
	.byte	-7
	.byte	-7
	.byte	-8
	.byte	-7
	.byte	-7
	.byte	-7
	.byte	-7
	.byte	-7
	.byte	-12
	.byte	-4
	.byte	1
	.byte	3
	.byte	3
	.byte	5
	.byte	5
	.byte	5
	.byte	-8
	.byte	-7
	.byte	-7
	.byte	-7
	.byte	-7
	.byte	-9
	.byte	-15
	.byte	2
	.byte	-7
	.byte	-11
	.byte	-14
	.byte	-8
	.byte	-12
	.byte	-10
	.byte	6
	.byte	1
	.byte	-3
	.byte	-6
	.byte	0
	.byte	-4
	.byte	-2
	.byte	10
	.byte	-3
	.byte	-7
	.byte	-6
	.byte	4
	.byte	-4
	.byte	-2
	.byte	-10
	.byte	-23
	.byte	-39
	.byte	-22
	.byte	-19
	.byte	-24
	.byte	-18
	.byte	-7
	.byte	-27
	.byte	-35
	.byte	-26
	.byte	-15
	.byte	-24
	.byte	-26
	.byte	6
	.byte	-11
	.byte	5
	.byte	-2
	.byte	-16
	.byte	-16
	.byte	-2
	.byte	-2
	.byte	-15
	.byte	-15
	.byte	-20
	.byte	-8
	.byte	-16
	.byte	-18
	.byte	2
	.byte	1
	.byte	-3
	.byte	-10
	.byte	-8
	.byte	-4
	.byte	-6
	.byte	-2
	.byte	-15
	.byte	-11
	.byte	-26
	.byte	-8
	.byte	-20
	.byte	-30
	.byte	6
	.byte	-19
	.byte	-3
	.byte	-46
	.byte	0
	.byte	0
	.byte	2
	.byte	6
	.byte	9
	.byte	5
	.byte	2
	.byte	4
	.byte	8
	.byte	6
	.byte	8
	.byte	9
	.byte	9
	.byte	6
	.byte	8
	.byte	8
	.byte	6
	.byte	10
	.byte	13
	.byte	9
	.byte	6
	.byte	8
	.byte	12
	.byte	10
	.byte	2
	.byte	5
	.byte	1
	.byte	-2
	.byte	0
	.byte	0
	.byte	6
	.byte	12
	.byte	1
	.byte	13
	.byte	2
	.byte	12
	.byte	12
	.byte	14
	.byte	-12
	.byte	-14
	.byte	-20
	.byte	-18
	.byte	-16
	.byte	-16
	.byte	-14
	.byte	-12
	.byte	-10
	.byte	-21
	.byte	-14
	.byte	-12
	.byte	-12
	.byte	-10
	.byte	-12
	.byte	-18
	.byte	-22
	.byte	-24
	.byte	-18
	.byte	-18
	.byte	-18
	.byte	-12
	.byte	-14
	.byte	-23
	.byte	-20
	.byte	-20
	.byte	-20
	.byte	-20
	.byte	16
	.byte	16
	.byte	8
	.byte	8
	.byte	12
	.byte	12
	.byte	12
	.byte	18
	.byte	18
	.byte	10
	.byte	8
	.byte	14
	.byte	14
	.byte	14
	.byte	16
	.byte	14
	.byte	6
	.byte	6
	.byte	12
	.byte	14
	.byte	8
	.byte	10
	.byte	13
	.byte	5
	.byte	2
	.byte	14
	.byte	8
	.byte	6
	.byte	6
	.byte	13
	.byte	9
	.byte	4
	.byte	14
	.byte	10
	.byte	10
	.byte	10
	.byte	13
	.byte	9
	.byte	6
	.byte	8
	.byte	12
	.byte	10
	.byte	2
	.byte	5
	.byte	1
	.byte	-2
	.byte	0
	.byte	0
	.byte	6
	.byte	12
	.byte	1
	.byte	13
	.byte	2
	.byte	12
	.byte	12
	.byte	14
	.zero	3
	.type	ymtc_3D_slc_value, %object
	.size	ymtc_3D_slc_value, 10
ymtc_3D_slc_value:
	.byte	0
	.byte	-8
	.byte	8
	.byte	-16
	.byte	-20
	.byte	24
	.byte	-26
	.byte	40
	.byte	-12
	.byte	56
	.zero	6
	.type	__func__.26276, %object
	.size	__func__.26276, 23
__func__.26276:
	.string	"flash_start_plane_read"
	.zero	1
	.type	__func__.26162, %object
	.size	__func__.26162, 26
__func__.26162:
	.string	"flash_erase_duplane_block"
	.zero	6
	.type	__func__.26173, %object
	.size	__func__.26173, 21
__func__.26173:
	.string	"flash_erase_block_en"
	.zero	3
	.type	random_seed, %object
	.size	random_seed, 256
random_seed:
	.hword	22378
	.hword	1512
	.hword	25245
	.hword	17827
	.hword	25756
	.hword	19440
	.hword	9026
	.hword	10030
	.hword	29528
	.hword	20467
	.hword	29676
	.hword	24432
	.hword	31328
	.hword	6872
	.hword	13426
	.hword	13842
	.hword	8783
	.hword	1108
	.hword	782
	.hword	28837
	.hword	30729
	.hword	9505
	.hword	18676
	.hword	23085
	.hword	18730
	.hword	1085
	.hword	32609
	.hword	14697
	.hword	20858
	.hword	15170
	.hword	30365
	.hword	1607
	.hword	32298
	.hword	4995
	.hword	18905
	.hword	1976
	.hword	9592
	.hword	20204
	.hword	17443
	.hword	13615
	.hword	23330
	.hword	29369
	.hword	13947
	.hword	9398
	.hword	32398
	.hword	8984
	.hword	27600
	.hword	21785
	.hword	6019
	.hword	6311
	.hword	31598
	.hword	30210
	.hword	19327
	.hword	13896
	.hword	11347
	.hword	27545
	.hword	3107
	.hword	26575
	.hword	32270
	.hword	19852
	.hword	20601
	.hword	8349
	.hword	9290
	.hword	29819
	.hword	13579
	.hword	3661
	.hword	28676
	.hword	27331
	.hword	32574
	.hword	8693
	.hword	31253
	.hword	9081
	.hword	5399
	.hword	6842
	.hword	20087
	.hword	5537
	.hword	1274
	.hword	11617
	.hword	9530
	.hword	4866
	.hword	8035
	.hword	23219
	.hword	1178
	.hword	23272
	.hword	7383
	.hword	18944
	.hword	12488
	.hword	12871
	.hword	29340
	.hword	20532
	.hword	11022
	.hword	22514
	.hword	228
	.hword	22363
	.hword	24978
	.hword	14584
	.hword	12138
	.hword	3092
	.hword	17916
	.hword	16863
	.hword	14554
	.hword	31457
	.hword	29474
	.hword	25311
	.hword	24121
	.hword	3684
	.hword	28037
	.hword	22865
	.hword	22839
	.hword	25217
	.hword	13217
	.hword	27186
	.hword	14938
	.hword	11180
	.hword	29754
	.hword	24180
	.hword	15150
	.hword	32455
	.hword	20434
	.hword	23848
	.hword	29983
	.hword	16120
	.hword	14769
	.hword	20041
	.hword	29803
	.hword	28406
	.hword	17598
	.hword	28087
	.type	__func__.26979, %object
	.size	__func__.26979, 13
__func__.26979:
	.string	"buf_add_tail"
	.zero	3
	.type	__func__.26992, %object
	.size	__func__.26992, 10
__func__.26992:
	.string	"buf_alloc"
	.zero	6
	.type	__func__.27006, %object
	.size	__func__.27006, 16
__func__.27006:
	.string	"buf_remove_free"
	.type	zftl_debug_proc_fops, %object
	.size	zftl_debug_proc_fops, 96
zftl_debug_proc_fops:
	.zero	8
	.xword	zftl_debug_proc_open
	.xword	seq_read
	.zero	8
	.xword	zftl_debug_proc_write
	.xword	seq_lseek
	.xword	single_release
	.zero	40
	.type	__func__.45877, %object
	.size	__func__.45877, 12
__func__.45877:
	.string	"gc_add_sblk"
	.zero	4
	.type	__func__.45969, %object
	.size	__func__.45969, 19
__func__.45969:
	.string	"gc_write_completed"
	.zero	5
	.type	__func__.46575, %object
	.size	__func__.46575, 18
__func__.46575:
	.string	"ftl_alloc_sys_blk"
	.zero	6
	.type	__func__.46585, %object
	.size	__func__.46585, 17
__func__.46585:
	.string	"ftl_free_sys_blk"
	.zero	7
	.type	__func__.46706, %object
	.size	__func__.46706, 23
__func__.46706:
	.string	"ftl_get_ppa_from_index"
	.zero	1
	.type	__func__.46746, %object
	.size	__func__.46746, 22
__func__.46746:
	.string	"ftl_get_new_free_page"
	.zero	2
	.type	__func__.46757, %object
	.size	__func__.46757, 22
__func__.46757:
	.string	"ftl_ext_alloc_new_blk"
	.zero	2
	.type	__func__.46026, %object
	.size	__func__.46026, 16
__func__.46026:
	.string	"gc_free_src_blk"
	.type	__func__.45620, %object
	.size	__func__.45620, 14
__func__.45620:
	.string	"ftl_write_buf"
	.zero	2
	.type	__func__.45665, %object
	.size	__func__.45665, 18
__func__.45665:
	.string	"zftl_add_read_buf"
	.align	3
	.set	.LANCHOR4,. + 0
	.type	__func__.47179, %object
	.size	__func__.47179, 21
__func__.47179:
	.string	"pm_select_ram_region"
	.zero	3
	.type	__func__.26704, %object
	.size	__func__.26704, 20
__func__.26704:
	.string	"flash_die_info_init"
	.zero	4
	.type	__func__.45552, %object
	.size	__func__.45552, 17
__func__.45552:
	.string	"lpa_rebuild_hash"
	.zero	7
	.type	__func__.46444, %object
	.size	__func__.46444, 20
__func__.46444:
	.string	"zftl_sblk_list_init"
	.zero	4
	.type	__func__.47111, %object
	.size	__func__.47111, 13
__func__.47111:
	.string	"pm_free_sblk"
	.zero	3
	.type	__func__.27042, %object
	.size	__func__.27042, 21
__func__.27042:
	.string	"flash_info_data_init"
	.zero	3
	.type	__func__.26800, %object
	.size	__func__.26800, 11
__func__.26800:
	.string	"nandc_init"
	.zero	5
	.type	samsung_14nm_slc_rr, %object
	.size	samsung_14nm_slc_rr, 26
samsung_14nm_slc_rr:
	.byte	0
	.byte	10
	.byte	-10
	.byte	20
	.byte	-20
	.byte	30
	.byte	-30
	.byte	40
	.byte	-40
	.byte	50
	.byte	-50
	.byte	60
	.byte	-60
	.byte	-70
	.byte	-80
	.byte	-90
	.byte	-100
	.byte	-110
	.byte	-120
	.byte	-9
	.byte	70
	.byte	80
	.byte	90
	.byte	-125
	.byte	-115
	.byte	100
	.zero	6
	.type	samsung_14nm_mlc_rr, %object
	.size	samsung_14nm_mlc_rr, 104
samsung_14nm_mlc_rr:
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	-4
	.byte	3
	.byte	-4
	.byte	-6
	.byte	6
	.byte	0
	.byte	6
	.byte	-10
	.byte	-10
	.byte	4
	.byte	-10
	.byte	16
	.byte	12
	.byte	-4
	.byte	12
	.byte	8
	.byte	-16
	.byte	10
	.byte	-16
	.byte	24
	.byte	18
	.byte	-14
	.byte	18
	.byte	-4
	.byte	-22
	.byte	-16
	.byte	-22
	.byte	-8
	.byte	24
	.byte	-9
	.byte	24
	.byte	8
	.byte	-28
	.byte	-4
	.byte	-28
	.byte	16
	.byte	30
	.byte	10
	.byte	30
	.byte	10
	.byte	-34
	.byte	6
	.byte	-34
	.byte	0
	.byte	36
	.byte	-8
	.byte	36
	.byte	-8
	.byte	-40
	.byte	-2
	.byte	-40
	.byte	-20
	.byte	-46
	.byte	-4
	.byte	-46
	.byte	-30
	.byte	3
	.byte	0
	.byte	3
	.byte	-3
	.byte	-2
	.byte	-4
	.byte	-2
	.byte	-6
	.byte	-4
	.byte	-4
	.byte	-4
	.byte	-10
	.byte	-6
	.byte	-8
	.byte	-6
	.byte	-14
	.byte	-9
	.byte	-8
	.byte	-9
	.byte	-18
	.byte	-52
	.byte	22
	.byte	-52
	.byte	10
	.byte	42
	.byte	4
	.byte	42
	.byte	4
	.byte	48
	.byte	-9
	.byte	48
	.byte	4
	.byte	-58
	.byte	12
	.byte	-58
	.byte	0
	.byte	-64
	.byte	-24
	.byte	-64
	.byte	-6
	.byte	9
	.byte	18
	.byte	9
	.byte	8
	.type	__func__.26085, %object
	.size	__func__.26085, 19
__func__.26085:
	.string	"flash_read_page_en"
	.zero	5
	.type	__func__.26211, %object
	.size	__func__.26211, 26
__func__.26211:
	.string	"flash_start_tlc_page_prog"
	.zero	6
	.type	__func__.26222, %object
	.size	__func__.26222, 29
__func__.26222:
	.string	"flash_start_3d_mlc_page_prog"
	.zero	3
	.type	__func__.26240, %object
	.size	__func__.26240, 22
__func__.26240:
	.string	"flash_start_page_prog"
	.zero	2
	.type	__func__.26264, %object
	.size	__func__.26264, 31
__func__.26264:
	.string	"flash_complete_plane_page_read"
	.zero	1
	.type	__func__.26289, %object
	.size	__func__.26289, 25
__func__.26289:
	.string	"flash_complete_page_read"
	.zero	7
	.type	__func__.46944, %object
	.size	__func__.46944, 31
__func__.46944:
	.string	"queue_wait_first_req_completed"
	.zero	1
	.type	__func__.46998, %object
	.size	__func__.46998, 15
__func__.46998:
	.string	"sblk_prog_page"
	.zero	1
	.type	__func__.47025, %object
	.size	__func__.47025, 15
__func__.47025:
	.string	"sblk_read_page"
	.zero	1
	.type	__func__.45924, %object
	.size	__func__.45924, 21
__func__.45924:
	.string	"gc_check_data_one_wl"
	.zero	3
	.type	__func__.26146, %object
	.size	__func__.26146, 19
__func__.26146:
	.string	"flash_prog_page_en"
	.zero	5
	.type	__func__.46821, %object
	.size	__func__.46821, 14
__func__.46821:
	.string	"ftl_prog_page"
	.zero	2
	.type	__func__.46478, %object
	.size	__func__.46478, 15
__func__.46478:
	.string	"ftl_info_flush"
	.zero	1
	.type	__func__.46783, %object
	.size	__func__.46783, 19
__func__.46783:
	.string	"ftl_ext_info_flush"
	.zero	5
	.type	__func__.46795, %object
	.size	__func__.46795, 18
__func__.46795:
	.string	"ftl_ext_info_init"
	.zero	6
	.type	__func__.46533, %object
	.size	__func__.46533, 15
__func__.46533:
	.string	"ftl_alloc_sblk"
	.zero	1
	.type	__func__.47151, %object
	.size	__func__.47151, 17
__func__.47151:
	.string	"pm_alloc_new_blk"
	.zero	7
	.type	__func__.47161, %object
	.size	__func__.47161, 14
__func__.47161:
	.string	"pm_write_page"
	.zero	2
	.type	__func__.27064, %object
	.size	__func__.27064, 17
__func__.27064:
	.string	"flash_info_flush"
	.zero	7
	.type	__func__.27027, %object
	.size	__func__.27027, 20
__func__.27027:
	.string	"flash_info_blk_init"
	.zero	4
	.type	__func__.26759, %object
	.size	__func__.26759, 16
__func__.26759:
	.string	"nand_flash_init"
	.type	__func__.46648, %object
	.size	__func__.46648, 16
__func__.46648:
	.string	"ftl_sysblk_dump"
	.type	__func__.46673, %object
	.size	__func__.46673, 23
__func__.46673:
	.string	"ftl_open_sblk_recovery"
	.zero	1
	.type	__func__.47095, %object
	.size	__func__.47095, 16
__func__.47095:
	.string	"load_l2p_region"
	.type	__func__.47135, %object
	.size	__func__.47135, 6
__func__.47135:
	.string	"pm_gc"
	.zero	2
	.type	__func__.45867, %object
	.size	__func__.45867, 12
__func__.45867:
	.string	"gc_recovery"
	.zero	4
	.type	__func__.45956, %object
	.size	__func__.45956, 22
__func__.45956:
	.string	"gc_update_l2p_map_new"
	.zero	2
	.type	__func__.46070, %object
	.size	__func__.46070, 16
__func__.46070:
	.string	"gc_scan_src_blk"
	.type	__func__.46131, %object
	.size	__func__.46131, 20
__func__.46131:
	.string	"gc_scan_static_data"
	.zero	4
	.type	__func__.46194, %object
	.size	__func__.46194, 18
__func__.46194:
	.string	"gc_block_vpn_scan"
	.zero	6
	.type	__func__.46624, %object
	.size	__func__.46624, 14
__func__.46624:
	.string	"ftl_sblk_dump"
	.zero	2
	.type	__func__.45698, %object
	.size	__func__.45698, 10
__func__.45698:
	.string	"zftl_read"
	.zero	6
	.type	__func__.46727, %object
	.size	__func__.46727, 19
__func__.46727:
	.string	"ftl_update_l2p_map"
	.zero	5
	.type	__func__.45602, %object
	.size	__func__.45602, 17
__func__.45602:
	.string	"ftl_write_commit"
	.zero	7
	.type	__func__.45999, %object
	.size	__func__.45999, 16
__func__.45999:
	.string	"gc_do_copy_back"
	.type	__func__.46249, %object
	.size	__func__.46249, 11
__func__.46249:
	.string	"zftl_do_gc"
	.zero	5
	.type	__func__.45730, %object
	.size	__func__.45730, 13
__func__.45730:
	.string	"_ftl_discard"
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"\n!!!!! error @ func:%s - line:%d\n"
.LC1:
	.string	"FTL version: 6.0.24 20210716"
.LC2:
	.string	"%s\n"
.LC3:
	.string	"zftl_debug:0x%x\n"
.LC4:
	.string	"...%s enter...\n"
.LC5:
	.string	"No.0 FLASH ID: %x %x %x %x %x %x\n"
.LC6:
	.string	"DiePerChip: %x\n"
.LC7:
	.string	"SectPerPage: %x\n"
.LC8:
	.string	"PagePerBlk: %x\n"
.LC9:
	.string	"Cell: %x\n"
.LC10:
	.string	"PlanePerDie: %x\n"
.LC11:
	.string	"BlkPerPlane: %x\n"
.LC12:
	.string	"die gap: %x\n"
.LC13:
	.string	"lsbMode: %x\n"
.LC14:
	.string	"ReadRetryMode: %x\n"
.LC15:
	.string	"ecc: %x\n"
.LC16:
	.string	"idb ecc: %x\n"
.LC17:
	.string	"OptMode: %x\n"
.LC18:
	.string	"g_nand_max_die: %x\n"
.LC19:
	.string	"Cache read enable: %x\n"
.LC20:
	.string	"Cache random read enable: %x\n"
.LC21:
	.string	"Cache prog enable: %x\n"
.LC22:
	.string	"multi read enable: %x\n"
.LC23:
	.string	"multi prog enable: %x\n"
.LC24:
	.string	"interleave enable: %x\n"
.LC25:
	.string	"read retry enable: %x\n"
.LC26:
	.string	"randomizer enable: %x\n"
.LC27:
	.string	"SDR enable: %x\n"
.LC28:
	.string	"ONFI enable: %x\n"
.LC29:
	.string	"TOGGLE enable: %x\n"
.LC30:
	.string	"g_flash_slc_mode: %x %x\n"
.LC31:
	.string	"MultiPlaneProgCmd: %x %x\n"
.LC32:
	.string	"MultiPlaneReadCmd: %x %x\n"
.LC33:
	.string	"g_flash_toggle_mode_en: %x\n"
.LC34:
	.string	"nand sdr mode %x\n"
.LC35:
	.string	"nand ddr mode %x\n"
.LC36:
	.string	"No.%d FLASH ID:%x %x %x %x %x %x\n"
.LC37:
	.string	"otp:%x %x %x %x\n"
.LC38:
	.string	"bad block test:%x %x\n"
.LC39:
	.string	"flash_erase_duplane_block %x %x %x\n"
.LC40:
	.string	"flash_erase_duplane_block pageadd = %x status = %x\n"
.LC41:
	.string	"flash_erase_block %x %x %x\n"
.LC42:
	.string	"flash_erase_block %d block = %x status = %x\n"
.LC43:
	.string	"erase done: %x\n"
.LC44:
	.string	"sblk_queue_head = %d\n"
.LC45:
	.string	"sblk_read_completed_queue_head = %d\n"
.LC46:
	.string	"sblk_gc_write_completed_queue_head = %d\n"
.LC47:
	.string	"sblk_write_completed_queue_head = %d\n"
.LC48:
	.string	"p_free_buf_head = %d\n"
.LC49:
	.string	"free_buf_count = %d\n"
.LC50:
	.string	"buf = %d, next=%d, flag=%d gc_write_flag=%d, lun_state=%d, op_status = %d lpa=%x, ppa=%x\n"
.LC51:
	.string	"flash_mask_bad_block %d %d\n"
.LC52:
	.string	"zftl_debug"
.LC53:
	.string	"FLASH ID: %x %x %x %x %x %x\n"
.LC54:
	.string	"density: %d MB\n"
.LC55:
	.string	"device density: %d MB\n"
.LC56:
	.string	"FTL INFO:\n"
.LC57:
	.string	"max_lpn = 0x%x\n"
.LC58:
	.string	"density = 0x%x\n"
.LC59:
	.string	"slc vpn = 0x%x\n"
.LC60:
	.string	"xlc vpn = 0x%x\n"
.LC61:
	.string	"free slc blk = 0x%x\n"
.LC62:
	.string	"free xlc blk = 0x%x\n"
.LC63:
	.string	"free mix blk = 0x%x\n"
.LC64:
	.string	"slc data blk = 0x%x\n"
.LC65:
	.string	"slc cache blk = 0x%x\n"
.LC66:
	.string	"xlc data blk = 0x%x\n"
.LC67:
	.string	"free buf = %d, %d, %d\n"
.LC68:
	.string	"bad blk = %d %d\n"
.LC69:
	.string	"TBW = %d MB\n"
.LC70:
	.string	"TBR = %d MB\n"
.LC71:
	.string	"POC = %d\n"
.LC72:
	.string	"PLC = %d\n"
.LC73:
	.string	"sys run time = %d S\n"
.LC74:
	.string	"slc mode = %x %x %x\n"
.LC75:
	.string	"prog err = %d\n"
.LC76:
	.string	"read err = %d\n"
.LC77:
	.string	"GC XLC page = %d\n"
.LC78:
	.string	"GC SLC page = %d\n"
.LC79:
	.string	"discard page = 0x%x\n"
.LC80:
	.string	"version = %d\n"
.LC81:
	.string	"acblk = 0x%x %d %d\n"
.LC82:
	.string	"tmblk = 0x%x %d %d\n"
.LC83:
	.string	"gcblk = 0x%x %d %d\n"
.LC84:
	.string	"slc ec = %d, %d, %d, %d, %d\n"
.LC85:
	.string	"xlc ec = %d, %d, %d, %d, %d\n"
.LC86:
	.string	"gc free blk th = %d\n"
.LC87:
	.string	"gc vpn th = %d %d %d %d %d\n"
.LC88:
	.string	"swl blk = %x %x %x %x\n"
.LC89:
	.string	"rf info = %x %x %x %x %x\n"
.LC90:
	.string	"gc_add_sblk = %d, %d, %d, %d, %d, %d, %d\n"
.LC91:
	.string	"gc_add_sblk = %d, %d, %d\n"
.LC92:
	.string	"gc_add_sblk = %d, %d, %d,last update:%d, %d\n"
.LC93:
	.string	"gc_add_sblk = %d, %d, %d, %d, %d, %d\n"
.LC94:
	.string	"gc_mark_bad_ppa %d %x %x\n"
.LC95:
	.string	"status: %x, ppa: %x\n"
.LC96:
	.string	"%d gc_free_temp_buf buf id= %x\n"
.LC97:
	.string	"gc: b:%x,p:%x,i:%x; free buf=%d %d free slc th: %d\n"
.LC98:
	.string	"zftl_get_gc_node cache = %x index = %d vpn = %x\n"
.LC99:
	.string	"gc_search_src_blk mode = %x, src mode = %x, count= %d %d\n"
.LC100:
	.string	"swl_tlc_free_mini_ec_blk alloc sblk %x\n"
.LC101:
	.string	"zftl_get_free_sblk %x %d, %p %d %d\n"
.LC102:
	.string	"zftl_gc_get_free_sblk %x %x %x, %d %d %d\n"
.LC103:
	.string	"swl_slc_free_mini_ec_blk alloc sblk %x\n"
.LC104:
	.string	"list count:%p %d\n"
.LC105:
	.string	"%d: node:%x %x %x %x, %d %d %d %d %d\n"
.LC106:
	.string	"ftl_vpn_decrement %x = %d, %d\n"
.LC107:
	.string	"mask bad block:cs %x %x block: %x %x\n"
.LC108:
	.string	"gc_free_bad_sblk 0x%x\n"
.LC109:
	.string	"swl_slc_free_mini_ec_blk sblk %x\n"
.LC110:
	.string	"gc_free_src_blk = %x, vpn = %d\n"
.LC111:
	.string	"gc_free_src_blk %x, %d\n"
.LC112:
	.string	"bad blk = %x, %x free blk: s:%x,t:%x,m:%x, data blk:s:%x,%x,t%x vpn: s:%x t:%x, max_vpn: %x\n"
.LC113:
	.string	"totle w: %d MB,r: %d MB %d dv:0x%X,poc:%d\n"
.LC114:
	.string	"gc xlc page: %d,gc slc page: %d, tmp w: %d MB\n"
.LC115:
	.string	"slc ec: %d,%d,%d,%d,%d,tlc ec: %d,%d,%d,%d,%d\n"
.LC116:
	.string	"gc th: tlc_tlc: %d tlc_slc: %d slc_slc: %d slc_tlc:%d free_th: %d\n"
.LC117:
	.string	"swl : %x %x %x %x %x %x\n"
.LC118:
	.string	"ftl prog error =%x, lpa = %x, ppa= %x\n"
.LC119:
	.string	"ftl re prog: lpa = %x, ppa= %x\n"
.LC120:
	.string	"dump_sblk_queue: %d\n"
.LC121:
	.string	"buf id= %d state = %d ppa = %x\n"
.LC122:
	.string	"%s %d %d\n"
.LC123:
	.string	"gc_static_wearleveling: min blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC124:
	.string	"gc_static_wearleveling: min slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC125:
	.string	"gc_static_wearleveling: min tlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC126:
	.string	"gc_static_wearleveling: max slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC127:
	.string	"gc_static_wearleveling: max xlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC128:
	.string	"gc_static_wearleveling: slc blk: %x, tlc blk: %d avg slc ec: %d, avg tlc ec: %d \n"
.LC129:
	.string	"gc_static_wearleveling: min slc ec: %x, min tlc ec: %d max slc ec: %d, max tlc ec: %d; %d %d\n"
.LC130:
	.string	"swl add tlc gc = %x, %d, %d, %d, %d, %d\n"
.LC131:
	.string	"swl add slc gc  = %x, %d, %d, %d, %d, %d\n"
.LC132:
	.string	"free blk vpn error: %x %x\n"
.LC133:
	.string	"GC PM block %x %x %x %d\n"
.LC134:
	.string	"ftl_free_no_use_map_blk %x %x %x %d\n"
.LC135:
	.string	"...%d @ %s\n"
.LC136:
	.string	"...%s enter... %p\n"
.LC137:
	.string	"0:%x %x %x %x %x\n"
.LC138:
	.string	"g_nandc_ver...%d\n"
.LC139:
	.string	"rk_ftl_de_init %x\n"
.LC140:
	.string	"\0013"
.LC141:
	.string	"otp error! %d"
.LC142:
	.string	"rr"
.LC143:
	.string	"flash_abort_clear = %d\n"
.LC144:
	.string	"%d mtrans_cnt = %d page_num = %d\n"
.LC145:
	.string	"%d flReg.d32=%x %x\n"
.LC146:
	.string	"nandc:"
.LC147:
	.string	"nandc_xfer_done read error %x\n"
.LC148:
	.string	"dqs data abort %x\n"
.LC149:
	.string	"dqs data timeout %x\n"
.LC150:
	.string	"xfer error %x\n"
.LC151:
	.string	"MT %d row=%x,last status %d,status = %d\n"
.LC152:
	.string	"MT RR %d row=%x,count %d,status=%d\n"
.LC153:
	.string	"toshiba SRR %d row=%x, status=%d\n"
.LC154:
	.string	"toshiba TRR %d row=%x, status=%d\n"
.LC155:
	.string	"toshiba RR %d row=%x,count %d,status=%d\n"
.LC156:
	.string	"YMTC RR %d row=%x,count %d,status=%d\n"
.LC157:
	.string	"samsung SRR %d row=%x, status=%d\n"
.LC158:
	.string	"samsung TRR %d row=%x, status=%d\n"
.LC159:
	.string	"samsung RR %d row=%x,count %d,status=%d\n"
.LC160:
	.string	"hynix RR %d row=%x, count %d, status=%d\n"
.LC161:
	.string	"%d flash_ddr_tuning_read %x ecc=%d\n"
.LC162:
	.string	"sync para %d\n"
.LC163:
	.string	"DDR mode Read error %x %x\n"
.LC164:
	.string	"SDR mode Read %x %x ecc:%x\n"
.LC165:
	.string	"flash_read_page_en %x %x %x %x\n"
.LC166:
	.string	"flash_read_page_en %x %x error_ecc %d %d\n"
.LC167:
	.string	"flash_get_last_written_page: %x %x %x\n"
.LC168:
	.string	"flash_prog_page page_addr = %x status = %x\n"
.LC169:
	.string	"flash_prog_page %x %x %x\n"
.LC170:
	.string	"ymtc_flash_tlc_page_prog page_addr = %x status = %x\n"
.LC171:
	.string	"sblk_mlc_dump_prog wl_addr= %x ppa = %x ppa = %x\n"
.LC172:
	.string	"flash_complete_page_read %x %x error_ecc %d %d\n"
.LC173:
	.string	"read: %x %x %x %x\n"
.LC174:
	.string	"0set buf %d,status = %x, ppa = %x lun state = %d\n"
.LC175:
	.string	"prog end %x %x error_ecc %d %d\n"
.LC176:
	.string	"1set buf %d,status = %x, ppa = %x lun state = %d\n"
.LC177:
	.string	"dp prog end %x %x error_ecc %d %d\n"
.LC178:
	.string	"sblk_prog_page ppa = %x, count = %d\n"
.LC179:
	.string	"err: ppa = %x, status = %x, %x %x spare: %x %x %x %x\n"
.LC180:
	.string	"flash_prog_page_en:%x %x %x\n"
.LC181:
	.string	"w d:"
.LC182:
	.string	"w s:"
.LC183:
	.string	"spare"
.LC184:
	.string	"data"
.LC185:
	.string	"write error: %x\n"
.LC186:
	.string	"g_ftl_info_blk blk = %x, page = %x version = %d\n"
.LC187:
	.string	"%d %x @%d %x\n"
.LC188:
	.string	"ftl_info_blk_init %d %d %x\n"
.LC189:
	.string	"ftl info hash %x error\n"
.LC190:
	.string	"ink flag: %x\n"
.LC191:
	.string	"%s %d %d %x %x\n"
.LC192:
	.string	"ext info hash %x error\n"
.LC193:
	.string	"%s %x %x %x\n"
.LC194:
	.string	"ftl_sblk_dump_write = %x %d %d %d %d\n"
.LC195:
	.string	"blk= %x, page=%x, ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n"
.LC196:
	.string	"ftl_sblk_dump_write2 = %x %d %d %d\n"
.LC197:
	.string	"ftl_sblk_dump_write = %x %x\n"
.LC198:
	.string	"ftl_sblk_dump_write done = %x\n"
.LC199:
	.string	"%x: ink_scaned_blk_num %x\n"
.LC200:
	.string	"ftl_ink_check_sblk = %x %d %d\n"
.LC201:
	.string	"ftl_ink_check_sblk = %x %d %d end\n"
.LC202:
	.string	"alloc sblk %x %d\n"
.LC203:
	.string	"blk %x is bad block\n"
.LC204:
	.string	"pm_alloc_new_blk: %x %x %x %x\n"
.LC205:
	.string	"pm_write_page write error: %x\n"
.LC206:
	.string	"finfo:"
.LC207:
	.string	"flash_info_flush id = %x, page = %x\n"
.LC208:
	.string	"sys_info_flush error:%x\n"
.LC209:
	.string	"...%d @ %s %d %p\n"
.LC210:
	.string	"no sys info %x\n"
.LC211:
	.string	"l2p:"
.LC212:
	.string	"saved_active_page  = %x\n"
.LC213:
	.string	"saved_active_plane = %x\n"
.LC214:
	.string	"sblk = %x\n"
.LC215:
	.string	"phy_blk = %x %x\n"
.LC216:
	.string	"num_planes = %x\n"
.LC217:
	.string	"recovery blk=%x, page=%x, ppa = %x, status = %x, hash:%x\n"
.LC218:
	.string	"data:"
.LC219:
	.string	"sblk = %x, vpn0 = %d, vpn1 = %d\n"
.LC220:
	.string	"dump_write_lpa = %x %x %x %x\n"
.LC221:
	.string	"dump write new ppa = %x, last ppa = %x lpa = %x\n"
.LC222:
	.string	"dump write = %x %x %x\n"
.LC223:
	.string	"dump write hash update = %x %x %x\n"
.LC224:
	.string	"free_buf_count: %d\n"
.LC225:
	.string	"g_ftl_info_blk blk:0x%x, index:0x%x, page:0x%x\n"
.LC226:
	.string	"ftl_ext_info_blk blk:0x%x, page:0x%x\n"
.LC227:
	.string	"ac_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n"
.LC228:
	.string	"tmp_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n"
.LC229:
	.string	"gc_blk:0x%x, page:0x%x, index:0x%x, free:0x%x, page_index:0x%x\n"
.LC230:
	.string	"lpa:"
.LC231:
	.string	"vpn:"
.LC232:
	.string	"sblk:"
.LC233:
	.string	"lpa_hash:"
.LC234:
	.string	"lpa_hash_index:"
.LC235:
	.string	"%s w error lpn = %x, max ppa = %d\n"
.LC236:
	.string	"region_id = %d, pm_max_region = %d\n"
.LC237:
	.string	"load_l2p_region no ppa = %x , %x, all setting 0xff....\n"
.LC238:
	.string	"load_l2p_region = %x,%x,%x, %x\n"
.LC239:
	.string	"pm_ppa:"
.LC240:
	.string	"spare:"
.LC241:
	.string	"pm_init posr %x %x %x\n"
.LC242:
	.string	"pm_init recovery %x %x %x\n"
.LC243:
	.string	"pm_init hash %x error\n"
.LC244:
	.string	"pm_log2phys  lpn = %d, max lpn = %d\n"
.LC245:
	.string	"ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n"
.LC246:
	.string	"ppa = %x, status = %x, %x %x spare: %x %x %x %x\n"
.LC247:
	.string	"gc_recovery: %x vpn = %x\n"
.LC248:
	.string	"gc_update_l2p_map_new sblk %x\n"
.LC249:
	.string	"gc_update_l2p_map_new: %x %x %x\n"
.LC250:
	.string	"lpa: %x %x %x\n"
.LC251:
	.string	"gc_update_l2p_map_new: %x vpn = %x vpn1 = %x done\n"
.LC252:
	.string	"gc_scan_src_blk = %x, vpn = %d\n"
.LC253:
	.string	"js hash error:%x %x %x\n"
.LC254:
	.string	"gc_scan_src_blk = %x, s vpn0 = %d, c vpn1 = %d\n"
.LC255:
	.string	"gc_block_vpn_scan = %x, s vpn0 = %d, c vpn1 = %d f:%d\n"
.LC256:
	.string	"ftl_sblk_dump = %x %d %d %d %d\n"
.LC257:
	.string	"ftl_sblk_dump = %x %x %x %x\n"
.LC258:
	.string	"page_addr = %x, lpa=%x vpn = %d\n"
.LC259:
	.string	"index= %x, lpa=%x\n"
.LC260:
	.string	"block = %x, vpn=%x check vpn = %x\n"
.LC261:
	.string	"ftl_read %x %x %x\n"
.LC262:
	.string	"ftl_read refresh =%x, lpa = %x, ppa= %x\n"
.LC263:
	.string	"id=%d, status = %x, lpa = %x, ppa = %x spare = %x %x %x %x\n"
.LC264:
	.string	"zftl debug cmd: %s\n"
.LC265:
	.string	"cmd:"
.LC266:
	.string	"dumpl2p"
.LC267:
	.string	"pm l2p:"
.LC268:
	.string	"pm blk:"
.LC269:
	.string	"dumppm:"
.LC270:
	.string	"p_cmd: %s\n"
.LC271:
	.string	"pm ram = %x, %x\n"
.LC272:
	.string	"ram:"
.LC273:
	.string	"pm:"
.LC274:
	.string	"dumpsys"
.LC275:
	.string	"dumplist:"
.LC276:
	.string	"vpncheck"
.LC277:
	.string	"dumpppa:"
.LC278:
	.string	"dumpblk:"
.LC279:
	.string	"setzdebug:"
.LC280:
	.string	"lpa2ppa:"
.LC281:
	.string	"lpa: %x--> ppa: %x\n"
.LC282:
	.string	"help:\n"
.LC283:
	.string	"1. echo dumpl2p > /proc/zftl_debug\n"
.LC284:
	.string	"2. echo dumppm:x > /proc/zftl_debug\n"
.LC285:
	.string	"3. echo dumpsys > /proc/zftl_debug\n"
.LC286:
	.string	"4. echo dumpppa:x > /proc/zftl_debug\n"
.LC287:
	.string	"5. echo vpncheck > /proc/zftl_debug\n"
.LC288:
	.string	"6. echo setzdebug:x > /proc/zftl_debug\n"
.LC289:
	.string	"7. echo dumplist:x > /proc/zftl_debug\n"
.LC290:
	.string	"8. echo lpa2ppa:x> /proc/zftl_debug\n"
.LC291:
	.string	"ftl_update_l2p_map: %x %x %x\n"
.LC292:
	.string	"ftl_update_l2p_map"
.LC293:
	.string	"lpa_tbl:"
.LC294:
	.string	"sblk %x vpn: %d %d\n"
.LC295:
	.string	"error gc_add_sblk: %x\n"
.LC296:
	.string	"%d read error: ppa:%x, lpa:%x, status:%x\n"
.LC297:
	.string	"gc page in buf: lpa %x ppa = %x pageindex= %x\n"
.LC298:
	.string	"gc_do_copy_back: lpa %x des_ppa = %x %x gc_ppa= %x page_index= %d\n"
.LC299:
	.string	"gc %d: %d %d %d %d %d %d %d\n"
.LC300:
	.string	"GC_STATE_SCAN_ALL_PAGE = %x, vpn0 = %d, vpn1 = %d\n"
.LC301:
	.string	"gc free %x, %d\n"
.LC302:
	.string	"_c_user_data_density := %d\n"
.LC303:
	.string	"_c_totle_phy_density := %d\n"
.LC304:
	.string	"_c_totle_log_page := %d\n"
.LC305:
	.string	"_c_totle_data_density := %d\n"
.LC306:
	.string	"_c_ftl_pm_page_num := %d\n"
.LC307:
	.string	"_c_ftl_byte_pre_page := %d\n"
.LC308:
	.string	"_c_max_pm_sblk := %d\n"
.LC309:
	.string	"_min_slc_super_block := %d\n"
.LC310:
	.string	"_max_xlc_super_block := %d\n"
.LC311:
	.string	"gp_ftl_ext_info %p %p %p\n"
.LC312:
	.string	"flash info size: %d %d %d\n"
.LC313:
	.string	"ftl_init %x\n"
.LC314:
	.string	"ftlwrite %x %x %x %x\n"
.LC315:
	.string	"ftl_discard:(%x, %x, %x, %x)\n"
.LC316:
	.string	"id_block_prog_msb_ff_data slc page = %d pageadd=%x %x\n"
.LC317:
	.string	"write_idblock fix data %x %x\n"
.LC318:
	.string	"idblk:"
.LC319:
	.string	"write_idblock totle_sec %x %x\n"
.LC320:
	.string	"prog page: %x %x %x, %p %x %x %x\n"
.LC321:
	.string	"read page: %x %x %x %x\n"
.LC322:
	.string	"wl_lba %p %x %x %x\n"
.LC323:
	.string	"return ret = %lx\n"
.LC324:
	.string	"\0013vendor storage %x,%x,%x\n"