	.file	"811061.c"
	.intel_syntax noprefix
	.text
	.globl	memoryBlocksArray
	.bss
	.align 32
	.type	memoryBlocksArray, @object
	.size	memoryBlocksArray, 50
memoryBlocksArray:
	.zero	50
	.globl	currentBlockIndex
	.align 2
	.type	currentBlockIndex, @object
	.size	currentBlockIndex, 2
currentBlockIndex:
	.zero	2
	.globl	reg
	.align 2
	.type	reg, @object
	.size	reg, 2
reg:
	.zero	2
	.globl	isRegisterInitialized
	.align 2
	.type	isRegisterInitialized, @object
	.size	isRegisterInitialized, 2
isRegisterInitialized:
	.zero	2
	.text
	.globl	commandNamesEqual
	.type	commandNamesEqual, @function
commandNamesEqual:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -4[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L2
.L5:
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	je	.L3
	mov	eax, 0
	jmp	.L4
.L3:
	add	DWORD PTR -4[rbp], 1
.L2:
	cmp	DWORD PTR -4[rbp], 2
	jle	.L5
	mov	eax, 1
.L4:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	commandNamesEqual, .-commandNamesEqual
	.section	.rodata
.LC0:
	.string	"\nError [%s]: %s\n"
	.text
	.globl	exitWithError
	.type	exitWithError, @function
exitWithError:
.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	QWORD PTR -16[rbp], rsi
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC0[rip]
	mov	eax, 0
	call	printf@PLT
	mov	edi, 1
	call	exit@PLT
	.cfi_endproc
.LFE7:
	.size	exitWithError, .-exitWithError
	.section	.rodata
.LC1:
	.string	"moo"
.LC2:
	.string	"mOo"
.LC3:
	.string	"moO"
.LC4:
	.string	"mOO"
.LC5:
	.string	"Moo"
.LC6:
	.string	"MOo"
.LC7:
	.string	"MoO"
.LC8:
	.string	"MOO"
.LC9:
	.string	"OOO"
.LC10:
	.string	"MMM"
.LC11:
	.string	"OOM"
.LC12:
	.string	"oom"
	.text
	.globl	getCommandCode
	.type	getCommandCode, @function
getCommandCode:
.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, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC1[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L8
	mov	eax, 0
	jmp	.L9
.L8:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC2[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L10
	mov	eax, 1
	jmp	.L9
.L10:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC3[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L11
	mov	eax, 2
	jmp	.L9
.L11:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC4[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L12
	mov	eax, 3
	jmp	.L9
.L12:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC5[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L13
	mov	eax, 4
	jmp	.L9
.L13:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC6[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L14
	mov	eax, 5
	jmp	.L9
.L14:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC7[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L15
	mov	eax, 6
	jmp	.L9
.L15:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC8[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L16
	mov	eax, 7
	jmp	.L9
.L16:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC9[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L17
	mov	eax, 8
	jmp	.L9
.L17:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC10[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L18
	mov	eax, 9
	jmp	.L9
.L18:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC11[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L19
	mov	eax, 10
	jmp	.L9
.L19:
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC12[rip]
	mov	rdi, rax
	call	commandNamesEqual
	test	ax, ax
	je	.L20
	mov	eax, 11
	jmp	.L9
.L20:
	mov	eax, -1
.L9:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	getCommandCode, .-getCommandCode
	.section	.rodata
	.align 8
.LC13:
	.string	"could not find a matching 'MOO' command"
	.align 8
.LC14:
	.string	"trying to access a memory block before the first one."
.LC15:
	.string	"not enough memory."
	.align 8
.LC16:
	.string	"cannot call itself, it would cause an infinite loop."
.LC17:
	.string	"[mOO]: quit program"
.LC18:
	.string	"not implemented yet"
	.align 8
.LC19:
	.string	"this character cannot be printed to STDOUT."
	.align 8
.LC20:
	.string	"could not find a matching 'moo' command"
.LC21:
	.string	"%d\n"
.LC22:
	.string	"invalid command code."
.LC23:
	.string	"execCommand()"
	.text
	.globl	execCommand
	.type	execCommand, @function
execCommand:
.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, 48
	mov	QWORD PTR -32[rbp], rsi
	mov	eax, ecx
	mov	ecx, edi
	mov	WORD PTR -20[rbp], cx
	mov	WORD PTR -24[rbp], dx
	mov	WORD PTR -36[rbp], ax
	mov	WORD PTR -4[rbp], 0
	mov	WORD PTR -2[rbp], 0
	movsx	eax, WORD PTR -20[rbp]
	cmp	eax, 11
	ja	.L22
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L24[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L24[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L24:
	.long	.L35-.L24
	.long	.L34-.L24
	.long	.L33-.L24
	.long	.L32-.L24
	.long	.L31-.L24
	.long	.L30-.L24
	.long	.L29-.L24
	.long	.L28-.L24
	.long	.L27-.L24
	.long	.L26-.L24
	.long	.L25-.L24
	.long	.L23-.L24
	.text
.L35:
	movzx	eax, WORD PTR -24[rbp]
	sub	eax, 2
	mov	WORD PTR -24[rbp], ax
	mov	WORD PTR -2[rbp], 0
	jmp	.L36
.L42:
	movsx	rax, WORD PTR -24[rbp]
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	cwde
	test	eax, eax
	je	.L37
	cmp	eax, 7
	je	.L38
	jmp	.L39
.L37:
	movzx	eax, WORD PTR -2[rbp]
	add	eax, 1
	mov	WORD PTR -2[rbp], ax
	jmp	.L39
.L38:
	cmp	WORD PTR -2[rbp], 0
	jne	.L40
	movzx	eax, WORD PTR -24[rbp]
	jmp	.L41
.L40:
	movzx	eax, WORD PTR -2[rbp]
	sub	eax, 1
	mov	WORD PTR -2[rbp], ax
	nop
.L39:
	movzx	eax, WORD PTR -24[rbp]
	sub	eax, 1
	mov	WORD PTR -24[rbp], ax
.L36:
	cmp	WORD PTR -24[rbp], 0
	jns	.L42
	lea	rsi, .LC13[rip]
	lea	rdi, .LC8[rip]
	call	exitWithError
	jmp	.L43
.L34:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	test	ax, ax
	jle	.L44
	movzx	eax, WORD PTR currentBlockIndex[rip]
	sub	eax, 1
	mov	WORD PTR currentBlockIndex[rip], ax
	jmp	.L43
.L44:
	lea	rsi, .LC14[rip]
	lea	rdi, .LC2[rip]
	call	exitWithError
	jmp	.L43
.L33:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cmp	ax, 23
	jg	.L46
	movzx	eax, WORD PTR currentBlockIndex[rip]
	add	eax, 1
	mov	WORD PTR currentBlockIndex[rip], ax
	jmp	.L43
.L46:
	lea	rsi, .LC15[rip]
	lea	rdi, .LC3[rip]
	call	exitWithError
	jmp	.L43
.L32:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	movzx	eax, WORD PTR [rdx+rax]
	cmp	WORD PTR -20[rbp], ax
	jne	.L48
	lea	rsi, .LC16[rip]
	lea	rdi, .LC4[rip]
	call	exitWithError
	jmp	.L43
.L48:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	movzx	eax, WORD PTR [rdx+rax]
	test	ax, ax
	js	.L50
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	movzx	eax, WORD PTR [rdx+rax]
	cmp	ax, 11
	jg	.L50
	movsx	ecx, WORD PTR -24[rbp]
	movsx	edx, WORD PTR -24[rbp]
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rsi, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	movzx	eax, WORD PTR [rsi+rax]
	cwde
	mov	rsi, QWORD PTR -32[rbp]
	mov	edi, eax
	call	execCommand
	jmp	.L43
.L50:
	lea	rdi, .LC17[rip]
	mov	eax, 0
	call	printf@PLT
	mov	edi, 0
	call	exit@PLT
.L31:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	movzx	eax, WORD PTR [rdx+rax]
	test	ax, ax
	jne	.L51
	lea	rsi, .LC18[rip]
	lea	rdi, .LC5[rip]
	call	exitWithError
	jmp	.L43
.L51:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	movzx	eax, WORD PTR [rdx+rax]
	test	ax, ax
	jle	.L53
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	movzx	eax, WORD PTR [rdx+rax]
	cmp	ax, 255
	jg	.L53
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	movzx	eax, WORD PTR [rdx+rax]
	cwde
	mov	edi, eax
	call	putchar@PLT
	jmp	.L43
.L53:
	lea	rsi, .LC19[rip]
	lea	rdi, .LC5[rip]
	call	exitWithError
	jmp	.L43
.L30:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	movsx	rdx, eax
	lea	rcx, [rdx+rdx]
	lea	rdx, memoryBlocksArray[rip]
	movzx	edx, WORD PTR [rcx+rdx]
	sub	edx, 1
	mov	ecx, edx
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	mov	WORD PTR [rdx+rax], cx
	jmp	.L43
.L29:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	movsx	rdx, eax
	lea	rcx, [rdx+rdx]
	lea	rdx, memoryBlocksArray[rip]
	movzx	edx, WORD PTR [rcx+rdx]
	add	edx, 1
	mov	ecx, edx
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	mov	WORD PTR [rdx+rax], cx
	jmp	.L43
.L28:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	movzx	eax, WORD PTR [rdx+rax]
	test	ax, ax
	jne	.L63
	mov	WORD PTR -4[rbp], 0
	movzx	eax, WORD PTR -24[rbp]
	add	eax, 2
	mov	WORD PTR -24[rbp], ax
	jmp	.L55
.L60:
	movsx	rax, WORD PTR -24[rbp]
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	cwde
	test	eax, eax
	je	.L56
	cmp	eax, 7
	je	.L57
	jmp	.L58
.L56:
	cmp	WORD PTR -4[rbp], 0
	jne	.L59
	movzx	eax, WORD PTR -24[rbp]
	add	eax, 1
	jmp	.L41
.L59:
	movzx	eax, WORD PTR -4[rbp]
	sub	eax, 1
	mov	WORD PTR -4[rbp], ax
	jmp	.L58
.L57:
	movzx	eax, WORD PTR -4[rbp]
	add	eax, 1
	mov	WORD PTR -4[rbp], ax
	nop
.L58:
	movzx	eax, WORD PTR -24[rbp]
	add	eax, 1
	mov	WORD PTR -24[rbp], ax
.L55:
	movzx	eax, WORD PTR -24[rbp]
	cmp	ax, WORD PTR -36[rbp]
	jl	.L60
	lea	rsi, .LC20[rip]
	lea	rdi, .LC8[rip]
	call	exitWithError
	jmp	.L63
.L27:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	mov	WORD PTR [rdx+rax], 0
	jmp	.L43
.L26:
	movzx	eax, WORD PTR isRegisterInitialized[rip]
	test	ax, ax
	jne	.L61
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	movzx	eax, WORD PTR [rdx+rax]
	mov	WORD PTR reg[rip], ax
	mov	WORD PTR isRegisterInitialized[rip], 1
	jmp	.L43
.L61:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	movsx	edx, ax
	movzx	eax, WORD PTR reg[rip]
	movsx	rdx, edx
	lea	rcx, [rdx+rdx]
	lea	rdx, memoryBlocksArray[rip]
	mov	WORD PTR [rcx+rdx], ax
	mov	WORD PTR isRegisterInitialized[rip], 0
	jmp	.L43
.L25:
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	movzx	eax, WORD PTR [rdx+rax]
	cwde
	mov	esi, eax
	lea	rdi, .LC21[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L43
.L23:
	lea	rsi, .LC18[rip]
	lea	rdi, .LC12[rip]
	call	exitWithError
	jmp	.L43
.L22:
	lea	rsi, .LC22[rip]
	lea	rdi, .LC23[rip]
	call	exitWithError
	jmp	.L43
.L63:
	nop
.L43:
	movzx	eax, WORD PTR -24[rbp]
	add	eax, 1
.L41:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	execCommand, .-execCommand
	.section	.rodata
	.align 8
.LC24:
	.string	"too many instructions, not enough space in opcodes array"
.LC25:
	.string	"parser"
	.text
	.globl	parser
	.type	parser, @function
parser:
.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, 64
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	eax, edx
	mov	WORD PTR -52[rbp], ax
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	WORD PTR -20[rbp], 0
	mov	WORD PTR -18[rbp], 0
	mov	WORD PTR -14[rbp], -1
	mov	BYTE PTR -10[rbp], 0
	mov	WORD PTR -16[rbp], 0
	mov	WORD PTR -16[rbp], 0
	jmp	.L65
.L71:
	movsx	rdx, WORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	sub	eax, 77
	cmp	eax, 34
	seta	dl
	test	dl, dl
	jne	.L66
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	movabs	rax, 21474836485
	and	rax, rdx
	test	rax, rax
	setne	al
	test	al, al
	je	.L66
	movzx	eax, WORD PTR -18[rbp]
	add	eax, 1
	mov	WORD PTR -18[rbp], ax
	nop
	cmp	WORD PTR -18[rbp], 3
	jne	.L68
	jmp	.L74
.L66:
	mov	WORD PTR -18[rbp], 0
	jmp	.L68
.L74:
	movsx	rax, WORD PTR -16[rbp]
	lea	rdx, -2[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -12[rbp], al
	movsx	rax, WORD PTR -16[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -11[rbp], al
	movsx	rdx, WORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -10[rbp], al
	lea	rax, -12[rbp]
	mov	rdi, rax
	call	getCommandCode
	mov	WORD PTR -14[rbp], ax
	cmp	WORD PTR -14[rbp], -1
	je	.L69
	mov	WORD PTR -18[rbp], 0
	movzx	eax, WORD PTR -20[rbp]
	cmp	ax, WORD PTR -52[rbp]
	jge	.L70
	movsx	rax, WORD PTR -20[rbp]
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -48[rbp]
	add	rdx, rax
	movzx	eax, WORD PTR -14[rbp]
	mov	WORD PTR [rdx], ax
	movzx	eax, WORD PTR -20[rbp]
	add	eax, 1
	mov	WORD PTR -20[rbp], ax
	jmp	.L68
.L70:
	lea	rsi, .LC24[rip]
	lea	rdi, .LC25[rip]
	call	exitWithError
	jmp	.L68
.L69:
	movzx	eax, WORD PTR -18[rbp]
	sub	eax, 1
	mov	WORD PTR -18[rbp], ax
.L68:
	movzx	eax, WORD PTR -16[rbp]
	add	eax, 1
	mov	WORD PTR -16[rbp], ax
.L65:
	movsx	rdx, WORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L71
	movzx	eax, WORD PTR -20[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L73
	call	__stack_chk_fail@PLT
.L73:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	parser, .-parser
	.section	.rodata
.LC26:
	.string	"r"
	.align 8
.LC27:
	.string	"could not open file for reading"
.LC28:
	.string	"parserfile"
	.text
	.globl	parserFile
	.type	parserFile, @function
parserFile:
.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, 80
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	eax, edx
	mov	WORD PTR -68[rbp], ax
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	WORD PTR -34[rbp], 0
	mov	WORD PTR -32[rbp], 0
	mov	WORD PTR -30[rbp], -1
	mov	BYTE PTR -10[rbp], 0
	mov	rax, QWORD PTR -56[rbp]
	lea	rsi, .LC26[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L77
	lea	rsi, .LC27[rip]
	lea	rdi, .LC28[rip]
	call	exitWithError
	jmp	.L77
.L82:
	mov	eax, DWORD PTR -28[rbp]
	sub	eax, 77
	cmp	eax, 34
	seta	dl
	test	dl, dl
	jne	.L78
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	movabs	rax, 21474836485
	and	rax, rdx
	test	rax, rax
	setne	al
	test	al, al
	je	.L78
	movzx	eax, WORD PTR -32[rbp]
	add	eax, 1
	mov	WORD PTR -32[rbp], ax
	jmp	.L79
.L78:
	mov	WORD PTR -32[rbp], 0
	nop
.L79:
	movzx	eax, BYTE PTR -11[rbp]
	mov	BYTE PTR -12[rbp], al
	movzx	eax, BYTE PTR -10[rbp]
	mov	BYTE PTR -11[rbp], al
	mov	eax, DWORD PTR -28[rbp]
	mov	BYTE PTR -10[rbp], al
	cmp	WORD PTR -32[rbp], 3
	jne	.L77
	lea	rax, -12[rbp]
	mov	rdi, rax
	call	getCommandCode
	mov	WORD PTR -30[rbp], ax
	cmp	WORD PTR -30[rbp], -1
	je	.L80
	mov	WORD PTR -32[rbp], 0
	movzx	eax, WORD PTR -34[rbp]
	cmp	ax, WORD PTR -68[rbp]
	jge	.L81
	movsx	rax, WORD PTR -34[rbp]
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -64[rbp]
	add	rdx, rax
	movzx	eax, WORD PTR -30[rbp]
	mov	WORD PTR [rdx], ax
	movzx	eax, WORD PTR -34[rbp]
	add	eax, 1
	mov	WORD PTR -34[rbp], ax
	jmp	.L77
.L81:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	fclose@PLT
	lea	rsi, .LC24[rip]
	lea	rdi, .LC25[rip]
	call	exitWithError
	jmp	.L77
.L80:
	movzx	eax, WORD PTR -32[rbp]
	sub	eax, 1
	mov	WORD PTR -32[rbp], ax
.L77:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	getc@PLT
	mov	DWORD PTR -28[rbp], eax
	cmp	DWORD PTR -28[rbp], -1
	jne	.L82
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	fclose@PLT
	movzx	eax, WORD PTR -34[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L84
	call	__stack_chk_fail@PLT
.L84:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	parserFile, .-parserFile
	.section	.rodata
.LC29:
	.string	"Memory looks like this:"
.LC30:
	.string	"| %d "
.LC31:
	.string	"\n\nIn ASCII:"
.LC32:
	.string	"|   "
.LC33:
	.string	"| LF "
.LC34:
	.string	"| space "
.LC35:
	.string	"| %c "
	.text
	.globl	printMemory
	.type	printMemory, @function
printMemory:
.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	DWORD PTR -28[rbp], esi
	mov	DWORD PTR -4[rbp], 0
	lea	rdi, .LC29[rip]
	call	puts@PLT
	mov	DWORD PTR -4[rbp], 0
	jmp	.L86
.L87:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	cwde
	mov	esi, eax
	lea	rdi, .LC30[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -4[rbp], 1
.L86:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -28[rbp]
	jl	.L87
	mov	edi, 124
	call	putchar@PLT
	lea	rdi, .LC31[rip]
	call	puts@PLT
	mov	DWORD PTR -4[rbp], 0
	jmp	.L88
.L94:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	cwde
	cmp	eax, 32
	je	.L89
	cmp	eax, 32
	jg	.L90
	test	eax, eax
	je	.L91
	cmp	eax, 10
	je	.L92
	jmp	.L90
.L91:
	lea	rdi, .LC32[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L93
.L92:
	lea	rdi, .LC33[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L93
.L89:
	lea	rdi, .LC34[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L93
.L90:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, [rax+rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	cwde
	mov	esi, eax
	lea	rdi, .LC35[rip]
	mov	eax, 0
	call	printf@PLT
	nop
.L93:
	add	DWORD PTR -4[rbp], 1
.L88:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -28[rbp]
	jl	.L94
	mov	edi, 124
	call	putchar@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	printMemory, .-printMemory
	.section	.rodata
	.align 8
.LC36:
	.string	"you should pass exactly one argument, the name of the source code file"
.LC37:
	.string	"main"
.LC38:
	.string	"\nStarting parser."
.LC39:
	.string	"Reached end of source code."
.LC40:
	.string	"\nExecuting program."
.LC41:
	.string	"Number of memory blocks: %d\n"
.LC42:
	.string	"Index of current block: %d\n"
.LC43:
	.string	"Output: "
	.align 8
.LC44:
	.string	"program is taking too long, infinite loop?"
.LC45:
	.string	"runner"
.LC46:
	.string	"\nProgram end.\n"
	.align 8
.LC47:
	.string	"Number of commands in program: %d\n"
	.align 8
.LC48:
	.string	"Number of executed commands: %u\n"
.LC49:
	.string	"No valid commands found."
	.text
	.globl	main
	.type	main, @function
main:
.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, 4064
	mov	DWORD PTR -4052[rbp], edi
	mov	QWORD PTR -4064[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	DWORD PTR -4052[rbp], 2
	jne	.L96
	mov	rax, QWORD PTR -4064[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -4024[rbp], rax
	jmp	.L97
.L96:
	lea	rsi, .LC36[rip]
	lea	rdi, .LC37[rip]
	call	exitWithError
.L97:
	mov	DWORD PTR -4032[rbp], 0
	mov	DWORD PTR -4032[rbp], 0
	jmp	.L98
.L99:
	mov	eax, DWORD PTR -4032[rbp]
	cdqe
	lea	rdx, [rax+rax]
	lea	rax, memoryBlocksArray[rip]
	mov	WORD PTR [rdx+rax], 0
	add	DWORD PTR -4032[rbp], 1
.L98:
	cmp	DWORD PTR -4032[rbp], 24
	jle	.L99
	lea	rdi, .LC38[rip]
	call	puts@PLT
	lea	rcx, -4016[rbp]
	mov	rax, QWORD PTR -4024[rbp]
	mov	edx, 2000
	mov	rsi, rcx
	mov	rdi, rax
	call	parserFile
	mov	WORD PTR -4034[rbp], ax
	lea	rdi, .LC39[rip]
	call	puts@PLT
	cmp	WORD PTR -4034[rbp], 0
	jle	.L100
	lea	rdi, .LC40[rip]
	call	puts@PLT
	mov	esi, 25
	lea	rdi, .LC41[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	eax, WORD PTR currentBlockIndex[rip]
	cwde
	mov	esi, eax
	lea	rdi, .LC42[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC43[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -4028[rbp], 0
	mov	DWORD PTR -4032[rbp], 0
	jmp	.L101
.L102:
	movsx	ecx, WORD PTR -4034[rbp]
	mov	eax, DWORD PTR -4032[rbp]
	movsx	edx, ax
	mov	eax, DWORD PTR -4032[rbp]
	cdqe
	movzx	eax, WORD PTR -4016[rbp+rax*2]
	cwde
	lea	rsi, -4016[rbp]
	mov	edi, eax
	call	execCommand
	cwde
	mov	DWORD PTR -4032[rbp], eax
	add	DWORD PTR -4028[rbp], 1
	cmp	DWORD PTR -4028[rbp], 499999
	jbe	.L101
	lea	rsi, .LC44[rip]
	lea	rdi, .LC45[rip]
	call	exitWithError
.L101:
	movsx	eax, WORD PTR -4034[rbp]
	cmp	DWORD PTR -4032[rbp], eax
	jl	.L102
	lea	rdi, .LC46[rip]
	call	puts@PLT
	movsx	eax, WORD PTR -4034[rbp]
	mov	esi, eax
	lea	rdi, .LC47[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -4028[rbp]
	mov	esi, eax
	lea	rdi, .LC48[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L103
.L100:
	lea	rdi, .LC49[rip]
	call	puts@PLT
.L103:
	mov	edi, 10
	call	putchar@PLT
	mov	esi, 25
	lea	rdi, memoryBlocksArray[rip]
	call	printMemory
	mov	eax, 0
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L105
	call	__stack_chk_fail@PLT
.L105:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.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	"811061.c"
	.text
	.comm	memoryBlocksArray,50,4
	.global	currentBlockIndex
	.bss
	.align	1
	.type	currentBlockIndex, %object
	.size	currentBlockIndex, 2
currentBlockIndex:
	.space	2
	.global	reg
	.align	1
	.type	reg, %object
	.size	reg, 2
reg:
	.space	2
	.global	isRegisterInitialized
	.align	1
	.type	isRegisterInitialized, %object
	.size	isRegisterInitialized, 2
isRegisterInitialized:
	.space	2
	.text
	.align	2
	.global	commandNamesEqual
	.syntax unified
	.arm
	.fpu softvfp
	.type	commandNamesEqual, %function
commandNamesEqual:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L2
.L5:
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-8]
	ldr	r1, [fp, #-20]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	beq	.L3
	mov	r3, #0
	b	.L4
.L3:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L2:
	ldr	r3, [fp, #-8]
	cmp	r3, #2
	ble	.L5
	mov	r3, #1
.L4:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	commandNamesEqual, .-commandNamesEqual
	.section	.rodata
	.align	2
.LC0:
	.ascii	"\012Error [%s]: %s\012\000"
	.text
	.align	2
	.global	exitWithError
	.syntax unified
	.arm
	.fpu softvfp
	.type	exitWithError, %function
exitWithError:
	@ 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	r2, [fp, #-12]
	ldr	r1, [fp, #-8]
	ldr	r0, .L7
	bl	printf
	mov	r0, #1
	bl	exit
.L8:
	.align	2
.L7:
	.word	.LC0
	.size	exitWithError, .-exitWithError
	.section	.rodata
	.align	2
.LC1:
	.ascii	"moo\000"
	.align	2
.LC2:
	.ascii	"mOo\000"
	.align	2
.LC3:
	.ascii	"moO\000"
	.align	2
.LC4:
	.ascii	"mOO\000"
	.align	2
.LC5:
	.ascii	"Moo\000"
	.align	2
.LC6:
	.ascii	"MOo\000"
	.align	2
.LC7:
	.ascii	"MoO\000"
	.align	2
.LC8:
	.ascii	"MOO\000"
	.align	2
.LC9:
	.ascii	"OOO\000"
	.align	2
.LC10:
	.ascii	"MMM\000"
	.align	2
.LC11:
	.ascii	"OOM\000"
	.align	2
.LC12:
	.ascii	"oom\000"
	.text
	.align	2
	.global	getCommandCode
	.syntax unified
	.arm
	.fpu softvfp
	.type	getCommandCode, %function
getCommandCode:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r1, .L23
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L10
	mov	r3, #0
	b	.L11
.L10:
	ldr	r1, .L23+4
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L12
	mov	r3, #1
	b	.L11
.L12:
	ldr	r1, .L23+8
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L13
	mov	r3, #2
	b	.L11
.L13:
	ldr	r1, .L23+12
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L14
	mov	r3, #3
	b	.L11
.L14:
	ldr	r1, .L23+16
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L15
	mov	r3, #4
	b	.L11
.L15:
	ldr	r1, .L23+20
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L16
	mov	r3, #5
	b	.L11
.L16:
	ldr	r1, .L23+24
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L17
	mov	r3, #6
	b	.L11
.L17:
	ldr	r1, .L23+28
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L18
	mov	r3, #7
	b	.L11
.L18:
	ldr	r1, .L23+32
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L19
	mov	r3, #8
	b	.L11
.L19:
	ldr	r1, .L23+36
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L20
	mov	r3, #9
	b	.L11
.L20:
	ldr	r1, .L23+40
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L21
	mov	r3, #10
	b	.L11
.L21:
	ldr	r1, .L23+44
	ldr	r0, [fp, #-8]
	bl	commandNamesEqual
	mov	r3, r0
	cmp	r3, #0
	beq	.L22
	mov	r3, #11
	b	.L11
.L22:
	mvn	r3, #0
.L11:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L24:
	.align	2
.L23:
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.word	.LC4
	.word	.LC5
	.word	.LC6
	.word	.LC7
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.word	.LC11
	.word	.LC12
	.size	getCommandCode, .-getCommandCode
	.section	.rodata
	.align	2
.LC13:
	.ascii	"could not find a matching 'MOO' command\000"
	.align	2
.LC14:
	.ascii	"trying to access a memory block before the first on"
	.ascii	"e.\000"
	.align	2
.LC15:
	.ascii	"not enough memory.\000"
	.align	2
.LC16:
	.ascii	"cannot call itself, it would cause an infinite loop"
	.ascii	".\000"
	.align	2
.LC17:
	.ascii	"[mOO]: quit program\000"
	.align	2
.LC18:
	.ascii	"not implemented yet\000"
	.align	2
.LC19:
	.ascii	"this character cannot be printed to STDOUT.\000"
	.align	2
.LC20:
	.ascii	"could not find a matching 'moo' command\000"
	.align	2
.LC21:
	.ascii	"%d\012\000"
	.align	2
.LC22:
	.ascii	"invalid command code.\000"
	.align	2
.LC23:
	.ascii	"execCommand()\000"
	.text
	.align	2
	.global	execCommand
	.syntax unified
	.arm
	.fpu softvfp
	.type	execCommand, %function
execCommand:
	@ 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	r1, [fp, #-20]
	mov	r1, r2
	mov	r2, r3
	mov	r3, r0	@ movhi
	strh	r3, [fp, #-14]	@ movhi
	mov	r3, r1	@ movhi
	strh	r3, [fp, #-16]	@ movhi
	mov	r3, r2	@ movhi
	strh	r3, [fp, #-22]	@ movhi
	mov	r3, #0
	strh	r3, [fp, #-8]	@ movhi
	mov	r3, #0
	strh	r3, [fp, #-6]	@ movhi
	ldrsh	r3, [fp, #-14]
	cmp	r3, #11
	ldrls	pc, [pc, r3, asl #2]
	b	.L26
.L28:
	.word	.L39
	.word	.L38
	.word	.L37
	.word	.L36
	.word	.L35
	.word	.L34
	.word	.L33
	.word	.L32
	.word	.L31
	.word	.L30
	.word	.L29
	.word	.L27
.L39:
	ldrh	r3, [fp, #-16]
	sub	r3, r3, #2
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-16]	@ movhi
	mov	r3, #0
	strh	r3, [fp, #-6]	@ movhi
	b	.L40
.L46:
	ldrsh	r3, [fp, #-16]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrsh	r3, [r3]
	cmp	r3, #0
	beq	.L41
	cmp	r3, #7
	beq	.L42
	b	.L43
.L41:
	ldrsh	r3, [fp, #-6]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-6]	@ movhi
	b	.L43
.L42:
	ldrsh	r3, [fp, #-6]
	cmp	r3, #0
	bne	.L44
	ldrsh	r3, [fp, #-16]
	b	.L45
.L44:
	ldrsh	r3, [fp, #-6]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	sub	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-6]	@ movhi
	nop
.L43:
	ldrsh	r3, [fp, #-16]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	sub	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-16]	@ movhi
.L40:
	ldrsh	r3, [fp, #-16]
	cmp	r3, #0
	bge	.L46
	ldr	r1, .L68
	ldr	r0, .L68+4
	bl	exitWithError
	b	.L47
.L38:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	cmp	r3, #0
	ble	.L48
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	sub	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	lsl	r3, r3, #16
	asr	r3, r3, #16
	ldr	r2, .L68+8
	strh	r3, [r2]	@ movhi
	b	.L47
.L48:
	ldr	r1, .L68+12
	ldr	r0, .L68+16
	bl	exitWithError
	b	.L47
.L37:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	cmp	r3, #23
	bgt	.L50
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	lsl	r3, r3, #16
	asr	r3, r3, #16
	ldr	r2, .L68+8
	strh	r3, [r2]	@ movhi
	b	.L47
.L50:
	ldr	r1, .L68+20
	ldr	r0, .L68+24
	bl	exitWithError
	b	.L47
.L36:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r3, [r3]
	ldrsh	r2, [fp, #-14]
	cmp	r2, r3
	bne	.L52
	ldr	r1, .L68+32
	ldr	r0, .L68+36
	bl	exitWithError
	b	.L47
.L52:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r3, [r3]
	cmp	r3, #0
	blt	.L54
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r3, [r3]
	cmp	r3, #11
	bgt	.L54
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r0, [r3]
	ldrsh	r3, [fp, #-16]
	ldrsh	r2, [fp, #-16]
	ldr	r1, [fp, #-20]
	bl	execCommand
	b	.L47
.L54:
	ldr	r0, .L68+40
	bl	printf
	mov	r0, #0
	bl	exit
.L35:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r3, [r3]
	cmp	r3, #0
	bne	.L55
	ldr	r1, .L68+44
	ldr	r0, .L68+48
	bl	exitWithError
	b	.L47
.L55:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r3, [r3]
	cmp	r3, #0
	ble	.L57
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r3, [r3]
	cmp	r3, #255
	bgt	.L57
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r3, [r3]
	mov	r0, r3
	bl	putchar
	b	.L47
.L57:
	ldr	r1, .L68+52
	ldr	r0, .L68+48
	bl	exitWithError
	b	.L47
.L34:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r1, .L68+28
	lsl	r2, r3, #1
	add	r2, r1, r2
	ldrsh	r2, [r2]
	lsl	r2, r2, #16
	lsr	r2, r2, #16
	sub	r2, r2, #1
	lsl	r2, r2, #16
	lsr	r2, r2, #16
	lsl	r2, r2, #16
	asr	r2, r2, #16
	ldr	r1, .L68+28
	lsl	r3, r3, #1
	add	r3, r1, r3
	strh	r2, [r3]	@ movhi
	b	.L47
.L33:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r1, .L68+28
	lsl	r2, r3, #1
	add	r2, r1, r2
	ldrsh	r2, [r2]
	lsl	r2, r2, #16
	lsr	r2, r2, #16
	add	r2, r2, #1
	lsl	r2, r2, #16
	lsr	r2, r2, #16
	lsl	r2, r2, #16
	asr	r2, r2, #16
	ldr	r1, .L68+28
	lsl	r3, r3, #1
	add	r3, r1, r3
	strh	r2, [r3]	@ movhi
	b	.L47
.L32:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r3, [r3]
	cmp	r3, #0
	bne	.L67
	mov	r3, #0
	strh	r3, [fp, #-8]	@ movhi
	ldrh	r3, [fp, #-16]
	add	r3, r3, #2
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-16]	@ movhi
	b	.L59
.L64:
	ldrsh	r3, [fp, #-16]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrsh	r3, [r3]
	cmp	r3, #0
	beq	.L60
	cmp	r3, #7
	beq	.L61
	b	.L62
.L60:
	ldrsh	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L63
	ldrh	r3, [fp, #-16]
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	lsl	r3, r3, #16
	asr	r3, r3, #16
	b	.L45
.L63:
	ldrsh	r3, [fp, #-8]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	sub	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-8]	@ movhi
	b	.L62
.L61:
	ldrsh	r3, [fp, #-8]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-8]	@ movhi
	nop
.L62:
	ldrsh	r3, [fp, #-16]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-16]	@ movhi
.L59:
	ldrsh	r2, [fp, #-16]
	ldrsh	r3, [fp, #-22]
	cmp	r2, r3
	blt	.L64
	ldr	r1, .L68+56
	ldr	r0, .L68+4
	bl	exitWithError
	b	.L67
.L31:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	mov	r2, #0
	strh	r2, [r3]	@ movhi
	b	.L47
.L30:
	ldr	r3, .L68+60
	ldrsh	r3, [r3]
	cmp	r3, #0
	bne	.L65
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r3, [r3]
	ldr	r2, .L68+64
	strh	r3, [r2]	@ movhi
	ldr	r3, .L68+60
	mov	r2, #1
	strh	r2, [r3]	@ movhi
	b	.L47
.L65:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	mov	r0, r3
	ldr	r3, .L68+64
	ldrsh	r2, [r3]
	ldr	r1, .L68+28
	lsl	r3, r0, #1
	add	r3, r1, r3
	strh	r2, [r3]	@ movhi
	ldr	r3, .L68+60
	mov	r2, #0
	strh	r2, [r3]	@ movhi
	b	.L47
.L29:
	ldr	r3, .L68+8
	ldrsh	r3, [r3]
	ldr	r2, .L68+28
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrsh	r3, [r3]
	mov	r1, r3
	ldr	r0, .L68+68
	bl	printf
	b	.L47
.L27:
	ldr	r1, .L68+44
	ldr	r0, .L68+72
	bl	exitWithError
	b	.L47
.L26:
	ldr	r1, .L68+76
	ldr	r0, .L68+80
	bl	exitWithError
	b	.L47
.L67:
	nop
.L47:
	ldrh	r3, [fp, #-16]
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	lsl	r3, r3, #16
	asr	r3, r3, #16
.L45:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L69:
	.align	2
.L68:
	.word	.LC13
	.word	.LC8
	.word	currentBlockIndex
	.word	.LC14
	.word	.LC2
	.word	.LC15
	.word	.LC3
	.word	memoryBlocksArray
	.word	.LC16
	.word	.LC4
	.word	.LC17
	.word	.LC18
	.word	.LC5
	.word	.LC19
	.word	.LC20
	.word	isRegisterInitialized
	.word	reg
	.word	.LC21
	.word	.LC12
	.word	.LC22
	.word	.LC23
	.size	execCommand, .-execCommand
	.section	.rodata
	.align	2
.LC24:
	.ascii	"too many instructions, not enough space in opcodes "
	.ascii	"array\000"
	.align	2
.LC25:
	.ascii	"parser\000"
	.align	2
.LC26:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	parser
	.syntax unified
	.arm
	.fpu softvfp
	.type	parser, %function
parser:
	@ 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]
	mov	r3, r2
	strh	r3, [fp, #-30]	@ movhi
	ldr	r3, .L82
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	strh	r3, [fp, #-20]	@ movhi
	mov	r3, #0
	strh	r3, [fp, #-18]	@ movhi
	mvn	r3, #0
	strh	r3, [fp, #-14]	@ movhi
	mov	r3, #0
	strb	r3, [fp, #-10]
	mov	r3, #0
	strh	r3, [fp, #-16]	@ movhi
	mov	r3, #0
	strh	r3, [fp, #-16]	@ movhi
	b	.L71
.L78:
	ldrsh	r3, [fp, #-16]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #111
	beq	.L72
	cmp	r3, #111
	bgt	.L73
	cmp	r3, #109
	beq	.L72
	cmp	r3, #109
	bgt	.L73
	cmp	r3, #77
	beq	.L72
	cmp	r3, #79
	bne	.L73
.L72:
	ldrsh	r3, [fp, #-18]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-18]	@ movhi
	nop
	ldrsh	r3, [fp, #-18]
	cmp	r3, #3
	bne	.L75
	b	.L81
.L73:
	mov	r3, #0
	strh	r3, [fp, #-18]	@ movhi
	b	.L75
.L81:
	ldrsh	r3, [fp, #-16]
	sub	r3, r3, #2
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-12]
	ldrsh	r3, [fp, #-16]
	sub	r3, r3, #1
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-11]
	ldrsh	r3, [fp, #-16]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-10]
	sub	r3, fp, #12
	mov	r0, r3
	bl	getCommandCode
	mov	r3, r0
	strh	r3, [fp, #-14]	@ movhi
	ldrsh	r3, [fp, #-14]
	cmn	r3, #1
	beq	.L76
	mov	r3, #0
	strh	r3, [fp, #-18]	@ movhi
	ldrsh	r2, [fp, #-20]
	ldrsh	r3, [fp, #-30]
	cmp	r2, r3
	bge	.L77
	ldrsh	r3, [fp, #-20]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldrh	r2, [fp, #-14]	@ movhi
	strh	r2, [r3]	@ movhi
	ldrsh	r3, [fp, #-20]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-20]	@ movhi
	b	.L75
.L77:
	ldr	r1, .L82+4
	ldr	r0, .L82+8
	bl	exitWithError
	b	.L75
.L76:
	ldrsh	r3, [fp, #-18]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	sub	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-18]	@ movhi
.L75:
	ldrsh	r3, [fp, #-16]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-16]	@ movhi
.L71:
	ldrsh	r3, [fp, #-16]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L78
	ldrsh	r3, [fp, #-20]
	ldr	r2, .L82
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L80
	bl	__stack_chk_fail
.L80:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L83:
	.align	2
.L82:
	.word	.LC26
	.word	.LC24
	.word	.LC25
	.size	parser, .-parser
	.section	.rodata
	.align	2
.LC27:
	.ascii	"r\000"
	.align	2
.LC28:
	.ascii	"could not open file for reading\000"
	.align	2
.LC29:
	.ascii	"parserfile\000"
	.align	2
.LC30:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	parserFile
	.syntax unified
	.arm
	.fpu softvfp
	.type	parserFile, %function
parserFile:
	@ 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, #-32]
	str	r1, [fp, #-36]
	mov	r3, r2
	strh	r3, [fp, #-38]	@ movhi
	ldr	r3, .L95
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	strh	r3, [fp, #-26]	@ movhi
	mov	r3, #0
	strh	r3, [fp, #-24]	@ movhi
	mvn	r3, #0
	strh	r3, [fp, #-22]	@ movhi
	mov	r3, #0
	strb	r3, [fp, #-10]
	ldr	r1, .L95+4
	ldr	r0, [fp, #-32]
	bl	fopen
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L86
	ldr	r1, .L95+8
	ldr	r0, .L95+12
	bl	exitWithError
	b	.L86
.L92:
	ldr	r3, [fp, #-16]
	cmp	r3, #111
	beq	.L87
	ldr	r3, [fp, #-16]
	cmp	r3, #111
	bgt	.L88
	ldr	r3, [fp, #-16]
	cmp	r3, #109
	beq	.L87
	ldr	r3, [fp, #-16]
	cmp	r3, #109
	bgt	.L88
	ldr	r3, [fp, #-16]
	cmp	r3, #77
	beq	.L87
	ldr	r3, [fp, #-16]
	cmp	r3, #79
	bne	.L88
.L87:
	ldrsh	r3, [fp, #-24]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-24]	@ movhi
	b	.L89
.L88:
	mov	r3, #0
	strh	r3, [fp, #-24]	@ movhi
	nop
.L89:
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	strb	r3, [fp, #-12]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	strb	r3, [fp, #-11]
	ldr	r3, [fp, #-16]
	and	r3, r3, #255
	strb	r3, [fp, #-10]
	ldrsh	r3, [fp, #-24]
	cmp	r3, #3
	bne	.L86
	sub	r3, fp, #12
	mov	r0, r3
	bl	getCommandCode
	mov	r3, r0
	strh	r3, [fp, #-22]	@ movhi
	ldrsh	r3, [fp, #-22]
	cmn	r3, #1
	beq	.L90
	mov	r3, #0
	strh	r3, [fp, #-24]	@ movhi
	ldrsh	r2, [fp, #-26]
	ldrsh	r3, [fp, #-38]
	cmp	r2, r3
	bge	.L91
	ldrsh	r3, [fp, #-26]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	ldrh	r2, [fp, #-22]	@ movhi
	strh	r2, [r3]	@ movhi
	ldrsh	r3, [fp, #-26]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	add	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-26]	@ movhi
	b	.L86
.L91:
	ldr	r0, [fp, #-20]
	bl	fclose
	ldr	r1, .L95+16
	ldr	r0, .L95+20
	bl	exitWithError
	b	.L86
.L90:
	ldrsh	r3, [fp, #-24]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	sub	r3, r3, #1
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	strh	r3, [fp, #-24]	@ movhi
.L86:
	ldr	r0, [fp, #-20]
	bl	getc
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmn	r3, #1
	bne	.L92
	ldr	r0, [fp, #-20]
	bl	fclose
	ldrsh	r3, [fp, #-26]
	ldr	r2, .L95
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L94
	bl	__stack_chk_fail
.L94:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L96:
	.align	2
.L95:
	.word	.LC30
	.word	.LC27
	.word	.LC28
	.word	.LC29
	.word	.LC24
	.word	.LC25
	.size	parserFile, .-parserFile
	.section	.rodata
	.align	2
.LC31:
	.ascii	"Memory looks like this:\000"
	.align	2
.LC32:
	.ascii	"| %d \000"
	.align	2
.LC33:
	.ascii	"\012\012In ASCII:\000"
	.align	2
.LC34:
	.ascii	"|   \000"
	.align	2
.LC35:
	.ascii	"| LF \000"
	.align	2
.LC36:
	.ascii	"| space \000"
	.align	2
.LC37:
	.ascii	"| %c \000"
	.text
	.align	2
	.global	printMemory
	.syntax unified
	.arm
	.fpu softvfp
	.type	printMemory, %function
printMemory:
	@ 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	r3, #0
	str	r3, [fp, #-8]
	ldr	r0, .L107
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L98
.L99:
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrsh	r3, [r3]
	mov	r1, r3
	ldr	r0, .L107+4
	bl	printf
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L98:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L99
	mov	r0, #124
	bl	putchar
	ldr	r0, .L107+8
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L100
.L106:
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrsh	r3, [r3]
	cmp	r3, #32
	beq	.L101
	cmp	r3, #32
	bgt	.L102
	cmp	r3, #0
	beq	.L103
	cmp	r3, #10
	beq	.L104
	b	.L102
.L103:
	ldr	r0, .L107+12
	bl	printf
	b	.L105
.L104:
	ldr	r0, .L107+16
	bl	printf
	b	.L105
.L101:
	ldr	r0, .L107+20
	bl	printf
	b	.L105
.L102:
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrsh	r3, [r3]
	mov	r1, r3
	ldr	r0, .L107+24
	bl	printf
	nop
.L105:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L100:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	blt	.L106
	mov	r0, #124
	bl	putchar
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L108:
	.align	2
.L107:
	.word	.LC31
	.word	.LC32
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.word	.LC37
	.size	printMemory, .-printMemory
	.section	.rodata
	.align	2
.LC38:
	.ascii	"you should pass exactly one argument, the name of t"
	.ascii	"he source code file\000"
	.align	2
.LC39:
	.ascii	"main\000"
	.align	2
.LC40:
	.ascii	"\012Starting parser.\000"
	.align	2
.LC41:
	.ascii	"Reached end of source code.\000"
	.align	2
.LC42:
	.ascii	"\012Executing program.\000"
	.align	2
.LC43:
	.ascii	"Number of memory blocks: %d\012\000"
	.align	2
.LC44:
	.ascii	"Index of current block: %d\012\000"
	.align	2
.LC45:
	.ascii	"Output: \000"
	.align	2
.LC46:
	.ascii	"program is taking too long, infinite loop?\000"
	.align	2
.LC47:
	.ascii	"runner\000"
	.align	2
.LC48:
	.ascii	"\012Program end.\012\000"
	.align	2
.LC49:
	.ascii	"Number of commands in program: %d\012\000"
	.align	2
.LC50:
	.ascii	"Number of executed commands: %u\012\000"
	.align	2
.LC51:
	.ascii	"No valid commands found.\000"
	.align	2
.LC52:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 4032
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #4032
	sub	sp, sp, #4
	str	r0, [fp, #-4040]
	str	r1, [fp, #-4044]
	ldr	r3, .L120
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, [fp, #-4040]
	cmp	r3, #2
	bne	.L110
	ldr	r3, [fp, #-4044]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-4028]
	b	.L111
.L110:
	ldr	r1, .L120+4
	ldr	r0, .L120+8
	bl	exitWithError
.L111:
	mov	r3, #0
	str	r3, [fp, #-4024]
	mov	r3, #0
	str	r3, [fp, #-4024]
	b	.L112
.L113:
	ldr	r2, .L120+12
	ldr	r3, [fp, #-4024]
	lsl	r3, r3, #1
	add	r3, r2, r3
	mov	r2, #0
	strh	r2, [r3]	@ movhi
	ldr	r3, [fp, #-4024]
	add	r3, r3, #1
	str	r3, [fp, #-4024]
.L112:
	ldr	r3, [fp, #-4024]
	cmp	r3, #24
	ble	.L113
	ldr	r0, .L120+16
	bl	puts
	sub	r3, fp, #12
	sub	r4, r3, #4016
	sub	r4, r4, #2
	sub	r3, fp, #4000
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r2, #2000
	mov	r1, r3
	ldr	r0, [fp, #-4028]
	bl	parserFile
	mov	r3, r0
	strh	r3, [r4]	@ movhi
	sub	r3, fp, #12
	sub	r3, r3, #4016
	sub	r3, r3, #2
	sub	r2, fp, #12
	sub	r2, r2, #4016
	sub	r2, r2, #2
	ldrh	r2, [r2]	@ movhi
	strh	r2, [r3]	@ movhi
	ldr	r0, .L120+20
	bl	puts
	sub	r3, fp, #12
	sub	r3, r3, #4016
	sub	r3, r3, #2
	ldrsh	r3, [r3]
	cmp	r3, #0
	ble	.L114
	ldr	r0, .L120+24
	bl	puts
	mov	r1, #25
	ldr	r0, .L120+28
	bl	printf
	ldr	r3, .L120+32
	ldrsh	r3, [r3]
	mov	r1, r3
	ldr	r0, .L120+36
	bl	printf
	ldr	r0, .L120+40
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-4020]
	mov	r3, #0
	str	r3, [fp, #-4024]
	b	.L115
.L116:
	sub	r3, fp, #12
	sub	r3, r3, #4000
	sub	r3, r3, #4
	ldr	r2, [fp, #-4024]
	lsl	r2, r2, #1
	add	r3, r3, r2
	ldrsh	r0, [r3]
	ldr	r3, [fp, #-4024]
	lsl	r3, r3, #16
	asr	r2, r3, #16
	sub	r3, fp, #12
	sub	r3, r3, #4016
	sub	r3, r3, #2
	ldrsh	r3, [r3]
	sub	r1, fp, #4000
	sub	r1, r1, #12
	sub	r1, r1, #4
	bl	execCommand
	mov	r3, r0
	str	r3, [fp, #-4024]
	ldr	r3, [fp, #-4020]
	add	r3, r3, #1
	str	r3, [fp, #-4020]
	ldr	r3, [fp, #-4020]
	ldr	r2, .L120+44
	cmp	r3, r2
	bcc	.L115
	ldr	r1, .L120+48
	ldr	r0, .L120+52
	bl	exitWithError
.L115:
	sub	r3, fp, #12
	sub	r3, r3, #4016
	sub	r3, r3, #2
	ldrsh	r3, [r3]
	ldr	r2, [fp, #-4024]
	cmp	r2, r3
	blt	.L116
	ldr	r0, .L120+56
	bl	puts
	sub	r3, fp, #12
	sub	r3, r3, #4016
	sub	r3, r3, #2
	ldrsh	r3, [r3]
	mov	r1, r3
	ldr	r0, .L120+60
	bl	printf
	ldr	r1, [fp, #-4020]
	ldr	r0, .L120+64
	bl	printf
	b	.L117
.L114:
	ldr	r0, .L120+68
	bl	puts
.L117:
	mov	r0, #10
	bl	putchar
	mov	r1, #25
	ldr	r0, .L120+12
	bl	printMemory
	mov	r3, #0
	ldr	r2, .L120
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L119
	bl	__stack_chk_fail
.L119:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L121:
	.align	2
.L120:
	.word	.LC52
	.word	.LC38
	.word	.LC39
	.word	memoryBlocksArray
	.word	.LC40
	.word	.LC41
	.word	.LC42
	.word	.LC43
	.word	currentBlockIndex
	.word	.LC44
	.word	.LC45
	.word	500000
	.word	.LC46
	.word	.LC47
	.word	.LC48
	.word	.LC49
	.word	.LC50
	.word	.LC51
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
