	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.p2align	4, 0x90                         ## -- Begin function sbridge_register_mci
_sbridge_register_mci:                  ## @sbridge_register_mci
	.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	$56, %rsp
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	movl	%esi, %r15d
	movq	%rdi, %r14
	movq	___stack_chk_guard@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, -48(%rbp)
	movq	24(%rdi), %rax
	movq	(%rax), %r13
	movq	_EDAC_MC_LAYER_CHANNEL@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, -72(%rbp)
	cmpl	$129, %esi
	movq	_MAX_DIMMS@GOTPCREL(%rip), %rax
	movl	$1, %ecx
	cmovnel	(%rax), %ecx
	movq	_NUM_CHANNELS@GOTPCREL(%rip), %rax
	cmoveq	_KNL_MAX_CHANNELS@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, -80(%rbp)
	movl	$0, -76(%rbp)
	movq	_EDAC_MC_LAYER_SLOT@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, -60(%rbp)
	movl	%ecx, -68(%rbp)
	movl	$1, -64(%rbp)
	movl	16(%rdi), %ebx
	leaq	-80(%rbp), %r12
	movq	%r12, %rdi
	callq	_ARRAY_SIZE
	movl	%ebx, %edi
	movq	%rax, %rsi
	movq	%r12, %rdx
	movl	$136, %ecx
	callq	_edac_mc_alloc
	movq	%rax, %r12
	xorl	%edi, %edi
	testq	%rax, %rax
	sete	%dil
	callq	_unlikely
	testq	%rax, %rax
	je	LBB0_2
## %bb.1:
	movq	_ENOMEM@GOTPCREL(%rip), %rax
	xorl	%ebx, %ebx
	subl	(%rax), %ebx
	jmp	LBB0_28
LBB0_2:
	leaq	L_.str(%rip), %rsi
	xorl	%edi, %edi
	movq	%r12, %rdx
	movq	%r13, -88(%rbp)                 ## 8-byte Spill
	movq	%r13, %rcx
	xorl	%eax, %eax
	callq	_edac_dbg
	movq	56(%r12), %r13
	movq	%r13, %rdi
	xorl	%esi, %esi
	movl	$136, %edx
	callq	_memset
	movq	%r14, (%r13)
	movq	%r12, (%r14)
	cmpl	$129, %r15d
	jne	LBB0_3
## %bb.4:
	movq	_MEM_FLAG_DDR4@GOTPCREL(%rip), %rax
	jmp	LBB0_5
LBB0_3:
	movq	_MEM_FLAG_DDR3@GOTPCREL(%rip), %rax
LBB0_5:
	movl	(%rax), %eax
	movl	%eax, 48(%r12)
	movq	_EDAC_FLAG_NONE@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 40(%r12)
	movq	%rax, 32(%r12)
	movq	_EDAC_MOD_STR@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 28(%r12)
	movq	-88(%rbp), %rdi                 ## 8-byte Reload
	callq	_pci_name
	movl	%eax, 24(%r12)
	movq	$0, 16(%r12)
	movl	%r15d, 8(%r13)
	addl	$-128, %r15d
	cmpl	$4, %r15d
	ja	LBB0_7
## %bb.6:
	leaq	LJTI0_0(%rip), %rax
	movslq	(%rax,%r15,4), %rcx
	addq	%rax, %rcx
	jmpq	*%rcx
LBB0_10:
	movq	_SB_RANK_CFG_A@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 128(%r13)
	movq	_sbridge_get_tolm@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 120(%r13)
	movq	_sbridge_get_tohm@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 112(%r13)
	movq	_sbridge_dram_rule@GOTPCREL(%rip), %rax
	movq	(%rax), %rdi
	movq	%rdi, 104(%r13)
	movq	_get_memory_type@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 96(%r13)
	movq	_get_node_id@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 88(%r13)
	movq	_sbridge_get_ha@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 80(%r13)
	movq	_rir_limit@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 72(%r13)
	movq	_sad_limit@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 64(%r13)
	movq	_interleave_mode@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 56(%r13)
	movq	_dram_attr@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 48(%r13)
	callq	_ARRAY_SIZE
	movq	%rax, 40(%r13)
	movq	_sbridge_interleave_list@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 32(%r13)
	movq	_sbridge_interleave_pkg@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 24(%r13)
	movq	_sbridge_get_width@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 16(%r13)
	movq	%r12, %rdi
	movq	%r14, %rsi
	callq	_sbridge_mci_bind_devs
	movl	%eax, %ebx
	movl	%eax, %edi
	shrl	$31, %edi
	callq	_unlikely
	testq	%rax, %rax
	jne	LBB0_27
## %bb.11:
	movq	%r12, %rdi
	callq	_get_source_id
	movq	_GFP_KERNEL@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movq	(%r13), %rax
	movl	8(%rax), %ecx
	movl	12(%rax), %edx
	leaq	L_.str.2(%rip), %rsi
	jmp	LBB0_18
LBB0_8:
	movq	_IB_RANK_CFG_A@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	movl	%eax, 128(%r13)
	movq	_ibridge_get_tolm@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 120(%r13)
	movq	_ibridge_get_tohm@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 112(%r13)
	movq	_ibridge_dram_rule@GOTPCREL(%rip), %rax
	movq	(%rax), %rdi
	movq	%rdi, 104(%r13)
	movq	_get_memory_type@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 96(%r13)
	movq	_get_node_id@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 88(%r13)
	movq	_ibridge_get_ha@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 80(%r13)
	movq	_rir_limit@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 72(%r13)
	movq	_sad_limit@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 64(%r13)
	movq	_interleave_mode@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 56(%r13)
	movq	_dram_attr@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 48(%r13)
	callq	_ARRAY_SIZE
	movq	%rax, 40(%r13)
	movq	_ibridge_interleave_list@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 32(%r13)
	movq	_ibridge_interleave_pkg@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 24(%r13)
	movq	_ibridge_get_width@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 16(%r13)
	movq	%r12, %rdi
	movq	%r14, %rsi
	callq	_ibridge_mci_bind_devs
	movl	%eax, %ebx
	movl	%eax, %edi
	shrl	$31, %edi
	callq	_unlikely
	testq	%rax, %rax
	jne	LBB0_27
## %bb.9:
	movq	%r12, %rdi
	callq	_get_source_id
	movq	_GFP_KERNEL@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movq	(%r13), %rax
	movl	8(%rax), %ecx
	movl	12(%rax), %edx
	leaq	L_.str.1(%rip), %rsi
	jmp	LBB0_18
LBB0_14:
	movq	_haswell_get_tolm@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 120(%r13)
	movq	_haswell_get_tohm@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 112(%r13)
	movq	_ibridge_dram_rule@GOTPCREL(%rip), %rax
	movq	(%rax), %rdi
	movq	%rdi, 104(%r13)
	movq	_haswell_get_memory_type@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 96(%r13)
	movq	_haswell_get_node_id@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 88(%r13)
	movq	_ibridge_get_ha@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 80(%r13)
	movq	_haswell_rir_limit@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 72(%r13)
	movq	_sad_limit@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 64(%r13)
	movq	_interleave_mode@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 56(%r13)
	movq	_dram_attr@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 48(%r13)
	callq	_ARRAY_SIZE
	movq	%rax, 40(%r13)
	movq	_ibridge_interleave_list@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 32(%r13)
	movq	_ibridge_interleave_pkg@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 24(%r13)
	movq	_broadwell_get_width@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 16(%r13)
	movq	%r12, %rdi
	movq	%r14, %rsi
	callq	_broadwell_mci_bind_devs
	movl	%eax, %ebx
	movl	%eax, %edi
	shrl	$31, %edi
	callq	_unlikely
	testq	%rax, %rax
	jne	LBB0_27
## %bb.15:
	movq	%r12, %rdi
	callq	_get_source_id
	movq	_GFP_KERNEL@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movq	(%r13), %rax
	movl	8(%rax), %ecx
	movl	12(%rax), %edx
	leaq	L_.str.4(%rip), %rsi
	jmp	LBB0_18
LBB0_7:
	movq	(%r12), %rax
	jmp	LBB0_19
LBB0_16:
	movq	_knl_get_tolm@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 120(%r13)
	movq	_knl_get_tohm@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 112(%r13)
	movq	_knl_dram_rule@GOTPCREL(%rip), %rax
	movq	(%rax), %rdi
	movq	%rdi, 104(%r13)
	movq	_knl_get_memory_type@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 96(%r13)
	movq	_knl_get_node_id@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 88(%r13)
	movq	_knl_get_ha@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 80(%r13)
	movq	$0, 72(%r13)
	movq	_knl_sad_limit@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 64(%r13)
	movq	_knl_interleave_mode@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 56(%r13)
	movq	_dram_attr_knl@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 48(%r13)
	callq	_ARRAY_SIZE
	movq	%rax, 40(%r13)
	movq	_knl_interleave_list@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 32(%r13)
	movq	_ibridge_interleave_pkg@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 24(%r13)
	movq	_knl_get_width@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 16(%r13)
	movq	%r12, %rdi
	movq	%r14, %rsi
	callq	_knl_mci_bind_devs
	movl	%eax, %ebx
	movl	%eax, %edi
	shrl	$31, %edi
	callq	_unlikely
	testq	%rax, %rax
	jne	LBB0_27
## %bb.17:
	movq	%r12, %rdi
	callq	_get_source_id
	movq	_GFP_KERNEL@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movq	(%r13), %rax
	movl	8(%rax), %ecx
	movl	12(%rax), %edx
	leaq	L_.str.5(%rip), %rsi
	jmp	LBB0_18
LBB0_12:
	movq	_haswell_get_tolm@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 120(%r13)
	movq	_haswell_get_tohm@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 112(%r13)
	movq	_ibridge_dram_rule@GOTPCREL(%rip), %rax
	movq	(%rax), %rdi
	movq	%rdi, 104(%r13)
	movq	_haswell_get_memory_type@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 96(%r13)
	movq	_haswell_get_node_id@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 88(%r13)
	movq	_ibridge_get_ha@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 80(%r13)
	movq	_haswell_rir_limit@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 72(%r13)
	movq	_sad_limit@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 64(%r13)
	movq	_interleave_mode@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 56(%r13)
	movq	_dram_attr@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 48(%r13)
	callq	_ARRAY_SIZE
	movq	%rax, 40(%r13)
	movq	_ibridge_interleave_list@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 32(%r13)
	movq	_ibridge_interleave_pkg@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 24(%r13)
	movq	_ibridge_get_width@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, 16(%r13)
	movq	%r12, %rdi
	movq	%r14, %rsi
	callq	_haswell_mci_bind_devs
	movl	%eax, %ebx
	movl	%eax, %edi
	shrl	$31, %edi
	callq	_unlikely
	testq	%rax, %rax
	jne	LBB0_27
## %bb.13:
	movq	%r12, %rdi
	callq	_get_source_id
	movq	_GFP_KERNEL@GOTPCREL(%rip), %rax
	movl	(%rax), %edi
	movq	(%r13), %rax
	movl	8(%rax), %ecx
	movl	12(%rax), %edx
	leaq	L_.str.3(%rip), %rsi
LBB0_18:
	callq	_kasprintf
	movq	%rax, (%r12)
LBB0_19:
	testq	%rax, %rax
	movq	-88(%rbp), %r15                 ## 8-byte Reload
	je	LBB0_20
## %bb.21:
	movq	%r12, %rdi
	callq	_get_dimm_config
	testl	%eax, %eax
	js	LBB0_22
## %bb.23:
	movq	%r12, %rdi
	callq	_get_memory_layout
	movq	%r15, 8(%r12)
	movq	%r12, %rdi
	callq	_edac_mc_add_mc
	movl	%eax, %edi
	callq	_unlikely
	testq	%rax, %rax
	je	LBB0_24
## %bb.25:
	leaq	L_.str.7(%rip), %rsi
	xorl	%ebx, %ebx
	xorl	%edi, %edi
	xorl	%eax, %eax
	callq	_edac_dbg
	movq	_EINVAL@GOTPCREL(%rip), %rax
	subl	(%rax), %ebx
	jmp	LBB0_26
LBB0_20:
	movq	_ENOMEM@GOTPCREL(%rip), %rax
	xorl	%ebx, %ebx
	subl	(%rax), %ebx
	jmp	LBB0_27
LBB0_22:
	movl	%eax, %ebx
	leaq	L_.str.6(%rip), %rsi
	xorl	%edi, %edi
	xorl	%eax, %eax
	callq	_edac_dbg
LBB0_26:
	movq	(%r12), %rdi
	callq	_kfree
LBB0_27:
	movq	%r12, %rdi
	callq	_edac_mc_free
	movq	$0, (%r14)
LBB0_28:
	movq	___stack_chk_guard@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	cmpq	-48(%rbp), %rax
	jne	LBB0_30
## %bb.29:
	movl	%ebx, %eax
	addq	$56, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
LBB0_24:
	xorl	%ebx, %ebx
	jmp	LBB0_28
LBB0_30:
	callq	___stack_chk_fail
	.cfi_endproc
	.p2align	2, 0x90
	.data_region jt32
.set L0_0_set_10, LBB0_10-LJTI0_0
.set L0_0_set_16, LBB0_16-LJTI0_0
.set L0_0_set_8, LBB0_8-LJTI0_0
.set L0_0_set_12, LBB0_12-LJTI0_0
.set L0_0_set_14, LBB0_14-LJTI0_0
LJTI0_0:
	.long	L0_0_set_10
	.long	L0_0_set_16
	.long	L0_0_set_8
	.long	L0_0_set_12
	.long	L0_0_set_14
	.end_data_region
                                        ## -- End function
	.comm	_EDAC_MC_LAYER_CHANNEL,4,2      ## @EDAC_MC_LAYER_CHANNEL
	.comm	_KNL_MAX_CHANNELS,4,2           ## @KNL_MAX_CHANNELS
	.comm	_NUM_CHANNELS,4,2               ## @NUM_CHANNELS
	.comm	_EDAC_MC_LAYER_SLOT,4,2         ## @EDAC_MC_LAYER_SLOT
	.comm	_MAX_DIMMS,4,2                  ## @MAX_DIMMS
	.comm	_ENOMEM,4,2                     ## @ENOMEM
	.section	__TEXT,__cstring,cstring_literals
L_.str:                                 ## @.str
	.asciz	"MC: mci = %p, dev = %p\n"

	.comm	_MEM_FLAG_DDR4,4,2              ## @MEM_FLAG_DDR4
	.comm	_MEM_FLAG_DDR3,4,2              ## @MEM_FLAG_DDR3
	.comm	_EDAC_FLAG_NONE,8,3             ## @EDAC_FLAG_NONE
	.comm	_EDAC_MOD_STR,4,2               ## @EDAC_MOD_STR
	.comm	_IB_RANK_CFG_A,4,2              ## @IB_RANK_CFG_A
	.comm	_ibridge_get_tolm,8,3           ## @ibridge_get_tolm
	.comm	_ibridge_get_tohm,8,3           ## @ibridge_get_tohm
	.comm	_ibridge_dram_rule,8,3          ## @ibridge_dram_rule
	.comm	_get_memory_type,8,3            ## @get_memory_type
	.comm	_get_node_id,8,3                ## @get_node_id
	.comm	_ibridge_get_ha,8,3             ## @ibridge_get_ha
	.comm	_rir_limit,8,3                  ## @rir_limit
	.comm	_sad_limit,8,3                  ## @sad_limit
	.comm	_interleave_mode,8,3            ## @interleave_mode
	.comm	_dram_attr,8,3                  ## @dram_attr
	.comm	_ibridge_interleave_list,8,3    ## @ibridge_interleave_list
	.comm	_ibridge_interleave_pkg,8,3     ## @ibridge_interleave_pkg
	.comm	_ibridge_get_width,8,3          ## @ibridge_get_width
	.comm	_GFP_KERNEL,4,2                 ## @GFP_KERNEL
L_.str.1:                               ## @.str.1
	.asciz	"Ivy Bridge SrcID#%d_Ha#%d"

	.comm	_SB_RANK_CFG_A,4,2              ## @SB_RANK_CFG_A
	.comm	_sbridge_get_tolm,8,3           ## @sbridge_get_tolm
	.comm	_sbridge_get_tohm,8,3           ## @sbridge_get_tohm
	.comm	_sbridge_dram_rule,8,3          ## @sbridge_dram_rule
	.comm	_sbridge_get_ha,8,3             ## @sbridge_get_ha
	.comm	_sbridge_interleave_list,8,3    ## @sbridge_interleave_list
	.comm	_sbridge_interleave_pkg,8,3     ## @sbridge_interleave_pkg
	.comm	_sbridge_get_width,8,3          ## @sbridge_get_width
L_.str.2:                               ## @.str.2
	.asciz	"Sandy Bridge SrcID#%d_Ha#%d"

	.comm	_haswell_get_tolm,8,3           ## @haswell_get_tolm
	.comm	_haswell_get_tohm,8,3           ## @haswell_get_tohm
	.comm	_haswell_get_memory_type,8,3    ## @haswell_get_memory_type
	.comm	_haswell_get_node_id,8,3        ## @haswell_get_node_id
	.comm	_haswell_rir_limit,8,3          ## @haswell_rir_limit
L_.str.3:                               ## @.str.3
	.asciz	"Haswell SrcID#%d_Ha#%d"

	.comm	_broadwell_get_width,8,3        ## @broadwell_get_width
L_.str.4:                               ## @.str.4
	.asciz	"Broadwell SrcID#%d_Ha#%d"

	.comm	_knl_get_tolm,8,3               ## @knl_get_tolm
	.comm	_knl_get_tohm,8,3               ## @knl_get_tohm
	.comm	_knl_dram_rule,8,3              ## @knl_dram_rule
	.comm	_knl_get_memory_type,8,3        ## @knl_get_memory_type
	.comm	_knl_get_node_id,8,3            ## @knl_get_node_id
	.comm	_knl_get_ha,8,3                 ## @knl_get_ha
	.comm	_knl_sad_limit,8,3              ## @knl_sad_limit
	.comm	_knl_interleave_mode,8,3        ## @knl_interleave_mode
	.comm	_dram_attr_knl,8,3              ## @dram_attr_knl
	.comm	_knl_interleave_list,8,3        ## @knl_interleave_list
	.comm	_knl_get_width,8,3              ## @knl_get_width
L_.str.5:                               ## @.str.5
	.asciz	"Knights Landing SrcID#%d_Ha#%d"

L_.str.6:                               ## @.str.6
	.asciz	"MC: failed to get_dimm_config()\n"

L_.str.7:                               ## @.str.7
	.asciz	"MC: failed edac_mc_add_mc()\n"

	.comm	_EINVAL,4,2                     ## @EINVAL
	.no_dead_strip	_sbridge_register_mci
.subsections_via_symbols

	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.p2align	2                               ; -- Begin function sbridge_register_mci
_sbridge_register_mci:                  ; @sbridge_register_mci
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #112
	.cfi_def_cfa_offset 112
	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
	mov	x23, x1
	mov	x19, x0
Lloh0:
	adrp	x8, ___stack_chk_guard@GOTPAGE
Lloh1:
	ldr	x8, [x8, ___stack_chk_guard@GOTPAGEOFF]
Lloh2:
	ldr	x8, [x8]
	str	x8, [sp, #40]
	ldr	x8, [x0, #24]
Lloh3:
	adrp	x9, _EDAC_MC_LAYER_CHANNEL@GOTPAGE
Lloh4:
	ldr	x9, [x9, _EDAC_MC_LAYER_CHANNEL@GOTPAGEOFF]
	ldr	x21, [x8]
Lloh5:
	ldr	w8, [x9]
Lloh6:
	adrp	x9, _KNL_MAX_CHANNELS@GOTPAGE
Lloh7:
	ldr	x9, [x9, _KNL_MAX_CHANNELS@GOTPAGEOFF]
Lloh8:
	adrp	x10, _NUM_CHANNELS@GOTPAGE
Lloh9:
	ldr	x10, [x10, _NUM_CHANNELS@GOTPAGEOFF]
	str	w8, [sp, #24]
	cmp	w1, #129
	csel	x8, x9, x10, eq
	ldr	w8, [x8]
	stp	w8, wzr, [sp, #16]
Lloh10:
	adrp	x8, _EDAC_MC_LAYER_SLOT@GOTPAGE
Lloh11:
	ldr	x8, [x8, _EDAC_MC_LAYER_SLOT@GOTPAGEOFF]
Lloh12:
	ldr	w8, [x8]
	str	w8, [sp, #36]
Lloh13:
	adrp	x8, _MAX_DIMMS@GOTPAGE
Lloh14:
	ldr	x8, [x8, _MAX_DIMMS@GOTPAGEOFF]
Lloh15:
	ldr	w8, [x8]
	csinc	w8, w8, wzr, ne
	mov	w9, #1
	stp	w8, w9, [sp, #28]
	ldr	w20, [x0, #16]
	add	x0, sp, #16
	bl	_ARRAY_SIZE
	mov	x1, x0
	add	x2, sp, #16
	mov	x0, x20
	mov	w3, #136
	bl	_edac_mc_alloc
	mov	x20, x0
	cmp	x0, #0
	cset	w0, eq
	bl	_unlikely
	cbz	x0, LBB0_2
; %bb.1:
Lloh16:
	adrp	x8, _ENOMEM@GOTPAGE
Lloh17:
	ldr	x8, [x8, _ENOMEM@GOTPAGEOFF]
Lloh18:
	ldr	w8, [x8]
	neg	w23, w8
	b	LBB0_23
LBB0_2:
	stp	x20, x21, [sp]
Lloh19:
	adrp	x1, l_.str@PAGE
Lloh20:
	add	x1, x1, l_.str@PAGEOFF
	bl	_edac_dbg
	ldr	x22, [x20, #56]
	mov	x0, x22
	mov	w1, #0
	mov	w2, #136
	bl	_memset
	str	x19, [x22]
	str	x20, [x19]
Lloh21:
	adrp	x8, _MEM_FLAG_DDR4@GOTPAGE
Lloh22:
	ldr	x8, [x8, _MEM_FLAG_DDR4@GOTPAGEOFF]
Lloh23:
	adrp	x9, _MEM_FLAG_DDR3@GOTPAGE
Lloh24:
	ldr	x9, [x9, _MEM_FLAG_DDR3@GOTPAGEOFF]
	cmp	w23, #129
	csel	x8, x8, x9, eq
	ldr	w8, [x8]
	str	w8, [x20, #48]
Lloh25:
	adrp	x8, _EDAC_FLAG_NONE@GOTPAGE
Lloh26:
	ldr	x8, [x8, _EDAC_FLAG_NONE@GOTPAGEOFF]
Lloh27:
	ldr	x8, [x8]
	stp	x8, x8, [x20, #32]
Lloh28:
	adrp	x8, _EDAC_MOD_STR@GOTPAGE
Lloh29:
	ldr	x8, [x8, _EDAC_MOD_STR@GOTPAGEOFF]
Lloh30:
	ldr	w8, [x8]
	str	w8, [x20, #28]
	mov	x0, x21
	bl	_pci_name
	str	w0, [x20, #24]
	str	xzr, [x20, #16]
	str	w23, [x22, #8]
	sub	w8, w23, #128
	cmp	w8, #4
	b.hi	LBB0_10
; %bb.3:
Lloh31:
	adrp	x9, lJTI0_0@PAGE
Lloh32:
	add	x9, x9, lJTI0_0@PAGEOFF
	adr	x10, LBB0_4
	ldrh	w11, [x9, x8, lsl #1]
	add	x10, x10, x11, lsl #2
	br	x10
LBB0_4:
Lloh33:
	adrp	x8, _SB_RANK_CFG_A@GOTPAGE
Lloh34:
	ldr	x8, [x8, _SB_RANK_CFG_A@GOTPAGEOFF]
Lloh35:
	ldr	w8, [x8]
	str	w8, [x22, #128]
Lloh36:
	adrp	x8, _sbridge_get_tolm@GOTPAGE
Lloh37:
	ldr	x8, [x8, _sbridge_get_tolm@GOTPAGEOFF]
Lloh38:
	adrp	x9, _sbridge_get_tohm@GOTPAGE
Lloh39:
	ldr	x9, [x9, _sbridge_get_tohm@GOTPAGEOFF]
Lloh40:
	ldr	x8, [x8]
Lloh41:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #112]
Lloh42:
	adrp	x8, _sbridge_dram_rule@GOTPAGE
Lloh43:
	ldr	x8, [x8, _sbridge_dram_rule@GOTPAGEOFF]
Lloh44:
	ldr	x0, [x8]
Lloh45:
	adrp	x8, _get_memory_type@GOTPAGE
Lloh46:
	ldr	x8, [x8, _get_memory_type@GOTPAGEOFF]
Lloh47:
	ldr	x8, [x8]
	stp	x8, x0, [x22, #96]
Lloh48:
	adrp	x8, _get_node_id@GOTPAGE
Lloh49:
	ldr	x8, [x8, _get_node_id@GOTPAGEOFF]
Lloh50:
	ldr	x8, [x8]
Lloh51:
	adrp	x9, _sbridge_get_ha@GOTPAGE
Lloh52:
	ldr	x9, [x9, _sbridge_get_ha@GOTPAGEOFF]
Lloh53:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #80]
Lloh54:
	adrp	x8, _rir_limit@GOTPAGE
Lloh55:
	ldr	x8, [x8, _rir_limit@GOTPAGEOFF]
Lloh56:
	adrp	x9, _sad_limit@GOTPAGE
Lloh57:
	ldr	x9, [x9, _sad_limit@GOTPAGEOFF]
Lloh58:
	ldr	x8, [x8]
Lloh59:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #64]
Lloh60:
	adrp	x8, _interleave_mode@GOTPAGE
Lloh61:
	ldr	x8, [x8, _interleave_mode@GOTPAGEOFF]
Lloh62:
	ldr	x8, [x8]
Lloh63:
	adrp	x9, _dram_attr@GOTPAGE
Lloh64:
	ldr	x9, [x9, _dram_attr@GOTPAGEOFF]
Lloh65:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #48]
	bl	_ARRAY_SIZE
Lloh66:
	adrp	x8, _sbridge_interleave_list@GOTPAGE
Lloh67:
	ldr	x8, [x8, _sbridge_interleave_list@GOTPAGEOFF]
Lloh68:
	ldr	x8, [x8]
	stp	x8, x0, [x22, #32]
Lloh69:
	adrp	x8, _sbridge_interleave_pkg@GOTPAGE
Lloh70:
	ldr	x8, [x8, _sbridge_interleave_pkg@GOTPAGEOFF]
Lloh71:
	ldr	x8, [x8]
Lloh72:
	adrp	x9, _sbridge_get_width@GOTPAGE
Lloh73:
	ldr	x9, [x9, _sbridge_get_width@GOTPAGEOFF]
Lloh74:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #16]
	mov	x0, x20
	mov	x1, x19
	bl	_sbridge_mci_bind_devs
	mov	x23, x0
	lsr	w0, w0, #31
	bl	_unlikely
	cbnz	x0, LBB0_22
; %bb.5:
	mov	x0, x20
	bl	_get_source_id
Lloh75:
	adrp	x8, _GFP_KERNEL@GOTPAGE
Lloh76:
	ldr	x8, [x8, _GFP_KERNEL@GOTPAGEOFF]
Lloh77:
	ldr	w0, [x8]
	ldr	x8, [x22]
	ldp	w3, w2, [x8, #8]
Lloh78:
	adrp	x1, l_.str.2@PAGE
Lloh79:
	add	x1, x1, l_.str.2@PAGEOFF
	b	LBB0_16
LBB0_6:
Lloh80:
	adrp	x8, _IB_RANK_CFG_A@GOTPAGE
Lloh81:
	ldr	x8, [x8, _IB_RANK_CFG_A@GOTPAGEOFF]
Lloh82:
	ldr	w8, [x8]
	str	w8, [x22, #128]
Lloh83:
	adrp	x8, _ibridge_get_tolm@GOTPAGE
Lloh84:
	ldr	x8, [x8, _ibridge_get_tolm@GOTPAGEOFF]
Lloh85:
	adrp	x9, _ibridge_get_tohm@GOTPAGE
Lloh86:
	ldr	x9, [x9, _ibridge_get_tohm@GOTPAGEOFF]
Lloh87:
	ldr	x8, [x8]
Lloh88:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #112]
Lloh89:
	adrp	x8, _ibridge_dram_rule@GOTPAGE
Lloh90:
	ldr	x8, [x8, _ibridge_dram_rule@GOTPAGEOFF]
Lloh91:
	ldr	x0, [x8]
Lloh92:
	adrp	x8, _get_memory_type@GOTPAGE
Lloh93:
	ldr	x8, [x8, _get_memory_type@GOTPAGEOFF]
Lloh94:
	ldr	x8, [x8]
	stp	x8, x0, [x22, #96]
Lloh95:
	adrp	x8, _get_node_id@GOTPAGE
Lloh96:
	ldr	x8, [x8, _get_node_id@GOTPAGEOFF]
Lloh97:
	ldr	x8, [x8]
Lloh98:
	adrp	x9, _ibridge_get_ha@GOTPAGE
Lloh99:
	ldr	x9, [x9, _ibridge_get_ha@GOTPAGEOFF]
Lloh100:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #80]
Lloh101:
	adrp	x8, _rir_limit@GOTPAGE
Lloh102:
	ldr	x8, [x8, _rir_limit@GOTPAGEOFF]
Lloh103:
	adrp	x9, _sad_limit@GOTPAGE
Lloh104:
	ldr	x9, [x9, _sad_limit@GOTPAGEOFF]
Lloh105:
	ldr	x8, [x8]
Lloh106:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #64]
Lloh107:
	adrp	x8, _interleave_mode@GOTPAGE
Lloh108:
	ldr	x8, [x8, _interleave_mode@GOTPAGEOFF]
Lloh109:
	ldr	x8, [x8]
Lloh110:
	adrp	x9, _dram_attr@GOTPAGE
Lloh111:
	ldr	x9, [x9, _dram_attr@GOTPAGEOFF]
Lloh112:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #48]
	bl	_ARRAY_SIZE
Lloh113:
	adrp	x8, _ibridge_interleave_list@GOTPAGE
Lloh114:
	ldr	x8, [x8, _ibridge_interleave_list@GOTPAGEOFF]
Lloh115:
	ldr	x8, [x8]
	stp	x8, x0, [x22, #32]
Lloh116:
	adrp	x8, _ibridge_interleave_pkg@GOTPAGE
Lloh117:
	ldr	x8, [x8, _ibridge_interleave_pkg@GOTPAGEOFF]
Lloh118:
	ldr	x8, [x8]
Lloh119:
	adrp	x9, _ibridge_get_width@GOTPAGE
Lloh120:
	ldr	x9, [x9, _ibridge_get_width@GOTPAGEOFF]
Lloh121:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #16]
	mov	x0, x20
	mov	x1, x19
	bl	_ibridge_mci_bind_devs
	mov	x23, x0
	lsr	w0, w0, #31
	bl	_unlikely
	cbnz	x0, LBB0_22
; %bb.7:
	mov	x0, x20
	bl	_get_source_id
Lloh122:
	adrp	x8, _GFP_KERNEL@GOTPAGE
Lloh123:
	ldr	x8, [x8, _GFP_KERNEL@GOTPAGEOFF]
Lloh124:
	ldr	w0, [x8]
	ldr	x8, [x22]
	ldp	w3, w2, [x8, #8]
Lloh125:
	adrp	x1, l_.str.1@PAGE
Lloh126:
	add	x1, x1, l_.str.1@PAGEOFF
	b	LBB0_16
LBB0_8:
Lloh127:
	adrp	x8, _haswell_get_tolm@GOTPAGE
Lloh128:
	ldr	x8, [x8, _haswell_get_tolm@GOTPAGEOFF]
Lloh129:
	adrp	x9, _haswell_get_tohm@GOTPAGE
Lloh130:
	ldr	x9, [x9, _haswell_get_tohm@GOTPAGEOFF]
Lloh131:
	ldr	x8, [x8]
Lloh132:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #112]
Lloh133:
	adrp	x8, _ibridge_dram_rule@GOTPAGE
Lloh134:
	ldr	x8, [x8, _ibridge_dram_rule@GOTPAGEOFF]
Lloh135:
	ldr	x0, [x8]
Lloh136:
	adrp	x8, _haswell_get_memory_type@GOTPAGE
Lloh137:
	ldr	x8, [x8, _haswell_get_memory_type@GOTPAGEOFF]
Lloh138:
	ldr	x8, [x8]
	stp	x8, x0, [x22, #96]
Lloh139:
	adrp	x8, _haswell_get_node_id@GOTPAGE
Lloh140:
	ldr	x8, [x8, _haswell_get_node_id@GOTPAGEOFF]
Lloh141:
	ldr	x8, [x8]
Lloh142:
	adrp	x9, _ibridge_get_ha@GOTPAGE
Lloh143:
	ldr	x9, [x9, _ibridge_get_ha@GOTPAGEOFF]
Lloh144:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #80]
Lloh145:
	adrp	x8, _haswell_rir_limit@GOTPAGE
Lloh146:
	ldr	x8, [x8, _haswell_rir_limit@GOTPAGEOFF]
Lloh147:
	adrp	x9, _sad_limit@GOTPAGE
Lloh148:
	ldr	x9, [x9, _sad_limit@GOTPAGEOFF]
Lloh149:
	ldr	x8, [x8]
Lloh150:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #64]
Lloh151:
	adrp	x8, _interleave_mode@GOTPAGE
Lloh152:
	ldr	x8, [x8, _interleave_mode@GOTPAGEOFF]
Lloh153:
	ldr	x8, [x8]
Lloh154:
	adrp	x9, _dram_attr@GOTPAGE
Lloh155:
	ldr	x9, [x9, _dram_attr@GOTPAGEOFF]
Lloh156:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #48]
	bl	_ARRAY_SIZE
Lloh157:
	adrp	x8, _ibridge_interleave_list@GOTPAGE
Lloh158:
	ldr	x8, [x8, _ibridge_interleave_list@GOTPAGEOFF]
Lloh159:
	ldr	x8, [x8]
	stp	x8, x0, [x22, #32]
Lloh160:
	adrp	x8, _ibridge_interleave_pkg@GOTPAGE
Lloh161:
	ldr	x8, [x8, _ibridge_interleave_pkg@GOTPAGEOFF]
Lloh162:
	ldr	x8, [x8]
Lloh163:
	adrp	x9, _broadwell_get_width@GOTPAGE
Lloh164:
	ldr	x9, [x9, _broadwell_get_width@GOTPAGEOFF]
Lloh165:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #16]
	mov	x0, x20
	mov	x1, x19
	bl	_broadwell_mci_bind_devs
	mov	x23, x0
	lsr	w0, w0, #31
	bl	_unlikely
	cbnz	x0, LBB0_22
; %bb.9:
	mov	x0, x20
	bl	_get_source_id
Lloh166:
	adrp	x8, _GFP_KERNEL@GOTPAGE
Lloh167:
	ldr	x8, [x8, _GFP_KERNEL@GOTPAGEOFF]
Lloh168:
	ldr	w0, [x8]
	ldr	x8, [x22]
	ldp	w3, w2, [x8, #8]
Lloh169:
	adrp	x1, l_.str.4@PAGE
Lloh170:
	add	x1, x1, l_.str.4@PAGEOFF
	b	LBB0_16
LBB0_10:
	ldr	x0, [x20]
	cbnz	x0, LBB0_17
LBB0_11:
Lloh171:
	adrp	x8, _ENOMEM@GOTPAGE
Lloh172:
	ldr	x8, [x8, _ENOMEM@GOTPAGEOFF]
Lloh173:
	ldr	w8, [x8]
	neg	w23, w8
	b	LBB0_22
LBB0_12:
Lloh174:
	adrp	x8, _knl_get_tolm@GOTPAGE
Lloh175:
	ldr	x8, [x8, _knl_get_tolm@GOTPAGEOFF]
Lloh176:
	ldr	x8, [x8]
Lloh177:
	adrp	x9, _knl_get_tohm@GOTPAGE
Lloh178:
	ldr	x9, [x9, _knl_get_tohm@GOTPAGEOFF]
Lloh179:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #112]
Lloh180:
	adrp	x8, _knl_dram_rule@GOTPAGE
Lloh181:
	ldr	x8, [x8, _knl_dram_rule@GOTPAGEOFF]
Lloh182:
	ldr	x0, [x8]
Lloh183:
	adrp	x8, _knl_get_memory_type@GOTPAGE
Lloh184:
	ldr	x8, [x8, _knl_get_memory_type@GOTPAGEOFF]
Lloh185:
	ldr	x8, [x8]
	stp	x8, x0, [x22, #96]
Lloh186:
	adrp	x8, _knl_get_node_id@GOTPAGE
Lloh187:
	ldr	x8, [x8, _knl_get_node_id@GOTPAGEOFF]
Lloh188:
	ldr	x8, [x8]
Lloh189:
	adrp	x9, _knl_get_ha@GOTPAGE
Lloh190:
	ldr	x9, [x9, _knl_get_ha@GOTPAGEOFF]
Lloh191:
	ldr	x9, [x9]
Lloh192:
	adrp	x10, _knl_sad_limit@GOTPAGE
Lloh193:
	ldr	x10, [x10, _knl_sad_limit@GOTPAGEOFF]
	stp	x9, x8, [x22, #80]
Lloh194:
	ldr	x8, [x10]
	stp	x8, xzr, [x22, #64]
Lloh195:
	adrp	x8, _knl_interleave_mode@GOTPAGE
Lloh196:
	ldr	x8, [x8, _knl_interleave_mode@GOTPAGEOFF]
Lloh197:
	ldr	x8, [x8]
Lloh198:
	adrp	x9, _dram_attr_knl@GOTPAGE
Lloh199:
	ldr	x9, [x9, _dram_attr_knl@GOTPAGEOFF]
Lloh200:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #48]
	bl	_ARRAY_SIZE
Lloh201:
	adrp	x8, _knl_interleave_list@GOTPAGE
Lloh202:
	ldr	x8, [x8, _knl_interleave_list@GOTPAGEOFF]
Lloh203:
	ldr	x8, [x8]
	stp	x8, x0, [x22, #32]
Lloh204:
	adrp	x8, _ibridge_interleave_pkg@GOTPAGE
Lloh205:
	ldr	x8, [x8, _ibridge_interleave_pkg@GOTPAGEOFF]
Lloh206:
	ldr	x8, [x8]
Lloh207:
	adrp	x9, _knl_get_width@GOTPAGE
Lloh208:
	ldr	x9, [x9, _knl_get_width@GOTPAGEOFF]
Lloh209:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #16]
	mov	x0, x20
	mov	x1, x19
	bl	_knl_mci_bind_devs
	mov	x23, x0
	lsr	w0, w0, #31
	bl	_unlikely
	cbnz	x0, LBB0_22
; %bb.13:
	mov	x0, x20
	bl	_get_source_id
Lloh210:
	adrp	x8, _GFP_KERNEL@GOTPAGE
Lloh211:
	ldr	x8, [x8, _GFP_KERNEL@GOTPAGEOFF]
Lloh212:
	ldr	w0, [x8]
	ldr	x8, [x22]
	ldp	w3, w2, [x8, #8]
Lloh213:
	adrp	x1, l_.str.5@PAGE
Lloh214:
	add	x1, x1, l_.str.5@PAGEOFF
	b	LBB0_16
LBB0_14:
Lloh215:
	adrp	x8, _haswell_get_tolm@GOTPAGE
Lloh216:
	ldr	x8, [x8, _haswell_get_tolm@GOTPAGEOFF]
Lloh217:
	adrp	x9, _haswell_get_tohm@GOTPAGE
Lloh218:
	ldr	x9, [x9, _haswell_get_tohm@GOTPAGEOFF]
Lloh219:
	ldr	x8, [x8]
Lloh220:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #112]
Lloh221:
	adrp	x8, _ibridge_dram_rule@GOTPAGE
Lloh222:
	ldr	x8, [x8, _ibridge_dram_rule@GOTPAGEOFF]
Lloh223:
	ldr	x0, [x8]
Lloh224:
	adrp	x8, _haswell_get_memory_type@GOTPAGE
Lloh225:
	ldr	x8, [x8, _haswell_get_memory_type@GOTPAGEOFF]
Lloh226:
	ldr	x8, [x8]
	stp	x8, x0, [x22, #96]
Lloh227:
	adrp	x8, _haswell_get_node_id@GOTPAGE
Lloh228:
	ldr	x8, [x8, _haswell_get_node_id@GOTPAGEOFF]
Lloh229:
	ldr	x8, [x8]
Lloh230:
	adrp	x9, _ibridge_get_ha@GOTPAGE
Lloh231:
	ldr	x9, [x9, _ibridge_get_ha@GOTPAGEOFF]
Lloh232:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #80]
Lloh233:
	adrp	x8, _haswell_rir_limit@GOTPAGE
Lloh234:
	ldr	x8, [x8, _haswell_rir_limit@GOTPAGEOFF]
Lloh235:
	adrp	x9, _sad_limit@GOTPAGE
Lloh236:
	ldr	x9, [x9, _sad_limit@GOTPAGEOFF]
Lloh237:
	ldr	x8, [x8]
Lloh238:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #64]
Lloh239:
	adrp	x8, _interleave_mode@GOTPAGE
Lloh240:
	ldr	x8, [x8, _interleave_mode@GOTPAGEOFF]
Lloh241:
	ldr	x8, [x8]
Lloh242:
	adrp	x9, _dram_attr@GOTPAGE
Lloh243:
	ldr	x9, [x9, _dram_attr@GOTPAGEOFF]
Lloh244:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #48]
	bl	_ARRAY_SIZE
Lloh245:
	adrp	x8, _ibridge_interleave_list@GOTPAGE
Lloh246:
	ldr	x8, [x8, _ibridge_interleave_list@GOTPAGEOFF]
Lloh247:
	ldr	x8, [x8]
	stp	x8, x0, [x22, #32]
Lloh248:
	adrp	x8, _ibridge_interleave_pkg@GOTPAGE
Lloh249:
	ldr	x8, [x8, _ibridge_interleave_pkg@GOTPAGEOFF]
Lloh250:
	ldr	x8, [x8]
Lloh251:
	adrp	x9, _ibridge_get_width@GOTPAGE
Lloh252:
	ldr	x9, [x9, _ibridge_get_width@GOTPAGEOFF]
Lloh253:
	ldr	x9, [x9]
	stp	x9, x8, [x22, #16]
	mov	x0, x20
	mov	x1, x19
	bl	_haswell_mci_bind_devs
	mov	x23, x0
	lsr	w0, w0, #31
	bl	_unlikely
	cbnz	x0, LBB0_22
; %bb.15:
	mov	x0, x20
	bl	_get_source_id
Lloh254:
	adrp	x8, _GFP_KERNEL@GOTPAGE
Lloh255:
	ldr	x8, [x8, _GFP_KERNEL@GOTPAGEOFF]
Lloh256:
	ldr	w0, [x8]
	ldr	x8, [x22]
	ldp	w3, w2, [x8, #8]
Lloh257:
	adrp	x1, l_.str.3@PAGE
Lloh258:
	add	x1, x1, l_.str.3@PAGEOFF
LBB0_16:
	bl	_kasprintf
	str	x0, [x20]
	cbz	x0, LBB0_11
LBB0_17:
	mov	x0, x20
	bl	_get_dimm_config
	tbnz	w0, #31, LBB0_20
; %bb.18:
	mov	x0, x20
	bl	_get_memory_layout
	str	x21, [x20, #8]
	mov	x0, x20
	bl	_edac_mc_add_mc
	bl	_unlikely
	cbz	x0, LBB0_25
; %bb.19:
Lloh259:
	adrp	x1, l_.str.7@PAGE
Lloh260:
	add	x1, x1, l_.str.7@PAGEOFF
	mov	w0, #0
	bl	_edac_dbg
Lloh261:
	adrp	x8, _EINVAL@GOTPAGE
Lloh262:
	ldr	x8, [x8, _EINVAL@GOTPAGEOFF]
Lloh263:
	ldr	w8, [x8]
	neg	w23, w8
	b	LBB0_21
LBB0_20:
	mov	x23, x0
Lloh264:
	adrp	x1, l_.str.6@PAGE
Lloh265:
	add	x1, x1, l_.str.6@PAGEOFF
	mov	w0, #0
	bl	_edac_dbg
LBB0_21:
	ldr	x0, [x20]
	bl	_kfree
LBB0_22:
	mov	x0, x20
	bl	_edac_mc_free
	str	xzr, [x19]
LBB0_23:
	ldr	x8, [sp, #40]
Lloh266:
	adrp	x9, ___stack_chk_guard@GOTPAGE
Lloh267:
	ldr	x9, [x9, ___stack_chk_guard@GOTPAGEOFF]
Lloh268:
	ldr	x9, [x9]
	cmp	x9, x8
	b.ne	LBB0_26
; %bb.24:
	mov	x0, x23
	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
	add	sp, sp, #112
	ret
LBB0_25:
	mov	w23, #0
	b	LBB0_23
LBB0_26:
	bl	___stack_chk_fail
	.loh AdrpLdrGotLdr	Lloh13, Lloh14, Lloh15
	.loh AdrpLdrGotLdr	Lloh10, Lloh11, Lloh12
	.loh AdrpLdrGot	Lloh8, Lloh9
	.loh AdrpLdrGot	Lloh6, Lloh7
	.loh AdrpLdrGotLdr	Lloh3, Lloh4, Lloh5
	.loh AdrpLdrGotLdr	Lloh0, Lloh1, Lloh2
	.loh AdrpLdrGotLdr	Lloh16, Lloh17, Lloh18
	.loh AdrpLdrGotLdr	Lloh28, Lloh29, Lloh30
	.loh AdrpLdrGotLdr	Lloh25, Lloh26, Lloh27
	.loh AdrpLdrGot	Lloh23, Lloh24
	.loh AdrpLdrGot	Lloh21, Lloh22
	.loh AdrpAdd	Lloh19, Lloh20
	.loh AdrpAdd	Lloh31, Lloh32
	.loh AdrpLdrGotLdr	Lloh72, Lloh73, Lloh74
	.loh AdrpLdrGotLdr	Lloh69, Lloh70, Lloh71
	.loh AdrpLdrGotLdr	Lloh66, Lloh67, Lloh68
	.loh AdrpLdrGotLdr	Lloh63, Lloh64, Lloh65
	.loh AdrpLdrGotLdr	Lloh60, Lloh61, Lloh62
	.loh AdrpLdrGotLdr	Lloh56, Lloh57, Lloh59
	.loh AdrpLdrGotLdr	Lloh54, Lloh55, Lloh58
	.loh AdrpLdrGotLdr	Lloh51, Lloh52, Lloh53
	.loh AdrpLdrGotLdr	Lloh48, Lloh49, Lloh50
	.loh AdrpLdrGotLdr	Lloh45, Lloh46, Lloh47
	.loh AdrpLdrGotLdr	Lloh42, Lloh43, Lloh44
	.loh AdrpLdrGotLdr	Lloh38, Lloh39, Lloh41
	.loh AdrpLdrGotLdr	Lloh36, Lloh37, Lloh40
	.loh AdrpLdrGotLdr	Lloh33, Lloh34, Lloh35
	.loh AdrpAdd	Lloh78, Lloh79
	.loh AdrpLdrGotLdr	Lloh75, Lloh76, Lloh77
	.loh AdrpLdrGotLdr	Lloh119, Lloh120, Lloh121
	.loh AdrpLdrGotLdr	Lloh116, Lloh117, Lloh118
	.loh AdrpLdrGotLdr	Lloh113, Lloh114, Lloh115
	.loh AdrpLdrGotLdr	Lloh110, Lloh111, Lloh112
	.loh AdrpLdrGotLdr	Lloh107, Lloh108, Lloh109
	.loh AdrpLdrGotLdr	Lloh103, Lloh104, Lloh106
	.loh AdrpLdrGotLdr	Lloh101, Lloh102, Lloh105
	.loh AdrpLdrGotLdr	Lloh98, Lloh99, Lloh100
	.loh AdrpLdrGotLdr	Lloh95, Lloh96, Lloh97
	.loh AdrpLdrGotLdr	Lloh92, Lloh93, Lloh94
	.loh AdrpLdrGotLdr	Lloh89, Lloh90, Lloh91
	.loh AdrpLdrGotLdr	Lloh85, Lloh86, Lloh88
	.loh AdrpLdrGotLdr	Lloh83, Lloh84, Lloh87
	.loh AdrpLdrGotLdr	Lloh80, Lloh81, Lloh82
	.loh AdrpAdd	Lloh125, Lloh126
	.loh AdrpLdrGotLdr	Lloh122, Lloh123, Lloh124
	.loh AdrpLdrGotLdr	Lloh163, Lloh164, Lloh165
	.loh AdrpLdrGotLdr	Lloh160, Lloh161, Lloh162
	.loh AdrpLdrGotLdr	Lloh157, Lloh158, Lloh159
	.loh AdrpLdrGotLdr	Lloh154, Lloh155, Lloh156
	.loh AdrpLdrGotLdr	Lloh151, Lloh152, Lloh153
	.loh AdrpLdrGotLdr	Lloh147, Lloh148, Lloh150
	.loh AdrpLdrGotLdr	Lloh145, Lloh146, Lloh149
	.loh AdrpLdrGotLdr	Lloh142, Lloh143, Lloh144
	.loh AdrpLdrGotLdr	Lloh139, Lloh140, Lloh141
	.loh AdrpLdrGotLdr	Lloh136, Lloh137, Lloh138
	.loh AdrpLdrGotLdr	Lloh133, Lloh134, Lloh135
	.loh AdrpLdrGotLdr	Lloh129, Lloh130, Lloh132
	.loh AdrpLdrGotLdr	Lloh127, Lloh128, Lloh131
	.loh AdrpAdd	Lloh169, Lloh170
	.loh AdrpLdrGotLdr	Lloh166, Lloh167, Lloh168
	.loh AdrpLdrGotLdr	Lloh171, Lloh172, Lloh173
	.loh AdrpLdrGotLdr	Lloh207, Lloh208, Lloh209
	.loh AdrpLdrGotLdr	Lloh204, Lloh205, Lloh206
	.loh AdrpLdrGotLdr	Lloh201, Lloh202, Lloh203
	.loh AdrpLdrGotLdr	Lloh198, Lloh199, Lloh200
	.loh AdrpLdrGotLdr	Lloh195, Lloh196, Lloh197
	.loh AdrpLdrGotLdr	Lloh192, Lloh193, Lloh194
	.loh AdrpLdrGotLdr	Lloh189, Lloh190, Lloh191
	.loh AdrpLdrGotLdr	Lloh186, Lloh187, Lloh188
	.loh AdrpLdrGotLdr	Lloh183, Lloh184, Lloh185
	.loh AdrpLdrGotLdr	Lloh180, Lloh181, Lloh182
	.loh AdrpLdrGotLdr	Lloh177, Lloh178, Lloh179
	.loh AdrpLdrGotLdr	Lloh174, Lloh175, Lloh176
	.loh AdrpAdd	Lloh213, Lloh214
	.loh AdrpLdrGotLdr	Lloh210, Lloh211, Lloh212
	.loh AdrpLdrGotLdr	Lloh251, Lloh252, Lloh253
	.loh AdrpLdrGotLdr	Lloh248, Lloh249, Lloh250
	.loh AdrpLdrGotLdr	Lloh245, Lloh246, Lloh247
	.loh AdrpLdrGotLdr	Lloh242, Lloh243, Lloh244
	.loh AdrpLdrGotLdr	Lloh239, Lloh240, Lloh241
	.loh AdrpLdrGotLdr	Lloh235, Lloh236, Lloh238
	.loh AdrpLdrGotLdr	Lloh233, Lloh234, Lloh237
	.loh AdrpLdrGotLdr	Lloh230, Lloh231, Lloh232
	.loh AdrpLdrGotLdr	Lloh227, Lloh228, Lloh229
	.loh AdrpLdrGotLdr	Lloh224, Lloh225, Lloh226
	.loh AdrpLdrGotLdr	Lloh221, Lloh222, Lloh223
	.loh AdrpLdrGotLdr	Lloh217, Lloh218, Lloh220
	.loh AdrpLdrGotLdr	Lloh215, Lloh216, Lloh219
	.loh AdrpAdd	Lloh257, Lloh258
	.loh AdrpLdrGotLdr	Lloh254, Lloh255, Lloh256
	.loh AdrpLdrGotLdr	Lloh261, Lloh262, Lloh263
	.loh AdrpAdd	Lloh259, Lloh260
	.loh AdrpAdd	Lloh264, Lloh265
	.loh AdrpLdrGotLdr	Lloh266, Lloh267, Lloh268
	.cfi_endproc
	.section	__TEXT,__const
	.p2align	1
lJTI0_0:
	.short	(LBB0_4-LBB0_4)>>2
	.short	(LBB0_12-LBB0_4)>>2
	.short	(LBB0_6-LBB0_4)>>2
	.short	(LBB0_14-LBB0_4)>>2
	.short	(LBB0_8-LBB0_4)>>2
                                        ; -- End function
	.comm	_EDAC_MC_LAYER_CHANNEL,4,2      ; @EDAC_MC_LAYER_CHANNEL
	.comm	_KNL_MAX_CHANNELS,4,2           ; @KNL_MAX_CHANNELS
	.comm	_NUM_CHANNELS,4,2               ; @NUM_CHANNELS
	.comm	_EDAC_MC_LAYER_SLOT,4,2         ; @EDAC_MC_LAYER_SLOT
	.comm	_MAX_DIMMS,4,2                  ; @MAX_DIMMS
	.comm	_ENOMEM,4,2                     ; @ENOMEM
	.section	__TEXT,__cstring,cstring_literals
l_.str:                                 ; @.str
	.asciz	"MC: mci = %p, dev = %p\n"

	.comm	_MEM_FLAG_DDR4,4,2              ; @MEM_FLAG_DDR4
	.comm	_MEM_FLAG_DDR3,4,2              ; @MEM_FLAG_DDR3
	.comm	_EDAC_FLAG_NONE,8,3             ; @EDAC_FLAG_NONE
	.comm	_EDAC_MOD_STR,4,2               ; @EDAC_MOD_STR
	.comm	_IB_RANK_CFG_A,4,2              ; @IB_RANK_CFG_A
	.comm	_ibridge_get_tolm,8,3           ; @ibridge_get_tolm
	.comm	_ibridge_get_tohm,8,3           ; @ibridge_get_tohm
	.comm	_ibridge_dram_rule,8,3          ; @ibridge_dram_rule
	.comm	_get_memory_type,8,3            ; @get_memory_type
	.comm	_get_node_id,8,3                ; @get_node_id
	.comm	_ibridge_get_ha,8,3             ; @ibridge_get_ha
	.comm	_rir_limit,8,3                  ; @rir_limit
	.comm	_sad_limit,8,3                  ; @sad_limit
	.comm	_interleave_mode,8,3            ; @interleave_mode
	.comm	_dram_attr,8,3                  ; @dram_attr
	.comm	_ibridge_interleave_list,8,3    ; @ibridge_interleave_list
	.comm	_ibridge_interleave_pkg,8,3     ; @ibridge_interleave_pkg
	.comm	_ibridge_get_width,8,3          ; @ibridge_get_width
	.comm	_GFP_KERNEL,4,2                 ; @GFP_KERNEL
l_.str.1:                               ; @.str.1
	.asciz	"Ivy Bridge SrcID#%d_Ha#%d"

	.comm	_SB_RANK_CFG_A,4,2              ; @SB_RANK_CFG_A
	.comm	_sbridge_get_tolm,8,3           ; @sbridge_get_tolm
	.comm	_sbridge_get_tohm,8,3           ; @sbridge_get_tohm
	.comm	_sbridge_dram_rule,8,3          ; @sbridge_dram_rule
	.comm	_sbridge_get_ha,8,3             ; @sbridge_get_ha
	.comm	_sbridge_interleave_list,8,3    ; @sbridge_interleave_list
	.comm	_sbridge_interleave_pkg,8,3     ; @sbridge_interleave_pkg
	.comm	_sbridge_get_width,8,3          ; @sbridge_get_width
l_.str.2:                               ; @.str.2
	.asciz	"Sandy Bridge SrcID#%d_Ha#%d"

	.comm	_haswell_get_tolm,8,3           ; @haswell_get_tolm
	.comm	_haswell_get_tohm,8,3           ; @haswell_get_tohm
	.comm	_haswell_get_memory_type,8,3    ; @haswell_get_memory_type
	.comm	_haswell_get_node_id,8,3        ; @haswell_get_node_id
	.comm	_haswell_rir_limit,8,3          ; @haswell_rir_limit
l_.str.3:                               ; @.str.3
	.asciz	"Haswell SrcID#%d_Ha#%d"

	.comm	_broadwell_get_width,8,3        ; @broadwell_get_width
l_.str.4:                               ; @.str.4
	.asciz	"Broadwell SrcID#%d_Ha#%d"

	.comm	_knl_get_tolm,8,3               ; @knl_get_tolm
	.comm	_knl_get_tohm,8,3               ; @knl_get_tohm
	.comm	_knl_dram_rule,8,3              ; @knl_dram_rule
	.comm	_knl_get_memory_type,8,3        ; @knl_get_memory_type
	.comm	_knl_get_node_id,8,3            ; @knl_get_node_id
	.comm	_knl_get_ha,8,3                 ; @knl_get_ha
	.comm	_knl_sad_limit,8,3              ; @knl_sad_limit
	.comm	_knl_interleave_mode,8,3        ; @knl_interleave_mode
	.comm	_dram_attr_knl,8,3              ; @dram_attr_knl
	.comm	_knl_interleave_list,8,3        ; @knl_interleave_list
	.comm	_knl_get_width,8,3              ; @knl_get_width
l_.str.5:                               ; @.str.5
	.asciz	"Knights Landing SrcID#%d_Ha#%d"

l_.str.6:                               ; @.str.6
	.asciz	"MC: failed to get_dimm_config()\n"

l_.str.7:                               ; @.str.7
	.asciz	"MC: failed edac_mc_add_mc()\n"

	.comm	_EINVAL,4,2                     ; @EINVAL
	.no_dead_strip	_sbridge_register_mci
.subsections_via_symbols
