	.file	"9512379.c"
	.intel_syntax noprefix
	.text
	.globl	circle_perim
	.type	circle_perim, @function
circle_perim:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movsd	xmm1, QWORD PTR 32[rbp]
	movsd	xmm0, QWORD PTR .LC0[rip]
	mulsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	circle_perim, .-circle_perim
	.globl	circle_area
	.type	circle_area, @function
circle_area:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movsd	xmm1, QWORD PTR 32[rbp]
	movsd	xmm0, QWORD PTR .LC1[rip]
	mulsd	xmm1, xmm0
	movsd	xmm0, QWORD PTR 32[rbp]
	mulsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	circle_area, .-circle_area
	.globl	circle_delete
	.type	circle_delete, @function
circle_delete:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	circle_delete, .-circle_delete
	.section	.rodata
.LC2:
	.string	"%lf"
	.text
	.globl	circle_new
	.type	circle_new, @function
circle_new:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edi, 32
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 16
	mov	rsi, rax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, circle_perim[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, circle_area[rip]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, circle_delete[rip]
	mov	QWORD PTR 24[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	circle_new, .-circle_new
	.globl	rect_perim
	.type	rect_perim, @function
rect_perim:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movsd	xmm1, QWORD PTR 32[rbp]
	movsd	xmm0, QWORD PTR 40[rbp]
	addsd	xmm0, xmm1
	addsd	xmm0, xmm0
	movq	rax, xmm0
	movq	xmm0, rax
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	rect_perim, .-rect_perim
	.globl	rect_area
	.type	rect_area, @function
rect_area:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movsd	xmm1, QWORD PTR 32[rbp]
	movsd	xmm0, QWORD PTR 40[rbp]
	mulsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	rect_area, .-rect_area
	.globl	rect_delete
	.type	rect_delete, @function
rect_delete:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	rect_delete, .-rect_delete
	.globl	rect_new
	.type	rect_new, @function
rect_new:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edi, 40
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 16
	mov	rsi, rax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 24
	mov	rsi, rax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, rect_perim[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, rect_area[rip]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, rect_delete[rip]
	mov	QWORD PTR 32[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	rect_new, .-rect_new
	.globl	square_perim
	.type	square_perim, @function
square_perim:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movsd	xmm1, QWORD PTR 32[rbp]
	movsd	xmm0, QWORD PTR .LC3[rip]
	mulsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	square_perim, .-square_perim
	.globl	square_area
	.type	square_area, @function
square_area:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movsd	xmm1, QWORD PTR 32[rbp]
	movsd	xmm0, QWORD PTR 32[rbp]
	mulsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	square_area, .-square_area
	.globl	square_delete
	.type	square_delete, @function
square_delete:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	square_delete, .-square_delete
	.globl	square_new
	.type	square_new, @function
square_new:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edi, 32
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 16
	mov	rsi, rax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, square_perim[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, square_area[rip]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, square_delete[rip]
	mov	QWORD PTR 24[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	square_new, .-square_new
	.globl	tri_perim
	.type	tri_perim, @function
tri_perim:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movsd	xmm1, QWORD PTR 32[rbp]
	movsd	xmm0, QWORD PTR 40[rbp]
	addsd	xmm1, xmm0
	movsd	xmm0, QWORD PTR 48[rbp]
	addsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	tri_perim, .-tri_perim
	.globl	tri_area
	.type	tri_area, @function
tri_area:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	push	QWORD PTR 56[rbp]
	push	QWORD PTR 48[rbp]
	push	QWORD PTR 40[rbp]
	push	QWORD PTR 32[rbp]
	push	QWORD PTR 24[rbp]
	push	QWORD PTR 16[rbp]
	call	tri_perim
	add	rsp, 48
	movq	rax, xmm0
	movsd	xmm1, QWORD PTR .LC4[rip]
	movq	xmm0, rax
	divsd	xmm0, xmm1
	movsd	QWORD PTR -8[rbp], xmm0
	movsd	xmm1, QWORD PTR 32[rbp]
	movsd	xmm0, QWORD PTR -8[rbp]
	subsd	xmm0, xmm1
	movapd	xmm1, xmm0
	mulsd	xmm1, QWORD PTR -8[rbp]
	movsd	xmm2, QWORD PTR 40[rbp]
	movsd	xmm0, QWORD PTR -8[rbp]
	subsd	xmm0, xmm2
	mulsd	xmm1, xmm0
	movsd	xmm2, QWORD PTR 48[rbp]
	movsd	xmm0, QWORD PTR -8[rbp]
	subsd	xmm0, xmm2
	mulsd	xmm1, xmm0
	movq	rax, xmm1
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	movq	xmm0, rax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	tri_area, .-tri_area
	.globl	tri_delete
	.type	tri_delete, @function
tri_delete:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	tri_delete, .-tri_delete
	.globl	tri_new
	.type	tri_new, @function
tri_new:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edi, 48
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 16
	mov	rsi, rax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 24
	mov	rsi, rax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 32
	mov	rsi, rax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, tri_perim[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, tri_area[rip]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, tri_delete[rip]
	mov	QWORD PTR 40[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	tri_new, .-tri_new
	.section	.rodata
.LC6:
	.string	"%d"
.LC7:
	.string	"%.2lf %.2lf\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	pxor	xmm0, xmm0
	movsd	QWORD PTR -32[rbp], xmm0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -24[rbp], xmm0
	lea	rax, -56[rbp]
	mov	rsi, rax
	lea	rdi, .LC6[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	call	getchar@PLT
	mov	DWORD PTR -52[rbp], 0
	jmp	.L30
.L36:
	call	getchar@PLT
	mov	BYTE PTR -57[rbp], al
	call	getchar@PLT
	movsx	eax, BYTE PTR -57[rbp]
	cmp	eax, 84
	je	.L31
	cmp	eax, 84
	jg	.L32
	cmp	eax, 83
	je	.L33
	cmp	eax, 83
	jg	.L32
	cmp	eax, 67
	je	.L34
	cmp	eax, 82
	je	.L35
	jmp	.L32
.L34:
	mov	eax, 0
	call	circle_new
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	push	QWORD PTR 24[rax]
	push	QWORD PTR 16[rax]
	push	QWORD PTR 8[rax]
	push	QWORD PTR [rax]
	call	rdx
	add	rsp, 32
	movq	rax, xmm0
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -16[rbp]
	push	QWORD PTR 24[rax]
	push	QWORD PTR 16[rax]
	push	QWORD PTR 8[rax]
	push	QWORD PTR [rax]
	call	rdx
	add	rsp, 32
	movq	rax, xmm0
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	rdx
	jmp	.L32
.L35:
	mov	eax, 0
	call	rect_new
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	sub	rsp, 8
	mov	rax, QWORD PTR -16[rbp]
	push	QWORD PTR 32[rax]
	push	QWORD PTR 24[rax]
	push	QWORD PTR 16[rax]
	push	QWORD PTR 8[rax]
	push	QWORD PTR [rax]
	call	rdx
	add	rsp, 48
	movq	rax, xmm0
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 8[rax]
	sub	rsp, 8
	mov	rax, QWORD PTR -16[rbp]
	push	QWORD PTR 32[rax]
	push	QWORD PTR 24[rax]
	push	QWORD PTR 16[rax]
	push	QWORD PTR 8[rax]
	push	QWORD PTR [rax]
	call	rdx
	add	rsp, 48
	movq	rax, xmm0
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 32[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	rdx
	jmp	.L32
.L33:
	mov	eax, 0
	call	square_new
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	push	QWORD PTR 24[rax]
	push	QWORD PTR 16[rax]
	push	QWORD PTR 8[rax]
	push	QWORD PTR [rax]
	call	rdx
	add	rsp, 32
	movq	rax, xmm0
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -16[rbp]
	push	QWORD PTR 24[rax]
	push	QWORD PTR 16[rax]
	push	QWORD PTR 8[rax]
	push	QWORD PTR [rax]
	call	rdx
	add	rsp, 32
	movq	rax, xmm0
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	rdx
	jmp	.L32
.L31:
	mov	eax, 0
	call	tri_new
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	push	QWORD PTR 40[rax]
	push	QWORD PTR 32[rax]
	push	QWORD PTR 24[rax]
	push	QWORD PTR 16[rax]
	push	QWORD PTR 8[rax]
	push	QWORD PTR [rax]
	call	rdx
	add	rsp, 48
	movq	rax, xmm0
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -16[rbp]
	push	QWORD PTR 40[rax]
	push	QWORD PTR 32[rax]
	push	QWORD PTR 24[rax]
	push	QWORD PTR 16[rax]
	push	QWORD PTR 8[rax]
	push	QWORD PTR [rax]
	call	rdx
	add	rsp, 48
	movq	rax, xmm0
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 40[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	rdx
	nop
.L32:
	movsd	xmm0, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -48[rbp]
	movapd	xmm1, xmm0
	movq	xmm0, rax
	lea	rdi, .LC7[rip]
	mov	eax, 2
	call	printf@PLT
	movsd	xmm0, QWORD PTR -32[rbp]
	addsd	xmm0, QWORD PTR -48[rbp]
	movsd	QWORD PTR -32[rbp], xmm0
	movsd	xmm0, QWORD PTR -24[rbp]
	addsd	xmm0, QWORD PTR -40[rbp]
	movsd	QWORD PTR -24[rbp], xmm0
	call	getchar@PLT
	add	DWORD PTR -52[rbp], 1
.L30:
	mov	eax, DWORD PTR -56[rbp]
	cmp	DWORD PTR -52[rbp], eax
	jl	.L36
	movsd	xmm0, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -32[rbp]
	movapd	xmm1, xmm0
	movq	xmm0, rax
	lea	rdi, .LC7[rip]
	mov	eax, 2
	call	printf@PLT
	mov	eax, 0
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L38
	call	__stack_chk_fail@PLT
.L38:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	main, .-main
	.section	.rodata
	.align 8
.LC0:
	.long	1374389535
	.long	1075388088
	.align 8
.LC1:
	.long	1374389535
	.long	1074339512
	.align 8
.LC3:
	.long	0
	.long	1074790400
	.align 8
.LC4:
	.long	0
	.long	1073741824
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.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, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"9512379.c"
	.text
	.global	__aeabi_dmul
	.align	2
	.global	circle_perim
	.syntax unified
	.arm
	.fpu softvfp
	.type	circle_perim, %function
circle_perim:
	@ args = 24, pretend = 16, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	sub	sp, sp, #16
	push	{fp, lr}
	add	fp, sp, #4
	add	ip, fp, #4
	stm	ip, {r0, r1, r2, r3}
	add	r1, fp, #12
	ldmia	r1, {r0-r1}
	ldr	r2, .L3
	ldr	r3, .L3+4
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
.L4:
	.align	2
.L3:
	.word	1374389535
	.word	1075388088
	.size	circle_perim, .-circle_perim
	.align	2
	.global	circle_area
	.syntax unified
	.arm
	.fpu softvfp
	.type	circle_area, %function
circle_area:
	@ args = 24, pretend = 16, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	sub	sp, sp, #16
	push	{fp, lr}
	add	fp, sp, #4
	add	ip, fp, #4
	stm	ip, {r0, r1, r2, r3}
	add	r1, fp, #12
	ldmia	r1, {r0-r1}
	ldr	r2, .L7
	ldr	r3, .L7+4
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	add	r3, fp, #12
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
.L8:
	.align	2
.L7:
	.word	1374389535
	.word	1074339512
	.size	circle_area, .-circle_area
	.align	2
	.global	circle_delete
	.syntax unified
	.arm
	.fpu softvfp
	.type	circle_delete, %function
circle_delete:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	free
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	circle_delete, .-circle_delete
	.section	.rodata
	.align	2
.LC0:
	.ascii	"%lf\000"
	.text
	.align	2
	.global	circle_new
	.syntax unified
	.arm
	.fpu softvfp
	.type	circle_new, %function
circle_new:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r0, #24
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L12
	bl	__isoc99_scanf
	ldr	r3, [fp, #-8]
	ldr	r2, .L12+4
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, .L12+8
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r2, .L12+12
	str	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L13:
	.align	2
.L12:
	.word	.LC0
	.word	circle_perim
	.word	circle_area
	.word	circle_delete
	.size	circle_new, .-circle_new
	.global	__aeabi_dadd
	.align	2
	.global	rect_perim
	.syntax unified
	.arm
	.fpu softvfp
	.type	rect_perim, %function
rect_perim:
	@ args = 32, pretend = 16, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	sub	sp, sp, #16
	push	{fp, lr}
	add	fp, sp, #4
	add	ip, fp, #4
	stm	ip, {r0, r1, r2, r3}
	add	r1, fp, #12
	ldmia	r1, {r0-r1}
	add	r3, fp, #20
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
	.size	rect_perim, .-rect_perim
	.align	2
	.global	rect_area
	.syntax unified
	.arm
	.fpu softvfp
	.type	rect_area, %function
rect_area:
	@ args = 32, pretend = 16, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	sub	sp, sp, #16
	push	{fp, lr}
	add	fp, sp, #4
	add	ip, fp, #4
	stm	ip, {r0, r1, r2, r3}
	add	r1, fp, #12
	ldmia	r1, {r0-r1}
	add	r3, fp, #20
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
	.size	rect_area, .-rect_area
	.align	2
	.global	rect_delete
	.syntax unified
	.arm
	.fpu softvfp
	.type	rect_delete, %function
rect_delete:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	free
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	rect_delete, .-rect_delete
	.align	2
	.global	rect_new
	.syntax unified
	.arm
	.fpu softvfp
	.type	rect_new, %function
rect_new:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r0, #32
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L21
	bl	__isoc99_scanf
	ldr	r3, [fp, #-8]
	add	r3, r3, #16
	mov	r1, r3
	ldr	r0, .L21
	bl	__isoc99_scanf
	ldr	r3, [fp, #-8]
	ldr	r2, .L21+4
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, .L21+8
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r2, .L21+12
	str	r2, [r3, #24]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L22:
	.align	2
.L21:
	.word	.LC0
	.word	rect_perim
	.word	rect_area
	.word	rect_delete
	.size	rect_new, .-rect_new
	.align	2
	.global	square_perim
	.syntax unified
	.arm
	.fpu softvfp
	.type	square_perim, %function
square_perim:
	@ args = 24, pretend = 16, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	sub	sp, sp, #16
	push	{fp, lr}
	add	fp, sp, #4
	add	ip, fp, #4
	stm	ip, {r0, r1, r2, r3}
	add	r1, fp, #12
	ldmia	r1, {r0-r1}
	mov	r2, #0
	ldr	r3, .L25
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
.L26:
	.align	2
.L25:
	.word	1074790400
	.size	square_perim, .-square_perim
	.align	2
	.global	square_area
	.syntax unified
	.arm
	.fpu softvfp
	.type	square_area, %function
square_area:
	@ args = 24, pretend = 16, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	sub	sp, sp, #16
	push	{fp, lr}
	add	fp, sp, #4
	add	ip, fp, #4
	stm	ip, {r0, r1, r2, r3}
	add	r1, fp, #12
	ldmia	r1, {r0-r1}
	add	r3, fp, #12
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
	.size	square_area, .-square_area
	.align	2
	.global	square_delete
	.syntax unified
	.arm
	.fpu softvfp
	.type	square_delete, %function
square_delete:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	free
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	square_delete, .-square_delete
	.align	2
	.global	square_new
	.syntax unified
	.arm
	.fpu softvfp
	.type	square_new, %function
square_new:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r0, #24
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L32
	bl	__isoc99_scanf
	ldr	r3, [fp, #-8]
	ldr	r2, .L32+4
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, .L32+8
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r2, .L32+12
	str	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L33:
	.align	2
.L32:
	.word	.LC0
	.word	square_perim
	.word	square_area
	.word	square_delete
	.size	square_new, .-square_new
	.align	2
	.global	tri_perim
	.syntax unified
	.arm
	.fpu softvfp
	.type	tri_perim, %function
tri_perim:
	@ args = 40, pretend = 16, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	sub	sp, sp, #16
	push	{fp, lr}
	add	fp, sp, #4
	add	ip, fp, #4
	stm	ip, {r0, r1, r2, r3}
	add	r1, fp, #12
	ldmia	r1, {r0-r1}
	add	r3, fp, #20
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	add	r3, fp, #28
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
	.size	tri_perim, .-tri_perim
	.global	__aeabi_ddiv
	.global	__aeabi_dsub
	.align	2
	.global	tri_area
	.syntax unified
	.arm
	.fpu softvfp
	.type	tri_area, %function
tri_area:
	@ args = 40, pretend = 16, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	sub	sp, sp, #16
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #32
	add	ip, fp, #4
	stm	ip, {r0, r1, r2, r3}
	mov	lr, sp
	add	ip, fp, #20
	ldmia	ip!, {r0, r1, r2, r3}
	stmia	lr!, {r0, r1, r2, r3}
	ldm	ip, {r0, r1}
	stm	lr, {r0, r1}
	add	r3, fp, #4
	ldm	r3, {r0, r1, r2, r3}
	bl	tri_perim
	mov	r2, #0
	mov	r3, #1073741824
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	add	r3, fp, #12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	add	r3, fp, #20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	add	r3, fp, #28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	sqrt
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, lr}
	add	sp, sp, #16
	bx	lr
	.size	tri_area, .-tri_area
	.align	2
	.global	tri_delete
	.syntax unified
	.arm
	.fpu softvfp
	.type	tri_delete, %function
tri_delete:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	free
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	tri_delete, .-tri_delete
	.align	2
	.global	tri_new
	.syntax unified
	.arm
	.fpu softvfp
	.type	tri_new, %function
tri_new:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r0, #40
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, .L41
	bl	__isoc99_scanf
	ldr	r3, [fp, #-8]
	add	r3, r3, #16
	mov	r1, r3
	ldr	r0, .L41
	bl	__isoc99_scanf
	ldr	r3, [fp, #-8]
	add	r3, r3, #24
	mov	r1, r3
	ldr	r0, .L41
	bl	__isoc99_scanf
	ldr	r3, [fp, #-8]
	ldr	r2, .L41+4
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, .L41+8
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r2, .L41+12
	str	r2, [r3, #32]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L42:
	.align	2
.L41:
	.word	.LC0
	.word	tri_perim
	.word	tri_area
	.word	tri_delete
	.size	tri_new, .-tri_new
	.section	.rodata
	.align	2
.LC1:
	.ascii	"%d\000"
	.align	2
.LC2:
	.ascii	"%.2lf %.2lf\012\000"
	.align	2
.LC3:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #80
	ldr	r3, .L54
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	sub	r3, fp, #64
	mov	r1, r3
	ldr	r0, .L54+4
	bl	__isoc99_scanf
	bl	getchar
	mov	r3, #0
	str	r3, [fp, #-60]
	b	.L44
.L51:
	bl	getchar
	mov	r3, r0
	strb	r3, [fp, #-65]
	bl	getchar
	ldrb	r3, [fp, #-65]	@ zero_extendqisi2
	sub	r3, r3, #67
	cmp	r3, #17
	ldrls	pc, [pc, r3, asl #2]
	b	.L45
.L47:
	.word	.L50
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L45
	.word	.L49
	.word	.L48
	.word	.L46
.L50:
	bl	circle_new
	str	r0, [fp, #-56]
	ldr	r3, [fp, #-56]
	ldr	r4, [r3]
	ldr	r3, [fp, #-56]
	mov	ip, sp
	add	r2, r3, #16
	ldm	r2, {r0, r1}
	stm	ip, {r0, r1}
	ldm	r3, {r0, r1, r2, r3}
	blx	r4
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	ldr	r3, [fp, #-56]
	ldr	r4, [r3, #4]
	ldr	r3, [fp, #-56]
	mov	ip, sp
	add	r2, r3, #16
	ldm	r2, {r0, r1}
	stm	ip, {r0, r1}
	ldm	r3, {r0, r1, r2, r3}
	blx	r4
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #16]
	ldr	r0, [fp, #-56]
	blx	r3
	b	.L45
.L49:
	bl	rect_new
	str	r0, [fp, #-56]
	ldr	r3, [fp, #-56]
	ldr	r4, [r3]
	ldr	ip, [fp, #-56]
	mov	lr, sp
	add	r3, ip, #16
	ldm	r3, {r0, r1, r2, r3}
	stm	lr, {r0, r1, r2, r3}
	ldm	ip, {r0, r1, r2, r3}
	blx	r4
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	ldr	r3, [fp, #-56]
	ldr	r4, [r3, #4]
	ldr	ip, [fp, #-56]
	mov	lr, sp
	add	r3, ip, #16
	ldm	r3, {r0, r1, r2, r3}
	stm	lr, {r0, r1, r2, r3}
	ldm	ip, {r0, r1, r2, r3}
	blx	r4
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #24]
	ldr	r0, [fp, #-56]
	blx	r3
	b	.L45
.L48:
	bl	square_new
	str	r0, [fp, #-56]
	ldr	r3, [fp, #-56]
	ldr	r4, [r3]
	ldr	r3, [fp, #-56]
	mov	ip, sp
	add	r2, r3, #16
	ldm	r2, {r0, r1}
	stm	ip, {r0, r1}
	ldm	r3, {r0, r1, r2, r3}
	blx	r4
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	ldr	r3, [fp, #-56]
	ldr	r4, [r3, #4]
	ldr	r3, [fp, #-56]
	mov	ip, sp
	add	r2, r3, #16
	ldm	r2, {r0, r1}
	stm	ip, {r0, r1}
	ldm	r3, {r0, r1, r2, r3}
	blx	r4
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #16]
	ldr	r0, [fp, #-56]
	blx	r3
	b	.L45
.L46:
	bl	tri_new
	str	r0, [fp, #-56]
	ldr	r3, [fp, #-56]
	ldr	r5, [r3]
	ldr	r4, [fp, #-56]
	mov	lr, sp
	add	ip, r4, #16
	ldmia	ip!, {r0, r1, r2, r3}
	stmia	lr!, {r0, r1, r2, r3}
	ldm	ip, {r0, r1}
	stm	lr, {r0, r1}
	ldm	r4, {r0, r1, r2, r3}
	blx	r5
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	ldr	r3, [fp, #-56]
	ldr	r5, [r3, #4]
	ldr	r4, [fp, #-56]
	mov	lr, sp
	add	ip, r4, #16
	ldmia	ip!, {r0, r1, r2, r3}
	stmia	lr!, {r0, r1, r2, r3}
	ldm	ip, {r0, r1}
	stm	lr, {r0, r1}
	ldm	r4, {r0, r1, r2, r3}
	blx	r5
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #32]
	ldr	r0, [fp, #-56]
	blx	r3
	nop
.L45:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, .L54+8
	bl	printf
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	bl	getchar
	ldr	r3, [fp, #-60]
	add	r3, r3, #1
	str	r3, [fp, #-60]
.L44:
	ldr	r3, [fp, #-64]
	ldr	r2, [fp, #-60]
	cmp	r2, r3
	blt	.L51
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	ldr	r0, .L54+8
	bl	printf
	mov	r3, #0
	ldr	r2, .L54
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L53
	bl	__stack_chk_fail
.L53:
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L55:
	.align	2
.L54:
	.word	.LC3
	.word	.LC1
	.word	.LC2
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
