	.file	"extr_valarith.c_value_binop.c"
	.intel_syntax noprefix
	.text
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC0:
	.string	"Argument to arithmetic operation not a number or boolean."
	.align 8
.LC1:
	.string	"Cannot perform exponentiation: %s"
	.align 8
.LC2:
	.string	"Integer-only operation on floating point number."
	.align 8
.LC3:
	.string	"Invalid operation on booleans."
	.align 8
.LC4:
	.string	"Invalid binary operation on numbers."
	.text
	.p2align 4
	.globl	value_binop
	.type	value_binop, @function
value_binop:
.LFB0:
	.cfi_startproc
	endbr64
	push	r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	push	r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	push	r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	mov	r13, rdi
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	mov	r12, rsi
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	mov	ebx, edx
	sub	rsp, 24
	.cfi_def_cfa_offset 80
	call	COERCE_REF@PLT
	mov	rdi, r12
	call	COERCE_REF@PLT
	mov	rdi, r13
	call	COERCE_ENUM@PLT
	mov	rdi, r12
	call	COERCE_ENUM@PLT
	mov	rdi, r13
	call	VALUE_TYPE@PLT
	mov	rdi, rax
	call	check_typedef@PLT
	mov	rdi, r12
	mov	rbp, rax
	call	VALUE_TYPE@PLT
	mov	rdi, rax
	call	check_typedef@PLT
	mov	rdi, rbp
	mov	r14, rax
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_FLT[rip]
	je	.L5
	mov	rdi, rbp
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_CHAR[rip]
	jne	.L111
.L5:
	mov	rdi, r14
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_FLT[rip]
	jne	.L112
.L6:
	mov	rdi, rbp
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_FLT[rip]
	je	.L16
	mov	rdi, r14
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_FLT[rip]
	jne	.L113
.L16:
	mov	rdi, r13
	add	ebx, -128
	call	value_as_double@PLT
	mov	rdi, r12
	mov	r13d, eax
	call	value_as_double@PLT
	mov	esi, eax
	cmp	ebx, 18
	ja	.L9
	lea	rdx, .L11[rip]
	movsx	rax, DWORD PTR [rdx+rbx*4]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L11:
	.long	.L15-.L11
	.long	.L9-.L11
	.long	.L9-.L11
	.long	.L9-.L11
	.long	.L14-.L11
	.long	.L9-.L11
	.long	.L9-.L11
	.long	.L9-.L11
	.long	.L9-.L11
	.long	.L9-.L11
	.long	.L9-.L11
	.long	.L9-.L11
	.long	.L13-.L11
	.long	.L9-.L11
	.long	.L12-.L11
	.long	.L9-.L11
	.long	.L9-.L11
	.long	.L9-.L11
	.long	.L10-.L11
	.text
	.p2align 4,,10
	.p2align 3
.L112:
	mov	rdi, r14
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_CHAR[rip]
	je	.L6
	mov	rdi, r14
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_INT[rip]
	je	.L6
	mov	rdi, r14
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_BOOL[rip]
	je	.L6
	mov	rdi, r14
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_RANGE[rip]
	jne	.L7
	jmp	.L6
	.p2align 4,,10
	.p2align 3
.L111:
	mov	rdi, rbp
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_INT[rip]
	je	.L5
	mov	rdi, rbp
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_BOOL[rip]
	je	.L5
	mov	rdi, rbp
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_RANGE[rip]
	je	.L5
.L7:
	lea	rdi, .LC0[rip]
	xor	eax, eax
	call	error@PLT
	jmp	.L6
	.p2align 4,,10
	.p2align 3
.L113:
	mov	rdi, rbp
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_BOOL[rip]
	je	.L114
.L23:
	mov	rdi, rbp
	call	TYPE_LENGTH@PLT
	mov	rdi, r14
	mov	r15d, eax
	call	TYPE_LENGTH@PLT
	mov	rdi, rbp
	mov	DWORD PTR 12[rsp], eax
	call	TYPE_UNSIGNED@PLT
	mov	rdi, r14
	mov	ebp, eax
	call	TYPE_UNSIGNED@PLT
	mov	rdi, QWORD PTR builtin_type_int[rip]
	mov	r14d, eax
	call	TYPE_LENGTH@PLT
	cmp	eax, r15d
	ja	.L115
.L32:
	mov	rdi, QWORD PTR builtin_type_int[rip]
	call	TYPE_LENGTH@PLT
	cmp	eax, DWORD PTR 12[rsp]
	ja	.L116
	cmp	r15d, DWORD PTR 12[rsp]
	ja	.L34
	jb	.L86
	or	ebp, r14d
.L36:
	test	ebp, ebp
	setne	bpl
	movzx	ebp, bpl
.L34:
	test	ebp, ebp
	je	.L35
	mov	rdi, r13
	call	value_as_long@PLT
	mov	rdi, r12
	mov	r13d, eax
	call	value_as_long@PLT
	mov	esi, eax
	cmp	r15d, 3
	ja	.L37
	mov	ecx, DWORD PTR HOST_CHAR_BIT[rip]
	mov	eax, -1
	imul	ecx, r15d
	sal	eax, cl
	not	eax
	and	r13d, eax
	and	esi, eax
.L37:
	add	ebx, -128
	cmp	ebx, 18
	ja	.L38
	lea	rdx, .L40[rip]
	movsx	rax, DWORD PTR [rdx+rbx*4]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L40:
	.long	.L58-.L40
	.long	.L57-.L40
	.long	.L107-.L40
	.long	.L55-.L40
	.long	.L54-.L40
	.long	.L53-.L40
	.long	.L52-.L40
	.long	.L51-.L40
	.long	.L50-.L40
	.long	.L49-.L40
	.long	.L48-.L40
	.long	.L47-.L40
	.long	.L46-.L40
	.long	.L45-.L40
	.long	.L44-.L40
	.long	.L43-.L40
	.long	.L42-.L40
	.long	.L41-.L40
	.long	.L39-.L40
	.text
	.p2align 4,,10
	.p2align 3
.L9:
	lea	rdi, .LC2[rip]
	xor	eax, eax
	xor	r13d, r13d
	call	error@PLT
	.p2align 4,,10
	.p2align 3
.L18:
	mov	rdi, rbp
	call	TYPE_LENGTH@PLT
	sal	eax, 3
	cmp	eax, DWORD PTR TARGET_DOUBLE_BIT[rip]
	ja	.L21
	mov	rdi, r14
	call	TYPE_LENGTH@PLT
	sal	eax, 3
	cmp	eax, DWORD PTR TARGET_DOUBLE_BIT[rip]
	jbe	.L117
.L21:
	mov	rdi, QWORD PTR builtin_type_long_double[rip]
	call	allocate_value@PLT
	mov	r12, rax
.L20:
	mov	rdi, r12
	call	VALUE_TYPE@PLT
	mov	rdi, r12
	mov	rbp, rax
	call	VALUE_CONTENTS_RAW@PLT
	mov	edx, r13d
	mov	rsi, rbp
	mov	edi, eax
	call	store_typed_floating@PLT
.L1:
	add	rsp, 24
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	mov	rax, r12
	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
.L116:
	.cfi_restore_state
	mov	rdi, QWORD PTR builtin_type_int[rip]
	call	TYPE_LENGTH@PLT
	cmp	r15d, eax
	ja	.L34
	jnb	.L36
	mov	r15d, eax
	.p2align 4,,10
	.p2align 3
.L35:
	mov	rdi, r13
	add	ebx, -128
	call	value_as_long@PLT
	mov	rdi, r12
	mov	r13d, eax
	call	value_as_long@PLT
	mov	ecx, eax
	cmp	ebx, 18
	ja	.L62
	lea	rdx, .L64[rip]
	movsx	rax, DWORD PTR [rdx+rbx*4]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L64:
	.long	.L81-.L64
	.long	.L80-.L64
	.long	.L108-.L64
	.long	.L62-.L64
	.long	.L78-.L64
	.long	.L77-.L64
	.long	.L76-.L64
	.long	.L75-.L64
	.long	.L74-.L64
	.long	.L73-.L64
	.long	.L72-.L64
	.long	.L71-.L64
	.long	.L70-.L64
	.long	.L69-.L64
	.long	.L68-.L64
	.long	.L67-.L64
	.long	.L66-.L64
	.long	.L65-.L64
	.long	.L63-.L64
	.text
	.p2align 4,,10
	.p2align 3
.L15:
	sub	r13d, esi
	jmp	.L18
	.p2align 4,,10
	.p2align 3
.L10:
	add	r13d, esi
	jmp	.L18
	.p2align 4,,10
	.p2align 3
.L12:
	mov	eax, r13d
	xor	edx, edx
	div	esi
	mov	r13d, eax
	jmp	.L18
	.p2align 4,,10
	.p2align 3
.L13:
	mov	edi, r13d
	call	pow@PLT
	mov	edi, DWORD PTR errno[rip]
	mov	r13d, eax
	test	edi, edi
	je	.L18
	call	safe_strerror@PLT
	lea	rdi, .LC1[rip]
	mov	esi, eax
	xor	eax, eax
	call	error@PLT
	jmp	.L18
	.p2align 4,,10
	.p2align 3
.L14:
	imul	r13d, esi
	jmp	.L18
	.p2align 4,,10
	.p2align 3
.L117:
	mov	rdi, QWORD PTR builtin_type_double[rip]
	call	allocate_value@PLT
	mov	r12, rax
	jmp	.L20
	.p2align 4,,10
	.p2align 3
.L114:
	mov	rdi, r14
	call	TYPE_CODE@PLT
	cmp	rax, QWORD PTR TYPE_CODE_BOOL[rip]
	jne	.L23
	mov	rdi, r13
	sub	ebx, 131
	call	value_as_long@PLT
	mov	rdi, r12
	mov	r13d, eax
	call	value_as_long@PLT
	cmp	ebx, 14
	ja	.L24
	lea	rcx, .L26[rip]
	movsx	rdx, DWORD PTR [rcx+rbx*4]
	add	rdx, rcx
	notrack jmp	rdx
	.section	.rodata
	.align 4
	.align 4
.L26:
	.long	.L30-.L26
	.long	.L24-.L26
	.long	.L24-.L26
	.long	.L24-.L26
	.long	.L24-.L26
	.long	.L24-.L26
	.long	.L24-.L26
	.long	.L24-.L26
	.long	.L24-.L26
	.long	.L24-.L26
	.long	.L29-.L26
	.long	.L24-.L26
	.long	.L28-.L26
	.long	.L27-.L26
	.long	.L25-.L26
	.text
	.p2align 4,,10
	.p2align 3
.L115:
	mov	rdi, QWORD PTR builtin_type_int[rip]
	xor	ebp, ebp
	call	TYPE_LENGTH@PLT
	mov	r15d, eax
	jmp	.L32
	.p2align 4,,10
	.p2align 3
.L86:
	mov	r15d, DWORD PTR 12[rsp]
	mov	ebp, r14d
	jmp	.L34
.L77:
	test	ecx, ecx
	je	.L82
.L108:
	mov	eax, r13d
	xor	edx, edx
	div	ecx
	mov	r13d, edx
	.p2align 4,,10
	.p2align 3
.L82:
	mov	eax, DWORD PTR TARGET_LONG_BIT[rip]
	xor	edx, edx
	mov	rdi, QWORD PTR builtin_type_long_long[rip]
	div	DWORD PTR HOST_CHAR_BIT[rip]
	cmp	eax, r15d
	cmovnb	rdi, QWORD PTR builtin_type_long[rip]
	call	allocate_value@PLT
	mov	rdi, rax
	mov	r12, rax
	call	VALUE_TYPE@PLT
	mov	rdi, rax
.L109:
	call	TYPE_LENGTH@PLT
	mov	rdi, r12
	mov	ebp, eax
	call	VALUE_CONTENTS_RAW@PLT
	mov	edx, r13d
	mov	esi, ebp
	mov	edi, eax
	call	store_signed_integer@PLT
	jmp	.L1
.L53:
	test	esi, esi
	je	.L59
.L107:
	mov	eax, r13d
	xor	edx, edx
	div	esi
	mov	r13d, edx
	.p2align 4,,10
	.p2align 3
.L59:
	mov	eax, DWORD PTR TARGET_LONG_BIT[rip]
	xor	edx, edx
	mov	rdi, QWORD PTR builtin_type_unsigned_long_long[rip]
	div	DWORD PTR HOST_CHAR_BIT[rip]
	cmp	eax, r15d
	cmovnb	rdi, QWORD PTR builtin_type_unsigned_long[rip]
	call	allocate_value@PLT
	mov	rdi, rax
	mov	r12, rax
	call	VALUE_TYPE@PLT
	mov	rdi, rax
	call	TYPE_LENGTH@PLT
	mov	rdi, r12
	mov	ebp, eax
	call	VALUE_CONTENTS_RAW@PLT
	mov	edx, r13d
	mov	esi, ebp
	mov	edi, eax
	call	store_unsigned_integer@PLT
	jmp	.L1
.L65:
	and	r13d, ecx
	jmp	.L82
.L66:
	or	r13d, ecx
	jmp	.L82
.L63:
	add	r13d, ecx
	jmp	.L82
.L80:
	shr	r13d, cl
	jmp	.L82
.L67:
	xor	r13d, ecx
	jmp	.L82
.L68:
	mov	eax, r13d
	xor	edx, edx
	div	ecx
	mov	r13d, eax
	jmp	.L82
.L69:
	cmp	r13d, ecx
	sete	r13b
	movzx	r13d, r13b
	jmp	.L82
.L70:
	mov	edi, r13d
	mov	esi, ecx
	call	pow@PLT
	mov	edi, DWORD PTR errno[rip]
	mov	r13d, eax
	test	edi, edi
	je	.L82
	call	safe_strerror@PLT
	lea	rdi, .LC1[rip]
	mov	esi, eax
	xor	eax, eax
	call	error@PLT
	jmp	.L82
.L71:
	cmp	r13d, ecx
	setb	r13b
	movzx	r13d, r13b
	jmp	.L82
.L72:
	test	r13d, r13d
	setne	al
	xor	r13d, r13d
	test	ecx, ecx
	setne	r13b
	and	r13d, eax
	jmp	.L82
.L73:
	or	r13d, ecx
	setne	r13b
	movzx	r13d, r13b
	jmp	.L82
.L74:
	sal	r13d, cl
	jmp	.L82
.L75:
	cmp	r13d, ecx
	cmovb	r13d, ecx
	jmp	.L82
.L76:
	cmp	r13d, ecx
	cmova	r13d, ecx
	jmp	.L82
.L78:
	imul	r13d, ecx
	jmp	.L82
.L81:
	sub	r13d, ecx
	jmp	.L82
.L54:
	imul	r13d, esi
	jmp	.L59
.L55:
	cmp	r13d, esi
	setne	r13b
	movzx	r13d, r13b
	jmp	.L59
.L41:
	and	r13d, esi
	jmp	.L59
.L42:
	or	r13d, esi
	jmp	.L59
.L43:
	xor	r13d, esi
	jmp	.L59
.L44:
	mov	eax, r13d
	xor	edx, edx
	div	esi
	mov	r13d, eax
	jmp	.L59
.L57:
	mov	ecx, esi
	shr	r13d, cl
	jmp	.L59
.L58:
	sub	r13d, esi
	jmp	.L59
.L39:
	add	r13d, esi
	jmp	.L59
.L45:
	cmp	r13d, esi
	sete	r13b
	movzx	r13d, r13b
	jmp	.L59
.L46:
	mov	edi, r13d
	call	pow@PLT
	mov	edi, DWORD PTR errno[rip]
	mov	r13d, eax
	test	edi, edi
	je	.L59
	call	safe_strerror@PLT
	lea	rdi, .LC1[rip]
	mov	esi, eax
	xor	eax, eax
	call	error@PLT
	jmp	.L59
.L47:
	cmp	r13d, esi
	setb	r13b
	movzx	r13d, r13b
	jmp	.L59
.L48:
	test	r13d, r13d
	setne	al
	xor	r13d, r13d
	test	esi, esi
	setne	r13b
	and	r13d, eax
	jmp	.L59
.L49:
	or	r13d, esi
	setne	r13b
	movzx	r13d, r13b
	jmp	.L59
.L50:
	mov	ecx, esi
	sal	r13d, cl
	jmp	.L59
.L51:
	cmp	r13d, esi
	cmovb	r13d, esi
	jmp	.L59
.L52:
	cmp	r13d, esi
	cmova	r13d, esi
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L24:
	lea	rdi, .LC3[rip]
	xor	eax, eax
	xor	r13d, r13d
	call	error@PLT
	.p2align 4,,10
	.p2align 3
.L31:
	mov	rdi, rbp
	call	allocate_value@PLT
	mov	rdi, rbp
	mov	r12, rax
	jmp	.L109
.L62:
	lea	rdi, .LC4[rip]
	xor	eax, eax
	xor	r13d, r13d
	call	error@PLT
	jmp	.L82
.L28:
	xor	r13d, eax
	jmp	.L31
.L29:
	cmp	r13d, eax
	sete	r13b
	movzx	r13d, r13b
	jmp	.L31
.L30:
	cmp	r13d, eax
	setne	r13b
	movzx	r13d, r13b
	jmp	.L31
.L25:
	and	r13d, eax
	jmp	.L31
.L27:
	or	r13d, eax
	jmp	.L31
.L38:
	lea	rdi, .LC4[rip]
	xor	eax, eax
	xor	r13d, r13d
	call	error@PLT
	jmp	.L59
	.cfi_endproc
.LFE0:
	.size	value_binop, .-value_binop
	.comm	errno,4,4
	.comm	builtin_type_unsigned_long_long,8,8
	.comm	builtin_type_unsigned_long,8,8
	.comm	builtin_type_long_long,8,8
	.comm	builtin_type_long_double,8,8
	.comm	builtin_type_long,8,8
	.comm	builtin_type_int,8,8
	.comm	builtin_type_double,8,8
	.comm	TYPE_CODE_RANGE,8,8
	.comm	TYPE_CODE_INT,8,8
	.comm	TYPE_CODE_FLT,8,8
	.comm	TYPE_CODE_CHAR,8,8
	.comm	TYPE_CODE_BOOL,8,8
	.comm	TRUNCATION_TOWARDS_ZERO,4,4
	.comm	TARGET_LONG_BIT,4,4
	.comm	TARGET_DOUBLE_BIT,4,4
	.comm	HOST_CHAR_BIT,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_valarith.c_value_binop.c"
	.text
	.section	.rodata.str1.4,"aMS",%progbits,1
	.align	2
.LC0:
	.ascii	"Argument to arithmetic operation not a number or bo"
	.ascii	"olean.\000"
	.global	__aeabi_uidiv
	.align	2
.LC1:
	.ascii	"Cannot perform exponentiation: %s\000"
	.align	2
.LC2:
	.ascii	"Integer-only operation on floating point number.\000"
	.align	2
.LC3:
	.ascii	"Invalid operation on booleans.\000"
	.global	__aeabi_uidivmod
	.align	2
.LC4:
	.ascii	"Invalid binary operation on numbers.\000"
	.text
	.align	2
	.global	value_binop
	.syntax unified
	.arm
	.fpu softvfp
	.type	value_binop, %function
value_binop:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
	mov	r5, r1
	mov	r8, r0
	mov	r6, r2
	bl	COERCE_REF
	mov	r0, r5
	bl	COERCE_REF
	mov	r0, r8
	bl	COERCE_ENUM
	mov	r0, r5
	bl	COERCE_ENUM
	mov	r0, r8
	bl	VALUE_TYPE
	bl	check_typedef
	mov	r4, r0
	mov	r0, r5
	bl	VALUE_TYPE
	bl	check_typedef
	mov	r7, r0
	mov	r0, r4
	bl	TYPE_CODE
	ldr	r9, .L119
	ldr	r3, [r9]
	cmp	r0, r3
	beq	.L5
	mov	r0, r4
	bl	TYPE_CODE
	ldr	r3, .L119+4
	ldr	r3, [r3]
	cmp	r0, r3
	bne	.L112
.L5:
	mov	r0, r7
	bl	TYPE_CODE
	ldr	r3, [r9]
	cmp	r0, r3
	bne	.L113
.L6:
	mov	r0, r4
	bl	TYPE_CODE
	ldr	r3, [r9]
	cmp	r0, r3
	beq	.L16
	mov	r0, r7
	bl	TYPE_CODE
	ldr	r3, [r9]
	cmp	r0, r3
	bne	.L114
.L16:
	mov	r0, r8
	bl	value_as_double
	mov	r1, r0
	sub	r6, r6, #128
	mov	r0, r5
	mov	r5, r1
	bl	value_as_double
	cmp	r6, #18
	ldrls	pc, [pc, r6, asl #2]
	b	.L9
.L11:
	.word	.L15
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L14
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L13
	.word	.L9
	.word	.L12
	.word	.L9
	.word	.L9
	.word	.L9
	.word	.L10
.L113:
	mov	r0, r7
	bl	TYPE_CODE
	ldr	r3, .L119+4
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L6
	mov	r0, r7
	bl	TYPE_CODE
	ldr	r3, .L119+8
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L6
	mov	r0, r7
	bl	TYPE_CODE
	ldr	r3, .L119+12
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L6
	mov	r0, r7
	bl	TYPE_CODE
	ldr	r3, .L119+16
	ldr	r3, [r3]
	cmp	r0, r3
	bne	.L7
	b	.L6
.L114:
	mov	r0, r4
	bl	TYPE_CODE
	ldr	r9, .L119+12
	ldr	r3, [r9]
	cmp	r0, r3
	beq	.L115
.L23:
	mov	r0, r4
	bl	TYPE_LENGTH
	mov	r9, r0
	mov	r0, r7
	bl	TYPE_LENGTH
	mov	r10, r0
	mov	r0, r4
	bl	TYPE_UNSIGNED
	mov	r4, r0
	mov	r0, r7
	bl	TYPE_UNSIGNED
	ldr	r7, .L119+20
	mov	fp, r0
	ldr	r0, [r7]
	bl	TYPE_LENGTH
	cmp	r0, r9
	bhi	.L116
.L32:
	ldr	r0, [r7]
	bl	TYPE_LENGTH
	cmp	r0, r10
	bhi	.L117
	cmp	r9, r10
	bhi	.L34
	movcc	r4, fp
	movcc	r9, r10
	bcc	.L34
	orr	r4, r4, fp
.L36:
	subs	r4, r4, #0
	movne	r4, #1
.L34:
	cmp	r4, #0
	beq	.L35
	mov	r0, r8
	bl	value_as_long
	mov	r4, r0
	mov	r0, r5
	bl	value_as_long
	cmp	r9, #3
	mvnls	r3, #0
	ldrls	r5, .L119+24
	sub	r6, r6, #128
	ldrls	r2, [r5]
	ldrhi	r5, .L119+24
	mulls	r2, r9, r2
	mvnls	r3, r3, lsl r2
	andls	r4, r4, r3
	andls	r0, r0, r3
	cmp	r6, #18
	ldrls	pc, [pc, r6, asl #2]
	b	.L38
.L40:
	.word	.L58
	.word	.L57
	.word	.L109
	.word	.L55
	.word	.L54
	.word	.L53
	.word	.L52
	.word	.L51
	.word	.L50
	.word	.L49
	.word	.L48
	.word	.L47
	.word	.L46
	.word	.L45
	.word	.L44
	.word	.L43
	.word	.L42
	.word	.L41
	.word	.L39
.L112:
	mov	r0, r4
	bl	TYPE_CODE
	ldr	r3, .L119+8
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L5
	mov	r0, r4
	bl	TYPE_CODE
	ldr	r3, .L119+12
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L5
	mov	r0, r4
	bl	TYPE_CODE
	ldr	r3, .L119+16
	ldr	r3, [r3]
	cmp	r0, r3
	beq	.L5
.L7:
	ldr	r0, .L119+28
	bl	error
	b	.L6
.L9:
	ldr	r0, .L119+32
	bl	error
	mov	r6, #0
.L18:
	mov	r0, r4
	bl	TYPE_LENGTH
	ldr	r4, .L119+36
	ldr	r3, [r4]
	cmp	r3, r0, lsl #3
	bcc	.L21
	mov	r0, r7
	bl	TYPE_LENGTH
	ldr	r3, [r4]
	cmp	r3, r0, lsl #3
	bcs	.L118
.L21:
	ldr	r3, .L119+40
	ldr	r0, [r3]
	bl	allocate_value
	mov	r5, r0
.L20:
	mov	r0, r5
	bl	VALUE_CONTENTS_RAW
	mov	r4, r0
	mov	r0, r5
	bl	VALUE_TYPE
	mov	r2, r6
	mov	r1, r0
	mov	r0, r4
	bl	store_typed_floating
.L1:
	mov	r0, r5
	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L117:
	ldr	r0, [r7]
	bl	TYPE_LENGTH
	cmp	r9, r0
	bhi	.L34
	bcs	.L36
	mov	r9, r0
.L35:
	mov	r0, r8
	bl	value_as_long
	sub	r6, r6, #128
	mov	r4, r0
	mov	r0, r5
	bl	value_as_long
	cmp	r6, #18
	ldrls	pc, [pc, r6, asl #2]
	b	.L62
.L64:
	.word	.L81
	.word	.L80
	.word	.L110
	.word	.L62
	.word	.L78
	.word	.L77
	.word	.L76
	.word	.L75
	.word	.L74
	.word	.L73
	.word	.L72
	.word	.L71
	.word	.L70
	.word	.L69
	.word	.L68
	.word	.L67
	.word	.L66
	.word	.L65
	.word	.L63
.L10:
	add	r6, r5, r0
	b	.L18
.L13:
	mov	r1, r0
	mov	r0, r5
	bl	pow
	ldr	r3, .L119+44
	mov	r6, r0
	ldr	r0, [r3]
	cmp	r0, #0
	beq	.L18
	bl	safe_strerror
	mov	r1, r0
	ldr	r0, .L119+48
	bl	error
	b	.L18
.L12:
	mov	r1, r0
	mov	r0, r5
	bl	__aeabi_uidiv
	mov	r6, r0
	b	.L18
.L15:
	sub	r6, r5, r0
	b	.L18
.L14:
	mul	r6, r0, r5
	b	.L18
.L118:
	ldr	r3, .L119+52
	ldr	r0, [r3]
	bl	allocate_value
	mov	r5, r0
	b	.L20
.L115:
	mov	r0, r7
	bl	TYPE_CODE
	ldr	r3, [r9]
	cmp	r0, r3
	bne	.L23
	mov	r0, r8
	bl	value_as_long
	mov	r2, r0
	sub	r6, r6, #131
	mov	r0, r5
	mov	r5, r2
	bl	value_as_long
	cmp	r6, #14
	ldrls	pc, [pc, r6, asl #2]
	b	.L24
.L26:
	.word	.L30
	.word	.L24
	.word	.L24
	.word	.L24
	.word	.L24
	.word	.L24
	.word	.L24
	.word	.L24
	.word	.L24
	.word	.L24
	.word	.L29
	.word	.L24
	.word	.L28
	.word	.L27
	.word	.L25
.L116:
	ldr	r0, [r7]
	bl	TYPE_LENGTH
	mov	r4, #0
	mov	r9, r0
	b	.L32
.L24:
	ldr	r0, .L119+56
	bl	error
	mov	r6, #0
.L31:
	mov	r0, r4
	bl	allocate_value
	mov	r5, r0
	bl	VALUE_CONTENTS_RAW
	mov	r3, r0
	mov	r0, r4
	mov	r4, r3
	bl	TYPE_LENGTH
	mov	r2, r6
	mov	r1, r0
	mov	r0, r4
	bl	store_signed_integer
	b	.L1
.L77:
	cmp	r0, #0
	beq	.L82
.L110:
	mov	r1, r0
	mov	r0, r4
	bl	__aeabi_uidivmod
	mov	r4, r1
.L82:
	ldr	r3, .L119+24
	ldr	r2, .L119+60
	ldr	r1, [r3]
	ldr	r0, [r2]
	bl	__aeabi_uidiv
	cmp	r0, r9
	ldrcc	r3, .L119+64
	ldrcs	r3, .L119+68
	ldr	r0, [r3]
	bl	allocate_value
	mov	r5, r0
	bl	VALUE_CONTENTS_RAW
	mov	r6, r0
	mov	r0, r5
	bl	VALUE_TYPE
	bl	TYPE_LENGTH
	mov	r2, r4
	mov	r1, r0
	mov	r0, r6
	bl	store_signed_integer
	mov	r0, r5
	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L80:
	lsr	r4, r4, r0
	b	.L82
.L81:
	sub	r4, r4, r0
	b	.L82
.L65:
	and	r4, r4, r0
	b	.L82
.L66:
	orr	r4, r4, r0
	b	.L82
.L63:
	add	r4, r4, r0
	b	.L82
.L67:
	eor	r4, r4, r0
	b	.L82
.L68:
	mov	r1, r0
	mov	r0, r4
	bl	__aeabi_uidiv
	mov	r4, r0
	b	.L82
.L69:
	sub	r4, r4, r0
	clz	r4, r4
	lsr	r4, r4, #5
	b	.L82
.L70:
	mov	r1, r0
	mov	r0, r4
	bl	pow
	ldr	r3, .L119+44
	mov	r4, r0
	ldr	r0, [r3]
	cmp	r0, #0
	beq	.L82
	bl	safe_strerror
	mov	r1, r0
	ldr	r0, .L119+48
	bl	error
	b	.L82
.L71:
	cmp	r4, r0
	movcs	r4, #0
	movcc	r4, #1
	b	.L82
.L72:
	subs	r0, r0, #0
	movne	r0, #1
	cmp	r4, #0
	movne	r4, r0
	moveq	r4, #0
	b	.L82
.L73:
	orrs	r3, r4, r0
	movne	r4, #1
	moveq	r4, #0
	b	.L82
.L74:
	lsl	r4, r4, r0
	b	.L82
.L75:
	cmp	r4, r0
	movcc	r4, r0
	b	.L82
.L76:
	cmp	r4, r0
	movcs	r4, r0
	b	.L82
.L78:
	mul	r4, r0, r4
	b	.L82
.L53:
	cmp	r0, #0
	beq	.L59
.L109:
	mov	r1, r0
	mov	r0, r4
	bl	__aeabi_uidivmod
	mov	r4, r1
.L59:
	ldr	r3, .L119+60
	ldr	r1, [r5]
	ldr	r0, [r3]
	bl	__aeabi_uidiv
	cmp	r0, r9
	ldrcc	r3, .L119+72
	ldrcs	r3, .L119+76
	ldr	r0, [r3]
	bl	allocate_value
	mov	r5, r0
	bl	VALUE_CONTENTS_RAW
	mov	r6, r0
	mov	r0, r5
	bl	VALUE_TYPE
	bl	TYPE_LENGTH
	mov	r2, r4
	mov	r1, r0
	mov	r0, r6
	bl	store_unsigned_integer
	mov	r0, r5
	pop	{r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L57:
	lsr	r4, r4, r0
	b	.L59
.L39:
	add	r4, r4, r0
	b	.L59
.L41:
	and	r4, r4, r0
	b	.L59
.L42:
	orr	r4, r4, r0
	b	.L59
.L43:
	eor	r4, r4, r0
	b	.L59
.L58:
	sub	r4, r4, r0
	b	.L59
.L52:
	cmp	r4, r0
	movcs	r4, r0
	b	.L59
.L54:
	mul	r4, r0, r4
	b	.L59
.L55:
	subs	r4, r4, r0
	movne	r4, #1
	b	.L59
.L44:
	mov	r1, r0
	mov	r0, r4
	bl	__aeabi_uidiv
	mov	r4, r0
	b	.L59
.L45:
	sub	r4, r4, r0
	clz	r4, r4
	lsr	r4, r4, #5
	b	.L59
.L46:
	mov	r1, r0
	mov	r0, r4
	bl	pow
	ldr	r3, .L119+44
	mov	r4, r0
	ldr	r0, [r3]
	cmp	r0, #0
	beq	.L59
	bl	safe_strerror
	mov	r1, r0
	ldr	r0, .L119+48
	bl	error
	b	.L59
.L47:
	cmp	r4, r0
	movcs	r4, #0
	movcc	r4, #1
	b	.L59
.L48:
	subs	r0, r0, #0
	movne	r0, #1
	cmp	r4, #0
	movne	r4, r0
	moveq	r4, #0
	b	.L59
.L49:
	orrs	r3, r4, r0
	movne	r4, #1
	moveq	r4, #0
	b	.L59
.L50:
	lsl	r4, r4, r0
	b	.L59
.L51:
	cmp	r4, r0
	movcc	r4, r0
	b	.L59
.L62:
	ldr	r0, .L119+80
	bl	error
	mov	r4, #0
	b	.L82
.L25:
	and	r6, r5, r0
	b	.L31
.L27:
	orr	r6, r5, r0
	b	.L31
.L28:
	eor	r6, r5, r0
	b	.L31
.L29:
	sub	r6, r5, r0
	clz	r6, r6
	lsr	r6, r6, #5
	b	.L31
.L30:
	subs	r6, r5, r0
	movne	r6, #1
	b	.L31
.L38:
	ldr	r0, .L119+80
	bl	error
	mov	r4, #0
	b	.L59
.L120:
	.align	2
.L119:
	.word	TYPE_CODE_FLT
	.word	TYPE_CODE_CHAR
	.word	TYPE_CODE_INT
	.word	TYPE_CODE_BOOL
	.word	TYPE_CODE_RANGE
	.word	builtin_type_int
	.word	HOST_CHAR_BIT
	.word	.LC0
	.word	.LC2
	.word	TARGET_DOUBLE_BIT
	.word	builtin_type_long_double
	.word	errno
	.word	.LC1
	.word	builtin_type_double
	.word	.LC3
	.word	TARGET_LONG_BIT
	.word	builtin_type_long_long
	.word	builtin_type_long
	.word	builtin_type_unsigned_long_long
	.word	builtin_type_unsigned_long
	.word	.LC4
	.size	value_binop, .-value_binop
	.comm	errno,4,4
	.comm	builtin_type_unsigned_long_long,4,4
	.comm	builtin_type_unsigned_long,4,4
	.comm	builtin_type_long_long,4,4
	.comm	builtin_type_long_double,4,4
	.comm	builtin_type_long,4,4
	.comm	builtin_type_int,4,4
	.comm	builtin_type_double,4,4
	.comm	TYPE_CODE_RANGE,4,4
	.comm	TYPE_CODE_INT,4,4
	.comm	TYPE_CODE_FLT,4,4
	.comm	TYPE_CODE_CHAR,4,4
	.comm	TYPE_CODE_BOOL,4,4
	.comm	TRUNCATION_TOWARDS_ZERO,4,4
	.comm	TARGET_LONG_BIT,4,4
	.comm	TARGET_DOUBLE_BIT,4,4
	.comm	HOST_CHAR_BIT,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
