	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.globl	_iforce_init_device             ## -- Begin function iforce_init_device
	.p2align	4, 0x90
_iforce_init_device:                    ## @iforce_init_device
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	pushq	%r15
	pushq	%r14
	pushq	%r13
	pushq	%r12
	pushq	%rbx
	subq	$24, %rsp
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	movq	%rdi, %r12
	movb	$0, -44(%rbp)
	movl	$1448035651, -48(%rbp)          ## imm = 0x564F4543
	xorl	%r15d, %r15d
	xorl	%eax, %eax
	callq	_input_allocate_device
	testq	%rax, %rax
	je	LBB0_1
## %bb.2:
	movq	%rax, %r14
	leaq	128(%r12), %rdi
	callq	_init_waitqueue_head
	leaq	124(%r12), %rdi
	callq	_spin_lock_init
	leaq	120(%r12), %rdi
	callq	_mutex_init
	movl	112(%r12), %eax
	movl	%eax, 116(%r12)
	movq	%r14, 16(%r12)
	movq	%r14, %rdi
	movq	%r12, %rsi
	callq	_input_set_drvdata
	leaq	L_.str(%rip), %rax
	movq	%rax, (%r14)
	movq	_iforce_open@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 60(%r14)
	movq	_iforce_release@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 56(%r14)
	leaq	L_.str.1(%rip), %rax
	movq	%rax, 40(%r12)
	movq	$0, 88(%r12)
	movl	$200, 48(%r12)
	movq	_IORESOURCE_MEM@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 80(%r12)
	xorps	%xmm0, %xmm0
	movups	%xmm0, 56(%r12)
	movq	$0, 72(%r12)
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.3:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.4:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.5:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.6:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.7:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.8:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.9:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.10:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.11:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.12:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.13:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.14:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.15:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.16:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.17:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.18:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.19:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.20:
	leaq	L_.str.2(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.21:
	leaq	L_.str.2(%rip), %rsi
	xorl	%r15d, %r15d
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_24
## %bb.22:
	leaq	L_.str.3(%rip), %rdi
	callq	_err
	movq	_ENODEV@GOTPCREL(%rip), %rax
	subl	(%rax), %r15d
	jmp	LBB0_23
LBB0_24:
	leaq	L_.str.4(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_25
## %bb.26:
	movq	16(%r12), %rdi
	addq	$48, %rdi
	leaq	L_.str.5(%rip), %rsi
	xorl	%eax, %eax
	callq	_dev_warn
	jmp	LBB0_27
LBB0_1:
	movq	_ENOMEM@GOTPCREL(%rip), %rax
	subl	(%rax), %r15d
	jmp	LBB0_69
LBB0_25:
	movq	8(%r12), %rax
	movl	8(%rax), %ecx
	shll	$8, %ecx
	orl	4(%rax), %ecx
	movl	%ecx, 32(%r14)
LBB0_27:
	leaq	L_.str.6(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_28
## %bb.29:
	movq	16(%r12), %rdi
	addq	$48, %rdi
	leaq	L_.str.7(%rip), %rsi
	xorl	%eax, %eax
	callq	_dev_warn
	jmp	LBB0_30
LBB0_28:
	movq	8(%r12), %rax
	movl	8(%rax), %ecx
	shll	$8, %ecx
	orl	4(%rax), %ecx
	movl	%ecx, 36(%r14)
LBB0_30:
	leaq	L_.str.8(%rip), %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_31
## %bb.32:
	movq	16(%r12), %rdi
	addq	$48, %rdi
	leaq	L_.str.9(%rip), %rsi
	xorl	%eax, %eax
	callq	_dev_warn
	jmp	LBB0_33
LBB0_31:
	movq	8(%r12), %rax
	movl	8(%rax), %ecx
	shll	$8, %ecx
	orl	4(%rax), %ecx
	movl	%ecx, 48(%r12)
LBB0_33:
	leaq	L_.str.10(%rip), %rsi
	xorl	%r15d, %r15d
	movq	%r12, %rdi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	je	LBB0_34
## %bb.35:
	movq	16(%r12), %rdi
	addq	$48, %rdi
	leaq	L_.str.11(%rip), %rsi
	xorl	%eax, %eax
	callq	_dev_warn
	jmp	LBB0_36
LBB0_34:
	movq	8(%r12), %rax
	movl	4(%rax), %r15d
LBB0_36:
	movq	_IFORCE_EFFECTS_MAX@GOTPCREL(%rip), %rbx
	movl	(%rbx), %edx
	cmpl	%edx, %r15d
	jle	LBB0_38
## %bb.37:
	movq	16(%r12), %rdi
	addq	$48, %rdi
	leaq	L_.str.12(%rip), %rsi
	movl	%r15d, %ecx
	xorl	%eax, %eax
	callq	_dev_warn
	movl	(%rbx), %r15d
LBB0_38:
	leaq	-48(%rbp), %rbx
	leaq	L_.str.13(%rip), %r13
	jmp	LBB0_39
	.p2align	4, 0x90
LBB0_41:                                ##   in Loop: Header=BB0_39 Depth=1
	cmpb	$0, 1(%rbx)
	leaq	1(%rbx), %rbx
	je	LBB0_42
LBB0_39:                                ## =>This Inner Loop Header: Depth=1
	movq	%r12, %rdi
	movq	%rbx, %rsi
	xorl	%eax, %eax
	callq	_iforce_get_id_packet
	testl	%eax, %eax
	jne	LBB0_41
## %bb.40:                              ##   in Loop: Header=BB0_39 Depth=1
	movl	32(%r12), %esi
	movq	8(%r12), %rdx
	movq	%r13, %rdi
	callq	_iforce_dump_packet
	jmp	LBB0_41
LBB0_42:
	xorl	%ebx, %ebx
	movq	%r14, %rdi
	xorl	%esi, %esi
	callq	_iforce_set_autocenter
	movq	_iforce_device@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movl	(%rax), %edi
	testl	%edi, %edi
	movl	%r15d, -52(%rbp)                ## 4-byte Spill
	je	LBB0_48
## %bb.43:
	movl	32(%r14), %edx
	leaq	40(%rax), %rsi
	xorl	%ecx, %ecx
	jmp	LBB0_44
	.p2align	4, 0x90
LBB0_46:                                ##   in Loop: Header=BB0_44 Depth=1
	incq	%rcx
	movl	(%rsi), %edi
	addq	$40, %rsi
	testl	%edi, %edi
	je	LBB0_47
LBB0_44:                                ## =>This Inner Loop Header: Depth=1
	cmpl	%edx, %edi
	jne	LBB0_46
## %bb.45:                              ##   in Loop: Header=BB0_44 Depth=1
	movl	-36(%rsi), %edi
	cmpl	36(%r14), %edi
	jne	LBB0_46
LBB0_47:
	movl	%ecx, %ebx
LBB0_48:
	leaq	(%rbx,%rbx,4), %rcx
	leaq	(%rax,%rcx,8), %rdx
	movq	%rdx, 24(%r12)
	movq	8(%rax,%rcx,8), %rax
	movq	%rax, (%r14)
	movq	_EV_KEY@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	callq	_BIT_MASK
	movl	%eax, %r13d
	movq	_EV_ABS@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	callq	_BIT_MASK
	movl	%eax, %ebx
	orl	%r13d, %ebx
	movq	_EV_FF_STATUS@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	callq	_BIT_MASK
	orl	%ebx, %eax
	movq	8(%r14), %rcx
	movl	%eax, (%rcx)
	movq	24(%r12), %rax
	movq	16(%rax), %rax
	movq	(%rax), %rax
	testq	%rax, %rax
	js	LBB0_51
## %bb.49:
	movl	$8, %ebx
	.p2align	4, 0x90
LBB0_50:                                ## =>This Inner Loop Header: Depth=1
	movl	28(%r14), %esi
	movswl	%ax, %edi
	callq	_set_bit
	movq	24(%r12), %rax
	movq	16(%rax), %rax
	movq	(%rax,%rbx), %rax
	addq	$8, %rbx
	testq	%rax, %rax
	jns	LBB0_50
LBB0_51:
	movq	_BTN_DEAD@GOTPCREL(%rip), %rax
	movswl	(%rax), %edi
	movl	28(%r14), %esi
	callq	_set_bit
	movq	24(%r12), %rcx
	movq	24(%rcx), %rax
	movzwl	(%rax), %eax
	testw	%ax, %ax
	js	LBB0_61
## %bb.52:
	movl	$2, %ebx
	leaq	LJTI0_0(%rip), %r15
	jmp	LBB0_53
	.p2align	4, 0x90
LBB0_58:                                ##   in Loop: Header=BB0_53 Depth=1
	movswl	%ax, %esi
	movq	%r14, %rdi
	movl	$-1, %edx
	movl	$1, %ecx
LBB0_59:                                ##   in Loop: Header=BB0_53 Depth=1
	xorl	%r8d, %r8d
	xorl	%r9d, %r9d
	callq	_input_set_abs_params
LBB0_60:                                ##   in Loop: Header=BB0_53 Depth=1
	movq	24(%r12), %rcx
	movq	24(%rcx), %rax
	movzwl	(%rax,%rbx), %eax
	addq	$2, %rbx
	testw	%ax, %ax
	js	LBB0_61
LBB0_53:                                ## =>This Inner Loop Header: Depth=1
	leal	-130(%rax), %ecx
	cmpw	$10, %cx
	ja	LBB0_60
## %bb.54:                              ##   in Loop: Header=BB0_53 Depth=1
	movzwl	%cx, %ecx
	movslq	(%r15,%rcx,4), %rcx
	addq	%r15, %rcx
	jmpq	*%rcx
LBB0_55:                                ##   in Loop: Header=BB0_53 Depth=1
	movswl	%ax, %r13d
	movq	%r14, %rdi
	movl	%r13d, %esi
	movl	$-1920, %edx                    ## imm = 0xF880
	movl	$1920, %ecx                     ## imm = 0x780
	movl	$16, %r8d
	movl	$128, %r9d
	callq	_input_set_abs_params
	movl	24(%r14), %esi
	movl	%r13d, %edi
	callq	_set_bit
	jmp	LBB0_60
	.p2align	4, 0x90
LBB0_56:                                ##   in Loop: Header=BB0_53 Depth=1
	movswl	%ax, %esi
	movq	%r14, %rdi
	xorl	%edx, %edx
	movl	$255, %ecx
	jmp	LBB0_59
LBB0_57:                                ##   in Loop: Header=BB0_53 Depth=1
	movq	%r14, %rdi
	movl	$134, %esi
	movl	$-128, %edx
	movl	$127, %ecx
	jmp	LBB0_59
LBB0_61:
	movl	-52(%rbp), %r15d                ## 4-byte Reload
	testl	%r15d, %r15d
	je	LBB0_67
## %bb.62:
	movq	32(%rcx), %rax
	movq	(%rax), %rax
	testq	%rax, %rax
	js	LBB0_65
## %bb.63:
	movl	$8, %ebx
	.p2align	4, 0x90
LBB0_64:                                ## =>This Inner Loop Header: Depth=1
	movl	24(%r14), %esi
	movswl	%ax, %edi
	callq	_set_bit
	movq	24(%r12), %rax
	movq	32(%rax), %rax
	movq	(%rax,%rbx), %rax
	addq	$8, %rbx
	testq	%rax, %rax
	jns	LBB0_64
LBB0_65:
	movq	%r14, %rdi
	movl	%r15d, %esi
	callq	_input_ff_create
	movl	%eax, %r15d
	testl	%eax, %eax
	jne	LBB0_23
## %bb.66:
	movq	16(%r14), %rax
	movq	_iforce_upload_effect@GOTPCREL(%rip), %rcx
	movl	(%rcx), %ecx
	movl	%ecx, 24(%rax)
	movq	_iforce_erase_effect@GOTPCREL(%rip), %rcx
	movl	(%rcx), %ecx
	movl	%ecx, 20(%rax)
	movq	_iforce_set_gain@GOTPCREL(%rip), %rcx
	movl	(%rcx), %ecx
	movl	%ecx, 16(%rax)
	movq	_iforce_set_autocenter@GOTPCREL(%rip), %rcx
	movq	%rcx, 8(%rax)
	movq	_iforce_playback@GOTPCREL(%rip), %rcx
	movl	(%rcx), %ecx
	movl	%ecx, (%rax)
LBB0_67:
	movq	16(%r12), %rdi
	callq	_input_register_device
	movl	%eax, %r15d
	testl	%eax, %eax
	je	LBB0_68
LBB0_23:
	movq	%r14, %rdi
	callq	_input_free_device
	jmp	LBB0_69
LBB0_68:
	xorl	%r15d, %r15d
LBB0_69:
	movl	%r15d, %eax
	addq	$24, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
	.cfi_endproc
	.p2align	2, 0x90
	.data_region jt32
.set L0_0_set_55, LBB0_55-LJTI0_0
.set L0_0_set_56, LBB0_56-LJTI0_0
.set L0_0_set_57, LBB0_57-LJTI0_0
.set L0_0_set_58, LBB0_58-LJTI0_0
LJTI0_0:
	.long	L0_0_set_55
	.long	L0_0_set_55
	.long	L0_0_set_55
	.long	L0_0_set_56
	.long	L0_0_set_57
	.long	L0_0_set_58
	.long	L0_0_set_58
	.long	L0_0_set_58
	.long	L0_0_set_58
	.long	L0_0_set_56
	.long	L0_0_set_56
	.end_data_region
                                        ## -- End function
	.section	__TEXT,__cstring,cstring_literals
L___const.iforce_init_device.c:         ## @__const.iforce_init_device.c
	.asciz	"CEOV"

	.comm	_ENOMEM,4,2                     ## @ENOMEM
L_.str:                                 ## @.str
	.asciz	"Unknown I-Force device"

	.comm	_iforce_open,4,2                ## @iforce_open
	.comm	_iforce_release,4,2             ## @iforce_release
L_.str.1:                               ## @.str.1
	.asciz	"I-Force device effect memory"

	.comm	_IORESOURCE_MEM,4,2             ## @IORESOURCE_MEM
L_.str.2:                               ## @.str.2
	.asciz	"O"

L_.str.3:                               ## @.str.3
	.asciz	"Timeout waiting for response from device."

	.comm	_ENODEV,4,2                     ## @ENODEV
L_.str.4:                               ## @.str.4
	.asciz	"M"

L_.str.5:                               ## @.str.5
	.asciz	"Device does not respond to id packet M\n"

L_.str.6:                               ## @.str.6
	.asciz	"P"

L_.str.7:                               ## @.str.7
	.asciz	"Device does not respond to id packet P\n"

L_.str.8:                               ## @.str.8
	.asciz	"B"

L_.str.9:                               ## @.str.9
	.asciz	"Device does not respond to id packet B\n"

L_.str.10:                              ## @.str.10
	.asciz	"N"

L_.str.11:                              ## @.str.11
	.asciz	"Device does not respond to id packet N\n"

	.comm	_IFORCE_EFFECTS_MAX,4,2         ## @IFORCE_EFFECTS_MAX
L_.str.12:                              ## @.str.12
	.asciz	"Limiting number of effects to %d (device reports %d)\n"

L_.str.13:                              ## @.str.13
	.asciz	"info"

	.comm	_iforce_device,8,3              ## @iforce_device
	.comm	_EV_KEY,4,2                     ## @EV_KEY
	.comm	_EV_ABS,4,2                     ## @EV_ABS
	.comm	_EV_FF_STATUS,4,2               ## @EV_FF_STATUS
	.comm	_BTN_DEAD,2,1                   ## @BTN_DEAD
	.comm	_iforce_upload_effect,4,2       ## @iforce_upload_effect
	.comm	_iforce_erase_effect,4,2        ## @iforce_erase_effect
	.comm	_iforce_set_gain,4,2            ## @iforce_set_gain
	.comm	_iforce_playback,4,2            ## @iforce_playback
	.comm	_BUS_RS232,4,2                  ## @BUS_RS232
	.comm	_BUS_USB,4,2                    ## @BUS_USB
.subsections_via_symbols

	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.globl	_iforce_init_device             ; -- Begin function iforce_init_device
	.p2align	2
_iforce_init_device:                    ; @iforce_init_device
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #96
	.cfi_def_cfa_offset 96
	stp	x24, x23, [sp, #32]             ; 16-byte Folded Spill
	stp	x22, x21, [sp, #48]             ; 16-byte Folded Spill
	stp	x20, x19, [sp, #64]             ; 16-byte Folded Spill
	stp	x29, x30, [sp, #80]             ; 16-byte Folded Spill
	add	x29, sp, #80
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	.cfi_offset w19, -24
	.cfi_offset w20, -32
	.cfi_offset w21, -40
	.cfi_offset w22, -48
	.cfi_offset w23, -56
	.cfi_offset w24, -64
	mov	x20, x0
	strb	wzr, [sp, #28]
	mov	w8, #17731
	movk	w8, #22095, lsl #16
	str	w8, [sp, #24]
	bl	_input_allocate_device
	cbz	x0, LBB0_24
; %bb.1:
	mov	x19, x0
	add	x0, x20, #128
	bl	_init_waitqueue_head
	add	x0, x20, #124
	bl	_spin_lock_init
	add	x0, x20, #120
	bl	_mutex_init
	ldr	w8, [x20, #112]
	str	w8, [x20, #116]
	str	x19, [x20, #16]
	mov	x0, x19
	mov	x1, x20
	bl	_input_set_drvdata
Lloh0:
	adrp	x8, l_.str@PAGE
Lloh1:
	add	x8, x8, l_.str@PAGEOFF
	str	x8, [x19]
Lloh2:
	adrp	x8, _iforce_open@GOTPAGE
Lloh3:
	ldr	x8, [x8, _iforce_open@GOTPAGEOFF]
Lloh4:
	ldr	w8, [x8]
Lloh5:
	adrp	x9, _iforce_release@GOTPAGE
Lloh6:
	ldr	x9, [x9, _iforce_release@GOTPAGEOFF]
Lloh7:
	ldr	w9, [x9]
Lloh8:
	adrp	x10, l_.str.1@PAGE
Lloh9:
	add	x10, x10, l_.str.1@PAGEOFF
	stp	w9, w8, [x19, #56]
	str	x10, [x20, #40]
	mov	w8, #200
	str	w8, [x20, #48]
Lloh10:
	adrp	x8, _IORESOURCE_MEM@GOTPAGE
Lloh11:
	ldr	x8, [x8, _IORESOURCE_MEM@GOTPAGEOFF]
	str	xzr, [x20, #88]
Lloh12:
	ldr	w8, [x8]
	str	w8, [x20, #80]
	stp	xzr, xzr, [x20, #64]
	str	xzr, [x20, #56]
Lloh13:
	adrp	x21, l_.str.2@PAGE
Lloh14:
	add	x21, x21, l_.str.2@PAGEOFF
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.2:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.3:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.4:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.5:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.6:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.7:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.8:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.9:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.10:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.11:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.12:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.13:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.14:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.15:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.16:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.17:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.18:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.19:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.20:
	str	x21, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_22
; %bb.21:
Lloh15:
	adrp	x0, l_.str.3@PAGE
Lloh16:
	add	x0, x0, l_.str.3@PAGEOFF
	bl	_err
Lloh17:
	adrp	x8, _ENODEV@GOTPAGE
Lloh18:
	ldr	x8, [x8, _ENODEV@GOTPAGEOFF]
Lloh19:
	ldr	w8, [x8]
	neg	w21, w8
	b	LBB0_68
LBB0_22:
Lloh20:
	adrp	x8, l_.str.4@PAGE
Lloh21:
	add	x8, x8, l_.str.4@PAGEOFF
	str	x8, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_25
; %bb.23:
	ldr	x8, [x20, #16]
	add	x0, x8, #48
Lloh22:
	adrp	x1, l_.str.5@PAGE
Lloh23:
	add	x1, x1, l_.str.5@PAGEOFF
	bl	_dev_warn
	b	LBB0_26
LBB0_24:
Lloh24:
	adrp	x8, _ENOMEM@GOTPAGE
Lloh25:
	ldr	x8, [x8, _ENOMEM@GOTPAGEOFF]
Lloh26:
	ldr	w8, [x8]
	neg	w21, w8
	b	LBB0_69
LBB0_25:
	ldr	x8, [x20, #8]
	ldp	w8, w9, [x8, #4]
	orr	w8, w8, w9, lsl #8
	str	w8, [x19, #32]
LBB0_26:
Lloh27:
	adrp	x8, l_.str.6@PAGE
Lloh28:
	add	x8, x8, l_.str.6@PAGEOFF
	str	x8, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_28
; %bb.27:
	ldr	x8, [x20, #16]
	add	x0, x8, #48
Lloh29:
	adrp	x1, l_.str.7@PAGE
Lloh30:
	add	x1, x1, l_.str.7@PAGEOFF
	bl	_dev_warn
	b	LBB0_29
LBB0_28:
	ldr	x8, [x20, #8]
	ldp	w8, w9, [x8, #4]
	orr	w8, w8, w9, lsl #8
	str	w8, [x19, #36]
LBB0_29:
Lloh31:
	adrp	x8, l_.str.8@PAGE
Lloh32:
	add	x8, x8, l_.str.8@PAGEOFF
	str	x8, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_31
; %bb.30:
	ldr	x8, [x20, #16]
	add	x0, x8, #48
Lloh33:
	adrp	x1, l_.str.9@PAGE
Lloh34:
	add	x1, x1, l_.str.9@PAGEOFF
	bl	_dev_warn
	b	LBB0_32
LBB0_31:
	ldr	x8, [x20, #8]
	ldp	w8, w9, [x8, #4]
	orr	w8, w8, w9, lsl #8
	str	w8, [x20, #48]
LBB0_32:
Lloh35:
	adrp	x8, l_.str.10@PAGE
Lloh36:
	add	x8, x8, l_.str.10@PAGEOFF
	str	x8, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbz	w0, LBB0_34
; %bb.33:
	ldr	x8, [x20, #16]
	add	x0, x8, #48
Lloh37:
	adrp	x1, l_.str.11@PAGE
Lloh38:
	add	x1, x1, l_.str.11@PAGEOFF
	bl	_dev_warn
	mov	w21, #0
	b	LBB0_35
LBB0_34:
	ldr	x8, [x20, #8]
	ldr	w21, [x8, #4]
LBB0_35:
Lloh39:
	adrp	x22, _IFORCE_EFFECTS_MAX@GOTPAGE
Lloh40:
	ldr	x22, [x22, _IFORCE_EFFECTS_MAX@GOTPAGEOFF]
	ldr	w8, [x22]
	cmp	w21, w8
	b.le	LBB0_37
; %bb.36:
	ldr	x9, [x20, #16]
	add	x0, x9, #48
	stp	x8, x21, [sp]
Lloh41:
	adrp	x1, l_.str.12@PAGE
Lloh42:
	add	x1, x1, l_.str.12@PAGEOFF
	bl	_dev_warn
	ldr	w21, [x22]
LBB0_37:
	add	x23, sp, #24
Lloh43:
	adrp	x22, l_.str.13@PAGE
Lloh44:
	add	x22, x22, l_.str.13@PAGEOFF
	b	LBB0_39
LBB0_38:                                ;   in Loop: Header=BB0_39 Depth=1
	ldrb	w8, [x23, #1]!
	cbz	w8, LBB0_41
LBB0_39:                                ; =>This Inner Loop Header: Depth=1
	str	x23, [sp]
	mov	x0, x20
	bl	_iforce_get_id_packet
	cbnz	w0, LBB0_38
; %bb.40:                               ;   in Loop: Header=BB0_39 Depth=1
	ldr	w1, [x20, #32]
	ldr	x2, [x20, #8]
	mov	x0, x22
	bl	_iforce_dump_packet
	b	LBB0_38
LBB0_41:
	mov	x0, x19
	mov	w1, #0
	bl	_iforce_set_autocenter
Lloh45:
	adrp	x8, _iforce_device@GOTPAGE
Lloh46:
	ldr	x8, [x8, _iforce_device@GOTPAGEOFF]
Lloh47:
	ldr	x8, [x8]
	ldr	w12, [x8]
	cbz	w12, LBB0_47
; %bb.42:
	mov	x9, #0
	ldr	w10, [x19, #32]
	add	x11, x8, #40
	b	LBB0_44
LBB0_43:                                ;   in Loop: Header=BB0_44 Depth=1
	add	x9, x9, #1
	ldr	w12, [x11], #40
	cbz	w12, LBB0_46
LBB0_44:                                ; =>This Inner Loop Header: Depth=1
	cmp	w12, w10
	b.ne	LBB0_43
; %bb.45:                               ;   in Loop: Header=BB0_44 Depth=1
	ldur	w12, [x11, #-36]
	ldr	w13, [x19, #36]
	cmp	w12, w13
	b.ne	LBB0_43
LBB0_46:
	and	x9, x9, #0xffffffff
	b	LBB0_48
LBB0_47:
	mov	x9, #0
LBB0_48:
	mov	w10, #40
	madd	x8, x9, x10, x8
	str	x8, [x20, #24]
	ldr	x8, [x8, #8]
	str	x8, [x19]
Lloh48:
	adrp	x8, _EV_KEY@GOTPAGE
Lloh49:
	ldr	x8, [x8, _EV_KEY@GOTPAGEOFF]
Lloh50:
	ldr	w0, [x8]
	bl	_BIT_MASK
	mov	x22, x0
Lloh51:
	adrp	x8, _EV_ABS@GOTPAGE
Lloh52:
	ldr	x8, [x8, _EV_ABS@GOTPAGEOFF]
Lloh53:
	ldr	w0, [x8]
	bl	_BIT_MASK
	orr	w22, w0, w22
Lloh54:
	adrp	x8, _EV_FF_STATUS@GOTPAGE
Lloh55:
	ldr	x8, [x8, _EV_FF_STATUS@GOTPAGEOFF]
Lloh56:
	ldr	w0, [x8]
	bl	_BIT_MASK
	orr	w8, w22, w0
	ldr	x9, [x19, #8]
	str	w8, [x9]
	ldr	x8, [x20, #24]
	ldr	x8, [x8, #16]
	ldr	x8, [x8]
	tbnz	x8, #63, LBB0_51
; %bb.49:
	mov	w22, #8
LBB0_50:                                ; =>This Inner Loop Header: Depth=1
	ldr	w1, [x19, #28]
	sxth	w0, w8
	bl	_set_bit
	ldr	x8, [x20, #24]
	ldr	x8, [x8, #16]
	ldr	x8, [x8, x22]
	add	x22, x22, #8
	tbz	x8, #63, LBB0_50
LBB0_51:
Lloh57:
	adrp	x8, _BTN_DEAD@GOTPAGE
Lloh58:
	ldr	x8, [x8, _BTN_DEAD@GOTPAGEOFF]
Lloh59:
	ldrsh	w0, [x8]
	ldr	w1, [x19, #28]
	bl	_set_bit
	ldr	x9, [x20, #24]
	ldr	x8, [x9, #24]
	ldrsh	w8, [x8]
	tbnz	w8, #31, LBB0_61
; %bb.52:
	mov	w23, #2
Lloh60:
	adrp	x24, lJTI0_0@PAGE
Lloh61:
	add	x24, x24, lJTI0_0@PAGEOFF
	b	LBB0_56
LBB0_53:                                ;   in Loop: Header=BB0_56 Depth=1
	sxth	w1, w8
	mov	x0, x19
	mov	w2, #-1
	mov	w3, #1
LBB0_54:                                ;   in Loop: Header=BB0_56 Depth=1
	mov	w4, #0
	mov	w5, #0
	bl	_input_set_abs_params
LBB0_55:                                ;   in Loop: Header=BB0_56 Depth=1
	ldr	x9, [x20, #24]
	ldr	x8, [x9, #24]
	ldrsh	w8, [x8, x23]
	add	x23, x23, #2
	tbnz	w8, #31, LBB0_61
LBB0_56:                                ; =>This Inner Loop Header: Depth=1
	and	w9, w8, #0xffff
	sub	w9, w9, #130
	cmp	w9, #10
	b.hi	LBB0_55
; %bb.57:                               ;   in Loop: Header=BB0_56 Depth=1
	adr	x10, LBB0_53
	ldrb	w11, [x24, x9]
	add	x10, x10, x11, lsl #2
	br	x10
LBB0_58:                                ;   in Loop: Header=BB0_56 Depth=1
	sxth	w22, w8
	mov	x0, x19
	mov	x1, x22
	mov	w2, #-1920
	mov	w3, #1920
	mov	w4, #16
	mov	w5, #128
	bl	_input_set_abs_params
	ldr	w1, [x19, #24]
	mov	x0, x22
	bl	_set_bit
	b	LBB0_55
LBB0_59:                                ;   in Loop: Header=BB0_56 Depth=1
	sxth	w1, w8
	mov	x0, x19
	mov	w2, #0
	mov	w3, #255
	b	LBB0_54
LBB0_60:                                ;   in Loop: Header=BB0_56 Depth=1
	mov	x0, x19
	mov	w1, #134
	mov	w2, #-128
	mov	w3, #127
	b	LBB0_54
LBB0_61:
	cbz	w21, LBB0_67
; %bb.62:
	ldr	x8, [x9, #32]
	ldr	x8, [x8]
	tbnz	x8, #63, LBB0_65
; %bb.63:
	mov	w22, #8
LBB0_64:                                ; =>This Inner Loop Header: Depth=1
	ldr	w1, [x19, #24]
	sxth	w0, w8
	bl	_set_bit
	ldr	x8, [x20, #24]
	ldr	x8, [x8, #32]
	ldr	x8, [x8, x22]
	add	x22, x22, #8
	tbz	x8, #63, LBB0_64
LBB0_65:
	mov	x0, x19
	mov	x1, x21
	bl	_input_ff_create
	mov	x21, x0
	cbnz	w0, LBB0_68
; %bb.66:
Lloh62:
	adrp	x8, _iforce_upload_effect@GOTPAGE
Lloh63:
	ldr	x8, [x8, _iforce_upload_effect@GOTPAGEOFF]
	ldr	x9, [x19, #16]
Lloh64:
	ldr	w8, [x8]
	str	w8, [x9, #24]
Lloh65:
	adrp	x8, _iforce_erase_effect@GOTPAGE
Lloh66:
	ldr	x8, [x8, _iforce_erase_effect@GOTPAGEOFF]
Lloh67:
	ldr	w8, [x8]
Lloh68:
	adrp	x10, _iforce_set_gain@GOTPAGE
Lloh69:
	ldr	x10, [x10, _iforce_set_gain@GOTPAGEOFF]
Lloh70:
	ldr	w10, [x10]
Lloh71:
	adrp	x11, _iforce_set_autocenter@GOTPAGE
Lloh72:
	ldr	x11, [x11, _iforce_set_autocenter@GOTPAGEOFF]
	stp	w10, w8, [x9, #16]
	str	x11, [x9, #8]
Lloh73:
	adrp	x8, _iforce_playback@GOTPAGE
Lloh74:
	ldr	x8, [x8, _iforce_playback@GOTPAGEOFF]
Lloh75:
	ldr	w8, [x8]
	str	w8, [x9]
LBB0_67:
	ldr	x0, [x20, #16]
	bl	_input_register_device
	mov	x21, x0
	cbz	w0, LBB0_69
LBB0_68:
	mov	x0, x19
	bl	_input_free_device
LBB0_69:
	mov	x0, x21
	ldp	x29, x30, [sp, #80]             ; 16-byte Folded Reload
	ldp	x20, x19, [sp, #64]             ; 16-byte Folded Reload
	ldp	x22, x21, [sp, #48]             ; 16-byte Folded Reload
	ldp	x24, x23, [sp, #32]             ; 16-byte Folded Reload
	add	sp, sp, #96
	ret
	.loh AdrpAdd	Lloh13, Lloh14
	.loh AdrpLdrGotLdr	Lloh10, Lloh11, Lloh12
	.loh AdrpAdd	Lloh8, Lloh9
	.loh AdrpLdrGotLdr	Lloh5, Lloh6, Lloh7
	.loh AdrpLdrGotLdr	Lloh2, Lloh3, Lloh4
	.loh AdrpAdd	Lloh0, Lloh1
	.loh AdrpLdrGotLdr	Lloh17, Lloh18, Lloh19
	.loh AdrpAdd	Lloh15, Lloh16
	.loh AdrpAdd	Lloh20, Lloh21
	.loh AdrpAdd	Lloh22, Lloh23
	.loh AdrpLdrGotLdr	Lloh24, Lloh25, Lloh26
	.loh AdrpAdd	Lloh27, Lloh28
	.loh AdrpAdd	Lloh29, Lloh30
	.loh AdrpAdd	Lloh31, Lloh32
	.loh AdrpAdd	Lloh33, Lloh34
	.loh AdrpAdd	Lloh35, Lloh36
	.loh AdrpAdd	Lloh37, Lloh38
	.loh AdrpLdrGot	Lloh39, Lloh40
	.loh AdrpAdd	Lloh41, Lloh42
	.loh AdrpAdd	Lloh43, Lloh44
	.loh AdrpLdrGotLdr	Lloh45, Lloh46, Lloh47
	.loh AdrpLdrGotLdr	Lloh54, Lloh55, Lloh56
	.loh AdrpLdrGotLdr	Lloh51, Lloh52, Lloh53
	.loh AdrpLdrGotLdr	Lloh48, Lloh49, Lloh50
	.loh AdrpLdrGotLdr	Lloh57, Lloh58, Lloh59
	.loh AdrpAdd	Lloh60, Lloh61
	.loh AdrpLdrGotLdr	Lloh73, Lloh74, Lloh75
	.loh AdrpLdrGot	Lloh71, Lloh72
	.loh AdrpLdrGotLdr	Lloh68, Lloh69, Lloh70
	.loh AdrpLdrGotLdr	Lloh65, Lloh66, Lloh67
	.loh AdrpLdrGotLdr	Lloh62, Lloh63, Lloh64
	.cfi_endproc
	.section	__TEXT,__const
lJTI0_0:
	.byte	(LBB0_58-LBB0_53)>>2
	.byte	(LBB0_58-LBB0_53)>>2
	.byte	(LBB0_58-LBB0_53)>>2
	.byte	(LBB0_59-LBB0_53)>>2
	.byte	(LBB0_60-LBB0_53)>>2
	.byte	(LBB0_53-LBB0_53)>>2
	.byte	(LBB0_53-LBB0_53)>>2
	.byte	(LBB0_53-LBB0_53)>>2
	.byte	(LBB0_53-LBB0_53)>>2
	.byte	(LBB0_59-LBB0_53)>>2
	.byte	(LBB0_59-LBB0_53)>>2
                                        ; -- End function
	.section	__TEXT,__cstring,cstring_literals
l___const.iforce_init_device.c:         ; @__const.iforce_init_device.c
	.asciz	"CEOV"

	.comm	_ENOMEM,4,2                     ; @ENOMEM
l_.str:                                 ; @.str
	.asciz	"Unknown I-Force device"

	.comm	_iforce_open,4,2                ; @iforce_open
	.comm	_iforce_release,4,2             ; @iforce_release
l_.str.1:                               ; @.str.1
	.asciz	"I-Force device effect memory"

	.comm	_IORESOURCE_MEM,4,2             ; @IORESOURCE_MEM
l_.str.2:                               ; @.str.2
	.asciz	"O"

l_.str.3:                               ; @.str.3
	.asciz	"Timeout waiting for response from device."

	.comm	_ENODEV,4,2                     ; @ENODEV
l_.str.4:                               ; @.str.4
	.asciz	"M"

l_.str.5:                               ; @.str.5
	.asciz	"Device does not respond to id packet M\n"

l_.str.6:                               ; @.str.6
	.asciz	"P"

l_.str.7:                               ; @.str.7
	.asciz	"Device does not respond to id packet P\n"

l_.str.8:                               ; @.str.8
	.asciz	"B"

l_.str.9:                               ; @.str.9
	.asciz	"Device does not respond to id packet B\n"

l_.str.10:                              ; @.str.10
	.asciz	"N"

l_.str.11:                              ; @.str.11
	.asciz	"Device does not respond to id packet N\n"

	.comm	_IFORCE_EFFECTS_MAX,4,2         ; @IFORCE_EFFECTS_MAX
l_.str.12:                              ; @.str.12
	.asciz	"Limiting number of effects to %d (device reports %d)\n"

l_.str.13:                              ; @.str.13
	.asciz	"info"

	.comm	_iforce_device,8,3              ; @iforce_device
	.comm	_EV_KEY,4,2                     ; @EV_KEY
	.comm	_EV_ABS,4,2                     ; @EV_ABS
	.comm	_EV_FF_STATUS,4,2               ; @EV_FF_STATUS
	.comm	_BTN_DEAD,2,1                   ; @BTN_DEAD
	.comm	_iforce_upload_effect,4,2       ; @iforce_upload_effect
	.comm	_iforce_erase_effect,4,2        ; @iforce_erase_effect
	.comm	_iforce_set_gain,4,2            ; @iforce_set_gain
	.comm	_iforce_playback,4,2            ; @iforce_playback
	.comm	_BUS_RS232,4,2                  ; @BUS_RS232
	.comm	_BUS_USB,4,2                    ; @BUS_USB
.subsections_via_symbols
