	.file	"extr_typegen.c_get_required_buffer_size_type.c"
	.intel_syntax noprefix
	.text
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC0:
	.string	"get_required_buffer_size: unknown basic type 0x%02x\n"
	.text
	.p2align 4
	.type	get_required_buffer_size_type, @function
get_required_buffer_size_type:
.LFB0:
	.cfi_startproc
	endbr64
	push	r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	mov	r15, rdi
	push	r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	mov	r14, rsi
	xor	esi, esi
	push	r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	mov	r13d, ecx
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	mov	r12, rdx
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	mov	rbp, r8
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	sub	rsp, 24
	.cfi_def_cfa_offset 80
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR 8[rsp], rax
	xor	eax, eax
	mov	DWORD PTR [r8], 0
	mov	edx, DWORD PTR TDT_IGNORE_RANGES[rip]
	call	typegen_detect_type@PLT
	add	eax, -128
	cmp	eax, 5
	ja	.L37
	lea	rdx, .L4[rip]
	movsx	rax, DWORD PTR [rdx+rax*4]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L4:
	.long	.L9-.L4
	.long	.L8-.L4
	.long	.L7-.L4
	.long	.L6-.L4
	.long	.L5-.L4
	.long	.L3-.L4
	.text
	.p2align 4,,10
	.p2align 3
.L11:
	mov	rdi, r15
	call	get_basic_fc@PLT
	lea	rdi, .LC0[rip]
	mov	esi, eax
	call	error@PLT
	.p2align 4,,10
	.p2align 3
.L37:
	xor	r14d, r14d
.L1:
	mov	rax, QWORD PTR 8[rsp]
	xor	rax, QWORD PTR fs:40
	jne	.L39
	add	rsp, 24
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	mov	eax, r14d
	pop	rbx
	.cfi_def_cfa_offset 48
	pop	rbp
	.cfi_def_cfa_offset 40
	pop	r12
	.cfi_def_cfa_offset 32
	pop	r13
	.cfi_def_cfa_offset 24
	pop	r14
	.cfi_def_cfa_offset 16
	pop	r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L5:
	.cfi_restore_state
	mov	rdi, r15
	call	get_basic_fc@PLT
	sub	eax, 134
	cmp	eax, 20
	ja	.L11
	lea	rdx, .L12[rip]
	movsx	rax, DWORD PTR [rdx+rax*4]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L12:
	.long	.L17-.L12
	.long	.L13-.L12
	.long	.L17-.L12
	.long	.L15-.L12
	.long	.L16-.L12
	.long	.L11-.L12
	.long	.L13-.L12
	.long	.L17-.L12
	.long	.L15-.L12
	.long	.L11-.L12
	.long	.L16-.L12
	.long	.L37-.L12
	.long	.L14-.L12
	.long	.L15-.L12
	.long	.L15-.L12
	.long	.L11-.L12
	.long	.L11-.L12
	.long	.L14-.L12
	.long	.L13-.L12
	.long	.L13-.L12
	.long	.L37-.L12
	.text
	.p2align 4,,10
	.p2align 3
.L3:
	mov	edx, r13d
	mov	rsi, r12
	mov	rdi, r15
	call	get_pointer_fc@PLT
	cmp	eax, DWORD PTR FC_RP[rip]
	jne	.L37
	mov	rdi, r15
	call	get_array_fc@PLT
	and	eax, -5
	cmp	eax, 139
	jne	.L37
	mov	rdi, r15
	call	type_array_get_dim@PLT
	mov	r13d, DWORD PTR FALSE[rip]
	mov	rdi, r15
	mov	r12d, eax
	call	type_array_get_element@PLT
	mov	rsi, r14
	mov	r8, rbp
	mov	ecx, r13d
	mov	rdi, rax
	xor	edx, edx
	mov	r14d, r12d
	call	get_required_buffer_size_type
	imul	r14d, eax
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L9:
	mov	rsi, rsp
	mov	rdi, r15
	mov	QWORD PTR [rsp], 0
	call	get_user_type@PLT
	mov	ecx, DWORD PTR FALSE[rip]
	mov	r8, rbp
	xor	edx, edx
	mov	rsi, QWORD PTR [rsp]
	mov	rdi, rax
	call	get_required_buffer_size_type
	mov	r14d, eax
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L8:
	mov	rdi, r15
	call	get_struct_fc@PLT
	cmp	eax, DWORD PTR FC_STRUCT[rip]
	jne	.L37
	mov	rdi, r15
	call	type_struct_get_fields@PLT
	test	eax, eax
	je	.L37
	mov	rdi, r15
	call	type_struct_get_fields@PLT
	mov	rsi, rbp
	mov	edi, eax
	call	fields_memsize@PLT
	mov	r14d, eax
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L7:
	mov	rdi, r15
	call	type_pointer_get_ref@PLT
	mov	rdi, r12
	mov	rsi, rax
	mov	rbx, rax
	call	is_string_type@PLT
	test	eax, eax
	jne	.L37
	mov	ecx, DWORD PTR FALSE[rip]
	mov	rsi, r14
	mov	r8, rsp
	xor	edx, edx
	mov	rdi, rbx
	call	get_required_buffer_size_type
	mov	r14d, eax
	test	eax, eax
	je	.L37
	mov	edx, r13d
	mov	rsi, r12
	mov	rdi, r15
	call	get_pointer_fc@PLT
	cmp	eax, DWORD PTR FC_RP[rip]
	mov	eax, DWORD PTR [rsp]
	je	.L22
	lea	r14d, 4[r14+rax]
	mov	eax, 4
.L22:
	mov	DWORD PTR 0[rbp], eax
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L6:
	mov	rdi, r15
	call	get_enum_fc@PLT
	cmp	eax, 149
	je	.L15
	cmp	eax, 150
	jne	.L37
.L17:
	mov	DWORD PTR 0[rbp], 4
	mov	r14d, 2
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L15:
	mov	DWORD PTR 0[rbp], 4
	mov	r14d, 4
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L13:
	mov	DWORD PTR 0[rbp], 4
	mov	r14d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L14:
	mov	DWORD PTR 0[rbp], 8
	mov	r14d, 8
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L16:
	mov	edi, DWORD PTR pointer_size[rip]
	call	assert@PLT
	mov	r14d, DWORD PTR pointer_size[rip]
	mov	DWORD PTR 0[rbp], r14d
	jmp	.L1
.L39:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE0:
	.size	get_required_buffer_size_type, .-get_required_buffer_size_type
	.comm	pointer_size,4,4
	.comm	TDT_IGNORE_RANGES,4,4
	.comm	FC_STRUCT,4,4
	.comm	FC_RP,4,4
	.comm	FALSE,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_typegen.c_get_required_buffer_size_type.c"
	.text
	.section	.rodata.str1.4,"aMS",%progbits,1
	.align	2
.LC0:
	.ascii	"get_required_buffer_size: unknown basic type 0x%02x"
	.ascii	"\012\000"
	.section	.rodata.cst4,"aM",%progbits,4
	.align	2
.LC1:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_required_buffer_size_type, %function
get_required_buffer_size_type:
	@ args = 4, pretend = 0, frame = 8
	@ frame_needed = 0, uses_anonymous_args = 0
	mov	ip, #0
	push	{r4, r5, r6, r7, r8, r9, lr}
	sub	sp, sp, #20
	ldr	r7, [sp, #48]
	mov	r9, r1
	ldr	r1, .L40
	mov	r6, r2
	ldr	r2, .L40+4
	ldr	r1, [r1]
	str	r1, [sp, #12]
	mov	r1,#0
	str	ip, [r7]
	mov	r1, ip
	ldr	r2, [r2]
	mov	r8, r3
	mov	r5, r0
	bl	typegen_detect_type
	sub	ip, r0, #128
	cmp	ip, #5
	ldrls	pc, [pc, ip, asl #2]
	b	.L37
.L4:
	.word	.L9
	.word	.L8
	.word	.L7
	.word	.L6
	.word	.L5
	.word	.L3
.L11:
	mov	r0, r5
	bl	get_basic_fc
	mov	r1, r0
	ldr	r0, .L40+8
	bl	error
.L37:
	mov	r4, #0
.L1:
	ldr	r3, .L40
	ldr	r2, [r3]
	ldr	r3, [sp, #12]
	eors	r2, r3, r2
	mov	r3, #0
	bne	.L39
	mov	r0, r4
	add	sp, sp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, pc}
.L3:
	mov	r2, r8
	mov	r1, r6
	mov	r0, r5
	bl	get_pointer_fc
	ldr	r3, .L40+12
	ldr	r3, [r3]
	cmp	r0, r3
	bne	.L37
	mov	r0, r5
	bl	get_array_fc
	bic	r0, r0, #4
	cmp	r0, #139
	bne	.L37
	mov	r0, r5
	bl	type_array_get_dim
	mov	r4, r0
	mov	r0, r5
	bl	type_array_get_element
	ldr	r3, .L40+16
	str	r7, [sp]
	mov	r1, r9
	mov	r2, #0
	ldr	r3, [r3]
	bl	get_required_buffer_size_type
	mul	r4, r0, r4
	b	.L1
.L9:
	mov	r4, #0
	add	r1, sp, #8
	mov	r0, r5
	str	r4, [sp, #8]
	bl	get_user_type
	ldr	r3, .L40+16
	str	r7, [sp]
	mov	r2, r4
	ldr	r3, [r3]
	ldr	r1, [sp, #8]
	bl	get_required_buffer_size_type
	mov	r4, r0
	b	.L1
.L8:
	mov	r0, r5
	bl	get_struct_fc
	ldr	r3, .L40+20
	ldr	r3, [r3]
	cmp	r0, r3
	bne	.L37
	mov	r0, r5
	bl	type_struct_get_fields
	cmp	r0, #0
	beq	.L37
	mov	r0, r5
	bl	type_struct_get_fields
	mov	r1, r7
	bl	fields_memsize
	mov	r4, r0
	b	.L1
.L7:
	mov	r0, r5
	bl	type_pointer_get_ref
	mov	r4, r0
	mov	r0, r6
	mov	r1, r4
	bl	is_string_type
	subs	r2, r0, #0
	bne	.L37
	ldr	r3, .L40+16
	add	ip, sp, #8
	mov	r0, r4
	ldr	r3, [r3]
	mov	r1, r9
	str	ip, [sp]
	bl	get_required_buffer_size_type
	subs	r4, r0, #0
	beq	.L37
	mov	r2, r8
	mov	r1, r6
	mov	r0, r5
	bl	get_pointer_fc
	ldr	r3, .L40+12
	ldr	r3, [r3]
	cmp	r0, r3
	movne	r2, #4
	ldrne	r3, [sp, #8]
	ldreq	r2, [sp, #8]
	addne	r3, r3, r2
	addne	r4, r4, r3
	str	r2, [r7]
	b	.L1
.L6:
	mov	r0, r5
	bl	get_enum_fc
	cmp	r0, #149
	beq	.L15
	cmp	r0, #150
	bne	.L37
.L17:
	mov	r3, #4
	mov	r4, #2
	str	r3, [r7]
	b	.L1
.L5:
	mov	r0, r5
	bl	get_basic_fc
	sub	r0, r0, #134
	cmp	r0, #20
	ldrls	pc, [pc, r0, asl #2]
	b	.L11
.L12:
	.word	.L17
	.word	.L13
	.word	.L17
	.word	.L15
	.word	.L16
	.word	.L11
	.word	.L13
	.word	.L17
	.word	.L15
	.word	.L11
	.word	.L16
	.word	.L37
	.word	.L14
	.word	.L15
	.word	.L15
	.word	.L11
	.word	.L11
	.word	.L14
	.word	.L13
	.word	.L13
	.word	.L37
.L15:
	mov	r4, #4
	str	r4, [r7]
	b	.L1
.L13:
	mov	r3, #4
	mov	r4, #1
	str	r3, [r7]
	b	.L1
.L14:
	mov	r4, #8
	str	r4, [r7]
	b	.L1
.L16:
	ldr	r4, .L40+24
	ldr	r0, [r4]
	bl	assert
	ldr	r4, [r4]
	str	r4, [r7]
	b	.L1
.L39:
	bl	__stack_chk_fail
.L41:
	.align	2
.L40:
	.word	.LC1
	.word	TDT_IGNORE_RANGES
	.word	.LC0
	.word	FC_RP
	.word	FALSE
	.word	FC_STRUCT
	.word	pointer_size
	.size	get_required_buffer_size_type, .-get_required_buffer_size_type
	.comm	pointer_size,4,4
	.comm	TDT_IGNORE_RANGES,4,4
	.comm	FC_STRUCT,4,4
	.comm	FC_RP,4,4
	.comm	FALSE,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
