	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.p2align	4, 0x90                         ## -- Begin function mlx4_load_one
_mlx4_load_one:                         ## @mlx4_load_one
	.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	$40, %rsp
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	movl	%r9d, -44(%rbp)                 ## 4-byte Spill
	movq	%r8, %r13
	movq	%rcx, -64(%rbp)                 ## 8-byte Spill
	movl	%edx, %r15d
	movl	%esi, %r14d
	movq	%rdi, %rbx
	leaq	120(%r8), %rdi
	callq	_INIT_LIST_HEAD
	leaq	116(%r13), %rdi
	callq	_spin_lock_init
	leaq	112(%r13), %rdi
	callq	_mutex_init
	leaq	108(%r13), %rdi
	callq	_mutex_init
	leaq	104(%r13), %rdi
	callq	_INIT_LIST_HEAD
	leaq	100(%r13), %rdi
	callq	_mutex_init
	leaq	96(%r13), %rdi
	callq	_spin_lock_init
	leaq	92(%r13), %rdi
	callq	_INIT_LIST_HEAD
	leaq	88(%r13), %rdi
	callq	_mutex_init
	movl	4(%rbx), %eax
	movl	%eax, 44(%r13)
	movq	%rbx, -56(%rbp)                 ## 8-byte Spill
	movq	%rbx, %rdi
	callq	_dev_to_node
	movl	%eax, 40(%r13)
	movq	_MLX4_PCI_DEV_IS_VF@GOTPCREL(%rip), %rax
	testl	%r14d, (%rax)
	je	LBB0_7
## %bb.1:
	leaq	L_.str(%rip), %rsi
	movq	%r13, %rdi
	callq	_mlx4_warn
	movq	_MLX4_FLAG_SLAVE@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	orl	%eax, (%r13)
LBB0_2:
	xorl	%ebx, %ebx
LBB0_3:
	movq	_MLX4_DEVICE_STATE_UP@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movq	16(%r13), %rcx
	movl	%eax, 20(%rcx)
	movq	%r13, %rdi
	callq	_mlx4_cmd_init
	testl	%eax, %eax
	je	LBB0_10
## %bb.4:
	movl	%eax, %r14d
	xorl	%r12d, %r12d
LBB0_5:
	leaq	L_.str.3(%rip), %rsi
LBB0_6:
	movq	%r13, %rdi
	xorl	%eax, %eax
	callq	_mlx4_err
	jmp	LBB0_127
LBB0_7:
	movq	%r13, %rdi
	callq	_mlx4_get_ownership
	testl	%eax, %eax
	je	LBB0_40
## %bb.8:
	js	LBB0_42
## %bb.9:
	leaq	L_.str.1(%rip), %rsi
	movq	%r13, %rdi
	callq	_mlx4_warn
	movq	_EINVAL@GOTPCREL(%rip), %rax
	xorl	%r14d, %r14d
	subl	(%rax), %r14d
	jmp	LBB0_137
LBB0_10:
	movl	%r15d, -68(%rbp)                ## 4-byte Spill
	xorl	%r12d, %r12d
	movq	_MLX4_FLAG_SRIOV@GOTPCREL(%rip), %r15
	.p2align	4, 0x90
LBB0_11:                                ## =>This Inner Loop Header: Depth=1
	movq	%r13, %rdi
	callq	_mlx4_is_mfunc
	testq	%rax, %rax
	je	LBB0_15
## %bb.12:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	callq	_mlx4_is_master
	testq	%rax, %rax
	je	LBB0_14
## %bb.13:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	_MLX4_MAX_NUM_SLAVES@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 32(%r13)
	jmp	LBB0_15
	.p2align	4, 0x90
LBB0_14:                                ##   in Loop: Header=BB0_11 Depth=1
	movq	$0, 32(%r13)
	movq	%r13, %rdi
	callq	_mlx4_multi_func_init
	testl	%eax, %eax
	jne	LBB0_57
LBB0_15:                                ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	callq	_mlx4_init_fw
	testl	%eax, %eax
	jne	LBB0_47
## %bb.16:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	callq	_mlx4_is_master
	testq	%rax, %rax
	je	LBB0_24
## %bb.17:                              ##   in Loop: Header=BB0_11 Depth=1
	testq	%r12, %r12
	je	LBB0_20
## %bb.18:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	%r12, %rdi
	xorl	%esi, %esi
	movl	$12, %edx
	callq	_memset
	movq	%r13, %rdi
	movq	%r12, %rsi
	callq	_mlx4_QUERY_DEV_CAP
	testl	%eax, %eax
	jne	LBB0_54
## %bb.19:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	movq	%r12, %rsi
	movq	-64(%rbp), %rdx                 ## 8-byte Reload
	callq	_mlx4_check_dev_cap
	testq	%rax, %rax
	je	LBB0_24
	jmp	LBB0_59
	.p2align	4, 0x90
LBB0_20:                                ##   in Loop: Header=BB0_11 Depth=1
	movq	_GFP_KERNEL@GOTPCREL(%rip), %rax
	movl	(%rax), %esi
	movl	$12, %edi
	callq	_kzalloc
	testq	%rax, %rax
	je	LBB0_58
## %bb.21:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	%rax, %r12
	movq	%r13, %rdi
	movq	%rax, %rsi
	callq	_mlx4_QUERY_DEV_CAP
	testl	%eax, %eax
	jne	LBB0_54
## %bb.22:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	movq	%r12, %rsi
	movq	-64(%rbp), %rdx                 ## 8-byte Reload
	callq	_mlx4_check_dev_cap
	testq	%rax, %rax
	jne	LBB0_59
## %bb.23:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	_MLX4_DEV_CAP_FLAG2_SYS_EQS@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	testl	%eax, (%r12)
	je	LBB0_37
	.p2align	4, 0x90
LBB0_24:                                ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	callq	_mlx4_init_hca
	testl	%eax, %eax
	je	LBB0_49
## %bb.25:                              ##   in Loop: Header=BB0_11 Depth=1
	movl	%eax, %r14d
	movq	_EACCES@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	addl	%r14d, %eax
	jne	LBB0_123
## %bb.26:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	_MLX4_CMD_CLEANUP_ALL@GOTPCREL(%rip), %rax
	movl	(%rax), %esi
	movq	%r13, %rdi
	callq	_mlx4_cmd_cleanup
	movl	(%r15), %eax
	testl	%eax, (%r13)
	je	LBB0_33
## %bb.27:                              ##   in Loop: Header=BB0_11 Depth=1
	testl	%ebx, %ebx
	jne	LBB0_29
## %bb.28:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	-56(%rbp), %rdi                 ## 8-byte Reload
	callq	_pci_disable_sriov
LBB0_29:                                ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	callq	_mlx4_is_master
	cmpl	$0, -44(%rbp)                   ## 4-byte Folded Reload
	jne	LBB0_32
## %bb.30:                              ##   in Loop: Header=BB0_11 Depth=1
	testq	%rax, %rax
	je	LBB0_32
## %bb.31:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	_pf_loading@GOTPCREL(%rip), %rdi
	callq	_atomic_dec
LBB0_32:                                ##   in Loop: Header=BB0_11 Depth=1
	movl	(%r15), %eax
	notl	%eax
	andl	%eax, (%r13)
LBB0_33:                                ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	callq	_mlx4_is_slave
	testq	%rax, %rax
	jne	LBB0_35
## %bb.34:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	callq	_mlx4_free_ownership
LBB0_35:                                ##   in Loop: Header=BB0_11 Depth=1
	movl	(%r13), %eax
	movq	_MLX4_FLAG_SLAVE@GOTPCREL(%rip), %rcx
	orl	(%rcx), %eax
	movl	%eax, (%r13)
	movq	_MLX4_FLAG_MASTER@GOTPCREL(%rip), %rcx
	movl	(%rcx), %ecx
	notl	%ecx
	andl	%eax, %ecx
	movl	%ecx, (%r13)
LBB0_36:                                ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	callq	_mlx4_cmd_init
	testl	%eax, %eax
	je	LBB0_11
	jmp	LBB0_48
LBB0_37:                                ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	movq	-56(%rbp), %rsi                 ## 8-byte Reload
	movl	-68(%rbp), %edx                 ## 4-byte Reload
	movl	%ebx, %ecx
	movl	-44(%rbp), %r8d                 ## 4-byte Reload
	callq	_mlx4_enable_sriov
	movl	%eax, %r14d
	movq	%r13, %rdi
	callq	_mlx4_close_fw
	movq	_MLX4_CMD_CLEANUP_ALL@GOTPCREL(%rip), %rax
	movl	(%rax), %esi
	movq	%r13, %rdi
	callq	_mlx4_cmd_cleanup
	movl	%r14d, (%r13)
	movl	%r14d, %edi
	callq	_SRIOV_VALID_STATE
	testl	%eax, %eax
	je	LBB0_72
## %bb.38:                              ##   in Loop: Header=BB0_11 Depth=1
	movq	%r13, %rdi
	callq	_mlx4_reset
	testl	%eax, %eax
	je	LBB0_36
## %bb.39:
	movl	%eax, %r14d
	leaq	L_.str.8(%rip), %rsi
	jmp	LBB0_6
LBB0_40:
	leaq	84(%r13), %rdi
	xorl	%ebx, %ebx
	xorl	%esi, %esi
	callq	_atomic_set
	leaq	80(%r13), %rdi
	movq	_mlx4_opreq_action@GOTPCREL(%rip), %rax
	movl	(%rax), %esi
	callq	_INIT_WORK
	movq	%r13, %rdi
	callq	_mlx4_reset
	testl	%eax, %eax
	je	LBB0_43
## %bb.41:
	movl	%eax, %r14d
	leaq	L_.str.2(%rip), %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	callq	_mlx4_err
	xorl	%r12d, %r12d
	jmp	LBB0_127
LBB0_42:
	movl	%eax, %r14d
	jmp	LBB0_137
LBB0_43:
	testl	%r15d, %r15d
	je	LBB0_2
## %bb.44:
	movq	_MLX4_FLAG_MASTER@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, (%r13)
	movq	-56(%rbp), %rdi                 ## 8-byte Reload
	callq	_pci_num_vf
	movl	%eax, %ebx
	testl	%eax, %eax
	je	LBB0_46
## %bb.45:
	movq	_MLX4_FLAG_SRIOV@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	orl	%eax, (%r13)
LBB0_46:
	movq	16(%r13), %rax
	movl	%r15d, (%rax)
	jmp	LBB0_3
LBB0_47:
	movl	%eax, %r14d
	leaq	L_.str.5(%rip), %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	callq	_mlx4_err
	jmp	LBB0_124
LBB0_48:
	movl	%eax, %r14d
	jmp	LBB0_5
LBB0_49:
	movq	%r13, %rdi
	callq	_mlx4_is_master
	testq	%rax, %rax
	je	LBB0_63
## %bb.50:
	movq	_MLX4_DEV_CAP_FLAG2_SYS_EQS@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	testl	%eax, (%r12)
	je	LBB0_63
## %bb.51:
	movq	%r13, %rdi
	movq	-56(%rbp), %rsi                 ## 8-byte Reload
	movl	-68(%rbp), %edx                 ## 4-byte Reload
	movl	%ebx, %ecx
	movl	-44(%rbp), %r8d                 ## 4-byte Reload
	callq	_mlx4_enable_sriov
	movl	%eax, %r14d
	xorl	(%r13), %eax
	movq	_MLX4_FLAG_SLAVE@GOTPCREL(%rip), %rcx
	movl	(%rcx), %ecx
	movq	_MLX4_FLAG_MASTER@GOTPCREL(%rip), %rdx
	orl	(%rdx), %ecx
	testl	%eax, %ecx
	je	LBB0_60
## %bb.52:
	movq	_MLX4_CMD_CLEANUP_VHCR@GOTPCREL(%rip), %rax
	movl	(%rax), %esi
	movq	%r13, %rdi
	callq	_mlx4_cmd_cleanup
	movl	%r14d, (%r13)
	movq	%r13, %rdi
	callq	_mlx4_cmd_init
	testl	%eax, %eax
	je	LBB0_61
## %bb.53:
	movl	%eax, %r14d
	leaq	L_.str.9(%rip), %rsi
	jmp	LBB0_80
LBB0_54:
	movl	%eax, %r14d
	leaq	L_.str.6(%rip), %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	callq	_mlx4_err
	jmp	LBB0_123
LBB0_59:
	xorl	%r14d, %r14d
	jmp	LBB0_123
LBB0_57:
	movl	%eax, %r14d
	leaq	L_.str.4(%rip), %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	callq	_mlx4_err
	jmp	LBB0_126
LBB0_58:
	movq	_ENOMEM@GOTPCREL(%rip), %rax
	xorl	%r12d, %r12d
	xorl	%r14d, %r14d
	subl	(%rax), %r14d
	jmp	LBB0_123
LBB0_60:
	movl	%r14d, (%r13)
	jmp	LBB0_62
LBB0_61:
	movl	(%r13), %r14d
LBB0_62:
	movl	%r14d, %edi
	callq	_SRIOV_VALID_STATE
	testl	%eax, %eax
	je	LBB0_73
LBB0_63:
	movq	%r13, %rdi
	callq	_mlx4_is_slave
	testq	%rax, %rax
	jne	LBB0_65
## %bb.64:
	movq	16(%r13), %rax
	movl	16(%rax), %edi
	callq	_pcie_print_link_status
LBB0_65:
	movq	%r13, %rdi
	callq	_mlx4_is_master
	testq	%rax, %rax
	je	LBB0_81
## %bb.66:
	movl	24(%r13), %edx
	cmpl	$1, %edx
	jg	LBB0_69
## %bb.67:
	movq	_num_vfs_argc@GOTPCREL(%rip), %rax
	cmpl	$2, (%rax)
	jl	LBB0_69
## %bb.68:
	movq	_EINVAL@GOTPCREL(%rip), %rax
	xorl	%r14d, %r14d
	subl	(%rax), %r14d
	leaq	L_.str.10(%rip), %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	callq	_mlx4_err
	jmp	LBB0_122
LBB0_69:
	movq	16(%r13), %rax
	movq	8(%rax), %rdi
	movq	-64(%rbp), %rsi                 ## 8-byte Reload
	movl	$8, %edx
	callq	_memcpy
	movq	16(%r13), %rax
	movq	8(%rax), %rax
	cmpl	$0, (%rax)
	je	LBB0_74
## %bb.70:
	movq	8(%r13), %rdx
	addq	$8, %rdx
	xorl	%ecx, %ecx
	movabsq	$4294967297, %rsi               ## imm = 0x100000001
LBB0_71:                                ## =>This Inner Loop Header: Depth=1
	movq	%rsi, -4(%rdx)
	addq	$12, %rdx
	incl	%ecx
	cmpl	%ecx, (%rax)
	ja	LBB0_71
	jmp	LBB0_75
LBB0_72:
	leaq	L_.str.7(%rip), %rsi
	xorl	%r14d, %r14d
	jmp	LBB0_6
LBB0_73:
	leaq	L_.str.7(%rip), %rsi
	xorl	%r14d, %r14d
	jmp	LBB0_80
LBB0_74:
	xorl	%ecx, %ecx
LBB0_75:
	cmpl	$0, 4(%rax)
	je	LBB0_78
## %bb.76:
	movq	8(%r13), %rdx
	xorl	%esi, %esi
	movabsq	$4294967298, %r8                ## imm = 0x100000002
LBB0_77:                                ## =>This Inner Loop Header: Depth=1
	leal	(%rcx,%rsi), %edi
	leaq	(%rdi,%rdi,2), %rdi
	movq	%r8, 4(%rdx,%rdi,4)
	incl	%esi
	cmpl	4(%rax), %esi
	jb	LBB0_77
LBB0_78:
	movq	%r13, %rdi
	callq	_mlx4_multi_func_init
	testl	%eax, %eax
	je	LBB0_81
## %bb.79:
	movl	%eax, %r14d
	leaq	L_.str.11(%rip), %rsi
LBB0_80:
	movq	%r13, %rdi
	xorl	%eax, %eax
	callq	_mlx4_err
	jmp	LBB0_122
LBB0_81:
	movq	%r13, %rdi
	callq	_mlx4_alloc_eq_table
	movl	%eax, %r14d
	testl	%eax, %eax
	jne	LBB0_118
## %bb.82:
	leaq	72(%r13), %r14
	movl	76(%r13), %edi
	movq	_MAX_MSIX@GOTPCREL(%rip), %rax
	movl	(%rax), %esi
	callq	_bitmap_zero
	movq	%r14, %rdi
	callq	_mutex_init
	movq	%r13, %rdi
	callq	_mlx4_enable_msi_x
	movq	%r13, %rdi
	callq	_mlx4_is_mfunc
	testq	%rax, %rax
	je	LBB0_84
## %bb.83:
	movq	_MLX4_FLAG_MSI_X@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	testl	%eax, (%r13)
	je	LBB0_94
LBB0_84:
	movq	%r13, %rdi
	callq	_mlx4_is_slave
	testq	%rax, %rax
	je	LBB0_93
LBB0_85:
	movq	%r13, %rdi
	callq	_mlx4_init_quotas
	movq	%r13, %rdi
	callq	_mlx4_setup_hca
	movl	%eax, %r14d
	movq	_EBUSY@GOTPCREL(%rip), %rax
	movl	%r14d, %ecx
	addl	(%rax), %ecx
	jne	LBB0_89
## %bb.86:
	movq	_MLX4_FLAG_MSI_X@GOTPCREL(%rip), %r15
	movl	(%r15), %eax
	testl	%eax, (%r13)
	je	LBB0_89
## %bb.87:
	movq	%r13, %rdi
	callq	_mlx4_is_mfunc
	testq	%rax, %rax
	jne	LBB0_89
## %bb.88:
	movl	(%r15), %eax
	notl	%eax
	andl	%eax, (%r13)
	movl	$1, 28(%r13)
	movq	-56(%rbp), %rdi                 ## 8-byte Reload
	callq	_pci_disable_msix
	movq	%r13, %rdi
	callq	_mlx4_setup_hca
	movl	%eax, %r14d
LBB0_89:
	testl	%r14d, %r14d
	jne	LBB0_113
## %bb.90:
	movq	%r13, %rdi
	callq	_mlx4_is_master
	testq	%rax, %rax
	je	LBB0_95
## %bb.91:
	movq	%r13, %rdi
	callq	_mlx4_ARM_COMM_CHANNEL
	testl	%eax, %eax
	je	LBB0_95
## %bb.92:
	movl	%eax, %r14d
	leaq	L_.str.13(%rip), %rsi
	movq	%r13, %rdi
	movl	%eax, %edx
	xorl	%eax, %eax
	callq	_mlx4_err
	jmp	LBB0_113
LBB0_93:
	movq	%r13, %rdi
	callq	_mlx4_init_steering
	movl	%eax, %r14d
	testl	%eax, %eax
	jne	LBB0_115
	jmp	LBB0_85
LBB0_94:
	movq	_EOPNOTSUPP@GOTPCREL(%rip), %rax
	xorl	%r14d, %r14d
	subl	(%rax), %r14d
	leaq	L_.str.12(%rip), %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	callq	_mlx4_err
	jmp	LBB0_117
LBB0_95:
	movq	%rbx, -64(%rbp)                 ## 8-byte Spill
	cmpl	$0, 24(%r13)
	jle	LBB0_99
## %bb.96:
	movl	$1, %ebx
LBB0_97:                                ## =>This Inner Loop Header: Depth=1
	movq	%r13, %rdi
	movl	%ebx, %esi
	callq	_mlx4_init_port_info
	testl	%eax, %eax
	jne	LBB0_106
## %bb.98:                              ##   in Loop: Header=BB0_97 Depth=1
	leal	1(%rbx), %r15d
	cmpl	24(%r13), %ebx
	movl	%r15d, %ebx
	jl	LBB0_97
	jmp	LBB0_100
LBB0_99:
	movl	$1, %r15d
LBB0_100:
	movabsq	$8589934593, %rax               ## imm = 0x200000001
	movq	%rax, 64(%r13)
	movq	%r13, %rdi
	callq	_mlx4_register_device
	movl	%eax, %r14d
	movl	%r15d, %ebx
	testl	%eax, %eax
	jne	LBB0_107
## %bb.101:
	movq	%r13, %rdi
	callq	_mlx4_request_modules
	movq	%r13, %rdi
	callq	_mlx4_sense_init
	movq	%r13, %rdi
	callq	_mlx4_start_sense
	movq	$0, 56(%r13)
	movq	%r13, %rdi
	callq	_mlx4_is_master
	testq	%rax, %rax
	je	LBB0_105
## %bb.102:
	cmpl	$0, -44(%rbp)                   ## 4-byte Folded Reload
	jne	LBB0_105
## %bb.103:
	movq	16(%r13), %rax
	cmpl	$0, (%rax)
	je	LBB0_105
## %bb.104:
	movq	_pf_loading@GOTPCREL(%rip), %rdi
	callq	_atomic_dec
LBB0_105:
	movq	%r12, %rdi
	callq	_kfree
	xorl	%r14d, %r14d
	jmp	LBB0_137
LBB0_106:
	movl	%eax, %r14d
LBB0_107:
	cmpl	$2, %ebx
	jl	LBB0_110
## %bb.108:
	movl	%ebx, %r15d
	incq	%r15
LBB0_109:                               ## =>This Inner Loop Header: Depth=1
	leal	-2(%r15), %edi
	shlq	$2, %rdi
	addq	48(%r13), %rdi
	callq	_mlx4_cleanup_port_info
	decq	%r15
	cmpq	$2, %r15
	ja	LBB0_109
LBB0_110:
	movq	%r13, %rdi
	callq	_mlx4_cleanup_default_counters
	movq	%r13, %rdi
	callq	_mlx4_is_slave
	testq	%rax, %rax
	jne	LBB0_112
## %bb.111:
	movq	%r13, %rdi
	callq	_mlx4_cleanup_counters_table
LBB0_112:
	movq	%r13, %rdi
	callq	_mlx4_cleanup_qp_table
	movq	%r13, %rdi
	callq	_mlx4_cleanup_srq_table
	movq	%r13, %rdi
	callq	_mlx4_cleanup_cq_table
	movq	%r13, %rdi
	callq	_mlx4_cmd_use_polling
	movq	%r13, %rdi
	callq	_mlx4_cleanup_eq_table
	movq	%r13, %rdi
	callq	_mlx4_cleanup_mcg_table
	movq	%r13, %rdi
	callq	_mlx4_cleanup_mr_table
	movq	%r13, %rdi
	callq	_mlx4_cleanup_xrcd_table
	movq	%r13, %rdi
	callq	_mlx4_cleanup_pd_table
	movq	%r13, %rdi
	callq	_mlx4_cleanup_uar_table
	movq	-64(%rbp), %rbx                 ## 8-byte Reload
LBB0_113:
	movq	%r13, %rdi
	callq	_mlx4_is_slave
	testq	%rax, %rax
	jne	LBB0_115
## %bb.114:
	movq	%r13, %rdi
	callq	_mlx4_clear_steering
LBB0_115:
	movq	_MLX4_FLAG_MSI_X@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	testl	%eax, (%r13)
	je	LBB0_117
## %bb.116:
	movq	-56(%rbp), %rdi                 ## 8-byte Reload
	callq	_pci_disable_msix
LBB0_117:
	movq	%r13, %rdi
	callq	_mlx4_free_eq_table
LBB0_118:
	movq	%r13, %rdi
	callq	_mlx4_is_master
	testq	%rax, %rax
	je	LBB0_120
## %bb.119:
	movq	_RES_TR_FREE_STRUCTS_ONLY@GOTPCREL(%rip), %rax
	movl	(%rax), %esi
	movq	%r13, %rdi
	callq	_mlx4_free_resource_tracker
	movq	%r13, %rdi
	callq	_mlx4_multi_func_cleanup
LBB0_120:
	movq	%r13, %rdi
	callq	_mlx4_is_slave
	testq	%rax, %rax
	je	LBB0_122
## %bb.121:
	movq	%r13, %rdi
	callq	_mlx4_slave_destroy_special_qp_cap
LBB0_122:
	movq	%r13, %rdi
	callq	_mlx4_close_hca
LBB0_123:
	movq	%r13, %rdi
	callq	_mlx4_close_fw
LBB0_124:
	movq	%r13, %rdi
	callq	_mlx4_is_slave
	testq	%rax, %rax
	je	LBB0_126
## %bb.125:
	movq	%r13, %rdi
	callq	_mlx4_multi_func_cleanup
LBB0_126:
	movq	_MLX4_CMD_CLEANUP_ALL@GOTPCREL(%rip), %rax
	movl	(%rax), %esi
	movq	%r13, %rdi
	callq	_mlx4_cmd_cleanup
LBB0_127:
	movq	_MLX4_FLAG_SRIOV@GOTPCREL(%rip), %r15
	movl	(%r15), %eax
	testl	%eax, (%r13)
	je	LBB0_130
## %bb.128:
	testl	%ebx, %ebx
	jne	LBB0_130
## %bb.129:
	movq	-56(%rbp), %rdi                 ## 8-byte Reload
	callq	_pci_disable_sriov
	movl	(%r15), %eax
	notl	%eax
	andl	%eax, (%r13)
LBB0_130:
	movq	%r13, %rdi
	callq	_mlx4_is_master
	testq	%rax, %rax
	je	LBB0_134
## %bb.131:
	cmpl	$0, -44(%rbp)                   ## 4-byte Folded Reload
	jne	LBB0_134
## %bb.132:
	movq	16(%r13), %rax
	cmpl	$0, (%rax)
	je	LBB0_134
## %bb.133:
	movq	_pf_loading@GOTPCREL(%rip), %rdi
	callq	_atomic_dec
LBB0_134:
	movq	8(%r13), %rdi
	callq	_kfree
	movq	%r13, %rdi
	callq	_mlx4_is_slave
	testq	%rax, %rax
	jne	LBB0_136
## %bb.135:
	movq	%r13, %rdi
	callq	_mlx4_free_ownership
LBB0_136:
	movq	%r12, %rdi
	callq	_kfree
LBB0_137:
	movl	%r14d, %eax
	addq	$40, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function
	.comm	_MLX4_PCI_DEV_IS_VF,4,2         ## @MLX4_PCI_DEV_IS_VF
	.section	__TEXT,__cstring,cstring_literals
L_.str:                                 ## @.str
	.asciz	"Detected virtual function - running in slave mode\n"

	.comm	_MLX4_FLAG_SLAVE,4,2            ## @MLX4_FLAG_SLAVE
L_.str.1:                               ## @.str.1
	.asciz	"Multiple PFs not yet supported - Skipping PF\n"

	.comm	_EINVAL,4,2                     ## @EINVAL
	.comm	_mlx4_opreq_action,4,2          ## @mlx4_opreq_action
L_.str.2:                               ## @.str.2
	.asciz	"Failed to reset HCA, aborting\n"

	.comm	_MLX4_FLAG_MASTER,4,2           ## @MLX4_FLAG_MASTER
	.comm	_MLX4_FLAG_SRIOV,4,2            ## @MLX4_FLAG_SRIOV
	.comm	_MLX4_DEVICE_STATE_UP,4,2       ## @MLX4_DEVICE_STATE_UP
L_.str.3:                               ## @.str.3
	.asciz	"Failed to init command interface, aborting\n"

	.comm	_MLX4_MAX_NUM_SLAVES,8,3        ## @MLX4_MAX_NUM_SLAVES
L_.str.4:                               ## @.str.4
	.asciz	"Failed to init slave mfunc interface, aborting\n"

L_.str.5:                               ## @.str.5
	.asciz	"Failed to init fw, aborting.\n"

	.comm	_GFP_KERNEL,4,2                 ## @GFP_KERNEL
	.comm	_ENOMEM,4,2                     ## @ENOMEM
L_.str.6:                               ## @.str.6
	.asciz	"QUERY_DEV_CAP command failed, aborting.\n"

	.comm	_MLX4_DEV_CAP_FLAG2_SYS_EQS,4,2 ## @MLX4_DEV_CAP_FLAG2_SYS_EQS
	.comm	_MLX4_CMD_CLEANUP_ALL,4,2       ## @MLX4_CMD_CLEANUP_ALL
L_.str.7:                               ## @.str.7
	.asciz	"Invalid SRIOV state\n"

L_.str.8:                               ## @.str.8
	.asciz	"Failed to reset HCA, aborting.\n"

	.comm	_EACCES,4,2                     ## @EACCES
	.comm	_pf_loading,4,2                 ## @pf_loading
	.comm	_MLX4_CMD_CLEANUP_VHCR,4,2      ## @MLX4_CMD_CLEANUP_VHCR
L_.str.9:                               ## @.str.9
	.asciz	"Failed to init VHCR command interface, aborting\n"

	.comm	_num_vfs_argc,4,2               ## @num_vfs_argc
L_.str.10:                              ## @.str.10
	.asciz	"Error: Trying to configure VFs on port 2, but HCA has only %d physical ports\n"

L_.str.11:                              ## @.str.11
	.asciz	"Failed to init master mfunc interface, aborting.\n"

	.comm	_MAX_MSIX,4,2                   ## @MAX_MSIX
	.comm	_MLX4_FLAG_MSI_X,4,2            ## @MLX4_FLAG_MSI_X
	.comm	_EOPNOTSUPP,4,2                 ## @EOPNOTSUPP
L_.str.12:                              ## @.str.12
	.asciz	"INTx is not supported in multi-function mode, aborting\n"

	.comm	_EBUSY,4,2                      ## @EBUSY
L_.str.13:                              ## @.str.13
	.asciz	" Failed to arm comm channel eq: %x\n"

	.comm	_RES_TR_FREE_STRUCTS_ONLY,4,2   ## @RES_TR_FREE_STRUCTS_ONLY
	.no_dead_strip	_mlx4_load_one
.subsections_via_symbols

	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.section	__TEXT,__literal8,8byte_literals
	.p2align	3                               ; -- Begin function mlx4_load_one
lCPI0_0:
	.long	2                               ; 0x2
	.long	1                               ; 0x1
lCPI0_1:
	.long	1                               ; 0x1
	.long	2                               ; 0x2
	.section	__TEXT,__text,regular,pure_instructions
	.p2align	2
_mlx4_load_one:                         ; @mlx4_load_one
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #112
	.cfi_def_cfa_offset 112
	stp	x28, x27, [sp, #16]             ; 16-byte Folded Spill
	stp	x26, x25, [sp, #32]             ; 16-byte Folded Spill
	stp	x24, x23, [sp, #48]             ; 16-byte Folded Spill
	stp	x22, x21, [sp, #64]             ; 16-byte Folded Spill
	stp	x20, x19, [sp, #80]             ; 16-byte Folded Spill
	stp	x29, x30, [sp, #96]             ; 16-byte Folded Spill
	add	x29, sp, #96
	.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
	.cfi_offset w25, -72
	.cfi_offset w26, -80
	.cfi_offset w27, -88
	.cfi_offset w28, -96
	mov	x20, x5
	mov	x19, x4
	mov	x25, x3
	mov	x26, x2
	mov	x22, x1
	mov	x21, x0
	add	x0, x4, #120
	bl	_INIT_LIST_HEAD
	add	x0, x19, #116
	bl	_spin_lock_init
	add	x0, x19, #112
	bl	_mutex_init
	add	x0, x19, #108
	bl	_mutex_init
	add	x0, x19, #104
	bl	_INIT_LIST_HEAD
	add	x0, x19, #100
	bl	_mutex_init
	add	x0, x19, #96
	bl	_spin_lock_init
	add	x0, x19, #92
	bl	_INIT_LIST_HEAD
	add	x0, x19, #88
	bl	_mutex_init
	ldr	w8, [x21, #4]
	str	w8, [x19, #44]
	mov	x0, x21
	bl	_dev_to_node
	str	w0, [x19, #40]
Lloh0:
	adrp	x8, _MLX4_PCI_DEV_IS_VF@GOTPAGE
Lloh1:
	ldr	x8, [x8, _MLX4_PCI_DEV_IS_VF@GOTPAGEOFF]
Lloh2:
	ldr	w8, [x8]
Lloh3:
	adrp	x27, _MLX4_FLAG_SRIOV@GOTPAGE
Lloh4:
	ldr	x27, [x27, _MLX4_FLAG_SRIOV@GOTPAGEOFF]
	tst	w8, w22
	b.eq	LBB0_5
; %bb.1:
Lloh5:
	adrp	x1, l_.str@PAGE
Lloh6:
	add	x1, x1, l_.str@PAGEOFF
	mov	x0, x19
	bl	_mlx4_warn
	mov	w23, #0
Lloh7:
	adrp	x8, _MLX4_FLAG_SLAVE@GOTPAGE
Lloh8:
	ldr	x8, [x8, _MLX4_FLAG_SLAVE@GOTPAGEOFF]
Lloh9:
	ldr	w8, [x8]
	ldr	w9, [x19]
	orr	w8, w9, w8
	str	w8, [x19]
LBB0_2:
Lloh10:
	adrp	x8, _MLX4_DEVICE_STATE_UP@GOTPAGE
Lloh11:
	ldr	x8, [x8, _MLX4_DEVICE_STATE_UP@GOTPAGEOFF]
Lloh12:
	ldr	w8, [x8]
	ldr	x9, [x19, #16]
	str	w8, [x9, #20]
	mov	x0, x19
	bl	_mlx4_cmd_init
	cbz	w0, LBB0_8
; %bb.3:
	mov	x24, x0
	mov	x22, #0
LBB0_4:
Lloh13:
	adrp	x1, l_.str.3@PAGE
Lloh14:
	add	x1, x1, l_.str.3@PAGEOFF
	mov	x0, x19
	bl	_mlx4_err
	b	LBB0_124
LBB0_5:
	mov	x0, x19
	bl	_mlx4_get_ownership
	cbz	w0, LBB0_38
; %bb.6:
	mov	x24, x0
	tbnz	w0, #31, LBB0_133
; %bb.7:
Lloh15:
	adrp	x1, l_.str.1@PAGE
Lloh16:
	add	x1, x1, l_.str.1@PAGEOFF
	mov	x0, x19
	bl	_mlx4_warn
Lloh17:
	adrp	x8, _EINVAL@GOTPAGE
Lloh18:
	ldr	x8, [x8, _EINVAL@GOTPAGEOFF]
Lloh19:
	ldr	w8, [x8]
	neg	w24, w8
	b	LBB0_133
LBB0_8:
	mov	x28, x27
	str	w20, [sp, #12]                  ; 4-byte Folded Spill
	mov	x22, #0
Lloh20:
	adrp	x20, _EACCES@GOTPAGE
Lloh21:
	ldr	x20, [x20, _EACCES@GOTPAGEOFF]
Lloh22:
	adrp	x27, _MLX4_FLAG_MASTER@GOTPAGE
Lloh23:
	ldr	x27, [x27, _MLX4_FLAG_MASTER@GOTPAGEOFF]
LBB0_9:                                 ; =>This Inner Loop Header: Depth=1
	mov	x0, x19
	bl	_mlx4_is_mfunc
	cbz	x0, LBB0_13
; %bb.10:                               ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	bl	_mlx4_is_master
	cbz	x0, LBB0_12
; %bb.11:                               ;   in Loop: Header=BB0_9 Depth=1
Lloh24:
	adrp	x8, _MLX4_MAX_NUM_SLAVES@GOTPAGE
Lloh25:
	ldr	x8, [x8, _MLX4_MAX_NUM_SLAVES@GOTPAGEOFF]
Lloh26:
	ldr	x8, [x8]
	str	x8, [x19, #32]
	b	LBB0_13
LBB0_12:                                ;   in Loop: Header=BB0_9 Depth=1
	str	xzr, [x19, #32]
	mov	x0, x19
	bl	_mlx4_multi_func_init
	cbnz	w0, LBB0_54
LBB0_13:                                ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	bl	_mlx4_init_fw
	cbnz	w0, LBB0_44
; %bb.14:                               ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	bl	_mlx4_is_master
	cbz	x0, LBB0_22
; %bb.15:                               ;   in Loop: Header=BB0_9 Depth=1
	cbz	x22, LBB0_18
; %bb.16:                               ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x22
	mov	w1, #0
	mov	w2, #12
	bl	_memset
	mov	x0, x19
	mov	x1, x22
	bl	_mlx4_QUERY_DEV_CAP
	cbnz	w0, LBB0_51
; %bb.17:                               ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	mov	x1, x22
	mov	x2, x25
	bl	_mlx4_check_dev_cap
	cbz	x0, LBB0_22
	b	LBB0_52
LBB0_18:                                ;   in Loop: Header=BB0_9 Depth=1
Lloh27:
	adrp	x8, _GFP_KERNEL@GOTPAGE
Lloh28:
	ldr	x8, [x8, _GFP_KERNEL@GOTPAGEOFF]
Lloh29:
	ldr	w1, [x8]
	mov	w0, #12
	bl	_kzalloc
	mov	x22, x0
	cbz	x0, LBB0_55
; %bb.19:                               ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	mov	x1, x22
	bl	_mlx4_QUERY_DEV_CAP
	cbnz	w0, LBB0_51
; %bb.20:                               ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	mov	x1, x22
	mov	x2, x25
	bl	_mlx4_check_dev_cap
	cbnz	x0, LBB0_52
; %bb.21:                               ;   in Loop: Header=BB0_9 Depth=1
	ldr	w8, [x22]
Lloh30:
	adrp	x9, _MLX4_DEV_CAP_FLAG2_SYS_EQS@GOTPAGE
Lloh31:
	ldr	x9, [x9, _MLX4_DEV_CAP_FLAG2_SYS_EQS@GOTPAGEOFF]
Lloh32:
	ldr	w9, [x9]
	tst	w9, w8
	b.eq	LBB0_35
LBB0_22:                                ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	bl	_mlx4_init_hca
	cbz	w0, LBB0_46
; %bb.23:                               ;   in Loop: Header=BB0_9 Depth=1
	mov	x24, x0
	ldr	w8, [x20]
	cmn	w0, w8
	b.ne	LBB0_56
; %bb.24:                               ;   in Loop: Header=BB0_9 Depth=1
Lloh33:
	adrp	x8, _MLX4_CMD_CLEANUP_ALL@GOTPAGE
Lloh34:
	ldr	x8, [x8, _MLX4_CMD_CLEANUP_ALL@GOTPAGEOFF]
Lloh35:
	ldr	w1, [x8]
	mov	x0, x19
	bl	_mlx4_cmd_cleanup
	ldr	w8, [x19]
	ldr	w9, [x28]
	tst	w9, w8
	b.eq	LBB0_31
; %bb.25:                               ;   in Loop: Header=BB0_9 Depth=1
	cbnz	w23, LBB0_27
; %bb.26:                               ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x21
	bl	_pci_disable_sriov
LBB0_27:                                ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	bl	_mlx4_is_master
	ldr	w8, [sp, #12]                   ; 4-byte Folded Reload
	cbnz	w8, LBB0_30
; %bb.28:                               ;   in Loop: Header=BB0_9 Depth=1
	cbz	x0, LBB0_30
; %bb.29:                               ;   in Loop: Header=BB0_9 Depth=1
Lloh36:
	adrp	x0, _pf_loading@GOTPAGE
Lloh37:
	ldr	x0, [x0, _pf_loading@GOTPAGEOFF]
	bl	_atomic_dec
LBB0_30:                                ;   in Loop: Header=BB0_9 Depth=1
	ldr	w8, [x28]
	ldr	w9, [x19]
	bic	w8, w9, w8
	str	w8, [x19]
LBB0_31:                                ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	bl	_mlx4_is_slave
	cbnz	x0, LBB0_33
; %bb.32:                               ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	bl	_mlx4_free_ownership
LBB0_33:                                ;   in Loop: Header=BB0_9 Depth=1
Lloh38:
	adrp	x8, _MLX4_FLAG_SLAVE@GOTPAGE
Lloh39:
	ldr	x8, [x8, _MLX4_FLAG_SLAVE@GOTPAGEOFF]
Lloh40:
	ldr	w8, [x8]
	ldr	w9, [x19]
	orr	w8, w9, w8
	str	w8, [x19]
	ldr	w9, [x27]
	bic	w8, w8, w9
	str	w8, [x19]
LBB0_34:                                ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	bl	_mlx4_cmd_init
	cbz	w0, LBB0_9
	b	LBB0_45
LBB0_35:                                ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	mov	x1, x21
	mov	x2, x26
	mov	x3, x23
	ldr	w4, [sp, #12]                   ; 4-byte Folded Reload
	bl	_mlx4_enable_sriov
	mov	x24, x0
	mov	x0, x19
	bl	_mlx4_close_fw
Lloh41:
	adrp	x8, _MLX4_CMD_CLEANUP_ALL@GOTPAGE
Lloh42:
	ldr	x8, [x8, _MLX4_CMD_CLEANUP_ALL@GOTPAGEOFF]
Lloh43:
	ldr	w1, [x8]
	mov	x0, x19
	bl	_mlx4_cmd_cleanup
	str	w24, [x19]
	mov	x0, x24
	bl	_SRIOV_VALID_STATE
	cbz	w0, LBB0_87
; %bb.36:                               ;   in Loop: Header=BB0_9 Depth=1
	mov	x0, x19
	bl	_mlx4_reset
	cbz	w0, LBB0_34
; %bb.37:
	mov	x24, x0
Lloh44:
	adrp	x1, l_.str.8@PAGE
Lloh45:
	add	x1, x1, l_.str.8@PAGEOFF
	mov	x0, x19
	bl	_mlx4_err
	b	LBB0_88
LBB0_38:
	add	x0, x19, #84
	mov	w1, #0
	bl	_atomic_set
	add	x0, x19, #80
Lloh46:
	adrp	x8, _mlx4_opreq_action@GOTPAGE
Lloh47:
	ldr	x8, [x8, _mlx4_opreq_action@GOTPAGEOFF]
Lloh48:
	ldr	w1, [x8]
	bl	_INIT_WORK
	mov	x0, x19
	bl	_mlx4_reset
	cbz	w0, LBB0_40
; %bb.39:
	mov	x24, x0
Lloh49:
	adrp	x1, l_.str.2@PAGE
Lloh50:
	add	x1, x1, l_.str.2@PAGEOFF
	mov	x0, x19
	bl	_mlx4_err
	mov	x22, #0
	mov	w23, #0
	b	LBB0_124
LBB0_40:
	cbz	w26, LBB0_53
; %bb.41:
Lloh51:
	adrp	x8, _MLX4_FLAG_MASTER@GOTPAGE
Lloh52:
	ldr	x8, [x8, _MLX4_FLAG_MASTER@GOTPAGEOFF]
Lloh53:
	ldr	w8, [x8]
	str	w8, [x19]
	mov	x0, x21
	bl	_pci_num_vf
	mov	x23, x0
	cbz	w0, LBB0_43
; %bb.42:
	ldr	w8, [x27]
	ldr	w9, [x19]
	orr	w8, w9, w8
	str	w8, [x19]
LBB0_43:
	ldr	x8, [x19, #16]
	str	w26, [x8]
	b	LBB0_2
LBB0_44:
	mov	x24, x0
Lloh54:
	adrp	x1, l_.str.5@PAGE
Lloh55:
	add	x1, x1, l_.str.5@PAGEOFF
	mov	x0, x19
	bl	_mlx4_err
	ldr	w20, [sp, #12]                  ; 4-byte Folded Reload
	mov	x27, x28
	b	LBB0_121
LBB0_45:
	mov	x24, x0
	ldr	w20, [sp, #12]                  ; 4-byte Folded Reload
	mov	x27, x28
	b	LBB0_4
LBB0_46:
	mov	x0, x19
	bl	_mlx4_is_master
	ldr	w20, [sp, #12]                  ; 4-byte Folded Reload
	cbz	x0, LBB0_60
; %bb.47:
	ldr	w8, [x22]
Lloh56:
	adrp	x9, _MLX4_DEV_CAP_FLAG2_SYS_EQS@GOTPAGE
Lloh57:
	ldr	x9, [x9, _MLX4_DEV_CAP_FLAG2_SYS_EQS@GOTPAGEOFF]
Lloh58:
	ldr	w9, [x9]
	tst	w9, w8
	b.eq	LBB0_60
; %bb.48:
	mov	x0, x19
	mov	x1, x21
	mov	x2, x26
	mov	x3, x23
	mov	x4, x20
	bl	_mlx4_enable_sriov
	mov	x24, x0
	ldr	w8, [x19]
	eor	w8, w8, w0
	ldr	w9, [x27]
Lloh59:
	adrp	x10, _MLX4_FLAG_SLAVE@GOTPAGE
Lloh60:
	ldr	x10, [x10, _MLX4_FLAG_SLAVE@GOTPAGEOFF]
Lloh61:
	ldr	w10, [x10]
	orr	w9, w10, w9
	tst	w9, w8
	b.eq	LBB0_57
; %bb.49:
Lloh62:
	adrp	x8, _MLX4_CMD_CLEANUP_VHCR@GOTPAGE
Lloh63:
	ldr	x8, [x8, _MLX4_CMD_CLEANUP_VHCR@GOTPAGEOFF]
Lloh64:
	ldr	w1, [x8]
	mov	x0, x19
	bl	_mlx4_cmd_cleanup
	str	w24, [x19]
	mov	x0, x19
	bl	_mlx4_cmd_init
	cbz	w0, LBB0_58
; %bb.50:
	mov	x24, x0
	mov	x27, x28
Lloh65:
	adrp	x1, l_.str.9@PAGE
Lloh66:
	add	x1, x1, l_.str.9@PAGEOFF
	b	LBB0_74
LBB0_51:
	mov	x24, x0
Lloh67:
	adrp	x1, l_.str.6@PAGE
Lloh68:
	add	x1, x1, l_.str.6@PAGEOFF
	mov	x0, x19
	bl	_mlx4_err
	b	LBB0_56
LBB0_52:
	mov	w24, #0
	b	LBB0_56
LBB0_53:
	mov	w23, #0
	b	LBB0_2
LBB0_54:
	mov	x24, x0
Lloh69:
	adrp	x1, l_.str.4@PAGE
Lloh70:
	add	x1, x1, l_.str.4@PAGEOFF
	mov	x0, x19
	bl	_mlx4_err
	ldr	w20, [sp, #12]                  ; 4-byte Folded Reload
	mov	x27, x28
	b	LBB0_123
LBB0_55:
Lloh71:
	adrp	x8, _ENOMEM@GOTPAGE
Lloh72:
	ldr	x8, [x8, _ENOMEM@GOTPAGEOFF]
Lloh73:
	ldr	w8, [x8]
	neg	w24, w8
LBB0_56:
	ldr	w20, [sp, #12]                  ; 4-byte Folded Reload
	mov	x27, x28
	b	LBB0_120
LBB0_57:
	str	w24, [x19]
	b	LBB0_59
LBB0_58:
	ldr	w24, [x19]
LBB0_59:
	mov	x0, x24
	bl	_SRIOV_VALID_STATE
	cbz	w0, LBB0_89
LBB0_60:
	mov	x0, x19
	bl	_mlx4_is_slave
	cbnz	x0, LBB0_62
; %bb.61:
	ldr	x8, [x19, #16]
	ldr	w0, [x8, #16]
	bl	_pcie_print_link_status
LBB0_62:
	mov	x0, x19
	bl	_mlx4_is_master
	mov	x27, x28
	cbz	x0, LBB0_75
; %bb.63:
	ldr	w8, [x19, #24]
	cmp	w8, #1
	b.gt	LBB0_66
; %bb.64:
Lloh74:
	adrp	x9, _num_vfs_argc@GOTPAGE
Lloh75:
	ldr	x9, [x9, _num_vfs_argc@GOTPAGEOFF]
Lloh76:
	ldr	w9, [x9]
	cmp	w9, #2
	b.lt	LBB0_66
; %bb.65:
Lloh77:
	adrp	x9, _EINVAL@GOTPAGE
Lloh78:
	ldr	x9, [x9, _EINVAL@GOTPAGEOFF]
Lloh79:
	ldr	w9, [x9]
	neg	w24, w9
	str	x8, [sp]
Lloh80:
	adrp	x1, l_.str.10@PAGE
Lloh81:
	add	x1, x1, l_.str.10@PAGEOFF
	b	LBB0_74
LBB0_66:
	ldr	x8, [x19, #16]
	ldr	x0, [x8, #8]
	mov	x1, x25
	mov	w2, #8
	bl	_memcpy
	ldr	x8, [x19, #16]
	ldr	x8, [x8, #8]
	ldr	w9, [x8]
	cbz	w9, LBB0_69
; %bb.67:
	mov	w9, #0
	ldr	x10, [x19, #8]
	add	x10, x10, #4
	movi.2s	v0, #1
LBB0_68:                                ; =>This Inner Loop Header: Depth=1
	str	d0, [x10], #12
	ldr	w11, [x8]
	add	w9, w9, #1
	cmp	w11, w9
	b.hi	LBB0_68
LBB0_69:
	ldr	w10, [x8, #4]
	cbz	w10, LBB0_72
; %bb.70:
	mov	w10, #0
	ldr	x11, [x19, #8]
	mov	w12, #12
Lloh82:
	adrp	x13, lCPI0_0@PAGE
Lloh83:
	ldr	d0, [x13, lCPI0_0@PAGEOFF]
LBB0_71:                                ; =>This Inner Loop Header: Depth=1
	add	w13, w9, w10
	umaddl	x13, w13, w12, x11
	stur	d0, [x13, #4]
	add	w10, w10, #1
	ldr	w13, [x8, #4]
	cmp	w10, w13
	b.lo	LBB0_71
LBB0_72:
	mov	x0, x19
	bl	_mlx4_multi_func_init
	cbz	w0, LBB0_75
; %bb.73:
	mov	x24, x0
Lloh84:
	adrp	x1, l_.str.11@PAGE
Lloh85:
	add	x1, x1, l_.str.11@PAGEOFF
LBB0_74:
	mov	x0, x19
	bl	_mlx4_err
	b	LBB0_119
LBB0_75:
	mov	x0, x19
	bl	_mlx4_alloc_eq_table
	mov	x24, x0
	cbnz	w0, LBB0_115
; %bb.76:
	add	x24, x19, #72
	ldr	w0, [x19, #76]
Lloh86:
	adrp	x8, _MAX_MSIX@GOTPAGE
Lloh87:
	ldr	x8, [x8, _MAX_MSIX@GOTPAGEOFF]
Lloh88:
	ldr	w1, [x8]
	bl	_bitmap_zero
	mov	x0, x24
	bl	_mutex_init
	mov	x0, x19
	bl	_mlx4_enable_msi_x
	mov	x0, x19
	bl	_mlx4_is_mfunc
Lloh89:
	adrp	x26, _MLX4_FLAG_MSI_X@GOTPAGE
Lloh90:
	ldr	x26, [x26, _MLX4_FLAG_MSI_X@GOTPAGEOFF]
	cbz	x0, LBB0_78
; %bb.77:
	ldr	w8, [x19]
	ldr	w9, [x26]
	tst	w9, w8
	b.eq	LBB0_91
LBB0_78:
	mov	x0, x19
	bl	_mlx4_is_slave
	cbz	x0, LBB0_90
LBB0_79:
	mov	x0, x19
	bl	_mlx4_init_quotas
	mov	x0, x19
	bl	_mlx4_setup_hca
	mov	x24, x0
Lloh91:
	adrp	x8, _EBUSY@GOTPAGE
Lloh92:
	ldr	x8, [x8, _EBUSY@GOTPAGEOFF]
Lloh93:
	ldr	w8, [x8]
	cmn	w0, w8
	b.ne	LBB0_83
; %bb.80:
	ldr	w8, [x19]
	ldr	w9, [x26]
	tst	w9, w8
	b.eq	LBB0_83
; %bb.81:
	mov	x0, x19
	bl	_mlx4_is_mfunc
	cbnz	x0, LBB0_83
; %bb.82:
	ldr	w8, [x26]
	ldr	w9, [x19]
	bic	w8, w9, w8
	str	w8, [x19]
	mov	w8, #1
	str	w8, [x19, #28]
	mov	x0, x21
	bl	_pci_disable_msix
	mov	x0, x19
	bl	_mlx4_setup_hca
	mov	x24, x0
LBB0_83:
	cbnz	w24, LBB0_110
; %bb.84:
	mov	x0, x19
	bl	_mlx4_is_master
	cbz	x0, LBB0_92
; %bb.85:
	mov	x0, x19
	bl	_mlx4_ARM_COMM_CHANNEL
	cbz	w0, LBB0_92
; %bb.86:
	mov	x24, x0
	str	x24, [sp]
Lloh94:
	adrp	x1, l_.str.13@PAGE
Lloh95:
	add	x1, x1, l_.str.13@PAGEOFF
	mov	x0, x19
	bl	_mlx4_err
	b	LBB0_110
LBB0_87:
Lloh96:
	adrp	x1, l_.str.7@PAGE
Lloh97:
	add	x1, x1, l_.str.7@PAGEOFF
	mov	x0, x19
	bl	_mlx4_err
	mov	w24, #0
LBB0_88:
	ldr	w20, [sp, #12]                  ; 4-byte Folded Reload
	mov	x27, x28
	b	LBB0_124
LBB0_89:
Lloh98:
	adrp	x1, l_.str.7@PAGE
Lloh99:
	add	x1, x1, l_.str.7@PAGEOFF
	mov	x0, x19
	bl	_mlx4_err
	mov	w24, #0
	mov	x27, x28
	b	LBB0_119
LBB0_90:
	mov	x0, x19
	bl	_mlx4_init_steering
	mov	x24, x0
	cbnz	w0, LBB0_112
	b	LBB0_79
LBB0_91:
Lloh100:
	adrp	x8, _EOPNOTSUPP@GOTPAGE
Lloh101:
	ldr	x8, [x8, _EOPNOTSUPP@GOTPAGEOFF]
Lloh102:
	ldr	w8, [x8]
	neg	w24, w8
Lloh103:
	adrp	x1, l_.str.12@PAGE
Lloh104:
	add	x1, x1, l_.str.12@PAGEOFF
	mov	x0, x19
	bl	_mlx4_err
	b	LBB0_114
LBB0_92:
	ldr	w8, [x19, #24]
	cmp	w8, #1
	b.lt	LBB0_96
; %bb.93:
	mov	w25, #1
LBB0_94:                                ; =>This Inner Loop Header: Depth=1
	mov	x0, x19
	mov	x1, x25
	bl	_mlx4_init_port_info
	cbnz	w0, LBB0_103
; %bb.95:                               ;   in Loop: Header=BB0_94 Depth=1
	add	w20, w25, #1
	ldr	w8, [x19, #24]
	cmp	w25, w8
	mov	x25, x20
	b.lt	LBB0_94
	b	LBB0_97
LBB0_96:
	mov	w20, #1
LBB0_97:
Lloh105:
	adrp	x8, lCPI0_1@PAGE
Lloh106:
	ldr	d0, [x8, lCPI0_1@PAGEOFF]
	str	d0, [x19, #64]
	mov	x0, x19
	bl	_mlx4_register_device
	mov	x24, x0
	mov	x25, x20
	cbnz	w0, LBB0_104
; %bb.98:
	mov	x0, x19
	bl	_mlx4_request_modules
	mov	x0, x19
	bl	_mlx4_sense_init
	mov	x0, x19
	bl	_mlx4_start_sense
	str	xzr, [x19, #56]
	mov	x0, x19
	bl	_mlx4_is_master
	ldr	w8, [sp, #12]                   ; 4-byte Folded Reload
	cbz	x0, LBB0_102
; %bb.99:
	cbnz	w8, LBB0_102
; %bb.100:
	ldr	x8, [x19, #16]
	ldr	w8, [x8]
	cbz	w8, LBB0_102
; %bb.101:
Lloh107:
	adrp	x0, _pf_loading@GOTPAGE
Lloh108:
	ldr	x0, [x0, _pf_loading@GOTPAGEOFF]
	bl	_atomic_dec
LBB0_102:
	mov	x0, x22
	bl	_kfree
	mov	w24, #0
	b	LBB0_133
LBB0_103:
	mov	x24, x0
LBB0_104:
	cmp	w25, #2
	b.lt	LBB0_107
; %bb.105:
	mov	w8, w25
	add	x20, x8, #1
LBB0_106:                               ; =>This Inner Loop Header: Depth=1
	sub	w8, w20, #2
	ldr	x9, [x19, #48]
	add	x0, x9, w8, uxtw #2
	bl	_mlx4_cleanup_port_info
	sub	x20, x20, #1
	cmp	x20, #2
	b.hi	LBB0_106
LBB0_107:
	mov	x0, x19
	bl	_mlx4_cleanup_default_counters
	mov	x0, x19
	bl	_mlx4_is_slave
	cbnz	x0, LBB0_109
; %bb.108:
	mov	x0, x19
	bl	_mlx4_cleanup_counters_table
LBB0_109:
	mov	x0, x19
	bl	_mlx4_cleanup_qp_table
	mov	x0, x19
	bl	_mlx4_cleanup_srq_table
	mov	x0, x19
	bl	_mlx4_cleanup_cq_table
	mov	x0, x19
	bl	_mlx4_cmd_use_polling
	mov	x0, x19
	bl	_mlx4_cleanup_eq_table
	mov	x0, x19
	bl	_mlx4_cleanup_mcg_table
	mov	x0, x19
	bl	_mlx4_cleanup_mr_table
	mov	x0, x19
	bl	_mlx4_cleanup_xrcd_table
	mov	x0, x19
	bl	_mlx4_cleanup_pd_table
	mov	x0, x19
	bl	_mlx4_cleanup_uar_table
	ldr	w20, [sp, #12]                  ; 4-byte Folded Reload
LBB0_110:
	mov	x0, x19
	bl	_mlx4_is_slave
	cbnz	x0, LBB0_112
; %bb.111:
	mov	x0, x19
	bl	_mlx4_clear_steering
LBB0_112:
	ldr	w8, [x19]
	ldr	w9, [x26]
	tst	w9, w8
	b.eq	LBB0_114
; %bb.113:
	mov	x0, x21
	bl	_pci_disable_msix
LBB0_114:
	mov	x0, x19
	bl	_mlx4_free_eq_table
LBB0_115:
	mov	x0, x19
	bl	_mlx4_is_master
	cbz	x0, LBB0_117
; %bb.116:
Lloh109:
	adrp	x8, _RES_TR_FREE_STRUCTS_ONLY@GOTPAGE
Lloh110:
	ldr	x8, [x8, _RES_TR_FREE_STRUCTS_ONLY@GOTPAGEOFF]
Lloh111:
	ldr	w1, [x8]
	mov	x0, x19
	bl	_mlx4_free_resource_tracker
	mov	x0, x19
	bl	_mlx4_multi_func_cleanup
LBB0_117:
	mov	x0, x19
	bl	_mlx4_is_slave
	cbz	x0, LBB0_119
; %bb.118:
	mov	x0, x19
	bl	_mlx4_slave_destroy_special_qp_cap
LBB0_119:
	mov	x0, x19
	bl	_mlx4_close_hca
LBB0_120:
	mov	x0, x19
	bl	_mlx4_close_fw
LBB0_121:
	mov	x0, x19
	bl	_mlx4_is_slave
	cbz	x0, LBB0_123
; %bb.122:
	mov	x0, x19
	bl	_mlx4_multi_func_cleanup
LBB0_123:
Lloh112:
	adrp	x8, _MLX4_CMD_CLEANUP_ALL@GOTPAGE
Lloh113:
	ldr	x8, [x8, _MLX4_CMD_CLEANUP_ALL@GOTPAGEOFF]
Lloh114:
	ldr	w1, [x8]
	mov	x0, x19
	bl	_mlx4_cmd_cleanup
LBB0_124:
	ldr	w8, [x19]
	ldr	w9, [x27]
	and	w8, w9, w8
	cmp	w8, #0
	ccmp	w23, #0, #0, ne
	b.ne	LBB0_126
; %bb.125:
	mov	x0, x21
	bl	_pci_disable_sriov
	ldr	w8, [x27]
	ldr	w9, [x19]
	bic	w8, w9, w8
	str	w8, [x19]
LBB0_126:
	mov	x0, x19
	bl	_mlx4_is_master
	cbz	x0, LBB0_130
; %bb.127:
	cbnz	w20, LBB0_130
; %bb.128:
	ldr	x8, [x19, #16]
	ldr	w8, [x8]
	cbz	w8, LBB0_130
; %bb.129:
Lloh115:
	adrp	x0, _pf_loading@GOTPAGE
Lloh116:
	ldr	x0, [x0, _pf_loading@GOTPAGEOFF]
	bl	_atomic_dec
LBB0_130:
	ldr	x0, [x19, #8]
	bl	_kfree
	mov	x0, x19
	bl	_mlx4_is_slave
	cbnz	x0, LBB0_132
; %bb.131:
	mov	x0, x19
	bl	_mlx4_free_ownership
LBB0_132:
	mov	x0, x22
	bl	_kfree
LBB0_133:
	mov	x0, x24
	ldp	x29, x30, [sp, #96]             ; 16-byte Folded Reload
	ldp	x20, x19, [sp, #80]             ; 16-byte Folded Reload
	ldp	x22, x21, [sp, #64]             ; 16-byte Folded Reload
	ldp	x24, x23, [sp, #48]             ; 16-byte Folded Reload
	ldp	x26, x25, [sp, #32]             ; 16-byte Folded Reload
	ldp	x28, x27, [sp, #16]             ; 16-byte Folded Reload
	add	sp, sp, #112
	ret
	.loh AdrpLdrGot	Lloh3, Lloh4
	.loh AdrpLdrGotLdr	Lloh0, Lloh1, Lloh2
	.loh AdrpLdrGotLdr	Lloh7, Lloh8, Lloh9
	.loh AdrpAdd	Lloh5, Lloh6
	.loh AdrpLdrGotLdr	Lloh10, Lloh11, Lloh12
	.loh AdrpAdd	Lloh13, Lloh14
	.loh AdrpLdrGotLdr	Lloh17, Lloh18, Lloh19
	.loh AdrpAdd	Lloh15, Lloh16
	.loh AdrpLdrGot	Lloh22, Lloh23
	.loh AdrpLdrGot	Lloh20, Lloh21
	.loh AdrpLdrGotLdr	Lloh24, Lloh25, Lloh26
	.loh AdrpLdrGotLdr	Lloh27, Lloh28, Lloh29
	.loh AdrpLdrGotLdr	Lloh30, Lloh31, Lloh32
	.loh AdrpLdrGotLdr	Lloh33, Lloh34, Lloh35
	.loh AdrpLdrGot	Lloh36, Lloh37
	.loh AdrpLdrGotLdr	Lloh38, Lloh39, Lloh40
	.loh AdrpLdrGotLdr	Lloh41, Lloh42, Lloh43
	.loh AdrpAdd	Lloh44, Lloh45
	.loh AdrpLdrGotLdr	Lloh46, Lloh47, Lloh48
	.loh AdrpAdd	Lloh49, Lloh50
	.loh AdrpLdrGotLdr	Lloh51, Lloh52, Lloh53
	.loh AdrpAdd	Lloh54, Lloh55
	.loh AdrpLdrGotLdr	Lloh56, Lloh57, Lloh58
	.loh AdrpLdrGotLdr	Lloh59, Lloh60, Lloh61
	.loh AdrpLdrGotLdr	Lloh62, Lloh63, Lloh64
	.loh AdrpAdd	Lloh65, Lloh66
	.loh AdrpAdd	Lloh67, Lloh68
	.loh AdrpAdd	Lloh69, Lloh70
	.loh AdrpLdrGotLdr	Lloh71, Lloh72, Lloh73
	.loh AdrpLdrGotLdr	Lloh74, Lloh75, Lloh76
	.loh AdrpAdd	Lloh80, Lloh81
	.loh AdrpLdrGotLdr	Lloh77, Lloh78, Lloh79
	.loh AdrpLdr	Lloh82, Lloh83
	.loh AdrpAdd	Lloh84, Lloh85
	.loh AdrpLdrGot	Lloh89, Lloh90
	.loh AdrpLdrGotLdr	Lloh86, Lloh87, Lloh88
	.loh AdrpLdrGotLdr	Lloh91, Lloh92, Lloh93
	.loh AdrpAdd	Lloh94, Lloh95
	.loh AdrpAdd	Lloh96, Lloh97
	.loh AdrpAdd	Lloh98, Lloh99
	.loh AdrpAdd	Lloh103, Lloh104
	.loh AdrpLdrGotLdr	Lloh100, Lloh101, Lloh102
	.loh AdrpLdr	Lloh105, Lloh106
	.loh AdrpLdrGot	Lloh107, Lloh108
	.loh AdrpLdrGotLdr	Lloh109, Lloh110, Lloh111
	.loh AdrpLdrGotLdr	Lloh112, Lloh113, Lloh114
	.loh AdrpLdrGot	Lloh115, Lloh116
	.cfi_endproc
                                        ; -- End function
	.comm	_MLX4_PCI_DEV_IS_VF,4,2         ; @MLX4_PCI_DEV_IS_VF
	.section	__TEXT,__cstring,cstring_literals
l_.str:                                 ; @.str
	.asciz	"Detected virtual function - running in slave mode\n"

	.comm	_MLX4_FLAG_SLAVE,4,2            ; @MLX4_FLAG_SLAVE
l_.str.1:                               ; @.str.1
	.asciz	"Multiple PFs not yet supported - Skipping PF\n"

	.comm	_EINVAL,4,2                     ; @EINVAL
	.comm	_mlx4_opreq_action,4,2          ; @mlx4_opreq_action
l_.str.2:                               ; @.str.2
	.asciz	"Failed to reset HCA, aborting\n"

	.comm	_MLX4_FLAG_MASTER,4,2           ; @MLX4_FLAG_MASTER
	.comm	_MLX4_FLAG_SRIOV,4,2            ; @MLX4_FLAG_SRIOV
	.comm	_MLX4_DEVICE_STATE_UP,4,2       ; @MLX4_DEVICE_STATE_UP
l_.str.3:                               ; @.str.3
	.asciz	"Failed to init command interface, aborting\n"

	.comm	_MLX4_MAX_NUM_SLAVES,8,3        ; @MLX4_MAX_NUM_SLAVES
l_.str.4:                               ; @.str.4
	.asciz	"Failed to init slave mfunc interface, aborting\n"

l_.str.5:                               ; @.str.5
	.asciz	"Failed to init fw, aborting.\n"

	.comm	_GFP_KERNEL,4,2                 ; @GFP_KERNEL
	.comm	_ENOMEM,4,2                     ; @ENOMEM
l_.str.6:                               ; @.str.6
	.asciz	"QUERY_DEV_CAP command failed, aborting.\n"

	.comm	_MLX4_DEV_CAP_FLAG2_SYS_EQS,4,2 ; @MLX4_DEV_CAP_FLAG2_SYS_EQS
	.comm	_MLX4_CMD_CLEANUP_ALL,4,2       ; @MLX4_CMD_CLEANUP_ALL
l_.str.7:                               ; @.str.7
	.asciz	"Invalid SRIOV state\n"

l_.str.8:                               ; @.str.8
	.asciz	"Failed to reset HCA, aborting.\n"

	.comm	_EACCES,4,2                     ; @EACCES
	.comm	_pf_loading,4,2                 ; @pf_loading
	.comm	_MLX4_CMD_CLEANUP_VHCR,4,2      ; @MLX4_CMD_CLEANUP_VHCR
l_.str.9:                               ; @.str.9
	.asciz	"Failed to init VHCR command interface, aborting\n"

	.comm	_num_vfs_argc,4,2               ; @num_vfs_argc
l_.str.10:                              ; @.str.10
	.asciz	"Error: Trying to configure VFs on port 2, but HCA has only %d physical ports\n"

l_.str.11:                              ; @.str.11
	.asciz	"Failed to init master mfunc interface, aborting.\n"

	.comm	_MAX_MSIX,4,2                   ; @MAX_MSIX
	.comm	_MLX4_FLAG_MSI_X,4,2            ; @MLX4_FLAG_MSI_X
	.comm	_EOPNOTSUPP,4,2                 ; @EOPNOTSUPP
l_.str.12:                              ; @.str.12
	.asciz	"INTx is not supported in multi-function mode, aborting\n"

	.comm	_EBUSY,4,2                      ; @EBUSY
l_.str.13:                              ; @.str.13
	.asciz	" Failed to arm comm channel eq: %x\n"

	.comm	_RES_TR_FREE_STRUCTS_ONLY,4,2   ; @RES_TR_FREE_STRUCTS_ONLY
	.no_dead_strip	_mlx4_load_one
.subsections_via_symbols
