	.file	"425514.c"
	.intel_syntax noprefix
	.text
	.section	.rodata
.LC0:
	.string	"the_stack_data/425514.c"
.LC1:
	.string	"c"
.LC2:
	.string	"fmt"
.LC3:
	.string	"%u: "
	.text
	.type	warn, @function
warn:
.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, 240
	mov	QWORD PTR -232[rbp], rdi
	mov	QWORD PTR -240[rbp], rsi
	mov	QWORD PTR -160[rbp], rdx
	mov	QWORD PTR -152[rbp], rcx
	mov	QWORD PTR -144[rbp], r8
	mov	QWORD PTR -136[rbp], r9
	test	al, al
	je	.L2
	movaps	XMMWORD PTR -128[rbp], xmm0
	movaps	XMMWORD PTR -112[rbp], xmm1
	movaps	XMMWORD PTR -96[rbp], xmm2
	movaps	XMMWORD PTR -80[rbp], xmm3
	movaps	XMMWORD PTR -64[rbp], xmm4
	movaps	XMMWORD PTR -48[rbp], xmm5
	movaps	XMMWORD PTR -32[rbp], xmm6
	movaps	XMMWORD PTR -16[rbp], xmm7
.L2:
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -184[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -232[rbp], 0
	jne	.L3
	lea	rcx, __PRETTY_FUNCTION__.61[rip]
	mov	edx, 68
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L3:
	cmp	QWORD PTR -240[rbp], 0
	jne	.L4
	lea	rcx, __PRETTY_FUNCTION__.61[rip]
	mov	edx, 69
	lea	rsi, .LC0[rip]
	lea	rdi, .LC2[rip]
	call	__assert_fail@PLT
.L4:
	mov	rax, QWORD PTR -232[rbp]
	mov	DWORD PTR 8389192[rax], -1
	mov	rax, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR 8388664[rax]
	test	rax, rax
	jne	.L5
	mov	eax, -1
	jmp	.L9
.L5:
	mov	rax, QWORD PTR -232[rbp]
	mov	edx, DWORD PTR 8388624[rax]
	mov	rax, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR 8388664[rax]
	lea	rsi, .LC3[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	DWORD PTR -220[rbp], eax
	mov	DWORD PTR -208[rbp], 16
	mov	DWORD PTR -204[rbp], 48
	lea	rax, 16[rbp]
	mov	QWORD PTR -200[rbp], rax
	lea	rax, -176[rbp]
	mov	QWORD PTR -192[rbp], rax
	mov	rax, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR 8388664[rax]
	lea	rdx, -208[rbp]
	mov	rcx, QWORD PTR -240[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	vfprintf@PLT
	mov	DWORD PTR -216[rbp], eax
	mov	rax, QWORD PTR -232[rbp]
	mov	rax, QWORD PTR 8388664[rax]
	mov	rsi, rax
	mov	edi, 10
	call	fputc@PLT
	mov	DWORD PTR -212[rbp], eax
	cmp	DWORD PTR -220[rbp], 0
	js	.L7
	cmp	DWORD PTR -216[rbp], 0
	js	.L7
	cmp	DWORD PTR -212[rbp], 0
	jns	.L8
.L7:
	mov	eax, -2
	jmp	.L9
.L8:
	mov	eax, -1
.L9:
	mov	rcx, QWORD PTR -184[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L10
	call	__stack_chk_fail@PLT
.L10:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	warn, .-warn
	.section	.rodata
	.align 8
.LC4:
	.string	"allocation of size %ld failed\n"
	.text
	.type	allocate, @function
allocate:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	cmp	QWORD PTR -24[rbp], 0
	jne	.L12
	mov	eax, 0
	jmp	.L13
.L12:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	calloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L14
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC4[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L14:
	mov	rax, QWORD PTR -8[rbp]
.L13:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	allocate, .-allocate
	.section	.rodata
.LC5:
	.string	"s"
	.align 8
.LC6:
	.string	"string duplicate of '%s' failed\n"
	.text
	.type	duplicate, @function
duplicate:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	cmp	QWORD PTR -24[rbp], 0
	jne	.L16
	lea	rcx, __PRETTY_FUNCTION__.60[rip]
	mov	edx, 96
	lea	rsi, .LC0[rip]
	lea	rdi, .LC5[rip]
	call	__assert_fail@PLT
.L16:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	strlen@PLT
	add	rax, 1
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L17
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -24[rbp]
	lea	rsi, .LC6[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L17:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	duplicate, .-duplicate
	.section	.rodata
	.align 8
.LC7:
	.string	"unable to reallocate %p of size %ld\n"
	.text
	.type	reallocate, @function
reallocate:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -32[rbp], 0
	jne	.L20
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
	jmp	.L21
.L20:
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L22
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -24[rbp]
	lea	rsi, .LC7[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L22:
	mov	rax, QWORD PTR -8[rbp]
.L21:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	reallocate, .-reallocate
	.section	.rodata
.LC8:
	.string	""
.LC9:
	.string	"int"
.LC10:
	.string	"str"
.LC11:
	.string	"id"
.LC12:
	.string	"("
.LC13:
	.string	")"
.LC14:
	.string	"{"
.LC15:
	.string	"}"
.LC16:
	.string	"["
.LC17:
	.string	"]"
.LC18:
	.string	":="
.LC19:
	.string	";"
.LC20:
	.string	"."
.LC21:
	.string	":"
.LC22:
	.string	","
.LC23:
	.string	"+"
.LC24:
	.string	"-"
.LC25:
	.string	"<<"
.LC26:
	.string	">>"
.LC27:
	.string	"*"
.LC28:
	.string	"/"
.LC29:
	.string	"="
.LC30:
	.string	"#"
.LC31:
	.string	">"
.LC32:
	.string	">="
.LC33:
	.string	"<"
.LC34:
	.string	"<="
.LC35:
	.string	"&"
.LC36:
	.string	"|"
.LC37:
	.string	"^"
.LC38:
	.string	"~"
.LC39:
	.string	"EOI"
.LC40:
	.string	"if"
.LC41:
	.string	"else"
.LC42:
	.string	"do"
.LC43:
	.string	"while"
.LC44:
	.string	"procedure"
.LC45:
	.string	"for"
.LC46:
	.string	"var"
.LC47:
	.string	"const"
.LC48:
	.string	"break"
.LC49:
	.string	"continue"
.LC50:
	.string	"assert"
.LC51:
	.string	"implies"
.LC52:
	.string	"type"
.LC53:
	.string	"module"
.LC54:
	.string	"import"
.LC55:
	.string	"get"
.LC56:
	.string	"put"
.LC57:
	.string	"bytes"
.LC58:
	.string	"size"
.LC59:
	.string	"addr"
.LC60:
	.string	"trap"
.LC61:
	.string	"record"
.LC62:
	.string	"array"
.LC63:
	.string	"pointer"
.LC64:
	.string	"uint"
.LC65:
	.string	"byte"
.LC66:
	.string	"of"
.LC67:
	.string	"ord"
.LC68:
	.string	"to"
.LC69:
	.string	"by"
.LC70:
	.string	"nil"
.LC71:
	.string	"true"
.LC72:
	.string	"false"
	.section	.data.rel.local,"aw"
	.align 32
	.type	keywords, @object
	.size	keywords, 528
keywords:
	.quad	.LC8
	.quad	.LC9
	.quad	.LC10
	.quad	.LC11
	.quad	.LC12
	.quad	.LC13
	.quad	.LC14
	.quad	.LC15
	.quad	.LC16
	.quad	.LC17
	.quad	.LC18
	.quad	.LC19
	.quad	.LC20
	.quad	.LC21
	.quad	.LC22
	.quad	.LC23
	.quad	.LC24
	.quad	.LC25
	.quad	.LC26
	.quad	.LC27
	.quad	.LC28
	.quad	.LC29
	.quad	.LC30
	.quad	.LC31
	.quad	.LC32
	.quad	.LC33
	.quad	.LC34
	.quad	.LC35
	.quad	.LC36
	.quad	.LC37
	.quad	.LC38
	.quad	.LC39
	.quad	.LC40
	.quad	.LC41
	.quad	.LC42
	.quad	.LC43
	.quad	.LC44
	.quad	.LC45
	.quad	.LC46
	.quad	.LC47
	.quad	.LC48
	.quad	.LC49
	.quad	.LC50
	.quad	.LC51
	.quad	.LC52
	.quad	.LC53
	.quad	.LC54
	.quad	.LC55
	.quad	.LC56
	.quad	.LC57
	.quad	.LC58
	.quad	.LC59
	.quad	.LC60
	.quad	.LC61
	.quad	.LC62
	.quad	.LC63
	.quad	.LC64
	.quad	.LC9
	.quad	.LC65
	.quad	.LC66
	.quad	.LC67
	.quad	.LC68
	.quad	.LC69
	.quad	.LC70
	.quad	.LC71
	.quad	.LC72
	.section	.rodata
.LC73:
	.string	"base >= 2 && base <= 36"
.LC74:
	.string	"ch > 0 && ch < 256"
	.text
	.type	digit, @function
digit:
.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, 32
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	cmp	DWORD PTR -24[rbp], 1
	jle	.L24
	cmp	DWORD PTR -24[rbp], 36
	jle	.L33
.L24:
	lea	rcx, __PRETTY_FUNCTION__.59[rip]
	mov	edx, 144
	lea	rsi, .LC0[rip]
	lea	rdi, .LC73[rip]
	call	__assert_fail@PLT
.L33:
	cmp	DWORD PTR -20[rbp], 0
	jle	.L26
	cmp	DWORD PTR -20[rbp], 255
	jle	.L34
.L26:
	lea	rcx, __PRETTY_FUNCTION__.59[rip]
	mov	edx, 145
	lea	rsi, .LC0[rip]
	lea	rdi, .LC74[rip]
	call	__assert_fail@PLT
.L34:
	mov	DWORD PTR -4[rbp], -1
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	tolower@PLT
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 47
	jle	.L28
	cmp	DWORD PTR -20[rbp], 57
	jg	.L28
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, 48
	mov	DWORD PTR -4[rbp], eax
.L28:
	cmp	DWORD PTR -20[rbp], 96
	jle	.L29
	cmp	DWORD PTR -20[rbp], 122
	jg	.L29
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, 87
	mov	DWORD PTR -4[rbp], eax
.L29:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -24[rbp]
	jge	.L30
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L32
.L30:
	mov	eax, -1
.L32:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	digit, .-digit
	.section	.rodata
.LC75:
	.string	"unexpected EOF"
	.align 8
.LC76:
	.string	"$ requires at least one hex digit"
.LC77:
	.string	"n >= 0"
.LC78:
	.string	"overflow"
	.align 8
.LC79:
	.string	"cannot encode NUL character in string"
	.align 8
.LC80:
	.string	"unknown escape character -- %c"
	.align 8
.LC81:
	.string	"identifier %s... too long (%d bytes)"
.LC82:
	.string	"invalid character -- %c"
.LC83:
	.string	"ungetc failed"
	.text
	.type	lexer, @function
lexer:
.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, 96
	mov	QWORD PTR -88[rbp], rdi
	cmp	QWORD PTR -88[rbp], 0
	jne	.L36
	lea	rcx, __PRETTY_FUNCTION__.58[rip]
	mov	edx, 156
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L36:
	mov	rax, QWORD PTR -88[rbp]
	mov	edx, DWORD PTR 8389184[rax]
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389188[rax], edx
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR 8389192[rax]
	test	eax, eax
	je	.L37
	mov	eax, -1
	jmp	.L38
.L37:
	mov	DWORD PTR -68[rbp], 0
.L39:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	mov	eax, DWORD PTR -68[rbp]
	add	eax, 1
	cmp	eax, 127
	ja	.L40
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L42[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L42[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L42:
	.long	.L68-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L39-.L42
	.long	.L67-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L39-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L39-.L42
	.long	.L40-.L42
	.long	.L65-.L42
	.long	.L64-.L42
	.long	.L63-.L42
	.long	.L40-.L42
	.long	.L62-.L42
	.long	.L40-.L42
	.long	.L61-.L42
	.long	.L60-.L42
	.long	.L59-.L42
	.long	.L58-.L42
	.long	.L57-.L42
	.long	.L56-.L42
	.long	.L55-.L42
	.long	.L54-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L53-.L42
	.long	.L52-.L42
	.long	.L51-.L42
	.long	.L50-.L42
	.long	.L49-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L48-.L42
	.long	.L40-.L42
	.long	.L47-.L42
	.long	.L46-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L40-.L42
	.long	.L45-.L42
	.long	.L44-.L42
	.long	.L43-.L42
	.long	.L41-.L42
	.text
.L67:
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR 8388624[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8388624[rax], edx
	jmp	.L39
.L53:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	cmp	DWORD PTR -68[rbp], 61
	jne	.L69
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 10
	jmp	.L70
.L69:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 13
	jmp	.L71
.L55:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 12
	jmp	.L70
.L68:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 31
	jmp	.L70
.L62:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 27
	jmp	.L70
.L44:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 28
	jmp	.L70
.L46:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 29
	jmp	.L70
.L41:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 30
	jmp	.L70
.L50:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 21
	jmp	.L70
.L64:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 22
	jmp	.L70
.L56:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 16
	jmp	.L70
.L58:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 15
	jmp	.L70
.L59:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 19
	jmp	.L70
.L54:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 20
	jmp	.L70
.L52:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 11
	jmp	.L70
.L57:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 14
	jmp	.L70
.L43:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 7
	jmp	.L70
.L45:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 6
	jmp	.L70
.L47:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 9
	jmp	.L70
.L48:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 8
	jmp	.L70
.L60:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 5
	jmp	.L70
.L61:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	cmp	DWORD PTR -68[rbp], 42
	jne	.L72
.L77:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	cmp	DWORD PTR -68[rbp], 0
	jns	.L73
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC75[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L38
.L73:
	cmp	DWORD PTR -68[rbp], 10
	jne	.L74
	mov	rax, QWORD PTR -88[rbp]
	mov	eax, DWORD PTR 8388624[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8388624[rax], edx
.L74:
	cmp	DWORD PTR -68[rbp], 42
	jne	.L77
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	cmp	eax, 41
	je	.L119
	jmp	.L77
.L119:
	nop
	jmp	.L39
.L72:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 4
	jmp	.L71
.L51:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	cmp	DWORD PTR -68[rbp], 60
	jne	.L78
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 17
	jmp	.L70
.L78:
	cmp	DWORD PTR -68[rbp], 61
	jne	.L79
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 26
	jmp	.L70
.L79:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 25
	jmp	.L71
.L49:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	cmp	DWORD PTR -68[rbp], 62
	jne	.L80
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 18
	jmp	.L70
.L80:
	cmp	DWORD PTR -68[rbp], 61
	jne	.L81
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 24
	jmp	.L70
.L81:
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 24
	jmp	.L71
.L63:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 4096
	test	eax, eax
	jne	.L82
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC76[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L38
.L82:
	mov	rax, QWORD PTR -88[rbp]
	mov	QWORD PTR 8389208[rax], 0
.L85:
	mov	eax, DWORD PTR -68[rbp]
	mov	esi, 16
	mov	edi, eax
	call	digit
	mov	DWORD PTR -64[rbp], eax
	cmp	DWORD PTR -64[rbp], 0
	jns	.L83
	lea	rcx, __PRETTY_FUNCTION__.58[rip]
	mov	edx, 221
	lea	rsi, .LC0[rip]
	lea	rdi, .LC77[rip]
	call	__assert_fail@PLT
.L83:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8389208[rax]
	sal	rax, 4
	mov	rdx, rax
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	add	rax, rdx
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8389208[rax]
	cmp	QWORD PTR -32[rbp], rax
	jnb	.L84
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC78[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L38
.L84:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	QWORD PTR 8389208[rax], rdx
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 4096
	test	eax, eax
	jne	.L85
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 1
	jmp	.L71
.L65:
	mov	QWORD PTR -24[rbp], 511
	mov	QWORD PTR -56[rbp], 0
	mov	QWORD PTR -56[rbp], 0
	jmp	.L86
.L103:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	cmp	DWORD PTR -68[rbp], 34
	je	.L120
	cmp	DWORD PTR -68[rbp], -1
	jne	.L89
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC75[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L38
.L89:
	cmp	DWORD PTR -68[rbp], 92
	jne	.L121
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	cmp	DWORD PTR -68[rbp], -1
	jne	.L91
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC75[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L38
.L91:
	cmp	DWORD PTR -68[rbp], 116
	jg	.L92
	cmp	DWORD PTR -68[rbp], 92
	jge	.L93
	cmp	DWORD PTR -68[rbp], 0
	je	.L94
	cmp	DWORD PTR -68[rbp], 34
	je	.L95
	jmp	.L92
.L93:
	mov	eax, DWORD PTR -68[rbp]
	sub	eax, 92
	cmp	eax, 24
	ja	.L92
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L97[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L97[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L97:
	.long	.L102-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L101-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L100-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L99-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L92-.L97
	.long	.L98-.L97
	.long	.L92-.L97
	.long	.L96-.L97
	.text
.L100:
	mov	DWORD PTR -68[rbp], 27
	jmp	.L90
.L101:
	mov	DWORD PTR -68[rbp], 7
	jmp	.L90
.L96:
	mov	DWORD PTR -68[rbp], 9
	jmp	.L90
.L99:
	mov	DWORD PTR -68[rbp], 10
	jmp	.L90
.L98:
	mov	DWORD PTR -68[rbp], 13
	jmp	.L90
.L95:
	mov	DWORD PTR -68[rbp], 34
	jmp	.L90
.L102:
	mov	DWORD PTR -68[rbp], 92
	jmp	.L90
.L94:
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC79[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L38
.L92:
	mov	edx, DWORD PTR -68[rbp]
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC80[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L38
.L121:
	nop
.L90:
	mov	eax, DWORD PTR -68[rbp]
	mov	edx, eax
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rcx
	add	rax, 8388672
	mov	BYTE PTR [rax], dl
	add	QWORD PTR -56[rbp], 1
.L86:
	mov	rax, QWORD PTR -56[rbp]
	cmp	rax, QWORD PTR -24[rbp]
	jb	.L103
	jmp	.L88
.L120:
	nop
.L88:
	mov	rax, QWORD PTR -56[rbp]
	cmp	rax, QWORD PTR -24[rbp]
	jb	.L104
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, 8388672[rax]
	mov	rdx, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rcx, rdx
	mov	rdx, rsi
	lea	rsi, .LC81[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L38
.L104:
	mov	rdx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rdx
	add	rax, 8388672
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 2
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8389200[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -88[rbp]
	add	rax, 8388672
	mov	rdi, rax
	call	duplicate
	mov	rdx, QWORD PTR -88[rbp]
	mov	QWORD PTR 8389200[rdx], rax
	jmp	.L70
.L40:
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 8
	test	eax, eax
	jne	.L105
	mov	edx, DWORD PTR -68[rbp]
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC82[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L38
.L105:
	cmp	DWORD PTR -68[rbp], 47
	jle	.L106
	cmp	DWORD PTR -68[rbp], 57
	jg	.L106
	mov	rax, QWORD PTR -88[rbp]
	mov	QWORD PTR 8389208[rax], 0
.L108:
	mov	eax, DWORD PTR -68[rbp]
	mov	esi, 10
	mov	edi, eax
	call	digit
	mov	DWORD PTR -60[rbp], eax
	cmp	DWORD PTR -60[rbp], 0
	jns	.L107
	lea	rcx, __PRETTY_FUNCTION__.58[rip]
	mov	edx, 273
	lea	rsi, .LC0[rip]
	lea	rdi, .LC77[rip]
	call	__assert_fail@PLT
.L107:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 8389208[rax]
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	add	rax, rax
	mov	rdx, rax
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 8389208[rax], rdx
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2048
	test	eax, eax
	jne	.L108
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 1
	jmp	.L71
.L106:
	mov	QWORD PTR -8[rbp], 511
	mov	QWORD PTR -48[rbp], 0
	mov	QWORD PTR -48[rbp], 0
	jmp	.L109
.L112:
	mov	eax, DWORD PTR -68[rbp]
	mov	edx, eax
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rcx
	add	rax, 8388672
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	mov	rdi, rax
	call	fgetc@PLT
	mov	DWORD PTR -68[rbp], eax
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 8
	test	eax, eax
	je	.L122
	add	QWORD PTR -48[rbp], 1
.L109:
	mov	rax, QWORD PTR -48[rbp]
	cmp	rax, QWORD PTR -8[rbp]
	jb	.L112
	jmp	.L111
.L122:
	nop
.L111:
	mov	rax, QWORD PTR -48[rbp]
	cmp	rax, QWORD PTR -8[rbp]
	jb	.L113
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, 8388672[rax]
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rcx, rdx
	mov	rdx, rsi
	lea	rsi, .LC81[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L38
.L113:
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -88[rbp]
	mov	BYTE PTR 8388672[rax+rdx], 0
	mov	QWORD PTR -40[rbp], 32
	jmp	.L114
.L116:
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 0[0+rax*8]
	lea	rax, keywords[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rdx, QWORD PTR -88[rbp]
	add	rdx, 8388672
	mov	rsi, rax
	mov	rdi, rdx
	call	strcmp@PLT
	test	eax, eax
	jne	.L115
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], edx
	jmp	.L71
.L115:
	add	QWORD PTR -40[rbp], 1
.L114:
	cmp	QWORD PTR -40[rbp], 65
	jbe	.L116
	mov	rax, QWORD PTR -88[rbp]
	mov	DWORD PTR 8389184[rax], 3
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8389200[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -88[rbp]
	add	rax, 8388672
	mov	rdi, rax
	call	duplicate
	mov	rdx, QWORD PTR -88[rbp]
	mov	QWORD PTR 8389200[rdx], rax
	jmp	.L71
.L70:
	mov	eax, 0
	jmp	.L38
.L71:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 8388648[rax]
	mov	eax, DWORD PTR -68[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	ungetc@PLT
	test	eax, eax
	jns	.L117
	mov	rax, QWORD PTR -88[rbp]
	lea	rsi, .LC83[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L38
.L117:
	mov	eax, 0
.L38:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	lexer, .-lexer
	.type	accept, @function
accept:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L124
	lea	rcx, __PRETTY_FUNCTION__.57[rip]
	mov	edx, 311
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L124:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8389184[rax]
	cmp	DWORD PTR -12[rbp], eax
	jne	.L125
	cmp	DWORD PTR -12[rbp], 31
	je	.L126
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	lexer
	test	eax, eax
	jns	.L126
	mov	eax, -1
	jmp	.L127
.L126:
	mov	eax, 1
	jmp	.L127
.L125:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8389192[rax]
.L127:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	accept, .-accept
	.type	peek, @function
peek:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L129
	lea	rcx, __PRETTY_FUNCTION__.56[rip]
	mov	edx, 322
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L129:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8389184[rax]
	cmp	DWORD PTR -12[rbp], eax
	jne	.L130
	mov	eax, 1
	jmp	.L131
.L130:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8389192[rax]
.L131:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	peek, .-peek
	.type	any, @function
any:
.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, 240
	mov	QWORD PTR -232[rbp], rdi
	mov	QWORD PTR -168[rbp], rsi
	mov	QWORD PTR -160[rbp], rdx
	mov	QWORD PTR -152[rbp], rcx
	mov	QWORD PTR -144[rbp], r8
	mov	QWORD PTR -136[rbp], r9
	test	al, al
	je	.L133
	movaps	XMMWORD PTR -128[rbp], xmm0
	movaps	XMMWORD PTR -112[rbp], xmm1
	movaps	XMMWORD PTR -96[rbp], xmm2
	movaps	XMMWORD PTR -80[rbp], xmm3
	movaps	XMMWORD PTR -64[rbp], xmm4
	movaps	XMMWORD PTR -48[rbp], xmm5
	movaps	XMMWORD PTR -32[rbp], xmm6
	movaps	XMMWORD PTR -16[rbp], xmm7
.L133:
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -184[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -232[rbp], 0
	jne	.L134
	lea	rcx, __PRETTY_FUNCTION__.55[rip]
	mov	edx, 329
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L134:
	mov	DWORD PTR -216[rbp], 0
	mov	DWORD PTR -208[rbp], 8
	mov	DWORD PTR -204[rbp], 48
	lea	rax, 16[rbp]
	mov	QWORD PTR -200[rbp], rax
	lea	rax, -176[rbp]
	mov	QWORD PTR -192[rbp], rax
	mov	DWORD PTR -212[rbp], 0
	jmp	.L135
.L139:
	mov	edx, DWORD PTR -212[rbp]
	mov	rax, QWORD PTR -232[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	accept
	mov	DWORD PTR -216[rbp], eax
	cmp	DWORD PTR -216[rbp], 0
	jne	.L142
.L135:
	mov	eax, DWORD PTR -208[rbp]
	cmp	eax, 47
	ja	.L137
	mov	rax, QWORD PTR -192[rbp]
	mov	edx, DWORD PTR -208[rbp]
	mov	edx, edx
	add	rax, rdx
	mov	edx, DWORD PTR -208[rbp]
	add	edx, 8
	mov	DWORD PTR -208[rbp], edx
	jmp	.L138
.L137:
	mov	rax, QWORD PTR -200[rbp]
	lea	rdx, 8[rax]
	mov	QWORD PTR -200[rbp], rdx
.L138:
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -212[rbp], eax
	cmp	DWORD PTR -212[rbp], 0
	jne	.L139
	jmp	.L136
.L142:
	nop
.L136:
	mov	eax, DWORD PTR -216[rbp]
	mov	rcx, QWORD PTR -184[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L141
	call	__stack_chk_fail@PLT
.L141:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	any, .-any
	.section	.rodata
.LC84:
	.string	"program"
.LC85:
	.string	"block"
.LC86:
	.string	"statement"
.LC87:
	.string	"typelist"
.LC88:
	.string	"constlist"
.LC89:
	.string	"varlist"
.LC90:
	.string	"proclist"
.LC91:
	.string	"condition"
.LC92:
	.string	"list"
.LC93:
	.string	"expression"
.LC94:
	.string	"unary"
.LC95:
	.string	"term"
.LC96:
	.string	"factor"
.LC97:
	.string	"identifier"
.LC98:
	.string	"number"
.LC99:
	.string	"string"
.LC100:
	.string	"typedecl"
.LC101:
	.string	"typeusage"
.LC102:
	.string	"importlist"
.LC103:
	.string	"if-statement"
.LC104:
	.string	"while-statement"
.LC105:
	.string	"do-statement"
.LC106:
	.string	"for-statement"
.LC107:
	.string	"assert-statement"
.LC108:
	.string	"implies-statement"
.LC109:
	.string	"assign-statement"
.LC110:
	.string	"call-statement"
.LC111:
	.string	"designator"
.LC112:
	.string	"exprlist"
.LC113:
	.string	"qualident"
.LC114:
	.string	"selector"
.LC115:
	.string	"array-type"
.LC116:
	.string	"record-type"
.LC117:
	.string	"pointer-type"
.LC118:
	.string	"procedure-type"
.LC119:
	.string	"field"
.LC120:
	.string	"const-expression"
	.section	.data.rel.local
	.align 32
	.type	rules, @object
	.size	rules, 328
rules:
	.quad	.LC84
	.quad	.LC85
	.quad	.LC86
	.quad	.LC87
	.quad	.LC88
	.quad	.LC89
	.quad	.LC90
	.quad	.LC47
	.quad	.LC46
	.quad	.LC44
	.quad	.LC91
	.quad	.LC92
	.quad	.LC91
	.quad	.LC93
	.quad	.LC94
	.quad	.LC95
	.quad	.LC96
	.quad	.LC97
	.quad	.LC98
	.quad	.LC99
	.quad	.LC100
	.quad	.LC101
	.quad	.LC102
	.quad	.LC103
	.quad	.LC104
	.quad	.LC105
	.quad	.LC106
	.quad	.LC107
	.quad	.LC108
	.quad	.LC109
	.quad	.LC110
	.quad	.LC111
	.quad	.LC112
	.quad	.LC113
	.quad	.LC114
	.quad	.LC115
	.quad	.LC116
	.quad	.LC117
	.quad	.LC118
	.quad	.LC119
	.quad	.LC120
	.section	.rodata
	.align 8
.LC121:
	.string	"syntax error in '%s' -- expected '%s' and got '%s'"
	.text
	.type	expect, @function
expect:
.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	DWORD PTR -28[rbp], esi
	cmp	QWORD PTR -24[rbp], 0
	jne	.L144
	lea	rcx, __PRETTY_FUNCTION__.54[rip]
	mov	edx, 360
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L144:
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	accept
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	je	.L145
	mov	eax, DWORD PTR -4[rbp]
	jmp	.L146
.L145:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 8389184[rax]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, keywords[rip]
	mov	rsi, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, keywords[rip]
	mov	rcx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8388640[rax]
	mov	eax, DWORD PTR [rax]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, rules[rip]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8, rsi
	lea	rsi, .LC121[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
.L146:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	expect, .-expect
	.section	.rodata
.LC122:
	.string	"a"
	.text
	.type	use, @function
use:
.LFB16:
	.cfi_startproc
	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
	cmp	QWORD PTR -8[rbp], 0
	jne	.L148
	lea	rcx, __PRETTY_FUNCTION__.46[rip]
	mov	edx, 371
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L148:
	cmp	QWORD PTR -16[rbp], 0
	jne	.L149
	lea	rcx, __PRETTY_FUNCTION__.46[rip]
	mov	edx, 372
	lea	rsi, .LC0[rip]
	lea	rdi, .LC122[rip]
	call	__assert_fail@PLT
.L149:
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR 8389188[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8389200[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR 72[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8389208[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR 64[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8389200[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8389192[rax]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	use, .-use
	.section	.rodata
.LC123:
	.string	"ret"
.LC124:
	.string	"*ret == NULL"
	.text
	.type	ast_new, @function
ast_new:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	mov	QWORD PTR -48[rbp], rcx
	cmp	QWORD PTR -24[rbp], 0
	jne	.L152
	lea	rcx, __PRETTY_FUNCTION__.53[rip]
	mov	edx, 381
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L152:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L153
	lea	rcx, __PRETTY_FUNCTION__.53[rip]
	mov	edx, 382
	lea	rsi, .LC0[rip]
	lea	rdi, .LC123[rip]
	call	__assert_fail@PLT
.L153:
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	je	.L154
	lea	rcx, __PRETTY_FUNCTION__.53[rip]
	mov	edx, 383
	lea	rsi, .LC0[rip]
	lea	rdi, .LC124[rip]
	call	__assert_fail@PLT
.L154:
	mov	edi, 80
	call	allocate
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	sal	rax, 3
	mov	rdi, rax
	call	allocate
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 24[rdx], rax
	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 -48[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 8388624[rax]
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 8388640[rax], rdx
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	ast_new, .-ast_new
	.type	ast_free, @function
ast_free:
.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
	cmp	QWORD PTR -24[rbp], 0
	je	.L161
	mov	QWORD PTR -8[rbp], 0
	jmp	.L159
.L160:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -8[rbp]
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	ast_free
	add	QWORD PTR -8[rbp], 1
.L159:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 16[rax]
	cmp	QWORD PTR -8[rbp], rax
	jb	.L160
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 72[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	free@PLT
	jmp	.L156
.L161:
	nop
.L156:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	ast_free, .-ast_free
	.type	ast_grow, @function
ast_grow:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L163
	lea	rcx, __PRETTY_FUNCTION__.52[rip]
	mov	edx, 406
	lea	rsi, .LC0[rip]
	lea	rdi, .LC122[rip]
	call	__assert_fail@PLT
.L163:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	add	rax, 1
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	reallocate
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 24[rdx], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	lea	rcx, 1[rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rdx], rcx
	sal	rax, 3
	add	rax, rsi
	mov	QWORD PTR [rax], 0
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	ast_grow, .-ast_grow
	.type	indent, @function
indent:
.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, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	cmp	QWORD PTR -24[rbp], 0
	jne	.L166
	lea	rcx, __PRETTY_FUNCTION__.51[rip]
	mov	edx, 413
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L166:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L167
	lea	rcx, __PRETTY_FUNCTION__.51[rip]
	mov	edx, 414
	lea	rsi, .LC0[rip]
	lea	rdi, .LC5[rip]
	call	__assert_fail@PLT
.L167:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L168
.L171:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8388664[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	fputs@PLT
	test	eax, eax
	jns	.L169
	mov	eax, -1
	jmp	.L170
.L169:
	add	DWORD PTR -4[rbp], 1
.L168:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -36[rbp]
	jb	.L171
	mov	eax, 0
.L170:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	indent, .-indent
	.section	.rodata
.LC125:
	.string	" "
.LC126:
	.string	"%s %s %s %ld\n"
	.text
	.type	ast_print, @function
ast_print:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	cmp	QWORD PTR -24[rbp], 0
	jne	.L173
	lea	rcx, __PRETTY_FUNCTION__.50[rip]
	mov	edx, 422
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L173:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L174
	mov	eax, 0
	jmp	.L175
.L174:
	mov	edx, DWORD PTR -36[rbp]
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC125[rip]
	mov	rdi, rax
	call	indent
	test	eax, eax
	jns	.L176
	mov	eax, -1
	jmp	.L175
.L176:
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 64[rax]
	mov	r8, rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 72[rax]
	test	rax, rax
	je	.L177
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 72[rax]
	jmp	.L178
.L177:
	lea	rax, .LC8[rip]
.L178:
	mov	rdx, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 4[rdx]
	movsx	rdx, edx
	lea	rcx, 0[0+rdx*8]
	lea	rdx, keywords[rip]
	mov	rcx, QWORD PTR [rcx+rdx]
	mov	rdx, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR [rdx]
	movsx	rdx, edx
	lea	rsi, 0[0+rdx*8]
	lea	rdx, rules[rip]
	mov	rdx, QWORD PTR [rsi+rdx]
	mov	rsi, QWORD PTR -24[rbp]
	mov	rdi, QWORD PTR 8388664[rsi]
	mov	r9, r8
	mov	r8, rax
	lea	rsi, .LC126[rip]
	mov	eax, 0
	call	fprintf@PLT
	test	eax, eax
	jns	.L179
	mov	eax, -1
	jmp	.L175
.L179:
	mov	QWORD PTR -8[rbp], 0
	jmp	.L180
.L181:
	mov	eax, DWORD PTR -36[rbp]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -8[rbp]
	sal	rax, 3
	add	rax, rcx
	mov	rcx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	ast_print
	add	QWORD PTR -8[rbp], 1
.L180:
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	cmp	QWORD PTR -8[rbp], rax
	jb	.L181
	mov	eax, -1
.L175:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	ast_print, .-ast_print
	.section	.rodata
.LC127:
	.string	"r"
	.text
	.type	unary_expression, @function
unary_expression:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -24[rbp], 0
	jne	.L183
	lea	rcx, __PRETTY_FUNCTION__.49[rip]
	mov	edx, 438
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L183:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L184
	lea	rcx, __PRETTY_FUNCTION__.49[rip]
	mov	edx, 439
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L184:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 14
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 16
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L185
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 8389188[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], edx
	jmp	.L186
.L185:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 15
	mov	rdi, rax
	call	accept
.L186:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	term
	test	eax, eax
	jns	.L187
	mov	eax, -1
	jmp	.L188
.L187:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	expression
.L188:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	unary_expression, .-unary_expression
	.type	constexpr, @function
constexpr:
.LFB23:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L190
	lea	rcx, __PRETTY_FUNCTION__.48[rip]
	mov	edx, 452
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L190:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L191
	lea	rcx, __PRETTY_FUNCTION__.48[rip]
	mov	edx, 453
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L191:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 40
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	unary_expression
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	constexpr, .-constexpr
	.type	identifier, @function
identifier:
.LFB24:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L194
	lea	rcx, __PRETTY_FUNCTION__.47[rip]
	mov	edx, 459
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L194:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L195
	lea	rcx, __PRETTY_FUNCTION__.47[rip]
	mov	edx, 460
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L195:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 0
	mov	edx, 17
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L196
	mov	eax, -1
	jmp	.L197
.L196:
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	use
.L197:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	identifier, .-identifier
	.type	number, @function
number:
.LFB25:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L199
	lea	rcx, __PRETTY_FUNCTION__.45[rip]
	mov	edx, 468
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L199:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L200
	lea	rcx, __PRETTY_FUNCTION__.45[rip]
	mov	edx, 469
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L200:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 0
	mov	edx, 18
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L201
	mov	eax, -1
	jmp	.L202
.L201:
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	use
.L202:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	number, .-number
	.type	string, @function
string:
.LFB26:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L204
	lea	rcx, __PRETTY_FUNCTION__.44[rip]
	mov	edx, 477
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L204:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L205
	lea	rcx, __PRETTY_FUNCTION__.44[rip]
	mov	edx, 478
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L205:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 0
	mov	edx, 19
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L206
	mov	eax, -1
	jmp	.L207
.L206:
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	use
.L207:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	string, .-string
	.type	exprlist, @function
exprlist:
.LFB27:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L209
	lea	rcx, __PRETTY_FUNCTION__.43[rip]
	mov	edx, 486
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L209:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L210
	lea	rcx, __PRETTY_FUNCTION__.43[rip]
	mov	edx, 487
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L210:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 32
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	unary_expression
	test	eax, eax
	jns	.L211
	mov	eax, -1
	jmp	.L212
.L211:
	mov	QWORD PTR -16[rbp], 1
	jmp	.L213
.L215:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	unary_expression
	test	eax, eax
	jns	.L214
	mov	eax, -1
	jmp	.L212
.L214:
	add	QWORD PTR -16[rbp], 1
.L213:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 14
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L215
	mov	eax, 0
.L212:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	exprlist, .-exprlist
	.type	qualident, @function
qualident:
.LFB28:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L217
	lea	rcx, __PRETTY_FUNCTION__.42[rip]
	mov	edx, 500
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L217:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L218
	lea	rcx, __PRETTY_FUNCTION__.42[rip]
	mov	edx, 501
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L218:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 33
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	identifier
	test	eax, eax
	jns	.L219
	mov	eax, -1
	jmp	.L220
.L219:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 12
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L221
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	identifier
	test	eax, eax
	jns	.L221
	mov	eax, -1
	jmp	.L220
.L221:
	mov	eax, 0
.L220:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	qualident, .-qualident
	.type	selector, @function
selector:
.LFB29:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L223
	lea	rcx, __PRETTY_FUNCTION__.41[rip]
	mov	edx, 514
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L223:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L224
	lea	rcx, __PRETTY_FUNCTION__.41[rip]
	mov	edx, 515
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L224:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 0
	mov	edx, 34
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	QWORD PTR -16[rbp], 0
	jmp	.L225
.L229:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	exprlist
	test	eax, eax
	jns	.L226
	mov	eax, -1
	jmp	.L227
.L226:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 9
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L228
	mov	eax, -1
	jmp	.L227
.L228:
	add	QWORD PTR -16[rbp], 1
.L225:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 8
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L229
	mov	eax, 0
.L227:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	selector, .-selector
	.type	designator, @function
designator:
.LFB30:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L231
	lea	rcx, __PRETTY_FUNCTION__.40[rip]
	mov	edx, 529
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L231:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L232
	lea	rcx, __PRETTY_FUNCTION__.40[rip]
	mov	edx, 530
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L232:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 31
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	qualident
	test	eax, eax
	jns	.L233
	mov	eax, -1
	jmp	.L234
.L233:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	selector
.L234:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	designator, .-designator
	.type	factor, @function
factor:
.LFB31:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L236
	lea	rcx, __PRETTY_FUNCTION__.39[rip]
	mov	edx, 538
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L236:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L237
	lea	rcx, __PRETTY_FUNCTION__.39[rip]
	mov	edx, 539
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L237:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 16
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, 0
	mov	ecx, 65
	mov	edx, 64
	mov	esi, 63
	mov	rdi, rax
	mov	eax, 0
	call	any
	test	eax, eax
	je	.L238
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	use
	jmp	.L239
.L238:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	peek
	test	eax, eax
	je	.L240
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	number
	jmp	.L239
.L240:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	peek
	test	eax, eax
	je	.L241
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	string
	jmp	.L239
.L241:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 30
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L242
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	use
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	factor
	jmp	.L239
.L242:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 4
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L243
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	unary_expression
	test	eax, eax
	jns	.L244
	mov	eax, -1
	jmp	.L239
.L244:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 5
	mov	rdi, rax
	call	expect
	jmp	.L239
.L243:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	designator
	test	eax, eax
	jns	.L245
	mov	eax, -1
	jmp	.L239
.L245:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 4
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L246
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	exprlist
	test	eax, eax
	jns	.L247
	mov	eax, -1
	jmp	.L239
.L247:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 5
	mov	rdi, rax
	call	expect
	jmp	.L239
.L246:
	mov	eax, 0
.L239:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	factor, .-factor
	.type	term, @function
term:
.LFB32:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L249
	lea	rcx, __PRETTY_FUNCTION__.38[rip]
	mov	edx, 567
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L249:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L250
	lea	rcx, __PRETTY_FUNCTION__.38[rip]
	mov	edx, 568
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L250:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 15
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	factor
	test	eax, eax
	jns	.L251
	mov	eax, -1
	jmp	.L252
.L251:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 19
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L253
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 20
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L254
.L253:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 8389188[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	factor
	jmp	.L252
.L254:
	mov	eax, 0
.L252:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	term, .-term
	.type	expression, @function
expression:
.LFB33:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L256
	lea	rcx, __PRETTY_FUNCTION__.37[rip]
	mov	edx, 580
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L256:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L257
	lea	rcx, __PRETTY_FUNCTION__.37[rip]
	mov	edx, 581
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L257:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 13
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	sub	rsp, 8
	push	0
	push	18
	push	17
	mov	r9d, 29
	mov	r8d, 28
	mov	ecx, 27
	mov	edx, 16
	mov	esi, 15
	mov	rdi, rax
	mov	eax, 0
	call	any
	add	rsp, 32
	test	eax, eax
	je	.L258
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 8389188[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	term
	jmp	.L259
.L258:
	mov	eax, 0
.L259:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	expression, .-expression
	.section	.rodata
.LC128:
	.string	"expected conditional"
	.text
	.type	condition, @function
condition:
.LFB34:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L261
	lea	rcx, __PRETTY_FUNCTION__.36[rip]
	mov	edx, 591
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L261:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L262
	lea	rcx, __PRETTY_FUNCTION__.36[rip]
	mov	edx, 592
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L262:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 12
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	unary_expression
	test	eax, eax
	jns	.L263
	mov	eax, -1
	jmp	.L264
.L263:
	mov	rax, QWORD PTR -24[rbp]
	push	0
	push	25
	mov	r9d, 26
	mov	r8d, 23
	mov	ecx, 24
	mov	edx, 22
	mov	esi, 21
	mov	rdi, rax
	mov	eax, 0
	call	any
	add	rsp, 16
	test	eax, eax
	je	.L265
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 8389188[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	unary_expression
	jmp	.L264
.L265:
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC128[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
.L264:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	condition, .-condition
	.type	list, @function
list:
.LFB35:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L267
	lea	rcx, __PRETTY_FUNCTION__.35[rip]
	mov	edx, 606
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L267:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L268
	lea	rcx, __PRETTY_FUNCTION__.35[rip]
	mov	edx, 607
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L268:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 11
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	statement
	test	eax, eax
	jns	.L269
	mov	eax, -1
	jmp	.L270
.L269:
	mov	QWORD PTR -16[rbp], 1
	jmp	.L271
.L273:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	statement
	test	eax, eax
	jns	.L272
	mov	eax, -1
	jmp	.L270
.L272:
	add	QWORD PTR -16[rbp], 1
.L271:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 11
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L273
	mov	eax, 0
.L270:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	list, .-list
	.type	field, @function
field:
.LFB36:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L275
	lea	rcx, __PRETTY_FUNCTION__.34[rip]
	mov	edx, 622
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L275:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L276
	lea	rcx, __PRETTY_FUNCTION__.34[rip]
	mov	edx, 623
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L276:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 36
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	identifier
	test	eax, eax
	jns	.L277
	mov	eax, -1
	jmp	.L278
.L277:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 13
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L279
	mov	eax, -1
	jmp	.L278
.L279:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	typeusage
.L278:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	field, .-field
	.type	record_type, @function
record_type:
.LFB37:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L281
	lea	rcx, __PRETTY_FUNCTION__.33[rip]
	mov	edx, 633
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L281:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L282
	lea	rcx, __PRETTY_FUNCTION__.33[rip]
	mov	edx, 634
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L282:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 36
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 6
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L283
	mov	eax, -1
	jmp	.L284
.L283:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	field
	test	eax, eax
	jns	.L285
	mov	eax, -1
	jmp	.L284
.L285:
	mov	QWORD PTR -16[rbp], 1
	jmp	.L286
.L288:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	field
	test	eax, eax
	jns	.L287
	mov	eax, -1
	jmp	.L284
.L287:
	add	QWORD PTR -16[rbp], 1
.L286:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 11
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L288
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 7
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L289
	mov	eax, -1
	jmp	.L284
.L289:
	mov	eax, 0
.L284:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	record_type, .-record_type
	.type	array_type, @function
array_type:
.LFB38:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L291
	lea	rcx, __PRETTY_FUNCTION__.32[rip]
	mov	edx, 651
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L291:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L292
	lea	rcx, __PRETTY_FUNCTION__.32[rip]
	mov	edx, 652
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L292:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 35
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	constexpr
	test	eax, eax
	jns	.L293
	mov	eax, -1
	jmp	.L294
.L293:
	mov	QWORD PTR -16[rbp], 1
	jmp	.L295
.L297:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	constexpr
	test	eax, eax
	jns	.L296
	mov	eax, -1
	jmp	.L294
.L296:
	add	QWORD PTR -16[rbp], 1
.L295:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 14
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L297
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 59
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L298
	mov	eax, -1
	jmp	.L294
.L298:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	typeusage
.L294:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	array_type, .-array_type
	.type	pointer_type, @function
pointer_type:
.LFB39:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L300
	lea	rcx, __PRETTY_FUNCTION__.31[rip]
	mov	edx, 668
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L300:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L301
	lea	rcx, __PRETTY_FUNCTION__.31[rip]
	mov	edx, 669
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L301:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 37
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 61
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L302
	mov	eax, -1
	jmp	.L303
.L302:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	typeusage
.L303:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	pointer_type, .-pointer_type
	.type	procedure_type, @function
procedure_type:
.LFB40:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L305
	lea	rcx, __PRETTY_FUNCTION__.30[rip]
	mov	edx, 679
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L305:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L306
	lea	rcx, __PRETTY_FUNCTION__.30[rip]
	mov	edx, 680
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L306:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 38
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 4
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L307
	mov	eax, -1
	jmp	.L308
.L307:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	peek
	test	eax, eax
	je	.L309
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	varlist
	test	eax, eax
	jns	.L309
	mov	eax, -1
	jmp	.L308
.L309:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 5
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L310
	mov	eax, -1
	jmp	.L308
.L310:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 13
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L311
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	typeusage
	test	eax, eax
	jns	.L311
	mov	eax, -1
	jmp	.L308
.L311:
	mov	eax, 0
.L308:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	procedure_type, .-procedure_type
	.type	typeusage, @function
typeusage:
.LFB41:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L313
	lea	rcx, __PRETTY_FUNCTION__.29[rip]
	mov	edx, 697
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L313:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L314
	lea	rcx, __PRETTY_FUNCTION__.29[rip]
	mov	edx, 698
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L314:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 0
	mov	edx, 21
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 57
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L315
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	use
	jmp	.L316
.L315:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 56
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L317
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	use
	jmp	.L316
.L317:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 58
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L318
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	use
	jmp	.L316
.L318:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 55
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L319
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	pointer_type
	jmp	.L316
.L319:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 53
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L320
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	record_type
	jmp	.L316
.L320:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 36
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L321
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	procedure_type
	jmp	.L316
.L321:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 54
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L322
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	array_type
	jmp	.L316
.L322:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	qualident
.L316:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	typeusage, .-typeusage
	.type	typedecl, @function
typedecl:
.LFB42:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L324
	lea	rcx, __PRETTY_FUNCTION__.28[rip]
	mov	edx, 719
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L324:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L325
	lea	rcx, __PRETTY_FUNCTION__.28[rip]
	mov	edx, 720
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L325:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 20
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	identifier
	test	eax, eax
	jns	.L326
	mov	eax, -1
	jmp	.L327
.L326:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 21
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L328
	mov	eax, -1
	jmp	.L327
.L328:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	typeusage
.L327:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	typedecl, .-typedecl
	.type	typelist, @function
typelist:
.LFB43:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L330
	lea	rcx, __PRETTY_FUNCTION__.27[rip]
	mov	edx, 730
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L330:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L331
	lea	rcx, __PRETTY_FUNCTION__.27[rip]
	mov	edx, 731
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L331:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 3
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	typedecl
	test	eax, eax
	jns	.L332
	mov	eax, -1
	jmp	.L333
.L332:
	mov	QWORD PTR -16[rbp], 1
	jmp	.L334
.L336:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	typedecl
	test	eax, eax
	jns	.L335
	mov	eax, -1
	jmp	.L333
.L335:
	add	QWORD PTR -16[rbp], 1
.L334:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 14
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L336
	mov	eax, 0
.L333:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE43:
	.size	typelist, .-typelist
	.type	variable, @function
variable:
.LFB44:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L338
	lea	rcx, __PRETTY_FUNCTION__.26[rip]
	mov	edx, 744
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L338:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L339
	lea	rcx, __PRETTY_FUNCTION__.26[rip]
	mov	edx, 745
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L339:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 8
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	identifier
	test	eax, eax
	jns	.L340
	mov	eax, -1
	jmp	.L341
.L340:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 13
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L342
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	typeusage
	jmp	.L341
.L342:
	mov	eax, 0
.L341:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE44:
	.size	variable, .-variable
	.type	varlist, @function
varlist:
.LFB45:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L344
	lea	rcx, __PRETTY_FUNCTION__.25[rip]
	mov	edx, 755
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L344:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L345
	lea	rcx, __PRETTY_FUNCTION__.25[rip]
	mov	edx, 756
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L345:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 11
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	variable
	test	eax, eax
	jns	.L346
	mov	eax, -1
	jmp	.L347
.L346:
	mov	QWORD PTR -16[rbp], 1
	jmp	.L348
.L350:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	variable
	test	eax, eax
	jns	.L349
	mov	eax, -1
	jmp	.L347
.L349:
	add	QWORD PTR -16[rbp], 1
.L348:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 14
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L350
	mov	eax, 0
.L347:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE45:
	.size	varlist, .-varlist
	.type	constant, @function
constant:
.LFB46:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L352
	lea	rcx, __PRETTY_FUNCTION__.24[rip]
	mov	edx, 769
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L352:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L353
	lea	rcx, __PRETTY_FUNCTION__.24[rip]
	mov	edx, 770
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L353:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 3
	mov	edx, 7
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	identifier
	test	eax, eax
	jns	.L354
	mov	eax, -1
	jmp	.L355
.L354:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 13
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L356
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	typeusage
	test	eax, eax
	jns	.L356
	mov	eax, -1
	jmp	.L355
.L356:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 21
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L357
	mov	eax, -1
	jmp	.L355
.L357:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 16[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	constexpr
.L355:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE46:
	.size	constant, .-constant
	.type	constlist, @function
constlist:
.LFB47:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L359
	lea	rcx, __PRETTY_FUNCTION__.23[rip]
	mov	edx, 783
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L359:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L360
	lea	rcx, __PRETTY_FUNCTION__.23[rip]
	mov	edx, 784
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L360:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 4
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	constant
	test	eax, eax
	jns	.L361
	mov	eax, -1
	jmp	.L362
.L361:
	mov	QWORD PTR -16[rbp], 1
	jmp	.L363
.L365:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	constant
	test	eax, eax
	jns	.L364
	mov	eax, -1
	jmp	.L362
.L364:
	add	QWORD PTR -16[rbp], 1
.L363:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 14
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L365
	mov	eax, 0
.L362:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE47:
	.size	constlist, .-constlist
	.type	function, @function
function:
.LFB48:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L367
	lea	rcx, __PRETTY_FUNCTION__.22[rip]
	mov	edx, 799
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L367:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L368
	lea	rcx, __PRETTY_FUNCTION__.22[rip]
	mov	edx, 800
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L368:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 3
	mov	edx, 9
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	identifier
	test	eax, eax
	jns	.L369
	mov	eax, -1
	jmp	.L370
.L369:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	procedure_type
	test	eax, eax
	jns	.L371
	mov	eax, -1
	jmp	.L370
.L371:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 6
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L372
	mov	eax, -1
	jmp	.L370
.L372:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 16[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	block
	test	eax, eax
	jns	.L373
	mov	eax, -1
	jmp	.L370
.L373:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 7
	mov	rdi, rax
	call	expect
.L370:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE48:
	.size	function, .-function
	.type	proclist, @function
proclist:
.LFB49:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L375
	lea	rcx, __PRETTY_FUNCTION__.21[rip]
	mov	edx, 815
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L375:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L376
	lea	rcx, __PRETTY_FUNCTION__.21[rip]
	mov	edx, 816
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L376:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 6
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	function
	test	eax, eax
	jns	.L377
	mov	eax, -1
	jmp	.L378
.L377:
	mov	QWORD PTR -16[rbp], 1
	jmp	.L379
.L381:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	function
	test	eax, eax
	jns	.L380
	mov	eax, -1
	jmp	.L378
.L380:
	add	QWORD PTR -16[rbp], 1
.L379:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 36
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L381
	mov	eax, 0
.L378:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE49:
	.size	proclist, .-proclist
	.section	.rodata
.LC129:
	.string	"first"
	.text
	.type	assign_statement, @function
assign_statement:
.LFB50:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L383
	lea	rcx, __PRETTY_FUNCTION__.20[rip]
	mov	edx, 829
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L383:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L384
	lea	rcx, __PRETTY_FUNCTION__.20[rip]
	mov	edx, 830
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L384:
	cmp	QWORD PTR -40[rbp], 0
	jne	.L385
	lea	rcx, __PRETTY_FUNCTION__.20[rip]
	mov	edx, 831
	lea	rsi, .LC0[rip]
	lea	rdi, .LC129[rip]
	call	__assert_fail@PLT
.L385:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 29
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdx, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 10
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L386
	mov	eax, -1
	jmp	.L387
.L386:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	unary_expression
.L387:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE50:
	.size	assign_statement, .-assign_statement
	.type	call_statement, @function
call_statement:
.LFB51:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L389
	lea	rcx, __PRETTY_FUNCTION__.19[rip]
	mov	edx, 840
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L389:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L390
	lea	rcx, __PRETTY_FUNCTION__.19[rip]
	mov	edx, 841
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L390:
	cmp	QWORD PTR -40[rbp], 0
	jne	.L391
	lea	rcx, __PRETTY_FUNCTION__.19[rip]
	mov	edx, 842
	lea	rsi, .LC0[rip]
	lea	rdi, .LC129[rip]
	call	__assert_fail@PLT
.L391:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 30
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdx, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 4
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L392
	mov	eax, -1
	jmp	.L393
.L392:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	exprlist
	test	eax, eax
	jns	.L394
	mov	eax, -1
	jmp	.L393
.L394:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 5
	mov	rdi, rax
	call	expect
.L393:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE51:
	.size	call_statement, .-call_statement
	.type	assert_statement, @function
assert_statement:
.LFB52:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L396
	lea	rcx, __PRETTY_FUNCTION__.18[rip]
	mov	edx, 853
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L396:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L397
	lea	rcx, __PRETTY_FUNCTION__.18[rip]
	mov	edx, 854
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L397:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 27
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	condition
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE52:
	.size	assert_statement, .-assert_statement
	.type	implies_statement, @function
implies_statement:
.LFB53:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L400
	lea	rcx, __PRETTY_FUNCTION__.17[rip]
	mov	edx, 860
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L400:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L401
	lea	rcx, __PRETTY_FUNCTION__.17[rip]
	mov	edx, 861
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L401:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 28
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	condition
	test	eax, eax
	jns	.L402
	mov	eax, -1
	jmp	.L403
.L402:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 14
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L404
	mov	eax, -1
	jmp	.L403
.L404:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	condition
.L403:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE53:
	.size	implies_statement, .-implies_statement
	.type	do_statement, @function
do_statement:
.LFB54:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L406
	lea	rcx, __PRETTY_FUNCTION__.16[rip]
	mov	edx, 871
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L406:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L407
	lea	rcx, __PRETTY_FUNCTION__.16[rip]
	mov	edx, 872
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L407:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 25
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	statement
	test	eax, eax
	jns	.L408
	mov	eax, -1
	jmp	.L409
.L408:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 35
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L410
	mov	eax, -1
	jmp	.L409
.L410:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	condition
	test	eax, eax
	jns	.L411
	mov	eax, -1
	jmp	.L409
.L411:
	mov	eax, 0
.L409:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE54:
	.size	do_statement, .-do_statement
	.type	while_statement, @function
while_statement:
.LFB55:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L413
	lea	rcx, __PRETTY_FUNCTION__.15[rip]
	mov	edx, 884
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L413:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L414
	lea	rcx, __PRETTY_FUNCTION__.15[rip]
	mov	edx, 885
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L414:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 24
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	condition
	test	eax, eax
	jns	.L415
	mov	eax, -1
	jmp	.L416
.L415:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	statement
.L416:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE55:
	.size	while_statement, .-while_statement
	.type	if_statement, @function
if_statement:
.LFB56:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L418
	lea	rcx, __PRETTY_FUNCTION__.14[rip]
	mov	edx, 894
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L418:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L419
	lea	rcx, __PRETTY_FUNCTION__.14[rip]
	mov	edx, 895
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L419:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 2
	mov	edx, 23
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	condition
	test	eax, eax
	jns	.L420
	mov	eax, -1
	jmp	.L421
.L420:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	statement
	test	eax, eax
	jns	.L422
	mov	eax, -1
	jmp	.L421
.L422:
	mov	QWORD PTR -16[rbp], 2
	jmp	.L423
.L429:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 32
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L424
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	condition
	test	eax, eax
	jns	.L425
	mov	eax, -1
	jmp	.L421
.L425:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	statement
	test	eax, eax
	jns	.L426
	mov	eax, -1
	jmp	.L421
.L426:
	add	QWORD PTR -16[rbp], 1
	add	QWORD PTR -16[rbp], 1
	jmp	.L423
.L424:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	statement
	test	eax, eax
	jns	.L430
	mov	eax, -1
	jmp	.L421
.L423:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 33
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L429
	jmp	.L428
.L430:
	nop
.L428:
	mov	eax, 0
.L421:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE56:
	.size	if_statement, .-if_statement
	.type	for_statement, @function
for_statement:
.LFB57:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L432
	lea	rcx, __PRETTY_FUNCTION__.13[rip]
	mov	edx, 920
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L432:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L433
	lea	rcx, __PRETTY_FUNCTION__.13[rip]
	mov	edx, 921
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L433:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 3
	mov	edx, 26
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	identifier
	test	eax, eax
	jns	.L434
	mov	eax, -1
	jmp	.L435
.L434:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 10
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L436
	mov	eax, -1
	jmp	.L435
.L436:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	unary_expression
	test	eax, eax
	jns	.L437
	mov	eax, -1
	jmp	.L435
.L437:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 61
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L438
	mov	eax, -1
	jmp	.L435
.L438:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 16[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	unary_expression
	test	eax, eax
	jns	.L439
	mov	eax, -1
	jmp	.L435
.L439:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 62
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L440
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	constexpr
	test	eax, eax
	jns	.L440
	mov	eax, -1
	jmp	.L435
.L440:
	mov	eax, 0
.L435:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE57:
	.size	for_statement, .-for_statement
	.type	statement, @function
statement:
.LFB58:
	.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 -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -40[rbp], 0
	jne	.L442
	lea	rcx, __PRETTY_FUNCTION__.12[rip]
	mov	edx, 942
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L442:
	cmp	QWORD PTR -48[rbp], 0
	jne	.L443
	lea	rcx, __PRETTY_FUNCTION__.12[rip]
	mov	edx, 943
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L443:
	mov	rsi, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	ecx, 1
	mov	edx, 2
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 3
	mov	rdi, rax
	call	peek
	test	eax, eax
	je	.L444
	mov	QWORD PTR -24[rbp], 0
	lea	rdx, -24[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	designator
	test	eax, eax
	jns	.L445
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	mov	eax, -1
	jmp	.L448
.L445:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 10
	mov	rdi, rax
	call	peek
	test	eax, eax
	je	.L447
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	assign_statement
	jmp	.L448
.L447:
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	call_statement
	jmp	.L448
.L444:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 6
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L449
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	list
	test	eax, eax
	jns	.L450
	mov	eax, -1
	jmp	.L448
.L450:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 7
	mov	rdi, rax
	call	expect
	jmp	.L448
.L449:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 32
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L451
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	if_statement
	jmp	.L448
.L451:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 37
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L452
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	for_statement
	jmp	.L448
.L452:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 35
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L453
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	while_statement
	jmp	.L448
.L453:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 34
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L454
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	do_statement
	jmp	.L448
.L454:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 42
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L455
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	assert_statement
	jmp	.L448
.L455:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 43
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L456
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	implies_statement
	jmp	.L448
.L456:
	mov	eax, 0
.L448:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L457
	call	__stack_chk_fail@PLT
.L457:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE58:
	.size	statement, .-statement
	.type	block, @function
block:
.LFB59:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L459
	lea	rcx, __PRETTY_FUNCTION__.11[rip]
	mov	edx, 966
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L459:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L460
	lea	rcx, __PRETTY_FUNCTION__.11[rip]
	mov	edx, 967
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L460:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 5
	mov	edx, 1
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 44
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L461
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	typelist
	test	eax, eax
	jns	.L462
	mov	eax, -1
	jmp	.L463
.L462:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 11
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L461
	mov	eax, -1
	jmp	.L463
.L461:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 39
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L464
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	constlist
	test	eax, eax
	jns	.L465
	mov	eax, -1
	jmp	.L463
.L465:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 11
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L464
	mov	eax, -1
	jmp	.L463
.L464:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 38
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L466
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 16[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	varlist
	test	eax, eax
	jns	.L467
	mov	eax, -1
	jmp	.L463
.L467:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 11
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L466
	mov	eax, -1
	jmp	.L463
.L466:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 36
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L468
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	proclist
	test	eax, eax
	jns	.L468
	mov	eax, -1
	jmp	.L463
.L468:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 32[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	list
.L463:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE59:
	.size	block, .-block
	.type	importlist, @function
importlist:
.LFB60:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L470
	lea	rcx, __PRETTY_FUNCTION__.10[rip]
	mov	edx, 995
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L470:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L471
	lea	rcx, __PRETTY_FUNCTION__.10[rip]
	mov	edx, 996
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L471:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	edx, 22
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	identifier
	test	eax, eax
	jns	.L472
	mov	eax, -1
	jmp	.L473
.L472:
	mov	QWORD PTR -16[rbp], 1
	jmp	.L474
.L476:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	ast_grow
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -16[rbp]
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	identifier
	test	eax, eax
	jns	.L475
	mov	eax, -1
	jmp	.L473
.L475:
	add	QWORD PTR -16[rbp], 1
.L474:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 14
	mov	rdi, rax
	call	accept
	test	eax, eax
	jne	.L476
	mov	eax, 0
.L473:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE60:
	.size	importlist, .-importlist
	.type	program, @function
program:
.LFB61:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L478
	lea	rcx, __PRETTY_FUNCTION__.9[rip]
	mov	edx, 1009
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L478:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L479
	lea	rcx, __PRETTY_FUNCTION__.9[rip]
	mov	edx, 1010
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L479:
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 3
	mov	edx, 0
	mov	rdi, rax
	call	ast_new
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 45
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L480
	mov	eax, -1
	jmp	.L481
.L480:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	identifier
	test	eax, eax
	jns	.L482
	mov	eax, -1
	jmp	.L481
.L482:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 11
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L483
	mov	eax, -1
	jmp	.L481
.L483:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 46
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L484
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	importlist
	test	eax, eax
	jns	.L485
	mov	eax, -1
	jmp	.L481
.L485:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 11
	mov	rdi, rax
	call	expect
	test	eax, eax
	jns	.L484
	mov	eax, -1
	jmp	.L481
.L484:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 24[rax]
	lea	rdx, 16[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	block
	test	eax, eax
	jns	.L486
	mov	eax, -1
	jmp	.L481
.L486:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 12
	mov	rdi, rax
	call	accept
	test	eax, eax
	je	.L487
	mov	eax, 0
	jmp	.L481
.L487:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 31
	mov	rdi, rax
	call	expect
.L481:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE61:
	.size	program, .-program
	.type	parse, @function
parse:
.LFB62:
	.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	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L489
	lea	rcx, __PRETTY_FUNCTION__.8[rip]
	mov	edx, 1032
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L489:
	mov	QWORD PTR -16[rbp], 0
	lea	rdx, -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	program
	test	eax, eax
	jns	.L490
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	ast_free
	mov	eax, 0
	jmp	.L493
.L490:
	mov	rax, QWORD PTR -16[rbp]
	test	rax, rax
	jne	.L492
	lea	rcx, __PRETTY_FUNCTION__.8[rip]
	mov	edx, 1038
	lea	rsi, .LC0[rip]
	lea	rdi, .LC127[rip]
	call	__assert_fail@PLT
.L492:
	mov	rax, QWORD PTR -16[rbp]
.L493:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L494
	call	__stack_chk_fail@PLT
.L494:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE62:
	.size	parse, .-parse
	.type	scope_find, @function
scope_find:
.LFB63:
	.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	DWORD PTR -52[rbp], edx
	cmp	QWORD PTR -40[rbp], 0
	jne	.L496
	lea	rcx, __PRETTY_FUNCTION__.7[rip]
	mov	edx, 1059
	lea	rsi, .LC0[rip]
	lea	rdi, .LC5[rip]
	call	__assert_fail@PLT
.L496:
	cmp	QWORD PTR -48[rbp], 0
	je	.L497
	mov	rax, QWORD PTR -48[rbp]
	mov	DWORD PTR [rax], 1
.L497:
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR -24[rbp], rax
	jmp	.L498
.L504:
	mov	QWORD PTR -16[rbp], 0
	jmp	.L499
.L503:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax+rdx*8]
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L505
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -52[rbp], eax
	jne	.L501
	mov	rax, QWORD PTR -8[rbp]
	jmp	.L502
.L505:
	nop
.L501:
	add	QWORD PTR -16[rbp], 1
.L499:
	cmp	QWORD PTR -16[rbp], 4
	jbe	.L503
	mov	rax, QWORD PTR -48[rbp]
	mov	DWORD PTR [rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	QWORD PTR -24[rbp], rax
.L498:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L504
	mov	rax, QWORD PTR -48[rbp]
	mov	DWORD PTR [rax], 0
	mov	eax, 0
.L502:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE63:
	.size	scope_find, .-scope_find
	.type	fix, @function
fix:
.LFB64:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L507
	lea	rcx, __PRETTY_FUNCTION__.6[rip]
	mov	edx, 1078
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L507:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -32[rbp]
	sub	rax, rdx
	shr	rax, 3
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	lea	rcx, 2[rdx]
	mov	rdx, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax+rcx*8], rdx
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE64:
	.size	fix, .-fix
	.type	jump, @function
jump:
.LFB65:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L509
	lea	rcx, __PRETTY_FUNCTION__.5[rip]
	mov	edx, 1084
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L509:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	rax, rdx
	sub	rax, rcx
	shr	rax, 3
	mov	QWORD PTR -8[rbp], rax
	movabs	rax, -9223372036854775808
	or	rax, QWORD PTR -32[rbp]
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	add	rcx, 2
	mov	QWORD PTR [rax+rcx*8], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	lea	rdx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE65:
	.size	jump, .-jump
	.type	code, @function
code:
.LFB66:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	QWORD PTR -88[rbp], rdi
	mov	QWORD PTR -96[rbp], rsi
	mov	QWORD PTR -104[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -88[rbp], 0
	jne	.L512
	lea	rcx, __PRETTY_FUNCTION__.4[rip]
	mov	edx, 1093
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L512:
	cmp	QWORD PTR -96[rbp], 0
	jne	.L513
	lea	rcx, __PRETTY_FUNCTION__.4[rip]
	mov	edx, 1094
	lea	rsi, .LC0[rip]
	lea	rdi, .LC122[rip]
	call	__assert_fail@PLT
.L513:
	cmp	QWORD PTR -104[rbp], 0
	jne	.L514
	lea	rcx, __PRETTY_FUNCTION__.4[rip]
	mov	edx, 1095
	lea	rsi, .LC0[rip]
	lea	rdi, .LC5[rip]
	call	__assert_fail@PLT
.L514:
	mov	QWORD PTR -72[rbp], 0
	mov	rax, QWORD PTR -96[rbp]
	mov	eax, DWORD PTR [rax]
	cmp	eax, 40
	ja	.L515
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L517[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L517[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L517:
	.long	.L568-.L517
	.long	.L555-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L515-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.long	.L568-.L517
	.text
.L555:
	mov	rax, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rax, QWORD PTR 24[rax]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -104[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rcx, QWORD PTR [rax]
	lea	rdx, -64[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	code
	test	eax, eax
	jns	.L558
	mov	eax, -1
	jmp	.L566
.L558:
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rcx, QWORD PTR [rax]
	lea	rdx, -64[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	code
	test	eax, eax
	jns	.L560
	mov	eax, -1
	jmp	.L566
.L560:
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rcx, QWORD PTR [rax]
	lea	rdx, -64[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	code
	test	eax, eax
	jns	.L561
	mov	eax, -1
	jmp	.L566
.L561:
	mov	rax, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR 40[rax]
	test	rax, rax
	jne	.L562
	mov	rax, QWORD PTR -88[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	jump
	mov	QWORD PTR -72[rbp], rax
.L562:
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 24[rax]
	add	rax, 32
	mov	rcx, QWORD PTR [rax]
	lea	rdx, -64[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	code
	test	eax, eax
	jns	.L563
	mov	eax, -1
	jmp	.L566
.L563:
	mov	rax, QWORD PTR -104[rbp]
	mov	rax, QWORD PTR 40[rax]
	test	rax, rax
	jne	.L564
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR [rax]
	sub	rdx, rax
	mov	rcx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	fix
.L564:
	mov	rax, QWORD PTR -96[rbp]
	mov	rax, QWORD PTR 24[rax]
	add	rax, 32
	mov	rcx, QWORD PTR [rax]
	lea	rdx, -64[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	code
	test	eax, eax
	jns	.L569
	mov	eax, -1
	jmp	.L566
.L515:
	mov	eax, -1
	jmp	.L566
.L568:
	nop
	jmp	.L557
.L569:
	nop
.L557:
	mov	eax, 0
.L566:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L567
	call	__stack_chk_fail@PLT
.L567:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE66:
	.size	code, .-code
	.section	.rodata
.LC130:
	.string	"elements < NELEMS(c->m)"
.LC131:
	.string	"%16lx\n"
.LC132:
	.string	"failed to save"
	.text
	.type	save, @function
save:
.LFB67:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L571
	lea	rcx, __PRETTY_FUNCTION__.3[rip]
	mov	edx, 1174
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L571:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	movabs	rdx, -8796093022208
	add	rax, rdx
	shr	rax, 3
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 1048575
	jbe	.L572
	lea	rcx, __PRETTY_FUNCTION__.3[rip]
	mov	edx, 1176
	lea	rsi, .LC0[rip]
	lea	rdi, .LC130[rip]
	call	__assert_fail@PLT
.L572:
	mov	QWORD PTR -16[rbp], 0
	jmp	.L573
.L576:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	add	rdx, 2
	mov	rdx, QWORD PTR [rax+rdx*8]
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8388656[rax]
	lea	rsi, .LC131[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	test	eax, eax
	jns	.L574
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC132[rip]
	mov	rdi, rax
	mov	eax, 0
	call	warn
	jmp	.L575
.L574:
	add	QWORD PTR -16[rbp], 1
.L573:
	mov	rax, QWORD PTR -16[rbp]
	cmp	rax, QWORD PTR -8[rbp]
	jb	.L576
	mov	eax, 0
.L575:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE67:
	.size	save, .-save
	.section	.rodata
.LC133:
	.string	"c->in"
.LC134:
	.string	"c->out"
	.text
	.type	compile, @function
compile:
.LFB68:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -88[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	cmp	QWORD PTR -88[rbp], 0
	jne	.L578
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 1184
	lea	rsi, .LC0[rip]
	lea	rdi, .LC1[rip]
	call	__assert_fail@PLT
.L578:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388648[rax]
	test	rax, rax
	jne	.L579
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 1185
	lea	rsi, .LC0[rip]
	lea	rdi, .LC133[rip]
	call	__assert_fail@PLT
.L579:
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388656[rax]
	test	rax, rax
	jne	.L580
	lea	rcx, __PRETTY_FUNCTION__.2[rip]
	mov	edx, 1186
	lea	rsi, .LC0[rip]
	lea	rdi, .LC134[rip]
	call	__assert_fail@PLT
.L580:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	lexer
	test	eax, eax
	jns	.L581
	mov	eax, -1
	jmp	.L585
.L581:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	parse
	mov	rdx, QWORD PTR -88[rbp]
	mov	QWORD PTR 8388632[rdx], rax
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388632[rax]
	test	rax, rax
	jne	.L583
	mov	eax, -1
	jmp	.L585
.L583:
	mov	rax, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR 8388632[rax]
	mov	rax, QWORD PTR -88[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	ast_print
	mov	QWORD PTR -64[rbp], 0
	mov	QWORD PTR -56[rbp], 0
	mov	QWORD PTR -48[rbp], 0
	mov	QWORD PTR -40[rbp], 0
	mov	QWORD PTR -32[rbp], 0
	mov	QWORD PTR -24[rbp], 0
	mov	rax, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR 8388632[rax]
	lea	rdx, -64[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	code
	mov	DWORD PTR -68[rbp], eax
	mov	rax, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR 8388632[rax]
	mov	rdi, rax
	call	ast_free
	mov	rax, QWORD PTR -88[rbp]
	mov	QWORD PTR 8388632[rax], 0
	cmp	DWORD PTR -68[rbp], 0
	jns	.L584
	mov	eax, -1
	jmp	.L585
.L584:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	save
.L585:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L586
	call	__stack_chk_fail@PLT
.L586:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE68:
	.size	compile, .-compile
	.section	.rodata
.LC135:
	.string	"file"
.LC136:
	.string	"mode"
	.align 8
.LC137:
	.string	"Could not open file '%s' in mode '%s': %s\n"
	.text
	.type	fopen_or_die, @function
fopen_or_die:
.LFB69:
	.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L588
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 1202
	lea	rsi, .LC0[rip]
	lea	rdi, .LC135[rip]
	call	__assert_fail@PLT
.L588:
	cmp	QWORD PTR -32[rbp], 0
	jne	.L589
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 1203
	lea	rsi, .LC0[rip]
	lea	rdi, .LC136[rip]
	call	__assert_fail@PLT
.L589:
	call	__errno_location@PLT
	mov	DWORD PTR [rax], 0
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L590
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rsi, rax
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	r8, rsi
	lea	rsi, .LC137[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L590:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE69:
	.size	fopen_or_die, .-fopen_or_die
	.section	.rodata
.LC138:
	.string	"usage: %s in.pas? out.bin?\n"
.LC139:
	.string	"rb"
.LC140:
	.string	"wb"
	.text
	.globl	main
	.type	main, @function
main:
.LFB70:
	.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	DWORD PTR -20[rbp], edi
	mov	QWORD PTR -32[rbp], rsi
	mov	edx, 8389216
	mov	esi, 0
	lea	rdi, c.0[rip]
	call	memset@PLT
	mov	rax, QWORD PTR stdin[rip]
	mov	QWORD PTR c.0[rip+8388648], rax
	mov	rax, QWORD PTR stdout[rip]
	mov	QWORD PTR c.0[rip+8388656], rax
	mov	rax, QWORD PTR stderr[rip]
	mov	QWORD PTR c.0[rip+8388664], rax
	movabs	rax, 8796093022208
	mov	QWORD PTR c.0[rip], rax
	mov	QWORD PTR c.0[rip+8], rax
	mov	DWORD PTR c.0[rip+8388624], 1
	mov	DWORD PTR -4[rbp], 0
	cmp	DWORD PTR -20[rbp], 1
	je	.L593
	cmp	DWORD PTR -20[rbp], 2
	je	.L593
	cmp	DWORD PTR -20[rbp], 3
	je	.L593
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC138[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, 1
	jmp	.L594
.L593:
	cmp	DWORD PTR -20[rbp], 1
	jle	.L595
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	lea	rsi, .LC139[rip]
	mov	rdi, rax
	call	fopen_or_die
	mov	QWORD PTR c.0[rip+8388648], rax
.L595:
	cmp	DWORD PTR -20[rbp], 2
	jle	.L596
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 16
	mov	rax, QWORD PTR [rax]
	lea	rsi, .LC140[rip]
	mov	rdi, rax
	call	fopen_or_die
	mov	QWORD PTR c.0[rip+8388656], rax
.L596:
	lea	rdi, c.0[rip]
	call	compile
	test	eax, eax
	jns	.L597
	mov	DWORD PTR -4[rbp], 2
.L597:
	mov	rax, QWORD PTR c.0[rip+8388648]
	mov	rdi, rax
	call	fclose@PLT
	test	eax, eax
	jns	.L598
	mov	DWORD PTR -4[rbp], 3
.L598:
	mov	rax, QWORD PTR c.0[rip+8388656]
	mov	rdi, rax
	call	fclose@PLT
	test	eax, eax
	jns	.L599
	mov	DWORD PTR -4[rbp], 4
.L599:
	mov	eax, DWORD PTR -4[rbp]
.L594:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE70:
	.size	main, .-main
	.section	.rodata
	.type	__PRETTY_FUNCTION__.61, @object
	.size	__PRETTY_FUNCTION__.61, 5
__PRETTY_FUNCTION__.61:
	.string	"warn"
	.align 8
	.type	__PRETTY_FUNCTION__.60, @object
	.size	__PRETTY_FUNCTION__.60, 10
__PRETTY_FUNCTION__.60:
	.string	"duplicate"
	.type	__PRETTY_FUNCTION__.59, @object
	.size	__PRETTY_FUNCTION__.59, 6
__PRETTY_FUNCTION__.59:
	.string	"digit"
	.type	__PRETTY_FUNCTION__.58, @object
	.size	__PRETTY_FUNCTION__.58, 6
__PRETTY_FUNCTION__.58:
	.string	"lexer"
	.type	__PRETTY_FUNCTION__.57, @object
	.size	__PRETTY_FUNCTION__.57, 7
__PRETTY_FUNCTION__.57:
	.string	"accept"
	.type	__PRETTY_FUNCTION__.56, @object
	.size	__PRETTY_FUNCTION__.56, 5
__PRETTY_FUNCTION__.56:
	.string	"peek"
	.type	__PRETTY_FUNCTION__.55, @object
	.size	__PRETTY_FUNCTION__.55, 4
__PRETTY_FUNCTION__.55:
	.string	"any"
	.type	__PRETTY_FUNCTION__.54, @object
	.size	__PRETTY_FUNCTION__.54, 7
__PRETTY_FUNCTION__.54:
	.string	"expect"
	.align 8
	.type	__PRETTY_FUNCTION__.53, @object
	.size	__PRETTY_FUNCTION__.53, 8
__PRETTY_FUNCTION__.53:
	.string	"ast_new"
	.align 8
	.type	__PRETTY_FUNCTION__.52, @object
	.size	__PRETTY_FUNCTION__.52, 9
__PRETTY_FUNCTION__.52:
	.string	"ast_grow"
	.type	__PRETTY_FUNCTION__.51, @object
	.size	__PRETTY_FUNCTION__.51, 7
__PRETTY_FUNCTION__.51:
	.string	"indent"
	.align 8
	.type	__PRETTY_FUNCTION__.50, @object
	.size	__PRETTY_FUNCTION__.50, 10
__PRETTY_FUNCTION__.50:
	.string	"ast_print"
	.align 16
	.type	__PRETTY_FUNCTION__.49, @object
	.size	__PRETTY_FUNCTION__.49, 17
__PRETTY_FUNCTION__.49:
	.string	"unary_expression"
	.align 8
	.type	__PRETTY_FUNCTION__.48, @object
	.size	__PRETTY_FUNCTION__.48, 10
__PRETTY_FUNCTION__.48:
	.string	"constexpr"
	.align 8
	.type	__PRETTY_FUNCTION__.47, @object
	.size	__PRETTY_FUNCTION__.47, 11
__PRETTY_FUNCTION__.47:
	.string	"identifier"
	.type	__PRETTY_FUNCTION__.46, @object
	.size	__PRETTY_FUNCTION__.46, 4
__PRETTY_FUNCTION__.46:
	.string	"use"
	.type	__PRETTY_FUNCTION__.45, @object
	.size	__PRETTY_FUNCTION__.45, 7
__PRETTY_FUNCTION__.45:
	.string	"number"
	.type	__PRETTY_FUNCTION__.44, @object
	.size	__PRETTY_FUNCTION__.44, 7
__PRETTY_FUNCTION__.44:
	.string	"string"
	.align 8
	.type	__PRETTY_FUNCTION__.43, @object
	.size	__PRETTY_FUNCTION__.43, 9
__PRETTY_FUNCTION__.43:
	.string	"exprlist"
	.align 8
	.type	__PRETTY_FUNCTION__.42, @object
	.size	__PRETTY_FUNCTION__.42, 10
__PRETTY_FUNCTION__.42:
	.string	"qualident"
	.align 8
	.type	__PRETTY_FUNCTION__.41, @object
	.size	__PRETTY_FUNCTION__.41, 9
__PRETTY_FUNCTION__.41:
	.string	"selector"
	.align 8
	.type	__PRETTY_FUNCTION__.40, @object
	.size	__PRETTY_FUNCTION__.40, 11
__PRETTY_FUNCTION__.40:
	.string	"designator"
	.type	__PRETTY_FUNCTION__.39, @object
	.size	__PRETTY_FUNCTION__.39, 7
__PRETTY_FUNCTION__.39:
	.string	"factor"
	.type	__PRETTY_FUNCTION__.38, @object
	.size	__PRETTY_FUNCTION__.38, 5
__PRETTY_FUNCTION__.38:
	.string	"term"
	.align 8
	.type	__PRETTY_FUNCTION__.37, @object
	.size	__PRETTY_FUNCTION__.37, 11
__PRETTY_FUNCTION__.37:
	.string	"expression"
	.align 8
	.type	__PRETTY_FUNCTION__.36, @object
	.size	__PRETTY_FUNCTION__.36, 10
__PRETTY_FUNCTION__.36:
	.string	"condition"
	.type	__PRETTY_FUNCTION__.35, @object
	.size	__PRETTY_FUNCTION__.35, 5
__PRETTY_FUNCTION__.35:
	.string	"list"
	.type	__PRETTY_FUNCTION__.34, @object
	.size	__PRETTY_FUNCTION__.34, 6
__PRETTY_FUNCTION__.34:
	.string	"field"
	.align 8
	.type	__PRETTY_FUNCTION__.33, @object
	.size	__PRETTY_FUNCTION__.33, 12
__PRETTY_FUNCTION__.33:
	.string	"record_type"
	.align 8
	.type	__PRETTY_FUNCTION__.32, @object
	.size	__PRETTY_FUNCTION__.32, 11
__PRETTY_FUNCTION__.32:
	.string	"array_type"
	.align 8
	.type	__PRETTY_FUNCTION__.31, @object
	.size	__PRETTY_FUNCTION__.31, 13
__PRETTY_FUNCTION__.31:
	.string	"pointer_type"
	.align 8
	.type	__PRETTY_FUNCTION__.30, @object
	.size	__PRETTY_FUNCTION__.30, 15
__PRETTY_FUNCTION__.30:
	.string	"procedure_type"
	.align 8
	.type	__PRETTY_FUNCTION__.29, @object
	.size	__PRETTY_FUNCTION__.29, 10
__PRETTY_FUNCTION__.29:
	.string	"typeusage"
	.align 8
	.type	__PRETTY_FUNCTION__.28, @object
	.size	__PRETTY_FUNCTION__.28, 9
__PRETTY_FUNCTION__.28:
	.string	"typedecl"
	.align 8
	.type	__PRETTY_FUNCTION__.27, @object
	.size	__PRETTY_FUNCTION__.27, 9
__PRETTY_FUNCTION__.27:
	.string	"typelist"
	.align 8
	.type	__PRETTY_FUNCTION__.26, @object
	.size	__PRETTY_FUNCTION__.26, 9
__PRETTY_FUNCTION__.26:
	.string	"variable"
	.align 8
	.type	__PRETTY_FUNCTION__.25, @object
	.size	__PRETTY_FUNCTION__.25, 8
__PRETTY_FUNCTION__.25:
	.string	"varlist"
	.align 8
	.type	__PRETTY_FUNCTION__.24, @object
	.size	__PRETTY_FUNCTION__.24, 9
__PRETTY_FUNCTION__.24:
	.string	"constant"
	.align 8
	.type	__PRETTY_FUNCTION__.23, @object
	.size	__PRETTY_FUNCTION__.23, 10
__PRETTY_FUNCTION__.23:
	.string	"constlist"
	.align 8
	.type	__PRETTY_FUNCTION__.22, @object
	.size	__PRETTY_FUNCTION__.22, 9
__PRETTY_FUNCTION__.22:
	.string	"function"
	.align 8
	.type	__PRETTY_FUNCTION__.21, @object
	.size	__PRETTY_FUNCTION__.21, 9
__PRETTY_FUNCTION__.21:
	.string	"proclist"
	.align 16
	.type	__PRETTY_FUNCTION__.20, @object
	.size	__PRETTY_FUNCTION__.20, 17
__PRETTY_FUNCTION__.20:
	.string	"assign_statement"
	.align 8
	.type	__PRETTY_FUNCTION__.19, @object
	.size	__PRETTY_FUNCTION__.19, 15
__PRETTY_FUNCTION__.19:
	.string	"call_statement"
	.align 16
	.type	__PRETTY_FUNCTION__.18, @object
	.size	__PRETTY_FUNCTION__.18, 17
__PRETTY_FUNCTION__.18:
	.string	"assert_statement"
	.align 16
	.type	__PRETTY_FUNCTION__.17, @object
	.size	__PRETTY_FUNCTION__.17, 18
__PRETTY_FUNCTION__.17:
	.string	"implies_statement"
	.align 8
	.type	__PRETTY_FUNCTION__.16, @object
	.size	__PRETTY_FUNCTION__.16, 13
__PRETTY_FUNCTION__.16:
	.string	"do_statement"
	.align 16
	.type	__PRETTY_FUNCTION__.15, @object
	.size	__PRETTY_FUNCTION__.15, 16
__PRETTY_FUNCTION__.15:
	.string	"while_statement"
	.align 8
	.type	__PRETTY_FUNCTION__.14, @object
	.size	__PRETTY_FUNCTION__.14, 13
__PRETTY_FUNCTION__.14:
	.string	"if_statement"
	.align 8
	.type	__PRETTY_FUNCTION__.13, @object
	.size	__PRETTY_FUNCTION__.13, 14
__PRETTY_FUNCTION__.13:
	.string	"for_statement"
	.align 8
	.type	__PRETTY_FUNCTION__.12, @object
	.size	__PRETTY_FUNCTION__.12, 10
__PRETTY_FUNCTION__.12:
	.string	"statement"
	.type	__PRETTY_FUNCTION__.11, @object
	.size	__PRETTY_FUNCTION__.11, 6
__PRETTY_FUNCTION__.11:
	.string	"block"
	.align 8
	.type	__PRETTY_FUNCTION__.10, @object
	.size	__PRETTY_FUNCTION__.10, 11
__PRETTY_FUNCTION__.10:
	.string	"importlist"
	.align 8
	.type	__PRETTY_FUNCTION__.9, @object
	.size	__PRETTY_FUNCTION__.9, 8
__PRETTY_FUNCTION__.9:
	.string	"program"
	.type	__PRETTY_FUNCTION__.8, @object
	.size	__PRETTY_FUNCTION__.8, 6
__PRETTY_FUNCTION__.8:
	.string	"parse"
	.align 8
	.type	__PRETTY_FUNCTION__.7, @object
	.size	__PRETTY_FUNCTION__.7, 11
__PRETTY_FUNCTION__.7:
	.string	"scope_find"
	.type	__PRETTY_FUNCTION__.6, @object
	.size	__PRETTY_FUNCTION__.6, 4
__PRETTY_FUNCTION__.6:
	.string	"fix"
	.type	__PRETTY_FUNCTION__.5, @object
	.size	__PRETTY_FUNCTION__.5, 5
__PRETTY_FUNCTION__.5:
	.string	"jump"
	.type	__PRETTY_FUNCTION__.4, @object
	.size	__PRETTY_FUNCTION__.4, 5
__PRETTY_FUNCTION__.4:
	.string	"code"
	.type	__PRETTY_FUNCTION__.3, @object
	.size	__PRETTY_FUNCTION__.3, 5
__PRETTY_FUNCTION__.3:
	.string	"save"
	.align 8
	.type	__PRETTY_FUNCTION__.2, @object
	.size	__PRETTY_FUNCTION__.2, 8
__PRETTY_FUNCTION__.2:
	.string	"compile"
	.align 8
	.type	__PRETTY_FUNCTION__.1, @object
	.size	__PRETTY_FUNCTION__.1, 13
__PRETTY_FUNCTION__.1:
	.string	"fopen_or_die"
	.local	c.0
	.comm	c.0,8389216,32
	.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	"425514.c"
	.text
	.section	.rodata
	.align	2
.LC0:
	.ascii	"the_stack_data/425514.c\000"
	.align	2
.LC1:
	.ascii	"c\000"
	.align	2
.LC2:
	.ascii	"fmt\000"
	.align	2
.LC3:
	.ascii	"%u: \000"
	.align	2
.LC4:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	warn, %function
warn:
	@ args = 4, pretend = 12, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{r1, r2, r3}
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #36
	str	r0, [fp, #-36]
	ldr	r3, [fp, #4]
	str	r3, [fp, #-40]
	ldr	r3, .L10
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	mov	r3,#0
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	bne	.L2
	ldr	r3, .L10+4
	mov	r2, #68
	ldr	r1, .L10+8
	ldr	r0, .L10+12
	bl	__assert_fail
.L2:
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	bne	.L3
	ldr	r3, .L10+4
	mov	r2, #69
	ldr	r1, .L10+8
	ldr	r0, .L10+16
	bl	__assert_fail
.L3:
	ldr	r3, [fp, #-36]
	add	r3, r3, #8388608
	mov	r2, r3
	mvn	r3, #0
	str	r3, [r2, #560]
	ldr	r3, [fp, #-36]
	add	r3, r3, #8388608
	ldr	r3, [r3, #36]
	cmp	r3, #0
	bne	.L4
	mvn	r3, #0
	b	.L8
.L4:
	ldr	r3, [fp, #-36]
	add	r3, r3, #8388608
	ldr	r0, [r3, #36]
	ldr	r3, [fp, #-36]
	add	r3, r3, #8388608
	ldr	r3, [r3, #16]
	mov	r2, r3
	ldr	r1, .L10+20
	bl	fprintf
	str	r0, [fp, #-24]
	add	r3, fp, #8
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-36]
	add	r3, r3, #8388608
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	vfprintf
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-36]
	add	r3, r3, #8388608
	ldr	r3, [r3, #36]
	mov	r1, r3
	mov	r0, #10
	bl	fputc
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	blt	.L6
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	blt	.L6
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bge	.L7
.L6:
	mvn	r3, #1
	b	.L8
.L7:
	mvn	r3, #0
.L8:
	ldr	r2, .L10
	ldr	r1, [r2]
	ldr	r2, [fp, #-12]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L9
	bl	__stack_chk_fail
.L9:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #12
	bx	lr
.L11:
	.align	2
.L10:
	.word	.LC4
	.word	__PRETTY_FUNCTION__.5501
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.size	warn, .-warn
	.section	.rodata
	.align	2
.LC5:
	.ascii	"allocation of size %ld failed\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	allocate, %function
allocate:
	@ 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]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L13
	mov	r3, #0
	b	.L14
.L13:
	mov	r1, #1
	ldr	r0, [fp, #-16]
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L15
	ldr	r3, .L16
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	ldr	r1, .L16+4
	mov	r0, r3
	bl	fprintf
	mov	r0, #1
	bl	exit
.L15:
	ldr	r3, [fp, #-8]
.L14:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L17:
	.align	2
.L16:
	.word	stderr
	.word	.LC5
	.size	allocate, .-allocate
	.section	.rodata
	.align	2
.LC6:
	.ascii	"s\000"
	.align	2
.LC7:
	.ascii	"string duplicate of '%s' failed\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	duplicate, %function
duplicate:
	@ 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]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L19
	ldr	r3, .L22
	mov	r2, #96
	ldr	r1, .L22+4
	ldr	r0, .L22+8
	bl	__assert_fail
.L19:
	ldr	r0, [fp, #-16]
	bl	strlen
	mov	r3, r0
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-12]
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L20
	ldr	r3, .L22+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	ldr	r1, .L22+16
	mov	r0, r3
	bl	fprintf
	mov	r0, #1
	bl	exit
.L20:
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-8]
	bl	memcpy
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L23:
	.align	2
.L22:
	.word	__PRETTY_FUNCTION__.5513
	.word	.LC0
	.word	.LC6
	.word	stderr
	.word	.LC7
	.size	duplicate, .-duplicate
	.section	.rodata
	.align	2
.LC8:
	.ascii	"unable to reallocate %p of size %ld\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	reallocate, %function
reallocate:
	@ 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	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L25
	ldr	r0, [fp, #-16]
	bl	free
	mov	r3, #0
	b	.L26
.L25:
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	realloc
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L27
	ldr	r3, .L28
	ldr	r0, [r3]
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-16]
	ldr	r1, .L28+4
	bl	fprintf
	mov	r0, #1
	bl	exit
.L27:
	ldr	r3, [fp, #-8]
.L26:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L29:
	.align	2
.L28:
	.word	stderr
	.word	.LC8
	.size	reallocate, .-reallocate
	.section	.rodata
	.align	2
.LC9:
	.ascii	"\000"
	.align	2
.LC10:
	.ascii	"int\000"
	.align	2
.LC11:
	.ascii	"str\000"
	.align	2
.LC12:
	.ascii	"id\000"
	.align	2
.LC13:
	.ascii	"(\000"
	.align	2
.LC14:
	.ascii	")\000"
	.align	2
.LC15:
	.ascii	"{\000"
	.align	2
.LC16:
	.ascii	"}\000"
	.align	2
.LC17:
	.ascii	"[\000"
	.align	2
.LC18:
	.ascii	"]\000"
	.align	2
.LC19:
	.ascii	":=\000"
	.align	2
.LC20:
	.ascii	";\000"
	.align	2
.LC21:
	.ascii	".\000"
	.align	2
.LC22:
	.ascii	":\000"
	.align	2
.LC23:
	.ascii	",\000"
	.align	2
.LC24:
	.ascii	"+\000"
	.align	2
.LC25:
	.ascii	"-\000"
	.align	2
.LC26:
	.ascii	"<<\000"
	.align	2
.LC27:
	.ascii	">>\000"
	.align	2
.LC28:
	.ascii	"*\000"
	.align	2
.LC29:
	.ascii	"/\000"
	.align	2
.LC30:
	.ascii	"=\000"
	.align	2
.LC31:
	.ascii	"#\000"
	.align	2
.LC32:
	.ascii	">\000"
	.align	2
.LC33:
	.ascii	">=\000"
	.align	2
.LC34:
	.ascii	"<\000"
	.align	2
.LC35:
	.ascii	"<=\000"
	.align	2
.LC36:
	.ascii	"&\000"
	.align	2
.LC37:
	.ascii	"|\000"
	.align	2
.LC38:
	.ascii	"^\000"
	.align	2
.LC39:
	.ascii	"~\000"
	.align	2
.LC40:
	.ascii	"EOI\000"
	.align	2
.LC41:
	.ascii	"if\000"
	.align	2
.LC42:
	.ascii	"else\000"
	.align	2
.LC43:
	.ascii	"do\000"
	.align	2
.LC44:
	.ascii	"while\000"
	.align	2
.LC45:
	.ascii	"procedure\000"
	.align	2
.LC46:
	.ascii	"for\000"
	.align	2
.LC47:
	.ascii	"var\000"
	.align	2
.LC48:
	.ascii	"const\000"
	.align	2
.LC49:
	.ascii	"break\000"
	.align	2
.LC50:
	.ascii	"continue\000"
	.align	2
.LC51:
	.ascii	"assert\000"
	.align	2
.LC52:
	.ascii	"implies\000"
	.align	2
.LC53:
	.ascii	"type\000"
	.align	2
.LC54:
	.ascii	"module\000"
	.align	2
.LC55:
	.ascii	"import\000"
	.align	2
.LC56:
	.ascii	"get\000"
	.align	2
.LC57:
	.ascii	"put\000"
	.align	2
.LC58:
	.ascii	"bytes\000"
	.align	2
.LC59:
	.ascii	"size\000"
	.align	2
.LC60:
	.ascii	"addr\000"
	.align	2
.LC61:
	.ascii	"trap\000"
	.align	2
.LC62:
	.ascii	"record\000"
	.align	2
.LC63:
	.ascii	"array\000"
	.align	2
.LC64:
	.ascii	"pointer\000"
	.align	2
.LC65:
	.ascii	"uint\000"
	.align	2
.LC66:
	.ascii	"byte\000"
	.align	2
.LC67:
	.ascii	"of\000"
	.align	2
.LC68:
	.ascii	"ord\000"
	.align	2
.LC69:
	.ascii	"to\000"
	.align	2
.LC70:
	.ascii	"by\000"
	.align	2
.LC71:
	.ascii	"nil\000"
	.align	2
.LC72:
	.ascii	"true\000"
	.align	2
.LC73:
	.ascii	"false\000"
	.data
	.align	2
	.type	keywords, %object
	.size	keywords, 264
keywords:
	.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
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.word	.LC26
	.word	.LC27
	.word	.LC28
	.word	.LC29
	.word	.LC30
	.word	.LC31
	.word	.LC32
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.word	.LC37
	.word	.LC38
	.word	.LC39
	.word	.LC40
	.word	.LC41
	.word	.LC42
	.word	.LC43
	.word	.LC44
	.word	.LC45
	.word	.LC46
	.word	.LC47
	.word	.LC48
	.word	.LC49
	.word	.LC50
	.word	.LC51
	.word	.LC52
	.word	.LC53
	.word	.LC54
	.word	.LC55
	.word	.LC56
	.word	.LC57
	.word	.LC58
	.word	.LC59
	.word	.LC60
	.word	.LC61
	.word	.LC62
	.word	.LC63
	.word	.LC64
	.word	.LC65
	.word	.LC10
	.word	.LC66
	.word	.LC67
	.word	.LC68
	.word	.LC69
	.word	.LC70
	.word	.LC71
	.word	.LC72
	.word	.LC73
	.section	.rodata
	.align	2
.LC74:
	.ascii	"base >= 2 && base <= 36\000"
	.align	2
.LC75:
	.ascii	"ch > 0 && ch < 256\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	digit, %function
digit:
	@ 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	r3, [fp, #-20]
	cmp	r3, #1
	ble	.L31
	ldr	r3, [fp, #-20]
	cmp	r3, #36
	ble	.L40
.L31:
	ldr	r3, .L42
	mov	r2, #144
	ldr	r1, .L42+4
	ldr	r0, .L42+8
	bl	__assert_fail
.L40:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	ble	.L33
	ldr	r3, [fp, #-16]
	cmp	r3, #255
	ble	.L41
.L33:
	ldr	r3, .L42
	mov	r2, #145
	ldr	r1, .L42+4
	ldr	r0, .L42+12
	bl	__assert_fail
.L41:
	mvn	r3, #0
	str	r3, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	tolower
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #47
	ble	.L35
	ldr	r3, [fp, #-16]
	cmp	r3, #57
	bgt	.L35
	ldr	r3, [fp, #-16]
	sub	r3, r3, #48
	str	r3, [fp, #-8]
.L35:
	ldr	r3, [fp, #-16]
	cmp	r3, #96
	ble	.L36
	ldr	r3, [fp, #-16]
	cmp	r3, #122
	bgt	.L36
	ldr	r3, [fp, #-16]
	sub	r3, r3, #87
	str	r3, [fp, #-8]
.L36:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	bge	.L37
	ldr	r3, [fp, #-8]
	b	.L39
.L37:
	mvn	r3, #0
.L39:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L43:
	.align	2
.L42:
	.word	__PRETTY_FUNCTION__.5593
	.word	.LC0
	.word	.LC74
	.word	.LC75
	.size	digit, .-digit
	.section	.rodata
	.align	2
.LC76:
	.ascii	"unexpected EOF\000"
	.align	2
.LC77:
	.ascii	"$ requires at least one hex digit\000"
	.align	2
.LC78:
	.ascii	"n >= 0\000"
	.align	2
.LC79:
	.ascii	"overflow\000"
	.align	2
.LC80:
	.ascii	"cannot encode NUL character in string\000"
	.align	2
.LC81:
	.ascii	"unknown escape character -- %c\000"
	.align	2
.LC82:
	.ascii	"identifier %s... too long (%d bytes)\000"
	.align	2
.LC83:
	.ascii	"invalid character -- %c\000"
	.align	2
.LC84:
	.ascii	"ungetc failed\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	lexer, %function
lexer:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #56
	str	r0, [fp, #-80]
	ldr	r3, [fp, #-80]
	cmp	r3, #0
	bne	.L45
	ldr	r3, .L132
	mov	r2, #156
	ldr	r1, .L132+4
	ldr	r0, .L132+8
	bl	__assert_fail
.L45:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #552]
	ldr	r2, [fp, #-80]
	add	r2, r2, #8388608
	str	r3, [r2, #556]
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #560]
	cmp	r3, #0
	beq	.L46
	mvn	r3, #0
	b	.L47
.L46:
	mov	r3, #0
	str	r3, [fp, #-76]
.L48:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	cmp	r3, #127
	ldrls	pc, [pc, r3, asl #2]
	b	.L49
.L51:
	.word	.L77
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L48
	.word	.L76
	.word	.L49
	.word	.L49
	.word	.L48
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L48
	.word	.L49
	.word	.L74
	.word	.L73
	.word	.L72
	.word	.L49
	.word	.L71
	.word	.L49
	.word	.L70
	.word	.L69
	.word	.L68
	.word	.L67
	.word	.L66
	.word	.L65
	.word	.L64
	.word	.L63
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L62
	.word	.L61
	.word	.L60
	.word	.L59
	.word	.L58
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L57
	.word	.L49
	.word	.L56
	.word	.L55
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L49
	.word	.L54
	.word	.L53
	.word	.L52
	.word	.L50
.L76:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #16]
	add	r3, r3, #1
	ldr	r2, [fp, #-80]
	add	r2, r2, #8388608
	str	r3, [r2, #16]
	b	.L48
.L62:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	ldr	r3, [fp, #-76]
	cmp	r3, #61
	bne	.L78
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #10
	str	r3, [r2, #552]
	b	.L79
.L78:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #13
	str	r3, [r2, #552]
	b	.L80
.L64:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #12
	str	r3, [r2, #552]
	b	.L79
.L77:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #31
	str	r3, [r2, #552]
	b	.L79
.L71:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #27
	str	r3, [r2, #552]
	b	.L79
.L53:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #28
	str	r3, [r2, #552]
	b	.L79
.L55:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #29
	str	r3, [r2, #552]
	b	.L79
.L50:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #30
	str	r3, [r2, #552]
	b	.L79
.L59:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #21
	str	r3, [r2, #552]
	b	.L79
.L73:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #22
	str	r3, [r2, #552]
	b	.L79
.L65:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #16
	str	r3, [r2, #552]
	b	.L79
.L67:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #15
	str	r3, [r2, #552]
	b	.L79
.L68:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #19
	str	r3, [r2, #552]
	b	.L79
.L63:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #20
	str	r3, [r2, #552]
	b	.L79
.L61:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #11
	str	r3, [r2, #552]
	b	.L79
.L66:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #14
	str	r3, [r2, #552]
	b	.L79
.L52:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #7
	str	r3, [r2, #552]
	b	.L79
.L54:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #6
	str	r3, [r2, #552]
	b	.L79
.L56:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #9
	str	r3, [r2, #552]
	b	.L79
.L57:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #8
	str	r3, [r2, #552]
	b	.L79
.L69:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #5
	str	r3, [r2, #552]
	b	.L79
.L70:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	ldr	r3, [fp, #-76]
	cmp	r3, #42
	bne	.L81
.L86:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	ldr	r3, [fp, #-76]
	cmp	r3, #0
	bge	.L82
	ldr	r1, .L132+12
	ldr	r0, [fp, #-80]
	bl	warn
	mov	r3, r0
	b	.L47
.L82:
	ldr	r3, [fp, #-76]
	cmp	r3, #10
	bne	.L83
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #16]
	add	r3, r3, #1
	ldr	r2, [fp, #-80]
	add	r2, r2, #8388608
	str	r3, [r2, #16]
.L83:
	ldr	r3, [fp, #-76]
	cmp	r3, #42
	bne	.L86
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	mov	r3, r0
	cmp	r3, #41
	beq	.L128
	b	.L86
.L128:
	nop
	b	.L48
.L81:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #4
	str	r3, [r2, #552]
	b	.L80
.L60:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	ldr	r3, [fp, #-76]
	cmp	r3, #60
	bne	.L87
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #17
	str	r3, [r2, #552]
	b	.L79
.L87:
	ldr	r3, [fp, #-76]
	cmp	r3, #61
	bne	.L88
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #26
	str	r3, [r2, #552]
	b	.L79
.L88:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #25
	str	r3, [r2, #552]
	b	.L80
.L58:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	ldr	r3, [fp, #-76]
	cmp	r3, #62
	bne	.L89
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #18
	str	r3, [r2, #552]
	b	.L79
.L89:
	ldr	r3, [fp, #-76]
	cmp	r3, #61
	bne	.L90
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #24
	str	r3, [r2, #552]
	b	.L79
.L90:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #24
	str	r3, [r2, #552]
	b	.L80
.L72:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #4096
	cmp	r3, #0
	bne	.L91
	ldr	r1, .L132+16
	ldr	r0, [fp, #-80]
	bl	warn
	mov	r3, r0
	b	.L47
.L91:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	add	r3, r3, #576
	mov	r1, r3
	mov	r2, #0
	mov	r3, #0
	stmdb	r1, {r2-r3}
.L94:
	mov	r1, #16
	ldr	r0, [fp, #-76]
	bl	digit
	str	r0, [fp, #-60]
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	bge	.L92
	ldr	r3, .L132
	mov	r2, #221
	ldr	r1, .L132+4
	ldr	r0, .L132+20
	bl	__assert_fail
.L92:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	add	r3, r3, #576
	ldmdb	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	lsl	r3, r1, #4
	orr	r3, r3, r0, lsr #28
	lsl	r2, r0, #4
	ldr	r1, [fp, #-60]
	mov	r0, r1
	asr	r1, r0, #31
	adds	r4, r2, r0
	adc	r5, r3, r1
	str	r4, [fp, #-44]
	str	r5, [fp, #-40]
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	add	r3, r3, #576
	ldmdb	r3, {r2-r3}
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bcs	.L93
	ldr	r1, .L132+24
	ldr	r0, [fp, #-80]
	bl	warn
	mov	r3, r0
	b	.L47
.L93:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	add	r3, r3, #576
	mov	r1, r3
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	stmdb	r1, {r2-r3}
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #4096
	cmp	r3, #0
	bne	.L94
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #1
	str	r3, [r2, #552]
	b	.L80
.L74:
	ldr	r3, .L132+28
	str	r3, [fp, #-56]
	mov	r3, #0
	str	r3, [fp, #-72]
	mov	r3, #0
	str	r3, [fp, #-72]
	b	.L95
.L112:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	ldr	r3, [fp, #-76]
	cmp	r3, #34
	beq	.L129
	ldr	r3, [fp, #-76]
	cmn	r3, #1
	bne	.L98
	ldr	r1, .L132+12
	ldr	r0, [fp, #-80]
	bl	warn
	mov	r3, r0
	b	.L47
.L98:
	ldr	r3, [fp, #-76]
	cmp	r3, #92
	bne	.L130
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	ldr	r3, [fp, #-76]
	cmn	r3, #1
	bne	.L100
	ldr	r1, .L132+12
	ldr	r0, [fp, #-80]
	bl	warn
	mov	r3, r0
	b	.L47
.L100:
	ldr	r3, [fp, #-76]
	cmp	r3, #116
	bgt	.L101
	ldr	r3, [fp, #-76]
	cmp	r3, #92
	bge	.L102
	ldr	r3, [fp, #-76]
	cmp	r3, #0
	beq	.L103
	ldr	r3, [fp, #-76]
	cmp	r3, #34
	beq	.L104
	b	.L101
.L102:
	ldr	r3, [fp, #-76]
	sub	r3, r3, #92
	cmp	r3, #24
	ldrls	pc, [pc, r3, asl #2]
	b	.L101
.L106:
	.word	.L111
	.word	.L101
	.word	.L101
	.word	.L101
	.word	.L101
	.word	.L110
	.word	.L101
	.word	.L101
	.word	.L101
	.word	.L109
	.word	.L101
	.word	.L101
	.word	.L101
	.word	.L101
	.word	.L101
	.word	.L101
	.word	.L101
	.word	.L101
	.word	.L108
	.word	.L101
	.word	.L101
	.word	.L101
	.word	.L107
	.word	.L101
	.word	.L105
.L109:
	mov	r3, #27
	str	r3, [fp, #-76]
	b	.L99
.L110:
	mov	r3, #7
	str	r3, [fp, #-76]
	b	.L99
.L105:
	mov	r3, #9
	str	r3, [fp, #-76]
	b	.L99
.L108:
	mov	r3, #10
	str	r3, [fp, #-76]
	b	.L99
.L107:
	mov	r3, #13
	str	r3, [fp, #-76]
	b	.L99
.L104:
	mov	r3, #34
	str	r3, [fp, #-76]
	b	.L99
.L111:
	mov	r3, #92
	str	r3, [fp, #-76]
	b	.L99
.L103:
	ldr	r1, .L132+32
	ldr	r0, [fp, #-80]
	bl	warn
	mov	r3, r0
	b	.L47
.L101:
	ldr	r2, [fp, #-76]
	ldr	r1, .L132+36
	ldr	r0, [fp, #-80]
	bl	warn
	mov	r3, r0
	b	.L47
.L130:
	nop
.L99:
	ldr	r3, [fp, #-76]
	and	r1, r3, #255
	ldr	r2, [fp, #-80]
	ldr	r3, [fp, #-72]
	add	r3, r2, r3
	add	r3, r3, #8388608
	add	r3, r3, #40
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-72]
	add	r3, r3, #1
	str	r3, [fp, #-72]
.L95:
	ldr	r2, [fp, #-72]
	ldr	r3, [fp, #-56]
	cmp	r2, r3
	bcc	.L112
	b	.L97
.L129:
	nop
.L97:
	ldr	r2, [fp, #-72]
	ldr	r3, [fp, #-56]
	cmp	r2, r3
	bcc	.L113
	ldr	r3, [fp, #-80]
	add	r2, r3, #8388608
	add	r2, r2, #40
	ldr	r3, [fp, #-72]
	ldr	r1, .L132+40
	ldr	r0, [fp, #-80]
	bl	warn
	mov	r3, r0
	b	.L47
.L113:
	ldr	r2, [fp, #-80]
	ldr	r3, [fp, #-72]
	add	r3, r2, r3
	add	r3, r3, #8388608
	add	r3, r3, #40
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #2
	str	r3, [r2, #552]
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #564]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	add	r3, r3, #40
	mov	r0, r3
	bl	duplicate
	mov	r2, r0
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	str	r2, [r3, #564]
	b	.L79
.L49:
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #8
	cmp	r3, #0
	bne	.L114
	ldr	r2, [fp, #-76]
	ldr	r1, .L132+44
	ldr	r0, [fp, #-80]
	bl	warn
	mov	r3, r0
	b	.L47
.L114:
	ldr	r3, [fp, #-76]
	cmp	r3, #47
	ble	.L115
	ldr	r3, [fp, #-76]
	cmp	r3, #57
	bgt	.L115
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	add	r3, r3, #576
	mov	r1, r3
	mov	r2, #0
	mov	r3, #0
	stmdb	r1, {r2-r3}
.L117:
	mov	r1, #10
	ldr	r0, [fp, #-76]
	bl	digit
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	bge	.L116
	ldr	r3, .L132
	ldr	r2, .L132+48
	ldr	r1, .L132+4
	ldr	r0, .L132+20
	bl	__assert_fail
.L116:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	add	r3, r3, #576
	ldmdb	r3, {r4-r5}
	mov	r2, r4
	mov	r3, r5
	mov	r0, #0
	mov	r1, #0
	lsl	r1, r3, #2
	orr	r1, r1, r2, lsr #30
	lsl	r0, r2, #2
	mov	r2, r0
	mov	r3, r1
	adds	r2, r2, r4
	adc	r3, r3, r5
	adds	r8, r2, r2
	adc	r9, r3, r3
	mov	r2, r8
	mov	r3, r9
	mov	r0, r2
	mov	r1, r3
	ldr	r3, [fp, #-52]
	mov	r2, r3
	asr	r3, r2, #31
	adds	r6, r0, r2
	adc	r7, r1, r3
	str	r6, [fp, #-36]
	str	r7, [fp, #-32]
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	add	r3, r3, #576
	mov	r1, r3
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	stmdb	r1, {r2-r3}
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #2048
	cmp	r3, #0
	bne	.L117
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #1
	str	r3, [r2, #552]
	b	.L80
.L115:
	ldr	r3, .L132+28
	str	r3, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-68]
	mov	r3, #0
	str	r3, [fp, #-68]
	b	.L118
.L121:
	ldr	r3, [fp, #-76]
	and	r1, r3, #255
	ldr	r2, [fp, #-80]
	ldr	r3, [fp, #-68]
	add	r3, r2, r3
	add	r3, r3, #8388608
	add	r3, r3, #40
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fgetc
	str	r0, [fp, #-76]
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #8
	cmp	r3, #0
	beq	.L131
	ldr	r3, [fp, #-68]
	add	r3, r3, #1
	str	r3, [fp, #-68]
.L118:
	ldr	r2, [fp, #-68]
	ldr	r3, [fp, #-48]
	cmp	r2, r3
	bcc	.L121
	b	.L120
.L131:
	nop
.L120:
	ldr	r2, [fp, #-68]
	ldr	r3, [fp, #-48]
	cmp	r2, r3
	bcc	.L122
	ldr	r3, [fp, #-80]
	add	r2, r3, #8388608
	add	r2, r2, #40
	ldr	r3, [fp, #-68]
	ldr	r1, .L132+40
	ldr	r0, [fp, #-80]
	bl	warn
	mov	r3, r0
	b	.L47
.L122:
	ldr	r3, [fp, #-68]
	add	r3, r3, #1
	ldr	r2, [fp, #-80]
	add	r3, r2, r3
	add	r3, r3, #8388608
	add	r3, r3, #40
	mov	r2, #0
	strb	r2, [r3]
	mov	r3, #32
	str	r3, [fp, #-64]
	b	.L123
.L125:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	add	r3, r3, #40
	ldr	r1, .L132+52
	ldr	r2, [fp, #-64]
	ldr	r2, [r1, r2, lsl #2]
	mov	r1, r2
	mov	r0, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L124
	ldr	r3, [fp, #-64]
	ldr	r2, [fp, #-80]
	add	r2, r2, #8388608
	str	r3, [r2, #552]
	b	.L80
.L124:
	ldr	r3, [fp, #-64]
	add	r3, r3, #1
	str	r3, [fp, #-64]
.L123:
	ldr	r3, [fp, #-64]
	cmp	r3, #65
	bls	.L125
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #3
	str	r3, [r2, #552]
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #564]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	add	r3, r3, #40
	mov	r0, r3
	bl	duplicate
	mov	r2, r0
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	str	r2, [r3, #564]
	b	.L80
.L79:
	mov	r3, #0
	b	.L47
.L80:
	ldr	r3, [fp, #-80]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r1, r3
	ldr	r0, [fp, #-76]
	bl	ungetc
	mov	r3, r0
	cmp	r3, #0
	bge	.L126
	ldr	r1, .L132+56
	ldr	r0, [fp, #-80]
	bl	warn
	mov	r3, r0
	b	.L47
.L126:
	mov	r3, #0
.L47:
	mov	r0, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L133:
	.align	2
.L132:
	.word	__PRETTY_FUNCTION__.5598
	.word	.LC0
	.word	.LC1
	.word	.LC76
	.word	.LC77
	.word	.LC78
	.word	.LC79
	.word	511
	.word	.LC80
	.word	.LC81
	.word	.LC82
	.word	.LC83
	.word	273
	.word	keywords
	.word	.LC84
	.size	lexer, .-lexer
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	accept, %function
accept:
	@ 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, [fp, #-8]
	cmp	r3, #0
	bne	.L135
	ldr	r3, .L139
	ldr	r2, .L139+4
	ldr	r1, .L139+8
	ldr	r0, .L139+12
	bl	__assert_fail
.L135:
	ldr	r3, [fp, #-8]
	add	r3, r3, #8388608
	ldr	r3, [r3, #552]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bne	.L136
	ldr	r3, [fp, #-12]
	cmp	r3, #31
	beq	.L137
	ldr	r0, [fp, #-8]
	bl	lexer
	mov	r3, r0
	cmp	r3, #0
	bge	.L137
	mvn	r3, #0
	b	.L138
.L137:
	mov	r3, #1
	b	.L138
.L136:
	ldr	r3, [fp, #-8]
	add	r3, r3, #8388608
	ldr	r3, [r3, #560]
.L138:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L140:
	.align	2
.L139:
	.word	__PRETTY_FUNCTION__.5671
	.word	311
	.word	.LC0
	.word	.LC1
	.size	accept, .-accept
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	peek, %function
peek:
	@ 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, [fp, #-8]
	cmp	r3, #0
	bne	.L142
	ldr	r3, .L145
	ldr	r2, .L145+4
	ldr	r1, .L145+8
	ldr	r0, .L145+12
	bl	__assert_fail
.L142:
	ldr	r3, [fp, #-8]
	add	r3, r3, #8388608
	ldr	r3, [r3, #552]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bne	.L143
	mov	r3, #1
	b	.L144
.L143:
	ldr	r3, [fp, #-8]
	add	r3, r3, #8388608
	ldr	r3, [r3, #560]
.L144:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L146:
	.align	2
.L145:
	.word	__PRETTY_FUNCTION__.5676
	.word	322
	.word	.LC0
	.word	.LC1
	.size	peek, .-peek
	.section	.rodata
	.align	2
.LC85:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	any, %function
any:
	@ args = 4, pretend = 16, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{r0, r1, r2, r3}
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	ldr	r3, [fp, #4]
	str	r3, [fp, #-24]
	ldr	r3, .L155
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L148
	ldr	r3, .L155+4
	ldr	r2, .L155+8
	ldr	r1, .L155+12
	ldr	r0, .L155+16
	bl	__assert_fail
.L148:
	mov	r3, #0
	str	r3, [fp, #-16]
	add	r3, fp, #8
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L149
.L151:
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-24]
	bl	accept
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L154
.L149:
	ldr	r3, [fp, #-20]
	add	r2, r3, #4
	str	r2, [fp, #-20]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L151
	b	.L150
.L154:
	nop
.L150:
	ldr	r3, [fp, #-16]
	ldr	r2, .L155
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L153
	bl	__stack_chk_fail
.L153:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
.L156:
	.align	2
.L155:
	.word	.LC85
	.word	__PRETTY_FUNCTION__.5680
	.word	329
	.word	.LC0
	.word	.LC1
	.size	any, .-any
	.section	.rodata
	.align	2
.LC86:
	.ascii	"program\000"
	.align	2
.LC87:
	.ascii	"block\000"
	.align	2
.LC88:
	.ascii	"statement\000"
	.align	2
.LC89:
	.ascii	"typelist\000"
	.align	2
.LC90:
	.ascii	"constlist\000"
	.align	2
.LC91:
	.ascii	"varlist\000"
	.align	2
.LC92:
	.ascii	"proclist\000"
	.align	2
.LC93:
	.ascii	"condition\000"
	.align	2
.LC94:
	.ascii	"list\000"
	.align	2
.LC95:
	.ascii	"expression\000"
	.align	2
.LC96:
	.ascii	"unary\000"
	.align	2
.LC97:
	.ascii	"term\000"
	.align	2
.LC98:
	.ascii	"factor\000"
	.align	2
.LC99:
	.ascii	"identifier\000"
	.align	2
.LC100:
	.ascii	"number\000"
	.align	2
.LC101:
	.ascii	"string\000"
	.align	2
.LC102:
	.ascii	"typedecl\000"
	.align	2
.LC103:
	.ascii	"typeusage\000"
	.align	2
.LC104:
	.ascii	"importlist\000"
	.align	2
.LC105:
	.ascii	"if-statement\000"
	.align	2
.LC106:
	.ascii	"while-statement\000"
	.align	2
.LC107:
	.ascii	"do-statement\000"
	.align	2
.LC108:
	.ascii	"for-statement\000"
	.align	2
.LC109:
	.ascii	"assert-statement\000"
	.align	2
.LC110:
	.ascii	"implies-statement\000"
	.align	2
.LC111:
	.ascii	"assign-statement\000"
	.align	2
.LC112:
	.ascii	"call-statement\000"
	.align	2
.LC113:
	.ascii	"designator\000"
	.align	2
.LC114:
	.ascii	"exprlist\000"
	.align	2
.LC115:
	.ascii	"qualident\000"
	.align	2
.LC116:
	.ascii	"selector\000"
	.align	2
.LC117:
	.ascii	"array-type\000"
	.align	2
.LC118:
	.ascii	"record-type\000"
	.align	2
.LC119:
	.ascii	"pointer-type\000"
	.align	2
.LC120:
	.ascii	"procedure-type\000"
	.align	2
.LC121:
	.ascii	"field\000"
	.align	2
.LC122:
	.ascii	"const-expression\000"
	.data
	.align	2
	.type	rules, %object
	.size	rules, 164
rules:
	.word	.LC86
	.word	.LC87
	.word	.LC88
	.word	.LC89
	.word	.LC90
	.word	.LC91
	.word	.LC92
	.word	.LC48
	.word	.LC47
	.word	.LC45
	.word	.LC93
	.word	.LC94
	.word	.LC93
	.word	.LC95
	.word	.LC96
	.word	.LC97
	.word	.LC98
	.word	.LC99
	.word	.LC100
	.word	.LC101
	.word	.LC102
	.word	.LC103
	.word	.LC104
	.word	.LC105
	.word	.LC106
	.word	.LC107
	.word	.LC108
	.word	.LC109
	.word	.LC110
	.word	.LC111
	.word	.LC112
	.word	.LC113
	.word	.LC114
	.word	.LC115
	.word	.LC116
	.word	.LC117
	.word	.LC118
	.word	.LC119
	.word	.LC120
	.word	.LC121
	.word	.LC122
	.section	.rodata
	.align	2
.LC123:
	.ascii	"syntax error in '%s' -- expected '%s' and got '%s'\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	expect, %function
expect:
	@ args = 0, pretend = 0, frame = 16
	@ 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]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L158
	ldr	r3, .L161
	mov	r2, #360
	ldr	r1, .L161+4
	ldr	r0, .L161+8
	bl	__assert_fail
.L158:
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	accept
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L159
	ldr	r3, [fp, #-8]
	b	.L160
.L159:
	ldr	r3, [fp, #-16]
	add	r3, r3, #8388608
	ldr	r3, [r3, #24]
	ldr	r3, [r3]
	ldr	r2, .L161+12
	ldr	r2, [r2, r3, lsl #2]
	ldr	r1, .L161+16
	ldr	r3, [fp, #-20]
	ldr	r1, [r1, r3, lsl #2]
	ldr	r3, [fp, #-16]
	add	r3, r3, #8388608
	ldr	r3, [r3, #552]
	ldr	r0, .L161+16
	ldr	r3, [r0, r3, lsl #2]
	str	r3, [sp]
	mov	r3, r1
	ldr	r1, .L161+20
	ldr	r0, [fp, #-16]
	bl	warn
	mov	r3, r0
.L160:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L162:
	.align	2
.L161:
	.word	__PRETTY_FUNCTION__.5734
	.word	.LC0
	.word	.LC1
	.word	rules
	.word	keywords
	.word	.LC123
	.size	expect, .-expect
	.section	.rodata
	.align	2
.LC124:
	.ascii	"a\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	use, %function
use:
	@ 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, [fp, #-8]
	cmp	r3, #0
	bne	.L164
	ldr	r3, .L167
	ldr	r2, .L167+4
	ldr	r1, .L167+8
	ldr	r0, .L167+12
	bl	__assert_fail
.L164:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L165
	ldr	r3, .L167
	mov	r2, #372
	ldr	r1, .L167+8
	ldr	r0, .L167+16
	bl	__assert_fail
.L165:
	ldr	r3, [fp, #-8]
	add	r3, r3, #8388608
	ldr	r2, [r3, #556]
	ldr	r3, [fp, #-12]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	add	r3, r3, #8388608
	ldr	r2, [r3, #564]
	ldr	r3, [fp, #-12]
	str	r2, [r3, #64]
	ldr	r3, [fp, #-8]
	add	r3, r3, #8388608
	add	r3, r3, #576
	ldmdb	r3, {r2-r3}
	ldr	r1, [fp, #-12]
	str	r2, [r1, #56]
	str	r3, [r1, #60]
	ldr	r3, [fp, #-8]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #564]
	ldr	r3, [fp, #-8]
	add	r3, r3, #8388608
	ldr	r3, [r3, #560]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L168:
	.align	2
.L167:
	.word	__PRETTY_FUNCTION__.5740
	.word	371
	.word	.LC0
	.word	.LC1
	.word	.LC124
	.size	use, .-use
	.section	.rodata
	.align	2
.LC125:
	.ascii	"ret\000"
	.align	2
.LC126:
	.ascii	"*ret == NULL\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	ast_new, %function
ast_new:
	@ 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]
	cmp	r3, #0
	bne	.L170
	ldr	r3, .L174
	ldr	r2, .L174+4
	ldr	r1, .L174+8
	ldr	r0, .L174+12
	bl	__assert_fail
.L170:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L171
	ldr	r3, .L174
	ldr	r2, .L174+16
	ldr	r1, .L174+8
	ldr	r0, .L174+20
	bl	__assert_fail
.L171:
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L172
	ldr	r3, .L174
	ldr	r2, .L174+24
	ldr	r1, .L174+8
	ldr	r0, .L174+28
	bl	__assert_fail
.L172:
	mov	r0, #72
	bl	allocate
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	allocate
	mov	r2, r0
	ldr	r3, [fp, #-8]
	str	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-24]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-28]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-16]
	add	r3, r3, #8388608
	ldr	r3, [r3, #16]
	mov	r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-16]
	add	r3, r3, #8388608
	mov	r2, r3
	ldr	r3, [fp, #-8]
	str	r3, [r2, #24]
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L175:
	.align	2
.L174:
	.word	__PRETTY_FUNCTION__.5747
	.word	381
	.word	.LC0
	.word	.LC1
	.word	382
	.word	.LC125
	.word	383
	.word	.LC126
	.size	ast_new, .-ast_new
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	ast_free, %function
ast_free:
	@ 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]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L181
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L179
.L180:
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	ast_free
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L179:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	bcc	.L180
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #64]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #16]
	mov	r0, r3
	bl	free
	ldr	r0, [fp, #-16]
	bl	free
	b	.L176
.L181:
	nop
.L176:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	ast_free, .-ast_free
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	ast_grow, %function
ast_grow:
	@ 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	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L183
	ldr	r3, .L185
	ldr	r2, .L185+4
	ldr	r1, .L185+8
	ldr	r0, .L185+12
	bl	__assert_fail
.L183:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #12]
	add	r3, r3, #1
	lsl	r3, r3, #2
	mov	r1, r3
	mov	r0, r2
	bl	reallocate
	mov	r2, r0
	ldr	r3, [fp, #-8]
	str	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #12]
	add	r0, r3, #1
	ldr	r1, [fp, #-8]
	str	r0, [r1, #12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L186:
	.align	2
.L185:
	.word	__PRETTY_FUNCTION__.5759
	.word	406
	.word	.LC0
	.word	.LC124
	.size	ast_grow, .-ast_grow
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	indent, %function
indent:
	@ 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]
	cmp	r3, #0
	bne	.L188
	ldr	r3, .L194
	ldr	r2, .L194+4
	ldr	r1, .L194+8
	ldr	r0, .L194+12
	bl	__assert_fail
.L188:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L189
	ldr	r3, .L194
	ldr	r2, .L194+16
	ldr	r1, .L194+8
	ldr	r0, .L194+20
	bl	__assert_fail
.L189:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L190
.L193:
	ldr	r3, [fp, #-16]
	add	r3, r3, #8388608
	ldr	r3, [r3, #36]
	mov	r1, r3
	ldr	r0, [fp, #-20]
	bl	fputs
	mov	r3, r0
	cmp	r3, #0
	bge	.L191
	mvn	r3, #0
	b	.L192
.L191:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L190:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bcc	.L193
	mov	r3, #0
.L192:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L195:
	.align	2
.L194:
	.word	__PRETTY_FUNCTION__.5765
	.word	413
	.word	.LC0
	.word	.LC1
	.word	414
	.word	.LC6
	.size	indent, .-indent
	.section	.rodata
	.align	2
.LC127:
	.ascii	" \000"
	.align	2
.LC128:
	.ascii	"%s %s %s %ld\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	ast_print, %function
ast_print:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #36
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L197
	ldr	r3, .L206
	ldr	r2, .L206+4
	ldr	r1, .L206+8
	ldr	r0, .L206+12
	bl	__assert_fail
.L197:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L198
	mov	r3, #0
	b	.L199
.L198:
	ldr	r2, [fp, #-32]
	ldr	r1, .L206+16
	ldr	r0, [fp, #-24]
	bl	indent
	mov	r3, r0
	cmp	r3, #0
	bge	.L200
	mvn	r3, #0
	b	.L199
.L200:
	ldr	r3, [fp, #-24]
	add	r3, r3, #8388608
	ldr	ip, [r3, #36]
	ldr	r3, [fp, #-28]
	ldr	r3, [r3]
	ldr	r2, .L206+20
	ldr	lr, [r2, r3, lsl #2]
	ldr	r3, [fp, #-28]
	ldr	r3, [r3, #4]
	ldr	r2, .L206+24
	ldr	r4, [r2, r3, lsl #2]
	ldr	r3, [fp, #-28]
	ldr	r3, [r3, #64]
	cmp	r3, #0
	beq	.L201
	ldr	r3, [fp, #-28]
	ldr	r3, [r3, #64]
	b	.L202
.L201:
	ldr	r3, .L206+28
.L202:
	ldr	r2, [fp, #-28]
	add	r1, r2, #56
	ldmia	r1, {r0-r1}
	mov	r2, r0
	str	r2, [sp, #4]
	str	r3, [sp]
	mov	r3, r4
	mov	r2, lr
	ldr	r1, .L206+32
	mov	r0, ip
	bl	fprintf
	mov	r3, r0
	cmp	r3, #0
	bge	.L203
	mvn	r3, #0
	b	.L199
.L203:
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L204
.L205:
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r1, [r3]
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	mov	r2, r3
	ldr	r0, [fp, #-24]
	bl	ast_print
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L204:
	ldr	r3, [fp, #-28]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	bcc	.L205
	mvn	r3, #0
.L199:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L207:
	.align	2
.L206:
	.word	__PRETTY_FUNCTION__.5775
	.word	422
	.word	.LC0
	.word	.LC1
	.word	.LC127
	.word	rules
	.word	keywords
	.word	.LC9
	.word	.LC128
	.size	ast_print, .-ast_print
	.section	.rodata
	.align	2
.LC129:
	.ascii	"r\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	unary_expression, %function
unary_expression:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L209
	ldr	r3, .L215
	ldr	r2, .L215+4
	ldr	r1, .L215+8
	ldr	r0, .L215+12
	bl	__assert_fail
.L209:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L210
	ldr	r3, .L215
	ldr	r2, .L215+16
	ldr	r1, .L215+8
	ldr	r0, .L215+20
	bl	__assert_fail
.L210:
	mov	r3, #2
	mov	r2, #14
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r1, #16
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L211
	ldr	r3, [fp, #-16]
	add	r3, r3, #8388608
	ldr	r2, [r3, #556]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	b	.L212
.L211:
	mov	r1, #15
	ldr	r0, [fp, #-16]
	bl	accept
.L212:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	term
	mov	r3, r0
	cmp	r3, #0
	bge	.L213
	mvn	r3, #0
	b	.L214
.L213:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	expression
	mov	r3, r0
.L214:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L216:
	.align	2
.L215:
	.word	__PRETTY_FUNCTION__.5790
	.word	438
	.word	.LC0
	.word	.LC1
	.word	439
	.word	.LC129
	.size	unary_expression, .-unary_expression
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	constexpr, %function
constexpr:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L218
	ldr	r3, .L221
	mov	r2, #452
	ldr	r1, .L221+4
	ldr	r0, .L221+8
	bl	__assert_fail
.L218:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L219
	ldr	r3, .L221
	ldr	r2, .L221+12
	ldr	r1, .L221+4
	ldr	r0, .L221+16
	bl	__assert_fail
.L219:
	mov	r3, #1
	mov	r2, #40
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	unary_expression
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L222:
	.align	2
.L221:
	.word	__PRETTY_FUNCTION__.5796
	.word	.LC0
	.word	.LC1
	.word	453
	.word	.LC129
	.size	constexpr, .-constexpr
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	identifier, %function
identifier:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L224
	ldr	r3, .L228
	ldr	r2, .L228+4
	ldr	r1, .L228+8
	ldr	r0, .L228+12
	bl	__assert_fail
.L224:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L225
	ldr	r3, .L228
	mov	r2, #460
	ldr	r1, .L228+8
	ldr	r0, .L228+16
	bl	__assert_fail
.L225:
	mov	r3, #0
	mov	r2, #17
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r1, #3
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L226
	mvn	r3, #0
	b	.L227
.L226:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	use
	mov	r3, r0
.L227:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L229:
	.align	2
.L228:
	.word	__PRETTY_FUNCTION__.5802
	.word	459
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.size	identifier, .-identifier
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	number, %function
number:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L231
	ldr	r3, .L235
	mov	r2, #468
	ldr	r1, .L235+4
	ldr	r0, .L235+8
	bl	__assert_fail
.L231:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L232
	ldr	r3, .L235
	ldr	r2, .L235+12
	ldr	r1, .L235+4
	ldr	r0, .L235+16
	bl	__assert_fail
.L232:
	mov	r3, #0
	mov	r2, #18
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r1, #1
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L233
	mvn	r3, #0
	b	.L234
.L233:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	use
	mov	r3, r0
.L234:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L236:
	.align	2
.L235:
	.word	__PRETTY_FUNCTION__.5808
	.word	.LC0
	.word	.LC1
	.word	469
	.word	.LC129
	.size	number, .-number
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	string, %function
string:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L238
	ldr	r3, .L242
	ldr	r2, .L242+4
	ldr	r1, .L242+8
	ldr	r0, .L242+12
	bl	__assert_fail
.L238:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L239
	ldr	r3, .L242
	ldr	r2, .L242+16
	ldr	r1, .L242+8
	ldr	r0, .L242+20
	bl	__assert_fail
.L239:
	mov	r3, #0
	mov	r2, #19
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r1, #2
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L240
	mvn	r3, #0
	b	.L241
.L240:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	use
	mov	r3, r0
.L241:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L243:
	.align	2
.L242:
	.word	__PRETTY_FUNCTION__.5814
	.word	477
	.word	.LC0
	.word	.LC1
	.word	478
	.word	.LC129
	.size	string, .-string
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	exprlist, %function
exprlist:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L245
	ldr	r3, .L252
	ldr	r2, .L252+4
	ldr	r1, .L252+8
	ldr	r0, .L252+12
	bl	__assert_fail
.L245:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L246
	ldr	r3, .L252
	ldr	r2, .L252+16
	ldr	r1, .L252+8
	ldr	r0, .L252+20
	bl	__assert_fail
.L246:
	mov	r3, #1
	mov	r2, #32
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	unary_expression
	mov	r3, r0
	cmp	r3, #0
	bge	.L247
	mvn	r3, #0
	b	.L248
.L247:
	mov	r3, #1
	str	r3, [fp, #-12]
	b	.L249
.L251:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	unary_expression
	mov	r3, r0
	cmp	r3, #0
	bge	.L250
	mvn	r3, #0
	b	.L248
.L250:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L249:
	mov	r1, #14
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L251
	mov	r3, #0
.L248:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L253:
	.align	2
.L252:
	.word	__PRETTY_FUNCTION__.5820
	.word	486
	.word	.LC0
	.word	.LC1
	.word	487
	.word	.LC129
	.size	exprlist, .-exprlist
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	qualident, %function
qualident:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L255
	ldr	r3, .L260
	mov	r2, #500
	ldr	r1, .L260+4
	ldr	r0, .L260+8
	bl	__assert_fail
.L255:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L256
	ldr	r3, .L260
	ldr	r2, .L260+12
	ldr	r1, .L260+4
	ldr	r0, .L260+16
	bl	__assert_fail
.L256:
	mov	r3, #1
	mov	r2, #33
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	identifier
	mov	r3, r0
	cmp	r3, #0
	bge	.L257
	mvn	r3, #0
	b	.L258
.L257:
	mov	r1, #12
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L259
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	identifier
	mov	r3, r0
	cmp	r3, #0
	bge	.L259
	mvn	r3, #0
	b	.L258
.L259:
	mov	r3, #0
.L258:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L261:
	.align	2
.L260:
	.word	__PRETTY_FUNCTION__.5830
	.word	.LC0
	.word	.LC1
	.word	501
	.word	.LC129
	.size	qualident, .-qualident
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	selector, %function
selector:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L263
	ldr	r3, .L270
	ldr	r2, .L270+4
	ldr	r1, .L270+8
	ldr	r0, .L270+12
	bl	__assert_fail
.L263:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L264
	ldr	r3, .L270
	ldr	r2, .L270+16
	ldr	r1, .L270+8
	ldr	r0, .L270+20
	bl	__assert_fail
.L264:
	mov	r3, #0
	mov	r2, #34
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L265
.L269:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	exprlist
	mov	r3, r0
	cmp	r3, #0
	bge	.L266
	mvn	r3, #0
	b	.L267
.L266:
	mov	r1, #9
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L268
	mvn	r3, #0
	b	.L267
.L268:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L265:
	mov	r1, #8
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L269
	mov	r3, #0
.L267:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L271:
	.align	2
.L270:
	.word	__PRETTY_FUNCTION__.5836
	.word	514
	.word	.LC0
	.word	.LC1
	.word	515
	.word	.LC129
	.size	selector, .-selector
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	designator, %function
designator:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L273
	ldr	r3, .L277
	ldr	r2, .L277+4
	ldr	r1, .L277+8
	ldr	r0, .L277+12
	bl	__assert_fail
.L273:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L274
	ldr	r3, .L277
	ldr	r2, .L277+16
	ldr	r1, .L277+8
	ldr	r0, .L277+20
	bl	__assert_fail
.L274:
	mov	r3, #2
	mov	r2, #31
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	qualident
	mov	r3, r0
	cmp	r3, #0
	bge	.L275
	mvn	r3, #0
	b	.L276
.L275:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	selector
	mov	r3, r0
.L276:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L278:
	.align	2
.L277:
	.word	__PRETTY_FUNCTION__.5846
	.word	529
	.word	.LC0
	.word	.LC1
	.word	530
	.word	.LC129
	.size	designator, .-designator
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	factor, %function
factor:
	@ args = 0, pretend = 0, frame = 16
	@ 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]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L280
	ldr	r3, .L292
	ldr	r2, .L292+4
	ldr	r1, .L292+8
	ldr	r0, .L292+12
	bl	__assert_fail
.L280:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L281
	ldr	r3, .L292
	ldr	r2, .L292+16
	ldr	r1, .L292+8
	ldr	r0, .L292+20
	bl	__assert_fail
.L281:
	mov	r3, #1
	mov	r2, #16
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r3, #0
	str	r3, [sp]
	mov	r3, #65
	mov	r2, #64
	mov	r1, #63
	ldr	r0, [fp, #-16]
	bl	any
	mov	r3, r0
	cmp	r3, #0
	beq	.L282
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	use
	mov	r3, r0
	b	.L283
.L282:
	mov	r1, #1
	ldr	r0, [fp, #-16]
	bl	peek
	mov	r3, r0
	cmp	r3, #0
	beq	.L284
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	number
	mov	r3, r0
	b	.L283
.L284:
	mov	r1, #2
	ldr	r0, [fp, #-16]
	bl	peek
	mov	r3, r0
	cmp	r3, #0
	beq	.L285
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	string
	mov	r3, r0
	b	.L283
.L285:
	mov	r1, #30
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L286
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	use
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	factor
	mov	r3, r0
	b	.L283
.L286:
	mov	r1, #4
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L287
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	unary_expression
	mov	r3, r0
	cmp	r3, #0
	bge	.L288
	mvn	r3, #0
	b	.L283
.L288:
	mov	r1, #5
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	b	.L283
.L287:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	designator
	mov	r3, r0
	cmp	r3, #0
	bge	.L289
	mvn	r3, #0
	b	.L283
.L289:
	mov	r1, #4
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L290
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	exprlist
	mov	r3, r0
	cmp	r3, #0
	bge	.L291
	mvn	r3, #0
	b	.L283
.L291:
	mov	r1, #5
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	b	.L283
.L290:
	mov	r3, #0
.L283:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L293:
	.align	2
.L292:
	.word	__PRETTY_FUNCTION__.5852
	.word	538
	.word	.LC0
	.word	.LC1
	.word	539
	.word	.LC129
	.size	factor, .-factor
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	term, %function
term:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L295
	ldr	r3, .L301
	ldr	r2, .L301+4
	ldr	r1, .L301+8
	ldr	r0, .L301+12
	bl	__assert_fail
.L295:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L296
	ldr	r3, .L301
	mov	r2, #568
	ldr	r1, .L301+8
	ldr	r0, .L301+16
	bl	__assert_fail
.L296:
	mov	r3, #2
	mov	r2, #15
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	factor
	mov	r3, r0
	cmp	r3, #0
	bge	.L297
	mvn	r3, #0
	b	.L298
.L297:
	mov	r1, #19
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L299
	mov	r1, #20
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L300
.L299:
	ldr	r3, [fp, #-16]
	add	r3, r3, #8388608
	ldr	r2, [r3, #556]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	factor
	mov	r3, r0
	b	.L298
.L300:
	mov	r3, #0
.L298:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L302:
	.align	2
.L301:
	.word	__PRETTY_FUNCTION__.5858
	.word	567
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.size	term, .-term
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	expression, %function
expression:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L304
	ldr	r3, .L308
	mov	r2, #580
	ldr	r1, .L308+4
	ldr	r0, .L308+8
	bl	__assert_fail
.L304:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L305
	ldr	r3, .L308
	ldr	r2, .L308+12
	ldr	r1, .L308+4
	ldr	r0, .L308+16
	bl	__assert_fail
.L305:
	mov	r3, #1
	mov	r2, #13
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r3, #0
	str	r3, [sp, #16]
	mov	r3, #18
	str	r3, [sp, #12]
	mov	r3, #17
	str	r3, [sp, #8]
	mov	r3, #29
	str	r3, [sp, #4]
	mov	r3, #28
	str	r3, [sp]
	mov	r3, #27
	mov	r2, #16
	mov	r1, #15
	ldr	r0, [fp, #-16]
	bl	any
	mov	r3, r0
	cmp	r3, #0
	beq	.L306
	ldr	r3, [fp, #-16]
	add	r3, r3, #8388608
	ldr	r2, [r3, #556]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	term
	mov	r3, r0
	b	.L307
.L306:
	mov	r3, #0
.L307:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L309:
	.align	2
.L308:
	.word	__PRETTY_FUNCTION__.5864
	.word	.LC0
	.word	.LC1
	.word	581
	.word	.LC129
	.size	expression, .-expression
	.section	.rodata
	.align	2
.LC130:
	.ascii	"expected conditional\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	condition, %function
condition:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L311
	ldr	r3, .L316
	ldr	r2, .L316+4
	ldr	r1, .L316+8
	ldr	r0, .L316+12
	bl	__assert_fail
.L311:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L312
	ldr	r3, .L316
	mov	r2, #592
	ldr	r1, .L316+8
	ldr	r0, .L316+16
	bl	__assert_fail
.L312:
	mov	r3, #2
	mov	r2, #12
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	unary_expression
	mov	r3, r0
	cmp	r3, #0
	bge	.L313
	mvn	r3, #0
	b	.L314
.L313:
	mov	r3, #0
	str	r3, [sp, #12]
	mov	r3, #25
	str	r3, [sp, #8]
	mov	r3, #26
	str	r3, [sp, #4]
	mov	r3, #23
	str	r3, [sp]
	mov	r3, #24
	mov	r2, #22
	mov	r1, #21
	ldr	r0, [fp, #-16]
	bl	any
	mov	r3, r0
	cmp	r3, #0
	beq	.L315
	ldr	r3, [fp, #-16]
	add	r3, r3, #8388608
	ldr	r2, [r3, #556]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	unary_expression
	mov	r3, r0
	b	.L314
.L315:
	ldr	r1, .L316+20
	ldr	r0, [fp, #-16]
	bl	warn
	mov	r3, r0
.L314:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L317:
	.align	2
.L316:
	.word	__PRETTY_FUNCTION__.5870
	.word	591
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.word	.LC130
	.size	condition, .-condition
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	list, %function
list:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L319
	ldr	r3, .L326
	ldr	r2, .L326+4
	ldr	r1, .L326+8
	ldr	r0, .L326+12
	bl	__assert_fail
.L319:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L320
	ldr	r3, .L326
	ldr	r2, .L326+16
	ldr	r1, .L326+8
	ldr	r0, .L326+20
	bl	__assert_fail
.L320:
	mov	r3, #1
	mov	r2, #11
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	statement
	mov	r3, r0
	cmp	r3, #0
	bge	.L321
	mvn	r3, #0
	b	.L322
.L321:
	mov	r3, #1
	str	r3, [fp, #-12]
	b	.L323
.L325:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	statement
	mov	r3, r0
	cmp	r3, #0
	bge	.L324
	mvn	r3, #0
	b	.L322
.L324:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L323:
	mov	r1, #11
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L325
	mov	r3, #0
.L322:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L327:
	.align	2
.L326:
	.word	__PRETTY_FUNCTION__.5879
	.word	606
	.word	.LC0
	.word	.LC1
	.word	607
	.word	.LC129
	.size	list, .-list
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	field, %function
field:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L329
	ldr	r3, .L334
	ldr	r2, .L334+4
	ldr	r1, .L334+8
	ldr	r0, .L334+12
	bl	__assert_fail
.L329:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L330
	ldr	r3, .L334
	ldr	r2, .L334+16
	ldr	r1, .L334+8
	ldr	r0, .L334+20
	bl	__assert_fail
.L330:
	mov	r3, #2
	mov	r2, #36
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	identifier
	mov	r3, r0
	cmp	r3, #0
	bge	.L331
	mvn	r3, #0
	b	.L332
.L331:
	mov	r1, #13
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L333
	mvn	r3, #0
	b	.L332
.L333:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	typeusage
	mov	r3, r0
.L332:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L335:
	.align	2
.L334:
	.word	__PRETTY_FUNCTION__.5892
	.word	622
	.word	.LC0
	.word	.LC1
	.word	623
	.word	.LC129
	.size	field, .-field
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	record_type, %function
record_type:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L337
	ldr	r3, .L346
	ldr	r2, .L346+4
	ldr	r1, .L346+8
	ldr	r0, .L346+12
	bl	__assert_fail
.L337:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L338
	ldr	r3, .L346
	ldr	r2, .L346+16
	ldr	r1, .L346+8
	ldr	r0, .L346+20
	bl	__assert_fail
.L338:
	mov	r3, #1
	mov	r2, #36
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r1, #6
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L339
	mvn	r3, #0
	b	.L340
.L339:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	field
	mov	r3, r0
	cmp	r3, #0
	bge	.L341
	mvn	r3, #0
	b	.L340
.L341:
	mov	r3, #1
	str	r3, [fp, #-12]
	b	.L342
.L344:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	field
	mov	r3, r0
	cmp	r3, #0
	bge	.L343
	mvn	r3, #0
	b	.L340
.L343:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L342:
	mov	r1, #11
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L344
	mov	r1, #7
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L345
	mvn	r3, #0
	b	.L340
.L345:
	mov	r3, #0
.L340:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L347:
	.align	2
.L346:
	.word	__PRETTY_FUNCTION__.5898
	.word	633
	.word	.LC0
	.word	.LC1
	.word	634
	.word	.LC129
	.size	record_type, .-record_type
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	array_type, %function
array_type:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L349
	ldr	r3, .L357
	ldr	r2, .L357+4
	ldr	r1, .L357+8
	ldr	r0, .L357+12
	bl	__assert_fail
.L349:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L350
	ldr	r3, .L357
	mov	r2, #652
	ldr	r1, .L357+8
	ldr	r0, .L357+16
	bl	__assert_fail
.L350:
	mov	r3, #2
	mov	r2, #35
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	constexpr
	mov	r3, r0
	cmp	r3, #0
	bge	.L351
	mvn	r3, #0
	b	.L352
.L351:
	mov	r3, #1
	str	r3, [fp, #-12]
	b	.L353
.L355:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	constexpr
	mov	r3, r0
	cmp	r3, #0
	bge	.L354
	mvn	r3, #0
	b	.L352
.L354:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L353:
	mov	r1, #14
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L355
	mov	r1, #59
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L356
	mvn	r3, #0
	b	.L352
.L356:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	typeusage
	mov	r3, r0
.L352:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L358:
	.align	2
.L357:
	.word	__PRETTY_FUNCTION__.5908
	.word	651
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.size	array_type, .-array_type
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	pointer_type, %function
pointer_type:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L360
	ldr	r3, .L364
	mov	r2, #668
	ldr	r1, .L364+4
	ldr	r0, .L364+8
	bl	__assert_fail
.L360:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L361
	ldr	r3, .L364
	ldr	r2, .L364+12
	ldr	r1, .L364+4
	ldr	r0, .L364+16
	bl	__assert_fail
.L361:
	mov	r3, #1
	mov	r2, #37
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r1, #61
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L362
	mvn	r3, #0
	b	.L363
.L362:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	typeusage
	mov	r3, r0
.L363:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L365:
	.align	2
.L364:
	.word	__PRETTY_FUNCTION__.5918
	.word	.LC0
	.word	.LC1
	.word	669
	.word	.LC129
	.size	pointer_type, .-pointer_type
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	procedure_type, %function
procedure_type:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L367
	ldr	r3, .L374
	ldr	r2, .L374+4
	ldr	r1, .L374+8
	ldr	r0, .L374+12
	bl	__assert_fail
.L367:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L368
	ldr	r3, .L374
	mov	r2, #680
	ldr	r1, .L374+8
	ldr	r0, .L374+16
	bl	__assert_fail
.L368:
	mov	r3, #2
	mov	r2, #38
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r1, #4
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L369
	mvn	r3, #0
	b	.L370
.L369:
	mov	r1, #3
	ldr	r0, [fp, #-16]
	bl	peek
	mov	r3, r0
	cmp	r3, #0
	beq	.L371
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	varlist
	mov	r3, r0
	cmp	r3, #0
	bge	.L371
	mvn	r3, #0
	b	.L370
.L371:
	mov	r1, #5
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L372
	mvn	r3, #0
	b	.L370
.L372:
	mov	r1, #13
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L373
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	typeusage
	mov	r3, r0
	cmp	r3, #0
	bge	.L373
	mvn	r3, #0
	b	.L370
.L373:
	mov	r3, #0
.L370:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L375:
	.align	2
.L374:
	.word	__PRETTY_FUNCTION__.5927
	.word	679
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.size	procedure_type, .-procedure_type
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	typeusage, %function
typeusage:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L377
	ldr	r3, .L387
	ldr	r2, .L387+4
	ldr	r1, .L387+8
	ldr	r0, .L387+12
	bl	__assert_fail
.L377:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L378
	ldr	r3, .L387
	ldr	r2, .L387+16
	ldr	r1, .L387+8
	ldr	r0, .L387+20
	bl	__assert_fail
.L378:
	mov	r3, #0
	mov	r2, #21
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r1, #57
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L379
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	use
	mov	r3, r0
	b	.L380
.L379:
	mov	r1, #56
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L381
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	use
	mov	r3, r0
	b	.L380
.L381:
	mov	r1, #58
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L382
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	use
	mov	r3, r0
	b	.L380
.L382:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	mov	r1, #55
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L383
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	pointer_type
	mov	r3, r0
	b	.L380
.L383:
	mov	r1, #53
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L384
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	record_type
	mov	r3, r0
	b	.L380
.L384:
	mov	r1, #36
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L385
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	procedure_type
	mov	r3, r0
	b	.L380
.L385:
	mov	r1, #54
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L386
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	array_type
	mov	r3, r0
	b	.L380
.L386:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	qualident
	mov	r3, r0
.L380:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L388:
	.align	2
.L387:
	.word	__PRETTY_FUNCTION__.5933
	.word	697
	.word	.LC0
	.word	.LC1
	.word	698
	.word	.LC129
	.size	typeusage, .-typeusage
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	typedecl, %function
typedecl:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L390
	ldr	r3, .L395
	ldr	r2, .L395+4
	ldr	r1, .L395+8
	ldr	r0, .L395+12
	bl	__assert_fail
.L390:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L391
	ldr	r3, .L395
	mov	r2, #720
	ldr	r1, .L395+8
	ldr	r0, .L395+16
	bl	__assert_fail
.L391:
	mov	r3, #2
	mov	r2, #20
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	identifier
	mov	r3, r0
	cmp	r3, #0
	bge	.L392
	mvn	r3, #0
	b	.L393
.L392:
	mov	r1, #21
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L394
	mvn	r3, #0
	b	.L393
.L394:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	typeusage
	mov	r3, r0
.L393:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L396:
	.align	2
.L395:
	.word	__PRETTY_FUNCTION__.5939
	.word	719
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.size	typedecl, .-typedecl
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	typelist, %function
typelist:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L398
	ldr	r3, .L405
	ldr	r2, .L405+4
	ldr	r1, .L405+8
	ldr	r0, .L405+12
	bl	__assert_fail
.L398:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L399
	ldr	r3, .L405
	ldr	r2, .L405+16
	ldr	r1, .L405+8
	ldr	r0, .L405+20
	bl	__assert_fail
.L399:
	mov	r3, #1
	mov	r2, #3
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	typedecl
	mov	r3, r0
	cmp	r3, #0
	bge	.L400
	mvn	r3, #0
	b	.L401
.L400:
	mov	r3, #1
	str	r3, [fp, #-12]
	b	.L402
.L404:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	typedecl
	mov	r3, r0
	cmp	r3, #0
	bge	.L403
	mvn	r3, #0
	b	.L401
.L403:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L402:
	mov	r1, #14
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L404
	mov	r3, #0
.L401:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L406:
	.align	2
.L405:
	.word	__PRETTY_FUNCTION__.5945
	.word	730
	.word	.LC0
	.word	.LC1
	.word	731
	.word	.LC129
	.size	typelist, .-typelist
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	variable, %function
variable:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L408
	ldr	r3, .L413
	mov	r2, #744
	ldr	r1, .L413+4
	ldr	r0, .L413+8
	bl	__assert_fail
.L408:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L409
	ldr	r3, .L413
	ldr	r2, .L413+12
	ldr	r1, .L413+4
	ldr	r0, .L413+16
	bl	__assert_fail
.L409:
	mov	r3, #2
	mov	r2, #8
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	identifier
	mov	r3, r0
	cmp	r3, #0
	bge	.L410
	mvn	r3, #0
	b	.L411
.L410:
	mov	r1, #13
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L412
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	typeusage
	mov	r3, r0
	b	.L411
.L412:
	mov	r3, #0
.L411:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L414:
	.align	2
.L413:
	.word	__PRETTY_FUNCTION__.5955
	.word	.LC0
	.word	.LC1
	.word	745
	.word	.LC129
	.size	variable, .-variable
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	varlist, %function
varlist:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L416
	ldr	r3, .L423
	ldr	r2, .L423+4
	ldr	r1, .L423+8
	ldr	r0, .L423+12
	bl	__assert_fail
.L416:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L417
	ldr	r3, .L423
	mov	r2, #756
	ldr	r1, .L423+8
	ldr	r0, .L423+16
	bl	__assert_fail
.L417:
	mov	r3, #1
	mov	r2, #11
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	variable
	mov	r3, r0
	cmp	r3, #0
	bge	.L418
	mvn	r3, #0
	b	.L419
.L418:
	mov	r3, #1
	str	r3, [fp, #-12]
	b	.L420
.L422:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	variable
	mov	r3, r0
	cmp	r3, #0
	bge	.L421
	mvn	r3, #0
	b	.L419
.L421:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L420:
	mov	r1, #14
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L422
	mov	r3, #0
.L419:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L424:
	.align	2
.L423:
	.word	__PRETTY_FUNCTION__.5961
	.word	755
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.size	varlist, .-varlist
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	constant, %function
constant:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L426
	ldr	r3, .L432
	ldr	r2, .L432+4
	ldr	r1, .L432+8
	ldr	r0, .L432+12
	bl	__assert_fail
.L426:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L427
	ldr	r3, .L432
	ldr	r2, .L432+16
	ldr	r1, .L432+8
	ldr	r0, .L432+20
	bl	__assert_fail
.L427:
	mov	r3, #3
	mov	r2, #7
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	identifier
	mov	r3, r0
	cmp	r3, #0
	bge	.L428
	mvn	r3, #0
	b	.L429
.L428:
	mov	r1, #13
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L430
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	typeusage
	mov	r3, r0
	cmp	r3, #0
	bge	.L430
	mvn	r3, #0
	b	.L429
.L430:
	mov	r1, #21
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L431
	mvn	r3, #0
	b	.L429
.L431:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	constexpr
	mov	r3, r0
.L429:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L433:
	.align	2
.L432:
	.word	__PRETTY_FUNCTION__.5971
	.word	769
	.word	.LC0
	.word	.LC1
	.word	770
	.word	.LC129
	.size	constant, .-constant
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	constlist, %function
constlist:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L435
	ldr	r3, .L442
	ldr	r2, .L442+4
	ldr	r1, .L442+8
	ldr	r0, .L442+12
	bl	__assert_fail
.L435:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L436
	ldr	r3, .L442
	mov	r2, #784
	ldr	r1, .L442+8
	ldr	r0, .L442+16
	bl	__assert_fail
.L436:
	mov	r3, #1
	mov	r2, #4
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	constant
	mov	r3, r0
	cmp	r3, #0
	bge	.L437
	mvn	r3, #0
	b	.L438
.L437:
	mov	r3, #1
	str	r3, [fp, #-12]
	b	.L439
.L441:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	constant
	mov	r3, r0
	cmp	r3, #0
	bge	.L440
	mvn	r3, #0
	b	.L438
.L440:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L439:
	mov	r1, #14
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L441
	mov	r3, #0
.L438:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L443:
	.align	2
.L442:
	.word	__PRETTY_FUNCTION__.5977
	.word	783
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.size	constlist, .-constlist
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	function, %function
function:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L445
	ldr	r3, .L452
	ldr	r2, .L452+4
	ldr	r1, .L452+8
	ldr	r0, .L452+12
	bl	__assert_fail
.L445:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L446
	ldr	r3, .L452
	mov	r2, #800
	ldr	r1, .L452+8
	ldr	r0, .L452+16
	bl	__assert_fail
.L446:
	mov	r3, #3
	mov	r2, #9
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	identifier
	mov	r3, r0
	cmp	r3, #0
	bge	.L447
	mvn	r3, #0
	b	.L448
.L447:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	procedure_type
	mov	r3, r0
	cmp	r3, #0
	bge	.L449
	mvn	r3, #0
	b	.L448
.L449:
	mov	r1, #6
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L450
	mvn	r3, #0
	b	.L448
.L450:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	block
	mov	r3, r0
	cmp	r3, #0
	bge	.L451
	mvn	r3, #0
	b	.L448
.L451:
	mov	r1, #7
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
.L448:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L453:
	.align	2
.L452:
	.word	__PRETTY_FUNCTION__.5990
	.word	799
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.size	function, .-function
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	proclist, %function
proclist:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L455
	ldr	r3, .L462
	ldr	r2, .L462+4
	ldr	r1, .L462+8
	ldr	r0, .L462+12
	bl	__assert_fail
.L455:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L456
	ldr	r3, .L462
	mov	r2, #816
	ldr	r1, .L462+8
	ldr	r0, .L462+16
	bl	__assert_fail
.L456:
	mov	r3, #1
	mov	r2, #6
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	function
	mov	r3, r0
	cmp	r3, #0
	bge	.L457
	mvn	r3, #0
	b	.L458
.L457:
	mov	r3, #1
	str	r3, [fp, #-12]
	b	.L459
.L461:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	function
	mov	r3, r0
	cmp	r3, #0
	bge	.L460
	mvn	r3, #0
	b	.L458
.L460:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L459:
	mov	r1, #36
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L461
	mov	r3, #0
.L458:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L463:
	.align	2
.L462:
	.word	__PRETTY_FUNCTION__.5996
	.word	815
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.size	proclist, .-proclist
	.section	.rodata
	.align	2
.LC131:
	.ascii	"first\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	assign_statement, %function
assign_statement:
	@ 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]
	cmp	r3, #0
	bne	.L465
	ldr	r3, .L470
	ldr	r2, .L470+4
	ldr	r1, .L470+8
	ldr	r0, .L470+12
	bl	__assert_fail
.L465:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L466
	ldr	r3, .L470
	ldr	r2, .L470+16
	ldr	r1, .L470+8
	ldr	r0, .L470+20
	bl	__assert_fail
.L466:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L467
	ldr	r3, .L470
	ldr	r2, .L470+24
	ldr	r1, .L470+8
	ldr	r0, .L470+28
	bl	__assert_fail
.L467:
	mov	r3, #2
	mov	r2, #29
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	ldr	r2, [fp, #-24]
	str	r2, [r3]
	mov	r1, #10
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L468
	mvn	r3, #0
	b	.L469
.L468:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	unary_expression
	mov	r3, r0
.L469:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L471:
	.align	2
.L470:
	.word	__PRETTY_FUNCTION__.6007
	.word	829
	.word	.LC0
	.word	.LC1
	.word	830
	.word	.LC129
	.word	831
	.word	.LC131
	.size	assign_statement, .-assign_statement
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	call_statement, %function
call_statement:
	@ 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]
	cmp	r3, #0
	bne	.L473
	ldr	r3, .L479
	mov	r2, #840
	ldr	r1, .L479+4
	ldr	r0, .L479+8
	bl	__assert_fail
.L473:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L474
	ldr	r3, .L479
	ldr	r2, .L479+12
	ldr	r1, .L479+4
	ldr	r0, .L479+16
	bl	__assert_fail
.L474:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L475
	ldr	r3, .L479
	ldr	r2, .L479+20
	ldr	r1, .L479+4
	ldr	r0, .L479+24
	bl	__assert_fail
.L475:
	mov	r3, #2
	mov	r2, #30
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	ldr	r2, [fp, #-24]
	str	r2, [r3]
	mov	r1, #4
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L476
	mvn	r3, #0
	b	.L477
.L476:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	exprlist
	mov	r3, r0
	cmp	r3, #0
	bge	.L478
	mvn	r3, #0
	b	.L477
.L478:
	mov	r1, #5
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
.L477:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L480:
	.align	2
.L479:
	.word	__PRETTY_FUNCTION__.6014
	.word	.LC0
	.word	.LC1
	.word	841
	.word	.LC129
	.word	842
	.word	.LC131
	.size	call_statement, .-call_statement
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	assert_statement, %function
assert_statement:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L482
	ldr	r3, .L485
	ldr	r2, .L485+4
	ldr	r1, .L485+8
	ldr	r0, .L485+12
	bl	__assert_fail
.L482:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L483
	ldr	r3, .L485
	ldr	r2, .L485+16
	ldr	r1, .L485+8
	ldr	r0, .L485+20
	bl	__assert_fail
.L483:
	mov	r3, #1
	mov	r2, #27
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	condition
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L486:
	.align	2
.L485:
	.word	__PRETTY_FUNCTION__.6020
	.word	853
	.word	.LC0
	.word	.LC1
	.word	854
	.word	.LC129
	.size	assert_statement, .-assert_statement
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	implies_statement, %function
implies_statement:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L488
	ldr	r3, .L493
	mov	r2, #860
	ldr	r1, .L493+4
	ldr	r0, .L493+8
	bl	__assert_fail
.L488:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L489
	ldr	r3, .L493
	ldr	r2, .L493+12
	ldr	r1, .L493+4
	ldr	r0, .L493+16
	bl	__assert_fail
.L489:
	mov	r3, #2
	mov	r2, #28
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	condition
	mov	r3, r0
	cmp	r3, #0
	bge	.L490
	mvn	r3, #0
	b	.L491
.L490:
	mov	r1, #14
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L492
	mvn	r3, #0
	b	.L491
.L492:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	condition
	mov	r3, r0
.L491:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L494:
	.align	2
.L493:
	.word	__PRETTY_FUNCTION__.6026
	.word	.LC0
	.word	.LC1
	.word	861
	.word	.LC129
	.size	implies_statement, .-implies_statement
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_statement, %function
do_statement:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L496
	ldr	r3, .L502
	ldr	r2, .L502+4
	ldr	r1, .L502+8
	ldr	r0, .L502+12
	bl	__assert_fail
.L496:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L497
	ldr	r3, .L502
	mov	r2, #872
	ldr	r1, .L502+8
	ldr	r0, .L502+16
	bl	__assert_fail
.L497:
	mov	r3, #2
	mov	r2, #25
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	statement
	mov	r3, r0
	cmp	r3, #0
	bge	.L498
	mvn	r3, #0
	b	.L499
.L498:
	mov	r1, #35
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L500
	mvn	r3, #0
	b	.L499
.L500:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	condition
	mov	r3, r0
	cmp	r3, #0
	bge	.L501
	mvn	r3, #0
	b	.L499
.L501:
	mov	r3, #0
.L499:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L503:
	.align	2
.L502:
	.word	__PRETTY_FUNCTION__.6032
	.word	871
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.size	do_statement, .-do_statement
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	while_statement, %function
while_statement:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L505
	ldr	r3, .L509
	mov	r2, #884
	ldr	r1, .L509+4
	ldr	r0, .L509+8
	bl	__assert_fail
.L505:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L506
	ldr	r3, .L509
	ldr	r2, .L509+12
	ldr	r1, .L509+4
	ldr	r0, .L509+16
	bl	__assert_fail
.L506:
	mov	r3, #2
	mov	r2, #24
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	condition
	mov	r3, r0
	cmp	r3, #0
	bge	.L507
	mvn	r3, #0
	b	.L508
.L507:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	statement
	mov	r3, r0
.L508:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L510:
	.align	2
.L509:
	.word	__PRETTY_FUNCTION__.6038
	.word	.LC0
	.word	.LC1
	.word	885
	.word	.LC129
	.size	while_statement, .-while_statement
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	if_statement, %function
if_statement:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L512
	ldr	r3, .L525
	ldr	r2, .L525+4
	ldr	r1, .L525+8
	ldr	r0, .L525+12
	bl	__assert_fail
.L512:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L513
	ldr	r3, .L525
	ldr	r2, .L525+16
	ldr	r1, .L525+8
	ldr	r0, .L525+20
	bl	__assert_fail
.L513:
	mov	r3, #2
	mov	r2, #23
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	condition
	mov	r3, r0
	cmp	r3, #0
	bge	.L514
	mvn	r3, #0
	b	.L515
.L514:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	statement
	mov	r3, r0
	cmp	r3, #0
	bge	.L516
	mvn	r3, #0
	b	.L515
.L516:
	mov	r3, #2
	str	r3, [fp, #-12]
	b	.L517
.L523:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	mov	r1, #32
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L518
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	condition
	mov	r3, r0
	cmp	r3, #0
	bge	.L519
	mvn	r3, #0
	b	.L515
.L519:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	statement
	mov	r3, r0
	cmp	r3, #0
	bge	.L520
	mvn	r3, #0
	b	.L515
.L520:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	b	.L517
.L518:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	statement
	mov	r3, r0
	cmp	r3, #0
	bge	.L524
	mvn	r3, #0
	b	.L515
.L517:
	mov	r1, #33
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L523
	b	.L522
.L524:
	nop
.L522:
	mov	r3, #0
.L515:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L526:
	.align	2
.L525:
	.word	__PRETTY_FUNCTION__.6044
	.word	894
	.word	.LC0
	.word	.LC1
	.word	895
	.word	.LC129
	.size	if_statement, .-if_statement
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	for_statement, %function
for_statement:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L528
	ldr	r3, .L537
	mov	r2, #920
	ldr	r1, .L537+4
	ldr	r0, .L537+8
	bl	__assert_fail
.L528:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L529
	ldr	r3, .L537
	ldr	r2, .L537+12
	ldr	r1, .L537+4
	ldr	r0, .L537+16
	bl	__assert_fail
.L529:
	mov	r3, #3
	mov	r2, #26
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	identifier
	mov	r3, r0
	cmp	r3, #0
	bge	.L530
	mvn	r3, #0
	b	.L531
.L530:
	mov	r1, #10
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L532
	mvn	r3, #0
	b	.L531
.L532:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	unary_expression
	mov	r3, r0
	cmp	r3, #0
	bge	.L533
	mvn	r3, #0
	b	.L531
.L533:
	mov	r1, #61
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L534
	mvn	r3, #0
	b	.L531
.L534:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	unary_expression
	mov	r3, r0
	cmp	r3, #0
	bge	.L535
	mvn	r3, #0
	b	.L531
.L535:
	mov	r1, #62
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L536
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #12
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	constexpr
	mov	r3, r0
	cmp	r3, #0
	bge	.L536
	mvn	r3, #0
	b	.L531
.L536:
	mov	r3, #0
.L531:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L538:
	.align	2
.L537:
	.word	__PRETTY_FUNCTION__.6055
	.word	.LC0
	.word	.LC1
	.word	921
	.word	.LC129
	.size	for_statement, .-for_statement
	.section	.rodata
	.align	2
.LC132:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	statement, %function
statement:
	@ 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, #-24]
	str	r1, [fp, #-28]
	ldr	r3, .L556
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L540
	ldr	r3, .L556+4
	ldr	r2, .L556+8
	ldr	r1, .L556+12
	ldr	r0, .L556+16
	bl	__assert_fail
.L540:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L541
	ldr	r3, .L556+4
	ldr	r2, .L556+20
	ldr	r1, .L556+12
	ldr	r0, .L556+24
	bl	__assert_fail
.L541:
	mov	r3, #1
	mov	r2, #2
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	ast_new
	str	r0, [fp, #-12]
	mov	r1, #3
	ldr	r0, [fp, #-24]
	bl	peek
	mov	r3, r0
	cmp	r3, #0
	beq	.L542
	mov	r3, #0
	str	r3, [fp, #-16]
	sub	r3, fp, #16
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	designator
	mov	r3, r0
	cmp	r3, #0
	bge	.L543
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #16]
	ldr	r2, [fp, #-16]
	str	r2, [r3]
	mvn	r3, #0
	b	.L546
.L543:
	mov	r1, #10
	ldr	r0, [fp, #-24]
	bl	peek
	mov	r3, r0
	cmp	r3, #0
	beq	.L545
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #16]
	ldr	r2, [fp, #-16]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	assign_statement
	mov	r3, r0
	b	.L546
.L545:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #16]
	ldr	r2, [fp, #-16]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	call_statement
	mov	r3, r0
	b	.L546
.L542:
	mov	r1, #6
	ldr	r0, [fp, #-24]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L547
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	list
	mov	r3, r0
	cmp	r3, #0
	bge	.L548
	mvn	r3, #0
	b	.L546
.L548:
	mov	r1, #7
	ldr	r0, [fp, #-24]
	bl	expect
	mov	r3, r0
	b	.L546
.L547:
	mov	r1, #32
	ldr	r0, [fp, #-24]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L549
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	if_statement
	mov	r3, r0
	b	.L546
.L549:
	mov	r1, #37
	ldr	r0, [fp, #-24]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L550
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	for_statement
	mov	r3, r0
	b	.L546
.L550:
	mov	r1, #35
	ldr	r0, [fp, #-24]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L551
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	while_statement
	mov	r3, r0
	b	.L546
.L551:
	mov	r1, #34
	ldr	r0, [fp, #-24]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L552
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	do_statement
	mov	r3, r0
	b	.L546
.L552:
	mov	r1, #42
	ldr	r0, [fp, #-24]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L553
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	assert_statement
	mov	r3, r0
	b	.L546
.L553:
	mov	r1, #43
	ldr	r0, [fp, #-24]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L554
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	implies_statement
	mov	r3, r0
	b	.L546
.L554:
	mov	r3, #0
.L546:
	ldr	r2, .L556
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L555
	bl	__stack_chk_fail
.L555:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L557:
	.align	2
.L556:
	.word	.LC132
	.word	__PRETTY_FUNCTION__.6061
	.word	942
	.word	.LC0
	.word	.LC1
	.word	943
	.word	.LC129
	.size	statement, .-statement
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	block, %function
block:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L559
	ldr	r3, .L569
	ldr	r2, .L569+4
	ldr	r1, .L569+8
	ldr	r0, .L569+12
	bl	__assert_fail
.L559:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L560
	ldr	r3, .L569
	ldr	r2, .L569+16
	ldr	r1, .L569+8
	ldr	r0, .L569+20
	bl	__assert_fail
.L560:
	mov	r3, #5
	mov	r2, #1
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	mov	r1, #44
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L561
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	typelist
	mov	r3, r0
	cmp	r3, #0
	bge	.L562
	mvn	r3, #0
	b	.L563
.L562:
	mov	r1, #11
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L561
	mvn	r3, #0
	b	.L563
.L561:
	mov	r1, #39
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L564
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	constlist
	mov	r3, r0
	cmp	r3, #0
	bge	.L565
	mvn	r3, #0
	b	.L563
.L565:
	mov	r1, #11
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L564
	mvn	r3, #0
	b	.L563
.L564:
	mov	r1, #38
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L566
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	varlist
	mov	r3, r0
	cmp	r3, #0
	bge	.L567
	mvn	r3, #0
	b	.L563
.L567:
	mov	r1, #11
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L566
	mvn	r3, #0
	b	.L563
.L566:
	mov	r1, #36
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L568
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #12
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	proclist
	mov	r3, r0
	cmp	r3, #0
	bge	.L568
	mvn	r3, #0
	b	.L563
.L568:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #16
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	list
	mov	r3, r0
.L563:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L570:
	.align	2
.L569:
	.word	__PRETTY_FUNCTION__.6068
	.word	966
	.word	.LC0
	.word	.LC1
	.word	967
	.word	.LC129
	.size	block, .-block
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	importlist, %function
importlist:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L572
	ldr	r3, .L579
	ldr	r2, .L579+4
	ldr	r1, .L579+8
	ldr	r0, .L579+12
	bl	__assert_fail
.L572:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L573
	ldr	r3, .L579
	mov	r2, #996
	ldr	r1, .L579+8
	ldr	r0, .L579+16
	bl	__assert_fail
.L573:
	mov	r3, #1
	mov	r2, #22
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	identifier
	mov	r3, r0
	cmp	r3, #0
	bge	.L574
	mvn	r3, #0
	b	.L575
.L574:
	mov	r3, #1
	str	r3, [fp, #-12]
	b	.L576
.L578:
	ldr	r0, [fp, #-8]
	bl	ast_grow
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	identifier
	mov	r3, r0
	cmp	r3, #0
	bge	.L577
	mvn	r3, #0
	b	.L575
.L577:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L576:
	mov	r1, #14
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	bne	.L578
	mov	r3, #0
.L575:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L580:
	.align	2
.L579:
	.word	__PRETTY_FUNCTION__.6074
	.word	995
	.word	.LC0
	.word	.LC1
	.word	.LC129
	.size	importlist, .-importlist
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	program, %function
program:
	@ 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	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L582
	ldr	r3, .L592
	ldr	r2, .L592+4
	ldr	r1, .L592+8
	ldr	r0, .L592+12
	bl	__assert_fail
.L582:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L583
	ldr	r3, .L592
	ldr	r2, .L592+16
	ldr	r1, .L592+8
	ldr	r0, .L592+20
	bl	__assert_fail
.L583:
	mov	r3, #3
	mov	r2, #0
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	ast_new
	str	r0, [fp, #-8]
	mov	r1, #45
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L584
	mvn	r3, #0
	b	.L585
.L584:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	identifier
	mov	r3, r0
	cmp	r3, #0
	bge	.L586
	mvn	r3, #0
	b	.L585
.L586:
	mov	r1, #11
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L587
	mvn	r3, #0
	b	.L585
.L587:
	mov	r1, #46
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L588
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	importlist
	mov	r3, r0
	cmp	r3, #0
	bge	.L589
	mvn	r3, #0
	b	.L585
.L589:
	mov	r1, #11
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	bge	.L588
	mvn	r3, #0
	b	.L585
.L588:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	add	r3, r3, #8
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	block
	mov	r3, r0
	cmp	r3, #0
	bge	.L590
	mvn	r3, #0
	b	.L585
.L590:
	mov	r1, #12
	ldr	r0, [fp, #-16]
	bl	accept
	mov	r3, r0
	cmp	r3, #0
	beq	.L591
	mov	r3, #0
	b	.L585
.L591:
	mov	r1, #31
	ldr	r0, [fp, #-16]
	bl	expect
	mov	r3, r0
.L585:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L593:
	.align	2
.L592:
	.word	__PRETTY_FUNCTION__.6084
	.word	1009
	.word	.LC0
	.word	.LC1
	.word	1010
	.word	.LC129
	.size	program, .-program
	.section	.rodata
	.align	2
.LC133:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse, %function
parse:
	@ 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]
	ldr	r3, .L601
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L595
	ldr	r3, .L601+4
	ldr	r2, .L601+8
	ldr	r1, .L601+12
	ldr	r0, .L601+16
	bl	__assert_fail
.L595:
	mov	r3, #0
	str	r3, [fp, #-12]
	sub	r3, fp, #12
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	program
	mov	r3, r0
	cmp	r3, #0
	bge	.L596
	ldr	r3, [fp, #-12]
	mov	r0, r3
	bl	ast_free
	mov	r3, #0
	b	.L599
.L596:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L598
	ldr	r3, .L601+4
	ldr	r2, .L601+20
	ldr	r1, .L601+12
	ldr	r0, .L601+24
	bl	__assert_fail
.L598:
	ldr	r3, [fp, #-12]
.L599:
	ldr	r2, .L601
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L600
	bl	__stack_chk_fail
.L600:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L602:
	.align	2
.L601:
	.word	.LC133
	.word	__PRETTY_FUNCTION__.6089
	.word	1032
	.word	.LC0
	.word	.LC1
	.word	1038
	.word	.LC129
	.size	parse, .-parse
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	scope_find, %function
scope_find:
	@ 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, [fp, #-24]
	cmp	r3, #0
	bne	.L604
	ldr	r3, .L614
	ldr	r2, .L614+4
	ldr	r1, .L614+8
	ldr	r0, .L614+12
	bl	__assert_fail
.L604:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L605
	ldr	r3, [fp, #-28]
	mov	r2, #1
	str	r2, [r3]
.L605:
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-16]
	b	.L606
.L612:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L607
.L611:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	ldr	r3, [r3, r2, lsl #2]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L613
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	ldr	r2, [fp, #-32]
	cmp	r2, r3
	bne	.L609
	ldr	r3, [fp, #-8]
	b	.L610
.L613:
	nop
.L609:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L607:
	ldr	r3, [fp, #-12]
	cmp	r3, #4
	bls	.L611
	ldr	r3, [fp, #-28]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #20]
	str	r3, [fp, #-16]
.L606:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L612
	ldr	r3, [fp, #-28]
	mov	r2, #0
	str	r2, [r3]
	mov	r3, #0
.L610:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L615:
	.align	2
.L614:
	.word	__PRETTY_FUNCTION__.6130
	.word	1059
	.word	.LC0
	.word	.LC6
	.size	scope_find, .-scope_find
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	fix, %function
fix:
	@ args = 8, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L617
	ldr	r3, .L618
	ldr	r2, .L618+4
	ldr	r1, .L618+8
	ldr	r0, .L618+12
	bl	__assert_fail
.L617:
	ldr	r3, [fp, #-24]
	ldmia	r3, {r2-r3}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	subs	r4, r0, r2
	sbc	r5, r1, r3
	mov	r2, #0
	mov	r3, #0
	lsr	r2, r4, #3
	orr	r2, r2, r5, lsl #29
	lsr	r3, r5, #3
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-20]
	add	r3, r3, #2
	lsl	r3, r3, #3
	add	r1, r2, r3
	ldmib	fp, {r2-r3}
	stm	r1, {r2-r3}
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L619:
	.align	2
.L618:
	.word	__PRETTY_FUNCTION__.6146
	.word	1078
	.word	.LC0
	.word	.LC1
	.size	fix, .-fix
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	jump, %function
jump:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #32
	str	r0, [fp, #-48]
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-48]
	cmp	r3, #0
	bne	.L621
	ldr	r3, .L623
	ldr	r2, .L623+4
	ldr	r1, .L623+8
	ldr	r0, .L623+12
	bl	__assert_fail
.L621:
	ldr	r3, [fp, #-48]
	add	r3, r3, #8
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-48]
	add	r1, r3, #8
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-48]
	ldmia	r3, {r2-r3}
	subs	r4, r0, r2
	sbc	r5, r1, r3
	mov	r2, #0
	mov	r3, #0
	lsr	r2, r4, #3
	orr	r2, r2, r5, lsl #29
	lsr	r3, r5, #3
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	mov	r0, #0
	mov	r1, #-2147483648
	orr	r8, r2, r0
	orr	r9, r3, r1
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-36]
	add	r3, r3, #2
	lsl	r3, r3, #3
	add	r3, r2, r3
	stm	r3, {r8-r9}
	ldr	r3, [fp, #-48]
	add	r3, r3, #8
	ldmia	r3, {r2-r3}
	adds	r6, r2, #8
	adc	r7, r3, #0
	ldr	r3, [fp, #-48]
	str	r6, [r3, #8]
	str	r7, [r3, #12]
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L624:
	.align	2
.L623:
	.word	__PRETTY_FUNCTION__.6152
	.word	1084
	.word	.LC0
	.word	.LC1
	.size	jump, .-jump
	.section	.rodata
	.align	2
.LC134:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	code, %function
code:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #64
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	str	r2, [fp, #-64]
	ldr	r3, .L684
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	bne	.L626
	ldr	r3, .L684+4
	ldr	r2, .L684+8
	ldr	r1, .L684+12
	ldr	r0, .L684+16
	bl	__assert_fail
.L626:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	bne	.L627
	ldr	r3, .L684+4
	ldr	r2, .L684+20
	ldr	r1, .L684+12
	ldr	r0, .L684+24
	bl	__assert_fail
.L627:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	bne	.L628
	ldr	r3, .L684+4
	ldr	r2, .L684+28
	ldr	r1, .L684+12
	ldr	r0, .L684+32
	bl	__assert_fail
.L628:
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-60]
	ldr	r3, [r3]
	cmp	r3, #40
	ldrls	pc, [pc, r3, asl #2]
	b	.L629
.L631:
	.word	.L682
	.word	.L669
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L629
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
	.word	.L682
.L669:
	ldr	r3, [fp, #-64]
	ldr	r3, [r3]
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-60]
	ldr	r3, [r3, #16]
	ldr	r3, [r3]
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-60]
	ldr	r3, [r3, #16]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-60]
	ldr	r3, [r3, #16]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-60]
	ldr	r3, [r3, #16]
	ldr	r3, [r3, #12]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-64]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-60]
	ldr	r3, [r3, #16]
	ldr	r3, [r3]
	sub	r2, fp, #40
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	code
	mov	r3, r0
	cmp	r3, #0
	bge	.L672
	mvn	r3, #0
	b	.L680
.L672:
	ldr	r3, [fp, #-60]
	ldr	r3, [r3, #16]
	ldr	r3, [r3]
	sub	r2, fp, #40
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	code
	mov	r3, r0
	cmp	r3, #0
	bge	.L674
	mvn	r3, #0
	b	.L680
.L674:
	ldr	r3, [fp, #-60]
	ldr	r3, [r3, #16]
	ldr	r3, [r3]
	sub	r2, fp, #40
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	code
	mov	r3, r0
	cmp	r3, #0
	bge	.L675
	mvn	r3, #0
	b	.L680
.L675:
	ldr	r3, [fp, #-64]
	ldr	r3, [r3, #20]
	cmp	r3, #0
	bne	.L676
	mov	r2, #1
	mov	r3, #0
	ldr	r0, [fp, #-56]
	bl	jump
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
.L676:
	ldr	r3, [fp, #-60]
	ldr	r3, [r3, #16]
	add	r3, r3, #16
	ldr	r3, [r3]
	sub	r2, fp, #40
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	code
	mov	r3, r0
	cmp	r3, #0
	bge	.L677
	mvn	r3, #0
	b	.L680
.L677:
	ldr	r3, [fp, #-64]
	ldr	r3, [r3, #20]
	cmp	r3, #0
	bne	.L678
	ldr	r3, [fp, #-56]
	add	r1, r3, #8
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-56]
	ldmia	r3, {r2-r3}
	subs	r4, r0, r2
	sbc	r5, r1, r3
	stm	sp, {r4-r5}
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-56]
	bl	fix
.L678:
	ldr	r3, [fp, #-60]
	ldr	r3, [r3, #16]
	add	r3, r3, #16
	ldr	r3, [r3]
	sub	r2, fp, #40
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	code
	mov	r3, r0
	cmp	r3, #0
	bge	.L683
	mvn	r3, #0
	b	.L680
.L629:
	mvn	r3, #0
	b	.L680
.L682:
	nop
	b	.L671
.L683:
	nop
.L671:
	mov	r3, #0
.L680:
	ldr	r2, .L684
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L681
	bl	__stack_chk_fail
.L681:
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L685:
	.align	2
.L684:
	.word	.LC134
	.word	__PRETTY_FUNCTION__.6160
	.word	1093
	.word	.LC0
	.word	.LC1
	.word	1094
	.word	.LC124
	.word	1095
	.word	.LC6
	.size	code, .-code
	.section	.rodata
	.align	2
.LC135:
	.ascii	"elements < NELEMS(c->m)\000"
	.align	2
.LC136:
	.ascii	"%16llx\012\000"
	.align	2
.LC137:
	.ascii	"failed to save\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	save, %function
save:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #16
	str	r0, [fp, #-24]
	ldr	r1, [fp, #-24]
	cmp	r1, #0
	bne	.L687
	ldr	r3, .L693
	ldr	r2, .L693+4
	ldr	r1, .L693+8
	ldr	r0, .L693+12
	bl	__assert_fail
.L687:
	ldr	r1, [fp, #-24]
	ldmia	r1, {r0-r1}
	mov	r4, #0
	ldr	r5, .L693+16
	adds	r2, r0, r4
	adc	r3, r1, r5
	mov	r0, #0
	mov	r1, #0
	lsr	r0, r2, #3
	orr	r0, r0, r3, lsl #29
	lsr	r1, r3, #3
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #1048576
	bcc	.L688
	ldr	r3, .L693
	ldr	r2, .L693+20
	ldr	r1, .L693+8
	ldr	r0, .L693+24
	bl	__assert_fail
.L688:
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L689
.L692:
	ldr	r3, [fp, #-24]
	add	r3, r3, #8388608
	ldr	r0, [r3, #32]
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-20]
	add	r3, r3, #2
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	ldr	r1, .L693+28
	bl	fprintf
	mov	r3, r0
	cmp	r3, #0
	bge	.L690
	ldr	r1, .L693+32
	ldr	r0, [fp, #-24]
	bl	warn
	mov	r3, r0
	b	.L691
.L690:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L689:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bcc	.L692
	mov	r3, #0
.L691:
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L694:
	.align	2
.L693:
	.word	__PRETTY_FUNCTION__.6208
	.word	1174
	.word	.LC0
	.word	.LC1
	.word	-2048
	.word	1176
	.word	.LC135
	.word	.LC136
	.word	.LC137
	.size	save, .-save
	.section	.rodata
	.align	2
.LC138:
	.ascii	"c->in\000"
	.align	2
.LC139:
	.ascii	"c->out\000"
	.align	2
.LC140:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	compile, %function
compile:
	@ 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]
	ldr	r3, .L705
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	bne	.L696
	ldr	r3, .L705+4
	mov	r2, #1184
	ldr	r1, .L705+8
	ldr	r0, .L705+12
	bl	__assert_fail
.L696:
	ldr	r3, [fp, #-40]
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	cmp	r3, #0
	bne	.L697
	ldr	r3, .L705+4
	ldr	r2, .L705+16
	ldr	r1, .L705+8
	ldr	r0, .L705+20
	bl	__assert_fail
.L697:
	ldr	r3, [fp, #-40]
	add	r3, r3, #8388608
	ldr	r3, [r3, #32]
	cmp	r3, #0
	bne	.L698
	ldr	r3, .L705+4
	ldr	r2, .L705+24
	ldr	r1, .L705+8
	ldr	r0, .L705+28
	bl	__assert_fail
.L698:
	ldr	r0, [fp, #-40]
	bl	lexer
	mov	r3, r0
	cmp	r3, #0
	bge	.L699
	mvn	r3, #0
	b	.L703
.L699:
	ldr	r0, [fp, #-40]
	bl	parse
	mov	r2, r0
	ldr	r3, [fp, #-40]
	add	r3, r3, #8388608
	str	r2, [r3, #20]
	ldr	r3, [fp, #-40]
	add	r3, r3, #8388608
	ldr	r3, [r3, #20]
	cmp	r3, #0
	bne	.L701
	mvn	r3, #0
	b	.L703
.L701:
	ldr	r3, [fp, #-40]
	add	r3, r3, #8388608
	ldr	r3, [r3, #20]
	mov	r2, #0
	mov	r1, r3
	ldr	r0, [fp, #-40]
	bl	ast_print
	sub	r3, fp, #32
	mov	r2, #0
	str	r2, [r3]
	str	r2, [r3, #4]
	str	r2, [r3, #8]
	str	r2, [r3, #12]
	str	r2, [r3, #16]
	str	r2, [r3, #20]
	ldr	r3, [fp, #-40]
	add	r3, r3, #8388608
	ldr	r3, [r3, #20]
	sub	r2, fp, #32
	mov	r1, r3
	ldr	r0, [fp, #-40]
	bl	code
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-40]
	add	r3, r3, #8388608
	ldr	r3, [r3, #20]
	mov	r0, r3
	bl	ast_free
	ldr	r3, [fp, #-40]
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #20]
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	bge	.L702
	mvn	r3, #0
	b	.L703
.L702:
	ldr	r0, [fp, #-40]
	bl	save
	mov	r3, r0
.L703:
	ldr	r2, .L705
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L704
	bl	__stack_chk_fail
.L704:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L706:
	.align	2
.L705:
	.word	.LC140
	.word	__PRETTY_FUNCTION__.6217
	.word	.LC0
	.word	.LC1
	.word	1185
	.word	.LC138
	.word	1186
	.word	.LC139
	.size	compile, .-compile
	.section	.rodata
	.align	2
.LC141:
	.ascii	"file\000"
	.align	2
.LC142:
	.ascii	"mode\000"
	.align	2
.LC143:
	.ascii	"Could not open file '%s' in mode '%s': %s\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	fopen_or_die, %function
fopen_or_die:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L708
	ldr	r3, .L712
	ldr	r2, .L712+4
	ldr	r1, .L712+8
	ldr	r0, .L712+12
	bl	__assert_fail
.L708:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L709
	ldr	r3, .L712
	ldr	r2, .L712+16
	ldr	r1, .L712+8
	ldr	r0, .L712+20
	bl	__assert_fail
.L709:
	bl	__errno_location
	mov	r3, r0
	mov	r2, #0
	str	r2, [r3]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	fopen
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L710
	ldr	r3, .L712+24
	ldr	r4, [r3]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	str	r3, [sp]
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-24]
	ldr	r1, .L712+28
	mov	r0, r4
	bl	fprintf
	mov	r0, #1
	bl	exit
.L710:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L713:
	.align	2
.L712:
	.word	__PRETTY_FUNCTION__.6224
	.word	1202
	.word	.LC0
	.word	.LC141
	.word	1203
	.word	.LC142
	.word	stderr
	.word	.LC143
	.size	fopen_or_die, .-fopen_or_die
	.section	.rodata
	.align	2
.LC144:
	.ascii	"usage: %s in.pas? out.bin?\012\000"
	.align	2
.LC145:
	.ascii	"rb\000"
	.align	2
.LC146:
	.ascii	"wb\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	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r2, .L722
	mov	r1, #0
	ldr	r0, .L722+4
	bl	memset
	ldr	r3, .L722+8
	ldr	r3, [r3]
	ldr	r2, .L722+4
	add	r2, r2, #8388608
	str	r3, [r2, #28]
	ldr	r3, .L722+12
	ldr	r3, [r3]
	ldr	r2, .L722+4
	add	r2, r2, #8388608
	str	r3, [r2, #32]
	ldr	r3, .L722+16
	ldr	r3, [r3]
	ldr	r2, .L722+4
	add	r2, r2, #8388608
	str	r3, [r2, #36]
	ldr	r1, .L722+4
	mov	r2, #0
	mov	r3, #2048
	stm	r1, {r2-r3}
	ldr	r1, .L722+4
	mov	r2, #0
	mov	r3, #2048
	str	r2, [r1, #8]
	str	r3, [r1, #12]
	ldr	r3, .L722+4
	add	r3, r3, #8388608
	mov	r2, r3
	mov	r3, #1
	str	r3, [r2, #16]
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r3, #1
	beq	.L715
	ldr	r3, [fp, #-16]
	cmp	r3, #2
	beq	.L715
	ldr	r3, [fp, #-16]
	cmp	r3, #3
	beq	.L715
	ldr	r3, .L722+16
	ldr	r0, [r3]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, .L722+20
	bl	fprintf
	mov	r3, #1
	b	.L716
.L715:
	ldr	r3, [fp, #-16]
	cmp	r3, #1
	ble	.L717
	ldr	r3, [fp, #-20]
	add	r3, r3, #4
	ldr	r3, [r3]
	ldr	r1, .L722+24
	mov	r0, r3
	bl	fopen_or_die
	mov	r3, r0
	ldr	r2, .L722+4
	add	r2, r2, #8388608
	str	r3, [r2, #28]
.L717:
	ldr	r3, [fp, #-16]
	cmp	r3, #2
	ble	.L718
	ldr	r3, [fp, #-20]
	add	r3, r3, #8
	ldr	r3, [r3]
	ldr	r1, .L722+28
	mov	r0, r3
	bl	fopen_or_die
	mov	r3, r0
	ldr	r2, .L722+4
	add	r2, r2, #8388608
	str	r3, [r2, #32]
.L718:
	ldr	r0, .L722+4
	bl	compile
	mov	r3, r0
	cmp	r3, #0
	bge	.L719
	mov	r3, #2
	str	r3, [fp, #-8]
.L719:
	ldr	r3, .L722+4
	add	r3, r3, #8388608
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	fclose
	mov	r3, r0
	cmp	r3, #0
	bge	.L720
	mov	r3, #3
	str	r3, [fp, #-8]
.L720:
	ldr	r3, .L722+4
	add	r3, r3, #8388608
	ldr	r3, [r3, #32]
	mov	r0, r3
	bl	fclose
	mov	r3, r0
	cmp	r3, #0
	bge	.L721
	mov	r3, #4
	str	r3, [fp, #-8]
.L721:
	ldr	r3, [fp, #-8]
.L716:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L723:
	.align	2
.L722:
	.word	8389184
	.word	c.6230
	.word	stdin
	.word	stdout
	.word	stderr
	.word	.LC144
	.word	.LC145
	.word	.LC146
	.size	main, .-main
	.section	.rodata
	.align	2
	.type	__PRETTY_FUNCTION__.5501, %object
	.size	__PRETTY_FUNCTION__.5501, 5
__PRETTY_FUNCTION__.5501:
	.ascii	"warn\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5513, %object
	.size	__PRETTY_FUNCTION__.5513, 10
__PRETTY_FUNCTION__.5513:
	.ascii	"duplicate\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5593, %object
	.size	__PRETTY_FUNCTION__.5593, 6
__PRETTY_FUNCTION__.5593:
	.ascii	"digit\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5598, %object
	.size	__PRETTY_FUNCTION__.5598, 6
__PRETTY_FUNCTION__.5598:
	.ascii	"lexer\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5671, %object
	.size	__PRETTY_FUNCTION__.5671, 7
__PRETTY_FUNCTION__.5671:
	.ascii	"accept\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5676, %object
	.size	__PRETTY_FUNCTION__.5676, 5
__PRETTY_FUNCTION__.5676:
	.ascii	"peek\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5680, %object
	.size	__PRETTY_FUNCTION__.5680, 4
__PRETTY_FUNCTION__.5680:
	.ascii	"any\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5734, %object
	.size	__PRETTY_FUNCTION__.5734, 7
__PRETTY_FUNCTION__.5734:
	.ascii	"expect\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5747, %object
	.size	__PRETTY_FUNCTION__.5747, 8
__PRETTY_FUNCTION__.5747:
	.ascii	"ast_new\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5759, %object
	.size	__PRETTY_FUNCTION__.5759, 9
__PRETTY_FUNCTION__.5759:
	.ascii	"ast_grow\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5765, %object
	.size	__PRETTY_FUNCTION__.5765, 7
__PRETTY_FUNCTION__.5765:
	.ascii	"indent\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5775, %object
	.size	__PRETTY_FUNCTION__.5775, 10
__PRETTY_FUNCTION__.5775:
	.ascii	"ast_print\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5790, %object
	.size	__PRETTY_FUNCTION__.5790, 17
__PRETTY_FUNCTION__.5790:
	.ascii	"unary_expression\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5796, %object
	.size	__PRETTY_FUNCTION__.5796, 10
__PRETTY_FUNCTION__.5796:
	.ascii	"constexpr\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5802, %object
	.size	__PRETTY_FUNCTION__.5802, 11
__PRETTY_FUNCTION__.5802:
	.ascii	"identifier\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5740, %object
	.size	__PRETTY_FUNCTION__.5740, 4
__PRETTY_FUNCTION__.5740:
	.ascii	"use\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5808, %object
	.size	__PRETTY_FUNCTION__.5808, 7
__PRETTY_FUNCTION__.5808:
	.ascii	"number\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5814, %object
	.size	__PRETTY_FUNCTION__.5814, 7
__PRETTY_FUNCTION__.5814:
	.ascii	"string\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5820, %object
	.size	__PRETTY_FUNCTION__.5820, 9
__PRETTY_FUNCTION__.5820:
	.ascii	"exprlist\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5830, %object
	.size	__PRETTY_FUNCTION__.5830, 10
__PRETTY_FUNCTION__.5830:
	.ascii	"qualident\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5836, %object
	.size	__PRETTY_FUNCTION__.5836, 9
__PRETTY_FUNCTION__.5836:
	.ascii	"selector\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5846, %object
	.size	__PRETTY_FUNCTION__.5846, 11
__PRETTY_FUNCTION__.5846:
	.ascii	"designator\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5852, %object
	.size	__PRETTY_FUNCTION__.5852, 7
__PRETTY_FUNCTION__.5852:
	.ascii	"factor\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5858, %object
	.size	__PRETTY_FUNCTION__.5858, 5
__PRETTY_FUNCTION__.5858:
	.ascii	"term\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5864, %object
	.size	__PRETTY_FUNCTION__.5864, 11
__PRETTY_FUNCTION__.5864:
	.ascii	"expression\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5870, %object
	.size	__PRETTY_FUNCTION__.5870, 10
__PRETTY_FUNCTION__.5870:
	.ascii	"condition\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5879, %object
	.size	__PRETTY_FUNCTION__.5879, 5
__PRETTY_FUNCTION__.5879:
	.ascii	"list\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5892, %object
	.size	__PRETTY_FUNCTION__.5892, 6
__PRETTY_FUNCTION__.5892:
	.ascii	"field\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5898, %object
	.size	__PRETTY_FUNCTION__.5898, 12
__PRETTY_FUNCTION__.5898:
	.ascii	"record_type\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5908, %object
	.size	__PRETTY_FUNCTION__.5908, 11
__PRETTY_FUNCTION__.5908:
	.ascii	"array_type\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5918, %object
	.size	__PRETTY_FUNCTION__.5918, 13
__PRETTY_FUNCTION__.5918:
	.ascii	"pointer_type\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5927, %object
	.size	__PRETTY_FUNCTION__.5927, 15
__PRETTY_FUNCTION__.5927:
	.ascii	"procedure_type\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5933, %object
	.size	__PRETTY_FUNCTION__.5933, 10
__PRETTY_FUNCTION__.5933:
	.ascii	"typeusage\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5939, %object
	.size	__PRETTY_FUNCTION__.5939, 9
__PRETTY_FUNCTION__.5939:
	.ascii	"typedecl\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5945, %object
	.size	__PRETTY_FUNCTION__.5945, 9
__PRETTY_FUNCTION__.5945:
	.ascii	"typelist\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5955, %object
	.size	__PRETTY_FUNCTION__.5955, 9
__PRETTY_FUNCTION__.5955:
	.ascii	"variable\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5961, %object
	.size	__PRETTY_FUNCTION__.5961, 8
__PRETTY_FUNCTION__.5961:
	.ascii	"varlist\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5971, %object
	.size	__PRETTY_FUNCTION__.5971, 9
__PRETTY_FUNCTION__.5971:
	.ascii	"constant\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5977, %object
	.size	__PRETTY_FUNCTION__.5977, 10
__PRETTY_FUNCTION__.5977:
	.ascii	"constlist\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5990, %object
	.size	__PRETTY_FUNCTION__.5990, 9
__PRETTY_FUNCTION__.5990:
	.ascii	"function\000"
	.align	2
	.type	__PRETTY_FUNCTION__.5996, %object
	.size	__PRETTY_FUNCTION__.5996, 9
__PRETTY_FUNCTION__.5996:
	.ascii	"proclist\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6007, %object
	.size	__PRETTY_FUNCTION__.6007, 17
__PRETTY_FUNCTION__.6007:
	.ascii	"assign_statement\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6014, %object
	.size	__PRETTY_FUNCTION__.6014, 15
__PRETTY_FUNCTION__.6014:
	.ascii	"call_statement\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6020, %object
	.size	__PRETTY_FUNCTION__.6020, 17
__PRETTY_FUNCTION__.6020:
	.ascii	"assert_statement\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6026, %object
	.size	__PRETTY_FUNCTION__.6026, 18
__PRETTY_FUNCTION__.6026:
	.ascii	"implies_statement\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6032, %object
	.size	__PRETTY_FUNCTION__.6032, 13
__PRETTY_FUNCTION__.6032:
	.ascii	"do_statement\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6038, %object
	.size	__PRETTY_FUNCTION__.6038, 16
__PRETTY_FUNCTION__.6038:
	.ascii	"while_statement\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6044, %object
	.size	__PRETTY_FUNCTION__.6044, 13
__PRETTY_FUNCTION__.6044:
	.ascii	"if_statement\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6055, %object
	.size	__PRETTY_FUNCTION__.6055, 14
__PRETTY_FUNCTION__.6055:
	.ascii	"for_statement\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6061, %object
	.size	__PRETTY_FUNCTION__.6061, 10
__PRETTY_FUNCTION__.6061:
	.ascii	"statement\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6068, %object
	.size	__PRETTY_FUNCTION__.6068, 6
__PRETTY_FUNCTION__.6068:
	.ascii	"block\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6074, %object
	.size	__PRETTY_FUNCTION__.6074, 11
__PRETTY_FUNCTION__.6074:
	.ascii	"importlist\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6084, %object
	.size	__PRETTY_FUNCTION__.6084, 8
__PRETTY_FUNCTION__.6084:
	.ascii	"program\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6089, %object
	.size	__PRETTY_FUNCTION__.6089, 6
__PRETTY_FUNCTION__.6089:
	.ascii	"parse\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6130, %object
	.size	__PRETTY_FUNCTION__.6130, 11
__PRETTY_FUNCTION__.6130:
	.ascii	"scope_find\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6146, %object
	.size	__PRETTY_FUNCTION__.6146, 4
__PRETTY_FUNCTION__.6146:
	.ascii	"fix\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6152, %object
	.size	__PRETTY_FUNCTION__.6152, 5
__PRETTY_FUNCTION__.6152:
	.ascii	"jump\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6160, %object
	.size	__PRETTY_FUNCTION__.6160, 5
__PRETTY_FUNCTION__.6160:
	.ascii	"code\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6208, %object
	.size	__PRETTY_FUNCTION__.6208, 5
__PRETTY_FUNCTION__.6208:
	.ascii	"save\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6217, %object
	.size	__PRETTY_FUNCTION__.6217, 8
__PRETTY_FUNCTION__.6217:
	.ascii	"compile\000"
	.align	2
	.type	__PRETTY_FUNCTION__.6224, %object
	.size	__PRETTY_FUNCTION__.6224, 13
__PRETTY_FUNCTION__.6224:
	.ascii	"fopen_or_die\000"
	.local	c.6230
	.comm	c.6230,8389184,8
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
