	.file	"extr_cp-demangle.c_cplus_demangle_type.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.globl	cplus_demangle_type
	.type	cplus_demangle_type, @function
cplus_demangle_type:
.LFB0:
	.cfi_startproc
	endbr64
	push	r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	push	rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	mov	rbp, rdi
	push	rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	sub	rsp, 16
	.cfi_def_cfa_offset 48
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR 8[rsp], rax
	xor	eax, eax
	call	d_peek_char@PLT
	lea	edx, -75[rax]
	cmp	dl, 39
	ja	.L2
	movabs	rcx, 549755815937
	bt	rcx, rdx
	jnc	.L2
	mov	rsi, rsp
	xor	edx, edx
	mov	rdi, rbp
	call	d_cv_qualifiers@PLT
	mov	rbx, rax
	test	rax, rax
	je	.L30
	mov	rdi, rbp
	call	cplus_demangle_type
	mov	QWORD PTR [rbx], rax
	test	rax, rax
	je	.L30
	mov	rsi, QWORD PTR [rsp]
	mov	rdi, rbp
	call	d_add_substitution@PLT
	test	eax, eax
	je	.L30
.L20:
	mov	rax, QWORD PTR [rsp]
	jmp	.L1
.L8:
	mov	esi, 1
	mov	rdi, rbp
	call	d_advance@PLT
	mov	rdi, rbp
	call	d_source_name@PLT
	mov	esi, DWORD PTR DEMANGLE_COMPONENT_VENDOR_TYPE[rip]
	xor	ecx, ecx
	mov	rdi, rbp
	mov	rdx, rax
	call	d_make_comp@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	.p2align 4,,10
	.p2align 3
.L21:
	mov	rdi, rbp
	call	d_add_substitution@PLT
	test	eax, eax
	jne	.L20
.L30:
	xor	eax, eax
.L1:
	mov	rbx, QWORD PTR 8[rsp]
	xor	rbx, QWORD PTR fs:40
	jne	.L49
	add	rsp, 16
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	pop	rbx
	.cfi_def_cfa_offset 24
	pop	rbp
	.cfi_def_cfa_offset 16
	pop	r12
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L2:
	.cfi_restore_state
	lea	edx, -48[rax]
	cmp	dl, 74
	ja	.L30
	lea	rcx, .L7[rip]
	movzx	edx, dl
	movsx	rdx, DWORD PTR [rcx+rdx*4]
	add	rdx, rcx
	notrack jmp	rdx
	.section	.rodata
	.align 4
	.align 4
.L7:
	.long	.L9-.L7
	.long	.L9-.L7
	.long	.L9-.L7
	.long	.L9-.L7
	.long	.L9-.L7
	.long	.L9-.L7
	.long	.L9-.L7
	.long	.L9-.L7
	.long	.L9-.L7
	.long	.L9-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L19-.L7
	.long	.L30-.L7
	.long	.L18-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L17-.L7
	.long	.L16-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L15-.L7
	.long	.L9-.L7
	.long	.L30-.L7
	.long	.L14-.L7
	.long	.L30-.L7
	.long	.L13-.L7
	.long	.L12-.L7
	.long	.L11-.L7
	.long	.L10-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L9-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L30-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L30-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L8-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.long	.L6-.L7
	.text
.L6:
	mov	rdx, QWORD PTR cplus_demangle_builtin_types[rip]
	movsx	rax, al
	mov	rdi, rbp
	lea	rsi, -388[rdx+rax*4]
	call	d_make_builtin_type@PLT
	mov	esi, 1
	mov	rdi, rbp
	mov	QWORD PTR [rsp], rax
	mov	rax, QWORD PTR 8[rax]
	mov	eax, DWORD PTR [rax]
	add	DWORD PTR 0[rbp], eax
	call	d_advance@PLT
	jmp	.L20
.L10:
	mov	esi, 1
	mov	rdi, rbp
	call	d_advance@PLT
	mov	rdi, rbp
	call	d_source_name@PLT
	mov	rdi, rbp
	mov	r12, rax
	mov	QWORD PTR [rsp], rax
	call	cplus_demangle_type
	mov	esi, DWORD PTR DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL[rip]
	mov	rcx, r12
	mov	rdi, rbp
	mov	rdx, rax
	call	d_make_comp@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	jmp	.L21
.L11:
	mov	rdi, rbp
	call	d_template_param@PLT
	mov	rdi, rbp
	mov	QWORD PTR [rsp], rax
	call	d_peek_char@PLT
	mov	rsi, QWORD PTR [rsp]
	cmp	al, 73
	jne	.L21
	mov	rdi, rbp
	call	d_add_substitution@PLT
	test	eax, eax
	je	.L30
.L25:
	mov	rdi, rbp
	call	d_template_args@PLT
	mov	esi, DWORD PTR DEMANGLE_COMPONENT_TEMPLATE[rip]
	mov	rdx, QWORD PTR [rsp]
	mov	rdi, rbp
	mov	rcx, rax
	call	d_make_comp@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	jmp	.L21
.L12:
	mov	rdi, rbp
	call	d_peek_next_char@PLT
	movsx	r12d, al
	mov	edi, r12d
	call	IS_DIGIT@PLT
	cmp	r12b, 95
	je	.L27
	test	eax, eax
	jne	.L27
	mov	edi, r12d
	call	IS_UPPER@PLT
	test	eax, eax
	je	.L50
.L27:
	xor	esi, esi
	mov	rdi, rbp
	call	d_substitution@PLT
	mov	rdi, rbp
	mov	QWORD PTR [rsp], rax
	call	d_peek_char@PLT
	cmp	al, 73
	jne	.L20
	jmp	.L25
.L13:
	mov	esi, 1
	mov	rdi, rbp
	call	d_advance@PLT
	mov	rdi, rbp
	call	cplus_demangle_type
	mov	esi, DWORD PTR DEMANGLE_COMPONENT_REFERENCE[rip]
	xor	ecx, ecx
	mov	rdi, rbp
	mov	rdx, rax
	call	d_make_comp@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	jmp	.L21
.L14:
	mov	esi, 1
	mov	rdi, rbp
	call	d_advance@PLT
	mov	rdi, rbp
	call	cplus_demangle_type
	mov	esi, DWORD PTR DEMANGLE_COMPONENT_POINTER[rip]
	xor	ecx, ecx
	mov	rdi, rbp
	mov	rdx, rax
	call	d_make_comp@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	jmp	.L21
.L15:
	mov	rdi, rbp
	call	d_pointer_to_member_type@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	jmp	.L21
.L16:
	mov	esi, 1
	mov	rdi, rbp
	call	d_advance@PLT
	mov	rdi, rbp
	call	cplus_demangle_type
	mov	esi, DWORD PTR DEMANGLE_COMPONENT_IMAGINARY[rip]
	xor	ecx, ecx
	mov	rdi, rbp
	mov	rdx, rax
	call	d_make_comp@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	jmp	.L21
.L17:
	mov	rdi, rbp
	call	d_function_type@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	jmp	.L21
.L18:
	mov	esi, 1
	mov	rdi, rbp
	call	d_advance@PLT
	mov	rdi, rbp
	call	cplus_demangle_type
	mov	esi, DWORD PTR DEMANGLE_COMPONENT_COMPLEX[rip]
	xor	ecx, ecx
	mov	rdi, rbp
	mov	rdx, rax
	call	d_make_comp@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	jmp	.L21
.L19:
	mov	rdi, rbp
	call	d_array_type@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	jmp	.L21
.L9:
	mov	rdi, rbp
	call	d_class_enum_type@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	jmp	.L21
.L50:
	mov	rdi, rbp
	call	d_class_enum_type@PLT
	mov	QWORD PTR [rsp], rax
	mov	rsi, rax
	test	rax, rax
	je	.L21
	mov	eax, DWORD PTR DEMANGLE_COMPONENT_SUB_STD[rip]
	cmp	DWORD PTR [rsi], eax
	jne	.L21
	jmp	.L20
.L49:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE0:
	.size	cplus_demangle_type, .-cplus_demangle_type
	.comm	cplus_demangle_builtin_types,8,8
	.comm	DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL,4,4
	.comm	DEMANGLE_COMPONENT_VENDOR_TYPE,4,4
	.comm	DEMANGLE_COMPONENT_TEMPLATE,4,4
	.comm	DEMANGLE_COMPONENT_SUB_STD,4,4
	.comm	DEMANGLE_COMPONENT_REFERENCE,4,4
	.comm	DEMANGLE_COMPONENT_POINTER,4,4
	.comm	DEMANGLE_COMPONENT_IMAGINARY,4,4
	.comm	DEMANGLE_COMPONENT_COMPLEX,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 2
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"extr_cp-demangle.c_cplus_demangle_type.c"
	.text
	.section	.rodata.cst4,"aM",%progbits,4
	.align	2
.LC0:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	cplus_demangle_type
	.syntax unified
	.arm
	.fpu softvfp
	.type	cplus_demangle_type, %function
cplus_demangle_type:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, lr}
	ldr	r3, .L51
	sub	sp, sp, #8
	ldr	r3, [r3]
	str	r3, [sp, #4]
	mov	r3,#0
	mov	r4, r0
	bl	d_peek_char
	cmp	r0, #86
	cmpne	r0, #114
	moveq	r3, #1
	movne	r3, #0
	cmp	r0, #75
	orreq	r3, r3, #1
	cmp	r3, #0
	beq	.L2
	mov	r2, #0
	mov	r1, sp
	mov	r0, r4
	bl	d_cv_qualifiers
	subs	r5, r0, #0
	beq	.L29
	mov	r0, r4
	bl	cplus_demangle_type
	cmp	r0, #0
	str	r0, [r5]
	beq	.L29
	mov	r0, r4
	ldr	r1, [sp]
	bl	d_add_substitution
	cmp	r0, #0
	beq	.L29
.L20:
	ldr	r0, [sp]
	b	.L1
.L8:
	mov	r1, #1
	mov	r0, r4
	bl	d_advance
	ldr	r3, .L51+4
	mov	r0, r4
	ldr	r5, [r3]
	bl	d_source_name
.L47:
	mov	r2, r0
	mov	r1, r5
	mov	r3, #0
	mov	r0, r4
	bl	d_make_comp
	mov	r1, r0
	str	r0, [sp]
.L21:
	mov	r0, r4
	bl	d_add_substitution
	cmp	r0, #0
	bne	.L20
.L29:
	mov	r0, #0
.L1:
	ldr	r3, .L51
	ldr	r2, [r3]
	ldr	r3, [sp, #4]
	eors	r2, r3, r2
	mov	r3, #0
	bne	.L50
	add	sp, sp, #8
	@ sp needed
	pop	{r4, r5, r6, pc}
.L2:
	sub	r3, r0, #48
	cmp	r3, #74
	ldrls	pc, [pc, r3, asl #2]
	b	.L29
.L7:
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L19
	.word	.L29
	.word	.L18
	.word	.L29
	.word	.L29
	.word	.L17
	.word	.L16
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L15
	.word	.L9
	.word	.L29
	.word	.L14
	.word	.L29
	.word	.L13
	.word	.L12
	.word	.L11
	.word	.L10
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L9
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L29
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L6
	.word	.L6
	.word	.L8
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L6
	.word	.L6
.L6:
	ldr	r3, .L51+8
	add	r1, r0, #1073741824
	ldr	r3, [r3]
	sub	r1, r1, #97
	add	r1, r3, r1, lsl #2
	mov	r0, r4
	bl	d_make_builtin_type
	mov	r3, r0
	ldr	r1, [r0, #4]
	ldr	r2, [r4]
	ldr	r1, [r1]
	mov	r0, r4
	add	r2, r2, r1
	str	r2, [r4]
	mov	r1, #1
	str	r3, [sp]
	bl	d_advance
	b	.L20
.L10:
	mov	r1, #1
	mov	r0, r4
	bl	d_advance
	mov	r0, r4
	bl	d_source_name
	mov	r2, r0
	ldr	r3, .L51+12
	mov	r0, r4
	ldr	r5, [r3]
	str	r2, [sp]
	bl	cplus_demangle_type
	mov	r1, r5
	mov	r2, r0
	ldr	r3, [sp]
	mov	r0, r4
	bl	d_make_comp
	mov	r1, r0
	str	r0, [sp]
	b	.L21
.L11:
	mov	r0, r4
	bl	d_template_param
	mov	r3, r0
	mov	r0, r4
	str	r3, [sp]
	bl	d_peek_char
	cmp	r0, #73
	ldr	r1, [sp]
	bne	.L21
	mov	r0, r4
	bl	d_add_substitution
	cmp	r0, #0
	beq	.L29
.L24:
	ldr	r3, .L51+16
	mov	r0, r4
	ldr	r5, [r3]
	ldr	r6, [sp]
	bl	d_template_args
	mov	r1, r5
	mov	r3, r0
	mov	r2, r6
	mov	r0, r4
	bl	d_make_comp
	mov	r1, r0
	str	r0, [sp]
	b	.L21
.L12:
	mov	r0, r4
	bl	d_peek_next_char
	mov	r5, r0
	bl	IS_DIGIT
	subs	r3, r0, #0
	movne	r3, #1
	cmp	r5, #95
	orreq	r3, r3, #1
	cmp	r3, #0
	beq	.L23
.L26:
	mov	r1, #0
	mov	r0, r4
	bl	d_substitution
	mov	r3, r0
	mov	r0, r4
	str	r3, [sp]
	bl	d_peek_char
	cmp	r0, #73
	bne	.L20
	b	.L24
.L13:
	mov	r1, #1
	mov	r0, r4
	bl	d_advance
	ldr	r3, .L51+20
.L48:
	mov	r0, r4
	ldr	r5, [r3]
	bl	cplus_demangle_type
	b	.L47
.L17:
	mov	r0, r4
	bl	d_function_type
	mov	r1, r0
	str	r0, [sp]
	b	.L21
.L18:
	mov	r1, #1
	mov	r0, r4
	bl	d_advance
	ldr	r3, .L51+24
	b	.L48
.L19:
	mov	r0, r4
	bl	d_array_type
	mov	r1, r0
	str	r0, [sp]
	b	.L21
.L9:
	mov	r0, r4
	bl	d_class_enum_type
	mov	r1, r0
	str	r0, [sp]
	b	.L21
.L15:
	mov	r0, r4
	bl	d_pointer_to_member_type
	mov	r1, r0
	str	r0, [sp]
	b	.L21
.L16:
	mov	r1, #1
	mov	r0, r4
	bl	d_advance
	ldr	r3, .L51+28
	b	.L48
.L14:
	mov	r1, #1
	mov	r0, r4
	bl	d_advance
	ldr	r3, .L51+32
	b	.L48
.L23:
	mov	r0, r5
	bl	IS_UPPER
	cmp	r0, #0
	bne	.L26
	mov	r0, r4
	bl	d_class_enum_type
	cmp	r0, #0
	mov	r1, r0
	str	r0, [sp]
	beq	.L21
	ldr	r3, .L51+36
	ldr	r2, [r0]
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L21
	b	.L20
.L50:
	bl	__stack_chk_fail
.L52:
	.align	2
.L51:
	.word	.LC0
	.word	DEMANGLE_COMPONENT_VENDOR_TYPE
	.word	cplus_demangle_builtin_types
	.word	DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL
	.word	DEMANGLE_COMPONENT_TEMPLATE
	.word	DEMANGLE_COMPONENT_REFERENCE
	.word	DEMANGLE_COMPONENT_COMPLEX
	.word	DEMANGLE_COMPONENT_IMAGINARY
	.word	DEMANGLE_COMPONENT_POINTER
	.word	DEMANGLE_COMPONENT_SUB_STD
	.size	cplus_demangle_type, .-cplus_demangle_type
	.comm	cplus_demangle_builtin_types,4,4
	.comm	DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL,4,4
	.comm	DEMANGLE_COMPONENT_VENDOR_TYPE,4,4
	.comm	DEMANGLE_COMPONENT_TEMPLATE,4,4
	.comm	DEMANGLE_COMPONENT_SUB_STD,4,4
	.comm	DEMANGLE_COMPONENT_REFERENCE,4,4
	.comm	DEMANGLE_COMPONENT_POINTER,4,4
	.comm	DEMANGLE_COMPONENT_IMAGINARY,4,4
	.comm	DEMANGLE_COMPONENT_COMPLEX,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
