	.file	"123059.c"
	.intel_syntax noprefix
	.text
	.globl	outfile
	.bss
	.align 8
	.type	outfile, @object
	.size	outfile, 8
outfile:
	.zero	8
	.globl	outfile_name
	.align 8
	.type	outfile_name, @object
	.size	outfile_name, 8
outfile_name:
	.zero	8
	.globl	image_data
	.align 8
	.type	image_data, @object
	.size	image_data, 8
image_data:
	.zero	8
	.globl	current_color
	.align 4
	.type	current_color, @object
	.size	current_color, 4
current_color:
	.zero	4
	.globl	enable_pbm
	.data
	.align 4
	.type	enable_pbm, @object
	.size	enable_pbm, 4
enable_pbm:
	.long	1
	.globl	enable_pgm
	.bss
	.align 4
	.type	enable_pgm, @object
	.size	enable_pgm, 4
enable_pgm:
	.zero	4
	.globl	enable_dsc
	.data
	.align 4
	.type	enable_dsc, @object
	.size	enable_dsc, 4
enable_dsc:
	.long	1
	.globl	enable_bresenham
	.bss
	.align 4
	.type	enable_bresenham, @object
	.size	enable_bresenham, 4
enable_bresenham:
	.zero	4
	.globl	enable_midpoint
	.align 4
	.type	enable_midpoint, @object
	.size	enable_midpoint, 4
enable_midpoint:
	.zero	4
	.globl	enable_dda
	.align 4
	.type	enable_dda, @object
	.size	enable_dda, 4
enable_dda:
	.zero	4
	.globl	x_dim
	.data
	.align 4
	.type	x_dim, @object
	.size	x_dim, 4
x_dim:
	.long	256
	.globl	y_dim
	.align 4
	.type	y_dim, @object
	.size	y_dim, 4
y_dim:
	.long	256
	.section	.rodata
.LC0:
	.string	"P1\n"
.LC1:
	.string	"P4\n"
.LC2:
	.string	"# %s\n"
.LC3:
	.string	"%d %d\n"
.LC4:
	.string	"%d "
	.text
	.globl	write_pbm_file
	.type	write_pbm_file, @function
write_pbm_file:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	mov	DWORD PTR -60[rbp], ecx
	mov	DWORD PTR -64[rbp], r8d
	mov	DWORD PTR -68[rbp], r9d
	mov	eax, DWORD PTR -60[rbp]
	imul	eax, DWORD PTR -68[rbp]
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -64[rbp]
	imul	eax, DWORD PTR 16[rbp]
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR 32[rbp], 1
	jne	.L2
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, rax
	mov	edx, 3
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	DWORD PTR -16[rbp], 1
	jmp	.L3
.L2:
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, rax
	mov	edx, 3
	mov	esi, 1
	lea	rdi, .LC1[rip]
	call	fwrite@PLT
	mov	DWORD PTR -16[rbp], 8
.L3:
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, .LC2[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	ecx, DWORD PTR -8[rbp]
	mov	edx, DWORD PTR -12[rbp]
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, .LC3[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	DWORD PTR -32[rbp], 0
	jmp	.L4
.L12:
	mov	DWORD PTR -28[rbp], 0
	jmp	.L5
.L11:
	cmp	DWORD PTR 32[rbp], 1
	jne	.L6
	mov	eax, DWORD PTR -32[rbp]
	imul	eax, DWORD PTR -12[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -28[rbp]
	add	eax, edx
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, .LC4[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	jmp	.L7
.L6:
	mov	DWORD PTR -20[rbp], 0
	mov	DWORD PTR -24[rbp], 0
	jmp	.L8
.L9:
	mov	eax, DWORD PTR -32[rbp]
	imul	eax, DWORD PTR -12[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -28[rbp]
	add	edx, eax
	mov	eax, DWORD PTR -24[rbp]
	add	eax, edx
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, 7
	sub	eax, DWORD PTR -24[rbp]
	mov	edx, DWORD PTR -4[rbp]
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	or	DWORD PTR -20[rbp], eax
	add	DWORD PTR -24[rbp], 1
.L8:
	cmp	DWORD PTR -24[rbp], 7
	jle	.L9
	mov	rdx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -20[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	fputc@PLT
.L7:
	mov	eax, DWORD PTR -32[rbp]
	imul	eax, DWORD PTR -12[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -28[rbp]
	add	eax, edx
	cdq
	idiv	DWORD PTR 24[rbp]
	mov	eax, DWORD PTR 24[rbp]
	sub	eax, 1
	cmp	edx, eax
	jne	.L10
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rax
	mov	edi, 10
	call	fputc@PLT
.L10:
	mov	eax, DWORD PTR -16[rbp]
	add	DWORD PTR -28[rbp], eax
.L5:
	mov	eax, DWORD PTR -28[rbp]
	cmp	eax, DWORD PTR -12[rbp]
	jl	.L11
	add	DWORD PTR -32[rbp], 1
.L4:
	mov	eax, DWORD PTR -32[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L12
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	fclose@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	write_pbm_file, .-write_pbm_file
	.section	.rodata
.LC5:
	.string	"P2\n"
.LC6:
	.string	"P5\n"
.LC7:
	.string	"%d\n"
	.text
	.globl	write_pgm_file
	.type	write_pgm_file, @function
write_pgm_file:
.LFB7:
	.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	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	DWORD PTR -44[rbp], ecx
	mov	DWORD PTR -48[rbp], r8d
	mov	DWORD PTR -52[rbp], r9d
	mov	eax, DWORD PTR -44[rbp]
	imul	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	imul	eax, DWORD PTR 16[rbp]
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR 40[rbp], 1
	jne	.L14
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, rax
	mov	edx, 3
	mov	esi, 1
	lea	rdi, .LC5[rip]
	call	fwrite@PLT
	jmp	.L15
.L14:
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, rax
	mov	edx, 3
	mov	esi, 1
	lea	rdi, .LC6[rip]
	call	fwrite@PLT
.L15:
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC2[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	ecx, DWORD PTR -4[rbp]
	mov	edx, DWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC3[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edx, DWORD PTR 24[rbp]
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC7[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	DWORD PTR -16[rbp], 0
	jmp	.L16
.L21:
	mov	DWORD PTR -12[rbp], 0
	jmp	.L17
.L20:
	cmp	DWORD PTR 40[rbp], 1
	jne	.L18
	mov	eax, DWORD PTR -16[rbp]
	imul	eax, DWORD PTR -8[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -12[rbp]
	add	eax, edx
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC4[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, DWORD PTR -16[rbp]
	imul	eax, DWORD PTR -8[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -12[rbp]
	add	eax, edx
	cdq
	idiv	DWORD PTR 32[rbp]
	mov	eax, DWORD PTR 32[rbp]
	sub	eax, 1
	cmp	edx, eax
	jne	.L19
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	mov	edi, 10
	call	fputc@PLT
	jmp	.L19
.L18:
	mov	eax, DWORD PTR -16[rbp]
	imul	eax, DWORD PTR -8[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -12[rbp]
	add	eax, edx
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	fputc@PLT
.L19:
	add	DWORD PTR -12[rbp], 1
.L17:
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L20
	add	DWORD PTR -16[rbp], 1
.L16:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jl	.L21
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	fclose@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	write_pgm_file, .-write_pgm_file
	.globl	dsc
	.type	dsc, @function
dsc:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	DWORD PTR -28[rbp], edx
	mov	DWORD PTR -32[rbp], ecx
	mov	eax, DWORD PTR -20[rbp]
	mov	DWORD PTR -16[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	sub	eax, DWORD PTR -24[rbp]
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mov	eax, DWORD PTR -28[rbp]
	sub	eax, DWORD PTR -20[rbp]
	pxor	xmm1, xmm1
	cvtsi2ss	xmm1, eax
	divss	xmm0, xmm1
	movss	DWORD PTR -12[rbp], xmm0
	jmp	.L23
.L24:
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, DWORD PTR -16[rbp]
	movaps	xmm1, xmm0
	mulss	xmm1, DWORD PTR -12[rbp]
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, DWORD PTR -24[rbp]
	addss	xmm0, xmm1
	movss	DWORD PTR -8[rbp], xmm0
	movss	xmm0, DWORD PTR -8[rbp]
	cvttss2si	eax, xmm0
	mov	DWORD PTR -4[rbp], eax
	mov	edx, DWORD PTR current_color[rip]
	mov	rcx, QWORD PTR image_data[rip]
	mov	eax, DWORD PTR x_dim[rip]
	imul	eax, DWORD PTR -4[rbp]
	mov	esi, eax
	mov	eax, DWORD PTR -16[rbp]
	add	eax, esi
	cdqe
	sal	rax, 2
	add	rax, rcx
	mov	DWORD PTR [rax], edx
	add	DWORD PTR -16[rbp], 1
.L23:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -28[rbp]
	jle	.L24
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	dsc, .-dsc
	.globl	bresenham
	.type	bresenham, @function
bresenham:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -52[rbp], edi
	mov	DWORD PTR -56[rbp], esi
	mov	DWORD PTR -60[rbp], edx
	mov	DWORD PTR -64[rbp], ecx
	mov	eax, DWORD PTR -60[rbp]
	sub	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -64[rbp]
	sub	eax, DWORD PTR -56[rbp]
	mov	DWORD PTR -44[rbp], eax
	mov	eax, DWORD PTR -44[rbp]
	sar	eax, 31
	mov	edx, eax
	xor	edx, DWORD PTR -44[rbp]
	sub	edx, eax
	mov	eax, DWORD PTR -48[rbp]
	sar	eax, 31
	mov	ecx, eax
	mov	eax, ecx
	xor	eax, DWORD PTR -48[rbp]
	sub	eax, ecx
	cmp	edx, eax
	setge	al
	movzx	eax, al
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 0
	je	.L26
	mov	eax, DWORD PTR -56[rbp]
	xor	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	xor	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	xor	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -64[rbp]
	xor	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	xor	DWORD PTR -64[rbp], eax
	mov	eax, DWORD PTR -64[rbp]
	xor	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	sub	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -64[rbp]
	sub	eax, DWORD PTR -56[rbp]
	mov	DWORD PTR -44[rbp], eax
.L26:
	mov	DWORD PTR -36[rbp], 1
	cmp	DWORD PTR -48[rbp], 0
	jns	.L27
	mov	DWORD PTR -36[rbp], -1
	neg	DWORD PTR -48[rbp]
.L27:
	mov	DWORD PTR -32[rbp], 1
	cmp	DWORD PTR -44[rbp], 0
	jns	.L28
	mov	DWORD PTR -32[rbp], -1
	neg	DWORD PTR -44[rbp]
.L28:
	mov	eax, DWORD PTR -44[rbp]
	add	eax, eax
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	lea	edx, [rax+rax]
	mov	eax, DWORD PTR -8[rbp]
	sub	eax, edx
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	sub	eax, DWORD PTR -48[rbp]
	mov	DWORD PTR -28[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -40[rbp], eax
	jmp	.L29
.L34:
	cmp	DWORD PTR -12[rbp], 0
	je	.L30
	mov	eax, DWORD PTR -24[rbp]
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -40[rbp]
	mov	DWORD PTR -16[rbp], eax
	jmp	.L31
.L30:
	mov	eax, DWORD PTR -40[rbp]
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	DWORD PTR -16[rbp], eax
.L31:
	mov	edx, DWORD PTR current_color[rip]
	mov	rcx, QWORD PTR image_data[rip]
	mov	eax, DWORD PTR x_dim[rip]
	imul	eax, DWORD PTR -16[rbp]
	mov	esi, eax
	mov	eax, DWORD PTR -20[rbp]
	add	eax, esi
	cdqe
	sal	rax, 2
	add	rax, rcx
	mov	DWORD PTR [rax], edx
	cmp	DWORD PTR -28[rbp], 0
	jle	.L32
	mov	eax, DWORD PTR -4[rbp]
	add	DWORD PTR -28[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	add	DWORD PTR -24[rbp], eax
	jmp	.L33
.L32:
	mov	eax, DWORD PTR -8[rbp]
	add	DWORD PTR -28[rbp], eax
.L33:
	mov	eax, DWORD PTR -36[rbp]
	add	DWORD PTR -40[rbp], eax
.L29:
	mov	eax, DWORD PTR -40[rbp]
	cmp	eax, DWORD PTR -60[rbp]
	jne	.L34
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	bresenham, .-bresenham
	.globl	midpoint
	.type	midpoint, @function
midpoint:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -36[rbp], edi
	mov	DWORD PTR -40[rbp], esi
	mov	DWORD PTR -44[rbp], edx
	mov	DWORD PTR -48[rbp], ecx
	mov	eax, DWORD PTR -44[rbp]
	sub	eax, DWORD PTR -36[rbp]
	mov	DWORD PTR -16[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sub	eax, DWORD PTR -40[rbp]
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	add	eax, eax
	sub	eax, DWORD PTR -16[rbp]
	mov	DWORD PTR -28[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	add	eax, eax
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	sub	eax, DWORD PTR -16[rbp]
	add	eax, eax
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -40[rbp]
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	mov	DWORD PTR -24[rbp], eax
	jmp	.L36
.L39:
	mov	edx, DWORD PTR current_color[rip]
	mov	rcx, QWORD PTR image_data[rip]
	mov	eax, DWORD PTR x_dim[rip]
	imul	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	mov	eax, DWORD PTR -24[rbp]
	add	eax, esi
	mov	eax, eax
	sal	rax, 2
	add	rax, rcx
	mov	DWORD PTR [rax], edx
	cmp	DWORD PTR -28[rbp], 0
	jle	.L37
	add	DWORD PTR -20[rbp], 1
	mov	eax, DWORD PTR -4[rbp]
	add	DWORD PTR -28[rbp], eax
	jmp	.L38
.L37:
	mov	eax, DWORD PTR -8[rbp]
	add	DWORD PTR -28[rbp], eax
.L38:
	add	DWORD PTR -24[rbp], 1
.L36:
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jbe	.L39
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	midpoint, .-midpoint
	.globl	dda
	.type	dda, @function
dda:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -36[rbp], edi
	mov	DWORD PTR -40[rbp], esi
	mov	DWORD PTR -44[rbp], edx
	mov	DWORD PTR -48[rbp], ecx
	mov	DWORD PTR -12[rbp], 0
	mov	eax, DWORD PTR -44[rbp]
	sub	eax, DWORD PTR -36[rbp]
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sub	eax, DWORD PTR -40[rbp]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -36[rbp]
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -40[rbp]
	mov	DWORD PTR -16[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	sar	eax, 31
	mov	edx, eax
	xor	edx, DWORD PTR -8[rbp]
	sub	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	sar	eax, 31
	mov	ecx, eax
	mov	eax, ecx
	xor	eax, DWORD PTR -4[rbp]
	sub	eax, ecx
	cmp	edx, eax
	jl	.L46
	jmp	.L42
.L44:
	mov	edx, DWORD PTR current_color[rip]
	mov	rcx, QWORD PTR image_data[rip]
	mov	eax, DWORD PTR x_dim[rip]
	imul	eax, DWORD PTR -16[rbp]
	mov	esi, eax
	mov	eax, DWORD PTR -20[rbp]
	add	eax, esi
	cdqe
	sal	rax, 2
	add	rax, rcx
	mov	DWORD PTR [rax], edx
	mov	eax, DWORD PTR -4[rbp]
	add	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -8[rbp]
	jl	.L43
	mov	eax, DWORD PTR -8[rbp]
	sub	DWORD PTR -12[rbp], eax
	add	DWORD PTR -16[rbp], 1
.L43:
	add	DWORD PTR -20[rbp], 1
.L42:
	mov	eax, DWORD PTR -20[rbp]
	cmp	DWORD PTR -44[rbp], eax
	jnb	.L44
	jmp	.L49
.L48:
	mov	edx, DWORD PTR current_color[rip]
	mov	rcx, QWORD PTR image_data[rip]
	mov	eax, DWORD PTR x_dim[rip]
	imul	eax, DWORD PTR -16[rbp]
	mov	esi, eax
	mov	eax, DWORD PTR -20[rbp]
	add	eax, esi
	cdqe
	sal	rax, 2
	add	rax, rcx
	mov	DWORD PTR [rax], edx
	mov	eax, DWORD PTR -8[rbp]
	add	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -4[rbp]
	jl	.L47
	mov	eax, DWORD PTR -4[rbp]
	sub	DWORD PTR -12[rbp], eax
	add	DWORD PTR -20[rbp], 1
.L47:
	add	DWORD PTR -16[rbp], 1
.L46:
	mov	eax, DWORD PTR -16[rbp]
	cmp	DWORD PTR -48[rbp], eax
	jnb	.L48
.L49:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	dda, .-dda
	.globl	linedraw
	.type	linedraw, @function
linedraw:
.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	DWORD PTR -4[rbp], edi
	mov	DWORD PTR -8[rbp], esi
	mov	DWORD PTR -12[rbp], edx
	mov	DWORD PTR -16[rbp], ecx
	mov	eax, DWORD PTR enable_dsc[rip]
	cmp	eax, 1
	jne	.L51
	mov	ecx, DWORD PTR -16[rbp]
	mov	edx, DWORD PTR -12[rbp]
	mov	esi, DWORD PTR -8[rbp]
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	dsc
	jmp	.L55
.L51:
	mov	eax, DWORD PTR enable_bresenham[rip]
	cmp	eax, 1
	jne	.L53
	mov	ecx, DWORD PTR -16[rbp]
	mov	edx, DWORD PTR -12[rbp]
	mov	esi, DWORD PTR -8[rbp]
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	bresenham
	jmp	.L55
.L53:
	mov	eax, DWORD PTR enable_midpoint[rip]
	cmp	eax, 1
	jne	.L54
	mov	ecx, DWORD PTR -16[rbp]
	mov	edx, DWORD PTR -12[rbp]
	mov	esi, DWORD PTR -8[rbp]
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	midpoint
	jmp	.L55
.L54:
	mov	eax, DWORD PTR enable_dda[rip]
	cmp	eax, 1
	jne	.L55
	mov	ecx, DWORD PTR -16[rbp]
	mov	edx, DWORD PTR -12[rbp]
	mov	esi, DWORD PTR -8[rbp]
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	dda
.L55:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	linedraw, .-linedraw
	.section	.rodata
.LC8:
	.string	"* Usage:"
	.align 8
.LC9:
	.string	"* ./linedraw [options] <outfile>"
.LC10:
	.string	"* "
.LC11:
	.string	"* Options:"
	.align 8
.LC12:
	.string	"*   -h:              Print this help."
	.align 8
.LC13:
	.string	"*   -s:              Use direct scan conversion line drawing algorithm (default)."
	.align 8
.LC14:
	.string	"*   -b:              Use Bresenham's line drawing algorithm."
	.align 8
.LC15:
	.string	"*   -m:              Use midpoint line drawing algorithm."
	.align 8
.LC16:
	.string	"*   -d:              Use DDA (Digital Differential Analyzer) line drawing algorithm."
	.align 8
.LC17:
	.string	"*   -pbm:            Generate a PBM image (default)."
	.align 8
.LC18:
	.string	"*   -pgm:            Generate a PGM image."
	.align 8
.LC19:
	.string	"*   -x <num>:        Value for the x-dimension of the image (default:256)."
	.align 8
.LC20:
	.string	"*   -y <num>:        Value for the y-dimension of the image (default:256)."
	.align 8
.LC21:
	.string	"* For further information, please refer to the website:"
.LC22:
	.string	"* http://www.nkavvadias.com\n"
	.text
	.type	print_usage, @function
print_usage:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edi, 10
	call	putchar@PLT
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC9[rip]
	call	puts@PLT
	lea	rdi, .LC10[rip]
	call	puts@PLT
	lea	rdi, .LC11[rip]
	call	puts@PLT
	lea	rdi, .LC12[rip]
	call	puts@PLT
	lea	rdi, .LC13[rip]
	call	puts@PLT
	lea	rdi, .LC14[rip]
	call	puts@PLT
	lea	rdi, .LC15[rip]
	call	puts@PLT
	lea	rdi, .LC16[rip]
	call	puts@PLT
	lea	rdi, .LC17[rip]
	call	puts@PLT
	lea	rdi, .LC18[rip]
	call	puts@PLT
	lea	rdi, .LC19[rip]
	call	puts@PLT
	lea	rdi, .LC20[rip]
	call	puts@PLT
	lea	rdi, .LC10[rip]
	call	puts@PLT
	lea	rdi, .LC21[rip]
	call	puts@PLT
	lea	rdi, .LC22[rip]
	call	puts@PLT
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	print_usage, .-print_usage
	.section	.rodata
.LC23:
	.string	"-h"
.LC24:
	.string	"-s"
.LC25:
	.string	"-b"
.LC26:
	.string	"-m"
.LC27:
	.string	"-d"
.LC28:
	.string	"-pbm"
.LC29:
	.string	"-pgm"
.LC30:
	.string	"-x"
.LC31:
	.string	"-y"
	.align 8
.LC32:
	.string	"Error: Unknown command-line option: %s.\n"
	.align 8
.LC33:
	.string	"Error: Unspecified line generation algorithm\n"
.LC34:
	.string	"w"
	.text
	.globl	main
	.type	main, @function
main:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	DWORD PTR -36[rbp], edi
	mov	QWORD PTR -48[rbp], rsi
	cmp	DWORD PTR -36[rbp], 1
	jg	.L58
	mov	eax, 0
	call	print_usage
	mov	edi, 1
	call	exit@PLT
.L58:
	mov	DWORD PTR -24[rbp], 1
	jmp	.L59
.L70:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC23[rip]
	call	strcmp@PLT
	test	eax, eax
	jne	.L60
	mov	eax, 0
	call	print_usage
	mov	edi, 1
	call	exit@PLT
.L60:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC24[rip]
	call	strcmp@PLT
	test	eax, eax
	jne	.L61
	mov	DWORD PTR enable_dsc[rip], 1
	mov	DWORD PTR enable_bresenham[rip], 0
	mov	DWORD PTR enable_midpoint[rip], 0
	mov	DWORD PTR enable_dda[rip], 0
	jmp	.L62
.L61:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC25[rip]
	call	strcmp@PLT
	test	eax, eax
	jne	.L63
	mov	DWORD PTR enable_dsc[rip], 0
	mov	DWORD PTR enable_bresenham[rip], 1
	mov	DWORD PTR enable_midpoint[rip], 0
	mov	DWORD PTR enable_dda[rip], 0
	jmp	.L62
.L63:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	call	strcmp@PLT
	test	eax, eax
	jne	.L64
	mov	DWORD PTR enable_dsc[rip], 0
	mov	DWORD PTR enable_bresenham[rip], 0
	mov	DWORD PTR enable_midpoint[rip], 1
	mov	DWORD PTR enable_dda[rip], 0
	jmp	.L62
.L64:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC27[rip]
	call	strcmp@PLT
	test	eax, eax
	jne	.L65
	mov	DWORD PTR enable_dsc[rip], 0
	mov	DWORD PTR enable_bresenham[rip], 0
	mov	DWORD PTR enable_midpoint[rip], 0
	mov	DWORD PTR enable_dda[rip], 1
	jmp	.L62
.L65:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC28[rip]
	call	strcmp@PLT
	test	eax, eax
	jne	.L66
	mov	DWORD PTR enable_pbm[rip], 1
	mov	DWORD PTR enable_pgm[rip], 0
	jmp	.L62
.L66:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC29[rip]
	call	strcmp@PLT
	test	eax, eax
	jne	.L67
	mov	DWORD PTR enable_pbm[rip], 0
	mov	DWORD PTR enable_pgm[rip], 1
	jmp	.L62
.L67:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC30[rip]
	call	strcmp@PLT
	test	eax, eax
	jne	.L68
	mov	eax, DWORD PTR -24[rbp]
	add	eax, 1
	cmp	DWORD PTR -36[rbp], eax
	jle	.L62
	add	DWORD PTR -24[rbp], 1
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR x_dim[rip], eax
	jmp	.L62
.L68:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC31[rip]
	call	strcmp@PLT
	test	eax, eax
	jne	.L69
	mov	eax, DWORD PTR -24[rbp]
	add	eax, 1
	cmp	DWORD PTR -36[rbp], eax
	jle	.L62
	add	DWORD PTR -24[rbp], 1
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR y_dim[rip], eax
	jmp	.L62
.L69:
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC32[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L62:
	add	DWORD PTR -24[rbp], 1
.L59:
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, DWORD PTR -36[rbp]
	jl	.L70
	mov	edx, DWORD PTR x_dim[rip]
	mov	eax, DWORD PTR y_dim[rip]
	imul	eax, edx
	cdqe
	sal	rax, 2
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR image_data[rip], rax
	mov	DWORD PTR -24[rbp], 0
	jmp	.L71
.L72:
	mov	rdx, QWORD PTR image_data[rip]
	mov	eax, DWORD PTR -24[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	DWORD PTR [rax], 0
	add	DWORD PTR -24[rbp], 1
.L71:
	mov	edx, DWORD PTR x_dim[rip]
	mov	eax, DWORD PTR y_dim[rip]
	imul	eax, edx
	cmp	DWORD PTR -24[rbp], eax
	jl	.L72
	mov	edi, 19
	call	malloc@PLT
	mov	QWORD PTR outfile_name[rip], rax
	mov	eax, DWORD PTR enable_dsc[rip]
	cmp	eax, 1
	jne	.L73
	mov	rax, QWORD PTR outfile_name[rip]
	movabs	rbx, 7166181578214631788
	mov	QWORD PTR [rax], rbx
	mov	BYTE PTR 8[rax], 0
	jmp	.L74
.L73:
	mov	eax, DWORD PTR enable_bresenham[rip]
	cmp	eax, 1
	jne	.L75
	mov	rax, QWORD PTR outfile_name[rip]
	movabs	rbx, 7310013092290521452
	mov	QWORD PTR [rax], rbx
	mov	DWORD PTR 8[rax], 1752065395
	mov	WORD PTR 12[rax], 28001
	mov	BYTE PTR 14[rax], 0
	jmp	.L74
.L75:
	mov	eax, DWORD PTR enable_midpoint[rip]
	cmp	eax, 1
	jne	.L76
	mov	rax, QWORD PTR outfile_name[rip]
	movabs	rcx, 7235434318090103148
	mov	QWORD PTR [rax], rcx
	mov	DWORD PTR 8[rax], 1852403568
	mov	WORD PTR 12[rax], 116
	jmp	.L74
.L76:
	mov	eax, DWORD PTR enable_dda[rip]
	cmp	eax, 1
	jne	.L77
	mov	rax, QWORD PTR outfile_name[rip]
	movabs	rbx, 7017844265488116076
	mov	QWORD PTR [rax], rbx
	mov	BYTE PTR 8[rax], 0
	jmp	.L74
.L77:
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 45
	mov	esi, 1
	lea	rdi, .LC33[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L74:
	mov	eax, DWORD PTR enable_pbm[rip]
	cmp	eax, 1
	jne	.L78
	mov	rbx, QWORD PTR outfile_name[rip]
	mov	rdi, rbx
	call	strlen@PLT
	add	rax, rbx
	mov	DWORD PTR [rax], 1835167790
	mov	BYTE PTR 4[rax], 0
	mov	DWORD PTR current_color[rip], 1
	jmp	.L79
.L78:
	mov	eax, DWORD PTR enable_pgm[rip]
	cmp	eax, 1
	jne	.L79
	mov	rbx, QWORD PTR outfile_name[rip]
	mov	rdi, rbx
	call	strlen@PLT
	add	rax, rbx
	mov	DWORD PTR [rax], 1835495470
	mov	BYTE PTR 4[rax], 0
	mov	DWORD PTR current_color[rip], 255
.L79:
	mov	rax, QWORD PTR outfile_name[rip]
	lea	rsi, .LC34[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR outfile[rip], rax
	mov	DWORD PTR -20[rbp], 0
	jmp	.L80
.L81:
	mov	eax, DWORD PTR -20[rbp]
	add	eax, 16
	mov	edx, eax
	mov	eax, DWORD PTR x_dim[rip]
	sar	eax
	add	eax, 16
	mov	ecx, edx
	mov	edx, eax
	mov	esi, 16
	mov	edi, 16
	call	linedraw
	add	DWORD PTR -20[rbp], 8
.L80:
	mov	eax, DWORD PTR x_dim[rip]
	sar	eax
	cmp	DWORD PTR -20[rbp], eax
	jle	.L81
	mov	eax, DWORD PTR enable_bresenham[rip]
	cmp	eax, 1
	je	.L82
	mov	eax, DWORD PTR enable_dda[rip]
	cmp	eax, 1
	jne	.L83
.L82:
	mov	DWORD PTR -20[rbp], 0
	jmp	.L84
.L85:
	mov	eax, DWORD PTR x_dim[rip]
	sar	eax
	add	eax, 16
	mov	edx, eax
	mov	eax, DWORD PTR -20[rbp]
	add	eax, 16
	mov	ecx, edx
	mov	edx, eax
	mov	esi, 16
	mov	edi, 16
	call	linedraw
	add	DWORD PTR -20[rbp], 8
.L84:
	mov	eax, DWORD PTR x_dim[rip]
	sar	eax
	cmp	DWORD PTR -20[rbp], eax
	jle	.L85
.L83:
	mov	eax, DWORD PTR enable_pbm[rip]
	cmp	eax, 1
	jne	.L86
	mov	edi, DWORD PTR y_dim[rip]
	mov	ecx, DWORD PTR x_dim[rip]
	mov	rdx, QWORD PTR outfile_name[rip]
	mov	rsi, QWORD PTR image_data[rip]
	mov	rax, QWORD PTR outfile[rip]
	sub	rsp, 8
	push	1
	push	32
	push	1
	mov	r9d, 1
	mov	r8d, edi
	mov	rdi, rax
	call	write_pbm_file
	add	rsp, 32
	jmp	.L87
.L86:
	mov	eax, DWORD PTR enable_pgm[rip]
	cmp	eax, 1
	jne	.L87
	mov	edi, DWORD PTR y_dim[rip]
	mov	ecx, DWORD PTR x_dim[rip]
	mov	rdx, QWORD PTR outfile_name[rip]
	mov	rsi, QWORD PTR image_data[rip]
	mov	rax, QWORD PTR outfile[rip]
	push	1
	push	16
	push	255
	push	1
	mov	r9d, 1
	mov	r8d, edi
	mov	rdi, rax
	call	write_pgm_file
	add	rsp, 32
.L87:
	mov	rax, QWORD PTR image_data[rip]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR outfile_name[rip]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	main, .-main
	.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	"123059.c"
	.text
	.comm	outfile,4,4
	.comm	outfile_name,4,4
	.comm	image_data,4,4
	.global	current_color
	.bss
	.align	2
	.type	current_color, %object
	.size	current_color, 4
current_color:
	.space	4
	.global	enable_pbm
	.data
	.align	2
	.type	enable_pbm, %object
	.size	enable_pbm, 4
enable_pbm:
	.word	1
	.global	enable_pgm
	.bss
	.align	2
	.type	enable_pgm, %object
	.size	enable_pgm, 4
enable_pgm:
	.space	4
	.global	enable_dsc
	.data
	.align	2
	.type	enable_dsc, %object
	.size	enable_dsc, 4
enable_dsc:
	.word	1
	.global	enable_bresenham
	.bss
	.align	2
	.type	enable_bresenham, %object
	.size	enable_bresenham, 4
enable_bresenham:
	.space	4
	.global	enable_midpoint
	.align	2
	.type	enable_midpoint, %object
	.size	enable_midpoint, 4
enable_midpoint:
	.space	4
	.global	enable_dda
	.align	2
	.type	enable_dda, %object
	.size	enable_dda, 4
enable_dda:
	.space	4
	.global	x_dim
	.data
	.align	2
	.type	x_dim, %object
	.size	x_dim, 4
x_dim:
	.word	256
	.global	y_dim
	.align	2
	.type	y_dim, %object
	.size	y_dim, 4
y_dim:
	.word	256
	.section	.rodata
	.align	2
.LC0:
	.ascii	"P1\012\000"
	.align	2
.LC1:
	.ascii	"P4\012\000"
	.align	2
.LC2:
	.ascii	"# %s\012\000"
	.align	2
.LC3:
	.ascii	"%d %d\012\000"
	.align	2
.LC4:
	.ascii	"%d \000"
	.global	__aeabi_idivmod
	.text
	.align	2
	.global	write_pbm_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	write_pbm_file, %function
write_pbm_file:
	@ args = 20, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #8]
	mul	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #4]
	ldr	r2, [fp, #12]
	mul	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #20]
	cmp	r3, #1
	bne	.L2
	ldr	r3, [fp, #-40]
	mov	r2, #3
	mov	r1, #1
	ldr	r0, .L13
	bl	fwrite
	mov	r3, #1
	str	r3, [fp, #-20]
	b	.L3
.L2:
	ldr	r3, [fp, #-40]
	mov	r2, #3
	mov	r1, #1
	ldr	r0, .L13+4
	bl	fwrite
	mov	r3, #8
	str	r3, [fp, #-20]
.L3:
	ldr	r2, [fp, #-48]
	ldr	r1, .L13+8
	ldr	r0, [fp, #-40]
	bl	fprintf
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-16]
	ldr	r1, .L13+12
	ldr	r0, [fp, #-40]
	bl	fprintf
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L4
.L12:
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L5
.L11:
	ldr	r3, [fp, #20]
	cmp	r3, #1
	bne	.L6
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-16]
	mul	r2, r3, r2
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, .L13+16
	ldr	r0, [fp, #-40]
	bl	fprintf
	b	.L7
.L6:
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L8
.L9:
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-16]
	mul	r2, r3, r2
	ldr	r3, [fp, #-32]
	add	r2, r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-28]
	rsb	r3, r3, #7
	ldr	r2, [fp, #-8]
	lsl	r3, r2, r3
	ldr	r2, [fp, #-24]
	orr	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L8:
	ldr	r3, [fp, #-28]
	cmp	r3, #7
	ble	.L9
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-24]
	bl	fputc
.L7:
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-16]
	mul	r2, r3, r2
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	ldr	r1, [fp, #16]
	mov	r0, r3
	bl	__aeabi_idivmod
	mov	r3, r1
	mov	r2, r3
	ldr	r3, [fp, #16]
	sub	r3, r3, #1
	cmp	r2, r3
	bne	.L10
	ldr	r1, [fp, #-40]
	mov	r0, #10
	bl	fputc
.L10:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L5:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L11
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L4:
	ldr	r2, [fp, #-36]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	blt	.L12
	ldr	r0, [fp, #-40]
	bl	fclose
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L14:
	.align	2
.L13:
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.word	.LC4
	.size	write_pbm_file, .-write_pbm_file
	.section	.rodata
	.align	2
.LC5:
	.ascii	"P2\012\000"
	.align	2
.LC6:
	.ascii	"P5\012\000"
	.align	2
.LC7:
	.ascii	"%d\012\000"
	.text
	.align	2
	.global	write_pgm_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	write_pgm_file, %function
write_pgm_file:
	@ args = 24, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #8]
	mul	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #4]
	ldr	r2, [fp, #12]
	mul	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #24]
	cmp	r3, #1
	bne	.L16
	ldr	r3, [fp, #-24]
	mov	r2, #3
	mov	r1, #1
	ldr	r0, .L24
	bl	fwrite
	b	.L17
.L16:
	ldr	r3, [fp, #-24]
	mov	r2, #3
	mov	r1, #1
	ldr	r0, .L24+4
	bl	fwrite
.L17:
	ldr	r2, [fp, #-32]
	ldr	r1, .L24+8
	ldr	r0, [fp, #-24]
	bl	fprintf
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	ldr	r1, .L24+12
	ldr	r0, [fp, #-24]
	bl	fprintf
	ldr	r2, [fp, #16]
	ldr	r1, .L24+16
	ldr	r0, [fp, #-24]
	bl	fprintf
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L18
.L23:
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L19
.L22:
	ldr	r3, [fp, #24]
	cmp	r3, #1
	bne	.L20
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-12]
	mul	r2, r3, r2
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, .L24+20
	ldr	r0, [fp, #-24]
	bl	fprintf
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-12]
	mul	r2, r3, r2
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	ldr	r1, [fp, #20]
	mov	r0, r3
	bl	__aeabi_idivmod
	mov	r3, r1
	mov	r2, r3
	ldr	r3, [fp, #20]
	sub	r3, r3, #1
	cmp	r2, r3
	bne	.L21
	ldr	r1, [fp, #-24]
	mov	r0, #10
	bl	fputc
	b	.L21
.L20:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-12]
	mul	r2, r3, r2
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r1, [fp, #-24]
	mov	r0, r3
	bl	fputc
.L21:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L19:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	blt	.L22
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L18:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	blt	.L23
	ldr	r0, [fp, #-24]
	bl	fclose
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L25:
	.align	2
.L24:
	.word	.LC5
	.word	.LC6
	.word	.LC2
	.word	.LC3
	.word	.LC7
	.word	.LC4
	.size	write_pgm_file, .-write_pgm_file
	.global	__aeabi_i2f
	.global	__aeabi_fdiv
	.global	__aeabi_fmul
	.global	__aeabi_fadd
	.global	__aeabi_f2iz
	.align	2
	.global	dsc
	.syntax unified
	.arm
	.fpu softvfp
	.type	dsc, %function
dsc:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #36
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-28]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-36]
	sub	r3, r2, r3
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r4, r0
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-32]
	sub	r3, r2, r3
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r3, r0
	mov	r1, r3
	mov	r0, r4
	bl	__aeabi_fdiv
	mov	r3, r0
	str	r3, [fp, #-24]	@ float
	b	.L27
.L28:
	ldr	r0, [fp, #-28]
	bl	__aeabi_i2f
	mov	r3, r0
	ldr	r1, [fp, #-24]	@ float
	mov	r0, r3
	bl	__aeabi_fmul
	mov	r3, r0
	mov	r4, r3
	ldr	r0, [fp, #-36]
	bl	__aeabi_i2f
	mov	r3, r0
	mov	r1, r3
	mov	r0, r4
	bl	__aeabi_fadd
	mov	r3, r0
	str	r3, [fp, #-20]	@ float
	ldr	r0, [fp, #-20]	@ float
	bl	__aeabi_f2iz
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, .L29
	ldr	r0, [r3]
	ldr	r3, .L29+4
	ldr	r2, [r3]
	ldr	r3, .L29+8
	ldr	r3, [r3]
	ldr	r1, [fp, #-16]
	mul	r1, r3, r1
	ldr	r3, [fp, #-28]
	add	r3, r1, r3
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, r0
	str	r2, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L27:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-40]
	cmp	r2, r3
	ble	.L28
	nop
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L30:
	.align	2
.L29:
	.word	current_color
	.word	image_data
	.word	x_dim
	.size	dsc, .-dsc
	.align	2
	.global	bresenham
	.syntax unified
	.arm
	.fpu softvfp
	.type	bresenham, %function
bresenham:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #68
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	str	r2, [fp, #-64]
	str	r3, [fp, #-68]
	ldr	r2, [fp, #-64]
	ldr	r3, [fp, #-56]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r2, [fp, #-68]
	ldr	r3, [fp, #-60]
	sub	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	eor	r2, r3, r3, asr #31
	sub	r2, r2, r3, asr #31
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	rsblt	r3, r3, #0
	cmp	r2, r3
	movge	r3, #1
	movlt	r3, #0
	and	r3, r3, #255
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L32
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-60]
	eor	r3, r3, r2
	str	r3, [fp, #-56]
	ldr	r2, [fp, #-60]
	ldr	r3, [fp, #-56]
	eor	r3, r3, r2
	str	r3, [fp, #-60]
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-60]
	eor	r3, r3, r2
	str	r3, [fp, #-56]
	ldr	r2, [fp, #-64]
	ldr	r3, [fp, #-68]
	eor	r3, r3, r2
	str	r3, [fp, #-64]
	ldr	r2, [fp, #-68]
	ldr	r3, [fp, #-64]
	eor	r3, r3, r2
	str	r3, [fp, #-68]
	ldr	r2, [fp, #-64]
	ldr	r3, [fp, #-68]
	eor	r3, r3, r2
	str	r3, [fp, #-64]
	ldr	r2, [fp, #-64]
	ldr	r3, [fp, #-56]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r2, [fp, #-68]
	ldr	r3, [fp, #-60]
	sub	r3, r2, r3
	str	r3, [fp, #-48]
.L32:
	mov	r3, #1
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	bge	.L33
	mvn	r3, #0
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-52]
	rsb	r3, r3, #0
	str	r3, [fp, #-52]
.L33:
	mov	r3, #1
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bge	.L34
	mvn	r3, #0
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-48]
	rsb	r3, r3, #0
	str	r3, [fp, #-48]
.L34:
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-12]
	sub	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-52]
	sub	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-60]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-56]
	str	r3, [fp, #-44]
	b	.L35
.L40:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L36
	ldr	r3, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-20]
	b	.L37
.L36:
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	str	r3, [fp, #-20]
.L37:
	ldr	r3, .L41
	ldr	r0, [r3]
	ldr	r3, .L41+4
	ldr	r2, [r3]
	ldr	r3, .L41+8
	ldr	r3, [r3]
	ldr	r1, [fp, #-20]
	mul	r1, r3, r1
	ldr	r3, [fp, #-24]
	add	r3, r1, r3
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, r0
	str	r2, [r3]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	ble	.L38
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-28]
	b	.L39
.L38:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L39:
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-40]
	add	r3, r2, r3
	str	r3, [fp, #-44]
.L35:
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-64]
	cmp	r2, r3
	bne	.L40
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L42:
	.align	2
.L41:
	.word	current_color
	.word	image_data
	.word	x_dim
	.size	bresenham, .-bresenham
	.align	2
	.global	midpoint
	.syntax unified
	.arm
	.fpu softvfp
	.type	midpoint, %function
midpoint:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #52
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	str	r2, [fp, #-48]
	str	r3, [fp, #-52]
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-40]
	sub	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-44]
	sub	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	lsl	r2, r3, #1
	ldr	r3, [fp, #-20]
	sub	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-20]
	sub	r3, r2, r3
	lsl	r3, r3, #1
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-28]
	b	.L44
.L47:
	ldr	r3, .L48
	ldr	r0, [r3]
	ldr	r3, .L48+4
	ldr	r2, [r3]
	ldr	r3, .L48+8
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r3, [fp, #-24]
	mul	r1, r3, r1
	ldr	r3, [fp, #-28]
	add	r3, r1, r3
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, r0
	str	r2, [r3]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	ble	.L45
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-32]
	b	.L46
.L45:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-32]
.L46:
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L44:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-48]
	cmp	r2, r3
	bls	.L47
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L49:
	.align	2
.L48:
	.word	current_color
	.word	image_data
	.word	x_dim
	.size	midpoint, .-midpoint
	.align	2
	.global	dda
	.syntax unified
	.arm
	.fpu softvfp
	.type	dda, %function
dda:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #44
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-16]
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-32]
	sub	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-36]
	sub	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-36]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-12]
	eor	r2, r3, r3, asr #31
	sub	r2, r2, r3, asr #31
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	rsblt	r3, r3, #0
	cmp	r2, r3
	blt	.L56
	b	.L52
.L54:
	ldr	r3, .L60
	ldr	r0, [r3]
	ldr	r3, .L60+4
	ldr	r2, [r3]
	ldr	r3, .L60+8
	ldr	r3, [r3]
	ldr	r1, [fp, #-20]
	mul	r1, r3, r1
	ldr	r3, [fp, #-24]
	add	r3, r1, r3
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, r0
	str	r2, [r3]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	blt	.L53
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	sub	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L53:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L52:
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-40]
	cmp	r2, r3
	bcs	.L54
	b	.L59
.L58:
	ldr	r3, .L60
	ldr	r0, [r3]
	ldr	r3, .L60+4
	ldr	r2, [r3]
	ldr	r3, .L60+8
	ldr	r3, [r3]
	ldr	r1, [fp, #-20]
	mul	r1, r3, r1
	ldr	r3, [fp, #-24]
	add	r3, r1, r3
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, r0
	str	r2, [r3]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	blt	.L57
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	sub	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L57:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L56:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-44]
	cmp	r2, r3
	bcs	.L58
.L59:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L61:
	.align	2
.L60:
	.word	current_color
	.word	image_data
	.word	x_dim
	.size	dda, .-dda
	.align	2
	.global	linedraw
	.syntax unified
	.arm
	.fpu softvfp
	.type	linedraw, %function
linedraw:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	str	r3, [fp, #-20]
	ldr	r3, .L68
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L63
	ldr	r0, [fp, #-8]
	ldr	r1, [fp, #-12]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-20]
	bl	dsc
	b	.L67
.L63:
	ldr	r3, .L68+4
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L65
	ldr	r0, [fp, #-8]
	ldr	r1, [fp, #-12]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-20]
	bl	bresenham
	b	.L67
.L65:
	ldr	r3, .L68+8
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L66
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	midpoint
	b	.L67
.L66:
	ldr	r3, .L68+12
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L67
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	dda
.L67:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L69:
	.align	2
.L68:
	.word	enable_dsc
	.word	enable_bresenham
	.word	enable_midpoint
	.word	enable_dda
	.size	linedraw, .-linedraw
	.section	.rodata
	.align	2
.LC8:
	.ascii	"* Usage:\000"
	.align	2
.LC9:
	.ascii	"* ./linedraw [options] <outfile>\000"
	.align	2
.LC10:
	.ascii	"* \000"
	.align	2
.LC11:
	.ascii	"* Options:\000"
	.align	2
.LC12:
	.ascii	"*   -h:              Print this help.\000"
	.align	2
.LC13:
	.ascii	"*   -s:              Use direct scan conversion lin"
	.ascii	"e drawing algorithm (default).\000"
	.align	2
.LC14:
	.ascii	"*   -b:              Use Bresenham's line drawing a"
	.ascii	"lgorithm.\000"
	.align	2
.LC15:
	.ascii	"*   -m:              Use midpoint line drawing algo"
	.ascii	"rithm.\000"
	.align	2
.LC16:
	.ascii	"*   -d:              Use DDA (Digital Differential "
	.ascii	"Analyzer) line drawing algorithm.\000"
	.align	2
.LC17:
	.ascii	"*   -pbm:            Generate a PBM image (default)"
	.ascii	".\000"
	.align	2
.LC18:
	.ascii	"*   -pgm:            Generate a PGM image.\000"
	.align	2
.LC19:
	.ascii	"*   -x <num>:        Value for the x-dimension of t"
	.ascii	"he image (default:256).\000"
	.align	2
.LC20:
	.ascii	"*   -y <num>:        Value for the y-dimension of t"
	.ascii	"he image (default:256).\000"
	.align	2
.LC21:
	.ascii	"* For further information, please refer to the webs"
	.ascii	"ite:\000"
	.align	2
.LC22:
	.ascii	"* http://www.nkavvadias.com\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_usage, %function
print_usage:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	mov	r0, #10
	bl	putchar
	ldr	r0, .L71
	bl	puts
	ldr	r0, .L71+4
	bl	puts
	ldr	r0, .L71+8
	bl	puts
	ldr	r0, .L71+12
	bl	puts
	ldr	r0, .L71+16
	bl	puts
	ldr	r0, .L71+20
	bl	puts
	ldr	r0, .L71+24
	bl	puts
	ldr	r0, .L71+28
	bl	puts
	ldr	r0, .L71+32
	bl	puts
	ldr	r0, .L71+36
	bl	puts
	ldr	r0, .L71+40
	bl	puts
	ldr	r0, .L71+44
	bl	puts
	ldr	r0, .L71+48
	bl	puts
	ldr	r0, .L71+8
	bl	puts
	ldr	r0, .L71+52
	bl	puts
	ldr	r0, .L71+56
	bl	puts
	nop
	pop	{fp, pc}
.L72:
	.align	2
.L71:
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.word	.LC11
	.word	.LC12
	.word	.LC13
	.word	.LC14
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC22
	.size	print_usage, .-print_usage
	.section	.rodata
	.align	2
.LC23:
	.ascii	"-h\000"
	.align	2
.LC24:
	.ascii	"-s\000"
	.align	2
.LC25:
	.ascii	"-b\000"
	.align	2
.LC26:
	.ascii	"-m\000"
	.align	2
.LC27:
	.ascii	"-d\000"
	.align	2
.LC28:
	.ascii	"-pbm\000"
	.align	2
.LC29:
	.ascii	"-pgm\000"
	.align	2
.LC30:
	.ascii	"-x\000"
	.align	2
.LC31:
	.ascii	"-y\000"
	.align	2
.LC32:
	.ascii	"Error: Unknown command-line option: %s.\012\000"
	.align	2
.LC33:
	.ascii	"line-dsc\000"
	.align	2
.LC34:
	.ascii	"line-bresenham\000"
	.align	2
.LC35:
	.ascii	"line-midpoint\000"
	.align	2
.LC36:
	.ascii	"line-dda\000"
	.align	2
.LC37:
	.ascii	"Error: Unspecified line generation algorithm\012\000"
	.align	2
.LC38:
	.ascii	".pbm\000"
	.align	2
.LC39:
	.ascii	".pgm\000"
	.align	2
.LC40:
	.ascii	"w\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #44
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, [fp, #-24]
	cmp	r3, #1
	bgt	.L74
	bl	print_usage
	mov	r0, #1
	bl	exit
.L74:
	mov	r3, #1
	str	r3, [fp, #-20]
	b	.L75
.L86:
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L105
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L76
	bl	print_usage
	mov	r0, #1
	bl	exit
.L76:
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L105+4
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L77
	ldr	r3, .L105+8
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, .L105+12
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L105+16
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L105+20
	mov	r2, #0
	str	r2, [r3]
	b	.L78
.L77:
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L105+24
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L79
	ldr	r3, .L105+8
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L105+12
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, .L105+16
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L105+20
	mov	r2, #0
	str	r2, [r3]
	b	.L78
.L79:
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L105+28
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L80
	ldr	r3, .L105+8
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L105+12
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L105+16
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, .L105+20
	mov	r2, #0
	str	r2, [r3]
	b	.L78
.L80:
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L105+32
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L81
	ldr	r3, .L105+8
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L105+12
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L105+16
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L105+20
	mov	r2, #1
	str	r2, [r3]
	b	.L78
.L81:
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L105+36
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L82
	ldr	r3, .L105+40
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, .L105+44
	mov	r2, #0
	str	r2, [r3]
	b	.L78
.L82:
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L105+48
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L83
	ldr	r3, .L105+40
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L105+44
	mov	r2, #1
	str	r2, [r3]
	b	.L78
.L83:
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L105+52
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L84
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	ble	.L78
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L105+56
	str	r3, [r2]
	b	.L78
.L84:
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L105+60
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L85
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	ble	.L78
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L105+64
	str	r3, [r2]
	b	.L78
.L85:
	ldr	r3, .L105+68
	ldr	r0, [r3]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, .L105+72
	bl	fprintf
	mov	r0, #1
	bl	exit
.L78:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L75:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	blt	.L86
	ldr	r3, .L105+56
	ldr	r3, [r3]
	ldr	r2, .L105+64
	ldr	r2, [r2]
	mul	r3, r2, r3
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L105+76
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L87
.L88:
	ldr	r3, .L105+76
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L87:
	ldr	r3, .L105+56
	ldr	r3, [r3]
	ldr	r2, .L105+64
	ldr	r2, [r2]
	mul	r3, r2, r3
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	blt	.L88
	mov	r0, #19
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L105+80
	str	r2, [r3]
	ldr	r3, .L105+8
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L89
	ldr	r3, .L105+80
	ldr	r3, [r3]
	ldr	r2, .L105+84
	mov	r0, r3
	mov	r1, r2
	mov	r3, #9
	mov	r2, r3
	bl	memcpy
	b	.L90
.L89:
	ldr	r3, .L105+12
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L91
	ldr	r3, .L105+80
	ldr	r3, [r3]
	ldr	r2, .L105+88
	mov	r0, r3
	mov	r1, r2
	mov	r3, #15
	mov	r2, r3
	bl	memcpy
	b	.L90
.L91:
	ldr	r3, .L105+16
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L92
	ldr	r3, .L105+80
	ldr	r3, [r3]
	ldr	r2, .L105+92
	mov	r0, r3
	mov	r1, r2
	mov	r3, #14
	mov	r2, r3
	bl	memcpy
	b	.L90
.L92:
	ldr	r3, .L105+20
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L93
	ldr	r3, .L105+80
	ldr	r3, [r3]
	ldr	r2, .L105+96
	mov	r0, r3
	mov	r1, r2
	mov	r3, #9
	mov	r2, r3
	bl	memcpy
	b	.L90
.L93:
	ldr	r3, .L105+68
	ldr	r3, [r3]
	mov	r2, #45
	mov	r1, #1
	ldr	r0, .L105+100
	bl	fwrite
	mov	r0, #1
	bl	exit
.L90:
	ldr	r3, .L105+40
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L94
	ldr	r3, .L105+80
	ldr	r4, [r3]
	mov	r0, r4
	bl	strlen
	mov	r3, r0
	add	r3, r4, r3
	ldr	r2, .L105+104
	mov	r0, r3
	mov	r1, r2
	mov	r3, #5
	mov	r2, r3
	bl	memcpy
	ldr	r3, .L105+108
	mov	r2, #1
	str	r2, [r3]
	b	.L95
.L94:
	ldr	r3, .L105+44
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L95
	ldr	r3, .L105+80
	ldr	r4, [r3]
	mov	r0, r4
	bl	strlen
	mov	r3, r0
	add	r3, r4, r3
	ldr	r2, .L105+112
	mov	r0, r3
	mov	r1, r2
	mov	r3, #5
	mov	r2, r3
	bl	memcpy
	ldr	r3, .L105+108
	mov	r2, #255
	str	r2, [r3]
.L95:
	ldr	r3, .L105+80
	ldr	r3, [r3]
	ldr	r1, .L105+116
	mov	r0, r3
	bl	fopen
	mov	r3, r0
	ldr	r2, .L105+120
	str	r3, [r2]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L96
.L97:
	ldr	r3, .L105+56
	ldr	r3, [r3]
	asr	r3, r3, #1
	add	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #16
	mov	r1, #16
	mov	r0, #16
	bl	linedraw
	ldr	r3, [fp, #-16]
	add	r3, r3, #8
	str	r3, [fp, #-16]
.L96:
	ldr	r3, .L105+56
	ldr	r3, [r3]
	asr	r3, r3, #1
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	ble	.L97
	ldr	r3, .L105+12
	ldr	r3, [r3]
	cmp	r3, #1
	beq	.L98
	ldr	r3, .L105+20
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L99
.L98:
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L100
.L101:
	ldr	r3, [fp, #-16]
	add	r3, r3, #16
	mov	r2, r3
	ldr	r3, .L105+56
	ldr	r3, [r3]
	asr	r3, r3, #1
	add	r3, r3, #16
	mov	r1, #16
	mov	r0, #16
	bl	linedraw
	ldr	r3, [fp, #-16]
	add	r3, r3, #8
	str	r3, [fp, #-16]
.L100:
	ldr	r3, .L105+56
	ldr	r3, [r3]
	asr	r3, r3, #1
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	ble	.L101
.L99:
	ldr	r3, .L105+40
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L102
	ldr	r3, .L105+120
	ldr	r0, [r3]
	ldr	r3, .L105+76
	ldr	r1, [r3]
	ldr	r3, .L105+80
	ldr	r2, [r3]
	ldr	r3, .L105+56
	ldr	ip, [r3]
	ldr	r3, .L105+64
	ldr	r3, [r3]
	mov	lr, #1
	str	lr, [sp, #16]
	mov	lr, #32
	str	lr, [sp, #12]
	mov	lr, #1
	str	lr, [sp, #8]
	mov	lr, #1
	str	lr, [sp, #4]
	str	r3, [sp]
	mov	r3, ip
	bl	write_pbm_file
	b	.L103
.L102:
	ldr	r3, .L105+44
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L103
	ldr	r3, .L105+120
	ldr	r0, [r3]
	ldr	r3, .L105+76
	ldr	r1, [r3]
	ldr	r3, .L105+80
	ldr	r2, [r3]
	ldr	r3, .L105+56
	ldr	ip, [r3]
	ldr	r3, .L105+64
	ldr	r3, [r3]
	mov	lr, #1
	str	lr, [sp, #20]
	mov	lr, #16
	str	lr, [sp, #16]
	mov	lr, #255
	str	lr, [sp, #12]
	mov	lr, #1
	str	lr, [sp, #8]
	mov	lr, #1
	str	lr, [sp, #4]
	str	r3, [sp]
	mov	r3, ip
	bl	write_pgm_file
.L103:
	ldr	r3, .L105+76
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r3, .L105+80
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L106:
	.align	2
.L105:
	.word	.LC23
	.word	.LC24
	.word	enable_dsc
	.word	enable_bresenham
	.word	enable_midpoint
	.word	enable_dda
	.word	.LC25
	.word	.LC26
	.word	.LC27
	.word	.LC28
	.word	enable_pbm
	.word	enable_pgm
	.word	.LC29
	.word	.LC30
	.word	x_dim
	.word	.LC31
	.word	y_dim
	.word	stderr
	.word	.LC32
	.word	image_data
	.word	outfile_name
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.word	.LC37
	.word	.LC38
	.word	current_color
	.word	.LC39
	.word	.LC40
	.word	outfile
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
