	.arch armv8-a
	.file	"main.c"
	.text
	.global	state
	.data
	.align	2
	.type	state, %object
	.size	state, 4
state:
	.word	1
	.global	input
	.bss
	.align	3
	.type	input, %object
	.size	input, 100
input:
	.zero	100
	.section	.rodata
	.align	3
.LC0:
	.string	" "
	.align	3
.LC1:
	.string	"exit"
	.align	3
.LC2:
	.string	"test"
	.align	3
.LC3:
	.string	"clear"
	.align	3
.LC4:
	.string	"unix"
	.align	3
.LC5:
	.string	"ls"
	.align	3
.LC6:
	.string	"date"
	.align	3
.LC7:
	.string	"whoami"
	.align	3
.LC8:
	.string	"cat"
	.align	3
.LC9:
	.string	"Usage: cat <filename>"
	.align	3
.LC10:
	.string	"nl"
	.align	3
.LC11:
	.string	"Usage: nl <filename>"
	.align	3
.LC12:
	.string	"cd"
	.align	3
.LC13:
	.string	"help"
	.text
	.align	2
	.global	main
	.type	main, %function
main:
.LFB6:
	.cfi_startproc
	stp	x29, x30, [sp, -128]!
	.cfi_def_cfa_offset 128
	.cfi_offset 29, -128
	.cfi_offset 30, -120
	mov	x29, sp
	b	.L2
.L20:
	bl	print_shell
	bl	get_input
	adrp	x0, .LC0
	add	x1, x0, :lo12:.LC0
	adrp	x0, input
	add	x0, x0, :lo12:input
	bl	strtok
	str	x0, [sp, 112]
	adrp	x0, .LC0
	add	x1, x0, :lo12:.LC0
	mov	x0, 0
	bl	strtok
	str	x0, [sp, 104]
	ldr	x0, [sp, 112]
	cmp	x0, 0
	bne	.L3
	b	.L2
.L3:
	adrp	x0, .LC1
	add	x1, x0, :lo12:.LC1
	adrp	x0, input
	add	x0, x0, :lo12:input
	bl	strcmp
	cmp	w0, 0
	bne	.L4
	bl	do_exit
	b	.L2
.L4:
	adrp	x0, .LC2
	add	x1, x0, :lo12:.LC2
	adrp	x0, input
	add	x0, x0, :lo12:input
	bl	strcmp
	cmp	w0, 0
	bne	.L5
	bl	test
	b	.L2
.L5:
	adrp	x0, .LC3
	add	x1, x0, :lo12:.LC3
	adrp	x0, input
	add	x0, x0, :lo12:input
	bl	strcmp
	cmp	w0, 0
	bne	.L6
	bl	clear_screen
	b	.L2
.L6:
	adrp	x0, .LC4
	add	x1, x0, :lo12:.LC4
	adrp	x0, input
	add	x0, x0, :lo12:input
	bl	strcmp
	cmp	w0, 0
	bne	.L7
	bl	_unix
	b	.L2
.L7:
	adrp	x0, .LC5
	add	x1, x0, :lo12:.LC5
	adrp	x0, input
	add	x0, x0, :lo12:input
	bl	strcmp
	cmp	w0, 0
	bne	.L8
	bl	ls
	b	.L2
.L8:
	adrp	x0, .LC6
	add	x1, x0, :lo12:.LC6
	adrp	x0, input
	add	x0, x0, :lo12:input
	bl	strcmp
	cmp	w0, 0
	bne	.L9
	bl	date
	b	.L2
.L9:
	adrp	x0, .LC7
	add	x1, x0, :lo12:.LC7
	adrp	x0, input
	add	x0, x0, :lo12:input
	bl	strcmp
	cmp	w0, 0
	bne	.L10
	bl	whoami
	b	.L2
.L10:
	adrp	x0, .LC8
	add	x1, x0, :lo12:.LC8
	ldr	x0, [sp, 112]
	bl	strcmp
	cmp	w0, 0
	bne	.L11
	ldr	x0, [sp, 104]
	cmp	x0, 0
	beq	.L12
	ldr	x0, [sp, 104]
	bl	cat
	b	.L2
.L12:
	adrp	x0, .LC9
	add	x0, x0, :lo12:.LC9
	bl	puts
	b	.L2
.L11:
	adrp	x0, .LC10
	add	x1, x0, :lo12:.LC10
	ldr	x0, [sp, 112]
	bl	strcmp
	cmp	w0, 0
	bne	.L13
	ldr	x0, [sp, 104]
	cmp	x0, 0
	beq	.L14
	ldr	x0, [sp, 104]
	bl	nl
	b	.L2
.L14:
	adrp	x0, .LC11
	add	x0, x0, :lo12:.LC11
	bl	puts
	b	.L2
.L13:
	adrp	x0, .LC12
	add	x1, x0, :lo12:.LC12
	ldr	x0, [sp, 112]
	bl	strcmp
	cmp	w0, 0
	bne	.L15
	ldr	x0, [sp, 104]
	bl	cd
	b	.L2
.L15:
	adrp	x0, .LC13
	add	x1, x0, :lo12:.LC13
	ldr	x0, [sp, 112]
	bl	strcmp
	cmp	w0, 0
	bne	.L16
	bl	help
	b	.L2
.L16:
	str	wzr, [sp, 124]
	ldr	w0, [sp, 124]
	add	w1, w0, 1
	str	w1, [sp, 124]
	sxtw	x0, w0
	lsl	x0, x0, 3
	add	x1, sp, 24
	ldr	x2, [sp, 112]
	str	x2, [x1, x0]
	b	.L17
.L19:
	ldr	w0, [sp, 124]
	add	w1, w0, 1
	str	w1, [sp, 124]
	sxtw	x0, w0
	lsl	x0, x0, 3
	add	x1, sp, 24
	ldr	x2, [sp, 104]
	str	x2, [x1, x0]
.L17:
	adrp	x0, .LC0
	add	x1, x0, :lo12:.LC0
	mov	x0, 0
	bl	strtok
	str	x0, [sp, 104]
	ldr	x0, [sp, 104]
	cmp	x0, 0
	beq	.L18
	ldr	w0, [sp, 124]
	cmp	w0, 8
	ble	.L19
.L18:
	ldrsw	x0, [sp, 124]
	lsl	x0, x0, 3
	add	x1, sp, 24
	str	xzr, [x1, x0]
	add	x0, sp, 24
	mov	x1, x0
	ldr	x0, [sp, 112]
	bl	execute_program
.L2:
	adrp	x0, state
	add	x0, x0, :lo12:state
	ldr	w0, [x0]
	cmp	w0, 0
	bne	.L20
	mov	w0, 0
	ldp	x29, x30, [sp], 128
	.cfi_restore 30
	.cfi_restore 29
	.cfi_def_cfa_offset 0
	ret
	.cfi_endproc
.LFE6:
	.size	main, .-main
	.ident	"GCC: (Debian 14.2.0-19) 14.2.0"
	.section	.note.GNU-stack,"",@progbits
