	.file	"252178.c"
	.intel_syntax noprefix
	.text
	.globl	current_execution_context
	.bss
	.align 4
	.type	current_execution_context, @object
	.size	current_execution_context, 4
current_execution_context:
	.zero	4
	.globl	_ddv_module_init
	.align 8
	.type	_ddv_module_init, @object
	.size	_ddv_module_init, 8
_ddv_module_init:
	.zero	8
	.globl	_ddv_module_exit
	.align 8
	.type	_ddv_module_exit, @object
	.size	_ddv_module_exit, 8
_ddv_module_exit:
	.zero	8
	.text
	.globl	pthread_create
	.type	pthread_create, @function
pthread_create:
.LFB0:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	QWORD PTR -32[rbp], rcx
	mov	eax, 0
	call	nondet_pthread_t@PLT
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	rdx
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	pthread_create, .-pthread_create
	.globl	jiffies
	.bss
	.align 8
	.type	jiffies, @object
	.size	jiffies, 8
jiffies:
	.zero	8
	.globl	fixed_cdev
	.align 32
	.type	fixed_cdev, @object
	.size	fixed_cdev, 240
fixed_cdev:
	.zero	240
	.globl	fixed_cdev_used
	.align 4
	.type	fixed_cdev_used, @object
	.size	fixed_cdev_used, 4
fixed_cdev_used:
	.zero	4
	.globl	number_cdev_registered
	.align 2
	.type	number_cdev_registered, @object
	.size	number_cdev_registered, 2
number_cdev_registered:
	.zero	2
	.globl	cdev_registered
	.align 32
	.type	cdev_registered, @object
	.size	cdev_registered, 1120
cdev_registered:
	.zero	1120
	.text
	.globl	call_cdev_functions
	.type	call_cdev_functions, @function
call_cdev_functions:
.LFB1:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	movzx	eax, WORD PTR number_cdev_registered[rip]
	test	ax, ax
	je	.L47
	mov	eax, 0
	call	nondet_ushort@PLT
	mov	WORD PTR -52[rbp], ax
	movzx	eax, WORD PTR -52[rbp]
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -44[rbp], 0
	js	.L6
	movzx	eax, WORD PTR number_cdev_registered[rip]
	cwde
	cmp	DWORD PTR -44[rbp], eax
	jge	.L7
	mov	DWORD PTR -48[rbp], 1
	jmp	.L8
.L7:
	mov	DWORD PTR -48[rbp], 0
	jmp	.L8
.L6:
	mov	DWORD PTR -48[rbp], 0
.L8:
	mov	eax, DWORD PTR -48[rbp]
	mov	edi, eax
	mov	eax, 0
	call	__CPROVER_assume@PLT
	mov	eax, 0
	call	nondet_ushort@PLT
	mov	WORD PTR -50[rbp], ax
	movzx	eax, WORD PTR -50[rbp]
	cmp	eax, 26
	ja	.L48
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L11[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L11[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L11:
	.long	.L37-.L11
	.long	.L36-.L11
	.long	.L49-.L11
	.long	.L34-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L30-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L26-.L11
	.long	.L49-.L11
	.long	.L24-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.long	.L49-.L11
	.text
.L37:
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	je	.L50
	mov	eax, 0
	call	nondet_loff_t@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	eax, 0
	call	nondet_int@PLT
	mov	DWORD PTR -28[rbp], eax
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	r8, QWORD PTR 8[rax]
	mov	rcx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	lea	rdx, cdev_registered[rip]
	add	rax, rdx
	lea	rdi, 8[rax]
	mov	eax, DWORD PTR -28[rbp]
	mov	edx, eax
	mov	rsi, rcx
	call	r8
	jmp	.L50
.L36:
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	rax, QWORD PTR 16[rax]
	test	rax, rax
	je	.L51
	mov	eax, 0
	call	nondet_char@PLT
	mov	BYTE PTR -53[rbp], al
	mov	eax, 0
	call	nondet_size_t@PLT
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	r8, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	lea	rdx, cdev_registered[rip]
	add	rax, rdx
	lea	rdi, 8[rax]
	lea	rcx, -24[rbp]
	mov	edx, DWORD PTR -32[rbp]
	lea	rax, -53[rbp]
	mov	rsi, rax
	call	r8
	jmp	.L51
.L34:
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	rax, QWORD PTR 24[rax]
	test	rax, rax
	je	.L52
	mov	eax, 0
	call	nondet_char@PLT
	mov	BYTE PTR -53[rbp], al
	mov	eax, 0
	call	nondet_size_t@PLT
	mov	DWORD PTR -32[rbp], eax
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	r8, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	lea	rdx, cdev_registered[rip]
	add	rax, rdx
	lea	rdi, 8[rax]
	lea	rcx, -24[rbp]
	mov	edx, DWORD PTR -32[rbp]
	lea	rax, -53[rbp]
	mov	rsi, rax
	call	r8
	jmp	.L52
.L30:
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	rax, QWORD PTR 48[rax]
	test	rax, rax
	je	.L53
	mov	eax, 0
	call	nondet_uint@PLT
	mov	DWORD PTR -36[rbp], eax
	mov	eax, 0
	call	nondet_ulong@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	r8, QWORD PTR 48[rax]
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	lea	rdx, cdev_registered[rip]
	add	rax, rdx
	lea	rsi, 8[rax]
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	lea	rdx, 64[rax]
	lea	rax, cdev_registered[rip]
	lea	rdi, [rdx+rax]
	mov	rdx, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR -36[rbp]
	mov	rcx, rdx
	mov	edx, eax
	call	r8
	jmp	.L53
.L26:
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	rax, QWORD PTR 80[rax]
	test	rax, rax
	je	.L54
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip+104]
	mov	eax, DWORD PTR [rdx+rax]
	test	eax, eax
	jne	.L54
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	rdx, QWORD PTR 80[rax]
	mov	eax, DWORD PTR -44[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	sub	rax, rcx
	sal	rax, 4
	lea	rcx, cdev_registered[rip]
	add	rax, rcx
	lea	rcx, 8[rax]
	mov	eax, DWORD PTR -44[rbp]
	movsx	rsi, eax
	mov	rax, rsi
	sal	rax, 3
	sub	rax, rsi
	sal	rax, 4
	lea	rsi, 64[rax]
	lea	rax, cdev_registered[rip]
	add	rax, rsi
	mov	rsi, rcx
	mov	rdi, rax
	call	rdx
	mov	DWORD PTR -40[rbp], eax
	cmp	DWORD PTR -40[rbp], 0
	jne	.L54
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip+104]
	mov	DWORD PTR [rdx+rax], 1
	jmp	.L54
.L24:
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	rax, QWORD PTR 96[rax]
	test	rax, rax
	je	.L55
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip+104]
	mov	eax, DWORD PTR [rdx+rax]
	test	eax, eax
	je	.L55
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR 8[rax]
	mov	rdx, QWORD PTR 96[rax]
	mov	eax, DWORD PTR -44[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	sal	rax, 3
	sub	rax, rcx
	sal	rax, 4
	lea	rcx, cdev_registered[rip]
	add	rax, rcx
	lea	rcx, 8[rax]
	mov	eax, DWORD PTR -44[rbp]
	movsx	rsi, eax
	mov	rax, rsi
	sal	rax, 3
	sub	rax, rsi
	sal	rax, 4
	lea	rsi, 64[rax]
	lea	rax, cdev_registered[rip]
	add	rax, rsi
	mov	rsi, rcx
	mov	rdi, rax
	call	rdx
	mov	DWORD PTR -40[rbp], eax
	cmp	DWORD PTR -40[rbp], 0
	jne	.L55
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 4
	mov	rdx, rax
	lea	rax, cdev_registered[rip+104]
	mov	DWORD PTR [rdx+rax], 0
	jmp	.L55
.L48:
	nop
	jmp	.L3
.L49:
	nop
	jmp	.L3
.L50:
	nop
	jmp	.L3
.L51:
	nop
	jmp	.L3
.L52:
	nop
	jmp	.L3
.L53:
	nop
	jmp	.L3
.L54:
	nop
	jmp	.L3
.L55:
	nop
	jmp	.L3
.L47:
	nop
.L3:
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L46
	call	__stack_chk_fail@PLT
.L46:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	call_cdev_functions, .-call_cdev_functions
	.globl	pthread_mutex_init
	.type	pthread_mutex_init, @function
pthread_mutex_init:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	BYTE PTR -1[rbp], 0
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR -1[rbp]
	mov	BYTE PTR [rax], dl
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	pthread_mutex_init, .-pthread_mutex_init
	.globl	pthread_mutex_destroy
	.type	pthread_mutex_destroy, @function
pthread_mutex_destroy:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	pthread_mutex_destroy, .-pthread_mutex_destroy
	.globl	pthread_mutex_lock
	.type	pthread_mutex_lock, @function
pthread_mutex_lock:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	eax, 0
	call	__CPROVER_atomic_begin@PLT
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	xor	eax, 1
	movzx	eax, al
	mov	edi, eax
	mov	eax, 0
	call	__CPROVER_assume@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 1
	mov	eax, 0
	call	__CPROVER_atomic_end@PLT
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	pthread_mutex_lock, .-pthread_mutex_lock
	.section	.rodata
	.align 8
.LC0:
	.string	"pthread_mutex_unlock without lock"
	.text
	.globl	pthread_mutex_unlock
	.type	pthread_mutex_unlock, @function
pthread_mutex_unlock:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	lea	rsi, .LC0[rip]
	mov	edi, eax
	mov	eax, 0
	call	__CPROVER_assert@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 0
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	pthread_mutex_unlock, .-pthread_mutex_unlock
	.globl	number_genhd_registered
	.bss
	.align 2
	.type	number_genhd_registered, @object
	.size	number_genhd_registered, 2
number_genhd_registered:
	.zero	2
	.globl	number_fixed_genhd_used
	.align 2
	.type	number_fixed_genhd_used, @object
	.size	number_fixed_genhd_used, 2
number_fixed_genhd_used:
	.zero	2
	.globl	fixed_gendisk
	.align 32
	.type	fixed_gendisk, @object
	.size	fixed_gendisk, 1520
fixed_gendisk:
	.zero	1520
	.globl	genhd_registered
	.align 32
	.type	genhd_registered, @object
	.size	genhd_registered, 2480
genhd_registered:
	.zero	2480
	.globl	registered_pci_driver
	.align 32
	.type	registered_pci_driver, @object
	.size	registered_pci_driver, 448
registered_pci_driver:
	.zero	448
	.globl	registered_irq
	.align 32
	.type	registered_irq, @object
	.size	registered_irq, 256
registered_irq:
	.zero	256
	.globl	number_tasklet_registered
	.align 2
	.type	number_tasklet_registered, @object
	.size	number_tasklet_registered, 2
number_tasklet_registered:
	.zero	2
	.globl	tasklet_registered
	.align 32
	.type	tasklet_registered, @object
	.size	tasklet_registered, 160
tasklet_registered:
	.zero	160
	.globl	number_timer_registered
	.align 2
	.type	number_timer_registered, @object
	.size	number_timer_registered, 2
number_timer_registered:
	.zero	2
	.globl	timer_registered
	.align 32
	.type	timer_registered, @object
	.size	timer_registered, 40
timer_registered:
	.zero	40
	.globl	shared_workqueue
	.align 32
	.type	shared_workqueue, @object
	.size	shared_workqueue, 80
shared_workqueue:
	.zero	80
	.globl	kernel_lock
	.align 8
	.type	kernel_lock, @object
	.size	kernel_lock, 8
kernel_lock:
	.zero	8
	.text
	.globl	init_kernel
	.type	init_kernel, @function
init_kernel:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	lea	rdi, kernel_lock[rip]
	call	spin_lock_init
	mov	DWORD PTR -4[rbp], 0
	jmp	.L65
.L66:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, shared_workqueue[rip]
	mov	QWORD PTR [rdx+rax], 0
	add	DWORD PTR -4[rbp], 1
.L65:
	cmp	DWORD PTR -4[rbp], 9
	jle	.L66
	mov	DWORD PTR -4[rbp], 0
	jmp	.L67
.L68:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip]
	mov	QWORD PTR [rdx+rax], 0
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip+8]
	mov	WORD PTR [rdx+rax], 0
	add	DWORD PTR -4[rbp], 1
.L67:
	cmp	DWORD PTR -4[rbp], 9
	jle	.L68
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	init_kernel, .-init_kernel
	.type	ddv_2, @function
ddv_2:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
.L81:
	mov	eax, 0
	call	nondet_ushort@PLT
	mov	WORD PTR -2[rbp], ax
	movzx	eax, WORD PTR -2[rbp]
	cmp	eax, 5
	ja	.L84
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L73[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L73[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L73:
	.long	.L84-.L73
	.long	.L77-.L73
	.long	.L76-.L73
	.long	.L75-.L73
	.long	.L74-.L73
	.long	.L72-.L73
	.text
.L77:
	mov	DWORD PTR current_execution_context[rip], 2
	mov	eax, 0
	call	call_timer_functions@PLT
	mov	DWORD PTR current_execution_context[rip], 1
	jmp	.L78
.L76:
	mov	DWORD PTR current_execution_context[rip], 2
	call	call_interrupt_handler
	mov	DWORD PTR current_execution_context[rip], 1
	jmp	.L78
.L75:
	mov	DWORD PTR current_execution_context[rip], 1
	call	call_shared_workqueue_functions
	mov	DWORD PTR current_execution_context[rip], 1
	jmp	.L78
.L74:
	mov	DWORD PTR current_execution_context[rip], 2
	call	call_tasklet_functions
	mov	DWORD PTR current_execution_context[rip], 1
	jmp	.L78
.L72:
	mov	DWORD PTR current_execution_context[rip], 1
	mov	eax, 0
	call	call_pci_functions@PLT
	mov	DWORD PTR current_execution_context[rip], 1
	jmp	.L78
.L84:
	nop
.L78:
	cmp	WORD PTR -2[rbp], 0
	je	.L85
	jmp	.L81
.L85:
	nop
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	ddv_2, .-ddv_2
	.globl	ddv
	.type	ddv, @function
ddv:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rax, -16[rbp]
	mov	ecx, 0
	lea	rdx, ddv_2[rip]
	mov	esi, 0
	mov	rdi, rax
	call	pthread_create
.L89:
	mov	DWORD PTR current_execution_context[rip], 1
	call	call_cdev_functions
	mov	eax, 0
	call	nondet_int@PLT
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 0
	je	.L93
	jmp	.L89
.L93:
	nop
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L91
	call	__stack_chk_fail@PLT
.L91:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	ddv, .-ddv
	.globl	call_ddv
	.type	call_ddv, @function
call_ddv:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	DWORD PTR current_execution_context[rip], 1
	call	init_kernel
	mov	rax, QWORD PTR _ddv_module_init[rip]
	call	rax
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	je	.L95
	mov	eax, -1
	jmp	.L96
.L95:
	call	ddv
	mov	DWORD PTR current_execution_context[rip], 1
	mov	rax, QWORD PTR _ddv_module_exit[rip]
	call	rax
	mov	eax, 0
.L96:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	call_ddv, .-call_ddv
	.globl	register_blkdev
	.type	register_blkdev, @function
register_blkdev:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	QWORD PTR -32[rbp], rsi
	mov	eax, 0
	call	nondet_int@PLT
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	register_blkdev, .-register_blkdev
	.globl	unregister_blkdev
	.type	unregister_blkdev, @function
unregister_blkdev:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	mov	QWORD PTR -16[rbp], rsi
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	unregister_blkdev, .-unregister_blkdev
	.globl	alloc_disk
	.type	alloc_disk, @function
alloc_disk:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	movzx	eax, WORD PTR number_fixed_genhd_used[rip]
	cmp	ax, 9
	jg	.L102
	movzx	eax, WORD PTR number_fixed_genhd_used[rip]
	cwde
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	lea	rdx, fixed_gendisk[rip]
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -20[rbp]
	mov	DWORD PTR 8[rax], edx
	movzx	eax, WORD PTR number_fixed_genhd_used[rip]
	add	eax, 1
	mov	WORD PTR number_fixed_genhd_used[rip], ax
	mov	rax, QWORD PTR -8[rbp]
	jmp	.L103
.L102:
	mov	eax, 0
.L103:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	alloc_disk, .-alloc_disk
	.globl	add_disk
	.type	add_disk, @function
add_disk:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	movzx	eax, WORD PTR number_genhd_registered[rip]
	cmp	ax, 9
	jg	.L107
	movzx	eax, WORD PTR number_genhd_registered[rip]
	cwde
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 5
	sub	rax, rdx
	sal	rax, 3
	mov	rcx, rax
	lea	rdx, genhd_registered[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rcx+rdx], rax
	mov	edi, 32
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	movzx	eax, WORD PTR number_genhd_registered[rip]
	cwde
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 5
	sub	rax, rdx
	sal	rax, 3
	mov	rcx, rax
	lea	rdx, genhd_registered[rip+16]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rcx+rdx], rax
	movzx	eax, WORD PTR number_genhd_registered[rip]
	cwde
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 5
	sub	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, genhd_registered[rip+16]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	movzx	eax, WORD PTR number_genhd_registered[rip]
	add	eax, 1
	mov	WORD PTR number_genhd_registered[rip], ax
	nop
.L107:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	add_disk, .-add_disk
	.globl	del_gendisk
	.type	del_gendisk, @function
del_gendisk:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L109
.L111:
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 5
	sub	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, genhd_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	cmp	rdx, rax
	jne	.L110
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 5
	sub	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, genhd_registered[rip]
	mov	QWORD PTR [rdx+rax], 0
.L110:
	add	DWORD PTR -4[rbp], 1
.L109:
	movzx	eax, WORD PTR number_genhd_registered[rip]
	cwde
	cmp	DWORD PTR -4[rbp], eax
	jl	.L111
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	del_gendisk, .-del_gendisk
	.globl	call_interrupt_handler
	.type	call_interrupt_handler, @function
call_interrupt_handler:
.LFB23:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, 0
	call	nondet_int@PLT
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	mov	WORD PTR -18[rbp], ax
	cmp	WORD PTR -18[rbp], 15
	setbe	al
	movzx	eax, al
	mov	edi, eax
	mov	eax, 0
	call	__CPROVER_assume@PLT
	movzx	eax, WORD PTR -18[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, registered_irq[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	je	.L117
	movzx	eax, WORD PTR -18[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, registered_irq[rip]
	mov	r8, QWORD PTR [rdx+rax]
	movzx	eax, WORD PTR -18[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, registered_irq[rip+8]
	mov	rcx, QWORD PTR [rdx+rax]
	movzx	eax, WORD PTR -18[rbp]
	lea	rdx, -16[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	r8
	nop
.L117:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L116
	call	__stack_chk_fail@PLT
.L116:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	call_interrupt_handler, .-call_interrupt_handler
	.globl	fixed_request_queue
	.bss
	.align 32
	.type	fixed_request_queue, @object
	.size	fixed_request_queue, 880
fixed_request_queue:
	.zero	880
	.globl	number_request_queue_used
	.align 4
	.type	number_request_queue_used, @object
	.size	number_request_queue_used, 4
number_request_queue_used:
	.zero	4
	.text
	.globl	get_fixed_request_queue
	.type	get_fixed_request_queue, @function
get_fixed_request_queue:
.LFB24:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, DWORD PTR number_request_queue_used[rip]
	cmp	eax, 9
	jg	.L119
	mov	eax, DWORD PTR number_request_queue_used[rip]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR number_request_queue_used[rip]
	add	eax, 1
	mov	DWORD PTR number_request_queue_used[rip], eax
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	lea	rdx, fixed_request_queue[rip]
	add	rax, rdx
	jmp	.L120
.L119:
	mov	eax, 0
.L120:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	get_fixed_request_queue, .-get_fixed_request_queue
	.globl	blk_init_queue
	.type	blk_init_queue, @function
blk_init_queue:
.LFB25:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	eax, 0
	call	nondet_int@PLT
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 0
	je	.L122
	call	get_fixed_request_queue
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	QWORD PTR 64[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 80[rax], 1
	mov	rax, QWORD PTR -8[rbp]
	jmp	.L123
.L122:
	mov	eax, 0
.L123:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	blk_init_queue, .-blk_init_queue
	.globl	blk_alloc_queue
	.type	blk_alloc_queue, @function
blk_alloc_queue:
.LFB26:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, 0
	call	nondet_int@PLT
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 0
	je	.L125
	call	get_fixed_request_queue
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 80[rax], 1
	mov	rax, QWORD PTR -8[rbp]
	jmp	.L126
.L125:
	mov	eax, 0
.L126:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	blk_alloc_queue, .-blk_alloc_queue
	.globl	blk_queue_make_request
	.type	blk_queue_make_request, @function
blk_queue_make_request:
.LFB27:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 8[rax], rdx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	blk_queue_make_request, .-blk_queue_make_request
	.globl	end_request
	.type	end_request, @function
end_request:
.LFB28:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 72[rax]
	mov	rax, QWORD PTR 56[rax]
	mov	eax, DWORD PTR 76[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 5
	sub	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, genhd_registered[rip+240]
	mov	DWORD PTR [rdx+rax], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	end_request, .-end_request
	.globl	blk_queue_hardsect_size
	.type	blk_queue_hardsect_size, @function
blk_queue_hardsect_size:
.LFB29:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	eax, esi
	mov	WORD PTR -12[rbp], ax
	mov	rax, QWORD PTR -8[rbp]
	movzx	edx, WORD PTR -12[rbp]
	mov	WORD PTR 72[rax], dx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	blk_queue_hardsect_size, .-blk_queue_hardsect_size
	.globl	blk_cleanup_queue
	.type	blk_cleanup_queue, @function
blk_cleanup_queue:
.LFB30:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 80[rax], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	blk_cleanup_queue, .-blk_cleanup_queue
	.data
	.align 4
	.type	auto_probe, @object
	.size	auto_probe, 4
auto_probe:
	.long	1
	.align 4
	.type	cm206_base, @object
	.size	cm206_base, 4
cm206_base:
	.long	832
	.align 4
	.type	cm206_irq, @object
	.size	cm206_irq, 4
cm206_irq:
	.long	11
	.local	cm206
	.comm	cm206,8,8
	.globl	_ddv_module_license
	.type	_ddv_module_license, @object
	.size	_ddv_module_license, 4
_ddv_module_license:
	.string	"GPL"
	.local	cd
	.comm	cd,8,8
	.local	cm206_queue
	.comm	cm206_queue,8,8
	.align 8
	.type	cm206_lock, @object
	.size	cm206_lock, 8
cm206_lock:
	.long	1
	.long	0
	.text
	.type	send_command_polled, @function
send_command_polled:
.LFB31:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -4[rbp], 100
.L139:
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 6
	mov	edi, eax
	call	inw
	mov	WORD PTR -6[rbp], ax
	movzx	eax, WORD PTR -6[rbp]
	and	eax, 1
	test	eax, eax
	jne	.L142
	cmp	DWORD PTR -4[rbp], 0
	jle	.L143
	nop
	sub	DWORD PTR -4[rbp], 1
	jmp	.L139
.L142:
	nop
	jmp	.L137
.L143:
	nop
.L137:
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 10
	mov	edx, eax
	mov	eax, DWORD PTR -20[rbp]
	movzx	eax, ax
	mov	esi, edx
	mov	edi, eax
	call	outw
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	send_command_polled, .-send_command_polled
	.type	receive_echo_polled, @function
receive_echo_polled:
.LFB32:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	DWORD PTR -4[rbp], 100
.L148:
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 6
	mov	edi, eax
	call	inw
	mov	WORD PTR -8[rbp], ax
	movzx	eax, WORD PTR -8[rbp]
	and	eax, 2
	test	eax, eax
	jne	.L151
	cmp	DWORD PTR -4[rbp], 0
	jle	.L152
	nop
	sub	DWORD PTR -4[rbp], 1
	jmp	.L148
.L151:
	nop
	jmp	.L146
.L152:
	nop
.L146:
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 2
	mov	edi, eax
	call	inw
	mov	WORD PTR -6[rbp], ax
	movzx	eax, WORD PTR -6[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	receive_echo_polled, .-receive_echo_polled
	.type	send_receive_polled, @function
send_receive_polled:
.LFB33:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	send_command_polled
	call	receive_echo_polled
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR -1[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	send_receive_polled, .-send_receive_polled
	.type	clear_ur, @function
clear_ur:
.LFB34:
	.cfi_startproc
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 8[rax]
	cmp	dl, al
	je	.L160
	jmp	.L157
.L158:
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	add	edx, 1
	mov	BYTE PTR 9[rax], dl
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	and	edx, 3
	mov	BYTE PTR 9[rax], dl
.L157:
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 8[rax]
	cmp	dl, al
	jne	.L158
	nop
.L160:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	clear_ur, .-clear_ur
	.section	.data.rel.local,"aw"
	.align 32
	.type	cm206_tasklet, @object
	.size	cm206_tasklet, 32
cm206_tasklet:
	.long	0
	.zero	4
	.quad	cm206_tasklet_func
	.quad	0
	.long	1
	.zero	4
	.text
	.type	cm206_interrupt, @function
cm206_interrupt:
.LFB35:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	DWORD PTR -68[rbp], edi
	mov	QWORD PTR -80[rbp], rsi
	mov	eax, DWORD PTR cm206_base[rip]
	mov	edi, eax
	call	inw
	mov	WORD PTR -50[rbp], ax
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, WORD PTR -50[rbp]
	mov	WORD PTR [rax], dx
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 6
	mov	edi, eax
	call	inw
	mov	WORD PTR -48[rbp], ax
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, WORD PTR -48[rbp]
	mov	WORD PTR 2[rax], dx
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, WORD PTR 2[rax]
	movzx	eax, ax
	and	eax, 16
	test	eax, eax
	je	.L162
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2540[rax]
	add	edx, 1
	mov	DWORD PTR 2540[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -40[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -40[rbp]
	mov	DWORD PTR 2624[rax], edx
.L162:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, WORD PTR 2[rax]
	movzx	eax, ax
	and	eax, 2
	test	eax, eax
	je	.L163
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 2
	mov	edi, eax
	call	inb
	mov	BYTE PTR -53[rbp], al
	mov	rdx, QWORD PTR cd[rip]
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 8[rax]
	movzx	eax, al
	cdqe
	movzx	ecx, BYTE PTR -53[rbp]
	mov	BYTE PTR 4[rdx+rax], cl
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 6
	mov	edi, eax
	call	inw
	mov	WORD PTR -42[rbp], ax
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, WORD PTR -42[rbp]
	mov	WORD PTR 2[rax], dx
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 8[rax]
	mov	rax, QWORD PTR cd[rip]
	add	edx, 1
	mov	BYTE PTR 8[rax], dl
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 8[rax]
	mov	rax, QWORD PTR cd[rip]
	and	edx, 3
	mov	BYTE PTR 8[rax], dl
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2380
	mov	rdi, rax
	call	waitqueue_active@PLT
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 0
	je	.L164
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2443[rax]
	cmp	al, 1
	jg	.L164
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2408
	mov	rdi, rax
	call	del_timer
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2380
	mov	rdi, rax
	call	wake_up_interruptible
	jmp	.L164
.L163:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 128
	test	eax, eax
	je	.L165
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2443[rax]
	test	al, al
	je	.L166
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2448[rax]
	add	edx, 1
	mov	DWORD PTR 2448[rax], edx
.L166:
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2392
	mov	rdi, rax
	call	waitqueue_active@PLT
	mov	DWORD PTR -16[rbp], eax
	cmp	DWORD PTR -16[rbp], 0
	je	.L167
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2442[rax]
	test	al, al
	je	.L168
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2408
	mov	rdi, rax
	call	del_timer
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2392
	mov	rdi, rax
	call	wake_up_interruptible
	jmp	.L167
.L168:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2443[rax]
	test	al, al
	jne	.L167
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2408
	mov	rdi, rax
	call	del_timer
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2392
	mov	rdi, rax
	call	wake_up_interruptible
.L167:
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2464[rax]
	add	edx, 1
	mov	DWORD PTR 2464[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -12[rbp]
	mov	DWORD PTR 2548[rax], edx
	jmp	.L164
.L165:
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 12[rax]
	test	eax, eax
	je	.L178
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, WORD PTR 2[rax]
	movzx	eax, ax
	and	eax, 1
	test	eax, eax
	je	.L179
	mov	eax, DWORD PTR cm206_base[rip]
	mov	edi, eax
	call	inw
	mov	WORD PTR -46[rbp], ax
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 8
	mov	edx, eax
	movzx	eax, WORD PTR -46[rbp]
	and	eax, 127
	or	ah, 41
	movzx	eax, ax
	mov	esi, edx
	mov	edi, eax
	call	outw
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 10
	mov	edx, eax
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 12[rax]
	movzx	eax, ax
	mov	esi, edx
	mov	edi, eax
	call	outw
	mov	rax, QWORD PTR cd[rip]
	mov	DWORD PTR 12[rax], 0
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2443[rax]
	test	al, al
	jne	.L164
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2380
	mov	rdi, rax
	call	wake_up_interruptible
	jmp	.L164
.L178:
	nop
	jmp	.L169
.L179:
	nop
.L169:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 256
	test	eax, eax
	je	.L171
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 4
	mov	edi, eax
	call	inw
	mov	WORD PTR -44[rbp], ax
	movzx	eax, WORD PTR -44[rbp]
	mov	WORD PTR -52[rbp], ax
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2452[rax], 1
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2468[rax]
	add	edx, 1
	mov	DWORD PTR 2468[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -20[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -20[rbp]
	mov	DWORD PTR 2552[rax], edx
	jmp	.L164
.L171:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 512
	test	eax, eax
	je	.L172
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2472[rax]
	add	edx, 1
	mov	DWORD PTR 2472[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -24[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -24[rbp]
	mov	DWORD PTR 2556[rax], edx
	jmp	.L164
.L172:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 1024
	test	eax, eax
	je	.L173
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2476[rax]
	add	edx, 1
	mov	DWORD PTR 2476[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -28[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -28[rbp]
	mov	DWORD PTR 2560[rax], edx
	jmp	.L164
.L173:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2048
	test	eax, eax
	je	.L174
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2480[rax]
	add	edx, 1
	mov	DWORD PTR 2480[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -32[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -32[rbp]
	mov	DWORD PTR 2564[rax], edx
	jmp	.L164
.L174:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 8192
	test	eax, eax
	jne	.L164
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 8
	mov	esi, eax
	mov	edi, 10497
	call	outw
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2484[rax]
	add	edx, 1
	mov	DWORD PTR 2484[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -36[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -36[rbp]
	mov	DWORD PTR 2568[rax], edx
.L164:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2443[rax]
	test	al, al
	je	.L175
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2448[rax]
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2444[rax]
	sub	edx, eax
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2441[rax]
	movsx	eax, al
	cmp	edx, eax
	jne	.L176
	lea	rdi, cm206_tasklet[rip]
	call	tasklet_schedule
	jmp	.L175
.L176:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2452[rax]
	test	al, al
	je	.L175
	lea	rdi, cm206_tasklet[rip]
	call	tasklet_schedule
.L175:
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2460[rax]
	add	edx, 1
	mov	DWORD PTR 2460[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2544[rax], edx
	mov	eax, 1
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	cm206_interrupt, .-cm206_interrupt
	.type	cm206_timeout, @function
cm206_timeout:
.LFB36:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2440[rax], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	wake_up_interruptible
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	cm206_timeout, .-cm206_timeout
	.type	sleep_or_timeout, @function
sleep_or_timeout:
.LFB37:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2440[rax], 0
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2408
	mov	rdi, rax
	call	init_timer
	mov	rax, QWORD PTR cd[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 2424[rax], rdx
	mov	eax, DWORD PTR -12[rbp]
	movsx	rcx, eax
	mov	rdx, QWORD PTR jiffies[rip]
	mov	rax, QWORD PTR cd[rip]
	add	rdx, rcx
	mov	QWORD PTR 2408[rax], rdx
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2408
	mov	rdi, rax
	call	add_timer
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	interruptible_sleep_on
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2408
	mov	rdi, rax
	call	del_timer
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2440[rax]
	test	al, al
	je	.L183
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2440[rax], 0
	mov	eax, 1
	jmp	.L184
.L183:
	mov	eax, 0
.L184:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	sleep_or_timeout, .-sleep_or_timeout
	.type	send_command, @function
send_command:
.LFB38:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 6
	mov	edi, eax
	call	inw
	mov	WORD PTR -12[rbp], ax
	movzx	eax, WORD PTR -12[rbp]
	and	eax, 1
	test	eax, eax
	je	.L186
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 10
	mov	edx, eax
	mov	eax, DWORD PTR -20[rbp]
	movzx	eax, ax
	mov	esi, edx
	mov	edi, eax
	call	outw
	jmp	.L189
.L186:
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -20[rbp]
	mov	DWORD PTR 12[rax], edx
	call	cli@PLT
	mov	eax, DWORD PTR cm206_base[rip]
	mov	edi, eax
	call	inw
	mov	WORD PTR -10[rbp], ax
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 8
	mov	edx, eax
	movzx	eax, WORD PTR -10[rbp]
	and	eax, 127
	or	ah, 40
	movzx	eax, ax
	mov	esi, edx
	mov	edi, eax
	call	outw
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2380
	mov	esi, 5
	mov	rdi, rax
	call	sleep_or_timeout
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 0
	je	.L189
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2492[rax]
	add	edx, 1
	mov	DWORD PTR 2492[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2576[rax], edx
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 10
	mov	edx, eax
	mov	eax, DWORD PTR -20[rbp]
	movzx	eax, ax
	mov	esi, edx
	mov	edi, eax
	call	outw
	nop
.L189:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	send_command, .-send_command
	.type	receive_byte, @function
receive_byte:
.LFB39:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	call	cli@PLT
	mov	rdx, QWORD PTR cd[rip]
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 9[rax]
	movzx	eax, al
	cdqe
	movzx	eax, BYTE PTR 4[rdx+rax]
	mov	BYTE PTR -13[rbp], al
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 8[rax]
	cmp	dl, al
	je	.L191
	call	sti@PLT
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	add	edx, 1
	mov	BYTE PTR 9[rax], dl
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	and	edx, 3
	mov	BYTE PTR 9[rax], dl
	movzx	eax, BYTE PTR -13[rbp]
	jmp	.L192
.L191:
	mov	rax, QWORD PTR cd[rip]
	lea	rdx, 2380[rax]
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	mov	rdi, rdx
	call	sleep_or_timeout
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 0
	je	.L193
	cmp	DWORD PTR -20[rbp], 5
	jne	.L194
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2496[rax]
	add	edx, 1
	mov	DWORD PTR 2496[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2580[rax], edx
	jmp	.L195
.L194:
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2504[rax]
	add	edx, 1
	mov	DWORD PTR 2504[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -8[rbp]
	mov	DWORD PTR 2588[rax], edx
.L195:
	mov	eax, -38
	jmp	.L192
.L193:
	mov	rdx, QWORD PTR cd[rip]
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 9[rax]
	movzx	eax, al
	cdqe
	movzx	eax, BYTE PTR 4[rdx+rax]
	mov	BYTE PTR -13[rbp], al
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	add	edx, 1
	mov	BYTE PTR 9[rax], dl
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	and	edx, 3
	mov	BYTE PTR 9[rax], dl
	movzx	eax, BYTE PTR -13[rbp]
.L192:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	receive_byte, .-receive_byte
	.type	receive_echo, @function
receive_echo:
.LFB40:
	.cfi_startproc
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edi, 5
	call	receive_byte
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR -1[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	receive_echo, .-receive_echo
	.type	send_receive, @function
send_receive:
.LFB41:
	.cfi_startproc
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	send_command
	call	receive_echo
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR -1[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	send_receive, .-send_receive
	.type	wait_dsb, @function
wait_dsb:
.LFB42:
	.cfi_startproc
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edi, 700
	call	receive_byte
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR -1[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	wait_dsb, .-wait_dsb
	.type	type_0_command, @function
type_0_command:
.LFB43:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	call	clear_ur
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	send_receive
	mov	BYTE PTR -10[rbp], al
	movzx	eax, BYTE PTR -10[rbp]
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	je	.L203
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2488[rax]
	add	edx, 1
	mov	DWORD PTR 2488[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2572[rax], edx
	mov	eax, -1
	jmp	.L204
.L203:
	cmp	DWORD PTR -24[rbp], 0
	je	.L205
	call	wait_dsb
	mov	BYTE PTR -9[rbp], al
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR -9[rbp]
	mov	BYTE PTR 10[rax], dl
.L205:
	mov	eax, 0
.L204:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE43:
	.size	type_0_command, .-type_0_command
	.type	type_1_command, @function
type_1_command:
.LFB44:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	DWORD PTR -36[rbp], edi
	mov	DWORD PTR -40[rbp], esi
	mov	QWORD PTR -48[rbp], rdx
	mov	eax, DWORD PTR -36[rbp]
	mov	esi, 0
	mov	edi, eax
	call	type_0_command
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 0
	je	.L207
	mov	eax, -1
	jmp	.L208
.L207:
	mov	DWORD PTR -24[rbp], 0
	jmp	.L209
.L210:
	mov	eax, DWORD PTR -24[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -48[rbp]
	lea	rbx, [rdx+rax]
	mov	edi, 248
	call	send_receive
	mov	BYTE PTR [rbx], al
	add	DWORD PTR -24[rbp], 1
.L209:
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, DWORD PTR -40[rbp]
	jl	.L210
	mov	eax, 0
.L208:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE44:
	.size	type_1_command, .-type_1_command
	.type	reset_cm260, @function
reset_cm260:
.LFB45:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 8
	mov	esi, eax
	mov	edi, 11009
	call	outw
	mov	edi, 10
	call	udelay@PLT
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 8
	mov	esi, eax
	mov	edi, 10497
	call	outw
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE45:
	.size	reset_cm260, .-reset_cm260
	.type	fsm, @function
fsm:
.LFB46:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	mov	QWORD PTR -16[rbp], rsi
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	imul	rdx, rdx, 458129845
	shr	rdx, 32
	sar	edx, 3
	mov	ecx, eax
	sar	ecx, 31
	sub	edx, ecx
	imul	ecx, edx, 75
	sub	eax, ecx
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	imul	rdx, rdx, 458129845
	shr	rdx, 32
	sar	edx, 3
	sar	eax, 31
	mov	ecx, eax
	mov	eax, edx
	sub	eax, ecx
	mov	DWORD PTR -4[rbp], eax
	add	DWORD PTR -4[rbp], 2
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	imul	rdx, rdx, -2004318071
	shr	rdx, 32
	add	edx, eax
	sar	edx, 5
	mov	ecx, eax
	sar	ecx, 31
	sub	edx, ecx
	imul	ecx, edx, 60
	sub	eax, ecx
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	imul	rdx, rdx, -2004318071
	shr	rdx, 32
	add	edx, eax
	sar	edx, 5
	sar	eax, 31
	sub	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 2
	mov	BYTE PTR [rax], dl
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE46:
	.size	fsm, .-fsm
	.type	fsm2lba, @function
fsm2lba:
.LFB47:
	.cfi_startproc
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	lea	ecx, -2[rax]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	imul	eax, eax, 60
	add	eax, ecx
	imul	eax, eax, 75
	add	eax, edx
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE47:
	.size	fsm2lba, .-fsm2lba
	.type	f_s_m2lba, @function
f_s_m2lba:
.LFB48:
	.cfi_startproc
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	ecx, esi
	mov	eax, edx
	mov	edx, edi
	mov	BYTE PTR -4[rbp], dl
	mov	edx, ecx
	mov	BYTE PTR -8[rbp], dl
	mov	BYTE PTR -12[rbp], al
	movzx	edx, BYTE PTR -4[rbp]
	movzx	eax, BYTE PTR -8[rbp]
	lea	ecx, -2[rax]
	movzx	eax, BYTE PTR -12[rbp]
	imul	eax, eax, 60
	add	eax, ecx
	imul	eax, eax, 75
	add	eax, edx
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE48:
	.size	f_s_m2lba, .-f_s_m2lba
	.type	start_read, @function
start_read:
.LFB49:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	DWORD PTR -36[rbp], edi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	BYTE PTR -12[rbp], 32
	mov	DWORD PTR -28[rbp], 1
	jmp	.L220
.L221:
	mov	eax, DWORD PTR -28[rbp]
	mov	BYTE PTR -12[rbp+rax], 0
	add	DWORD PTR -28[rbp], 1
.L220:
	cmp	DWORD PTR -28[rbp], 3
	jbe	.L221
	lea	rax, -12[rbp]
	lea	rdx, 1[rax]
	mov	eax, DWORD PTR -36[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	fsm
	call	clear_ur
	mov	DWORD PTR -24[rbp], 0
	jmp	.L222
.L225:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	movzx	eax, BYTE PTR -12[rbp+rax]
	movzx	eax, al
	mov	edi, eax
	call	send_receive
	mov	BYTE PTR -30[rbp], al
	movzx	eax, BYTE PTR -30[rbp]
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	movzx	eax, BYTE PTR -12[rbp+rax]
	movzx	eax, al
	cmp	DWORD PTR -20[rbp], eax
	je	.L223
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2488[rax]
	add	edx, 1
	mov	DWORD PTR 2488[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -16[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -16[rbp]
	mov	DWORD PTR 2572[rax], edx
	cmp	DWORD PTR -20[rbp], 255
	jne	.L223
	call	receive_echo
	mov	BYTE PTR -29[rbp], al
	movzx	eax, BYTE PTR -29[rbp]
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	movzx	eax, BYTE PTR -12[rbp+rax]
	movzx	eax, al
	cmp	DWORD PTR -20[rbp], eax
	je	.L223
	mov	eax, -1
	jmp	.L226
.L223:
	add	DWORD PTR -24[rbp], 1
.L222:
	cmp	DWORD PTR -24[rbp], 3
	jle	.L225
	mov	eax, 0
.L226:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L227
	call	__stack_chk_fail@PLT
.L227:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE49:
	.size	start_read, .-start_read
	.type	stop_read, @function
stop_read:
.LFB50:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	esi, 0
	mov	edi, 112
	call	type_0_command
	call	receive_echo
	mov	BYTE PTR -9[rbp], al
	movzx	eax, BYTE PTR -9[rbp]
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 255
	je	.L229
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2508[rax]
	add	edx, 1
	mov	DWORD PTR 2508[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2592[rax], edx
	mov	eax, -1
	jmp	.L230
.L229:
	mov	eax, 0
.L230:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE50:
	.size	stop_read, .-stop_read
	.type	read_background, @function
read_background:
.LFB51:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2443[rax]
	test	al, al
	je	.L232
	mov	eax, -1
	jmp	.L233
.L232:
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 8
	mov	esi, eax
	mov	edi, 10497
	call	outw
	cmp	DWORD PTR -24[rbp], 0
	jne	.L234
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	start_read
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 0
	je	.L234
	mov	eax, -2
	jmp	.L233
.L234:
	mov	eax, DWORD PTR -20[rbp]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2448[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2444[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2443[rax], 1
	mov	eax, 0
.L233:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE51:
	.size	read_background, .-read_background
	.type	read_sector, @function
read_sector:
.LFB52:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	DWORD PTR -36[rbp], edi
	mov	DWORD PTR -28[rbp], 0
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2443[rax]
	test	al, al
	je	.L236
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2443[rax], 0
	mov	rax, QWORD PTR cd[rip]
	mov	DWORD PTR 2448[rax], -1
	call	stop_read
.L236:
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2452[rax], 0
	call	reset_cm260
	mov	eax, DWORD PTR -36[rbp]
	mov	edi, eax
	call	start_read
	mov	DWORD PTR -24[rbp], eax
	cmp	DWORD PTR -24[rbp], 0
	je	.L237
	mov	eax, -1
	jmp	.L238
.L237:
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2392
	mov	esi, 300
	mov	rdi, rax
	call	sleep_or_timeout
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 0
	je	.L239
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2500[rax]
	add	edx, 1
	mov	DWORD PTR 2500[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2584[rax], edx
	call	stop_read
	mov	eax, -3
	jmp	.L238
.L239:
	add	DWORD PTR -28[rbp], 1
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 4096
	test	eax, eax
	je	.L244
	cmp	DWORD PTR -28[rbp], 99
	jg	.L245
	jmp	.L237
.L244:
	nop
	jmp	.L242
.L245:
	nop
.L242:
	mov	rax, QWORD PTR cd[rip]
	add	rax, 20
	mov	edx, DWORD PTR cm206_base[rip]
	add	edx, 4
	mov	ecx, edx
	mov	edx, 1176
	mov	rsi, rax
	mov	edi, ecx
	call	insw@PLT
	mov	eax, DWORD PTR -36[rbp]
	add	eax, 1
	mov	esi, 1
	mov	edi, eax
	call	read_background
	mov	DWORD PTR -16[rbp], eax
	cmp	DWORD PTR -16[rbp], 0
	je	.L243
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2524[rax]
	add	edx, 1
	mov	DWORD PTR 2524[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -12[rbp]
	mov	DWORD PTR 2608[rax], edx
.L243:
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -36[rbp]
	mov	DWORD PTR 2372[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -36[rbp]
	add	edx, 1
	mov	DWORD PTR 2376[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2520[rax]
	add	edx, 1
	mov	DWORD PTR 2520[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -8[rbp]
	mov	DWORD PTR 2604[rax], edx
	mov	eax, 0
.L238:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE52:
	.size	read_sector, .-read_sector
	.type	cm206_tasklet_func, @function
cm206_tasklet_func:
.LFB53:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2443[rax]
	movsx	eax, al
	cmp	eax, 4
	je	.L247
	cmp	eax, 4
	jg	.L258
	cmp	eax, 3
	je	.L249
	cmp	eax, 3
	jg	.L258
	cmp	eax, 1
	je	.L250
	cmp	eax, 2
	je	.L251
	jmp	.L258
.L250:
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2528[rax]
	add	edx, 1
	mov	DWORD PTR 2528[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2612[rax], edx
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, WORD PTR 2[rax]
	movzx	eax, ax
	and	eax, 1
	test	eax, eax
	jne	.L252
	mov	rax, QWORD PTR cd[rip]
	mov	DWORD PTR 12[rax], 112
	mov	eax, DWORD PTR cm206_base[rip]
	mov	edi, eax
	call	inw
	mov	WORD PTR -14[rbp], ax
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 8
	mov	edx, eax
	movzx	eax, WORD PTR -14[rbp]
	and	eax, 127
	or	ah, 40
	movzx	eax, ax
	mov	esi, edx
	mov	edi, eax
	call	outw
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2443[rax], 2
	jmp	.L248
.L252:
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 10
	mov	esi, eax
	mov	edi, 112
	call	outw
.L251:
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2443[rax], 3
	jmp	.L248
.L249:
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 8[rax]
	cmp	dl, al
	je	.L253
	mov	rdx, QWORD PTR cd[rip]
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 9[rax]
	movzx	eax, al
	cdqe
	movzx	eax, BYTE PTR 4[rdx+rax]
	cmp	al, 112
	je	.L254
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2488[rax]
	add	edx, 1
	mov	DWORD PTR 2488[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -8[rbp]
	mov	DWORD PTR 2572[rax], edx
.L254:
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	add	edx, 1
	mov	BYTE PTR 9[rax], dl
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	and	edx, 3
	mov	BYTE PTR 9[rax], dl
.L253:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2443[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2443[rax], dl
	jmp	.L248
.L247:
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 8[rax]
	cmp	dl, al
	je	.L255
	mov	rdx, QWORD PTR cd[rip]
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 9[rax]
	movzx	eax, al
	cdqe
	movzx	eax, BYTE PTR 4[rdx+rax]
	cmp	al, -1
	je	.L256
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2508[rax]
	add	edx, 1
	mov	DWORD PTR 2508[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -12[rbp]
	mov	DWORD PTR 2592[rax], edx
.L256:
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	add	edx, 1
	mov	BYTE PTR 9[rax], dl
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR cd[rip]
	and	edx, 3
	mov	BYTE PTR 9[rax], dl
.L255:
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2443[rax], 0
.L248:
	nop
.L258:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE53:
	.size	cm206_tasklet_func, .-cm206_tasklet_func
	.type	get_drive_status, @function
get_drive_status:
.LFB54:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rax, -10[rbp]
	mov	rdx, rax
	mov	esi, 2
	mov	edi, 80
	call	type_1_command
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR -10[rbp]
	mov	BYTE PTR 10[rax], dl
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR -9[rbp]
	mov	BYTE PTR 11[rax], dl
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 3152[rax]
	mov	edx, eax
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 10[rax]
	movzx	eax, al
	and	eax, 168
	test	eax, eax
	setne	al
	or	edx, eax
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 3152[rax], dl
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L261
	call	__stack_chk_fail@PLT
.L261:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE54:
	.size	get_drive_status, .-get_drive_status
	.type	get_disc_status, @function
get_disc_status:
.LFB55:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2453
	mov	rdx, rax
	mov	esi, 7
	mov	edi, 81
	call	type_1_command
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE55:
	.size	get_disc_status, .-get_disc_status
	.type	cm206_open, @function
cm206_open:
.LFB56:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 16[rax]
	test	eax, eax
	jne	.L265
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2443[rax], 0
	call	reset_cm260
	mov	rax, QWORD PTR cd[rip]
	mov	DWORD PTR 2448[rax], -1
	mov	rax, QWORD PTR cd[rip]
	mov	DWORD PTR 2376[rax], -1
.L265:
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 16[rax]
	add	edx, 1
	mov	DWORD PTR 16[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2532[rax]
	add	edx, 1
	mov	DWORD PTR 2532[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2616[rax], edx
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE56:
	.size	cm206_open, .-cm206_open
	.type	cm206_release, @function
cm206_release:
.LFB57:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 16[rax]
	cmp	eax, 1
	jne	.L268
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2443[rax]
	test	al, al
	je	.L269
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2443[rax], 0
	call	stop_read
.L269:
	mov	rax, QWORD PTR cd[rip]
	mov	DWORD PTR 2376[rax], -1
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2454[rax], 0
.L268:
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 16[rax]
	sub	edx, 1
	mov	DWORD PTR 16[rax], edx
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE57:
	.size	cm206_release, .-cm206_release
	.type	empty_buffer, @function
empty_buffer:
.LFB58:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	jmp	.L272
.L273:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2452[rax]
	movsx	edx, al
	mov	eax, 1176
	sub	eax, edx
	cdqe
	mov	rdx, QWORD PTR cd[rip]
	lea	rcx, 20[rdx]
	mov	rdx, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 2452[rdx]
	movsx	rdx, dl
	add	rdx, rdx
	add	rcx, rdx
	mov	edx, DWORD PTR cm206_base[rip]
	add	edx, 4
	mov	edi, edx
	mov	rdx, rax
	mov	rsi, rcx
	call	insw@PLT
	sub	DWORD PTR -20[rbp], 1
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2444[rax]
	add	edx, 1
	mov	DWORD PTR 2444[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2452[rax], 0
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2516[rax]
	add	edx, 1
	mov	DWORD PTR 2516[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2600[rax], edx
.L272:
	cmp	DWORD PTR -20[rbp], 0
	jns	.L273
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2444[rax]
	mov	rax, QWORD PTR cd[rip]
	sub	edx, 1
	mov	DWORD PTR 2372[rax], edx
	mov	rdx, QWORD PTR cd[rip]
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2444[rdx]
	mov	DWORD PTR 2376[rax], edx
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE58:
	.size	empty_buffer, .-empty_buffer
	.type	try_adapter, @function
try_adapter:
.LFB59:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2444[rax]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L284
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2448[rax]
	cmp	DWORD PTR -20[rbp], eax
	jge	.L285
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2444[rax]
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, edx
	mov	edi, eax
	call	empty_buffer
	mov	eax, 0
	jmp	.L278
.L284:
	nop
	jmp	.L276
.L285:
	nop
.L276:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2443[rax]
	cmp	al, 1
	jne	.L279
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2444[rax]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L280
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2444[rax]
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2441[rax]
	movsx	eax, al
	add	eax, edx
	cmp	DWORD PTR -20[rbp], eax
	jge	.L281
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2442[rax], 1
	jmp	.L282
.L283:
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2392
	mov	esi, 300
	mov	rdi, rax
	call	sleep_or_timeout
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 0
	je	.L282
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2512[rax]
	add	edx, 1
	mov	DWORD PTR 2512[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2628[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2628[rax]
	add	edx, 1
	mov	DWORD PTR 2628[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 2596[rax], edx
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2442[rax], 0
	mov	eax, -1
	jmp	.L278
.L282:
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2448[rax]
	cmp	DWORD PTR -20[rbp], eax
	jge	.L283
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2442[rax], 0
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR 2444[rax]
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, edx
	mov	edi, eax
	call	empty_buffer
	mov	eax, 0
	jmp	.L278
.L281:
	mov	eax, -2
	jmp	.L278
.L280:
	mov	eax, -2
	jmp	.L278
.L279:
	mov	eax, -2
.L278:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE59:
	.size	try_adapter, .-try_adapter
	.type	do_cm206_request, @function
do_cm206_request:
.LFB60:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
.L298:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	elv_next_request@PLT
	mov	QWORD PTR -32[rbp], rax
	cmp	QWORD PTR -32[rbp], 0
	je	.L300
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 118
	test	rax, rax
	je	.L289
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	end_request
	jmp	.L290
.L289:
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR 64[rax]
	mov	rdi, rax
	call	spin_unlock_irq
	mov	DWORD PTR -56[rbp], 0
	mov	QWORD PTR -40[rbp], 0
	jmp	.L291
.L297:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 80[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	shr	rax, 2
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 80[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	and	eax, 3
	mov	DWORD PTR -52[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 104[rax]
	mov	rax, QWORD PTR -40[rbp]
	sal	rax, 9
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2372[rax]
	cdqe
	cmp	QWORD PTR -24[rbp], rax
	jl	.L301
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2376[rax]
	cdqe
	cmp	QWORD PTR -24[rbp], rax
	jge	.L302
	mov	rax, QWORD PTR cd[rip]
	lea	rsi, 20[rax]
	mov	eax, DWORD PTR -52[rbp]
	sal	eax, 9
	movsx	rdx, eax
	mov	rax, QWORD PTR cd[rip]
	mov	eax, DWORD PTR 2372[rax]
	movsx	rcx, eax
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, rcx
	imul	rax, rax, 2352
	add	rax, rdx
	add	rax, 16
	add	rax, rsi
	mov	QWORD PTR -8[rbp], rax
	mov	rcx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, 512
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	jmp	.L294
.L301:
	nop
	jmp	.L292
.L302:
	nop
.L292:
	mov	rax, QWORD PTR -24[rbp]
	mov	edi, eax
	call	try_adapter
	mov	DWORD PTR -48[rbp], eax
	cmp	DWORD PTR -48[rbp], 0
	je	.L295
	mov	rax, QWORD PTR -24[rbp]
	mov	edi, eax
	call	read_sector
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -44[rbp], 0
	je	.L296
	mov	DWORD PTR -56[rbp], 1
	jmp	.L294
.L296:
	mov	rax, QWORD PTR cd[rip]
	lea	rdx, 20[rax]
	mov	eax, DWORD PTR -52[rbp]
	sal	eax, 9
	cdqe
	add	rax, 16
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rcx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, 512
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	jmp	.L294
.L295:
	mov	rax, QWORD PTR cd[rip]
	lea	rdx, 20[rax]
	mov	eax, DWORD PTR -52[rbp]
	sal	eax, 9
	cdqe
	add	rax, 16
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rcx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, 512
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
.L294:
	add	QWORD PTR -40[rbp], 1
.L291:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 88[rax]
	mov	rax, QWORD PTR -40[rbp]
	cmp	rdx, rax
	ja	.L297
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR 64[rax]
	mov	rdi, rax
	call	spin_lock_irq
	cmp	DWORD PTR -56[rbp], 0
	sete	al
	movzx	edx, al
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	end_request
.L290:
	jmp	.L298
.L300:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE60:
	.size	do_cm206_request, .-do_cm206_request
	.type	seek, @function
seek:
.LFB61:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	DWORD PTR -36[rbp], edi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	BYTE PTR -12[rbp], 16
	mov	DWORD PTR -16[rbp], 1
	jmp	.L304
.L305:
	mov	eax, DWORD PTR -16[rbp]
	mov	BYTE PTR -12[rbp+rax], 0
	add	DWORD PTR -16[rbp], 1
.L304:
	cmp	DWORD PTR -16[rbp], 3
	jbe	.L305
	lea	rax, -12[rbp]
	lea	rdx, 1[rax]
	mov	eax, DWORD PTR -36[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	fsm
	mov	DWORD PTR -20[rbp], 0
	jmp	.L306
.L307:
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	movzx	eax, BYTE PTR -12[rbp+rax]
	movzx	eax, al
	mov	esi, 0
	mov	edi, eax
	call	type_0_command
	add	DWORD PTR -20[rbp], 1
.L306:
	cmp	DWORD PTR -20[rbp], 3
	jle	.L307
	call	wait_dsb
	mov	BYTE PTR -21[rbp], al
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR -21[rbp]
	mov	BYTE PTR 10[rax], dl
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L309
	call	__stack_chk_fail@PLT
.L309:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE61:
	.size	seek, .-seek
	.type	bcdbin, @function
bcdbin:
.LFB62:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, edi
	mov	BYTE PTR -4[rbp], al
	movzx	eax, BYTE PTR -4[rbp]
	shr	al, 4
	mov	edx, eax
	mov	eax, edx
	sal	eax, 2
	add	eax, edx
	add	eax, eax
	mov	edx, eax
	movzx	eax, BYTE PTR -4[rbp]
	and	eax, 15
	add	eax, edx
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE62:
	.size	bcdbin, .-bcdbin
	.type	normalize_track, @function
normalize_track:
.LFB63:
	.cfi_startproc
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, edi
	mov	BYTE PTR -4[rbp], al
	cmp	BYTE PTR -4[rbp], 0
	jne	.L313
	mov	eax, 1
	jmp	.L314
.L313:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2455[rax]
	cmp	BYTE PTR -4[rbp], al
	jbe	.L315
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2455[rax]
	add	eax, 1
	jmp	.L314
.L315:
	movzx	eax, BYTE PTR -4[rbp]
.L314:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE63:
	.size	normalize_track, .-normalize_track
	.type	get_toc_lba, @function
get_toc_lba:
.LFB64:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	eax, edi
	mov	BYTE PTR -52[rbp], al
	mov	DWORD PTR -44[rbp], 332850
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2638
	mov	rdi, rax
	call	fsm2lba
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	DWORD PTR -40[rbp], eax
	mov	DWORD PTR -20[rbp], 0
	mov	rax, QWORD PTR cd[rip]
	add	rax, 3137
	mov	QWORD PTR -8[rbp], rax
	mov	DWORD PTR -28[rbp], 0
	mov	DWORD PTR -16[rbp], 13500
	movzx	eax, BYTE PTR -52[rbp]
	mov	DWORD PTR -36[rbp], eax
	jmp	.L317
.L320:
	mov	rcx, QWORD PTR cd[rip]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rcx
	add	rax, 2632
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L318
	mov	rcx, QWORD PTR cd[rip]
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, 2624
	add	rax, rcx
	add	rax, 9
	mov	rdi, rax
	call	fsm2lba
	mov	DWORD PTR -40[rbp], eax
	jmp	.L319
.L318:
	sub	DWORD PTR -36[rbp], 1
.L317:
	cmp	DWORD PTR -36[rbp], 0
	jg	.L320
.L319:
	mov	edx, DWORD PTR -40[rbp]
	mov	eax, DWORD PTR -16[rbp]
	add	eax, edx
	mov	DWORD PTR -32[rbp], eax
.L330:
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	seek
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, rax
	mov	esi, 10
	mov	edi, 65
	call	type_1_command
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edi, eax
	call	normalize_track
	mov	BYTE PTR -48[rbp], al
	mov	rcx, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR -48[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rcx
	add	rax, 2632
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L321
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edi, eax
	call	bcdbin
	mov	BYTE PTR -47[rbp], al
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edi, eax
	call	bcdbin
	mov	BYTE PTR -46[rbp], al
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edi, eax
	call	bcdbin
	mov	BYTE PTR -45[rbp], al
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 9
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movzx	edx, BYTE PTR -47[rbp]
	sub	eax, edx
	mov	ecx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 8
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movzx	edx, BYTE PTR -46[rbp]
	sub	eax, edx
	lea	esi, -2[rax]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 7
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movzx	edx, BYTE PTR -45[rbp]
	sub	eax, edx
	imul	eax, eax, 60
	add	eax, esi
	imul	eax, eax, 75
	add	eax, ecx
	mov	DWORD PTR -12[rbp], eax
	mov	rsi, QWORD PTR cd[rip]
	movzx	ecx, BYTE PTR -48[rbp]
	mov	rax, QWORD PTR -8[rbp]
	movzx	edx, BYTE PTR 1[rax]
	movsx	rcx, ecx
	mov	rax, rcx
	sal	rax, 2
	add	rax, rcx
	add	rax, rsi
	add	rax, 2632
	mov	BYTE PTR [rax], dl
	mov	rcx, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR -48[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, 2624
	add	rax, rcx
	lea	rdx, 9[rax]
	mov	eax, DWORD PTR -12[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	fsm
	mov	rsi, QWORD PTR cd[rip]
	movzx	ecx, BYTE PTR -48[rbp]
	mov	rax, QWORD PTR -8[rbp]
	movzx	edx, BYTE PTR [rax]
	movsx	rcx, ecx
	mov	rax, rcx
	sal	rax, 2
	add	rax, rcx
	add	rax, rsi
	add	rax, 2636
	mov	BYTE PTR [rax], dl
	movzx	eax, BYTE PTR -48[rbp]
	cmp	al, BYTE PTR -52[rbp]
	jne	.L321
	mov	eax, DWORD PTR -12[rbp]
	jmp	.L322
.L321:
	mov	eax, DWORD PTR -32[rbp]
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -28[rbp], 0
	je	.L323
	movzx	eax, BYTE PTR -48[rbp]
	cmp	al, BYTE PTR -52[rbp]
	jnb	.L324
	mov	eax, DWORD PTR -32[rbp]
	mov	DWORD PTR -40[rbp], eax
	jmp	.L325
.L324:
	mov	eax, DWORD PTR -32[rbp]
	mov	DWORD PTR -44[rbp], eax
.L325:
	mov	edx, DWORD PTR -40[rbp]
	mov	eax, DWORD PTR -44[rbp]
	add	eax, edx
	mov	edx, eax
	shr	edx, 31
	add	eax, edx
	sar	eax
	mov	DWORD PTR -32[rbp], eax
	jmp	.L326
.L323:
	movzx	eax, BYTE PTR -48[rbp]
	cmp	al, BYTE PTR -52[rbp]
	jnb	.L327
	mov	eax, DWORD PTR -16[rbp]
	add	DWORD PTR -32[rbp], eax
	jmp	.L326
.L327:
	mov	DWORD PTR -28[rbp], 1
	mov	eax, DWORD PTR -32[rbp]
	mov	DWORD PTR -44[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	sub	eax, DWORD PTR -16[rbp]
	mov	DWORD PTR -40[rbp], eax
	mov	edx, DWORD PTR -40[rbp]
	mov	eax, DWORD PTR -44[rbp]
	add	eax, edx
	mov	edx, eax
	shr	edx, 31
	add	eax, edx
	sar	eax
	mov	DWORD PTR -32[rbp], eax
.L326:
	mov	eax, DWORD PTR -32[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	je	.L332
	jmp	.L330
.L332:
	nop
	mov	eax, DWORD PTR -32[rbp]
.L322:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE64:
	.size	get_toc_lba, .-get_toc_lba
	.type	update_toc_entry, @function
update_toc_entry:
.LFB65:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	eax, edi
	mov	BYTE PTR -4[rbp], al
	movzx	eax, BYTE PTR -4[rbp]
	mov	edi, eax
	call	normalize_track
	mov	BYTE PTR -4[rbp], al
	mov	rcx, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rcx
	add	rax, 2632
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L336
	movzx	eax, BYTE PTR -4[rbp]
	mov	edi, eax
	call	get_toc_lba
	nop
.L336:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE65:
	.size	update_toc_entry, .-update_toc_entry
	.type	read_toc_header, @function
read_toc_header:
.LFB66:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2454[rax]
	test	al, al
	jne	.L338
	call	get_disc_status
.L338:
	cmp	QWORD PTR -24[rbp], 0
	je	.L339
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 2454[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 2455[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 1[rax], dl
	mov	DWORD PTR -4[rbp], 0
	jmp	.L340
.L341:
	mov	rcx, QWORD PTR cd[rip]
	mov	eax, DWORD PTR -4[rbp]
	add	eax, 3
	mov	rdx, QWORD PTR cd[rip]
	cdqe
	movzx	ecx, BYTE PTR 2453[rcx+rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	mov	BYTE PTR 2638[rdx+rax], cl
	add	DWORD PTR -4[rbp], 1
.L340:
	cmp	DWORD PTR -4[rbp], 2
	jle	.L341
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2455[rax]
	add	eax, 1
	movzx	eax, al
	mov	edi, eax
	call	update_toc_entry
	mov	eax, 0
	jmp	.L342
.L339:
	mov	eax, -1
.L342:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE66:
	.size	read_toc_header, .-read_toc_header
	.type	play_from_to_msf, @function
play_from_to_msf:
.LFB67:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	BYTE PTR -17[rbp], 48
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 2[rax]
	mov	BYTE PTR -16[rbp], al
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 1[rax]
	mov	BYTE PTR -15[rbp], al
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -14[rbp], al
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 5[rax]
	mov	BYTE PTR -13[rbp], al
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 4[rax]
	mov	BYTE PTR -12[rbp], al
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 3[rax]
	mov	BYTE PTR -11[rbp], al
	mov	BYTE PTR -10[rbp], 2
	mov	BYTE PTR -9[rbp], 2
	mov	DWORD PTR -24[rbp], 0
	jmp	.L344
.L345:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	movzx	eax, BYTE PTR -17[rbp+rax]
	movzx	eax, al
	mov	esi, 0
	mov	edi, eax
	call	type_0_command
	add	DWORD PTR -24[rbp], 1
.L344:
	cmp	DWORD PTR -24[rbp], 8
	jle	.L345
	mov	DWORD PTR -24[rbp], 0
	jmp	.L346
.L347:
	mov	eax, DWORD PTR -24[rbp]
	add	eax, 4
	mov	rdx, QWORD PTR cd[rip]
	cdqe
	movzx	ecx, BYTE PTR -17[rbp+rax]
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	mov	BYTE PTR 2633[rdx+rax], cl
	add	DWORD PTR -24[rbp], 1
.L346:
	cmp	DWORD PTR -24[rbp], 2
	jle	.L347
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2632[rax], 0
	call	wait_dsb
	mov	BYTE PTR -25[rbp], al
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR -25[rbp]
	mov	BYTE PTR 10[rax], dl
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L349
	call	__stack_chk_fail@PLT
.L349:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE67:
	.size	play_from_to_msf, .-play_from_to_msf
	.type	play_from_to_track, @function
play_from_to_track:
.LFB68:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	DWORD PTR -36[rbp], edi
	mov	DWORD PTR -40[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	BYTE PTR -16[rbp], 48
	mov	DWORD PTR -24[rbp], 1
	jmp	.L351
.L352:
	mov	eax, DWORD PTR -24[rbp]
	mov	BYTE PTR -16[rbp+rax], 0
	add	DWORD PTR -24[rbp], 1
.L351:
	cmp	DWORD PTR -24[rbp], 7
	jbe	.L352
	cmp	DWORD PTR -36[rbp], 0
	jne	.L353
	mov	DWORD PTR -20[rbp], 0
	jmp	.L354
.L355:
	mov	rdx, QWORD PTR cd[rip]
	mov	eax, DWORD PTR -20[rbp]
	lea	esi, 2[rax]
	mov	eax, DWORD PTR -20[rbp]
	lea	ecx, 1[rax]
	movsx	rax, esi
	movzx	edx, BYTE PTR 3147[rdx+rax]
	movsx	rax, ecx
	mov	BYTE PTR -16[rbp+rax], dl
	mov	rdx, QWORD PTR cd[rip]
	mov	eax, DWORD PTR -20[rbp]
	lea	ecx, 4[rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	movzx	edx, BYTE PTR 2633[rdx+rax]
	movsx	rax, ecx
	mov	BYTE PTR -16[rbp+rax], dl
	add	DWORD PTR -20[rbp], 1
.L354:
	cmp	DWORD PTR -20[rbp], 2
	jle	.L355
	jmp	.L356
.L353:
	mov	eax, DWORD PTR -36[rbp]
	movzx	eax, al
	mov	edi, eax
	call	update_toc_entry
	mov	eax, DWORD PTR -40[rbp]
	add	eax, 1
	movzx	eax, al
	mov	edi, eax
	call	update_toc_entry
	mov	DWORD PTR -20[rbp], 0
	jmp	.L357
.L358:
	mov	rdi, QWORD PTR cd[rip]
	mov	eax, DWORD PTR -20[rbp]
	lea	ecx, 1[rax]
	mov	eax, DWORD PTR -20[rbp]
	movsx	rsi, eax
	mov	eax, DWORD PTR -36[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rdi
	add	rax, rsi
	add	rax, 2633
	movzx	edx, BYTE PTR [rax]
	movsx	rax, ecx
	mov	BYTE PTR -16[rbp+rax], dl
	mov	rsi, QWORD PTR cd[rip]
	mov	eax, DWORD PTR -40[rbp]
	lea	edx, 1[rax]
	mov	eax, DWORD PTR -20[rbp]
	movsx	rcx, eax
	movsx	rdx, edx
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rsi
	add	rax, rcx
	add	rax, 2633
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -26[rbp], al
	mov	eax, DWORD PTR -20[rbp]
	add	eax, 4
	cdqe
	movzx	edx, BYTE PTR -26[rbp]
	mov	BYTE PTR -16[rbp+rax], dl
	mov	rdx, QWORD PTR cd[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	movzx	ecx, BYTE PTR -26[rbp]
	mov	BYTE PTR 2633[rdx+rax], cl
	add	DWORD PTR -20[rbp], 1
.L357:
	cmp	DWORD PTR -20[rbp], 2
	jle	.L358
	mov	rax, QWORD PTR cd[rip]
	mov	edx, DWORD PTR -40[rbp]
	mov	BYTE PTR 2632[rax], dl
.L356:
	mov	DWORD PTR -20[rbp], 0
	jmp	.L359
.L360:
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	movzx	eax, BYTE PTR -16[rbp+rax]
	movzx	eax, al
	mov	esi, 0
	mov	edi, eax
	call	type_0_command
	add	DWORD PTR -20[rbp], 1
.L359:
	cmp	DWORD PTR -20[rbp], 6
	jle	.L360
	mov	DWORD PTR -20[rbp], 0
	jmp	.L361
.L362:
	mov	esi, 0
	mov	edi, 2
	call	type_0_command
	add	DWORD PTR -20[rbp], 1
.L361:
	cmp	DWORD PTR -20[rbp], 1
	jle	.L362
	call	wait_dsb
	mov	BYTE PTR -25[rbp], al
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR -25[rbp]
	mov	BYTE PTR 10[rax], dl
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L364
	call	__stack_chk_fail@PLT
.L364:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE68:
	.size	play_from_to_track, .-play_from_to_track
	.type	get_current_q, @function
get_current_q:
.LFB69:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR cd[rip]
	add	rax, 3137
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, rax
	mov	esi, 10
	mov	edi, 65
	call	type_1_command
	mov	DWORD PTR -28[rbp], eax
	cmp	DWORD PTR -28[rbp], 0
	je	.L366
	mov	eax, 0
	jmp	.L367
.L366:
	mov	DWORD PTR -32[rbp], 2
	jmp	.L368
.L369:
	mov	eax, DWORD PTR -32[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edx, DWORD PTR -32[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -24[rbp]
	lea	rbx, [rcx+rdx]
	mov	edi, eax
	call	bcdbin
	mov	BYTE PTR [rbx], al
	add	DWORD PTR -32[rbp], 1
.L368:
	cmp	DWORD PTR -32[rbp], 5
	jle	.L369
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	and	eax, 15
	mov	edx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	ecx, edx
	and	ecx, 15
	movzx	edx, BYTE PTR 2[rax]
	and	edx, -16
	or	edx, ecx
	mov	BYTE PTR 2[rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	shr	al, 4
	and	eax, 15
	mov	edx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	ecx, edx
	sal	ecx, 4
	movzx	edx, BYTE PTR 2[rax]
	and	edx, 15
	or	edx, ecx
	mov	BYTE PTR 2[rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR 1[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR 3[rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR 2[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR 4[rax], dl
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 2
	jne	.L370
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR 3[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR 12[rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR 4[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR 13[rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR 5[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR 14[rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR 7[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR 8[rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR 9[rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	edx, BYTE PTR 9[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR 10[rax], dl
	jmp	.L371
.L370:
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, ecx
	mov	edi, eax
	call	f_s_m2lba
	mov	rdx, QWORD PTR -40[rbp]
	mov	DWORD PTR 12[rdx], eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 7
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 8
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 9
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, ecx
	mov	edi, eax
	call	f_s_m2lba
	mov	rdx, QWORD PTR -40[rbp]
	mov	DWORD PTR 8[rdx], eax
.L371:
	call	get_drive_status
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 10[rax]
	movzx	eax, al
	and	eax, 4
	test	eax, eax
	je	.L372
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR 1[rax], 17
	jmp	.L373
.L372:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 3147[rax]
	test	al, al
	je	.L374
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR 1[rax], 18
	jmp	.L373
.L374:
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR 1[rax], 21
.L373:
	mov	eax, 0
.L367:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE69:
	.size	get_current_q, .-get_current_q
	.type	invalidate_toc, @function
invalidate_toc:
.LFB70:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2632
	mov	edx, 505
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2453
	mov	edx, 7
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE70:
	.size	invalidate_toc, .-invalidate_toc
	.type	get_toc_entry, @function
get_toc_entry:
.LFB71:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edi, eax
	call	normalize_track
	mov	BYTE PTR -2[rbp], al
	movzx	eax, BYTE PTR -2[rbp]
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR -1[rbp]
	mov	edi, eax
	call	update_toc_entry
	mov	rcx, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR -1[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rcx
	add	rax, 2633
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 6[rax], dl
	mov	rcx, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR -1[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rcx
	add	rax, 2634
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 5[rax], dl
	mov	rcx, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR -1[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rcx
	add	rax, 2635
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 4[rax], dl
	mov	rcx, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR -1[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rcx
	add	rax, 2636
	movzx	eax, BYTE PTR [rax]
	and	eax, 15
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, edx
	and	ecx, 15
	movzx	edx, BYTE PTR 1[rax]
	and	edx, -16
	or	edx, ecx
	mov	BYTE PTR 1[rax], dl
	mov	rcx, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR -1[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rcx
	add	rax, 2636
	movzx	eax, BYTE PTR [rax]
	shr	al, 4
	and	eax, 15
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, edx
	sal	ecx, 4
	movzx	edx, BYTE PTR 1[rax]
	and	edx, 15
	or	edx, ecx
	mov	BYTE PTR 1[rax], dl
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR 8[rax], 0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE71:
	.size	get_toc_entry, .-get_toc_entry
	.type	cm206_audio_ioctl, @function
cm206_audio_ioctl:
.LFB72:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	QWORD PTR -40[rbp], rdx
	mov	eax, DWORD PTR -28[rbp]
	sub	eax, 21249
	cmp	eax, 10
	ja	.L380
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L382[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L382[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L382:
	.long	.L390-.L382
	.long	.L389-.L382
	.long	.L388-.L382
	.long	.L387-.L382
	.long	.L386-.L382
	.long	.L385-.L382
	.long	.L384-.L382
	.long	.L383-.L382
	.long	.L380-.L382
	.long	.L383-.L382
	.long	.L381-.L382
	.text
.L386:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	read_toc_header
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L391
.L385:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_toc_entry
	mov	eax, 0
	jmp	.L391
.L388:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	play_from_to_msf
	mov	eax, 0
	jmp	.L391
.L387:
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 2[rax]
	movzx	edx, al
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	play_from_to_track
	mov	eax, 0
	jmp	.L391
.L384:
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 3147[rax], 0
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 10[rax]
	movzx	eax, al
	and	eax, 4
	test	eax, eax
	je	.L392
	mov	esi, 1
	mov	edi, 112
	call	type_0_command
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	jmp	.L391
.L392:
	mov	eax, 0
	jmp	.L391
.L390:
	call	get_drive_status
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 10[rax]
	movzx	eax, al
	and	eax, 4
	test	eax, eax
	je	.L393
	mov	esi, 1
	mov	edi, 112
	call	type_0_command
	mov	rax, QWORD PTR cd[rip]
	add	rax, 3147
	mov	rdx, rax
	mov	esi, 5
	mov	edi, 82
	call	type_1_command
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 3147[rax], 1
.L393:
	mov	eax, 0
	jmp	.L391
.L389:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 3147[rax]
	test	al, al
	je	.L394
	mov	esi, 0
	mov	edi, 0
	call	play_from_to_track
.L394:
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 3147[rax], 0
	mov	eax, 0
	jmp	.L391
.L383:
	mov	eax, 0
	jmp	.L391
.L381:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_current_q
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	jmp	.L391
.L380:
	mov	eax, -22
.L391:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE72:
	.size	cm206_audio_ioctl, .-cm206_audio_ioctl
	.type	cm206_media_changed, @function
cm206_media_changed:
.LFB73:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	rax, QWORD PTR cd[rip]
	test	rax, rax
	je	.L396
	call	get_drive_status
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 3152[rax]
	movzx	eax, al
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 3152[rax], 0
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L397
.L396:
	mov	eax, -5
.L397:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE73:
	.size	cm206_media_changed, .-cm206_media_changed
	.type	cm206_tray_move, @function
cm206_tray_move:
.LFB74:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	cmp	DWORD PTR -12[rbp], 0
	je	.L399
	mov	esi, 1
	mov	edi, 5
	call	type_0_command
	call	invalidate_toc
	jmp	.L400
.L399:
	mov	esi, 1
	mov	edi, 0
	call	type_0_command
.L400:
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE74:
	.size	cm206_tray_move, .-cm206_tray_move
	.type	cm206_drive_status, @function
cm206_drive_status:
.LFB75:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	call	get_drive_status
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 10[rax]
	test	al, al
	jns	.L403
	mov	eax, 2
	jmp	.L404
.L403:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 10[rax]
	movzx	eax, al
	and	eax, 16
	test	eax, eax
	jne	.L405
	mov	eax, 1
	jmp	.L404
.L405:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 10[rax]
	movzx	eax, al
	and	eax, 32
	test	eax, eax
	je	.L406
	mov	eax, 3
	jmp	.L404
.L406:
	mov	eax, 4
.L404:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE75:
	.size	cm206_drive_status, .-cm206_drive_status
	.type	cm206_lock_door, @function
cm206_lock_door:
.LFB76:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	cmp	DWORD PTR -28[rbp], 0
	je	.L408
	mov	DWORD PTR -4[rbp], 1
	jmp	.L409
.L408:
	mov	DWORD PTR -4[rbp], 4
.L409:
	mov	eax, DWORD PTR -4[rbp]
	mov	BYTE PTR -5[rbp], al
	movzx	eax, BYTE PTR -5[rbp]
	mov	esi, 1
	mov	edi, eax
	call	type_0_command
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 10[rax]
	movzx	eax, al
	and	eax, 64
	test	eax, eax
	setne	al
	movzx	eax, al
	xor	eax, DWORD PTR -28[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE76:
	.size	cm206_lock_door, .-cm206_lock_door
	.type	cm206_get_last_session, @function
cm206_get_last_session:
.LFB77:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2454[rax]
	test	al, al
	jne	.L412
	call	get_disc_status
.L412:
	cmp	QWORD PTR -16[rbp], 0
	je	.L413
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2453[rax]
	movzx	eax, al
	and	eax, 2
	test	eax, eax
	je	.L414
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 2456[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR 2[rax], dl
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 2457[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR 1[rax], dl
	mov	rax, QWORD PTR cd[rip]
	movzx	edx, BYTE PTR 2458[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR 5[rax], 2
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR 4[rax], 1
	jmp	.L415
.L414:
	mov	rax, QWORD PTR -16[rbp]
	mov	BYTE PTR 4[rax], 0
.L415:
	mov	eax, 1
	jmp	.L416
.L413:
	mov	eax, 0
.L416:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE77:
	.size	cm206_get_last_session, .-cm206_get_last_session
	.type	cm206_get_upc, @function
cm206_get_upc:
.LFB78:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -64[rbp]
	mov	QWORD PTR -32[rbp], rax
	lea	rax, -18[rbp]
	mov	rdx, rax
	mov	esi, 10
	mov	edi, 96
	call	type_1_command
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -44[rbp], 0
	je	.L418
	mov	eax, -5
	jmp	.L424
.L418:
	mov	DWORD PTR -48[rbp], 0
	jmp	.L420
.L423:
	mov	eax, DWORD PTR -48[rbp]
	mov	edx, eax
	shr	edx, 31
	add	eax, edx
	sar	eax
	add	eax, 1
	mov	DWORD PTR -40[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	cdq
	shr	edx, 31
	add	eax, edx
	and	eax, 1
	sub	eax, edx
	mov	DWORD PTR -36[rbp], eax
	cmp	DWORD PTR -36[rbp], 0
	je	.L421
	mov	eax, DWORD PTR -40[rbp]
	cdqe
	movzx	eax, BYTE PTR -18[rbp+rax]
	and	eax, 15
	mov	edx, eax
	mov	eax, DWORD PTR -48[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rcx
	or	edx, 48
	mov	BYTE PTR [rax], dl
	jmp	.L422
.L421:
	mov	eax, DWORD PTR -40[rbp]
	cdqe
	movzx	eax, BYTE PTR -18[rbp+rax]
	shr	al, 4
	mov	ecx, eax
	mov	eax, DWORD PTR -48[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	or	ecx, 48
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
.L422:
	add	DWORD PTR -48[rbp], 1
.L420:
	cmp	DWORD PTR -48[rbp], 12
	jle	.L423
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 13
	mov	BYTE PTR [rax], 0
	mov	eax, 0
.L424:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L425
	call	__stack_chk_fail@PLT
.L425:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE78:
	.size	cm206_get_upc, .-cm206_get_upc
	.type	cm206_reset, @function
cm206_reset:
.LFB79:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	call	stop_read
	call	reset_cm260
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 8
	mov	esi, eax
	mov	edi, 11521
	call	outw
	nop
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 8
	mov	esi, eax
	mov	edi, 10497
	call	outw
	mov	rax, QWORD PTR cd[rip]
	mov	DWORD PTR 2376[rax], -1
	mov	rax, QWORD PTR cd[rip]
	mov	DWORD PTR 2448[rax], -1
	call	invalidate_toc
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE79:
	.size	cm206_reset, .-cm206_reset
	.type	cm206_select_speed, @function
cm206_select_speed:
.LFB80:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	cmp	DWORD PTR -28[rbp], 2
	je	.L429
	cmp	DWORD PTR -28[rbp], 2
	jg	.L430
	cmp	DWORD PTR -28[rbp], 0
	je	.L431
	cmp	DWORD PTR -28[rbp], 1
	je	.L432
	jmp	.L430
.L431:
	mov	esi, 1
	mov	edi, 35
	call	type_0_command
	mov	DWORD PTR -4[rbp], eax
	jmp	.L433
.L432:
	mov	esi, 1
	mov	edi, 33
	call	type_0_command
	mov	DWORD PTR -4[rbp], eax
	jmp	.L433
.L429:
	mov	esi, 1
	mov	edi, 34
	call	type_0_command
	mov	DWORD PTR -4[rbp], eax
	jmp	.L433
.L430:
	mov	eax, -1
	jmp	.L434
.L433:
	cmp	DWORD PTR -4[rbp], 0
	jns	.L435
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L434
.L435:
	mov	eax, 1
.L434:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE80:
	.size	cm206_select_speed, .-cm206_select_speed
	.section	.data.rel.local
	.align 32
	.type	cm206_dops, @object
	.size	cm206_dops, 120
cm206_dops:
	.quad	cm206_open
	.quad	cm206_release
	.quad	cm206_drive_status
	.quad	cm206_media_changed
	.quad	cm206_tray_move
	.quad	cm206_lock_door
	.quad	cm206_select_speed
	.quad	0
	.quad	cm206_get_last_session
	.quad	cm206_get_upc
	.quad	cm206_reset
	.quad	cm206_audio_ioctl
	.quad	0
	.long	2543
	.long	1
	.quad	0
	.align 32
	.type	cm206_info, @object
	.size	cm206_info, 104
cm206_info:
	.quad	cm206_dops
	.quad	0
	.quad	0
	.quad	0
	.long	0
	.long	2
	.long	1
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.long	0
	.string	"cm206"
	.string	""
	.zero	13
	.byte	0
	.zero	3
	.long	0
	.byte	0
	.byte	0
	.value	0
	.long	0
	.quad	0
	.long	0
	.zero	4
	.text
	.type	cm206_block_open, @function
cm206_block_open:
.LFB81:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, cm206_info[rip]
	call	cdrom_open@PLT
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE81:
	.size	cm206_block_open, .-cm206_block_open
	.type	cm206_block_release, @function
cm206_block_release:
.LFB82:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	lea	rdi, cm206_info[rip]
	call	cdrom_release@PLT
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE82:
	.size	cm206_block_release, .-cm206_block_release
	.type	cm206_block_ioctl, @function
cm206_block_ioctl:
.LFB83:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	mov	QWORD PTR -48[rbp], rcx
	cmp	DWORD PTR -36[rbp], 8192
	je	.L441
	cmp	DWORD PTR -36[rbp], 8193
	je	.L442
	nop
	mov	rsi, QWORD PTR -48[rbp]
	mov	ecx, DWORD PTR -36[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	r8, rsi
	lea	rsi, cm206_info[rip]
	mov	rdi, rax
	call	cdrom_ioctl@PLT
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L445
.L441:
	cmp	QWORD PTR -48[rbp], 20
	jbe	.L444
	mov	eax, -22
	jmp	.L445
.L444:
	mov	rax, QWORD PTR cd[rip]
	mov	rdx, QWORD PTR -48[rbp]
	add	rdx, 612
	mov	eax, DWORD PTR 12[rax+rdx*4]
	jmp	.L445
.L442:
	cmp	QWORD PTR -48[rbp], 20
	jbe	.L446
	mov	eax, -22
	jmp	.L445
.L446:
	mov	rax, QWORD PTR cd[rip]
	mov	rdx, QWORD PTR -48[rbp]
	add	rdx, 636
	mov	eax, DWORD PTR [rax+rdx*4]
.L445:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE83:
	.size	cm206_block_ioctl, .-cm206_block_ioctl
	.type	cm206_block_media_changed, @function
cm206_block_media_changed:
.LFB84:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	lea	rdi, cm206_info[rip]
	call	cdrom_media_changed@PLT
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE84:
	.size	cm206_block_media_changed, .-cm206_block_media_changed
	.section	.data.rel.local
	.align 32
	.type	cm206_bdops, @object
	.size	cm206_bdops, 80
cm206_bdops:
	.quad	cm206_block_open
	.quad	cm206_block_release
	.quad	cm206_block_ioctl
	.quad	0
	.quad	0
	.quad	0
	.quad	cm206_block_media_changed
	.quad	0
	.quad	0
	.quad	0
	.local	cm206_gendisk
	.comm	cm206_gendisk,8,8
	.section	.rodata
.LC1:
	.string	"cm206"
	.text
	.type	probe_base_port, @function
probe_base_port:
.LFB85:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	DWORD PTR -36[rbp], edi
	mov	DWORD PTR -16[rbp], 768
	mov	DWORD PTR -12[rbp], 880
	cmp	DWORD PTR -36[rbp], 0
	je	.L451
	mov	eax, DWORD PTR -36[rbp]
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	mov	DWORD PTR -16[rbp], eax
.L451:
	mov	eax, DWORD PTR -16[rbp]
	mov	DWORD PTR -36[rbp], eax
	jmp	.L452
.L460:
	mov	eax, DWORD PTR -36[rbp]
	cdqe
	lea	rdx, .LC1[rip]
	mov	esi, 16
	mov	rdi, rax
	call	request_region
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L461
	mov	DWORD PTR -20[rbp], 0
	jmp	.L455
.L456:
	mov	eax, DWORD PTR -36[rbp]
	add	eax, 2
	mov	edi, eax
	call	inw
	mov	WORD PTR -26[rbp], ax
	movzx	eax, WORD PTR -26[rbp]
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	add	eax, 1
	mov	DWORD PTR -20[rbp], eax
.L455:
	mov	eax, DWORD PTR -20[rbp]
	cmp	eax, 2
	jle	.L456
	mov	eax, DWORD PTR -36[rbp]
	add	eax, 6
	mov	edi, eax
	call	inw
	mov	WORD PTR -30[rbp], ax
	movzx	eax, WORD PTR -30[rbp]
	and	eax, 65519
	cmp	eax, 1
	je	.L457
	mov	eax, DWORD PTR -36[rbp]
	cdqe
	mov	esi, 16
	mov	rdi, rax
	call	release_region
	jmp	.L454
.L457:
	mov	eax, DWORD PTR -36[rbp]
	mov	edi, eax
	call	inw
	mov	WORD PTR -28[rbp], ax
	movzx	eax, WORD PTR -28[rbp]
	and	eax, 44288
	test	eax, eax
	je	.L458
	mov	eax, DWORD PTR -36[rbp]
	cdqe
	mov	esi, 16
	mov	rdi, rax
	call	release_region
	jmp	.L454
.L458:
	mov	eax, DWORD PTR -36[rbp]
	jmp	.L459
.L461:
	nop
.L454:
	add	DWORD PTR -36[rbp], 16
.L452:
	mov	eax, DWORD PTR -36[rbp]
	cmp	eax, DWORD PTR -12[rbp]
	jle	.L460
	mov	eax, 0
.L459:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE85:
	.size	probe_base_port, .-probe_base_port
	.type	probe_irq, @function
probe_irq:
.LFB86:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 8
	mov	esi, eax
	mov	edi, 10497
	call	outw
	call	sti@PLT
	call	probe_irq_on@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR -16[rbp], eax
	call	reset_cm260
	mov	edi, 100
	call	udelay@PLT
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	mov	rdi, rax
	call	probe_irq_off@PLT
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR cm206_base[rip]
	add	eax, 8
	mov	esi, eax
	mov	edi, 10497
	call	outw
	cmp	DWORD PTR -20[rbp], 0
	je	.L463
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	je	.L464
	cmp	DWORD PTR -12[rbp], 0
	jle	.L465
	mov	eax, 0
	jmp	.L466
.L465:
	mov	eax, DWORD PTR -12[rbp]
	jmp	.L466
.L464:
	mov	eax, DWORD PTR -12[rbp]
	jmp	.L466
.L463:
	mov	eax, DWORD PTR -12[rbp]
.L466:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE86:
	.size	probe_irq, .-probe_irq
	.section	.rodata
	.align 8
.LC2:
	.string	"<6>cm206 cdrom driver $Revision: 1.5 $"
.LC3:
	.string	" can't find adapter!\n"
.LC4:
	.string	" adapter at 0x%x"
.LC5:
	.string	"can't find IRQ!\n"
.LC6:
	.string	" IRQ %d found\n"
.LC7:
	.string	"<6> drive not there\n"
.LC8:
	.string	"<6>Firmware revision %d"
.LC9:
	.string	" double"
.LC10:
	.string	" single"
.LC11:
	.string	" speed drive"
.LC12:
	.string	", motorized tray"
	.align 8
.LC13:
	.string	"\nUnable to reserve IRQ---aborted\n"
.LC14:
	.string	".\n"
.LC15:
	.string	"cm206cd"
	.align 8
.LC16:
	.string	"<6>Cannot register for cdrom %d!\n"
	.align 8
.LC17:
	.string	"<6>%d kB adapter memory available,  %ld bytes kernel memory used.\n"
	.text
	.globl	cm206_init
	.type	cm206_init, @function
cm206_init:
.LFB87:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	BYTE PTR -48[rbp], 0
	mov	QWORD PTR -24[rbp], 3160
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printk@PLT
	mov	eax, DWORD PTR auto_probe[rip]
	test	eax, eax
	je	.L468
	mov	DWORD PTR -44[rbp], 0
	jmp	.L469
.L468:
	mov	eax, DWORD PTR cm206_base[rip]
	mov	DWORD PTR -44[rbp], eax
.L469:
	mov	eax, DWORD PTR -44[rbp]
	mov	edi, eax
	call	probe_base_port
	mov	DWORD PTR cm206_base[rip], eax
	mov	eax, DWORD PTR cm206_base[rip]
	test	eax, eax
	jne	.L470
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printk@PLT
	mov	eax, -5
	jmp	.L471
.L470:
	mov	eax, DWORD PTR cm206_base[rip]
	mov	esi, eax
	lea	rdi, .LC4[rip]
	mov	eax, 0
	call	printk@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 208
	mov	edi, eax
	call	kmalloc
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR cd[rip], rax
	mov	rax, QWORD PTR cd[rip]
	test	rax, rax
	je	.L494
	mov	eax, DWORD PTR auto_probe[rip]
	test	eax, eax
	je	.L474
	mov	DWORD PTR -40[rbp], 0
	jmp	.L475
.L474:
	mov	eax, DWORD PTR cm206_irq[rip]
	mov	DWORD PTR -40[rbp], eax
.L475:
	mov	eax, DWORD PTR -40[rbp]
	mov	edi, eax
	call	probe_irq
	mov	DWORD PTR cm206_irq[rip], eax
	mov	eax, DWORD PTR cm206_irq[rip]
	test	eax, eax
	jg	.L476
	lea	rdi, .LC5[rip]
	mov	eax, 0
	call	printk@PLT
	jmp	.L477
.L476:
	mov	eax, DWORD PTR cm206_irq[rip]
	mov	esi, eax
	lea	rdi, .LC6[rip]
	mov	eax, 0
	call	printk@PLT
	mov	edi, 83
	call	send_receive_polled
	mov	BYTE PTR -47[rbp], al
	cmp	BYTE PTR -47[rbp], 83
	je	.L478
	lea	rdi, .LC7[rip]
	mov	eax, 0
	call	printk@PLT
	jmp	.L477
.L478:
	mov	edi, 248
	call	send_receive_polled
	mov	BYTE PTR -48[rbp], al
	movzx	eax, BYTE PTR -48[rbp]
	and	eax, 7
	mov	esi, eax
	lea	rdi, .LC8[rip]
	mov	eax, 0
	call	printk@PLT
	movzx	eax, BYTE PTR -48[rbp]
	and	eax, 96
	test	eax, eax
	je	.L479
	lea	rdi, .LC9[rip]
	mov	eax, 0
	call	printk@PLT
	jmp	.L480
.L479:
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printk@PLT
.L480:
	lea	rdi, .LC11[rip]
	mov	eax, 0
	call	printk@PLT
	movzx	eax, BYTE PTR -48[rbp]
	test	al, al
	jns	.L481
	lea	rdi, .LC12[rip]
	mov	eax, 0
	call	printk@PLT
.L481:
	mov	eax, DWORD PTR cm206_irq[rip]
	mov	r8d, 0
	lea	rcx, .LC1[rip]
	mov	edx, 0
	lea	rsi, cm206_interrupt[rip]
	mov	edi, eax
	call	request_irq
	mov	DWORD PTR -36[rbp], eax
	cmp	DWORD PTR -36[rbp], 0
	je	.L482
	lea	rdi, .LC13[rip]
	mov	eax, 0
	call	printk@PLT
	jmp	.L477
.L482:
	lea	rdi, .LC14[rip]
	mov	eax, 0
	call	printk@PLT
	lea	rsi, .LC1[rip]
	mov	edi, 32
	call	register_blkdev
	mov	DWORD PTR -32[rbp], eax
	cmp	DWORD PTR -32[rbp], 0
	jne	.L495
	mov	edi, 1
	call	alloc_disk
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L496
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR [rax], 32
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 12
	lea	rsi, .LC15[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, cm206_bdops[rip]
	mov	QWORD PTR 48[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 72[rax], 8
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR cm206_gendisk[rip], rax
	lea	rdi, cm206_info[rip]
	call	register_cdrom@PLT
	mov	DWORD PTR -28[rbp], eax
	cmp	DWORD PTR -28[rbp], 0
	je	.L487
	mov	esi, 32
	lea	rdi, .LC16[rip]
	mov	eax, 0
	call	printk@PLT
	jmp	.L488
.L487:
	lea	rsi, cm206_lock[rip]
	lea	rdi, do_cm206_request[rip]
	call	blk_init_queue
	mov	QWORD PTR cm206_queue[rip], rax
	mov	rax, QWORD PTR cm206_queue[rip]
	test	rax, rax
	je	.L497
	mov	rax, QWORD PTR cm206_queue[rip]
	mov	esi, 2048
	mov	rdi, rax
	call	blk_queue_hardsect_size
	mov	rdx, QWORD PTR cm206_queue[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 56[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	add_disk
	mov	rax, QWORD PTR cd[rip]
	mov	edx, 3160
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR cd[rip]
	mov	DWORD PTR 2376[rax], -1
	mov	rax, QWORD PTR cd[rip]
	mov	DWORD PTR 2448[rax], -1
	mov	rax, QWORD PTR cd[rip]
	add	rax, 2408
	mov	rdi, rax
	call	init_timer
	mov	rax, QWORD PTR cd[rip]
	lea	rdx, cm206_timeout[rip]
	mov	QWORD PTR 2416[rax], rdx
	mov	eax, DWORD PTR cm206_base[rip]
	mov	edi, eax
	call	inw
	mov	WORD PTR -46[rbp], ax
	movzx	eax, WORD PTR -46[rbp]
	and	eax, 16384
	test	eax, eax
	je	.L491
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2441[rax], 24
	jmp	.L492
.L491:
	mov	rax, QWORD PTR cd[rip]
	mov	BYTE PTR 2441[rax], 97
.L492:
	mov	rax, QWORD PTR cd[rip]
	movzx	eax, BYTE PTR 2441[rax]
	movsx	eax, al
	lea	ecx, [rax+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, rax
	mov	esi, ecx
	lea	rdi, .LC17[rip]
	mov	eax, 0
	call	printk@PLT
	mov	eax, 0
	jmp	.L471
.L497:
	nop
.L490:
	lea	rdi, cm206_info[rip]
	call	unregister_cdrom@PLT
.L488:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	put_disk@PLT
	jmp	.L486
.L496:
	nop
.L486:
	lea	rsi, .LC1[rip]
	mov	edi, 32
	call	unregister_blkdev
	jmp	.L484
.L495:
	nop
.L484:
	mov	eax, DWORD PTR cm206_irq[rip]
	mov	esi, 0
	mov	edi, eax
	call	free_irq
.L477:
	mov	rax, QWORD PTR cd[rip]
	mov	rdi, rax
	call	kfree@PLT
	jmp	.L473
.L494:
	nop
.L473:
	mov	eax, DWORD PTR cm206_base[rip]
	cdqe
	mov	esi, 16
	mov	rdi, rax
	call	release_region
	mov	eax, -5
.L471:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE87:
	.size	cm206_init, .-cm206_init
	.type	parse_options, @function
parse_options:
.LFB88:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], 0
	jmp	.L499
.L504:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, cm206[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cmp	eax, 767
	jle	.L506
	cmp	DWORD PTR -4[rbp], 880
	jg	.L507
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, cm206[rip]
	mov	eax, DWORD PTR [rdx+rax]
	and	eax, 15
	test	eax, eax
	jne	.L508
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, cm206[rip]
	mov	eax, DWORD PTR [rdx+rax]
	mov	DWORD PTR cm206_base[rip], eax
	mov	DWORD PTR auto_probe[rip], 0
	jmp	.L503
.L506:
	nop
	jmp	.L500
.L507:
	nop
	jmp	.L500
.L508:
	nop
.L500:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, cm206[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cmp	eax, 2
	jle	.L503
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, cm206[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cmp	eax, 15
	jg	.L503
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, cm206[rip]
	mov	eax, DWORD PTR [rdx+rax]
	mov	DWORD PTR cm206_irq[rip], eax
	mov	DWORD PTR auto_probe[rip], 0
.L503:
	add	DWORD PTR -4[rbp], 1
.L499:
	cmp	DWORD PTR -4[rbp], 1
	jle	.L504
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE88:
	.size	parse_options, .-parse_options
	.type	__cm206_init, @function
__cm206_init:
.LFB89:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	call	parse_options
	call	cm206_init
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE89:
	.size	__cm206_init, .-__cm206_init
	.section	.rodata
.LC18:
	.string	"Can't unregister cdrom cm206\n"
.LC19:
	.string	"Can't unregister major cm206\n"
.LC20:
	.string	"<6>cm206 removed\n"
	.text
	.type	cm206_exit, @function
cm206_exit:
.LFB90:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	rax, QWORD PTR cm206_gendisk[rip]
	mov	rdi, rax
	call	del_gendisk
	mov	rax, QWORD PTR cm206_gendisk[rip]
	mov	rdi, rax
	call	put_disk@PLT
	lea	rdi, cm206_info[rip]
	call	unregister_cdrom@PLT
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 0
	je	.L512
	lea	rdi, .LC18[rip]
	mov	eax, 0
	call	printk@PLT
	jmp	.L511
.L512:
	lea	rsi, .LC1[rip]
	mov	edi, 32
	call	unregister_blkdev
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	je	.L514
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printk@PLT
	jmp	.L511
.L514:
	mov	rax, QWORD PTR cm206_queue[rip]
	mov	rdi, rax
	call	blk_cleanup_queue
	mov	eax, DWORD PTR cm206_irq[rip]
	mov	esi, 0
	mov	edi, eax
	call	free_irq
	mov	rax, QWORD PTR cd[rip]
	mov	rdi, rax
	call	kfree@PLT
	mov	eax, DWORD PTR cm206_base[rip]
	cdqe
	mov	esi, 16
	mov	rdi, rax
	call	release_region
	lea	rdi, .LC20[rip]
	mov	eax, 0
	call	printk@PLT
	nop
.L511:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE90:
	.size	cm206_exit, .-cm206_exit
	.globl	_ddv_tmp_init
	.section	.data.rel.local
	.align 8
	.type	_ddv_tmp_init, @object
	.size	_ddv_tmp_init, 8
_ddv_tmp_init:
	.quad	__cm206_init
	.globl	_ddv_tmp_exit
	.align 8
	.type	_ddv_tmp_exit, @object
	.size	_ddv_tmp_exit, 8
_ddv_tmp_exit:
	.quad	cm206_exit
	.globl	_ddv_module_param_major
	.data
	.align 4
	.type	_ddv_module_param_major, @object
	.size	_ddv_module_param_major, 4
_ddv_module_param_major:
	.long	32
	.text
	.globl	main
	.type	main, @function
main:
.LFB91:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	lea	rax, __cm206_init[rip]
	mov	QWORD PTR _ddv_module_init[rip], rax
	lea	rax, cm206_exit[rip]
	mov	QWORD PTR _ddv_module_exit[rip], rax
	call	call_ddv
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE91:
	.size	main, .-main
	.globl	request_irq
	.type	request_irq, @function
request_irq:
.LFB92:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	DWORD PTR -20[rbp], edi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	QWORD PTR -56[rbp], r8
	mov	eax, 0
	call	nondet_int@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	je	.L518
	mov	eax, DWORD PTR -20[rbp]
	sal	rax, 4
	mov	rcx, rax
	lea	rdx, registered_irq[rip]
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR [rcx+rdx], rax
	mov	eax, DWORD PTR -20[rbp]
	sal	rax, 4
	mov	rcx, rax
	lea	rdx, registered_irq[rip+8]
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR [rcx+rdx], rax
	mov	eax, 0
	jmp	.L519
.L518:
	mov	eax, -1
.L519:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE92:
	.size	request_irq, .-request_irq
	.globl	free_irq
	.type	free_irq, @function
free_irq:
.LFB93:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	mov	QWORD PTR -16[rbp], rsi
	mov	eax, DWORD PTR -4[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, registered_irq[rip]
	mov	QWORD PTR [rdx+rax], 0
	mov	eax, DWORD PTR -4[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, registered_irq[rip+8]
	mov	QWORD PTR [rdx+rax], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE93:
	.size	free_irq, .-free_irq
	.globl	proc_root_driver
	.bss
	.align 8
	.type	proc_root_driver, @object
	.size	proc_root_driver, 8
proc_root_driver:
	.zero	8
	.text
	.globl	misc_register
	.type	misc_register, @function
misc_register:
.LFB94:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	eax, DWORD PTR fixed_cdev_used[rip]
	cmp	eax, 9
	jg	.L523
	mov	eax, DWORD PTR fixed_cdev_used[rip]
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR fixed_cdev_used[rip]
	add	eax, 1
	mov	DWORD PTR fixed_cdev_used[rip], eax
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, fixed_cdev[rip]
	mov	QWORD PTR [rdx+rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	add	rax, rax
	add	rax, rcx
	sal	rax, 3
	mov	rcx, rax
	lea	rax, fixed_cdev[rip+8]
	mov	QWORD PTR [rcx+rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR [rax]
	or	eax, 10485760
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	lea	rdx, fixed_cdev[rip]
	lea	rcx, [rax+rdx]
	mov	eax, DWORD PTR -8[rbp]
	mov	edx, 0
	mov	esi, eax
	mov	rdi, rcx
	call	cdev_add@PLT
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L524
.L523:
	mov	eax, -1
.L524:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE94:
	.size	misc_register, .-misc_register
	.type	assert_context_process, @function
assert_context_process:
.LFB95:
	.cfi_startproc
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE95:
	.size	assert_context_process, .-assert_context_process
	.globl	ddv_ioport_request_start
	.bss
	.align 4
	.type	ddv_ioport_request_start, @object
	.size	ddv_ioport_request_start, 4
ddv_ioport_request_start:
	.zero	4
	.globl	ddv_ioport_request_len
	.align 4
	.type	ddv_ioport_request_len, @object
	.size	ddv_ioport_request_len, 4
ddv_ioport_request_len:
	.zero	4
	.text
	.globl	request_region
	.type	request_region, @function
request_region:
.LFB111:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	edi, 32
	call	malloc@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR ddv_ioport_request_start[rip], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	DWORD PTR ddv_ioport_request_len[rip], eax
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE111:
	.size	request_region, .-request_region
	.globl	release_region
	.type	release_region, @function
release_region:
.LFB112:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -4[rbp], 0
	mov	DWORD PTR ddv_ioport_request_start[rip], 0
	mov	DWORD PTR ddv_ioport_request_len[rip], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE112:
	.size	release_region, .-release_region
	.section	.rodata
.LC21:
	.string	"I/O port is requested"
	.text
	.globl	inb
	.type	inb, @function
inb:
.LFB113:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR ddv_ioport_request_start[rip]
	cmp	DWORD PTR -20[rbp], eax
	jb	.L532
	mov	edx, DWORD PTR ddv_ioport_request_start[rip]
	mov	eax, DWORD PTR ddv_ioport_request_len[rip]
	add	eax, edx
	cmp	DWORD PTR -20[rbp], eax
	jnb	.L533
	mov	DWORD PTR -4[rbp], 1
	jmp	.L534
.L533:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L534
.L532:
	mov	DWORD PTR -4[rbp], 0
.L534:
	mov	eax, DWORD PTR -4[rbp]
	lea	rsi, .LC21[rip]
	mov	edi, eax
	mov	eax, 0
	call	__CPROVER_assert@PLT
	mov	eax, 0
	call	nondet_uchar@PLT
	mov	BYTE PTR -5[rbp], al
	movzx	eax, BYTE PTR -5[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE113:
	.size	inb, .-inb
	.globl	inw
	.type	inw, @function
inw:
.LFB115:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR ddv_ioport_request_start[rip]
	cmp	DWORD PTR -20[rbp], eax
	jb	.L537
	mov	edx, DWORD PTR ddv_ioport_request_start[rip]
	mov	eax, DWORD PTR ddv_ioport_request_len[rip]
	add	eax, edx
	cmp	DWORD PTR -20[rbp], eax
	jnb	.L538
	mov	DWORD PTR -4[rbp], 1
	jmp	.L539
.L538:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L539
.L537:
	mov	DWORD PTR -4[rbp], 0
.L539:
	mov	eax, DWORD PTR -4[rbp]
	lea	rsi, .LC21[rip]
	mov	edi, eax
	mov	eax, 0
	call	__CPROVER_assert@PLT
	mov	eax, 0
	call	nondet_ushort@PLT
	mov	WORD PTR -6[rbp], ax
	movzx	eax, WORD PTR -6[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE115:
	.size	inw, .-inw
	.globl	outw
	.type	outw, @function
outw:
.LFB116:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	eax, edi
	mov	DWORD PTR -24[rbp], esi
	mov	WORD PTR -20[rbp], ax
	mov	eax, DWORD PTR ddv_ioport_request_start[rip]
	cmp	DWORD PTR -24[rbp], eax
	jb	.L542
	mov	edx, DWORD PTR ddv_ioport_request_start[rip]
	mov	eax, DWORD PTR ddv_ioport_request_len[rip]
	add	eax, edx
	cmp	DWORD PTR -24[rbp], eax
	jnb	.L543
	mov	DWORD PTR -4[rbp], 1
	jmp	.L544
.L543:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L544
.L542:
	mov	DWORD PTR -4[rbp], 0
.L544:
	mov	eax, DWORD PTR -4[rbp]
	lea	rsi, .LC21[rip]
	mov	edi, eax
	mov	eax, 0
	call	__CPROVER_assert@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE116:
	.size	outw, .-outw
	.globl	schedule
	.type	schedule, @function
schedule:
.LFB122:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	call	assert_context_process
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE122:
	.size	schedule, .-schedule
	.globl	schedule_timeout
	.type	schedule_timeout, @function
schedule_timeout:
.LFB123:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	call	assert_context_process
	mov	eax, 0
	call	nondet_long@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE123:
	.size	schedule_timeout, .-schedule_timeout
	.globl	kmalloc
	.type	kmalloc, @function
kmalloc:
.LFB131:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	eax, DWORD PTR -24[rbp]
	and	eax, 16
	test	eax, eax
	je	.L551
	call	assert_context_process
.L551:
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE131:
	.size	kmalloc, .-kmalloc
	.globl	kzalloc
	.type	kzalloc, @function
kzalloc:
.LFB132:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	eax, DWORD PTR -24[rbp]
	and	eax, 16
	test	eax, eax
	je	.L554
	call	assert_context_process
.L554:
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE132:
	.size	kzalloc, .-kzalloc
	.globl	tasklet_schedule
	.type	tasklet_schedule, @function
tasklet_schedule:
.LFB133:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], -1
	mov	DWORD PTR -8[rbp], 0
	jmp	.L557
.L561:
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	jne	.L558
	mov	eax, DWORD PTR -8[rbp]
	mov	DWORD PTR -4[rbp], eax
.L558:
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	cmp	rdx, rax
	jne	.L559
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip+8]
	movzx	eax, WORD PTR [rdx+rax]
	test	ax, ax
	je	.L562
.L559:
	add	DWORD PTR -8[rbp], 1
.L557:
	cmp	DWORD PTR -8[rbp], 9
	jle	.L561
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 4
	mov	rcx, rax
	lea	rdx, tasklet_registered[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rcx+rdx], rax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip+8]
	mov	WORD PTR [rdx+rax], 0
	jmp	.L556
.L562:
	nop
.L556:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE133:
	.size	tasklet_schedule, .-tasklet_schedule
	.globl	spin_lock_init
	.type	spin_lock_init, @function
spin_lock_init:
.LFB135:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR [rax], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], 0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE135:
	.size	spin_lock_init, .-spin_lock_init
	.globl	spin_lock_irq
	.type	spin_lock_irq, @function
spin_lock_irq:
.LFB138:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
.L568:
	mov	eax, 0
	call	__CPROVER_atomic_begin@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	test	eax, eax
	jne	.L566
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], 1
	mov	eax, 0
	call	__CPROVER_atomic_end@PLT
	jmp	.L569
.L566:
	mov	eax, 0
	call	__CPROVER_atomic_end@PLT
	jmp	.L568
.L569:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE138:
	.size	spin_lock_irq, .-spin_lock_irq
	.globl	spin_unlock_irq
	.type	spin_unlock_irq, @function
spin_unlock_irq:
.LFB141:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	eax, 0
	call	__CPROVER_atomic_begin@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], 0
	mov	eax, 0
	call	__CPROVER_atomic_end@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE141:
	.size	spin_unlock_irq, .-spin_unlock_irq
	.globl	call_tasklet_functions
	.type	call_tasklet_functions, @function
call_tasklet_functions:
.LFB142:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	cmp	DWORD PTR -4[rbp], 9
	setbe	al
	movzx	eax, al
	mov	edi, eax
	mov	eax, 0
	call	__CPROVER_assume@PLT
	mov	eax, DWORD PTR -4[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	je	.L575
	mov	eax, DWORD PTR -4[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR [rax]
	test	eax, eax
	jne	.L575
	mov	eax, DWORD PTR -4[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip+8]
	mov	WORD PTR [rdx+rax], 1
	mov	eax, DWORD PTR -4[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -4[rbp]
	sal	rax, 4
	mov	rcx, rax
	lea	rax, tasklet_registered[rip]
	mov	rax, QWORD PTR [rcx+rax]
	mov	rax, QWORD PTR 16[rax]
	mov	rdi, rax
	call	rdx
	mov	eax, DWORD PTR -4[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip+8]
	mov	WORD PTR [rdx+rax], 0
	mov	eax, DWORD PTR -4[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, tasklet_registered[rip]
	mov	QWORD PTR [rdx+rax], 0
	nop
.L575:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE142:
	.size	call_tasklet_functions, .-call_tasklet_functions
	.globl	init_timer
	.type	init_timer, @function
init_timer:
.LFB143:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	movzx	eax, WORD PTR number_timer_registered[rip]
	cmp	ax, 4
	jg	.L579
	mov	rax, QWORD PTR -8[rbp]
	mov	WORD PTR 24[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	WORD PTR 26[rax], 1
	movzx	eax, WORD PTR number_timer_registered[rip]
	cwde
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rdx, timer_registered[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rcx+rdx], rax
	movzx	eax, WORD PTR number_timer_registered[rip]
	add	eax, 1
	mov	WORD PTR number_timer_registered[rip], ax
	nop
.L579:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE143:
	.size	init_timer, .-init_timer
	.globl	add_timer
	.type	add_timer, @function
add_timer:
.LFB144:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	WORD PTR 24[rax], 1
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE144:
	.size	add_timer, .-add_timer
	.globl	del_timer
	.type	del_timer, @function
del_timer:
.LFB146:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	WORD PTR 24[rax], 0
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE146:
	.size	del_timer, .-del_timer
	.globl	global_tty_driver
	.bss
	.align 32
	.type	global_tty_driver, @object
	.size	global_tty_driver, 328
global_tty_driver:
	.zero	328
	.text
	.globl	alloc_tty_driver
	.type	alloc_tty_driver, @function
alloc_tty_driver:
.LFB148:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	movzx	eax, WORD PTR global_tty_driver[rip+320]
	test	ax, ax
	jne	.L585
	mov	DWORD PTR global_tty_driver[rip], 21506
	mov	eax, DWORD PTR -4[rbp]
	mov	DWORD PTR global_tty_driver[rip+72], eax
	mov	eax, 0
	jmp	.L587
.L585:
	mov	eax, 0
.L587:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE148:
	.size	alloc_tty_driver, .-alloc_tty_driver
	.globl	tty_set_operations
	.type	tty_set_operations, @function
tty_set_operations:
.LFB149:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 136[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 144[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 152[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 160[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 32[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 168[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 40[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 176[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 48[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 184[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 56[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 192[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 64[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 200[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 72[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 208[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 80[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 216[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 88[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 224[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 96[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 232[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 104[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 240[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 112[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 248[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 120[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 256[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 128[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 264[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 136[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 272[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 144[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 280[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 152[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 288[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 160[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 296[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 168[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 304[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 176[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 312[rax], rdx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE149:
	.size	tty_set_operations, .-tty_set_operations
	.globl	vmalloc
	.type	vmalloc, @function
vmalloc:
.LFB153:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	edi, eax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE153:
	.size	vmalloc, .-vmalloc
	.globl	wake_up_interruptible
	.type	wake_up_interruptible, @function
wake_up_interruptible:
.LFB156:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE156:
	.size	wake_up_interruptible, .-wake_up_interruptible
	.globl	interruptible_sleep_on
	.type	interruptible_sleep_on, @function
interruptible_sleep_on:
.LFB157:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE157:
	.size	interruptible_sleep_on, .-interruptible_sleep_on
	.globl	call_shared_workqueue_functions
	.type	call_shared_workqueue_functions, @function
call_shared_workqueue_functions:
.LFB159:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	eax, 0
	call	nondet_ushort@PLT
	mov	WORD PTR -4[rbp], ax
	movzx	eax, WORD PTR -4[rbp]
	mov	WORD PTR -2[rbp], ax
	cmp	WORD PTR -2[rbp], 9
	setbe	al
	movzx	eax, al
	mov	edi, eax
	mov	eax, 0
	call	__CPROVER_assume@PLT
	movzx	eax, WORD PTR -2[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, shared_workqueue[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	je	.L599
	movzx	eax, WORD PTR -2[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, shared_workqueue[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rdx, QWORD PTR 8[rax]
	movzx	eax, WORD PTR -2[rbp]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rax, shared_workqueue[rip]
	mov	rax, QWORD PTR [rcx+rax]
	mov	rax, QWORD PTR 16[rax]
	mov	rdi, rax
	call	rdx
	movzx	eax, WORD PTR -2[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, shared_workqueue[rip]
	mov	QWORD PTR [rdx+rax], 0
	nop
.L599:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE159:
	.size	call_shared_workqueue_functions, .-call_shared_workqueue_functions
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"252178.c"
	.text
	.comm	current_execution_context,4,4
	.comm	_ddv_module_init,4,4
	.comm	_ddv_module_exit,4,4
	.align	2
	.global	pthread_create
	.syntax unified
	.arm
	.fpu softvfp
	.type	pthread_create, %function
pthread_create:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	str	r3, [fp, #-20]
	bl	nondet_pthread_t
	mov	r2, r0
	ldr	r3, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r0, [fp, #-20]
	blx	r3
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	pthread_create, .-pthread_create
	.comm	jiffies,4,4
	.comm	fixed_cdev,160,4
	.global	fixed_cdev_used
	.bss
	.align	2
	.type	fixed_cdev_used, %object
	.size	fixed_cdev_used, 4
fixed_cdev_used:
	.space	4
	.global	number_cdev_registered
	.align	1
	.type	number_cdev_registered, %object
	.size	number_cdev_registered, 2
number_cdev_registered:
	.space	2
	.comm	cdev_registered,880,8
	.section	.rodata
	.align	2
.LC0:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	call_cdev_functions
	.syntax unified
	.arm
	.fpu softvfp
	.type	call_cdev_functions, %function
call_cdev_functions:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #68
	ldr	r3, .L55
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, .L55+4
	ldrsh	r3, [r3]
	cmp	r3, #0
	beq	.L47
	bl	nondet_ushort
	mov	r3, r0
	strh	r3, [fp, #-60]	@ movhi
	ldrh	r3, [fp, #-60]
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	blt	.L6
	ldr	r3, .L55+4
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-52]
	cmp	r3, r2
	bge	.L7
	mov	r3, #1
	str	r3, [fp, #-56]
	b	.L8
.L7:
	mov	r3, #0
	str	r3, [fp, #-56]
	b	.L8
.L6:
	mov	r3, #0
	str	r3, [fp, #-56]
.L8:
	ldr	r0, [fp, #-56]
	bl	__CPROVER_assume
	bl	nondet_ushort
	mov	r3, r0
	strh	r3, [fp, #-58]	@ movhi
	ldrh	r3, [fp, #-58]
	cmp	r3, #26
	ldrls	pc, [pc, r3, asl #2]
	b	.L48
.L11:
	.word	.L37
	.word	.L36
	.word	.L48
	.word	.L34
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L30
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L26
	.word	.L48
	.word	.L24
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L48
	.word	.L48
.L37:
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L49
	bl	nondet_loff_t
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	bl	nondet_int
	str	r0, [fp, #-32]
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r1, [r3, #4]
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, #8
	ldr	r2, .L55+8
	add	ip, r3, r2
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-32]
	str	r0, [sp]
	mov	r0, ip
	blx	r1
	b	.L49
.L36:
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	beq	.L50
	bl	nondet_char
	mov	r3, r0
	strb	r3, [fp, #-61]
	bl	nondet_size_t
	str	r0, [fp, #-36]
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r4, [r3, #8]
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, #8
	ldr	r2, .L55+8
	add	r0, r3, r2
	sub	r3, fp, #28
	sub	r1, fp, #61
	ldr	r2, [fp, #-36]
	blx	r4
	b	.L50
.L34:
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r3, [r3, #12]
	cmp	r3, #0
	beq	.L51
	bl	nondet_char
	mov	r3, r0
	strb	r3, [fp, #-61]
	bl	nondet_size_t
	str	r0, [fp, #-36]
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r4, [r3, #12]
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, #8
	ldr	r2, .L55+8
	add	r0, r3, r2
	sub	r3, fp, #28
	sub	r1, fp, #61
	ldr	r2, [fp, #-36]
	blx	r4
	b	.L51
.L30:
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r3, [r3, #24]
	cmp	r3, #0
	beq	.L52
	bl	nondet_uint
	str	r0, [fp, #-44]
	bl	nondet_ulong
	str	r0, [fp, #-40]
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r4, [r3, #24]
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, #48
	ldr	r2, .L55+8
	add	r0, r3, r2
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, #8
	ldr	r2, .L55+8
	add	r1, r3, r2
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-44]
	blx	r4
	b	.L52
.L26:
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r3, [r3, #40]
	cmp	r3, #0
	beq	.L53
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #80
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L53
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r4, [r3, #40]
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, #48
	ldr	r2, .L55+8
	add	r0, r3, r2
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, #8
	ldr	r2, .L55+8
	add	r3, r3, r2
	mov	r1, r3
	blx	r4
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L53
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #80
	mov	r2, #1
	str	r2, [r3]
	b	.L53
.L24:
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r3, [r3, #48]
	cmp	r3, #0
	beq	.L54
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #80
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L54
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r4, [r3, #48]
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, #48
	ldr	r2, .L55+8
	add	r0, r3, r2
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, #8
	ldr	r2, .L55+8
	add	r3, r3, r2
	mov	r1, r3
	blx	r4
	str	r0, [fp, #-48]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L54
	ldr	r1, .L55+8
	ldr	r2, [fp, #-52]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	add	r3, r3, #80
	mov	r2, #0
	str	r2, [r3]
	b	.L54
.L48:
	nop
	b	.L3
.L49:
	nop
	b	.L3
.L50:
	nop
	b	.L3
.L51:
	nop
	b	.L3
.L52:
	nop
	b	.L3
.L53:
	nop
	b	.L3
.L54:
	nop
	b	.L3
.L47:
	nop
.L3:
	ldr	r3, .L55
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L46
	bl	__stack_chk_fail
.L46:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L56:
	.align	2
.L55:
	.word	.LC0
	.word	number_cdev_registered
	.word	cdev_registered
	.size	call_cdev_functions, .-call_cdev_functions
	.align	2
	.global	pthread_mutex_init
	.syntax unified
	.arm
	.fpu softvfp
	.type	pthread_mutex_init, %function
pthread_mutex_init:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r3, #0
	strb	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldrb	r2, [fp, #-8]
	strb	r2, [r3]
	mov	r3, #0
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	pthread_mutex_init, .-pthread_mutex_init
	.align	2
	.global	pthread_mutex_destroy
	.syntax unified
	.arm
	.fpu softvfp
	.type	pthread_mutex_destroy, %function
pthread_mutex_destroy:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	mov	r3, #0
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	pthread_mutex_destroy, .-pthread_mutex_destroy
	.align	2
	.global	pthread_mutex_lock
	.syntax unified
	.arm
	.fpu softvfp
	.type	pthread_mutex_lock, %function
pthread_mutex_lock:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	bl	__CPROVER_atomic_begin
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, #1
	and	r3, r3, #255
	mov	r0, r3
	bl	__CPROVER_assume
	ldr	r3, [fp, #-8]
	mov	r2, #1
	strb	r2, [r3]
	bl	__CPROVER_atomic_end
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	pthread_mutex_lock, .-pthread_mutex_lock
	.section	.rodata
	.align	2
.LC1:
	.ascii	"pthread_mutex_unlock without lock\000"
	.text
	.align	2
	.global	pthread_mutex_unlock
	.syntax unified
	.arm
	.fpu softvfp
	.type	pthread_mutex_unlock, %function
pthread_mutex_unlock:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L65
	mov	r0, r3
	bl	__CPROVER_assert
	ldr	r3, [fp, #-8]
	mov	r2, #0
	strb	r2, [r3]
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L66:
	.align	2
.L65:
	.word	.LC1
	.size	pthread_mutex_unlock, .-pthread_mutex_unlock
	.global	number_genhd_registered
	.bss
	.align	1
	.type	number_genhd_registered, %object
	.size	number_genhd_registered, 2
number_genhd_registered:
	.space	2
	.global	number_fixed_genhd_used
	.align	1
	.type	number_fixed_genhd_used, %object
	.size	number_fixed_genhd_used, 2
number_fixed_genhd_used:
	.space	2
	.comm	fixed_gendisk,1280,4
	.comm	genhd_registered,1680,8
	.comm	registered_pci_driver,248,8
	.comm	registered_irq,128,4
	.global	number_tasklet_registered
	.align	1
	.type	number_tasklet_registered, %object
	.size	number_tasklet_registered, 2
number_tasklet_registered:
	.space	2
	.comm	tasklet_registered,80,4
	.global	number_timer_registered
	.align	1
	.type	number_timer_registered, %object
	.size	number_timer_registered, 2
number_timer_registered:
	.space	2
	.comm	timer_registered,20,4
	.comm	shared_workqueue,40,4
	.comm	kernel_lock,8,4
	.text
	.align	2
	.global	init_kernel
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_kernel, %function
init_kernel:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r0, .L73
	bl	spin_lock_init
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L68
.L69:
	ldr	r2, .L73+4
	ldr	r3, [fp, #-8]
	mov	r1, #0
	str	r1, [r2, r3, lsl #2]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L68:
	ldr	r3, [fp, #-8]
	cmp	r3, #9
	ble	.L69
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L70
.L71:
	ldr	r2, .L73+8
	ldr	r3, [fp, #-8]
	mov	r1, #0
	str	r1, [r2, r3, lsl #3]
	ldr	r2, .L73+8
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #3
	add	r3, r2, r3
	add	r3, r3, #4
	mov	r2, #0
	strh	r2, [r3]	@ movhi
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L70:
	ldr	r3, [fp, #-8]
	cmp	r3, #9
	ble	.L71
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L74:
	.align	2
.L73:
	.word	kernel_lock
	.word	shared_workqueue
	.word	tasklet_registered
	.size	init_kernel, .-init_kernel
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	ddv_2, %function
ddv_2:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
.L86:
	bl	nondet_ushort
	mov	r3, r0
	strh	r3, [fp, #-6]	@ movhi
	ldrh	r3, [fp, #-6]
	sub	r3, r3, #1
	cmp	r3, #4
	ldrls	pc, [pc, r3, asl #2]
	b	.L89
.L78:
	.word	.L82
	.word	.L81
	.word	.L80
	.word	.L79
	.word	.L77
.L82:
	ldr	r3, .L91
	mov	r2, #2
	str	r2, [r3]
	bl	call_timer_functions
	ldr	r3, .L91
	mov	r2, #1
	str	r2, [r3]
	b	.L83
.L81:
	ldr	r3, .L91
	mov	r2, #2
	str	r2, [r3]
	bl	call_interrupt_handler
	ldr	r3, .L91
	mov	r2, #1
	str	r2, [r3]
	b	.L83
.L80:
	ldr	r3, .L91
	mov	r2, #1
	str	r2, [r3]
	bl	call_shared_workqueue_functions
	ldr	r3, .L91
	mov	r2, #1
	str	r2, [r3]
	b	.L83
.L79:
	ldr	r3, .L91
	mov	r2, #2
	str	r2, [r3]
	bl	call_tasklet_functions
	ldr	r3, .L91
	mov	r2, #1
	str	r2, [r3]
	b	.L83
.L77:
	ldr	r3, .L91
	mov	r2, #1
	str	r2, [r3]
	bl	call_pci_functions
	ldr	r3, .L91
	mov	r2, #1
	str	r2, [r3]
	b	.L83
.L89:
	nop
.L83:
	ldrh	r3, [fp, #-6]
	cmp	r3, #0
	beq	.L90
	b	.L86
.L90:
	nop
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L92:
	.align	2
.L91:
	.word	current_execution_context
	.size	ddv_2, .-ddv_2
	.section	.rodata
	.align	2
.LC2:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	ddv
	.syntax unified
	.arm
	.fpu softvfp
	.type	ddv, %function
ddv:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, .L101
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r0, fp, #16
	mov	r3, #0
	ldr	r2, .L101+4
	mov	r1, #0
	bl	pthread_create
.L96:
	ldr	r3, .L101+8
	mov	r2, #1
	str	r2, [r3]
	bl	call_cdev_functions
	bl	nondet_int
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L100
	b	.L96
.L100:
	nop
	nop
	ldr	r3, .L101
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L98
	bl	__stack_chk_fail
.L98:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L102:
	.align	2
.L101:
	.word	.LC2
	.word	ddv_2
	.word	current_execution_context
	.size	ddv, .-ddv
	.align	2
	.global	call_ddv
	.syntax unified
	.arm
	.fpu softvfp
	.type	call_ddv, %function
call_ddv:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r3, .L106
	mov	r2, #1
	str	r2, [r3]
	bl	init_kernel
	ldr	r3, .L106+4
	ldr	r3, [r3]
	blx	r3
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L104
	mvn	r3, #0
	b	.L105
.L104:
	bl	ddv
	ldr	r3, .L106
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, .L106+8
	ldr	r3, [r3]
	blx	r3
	mov	r3, #0
.L105:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L107:
	.align	2
.L106:
	.word	current_execution_context
	.word	_ddv_module_init
	.word	_ddv_module_exit
	.size	call_ddv, .-call_ddv
	.align	2
	.global	register_blkdev
	.syntax unified
	.arm
	.fpu softvfp
	.type	register_blkdev, %function
register_blkdev:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	bl	nondet_int
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	register_blkdev, .-register_blkdev
	.align	2
	.global	unregister_blkdev
	.syntax unified
	.arm
	.fpu softvfp
	.type	unregister_blkdev, %function
unregister_blkdev:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	mov	r3, #0
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	unregister_blkdev, .-unregister_blkdev
	.align	2
	.global	alloc_disk
	.syntax unified
	.arm
	.fpu softvfp
	.type	alloc_disk, %function
alloc_disk:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	ldr	r3, .L115
	ldrsh	r3, [r3]
	cmp	r3, #9
	bgt	.L113
	ldr	r3, .L115
	ldrsh	r3, [r3]
	lsl	r3, r3, #7
	ldr	r2, .L115+4
	add	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #8]
	ldr	r3, .L115
	ldrsh	r3, [r3]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	lsl	r3, r3, #16
	asr	r3, r3, #16
	ldr	r2, .L115
	strh	r3, [r2]	@ movhi
	ldr	r3, [fp, #-8]
	b	.L114
.L113:
	mov	r3, #0
.L114:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L116:
	.align	2
.L115:
	.word	number_fixed_genhd_used
	.word	fixed_gendisk
	.size	alloc_disk, .-alloc_disk
	.align	2
	.global	add_disk
	.syntax unified
	.arm
	.fpu softvfp
	.type	add_disk, %function
add_disk:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, .L121
	ldrsh	r3, [r3]
	cmp	r3, #9
	bgt	.L120
	ldr	r3, .L121
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r1, .L121+4
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	sub	r2, r2, r3
	lsl	r3, r2, #3
	mov	r2, r3
	add	r3, r1, r2
	ldr	r2, [fp, #-16]
	str	r2, [r3]
	mov	r0, #16
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, .L121
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r1, .L121+4
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	sub	r2, r2, r3
	lsl	r3, r2, #3
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #12
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	ldr	r3, .L121
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r1, .L121+4
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	sub	r2, r2, r3
	lsl	r3, r2, #3
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #12
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #4]
	ldr	r3, .L121
	ldrsh	r3, [r3]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	lsl	r3, r3, #16
	asr	r3, r3, #16
	ldr	r2, .L121
	strh	r3, [r2]	@ movhi
	nop
.L120:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L122:
	.align	2
.L121:
	.word	number_genhd_registered
	.word	genhd_registered
	.size	add_disk, .-add_disk
	.align	2
	.global	del_gendisk
	.syntax unified
	.arm
	.fpu softvfp
	.type	del_gendisk, %function
del_gendisk:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L124
.L126:
	ldr	r1, .L128
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	sub	r2, r2, r3
	lsl	r3, r2, #3
	mov	r2, r3
	add	r3, r1, r2
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bne	.L125
	ldr	r1, .L128
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	sub	r2, r2, r3
	lsl	r3, r2, #3
	mov	r2, r3
	add	r3, r1, r2
	mov	r2, #0
	str	r2, [r3]
.L125:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L124:
	ldr	r3, .L128+4
	ldrsh	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-8]
	cmp	r3, r2
	blt	.L126
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L129:
	.align	2
.L128:
	.word	genhd_registered
	.word	number_genhd_registered
	.size	del_gendisk, .-del_gendisk
	.section	.rodata
	.align	2
.LC3:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	call_interrupt_handler
	.syntax unified
	.arm
	.fpu softvfp
	.type	call_interrupt_handler, %function
call_interrupt_handler:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	ldr	r3, .L135
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	bl	nondet_int
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	strh	r3, [fp, #-26]	@ movhi
	ldrh	r3, [fp, #-26]
	cmp	r3, #15
	movls	r3, #1
	movhi	r3, #0
	and	r3, r3, #255
	mov	r0, r3
	bl	__CPROVER_assume
	ldrh	r3, [fp, #-26]
	ldr	r2, .L135+4
	ldr	r3, [r2, r3, lsl #3]
	cmp	r3, #0
	beq	.L134
	ldrh	r3, [fp, #-26]
	ldr	r2, .L135+4
	ldr	r4, [r2, r3, lsl #3]
	ldrh	r0, [fp, #-26]
	ldrh	r3, [fp, #-26]
	ldr	r2, .L135+4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldr	r3, [r3, #4]
	sub	r2, fp, #24
	mov	r1, r3
	blx	r4
	nop
.L134:
	nop
	ldr	r3, .L135
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L133
	bl	__stack_chk_fail
.L133:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L136:
	.align	2
.L135:
	.word	.LC3
	.word	registered_irq
	.size	call_interrupt_handler, .-call_interrupt_handler
	.comm	fixed_request_queue,480,4
	.global	number_request_queue_used
	.bss
	.align	2
	.type	number_request_queue_used, %object
	.size	number_request_queue_used, 4
number_request_queue_used:
	.space	4
	.text
	.align	2
	.global	get_fixed_request_queue
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_fixed_request_queue, %function
get_fixed_request_queue:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	ldr	r3, .L140
	ldr	r3, [r3]
	cmp	r3, #9
	bgt	.L138
	ldr	r3, .L140
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, .L140
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L140
	str	r3, [r2]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #4
	ldr	r2, .L140+4
	add	r3, r3, r2
	b	.L139
.L138:
	mov	r3, #0
.L139:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L141:
	.align	2
.L140:
	.word	number_request_queue_used
	.word	fixed_request_queue
	.size	get_fixed_request_queue, .-get_fixed_request_queue
	.align	2
	.global	blk_init_queue
	.syntax unified
	.arm
	.fpu softvfp
	.type	blk_init_queue, %function
blk_init_queue:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	bl	nondet_int
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L143
	bl	get_fixed_request_queue
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3, #32]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	mov	r2, #1
	str	r2, [r3, #44]
	ldr	r3, [fp, #-8]
	b	.L144
.L143:
	mov	r3, #0
.L144:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	blk_init_queue, .-blk_init_queue
	.align	2
	.global	blk_alloc_queue
	.syntax unified
	.arm
	.fpu softvfp
	.type	blk_alloc_queue, %function
blk_alloc_queue:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	bl	nondet_int
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L146
	bl	get_fixed_request_queue
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	mov	r2, #1
	str	r2, [r3, #44]
	ldr	r3, [fp, #-8]
	b	.L147
.L146:
	mov	r3, #0
.L147:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	blk_alloc_queue, .-blk_alloc_queue
	.align	2
	.global	blk_queue_make_request
	.syntax unified
	.arm
	.fpu softvfp
	.type	blk_queue_make_request, %function
blk_queue_make_request:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #4]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	blk_queue_make_request, .-blk_queue_make_request
	.align	2
	.global	end_request
	.syntax unified
	.arm
	.fpu softvfp
	.type	end_request, %function
end_request:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #40]
	ldr	r3, [r3, #48]
	ldr	r3, [r3, #40]
	str	r3, [fp, #-8]
	ldr	r1, .L152
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	sub	r2, r2, r3
	lsl	r3, r2, #3
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #164
	mov	r2, #0
	str	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L153:
	.align	2
.L152:
	.word	genhd_registered
	.size	end_request, .-end_request
	.align	2
	.global	blk_queue_hardsect_size
	.syntax unified
	.arm
	.fpu softvfp
	.type	blk_queue_hardsect_size, %function
blk_queue_hardsect_size:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	mov	r3, r1
	strh	r3, [fp, #-10]	@ movhi
	ldr	r3, [fp, #-8]
	ldrh	r2, [fp, #-10]	@ movhi
	strh	r2, [r3, #36]	@ movhi
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	blk_queue_hardsect_size, .-blk_queue_hardsect_size
	.align	2
	.global	blk_cleanup_queue
	.syntax unified
	.arm
	.fpu softvfp
	.type	blk_cleanup_queue, %function
blk_cleanup_queue:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #44]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	blk_cleanup_queue, .-blk_cleanup_queue
	.data
	.align	2
	.type	auto_probe, %object
	.size	auto_probe, 4
auto_probe:
	.word	1
	.align	2
	.type	cm206_base, %object
	.size	cm206_base, 4
cm206_base:
	.word	832
	.align	2
	.type	cm206_irq, %object
	.size	cm206_irq, 4
cm206_irq:
	.word	11
	.local	cm206
	.comm	cm206,8,4
	.global	_ddv_module_license
	.align	2
	.type	_ddv_module_license, %object
	.size	_ddv_module_license, 4
_ddv_module_license:
	.ascii	"GPL\000"
	.local	cd
	.comm	cd,4,4
	.local	cm206_queue
	.comm	cm206_queue,4,4
	.align	2
	.type	cm206_lock, %object
	.size	cm206_lock, 8
cm206_lock:
	.word	1
	.word	0
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	send_command_polled, %function
send_command_polled:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #100
	str	r3, [fp, #-8]
.L162:
	ldr	r3, .L167
	ldr	r3, [r3]
	add	r3, r3, #6
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-10]	@ movhi
	ldrh	r3, [fp, #-10]
	and	r3, r3, #1
	cmp	r3, #0
	bne	.L165
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	ble	.L166
	nop
	ldr	r3, [fp, #-8]
	sub	r3, r3, #1
	str	r3, [fp, #-8]
	b	.L162
.L165:
	nop
	b	.L160
.L166:
	nop
.L160:
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, .L167
	ldr	r3, [r3]
	add	r3, r3, #10
	mov	r1, r3
	mov	r0, r2
	bl	outw
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L168:
	.align	2
.L167:
	.word	cm206_base
	.size	send_command_polled, .-send_command_polled
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	receive_echo_polled, %function
receive_echo_polled:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r3, #100
	str	r3, [fp, #-8]
.L173:
	ldr	r3, .L178
	ldr	r3, [r3]
	add	r3, r3, #6
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-12]	@ movhi
	ldrh	r3, [fp, #-12]
	and	r3, r3, #2
	cmp	r3, #0
	bne	.L176
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	ble	.L177
	nop
	ldr	r3, [fp, #-8]
	sub	r3, r3, #1
	str	r3, [fp, #-8]
	b	.L173
.L176:
	nop
	b	.L171
.L177:
	nop
.L171:
	ldr	r3, .L178
	ldr	r3, [r3]
	add	r3, r3, #2
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-10]	@ movhi
	ldrh	r3, [fp, #-10]	@ movhi
	and	r3, r3, #255
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L179:
	.align	2
.L178:
	.word	cm206_base
	.size	receive_echo_polled, .-receive_echo_polled
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	send_receive_polled, %function
send_receive_polled:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	send_command_polled
	bl	receive_echo_polled
	mov	r3, r0
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	send_receive_polled, .-send_receive_polled
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	clear_ur, %function
clear_ur:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L188
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L188
	ldr	r3, [r3]
	ldrb	r3, [r3, #8]
	and	r3, r3, #255
	cmp	r2, r3
	beq	.L187
	b	.L184
.L185:
	ldr	r3, .L188
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L188
	ldr	r3, [r3]
	add	r2, r2, #1
	and	r2, r2, #255
	strb	r2, [r3, #9]
	ldr	r3, .L188
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L188
	ldr	r3, [r3]
	and	r2, r2, #3
	and	r2, r2, #255
	strb	r2, [r3, #9]
.L184:
	ldr	r3, .L188
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L188
	ldr	r3, [r3]
	ldrb	r3, [r3, #8]
	and	r3, r3, #255
	cmp	r2, r3
	bne	.L185
	nop
.L187:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L189:
	.align	2
.L188:
	.word	cd
	.size	clear_ur, .-clear_ur
	.data
	.align	2
	.type	cm206_tasklet, %object
	.size	cm206_tasklet, 16
cm206_tasklet:
	.word	0
	.word	cm206_tasklet_func
	.word	0
	.word	1
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_interrupt, %function
cm206_interrupt:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-64]
	str	r1, [fp, #-68]
	ldr	r3, .L209
	ldr	r3, [r3]
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-54]	@ movhi
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r2, [fp, #-54]	@ movhi
	strh	r2, [r3]	@ movhi
	ldr	r3, .L209
	ldr	r3, [r3]
	add	r3, r3, #6
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-52]	@ movhi
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r2, [fp, #-52]	@ movhi
	strh	r2, [r3, #2]	@ movhi
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r3, [r3, #2]	@ movhi
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #16
	cmp	r3, #0
	beq	.L191
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2520]
	add	r2, r2, #1
	str	r2, [r3, #2520]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-44]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-44]
	str	r2, [r3, #2604]
.L191:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r3, [r3, #2]	@ movhi
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #2
	cmp	r3, #0
	beq	.L192
	ldr	r3, .L209
	ldr	r3, [r3]
	add	r3, r3, #2
	mov	r0, r3
	bl	inb
	mov	r3, r0
	strb	r3, [fp, #-57]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, .L209+4
	ldr	r2, [r2]
	ldrb	r2, [r2, #8]
	and	r2, r2, #255
	add	r3, r3, r2
	ldrb	r2, [fp, #-57]
	strb	r2, [r3, #4]
	ldr	r3, .L209
	ldr	r3, [r3]
	add	r3, r3, #6
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-46]	@ movhi
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r2, [fp, #-46]	@ movhi
	strh	r2, [r3, #2]	@ movhi
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #8]
	and	r2, r3, #255
	ldr	r3, .L209+4
	ldr	r3, [r3]
	add	r2, r2, #1
	and	r2, r2, #255
	strb	r2, [r3, #8]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #8]
	and	r2, r3, #255
	ldr	r3, .L209+4
	ldr	r3, [r3]
	and	r2, r2, #3
	and	r2, r2, #255
	strb	r2, [r3, #8]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	add	r3, r3, #2368
	add	r3, r3, #12
	mov	r0, r3
	bl	waitqueue_active
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L193
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #2423]	@ zero_extendqisi2
	cmp	r3, #1
	bhi	.L193
	ldr	r3, .L209+4
	ldr	r3, [r3]
	add	r3, r3, #2400
	add	r3, r3, #4
	mov	r0, r3
	bl	del_timer
	ldr	r3, .L209+4
	ldr	r3, [r3]
	add	r3, r3, #2368
	add	r3, r3, #12
	mov	r0, r3
	bl	wake_up_interruptible
	b	.L193
.L192:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r3, [r3]	@ movhi
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #128
	cmp	r3, #0
	beq	.L194
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #2423]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L195
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2428]
	add	r2, r2, #1
	str	r2, [r3, #2428]
.L195:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	add	r3, r3, #2384
	add	r3, r3, #8
	mov	r0, r3
	bl	waitqueue_active
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L196
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #2422]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L197
	ldr	r3, .L209+4
	ldr	r3, [r3]
	add	r3, r3, #2400
	add	r3, r3, #4
	mov	r0, r3
	bl	del_timer
	ldr	r3, .L209+4
	ldr	r3, [r3]
	add	r3, r3, #2384
	add	r3, r3, #8
	mov	r0, r3
	bl	wake_up_interruptible
	b	.L196
.L197:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #2423]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L196
	ldr	r3, .L209+4
	ldr	r3, [r3]
	add	r3, r3, #2400
	add	r3, r3, #4
	mov	r0, r3
	bl	del_timer
	ldr	r3, .L209+4
	ldr	r3, [r3]
	add	r3, r3, #2384
	add	r3, r3, #8
	mov	r0, r3
	bl	wake_up_interruptible
.L196:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2444]
	add	r2, r2, #1
	str	r2, [r3, #2444]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-16]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #2528]
	b	.L193
.L194:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r3, [r3, #12]
	cmp	r3, #0
	beq	.L207
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r3, [r3, #2]	@ movhi
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L208
	ldr	r3, .L209
	ldr	r3, [r3]
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-50]	@ movhi
	ldrsh	r3, [fp, #-50]
	and	r3, r3, #127
	lsl	r3, r3, #16
	asr	r3, r3, #16
	orr	r3, r3, #10496
	lsl	r3, r3, #16
	asr	r3, r3, #16
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, .L209
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r1, r3
	mov	r0, r2
	bl	outw
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r3, [r3, #12]
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, .L209
	ldr	r3, [r3]
	add	r3, r3, #10
	mov	r1, r3
	mov	r0, r2
	bl	outw
	ldr	r3, .L209+4
	ldr	r3, [r3]
	mov	r2, #0
	str	r2, [r3, #12]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #2423]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L193
	ldr	r3, .L209+4
	ldr	r3, [r3]
	add	r3, r3, #2368
	add	r3, r3, #12
	mov	r0, r3
	bl	wake_up_interruptible
	b	.L193
.L207:
	nop
	b	.L198
.L208:
	nop
.L198:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r3, [r3]	@ movhi
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #256
	cmp	r3, #0
	beq	.L200
	ldr	r3, .L209
	ldr	r3, [r3]
	add	r3, r3, #4
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-48]	@ movhi
	ldrh	r3, [fp, #-48]	@ movhi
	strh	r3, [fp, #-56]	@ movhi
	ldr	r3, .L209+4
	ldr	r3, [r3]
	mov	r2, #1
	strb	r2, [r3, #2432]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2448]
	add	r2, r2, #1
	str	r2, [r3, #2448]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-24]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	str	r2, [r3, #2532]
	b	.L193
.L200:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r3, [r3]	@ movhi
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #512
	cmp	r3, #0
	beq	.L201
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2452]
	add	r2, r2, #1
	str	r2, [r3, #2452]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-28]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	str	r2, [r3, #2536]
	b	.L193
.L201:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r3, [r3]	@ movhi
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #1024
	cmp	r3, #0
	beq	.L202
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2456]
	add	r2, r2, #1
	str	r2, [r3, #2456]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-32]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-32]
	str	r2, [r3, #2540]
	b	.L193
.L202:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r3, [r3]	@ movhi
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #2048
	cmp	r3, #0
	beq	.L203
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2460]
	add	r2, r2, #1
	str	r2, [r3, #2460]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-36]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-36]
	str	r2, [r3, #2544]
	b	.L193
.L203:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrh	r3, [r3]	@ movhi
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #8192
	cmp	r3, #0
	bne	.L193
	ldr	r3, .L209
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L209+8
	bl	outw
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2464]
	add	r2, r2, #1
	str	r2, [r3, #2464]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-40]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-40]
	str	r2, [r3, #2548]
.L193:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #2423]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L204
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2428]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2424]
	sub	r2, r2, r3
	ldr	r3, .L209+4
	ldr	r3, [r3]
	add	r3, r3, #2416
	add	r3, r3, #5
	ldrsb	r3, [r3]
	cmp	r2, r3
	bne	.L205
	ldr	r0, .L209+12
	bl	tasklet_schedule
	b	.L204
.L205:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #2432]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L204
	ldr	r0, .L209+12
	bl	tasklet_schedule
.L204:
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2440]
	add	r2, r2, #1
	str	r2, [r3, #2440]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-8]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L209+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2524]
	mov	r3, #1
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L210:
	.align	2
.L209:
	.word	cm206_base
	.word	cd
	.word	10497
	.word	cm206_tasklet
	.size	cm206_interrupt, .-cm206_interrupt
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_timeout, %function
cm206_timeout:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r3, .L213
	ldr	r3, [r3]
	mov	r2, #1
	strb	r2, [r3, #2420]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	bl	wake_up_interruptible
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L214:
	.align	2
.L213:
	.word	cd
	.size	cm206_timeout, .-cm206_timeout
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	sleep_or_timeout, %function
sleep_or_timeout:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, .L218
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2420]
	ldr	r3, .L218
	ldr	r3, [r3]
	add	r3, r3, #2400
	add	r3, r3, #4
	mov	r0, r3
	bl	init_timer
	ldr	r3, .L218
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2412]
	ldr	r3, .L218+4
	ldr	r1, [r3]
	ldr	r2, [fp, #-12]
	ldr	r3, .L218
	ldr	r3, [r3]
	add	r2, r1, r2
	str	r2, [r3, #2404]
	ldr	r3, .L218
	ldr	r3, [r3]
	add	r3, r3, #2400
	add	r3, r3, #4
	mov	r0, r3
	bl	add_timer
	ldr	r0, [fp, #-8]
	bl	interruptible_sleep_on
	ldr	r3, .L218
	ldr	r3, [r3]
	add	r3, r3, #2400
	add	r3, r3, #4
	mov	r0, r3
	bl	del_timer
	ldr	r3, .L218
	ldr	r3, [r3]
	ldrb	r3, [r3, #2420]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L216
	ldr	r3, .L218
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2420]
	mov	r3, #1
	b	.L217
.L216:
	mov	r3, #0
.L217:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L219:
	.align	2
.L218:
	.word	cd
	.word	jiffies
	.size	sleep_or_timeout, .-sleep_or_timeout
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	send_command, %function
send_command:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	ldr	r3, .L225
	ldr	r3, [r3]
	add	r3, r3, #6
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-16]	@ movhi
	ldrh	r3, [fp, #-16]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L221
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, .L225
	ldr	r3, [r3]
	add	r3, r3, #10
	mov	r1, r3
	mov	r0, r2
	bl	outw
	b	.L224
.L221:
	ldr	r3, .L225+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	str	r2, [r3, #12]
	bl	cli
	ldr	r3, .L225
	ldr	r3, [r3]
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-14]	@ movhi
	ldrsh	r3, [fp, #-14]
	and	r3, r3, #127
	lsl	r3, r3, #16
	asr	r3, r3, #16
	orr	r3, r3, #10240
	lsl	r3, r3, #16
	asr	r3, r3, #16
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, .L225
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r1, r3
	mov	r0, r2
	bl	outw
	ldr	r3, .L225+4
	ldr	r3, [r3]
	add	r3, r3, #2368
	add	r3, r3, #12
	mov	r1, #5
	mov	r0, r3
	bl	sleep_or_timeout
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L224
	ldr	r3, .L225+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2472]
	add	r2, r2, #1
	str	r2, [r3, #2472]
	ldr	r3, .L225+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-8]
	ldr	r3, .L225+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L225+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2556]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, .L225
	ldr	r3, [r3]
	add	r3, r3, #10
	mov	r1, r3
	mov	r0, r2
	bl	outw
	nop
.L224:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L226:
	.align	2
.L225:
	.word	cm206_base
	.word	cd
	.size	send_command, .-send_command
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	receive_byte, %function
receive_byte:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	bl	cli
	ldr	r3, .L233
	ldr	r3, [r3]
	ldr	r2, .L233
	ldr	r2, [r2]
	ldrb	r2, [r2, #9]
	and	r2, r2, #255
	add	r3, r3, r2
	ldrb	r3, [r3, #4]
	strb	r3, [fp, #-17]
	ldr	r3, .L233
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L233
	ldr	r3, [r3]
	ldrb	r3, [r3, #8]
	and	r3, r3, #255
	cmp	r2, r3
	beq	.L228
	bl	sti
	ldr	r3, .L233
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L233
	ldr	r3, [r3]
	add	r2, r2, #1
	and	r2, r2, #255
	strb	r2, [r3, #9]
	ldr	r3, .L233
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L233
	ldr	r3, [r3]
	and	r2, r2, #3
	and	r2, r2, #255
	strb	r2, [r3, #9]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	b	.L229
.L228:
	ldr	r3, .L233
	ldr	r3, [r3]
	add	r3, r3, #2368
	add	r3, r3, #12
	ldr	r1, [fp, #-24]
	mov	r0, r3
	bl	sleep_or_timeout
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L230
	ldr	r3, [fp, #-24]
	cmp	r3, #5
	bne	.L231
	ldr	r3, .L233
	ldr	r3, [r3]
	ldr	r2, [r3, #2476]
	add	r2, r2, #1
	str	r2, [r3, #2476]
	ldr	r3, .L233
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-8]
	ldr	r3, .L233
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L233
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2560]
	b	.L232
.L231:
	ldr	r3, .L233
	ldr	r3, [r3]
	ldr	r2, [r3, #2484]
	add	r2, r2, #1
	str	r2, [r3, #2484]
	ldr	r3, .L233
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-12]
	ldr	r3, .L233
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L233
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #2568]
.L232:
	mov	r3, #218
	b	.L229
.L230:
	ldr	r3, .L233
	ldr	r3, [r3]
	ldr	r2, .L233
	ldr	r2, [r2]
	ldrb	r2, [r2, #9]
	and	r2, r2, #255
	add	r3, r3, r2
	ldrb	r3, [r3, #4]
	strb	r3, [fp, #-17]
	ldr	r3, .L233
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L233
	ldr	r3, [r3]
	add	r2, r2, #1
	and	r2, r2, #255
	strb	r2, [r3, #9]
	ldr	r3, .L233
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L233
	ldr	r3, [r3]
	and	r2, r2, #3
	and	r2, r2, #255
	strb	r2, [r3, #9]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
.L229:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L234:
	.align	2
.L233:
	.word	cd
	.size	receive_byte, .-receive_byte
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	receive_echo, %function
receive_echo:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r0, #5
	bl	receive_byte
	mov	r3, r0
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	receive_echo, .-receive_echo
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	send_receive, %function
send_receive:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	send_command
	bl	receive_echo
	mov	r3, r0
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	send_receive, .-send_receive
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	wait_dsb, %function
wait_dsb:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r0, #700
	bl	receive_byte
	mov	r3, r0
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	wait_dsb, .-wait_dsb
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	type_0_command, %function
type_0_command:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	bl	clear_ur
	ldr	r0, [fp, #-24]
	bl	send_receive
	mov	r3, r0
	strb	r3, [fp, #-14]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	beq	.L242
	ldr	r3, .L245
	ldr	r3, [r3]
	ldr	r2, [r3, #2468]
	add	r2, r2, #1
	str	r2, [r3, #2468]
	ldr	r3, .L245
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-8]
	ldr	r3, .L245
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L245
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2552]
	mvn	r3, #0
	b	.L243
.L242:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L244
	bl	wait_dsb
	mov	r3, r0
	strb	r3, [fp, #-13]
	ldr	r3, .L245
	ldr	r3, [r3]
	ldrb	r2, [fp, #-13]
	strb	r2, [r3, #10]
.L244:
	mov	r3, #0
.L243:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L246:
	.align	2
.L245:
	.word	cd
	.size	type_0_command, .-type_0_command
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	type_1_command, %function
type_1_command:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	mov	r1, #0
	ldr	r0, [fp, #-24]
	bl	type_0_command
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L248
	mvn	r3, #0
	b	.L249
.L248:
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L250
.L251:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-32]
	add	r4, r2, r3
	mov	r0, #248
	bl	send_receive
	mov	r3, r0
	strb	r3, [r4]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L250:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	blt	.L251
	mov	r3, #0
.L249:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
	.size	type_1_command, .-type_1_command
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	reset_cm260, %function
reset_cm260:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L254
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L254+4
	bl	outw
	mov	r0, #10
	bl	udelay
	ldr	r3, .L254
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L254+8
	bl	outw
	nop
	pop	{fp, pc}
.L255:
	.align	2
.L254:
	.word	cm206_base
	.word	11009
	.word	10497
	.size	reset_cm260, .-reset_cm260
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	fsm, %function
fsm:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r1, [fp, #-8]
	ldr	r3, .L258
	smull	r2, r3, r1, r3
	asr	r2, r3, #3
	asr	r3, r1, #31
	sub	r2, r2, r3
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	sub	r2, r1, r2
	and	r2, r2, #255
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, .L258
	smull	r1, r2, r3, r2
	asr	r2, r2, #3
	asr	r3, r3, #31
	sub	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #2
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-8]
	ldr	r3, .L258+4
	smull	r1, r3, r2, r3
	add	r3, r3, r2
	asr	r1, r3, #5
	asr	r3, r2, #31
	sub	r1, r1, r3
	mov	r3, r1
	lsl	r3, r3, #4
	sub	r3, r3, r1
	lsl	r3, r3, #2
	sub	r1, r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, .L258+4
	smull	r1, r2, r3, r2
	add	r2, r2, r3
	asr	r2, r2, #5
	asr	r3, r3, #31
	sub	r2, r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r3, #2
	and	r2, r2, #255
	strb	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L259:
	.align	2
.L258:
	.word	458129845
	.word	-2004318071
	.size	fsm, .-fsm
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	fsm2lba, %function
fsm2lba:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r2, r3, #2
	ldr	r3, [fp, #-8]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #4
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r2, r2, r3
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r3, r2, r3
	add	r3, r0, r3
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	fsm2lba, .-fsm2lba
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	f_s_m2lba, %function
f_s_m2lba:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	mov	r3, r0
	strb	r3, [fp, #-5]
	mov	r3, r1
	strb	r3, [fp, #-6]
	mov	r3, r2
	strb	r3, [fp, #-7]
	ldrb	r1, [fp, #-5]	@ zero_extendqisi2
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	sub	r0, r3, #2
	ldrb	r2, [fp, #-7]	@ zero_extendqisi2
	mov	r3, r2
	lsl	r3, r3, #4
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r2, r0, r3
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r3, r2, r3
	add	r3, r1, r3
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	f_s_m2lba, .-f_s_m2lba
	.section	.rodata
	.align	2
.LC4:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	start_read, %function
start_read:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	ldr	r3, .L273
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #32
	strb	r3, [fp, #-12]
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L265
.L266:
	sub	r2, fp, #12
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L265:
	ldr	r3, [fp, #-28]
	cmp	r3, #3
	bls	.L266
	sub	r3, fp, #12
	add	r3, r3, #1
	mov	r1, r3
	ldr	r0, [fp, #-40]
	bl	fsm
	bl	clear_ur
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L267
.L270:
	sub	r2, fp, #12
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	send_receive
	mov	r3, r0
	strb	r3, [fp, #-30]
	ldrb	r3, [fp, #-30]	@ zero_extendqisi2
	str	r3, [fp, #-20]
	sub	r2, fp, #12
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-20]
	cmp	r3, r2
	beq	.L268
	ldr	r3, .L273+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2468]
	add	r2, r2, #1
	str	r2, [r3, #2468]
	ldr	r3, .L273+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-16]
	ldr	r3, .L273+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L273+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #2552]
	ldr	r3, [fp, #-20]
	cmp	r3, #255
	bne	.L268
	bl	receive_echo
	mov	r3, r0
	strb	r3, [fp, #-29]
	ldrb	r3, [fp, #-29]	@ zero_extendqisi2
	str	r3, [fp, #-20]
	sub	r2, fp, #12
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-20]
	cmp	r3, r2
	beq	.L268
	mvn	r3, #0
	b	.L271
.L268:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L267:
	ldr	r3, [fp, #-24]
	cmp	r3, #3
	ble	.L270
	mov	r3, #0
.L271:
	ldr	r2, .L273
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L272
	bl	__stack_chk_fail
.L272:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L274:
	.align	2
.L273:
	.word	.LC4
	.word	cd
	.size	start_read, .-start_read
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	stop_read, %function
stop_read:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r1, #0
	mov	r0, #112
	bl	type_0_command
	bl	receive_echo
	mov	r3, r0
	strb	r3, [fp, #-13]
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #255
	beq	.L276
	ldr	r3, .L278
	ldr	r3, [r3]
	ldr	r2, [r3, #2488]
	add	r2, r2, #1
	str	r2, [r3, #2488]
	ldr	r3, .L278
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-8]
	ldr	r3, .L278
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L278
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2572]
	mvn	r3, #0
	b	.L277
.L276:
	mov	r3, #0
.L277:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L279:
	.align	2
.L278:
	.word	cd
	.size	stop_read, .-stop_read
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_background, %function
read_background:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, .L284
	ldr	r3, [r3]
	ldrb	r3, [r3, #2423]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L281
	mvn	r3, #0
	b	.L282
.L281:
	ldr	r3, .L284+4
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L284+8
	bl	outw
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L283
	ldr	r0, [fp, #-16]
	bl	start_read
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L283
	mvn	r3, #1
	b	.L282
.L283:
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-8]
	ldr	r3, .L284
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2428]
	ldr	r3, .L284
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2424]
	ldr	r3, .L284
	ldr	r3, [r3]
	mov	r2, #1
	strb	r2, [r3, #2423]
	mov	r3, #0
.L282:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L285:
	.align	2
.L284:
	.word	cd
	.word	cm206_base
	.word	10497
	.size	read_background, .-read_background
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_sector, %function
read_sector:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-32]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldrb	r3, [r3, #2423]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L287
	ldr	r3, .L297
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2423]
	ldr	r3, .L297
	ldr	r3, [r3]
	mvn	r2, #0
	str	r2, [r3, #2428]
	bl	stop_read
.L287:
	ldr	r3, .L297
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2432]
	bl	reset_cm260
	ldr	r0, [fp, #-40]
	bl	start_read
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L288
	mvn	r3, #0
	b	.L289
.L288:
	ldr	r3, .L297
	ldr	r3, [r3]
	add	r3, r3, #2384
	add	r3, r3, #8
	mov	r1, #300
	mov	r0, r3
	bl	sleep_or_timeout
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L290
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r2, [r3, #2480]
	add	r2, r2, #1
	str	r2, [r3, #2480]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-8]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2564]
	bl	stop_read
	mvn	r3, #2
	b	.L289
.L290:
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldrh	r3, [r3]	@ movhi
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #4096
	cmp	r3, #0
	beq	.L295
	ldr	r3, [fp, #-32]
	cmp	r3, #99
	bgt	.L296
	b	.L288
.L295:
	nop
	b	.L293
.L296:
	nop
.L293:
	ldr	r3, .L297+4
	ldr	r3, [r3]
	add	r3, r3, #4
	mov	r0, r3
	ldr	r3, .L297
	ldr	r3, [r3]
	add	r3, r3, #20
	ldr	r2, .L297+8
	mov	r1, r3
	bl	insw
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	mov	r1, #1
	mov	r0, r3
	bl	read_background
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L294
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r2, [r3, #2504]
	add	r2, r2, #1
	str	r2, [r3, #2504]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-16]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #2588]
.L294:
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r2, [fp, #-40]
	str	r2, [r3, #2372]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r2, [fp, #-40]
	add	r2, r2, #1
	str	r2, [r3, #2376]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r2, [r3, #2500]
	add	r2, r2, #1
	str	r2, [r3, #2500]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-12]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L297
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #2584]
	mov	r3, #0
.L289:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L298:
	.align	2
.L297:
	.word	cd
	.word	cm206_base
	.word	1176
	.size	read_sector, .-read_sector
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_tasklet_func, %function
cm206_tasklet_func:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldrb	r3, [r3, #2423]	@ zero_extendqisi2
	sub	r3, r3, #1
	cmp	r3, #3
	ldrls	pc, [pc, r3, asl #2]
	b	.L312
.L302:
	.word	.L305
	.word	.L304
	.word	.L303
	.word	.L301
.L305:
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r2, [r3, #2508]
	add	r2, r2, #1
	str	r2, [r3, #2508]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-8]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2592]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldrh	r3, [r3, #2]	@ movhi
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #1
	cmp	r3, #0
	bne	.L306
	ldr	r3, .L313
	ldr	r3, [r3]
	mov	r2, #112
	str	r2, [r3, #12]
	ldr	r3, .L313+4
	ldr	r3, [r3]
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-18]	@ movhi
	ldrsh	r3, [fp, #-18]
	and	r3, r3, #127
	lsl	r3, r3, #16
	asr	r3, r3, #16
	orr	r3, r3, #10240
	lsl	r3, r3, #16
	asr	r3, r3, #16
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, .L313+4
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r1, r3
	mov	r0, r2
	bl	outw
	ldr	r3, .L313
	ldr	r3, [r3]
	mov	r2, #2
	strb	r2, [r3, #2423]
	b	.L300
.L306:
	ldr	r3, .L313+4
	ldr	r3, [r3]
	add	r3, r3, #10
	mov	r1, r3
	mov	r0, #112
	bl	outw
.L304:
	ldr	r3, .L313
	ldr	r3, [r3]
	mov	r2, #3
	strb	r2, [r3, #2423]
	b	.L300
.L303:
	ldr	r3, .L313
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L313
	ldr	r3, [r3]
	ldrb	r3, [r3, #8]
	and	r3, r3, #255
	cmp	r2, r3
	beq	.L307
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r2, .L313
	ldr	r2, [r2]
	ldrb	r2, [r2, #9]
	and	r2, r2, #255
	add	r3, r3, r2
	ldrb	r3, [r3, #4]
	and	r3, r3, #255
	cmp	r3, #112
	beq	.L308
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r2, [r3, #2468]
	add	r2, r2, #1
	str	r2, [r3, #2468]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-12]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #2552]
.L308:
	ldr	r3, .L313
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L313
	ldr	r3, [r3]
	add	r2, r2, #1
	and	r2, r2, #255
	strb	r2, [r3, #9]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L313
	ldr	r3, [r3]
	and	r2, r2, #3
	and	r2, r2, #255
	strb	r2, [r3, #9]
.L307:
	ldr	r3, .L313
	ldr	r3, [r3]
	ldrb	r2, [r3, #2423]	@ zero_extendqisi2
	ldr	r3, .L313
	ldr	r3, [r3]
	add	r2, r2, #1
	and	r2, r2, #255
	strb	r2, [r3, #2423]
	b	.L300
.L301:
	ldr	r3, .L313
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L313
	ldr	r3, [r3]
	ldrb	r3, [r3, #8]
	and	r3, r3, #255
	cmp	r2, r3
	beq	.L309
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r2, .L313
	ldr	r2, [r2]
	ldrb	r2, [r2, #9]
	and	r2, r2, #255
	add	r3, r3, r2
	ldrb	r3, [r3, #4]
	and	r3, r3, #255
	cmp	r3, #255
	beq	.L310
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r2, [r3, #2488]
	add	r2, r2, #1
	str	r2, [r3, #2488]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-16]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #2572]
.L310:
	ldr	r3, .L313
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L313
	ldr	r3, [r3]
	add	r2, r2, #1
	and	r2, r2, #255
	strb	r2, [r3, #9]
	ldr	r3, .L313
	ldr	r3, [r3]
	ldrb	r3, [r3, #9]
	and	r2, r3, #255
	ldr	r3, .L313
	ldr	r3, [r3]
	and	r2, r2, #3
	and	r2, r2, #255
	strb	r2, [r3, #9]
.L309:
	ldr	r3, .L313
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2423]
.L300:
	nop
.L312:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L314:
	.align	2
.L313:
	.word	cd
	.word	cm206_base
	.size	cm206_tasklet_func, .-cm206_tasklet_func
	.section	.rodata
	.align	2
.LC5:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_drive_status, %function
get_drive_status:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r3, .L318
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #12
	mov	r2, r3
	mov	r1, #2
	mov	r0, #80
	bl	type_1_command
	ldr	r3, .L318+4
	ldr	r3, [r3]
	ldrb	r2, [fp, #-12]	@ zero_extendqisi2
	strb	r2, [r3, #10]
	ldr	r3, .L318+4
	ldr	r3, [r3]
	ldrb	r2, [fp, #-11]	@ zero_extendqisi2
	strb	r2, [r3, #11]
	ldr	r3, .L318+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #3132]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, .L318+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #10]
	and	r3, r3, #255
	and	r3, r3, #168
	cmp	r3, #0
	movne	r3, #1
	moveq	r3, #0
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r2, r3
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, .L318+4
	ldr	r3, [r3]
	and	r2, r2, #255
	strb	r2, [r3, #3132]
	nop
	ldr	r3, .L318
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L317
	bl	__stack_chk_fail
.L317:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L319:
	.align	2
.L318:
	.word	.LC5
	.word	cd
	.size	get_drive_status, .-get_drive_status
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_disc_status, %function
get_disc_status:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L322
	ldr	r3, [r3]
	add	r3, r3, #2432
	add	r3, r3, #1
	mov	r2, r3
	mov	r1, #7
	mov	r0, #81
	bl	type_1_command
	nop
	pop	{fp, pc}
.L323:
	.align	2
.L322:
	.word	cd
	.size	get_disc_status, .-get_disc_status
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_open, %function
cm206_open:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, .L327
	ldr	r3, [r3]
	ldr	r3, [r3, #16]
	cmp	r3, #0
	bne	.L325
	ldr	r3, .L327
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2423]
	bl	reset_cm260
	ldr	r3, .L327
	ldr	r3, [r3]
	mvn	r2, #0
	str	r2, [r3, #2428]
	ldr	r3, .L327
	ldr	r3, [r3]
	mvn	r2, #0
	str	r2, [r3, #2376]
.L325:
	ldr	r3, .L327
	ldr	r3, [r3]
	ldr	r2, [r3, #16]
	add	r2, r2, #1
	str	r2, [r3, #16]
	ldr	r3, .L327
	ldr	r3, [r3]
	ldr	r2, [r3, #2512]
	add	r2, r2, #1
	str	r2, [r3, #2512]
	ldr	r3, .L327
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-8]
	ldr	r3, .L327
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L327
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2596]
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L328:
	.align	2
.L327:
	.word	cd
	.size	cm206_open, .-cm206_open
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_release, %function
cm206_release:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r3, .L333
	ldr	r3, [r3]
	ldr	r3, [r3, #16]
	cmp	r3, #1
	bne	.L330
	ldr	r3, .L333
	ldr	r3, [r3]
	ldrb	r3, [r3, #2423]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L331
	ldr	r3, .L333
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2423]
	bl	stop_read
.L331:
	ldr	r3, .L333
	ldr	r3, [r3]
	mvn	r2, #0
	str	r2, [r3, #2376]
	ldr	r3, .L333
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2434]
.L330:
	ldr	r3, .L333
	ldr	r3, [r3]
	ldr	r2, [r3, #16]
	sub	r2, r2, #1
	str	r2, [r3, #16]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L334:
	.align	2
.L333:
	.word	cd
	.size	cm206_release, .-cm206_release
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	empty_buffer, %function
empty_buffer:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	b	.L336
.L337:
	ldr	r3, .L339
	ldr	r3, [r3]
	add	r3, r3, #4
	mov	r0, r3
	ldr	r3, .L339+4
	ldr	r3, [r3]
	add	r2, r3, #20
	ldr	r3, .L339+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #2432]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r1, r2, r3
	ldr	r3, .L339+4
	ldr	r3, [r3]
	ldrb	r3, [r3, #2432]	@ zero_extendqisi2
	rsb	r3, r3, #1168
	add	r3, r3, #8
	mov	r2, r3
	bl	insw
	ldr	r3, [fp, #-16]
	sub	r3, r3, #1
	str	r3, [fp, #-16]
	ldr	r3, .L339+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2424]
	add	r2, r2, #1
	str	r2, [r3, #2424]
	ldr	r3, .L339+4
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2432]
	ldr	r3, .L339+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2496]
	add	r2, r2, #1
	str	r2, [r3, #2496]
	ldr	r3, .L339+4
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-8]
	ldr	r3, .L339+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L339+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2580]
.L336:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bge	.L337
	ldr	r3, .L339+4
	ldr	r3, [r3]
	ldr	r2, [r3, #2424]
	ldr	r3, .L339+4
	ldr	r3, [r3]
	sub	r2, r2, #1
	str	r2, [r3, #2372]
	ldr	r3, .L339+4
	ldr	r2, [r3]
	ldr	r3, .L339+4
	ldr	r3, [r3]
	ldr	r2, [r2, #2424]
	str	r2, [r3, #2376]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L340:
	.align	2
.L339:
	.word	cm206_base
	.word	cd
	.size	empty_buffer, .-empty_buffer
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	try_adapter, %function
try_adapter:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, .L352
	ldr	r3, [r3]
	ldr	r3, [r3, #2424]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L350
	ldr	r3, .L352
	ldr	r3, [r3]
	ldr	r3, [r3, #2428]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	bge	.L351
	ldr	r3, .L352
	ldr	r3, [r3]
	ldr	r3, [r3, #2424]
	ldr	r2, [fp, #-16]
	sub	r3, r2, r3
	mov	r0, r3
	bl	empty_buffer
	mov	r3, #0
	b	.L344
.L350:
	nop
	b	.L342
.L351:
	nop
.L342:
	ldr	r3, .L352
	ldr	r3, [r3]
	ldrb	r3, [r3, #2423]	@ zero_extendqisi2
	cmp	r3, #1
	bne	.L345
	ldr	r3, .L352
	ldr	r3, [r3]
	ldr	r3, [r3, #2424]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L346
	ldr	r3, .L352
	ldr	r3, [r3]
	ldr	r2, [r3, #2424]
	ldr	r3, .L352
	ldr	r3, [r3]
	add	r3, r3, #2416
	add	r3, r3, #5
	ldrsb	r3, [r3]
	add	r3, r2, r3
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	bge	.L347
	ldr	r3, .L352
	ldr	r3, [r3]
	mov	r2, #1
	strb	r2, [r3, #2422]
	b	.L348
.L349:
	ldr	r3, .L352
	ldr	r3, [r3]
	add	r3, r3, #2384
	add	r3, r3, #8
	mov	r1, #300
	mov	r0, r3
	bl	sleep_or_timeout
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L348
	ldr	r3, .L352
	ldr	r3, [r3]
	ldr	r2, [r3, #2492]
	add	r2, r2, #1
	str	r2, [r3, #2492]
	ldr	r3, .L352
	ldr	r3, [r3]
	ldr	r3, [r3, #2608]
	str	r3, [fp, #-8]
	ldr	r3, .L352
	ldr	r3, [r3]
	ldr	r2, [r3, #2608]
	add	r2, r2, #1
	str	r2, [r3, #2608]
	ldr	r3, .L352
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #2576]
	ldr	r3, .L352
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2422]
	mvn	r3, #0
	b	.L344
.L348:
	ldr	r3, .L352
	ldr	r3, [r3]
	ldr	r3, [r3, #2428]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	bge	.L349
	ldr	r3, .L352
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2422]
	ldr	r3, .L352
	ldr	r3, [r3]
	ldr	r3, [r3, #2424]
	ldr	r2, [fp, #-16]
	sub	r3, r2, r3
	mov	r0, r3
	bl	empty_buffer
	mov	r3, #0
	b	.L344
.L347:
	mvn	r3, #1
	b	.L344
.L346:
	mvn	r3, #1
	b	.L344
.L345:
	mvn	r3, #1
.L344:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L353:
	.align	2
.L352:
	.word	cd
	.size	try_adapter, .-try_adapter
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_cm206_request, %function
do_cm206_request:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-48]
.L366:
	ldr	r0, [fp, #-48]
	bl	elv_next_request
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L368
	ldr	r3, [fp, #-32]
	add	r3, r3, #66
	cmp	r3, #0
	beq	.L357
	mov	r1, #0
	ldr	r0, [fp, #-32]
	bl	end_request
	b	.L358
.L357:
	ldr	r3, [fp, #-48]
	ldr	r3, [r3, #32]
	mov	r0, r3
	bl	spin_unlock_irq
	mov	r3, #0
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L359
.L365:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #44]
	ldr	r3, [fp, #-40]
	add	r3, r2, r3
	lsr	r3, r3, #2
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #44]
	ldr	r3, [fp, #-40]
	add	r3, r2, r3
	and	r3, r3, #3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #56]
	ldr	r2, [fp, #-40]
	lsl	r2, r2, #9
	add	r3, r3, r2
	str	r3, [fp, #-20]
	ldr	r3, .L371
	ldr	r3, [r3]
	ldr	r3, [r3, #2372]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	blt	.L369
	ldr	r3, .L371
	ldr	r3, [r3]
	ldr	r3, [r3, #2376]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	bge	.L370
	ldr	r3, .L371
	ldr	r3, [r3]
	add	r2, r3, #20
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #9
	mov	r0, r3
	ldr	r3, .L371
	ldr	r3, [r3]
	ldr	r3, [r3, #2372]
	ldr	r1, [fp, #-28]
	sub	r3, r1, r3
	mov	r1, #2352
	mul	r3, r1, r3
	add	r3, r0, r3
	add	r3, r3, #16
	add	r3, r2, r3
	str	r3, [fp, #-16]
	mov	r2, #512
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-20]
	bl	memcpy
	b	.L362
.L369:
	nop
	b	.L360
.L370:
	nop
.L360:
	ldr	r0, [fp, #-28]
	bl	try_adapter
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L363
	ldr	r0, [fp, #-28]
	bl	read_sector
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L364
	mov	r3, #1
	str	r3, [fp, #-36]
	b	.L362
.L364:
	ldr	r3, .L371
	ldr	r3, [r3]
	add	r2, r3, #20
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #9
	add	r3, r3, #16
	add	r3, r2, r3
	str	r3, [fp, #-16]
	mov	r2, #512
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-20]
	bl	memcpy
	b	.L362
.L363:
	ldr	r3, .L371
	ldr	r3, [r3]
	add	r2, r3, #20
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #9
	add	r3, r3, #16
	add	r3, r2, r3
	str	r3, [fp, #-16]
	mov	r2, #512
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-20]
	bl	memcpy
.L362:
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L359:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #48]
	ldr	r3, [fp, #-40]
	cmp	r2, r3
	bhi	.L365
	ldr	r3, [fp, #-48]
	ldr	r3, [r3, #32]
	mov	r0, r3
	bl	spin_lock_irq
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	moveq	r3, #1
	movne	r3, #0
	and	r3, r3, #255
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	end_request
.L358:
	b	.L366
.L368:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L372:
	.align	2
.L371:
	.word	cd
	.size	do_cm206_request, .-do_cm206_request
	.section	.rodata
	.align	2
.LC6:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	seek, %function
seek:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r3, .L380
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #16
	strb	r3, [fp, #-12]
	mov	r3, #1
	str	r3, [fp, #-16]
	b	.L374
.L375:
	sub	r2, fp, #12
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L374:
	ldr	r3, [fp, #-16]
	cmp	r3, #3
	bls	.L375
	sub	r3, fp, #12
	add	r3, r3, #1
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	fsm
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L376
.L377:
	sub	r2, fp, #12
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, #0
	mov	r0, r3
	bl	type_0_command
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L376:
	ldr	r3, [fp, #-20]
	cmp	r3, #3
	ble	.L377
	bl	wait_dsb
	mov	r3, r0
	strb	r3, [fp, #-21]
	ldr	r3, .L380+4
	ldr	r3, [r3]
	ldrb	r2, [fp, #-21]
	strb	r2, [r3, #10]
	nop
	ldr	r3, .L380
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L379
	bl	__stack_chk_fail
.L379:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L381:
	.align	2
.L380:
	.word	.LC6
	.word	cd
	.size	seek, .-seek
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	bcdbin, %function
bcdbin:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	mov	r3, r0
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	lsr	r3, r3, #4
	and	r3, r3, #255
	mov	r2, r3
	lsl	r2, r2, #2
	add	r3, r2, r3
	lsl	r3, r3, #1
	and	r2, r3, #255
	ldrb	r3, [fp, #-5]
	and	r3, r3, #15
	and	r3, r3, #255
	add	r3, r2, r3
	and	r3, r3, #255
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	bcdbin, .-bcdbin
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	normalize_track, %function
normalize_track:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	mov	r3, r0
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L385
	mov	r3, #1
	b	.L386
.L385:
	ldr	r3, .L388
	ldr	r3, [r3]
	ldrb	r3, [r3, #2435]	@ zero_extendqisi2
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	cmp	r2, r3
	bls	.L387
	ldr	r3, .L388
	ldr	r3, [r3]
	ldrb	r3, [r3, #2435]	@ zero_extendqisi2
	add	r3, r3, #1
	and	r3, r3, #255
	b	.L386
.L387:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
.L386:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L389:
	.align	2
.L388:
	.word	cd
	.size	normalize_track, .-normalize_track
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_toc_lba, %function
get_toc_lba:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	mov	r3, r0
	strb	r3, [fp, #-53]
	ldr	r3, .L407
	str	r3, [fp, #-44]
	ldr	r3, .L407+4
	ldr	r3, [r3]
	add	r3, r3, #2608
	add	r3, r3, #10
	mov	r0, r3
	bl	fsm2lba
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-20]
	ldr	r3, .L407+4
	ldr	r3, [r3]
	add	r3, r3, #3104
	add	r3, r3, #13
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-28]
	ldr	r3, .L407+8
	str	r3, [fp, #-12]
	ldrb	r3, [fp, #-53]	@ zero_extendqisi2
	str	r3, [fp, #-36]
	b	.L391
.L394:
	ldr	r3, .L407+4
	ldr	r1, [r3]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r1, r3
	add	r3, r3, #2608
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L392
	ldr	r3, .L407+4
	ldr	r1, [r3]
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r3, #2608
	add	r3, r1, r3
	add	r3, r3, #5
	mov	r0, r3
	bl	fsm2lba
	str	r0, [fp, #-40]
	b	.L393
.L392:
	ldr	r3, [fp, #-36]
	sub	r3, r3, #1
	str	r3, [fp, #-36]
.L391:
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	bgt	.L394
.L393:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L404:
	ldr	r0, [fp, #-32]
	bl	seek
	ldr	r2, [fp, #-16]
	mov	r1, #10
	mov	r0, #65
	bl	type_1_command
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	normalize_track
	mov	r3, r0
	strb	r3, [fp, #-48]
	ldr	r3, .L407+4
	ldr	r1, [r3]
	ldrb	r2, [fp, #-48]	@ zero_extendqisi2
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r1, r3
	add	r3, r3, #2608
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L395
	ldr	r3, [fp, #-16]
	add	r3, r3, #5
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	bcdbin
	mov	r3, r0
	strb	r3, [fp, #-47]
	ldr	r3, [fp, #-16]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	bcdbin
	mov	r3, r0
	strb	r3, [fp, #-46]
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	bcdbin
	mov	r3, r0
	strb	r3, [fp, #-45]
	ldr	r3, [fp, #-16]
	add	r3, r3, #9
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldrb	r3, [fp, #-47]	@ zero_extendqisi2
	sub	r1, r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #8
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldrb	r3, [fp, #-46]	@ zero_extendqisi2
	sub	r3, r2, r3
	sub	r0, r3, #2
	ldr	r3, [fp, #-16]
	add	r3, r3, #7
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldrb	r3, [fp, #-45]	@ zero_extendqisi2
	sub	r2, r2, r3
	mov	r3, r2
	lsl	r3, r3, #4
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r2, r0, r3
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r3, r2, r3
	add	r3, r1, r3
	str	r3, [fp, #-8]
	ldr	r3, .L407+4
	ldr	r1, [r3]
	ldrb	r2, [fp, #-48]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	ldrb	r0, [r3, #1]	@ zero_extendqisi2
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r1, r3
	add	r3, r3, #2608
	add	r3, r3, #4
	mov	r2, r0
	strb	r2, [r3]
	ldr	r3, .L407+4
	ldr	r1, [r3]
	ldrb	r2, [fp, #-48]	@ zero_extendqisi2
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r3, #2608
	add	r3, r1, r3
	add	r3, r3, #5
	mov	r1, r3
	ldr	r0, [fp, #-8]
	bl	fsm
	ldr	r3, .L407+4
	ldr	r1, [r3]
	ldrb	r2, [fp, #-48]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	ldrb	r0, [r3]	@ zero_extendqisi2
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r1, r3
	add	r3, r3, #2608
	add	r3, r3, #8
	mov	r2, r0
	strb	r2, [r3]
	ldrb	r2, [fp, #-48]	@ zero_extendqisi2
	ldrb	r3, [fp, #-53]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L395
	ldr	r3, [fp, #-8]
	b	.L396
.L395:
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L397
	ldrb	r2, [fp, #-48]	@ zero_extendqisi2
	ldrb	r3, [fp, #-53]	@ zero_extendqisi2
	cmp	r2, r3
	bcs	.L398
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-40]
	b	.L399
.L398:
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-44]
.L399:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	lsr	r2, r3, #31
	add	r3, r2, r3
	asr	r3, r3, #1
	str	r3, [fp, #-32]
	b	.L400
.L397:
	ldrb	r2, [fp, #-48]	@ zero_extendqisi2
	ldrb	r3, [fp, #-53]	@ zero_extendqisi2
	cmp	r2, r3
	bcs	.L401
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-32]
	b	.L400
.L401:
	mov	r3, #1
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-44]
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-12]
	sub	r3, r2, r3
	str	r3, [fp, #-40]
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	lsr	r2, r3, #31
	add	r3, r2, r3
	asr	r3, r3, #1
	str	r3, [fp, #-32]
.L400:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	beq	.L406
	b	.L404
.L406:
	nop
	ldr	r3, [fp, #-32]
.L396:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L408:
	.align	2
.L407:
	.word	332850
	.word	cd
	.word	13500
	.size	get_toc_lba, .-get_toc_lba
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	update_toc_entry, %function
update_toc_entry:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r3, r0
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	mov	r0, r3
	bl	normalize_track
	mov	r3, r0
	strb	r3, [fp, #-5]
	ldr	r3, .L413
	ldr	r1, [r3]
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r1, r3
	add	r3, r3, #2608
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L412
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	mov	r0, r3
	bl	get_toc_lba
	nop
.L412:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L414:
	.align	2
.L413:
	.word	cd
	.size	update_toc_entry, .-update_toc_entry
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_toc_header, %function
read_toc_header:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, .L421
	ldr	r3, [r3]
	ldrb	r3, [r3, #2434]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L416
	bl	get_disc_status
.L416:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L417
	ldr	r3, .L421
	ldr	r3, [r3]
	ldrb	r2, [r3, #2434]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	strb	r2, [r3]
	ldr	r3, .L421
	ldr	r3, [r3]
	ldrb	r2, [r3, #2435]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	strb	r2, [r3, #1]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L418
.L419:
	ldr	r3, .L421
	ldr	r1, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #3
	ldr	r2, .L421
	ldr	r2, [r2]
	add	r3, r1, r3
	ldrb	r1, [r3, #2433]	@ zero_extendqisi2
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #2608
	add	r3, r3, #10
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L418:
	ldr	r3, [fp, #-8]
	cmp	r3, #2
	ble	.L419
	ldr	r3, .L421
	ldr	r3, [r3]
	ldrb	r3, [r3, #2435]	@ zero_extendqisi2
	add	r3, r3, #1
	and	r3, r3, #255
	mov	r0, r3
	bl	update_toc_entry
	mov	r3, #0
	b	.L420
.L417:
	mvn	r3, #0
.L420:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L422:
	.align	2
.L421:
	.word	cd
	.size	read_toc_header, .-read_toc_header
	.section	.rodata
	.align	2
.LC7:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	play_from_to_msf, %function
play_from_to_msf:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r3, .L430
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #48
	strb	r3, [fp, #-20]
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3, #2]	@ zero_extendqisi2
	strb	r3, [fp, #-19]
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3, #1]	@ zero_extendqisi2
	strb	r3, [fp, #-18]
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-17]
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3, #5]	@ zero_extendqisi2
	strb	r3, [fp, #-16]
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3, #4]	@ zero_extendqisi2
	strb	r3, [fp, #-15]
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3, #3]	@ zero_extendqisi2
	strb	r3, [fp, #-14]
	mov	r3, #2
	strb	r3, [fp, #-13]
	mov	r3, #2
	strb	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L424
.L425:
	sub	r2, fp, #20
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, #0
	mov	r0, r3
	bl	type_0_command
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L424:
	ldr	r3, [fp, #-24]
	cmp	r3, #8
	ble	.L425
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L426
.L427:
	ldr	r3, [fp, #-24]
	add	r3, r3, #4
	ldr	r2, .L430+4
	ldr	r2, [r2]
	sub	r1, fp, #4
	add	r3, r1, r3
	ldrb	r1, [r3, #-16]	@ zero_extendqisi2
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	add	r3, r3, #2608
	add	r3, r3, #5
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L426:
	ldr	r3, [fp, #-24]
	cmp	r3, #2
	ble	.L427
	ldr	r3, .L430+4
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #2612]
	bl	wait_dsb
	mov	r3, r0
	strb	r3, [fp, #-25]
	ldr	r3, .L430+4
	ldr	r3, [r3]
	ldrb	r2, [fp, #-25]
	strb	r2, [r3, #10]
	nop
	ldr	r3, .L430
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L429
	bl	__stack_chk_fail
.L429:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L431:
	.align	2
.L430:
	.word	.LC7
	.word	cd
	.size	play_from_to_msf, .-play_from_to_msf
	.section	.rodata
	.align	2
.LC8:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	play_from_to_track, %function
play_from_to_track:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	ldr	r3, .L447
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #48
	strb	r3, [fp, #-16]
	mov	r3, #1
	str	r3, [fp, #-24]
	b	.L433
.L434:
	sub	r2, fp, #16
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L433:
	ldr	r3, [fp, #-24]
	cmp	r3, #7
	bls	.L434
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L435
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L436
.L437:
	ldr	r3, .L447+4
	ldr	r1, [r3]
	ldr	r3, [fp, #-20]
	add	r2, r3, #2
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	add	r2, r1, r2
	ldrb	r2, [r2, #3127]	@ zero_extendqisi2
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-12]
	ldr	r3, .L447+4
	ldr	r1, [r3]
	ldr	r3, [fp, #-20]
	add	r2, r3, #4
	ldr	r3, [fp, #-20]
	add	r3, r1, r3
	add	r3, r3, #2608
	add	r3, r3, #5
	ldrb	r1, [r3]	@ zero_extendqisi2
	sub	r3, fp, #4
	add	r3, r3, r2
	mov	r2, r1
	strb	r2, [r3, #-12]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L436:
	ldr	r3, [fp, #-20]
	cmp	r3, #2
	ble	.L437
	b	.L438
.L435:
	ldr	r3, [fp, #-32]
	and	r3, r3, #255
	mov	r0, r3
	bl	update_toc_entry
	ldr	r3, [fp, #-36]
	and	r3, r3, #255
	add	r3, r3, #1
	and	r3, r3, #255
	mov	r0, r3
	bl	update_toc_entry
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L439
.L440:
	ldr	r3, .L447+4
	ldr	r0, [r3]
	ldr	r3, [fp, #-20]
	add	r1, r3, #1
	ldr	r2, [fp, #-32]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r2, r0, r3
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	add	r3, r3, #2608
	add	r3, r3, #5
	ldrb	r2, [r3]	@ zero_extendqisi2
	sub	r3, fp, #4
	add	r3, r3, r1
	strb	r2, [r3, #-12]
	ldr	r3, .L447+4
	ldr	r1, [r3]
	ldr	r3, [fp, #-36]
	add	r2, r3, #1
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r2, r1, r3
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	add	r3, r3, #2608
	add	r3, r3, #5
	ldrb	r3, [r3]
	strb	r3, [fp, #-26]
	ldr	r3, [fp, #-20]
	add	r3, r3, #4
	sub	r2, fp, #4
	add	r3, r2, r3
	ldrb	r2, [fp, #-26]
	strb	r2, [r3, #-12]
	ldr	r3, .L447+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	add	r3, r3, #2608
	add	r3, r3, #5
	ldrb	r2, [fp, #-26]
	strb	r2, [r3]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L439:
	ldr	r3, [fp, #-20]
	cmp	r3, #2
	ble	.L440
	ldr	r3, .L447+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-36]
	and	r2, r2, #255
	strb	r2, [r3, #2612]
.L438:
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L441
.L442:
	sub	r2, fp, #16
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, #0
	mov	r0, r3
	bl	type_0_command
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L441:
	ldr	r3, [fp, #-20]
	cmp	r3, #6
	ble	.L442
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L443
.L444:
	mov	r1, #0
	mov	r0, #2
	bl	type_0_command
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L443:
	ldr	r3, [fp, #-20]
	cmp	r3, #1
	ble	.L444
	bl	wait_dsb
	mov	r3, r0
	strb	r3, [fp, #-25]
	ldr	r3, .L447+4
	ldr	r3, [r3]
	ldrb	r2, [fp, #-25]
	strb	r2, [r3, #10]
	nop
	ldr	r3, .L447
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L446
	bl	__stack_chk_fail
.L446:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L448:
	.align	2
.L447:
	.word	.LC8
	.word	cd
	.size	play_from_to_track, .-play_from_to_track
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_current_q, %function
get_current_q:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-32]
	ldr	r3, .L459
	ldr	r3, [r3]
	add	r3, r3, #3104
	add	r3, r3, #13
	str	r3, [fp, #-20]
	ldr	r2, [fp, #-20]
	mov	r1, #10
	mov	r0, #65
	bl	type_1_command
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L450
	mov	r3, #0
	b	.L451
.L450:
	mov	r3, #2
	str	r3, [fp, #-24]
	b	.L452
.L453:
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-20]
	add	r4, r2, r3
	mov	r0, r1
	bl	bcdbin
	mov	r3, r0
	strb	r3, [r4]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L452:
	ldr	r3, [fp, #-24]
	cmp	r3, #5
	ble	.L453
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #15
	and	r1, r3, #255
	ldr	r2, [fp, #-32]
	ldrb	r3, [r2, #2]
	and	r1, r1, #15
	bic	r3, r3, #15
	orr	r3, r1, r3
	strb	r3, [r2, #2]
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #4
	and	r3, r3, #255
	and	r3, r3, #15
	and	r3, r3, #255
	ldr	r1, [fp, #-32]
	ldrb	r2, [r1, #2]
	and	r3, r3, #15
	bic	r2, r2, #240
	lsl	r3, r3, #4
	orr	r3, r3, r2
	mov	r2, r3
	strb	r2, [r1, #2]
	ldr	r3, [fp, #-20]
	ldrb	r2, [r3, #1]	@ zero_extendqisi2
	ldr	r3, [fp, #-32]
	strb	r2, [r3, #3]
	ldr	r3, [fp, #-20]
	ldrb	r2, [r3, #2]	@ zero_extendqisi2
	ldr	r3, [fp, #-32]
	strb	r2, [r3, #4]
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #2
	bne	.L454
	ldr	r3, [fp, #-20]
	ldrb	r2, [r3, #3]	@ zero_extendqisi2
	ldr	r3, [fp, #-32]
	strb	r2, [r3, #12]
	ldr	r3, [fp, #-20]
	ldrb	r2, [r3, #4]	@ zero_extendqisi2
	ldr	r3, [fp, #-32]
	strb	r2, [r3, #13]
	ldr	r3, [fp, #-20]
	ldrb	r2, [r3, #5]	@ zero_extendqisi2
	ldr	r3, [fp, #-32]
	strb	r2, [r3, #14]
	ldr	r3, [fp, #-20]
	ldrb	r2, [r3, #7]	@ zero_extendqisi2
	ldr	r3, [fp, #-32]
	strb	r2, [r3, #8]
	ldr	r3, [fp, #-20]
	ldrb	r2, [r3, #8]	@ zero_extendqisi2
	ldr	r3, [fp, #-32]
	strb	r2, [r3, #9]
	ldr	r3, [fp, #-20]
	ldrb	r2, [r3, #9]	@ zero_extendqisi2
	ldr	r3, [fp, #-32]
	strb	r2, [r3, #10]
	b	.L455
.L454:
	ldr	r3, [fp, #-20]
	add	r3, r3, #5
	ldrb	r0, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #4
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	bl	f_s_m2lba
	mov	r2, r0
	ldr	r3, [fp, #-32]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-20]
	add	r3, r3, #9
	ldrb	r0, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #8
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #7
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	bl	f_s_m2lba
	mov	r2, r0
	ldr	r3, [fp, #-32]
	str	r2, [r3, #8]
.L455:
	bl	get_drive_status
	ldr	r3, .L459
	ldr	r3, [r3]
	ldrb	r3, [r3, #10]
	and	r3, r3, #255
	and	r3, r3, #4
	cmp	r3, #0
	beq	.L456
	ldr	r3, [fp, #-32]
	mov	r2, #17
	strb	r2, [r3, #1]
	b	.L457
.L456:
	ldr	r3, .L459
	ldr	r3, [r3]
	ldrb	r3, [r3, #3127]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L458
	ldr	r3, [fp, #-32]
	mov	r2, #18
	strb	r2, [r3, #1]
	b	.L457
.L458:
	ldr	r3, [fp, #-32]
	mov	r2, #21
	strb	r2, [r3, #1]
.L457:
	mov	r3, #0
.L451:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L460:
	.align	2
.L459:
	.word	cd
	.size	get_current_q, .-get_current_q
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	invalidate_toc, %function
invalidate_toc:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L463
	ldr	r3, [r3]
	add	r3, r3, #2608
	add	r3, r3, #4
	ldr	r2, .L463+4
	mov	r1, #0
	mov	r0, r3
	bl	memset
	ldr	r3, .L463
	ldr	r3, [r3]
	add	r3, r3, #2432
	add	r3, r3, #1
	mov	r2, #7
	mov	r1, #0
	mov	r0, r3
	bl	memset
	nop
	pop	{fp, pc}
.L464:
	.align	2
.L463:
	.word	cd
	.word	505
	.size	invalidate_toc, .-invalidate_toc
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_toc_entry, %function
get_toc_entry:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	normalize_track
	mov	r3, r0
	strb	r3, [fp, #-6]
	ldrb	r3, [fp, #-6]
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	mov	r0, r3
	bl	update_toc_entry
	ldr	r3, .L467
	ldr	r1, [r3]
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r1, r3
	add	r3, r3, #2608
	add	r3, r3, #5
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	strb	r2, [r3, #6]
	ldr	r3, .L467
	ldr	r1, [r3]
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r1, r3
	add	r3, r3, #2608
	add	r3, r3, #6
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	strb	r2, [r3, #5]
	ldr	r3, .L467
	ldr	r1, [r3]
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r1, r3
	add	r3, r3, #2608
	add	r3, r3, #7
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	strb	r2, [r3, #4]
	ldr	r3, .L467
	ldr	r1, [r3]
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r1, r3
	add	r3, r3, #2608
	add	r3, r3, #8
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #15
	and	r1, r3, #255
	ldr	r2, [fp, #-16]
	ldrb	r3, [r2, #1]
	and	r1, r1, #15
	bic	r3, r3, #15
	orr	r3, r1, r3
	strb	r3, [r2, #1]
	ldr	r3, .L467
	ldr	r1, [r3]
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	add	r3, r1, r3
	add	r3, r3, #2608
	add	r3, r3, #8
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #4
	and	r3, r3, #255
	and	r3, r3, #15
	and	r3, r3, #255
	ldr	r1, [fp, #-16]
	ldrb	r2, [r1, #1]
	and	r3, r3, #15
	bic	r2, r2, #240
	lsl	r3, r3, #4
	orr	r3, r3, r2
	mov	r2, r3
	strb	r2, [r1, #1]
	ldr	r3, [fp, #-16]
	mov	r2, #0
	strb	r2, [r3, #8]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L468:
	.align	2
.L467:
	.word	cd
	.size	get_toc_entry, .-get_toc_entry
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_audio_ioctl, %function
cm206_audio_ioctl:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	ldr	r3, [fp, #-28]
	sub	r3, r3, #21248
	sub	r3, r3, #1
	cmp	r3, #10
	ldrls	pc, [pc, r3, asl #2]
	b	.L470
.L472:
	.word	.L480
	.word	.L479
	.word	.L478
	.word	.L477
	.word	.L476
	.word	.L475
	.word	.L474
	.word	.L473
	.word	.L470
	.word	.L473
	.word	.L471
.L476:
	ldr	r0, [fp, #-32]
	bl	read_toc_header
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	b	.L481
.L475:
	ldr	r0, [fp, #-32]
	bl	get_toc_entry
	mov	r3, #0
	b	.L481
.L478:
	ldr	r0, [fp, #-32]
	bl	play_from_to_msf
	mov	r3, #0
	b	.L481
.L477:
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3, #2]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	play_from_to_track
	mov	r3, #0
	b	.L481
.L474:
	ldr	r3, .L485
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #3127]
	ldr	r3, .L485
	ldr	r3, [r3]
	ldrb	r3, [r3, #10]
	and	r3, r3, #255
	and	r3, r3, #4
	cmp	r3, #0
	beq	.L482
	mov	r1, #1
	mov	r0, #112
	bl	type_0_command
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	b	.L481
.L482:
	mov	r3, #0
	b	.L481
.L480:
	bl	get_drive_status
	ldr	r3, .L485
	ldr	r3, [r3]
	ldrb	r3, [r3, #10]
	and	r3, r3, #255
	and	r3, r3, #4
	cmp	r3, #0
	beq	.L483
	mov	r1, #1
	mov	r0, #112
	bl	type_0_command
	ldr	r3, .L485
	ldr	r3, [r3]
	add	r3, r3, #3120
	add	r3, r3, #7
	mov	r2, r3
	mov	r1, #5
	mov	r0, #82
	bl	type_1_command
	ldr	r3, .L485
	ldr	r3, [r3]
	mov	r2, #1
	strb	r2, [r3, #3127]
.L483:
	mov	r3, #0
	b	.L481
.L479:
	ldr	r3, .L485
	ldr	r3, [r3]
	ldrb	r3, [r3, #3127]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L484
	mov	r1, #0
	mov	r0, #0
	bl	play_from_to_track
.L484:
	ldr	r3, .L485
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #3127]
	mov	r3, #0
	b	.L481
.L473:
	mov	r3, #0
	b	.L481
.L471:
	ldr	r0, [fp, #-32]
	bl	get_current_q
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	b	.L481
.L470:
	mvn	r3, #21
.L481:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L486:
	.align	2
.L485:
	.word	cd
	.size	cm206_audio_ioctl, .-cm206_audio_ioctl
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_media_changed, %function
cm206_media_changed:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, .L490
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L488
	bl	get_drive_status
	ldr	r3, .L490
	ldr	r3, [r3]
	ldrb	r3, [r3, #3132]	@ zero_extendqisi2
	str	r3, [fp, #-8]
	ldr	r3, .L490
	ldr	r3, [r3]
	mov	r2, #0
	strb	r2, [r3, #3132]
	ldr	r3, [fp, #-8]
	b	.L489
.L488:
	mvn	r3, #4
.L489:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L491:
	.align	2
.L490:
	.word	cd
	.size	cm206_media_changed, .-cm206_media_changed
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_tray_move, %function
cm206_tray_move:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L493
	mov	r1, #1
	mov	r0, #5
	bl	type_0_command
	bl	invalidate_toc
	b	.L494
.L493:
	mov	r1, #1
	mov	r0, #0
	bl	type_0_command
.L494:
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	cm206_tray_move, .-cm206_tray_move
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_drive_status, %function
cm206_drive_status:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	bl	get_drive_status
	ldr	r3, .L501
	ldr	r3, [r3]
	ldrb	r3, [r3, #10]
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L497
	mov	r3, #2
	b	.L498
.L497:
	ldr	r3, .L501
	ldr	r3, [r3]
	ldrb	r3, [r3, #10]
	and	r3, r3, #255
	and	r3, r3, #16
	cmp	r3, #0
	bne	.L499
	mov	r3, #1
	b	.L498
.L499:
	ldr	r3, .L501
	ldr	r3, [r3]
	ldrb	r3, [r3, #10]
	and	r3, r3, #255
	and	r3, r3, #32
	cmp	r3, #0
	beq	.L500
	mov	r3, #3
	b	.L498
.L500:
	mov	r3, #4
.L498:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L502:
	.align	2
.L501:
	.word	cd
	.size	cm206_drive_status, .-cm206_drive_status
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_lock_door, %function
cm206_lock_door:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L504
	mov	r3, #1
	str	r3, [fp, #-8]
	b	.L505
.L504:
	mov	r3, #4
	str	r3, [fp, #-8]
.L505:
	ldr	r3, [fp, #-8]
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	mov	r1, #1
	mov	r0, r3
	bl	type_0_command
	ldr	r3, .L507
	ldr	r3, [r3]
	ldrb	r3, [r3, #10]
	and	r3, r3, #255
	and	r3, r3, #64
	cmp	r3, #0
	movne	r3, #1
	moveq	r3, #0
	and	r3, r3, #255
	mov	r2, r3
	ldr	r3, [fp, #-20]
	eor	r3, r3, r2
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L508:
	.align	2
.L507:
	.word	cd
	.size	cm206_lock_door, .-cm206_lock_door
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_get_last_session, %function
cm206_get_last_session:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, .L515
	ldr	r3, [r3]
	ldrb	r3, [r3, #2434]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L510
	bl	get_disc_status
.L510:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L511
	ldr	r3, .L515
	ldr	r3, [r3]
	ldrb	r3, [r3, #2433]	@ zero_extendqisi2
	and	r3, r3, #2
	cmp	r3, #0
	beq	.L512
	ldr	r3, .L515
	ldr	r3, [r3]
	ldrb	r2, [r3, #2436]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	strb	r2, [r3, #2]
	ldr	r3, .L515
	ldr	r3, [r3]
	ldrb	r2, [r3, #2437]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	strb	r2, [r3, #1]
	ldr	r3, .L515
	ldr	r3, [r3]
	ldrb	r2, [r3, #2438]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	mov	r2, #2
	strb	r2, [r3, #5]
	ldr	r3, [fp, #-12]
	mov	r2, #1
	strb	r2, [r3, #4]
	b	.L513
.L512:
	ldr	r3, [fp, #-12]
	mov	r2, #0
	strb	r2, [r3, #4]
.L513:
	mov	r3, #1
	b	.L514
.L511:
	mov	r3, #0
.L514:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L516:
	.align	2
.L515:
	.word	cd
	.size	cm206_get_last_session, .-cm206_get_last_session
	.section	.rodata
	.align	2
.LC9:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_get_upc, %function
cm206_get_upc:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	ldr	r3, .L526
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-52]
	str	r3, [fp, #-36]
	sub	r3, fp, #20
	mov	r2, r3
	mov	r1, #10
	mov	r0, #96
	bl	type_1_command
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L518
	mvn	r3, #4
	b	.L524
.L518:
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L520
.L523:
	ldr	r3, [fp, #-40]
	lsr	r2, r3, #31
	add	r3, r2, r3
	asr	r3, r3, #1
	add	r3, r3, #1
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	and	r3, r3, #1
	rsblt	r3, r3, #0
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L521
	sub	r2, fp, #20
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	and	r3, r3, #15
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r3, #48
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	and	r2, r2, #255
	strb	r2, [r3]
	b	.L522
.L521:
	sub	r2, fp, #20
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #4
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r3, #48
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-40]
	ldr	r1, [fp, #-36]
	add	r3, r1, r3
	and	r2, r2, #255
	strb	r2, [r3]
.L522:
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L520:
	ldr	r3, [fp, #-40]
	cmp	r3, #12
	ble	.L523
	ldr	r3, [fp, #-36]
	add	r3, r3, #13
	mov	r2, #0
	strb	r2, [r3]
	mov	r3, #0
.L524:
	ldr	r2, .L526
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L525
	bl	__stack_chk_fail
.L525:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L527:
	.align	2
.L526:
	.word	.LC9
	.size	cm206_get_upc, .-cm206_get_upc
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_reset, %function
cm206_reset:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	bl	stop_read
	bl	reset_cm260
	ldr	r3, .L530
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L530+4
	bl	outw
	nop
	ldr	r3, .L530
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L530+8
	bl	outw
	ldr	r3, .L530+12
	ldr	r3, [r3]
	mvn	r2, #0
	str	r2, [r3, #2376]
	ldr	r3, .L530+12
	ldr	r3, [r3]
	mvn	r2, #0
	str	r2, [r3, #2428]
	bl	invalidate_toc
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L531:
	.align	2
.L530:
	.word	cm206_base
	.word	11521
	.word	10497
	.word	cd
	.size	cm206_reset, .-cm206_reset
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_select_speed, %function
cm206_select_speed:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #2
	beq	.L533
	ldr	r3, [fp, #-20]
	cmp	r3, #2
	bgt	.L534
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L535
	ldr	r3, [fp, #-20]
	cmp	r3, #1
	beq	.L536
	b	.L534
.L535:
	mov	r1, #1
	mov	r0, #35
	bl	type_0_command
	str	r0, [fp, #-8]
	b	.L537
.L536:
	mov	r1, #1
	mov	r0, #33
	bl	type_0_command
	str	r0, [fp, #-8]
	b	.L537
.L533:
	mov	r1, #1
	mov	r0, #34
	bl	type_0_command
	str	r0, [fp, #-8]
	b	.L537
.L534:
	mvn	r3, #0
	b	.L538
.L537:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L539
	ldr	r3, [fp, #-8]
	b	.L538
.L539:
	mov	r3, #1
.L538:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	cm206_select_speed, .-cm206_select_speed
	.data
	.align	2
	.type	cm206_dops, %object
	.size	cm206_dops, 64
cm206_dops:
	.word	cm206_open
	.word	cm206_release
	.word	cm206_drive_status
	.word	cm206_media_changed
	.word	cm206_tray_move
	.word	cm206_lock_door
	.word	cm206_select_speed
	.word	0
	.word	cm206_get_last_session
	.word	cm206_get_upc
	.word	cm206_reset
	.word	cm206_audio_ioctl
	.word	0
	.word	2543
	.word	1
	.word	0
	.align	2
	.type	cm206_info, %object
	.size	cm206_info, 80
cm206_info:
	.word	cm206_dops
	.word	0
	.word	0
	.word	0
	.word	0
	.word	2
	.word	1
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.word	0
	.ascii	"cm206\000\000"
	.space	13
	.byte	0
	.space	3
	.word	0
	.byte	0
	.byte	0
	.short	0
	.word	0
	.word	0
	.word	0
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_block_open, %function
cm206_block_open:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-16]
	ldr	r0, .L542
	bl	cdrom_open
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L543:
	.align	2
.L542:
	.word	cm206_info
	.size	cm206_block_open, .-cm206_block_open
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_block_release, %function
cm206_block_release:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, .L546
	bl	cdrom_release
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L547:
	.align	2
.L546:
	.word	cm206_info
	.size	cm206_block_release, .-cm206_block_release
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_block_ioctl, %function
cm206_block_ioctl:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-24]
	cmp	r3, #8192
	beq	.L549
	ldr	r3, [fp, #-24]
	ldr	r2, .L556
	cmp	r3, r2
	beq	.L550
	nop
	ldr	r3, [fp, #-28]
	str	r3, [sp]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-16]
	ldr	r1, .L556+4
	ldr	r0, [fp, #-20]
	bl	cdrom_ioctl
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	b	.L553
.L549:
	ldr	r3, [fp, #-28]
	cmp	r3, #20
	bls	.L552
	mvn	r3, #21
	b	.L553
.L552:
	ldr	r3, .L556+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #608
	add	r3, r3, #2
	ldr	r3, [r2, r3, lsl #2]
	b	.L553
.L550:
	ldr	r3, [fp, #-28]
	cmp	r3, #20
	bls	.L554
	mvn	r3, #21
	b	.L553
.L554:
	ldr	r3, .L556+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #628
	add	r3, r3, #2
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3, #4]
.L553:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L557:
	.align	2
.L556:
	.word	8193
	.word	cm206_info
	.word	cd
	.size	cm206_block_ioctl, .-cm206_block_ioctl
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_block_media_changed, %function
cm206_block_media_changed:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, .L560
	bl	cdrom_media_changed
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L561:
	.align	2
.L560:
	.word	cm206_info
	.size	cm206_block_media_changed, .-cm206_block_media_changed
	.data
	.align	2
	.type	cm206_bdops, %object
	.size	cm206_bdops, 40
cm206_bdops:
	.word	cm206_block_open
	.word	cm206_block_release
	.word	cm206_block_ioctl
	.word	0
	.word	0
	.word	0
	.word	cm206_block_media_changed
	.word	0
	.word	0
	.word	0
	.local	cm206_gendisk
	.comm	cm206_gendisk,4,4
	.section	.rodata
	.align	2
.LC10:
	.ascii	"cm206\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	probe_base_port, %function
probe_base_port:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	mov	r3, #768
	str	r3, [fp, #-16]
	mov	r3, #880
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	beq	.L563
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-16]
.L563:
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-40]
	b	.L564
.L572:
	ldr	r3, [fp, #-40]
	ldr	r2, .L574
	mov	r1, #16
	mov	r0, r3
	bl	request_region
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L573
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L567
.L568:
	ldr	r3, [fp, #-40]
	add	r3, r3, #2
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-26]	@ movhi
	ldrh	r3, [fp, #-26]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L567:
	ldr	r3, [fp, #-20]
	cmp	r3, #2
	ble	.L568
	ldr	r3, [fp, #-40]
	add	r3, r3, #6
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-30]	@ movhi
	ldrh	r2, [fp, #-30]
	ldr	r3, .L574+4
	and	r3, r3, r2
	cmp	r3, #1
	beq	.L569
	ldr	r3, [fp, #-40]
	mov	r1, #16
	mov	r0, r3
	bl	release_region
	b	.L566
.L569:
	ldr	r3, [fp, #-40]
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-28]	@ movhi
	ldrh	r3, [fp, #-28]
	and	r3, r3, #44288
	cmp	r3, #0
	beq	.L570
	ldr	r3, [fp, #-40]
	mov	r1, #16
	mov	r0, r3
	bl	release_region
	b	.L566
.L570:
	ldr	r3, [fp, #-40]
	b	.L571
.L573:
	nop
.L566:
	ldr	r3, [fp, #-40]
	add	r3, r3, #16
	str	r3, [fp, #-40]
.L564:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	ble	.L572
	mov	r3, #0
.L571:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L575:
	.align	2
.L574:
	.word	.LC10
	.word	65519
	.size	probe_base_port, .-probe_base_port
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	probe_irq, %function
probe_irq:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	ldr	r3, .L581
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L581+4
	bl	outw
	bl	sti
	bl	probe_irq_on
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-12]
	bl	reset_cm260
	mov	r0, #100
	bl	udelay
	ldr	r3, [fp, #-12]
	mov	r0, r3
	bl	probe_irq_off
	str	r0, [fp, #-8]
	ldr	r3, .L581
	ldr	r3, [r3]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L581+4
	bl	outw
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L577
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	beq	.L578
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	ble	.L579
	mov	r3, #0
	b	.L580
.L579:
	ldr	r3, [fp, #-8]
	b	.L580
.L578:
	ldr	r3, [fp, #-8]
	b	.L580
.L577:
	ldr	r3, [fp, #-8]
.L580:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L582:
	.align	2
.L581:
	.word	cm206_base
	.word	10497
	.size	probe_irq, .-probe_irq
	.section	.rodata
	.align	2
.LC11:
	.ascii	"<6>cm206 cdrom driver $Revision: 1.5 $\000"
	.align	2
.LC12:
	.ascii	" can't find adapter!\012\000"
	.align	2
.LC13:
	.ascii	" adapter at 0x%x\000"
	.align	2
.LC14:
	.ascii	"can't find IRQ!\012\000"
	.align	2
.LC15:
	.ascii	" IRQ %d found\012\000"
	.align	2
.LC16:
	.ascii	"<6> drive not there\012\000"
	.align	2
.LC17:
	.ascii	"<6>Firmware revision %d\000"
	.align	2
.LC18:
	.ascii	" double\000"
	.align	2
.LC19:
	.ascii	" single\000"
	.align	2
.LC20:
	.ascii	" speed drive\000"
	.align	2
.LC21:
	.ascii	", motorized tray\000"
	.align	2
.LC22:
	.ascii	"\012Unable to reserve IRQ---aborted\012\000"
	.align	2
.LC23:
	.ascii	".\012\000"
	.align	2
.LC24:
	.ascii	"cm206cd\000"
	.align	2
.LC25:
	.ascii	"<6>Cannot register for cdrom %d!\012\000"
	.align	2
.LC26:
	.ascii	"<6>%d kB adapter memory available,  %ld bytes kerne"
	.ascii	"l memory used.\012\000"
	.text
	.align	2
	.global	cm206_init
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_init, %function
cm206_init:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	mov	r3, #0
	strb	r3, [fp, #-40]
	mov	r3, #3136
	str	r3, [fp, #-28]
	ldr	r0, .L614
	bl	printk
	ldr	r3, .L614+4
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L584
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L585
.L584:
	ldr	r3, .L614+8
	ldr	r3, [r3]
	str	r3, [fp, #-36]
.L585:
	ldr	r0, [fp, #-36]
	bl	probe_base_port
	mov	r3, r0
	ldr	r2, .L614+8
	str	r3, [r2]
	ldr	r3, .L614+8
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L586
	ldr	r0, .L614+12
	bl	printk
	mvn	r3, #4
	b	.L587
.L586:
	ldr	r3, .L614+8
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L614+16
	bl	printk
	ldr	r3, [fp, #-28]
	mov	r1, #208
	mov	r0, r3
	bl	kmalloc
	str	r0, [fp, #-24]
	ldr	r2, .L614+20
	ldr	r3, [fp, #-24]
	str	r3, [r2]
	ldr	r3, .L614+20
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L610
	ldr	r3, .L614+4
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L590
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L591
.L590:
	ldr	r3, .L614+24
	ldr	r3, [r3]
	str	r3, [fp, #-32]
.L591:
	ldr	r0, [fp, #-32]
	bl	probe_irq
	mov	r3, r0
	ldr	r2, .L614+24
	str	r3, [r2]
	ldr	r3, .L614+24
	ldr	r3, [r3]
	cmp	r3, #0
	bgt	.L592
	ldr	r0, .L614+28
	bl	printk
	b	.L593
.L592:
	ldr	r3, .L614+24
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L614+32
	bl	printk
	mov	r0, #83
	bl	send_receive_polled
	mov	r3, r0
	strb	r3, [fp, #-39]
	ldrb	r3, [fp, #-39]	@ zero_extendqisi2
	cmp	r3, #83
	beq	.L594
	ldr	r0, .L614+36
	bl	printk
	b	.L593
.L594:
	mov	r0, #248
	bl	send_receive_polled
	mov	r3, r0
	strb	r3, [fp, #-40]
	ldrb	r3, [fp, #-40]	@ zero_extendqisi2
	and	r3, r3, #7
	mov	r1, r3
	ldr	r0, .L614+40
	bl	printk
	ldrb	r3, [fp, #-40]	@ zero_extendqisi2
	and	r3, r3, #96
	cmp	r3, #0
	beq	.L595
	ldr	r0, .L614+44
	bl	printk
	b	.L596
.L595:
	ldr	r0, .L614+48
	bl	printk
.L596:
	ldr	r0, .L614+52
	bl	printk
	ldrsb	r3, [fp, #-40]
	cmp	r3, #0
	bge	.L597
	ldr	r0, .L614+56
	bl	printk
.L597:
	ldr	r3, .L614+24
	ldr	r3, [r3]
	mov	r0, r3
	mov	r3, #0
	str	r3, [sp]
	ldr	r3, .L614+60
	mov	r2, #0
	ldr	r1, .L614+64
	bl	request_irq
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L598
	ldr	r0, .L614+68
	bl	printk
	b	.L593
.L598:
	ldr	r0, .L614+72
	bl	printk
	ldr	r1, .L614+60
	mov	r0, #32
	bl	register_blkdev
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L611
	mov	r0, #1
	bl	alloc_disk
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L612
	ldr	r3, [fp, #-12]
	mov	r2, #32
	str	r2, [r3]
	ldr	r3, [fp, #-12]
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	add	r3, r3, #12
	ldr	r1, .L614+76
	mov	r0, r3
	bl	sprintf
	ldr	r3, [fp, #-12]
	ldr	r2, .L614+80
	str	r2, [r3, #44]
	ldr	r3, [fp, #-12]
	mov	r2, #8
	str	r2, [r3, #56]
	ldr	r2, .L614+84
	ldr	r3, [fp, #-12]
	str	r3, [r2]
	ldr	r0, .L614+88
	bl	register_cdrom
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L603
	mov	r1, #32
	ldr	r0, .L614+92
	bl	printk
	b	.L604
.L603:
	ldr	r1, .L614+96
	ldr	r0, .L614+100
	bl	blk_init_queue
	mov	r3, r0
	ldr	r2, .L614+104
	str	r3, [r2]
	ldr	r3, .L614+104
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L613
	ldr	r3, .L614+104
	ldr	r3, [r3]
	mov	r1, #2048
	mov	r0, r3
	bl	blk_queue_hardsect_size
	ldr	r3, .L614+104
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	str	r2, [r3, #48]
	ldr	r0, [fp, #-12]
	bl	add_disk
	ldr	r3, .L614+20
	ldr	r3, [r3]
	mov	r2, #3136
	mov	r1, #0
	mov	r0, r3
	bl	memset
	ldr	r3, .L614+20
	ldr	r3, [r3]
	mvn	r2, #0
	str	r2, [r3, #2376]
	ldr	r3, .L614+20
	ldr	r3, [r3]
	mvn	r2, #0
	str	r2, [r3, #2428]
	ldr	r3, .L614+20
	ldr	r3, [r3]
	add	r3, r3, #2400
	add	r3, r3, #4
	mov	r0, r3
	bl	init_timer
	ldr	r3, .L614+20
	ldr	r3, [r3]
	ldr	r2, .L614+108
	str	r2, [r3, #2408]
	ldr	r3, .L614+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	inw
	mov	r3, r0
	strh	r3, [fp, #-38]	@ movhi
	ldrh	r3, [fp, #-38]
	and	r3, r3, #16384
	cmp	r3, #0
	beq	.L607
	ldr	r3, .L614+20
	ldr	r3, [r3]
	mov	r2, #24
	strb	r2, [r3, #2421]
	b	.L608
.L607:
	ldr	r3, .L614+20
	ldr	r3, [r3]
	mov	r2, #97
	strb	r2, [r3, #2421]
.L608:
	ldr	r3, .L614+20
	ldr	r3, [r3]
	add	r3, r3, #2416
	add	r3, r3, #5
	ldrsb	r3, [r3]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-28]
	mov	r1, r3
	ldr	r0, .L614+112
	bl	printk
	mov	r3, #0
	b	.L587
.L613:
	nop
.L606:
	ldr	r0, .L614+88
	bl	unregister_cdrom
.L604:
	ldr	r0, [fp, #-12]
	bl	put_disk
	b	.L602
.L612:
	nop
.L602:
	ldr	r1, .L614+60
	mov	r0, #32
	bl	unregister_blkdev
	b	.L600
.L611:
	nop
.L600:
	ldr	r3, .L614+24
	ldr	r3, [r3]
	mov	r1, #0
	mov	r0, r3
	bl	free_irq
.L593:
	ldr	r3, .L614+20
	ldr	r3, [r3]
	mov	r0, r3
	bl	kfree
	b	.L589
.L610:
	nop
.L589:
	ldr	r3, .L614+8
	ldr	r3, [r3]
	mov	r1, #16
	mov	r0, r3
	bl	release_region
	mvn	r3, #4
.L587:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L615:
	.align	2
.L614:
	.word	.LC11
	.word	auto_probe
	.word	cm206_base
	.word	.LC12
	.word	.LC13
	.word	cd
	.word	cm206_irq
	.word	.LC14
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC10
	.word	cm206_interrupt
	.word	.LC22
	.word	.LC23
	.word	.LC24
	.word	cm206_bdops
	.word	cm206_gendisk
	.word	cm206_info
	.word	.LC25
	.word	cm206_lock
	.word	do_cm206_request
	.word	cm206_queue
	.word	cm206_timeout
	.word	.LC26
	.size	cm206_init, .-cm206_init
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_options, %function
parse_options:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L617
.L622:
	ldr	r2, .L627
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #768
	blt	.L624
	ldr	r3, [fp, #-8]
	cmp	r3, #880
	bgt	.L625
	ldr	r2, .L627
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	and	r3, r3, #15
	cmp	r3, #0
	bne	.L626
	ldr	r2, .L627
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	ldr	r2, .L627+4
	str	r3, [r2]
	ldr	r3, .L627+8
	mov	r2, #0
	str	r2, [r3]
	b	.L621
.L624:
	nop
	b	.L618
.L625:
	nop
	b	.L618
.L626:
	nop
.L618:
	ldr	r2, .L627
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #2
	ble	.L621
	ldr	r2, .L627
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #15
	bgt	.L621
	ldr	r2, .L627
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	ldr	r2, .L627+12
	str	r3, [r2]
	ldr	r3, .L627+8
	mov	r2, #0
	str	r2, [r3]
.L621:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L617:
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	ble	.L622
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L628:
	.align	2
.L627:
	.word	cm206
	.word	cm206_base
	.word	auto_probe
	.word	cm206_irq
	.size	parse_options, .-parse_options
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	__cm206_init, %function
__cm206_init:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	bl	parse_options
	bl	cm206_init
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	__cm206_init, .-__cm206_init
	.section	.rodata
	.align	2
.LC27:
	.ascii	"Can't unregister cdrom cm206\012\000"
	.align	2
.LC28:
	.ascii	"Can't unregister major cm206\012\000"
	.align	2
.LC29:
	.ascii	"<6>cm206 removed\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cm206_exit, %function
cm206_exit:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r3, .L635
	ldr	r3, [r3]
	mov	r0, r3
	bl	del_gendisk
	ldr	r3, .L635
	ldr	r3, [r3]
	mov	r0, r3
	bl	put_disk
	ldr	r0, .L635+4
	bl	unregister_cdrom
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L632
	ldr	r0, .L635+8
	bl	printk
	b	.L631
.L632:
	ldr	r1, .L635+12
	mov	r0, #32
	bl	unregister_blkdev
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L634
	ldr	r0, .L635+16
	bl	printk
	b	.L631
.L634:
	ldr	r3, .L635+20
	ldr	r3, [r3]
	mov	r0, r3
	bl	blk_cleanup_queue
	ldr	r3, .L635+24
	ldr	r3, [r3]
	mov	r1, #0
	mov	r0, r3
	bl	free_irq
	ldr	r3, .L635+28
	ldr	r3, [r3]
	mov	r0, r3
	bl	kfree
	ldr	r3, .L635+32
	ldr	r3, [r3]
	mov	r1, #16
	mov	r0, r3
	bl	release_region
	ldr	r0, .L635+36
	bl	printk
	nop
.L631:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L636:
	.align	2
.L635:
	.word	cm206_gendisk
	.word	cm206_info
	.word	.LC27
	.word	.LC10
	.word	.LC28
	.word	cm206_queue
	.word	cm206_irq
	.word	cd
	.word	cm206_base
	.word	.LC29
	.size	cm206_exit, .-cm206_exit
	.global	_ddv_tmp_init
	.data
	.align	2
	.type	_ddv_tmp_init, %object
	.size	_ddv_tmp_init, 4
_ddv_tmp_init:
	.word	__cm206_init
	.global	_ddv_tmp_exit
	.align	2
	.type	_ddv_tmp_exit, %object
	.size	_ddv_tmp_exit, 4
_ddv_tmp_exit:
	.word	cm206_exit
	.global	_ddv_module_param_major
	.align	2
	.type	_ddv_module_param_major, %object
	.size	_ddv_module_param_major, 4
_ddv_module_param_major:
	.word	32
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L639
	ldr	r2, .L639+4
	str	r2, [r3]
	ldr	r3, .L639+8
	ldr	r2, .L639+12
	str	r2, [r3]
	bl	call_ddv
	mov	r3, #0
	mov	r0, r3
	pop	{fp, pc}
.L640:
	.align	2
.L639:
	.word	_ddv_module_init
	.word	__cm206_init
	.word	_ddv_module_exit
	.word	cm206_exit
	.size	main, .-main
	.align	2
	.global	request_irq
	.syntax unified
	.arm
	.fpu softvfp
	.type	request_irq, %function
request_irq:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	bl	nondet_int
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L642
	ldr	r1, .L644
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-20]
	str	r2, [r1, r3, lsl #3]
	ldr	r2, .L644
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldr	r2, [fp, #4]
	str	r2, [r3, #4]
	mov	r3, #0
	b	.L643
.L642:
	mvn	r3, #0
.L643:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L645:
	.align	2
.L644:
	.word	registered_irq
	.size	request_irq, .-request_irq
	.align	2
	.global	free_irq
	.syntax unified
	.arm
	.fpu softvfp
	.type	free_irq, %function
free_irq:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r2, .L648
	ldr	r3, [fp, #-8]
	mov	r1, #0
	str	r1, [r2, r3, lsl #3]
	ldr	r2, .L648
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #3
	add	r3, r2, r3
	mov	r2, #0
	str	r2, [r3, #4]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L649:
	.align	2
.L648:
	.word	registered_irq
	.size	free_irq, .-free_irq
	.comm	proc_root_driver,4,4
	.align	2
	.global	misc_register
	.syntax unified
	.arm
	.fpu softvfp
	.type	misc_register, %function
misc_register:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	ldr	r3, .L653
	ldr	r3, [r3]
	cmp	r3, #9
	bgt	.L651
	ldr	r3, .L653
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, .L653
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L653
	str	r3, [r2]
	ldr	r2, .L653+4
	ldr	r3, [fp, #-16]
	mov	r1, #0
	str	r1, [r2, r3, lsl #4]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #8]
	ldr	r1, .L653+4
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #4
	add	r3, r1, r3
	str	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	orr	r3, r3, #10485760
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #4
	ldr	r2, .L653+4
	add	r3, r3, r2
	mov	r2, #0
	ldr	r1, [fp, #-12]
	mov	r0, r3
	bl	cdev_add
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	b	.L652
.L651:
	mvn	r3, #0
.L652:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L654:
	.align	2
.L653:
	.word	fixed_cdev_used
	.word	fixed_cdev
	.size	misc_register, .-misc_register
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	assert_context_process, %function
assert_context_process:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	mov	r3, #0
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	assert_context_process, .-assert_context_process
	.comm	ddv_ioport_request_start,4,4
	.comm	ddv_ioport_request_len,4,4
	.align	2
	.global	request_region
	.syntax unified
	.arm
	.fpu softvfp
	.type	request_region, %function
request_region:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	mov	r0, #16
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r2, .L659
	str	r3, [r2]
	ldr	r3, [fp, #-20]
	ldr	r2, .L659+4
	str	r3, [r2]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L660:
	.align	2
.L659:
	.word	ddv_ioport_request_start
	.word	ddv_ioport_request_len
	.size	request_region, .-request_region
	.align	2
	.global	release_region
	.syntax unified
	.arm
	.fpu softvfp
	.type	release_region, %function
release_region:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, .L663
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L663+4
	mov	r2, #0
	str	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L664:
	.align	2
.L663:
	.word	ddv_ioport_request_start
	.word	ddv_ioport_request_len
	.size	release_region, .-release_region
	.section	.rodata
	.align	2
.LC30:
	.ascii	"I/O port is requested\000"
	.text
	.align	2
	.global	inb
	.syntax unified
	.arm
	.fpu softvfp
	.type	inb, %function
inb:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, .L670
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-16]
	cmp	r3, r2
	bcc	.L666
	ldr	r3, .L670
	ldr	r2, [r3]
	ldr	r3, .L670+4
	ldr	r3, [r3]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	cmp	r3, r2
	bcs	.L667
	mov	r3, #1
	str	r3, [fp, #-8]
	b	.L668
.L667:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L668
.L666:
	mov	r3, #0
	str	r3, [fp, #-8]
.L668:
	ldr	r1, .L670+8
	ldr	r0, [fp, #-8]
	bl	__CPROVER_assert
	bl	nondet_uchar
	mov	r3, r0
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L671:
	.align	2
.L670:
	.word	ddv_ioport_request_start
	.word	ddv_ioport_request_len
	.word	.LC30
	.size	inb, .-inb
	.align	2
	.global	inw
	.syntax unified
	.arm
	.fpu softvfp
	.type	inw, %function
inw:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, .L677
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-16]
	cmp	r3, r2
	bcc	.L673
	ldr	r3, .L677
	ldr	r2, [r3]
	ldr	r3, .L677+4
	ldr	r3, [r3]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	cmp	r3, r2
	bcs	.L674
	mov	r3, #1
	str	r3, [fp, #-8]
	b	.L675
.L674:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L675
.L673:
	mov	r3, #0
	str	r3, [fp, #-8]
.L675:
	ldr	r1, .L677+8
	ldr	r0, [fp, #-8]
	bl	__CPROVER_assert
	bl	nondet_ushort
	mov	r3, r0
	strh	r3, [fp, #-10]	@ movhi
	ldrh	r3, [fp, #-10]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L678:
	.align	2
.L677:
	.word	ddv_ioport_request_start
	.word	ddv_ioport_request_len
	.word	.LC30
	.size	inw, .-inw
	.align	2
	.global	outw
	.syntax unified
	.arm
	.fpu softvfp
	.type	outw, %function
outw:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, r0
	str	r1, [fp, #-20]
	strh	r3, [fp, #-14]	@ movhi
	ldr	r3, .L684
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-20]
	cmp	r3, r2
	bcc	.L680
	ldr	r3, .L684
	ldr	r2, [r3]
	ldr	r3, .L684+4
	ldr	r3, [r3]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-20]
	cmp	r3, r2
	bcs	.L681
	mov	r3, #1
	str	r3, [fp, #-8]
	b	.L682
.L681:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L682
.L680:
	mov	r3, #0
	str	r3, [fp, #-8]
.L682:
	ldr	r1, .L684+8
	ldr	r0, [fp, #-8]
	bl	__CPROVER_assert
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L685:
	.align	2
.L684:
	.word	ddv_ioport_request_start
	.word	ddv_ioport_request_len
	.word	.LC30
	.size	outw, .-outw
	.align	2
	.global	schedule
	.syntax unified
	.arm
	.fpu softvfp
	.type	schedule, %function
schedule:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	bl	assert_context_process
	nop
	pop	{fp, pc}
	.size	schedule, .-schedule
	.align	2
	.global	schedule_timeout
	.syntax unified
	.arm
	.fpu softvfp
	.type	schedule_timeout, %function
schedule_timeout:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	bl	assert_context_process
	bl	nondet_long
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	schedule_timeout, .-schedule_timeout
	.align	2
	.global	kmalloc
	.syntax unified
	.arm
	.fpu softvfp
	.type	kmalloc, %function
kmalloc:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-20]
	and	r3, r3, #16
	cmp	r3, #0
	beq	.L691
	bl	assert_context_process
.L691:
	ldr	r0, [fp, #-16]
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	kmalloc, .-kmalloc
	.align	2
	.global	kzalloc
	.syntax unified
	.arm
	.fpu softvfp
	.type	kzalloc, %function
kzalloc:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-20]
	and	r3, r3, #16
	cmp	r3, #0
	beq	.L694
	bl	assert_context_process
.L694:
	ldr	r0, [fp, #-16]
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	kzalloc, .-kzalloc
	.align	2
	.global	tasklet_schedule
	.syntax unified
	.arm
	.fpu softvfp
	.type	tasklet_schedule, %function
tasklet_schedule:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mvn	r3, #0
	str	r3, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L697
.L701:
	ldr	r2, .L703
	ldr	r3, [fp, #-12]
	ldr	r3, [r2, r3, lsl #3]
	cmp	r3, #0
	bne	.L698
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-8]
.L698:
	ldr	r2, .L703
	ldr	r3, [fp, #-12]
	ldr	r3, [r2, r3, lsl #3]
	mov	r2, r3
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bne	.L699
	ldr	r2, .L703
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	add	r3, r3, #4
	ldrh	r3, [r3]
	cmp	r3, #0
	beq	.L702
.L699:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L697:
	ldr	r3, [fp, #-12]
	cmp	r3, #9
	ble	.L701
	ldr	r1, .L703
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	str	r2, [r1, r3, lsl #3]
	ldr	r2, .L703
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #3
	add	r3, r2, r3
	add	r3, r3, #4
	mov	r2, #0
	strh	r2, [r3]	@ movhi
	b	.L696
.L702:
	nop
.L696:
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L704:
	.align	2
.L703:
	.word	tasklet_registered
	.size	tasklet_schedule, .-tasklet_schedule
	.align	2
	.global	spin_lock_init
	.syntax unified
	.arm
	.fpu softvfp
	.type	spin_lock_init, %function
spin_lock_init:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #4]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	spin_lock_init, .-spin_lock_init
	.align	2
	.global	spin_lock_irq
	.syntax unified
	.arm
	.fpu softvfp
	.type	spin_lock_irq, %function
spin_lock_irq:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
.L710:
	bl	__CPROVER_atomic_begin
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bne	.L708
	ldr	r3, [fp, #-8]
	mov	r2, #1
	str	r2, [r3, #4]
	bl	__CPROVER_atomic_end
	b	.L711
.L708:
	bl	__CPROVER_atomic_end
	b	.L710
.L711:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	spin_lock_irq, .-spin_lock_irq
	.align	2
	.global	spin_unlock_irq
	.syntax unified
	.arm
	.fpu softvfp
	.type	spin_unlock_irq, %function
spin_unlock_irq:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	bl	__CPROVER_atomic_begin
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #4]
	bl	__CPROVER_atomic_end
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	spin_unlock_irq, .-spin_unlock_irq
	.align	2
	.global	call_tasklet_functions
	.syntax unified
	.arm
	.fpu softvfp
	.type	call_tasklet_functions, %function
call_tasklet_functions:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r3, [fp, #-8]
	cmp	r3, #9
	movls	r3, #1
	movhi	r3, #0
	and	r3, r3, #255
	mov	r0, r3
	bl	__CPROVER_assume
	ldr	r2, .L718
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #3]
	cmp	r3, #0
	beq	.L717
	ldr	r2, .L718
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #3]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L717
	ldr	r2, .L718
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #3
	add	r3, r2, r3
	add	r3, r3, #4
	mov	r2, #1
	strh	r2, [r3]	@ movhi
	ldr	r2, .L718
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #3]
	ldr	r3, [r3, #4]
	ldr	r1, .L718
	ldr	r2, [fp, #-8]
	ldr	r2, [r1, r2, lsl #3]
	ldr	r2, [r2, #8]
	mov	r0, r2
	blx	r3
	ldr	r2, .L718
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #3
	add	r3, r2, r3
	add	r3, r3, #4
	mov	r2, #0
	strh	r2, [r3]	@ movhi
	ldr	r2, .L718
	ldr	r3, [fp, #-8]
	mov	r1, #0
	str	r1, [r2, r3, lsl #3]
	nop
.L717:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L719:
	.align	2
.L718:
	.word	tasklet_registered
	.size	call_tasklet_functions, .-call_tasklet_functions
	.align	2
	.global	init_timer
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_timer, %function
init_timer:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, .L724
	ldrsh	r3, [r3]
	cmp	r3, #4
	bgt	.L723
	ldr	r3, [fp, #-8]
	mov	r2, #0
	strh	r2, [r3, #12]	@ movhi
	ldr	r3, [fp, #-8]
	mov	r2, #1
	strh	r2, [r3, #14]	@ movhi
	ldr	r3, .L724
	ldrsh	r3, [r3]
	mov	r1, r3
	ldr	r2, .L724+4
	ldr	r3, [fp, #-8]
	str	r3, [r2, r1, lsl #2]
	ldr	r3, .L724
	ldrsh	r3, [r3]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	lsl	r3, r3, #16
	asr	r3, r3, #16
	ldr	r2, .L724
	strh	r3, [r2]	@ movhi
	nop
.L723:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L725:
	.align	2
.L724:
	.word	number_timer_registered
	.word	timer_registered
	.size	init_timer, .-init_timer
	.align	2
	.global	add_timer
	.syntax unified
	.arm
	.fpu softvfp
	.type	add_timer, %function
add_timer:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r2, #1
	strh	r2, [r3, #12]	@ movhi
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	add_timer, .-add_timer
	.align	2
	.global	del_timer
	.syntax unified
	.arm
	.fpu softvfp
	.type	del_timer, %function
del_timer:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	strh	r2, [r3, #12]	@ movhi
	mov	r3, #0
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	del_timer, .-del_timer
	.comm	global_tty_driver,200,4
	.align	2
	.global	alloc_tty_driver
	.syntax unified
	.arm
	.fpu softvfp
	.type	alloc_tty_driver, %function
alloc_tty_driver:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, .L734
	ldrh	r3, [r3, #196]
	cmp	r3, #0
	bne	.L731
	ldr	r3, .L734
	ldr	r2, .L734+4
	str	r2, [r3]
	ldr	r2, .L734
	ldr	r3, [fp, #-8]
	str	r3, [r2, #48]
	mov	r3, #0
	b	.L733
.L731:
	mov	r3, #0
.L733:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L735:
	.align	2
.L734:
	.word	global_tty_driver
	.word	21506
	.size	alloc_tty_driver, .-alloc_tty_driver
	.align	2
	.global	tty_set_operations
	.syntax unified
	.arm
	.fpu softvfp
	.type	tty_set_operations, %function
tty_set_operations:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #104]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #108]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #112]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #116]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #120]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #124]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #24]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #128]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #28]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #132]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #32]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #136]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #36]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #140]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #40]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #144]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #44]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #148]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #48]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #152]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #52]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #156]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #56]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #160]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #60]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #164]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #64]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #168]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #68]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #172]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #72]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #176]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #76]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #180]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #80]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #184]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #84]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #188]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #88]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #192]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	tty_set_operations, .-tty_set_operations
	.align	2
	.global	vmalloc
	.syntax unified
	.arm
	.fpu softvfp
	.type	vmalloc, %function
vmalloc:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	vmalloc, .-vmalloc
	.align	2
	.global	wake_up_interruptible
	.syntax unified
	.arm
	.fpu softvfp
	.type	wake_up_interruptible, %function
wake_up_interruptible:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	wake_up_interruptible, .-wake_up_interruptible
	.align	2
	.global	interruptible_sleep_on
	.syntax unified
	.arm
	.fpu softvfp
	.type	interruptible_sleep_on, %function
interruptible_sleep_on:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	interruptible_sleep_on, .-interruptible_sleep_on
	.align	2
	.global	call_shared_workqueue_functions
	.syntax unified
	.arm
	.fpu softvfp
	.type	call_shared_workqueue_functions, %function
call_shared_workqueue_functions:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	bl	nondet_ushort
	mov	r3, r0
	strh	r3, [fp, #-8]	@ movhi
	ldrh	r3, [fp, #-8]	@ movhi
	strh	r3, [fp, #-6]	@ movhi
	ldrh	r3, [fp, #-6]
	cmp	r3, #9
	movls	r3, #1
	movhi	r3, #0
	and	r3, r3, #255
	mov	r0, r3
	bl	__CPROVER_assume
	ldrh	r3, [fp, #-6]
	ldr	r2, .L748
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #0
	beq	.L747
	ldrh	r3, [fp, #-6]
	ldr	r2, .L748
	ldr	r3, [r2, r3, lsl #2]
	ldr	r3, [r3, #4]
	ldrh	r2, [fp, #-6]
	ldr	r1, .L748
	ldr	r2, [r1, r2, lsl #2]
	ldr	r2, [r2, #8]
	mov	r0, r2
	blx	r3
	ldrh	r3, [fp, #-6]
	ldr	r2, .L748
	mov	r1, #0
	str	r1, [r2, r3, lsl #2]
	nop
.L747:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L749:
	.align	2
.L748:
	.word	shared_workqueue
	.size	call_shared_workqueue_functions, .-call_shared_workqueue_functions
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
