	.file	"237643352.c"
	.intel_syntax noprefix
	.text
	.section	.rodata
.LC0:
	.string	"unknown runcmd\n"
.LC1:
	.string	"exec not implemented\n"
.LC2:
	.string	"redir not implemented\n"
.LC3:
	.string	"pipe not implemented\n"
	.text
	.globl	runcmd
	.type	runcmd, @function
runcmd:
.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, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -56[rbp], 0
	jne	.L2
	mov	edi, 0
	call	exit@PLT
.L2:
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	eax, 124
	je	.L3
	cmp	eax, 124
	jg	.L4
	cmp	eax, 62
	je	.L5
	cmp	eax, 62
	jg	.L4
	cmp	eax, 32
	je	.L6
	cmp	eax, 60
	je	.L5
.L4:
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 15
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	edi, -1
	call	exit@PLT
.L6:
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	jne	.L7
	mov	edi, 0
	call	exit@PLT
.L7:
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 21
	mov	esi, 1
	lea	rdi, .LC1[rip]
	call	fwrite@PLT
	jmp	.L8
.L5:
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 22
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	runcmd
	jmp	.L8
.L3:
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 21
	mov	esi, 1
	lea	rdi, .LC3[rip]
	call	fwrite@PLT
	nop
.L8:
	mov	edi, 0
	call	exit@PLT
	.cfi_endproc
.LFE6:
	.size	runcmd, .-runcmd
	.section	.rodata
.LC4:
	.string	"143A$ "
	.text
	.globl	getcmd
	.type	getcmd, @function
getcmd:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	mov	rax, QWORD PTR stdin[rip]
	mov	rdi, rax
	call	fileno@PLT
	mov	edi, eax
	call	isatty@PLT
	test	eax, eax
	je	.L11
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 6
	mov	esi, 1
	lea	rdi, .LC4[rip]
	call	fwrite@PLT
.L11:
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rdx, QWORD PTR stdin[rip]
	mov	ecx, DWORD PTR -12[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, ecx
	mov	rdi, rax
	call	fgets@PLT
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L12
	mov	eax, -1
	jmp	.L13
.L12:
	mov	eax, 0
.L13:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	getcmd, .-getcmd
	.section	.rodata
.LC5:
	.string	"cannot cd %s\n"
	.text
	.globl	main
	.type	main, @function
main:
.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	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	jmp	.L15
.L19:
	movzx	eax, BYTE PTR buf.1[rip]
	cmp	al, 99
	jne	.L16
	movzx	eax, BYTE PTR buf.1[rip+1]
	cmp	al, 100
	jne	.L16
	movzx	eax, BYTE PTR buf.1[rip+2]
	cmp	al, 32
	jne	.L16
	lea	rdi, buf.1[rip]
	call	strlen@PLT
	lea	rdx, -1[rax]
	lea	rax, buf.1[rip]
	mov	BYTE PTR [rdx+rax], 0
	lea	rax, buf.1[rip+3]
	mov	rdi, rax
	call	chdir@PLT
	test	eax, eax
	jns	.L15
	lea	rdx, buf.1[rip+3]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC5[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	jmp	.L15
.L16:
	call	fork1
	test	eax, eax
	jne	.L18
	lea	rdi, buf.1[rip]
	call	parsecmd
	mov	rdi, rax
	call	runcmd
.L18:
	lea	rax, -12[rbp]
	mov	rdi, rax
	call	wait@PLT
.L15:
	mov	esi, 100
	lea	rdi, buf.1[rip]
	call	getcmd
	test	eax, eax
	jns	.L19
	mov	edi, 0
	call	exit@PLT
	.cfi_endproc
.LFE8:
	.size	main, .-main
	.section	.rodata
.LC6:
	.string	"fork"
	.text
	.globl	fork1
	.type	fork1, @function
fork1:
.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
	call	fork@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], -1
	jne	.L22
	lea	rdi, .LC6[rip]
	call	perror@PLT
.L22:
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	fork1, .-fork1
	.globl	execcmd
	.type	execcmd, @function
execcmd:
.LFB10:
	.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, 88
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 88
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR [rax], 32
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	execcmd, .-execcmd
	.globl	redircmd
	.type	redircmd, @function
redircmd:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	mov	edi, 32
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 32
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -36[rbp]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	QWORD PTR 16[rax], rdx
	cmp	DWORD PTR -36[rbp], 60
	jne	.L27
	mov	edx, 0
	jmp	.L28
.L27:
	mov	edx, 577
.L28:
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 24[rax], edx
	cmp	DWORD PTR -36[rbp], 60
	setne	al
	movzx	edx, al
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 28[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	redircmd, .-redircmd
	.globl	pipecmd
	.type	pipecmd, @function
pipecmd:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	edi, 24
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 24
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR [rax], 124
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	pipecmd, .-pipecmd
	.globl	whitespace
	.data
	.type	whitespace, @object
	.size	whitespace, 6
whitespace:
	.string	" \t\r\n\013"
	.globl	symbols
	.type	symbols, @object
	.size	symbols, 4
symbols:
	.string	"<|>"
	.text
	.globl	gettoken
	.type	gettoken, @function
gettoken:
.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, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L33
.L35:
	add	QWORD PTR -8[rbp], 1
.L33:
	mov	rax, QWORD PTR -8[rbp]
	cmp	rax, QWORD PTR -32[rbp]
	jnb	.L34
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, whitespace[rip]
	call	strchr@PLT
	test	rax, rax
	jne	.L35
.L34:
	cmp	QWORD PTR -40[rbp], 0
	je	.L36
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
.L36:
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	cmp	eax, 124
	je	.L37
	cmp	eax, 124
	jg	.L38
	cmp	eax, 62
	je	.L39
	cmp	eax, 62
	jg	.L38
	test	eax, eax
	je	.L50
	cmp	eax, 60
	jne	.L38
.L37:
	add	QWORD PTR -8[rbp], 1
	jmp	.L41
.L39:
	add	QWORD PTR -8[rbp], 1
	jmp	.L41
.L38:
	mov	DWORD PTR -12[rbp], 97
	jmp	.L42
.L44:
	add	QWORD PTR -8[rbp], 1
.L42:
	mov	rax, QWORD PTR -8[rbp]
	cmp	rax, QWORD PTR -32[rbp]
	jnb	.L51
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, whitespace[rip]
	call	strchr@PLT
	test	rax, rax
	jne	.L51
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, symbols[rip]
	call	strchr@PLT
	test	rax, rax
	je	.L44
	jmp	.L51
.L50:
	nop
	jmp	.L41
.L51:
	nop
.L41:
	cmp	QWORD PTR -48[rbp], 0
	je	.L46
	mov	rax, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	jmp	.L46
.L48:
	add	QWORD PTR -8[rbp], 1
.L46:
	mov	rax, QWORD PTR -8[rbp]
	cmp	rax, QWORD PTR -32[rbp]
	jnb	.L47
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, whitespace[rip]
	call	strchr@PLT
	test	rax, rax
	jne	.L48
.L47:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	eax, DWORD PTR -12[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	gettoken, .-gettoken
	.globl	peek
	.type	peek, @function
peek:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L53
.L55:
	add	QWORD PTR -8[rbp], 1
.L53:
	mov	rax, QWORD PTR -8[rbp]
	cmp	rax, QWORD PTR -32[rbp]
	jnb	.L54
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, whitespace[rip]
	call	strchr@PLT
	test	rax, rax
	jne	.L55
.L54:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L56
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	edx, al
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	strchr@PLT
	test	rax, rax
	je	.L56
	mov	eax, 1
	jmp	.L58
.L56:
	mov	eax, 0
.L58:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	peek, .-peek
	.section	.rodata
.LC7:
	.string	"the_stack_data/237643352.c"
.LC8:
	.string	"c"
	.text
	.globl	mkcopy
	.type	mkcopy, @function
mkcopy:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -32[rbp]
	sub	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	add	eax, 1
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L60
	lea	rcx, __PRETTY_FUNCTION__.0[rip]
	mov	edx, 236
	lea	rsi, .LC7[rip]
	lea	rdi, .LC8[rip]
	call	__assert_fail@PLT
.L60:
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	strncpy@PLT
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	mkcopy, .-mkcopy
	.section	.rodata
.LC9:
	.string	""
.LC10:
	.string	"leftovers: %s\n"
	.text
	.globl	parsecmd
	.type	parsecmd, @function
parsecmd:
.LFB16:
	.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	QWORD PTR -40[rbp], rdi
	mov	rbx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	strlen@PLT
	add	rax, rbx
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	lea	rax, -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	parseline
	mov	QWORD PTR -24[rbp], rax
	mov	rcx, QWORD PTR -32[rbp]
	lea	rax, -40[rbp]
	lea	rdx, .LC9[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	peek
	mov	rax, QWORD PTR -40[rbp]
	cmp	QWORD PTR -32[rbp], rax
	je	.L63
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC10[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, -1
	call	exit@PLT
.L63:
	mov	rax, QWORD PTR -24[rbp]
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	parsecmd, .-parsecmd
	.globl	parseline
	.type	parseline, @function
parseline:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	parsepipe
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	parseline, .-parseline
	.section	.rodata
.LC11:
	.string	"|"
	.text
	.globl	parsepipe
	.type	parsepipe, @function
parsepipe:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	parseexec
	mov	QWORD PTR -8[rbp], rax
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, .LC11[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	peek
	test	eax, eax
	je	.L68
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	gettoken
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	parsepipe
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pipecmd
	mov	QWORD PTR -8[rbp], rax
.L68:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	parsepipe, .-parsepipe
	.section	.rodata
.LC12:
	.string	"missing file for redirection\n"
.LC13:
	.string	"<>"
	.text
	.globl	parseredirs
	.type	parseredirs, @function
parseredirs:
.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, 64
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	jmp	.L71
.L75:
	mov	rsi, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	ecx, 0
	mov	edx, 0
	mov	rdi, rax
	call	gettoken
	mov	DWORD PTR -28[rbp], eax
	lea	rcx, -16[rbp]
	lea	rdx, -24[rbp]
	mov	rsi, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	gettoken
	cmp	eax, 97
	je	.L72
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 29
	mov	esi, 1
	lea	rdi, .LC12[rip]
	call	fwrite@PLT
	mov	edi, -1
	call	exit@PLT
.L72:
	cmp	DWORD PTR -28[rbp], 60
	je	.L73
	cmp	DWORD PTR -28[rbp], 62
	je	.L74
	jmp	.L71
.L73:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	mkcopy
	mov	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 60
	mov	rsi, rcx
	mov	rdi, rax
	call	redircmd
	mov	QWORD PTR -40[rbp], rax
	jmp	.L71
.L74:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	mkcopy
	mov	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 62
	mov	rsi, rcx
	mov	rdi, rax
	call	redircmd
	mov	QWORD PTR -40[rbp], rax
	nop
.L71:
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, .LC13[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	peek
	test	eax, eax
	jne	.L75
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, QWORD PTR -8[rbp]
	sub	rdi, QWORD PTR fs:40
	je	.L77
	call	__stack_chk_fail@PLT
.L77:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	parseredirs, .-parseredirs
	.section	.rodata
.LC14:
	.string	"syntax error\n"
.LC15:
	.string	"too many args\n"
	.text
	.globl	parseexec
	.type	parseexec, @function
parseexec:
.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, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	call	execcmd
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	DWORD PTR -48[rbp], 0
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	parseredirs
	mov	QWORD PTR -24[rbp], rax
	jmp	.L79
.L84:
	lea	rcx, -32[rbp]
	lea	rdx, -40[rbp]
	mov	rsi, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	gettoken
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -44[rbp], 0
	je	.L87
	cmp	DWORD PTR -44[rbp], 97
	je	.L82
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 13
	mov	esi, 1
	lea	rdi, .LC14[rip]
	call	fwrite@PLT
	mov	edi, -1
	call	exit@PLT
.L82:
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	mkcopy
	mov	rdx, QWORD PTR -16[rbp]
	mov	ecx, DWORD PTR -48[rbp]
	movsx	rcx, ecx
	mov	QWORD PTR 8[rdx+rcx*8], rax
	add	DWORD PTR -48[rbp], 1
	cmp	DWORD PTR -48[rbp], 9
	jle	.L83
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 14
	mov	esi, 1
	lea	rdi, .LC15[rip]
	call	fwrite@PLT
	mov	edi, -1
	call	exit@PLT
.L83:
	mov	rdx, QWORD PTR -64[rbp]
	mov	rcx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	parseredirs
	mov	QWORD PTR -24[rbp], rax
.L79:
	mov	rcx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, .LC11[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	peek
	test	eax, eax
	je	.L84
	jmp	.L81
.L87:
	nop
.L81:
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR -48[rbp]
	movsx	rdx, edx
	mov	QWORD PTR 8[rax+rdx*8], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L86
	call	__stack_chk_fail@PLT
.L86:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	parseexec, .-parseexec
	.local	buf.1
	.comm	buf.1,100,32
	.section	.rodata
	.type	__PRETTY_FUNCTION__.0, @object
	.size	__PRETTY_FUNCTION__.0, 7
__PRETTY_FUNCTION__.0:
	.string	"mkcopy"
	.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	"237643352.c"
	.text
	.section	.rodata
	.align	2
.LC0:
	.ascii	"unknown runcmd\012\000"
	.align	2
.LC1:
	.ascii	"exec not implemented\012\000"
	.align	2
.LC2:
	.ascii	"redir not implemented\012\000"
	.align	2
.LC3:
	.ascii	"pipe not implemented\012\000"
	.align	2
.LC4:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	runcmd
	.syntax unified
	.arm
	.fpu softvfp
	.type	runcmd, %function
runcmd:
	@ args = 0, 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, #-32]
	ldr	r3, .L10
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L2
	mov	r0, #0
	bl	exit
.L2:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	cmp	r3, #124
	beq	.L3
	cmp	r3, #124
	bgt	.L4
	cmp	r3, #62
	beq	.L5
	cmp	r3, #62
	bgt	.L4
	cmp	r3, #32
	beq	.L6
	cmp	r3, #60
	beq	.L5
.L4:
	ldr	r3, .L10+4
	ldr	r3, [r3]
	mov	r2, #15
	mov	r1, #1
	ldr	r0, .L10+8
	bl	fwrite
	mvn	r0, #0
	bl	exit
.L6:
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bne	.L7
	mov	r0, #0
	bl	exit
.L7:
	ldr	r3, .L10+4
	ldr	r3, [r3]
	mov	r2, #21
	mov	r1, #1
	ldr	r0, .L10+12
	bl	fwrite
	b	.L8
.L5:
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-24]
	ldr	r3, .L10+4
	ldr	r3, [r3]
	mov	r2, #22
	mov	r1, #1
	ldr	r0, .L10+16
	bl	fwrite
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	runcmd
	b	.L8
.L3:
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-28]
	ldr	r3, .L10+4
	ldr	r3, [r3]
	mov	r2, #21
	mov	r1, #1
	ldr	r0, .L10+20
	bl	fwrite
	nop
.L8:
	mov	r0, #0
	bl	exit
.L11:
	.align	2
.L10:
	.word	.LC4
	.word	stderr
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.size	runcmd, .-runcmd
	.section	.rodata
	.align	2
.LC5:
	.ascii	"143A$ \000"
	.text
	.align	2
	.global	getcmd
	.syntax unified
	.arm
	.fpu softvfp
	.type	getcmd, %function
getcmd:
	@ 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]
	str	r1, [fp, #-12]
	ldr	r3, .L16
	ldr	r3, [r3]
	mov	r0, r3
	bl	fileno
	mov	r3, r0
	mov	r0, r3
	bl	isatty
	mov	r3, r0
	cmp	r3, #0
	beq	.L13
	ldr	r3, .L16+4
	ldr	r3, [r3]
	mov	r2, #6
	mov	r1, #1
	ldr	r0, .L16+8
	bl	fwrite
.L13:
	ldr	r3, [fp, #-12]
	mov	r2, r3
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	memset
	ldr	r3, .L16
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	fgets
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L14
	mvn	r3, #0
	b	.L15
.L14:
	mov	r3, #0
.L15:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L17:
	.align	2
.L16:
	.word	stdin
	.word	stdout
	.word	.LC5
	.size	getcmd, .-getcmd
	.section	.rodata
	.align	2
.LC6:
	.ascii	"cannot cd %s\012\000"
	.align	2
.LC7:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r3, .L25
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	b	.L19
.L23:
	ldr	r3, .L25+4
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #99
	bne	.L20
	ldr	r3, .L25+4
	ldrb	r3, [r3, #1]	@ zero_extendqisi2
	cmp	r3, #100
	bne	.L20
	ldr	r3, .L25+4
	ldrb	r3, [r3, #2]	@ zero_extendqisi2
	cmp	r3, #32
	bne	.L20
	ldr	r0, .L25+4
	bl	strlen
	mov	r3, r0
	sub	r3, r3, #1
	ldr	r2, .L25+4
	mov	r1, #0
	strb	r1, [r2, r3]
	ldr	r3, .L25+8
	mov	r0, r3
	bl	chdir
	mov	r3, r0
	cmp	r3, #0
	bge	.L19
	ldr	r3, .L25+12
	ldr	r3, [r3]
	ldr	r2, .L25+8
	ldr	r1, .L25+16
	mov	r0, r3
	bl	fprintf
	b	.L19
.L20:
	bl	fork1
	mov	r3, r0
	cmp	r3, #0
	bne	.L22
	ldr	r0, .L25+4
	bl	parsecmd
	mov	r3, r0
	mov	r0, r3
	bl	runcmd
.L22:
	sub	r3, fp, #12
	mov	r0, r3
	bl	wait
.L19:
	mov	r1, #100
	ldr	r0, .L25+4
	bl	getcmd
	mov	r3, r0
	cmp	r3, #0
	bge	.L23
	mov	r0, #0
	bl	exit
.L26:
	.align	2
.L25:
	.word	.LC7
	.word	buf.6455
	.word	buf.6455+3
	.word	stderr
	.word	.LC6
	.size	main, .-main
	.section	.rodata
	.align	2
.LC8:
	.ascii	"fork\000"
	.text
	.align	2
	.global	fork1
	.syntax unified
	.arm
	.fpu softvfp
	.type	fork1, %function
fork1:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	bl	fork
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	bne	.L28
	ldr	r0, .L30
	bl	perror
.L28:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L31:
	.align	2
.L30:
	.word	.LC8
	.size	fork1, .-fork1
	.align	2
	.global	execcmd
	.syntax unified
	.arm
	.fpu softvfp
	.type	execcmd, %function
execcmd:
	@ 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, #44
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	mov	r2, #44
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	memset
	ldr	r3, [fp, #-8]
	mov	r2, #32
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	execcmd, .-execcmd
	.align	2
	.global	redircmd
	.syntax unified
	.arm
	.fpu softvfp
	.type	redircmd, %function
redircmd:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	mov	r0, #20
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	mov	r2, #20
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	memset
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-24]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	cmp	r3, #60
	bne	.L35
	mov	r2, #0
	b	.L36
.L35:
	ldr	r2, .L38
.L36:
	ldr	r3, [fp, #-8]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-24]
	cmp	r3, #60
	movne	r3, #1
	moveq	r3, #0
	and	r3, r3, #255
	mov	r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L39:
	.align	2
.L38:
	.word	577
	.size	redircmd, .-redircmd
	.align	2
	.global	pipecmd
	.syntax unified
	.arm
	.fpu softvfp
	.type	pipecmd, %function
pipecmd:
	@ 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, #-16]
	str	r1, [fp, #-20]
	mov	r0, #12
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	mov	r2, #12
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	memset
	ldr	r3, [fp, #-8]
	mov	r2, #124
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	pipecmd, .-pipecmd
	.global	whitespace
	.data
	.align	2
	.type	whitespace, %object
	.size	whitespace, 6
whitespace:
	.ascii	" \011\015\012\013\000"
	.global	symbols
	.align	2
	.type	symbols, %object
	.size	symbols, 4
symbols:
	.ascii	"<|>\000"
	.text
	.align	2
	.global	gettoken
	.syntax unified
	.arm
	.fpu softvfp
	.type	gettoken, %function
gettoken:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	b	.L43
.L45:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L43:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	bcs	.L44
	ldr	r3, [fp, #-12]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L62
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	bne	.L45
.L44:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L46
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-12]
	str	r2, [r3]
.L46:
	ldr	r3, [fp, #-12]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #124
	beq	.L47
	cmp	r3, #124
	bgt	.L48
	cmp	r3, #62
	beq	.L49
	cmp	r3, #62
	bgt	.L48
	cmp	r3, #0
	beq	.L60
	cmp	r3, #60
	bne	.L48
.L47:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	b	.L51
.L49:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	b	.L51
.L48:
	mov	r3, #97
	str	r3, [fp, #-8]
	b	.L52
.L54:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L52:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	bcs	.L61
	ldr	r3, [fp, #-12]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L62
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	bne	.L61
	ldr	r3, [fp, #-12]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L62+4
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	beq	.L54
	b	.L61
.L60:
	nop
	b	.L51
.L61:
	nop
.L51:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L56
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-12]
	str	r2, [r3]
	b	.L56
.L58:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L56:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	bcs	.L57
	ldr	r3, [fp, #-12]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L62
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	bne	.L58
.L57:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L63:
	.align	2
.L62:
	.word	whitespace
	.word	symbols
	.size	gettoken, .-gettoken
	.align	2
	.global	peek
	.syntax unified
	.arm
	.fpu softvfp
	.type	peek, %function
peek:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	b	.L65
.L67:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L65:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	bcs	.L66
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L71
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	bne	.L67
.L66:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L68
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	beq	.L68
	mov	r3, #1
	b	.L70
.L68:
	mov	r3, #0
.L70:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L72:
	.align	2
.L71:
	.word	whitespace
	.size	peek, .-peek
	.section	.rodata
	.align	2
.LC9:
	.ascii	"the_stack_data/237643352.c\000"
	.align	2
.LC10:
	.ascii	"c\000"
	.text
	.align	2
	.global	mkcopy
	.syntax unified
	.arm
	.fpu softvfp
	.type	mkcopy, %function
mkcopy:
	@ 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, #-16]
	str	r1, [fp, #-20]
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L74
	ldr	r3, .L76
	mov	r2, #236
	ldr	r1, .L76+4
	ldr	r0, .L76+8
	bl	__assert_fail
.L74:
	ldr	r3, [fp, #-12]
	mov	r2, r3
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-8]
	bl	strncpy
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L77:
	.align	2
.L76:
	.word	__PRETTY_FUNCTION__.6529
	.word	.LC9
	.word	.LC10
	.size	mkcopy, .-mkcopy
	.section	.rodata
	.align	2
.LC11:
	.ascii	"\000"
	.align	2
.LC12:
	.ascii	"leftovers: %s\012\000"
	.text
	.align	2
	.global	parsecmd
	.syntax unified
	.arm
	.fpu softvfp
	.type	parsecmd, %function
parsecmd:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-24]
	ldr	r4, [fp, #-24]
	ldr	r3, [fp, #-24]
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	add	r3, r4, r3
	str	r3, [fp, #-20]
	sub	r3, fp, #24
	ldr	r1, [fp, #-20]
	mov	r0, r3
	bl	parseline
	str	r0, [fp, #-16]
	sub	r3, fp, #24
	ldr	r2, .L81
	ldr	r1, [fp, #-20]
	mov	r0, r3
	bl	peek
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	beq	.L79
	ldr	r3, .L81+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	ldr	r1, .L81+8
	mov	r0, r3
	bl	fprintf
	mvn	r0, #0
	bl	exit
.L79:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L82:
	.align	2
.L81:
	.word	.LC11
	.word	stderr
	.word	.LC12
	.size	parsecmd, .-parsecmd
	.align	2
	.global	parseline
	.syntax unified
	.arm
	.fpu softvfp
	.type	parseline, %function
parseline:
	@ 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, #-16]
	str	r1, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	parsepipe
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	parseline, .-parseline
	.section	.rodata
	.align	2
.LC13:
	.ascii	"|\000"
	.text
	.align	2
	.global	parsepipe
	.syntax unified
	.arm
	.fpu softvfp
	.type	parsepipe, %function
parsepipe:
	@ 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, #-16]
	str	r1, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	parseexec
	str	r0, [fp, #-8]
	ldr	r2, .L88
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	peek
	mov	r3, r0
	cmp	r3, #0
	beq	.L86
	mov	r3, #0
	mov	r2, #0
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	gettoken
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	parsepipe
	mov	r3, r0
	mov	r1, r3
	ldr	r0, [fp, #-8]
	bl	pipecmd
	str	r0, [fp, #-8]
.L86:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L89:
	.align	2
.L88:
	.word	.LC13
	.size	parsepipe, .-parsepipe
	.section	.rodata
	.align	2
.LC14:
	.ascii	"missing file for redirection\012\000"
	.align	2
.LC15:
	.ascii	"<>\000"
	.align	2
.LC16:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	parseredirs
	.syntax unified
	.arm
	.fpu softvfp
	.type	parseredirs, %function
parseredirs:
	@ args = 0, 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]
	ldr	r3, .L98
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	b	.L91
.L95:
	mov	r3, #0
	mov	r2, #0
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-28]
	bl	gettoken
	str	r0, [fp, #-12]
	sub	r3, fp, #16
	sub	r2, fp, #20
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-28]
	bl	gettoken
	mov	r3, r0
	cmp	r3, #97
	beq	.L92
	ldr	r3, .L98+4
	ldr	r3, [r3]
	mov	r2, #29
	mov	r1, #1
	ldr	r0, .L98+8
	bl	fwrite
	mvn	r0, #0
	bl	exit
.L92:
	ldr	r3, [fp, #-12]
	cmp	r3, #60
	beq	.L93
	ldr	r3, [fp, #-12]
	cmp	r3, #62
	beq	.L94
	b	.L91
.L93:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-16]
	mov	r1, r2
	mov	r0, r3
	bl	mkcopy
	mov	r3, r0
	mov	r2, #60
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	redircmd
	str	r0, [fp, #-24]
	b	.L91
.L94:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-16]
	mov	r1, r2
	mov	r0, r3
	bl	mkcopy
	mov	r3, r0
	mov	r2, #62
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	redircmd
	str	r0, [fp, #-24]
	nop
.L91:
	ldr	r2, .L98+12
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-28]
	bl	peek
	mov	r3, r0
	cmp	r3, #0
	bne	.L95
	ldr	r3, [fp, #-24]
	ldr	r2, .L98
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L97
	bl	__stack_chk_fail
.L97:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L99:
	.align	2
.L98:
	.word	.LC16
	.word	stderr
	.word	.LC14
	.word	.LC15
	.size	parseredirs, .-parseredirs
	.section	.rodata
	.align	2
.LC17:
	.ascii	"syntax error\012\000"
	.align	2
.LC18:
	.ascii	"too many args\012\000"
	.align	2
.LC19:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	parseexec
	.syntax unified
	.arm
	.fpu softvfp
	.type	parseexec, %function
parseexec:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	ldr	r3, .L110
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	bl	execcmd
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-20]
	bl	parseredirs
	str	r0, [fp, #-20]
	b	.L101
.L106:
	sub	r3, fp, #28
	sub	r2, fp, #32
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-40]
	bl	gettoken
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L109
	ldr	r3, [fp, #-12]
	cmp	r3, #97
	beq	.L104
	ldr	r3, .L110+4
	ldr	r3, [r3]
	mov	r2, #13
	mov	r1, #1
	ldr	r0, .L110+8
	bl	fwrite
	mvn	r0, #0
	bl	exit
.L104:
	ldr	r3, [fp, #-32]
	ldr	r2, [fp, #-28]
	mov	r1, r2
	mov	r0, r3
	bl	mkcopy
	mov	r1, r0
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	str	r1, [r3, #4]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmp	r3, #9
	ble	.L105
	ldr	r3, .L110+4
	ldr	r3, [r3]
	mov	r2, #14
	mov	r1, #1
	ldr	r0, .L110+12
	bl	fwrite
	mvn	r0, #0
	bl	exit
.L105:
	ldr	r2, [fp, #-44]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-20]
	bl	parseredirs
	str	r0, [fp, #-20]
.L101:
	ldr	r2, .L110+16
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-40]
	bl	peek
	mov	r3, r0
	cmp	r3, #0
	beq	.L106
	b	.L103
.L109:
	nop
.L103:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, [fp, #-20]
	ldr	r2, .L110
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L108
	bl	__stack_chk_fail
.L108:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L111:
	.align	2
.L110:
	.word	.LC19
	.word	stderr
	.word	.LC17
	.word	.LC18
	.word	.LC13
	.size	parseexec, .-parseexec
	.local	buf.6455
	.comm	buf.6455,100,4
	.section	.rodata
	.align	2
	.type	__PRETTY_FUNCTION__.6529, %object
	.size	__PRETTY_FUNCTION__.6529, 7
__PRETTY_FUNCTION__.6529:
	.ascii	"mkcopy\000"
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
