	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.globl	_tl_type_check                  ## -- Begin function tl_type_check
	.p2align	4, 0x90
_tl_type_check:                         ## @tl_type_check
	.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	___ok@GOTPCREL(%rip), %r14
	cmpq	$0, (%r14)
	je	LBB0_41
## %bb.1:
	movq	%rdi, %rbx
	movl	24(%rdi), %edi
	leaq	L_.str(%rip), %rsi
	callq	_strcmp
	testl	%eax, %eax
	je	LBB0_6
## %bb.2:
	movl	24(%rbx), %edi
	leaq	L_.str.1(%rip), %rsi
	callq	_strcmp
	testl	%eax, %eax
	je	LBB0_7
## %bb.3:
	movl	4(%rbx), %eax
	testl	%eax, %eax
	jle	LBB0_8
## %bb.4:
	movq	16(%rbx), %r10
	leaq	-1(%rax), %rcx
	movl	%eax, %r8d
	andl	$3, %r8d
	cmpq	$3, %rcx
	jae	LBB0_15
## %bb.5:
	xorl	%edi, %edi
	xorl	%esi, %esi
	jmp	LBB0_17
LBB0_6:
	movl	$1885708031, (%rbx)             ## imm = 0x70659EFF
	jmp	LBB0_41
LBB0_7:
	movl	$753727511, (%rbx)              ## imm = 0x2CECF817
	jmp	LBB0_41
LBB0_8:
	movq	_FLAG_EMPTY@GOTPCREL(%rip), %rcx
	movl	(%rcx), %ecx
	testl	%ecx, 8(%rbx)
	je	LBB0_38
## %bb.9:
	movl	$0, (%rbx)
LBB0_10:
	movl	8(%rbx), %ecx
	notl	%ecx
	testb	$24, %cl
	jne	LBB0_12
## %bb.11:
	movl	24(%rbx), %esi
	leaq	L_.str.3(%rip), %rdi
	callq	_TL_WARNING
	movl	4(%rbx), %eax
LBB0_12:
	testl	%eax, %eax
	movq	___ok@GOTPCREL(%rip), %r15
	jle	LBB0_41
## %bb.13:
	movq	16(%rbx), %r10
	movl	%eax, %r8d
	cmpl	$1, %eax
	jne	LBB0_28
## %bb.14:
	xorl	%edi, %edi
	xorl	%r14d, %r14d
	xorl	%edx, %edx
	jmp	LBB0_30
LBB0_15:
	movl	%eax, %r9d
	andl	$-4, %r9d
	xorl	%edi, %edi
	xorl	%esi, %esi
	.p2align	4, 0x90
LBB0_16:                                ## =>This Inner Loop Header: Depth=1
	movq	(%r10,%rdi,8), %rcx
	movq	8(%r10,%rdi,8), %rdx
	xorl	(%rcx), %esi
	xorl	(%rdx), %esi
	movq	16(%r10,%rdi,8), %rcx
	xorl	(%rcx), %esi
	movq	24(%r10,%rdi,8), %rcx
	xorl	(%rcx), %esi
	addq	$4, %rdi
	cmpq	%rdi, %r9
	jne	LBB0_16
LBB0_17:
	testq	%r8, %r8
	je	LBB0_20
## %bb.18:
	leaq	(%r10,%rdi,8), %rcx
	xorl	%edx, %edx
	.p2align	4, 0x90
LBB0_19:                                ## =>This Inner Loop Header: Depth=1
	movq	(%rcx,%rdx,8), %rdi
	xorl	(%rdi), %esi
	incq	%rdx
	cmpq	%rdx, %r8
	jne	LBB0_19
LBB0_20:
	movl	%esi, (%rbx)
	movl	$1, %r15d
	xorl	%edx, %edx
	leaq	-56(%rbp), %r14
	jmp	LBB0_23
	.p2align	4, 0x90
LBB0_21:                                ##   in Loop: Header=BB0_23 Depth=1
	movslq	%eax, %rcx
	movq	-48(%rbp), %rdx                 ## 8-byte Reload
LBB0_22:                                ##   in Loop: Header=BB0_23 Depth=1
	incq	%r15
	cmpq	%rcx, %rdx
	jge	LBB0_10
LBB0_23:                                ## =>This Loop Header: Depth=1
                                        ##     Child Loop BB0_26 Depth 2
	movq	%rdx, %r13
	incq	%rdx
	movslq	%eax, %rcx
	cmpq	%rcx, %rdx
	jge	LBB0_22
## %bb.24:                              ##   in Loop: Header=BB0_23 Depth=1
	movq	%rdx, -48(%rbp)                 ## 8-byte Spill
	movq	%r15, %r12
	jmp	LBB0_26
	.p2align	4, 0x90
LBB0_25:                                ##   in Loop: Header=BB0_26 Depth=2
	incq	%r12
	movl	4(%rbx), %eax
	cmpl	%r12d, %eax
	jle	LBB0_21
LBB0_26:                                ##   Parent Loop BB0_23 Depth=1
                                        ## =>  This Inner Loop Header: Depth=2
	movq	$0, -56(%rbp)
	movq	16(%rbx), %rax
	movq	(%rax,%r13,8), %rcx
	movl	16(%rcx), %edi
	movq	(%rax,%r12,8), %rax
	movl	16(%rax), %esi
	movq	%r14, %rdx
	callq	_check_constructors_equal
	testq	%rax, %rax
	je	LBB0_25
## %bb.27:                              ##   in Loop: Header=BB0_26 Depth=2
	orb	$16, 8(%rbx)
	jmp	LBB0_25
LBB0_28:
	movl	%r8d, %r9d
	andl	$-2, %r9d
	xorl	%edi, %edi
	xorl	%r14d, %r14d
	xorl	%edx, %edx
	.p2align	4, 0x90
LBB0_29:                                ## =>This Inner Loop Header: Depth=1
	movq	(%r10,%rdi,8), %rsi
	movq	8(%rsi), %r11
	xorl	%esi, %esi
	cmpb	$95, (%r11)
	movq	8(%r10,%rdi,8), %r11
	sete	%sil
	movl	%r14d, %ecx
	cmovel	%edi, %ecx
	addl	%edx, %esi
	movq	8(%r11), %r11
	leal	1(%rdi), %r14d
	xorl	%edx, %edx
	cmpb	$95, (%r11)
	cmovnel	%ecx, %r14d
	sete	%dl
	addl	%esi, %edx
	addq	$2, %rdi
	cmpq	%r9, %rdi
	jne	LBB0_29
LBB0_30:
	testb	$1, %r8b
	je	LBB0_32
## %bb.31:
	movq	(%r10,%rdi,8), %rcx
	movq	8(%rcx), %rcx
	xorl	%esi, %esi
	cmpb	$95, (%rcx)
	sete	%sil
	cmovel	%edi, %r14d
	addl	%esi, %edx
LBB0_32:
	cmpl	$2, %edx
	jb	LBB0_34
## %bb.33:
	movl	24(%rbx), %esi
	leaq	L_.str.4(%rip), %rdi
	xorl	%eax, %eax
	callq	_TL_ERROR
LBB0_40:
	movq	$0, (%r15)
	jmp	LBB0_41
LBB0_34:
	testl	%edx, %edx
	je	LBB0_41
## %bb.35:
	cmpl	$1, %edx
	jne	LBB0_37
## %bb.36:
	testb	$8, 8(%rbx)
	jne	LBB0_39
LBB0_37:
	movslq	%r14d, %rcx
	movq	16(%rbx), %rdx
	movq	(%rdx,%rcx,8), %rsi
	cltq
	movq	-8(%rdx,%rax,8), %rdi
	movq	%rdi, (%rdx,%rcx,8)
	movq	16(%rbx), %rcx
	movq	%rsi, -8(%rcx,%rax,8)
	jmp	LBB0_41
LBB0_38:
	movl	24(%rbx), %esi
	leaq	L_.str.2(%rip), %rdi
	xorl	%eax, %eax
	callq	_TL_ERROR
	movq	$0, (%r14)
LBB0_41:
	addq	$24, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
LBB0_39:
	movl	24(%rbx), %esi
	leaq	L_.str.5(%rip), %rdi
	xorl	%eax, %eax
	callq	_TL_ERROR
	jmp	LBB0_40
	.cfi_endproc
                                        ## -- End function
	.comm	___ok,8,3                       ## @__ok
	.section	__TEXT,__cstring,cstring_literals
L_.str:                                 ## @.str
	.asciz	"#"

L_.str.1:                               ## @.str.1
	.asciz	"Type"

	.comm	_FLAG_EMPTY,4,2                 ## @FLAG_EMPTY
L_.str.2:                               ## @.str.2
	.asciz	"Type %s has no constructors\n"

L_.str.3:                               ## @.str.3
	.asciz	"Warning: Type %s has overlapping costructors, but it is used with `%%`\n"

L_.str.4:                               ## @.str.4
	.asciz	"Type %s has %d default constructors\n"

L_.str.5:                               ## @.str.5
	.asciz	"Type %s has default constructors and used bare\n"

.subsections_via_symbols

	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.globl	_tl_type_check                  ; -- Begin function tl_type_check
	.p2align	2
_tl_type_check:                         ; @tl_type_check
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #80
	.cfi_def_cfa_offset 80
	stp	x24, x23, [sp, #16]             ; 16-byte Folded Spill
	stp	x22, x21, [sp, #32]             ; 16-byte Folded Spill
	stp	x20, x19, [sp, #48]             ; 16-byte Folded Spill
	stp	x29, x30, [sp, #64]             ; 16-byte Folded Spill
	add	x29, sp, #64
	.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
Lloh0:
	adrp	x20, ___ok@GOTPAGE
Lloh1:
	ldr	x20, [x20, ___ok@GOTPAGEOFF]
	ldr	x8, [x20]
	cbz	x8, LBB0_37
; %bb.1:
	mov	x19, x0
	ldr	w0, [x0, #24]
Lloh2:
	adrp	x1, l_.str@PAGE
Lloh3:
	add	x1, x1, l_.str@PAGEOFF
	bl	_strcmp
	cbz	w0, LBB0_6
; %bb.2:
	ldr	w0, [x19, #24]
Lloh4:
	adrp	x1, l_.str.1@PAGE
Lloh5:
	add	x1, x1, l_.str.1@PAGEOFF
	bl	_strcmp
	cbz	w0, LBB0_7
; %bb.3:
	ldr	w8, [x19, #4]
	cmp	w8, #0
	b.le	LBB0_8
; %bb.4:
	ldr	x9, [x19, #16]
	cmp	w8, #4
	b.hs	LBB0_17
; %bb.5:
	mov	x10, #0
	mov	w11, #0
	b	LBB0_20
LBB0_6:
	mov	w8, #40703
	movk	w8, #28773, lsl #16
	str	w8, [x19]
	b	LBB0_37
LBB0_7:
	mov	w8, #63511
	movk	w8, #11500, lsl #16
	str	w8, [x19]
	b	LBB0_37
LBB0_8:
	ldr	w9, [x19, #8]
Lloh6:
	adrp	x10, _FLAG_EMPTY@GOTPAGE
Lloh7:
	ldr	x10, [x10, _FLAG_EMPTY@GOTPAGEOFF]
Lloh8:
	ldr	w10, [x10]
	tst	w10, w9
	b.eq	LBB0_34
; %bb.9:
	str	wzr, [x19]
	mov	x9, x8
LBB0_10:
	ldr	w8, [x19, #8]
	mvn	w8, w8
	tst	w8, #0x18
	b.ne	LBB0_12
; %bb.11:
	ldr	w1, [x19, #24]
Lloh9:
	adrp	x0, l_.str.3@PAGE
Lloh10:
	add	x0, x0, l_.str.3@PAGEOFF
	bl	_TL_WARNING
	ldr	w9, [x19, #4]
LBB0_12:
	subs	w8, w9, #1
	b.lt	LBB0_37
; %bb.13:
	mov	x12, #0
	mov	w10, #0
	mov	w11, #0
	ldr	x13, [x19, #16]
	mov	w9, w9
LBB0_14:                                ; =>This Inner Loop Header: Depth=1
	ldr	x14, [x13, x12, lsl #3]
	ldr	x14, [x14, #8]
	ldrb	w14, [x14]
	cmp	w14, #95
	csel	w10, w12, w10, eq
	cinc	w11, w11, eq
	add	x12, x12, #1
	cmp	x9, x12
	b.ne	LBB0_14
; %bb.15:
	cmp	w11, #2
	b.lo	LBB0_30
; %bb.16:
	ldr	w1, [x19, #24]
	str	x11, [sp]
Lloh11:
	adrp	x0, l_.str.4@PAGE
Lloh12:
	add	x0, x0, l_.str.4@PAGEOFF
	b	LBB0_36
LBB0_17:
	mov	w13, #0
	mov	w14, #0
	mov	w12, #0
	mov	w11, #0
	and	x10, x8, #0xfffffffc
	add	x15, x9, #16
	mov	x16, x10
LBB0_18:                                ; =>This Inner Loop Header: Depth=1
	ldp	x17, x0, [x15, #-16]
	ldp	x1, x2, [x15], #32
	ldr	w17, [x17]
	ldr	w0, [x0]
	ldr	w1, [x1]
	eor	w13, w13, w17
	eor	w14, w14, w0
	ldr	w17, [x2]
	eor	w12, w12, w1
	eor	w11, w11, w17
	subs	x16, x16, #4
	b.ne	LBB0_18
; %bb.19:
	eor	w13, w14, w13
	eor	w12, w12, w13
	eor	w11, w11, w12
	cmp	x10, x8
	b.eq	LBB0_22
LBB0_20:
	add	x9, x9, x10, lsl #3
	sub	x10, x8, x10
LBB0_21:                                ; =>This Inner Loop Header: Depth=1
	ldr	x12, [x9], #8
	ldr	w12, [x12]
	eor	w11, w11, w12
	subs	x10, x10, #1
	b.ne	LBB0_21
LBB0_22:
	mov	x22, #0
	str	w11, [x19]
	mov	w21, #1
	mov	x9, x8
	b	LBB0_25
LBB0_23:                                ;   in Loop: Header=BB0_25 Depth=1
	sxtw	x8, w9
                                        ; kill: def $w9 killed $w9 killed $x9 def $x9
LBB0_24:                                ;   in Loop: Header=BB0_25 Depth=1
	add	x21, x21, #1
	mov	x22, x23
	cmp	x23, x8
	b.ge	LBB0_10
LBB0_25:                                ; =>This Loop Header: Depth=1
                                        ;     Child Loop BB0_28 Depth 2
	add	x23, x22, #1
	sxtw	x8, w9
	cmp	x23, x8
	b.ge	LBB0_24
; %bb.26:                               ;   in Loop: Header=BB0_25 Depth=1
	mov	x24, x21
	b	LBB0_28
LBB0_27:                                ;   in Loop: Header=BB0_28 Depth=2
	add	x24, x24, #1
	ldr	w9, [x19, #4]
	cmp	w9, w24
	b.le	LBB0_23
LBB0_28:                                ;   Parent Loop BB0_25 Depth=1
                                        ; =>  This Inner Loop Header: Depth=2
	str	xzr, [sp, #8]
	ldr	x8, [x19, #16]
	ldr	x9, [x8, x22, lsl #3]
	ldr	w0, [x9, #16]
	ldr	x8, [x8, x24, lsl #3]
	ldr	w1, [x8, #16]
	add	x2, sp, #8
	bl	_check_constructors_equal
	cbz	x0, LBB0_27
; %bb.29:                               ;   in Loop: Header=BB0_28 Depth=2
	ldr	w8, [x19, #8]
	orr	w8, w8, #0x10
	str	w8, [x19, #8]
	b	LBB0_27
LBB0_30:
	cbz	w11, LBB0_37
; %bb.31:
	cmp	w11, #1
	b.ne	LBB0_33
; %bb.32:
	ldrb	w9, [x19, #8]
	tbnz	w9, #3, LBB0_35
LBB0_33:
	sxtw	x9, w10
	ldr	x10, [x19, #16]
	lsl	x9, x9, #3
	ldr	x11, [x10, x9]
	sbfiz	x8, x8, #3, #32
	ldr	x12, [x10, x8]
	str	x12, [x10, x9]
	ldr	x9, [x19, #16]
	str	x11, [x9, x8]
	b	LBB0_37
LBB0_34:
	ldr	w1, [x19, #24]
Lloh13:
	adrp	x0, l_.str.2@PAGE
Lloh14:
	add	x0, x0, l_.str.2@PAGEOFF
	b	LBB0_36
LBB0_35:
	ldr	w1, [x19, #24]
Lloh15:
	adrp	x0, l_.str.5@PAGE
Lloh16:
	add	x0, x0, l_.str.5@PAGEOFF
LBB0_36:
	bl	_TL_ERROR
	str	xzr, [x20]
LBB0_37:
	ldp	x29, x30, [sp, #64]             ; 16-byte Folded Reload
	ldp	x20, x19, [sp, #48]             ; 16-byte Folded Reload
	ldp	x22, x21, [sp, #32]             ; 16-byte Folded Reload
	ldp	x24, x23, [sp, #16]             ; 16-byte Folded Reload
	add	sp, sp, #80
	ret
	.loh AdrpLdrGot	Lloh0, Lloh1
	.loh AdrpAdd	Lloh2, Lloh3
	.loh AdrpAdd	Lloh4, Lloh5
	.loh AdrpLdrGotLdr	Lloh6, Lloh7, Lloh8
	.loh AdrpAdd	Lloh9, Lloh10
	.loh AdrpAdd	Lloh11, Lloh12
	.loh AdrpAdd	Lloh13, Lloh14
	.loh AdrpAdd	Lloh15, Lloh16
	.cfi_endproc
                                        ; -- End function
	.comm	___ok,8,3                       ; @__ok
	.section	__TEXT,__cstring,cstring_literals
l_.str:                                 ; @.str
	.asciz	"#"

l_.str.1:                               ; @.str.1
	.asciz	"Type"

	.comm	_FLAG_EMPTY,4,2                 ; @FLAG_EMPTY
l_.str.2:                               ; @.str.2
	.asciz	"Type %s has no constructors\n"

l_.str.3:                               ; @.str.3
	.asciz	"Warning: Type %s has overlapping costructors, but it is used with `%%`\n"

l_.str.4:                               ; @.str.4
	.asciz	"Type %s has %d default constructors\n"

l_.str.5:                               ; @.str.5
	.asciz	"Type %s has default constructors and used bare\n"

.subsections_via_symbols
